-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
80 lines (80 loc) · 153 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no">
<meta name="generator" content="WASM-4 2.6.1">
<script id="wasm4-disk-prefix" type="text/plain">Roc Drum Machine</script>
<title>Roc Drum Machine</title>
<style>html,body{height:100%;margin:0}@font-face{font-family:wasm4-font;src:url(data:font/woff2;base64,d09GMgABAAAAAAegAA0AAAAAKHwAAAdOAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhYGYAA0CAQRCArGHLlRC4FCAAE2AiQDgUIEIAWDJgcgG4ggUVRQhkQRbBylAWCR/eGAmzBgcbVSEQV1MFRs8Ts/TVirjdcmzZum+foZqYGq4TdA2FbzSDx8f5+ee7Ns74fim/BWoE4AP1Wwc6lakA20VO54RMrR2gpfsF97s/P3xKMD8UIkBZNFk2ondPz/n9v9G4ROvGcJ9ejaJw8RK4kYUOt8zO4KgUDgofBQGDwMCjsf2FAHKMuSxfQKGICKTqpw8TAYfHywFNs02zbbJDAgUAD+z7l4byADjcSJjXhAkX+V15z5PA0HfmEHdHqW5OfXT1PsVLlV5AkPgm14EPW/1ds0nWuhRkHhmb/7JBfdZazTpbTGMrxynHPs9XO634fF7LHGGYvKrld7xSsgpTyfJqABJJGiNEP0JXXyPy/gUd+Oq0QckHKAEocXne/KDv7oOwSG0MMrDDRgQ0HCAFZ0Ar7LFhgi+t39/2Lzv/+fFLDLD/G/EugBH+CBbj+wXA/giv6ofkm3ZAqiNhrXlgkd4AIQwJg18/ES0QEKIZXedNDpbH9FmDzLD3D97q2rzT3TRXdngPKMRazVYXWiUtlpVnZTprWt4J6wbQiLK7o/u+vhZr91OWHc2/gH+Qyq505NGWB7ui1DWkl94VWLPsznaf1Socl++32X0B1fLASbyLYi6TAO6LlJoPwXg5YAIDQZ2GxXd7yaLzKdTNrAjkIbD1Sca4fUrWmNr+IUViUJVbuuu66KDZXmnH4fMCQ5ukPCRJDdgit52b4Et5RuCK2ZjuBXWu6K6zJkW4qAxA6Y0BWJpS9UgZPLQ3iSuQWAodKrD1VK44bhgApzKGely9pyBS45qWsGAx7ELrGRNkqZX2rpG1no3KgrF9zv29HXdcAmEYpTeqXQunmcM1KNLri1l3ETKhr/jkuZpYQWCtMUkAOA+G31Ezc8TlQCcX0AFiJM8A/Ja5ANNF3s+Aj1HaR91PPZwCslbEBH81Bta7KBGjhAdpteqxIHxKrVrglxhbYG0qRrxPwYd+RA3LtpvfDZhqQKKExdOI4SSCr8hboPCCdUxuYcsLQ2TWw8XO+W8S8kg28tTsGhGLgAGRwq7qpSd5XiJn8+0m7km8BBpAhQ5rqdtpQ58nsk6UVIA1DbFmX+klm8NFI+mk+Ll5BXDAY1ZsGRNeDGIUiLnIISx8u1n++kPlx5KbJLJOSiIDP1dfY4drhKlPE7oTwc9gEI5vBFDpQ2ih/QCB4V+GrFeAMbdFltBSpSqZm9jTuVVM1CVTyG+Haj1uZhNOXIU0xda+WccPIV0vAyy13AXHS7odKqX6lPnNQW29uptFF7hjud+bei1obGQ3mmpvE7YI+21Nlt7iq+tVb3XTcUFG5q31u2uVI1qvk971yZ+/NvzpZV1dNa7Wrems+vXZ7G0bjYrBMdM44xvrdfytxyouoAmPMIUnc0H1njzFfrgVdARZ2VnWXVw+0qv/fX8iYj698zzrSTOlorbpYF7dsMJFE7yW5kV/NV/wwJ/6VW+S3vk6u7s/frQR4kpi7JSQUksyJhl0BSNPS65eUmD+i8UGEYHhd5zmQA0oU5xN+qs8fdwfJZAQaqNDFTgSowOASAVTi4nNRD5CwJVyFK13cHxDEeWVQDvZU3CfsgXuwhIGxxAGE3sxM1QNCL5oTRpAtVec0/pJXNfeLQLO+973quQzeYBhK7GMFx18+4DtE1AX90lFeaawcfPwKbh9CZncWGRig514Ca6r5aIcMk1u7R7OyRfIjVldpkv/8QTig8xMfDoNqXMmPq6rWqoKMWvmXNIhNcLI1TokIhQLNwOGTfZxXWtBtNJFOwSQNl+3DGVwiBVU4+Oq0FeJi5E8VTE1ABD05R60ZWTc49DS4M1nMCCzmZSm7M8UWDSoiGvZPrWrGYd4bKvbh8oXu1Pnv2vrfKud0bz5t2kT7Ti8FNP4L9IJy/PdAULtKZAlxz2FahwUZvcI6aZm61UI4qEJ3XUpHb3NZcIBs7HYrbHf7GgFYvCv4JTMlVK5o9e10zmwVpEoUbhD8pWxVbCX6xdKM4RGTiZ/2PaYEZMh7uAHi1vTTwNaeeqsmWeoX+fERAY8Dlq8IlZUVTrzi35D7ANkN8liq6UConAkh2mBUCA+jNZ4cnuXvJDuFGvEUlaWfzT5MjGonslkNYRjXtmwJEQgbrm1xCr4/AZMWbVPGZ3SvOH9q/AaXqXNGRhP+VuL2mvmu8/zv9BnB5l14cMu1MBSJ04++6QDnTv1bPp6oZnRul1ORTFVkMUlS1LsSh2h2L41VW44wWXcvRhJYwoLfn7pCnX7rB3Zs4otOwC568tbQs/egw8kfbjvhpM06nOc/rWqbg7EicnAydmY7O4nomxNHJws4WxYXFJFGl55716GhGRqqjKI9kp3x0+aiPQqzthaSFKiR6LmZAzFysLXdGb3rZfIi6TEU7jgcy2geINtNWQpaBCnYWTmxqWDw0wzgfrJvzphPhoIstcvGIzuZO4UN1requPbF1HWhqLtgPf3YiwnTA/xIgKAA=)}
</style>
</head>
<body>
<script id="wasm4-cart-json" type="application/json">{"WASM4_CART":"0ax}=0rr910H9P#u&>?c0ak}VE$8}Fu&$[dE/J<TE$4GGu<7$eE$4GGu&Qgm0E>8S0E>c1u<h4eETV.Cu&$[dE/U4b00dKR2.dtNE$8@$E/J<WE$8@$E/J<TE%}x94s->SE$8@$E$8@$E$4Da27IbLE$8}Fu<RsjE$8@$E$8}Fu<zghE$8@$E/J<-E$8@$E$8@$E$4C1uiZNzzGVk3wO(vaC(!0E0rV[JB{r5evpJ>X000ajzGVtdA:-D?rDI?j000ajzGVqcwQ5q%By)Gj0rV[JB{8?%v@}XK17=v[1:jY@zE&!H17=v[1AXN1wDh-kjV&/D1onA900JA70rJoa2l>hm2)*!y0T/zs3&*nc3&*nc4fv1y1{1=b4?ocZ00i-v5!UMW0TX#k0TY5l0Dn5u0r@/gE/R<d]8Gd65=@kTByxii01f0NAaAy0wDieDP@w5PH5}wVE<oF]FpER=KoGzz0WJqDFpERx06{)9aP>1gaPK!daP$7haQ4{j13^$jaoLy-1}pOQ073Sjoap[A0ZNxjld08[Fb?(=1Rv8LFpERrk(-2hk)RiF0ZNxjaojXfC0U{6%nJatyafk+aojX(AJL3-0Fsh)1@!Y?aojXdy9AT21rW)/aP@hN3KW23ao&nPaoB&VZYDy}073wJFpERx0Ux)jFpER4kMzh)3KX6Uaojq33)kP]1u3q!aoB?myc.?hHK:]903zzg19tZ<l7EU0Fb<sb05:(Uao+5#{jdU[y9iTq0STtAl68m+b.gz}Fb*X}l7)}4Fb<r(YAefqE/>c2E/.>T04m)Ga{5>!c&%I}14A.1aoB?[AuLq-kP*a]26If(aoK[lB%m5V4fdHLk)8i{^6[TT0brXVaoA$]078eT0iEBGHc*wQ03zwVTS^$9Gf>6wGf/LX0J!V?Gma{Gao^Gx2oTkbGm(e=01PCskMTg[01w]{03zrAlihZ!aQ5nP3M]Hp19u&QW$xhhy9A{a2Q]&QlvQ9TTS^$7lvTYwli5beTWi5vEiF?q28m^&0@%CBk(>Zz0T?o]aoS!*yA-:303zzq8Zbh70ZM{gld08[Fb<sc0S>Q?kP*4}4fmNMao:Xa03zte2X>H:aojYSy9rM=01feS13]d>a]>4v03zzg19u&QW$xhhy9AZ40X1iKlvQ9TT+IDJ1WJbh18C2{GF@#k3KYA80E)xnaP@[*aoSmgFpJdIaPRTf13^$gaoUdy0u.y=1zP4VaoVBh0024W03zzg0CS+X3&*UyaoiI!5q+{/Fb*X)3L9jW06$<Ak(?KLFpJdI3Q+0@E<oF]FpER=5nJD>b.gz}Fb/Toaoi!>2TFCY4fdHJc&%w(01f[Jaojq3072=sFpERx0Ux)jFpER4kMzh)3KZ>N0E>eo5w-)EFb(Go4feX!]mht>lb-*nJduCe00tE^3&*Uy5sXi2Fb(F&01:)nFpERz01+PHFpERx03znc^7C0Y01=>{FpER=01=?]FpES$aoh$cFpJdIhuIyvGmA}A03zmMIgybb01fhnaoiI+5p]vZFb/%j0rEWo^7C0Y03znc04m]#YN$.m5wS*DFb*X(k(-qm!vZA:071#AGmA}kOpDcu01h6[0E(tAFpJdIk[E/Q10&zEFpERx13)icaoh$lFpJdIaoK1[2P%i$0T{gLaoAaaFpJdIaoK[vy9XsWFpERcmGAKt0ZD/Laor>(2QfsoE[ydIaoB?CC0QSVB0gO[0sH1Jc&%Jq%nSc02xp)*aor>(03IvJaoiI=huB1703zq20SSPt03zm:0u.B^0$Z9nFpERc4GEQKaorO^5qkN:Fb/@#06{Pc05:(Yk(-2dhuBdI03zt30T}u{aoKI65dn^Ak(-2ci@{36h30-ck]7QA0ZD/L0ZD/LaojYSy7pvG009c63QCNL0sP2qk]p:C3&{-486G1*aos4]01f[HaojXcf98$M0rskxk(-Ls96jf5aojXceDu?M00AVv03zm:0u.B^0$ZfpFpERcBPzI(aoiI!aou{l0W4O]D(@ITaC.iyaos!KH-#$JD(@IT%nSc04$=5daos?e%nS9fGcytBa{ypQH-=^x1B+.x141b^D(@IT%nSc04$+#aaou}sa]$1MH<Rb-2P%9&0yv]-ao+ai%nS9fGm(e=01gsU0E>eoaoB$v03zm+0%p!h10vR9001bzk(>Zz10vUhE}*ee4fc+zaoh^o0rEVKkP*a%4fdHLl4rR)0W4E^0%p!h10vQ@0024W03zti4fmNMl4rR)0W4If0CS+UaoK[gy9rV/01feS01f>Gaoj:JL=onYPUZc#hV:mc078i^FpMOiP8*>L01e]flj:L3gZ0(f1aA4Q0^#qzFpJdIl7!o{a{f9vFpJdIaos4]arZ>g0vX6IaQ5$?dfo+#1%r{}0UuHWaor>(7:fec0wsD[aQGm(eDu?n3lPv303ru(aos4]aT4mp13[tI5s4=@Fb*X]c&$!u4iL:804Yn]aoJ.?k(>%^05bI$apHKpAxj9{0u.E!0yl:aiSOvAaoJ.!k(#i}0Dyd2?#K@5aos+eC0MdGiSN!kaoJ.]k(>%H0xHi*aoKg}fD*Mw11:JF0u?*[11:Jp0u?<]11:Jh0u?{}10vW$0n4rk09QGEapZBjsS^!?3{1w<aoJ.}huD&210v$j08T<vaoT.9p-]&.0xHiRaoJ.[iSI[$10v[i0zBQrap6>bnfw0S2r8-IaoJ.<hV(2Z10v+a1291w5r}Y}Fb*+]k(>%F0yl^bk((cK0L*#3nfv}05of#sB%3/KaAoWJB%3/KZYnvu26I9>k})3@13$&By7M}^FpERx11%Xb0u?%@11:I70u&0%11:I60u&3$11:I5aRC[1eDyky6cExg0EM48aoKm$DlB1C11%X1aR(g5c<1Gl1rW^{0=Pp*aoK1[y-%Pq11:H*aQ]K@eDxJe4J><90biO[aoKg}xDXlo11:H=aSqE9eDxxa8Z2km0a^q[aoKg}wfz%o11:H.aQGm[eDxl63lPB50av2UaoKg}u)b{WkMTg[11:IO0sY2K11:IL0u&Hb11:IK0u&Kc11:IJ0u&Nd11:II0u&Qe11:IH0u&Tf11:IG0u&Wg11:IE0u&Zh11:ID0u&:i11:IC0u&^j11:Iv0u&*k11:Iu0u&<l11:It0u&)m11%XD0u&{n11%XB0u&%o11TCr0u<0p11%Xt0u<3q11%Xr0u<6r11%Xp0u<9s11jkf0u<ct11jkb0u<fu11jk70u<iv10v[h0j8XG10v}i0i#RF10v$j0i(LE10w1k0i=F9kP*g}@@Ead4fdH?k]sX^8:L3SAV=t/2Y$8f9DAqxap7mlBrzz^2Y}gbAV+&T5oI}n4m7?MAV#ID2TFCY8:O<^aQGm[l9Hx8aPRWg0ZD/L0ZD/L0ZE>lmgxkt2}b&Pa{{:F0u.W>3paYca@&Gx03Aj60vO0Ha{pyB10wNL4fvTUapp1d01n]par8B7c&%w)1v-?33<3!V8Z2ef0STzEm?2FbaoJ-8TWk14aq}pF@@E:sfOUl67{cd80FrY!Hj*VVTWr3*Gf*AfGDH-alJm7slj!)8apLws@@E:s2.[0P3-#+}0Fu4:1nz)t13#X.y9rP^0sH1<aqVdaaoS!?lfFt:5t1A5Fb/To0ZE>geDB#naoKg}>(zu/FpJdIk(>%m01n(oldt)21q3rrFpERz0ylYD08K^sk(%7Ep9oN6<J4u-0zBQplCw2zFXV!!0YHfGaos+diSIz/0yl/G06RIal9n&vi@}C^0yz)2FpJf^0xg6paos+diSH&R0ylYD04]w{la(%)i@{(P0yB!W*)9A905<%8aos+diSHoB0yl-E03il-laR<Mi@{rz0yz)2Fsg@CFpEXW0U=:Tk(-}C5fI0t0xHh<aos^tHYGNr3)kNpJ&X(+huBdb0yzr!FpJE0Fxd:I0STtzk)g{*1WJqm1rW!j?#EH6PN.My03zwf?#EHm13#X.y7N7?FpERx11:JM0u&v711:JL0u&s611:JK0u&p511:JI0u?{}11:JH0u?){11:JG0u?<]11:JF0u?*[11:Ia0U2bL4Ny}NapQQFBAeGjk)RNMapAij8BkiZaq)DRBAeGvk)RNMaoKg}}#H*X11:I70ZN9laoKg}Fc6:l11:I80UyVFFpERcaoS!?lfFt:5tBY9Fb*X]lfFt:aPR@[0u.Fg?#EH6QKW(B00kzd11ssWa{yq-FpJgtaa([gFpJdYqvJQG10v+h0]K8413$&Cy9rP^0sGnT2T]g5apfB$03RCj4fdHSaos=TybMa[aos=UFpJe{m?2Cv2%!X9Igybb01f[<k(>%G3lQAR0Dxm<arS@JAuL-kaWDcGaQ]Lrk(>%G4J(#Z0Dxn1as6kNAuMhxb%.MKaSqEIk(>%G8Z3H]0Dxn0asGIRAuMtBdm0#OaS.:pl4F}pAuMz9kMTg[fBX18fHk.YaT4l{3J-Nof*#JKatC2BatL8v13=]Maos+lya6b-a{psz03zzg0DYB+c&%w>1vi2U8:O<^a{op}03R.r4fdHNapgsmybMa[3M]Eo3#c{^ap7n.y9A])01ff203IvAkP?:D0DYIeatL5[k(:B{l40z>94g<*a{psz03Am71vi66a]%O601e&[atDp]03B0t2P$(C0rUN*kP*7[2X>:?03RLm4fdHNk((6I0vO0HaoT$gne<<xy9A^e0STzJmgxkt1rX1p0CTH]01f[Ik[4GK0u.UlE}*ek4fc+U94g<*aPR@[0yWB$arhH8k(>ZU0SSPJ13#X.yc.#yaS})fleR-Tk)hiK93t}Y2ZdvnaqEfFB%e7M7c@jHaTwfLk)RSSb{ipj9ZG=@a%]tJu)2K]9yfV}a$2zK{YhGtaqWrzm<oux0o:Ca10wKG07OjZiSO7saoJ-8k(:z0gDCJ*0u.E!89[l)a#zsX=&Cl>aq^xAm<o/K0ltf-10w7t07P6IZYtLWapQQpm(*T:0u.E!3{:>-iSM?]aoJ.]k(:zo0jS4L10v}p07P6IW/EP^k[FbX7igMRar.<.atu7Yne<<xy9sVw11:I.0yl:aaT4%geDAD+k(>%GhY@hO0knF10DxnxaoKg}ZYu.4AuNs+11:IZ0yl:aaV.)?aSZ.J0ZD/L0ZD/Latuj[00kzdf*#JKatC2BatL8v13=]Maos+lya6b-a{psz03zzg0DYB+c&%w>1vi2U8:O<^a{op}03R.r4fdHNapgsmybMa[3M]Eo3#c{^ap7n.y9A])01feokMTg[a1df<a]@bMk(-5e3&{.Ua0pOI0CS!VhuA<^arA/Lm?2F2kP?^I4fdI9aQxhCaPRWg0ZE>ek)RiN0STzEmgxkt1vi6gaor>(03zzg07X4{D$<&ic&%w)1vS+1apfd[l4rSc0STtCl4BGoFoTM[03zOl1q3AuFpERcaos+py9rQ22TJ@Pa{XRT3M{Jt0STwA3M]Es4fvT]aos=TybMa[aos=UFpJe{m?2Ixa3*2vIgybb01n]parA/LmHYwaatL5]ats]VaoK{/0br7vFpJdIaoK[Dy9iQA?#EH6Rgs8D03At+ljee=1WTt/RWS+K1/[email protected]^Qc&$Im1rW^{0VSu?aoK1[7:fhd144J*FpJdKhV@*QaoJ.!iSL9uaoJ.!k]s=a0fmg710vRg5oZ8mJSHs9aos+lB#/R.0W4N/1uDKs0W4N/1vi(FiSL6taoJ.?k[Fi20eZ?210v.j2ZeleI2[!4ap71dGArm#ap7mIB#/RU0W4N/2TG2BiSK)oaoJ.(k)RS{0egE%10v[h0dUa[10v[o7<m}uG90d$apgsBB#/RP0W4N/2%!&uiSKZjk(-5larR*d13^$fc&%@61rWZ[0TG}Saor>(1r!6MkMTgLkMTgLkP*7Q0T{mNmgxkt0yl:dapfd>k(:B{l40z>3[8eSa}l%I0u.^[4m72fa@@My03zLk5jWfiarr(W0W4)]4k[m/3<3!V2TG1>4fl>s3M]Zv5jWfg3M]J]7P*1-H9dCqlJm7slnjdEar4vG@@E:sd29x$8lDm90FrYQHj*V^TWr3*Gf*c7GDH=blJm7sli@s0aptkq@@E+9hV}$saoK{/0CS+-3&{.U2{oP#0u.T<13#bKy7M$!FpERx11:Jp0u.E@0o<H}PmzDx03I:[2^3A2EJ!}ZaC={81%s8Ea{{QwB%dtr3pbkDaS8sek]s+*86x5F2ZdvfaoT$wB%d!E1vi(FaR$hB0ZE>pk(>%m03zQ>1viwX3j@qHFpERd0sIgr5r?S{Fb*Y0aoT$qk)!f+FpJdIk{l/6FpJdI3M]Y$13$Muy7Na&FpERx13$Muy9r&<ap67(lfFt:5tK=aFb/ToaoK4{>M8>hlv:PpFBBUklv:PpFdLP/03zv^1u3s6aoJ.!huE?u10v$f0=e$Yapf}cxDNFRaQxhgaPR#L3KW23aos[u03zqd0DYB<aos+dne<<xy9A^e0STzBmgxkt1rW.hE}*>y03zqdFpJf2CT&hyaoT$k5q+{/Fb/%19V$LJZYwfYQjv=A03zwfZYwf[0sO#paoK}ghV}b4aoK{J0CS+U3M]D)13$omy7Nd<FpER3kP*dT1jd5)1WW-&FpNbhGf>9sFpFhe4fdHORY^8&0sGnpkP?:H4fcC{atDp]03B0t2P$(C0rUN*kP*7[2X>:?03RLm4fdHNk((6I0vO0HaoT$gne<<xy9A%j0STzEmgxkt2{ovpE}*>y03zzgFpJf2CT&hyapgsp5q+{/Fb/%10ymceaPSX>l4rR[2N{+w3M{Jt0STzBmgxkta0pOIE}*>y03zqdFpJf2CT&hyarJ(L5q+{/Fb/%y03IvBkMTgLkP*7[1v-?2aowMg3vTf5llI8Zao!U!1vjbLm?2Oz1vmM*FpJ8-li3#+%9EDH1vo%a5r?S{Fb*X{k(#cL1vj[h0UyGAFpER=aRo&/FpERx0u.Fg>MbAfRHThE03zwf>MbAw0sO#paoJ.?TV3vS0u.Fg{YkaM0sH1JaoK{/0br7yFpJdIaoK4{u)k=LaPSX?lv:PpFBBUklv:PpFdLM!01e&[0ZD/L0ZD/Latuj[00kzdf*#JKatC2BatL8v13=]Maos+lya6b-a{psz03zzg0DYB+c&%w>1vi2U8:O<^a{op}03R.r4fdHNapgsmybMa[3M]Eo3#c{^ap7n.y9A])01feokMTg[a1df<a]@bMk(-5e3&{.Ua0pOI0CS!VhuA<^0ZE>.mgxktf^c/Bg9DV2kMTg[0ym0ac&%w)1vS+1aoT$hBryPj0STtCk(:B{l40z>2}b&Pa{psz03zN<1vmJLhuA>31vmM*FpI(m4fdHSk)d:QFpJdI3M]Eo3#c{^ap7n.y9A])01f[>c&%w(0sF@]aos[u03Ava0yqiIhuA>30yql^FpI(m4fdH)k)d:QFpJdI3QIYh5r?S{Fb*Yyk)?A]gEhcPK:}$j06}+tLyOgl03A%:4flI}atDp]03B0t2P$(C0rUN*kP*7[2X>:?03RLm4fdHNk((6I0vO0HaoT$gne<<xy9A^e0STzJmgxkt1rX1p0CTH]01f[Ik[4GK0u.UlE}*ek4fc+zarJ0k03RBM0ZM/f0sP5rlbS:mLyOgl03A*U3t-0:k)d:YFpJdIk{l/6FpJdI3M{9G5oG3eAV+#X7<6^w1pLttarIZbk(>ZA0x6#V3M{6F7<3]daqm3LBrzoraQXupatDp]03B0t2P$(C0rUN*kP*7[2X>:?03RLm4fdHNk((6I0vO0HaoT$gne<<xy9A%j0STzEmgxkt2{ovpE}*>y03zzgFpJf2CT&hyapgsp5q+{/Fb/%10ymceaPSX>l4rR[2N{+warJ0k03IvJapxq0AV>Md0yWB$arIZbl4rSc0STtzl4BGoFoTM[03AvH1q3AuFpERc0ZE>ulh{$9k(<E+03Bh3ljee=1WTt/RYVeva{ZERBW((xaoX=j3vTf5llI8Zao!U!0ym/Im?2Ix0ynUVa{o1?ndtR^bm{5?FpERx2P%mo3pb1gKBR>i06}+tLyOgl01e&[atuj[00kzdf*#JKatC2BatL8v13=]Maos+lya6b-a{psz03zzg0DYB+c&%w>1vi2U8:O<^a{/U003RLm4fdHSaoT#WybMa[aoT#XFpJe{m?2Cv2%!X9Igybb01f[Ik[4GK0u.UlE}*ek4fc+zarJ0k03RCj4fdH)aos=TybMa[aos=UFpJe{m?2Cva3*2vIgybb01e&[0ZG9M0awnre<YKq197Vjb0g/ejC#Mb003wimgxktjGY?h3&{-5FpJf2FpJf2FpwZC3M]Kq2X>E=ao+7@HEg54li4N-FpJdIaoK4{5fI670%*7Plo*l64flI}0ZE>&lJvbclx)GOjbVDa003wimgxktjfx.i3&{-5FpJf2FpJf2FpwZE3M]Tu097cDao)lr1%sdHm?2Fw13$&By9iY(SdozG03zv(0+rCSaoK1[u)b^SkMTgLkMTgLkMTgLkP*dS0+-+Uk(<H=03zqd0DYB&aoT$gne<<xy9A%j0STzKmgxnu2{oNv0CTH]01n(oaos=Tn^$+y0ymMCl4w#Sa{*WE10v[o1zQj95qCZ=Fb*=2l4BGoFoS%N03zv^0x70)aoJ.?huEzi10v>c0:)bTk)g{D3M]Kq?#EHm2[SIPFpERrapfg#3&{.U1vr7/%nJsza{*WE0W4:(3M]NrFpJf2CYs&bAV$&V4fl?V3paYmapxq0k(:B{l40z>3N=5Ra{{:F03zT(3pfeRhuA>33pfh)FpI(m4fdHUk)d:QFpJdI3M]:w0y)O0aoK{/0brRW5u7bfFb*X]c<1693)kT20+rC-aoK1[u)c1513}D/FqwCd0+-XUlngt2u)2K]0x71f0W4N/1u3tV0u.E!2Sq+V0u.Fg>MbAv13#X.y9iQA?#EH6SEPIH03zv(0{xUd0u.E)0{/}h1rW^?11jlu0u}!c0+-XUaoTO7wfp%%0x70!aoK]WFpJD2huFygaoK}.hV@*QaoK{[0CS.VlhgE}aoK{/0br7AFpJdIaoK1[[bTWsaoK1[(&wmpaoK1[>M8?m0ZE>lk(<H=03zLk0DYB+aoT$gne<<xy9A^e0STzBmgxkt1rW.hE}*>y03zqdFpJf2CT&hyaoT$k5q+{/Fb/%110v}e0+rzQapy7eu)2K]3]Ofq0W4N/4k[p=0u.E!4Mjy-0u.E!2@R&#aoK{[0CS.VlhgE}aoK{/0br7AFpJdIaoK1[[bTWkaoK1[(&wmjaoK1[>M8?japgsmndtRy2%!Plapxq0k(:B{l40z>2}b&Pa{{:F0W4^(3pfeRhuA>33pfh)FpI(l4fl>s3M]Kq?#EHm1RvR.FpERx11jj:aQ/E}c<0{54iL:30:)eYaoJ.?huEzi10v>c0:)bMl4BGoH<g/VFc3?}lm$h0{YhGtaosw4xDNyy>MbAv13#X.y9iQA?#EH6SEPIH03zv(0}ljl2{or#0{/}h3lPB00{xUd3J-No0yl-S4fdHKk((6I2P%mo07X4{D$<&dc&%w)0yWB$aoS!/l4rSc0STtzl4BGoFoTM[03zzg1q3AuFpERcaoJ.[huEzi10v$f0:)bMapHdfFc3?}apQjg}#E]xapZph{YhGtapf}cxDNyy>MbAv13#X.y9iQA?#EH6SEPIH03zv(0}ljl0u.E)0{/}h1rW^{0{xUd2P%[email protected]:O<^a{/U003R+s4fmNTappz:ybMa[appz+FpJe{m?2Fbapgsp5q+{/Fb/%113}D/Fs}cB0+-XUlzf1F(i63Fu)2K]0x71f0W4N/1u3tV0u.E!2Sq+V0u.Fg>MbAv13#X.y9iQA?#EH6SEPIH03zv(0{xUd1rW^{0{/}h2P%i$0}ljl0ymtfLyOgl03zv^0x70)aoJ.(huEzi10v.80:)bMleR-Tk}Lwf5rqo>Fb/Toaos+endtLw0yl:daoS!)k(:B{l40z>1sKrKa]$aw03zy!0yqiIhuA>30yql^FpI(m4fdHNk)d:QFpJdI3QC{ELyOgl03zv^c]}u@0W4N/cPRl{0W4N/coqc[0W4N/eii=%0W4N/eJS#$0W4N/e&%8%0W4N/ffoh@0W4N/fG5#>0W4N/f/x8?0W4N/gbYh!0W4N/b@#3U0W4N/4(%Yx0W4N/5io/x0W4N/5JP]x0W4N/5&{3)0u.E!6flc)0u.E!b02-50u.E!6GMl(0u.E!brt&40u.E!6/(u>[email protected]!7chD<0u.Fg{YkaLd<cq:dm0@7atVp-m<6SO07Od?k(:y$iy9TnauhT!m<6-R07OdPk(:y$iZA:oaoK{/0br7BFpJdIaoKm$F=N29aoKg}FDl]9aoKg}Fb{/9aoKg}E<2BE11:I4aRL$2f9cCz6D^Gh0Et[7aoKm$CP^?B11jj)aP@[&c<1uh2P%i$0=f1@aoKg}yATcf11:H/aR2Q%eDxGd7:5]j0b9I[aoKg}xcwfo11:H+aSzKaeDxu993ttn0aWk[aoKg}v<8d311:HZaQPs]eDxi53M]K60al@U3QDgb1q3rrFpERz0u.[m0vw]&ap{Nlb{ijh5JP[qaorO$iSHxE0u-4p03SJ^aqu)rarQXc6/#BqaorP2i@{rz0u.I60Vi3Xap6>b6D^A07D8saaorO]iSGWk0u.>k01HaLaq^ct4iLV]89d:aaorP6iSGKg0u-sx016?HariAx2{ol>9xBfaaorO>iSGyc0u..g00TLDapyjg1T0**3{1v>aos=UFpJe{huA>30W4If1zP*@03zwfPAn<NFpJf201PCGTak.J000y>3&}P5by>q{Fb?>TyA:3c2{oH0FpJf203zFidRZKn03IW(20<XMeDt+]3M]Ttc#7sl03I:[20<OJf984@4iL<d0ve/#ao<y$aT4vs1$Y/$aRk+2eDu>o5G?of03io@ao<F193C$r1$]#}aRV46f98[k6^9Ye0T{j/ao<y$3N3re1$Y/ZaS8saeDu8286xbn00<.^ao<y$2o+3e1$Y/VaSIQeeDt}$9uULr00BC^ao<y$10F:e1$Y/RaS})ieDt!{aS{$v001e^ao<j}5fSn1kMTgLkMTgLkMTg[1$fJ!a%YO^00kzdbsJ4war@3QaqMa813=]Mao>aqya6b-a%]./03AQO0DYB*c&%w>cp4S58:O<^a%[Yt03S^V4fdH$asxCQybMa[3M]Tt3#c{&asfs6y9B@k01ff203IKFkP?sr0DYC1as6kMne<<xy9C5O0STz>mgxktc)f<50CS!.huA<^aqm6v@@WlI0sP5raqm6v@@Wmf4fu}s3J-NobsJ4war@3QaqMa813=]Mao>aqya6b-a%]./03AQO0DYB*c&%w>cp4S58:O<^a$1=u03S:U4fdH#asoy7ybMa[asoy8FpJe{m?2CvcQv>DIgybb01f[Nk[4GK1%tiTE}*eN4fc+Uc[2b%aQeq%21n$3asFupl4rSc0SUH^aTFlnl4BGoFoTM[0$kksk(-5O3<3!rkMTg[77ymf03J^S03JWP03JY#0sIf[aT]XSaTPFPaTXxSmgxktbsf9Bar%g/081mPdm18Kk)d:NFpJdIa{Ht-FpJe{huA>320&xbaTYLQaT^yS0ZE>Mk(<B:03AHL0Dxnjar%g3AuV!Ob{jMUclK6E1{mak1$fJMao>amya6b-ao>aqya6b-aqb!6k)RipO}8uw03AQh2}Vb.apfR12[S.VFpER=0Dyd203zFi3#df(03zFi5nAP{03zFi6LY2$03z)%2%/bq5t1A5Fb*Ysk(>Zy2}Vb*apfR15FgN+FpER=0Dyd203AQO0+@(9ao>aGy9r^7b%=#{a%^V#3M{]/4fl?V79C1>3#xV51$fJMao<j}1rW)%0TG[YapgsJy7M$!FpERxcM<*LapfR17:6bp02VuuFpJdIk(>%^000xHboXxwk(&bPas6kNBrztwbTzA38ZkFP4fmNQl40z>c[2b%a{HEB0u-^k20)-NhuA>A0u&:i20)=&FpI(m4fl?Vc{W$EIgybb01f[Pk%Pfe1%!.HFpERx20<[SaoK[gAxj71ao>a:y9iNz0Dyd203zFieOVyek(>%^001bCaojXdAxj7Jao>aXy9i)I0Dyd203zFic#6}iapHKpAxj71ao>aUy9i%E0rskDapZElbP)pl4)ZkoiSHrC20<wDa$aMBk(>%^001bCaq3)uAxj7wao&@3iSHiz1%sNv0uri^aqu)r8xYkI7?$lcaqD%s03zFi6LX:ohuA>320&/na%XoQhuA>31%sWt0T{gQk)}AI7DIJ@ao>asy9juO001bCaq)iu2{oBr2X>Ldar0ov03zE*8-^%7ao&@diSGvb1%s{E00KFHarAMz1rW)>a36x7ao&@hiSGj71%t6I00ahDar&&D03zFidRZ7kk(>%^001bCk@09%1WJfeiSGd520<}Ta@hp7k(>%^001bDasf5G6D^S6dm1!]iSG*o2oUDY5oZ8m5*dA4dm1k.iSG:m2oUDR01ZmTasow>B#/Qlao%2ok[Fi201HaRasowWB#/Qjao%2oiSGNh2oUxW7<m}u3M]V%cQwq!iSGHf2oUxW2Zele2{oD}cPRkkao$k-FpJf%05<@Vao$gXy9j=J0SUdX03zIjZYn9(2Q]/PhV-$42sgs:asFVu05<@Vao$g^y9jcr0SUdX03zIjazJ2zdfoGd0STtFao<m@05<@@ao$iN0brR(c&%xb0STtFk(-}CoDTTcazJfLFpJdI3*[2@0!hCBFpJdIa{xa]0ZD/LaorO!o:}7B03zwUeDt+]0rLIe0.0K#aoB?fBryMa0ZM/S8:O<^a{fj{03RFk4fdHMaoB&UybMa[aoB&VFpJe{m?2Cv13)53Igybb01h6[aP&?<l2ZM.0WJqDFpERx0W4If0Dyd201n(o0ZE>fmgxkt0ZM<eaoiI=k(:B{l40z>11jiJa{7gx03zv^0ZRrJhuA>30ZRu!FpI(m4fdHMk)d:QFpJdI3M]QsAb3M#b.gz}Fb?>naP&8{0W4Oa00ahBaoBg%06peXao<9wFpJdI3.WO61aHu20E(tAFpJdIk{f}!0WdT*0WJqDFpER3kP*7[@@Ea90y)O0aoK[Ly9XsWFpERx01PCW13)Gk5uHzjFb*X]aoK1[5f.b$11ji+a]&./c&$kf1q4X=FpERx11srLaQ5$<c&%U$1%r{?03zyQU7h4M03zteAb3N0b.gz}Fb*X]ao<.92P%i(1VDI-aoK[g5q(0*Fb/MS.#*2ME<oF]FpERz1Ta6KkMTg[13)8^4fdHJaoK[jBzr04eDuq82oTa201HdTaoKg}4iV3211:GYaQPs]eDue43M]K6016>TaoKg}2{x:211:GUaR2Q%eDu204<g%a00TOTaoKg}1TaE211:GQaRC[1eDt>@6cExe00jqTaoKg}0u&g211:GMaR>bAaojYPy9ATa0STzDmgxkt03zwfE}*>y03zwfFpJf2CT&hyaojXg5q+{/Fb/%11WMKha{f9vFpJdIaoJ.>iSGWk10v>g01HaNapg7e4iL-}3owd}aoJ.]iSGKg10w1k016?JapQvi2{or)4MTN}aoJ.%iSGyc10wdo00TLFaq3Tm1T0)&5&{0}aoJ-1iSGm810wps00jnBaqD{q0u.E!7chA}k(&bj3&{.qkP*4)D$<&9c&%w)14rU0aoiI^l4rSc0STtBl4BGoFoTM[03znc1q3AuFpERcao+5sy9A:9FpJf206{Pd1Q=BPk[E=P03zCa001bAaoK4]05<@VaoT$oy9iQA2X>^&05<@VaoT$wy9iH80SUaW03zE>FpJf201lBu0%i@MEGs{yFpJf206}-ya{5[&aoA*sFpJdI0ZE>deDutF0y)O0aoi?(03IE/0ym0aaojXkyafh:hV-$40u.I70STtBk{f[/FpJf201PCW13)Gk5uHzjFb*X]aoK1[5f.8%11ji+a]@!*c&$kf1Rv!^FpERx11srLaP@[&c&%U$10vN^0u.KSU7h4M03zteAb3M%b.gz}Fb*X(aoKI62P%9&1ucz.aojXd5q(0*Fb/MSp5$DDby>q{Fb*+{aP?^haojXdy9A=&01=hYFpER13M]HpAb3M%b.gz}Fb*X(k(<1D1rWW!1u3qYaorO+dfxMe0STtBb.gz}Fb/%P0rN-}FpJf203RE.k(&bh0ZD/Laoi$[1vi5U4fdHLl2ZM.0VAf.aoi!>05:(U3&{.U0ZQ^ua{5VG03IBLaoAU/iSGp90u.B)0@$mY01kC50sa90FpJf203RN&1{d3>kP*7I15fj8aoiI^k[4NAa{fj{1r!0)11jiJaQwcmaoK1[2QfNz4fdHSk((6I2P%Bt07X4{D$<&cc&%w)3pLy7aoJ.[k(>ZU0SSPfkP*a%4fdHKk(&8ek(<Q$aQPs(aP?*i0ZE>gk)RiN0STzBmgxkt0yl:daoK1[03zqd07X4{D$<&kc&%w)0yWB$apxp)l4rSc0STtzl4BGoFoTM[03zUn1q3AuFpERcaoK[ry9rW43pfeRa{[+V3M]Hp0DYB:aoB?ene<<xy9AWb0STzDmgxkt0u.FgE}*>y03zwfFpJf2CT&hyaos+h5q+{/Fb/%11WN9xa{f9vFpJdIaoJ.)huBdb10v?b0T6RFap6>b06{Se0sO#p0ZE>fmgxj#kP*7@4fdHJaP?*i0ZE>gk)RiN0STzKmgxkt3paYmaoK1[03zRm07X4{D$<&kc&%w)3pLy7apxq0l4rSc0STtIl4BGoFoTM[03zUn1q3AuFpERcaoK[ry9rW40yqiIa]@bM3KX6Uk((6I03zte07X4{D$<&ac&%w)14rU0aorO!l4rSc0STtBl4BGoFoTM[03zqd1q3AuFpERcao+5Iy9A:9FpJf206{Pd0sH1LaosI63)kV}11soKhV-$41virdaoK[nyafh:hV-$41%!.HFpERcUMj!cE/U0yFpJf206}-ya{5[&aoA*sFpJdI0ZE>eeDuhB0y)O0aoiI+dfoSh0T6RCaor>(05:(UaoK[Ly9XsWFpERg3M]Kq5nz=TFpJdIaoJ.*c&%@70u.E)0U=*UaoK1[7:o7]T:>}L03zv)0@%FFaoK1[2Q6o)0u.v+1q4.^FpERx0ZQ^ua]@%tFpJdIaorO!huBdb0u.L80@%CAk(?KOFpJdI01hT81aILCFpJdIa{5[&0ZE>dk(>ZA1rWXt4fc%uFpJdI01f[Jl2ZM.03)8BFpERx06{SD00BzAaoTO703zp+04w0IhV-$410&zEFpERcqul&Gby>q{Fb*+{8BjxE0%gZ?kP*4U00CN*m?2Cv0ZQ^ua{5V90W4E>0SUaW01n(oaoB&Fy9AY$k(-5g3M]G[13cz+aorO^dfxMe0SSR91oOZP0!7r5by>q{Fb?)[0bA+Wb.gz}Fb?)K03IBCkMTg[0u.zfkzHA=G=*IDa{pl[09P*iaoS?>3&{-4koQahkP*a]9blO#y9iTC<n:YO1WX:V%nJQUaoW7&k((6[=?8:r0bsd!06peXaoK]Uy9rW41vwf{09glEao-[>ao&nP3M]Kq0+@>X3J-M{kP*j%304GnaoB?Gy9iQAE}*efy9iXTk})4m000Ad3M]Hp9blO#l4iL)18n}ZR:gu9lc]gNFb<sq0027X01e&[aos!esQ+uN0ZN/vaoK]Vy9A:{k}La$01e&[0ZD/LaoK{C07Ey$lbrKz18x4+aoB?Gy9iQ[aQyvlaP>1gaQe0k13^$hk[)970u.Cf2X>E:y9i^825lBraoMy42oTj^a{/v#aoMvA6Ixw?2[SIPFpERraoJ.)y9rVXkP*w44fdHSao(N81%sdv4fl?AaoK[qo:}diaoK{B03zwfZYm1Da{Hsoyc.$lHjB/803R.nFpJf2CS2Q6aoB?Gy9i*G1zPa=ao>aine&YUaoJ+)3<3/503IBLaoK[DBu$CcFpI(+aQf4<k]:R.2%!Lm2setk2N.:Rk]:S92X>K<ao<.903zs=2Sq-baoAU<huB<v2{opn2X>E:5sF60Fb*Gg06{)9apoH#05:(UaoiI=dfpFF0STtAleR-Tb.gz}Fb/#61ow*Uby>q{Fb?)J0bA+Xb.gz}Fb*X]k)RiF0ym0ac&%xb0STtBaor[)05<#W0ZD/LaoA})2Qfyq7<nh}0DPv+c&%I}1WSg*%nJszaoT$gne&-S4fdHMaPR#L3M]K10TG$Pk]s=hFb%Zl11jiNli3#+@%9J^2setX8ZkLg25kp/aor>(1r!0)0vO0HaQPs[c&%w(0S>Q*kMTgLkMTgLkMTg[0vO0Pa]%$fndtLw2setXa}1?Waos[u0u..nD$>5h06#c=FpI(l4fu[W10vR50YRq8ao%!ag-#(y3n}@taoK[vy9iQAfLRZp5u*RmFb/#Y3M]^B4fl?rkP*p$%nSc02xp<\u0021apxbj2oTsE4fdHMaosw47Z{GO0ZE>k4feYf03IvK0T/5{ao$jja4)4yao$gkBrHU[0T/5{ao$h-FcXZQ03zIj0DYE=3<3!V2seDdk(>Z^0D]Q!3&{.U13(]B0YRq8ao%!ag-#(^05:)jaoK[vy9iQAfLRZp5u*RmFb/#V3J-No2oT3&2{ol>2$(iY0z:d8appzZy9iKy1zP4:k)g{*1q3xtFpER=1zP7!3M]J]0x6#@3M]J]2@R&0aoJ.[huBA$aoJ.&huCcD10v.80W]e[aoBC5arQ+L5nAr&c&%@511ji/k(:B{ap8Z813[5AaoAU*k(:B{ao&yBFpJdI8xYbF5nAu?3M]A(0vX6IhV-$406{)9aos+lya6b-huA>313%Z5y9XsWFpERc<pzz1E/U01E<oF]FpER=fL.<wb.gz}Fb*X)aoAU/aoS!<apPI8k)RipUZ?mO00ky!kMTg[4LmU(a}D%um?2Cv04!f[mgxkt13(%cmgxn9aojXsya6b-aRk:@c&%/25G?6t6LY2$03S4A4flI}ap{%J03z*@0W56#1P}0>kP*j@2X>:?03RLm4fdHNk((6I1T<ALaoT$gne<<xy9A^e0STzBmgxkt1rW.h0CTH]01f[Mk[4GK1T0>jE}*ee4fc+zaqc%vBrzer5<VH*8:O<^a{xv@03RLm4fmNPaoT$hybMa[3&{.U4K.w!aRL%#k[E=V0STwPaoi!>3)uh:kP*4)6LY2$03S4A4fcC{ap{%J03z*@0W56#1P}0>kP*j@2X>:?03RLm4fdHNk((6I1T<ALaoT$gne<<xy9A^e0STzBmgxkt1rW.h0CTH]01f[Mk[4GK1T0>jE}*ee4fc+zk(-5i0ZE>vk((6I5G?YL07X4{D$<&tc&%w)1vS+1aqt}3k(>ZA1VuzZ3J-No5jE3dap]W$aq2+213=]Mao+4pya6b-a{psz03zzg0DYB/c&%w>1vi2U8:O<^a{op}03RCj4fdHNaos+eybMa[3M]Qs3#c{?aoB&Uy9AY*01f[-c&%w(1Q=BRmgxkt6D^MB0CTH]01f[Vc&%U$0W56$5fIPd6cE=J7?%RTFpJdIapY$6bT&dxapY!393CCc4K.w}aPRTfapY!3ar*$T4fdHOk((6I0u.Li07X4{D$<&tc&%w)6?5Miaqt}kk(>ZU0SSPJ0u.H/1T0<?4NzHT5t1A5Fb/ToapY$6dmBWCapYI7eDvg+E@^)RAxj7M0ZD/L0ZD/Lao+4MBSZ*bao+4hao+4hn/I^W03zChE[ydJ3M]EoD$>5h06#c=FpI(m4fl?V1*79lH9cS3GDR9t0sF@]aoSbNli5eA0ZE>i4feV]aPR#M3J-No1WJfhaorO*k(:B{a{wzQk(-5e3<3!rkP*j@D$<&dc&%w)1Q$C$03IvK0T*aNao+5XybMa[0ZE>il4BGoFoTJ)06{Pd0sP2qaoT$h5q+{/Fb?>naPR#L3M]NrZYkFWlbiE[8Zk$Z1zQj95qCZ=Fb*=dl4BGoFoS%N03A1x1zP4WaoSmzFpJdIaR=alTWjd+aoX*1aR>bAao+gy03zCh0DYB+ao+4hne&-Rmgxkt1WNJJa{op}03ROn4fdHNao+5XybMa[ao+5YFpJe{m?2Cv1vi51Igybb01f[:aPR@[0u.CUapY$6fff7kaqNo^H]hy1aqQ<#1pCn@0ZD/L0ZE>vk{7j(5oe*9k(-2uk(:H@AT-0>5<.1t4fl?V5Ky!Vc&%xmFpJf2CT&hz3M{7:llI195uQQe77piK0ZE>t4feY{aR>bAaqba-k(-5u3<3!rkP*X90DYB@aqc%une&-O4feV]aRta:3J-No0ZRiGa}=p903REN06{Pd5EXZGaqb^#l4rSc0SSo!aoB&VFpJe{mHYt-03I{.0T*a-k)d:QFpJdIk(-5u3&{.U5j3Ex5j3E)8ZktH3#wijyc.$lHjB/803SayFpJf2CS2Q6aqv9Ay9j9h5j3.v5sF60Fb*-baoFViaCI0IT+m&k0ZE>vmgxkt5<VLuaq2.ek(:B{a{7gx03zteD$<&rc&%w)0.0K#aqb^#l4rSc0STtAl4BGoFoTM[03z[u1q3AuFpERcaqt$h3M{376g04yy9AZ41u3k.aoA}>2Q6r[0W4U800<XGc&:k<1T0<?0x6]TaqNo^H]hyeaqQ<#5fI9A4fdHNk((6I1T0}l07X4{D$<&dc&%w)1W@>2aoS!<l4rSc0STtDl4BGoFoTM[03zzg1q3AuFpERcaoi$[aT40<kMTgLkP*4U03rx/mgxkt1WJfemgxkt051u>aPR#L3J-No1rX1p0DSlD0y)O0aoj4}8Bjysa{ypj@@TwEli3@!nGe/N3&{.U051u>aPSX?appz:B8:FDAyyrpaos!d@@WmbE}*egli3@!AuUMe1v&[4ao+4iao+4iob/2P3M]B50uro!k(>ZA6g8V#192B%m?2Cv04!f(aRT#yao-hOaqvcw0Dyyay9A*E@@E9Z1Xf15ao+4wAuM27aoj4}7:fW%kP*4)6LY2$03SdD4fdHJc&%/27Y(@B06}fhc&%w)0.0K#aq=m913=]Mao+4pya6b-a{psz03zzg0DYB/c&%w>1vi2U8:O<^a]<1)03RLm4fdHJaoT#WybMa[aoT#XFpJe{m?2Cv06{-0Igybb01f[Mk[4GK1T0>jE}*ee4fc+zaqEfyBrzzy6*R*<8:O<^a{op}03ROn4fdHNao+5XybMa[ao+5YFpJe{m?2Cv1vie4Igybb01f[Vk[W]=0rsnCapY?52Q6%a4LmU)aP-+}k#qqu1TFRGFpERx1T1yn0T{gPaoT+b3lPG{0Y*q/ao+4py9A^64(%W<ao-(2huBNn1WJYma{5>#huA>31T1aq0Dyd2a0p.f6GMjnao-(3li3@!AuCoF%nJgvA617uao->*i@{lx1WJ#ua]&-4k(>ZZ0rskCappynAxj7yao+4Ny9AW313(%ciSGd51T1Nt0@%CLaqM)q03zXo2X>E+dfoGd0STtKk[E=N0X1fJhV-$43{+.Baoi?(05<@VapHKUy9iK90SUaW03z+qfLR>-FpJdI4*@@HFpJdI01gZ^0E(tAFpJdIk[E/Q03)8BFpERx079iaFpLAqhV:a8070M(GmA}W0STtyk(.ENFpJdI01i#K0!hCBFpJdIk})6#0vihCFpERx0yud{=d^F30W]e(lEj@A}@C#FXaG.W10wY!l4BGoFoS%N7:5&C05<#>aorO=k[E=N0ym&y5ughgFb*X)c&%w(0W4E=0vX6MhV:a803zt30STtzk})40FpJf201i/F0E(tAFpJdIk})6#1seIFFpERx1vwPdFpK<ahV:Wo1vpbqGmA}W0UuESaoKI6c)eTn0Yy99aoS!/huC0z1rW?k5nAr<k{f[NSEPIH03zm:1sTxPhV:a803zy)0SUaW03zzgfLR>-FpJdI3Q>3%kP*a]089?4aoB?fBryMa0ylYR8:O<^a]%7[03RFk4fdHKaoB&UybMa[aoB&VFpJe{m?2Cv0yl&1Igybb01fgC1{k6V0E+o6by>q{Fb?)J0bA+Xb.gz}Fb*X)c&%U#1vi(Fl4w#Saor>(1r[1n%nSc02xp<?k(:B{aQe0k0ZD/LaoB?po:}7B0ZTQ4aoB<A081mP1vif9k)d:NFpJdIa{Qz:FpJe{huA>313)Gkk)RiF0ym0ac&%w)2Sq.:aoJ.?huBdb10vU60T6RFaor[)03R.d0$VNSao$gny9B0y0STtBapoj]k(:B{aQXupao>mz03zwf5nAr]RY(J(2TFCY8ZbUk20&uhaQ7diaR1Msao>amnEUU=03IW(13)3fao$gqy9iTB07Xpp8Zb.m13)0eao$gpy9iS#aQoa]lhZ=.@%9J!4J><t5nAr@ap7mkne&-Qk)7<B2P%mo0+@>!aoT$hy9sb<kP*BS3tH:/apPC2yaPz=iSGd51vi66ap]U5yaPz=iSGd52oTv*apGw1yaPz=iSGd54<hi]ap67%yaPz=iSGd54J(9A1zPa/m?2Ca3M]Qw4fdHUap-cf3lP^24R^c&13^$oaoTm@06g8Wappyny9r{b1vi66aP@[>l4rR[1Q$Ct3M]*125lB7aoAU&yy(>-FpERraoJ+]aor>(2Qfyq07WL2aoUax0W4Ri0DYB+c&%w>0vO0Lk(:B{a{psz0W4RiD$<&dc&%w)1W@>4aoS!<l4rSc0STtBaQPs}l4BGoFoTM[0T]8qaoK[Lyc-buk(-qmPTGG605:(UaoK[-yc-buaos+lya6b-huA>313(]o0*{AGFb?IgarQ+e0vX6IhV>-R10vUhFb%WK04Oaoao>mz03zwfazJ23k})3@11jj8aoK1[i6^Kn8Z2s@NsG*r02=j/13[5Aao(ND03zs=25s^qFpJdI8xYbFazJ5baoT$gndtOx1vS+2aoT$hBryPj0STtDk(:B{a{psz0u.IhD$<&dc&%w)1W@>3aoS!<l4rSc0STtBk{f[=3lPHrFpJf2CT&hz3M]Nr1q3AuFpERcaoiI>dfoGd0STtyk)RiF3pa@jc&%xb0STtBlbiFnb.gz}Fb/$Z0S-yMby>q{Fb?>?yA-%dFpJf206{Pd2oTi{2TG2pk)fENap67}k(-2kap67}k(:gJk(&8l5v3+oFb*X$c&%@52Q/-*ap6v%7:5/30u.B^10vZ?2TGOF5vc?pFb*X$k[ulYap67}k(-2kap67}k(:gJk(&8l5v3+oFb*X$c&%w>2Q/-Sap6v%2P%9&0u.B^10vZ?2TG>N5vl[qFb/To0ZD/Lap6L0bTzD34fdHReDvs/@@Ea90y^I03M]TtAb3N1b.gz}Fb/#U3M]Z60W]h]ap6v%arZ!e20)iya{ofwFpJdIaoS!*huB171rW!80SUH!aQnw$1virda{e})iSGd51T0{%0SUdX03zCh2X>E:c&%xb0STtGk})40FpJf201mS?0r^(%FpJf2072JyyA:ih4J(iaFpJf200ky!kMTgLkMTgLkMTgLkMTgLkMTg[3QK^[Ax%Q}4fdHOlh{$94GVUj0$cjPlh{$94GV!p2mzTYk)RMP2%[N(ADn(t3M]Hp2Y}f&lh{$9A>@}gp9ye>3M]%JaRa$.3M]^x2Y}f}lh{$9A>@}caoB?mBryPI@@EaW.6fy+aRk+7ap?0^4?5EDappyuBry(Q@@EaWaQZNpaRc<uaRk274J(rz06hkil2ZM.4j3EOFpERx4m71Q00jnLapymi01o2sappyuBry(Q@@EaW.6fmf0ZN9laos!d0DAd@p7mjj0$cjUk)RMP2%[N(ADn(t3M]Hp2Y}f&lh{$9A>$oQ0T?o{aRk+ak(<1DiV[!M4NF.Ey7N+5FpERx4J(lf0:3SOhuDz(4NFeoy9s3L03I<Y0T?o}aRk+ak(%7EiZA=&4<hiB2Y}f}lh{$9AZoZG4NF.Ey7N!6FpERx4J(lf0:3SOhuDX$4NFCwy9s2{0sIf[aRk+ak(-}CiZA=&4<hlC0u.>r/z]T$WsA^T03z:]4K.xXa}3pgkP*L5ZYn9)4grk50ZD/L0ZD/Lao+7h0DwOJ0rJleaoT$EBryVK@@Ea95oI}n0ZV?!Ax%>Laos!d0DAd2a}3*G0W4>parR4TawiT$1WJfhk)g{*1q3rrFpERz0ZRu!FpI(50STtMk)RiF0ZM%7k(-2hapPC3apZW%y7N?7FpERx4K.w&aP-+@c&%/24iMce0TG}M3<c>W4j}LYk(<E+0u.Cf2Y}f&lh{$9A>@[1k(-5iapZ49i3wR{03I!q03IyCkMTgLkP*ND03zV=aotjD0sPbtapD1d0zi!73M]{B7?$e%apPB{apw:&FpJdIapY!3arZ!e4K.w#aQ]L7c&$ke1P*{<kMTgLkMTg[5dO^y0S@Agapxq0apZY&0br7MFpJdI3<c>W3QB!o4NF.Ey7N!6FpERd0T*aUapZY&0br7LFpJdI3&{.U3QB!o4NF.Ey7N!6FpERcapZ49srO4{4LmV:lh{$9k(<B:01n@q3M])g00kB!m?2Cv0ZN9laos!d0DAd@aPT>eaQ5$#f9a3Q3paUn4m6$q0S$W?kMTg[4?eHY3=9}^n^$!f1pDsW.5@+N4fD$X4NzHTao->%aoAU[5vWguFb*Y4cC0W4$30XtG7apY!3c)n-}kMTgLkMTgLkP*QF0%5D901f[Sapok3ld=fL5vE4sFb/#W3M]*y0u.>r/z]T$WsA^T01n]papxq4ld=fL5vu$rFb/#U3M]*y0u.>r/z]T$WsA^T01f[Vf9be#3M]{h09RX*0DyyamHYta0T/x403IIi03I!q03IyKaoiI/huA>303z.e0T6RCaoBC52P%Qy?#EHqFpJf201k7[0S)&LEJ%w[[email protected]}Fb*X(aorO^aoJ.?ao->(ao%1&apfk0k)RipXpx9W00ky!kP*y.0%*7Ulv:PpFBBUkp^>/[apgtMy9AW7FpJf203zp+3QaQ(k(&bn3&{.U2%&JBa]@%tFpJdIk(-5m3M]D)2%54?ap67<dfxMe0STtIk[E=RFpJf201k7[0S)&LEJ%w[[email protected]}Fb*X(aorO^aoJ.?ao->(ao%1&apfk0k)RipXQYiX00ky!kP*y.0%*7Ulv:PpFBBUkp^>/[apgtMy9AW7FpJf203zp+3QaQ(k(&bn3&{.U2%&JBa]@%tFpJdIk(-5m3M]D)2%54?ap67<dfxMe0STtIk[E=RFpJf201hZa0!hCBFpJdIa{5U:kMTg[0kQ%Jy9A+@aoL7x03zteAb3M%8BjuD0$khraoB&Fy9AS@aoiI^i@]sE0u?KMaoiI^iSGj70u.v<0SUaV01h:b0E(tAFpJdIa{e.+kMTg[0kP=U.d>d][email protected]]K3M]KqAb3M$8xY5606phYk(&be3M]D)06g8YaoAU^c&%xb0rrId0S-vLby>q{Fb?>TyA:0b2P%u$FpJf200kzd1W@>213=]M0ZD/L0ZD/L0ZE>heDt&r0y)O0aoTs#03IEDkP*7@4fdHKaoB?fBzq{3i@/l*ao<y$0Ubql0%wSjaorO^aoJg/FpJdIao$hKy9A^aFpJf203zzh<Bz=hZZJd61rW?k>^Da]05:(UaoT$h5q(0*Fb/MSaoS!>f984}2TGqx5vE4sFb*X$k]stW1pLwuaoT$hap5K^FpJdIap6a[3<3!V1rW$o2X<{TFpJdIap7msy9rY*0sH1Mk(&8lk[E=xWsA^T03zLk5nAu>3M]Hp0CS+Vao+5Xy9A/<01feS03zq20STtyaoBC51rWW!12Zh^ap7mQy9XsWFpERc?u9=YE)B5T1T0>j0CS+Z0ZD/L0ZD/L0ZD/LaoK[KBSZ:9aoK[faoK[fn/I^{2oT7v4fdHKmgxn0kMTgLkMTg[2mQUQ13}Ae4fl?V0yq9Fc&%xmFpJf2CT&hzaoK[fndtOcaoJ./oaq7F0$tn%arZ)%1Q=BSk{doOk{e/ta{ymkBu{4Ak)d:NFpJdIa{Qz:FpJe{huA>32seGcaorO^k((6K2n0qNFpERz2P%v!k(-$D03zwj4fEZPk((6I0u.Fg07X4M14rU3aoK]Sy9AWb0STzDmgxtw0u.FgE}*>y03zwfFpJf2CT&hBaos+f5q+{/Fb/#W3J-No13#}$oap>z13(%faQ5nS3J-No13}G*1w645aoK[gBrH!@1pDsOk)7{?0CT[3B%d1$0$cjLmgxwd0$cjQk{doOk{e/ta{gaiBu{4Ak)d:NFpJdIa]%#WFpJe{huA>30yl<6aPR#M3M]Y#0u.K?0$khraoK[gBrQ@j1T10(1T11x8ZkwI0DYH?pyNpD0yq9Fao+4ly9i:E1zQj75qU<\u0021Fb?>ry9rP=aorO^k((7xaoT+a03zp=1Q=BMaoKI62P%9&1#VI=aoiI/huA<^.u6-vE<oF]FpER=5nJD%aQYz1b.gz}Fb?>naQ!Aq0ZE>lmgxkt03I^MkM:m]3)l0j0rskAaoS!<ao&}[apyEvy7O1cFpERx3Oqt!k(<E+0u.?q0+@>/apxO02Q6Q02TJ@Pa{ZQD0T]5p3J-No0.0K#aoB?fBryMa0ZM/S8:O<^a}b>303R>v4fdHVapQR^ybMa[apQR!FpJe{m?2Cv3{+1cIgybb01f[Sc&%U$3)k)yAb3Nab.gz}Fb?>naQwFS3J-No0.0K#aoB?fBryMa0ZM/S8:O<^a{YN#03R>v4fdHRapQR^ybMa[apQR!FpJe{m?2Cv2TFO8Igybb01f[Rl2ZM.4j3EOFpER=0u?ZRapPC0iSGp94iM6q0STtHapP+405<@VapyEDy9XsWFpERc.u6-vE<oF]FpER=5nJD%aQYz1b.gz}Fb?>naQ!Aq0ZE>lmgxkt03I^MkM:m]3)l0j0rskAaoS!<ao&}[apyEvy7N$bFpERx3Oqt!k(<E+0u.?q0+@>/apxO02Q6Q02TJ@Pa{ZQD0T]5p3J-No0.0K#aoB?fBryMa0ZM/S8:O<^a}b>303R>v4fdHVapQR^ybMa[apQR!FpJe{m?2Cv3{+1cIgybb01f[Sc&%U$3)k)yAb3Nab.gz}Fb?>naQwFS3J-No0.0K#aoB?fBryMa0ZM/S8:O<^a{YN#03R>v4fdHRapQR^ybMa[apQR!FpJe{m?2Cv2TFO8Igybb01f[Rl2ZM.4j3EOFpER=0u?ZRapPC0iSGp94iM6q0STtHapP+405<@VapyEDy9XsWFpERcNGiA(E<oF]FpERz2Q6GQkP*9zk)?AL3C^[!appQF03zqd3tH:(.6fmf3p+K90ZD/LaoGw63lPvu4fdHTapy{N03zLkAb3M$b.gz}Fb?>naQORU3QB!p3lPsm0CS+Tap7nLy9AW7FpJf201f[Iappdf1rWZ/05:(Uao%1&dfxMe0STtHb.gz}Fb*8/5uytiFb/MSSr025E<oF]FpERz2Q6GQkP*9zk)?AL0L]@!aos$w03zRmh!<Jz.6e[53p+K9aos+ny9B23a}2I2m?2C1kMTg[1hMe*aot1x03zQ>3R?chap7nLy9AW7FpJf206{Pd3jD}yk(&boaojXdy9rN12TJAAa]@%tFpJdI3M]D)3owd&aorO+huA>32oT3@0@$mY03zN[FpJf201PCGTak.J000x]00kzd0.0K#aoB?fBryMa0ZM/S8:O<^a]<1)03RFk4fdHJaoB&UybMa[aoB&VFpJe{m?2Cv06{-0Igybb01feq074}sT]OL7E<oF]FpER=fL.<mb.gz}Fb*X)c&%w>0vO0Laor>(2P%c@0T]T6FpJdIaoK[ny7OdgFpER=c{W$EHjB/803RCfFpJf2CS2Q6aorO!dfx&m0T6RDk[4GJ13)GkdfxMe0STtzk[[5R13)=sdfxMe0STtzk]:RZ13[5AdfxMe0STtzk{Qg/13[tIc&%xb0STtAaos+hybMa[aoK[-y9XsWFpERcZY:-yE<oF]FpER=5nJD<b.gz}Fb?)N06{-0HjB/803RFgFpJf2CS2Q6aoB?eiSGp90u}Ri06g8<aoB?eiSGsa13(]F01QgNk(-}C1%s1l06g8<aoB?eiSGyc13(]F01QgNk(-}C2P%jn06g8<aoB?eiSGEe13(]F01QgNk(-}C3lPBp06g8<aoB?eiSGKg13(]F01QgNk(-}C3)kTr06g8<aoB?eiSGQi13(]F01QgNk(-}C4J><t06g8<aoB?eiSGWk13(]F01QgNk(-}C5fI6v06g8<aoB?eiSG:m13(]F01QgNk(-}C5*dox06g8<aoB?eiSG*o13(]F01Rxh06{-0HjB/803RLiFpJf2CS2Q6aoB?iy9r-ZkP*aR0STzGmgxkt0W4Xk0CTH]01f[LlxD.FFpE[:00<XIao:U61oH?h0W[9Ia{HEB03zs=20&o8huA<^aoU2)FpJf22Sz.$aoS!<hujo&kP*aR0STzGmgxkt0W4Xk0CTH]01f[LlxD.FFpE[:03Ax!ao:U690ewF0W[9Ia{HEB03zs=20&o8huA<^aoU2)FpJf22Sz-maoS!<hukcbkP*aR0STzGmgxkt0W4Xk0CTH]01f[Lk)g{C1%s4nKBR>iFcX7li3ntD1Vuuq0ZE>fc&%w)1vS+1aoAU*l4rSc0STtCl4BGoFoTM[03zte1q3AuFpERcaos=8y9AZ8FpJf203zs=1#VI>aoB?my9A^D06g8WaoB?Ky9A*E06phYaoB?uyc)S8FpL#DhV<450ZNVrlv:OehV<4506}fhlwo@uFy1oP0STtyk]su6FpF+30STtyaoA$[05<@VaojXky9iTd0SUdX03zncazJ25c&%xb0STtBk[E=RFpJf201nJ70TTtTEJ%w[FpER=ZYnc]10&zEFpERx13[RQk)RiF04m)Ga{pgqya6b-huA>313[5Ak)RiF1vjeBc&%xb0STtBaoTa{05>0laoJ.?dfptB10wY?c&%@61T0{@0T{jR0ZE>hc&$8b2sP740ZE>imgxkt1Tac]1%A%GkMTg[06{)9c&%w)2$kp6apgsmBryMi0STtHk(:B{l40z>2}b&Pa{{:F03zN<3paYchuA<^aojXoy9rN12TJ@Pa{XRT3KX6Zk((6I1%sdp07X4{D$<&9c&%w)2$kp6aoiI<k(>ZU0SSPfkMTg[1vmAIa{/U003RzeFpJf2CT-bxaoj?t0u.W>06#9HhuA<\u00210sH1Rli3#+@%7B-03zy)0U=^=aoT7]5fRr41sKrWaP@[]k)d:QFpJdIapyQE00kzd2T]g5aoS?/13=]MaojXkya6b-a{*WE03zOl0DYB:c&%w>2%!LZ8:O<^a{].103R.r4fdHTapgt-ybMa[apgt:FpJe{m?2Cv3pa!aIgybb01f[Hk[4GK03zLkE}*ek4fc+zapyEoBryYe3QB+-8:O<^a{/U003Rzi4fdHSaojYSybMa[aojYTFpJe{m?2Cv2%!X9Igybb01f[Kk[E=%2X>E:k})4t2X>:?03Rz30STtBk)RiF13[5Ak)RiN0STzJhuA>310vW{127]chV<Ql10vW{10w=%hV<450ZN9baojq303zs=3]Xj/aoAU<huBNn0W4U80UuEQao<.93)kP]4l1t9aoB?Ky9i*v0STtBlbiFnb.gz}Fb/@W073U[3^D={0@$SW]8Gf1.#-[Kx(+zoy*?A$z/PXqwn=42az#atayP85z*9soz/M$xxK@reAaAy0wGUPczEW^5z/cXtzY&.4C4z!avq{shA+fp(qCPU5p^E&FlRx<oiV].&08^lyaA8yAaA7<mzdNN5A^oX*BAhTHx(mB3wNPT]zF78ewO(vaC{4fxDsXjyx([2hu[B=-wO<2ux)Kt#e*9J7A=L-eBrCBiz6i[lDsXjkB08=t05c8Xf!+vpgCyTth83{xh.WiBiwAixf!>BrgCHZvh8d0zh.^oDiwJozf!$HtgCQ^xh8m6Bh.)uFiwSuBf/7NvgCZ<zh8vcDh-0AHiw-ADf/gTxgC*{Bh8EiFh-9GJiw&GFf/pZzgC}0Dh8NoHh-iMLiw@MHf/y^BgD46Fh8WuJh-rSNix5SJf/H<DgDdcHh8^ALh-AYPixeYLf/Q{FgDmiJh8)GNh-J=Rixn=Nf/.0HgDvoLh90MPh-S&Tirf3V0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000dU4H002PdBy/8@AV!!3wncd1z/cXoC4CYay&sJewfy{M002D9v@DHcBy/G7wfu2jwQ5f9v@#o)avQr>aohxw002YbB963PvqYZ?iV@3yx(4u>aARJAxjU%(A::63az2CeB.twgwO+{{wO#QhaARJAw[=6$aARpdaAy[dxjSh{wOb>3wGU]mwPzy0z*b]kxcqqfwGU(kzdN:4v<2(sAaG2n^6<8+FcC#M%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nSc0%nJ6+^7xC*2MK&80000000000","WASM4_CART_SIZE":64217}</script>
<script>var __defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(t,e,i)=>e in t?__defProp(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i,__spreadValues=(t,e)=>{for(var i in e||(e={}))__hasOwnProp.call(e,i)&&__defNormalProp(t,i,e[i]);if(__getOwnPropSymbols)for(var i of __getOwnPropSymbols(e))__propIsEnum.call(e,i)&&__defNormalProp(t,i,e[i]);return t},__spreadProps=(t,e)=>__defProps(t,__getOwnPropDescs(e)),wasm4=function(t){"use strict";
/**
* @license
* Copyright 2019 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
*/
const e=window.ShadowRoot&&(void 0===window.ShadyCSS||window.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,i=Symbol(),s=new Map;class n{constructor(t,e){if(this._$cssResult$=!0,e!==i)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t}get styleSheet(){let t=s.get(this.cssText);return e&&void 0===t&&(s.set(this.cssText,t=new CSSStyleSheet),t.replaceSync(this.cssText)),t}toString(){return this.cssText}}const r=(t,...e)=>{const s=1===t.length?t[0]:e.reduce(((e,i,s)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if("number"==typeof t)return t;throw Error("Value passed to 'css' function must be a 'css' function result: "+t+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(i)+t[s+1]),t[0]);return new n(s,i)},o=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e="";for(const i of t.cssRules)e+=i.cssText;return(t=>new n("string"==typeof t?t:t+"",i))(e)})(t):t
/**
* @license
* Copyright 2017 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
*/;var a;const l=window.trustedTypes,h=l?l.emptyScript:"",c=window.reactiveElementPolyfillSupport,d={toAttribute(t,e){switch(e){case Boolean:t=t?h:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,e){let i=t;switch(e){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(s){i=null}}return i}},u=(t,e)=>e!==t&&(e==e||t==t),p={attribute:!0,type:String,converter:d,reflect:!1,hasChanged:u};class f extends HTMLElement{constructor(){super(),this._$Et=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Ei=null,this.o()}static addInitializer(t){var e;null!==(e=this.l)&&void 0!==e||(this.l=[]),this.l.push(t)}static get observedAttributes(){this.finalize();const t=[];return this.elementProperties.forEach(((e,i)=>{const s=this._$Eh(i,e);void 0!==s&&(this._$Eu.set(s,i),t.push(s))})),t}static createProperty(t,e=p){if(e.state&&(e.attribute=!1),this.finalize(),this.elementProperties.set(t,e),!e.noAccessor&&!this.prototype.hasOwnProperty(t)){const i="symbol"==typeof t?Symbol():"__"+t,s=this.getPropertyDescriptor(t,i,e);void 0!==s&&Object.defineProperty(this.prototype,t,s)}}static getPropertyDescriptor(t,e,i){return{get(){return this[e]},set(s){const n=this[t];this[e]=s,this.requestUpdate(t,n,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)||p}static finalize(){if(this.hasOwnProperty("finalized"))return!1;this.finalized=!0;const t=Object.getPrototypeOf(this);if(t.finalize(),this.elementProperties=new Map(t.elementProperties),this._$Eu=new Map,this.hasOwnProperty("properties")){const t=this.properties,e=[...Object.getOwnPropertyNames(t),...Object.getOwnPropertySymbols(t)];for(const i of e)this.createProperty(i,t[i])}return this.elementStyles=this.finalizeStyles(this.styles),!0}static finalizeStyles(t){const e=[];if(Array.isArray(t)){const i=new Set(t.flat(1/0).reverse());for(const t of i)e.unshift(o(t))}else void 0!==t&&e.push(o(t));return e}static _$Eh(t,e){const i=e.attribute;return!1===i?void 0:"string"==typeof i?i:"string"==typeof t?t.toLowerCase():void 0}o(){var t;this._$Ep=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$Em(),this.requestUpdate(),null===(t=this.constructor.l)||void 0===t||t.forEach((t=>t(this)))}addController(t){var e,i;(null!==(e=this._$Eg)&&void 0!==e?e:this._$Eg=[]).push(t),void 0!==this.renderRoot&&this.isConnected&&(null===(i=t.hostConnected)||void 0===i||i.call(t))}removeController(t){var e;null===(e=this._$Eg)||void 0===e||e.splice(this._$Eg.indexOf(t)>>>0,1)}_$Em(){this.constructor.elementProperties.forEach(((t,e)=>{this.hasOwnProperty(e)&&(this._$Et.set(e,this[e]),delete this[e])}))}createRenderRoot(){var t;const i=null!==(t=this.shadowRoot)&&void 0!==t?t:this.attachShadow(this.constructor.shadowRootOptions);return s=i,n=this.constructor.elementStyles,e?s.adoptedStyleSheets=n.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet)):n.forEach((t=>{const e=document.createElement("style"),i=window.litNonce;void 0!==i&&e.setAttribute("nonce",i),e.textContent=t.cssText,s.appendChild(e)})),i;var s,n}connectedCallback(){var t;void 0===this.renderRoot&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),null===(t=this._$Eg)||void 0===t||t.forEach((t=>{var e;return null===(e=t.hostConnected)||void 0===e?void 0:e.call(t)}))}enableUpdating(t){}disconnectedCallback(){var t;null===(t=this._$Eg)||void 0===t||t.forEach((t=>{var e;return null===(e=t.hostDisconnected)||void 0===e?void 0:e.call(t)}))}attributeChangedCallback(t,e,i){this._$AK(t,i)}_$ES(t,e,i=p){var s,n;const r=this.constructor._$Eh(t,i);if(void 0!==r&&!0===i.reflect){const o=(null!==(n=null===(s=i.converter)||void 0===s?void 0:s.toAttribute)&&void 0!==n?n:d.toAttribute)(e,i.type);this._$Ei=t,null==o?this.removeAttribute(r):this.setAttribute(r,o),this._$Ei=null}}_$AK(t,e){var i,s,n;const r=this.constructor,o=r._$Eu.get(t);if(void 0!==o&&this._$Ei!==o){const t=r.getPropertyOptions(o),a=t.converter,l=null!==(n=null!==(s=null===(i=a)||void 0===i?void 0:i.fromAttribute)&&void 0!==s?s:"function"==typeof a?a:null)&&void 0!==n?n:d.fromAttribute;this._$Ei=o,this[o]=l(e,t.type),this._$Ei=null}}requestUpdate(t,e,i){let s=!0;void 0!==t&&(((i=i||this.constructor.getPropertyOptions(t)).hasChanged||u)(this[t],e)?(this._$AL.has(t)||this._$AL.set(t,e),!0===i.reflect&&this._$Ei!==t&&(void 0===this._$EC&&(this._$EC=new Map),this._$EC.set(t,i))):s=!1),!this.isUpdatePending&&s&&(this._$Ep=this._$E_())}async _$E_(){this.isUpdatePending=!0;try{await this._$Ep}catch(e){Promise.reject(e)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var t;if(!this.isUpdatePending)return;this.hasUpdated,this._$Et&&(this._$Et.forEach(((t,e)=>this[e]=t)),this._$Et=void 0);let e=!1;const i=this._$AL;try{e=this.shouldUpdate(i),e?(this.willUpdate(i),null===(t=this._$Eg)||void 0===t||t.forEach((t=>{var e;return null===(e=t.hostUpdate)||void 0===e?void 0:e.call(t)})),this.update(i)):this._$EU()}catch(s){throw e=!1,this._$EU(),s}e&&this._$AE(i)}willUpdate(t){}_$AE(t){var e;null===(e=this._$Eg)||void 0===e||e.forEach((t=>{var e;return null===(e=t.hostUpdated)||void 0===e?void 0:e.call(t)})),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$Ep}shouldUpdate(t){return!0}update(t){void 0!==this._$EC&&(this._$EC.forEach(((t,e)=>this._$ES(e,this[e],t))),this._$EC=void 0),this._$EU()}updated(t){}firstUpdated(t){}}
/**
* @license
* Copyright 2017 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
*/
var m;f.finalized=!0,f.elementProperties=new Map,f.elementStyles=[],f.shadowRootOptions={mode:"open"},null==c||c({ReactiveElement:f}),(null!==(a=globalThis.reactiveElementVersions)&&void 0!==a?a:globalThis.reactiveElementVersions=[]).push("1.3.0");const y=globalThis.trustedTypes,w=y?y.createPolicy("lit-html",{createHTML:t=>t}):void 0,b=`lit$${(Math.random()+"").slice(9)}$`,g="?"+b,v=`<${g}>`,A=document,x=(t="")=>A.createComment(t),k=t=>null===t||"object"!=typeof t&&"function"!=typeof t,_=Array.isArray,S=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,E=/-->/g,$=/>/g,C=/>|[ \n\r](?:([^\s"'>=/]+)([ \n\r]*=[ \n\r]*(?:[^ \n\r"'`<>=]|("|')|))|$)/g,P=/'/g,I=/"/g,U=/^(?:script|style|textarea|title)$/i,T=(N=1,(t,...e)=>({_$litType$:N,strings:t,values:e})),O=Symbol.for("lit-noChange"),M=Symbol.for("lit-nothing"),L=new WeakMap,R=A.createTreeWalker(A,129,null,!1);var N;class B{constructor({strings:t,_$litType$:e},i){let s;this.parts=[];let n=0,r=0;const o=t.length-1,a=this.parts,[l,h]=((t,e)=>{const i=t.length-1,s=[];let n,r=2===e?"<svg>":"",o=S;for(let l=0;l<i;l++){const e=t[l];let i,a,h=-1,c=0;for(;c<e.length&&(o.lastIndex=c,a=o.exec(e),null!==a);)c=o.lastIndex,o===S?"!--"===a[1]?o=E:void 0!==a[1]?o=$:void 0!==a[2]?(U.test(a[2])&&(n=RegExp("<\u002F"+a[2],"g")),o=C):void 0!==a[3]&&(o=C):o===C?">"===a[0]?(o=null!=n?n:S,h=-1):void 0===a[1]?h=-2:(h=o.lastIndex-a[2].length,i=a[1],o=void 0===a[3]?C:'"'===a[3]?I:P):o===I||o===P?o=C:o===E||o===$?o=S:(o=C,n=void 0);const d=o===C&&t[l+1].startsWith("/>")?" ":"";r+=o===S?e+v:h>=0?(s.push(i),e.slice(0,h)+"$lit$"+e.slice(h)+b+d):e+b+(-2===h?(s.push(void 0),l):d)}const a=r+(t[i]||"<?>")+(2===e?"<\u002Fsvg>":"");if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return[void 0!==w?w.createHTML(a):a,s]})(t,e);if(this.el=B.createElement(l,i),R.currentNode=this.el.content,2===e){const t=this.el.content,e=t.firstChild;e.remove(),t.append(...e.childNodes)}for(;null!==(s=R.nextNode())&&a.length<o;){if(1===s.nodeType){if(s.hasAttributes()){const t=[];for(const e of s.getAttributeNames())if(e.endsWith("$lit$")||e.startsWith(b)){const i=h[r++];if(t.push(e),void 0!==i){const t=s.getAttribute(i.toLowerCase()+"$lit$").split(b),e=/([.?@])?(.*)/.exec(i);a.push({type:1,index:n,name:e[2],strings:t,ctor:"."===e[1]?V:"?"===e[1]?G:"@"===e[1]?W:z})}else a.push({type:6,index:n})}for(const e of t)s.removeAttribute(e)}if(U.test(s.tagName)){const t=s.textContent.split(b),e=t.length-1;if(e>0){s.textContent=y?y.emptyScript:"";for(let i=0;i<e;i++)s.append(t[i],x()),R.nextNode(),a.push({type:2,index:++n});s.append(t[e],x())}}}else if(8===s.nodeType)if(s.data===g)a.push({type:2,index:n});else{let t=-1;for(;-1!==(t=s.data.indexOf(b,t+1));)a.push({type:7,index:n}),t+=b.length-1}n++}}static createElement(t,e){const i=A.createElement("template");return i.innerHTML=t,i}}function D(t,e,i=t,s){var n,r,o,a;if(e===O)return e;let l=void 0!==s?null===(n=i._$Cl)||void 0===n?void 0:n[s]:i._$Cu;const h=k(e)?void 0:e._$litDirective$;return(null==l?void 0:l.constructor)!==h&&(null===(r=null==l?void 0:l._$AO)||void 0===r||r.call(l,!1),void 0===h?l=void 0:(l=new h(t),l._$AT(t,i,s)),void 0!==s?(null!==(o=(a=i)._$Cl)&&void 0!==o?o:a._$Cl=[])[s]=l:i._$Cu=l),void 0!==l&&(e=D(t,l._$AS(t,e.values),l,s)),e}class F{constructor(t,e){this.v=[],this._$AN=void 0,this._$AD=t,this._$AM=e}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}p(t){var e;const{el:{content:i},parts:s}=this._$AD,n=(null!==(e=null==t?void 0:t.creationScope)&&void 0!==e?e:A).importNode(i,!0);R.currentNode=n;let r=R.nextNode(),o=0,a=0,l=s[0];for(;void 0!==l;){if(o===l.index){let e;2===l.type?e=new H(r,r.nextSibling,this,t):1===l.type?e=new l.ctor(r,l.name,l.strings,this,t):6===l.type&&(e=new K(r,this,t)),this.v.push(e),l=s[++a]}o!==(null==l?void 0:l.index)&&(r=R.nextNode(),o++)}return n}m(t){let e=0;for(const i of this.v)void 0!==i&&(void 0!==i.strings?(i._$AI(t,i,e),e+=i.strings.length-2):i._$AI(t[e])),e++}}class H{constructor(t,e,i,s){var n;this.type=2,this._$AH=M,this._$AN=void 0,this._$AA=t,this._$AB=e,this._$AM=i,this.options=s,this._$Cg=null===(n=null==s?void 0:s.isConnected)||void 0===n||n}get _$AU(){var t,e;return null!==(e=null===(t=this._$AM)||void 0===t?void 0:t._$AU)&&void 0!==e?e:this._$Cg}get parentNode(){let t=this._$AA.parentNode;const e=this._$AM;return void 0!==e&&11===t.nodeType&&(t=e.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,e=this){t=D(this,t,e),k(t)?t===M||null==t||""===t?(this._$AH!==M&&this._$AR(),this._$AH=M):t!==this._$AH&&t!==O&&this.$(t):void 0!==t._$litType$?this.T(t):void 0!==t.nodeType?this.k(t):(t=>{var e;return _(t)||"function"==typeof(null===(e=t)||void 0===e?void 0:e[Symbol.iterator])})(t)?this.S(t):this.$(t)}A(t,e=this._$AB){return this._$AA.parentNode.insertBefore(t,e)}k(t){this._$AH!==t&&(this._$AR(),this._$AH=this.A(t))}$(t){this._$AH!==M&&k(this._$AH)?this._$AA.nextSibling.data=t:this.k(A.createTextNode(t)),this._$AH=t}T(t){var e;const{values:i,_$litType$:s}=t,n="number"==typeof s?this._$AC(t):(void 0===s.el&&(s.el=B.createElement(s.h,this.options)),s);if((null===(e=this._$AH)||void 0===e?void 0:e._$AD)===n)this._$AH.m(i);else{const t=new F(n,this),e=t.p(this.options);t.m(i),this.k(e),this._$AH=t}}_$AC(t){let e=L.get(t.strings);return void 0===e&&L.set(t.strings,e=new B(t)),e}S(t){_(this._$AH)||(this._$AH=[],this._$AR());const e=this._$AH;let i,s=0;for(const n of t)s===e.length?e.push(i=new H(this.A(x()),this.A(x()),this,this.options)):i=e[s],i._$AI(n),s++;s<e.length&&(this._$AR(i&&i._$AB.nextSibling,s),e.length=s)}_$AR(t=this._$AA.nextSibling,e){var i;for(null===(i=this._$AP)||void 0===i||i.call(this,!1,!0,e);t&&t!==this._$AB;){const e=t.nextSibling;t.remove(),t=e}}setConnected(t){var e;void 0===this._$AM&&(this._$Cg=t,null===(e=this._$AP)||void 0===e||e.call(this,t))}}class z{constructor(t,e,i,s,n){this.type=1,this._$AH=M,this._$AN=void 0,this.element=t,this.name=e,this._$AM=s,this.options=n,i.length>2||""!==i[0]||""!==i[1]?(this._$AH=Array(i.length-1).fill(new String),this.strings=i):this._$AH=M}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(t,e=this,i,s){const n=this.strings;let r=!1;if(void 0===n)t=D(this,t,e,0),r=!k(t)||t!==this._$AH&&t!==O,r&&(this._$AH=t);else{const s=t;let o,a;for(t=n[0],o=0;o<n.length-1;o++)a=D(this,s[i+o],e,o),a===O&&(a=this._$AH[o]),r||(r=!k(a)||a!==this._$AH[o]),a===M?t=M:t!==M&&(t+=(null!=a?a:"")+n[o+1]),this._$AH[o]=a}r&&!s&&this.C(t)}C(t){t===M?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,null!=t?t:"")}}class V extends z{constructor(){super(...arguments),this.type=3}C(t){this.element[this.name]=t===M?void 0:t}}const j=y?y.emptyScript:"";class G extends z{constructor(){super(...arguments),this.type=4}C(t){t&&t!==M?this.element.setAttribute(this.name,j):this.element.removeAttribute(this.name)}}class W extends z{constructor(t,e,i,s,n){super(t,e,i,s,n),this.type=5}_$AI(t,e=this){var i;if((t=null!==(i=D(this,t,e,0))&&void 0!==i?i:M)===O)return;const s=this._$AH,n=t===M&&s!==M||t.capture!==s.capture||t.once!==s.once||t.passive!==s.passive,r=t!==M&&(s===M||n);n&&this.element.removeEventListener(this.name,this,s),r&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){var e,i;"function"==typeof this._$AH?this._$AH.call(null!==(i=null===(e=this.options)||void 0===e?void 0:e.host)&&void 0!==i?i:this.element,t):this._$AH.handleEvent(t)}}class K{constructor(t,e,i){this.element=t,this.type=6,this._$AN=void 0,this._$AM=e,this.options=i}get _$AU(){return this._$AM._$AU}_$AI(t){D(this,t)}}const q=window.litHtmlPolyfillSupport;
/**
* @license
* Copyright 2017 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
*/
var Y,J;null==q||q(B,H),(null!==(m=globalThis.litHtmlVersions)&&void 0!==m?m:globalThis.litHtmlVersions=[]).push("2.2.0");class X extends f{constructor(){super(...arguments),this.renderOptions={host:this},this._$Dt=void 0}createRenderRoot(){var t,e;const i=super.createRenderRoot();return null!==(t=(e=this.renderOptions).renderBefore)&&void 0!==t||(e.renderBefore=i.firstChild),i}update(t){const e=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Dt=((t,e,i)=>{var s,n;const r=null!==(s=null==i?void 0:i.renderBefore)&&void 0!==s?s:e;let o=r._$litPart$;if(void 0===o){const t=null!==(n=null==i?void 0:i.renderBefore)&&void 0!==n?n:null;r._$litPart$=o=new H(e.insertBefore(x(),t),t,void 0,null!=i?i:{})}return o._$AI(t),o})(e,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),null===(t=this._$Dt)||void 0===t||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),null===(t=this._$Dt)||void 0===t||t.setConnected(!1)}render(){return O}}X.finalized=!0,X._$litElement$=!0,null===(Y=globalThis.litElementHydrateSupport)||void 0===Y||Y.call(globalThis,{LitElement:X});const Z=globalThis.litElementPolyfillSupport;null==Z||Z({LitElement:X}),(null!==(J=globalThis.litElementVersions)&&void 0!==J?J:globalThis.litElementVersions=[]).push("3.2.0");
/**
* @license
* Copyright 2017 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
*/
const Q=t=>e=>{return"function"==typeof e?(i=t,s=e,window.customElements.define(i,s),s):((t,e)=>{const{kind:i,elements:s}=e;return{kind:i,elements:s,finisher(e){window.customElements.define(t,e)}}})(t,e);
/**
* @license
* Copyright 2017 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
*/var i,s},tt=(t,e)=>"method"===e.kind&&e.descriptor&&!("value"in e.descriptor)?__spreadProps(__spreadValues({},e),{finisher(i){i.createProperty(e.key,t)}}):{kind:"field",key:Symbol(),placement:"own",descriptor:{},originalKey:e.key,initializer(){"function"==typeof e.initializer&&(this[e.key]=e.initializer.call(this))},finisher(i){i.createProperty(e.key,t)}};
/**
* @license
* Copyright 2017 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
*/
function et(t){return e=__spreadProps(__spreadValues({},t),{state:!0}),(t,i)=>{return void 0!==i?(s=e,n=i,void t.constructor.createProperty(n,s)):tt(e,t);var s,n};var e}
/**
* @license
* Copyright 2017 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
*/
/**
* @license
* Copyright 2017 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
*/
function it(t,e){return(({finisher:t,descriptor:e})=>(i,s)=>{var n;if(void 0===s){const s=null!==(n=i.originalKey)&&void 0!==n?n:i.key,r=null!=e?{kind:"method",placement:"prototype",key:s,descriptor:e(i.key)}:__spreadProps(__spreadValues({},i),{key:s});return null!=t&&(r.finisher=function(e){t(e,s)}),r}{const n=i.constructor;void 0!==e&&Object.defineProperty(i,s,e(s)),null==t||t(n,s)}})({descriptor:i=>{const s={get(){var e,i;return null!==(i=null===(e=this.renderRoot)||void 0===e?void 0:e.querySelector(t))&&void 0!==i?i:null},enumerable:!0,configurable:!0};if(e){const e="symbol"==typeof i?Symbol():"__"+i;s.get=function(){var i,s;return void 0===this[e]&&(this[e]=null!==(s=null===(i=this.renderRoot)||void 0===i?void 0:i.querySelector(t))&&void 0!==s?s:null),this[e]}}return s}})}
/**
* @license
* Copyright 2021 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
*/var st;null===(st=window.HTMLSlotElement)||void 0===st||st.prototype.assignedElements;const nt=160,rt=160,ot=1024,at=[14743759,8831084,3172432,464929],lt=16,ht=32,ct=64,dt=128,ut=Uint8Array.of(255,255,255,255,255,255,255,255,199,199,199,207,207,255,207,255,147,147,147,255,255,255,255,255,147,1,147,147,147,1,147,255,239,131,47,131,233,3,239,255,157,91,55,239,217,181,115,255,143,39,39,143,37,51,129,255,207,207,207,255,255,255,255,255,243,231,207,207,207,231,243,255,159,207,231,231,231,207,159,255,255,147,199,1,199,147,255,255,255,231,231,129,231,231,255,255,255,255,255,255,255,207,207,159,255,255,255,129,255,255,255,255,255,255,255,255,255,207,207,255,253,251,247,239,223,191,127,255,199,179,57,57,57,155,199,255,231,199,231,231,231,231,129,255,131,57,241,195,135,31,1,255,129,243,231,195,249,57,131,255,227,195,147,51,1,243,243,255,3,63,3,249,249,57,131,255,195,159,63,3,57,57,131,255,1,57,243,231,207,207,207,255,135,59,27,135,97,121,131,255,131,57,57,129,249,243,135,255,255,207,207,255,207,207,255,255,255,207,207,255,207,207,159,255,243,231,207,159,207,231,243,255,255,255,1,255,1,255,255,255,159,207,231,243,231,207,159,255,131,1,57,243,199,255,199,255,131,125,69,85,65,127,131,255,199,147,57,57,1,57,57,255,3,57,57,3,57,57,3,255,195,153,63,63,63,153,195,255,7,51,57,57,57,51,7,255,1,63,63,3,63,63,1,255,1,63,63,3,63,63,63,255,193,159,63,49,57,153,193,255,57,57,57,1,57,57,57,255,129,231,231,231,231,231,129,255,249,249,249,249,249,57,131,255,57,51,39,15,7,35,49,255,159,159,159,159,159,159,129,255,57,17,1,1,41,57,57,255,57,25,9,1,33,49,57,255,131,57,57,57,57,57,131,255,3,57,57,57,3,63,63,255,131,57,57,57,33,51,133,255,3,57,57,49,7,35,49,255,135,51,63,131,249,57,131,255,129,231,231,231,231,231,231,255,57,57,57,57,57,57,131,255,57,57,57,17,131,199,239,255,57,57,41,1,1,17,57,255,57,17,131,199,131,17,57,255,153,153,153,195,231,231,231,255,1,241,227,199,143,31,1,255,195,207,207,207,207,207,195,255,127,191,223,239,247,251,253,255,135,231,231,231,231,231,135,255,199,147,255,255,255,255,255,255,255,255,255,255,255,255,255,1,239,247,255,255,255,255,255,255,255,255,131,249,129,57,129,255,63,63,3,57,57,57,131,255,255,255,129,63,63,63,129,255,249,249,129,57,57,57,129,255,255,255,131,57,1,63,131,255,241,231,129,231,231,231,231,255,255,255,129,57,57,129,249,131,63,63,3,57,57,57,57,255,231,255,199,231,231,231,129,255,243,255,227,243,243,243,243,135,63,63,49,3,7,35,49,255,199,231,231,231,231,231,129,255,255,255,3,73,73,73,73,255,255,255,3,57,57,57,57,255,255,255,131,57,57,57,131,255,255,255,3,57,57,3,63,63,255,255,129,57,57,129,249,249,255,255,145,143,159,159,159,255,255,255,131,63,131,249,3,255,231,231,129,231,231,231,231,255,255,255,57,57,57,57,129,255,255,255,153,153,153,195,231,255,255,255,73,73,73,73,129,255,255,255,57,1,199,1,57,255,255,255,57,57,57,129,249,131,255,255,1,227,199,143,1,255,243,231,231,207,231,231,243,255,231,231,231,231,231,231,231,255,159,207,207,231,207,207,159,255,255,255,143,69,227,255,255,255,255,255,255,255,255,147,147,255,131,41,41,17,41,41,131,255,131,57,9,17,33,57,131,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,131,17,33,125,33,17,131,255,131,17,9,125,9,17,131,255,131,17,57,85,17,17,131,255,131,17,17,85,57,17,131,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,231,255,231,231,199,199,199,255,239,131,41,47,41,131,239,255,195,153,159,3,159,159,1,255,255,165,219,219,219,165,255,255,153,153,195,129,231,129,231,255,231,231,231,255,231,231,231,255,195,153,135,219,225,153,195,255,147,255,255,255,255,255,255,255,195,189,102,94,94,102,189,195,135,195,147,195,255,255,255,255,255,201,147,39,147,201,255,255,255,255,129,249,249,255,255,255,255,255,255,255,255,255,255,255,195,189,70,90,70,90,189,195,131,255,255,255,255,255,255,255,239,215,239,255,255,255,255,255,231,231,129,231,231,255,129,255,199,243,231,195,255,255,255,255,195,231,243,199,255,255,255,255,247,239,255,255,255,255,255,255,255,255,51,51,51,51,9,63,193,149,181,149,193,245,245,255,255,255,255,207,207,255,255,255,255,255,255,255,255,255,247,207,231,199,231,195,255,255,255,255,199,147,147,199,255,255,255,255,255,39,147,201,147,39,255,255,189,59,183,173,217,177,125,255,189,59,183,169,221,187,113,255,29,187,215,45,217,177,125,255,199,255,199,159,57,1,131,255,223,239,199,147,57,1,57,255,247,239,199,147,57,1,57,255,199,147,199,147,57,1,57,255,203,167,199,147,57,1,57,255,147,255,199,147,57,1,57,255,239,215,199,147,57,1,57,255,193,135,39,33,7,39,33,255,195,153,63,63,153,195,247,207,223,239,1,63,3,63,1,255,247,239,1,63,3,63,1,255,199,147,1,63,3,63,1,255,147,255,1,63,3,63,1,255,239,247,129,231,231,231,129,255,247,239,129,231,231,231,129,255,231,195,129,231,231,231,129,255,153,255,129,231,231,231,129,255,135,147,153,9,153,147,135,255,203,167,25,9,1,33,49,255,223,239,131,57,57,57,131,255,247,239,131,57,57,57,131,255,199,147,131,57,57,57,131,255,203,167,131,57,57,57,131,255,147,255,131,57,57,57,131,255,255,187,215,239,215,187,255,255,131,57,49,41,25,57,131,255,223,239,57,57,57,57,131,255,247,239,57,57,57,57,131,255,199,147,255,57,57,57,131,255,147,255,57,57,57,57,131,255,247,239,153,153,195,231,231,255,63,3,57,57,57,3,63,255,195,153,153,147,153,137,147,255,223,239,131,249,129,57,129,255,247,239,131,249,129,57,129,255,199,147,131,249,129,57,129,255,203,167,131,249,129,57,129,255,147,255,131,249,129,57,129,255,239,215,131,249,129,57,129,255,255,255,131,233,129,47,131,255,255,255,129,63,63,129,247,207,223,239,131,57,1,63,131,255,247,239,131,57,1,63,131,255,199,147,131,57,1,63,131,255,147,255,131,57,1,63,131,255,223,239,255,199,231,231,129,255,247,239,255,199,231,231,129,255,199,147,255,199,231,231,129,255,147,255,199,231,231,231,129,255,155,135,103,131,57,57,131,255,203,167,3,57,57,57,57,255,223,239,131,57,57,57,131,255,247,239,131,57,57,57,131,255,199,147,131,57,57,57,131,255,203,167,131,57,57,57,131,255,147,255,131,57,57,57,131,255,255,231,255,129,255,231,255,255,255,255,131,49,41,25,131,255,223,239,57,57,57,57,129,255,247,239,57,57,57,57,129,255,199,147,255,57,57,57,129,255,147,255,57,57,57,57,129,255,247,239,57,57,57,129,249,131,63,63,3,57,57,3,63,63,147,255,57,57,57,129,249,131);function pt(t){const e=new URL(location.href),i=e.searchParams.get(t);if(null!=i)return i;return new URL(e.hash.substring(1),"https://x").searchParams.get(t)}function ft(){if(null==document.fullscreenElement){let t=function(){const t=window.frameElement;t&&(t.style.position="fixed",t.style.top="0",t.style.left="0",t.style.zIndex="99999",t.style.width="100%",t.style.height="100%")};const e=document.body.requestFullscreen&&document.body.requestFullscreen({navigationUI:"hide"});e?e.catch(t):t()}}const mt="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-:+=^!/*?&<>()[]{}@%$#".split(""),yt=[0,68,0,84,83,82,72,0,75,76,70,65,0,63,62,69,0,1,2,3,4,5,6,7,8,9,64,0,73,66,74,71,81,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,77,0,78,67,0,0,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,79,0,80,0,0];function wt(t){const e=t.length,i=e%4,s=i?e+4-i:e;let n="",r=0,o=0;for(;r<s;){const i=r<e?t[r]:0;if(++r,o=256*o+i,r%4==0){let t=52200625;for(;t>=1;){const e=Math.floor(o/t)%85;n+=mt[e],t/=85}o=0}}return n}function bt(t,e){let i=0,s=0,n=0;const r=t.length,o=e.length;if(t.length%5==0)for(;s<r;){const r=t.charCodeAt(s++)-32;if(r<0||r>=yt.length)return i;if(n=85*n+yt[r],s%5==0){let t=16777216;for(;t>=1;){if(i>=o)return i;e[i++]=n/t%256,t/=256}n=0}}return i}class gt{constructor(){this.memory=new ArrayBuffer(65536),this.diskBuffer=new ArrayBuffer(ot),this.diskSize=0}read(t){new Uint8Array(this.memory).set(new Uint8Array(t.memory.buffer)),this.diskSize=t.diskSize,new Uint8Array(this.diskBuffer).set(new Uint8Array(t.diskBuffer,0,t.diskSize))}write(t){new Uint8Array(t.memory.buffer).set(new Uint8Array(this.memory)),t.diskSize=this.diskSize,new Uint8Array(t.diskBuffer).set(new Uint8Array(this.diskBuffer,0,this.diskSize))}toBytes(t){t||(t=new Uint8Array(65540+this.diskSize)),t.set(new Uint8Array(this.memory),0);return new DataView(t.buffer,t.byteOffset,t.byteLength).setUint32(65536,this.diskSize),t.set(new Uint8Array(this.diskBuffer,0,this.diskSize),65540),t}fromBytes(t){new Uint8Array(this.memory).set(t.subarray(0,65536));const e=new DataView(t.buffer,t.byteOffset,t.byteLength);this.diskSize=e.getUint32(65536);new Uint8Array(this.diskBuffer).set(t.subarray(65540,65540+this.diskSize))}}const vt=20;class At{constructor(){this.frame=-1,this.state=new gt,this.inputs=new Array(4),this.predicted=new Array(4);for(let t=0;t<4;++t)this.inputs[t]=0,this.predicted[t]=!0}}class xt{constructor(){this.futureInputs=new Map}}class kt{constructor(t,e){this.currentFrame=t,this.runtime=e,this.rollbackIdx=vt,this.history=new Array(vt);for(let i=0;i<vt;++i)this.history[i]=new At;this.players=new Array(4);for(let i=0;i<4;++i)this.players[i]=new xt}addInputs(t,e,i){const s=this.players[t];for(const n of i){if(e>=this.currentFrame)s.futureInputs.has(e)||s.futureInputs.set(e,n);else for(let i=0,s=vt;i<s;++i){const s=this.history[i];if(s.frame==e){s.predicted[t]&&(s.predicted[t]=!1,s.inputs[t]!=n&&(s.inputs[t]=n,this.rollbackIdx=Math.min(i,this.rollbackIdx)));break}}++e}}update(){if(this.rollbackIdx<vt){for(let e=this.rollbackIdx+1;e<vt;++e){const t=this.history[e];for(let i=0;i<4;++i)if(t.predicted[i]){const s=this.history[e-1];t.inputs[i]=s.inputs[i]}}let t=!0;for(;this.rollbackIdx<vt;){const e=this.history[this.rollbackIdx++];t?(t=!1,e.state.write(this.runtime)):e.state.read(this.runtime);for(let t=0;t<4;++t)this.runtime.setGamepad(t,e.inputs[t]);this.runtime.update()}}const t=this.history[19],e=this.history.shift();this.history.push(e),e.frame=this.currentFrame,e.state.read(this.runtime);for(let i=0;i<4;++i){const s=this.players[i];let n=s.futureInputs.get(this.currentFrame);null!=n?(e.predicted[i]=!1,s.futureInputs.delete(this.currentFrame)):(e.predicted[i]=!0,n=t.inputs[i]),e.inputs[i]=n,this.runtime.setGamepad(i,n)}this.runtime.update(),++this.currentFrame}}class _t{constructor(t){this.onMessage=t,this.bufferedOutput=[],this.connect(),this.keepaliveInterval=window.setInterval((()=>{this.send("",{type:"KEEPALIVE"},!1)}),15e3)}async connect(){const t=["wss://webrtc-signal-server.wasm4.org","wss://ywc2h85cv1.execute-api.us-east-1.amazonaws.com/production","wss://webrtc-signal-server.wasm4.jwq.moe","wss://iyuavuru2h.execute-api.eu-central-1.amazonaws.com/production"];for(const i of t)try{this.socket=await new Promise(((t,e)=>{const s=new WebSocket(i);s.addEventListener("open",(()=>{t(s)})),s.addEventListener("error",(()=>{e()}))}));break}catch(e){console.error(e)}if(!this.socket)throw new Error("Unable to connect to signal server");this.socket.addEventListener("message",(t=>{const{source:e,message:i}=JSON.parse(t.data);this.onMessage(e,i)}));for(const i of this.bufferedOutput)this.socket.send(i);this.bufferedOutput.length=0}send(t,e,i=!0){var s;const n=JSON.stringify({target:t,message:e});1==(null==(s=this.socket)?void 0:s.readyState)?this.socket.send(n):i&&this.bufferedOutput.push(n)}close(){var t;null==(t=this.socket)||t.close(),window.clearInterval(this.keepaliveInterval)}}class St{constructor(t){let e;this.connections=new Map,this.localPeerId=new Promise((t=>{e=t})),this.signalClient=new _t((async(i,s)=>{switch(s.type){case"WHOAMI_REPLY":this.iceServers=s.iceServers,e(s.yourPeerId);break;case"OFFER":if(this.connections.has(i))throw new Error("Received offer for a connection we already initiated");{const e=this.createConnection(i);await e.setRemoteDescription(s.description),await e.setLocalDescription(await e.createAnswer()),t(e,i),this.signalClient.send(i,{type:"ANSWER",description:e.localDescription.toJSON()})}break;case"ANSWER":{const t=this.connections.get(i);t&&await t.setRemoteDescription(s.description)}break;case"CANDIDATE":{const t=this.connections.get(i);t&&await t.addIceCandidate(new RTCIceCandidate(s.candidate))}break;case"ABORT":{const t=this.connections.get(i);t&&t.close()}}})),this.signalClient.send("",{type:"WHOAMI_REQUEST"})}createConnection(t){const e=new RTCPeerConnection({iceServers:this.iceServers});return this.connections.set(t,e),e.addEventListener("negotiationneeded",(async()=>{await e.setLocalDescription(await e.createOffer()),this.signalClient.send(t,{type:"OFFER",description:e.localDescription.toJSON()})})),e.addEventListener("icecandidate",(({candidate:e})=>{e&&this.signalClient.send(t,{type:"CANDIDATE",candidate:e.toJSON()})})),e.addEventListener("connectionstatechange",(()=>{const i=e.connectionState;"connected"!=i&&"failed"!=i||this.connections.delete(t)})),e}connect(t){return this.connections.get(t)||this.createConnection(t)}close(){this.signalClient.close();for(const[t,e]of this.connections)e.close()}}const Et=16384;class $t{constructor(t){this.chunks=[],this.size=0,t.addEventListener("message",(t=>{if(t.data instanceof ArrayBuffer){const e=new Uint8Array(t.data);this.size+=e.byteLength,this.chunks.push(e)}}))}read(){const t=new Uint8Array(this.size);let e=0;for(const i of this.chunks)t.set(i,e),e+=i.byteLength;return this.chunks.length=0,this.size=0,t}}class Ct{constructor(t){this.channel=t,this.size=0}write(t){this.buffer||(this.buffer=new Uint8Array(Et));let e=this.size,i=0;for(;i<t.length;){const s=t.subarray(i,i+Et-e);this.buffer.set(s,e),i+=s.length,e+=s.length,e>=Et&&(e-=Et,this.channel.send(this.buffer))}this.size=e}flush(){this.buffer&&this.size>0&&this.channel.send(this.buffer.subarray(0,this.size)),this.buffer=void 0}}class Pt{constructor(t,e=0){this.buffer=t,this.position=e}readBit(){const t=!!(this.buffer[this.position/8>>>0]&1<<(7&this.position));return++this.position,t}readBits(t){let e=0;for(let i=0;i<t;++i)e|=+this.readBit()<<i;return e}}class It{constructor(t,e=0){this.buffer=t,this.position=e}write1(){this.buffer[this.position/8>>>0]|=1<<(7&this.position),++this.position}write0(){this.buffer[this.position/8>>>0]&=~(1<<(7&this.position)),++this.position}writeBits(t,e){for(let i=0;i<e;++i)t&1<<i?this.write1():this.write0()}}class Ut{constructor(t=.125){this.discount=t,this.average=0,this.firstUpdate=!0}update(t){if(this.firstUpdate)this.firstUpdate=!1,this.average=t;else{const e=this.discount;this.average=(1-e)*this.average+e*t}}}const Tt=8+Math.ceil(82.5),Ot=new ArrayBuffer(Tt);class Mt{constructor(t,e,i,s){this.peerId=t,this.connection=e,this.reliableChannel=i,this.unreliableChannel=s,this.playerIdx=-1,this.frame=0,this.nextNeededFrame=0,this.outboundFrame=0,this.outboundInputs=[],this.ping=new Ut,this.drift=new Ut,this.chunkReader=new $t(i),this.chunkWriter=new Ct(i)}addOutboundInput(t,e){if(0==this.outboundFrame&&(this.outboundFrame=t),t<this.outboundFrame){for(let i=this.outboundFrame-t;i>0;--i)this.outboundInputs.unshift(e);this.outboundFrame=t}else{const i=t-this.outboundFrame;if(i>=this.outboundInputs.length){for(let t=this.outboundInputs.length;t<i;++t)this.outboundInputs[t]=t>0?this.outboundInputs[t-1]:0;this.outboundInputs[i]=e}}}sendMessage(t){this.reliableChannel.send(JSON.stringify(t))}sendUnreliableBuffer(t){this.unreliableChannel.send(t)}sendPingRequest(){const t=new DataView(Ot);t.setUint8(0,2),t.setUint32(1,performance.now()>>>0),this.sendUnreliableBuffer(new Uint8Array(Ot,0,5))}sendPingReply(t){const e=new DataView(Ot);e.setUint8(0,3),e.setUint32(1,t),this.sendUnreliableBuffer(new Uint8Array(Ot,0,5))}sendTick(t){const e=new DataView(Ot);e.setUint8(0,1),e.setUint32(1,t),e.setInt8(5,0==this.nextNeededFrame?-127:this.nextNeededFrame-t),e.setInt8(6,this.outboundFrame-t),e.setUint8(7,this.outboundInputs.length);const i=new It(new Uint8Array(Ot,8));let s=0;for(const r of this.outboundInputs){const t=s^r;s=r;for(let e=0;e<8;++e)t&1<<e&&(i.write1(),i.writeBits(e,3));i.write0()}const n=8+Math.ceil(i.position/8);this.sendUnreliableBuffer(new Uint8Array(Ot,0,n))}close(){this.reliableChannel.close(),this.unreliableChannel.close(),this.connection.close()}}class Lt{constructor(t){this.runtime=t,this.remotePlayers=new Map,this.localPlayerIdx=-1,this.updateCount=0,this.peerMgr=new St((async(t,e)=>{const i=Array.from(this.remotePlayers.keys()),s=await this.createRemotePlayer(t,e);s.sendMessage({type:"WELCOME",otherPeers:i}),this.localPlayerIdx>=0&&s.sendMessage({type:"PLAYER_INFO",playerIdx:this.localPlayerIdx})}))}host(){this.runtime.setNetplay(0),this.rollbackMgr=new kt(1,this.runtime),this.localPlayerIdx=0}join(t){const e=this.peerMgr.connect(t);this.createRemotePlayer(e,t).then((t=>{t.sendMessage({type:"JOIN_REQUEST"})}),(t=>{this.runtime.blueScreen("Failed to connect\nto peer. They may\nbe offline?")}))}async getInviteLink(){const t=await this.peerMgr.localPeerId,e=window.location;if("file:"==e.protocol||"localhost"==e.hostname||"127.0.0.1"==e.hostname||"wasm4.org"==e.hostname)return`https://wasm4.org/netplay/#${t}`;const i=new URL(e.href);return i.searchParams.set("netplay",t),i.href}close(){for(const t of this.remotePlayers.values())t.close();this.peerMgr.close()}async createRemotePlayer(t,e){function i(e){return new Promise(((i,s)=>{const n=t.createDataChannel("WASM-4",e);n.binaryType="arraybuffer",n.onopen=()=>{i(n)},n.onerror=s}))}const[s,n]=await Promise.all([i({negotiated:!0,id:0}),i({negotiated:!0,id:1,ordered:!1,maxRetransmits:0})]),r=new Mt(e,t,s,n);this.remotePlayers.set(e,r);const o=()=>{this.remotePlayers.has(e)&&(this.remotePlayers.delete(e),this.onleave&&r.playerIdx>=0&&this.onleave(r.playerIdx))};return t.addEventListener("connectionstatechange",(()=>{"disconnected"==t.connectionState&&o()})),s.addEventListener("close",o),n.addEventListener("close",o),s.addEventListener("message",(async t=>{if("string"!=typeof t.data)return;const e=JSON.parse(t.data);switch(e.type){case"WELCOME":for(const t of e.otherPeers)if(!this.remotePlayers.has(t)){const e=this.peerMgr.connect(t),i=await this.createRemotePlayer(e,t);this.localPlayerIdx>=0&&i.sendMessage({type:"PLAYER_INFO",playerIdx:this.localPlayerIdx})}break;case"JOIN_REQUEST":{const t=this.nextPlayerIdx();if(t>=4)r.sendMessage({type:"JOIN_REJECT"}),r.close();else{r.playerIdx=t,r.chunkWriter.write(this.runtime.wasmBuffer);const e=new gt;e.read(this.runtime),r.chunkWriter.write(e.toBytes()),r.chunkWriter.flush(),r.sendMessage({type:"JOIN_REPLY",yourPlayerIdx:r.playerIdx,frame:this.rollbackMgr.currentFrame,stateOffset:this.runtime.wasmBuffer.byteLength}),this.onjoin&&this.onjoin(r.playerIdx)}}break;case"JOIN_REPLY":{this.localPlayerIdx=e.yourPlayerIdx;for(const e of this.remotePlayers.values())e!=r&&e.sendMessage({type:"PLAYER_INFO",playerIdx:this.localPlayerIdx});const t=r.chunkReader.read(),i=t.subarray(0,e.stateOffset),s=t.subarray(e.stateOffset);await this.runtime.load(i,!1);const n=new gt;n.fromBytes(s),n.write(this.runtime),this.runtime.setNetplay(this.localPlayerIdx),this.rollbackMgr=new kt(e.frame,this.runtime),this.onstart&&this.onstart(this.localPlayerIdx)}break;case"JOIN_REJECT":this.runtime.blueScreen("Connected, but the\ngame is already\nfull!"),this.close();break;case"PLAYER_INFO":-1==r.playerIdx&&(r.playerIdx=e.playerIdx,this.onjoin&&this.onjoin(r.playerIdx))}})),n.addEventListener("message",(async t=>{const e=t.data,i=new DataView(e);switch(i.getUint8(0)){case 1:if(this.rollbackMgr&&r.playerIdx>=0){const t=i.getUint32(1);if(t>r.frame){const s=i.getInt8(5)+t,n=i.getInt8(6)+t,o=i.getUint8(7),a=new Pt(new Uint8Array(e,8)),l=new Array(o);let h=0;for(let t=0;t<o;++t){for(;a.readBit();){h^=1<<a.readBits(3)}l[t]=h}if(r.frame=t,r.nextNeededFrame=n+l.length,0==r.outboundFrame)r.outboundFrame=s;else if(s>r.outboundFrame){const t=s-r.outboundFrame;r.outboundFrame=s,r.outboundInputs.splice(0,t)}const c=t+.5*r.ping.average*60/1e3,d=this.rollbackMgr.currentFrame-c;r.drift.update(d),this.rollbackMgr.addInputs(r.playerIdx,n,l)}}break;case 2:{const t=i.getUint32(1);r.sendPingReply(t)}break;case 3:{const t=i.getUint32(1),e=(performance.now()>>>0)-t;r.ping.update(e)}}})),r}nextPlayerIdx(){t:for(let t=0;t<4;++t)if(this.localPlayerIdx!=t){for(const e of this.remotePlayers.values())if(e.playerIdx==t)continue t;return t}return-1}update(t){if(!this.rollbackMgr)return!1;const e=0==(7&this.updateCount),i=0==(31&this.updateCount);++this.updateCount;const s=this.rollbackMgr.currentFrame,n=s+2;this.rollbackMgr.addInputs(this.localPlayerIdx,n,[t]);let r=!1;for(const o of this.remotePlayers.values())o.addOutboundInput(n,t),o.sendTick(s),(o.nextNeededFrame<s-vt||o.outboundInputs.length>=20)&&(r=!0),i&&o.sendPingRequest();if(e){let t=0;for(const e of this.remotePlayers.values())t=Math.max(e.drift.average,t);t>=1&&(r=!0)}return r||this.rollbackMgr.update(),!r}getSummary(){const t=[{playerIdx:this.localPlayerIdx,ping:-1}];for(const e of this.remotePlayers.values())t.push({playerIdx:e.playerIdx,ping:e.ping.average});return t.sort(((t,e)=>t.playerIdx-e.playerIdx)),t}}var Rt='(()=>{"use strict";var p=44100,q=.15,A=.25,V=class{constructor(){this.freq1=0;this.freq2=0;this.startTime=0;this.attackTime=0;this.decayTime=0;this.sustainTime=0;this.releaseTime=0;this.sustainVolume=0;this.peakVolume=0;this.phase=0;this.pan=0;this.pulseDutyCycle=0;this.noiseSeed=1;this.noiseLastRandom=0}};function M(n,e,t){return n+t*(e-n)}function g(n,e){if(n<e){let t=n/e;return t+t-t*t}else if(n>1-e){let t=(n-(1-e))/e;return 1-(t+t-t*t)}else return 1}var C=class extends AudioWorkletProcessor{constructor(){super();this.time=0,this.channels=new Array(4);for(let e=0;e<4;++e)this.channels[e]=new V;this.port!=null&&(this.port.onmessage=e=>{this.tone(...e.data)})}ramp(e,t,o,T){let m=(this.time-o)/(T-o);return M(e,t,m)}getCurrentFrequency(e){return e.freq2>0?this.ramp(e.freq1,e.freq2,e.startTime,e.releaseTime):e.freq1}getCurrentVolume(e){let t=this.time;return t>=e.sustainTime?this.ramp(e.sustainVolume,0,e.sustainTime,e.releaseTime):t>=e.decayTime?e.sustainVolume:t>=e.attackTime?this.ramp(e.peakVolume,e.sustainVolume,e.attackTime,e.decayTime):this.ramp(0,e.peakVolume,e.startTime,e.attackTime)}tone(e,t,o,T){let m=e&65535,x=e>>16&65535,d=t&255,y=t>>8&255,l=t>>16&255,r=t>>24&255,b=Math.min(o&255,100),f=Math.min(o>>8&255,100),a=T&3,i=T>>2&3,u=T>>4&3,s=this.channels[a];this.time>s.releaseTime&&(s.phase=a==2?.25:0),s.freq1=m,s.freq2=x,s.startTime=this.time,s.attackTime=s.startTime+(p*r/60>>>0),s.decayTime=s.attackTime+(p*l/60>>>0),s.sustainTime=s.decayTime+(p*d/60>>>0),s.releaseTime=s.sustainTime+(p*y/60>>>0),s.pan=u;let c=a==2?A:q;if(s.sustainVolume=c*b/100,s.peakVolume=f?c*f/100:c,a==0||a==1)switch(i){case 0:s.pulseDutyCycle=.125;break;case 1:case 3:default:s.pulseDutyCycle=.25;break;case 2:s.pulseDutyCycle=.5;break}else a==2&&y==0&&(s.releaseTime+=p/1e3>>>0)}process(e,[[t,o]],T){for(let m=0,x=t.length;m<x;++m,++this.time){let d=0,y=0;for(let l=0;l<4;++l){let r=this.channels[l];if(this.time<r.releaseTime){let b=this.getCurrentFrequency(r),f=this.getCurrentVolume(r),a;if(l==3){for(r.phase+=b*b/(1e6/44100*p);r.phase>0;){r.phase--;let i=r.noiseSeed;i^=i>>7,i^=i<<9,i^=i>>13,r.noiseSeed=i,r.noiseLastRandom=((i&1)<<1)-1}a=f*r.noiseLastRandom}else{let i=b/p,u=r.phase+i;if(u>=1&&u--,r.phase=u,l==2)a=f*(2*Math.abs(2*r.phase-1)-1);else{let s,c,k,h=r.pulseDutyCycle;u<h?(s=u/h,c=i/h,k=f):(s=(u-h)/(1-h),c=i/(1-h),k=-f),a=k*g(s,c)}}r.pan!=1&&(y+=a),r.pan!=2&&(d+=a)}}t[m]=d,o[m]=y}return!0}};registerProcessor("wasm4-apu",C);})();\n';class Nt{constructor(){this.audioCtx=new(window.AudioContext||window.webkitAudioContext)({sampleRate:44100})}async init(){const t=this.audioCtx,e=new Blob([Rt],{type:"application/javascript"}),i=URL.createObjectURL(e);try{await t.audioWorklet.addModule(i);const e=new AudioWorkletNode(t,"wasm4-apu",{outputChannelCount:[2]});this.processorPort=e.port,e.connect(t.destination)}catch(s){let e;console.warn("AudioWorklet loading failed, falling back to slow audio",s);const i=(t,i)=>{e=new i};new Function("registerProcessor","AudioWorkletProcessor",Rt)(i,class{}),this.processor=e;const n=t.createScriptProcessor(1024,0,2);n.onaudioprocess=t=>{const i=t.outputBuffer.getChannelData(0),s=t.outputBuffer.getChannelData(1);e.process(null,[[i,s]])},n.connect(t.destination)}}tone(t,e,i,s){const n=this.processorPort;null!=n?n.postMessage([t,e,i,s]):this.processor.tone(t,e,i,s)}unlockAudio(){const t=this.audioCtx;"suspended"==t.state&&t.resume()}pauseAudio(){const t=this.audioCtx;"running"==t.state&&t.suspend()}}class Bt{constructor(t){this.bytes=new Uint8Array(t,160,6400),this.drawColors=new Uint16Array(t,20,1)}clear(){this.bytes.fill(0)}drawPoint(t,e,i){const s=nt*i+e>>>2,n=(3&e)<<1,r=3<<n;this.bytes[s]=t<<n|this.bytes[s]&~r}drawPointUnclipped(t,e,i){e>=0&&e<nt&&i>=0&&i<rt&&this.drawPoint(t,e,i)}drawHLineFast(t,e,i,s){const n=s-(3&s),r=Math.min(e+3&-4,n);if(n-r>3){for(let n=e;n<r;n++)this.drawPoint(t,n,i);const s=nt*i+r>>>2,o=nt*i+n>>>2,a=85*t;this.bytes.fill(a,s,o),e=n}for(let o=e;o<s;o++)this.drawPoint(t,o,i)}drawHLineUnclipped(t,e,i,s){i>=0&&i<rt&&(e<0&&(e=0),s>nt&&(s=nt),e<s&&this.drawHLineFast(t,e,i,s))}drawHLine(t,e,i){const s=15&this.drawColors[0];if(0==s)return;const n=s-1&3;this.drawHLineUnclipped(n,t,e,t+i)}drawVLine(t,e,i){if(e+i<=0||t<0||t>=nt)return;const s=15&this.drawColors[0];if(0==s)return;const n=Math.max(0,e),r=Math.min(rt,e+i),o=s-1&3;for(let a=n;a<r;a++)this.drawPoint(o,t,a)}drawRect(t,e,i,s){const n=Math.max(0,t),r=Math.max(0,e),o=t+i,a=e+s,l=Math.min(o,nt),h=Math.min(a,rt),c=this.drawColors[0],d=15&c,u=c>>>4&15;if(0!==d){const t=d-1&3;for(let e=r;e<h;++e)this.drawHLineFast(t,n,e,l)}if(0!==u){const i=u-1&3;if(t>=0&&t<nt)for(let e=r;e<h;++e)this.drawPoint(i,t,e);if(o>0&&o<=nt)for(let t=r;t<h;++t)this.drawPoint(i,o-1,t);e>=0&&e<rt&&this.drawHLineFast(i,n,e,l),a>0&&a<=rt&&this.drawHLineFast(i,n,a-1,l)}}drawOval(t,e,i,s){const n=this.drawColors[0],r=15&n,o=n>>>4&15;if(15===o)return;const a=o-1&3,l=r-1&3;let h=i-1;const c=s-1;let d=c%2,u=e+Math.floor(s/2),p=t,f=t+i-1,m=u-d;const y=h*h,w=c*c;let b=4*(1-h)*w,g=4*(d+1)*y,v=b+g+d*y;h=8*y,d=8*w;do{this.drawPointUnclipped(a,f,u),this.drawPointUnclipped(a,p,u),this.drawPointUnclipped(a,p,m),this.drawPointUnclipped(a,f,m);const t=p+1,e=f-t;0!==r&&e>0&&(this.drawHLineUnclipped(l,t,u,f),this.drawHLineUnclipped(l,t,m,f));const i=2*v;i<=g&&(u+=1,m-=1,g+=h,v+=g),(i>=b||i>g)&&(p+=1,f-=1,b+=d,v+=b)}while(p<=f);for(;u-m<s;)this.drawPointUnclipped(a,p-1,u),this.drawPointUnclipped(a,f+1,u),u+=1,this.drawPointUnclipped(a,p-1,m),this.drawPointUnclipped(a,f+1,m),m-=1}drawLine(t,e,i,s){const n=15&this.drawColors[0];if(0===n)return;const r=n-1&3;if(e>s){let n=t;t=i,i=n,n=e,e=s,s=n}const o=Math.abs(i-t),a=t<i?1:-1,l=s-e;let h,c=(o>l?o:-l)/2;for(;this.drawPointUnclipped(r,t,e),t!==i||e!==s;)h=c,h>-o&&(c-=l,t+=a),h<l&&(c+=o,e++)}drawText(t,e,i){let s=e;for(let n=0,r=t.length;n<r;++n){const r=t[n];if(0===r)return;10===r?(i+=8,s=e):r>=32&&r<=255?(this.blit(ut,s,i,8,8,0,r-32<<3,8),s+=8):s+=8}}blit(t,e,i,s,n,r,o,a,l=!1,h=!1,c=!1,d=!1){const u=this.drawColors[0];let p,f,m,y;d?(h=!h,p=Math.max(0,i)-i,f=Math.max(0,e)-e,m=Math.min(s,rt-i),y=Math.min(n,nt-e)):(p=Math.max(0,e)-e,f=Math.max(0,i)-i,m=Math.min(s,nt-e),y=Math.min(n,rt-i));for(let w=f;w<y;w++)for(let f=p;f<m;f++){const p=e+(d?w:f),m=i+(d?f:w);let y;const b=(o+(c?n-w-1:w))*a+(r+(h?s-f-1:f));if(l){y=t[b>>>2]>>>6-((3&b)<<1)&3}else{y=t[b>>>3]>>>7-(7&b)&1}const g=u>>>(y<<2)&15;0!==g&&this.drawPoint(g-1&3,p,m)}}}const Dt=6409,Ft=3553;class Ht{constructor(t){this.gl=t,this.colorBuffer=new Uint32Array(6400),this.paletteBuffer=new Float32Array(12),this.lastPalette=Array(4),this.paletteLocation=null;const e=new Uint32Array(256);for(let s=0;s<256;++s){const t=s>>6&3,i=s>>4&3,n=s>>2&3,r=3&s;e[s]=t<<30|i<<22|n<<14|r<<6}this.table=e;const i=t.canvas;i.addEventListener("webglcontextlost",(t=>{t.preventDefault()})),i.addEventListener("webglcontextrestored",(()=>{this.initGL()})),this.initGL()}initGL(){const t=this.gl;function e(e,i){const s=t.createShader(e);return t.shaderSource(s,i),t.compileShader(s),s}this.lastPalette=Array(4);const i=e(35633,"\n attribute vec2 pos;\n varying vec2 framebufferCoord;\n\n void main () {\n framebufferCoord = pos*vec2(0.5, -0.5) + 0.5;\n gl_Position = vec4(pos, 0, 1);\n }\n "),s=e(35632,`\n precision mediump float;\n uniform vec3 palette[4];\n uniform sampler2D framebuffer;\n varying vec2 framebufferCoord;\n\n vec3 lookup(float index) {\n vec3 p = palette[0];\n ${Array.from({length:3},((t,e)=>`p = mix(p, palette[${e+1}], step(${((e+1)/4).toFixed(2)}, index));`)).join("\n")}\n return p;\n }\n\n void main () {\n gl_FragColor = vec4(lookup(texture2D(framebuffer, framebufferCoord).r), 1.);\n }\n `),n=t.createProgram();t.attachShader(n,i),t.attachShader(n,s),t.linkProgram(n),t.useProgram(n),this.paletteLocation=t.getUniformLocation(n,"palette"),t.uniform1i(t.getUniformLocation(n,"framebuffer"),0),t.detachShader(n,i),t.deleteShader(i),t.detachShader(n,s),t.deleteShader(s),function(e){const i=t.createTexture();t.activeTexture(e),t.bindTexture(Ft,i),t.texParameteri(Ft,10242,33071),t.texParameteri(Ft,10243,33071),t.texParameteri(Ft,10240,9728),t.texParameteri(Ft,10241,9728)}(33984),t.texImage2D(Ft,0,Dt,nt,rt,0,Dt,5121,null);const r=t.getAttribLocation(n,"pos"),o=t.createBuffer(),a=new Float32Array([-1,-1,-1,1,1,1,1,1,1,-1,-1,-1]);t.bindBuffer(34962,o),t.bufferData(34962,a,35044),t.enableVertexAttribArray(r),t.vertexAttribPointer(r,2,5126,!1,0,0)}composite(t,e){const i=this.gl,s=e.bytes,n=this.colorBuffer,r=this.table,o=this.lastPalette,a=this.paletteBuffer;let l=!1;for(let h=0,c=0;h<4;++h){const e=t[h];l=l||o[h]!==e,a[c++]=(e>>16&255)/255,a[c++]=(e>>8&255)/255,a[c++]=(255&e)/255,o[h]=e}l&&i.uniform3fv(this.paletteLocation,this.paletteBuffer);for(let h=0;h<6400;++h)n[h]=r[s[h]];i.texImage2D(Ft,0,Dt,nt,rt,0,Dt,5121,new Uint8Array(n.buffer)),i.drawArrays(4,0,6)}}class zt{constructor(t){this.wasmBuffer=null,this.wasm=null,this.warnedFileSize=!1;const e=document.createElement("canvas");e.width=nt,e.height=rt,this.canvas=e;const i=e.getContext("webgl",{alpha:!1,depth:!1,antialias:!1});if(!i)throw new Error("web-runtime: could not create wegl context");let s;this.compositor=new Ht(i),this.apu=new Nt,this.diskName=t,this.diskBuffer=new ArrayBuffer(ot);try{s=localStorage.getItem(t)}catch(n){}this.diskSize=null!=s?bt(s,new Uint8Array(this.diskBuffer)):0,this.memory=new WebAssembly.Memory({initial:1,maximum:1}),this.data=new DataView(this.memory.buffer),this.framebuffer=new Bt(this.memory.buffer),this.reset(),this.pauseState=0,this.wasmBufferByteLen=0}async init(){await this.apu.init()}setMouse(t,e,i){this.data.setInt16(26,t,!0),this.data.setInt16(28,e,!0),this.data.setUint8(30,i)}setGamepad(t,e){this.data.setUint8(22+t,e)}setNetplay(t){this.data.setUint8(32,4|3&t)}getSystemFlag(t){return this.data.getUint8(31)&t}unlockAudio(){this.apu.unlockAudio()}pauseAudio(){this.apu.pauseAudio()}reset(t){const e=new Uint32Array(this.memory.buffer);t&&e.fill(0),this.pauseState&=-2,e.set(at,1),this.data.setUint16(20,4611,!0),this.data.setInt16(26,32767,!0),this.data.setInt16(28,32767,!0)}async load(t,e=!0){if(this.wasmBuffer=t,this.wasmBufferByteLen=t.byteLength,this.wasm=null,t.byteLength>65536&&e)throw new Error("Cart too big!");const i={memory:this.memory,rect:this.framebuffer.drawRect.bind(this.framebuffer),oval:this.framebuffer.drawOval.bind(this.framebuffer),line:this.framebuffer.drawLine.bind(this.framebuffer),hline:this.framebuffer.drawHLine.bind(this.framebuffer),vline:this.framebuffer.drawVLine.bind(this.framebuffer),text:this.text.bind(this),textUtf8:this.textUtf8.bind(this),textUtf16:this.textUtf16.bind(this),blit:this.blit.bind(this),blitSub:this.blitSub.bind(this),tone:this.apu.tone.bind(this.apu),diskr:this.diskr.bind(this),diskw:this.diskw.bind(this),trace:this.trace.bind(this),traceUtf8:this.traceUtf8.bind(this),traceUtf16:this.traceUtf16.bind(this),tracef:this.tracef.bind(this)};await this.bluescreenOnError((async()=>{const e=await WebAssembly.instantiate(t,{env:i});this.wasm=e.instance,"function"==typeof this.wasm.exports._start&&this.wasm.exports._start(),"function"==typeof this.wasm.exports._initialize&&this.wasm.exports._initialize()}))}async bluescreenOnError(t){var e;try{await t()}catch(i){if(i instanceof Error){const t=function(t){if(t instanceof WebAssembly.RuntimeError){let e;return t.message.match(/unreachable/)?e="The cartridge has\nreached a code \nsegment marked as\nunreachable.":t.message.match(/out of bounds/)&&(e="The cartridge has\nattempted a memory\naccess that is\nout of bounds."),e+"\n\n\n\n\nHit R to reboot."}if(t instanceof WebAssembly.LinkError)return"The cartridge has\ntried to import\na missing function.\n\n\n\nSee console for\nmore details.";if(t instanceof WebAssembly.CompileError)return"The cartridge is\ncorrupted.\n\n\n\nSee console for\nmore details.";if(t instanceof Vt)return t.wasm4Message;return"Unknown error.\n\n\n\nSee console for\nmore details."}(i);this.blueScreen(t),this.printToServer(null!=(e=i.stack)?e:"")}throw i}}text(t,e,i){const s=new Uint8Array(this.memory.buffer,t);this.framebuffer.drawText(s,e,i)}textUtf8(t,e,i,s){const n=new Uint8Array(this.memory.buffer,t,e);this.framebuffer.drawText(n,i,s)}textUtf16(t,e,i,s){const n=new Uint16Array(this.memory.buffer,t,e>>1);this.framebuffer.drawText(n,i,s)}blit(t,e,i,s,n,r){this.blitSub(t,e,i,s,n,0,0,s,r)}blitSub(t,e,i,s,n,r,o,a,l){const h=new Uint8Array(this.memory.buffer,t),c=1&l,d=2&l,u=4&l,p=8&l;this.framebuffer.blit(h,e,i,s,n,r,o,a,c,d,u,p)}diskr(t,e){const i=Math.min(e,this.diskSize),s=new Uint8Array(this.diskBuffer,0,i);return new Uint8Array(this.memory.buffer,t).set(s),i}diskw(t,e){const i=Math.min(e,ot),s=new Uint8Array(this.memory.buffer,t,i),n=new Uint8Array(this.diskBuffer),r=wt(s);try{localStorage.setItem(this.diskName,r)}catch(o){}return n.set(s),this.diskSize=i,i}getCString(t){let e="";for(;;){const i=this.data.getUint8(t++);if(0==i)break;e+=String.fromCharCode(i)}return e}print(t){console.log(t),this.printToServer(t)}printToServer(t){}trace(t){this.print(this.getCString(t))}traceUtf8(t,e){const i=new Uint8Array(this.memory.buffer,t,e),s=(new TextDecoder).decode(i);this.print(s)}traceUtf16(t,e){const i=new Uint8Array(this.memory.buffer,t,e),s=new TextDecoder("utf-16").decode(i);this.print(s)}tracef(t,e){let i,s="";for(;i=this.data.getUint8(t++);)if(37==i)switch(i=this.data.getUint8(t++)){case 37:s+="%";break;case 99:s+=String.fromCharCode(this.data.getInt32(e,!0)),e+=4;break;case 100:case 120:s+=this.data.getInt32(e,!0).toString(100==i?10:16),e+=4;break;case 115:s+=this.getCString(this.data.getUint32(e,!0)),e+=4;break;case 102:s+=this.data.getFloat64(e,!0),e+=8}else s+=String.fromCharCode(i);this.print(s)}start(){let t=this.wasm.exports.start;"function"==typeof t&&this.bluescreenOnError(t)}update(){if(0!=this.pauseState)return;this.getSystemFlag(1)||this.framebuffer.clear();let t=this.wasm.exports.update;"function"==typeof t&&this.bluescreenOnError(t)}blueScreen(t){this.pauseState|=1;const e=t=>[...t].map((t=>t.charCodeAt(0))),i=" WASM-4 ",s=8*i.length,n=(160-8*i.length)/2;new Uint32Array(this.memory.buffer).set([1118702,8831084,11184810,16777215],1),this.data.setUint16(20,4611,!0),this.framebuffer.clear(),this.framebuffer.drawHLine(n,19,s),this.data.setUint16(20,4401,!0),this.framebuffer.drawText(e(" WASM-4 "),n,20),this.data.setUint16(20,4611,!0),this.framebuffer.drawText(e(t),9,60),this.composite()}composite(){const t=new Uint32Array(this.memory.buffer,4,4);this.compositor.composite(t,this.framebuffer)}}class Vt extends Error{constructor(t){super(t.replace("\n"," ")),this.name="Wasm4Error",this.wasm4Message=t}}var jt=Object.defineProperty,Gt=Object.getOwnPropertyDescriptor,Wt=(t,e,i,s)=>{for(var n,r=s>1?void 0:s?Gt(e,i):e,o=t.length-1;o>=0;o--)(n=t[o])&&(r=(s?n(e,i,r):n(r))||r);return s&&r&&jt(e,i,r),r};class Kt{constructor(){this.gamepad=[0,0,0,0],this.mouseX=0,this.mouseY=0,this.mouseButtons=0}}
/**
* @license
* Copyright 2021 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
*/
function*qt(t,e){if(void 0!==t){let i=0;for(const s of t)yield e(s,i++)}}t.App=class extends X{constructor(){var t,e;super(),this.hideGamepadOverlay=!1,this.showMenu=!1,this.inputState=new Kt,this.gamepadUnavailableWarned=new Set,this.onPointerUp=t=>{"touch"==t.pointerType&&ft(),this.runtime.unlockAudio()},this.diskPrefix=null!=(e=null==(t=document.getElementById("wasm4-disk-prefix"))?void 0:t.textContent)?e:pt("disk-prefix"),this.runtime=new zt(`${this.diskPrefix}-disk`),this.init()}async init(){const t=this.runtime;await t.init();const e=t.canvas,i=pt("netplay");i?(this.netplay=this.createNetplay(),this.netplay.join(i)):await t.load(await async function(){var t,e;const i=document.getElementById("wasm4-cart-json");if(i){const{WASM4_CART:e,WASM4_CART_SIZE:s}=JSON.parse(null!=(t=i.textContent)?t:""),n=new Uint8Array(s);return bt(e,n),n}{const t=null!=(e=pt("url"))?e:"cart.wasm",i=await fetch(t);if(i.ok)return new Uint8Array(await i.arrayBuffer());throw new Error(`Could not load cart at url: ${t}`)}}());let s={toggleDevtools(){},updateCompleted(...t){}};this.netplay||t.start();let n=null;const r=t=>{if(document.body.style.cursor="",t.isPrimary){const i=e.getBoundingClientRect(),s=this.inputState;s.mouseX=Math.fround(nt*(t.clientX-i.left)/i.width),s.mouseY=Math.fround(rt*(t.clientY-i.top)/i.height),s.mouseButtons=7&t.buttons}};window.addEventListener("pointerdown",r),window.addEventListener("pointerup",r),window.addEventListener("pointermove",r),e.addEventListener("contextmenu",(t=>{t.preventDefault()}));const o={2:this.saveGameState.bind(this),4:this.loadGameState.bind(this),r:this.resetCart.bind(this),R:this.resetCart.bind(this),F8:s.toggleDevtools,F9:function(){t.composite(),e.toBlob((t=>{const e=URL.createObjectURL(t),i=document.createElement("a");i.href=e,i.download="wasm4-screenshot.png",i.click(),URL.revokeObjectURL(e)}))},F10:function(){if(null!=n)return;const t="video/webm",i=e.captureStream();n=new MediaRecorder(i,{mimeType:t,videoBitsPerSecond:25e6});const s=[];n.ondataavailable=t=>{s.push(t.data)},n.onstop=()=>{const e=new Blob(s,{type:t}),i=URL.createObjectURL(e),n=document.createElement("a");n.href=i,n.download="wasm4-animation.webm",n.click(),URL.revokeObjectURL(i)},n.start(),setTimeout((()=>{n&&(n.requestData(),n.stop(),n=null)}),4e3)},F11:ft,Enter:this.onMenuButtonPressed.bind(this)},a=e=>{if(e.ctrlKey||e.altKey)return;if(e.srcElement instanceof HTMLElement&&"INPUT"==e.srcElement.tagName)return;const i="keydown"==e.type;if(t.unlockAudio(),document.body.style.cursor="none",i){const t=o[e.key];if(t)return t(),void e.preventDefault()}let s=0,n=0;switch(e.code){case"KeyX":case"KeyV":case"Space":case"Period":n=1;break;case"KeyZ":case"KeyC":case"Comma":n=2;break;case"ArrowUp":n=ct;break;case"ArrowDown":n=dt;break;case"ArrowLeft":n=lt;break;case"ArrowRight":n=ht;break;case"KeyA":case"KeyQ":s=1,n=1;break;case"ShiftLeft":case"Tab":s=1,n=2;break;case"KeyE":s=1,n=ct;break;case"KeyD":s=1,n=dt;break;case"KeyS":s=1,n=lt;break;case"KeyF":s=1,n=ht;break;case"NumpadMultiply":case"NumpadDecimal":s=2,n=1;break;case"NumpadSubtract":case"NumpadEnter":s=2,n=2;break;case"Numpad8":s=2,n=ct;break;case"Numpad5":s=2,n=dt;break;case"Numpad4":s=2,n=lt;break;case"Numpad6":s=2,n=ht}if(0!=n){e.preventDefault();const t=this.inputState.gamepad;i?t[s]|=n:t[s]&=~n}};if(window.addEventListener("keydown",a),window.addEventListener("keyup",a),top&&top!=window)try{top.addEventListener("keydown",a),top.addEventListener("keyup",a)}catch{}const l=()=>{if(navigator.getGamepads)for(const t of navigator.getGamepads()){if(null==t)continue;if("standard"!=t.mapping){this.gamepadUnavailableWarned.has(t.id)||(this.gamepadUnavailableWarned.add(t.id),this.notifications.show("Unsupported gamepad: "+t.id));continue}const e=t.buttons,i=t.axes;let s=0;(e[12].pressed||i[1]<-.5)&&(s|=ct),(e[13].pressed||i[1]>.5)&&(s|=dt),(e[14].pressed||i[0]<-.5)&&(s|=lt),(e[15].pressed||i[0]>.5)&&(s|=ht),(e[0].pressed||e[3].pressed||e[5].pressed||e[7].pressed)&&(s|=1),(e[1].pressed||e[2].pressed||e[4].pressed||e[6].pressed)&&(s|=2),e[9].pressed&&(this.showMenu=!0),this.inputState.gamepad[t.index%4]=s}};let h=performance.now();const c=e=>{requestAnimationFrame(c),l();let i=this.inputState;if(null!=this.menuOverlay){if(this.menuOverlay.applyInput(),!this.netplay)return;i=new Kt}let s=!1;for(e-h>=200&&(h=e);e>=h;)if(h+=1e3/60,this.netplay)this.netplay.update(i.gamepad[0])&&(s=!0);else{for(let e=0;e<4;++e)t.setGamepad(e,i.gamepad[e]);t.setMouse(i.mouseX,i.mouseY,i.mouseButtons),t.update(),s=!0}s&&(this.hideGamepadOverlay=!!t.getSystemFlag(2),t.composite())};requestAnimationFrame(c)}onMenuButtonPressed(){this.showMenu?this.inputState.gamepad[0]|=1:this.showMenu=!0}closeMenu(){if(this.showMenu){this.showMenu=!1;for(let t=0;t<4;++t)this.inputState.gamepad[t]=0}}saveGameState(){let t=this.savedGameState;null==t&&(t=this.savedGameState=new gt),t.read(this.runtime),this.notifications.show("State saved")}loadGameState(){if(this.netplay)return void this.notifications.show("State loading disabled during netplay");const t=this.savedGameState;null!=t?(t.write(this.runtime),this.notifications.show("State loaded")):this.notifications.show("Need to save a state first")}exportGameDisk(){if(this.runtime.diskSize<=0)return void this.notifications.show("Disk is empty");const t=new Uint8Array(this.runtime.diskBuffer).slice(0,this.runtime.diskSize),e=new Blob([t],{type:"application/octet-stream"}),i=document.createElement("a");i.style.display="none",i.href=URL.createObjectURL(e),i.download=`${this.diskPrefix}.disk`,document.body.appendChild(i),i.click(),document.body.removeChild(i)}importGameDisk(){if(this.netplay)return void this.notifications.show("Disk importing disabled during netplay");const t=this,e=document.createElement("input");e.style.display="none",e.type="file",e.accept=".disk",e.multiple=!1,e.addEventListener("change",(()=>{const i=e.files;let s=new FileReader;s.addEventListener("load",(()=>{let e=new Uint8Array(s.result).slice(0,ot),i=new Uint8Array(ot);i.set(e),t.runtime.diskBuffer=i.buffer,this.runtime.diskSize=e.length;const n=wt(e);try{localStorage.setItem(this.runtime.diskName,n),t.notifications.show("Disk imported")}catch(r){t.notifications.show("Error importing disk")}t.closeMenu()})),s.readAsArrayBuffer(i[0])})),document.body.appendChild(e),e.click(),document.body.removeChild(e)}clearGameDisk(){if(this.netplay)this.notifications.show("Disk clearing disabled during netplay");else{this.runtime.diskBuffer=new ArrayBuffer(ot),this.runtime.diskSize=0;try{localStorage.removeItem(this.runtime.diskName)}catch(t){this.notifications.show("Error clearing disk")}this.notifications.show("Disk cleared")}}async copyNetplayLink(){this.netplay||(this.netplay=this.createNetplay(),this.netplay.host()),async function(t){try{await navigator.clipboard.writeText(t)}catch{let e=document.createElement("dialog");e.title="Netplay URL",e.textContent=t,document.body.append(e);let i=document.createElement("button");i.textContent="Copy",i.style.marginLeft="1em",i.onclick=()=>navigator.clipboard.writeText(t),e.appendChild(i);let s=document.createElement("button");s.textContent="Close",s.style.marginLeft="1em",s.onclick=()=>{document.body.removeChild(e)},e.appendChild(s),e.showModal()}}(await this.netplay.getInviteLink()),this.notifications.show("Netplay link copied to clipboard")}async resetCart(t,e=!1){if(this.netplay)return void this.notifications.show("Reset disabled during netplay");let i;t||(t=this.runtime.wasmBuffer),e&&(i=new gt,i.read(this.runtime)),this.runtime.reset(!0),this.runtime.pauseState|=2,await this.runtime.load(t),this.runtime.pauseState&=-3,i?i.write(this.runtime):this.runtime.start()}createNetplay(){const t=new Lt(this.runtime);return t.onstart=t=>this.notifications.show(`Joined as player ${t+1}`),t.onjoin=t=>this.notifications.show(`Player ${t+1} joined`),t.onleave=t=>this.notifications.show(`Player ${t+1} left`),t}getNetplaySummary(){return this.netplay?this.netplay.getSummary():[]}connectedCallback(){super.connectedCallback(),window.addEventListener("pointerup",this.onPointerUp)}disconnectedCallback(){window.removeEventListener("pointerup",this.onPointerUp),super.disconnectedCallback()}render(){return T`<div class="content">${this.showMenu?T`<wasm4-menu-overlay .app="${this}">`:""}<wasm4-notifications><\u002Fwasm4-notifications>${this.runtime.canvas}<\u002Fdiv>${this.hideGamepadOverlay?"":T`<wasm4-virtual-gamepad .app="${this}">`}`}},t.App.styles=r`:host{width:100%;height:100%;display:flex;align-items:center;justify-content:center;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;background:#202020}.content{width:100vmin;height:100vmin;overflow:hidden}@media (pointer:coarse) and (max-aspect-ratio:2/3){.content{position:absolute;top:calc((100% - 220px - 100vmin)/ 2)}}.content canvas{width:100%;height:100%;image-rendering:pixelated;image-rendering:crisp-edges}`,Wt([et()],t.App.prototype,"hideGamepadOverlay",2),Wt([et()],t.App.prototype,"showMenu",2),Wt([it("wasm4-menu-overlay")],t.App.prototype,"menuOverlay",2),Wt([it("wasm4-notifications")],t.App.prototype,"notifications",2),t.App=Wt([Q("wasm4-app")],t.App);var Yt=Object.defineProperty,Jt=Object.getOwnPropertyDescriptor,Xt=(t,e,i,s)=>{for(var n,r=s>1?void 0:s?Jt(e,i):e,o=t.length-1;o>=0;o--)(n=t[o])&&(r=(s?n(e,i,r):n(r))||r);return s&&r&&Yt(e,i,r),r};const Zt=0,Qt=1,te=[{CONTINUE:0,SAVE_STATE:1,LOAD_STATE:2,DISK_OPTIONS:3,COPY_NETPLAY_LINK:4,RESET_CART:5},{BACK:0,EXPORT_DISK:1,IMPORT_DISK:2,CLEAR_DISK:3}],ee=[["CONTINUE","SAVE STATE","LOAD STATE","DISK OPTIONS","COPY NETPLAY URL","RESET CART"],["BACK","EXPORT DISK","IMPORT DISK","CLEAR DISK"]];t.MenuOverlay=class extends X{constructor(){super(),this.lastGamepad=0,this.selectedIdx=0,this.netplaySummary=[],this.optionContext=0,this.optionContextHistory=[]}get optionIndex(){return te[this.optionContext]}get options(){return ee[this.optionContext]}previousContext(){if(this.optionContextHistory.length>0){const t=this.optionContextHistory.pop();this.resetInput(),this.optionContext=t.context,this.selectedIdx=t.index}}switchContext(t,e=0){this.optionContextHistory.push({context:this.optionContext,index:this.selectedIdx}),this.resetInput(),this.optionContext=t,this.selectedIdx=e}resetInput(){this.app.inputState.gamepad[0]=0}applyInput(){let t=0;for(const i of this.app.inputState.gamepad)t|=i;const e=t&(t^this.lastGamepad);if(this.lastGamepad=t,3&e)if(this.optionContext===Zt)switch(this.selectedIdx){case this.optionIndex.CONTINUE:this.app.closeMenu();break;case this.optionIndex.SAVE_STATE:this.app.saveGameState(),this.app.closeMenu();break;case this.optionIndex.LOAD_STATE:this.app.loadGameState(),this.app.closeMenu();break;case this.optionIndex.DISK_OPTIONS:this.switchContext(Qt);break;case this.optionIndex.COPY_NETPLAY_LINK:this.app.copyNetplayLink(),this.app.closeMenu();break;case this.optionIndex.RESET_CART:this.app.resetCart(),this.app.closeMenu()}else if(this.optionContext===Qt)switch(this.selectedIdx){case this.optionIndex.BACK:this.previousContext();break;case this.optionIndex.EXPORT_DISK:this.app.exportGameDisk(),this.app.closeMenu();break;case this.optionIndex.IMPORT_DISK:this.resetInput(),this.app.importGameDisk();break;case this.optionIndex.CLEAR_DISK:this.app.clearGameDisk(),this.app.closeMenu()}e&dt&&this.selectedIdx++,e&ct&&this.selectedIdx--,this.selectedIdx=(this.selectedIdx+this.options.length)%this.options.length}connectedCallback(){super.connectedCallback();const t=()=>{this.netplaySummary=this.app.getNetplaySummary()};t(),this.netplayPollInterval=window.setInterval(t,1e3)}disconnectedCallback(){window.clearInterval(this.netplayPollInterval),super.disconnectedCallback()}render(){return T`<div class="menu"><ul style="display:${this.optionContext===Zt?"inherit":"none"}">${qt(ee[Zt],((t,e)=>T`<li class="${this.selectedIdx==e?"selected":""}" }>${t}<\u002Fli>`))}<\u002Ful><ul style="display:${this.optionContext===Qt?"inherit":"none"}">${qt(ee[Qt],((t,e)=>T`<li class="${this.selectedIdx==e?"selected":""}" }>${t}<\u002Fli>`))}<\u002Ful><\u002Fdiv><div class="netplay-summary">${qt(this.netplaySummary,(t=>{const e=t.ping<100?"good":t.ping<200?"ok":"bad",i=t.ping<0?T`<span class="ping-you">YOU<\u002Fspan>`:T`<span class="ping-${e}">${Math.ceil(t.ping)}ms<\u002Fspan>`;return T`<div>PLAYER ${t.playerIdx>=0?t.playerIdx+1:"?"} ${i}<\u002Fdiv>`}))}<\u002Fdiv>`}},t.MenuOverlay.styles=r`:host{width:100vmin;height:100vmin;position:absolute;color:#a0a0a0;font:16px wasm4-font;display:flex;align-items:center;justify-content:center;flex-direction:column;background:rgba(0,0,0,.85)}.menu{border:2px solid #f0f0f0;padding:0 1em 0 1em;line-height:2em}.netplay-summary{margin-top:2em;line-height:1.5em}.ping-you{color:#f0f0f0}.ping-good{color:green}.ping-ok{color:#ff0}.ping-bad{color:red}ul{list-style:none;padding-left:0;padding-right:1em}li::before{content:"\\00a0\\00a0"}li.selected::before{content:"> "}li.selected{color:#fff}`,Xt([et()],t.MenuOverlay.prototype,"selectedIdx",2),Xt([et()],t.MenuOverlay.prototype,"netplaySummary",2),t.MenuOverlay=Xt([Q("wasm4-menu-overlay")],t.MenuOverlay);var ie=Object.defineProperty,se=Object.getOwnPropertyDescriptor,ne=(t,e,i,s)=>{for(var n,r=s>1?void 0:s?se(e,i):e,o=t.length-1;o>=0;o--)(n=t[o])&&(r=(s?n(e,i,r):n(r))||r);return s&&r&&ie(e,i,r),r};function re(t,e,i){t&&(i?t.classList.add(e):t.classList.remove(e))}t.VirtualGamepad=class extends X{constructor(){super(...arguments),this.touchEvents=new Map,this.onPointerEvent=t=>{if("touch"!=t.pointerType)return;switch(t.preventDefault(),t.type){case"pointerdown":case"pointermove":this.touchEvents.set(t.pointerId,t);break;default:this.touchEvents.delete(t.pointerId)}let e=0;if(this.touchEvents.size){const t=100,i=10,s=50,n=.6,r=this.dpad.getBoundingClientRect(),o=r.x+r.width/2,a=r.y+r.height/2,l=this.action1.getBoundingClientRect(),h=l.x+l.width/2,c=l.y+l.height/2,d=this.action2.getBoundingClientRect(),u=d.x+d.width/2,p=d.y+d.height/2;let f,m,y,w,b;for(const g of this.touchEvents.values())f=g.clientX-o,m=g.clientY-a,y=Math.sqrt(f*f+m*m),y<t&&y>i&&(w=f/y,b=m/y,-w>n?e|=lt:w>n&&(e|=ht),-b>n?e|=ct:b>n&&(e|=dt)),f=g.clientX-h,m=g.clientY-c,f*f+m*m<s*s&&(e|=1),f=g.clientX-u,m=g.clientY-p,f*f+m*m<s*s&&(e|=2)}re(this.action1,"pressed",1&e),re(this.action2,"pressed",2&e),re(this.dpad,"pressed-left",e<),re(this.dpad,"pressed-right",e&ht),re(this.dpad,"pressed-up",e&ct),re(this.dpad,"pressed-down",e&dt),this.app.inputState.gamepad[0]=e}}connectedCallback(){super.connectedCallback(),window.addEventListener("pointercancel",this.onPointerEvent),window.addEventListener("pointerdown",this.onPointerEvent),window.addEventListener("pointermove",this.onPointerEvent),window.addEventListener("pointerup",this.onPointerEvent)}disconnectedCallback(){window.removeEventListener("pointercancel",this.onPointerEvent),window.removeEventListener("pointerdown",this.onPointerEvent),window.removeEventListener("pointermove",this.onPointerEvent),window.removeEventListener("pointerup",this.onPointerEvent),super.disconnectedCallback()}onMenuButtonPressed(t){this.app.onMenuButtonPressed(),t.stopImmediatePropagation()}render(){return T`<div class="menu" @pointerdown="${this.onMenuButtonPressed}"><\u002Fdiv><div class="dpad"><\u002Fdiv><div class="action1">X<\u002Fdiv><div class="action2">Z<\u002Fdiv>`}},t.VirtualGamepad.styles=r`:host{display:none}@media (hover:none) or (pointer:coarse){:host{display:inherit}}.dpad{pointer-events:none;position:absolute;width:39px;height:120px;left:69px;bottom:30px;background:#444;border-radius:9px}.dpad:before{position:absolute;width:120px;height:39px;top:39px;left:-39px;background:#444;border-radius:9px;content:""}.dpad:after{position:absolute;height:39px;width:39px;top:39px;border-radius:100%;background:#333;content:""}.dpad.pressed-left:before{border-left:4px solid #a93671;width:116px}.dpad.pressed-right:before{border-right:4px solid #a93671;width:116px}.dpad.pressed-up{border-top:4px solid #a93671}.dpad.pressed-down{border-bottom:4px solid #a93671;height:116px}.action1{right:80px;bottom:30px}.action2{right:30px;bottom:90px}.action1,.action2{pointer-events:none;position:absolute;width:60px;height:60px;border:4px solid #a93671;border-radius:50px;color:#a93671;font:24px wasm4-font;text-align:center;line-height:60px}.action1.pressed,.action2.pressed{background:#a93671}.menu{position:absolute;background:#444;width:60px;height:20px;bottom:200px;right:35px;border-radius:10px}`,ne([it(".dpad")],t.VirtualGamepad.prototype,"dpad",2),ne([it(".action1")],t.VirtualGamepad.prototype,"action1",2),ne([it(".action2")],t.VirtualGamepad.prototype,"action2",2),t.VirtualGamepad=ne([Q("wasm4-virtual-gamepad")],t.VirtualGamepad);var oe=Object.defineProperty,ae=Object.getOwnPropertyDescriptor,le=(t,e,i,s)=>{for(var n,r=s>1?void 0:s?ae(e,i):e,o=t.length-1;o>=0;o--)(n=t[o])&&(r=(s?n(e,i,r):n(r))||r);return s&&r&&oe(e,i,r),r};return t.Notifications=class extends X{constructor(){super(...arguments),this.notifications=[]}show(t){this.notifications=this.notifications.concat([t]),setTimeout((()=>{this.notifications=this.notifications.slice(1)}),5e3)}render(){return this.notifications.map((t=>T`<div class="notification">${t}<\u002Fdiv>`))}},t.Notifications.styles=r`:host{width:100vmin;height:100vmin;position:absolute;pointer-events:none;color:#fff;font:24px wasm4-font;display:flex;flex-direction:column}.notification{background:rgba(0,0,0,.85);padding:.5em;animation:appear .5s ease-out}@keyframes appear{from{padding-left:2em;opacity:0}to{opacity:1;padding-left:.5em}}`,le([et()],t.Notifications.prototype,"notifications",2),t.Notifications=le([Q("wasm4-notifications")],t.Notifications),Object.defineProperty(t,"__esModule",{value:!0}),t[Symbol.toStringTag]="Module",t}({});
</script>
<wasm4-app></wasm4-app>
</body>
</html>