From 096ced260bf69ff05ffd10bf2b3fdfb63dfa743b Mon Sep 17 00:00:00 2001 From: pjewell Date: Wed, 21 Sep 2022 21:12:40 -0400 Subject: [PATCH 1/4] -initial submission --- adam.jpg | Bin 233355 -> 0 bytes index.html | 19 --- package.json | 37 ++--- src/Camera.ts | 41 ++++++ src/framework.js | 75 ---------- src/geometry/Cube.ts | 133 ++++++++++++++++++ src/geometry/Icosphere.ts | 179 ++++++++++++++++++++++++ src/geometry/Square.ts | 47 +++++++ src/globals.ts | 5 + src/main.js | 60 -------- src/main.ts | 183 ++++++++++++++++++++++++ src/noise.js | 18 --- src/rendering/gl/Drawable.ts | 67 +++++++++ src/rendering/gl/OpenGLRenderer.ts | 42 ++++++ src/rendering/gl/ShaderProgram.ts | 164 ++++++++++++++++++++++ src/shaders/adam-frag.glsl | 76 ++++++++++ src/shaders/lambert-frag.glsl | 214 +++++++++++++++++++++++++++++ src/shaders/lambert-vert.glsl | 183 ++++++++++++++++++++++++ tsconfig.json | 11 ++ webpack.config.js | 35 +++-- 20 files changed, 1382 insertions(+), 207 deletions(-) delete mode 100644 adam.jpg delete mode 100644 index.html create mode 100644 src/Camera.ts delete mode 100644 src/framework.js create mode 100644 src/geometry/Cube.ts create mode 100644 src/geometry/Icosphere.ts create mode 100644 src/geometry/Square.ts create mode 100644 src/globals.ts delete mode 100644 src/main.js create mode 100644 src/main.ts delete mode 100644 src/noise.js create mode 100644 src/rendering/gl/Drawable.ts create mode 100644 src/rendering/gl/OpenGLRenderer.ts create mode 100644 src/rendering/gl/ShaderProgram.ts create mode 100644 src/shaders/lambert-frag.glsl create mode 100644 src/shaders/lambert-vert.glsl create mode 100644 tsconfig.json diff --git a/adam.jpg b/adam.jpg deleted file mode 100644 index a76219010359f28e09f3c6021fa388a69cc0d910..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 233355 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

=D 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%0A?x5Pe|XrtQp=~P zbQNKc(-DrBR9G{6c`cc}4<3Ew`OD~g->KXJ@E1e`SmpL=p>QR|Uz&?tGiFohVQpFI|FhnLRxx6In7aa>KuUSFni~2H?T$lQ$Y?cQN)!;A1MgTn>FA zET>HeE&XYvx^<3z+iOe4|4Fp_snOFmJD2+)!vBtm=g&MnRT7jI-P!}>0?kXLZK2?L z`V~z}Wm#|v=!Ivd1kE$<8VxLB=eAHTHR%eqhD&%=91F?HHM>_G{xP3c_4f%vLF%KZ zO~;6taBT-jf?xe~xL3|pZQcizEm+SnNiRAN01zw*>p}ZgNF@+aU^S5OQEjnM_^ORT zbc}9Wpf6w7lwY`%p$kN`V-1B>6gTlDO(|{Vr@;A~CziF*6%9tF#T;B@$Apav`{!X| z+P?!ls_t^W>m=BKh|}ttxZ4|~&3$$J)4+Tg#Pv}Tu`2?Js(Kazw9E3%kH`(SPk5fM zo<2etwaykR-nBu=FTAIL-0bb zyGU;2E!CYUEitYkYa*4B!grwwBDpJ3am%AZcG9HQ%_g2~QdKC7B9HN@&P+ov8sBu~ z!Pd*eVSH0AWa9{O@Jw^@`6T4jS+Z#J__6(m@W^z2)*Q8y~xI;$sB{X9C)rHC!6-XalR;9+bXl!ul+Q!1~+ zr#Aqsf(%EW(DM}>L)%SIT&$e^aF9B*bX9%3y4o3!u)-3Z2>I6-6 z1LbSpd^7AD6?PCo8_=9g*doH?mA-;4)}roM>53W6EJ-gDr#S4V6=_CKbsyUUj!)nU z{ETQ-NRVSXyd-*UR6j?)mm(#&VXFtF)U3@wU;Mb%Atl|{CZ>Oe)-Eab#E;{8vJKtZ z46}cQ7cDWcRJEjXW`~L zD6hffXMTu)OzX4}d@k|xV-yei+X->leAQY?ZSuGU)T$_9D}*2aKMsF~Aq19UplzYA ziGQ7bIA83@1+JLRFl?v6bLvwA7>sgWS*4OBu zOxt(Lr3o6RO87k#C2u7h9iY()>p#!eh&Xpnk>f)``MG5(XBbsDdYO%{v+} zCZp82f*DrD6XGI6c1v@a;^16N#n@-*a&^^JiXbU~oC|1f;zHzVpi?ATl9w?b5w@ub zvUwWAWs50%h3W?FCbpLd++6R#H7DJ9i>y^~F3j1ges*{`S8Yt*Dd(8p+=qf1@K7XHGnJU{j^b#XOS@xEYR7fS75&>L2oKOF-Vc zH>p~aYeH2Cazz81x@VMqKsxqPUyA7vsvk#wId-eLa&`&Zupf`9BOSZ?L-$}DCL~5A+nrP)AJ2k zomP1Si1z6kaIwzD6nK>`uV^Kzq4C*$T9)fYgTP)+{B9Udnc^0(^>M(qHEZy)9j^rb z8%Op!8{3$D3RSx0pmNJtcDCOMyz~Reokm@?Su8_RVc!ttDOUUHz5%v3Ql*A2! zEK52k4Pov(1qD5ee#e0!3IlGDUp zYuCm|;k{!}*!XxYr$3~OVF>S?C^;!#bB}5}Af(!-Ekl36KV(r5ci{(d*TXC_m{P6a z08KLpb2!9LQcNLjnJ|=l?Nb{PrpJte?584eN#j3 zBk#ONli@CB#Jw$H#{D2%92IY7Elk(Sch^)wbdxgDc?@m#!?*HK0*&neB|f#3em?mU z_odEdt9iUpzUphohK^1bH=bg~cb<@M+D*xMOkq%D3P%K@1#`@4rg+7Fh1BcuO1$Dy z2N?N;$f@cDGZEImz6Cg`f1n&2jE+e18nx9p~!Vv6=xU_CJK`I<

1W}X9EA!{v^DFPM z9mpiR#w-y6B{7K7<&_Q=J(- zCs}74LZ?l{f_w|ZRiS0+;(woB5Fp8BJ9Mr{sQ#BcB49%T(HEr42FkcDiDAUX1_B z{>n;`ZmB*^*h$g2W`40s{5WH!Yzuy$zm9(HcQ=G1L-i0mTK@Q* z_TY%&sz)(_cA8+V$MPPVglUb=JQWYIvzSBkj6ts~-Mc_;9l{AB)ip@f95R~dCVnYb z9(4B*UtM#6>dI@u?Yw}HLGpng?c-EcLRK?0!8Ml{!*h27XyF7Q-&L%q<5 z;kj@jtSqC!`EcXpCZU(o2Xh zIm?Hqa(AYKZUE-|j@i(8m*AI6^(2Ne&)CJBNbgb|B3f-qJ=d{!9X4b0{}$d*H?HCm zyC>C6F+NMv`*dwX6$V)j-6m@+ccZPsid^T_3Vd@5v(4xc%&bQfcN zbRTh2Wp@^bshZZ+I_eEW9)#1S55Nuv}brQ?j)NX0=4kf#@a8(fUP;3fe8zJcaW#dOz|S8$6CZptjjpptCu~y+MHX$}r-&%? z{LV>t|^da5}L)Rp(wxF)C z9lbbCz0MKpP1`3gSae@`)#k`<}9J3BEPt@{h9mAgoP( zP-;X#<@1SA3+&(?7xZl){MbgLw6|$+%qtY?3-f^C0gVK4V()@}HcaYO(s_T+Ao$$X zM$2R`^lKMi9yn|}v3OdlR89V5ulR4U|+OpC{mN}WKFPx?> z2@urymU_#|=vd)1_KDtSi-T&D)6+#OY4?~-p~yPuftv@9p<~LK+z{LnZZR@foABs# z@}Pd{l_q5^anR=t2Z&39O$>4;6Ok$HzWLyi>SD`o&muA=0N!g2>G6-7pZLBjV>>Op7`k}IZ^RV4xw7rt~Pe&6YFn!p7Kp7@JJ zJtz_iA0c0JsbZ=$tW1MC8?Ow9H&iZbdq79lz0@J8fC0$m*=PlEgp-rv!Wqe~s}q0i zER%IHG7K&ZtYX?Q-ZCy+c0hk<#`5>#&rjadypZjM+P+*F{{;Ey_i+~JnQ(dhJ++I;J8}Lt zBJfdw2!CgB);8h@IcumC1%VoSw1IC6%qQ@^5a4GxJlo~Wn>C}=+_1aH7sR^;>l0lX zp$k-mgyoI|b0slkwSe77PHo7JM1DBus%k#C85}x3bty|m+(9KFNFLBMWs!tPcDh?tVYDSZ; zFV4SCf~m<9tnv|DK}CqM=189%H776MDXn0Ha~u{TJ@$;TS5K}kMV@DAOakYN9PLOtNbnj_?4f(ot@>Mp!UOFGQd3!S+57OkFu@qgh|<0-KGo9 zvYI07W)yI=QQ@GqogrIgK}!D_@H%^efEQ?PN%Fhv(F(dMut6|e%RyWryE;xez*pG! z|HrYX!6iKyFO~67b$`OjZ~pfGINGv#Hwv`U7L>26b0(-J7RsyGv3W63$N>gG2zq>QL8lc+B#wmO? z*4%K3=Cj3xoV(c{OSc_+q{RpLaSNV?!BQjFZs)S>(v*kR{H;W6AHgjzMw;=Q zY|IUkX@XlcqoN@Y|M9j)Ph@_Dy=NeeDWdp3V-9JeB?DmVZ*v} z{*J-l#`9!>@5Xfk7`#wUNFy!mw~Gs@Dj|R}fsGhSNXRFraMXVWat^18hn0|~?1W5L zB^wwTX&f)$o&HmB8pC;M<}CD?pj;zj+m>1LFl^jk3!Zx}56m4wfWY|I*6%!U_a#o9q-S=T7mPD%w<=S&5f60R7hkt`D{ z|6!He%tu?5oo{{hZfj)xW%Ek-?nb6t!gsAErL3iG?deeZgB~euiN^4)9DY+V6ABMR z67Bedz0{@bO_T=L0AUY-*W1I{B9lAF)W=XiZt+T)l)}fGeA+$p@6h)e;w!^-+sd7N z1-pVcDPivyEWDa!iQ8nY{75-MM`sS_2zh!-x-(k0J)1)fak~?MQ-@PD@O`+Cp3bkN zDWA7rl$+XbIOrc0<0i+Rtf(Ap3C~z6IUY%CzW!sU6RW`WoRjy~uIE?esHN0hF8K)U z!Y+;{NSeZ-_St{i@>LPsufq9dc`F`+SAd;UA}ur-v-ZLqp!tqak)bE%uq$91GR(Wl z+ecUtzS0H@_i6U*nt_)(`*3SO1V+Nhi)D$Oq{Yk~_{d|;*;Xy-CZAX@&zJ5Ik_$Ph znxdpc41Xw39x0nKo2;&~tM4iM#g&2*=ULp$qMg??Qi{;C@sT2i^)4*?kKjvN+9@Cj zfzvN>e5;pF9s#aY<*oyr{}VfFeWJ{n{pe6E$A1oa_Ei&dM$|nbA_2nzk4WqR79#Wf zB)*k}_c)`Mg?p#HCKIy&_)se5lsIjgGpQaXO7c8?d{?JAQ`q>IB{!8iba~L&14=#A zPXXEF!IY%mj_JVH?P}k`a+Q-cpl%H+^P%{i>9(6#xmS2hqpD2eI5~TNStQjp-CZL? z+B18cr&;uKbGX3|L|OA5#m96TkNA>k?~dBnxzO{(b6aMN^%C(V{Ul@EEXQ&KgZ2zj zq>zito+}!}t;3Ecz5~r$n1KTHF6N!*K^~%LCbh}kMAs&lRDi#8 zS6$Y>)+>O8pvHGE3j4vfwJyRG8RR~`ZH zYHodS0vSN^XB|i3>=^QPiP;#b3yU7!F@e=;Ai`z7O=PN`93&;a)L=2utM5}Pe7id z3e6mMOR#P3+lBe+_i?Tv0@WXZm9A&raykQ&v z60v`{bvH3wM&T4IQ|a{d@59<31gPzpiY)c75PJjtRkr@!Wa0ioJ^Afj**ahP|0C(z z=puRkiIbJz3K!D!fVCS6}DN~t6}?EB&4D8&A>`jmC&m-+ZsEeb_RoF$IGgo^;_7%j9iCC!`>PT4KHjK zebmh__FMVi#g-cMnf8{HfMK}0WhEHwmHV0VB<3C!TUS3rl6Wd%k(ezP^r31ksV?i; z$7%Z(PG5MP@D?GUSc9;@;zCzBPeNyldNkz_Zv+;Ylf+?a{|=J;zeKvt(}A^~yewP+06X9_e zgU&9@{Z){o*Te@2s7sL|uM43>usI|u*G!8d^(Cf|>FV!nRuH_|x1fSdo9TMa-;yo4 z`M{^OC{5bx6nXXf>~$EoVw)gVZVUFtGhYU1jff8> zavqJJh-r!D%plyCu(^6OW5iqPh>NHbTiVk-W03F#*%k+Jb-aqzEqhxp$sAX|?LQMG zQVTviYfOmtB9vfoPRU7-`q+mBNmjGE_h>7@FscFFbaw;y+o!Znvn1wjI4ouMXU6!{ zc#^A%%-Azp*uaojtApJIvy$+__2xC9ir6H+DvdQ4MYCs@CtOV)xPEjsJP#Gr@(-A6 zExA&r7T)Rl=3?Qo5Ro;Bo24bWN|voxlL~*B-UiFHjUb{1GO1aUg;xVSn^JHJOLubs z#R_z>PlIr@Vjz7?=~)#(y6<_STiEY?<84Jt5Is2b*YMAoci8@vTj7l$P@gZmMXwda z;wKideT|&@ImofezTTo}k#&0jmT&%j-&yU`f-{?XUQ>A)wa+(#!>ROP15_&gRu{iI zrS7Jgy|L-|gn)eYr!bWl-o63XH;aUplREp7W6aJrjs5Zur9FD@}PJL$kdW~TaWvwc!ksS0Uz zoL0E1j0eAwu9+@fBXn^EL>YS^akNmm3sDiuGS_^UpOi>*HdW;CE_CHi5e5srOx>(2 z2`;L>2?Q~RFuwX2Dob(tjWmHih*;d@}du z>%u*-x=6Yhv5GXQZ>7Fuk%#fi>P~gRC7{b9gFG$d6sHxy!1(F2wHKj3 z>X3M+_`&VxQ9B4ya7t@;TEmo~^S(?i8&{A?em_$^_K>>G#| z-7|Q#H5J30kAs~DW;%z00_~`Ji)%7Tu#cbY_7IlFZ!S$FieL#YWW&Ut24c4F8a#-4 zTj7TW8Y^dEl}Fp3;UyfM1wLEa3AfmO4V|-93)3x4lEBwboANbtpK!Etn-7)~rNwA~yOmM?Tw$mksEur8F zYIBaPDX~AM=)0Yn7XhMn;A}>Q z)<92}rRW@WHDD%HY)K4j3Pv=4O5Hp4YNpA)#yFRfkE;EVpM_Kqwqjr-Z+T}5ZD|hO z{vb4+#<<)%8V!Z`%dVy!MWl1`mG12q)~k;Urk@O4bKMXa`}@>=M=+ID$V&?7acLxe zGsK4*T@YERL`y&~JCj1!byq0?yA9}7Pot`TQ40FgH!qSJ-K|;! z9Ifu9RBQa`2g7>0iBB62eI(H(rAHxyP!y4EXmIn7EI3|mswQ*b+OM4aE%DL__WrPP zpVJxD937qf8nrcSclD#WU( zMtwVrSj*l*HyJBm;ZZ2sD>8wEAWb8><(o5{Wyj~KiZ@0mnS69-pL7Pb$0>r_HQ-* zNvSbT7aX{5-=duoBC|0F?ZS3NEIZ^Q1~x5|73~T)Eo~rGP6BCPC1Iwoln+ZZcG44K zgUtS;fGKOctus-Q9z!0fg!f+INEdC~;m3tIROEEt7y(m9IQcSOWfKIt+NMClEHaAz#UlupLW zBh|mCN|U+maEZT22$dWo2%Hd1KfjS?(GOx9Dp@|HLIv&O`a;~*o?5gqy5&)BnNrue zXWV(xNCR`wuF|2|+yIIPo2_}4h@3v$v);MZ^#i@t zLnR#t&L}LhEIm{JXq;JH3W3x>@x=#w_R?l+ezJUM}%_Dr<*WQ5o~p?xsaslvgDYktyR$=w?bPSMaX z=*Gn}Mn|HN`R6VE7{~qXNz#dcqSDx}pWvZiyX96`hliy!JS|m=;9N}hZo+E%xkVjw zR7$+qcK_T6+mOubfs1+z5J}^gVJUF>sR80?(FVrgZ14C*Y*Rw={VIo<8eZcWV$(T+ zwL>Q^*~E$#h-|gGtiOnb9AoN=M%L@8J=;`@VC=WDd^JJNA$P%+=c>v@x!Q}d{c6dZ zzr6>N^>2O3S&2=I(zGouC{i#N7kS2BYiLvOIRZBmN0yhpq`pMKx-qF)5lXbk9sQ$C zwb`)yJRK^K7+$s#Jtmvn7RzBPvEtULmz@Q}Uozv}(BN73 zhJcbea*;(-+1(l#4IR(c8K}k?f8R`;1o_?KVmL{%$fW0T#T(A>5^YRTVlX`>1s!h; zHVj^NiBoHX%FA5M_=_pjAN5?eH#Ygwfz-fN)x;9|?GBWP5Io~i+OmRDV46aHo1C(4 zDHGsbrKL6Gi^}3%`H@tH8`9NV&h@&Cv?mD6T|&Pr$UA`f#T9iI4Q70_Ix3=Isb4cf z#>%`h)uYtwv?r#4f{XOn^8~@V4M%mzT{v%z(&8r!dTTLjpI^FwvTE~Y^9|rc*s%TF&KI+BAJhW$BXbRBW z98y1oup{)O7zmfB{x9URqzaxK!C5t$=EW?G#Tb*sV+5` z2D=*?vnYE0x`YLx_|zvd8)H1`c-flYvN@v5qMSaReiO2+%>s~oxIXp5hCpD0)_SEUyFAxz$!EHEm5B!-)$NS-#}SDQ%~AA}gdtl_<+KLws7 zX|pK%_zpFHzwThq#q`2NHLz?Xhd?N)0lC8%5m3f44UGo930aT8+K4o!_qkI#QV-KlzE?F~TzzA8 z9mic!sAJR%`$>9o>br>p6K~}pnf57vMoqY&irU;AOt^5CT^agT@TF4CgC@&STn4(h9KYF{+K17>Fq$T-*P2B%FMRpzEy`Q$ih z+qvOpSR`b8_z9h>9x=@!eR!7OVR_o{wFVb8qsrM;AUV!LVTs@W?CCRmEK%RTTB3R` zb6;(8Vsnr)-H!yJBe$(S($SkyOY5s%q>LNviH+TAYZYQVn4PsaiJCPY|xCMeoDA{V=~h+2%L4 ztE)bVT+?TaJACzUP09{@p2>A$W*{qRT%-R5?bL!f{2|rjC zq~RSWTMNdZe_>mO8O0%>8@QnR4c}MxrK*HP|21vD4@6$X*$R*fs;+Lo8dGZkJ8CB&R+CHS~4}b zqgB$3W_60VQLXp6#LZ!57jGylnPY07tqLw!c%O^nn=}0OfXd^7loz2RM#()>bRh+P zY4cB9DLi%zs>-;jQnBLP(1ER361Cn%+Xp1<7++q@msW`O?WMQHCWn5(fv7z#TpYxh z(gE1``kb_9{GLC`k?#Wi^(MlXG2hL|KX2Ry5l`}#Bl1i`cs64bYJY0~4WN4rk`&Tr zm>Afr7y5e^IcFQ*i0SI2x8Hpok!II(hAXtOs2fZwtV}@C7L-AZ`;WYXpTmg^7c{Ax zvV!Iv7kWC8(`SA}iRSx=stpg9sCsnIR7*IT zsz>P-K)Ur!M=V}ypr4AeVIK~7w)+88<6*eNgj6d@ERP0{bxX;3{@$dZ(9qzi5#&6N zE^6}r?eT_eIj0$1@m8d6sx%1syd}{8M}P zM|eWrW`xVaSBI`^EwzNH%74r8yCbdjA-yL-)#Dude^$3R5AInU@P_kfqfk8vfjJQv z^;}DtV~U1v03Shg;)b-^8}KC8lIvSCjwJJ1`%=Zgd~drAEN3XzaMN=qSV-KWH2b1S zjjYpSPwQO?Q@I9fBEVRfG?|D`IRp{Z)I3B8Mkb@M1>59 z?;+422NZVxWpthlnEDg&9WYWRl)yhzWqhVVW^!M|?KB@M_J(C^P^;5wUNB-M2lTV| zj)ZYJO@f(%4>GQz-zt7q2h$~7M2y3b&EXkF~^Qk6DKSkHg59Fquz7$X|Z!tc6oH*k14cORcfzn@hSFmPCY5*C^srt*s#VuQMDR1EbMD|C9R{Bi~Dg( z&4mg|RFgfT+)vqddY9*(q4V0YM~)AgQ(XNOUr_XA8P5aMT_U)yz!o8c`gVVTC$H+ z_}uAvR|pjZjkx{5|9J>_tCl{Lzjq}=KE+&%d!19T@wY^(U;Ti5C~v*8(Gv1=Z>eQ+ zxy4xs5J8fDW16oDxGvlvwP(eOZ9HV9+oK;iDHukpAxc6-RbY2qQotw5k-o6HAM(vw zt=V1yaPj@J+R&iPH_0I>UP3AF@VO^(Nzm*fUN=;@1*aC)gK%Yg(kdDH?vNeIaXVER z)h4wVYEdwp9zU4FaYE4Ag2arBGF7=eS{|fGYH@Jg4-&|(;YY6@<;l*D6)$1|o6$zK zM_(`#sg)e+eimCT5LAqT424zajV{VxEOruk%jNVC-p*zoTzz&dN$*DM$yfdn5KdJy zKCz6bMg{AM2E3a)_1FNO;i*Nn$8cHjq?B^c=(UlB$!K#CUnR$5$HZF0?027w2Q8^6 zIpG}dte%Rgv3NjxYs)rJOJ{sfPyZR5$dz1LS$pmRKdM`z6@Jbgeff^diE-_jI1r4e)=8|{h zFcW0Sf|c90P3z4Dd^B z9s65Kh~OKY2Kt#d zzM%l5$_27L;~$4sTOoW=;NjGYL7pKNg8pbPBf$U z;*eVjP=3+$@Wlz#Ak~Xu>`vbs!?`XiW(Cf86$x{!lD@2+!nT9`pA42a2q*YNTIz>J z5k)TE$&xV#nXYof&IUoNEJbA2*1U9FS^1bS&^cu5)lBg(8laC=Mj4`1WNW0!{PrEm9UtE(@3)EXbpImRlP!B(?-O5*M2(=oXiQ)s=bH=30hB;S)l zrU_e{o`S!D@5yi%$F+IErww!_E{>_;TxG^fS|BURPQuVw7GExG6c+82jn@us9@aHs z3SWb@4`ti%PAG3a|JUhff}C#80a;fa?X%3)8aXU;K3i)1n3x6~e|o;AKr7FJPo~ww z&sZ?-ui%MeK^?+JjX`*%Hfk}*Nwh2vZRPL5?X@F^c#4(7JuHo`(du*HmP`BD0#|oj zn6L41TUh>7FPN>aP~Op`cuL)#|C8 z6WTis=~8B$f+E6eVcxm6N}4ZcjM$^0t=wLH4dIt0=&!+=*#*PN>N<#Hb;}-%YvtTs zvcZ0K&#zK6x+8DRWZOsIH1sY+Uu;ObPy*MghBX=6Y_1hPY0o~^7EBnT8tjQ%nI)_4 zXnEn|SglCc2f)XL+hsOw0)0Z@xp716wIG6isT5+*}XB3FtVJ#v<73hxI9r#Gf&S$H;yoi&0ewJCO&fW}e;IMoI1O8wTgOwSw% zPyT}IGDW{W;=xgN(f4Z+nfRV}j@^<6h94agF~&_+N*FT;yo@d1Fbv7@8W_@jHg=8e zIUf1#gEg8zF_`#!si>r3CEM~A9^Ds$A5AP~IarBnz5HypQcD_QAxIHLmiG>7NPAhD zeF4W~?^owkg6J?1z#{INnWFp(_+3)Iw6`=sS@kyx;~sEu__y|ZaTsUWp439ekg3J) zV(;uUWyc||5H?WC)BDD^%b<5I-XJvyjM<-1LOw11UGb6w!;tYuQr?66HN7Nm!`6tHX{Pb2rkFpCd6TeS@gzy%YFb-jX3c-L)ZQpv=7KWyvA+7o}jN zp?dxH-`NSxfuWE!iFEr9r)QhX46!d2oE|1&3>S&9`KJpd=?-E$*YJ419SGSDyLbb2^d z?svB1m*5~Rii>f2GCOL@Sq#mn?y(m3fg78bYiU~vptyW3%R2PTe5VWD*5th{+#x;V zFhjb5!FzF?JiXG#2EJVgD^D7t#@2Xm-@?i$up44>V?yb~@jCgLpIAG>)I}dU5tvKFL38VW9XbsCHuMJu_2nFs$_; z&k=z{bt#jar=6DGwYJ(jSeh~Gqicl`jKg(1V`1VK-xue(>L(Au)S0${O5k)M8tV^B zR#H**YGH*bJw2!8)Xl??Z+W#C)hOpTiYf?;G$7HOO*g;ND`6&Rpg6;u_p;pgnalU> z7mcn^7{*1oKTEE45(qgYuf&$DPLi#Xu?aTOUyftVL{?dn5!QTW!otp`CVk-vX>sZ1 zho|H4sha~H;z!tn%v;5hkxdUGs=f|r^>}9F(ZHXV1>=c6O+n~ze^c*4ySGo!G0Tok zn?-5~+N!;R7mXf%m4WRUx3&Hl^~@SPJ%K`^Om*dF6uj)K?is%FJ$c0lpy&?HC#z1C zUC26Lo$fsVNky=;8ZI061eIlrq}`A3GnF!O@wfCC;FDIk6#<;GeX~!s^P{c{>$Lm6 ziYLu}FFiIizzQC@ZM-zYKu`g}S{TC*>Jv6uRbthD{@Ai|X7^3xjNjE1-a9zeHt7-D z);q~JjBhNfacangX>cTXpFOluix68E?n5^o&#A)A-PY*o^!Y(KzsX8wb**_=3W&VK zTNaM9P)FK5VI3t`i=CHUuaekprZQL;%z1Ug1Y{l#PgZyvR&}qIU+fS;R`Iy*7O9lw z@SCQO$@Z2gC!LmUGghf=2uhndmU>lGR!nb2xcp*qfv|_V02m0 zn5Q>Sa=I<=;_cEhi|sbv!hS1Rb`QrpBWNvUh!fN)!u}YB>nTlCc3rb`&iXH`F^VqE z5}BHC1{;Be+Wm)gAtFKNMojp65TEyIsi=C{!lRV9N*=1#Qd<9~3HAX%TZ~K6(r7XN z(mF4HqEabCXh!Lbgr79mWhcA@u_}2SIu(j142whCny=C7+0{ow^TUp{f1kjUws^%E zvUicCUyqTp#kSK!-#DgFdp3D;(#F34y?LK&ZOhJjxy_^%OM8+vi*Ss@Adgj?;kb@i z$_zm2SZKT>f%F%aNThhgCAvxK>Z_AdF|emZT={g3P#x=ui>0 zTk|)XQiAHcpn1)0mPE7TxEWT}nIX0lrq z#_3KlWyLi;A1w}W!?x0zV3UUU$ke?NsTgW%>1VX`(~KoGtLDs737xE*ahXmYduOGq z**9q#YJ!L`+dj{0Twh8RbYs#`Uwj5Ld%@lU#$m8l!+wFuRw@tiwjR~+VVcAx`kkPoXBe$W;ZX7LlQlak!WP2raGV_7c}+z( z{kv8FsK9rD+dZzn=VNMMR z%J_q#4`j}6s#k%u^r6W~?$+pw>IL!FkExw_h*q@H))*Tg3t73wd zj4X?+#`;6XZyJ{?t!dr3i?ex}eLFlQb>|hT!qGM3WB9l z|9}=5%^=^sw0RBUeV+`dq|xAFCcQg`t*JBP$K(yPADrlPBr{p7$YG($S12g~b5%Pu z8O*-s?p*U2&T}?Urd(JhdoZY+1dWuFqd#jWo1`*)J=(TxQ(lx+-ch*Xp#FzybR*-0 zEejg5AZRGZyXw1-hs9fE9Gm(mmJX3kspWWc+J`#&YDXoL%b2)l>Ua~Xlx5K`b*N9Es@i#@gzIM4wy2NEzr&7XH9^j`YN;KHF8WQCe+N%dehNI9 z;BePl0oMo6AJ2)MnbfH#yUq-!aK6!u!i;SRuT=@-kAo+MWpHg8^O%TMjwRwVv|`g| zD9;Rsi%KmgMI;YC@7u=i} z7ay6$tCtj-kg zkODkRJmdO0<|KZhZ~SJXsq#v2Zdg3E>#tu^CBYhIP0QE4X5!ZSR383Hr%?>8+fSL2Vw({UppZiP8K2AH^_7B*tf-mOk zG+*l78Q0n7COkw2PRQjbsZ!2+^G&c-;zm$OFv5@#6g8$k&r~%FqUvJn(v7<&Bi}zM z7k^kG^(i8HQoU-(r++`~h}VnV7CbE{eCL_Q&b94P*gh@$*sjk7V38B!a7l=qq0pN<< z^0%)A!IYQh$5PMz-61@nz29Tx6*~q{1zs3pSR}eVW&HGRj!s=hv)X;A3KkE; z(TtEJ819t=Ap#0ae`wcPE^y<{Uw9%@q@13X+UB!{4SlR%hH3h0^ZoSKjf5RW z=hrNQ-EXZ-20re40=bH>4s;$WW60WpW{s`A4z@v8R$z7oW^V-2x`CsyBUhxXqSFB2 zBo;?k@BYx9mQyX+s#>;g&uwU2y1Wmso|+G?T-)+jPdu;7pvaXZg|L>?Fp+rBUU zIq*lvFN{fO?1`N`OSG6JG#i7uznjMY=yl?!@hXl+zz7K*lpo3v^FYO~ zwr@8_j}`K_S-WzR>?MMTEc&L8tl-)>EM8WbeBY$0IS9eAP zJG>C@@^IzJ*6YLLJBPnMR;hidH596ThE3#FWE;?Nwj-YY)|ZZot2+gN03u7ZU%!m6 zVVB=#vRFJQ6Wn*O(Z{`TQQ-s5c`MO140N6Dcf@$M?mbU^e`@v)yX}MHCkj(CZ4P=h zciyq|;1uqVEWcbmED2(w0Cq_bw+?73ejnWj6^&z`Hv|AfI2?j?PaLuPwtsL+`=kCQz1nk# zHjEXt0Sw7Pw%i1;ZEU03eclr>Z0=wHVjP+W9Gj2*_1x<<6@a2BP{qFa^-5^hkAs#F z_V^nI68-g)2UzdB*$wlOn=cfSt+>zpJjHYS+1)2Le>Tqk+_<^>8x%TJGfb#uqC5d1 zcm@HS=am*r;f{}2fjvM8Ijs$;IGl;u9fDmRV|99>K+!A$RetewOL*&mZi|V2$t8NL zbCZ9NA!@6%+SXWXWOF?%I zDY4EHJQZ#Wh{i#Xw!8DNUv(7L`pwYyzi#x|xynDX(8bSw-;b))mgE4u+aSDL_!r^+}>+UeF{D8ux*}(^Bb~Bxt=(vues*H zqYTdDdScOEFke8qC@m1p2*kAkYFtxt& zZqWt?f7vHX$}s`kR1wg50_VFx_r<<_kq_$UR{mosoG8yFxlILfnQH$4{;$ve0q^5* ztj<$rs(9Db-)KQEcVhd9N%%HOl1qBDRWrrRfD z*qFd#vPhz#Cg%ciu8J~SynT$nmRFAkZ3V&Lk=v&vBd+aYFTa3l?fl&?Y}JUqKD@h) zIwYUH!g&2yxqsRDtB{<40kgTI>SuW3Q76nsK-c5Gi(1cNIKw6ID?2JykO>_iX+yaQ zY*T(b%NY_Y7CbHYSvn3~q#ggyva`;+gZKUSuP)UG zh+ARP;$ZVw2#L;wH@hwyoM^QBc7LrH7THDP{ReC&4!(O1K)0D#!9h`wg$^L@#`B5t zl?V3%YQ5M>!=V|KEdvzWq-WsAm#v<6%-#LgBXn;oOTKKR?m+*U<({v?D*A z5K&4NJXSSS7;^+RBb(5nw$R+SBKZ&aZm94V4q%o~>NpGvp}2(r@oP=Wl=Rsg-Kr#4 zfWoELx39IMukwzizn@oGvbq6XX&L(X=$G$>4ldLy#hB^4BZ*AIvW^@519N|_cYv(N z)zlq@lAO-iV$*b)5fg9hK#Kr?+0NDh5#iNJ1b|ghgM9>*vu1~BUiYDJVcMU@Q26w= zCpP-Nu=sw0)dL#M8+N`t@kLI>_*Z@P?o+Zfhw+K?PXkWw)bWAKs-Nh+a=3m@Dr~GX zrJKMU<&&)9&j0}IHh|F>*IfEUfFs=Z(SM<8edkf_7dAF9C>rn8$ER>ZJm+h&+9^;K zR?C|ZJ+5Ux)e9ELiylDTbgZwipyF}Qy~3@NWwV=PMxV1Hq zAvw1p746Hrne=`mSAXZgpo#*OVI4GmjV!jvs|*UecFO$CL6(mSIWbOE)rHNzuQThr z9$4XPc&zedikow!br>LGgga^UmTw8pc(r4LYlP$#y-`82V_Ff>42=n>Or~p0`Po(q zug*tSDq#O$y%@Ri-$}!IFkp^x<-0+QKrL-DMSs-6u;n;qNq zp5HKAxoM|cfOEXHN#Du5(#D&sV>uWl0T_vAu|L$WeX& zg#IcIFDVnPsSg8P6e?g-;!1Q5S5Hs z;zUlF`~1fJQe5iWXGsiZhh-)XzJ=2GPweoW_`g{;{sGrm+91nixwZJ$?6=zO$6IFt zaFW^Ew2HsqXu5$TX4L0naKyFTJFUfs4B*eCSNI-_o4-G51SDo%SR3p7~$j z9h-WFI;o|LpSq>N0KAyj^r1ldmD+K|s8JXHWcc-QNKL^7X&lF?OY@TQ?ekwVFpanW zT-$-+UhrWl+^7PWK1(;0$PZ=pbhvttyjQ_$8w@D~6~WqtU4t&Pq^0s|i(OV5BhLQ` zphlcXx6;hgV5lUJuGjl1++N`zqa4hIYVu57H`&TA)iSo0FLb^z25B6(>D=uBOf1NC;F`BzN+_M$h+?KtduPlao(1$zXVe z&BC86@K zWJCLlKam)&ZR(;Zbh7wr|MfkdG%ZpcBqMx+`-;fStof1b!+Wm$O!nj1OlK}RVuH_H z$|#Wc6l&)X{i8rATJpt)_TT=^TC3jIb+!BYxUca~Qa@c>AuLh!C_3yUEl`;Ebwr}C z(!D|o=)~jp>CfDX94~+2#N0nP1?Xo~gT#;EJo!nY131S0pBB)M*0T?2(rJ*IB-E0- z^H7CO6^R>)YOvf`kwSgdy|!^2vvMl(mUP5KI);*d0_Xjw3q0@oLaQuntvIp?l~3Vb@&5o_Eb1yWfxAaj+v%3}m8fbV`ioR_+57 z0M5MBH@}i}=|9Q*2mGNiBUlo;lmZ2I%cg+kz02tR9mC>}gpxZv=h80dyD_g_)sTLD zY7q39_BVY&?%8Ze;~X%1Sj*fzkffh&=Cbau*;lZD*$rXx1zm&=t?)xH_7_=>>Ga%2 zKa;SNt>32uA(&wb^t)OpAjx*pkTz+;0NSO^Q!XJ((S2)ZS#qba*d^C!L>odc-GH`= z84x-7uK0BHu6?|gT(Fek_s;81mnFer3}X)u-!=TnQe`jqp&Sfu$UXP~%L=?uojWuF z8Q|U=C4|ysr(pI!1V%gZNUrZ|C3p5BfR5&%=97<)W*}|W{}A3JJ!MWZs`xmXPOzQ& z^$+0XA=?T`VG89+AbsQ>czAl=f+ zdaKFs@)2<q@h{{d;2X)b>!04P*I;_SJjC3JQa03dA_ zBC`1z0PyR$ea!^6BW)?=3d;-Y#pMkEC?gvT8Gr%+ke7w}pxJjWt+|)Kt;Aey%rCRg zLfERFxLk>UuhUVaf_zF@g>*A5EeWt?y!c2vqt~__aLueDfZc9(Z~C55Put^Dtgy@?}M!bPyg!VMo&HC z;$YT4waLobnrvoCADL!5K!yvO{=BpnZw>)0P)2!|6Tx90r%WJlhu!}sIc)tecH}=n zz>!(wL*O)4ia`iSRKoPTCqKKFw%t^tIpIO)S0mi9aSRA&EIw?^dynQA9Bmhasqp#n z!T>hgM~gUDpOOC8mAOb92aK)%eO~eeuV6eCh)T41!J^SWKovKE)n{>;pw5J>zzEx9 zAz6zEvvB3mTXwk162HxRD{u^TtH&7J1YR&HWi=s_h3xkaIDRHb=6#EWCu9H;rFWNZ z|C(dCpua)Tc*CIlCwB5Zk5Jx3+WJ=d#$8R?hSp*AwZ_|L=UZ6)g*{+G zJ5=amMLaG!5F#AE`~ImR1Q^i2cCbTH`wF1|zz_%vqzSP^7Q|Bb9?E1pk{PBgg zyby6fDsDHI(0Wobf=Sq2VYWm_rO9nL@!|XUU(?nQgkh>s z+zt~*%et0pp%vDCKGm_Ls|t3&X?md|avE9#k`OOW5wkAxSr3kSOL6G?nFF6G6L&>; z6`JW7jDFXt-hH{Oy7=nPIS83s(og*4^CN+rGbSGZ;tn(ZG+zND_CQgyrjrfSKZ^mj(6H#+YsLv_C46I+lzhoVfTaO9jrpCcVh7Dn+ zRt%|^#w5+y5TWzP`c%rD6iQL8h0;i1ab!QiQGSm*g)8#$E5(U;FIu*tyf;6@Nz_Ti zmbGjm$E5xbvN=S+BzjJHB~jQkR)hoac$_`Q?IjAvqy!h zt0cnHpL5*zUKSJMph$aevCb)tx5l__&d(arn%C~QhS9{}k}sG-4aIH{3Gziotcr!&-+ac=-%g;?MGc={_!FdIU5@c@o<1?feZ;)QI0Ml=v8uyVja>Td=KLzr-&o&QJn=uc1iuUxqpC=s!2Hd?G;wC z81z%_f!7_cE&glQo)+NU?p2o8gx-W|oablHzQZTSYZK#)aQK_1VXl5w39UMC%b<@4+~#sBy}uCIwpXZ!wVIJH`C zi+bez;Xwo*;zAE>;wXQ;GxkZW>`(Y77UuaXJd@EoSvusO0Oo^r1Ya-|JdpDgrdG@c z=!8?=_3yG^sJ+>Ac5R6q@c7#v!4M>CqA<-yf%lhh>Cgrfxp~$sj;nJ1Tyd%VTbCBy z*R|J={Bg?-;vg`GIO!?y2utY!n_cl%LqF(?tI7uV(4W-KU-{kU8kv5(@x-IP_?2KS zmAoNnqFq!c+^#dv?$!JF-E54BnYMGm^&@ig;*X__PvDJ|UQ4J7L`r?a#ovFk`8-(T z=>6Too*#^`7ZBB!-&x$A7mt!|>Qodoy4-pF9pmcWP%W&3j9$*Wb2Id|O(;Tr2(=)w zbO;aoIYs1rA757zJLmH9&&$e0C;KBKEX?SupZUMZE)Q6~xEL_Coc<568WDQzU<}I_ zxBt)dSGhU2zvA`?7t6XBeS7(m4PR5yL#`vH^)H!(z7I=gHPSkxH_L$%m{eNS;O=vx zGn{ymwTBzTdiF7z!u*$*dYy#lg1Vt?1*a;Ok_?Lxsw?gPfOA8e0eLpw6^YF=Ay(=q zRqfMiI(vkG&xi+K7_fI=D$43m9b~A5+@}s3R#K0GI(-xg>#z7X-(Lj zGu%f@<-Z2@IO?yq(XQvc(ak&hD_a|C+}QVkFVObds#TW0ZCiBkXZ|KWnMw`+dX~HW z3znQBhS2!4@&2Be|mB|5dr`u^O3sL+R4pn z{%=djK`Y5c`5#H;=kf|JeD>ilqkQ?1Vcd&o(bd)_pQrzc6D0sqk7B=2%Pv(1z7MX6 zIaEQ%7ApAOEB+1tfGXhnx!V#B4|ugd5xn}Nkky`#0#M;ZCMTNne^k9^R8!mc1xi!k z((#H!2)*c)j#3SgB1I4o?^OcQBoLJZLhl_Z3WTBoq{IROf|Q`4cMM=CN{3KF6A2J% zNNDlp_kSPWcw;0P`Es(y*=J|%z2=;2&9dJU&mPN5WK7nTXMLH!ZaMPV;l{<=$NN({ zbp$~($9XZYhPZ2Q49c=ya!hWq|CEH9!+z|3y4uFmbQ{R8HCmtZ!=oy`N$emUe#B|| zCRm>|nC92pqT1Hr7RSN?-;Cm=DZKx*{c?Bq-(&vy_nZ5j|4P_PV}|bgUm++y)bvx| zHu&fB2a^T&gV+0MMtgTZPo=XYRBe>Y(l4?%|Q*y=hh0&i0G9`A_Sk$3$Epu4m%M3!AY00rwa2 zre4m$EGX-|3Dvy7FS@nGHJ&ZxLA{*Zf6K%?0$FNO@AAb!LCs|mUsv_^48^S+9@)Cq zDvpTvE_~?=WDoc`v+Obn%(gT7NffbY$oAIp%@M8emOAPf{wq|u7p|H0{mGP=f5=QE z^PC-~825J!e@l;z7dDp2mMAQXSN>OUgRkN*rwOl@UyX_z>D%%!4qZVJ=n~r#=ZG!d zHOi6DzmF7N-b96@=LIATLw=Mi? z1bhkND1Z;KY0HHAHNpR|7z+IN{c~XH)73U!jrMI~`s;ffjS~^hnOdbMLwQb$IS((S z8h^rly?TTF3fp+KW0+i2mc%Jm+ND zKi>U@HOVQ9uh?o$dvE>K)xj!lm)+L+Nb@AbBy50q1j({{Fc4SM%KJ*5Ct?&DPV-{hTU(i3{GwbOPAFZHQxG;pa0!{{OF$%@8fuZCmZnBwF&<$|d`@=xmohs1_tDRnNRuY<@H4@6c^} zE)8^@(%Ia9#o+2IS1t6D{IUVP&Nw^&$q&~x+7q6=V!alQQNkKV+>52YO_O{A626P3Q*y zBQ9`j=p*|<RXQ^iO)#Rq!iMHY`Rwh^x@W$vjpl^9h(J z?v=7~^WW#W57@)tz-JCEn0F@UyyVxN8TrI&iJC&qgCL*>@ObaS# za##1cho>!y9bX-4uJP#Py@qwZ9;XXh>bd9k@PbDa$ew z3OVdddXI50_}Zu5pHx4Zsu8u$HF&8xuhQ6CZ-m4&Jn&WX7SR%t{s+HW9qJ9q53GAI zN7Yqe7pr8*+D(b+}ane0X z|8Azxy>c z@JXRkVTN9<8vCciXHRwmZo>W@ixiC?cBD>4soeP^T$PP_I-K)&lq{TTvY2Q!%GWo%-i8J)*)ga4() zbo1j^cfbXISQcZwI%9vCM{YAI=<$4J%sP{5tK7EzoE9IQ_kY>#-u@pJOW!fggXoj! z3Zsd+dL=n4o7HwYazNST zlU7L{nEvRxg+&aXQuOyhis6RGBDlDe=-L&DMM6>*J=^ceQs4s3k`)A{WrMY2-@~kE z>C@`H`d!Iyx-)uu1$Xuo6nMckC?m*JcB>lS_#h?_gJV@>7^SirD zBOZT&)+!ooPPZ3FUp?hxTtNx7KY$Ld)K&wD1^kjUZvunJZ=aJI5}w{DLlAb85rW9UGi zhh~1T1H>AFzI|Zk3_@E8y zTa#e%L_J19@@GcsjrKlIO*hZwOMp?dEVY-X}cGtT%UlA z&TPj-m+0wQDv>q|SJpi0)9HuG>1+xRk1TsaMph2iUW5>iUv0j*scvA?KDvsAc%Y-N z(yJ2Qv0@2roN{ZSL)rz)QgPBEj&Kb~H;n0a0**-u0gn{;h!KvorWpJ!eq+xOxJ<#O z`n0c!3mHbL%5?42ENei4nB25N1Yl*w{Y;DKqklAvKSg=T5#jnf3PeP^RGd^Y3AR{^ zxA4e9q9M?N+D<4n?9_(pqYK;l6~Y4++R>410CSy6h$)fK7FY=0Z^?aODO%{P-D2tX z^ApKamycHt@-!(nUA{Gj9F}m$Juz+cyao@qRMrqT-ZAUcXVHDnM+|`@{_lgqha*NO zhY_9cuDw4td8q=JW>J5=43^Q+InT8QX2tL9JRb71!dfb2d8jT&g?9@bVPbc|63A$t zzFJM%`E&JrIPo~=f@m&7PEPKAx+xL9IHW~TTFr}=rQ4%=3z+i;(}gV(z%K~y<;q3c zsju73$wSr}TvAD_H{nsBW%ow8x|~E0a3;N=xF;I1bm+`%G5PIHLgi>GUBoCc0+4%} zk7)5RK<>={VY#+raNhm6cbBH2IlEum9GE^YH?f~uli2ycyXg%v@Ps@Y&%@((riaU; zx%a4D1JT|)t9t`dW^N}%l4PCn<%i0lxo@W27L z$lTi%O+C{^0x3iLEtlMt>SEn#P0-q}II$43HL&(cY3dwsMT0ZFOn%(i|aZXV%l8u1CP7skf35fc%`ZUJFxrB$NGZJiTK?xVS zHlzjbwgjy|?I+9%Y4q#XMyH&s5Y?P5sN+>Gm;c|>jJ~!*&?V^V{_pxI$5VN@4`+RO z7<#%cTPKtdHS8h2+9EFQ)49sK6ySP6WPZ0miTNZncMQxrP6fJ^umt8yhlyE}BI?sp z>eEhRKz$r{-q>&hi&L;eT(H=cmrAD=b*!?Dx`Q!DXe$G@D>+Os(Dgtgk*7h#5Cc)o zQ8-de8r~T>y&uAwDl0vgxnsDAsp6M14-GL_Am~6i@`{)P?z!)Shlc!^dz2E1UK#Ye zXl==C`4)com=HQV+a`YTT2ina%D1x%vhyf&?;EaLzWP^`0B`h@DDks+3lb?^qc1-y zv{fT0%kuW(!fy!~ zmss3j8fZ2f}l74?! z`ky-J)sHNY9TVn0P`-DW^^eS*4u4~~ok{H}3^5e3v~Z7NfPxJ&LW6(>Vlw8JZf3d( zE#`lCRHGHJQ!U0W5%n;BSWDgRlWq3hA_ONC!i;rH3^(?JH6=3@gtPVRw zExQA7$VNDt>&71zDOJ5=;*qmJcK_LMSspEZp5LHBcxW|lH`Px>?en{uyLAafr8eSC zn513%gLG1U)?RmT;`D)I4FtEun>KGAO=yrzW8Qx7bNOmj4l^;q;ZTXSPcFABc=JR1 zv3+?U-vXsQn=;q@;#~DjVuC2#YmEB?=NA8gG9j90CyF=f(s9+cV^j+HLeJB!sveyY z>V<%GW?GpXqLL(9<5DkTVmOA(>eKNgdgPFVeQcX>k}9dvI5(>9jDvo{V{0W-n>+z1 zIF^1>95cCPeE3u@r{TP%IP9oFdcyDCF19@+!@S#l`rVgRlep0$s%=E*uc)@-S*{QSQDna{0 zCu8Zh#LFZ4+Z5mtIF<1(g;YCZzqOt-9{W6>i~P7RgGrwGh;jLaD`-->Re2`5Ogxs* z`tdRy6I))Ld^J14{B}e9cYcCuYmmY}hz1P?0j_2k95I*X@Iu)KGu{6Jzi;Y^1*K8h3HD$Go>z4yuy9Q4q? zTGe^@uBSrwT&dMLvOQl^f^k_eusBt?%^B~=&#g148rHJekTJ(G_9qm_*@R5%NmH+$!XJ-otT2;{V6jslWeF1O zeyP1~Le&6?ky)Kx?nPwLOU{Ip-O@1C6w+NIBTWzWA+4svH`X4Ly=$IRcsWPD?ff`t5)Cy;itkU``!8XI@I^a~3jg>4Z zLHK}lq*4Dhc1`EE*HxIvDW`1I95P$fO3$7UIpa!U_14%FQR-FQ4_oB@L;x5FH-BhU z!cS|$Qbmn>3Q?U$n4#Wm0I()tSI1Jv-c0x6c?AhYHi-V-neC6W`V3akmW&ix4f^gzJVwOXG zBz$zTu($?r2fFK-t63gq&UyTF6$?)KWwU?(W-U~>?urdOCGDz_;mYTEmm4TFRw+Y0N?dJiV8bqIayziKsG)`d{;E}#U=sEeC z-4G}yLJP`n;PT_pBO}hX;%oWH{Bl~ndj5z3bG7rN0V(lhBO2_y!I9-2Xqk1W2BnT_3xtL=2UgHkm_f zJ?wiN=`26KsZ$2w>bm8KgsMK`&iq;b8DXQe-R!&>nK_u3Fu*{O?&>xaC_`7-8CZW}r=(?664nEAAkTbEPb zo;|_%Ief5wL%6-I+L zd&e0j{KkpIm5$atsG}T%bFaM+7F6Oo$>Y>&A7B-)VevtZ(zlWoZa>!f(U{p(MJQQx zuBwJwAL(*C)$tEYY;bkvx{khq%@Eh(@&?dRuxkoUR6Z`EtJ+TUFOFdyyTAQxaq3^- z{3+p#1$Nf{Mtyl9{{t`H;_Npo(oQAue||j!oMSg&+WjIglg$Zzk@A3(ro*%w1_SJ= z&3b($js^s6ra?p8cpCZMGDw+UBoO^Ii@%?%Lu6^7l~6lZwE>5H+q)-p6RMZf_$7Fy zMX4%tn?3a-sKrvu1AhoKZXW2O9P!i=8?1=9`Z3EcH7^?9-tBEznb}wOLms-)Kui481%~gbq!QsPA)C{_)Ag0jZ~Mg=*x$UL+G*aJ!_8V z5^ueMeA(eXN+&+-iP9g*au194q;_=MO__Hb7fQ}G z{AI6Yf(agzRG-Fb6}3A3d+x79)5`l$5?B4D=a~T-e8xY_`a7pxIcNXo5Jg{6LR&X@ z08b4zr`Cr=9xLarDSe6O8A!fRej~M6ek#rwuBt}v8ecKBHya0}(J6pn{nd)7O3!7~S&C9U z!>Qu4{D(RUXV!tT!tLscb3|6?h~-b3D`sy?aM?pc~!ao)dv;&Q>Jp@s0EI=3lO3?*B}>_dCfp^>zNvd1`>)LHw7ixT%_f z`shr|4FS5)d~ouOzwM$Z9ca|pV$tFRq;C7n-cNF0;_hmyInWrMNKk%72E7G#z-)yTCtT{{iMD(#LV=U4Ha1R|FGPimL8A)B1jh?tu0xXo>z%KMA$z)%U9Hd@Hlr0r(eWJs)YdcTSRZQ84Z>4wGnFuzN+Bb^;6<1lLC#*fq}BwCf{aQI8X8w~?Gd8^t?IO#(#U}E zlCw(Kebm+!<|^7rJhNi`!vg1h4n5+383dS76zmkEYW8K9>0^IKr$6*dRBYRR@5~mW z+rLH`EGl^zJ9`r8z*pKA%=ysdOOh>{zS4TKV)KnSGqbsw{u=IszA*wt3Kd?CHFC;g z(m%f;(@lI|cFYv-_n&52oprbziIigYYJ>%3I3N7ONPdcjzFzPhZ% znSs(NK`H4cW{|_IIo!ImDS9yY2%w`ewet7KSw6?B-aff4ZZ@Lx%i2o)xGT@%T0L2% ziEyW^$wwGPI)o`Hex-V(9rMMQdu;cWcV2ouag4;{F6kx>EChzbt^fY6VK8M1($2l? zoi&g?Scm09jpy;>HV3rbr==(aO4LHzjU?V?rZe+=gC3kTUE^Dz<(S#`jstD2Xc0S` z)8|A|N6BUr^_q-Zvb_)M${M@`187EY z(4Csbpd$hH2AHh~QQJV@^*iVJkUf>OSE#bs)C~O1JZ`-@?{uSG=;i*2p3C12C@(~I zrV=X#j0*K$Y9ORy?z6_<_B)VPe@XI9=7AKRYJQ1S0)9tD~|;Ei35I^5b-h z3JYx0wYlT(rkv@f$EKUNLv#7%QFCtzdEDUO$Dq953H&|M^Oj+)R+?g}wtZpq`c~G9 z%g(bRNX@wdExe{U6u44o$ctca_K~eiYQb71D`Sl#&7k_V0i$|wC(2#v-;i`eO zoS0GuZ$Rb37`o35W5an$Ep!W1Kkp5jm%>_Ljru++-Q4Ly(cN-yEyA2ks)|Y%*4gl_ zbB@24bYLa&oDZXx)lhY{=keMv$GX4e_IqkT!xg41v51)A#$^e6Qjvs~n1bQ9cTb_q z=hC^KuZ=d1D{8fp*qhI#UOXJ7xo>s!j`i!Cl?ByKo@e9D`u7h@y{GT>((-eHrokYF z0ZuQEMUL)wkqmSb*Kd{z4N~gh`MA!2u!h){I~kiFw+GG&U-%h%Nnn=Mzwi8JM88~* zP}VWYdX)=or-8R5eoh#5!_TS^>^Bsy2cN&mzkFRjA>A(r~@cxdYU?5V5)*#E3hf*GIZN@YJ;JeX#wyn5bl}1>6)DD+oCw_ERx2X`MepuD z{?0^i3E=*^jHpUUJKVM&F`4tIC%RkUrMn*D3mqw0o#5W6Sf}0g(gnfTB39!%PcqUi z9eq!Xzyw*wl_fi3xND5+VM5f~Cb>3qacwo<8`LK!OVd=mJ<+3P4XTPGp2mR}CF47Z zEVs@?cG^feDaQRA^&eg~0}SXq1mQeM?u9YN1bV-DNTU1HpXr0LkoXW$pTWhRBr!mI zN=1D|eI$?4TzelnU#ts6jHBgq9w`cNZlabm|FHZOB63#yvWgXe_zL%9l`Iz2idy9M zSH>zE3~`D<#wZZUt$3Zi5F)qFuK6F9L^rKXja!sSf<3^Ia3G9vW>vCuJBi<_3zJ3; zzFWaRb*FMa$*xxrpcs=aWu=GuBzt7Qi%uWv%h-;Ws}b8-Ysjp*541YvEQe69Xl&=x zXOaCU?cYk?FNipvp!NW)6vLJp+D<59a;NVP%X5`Wrb2v(<3&l=kd;DV0>iN;Th_%F z84lgM@YC~nN>Di+sFx8LPrk=OxS6Evpk;nHpWh*xE179(u7aB*I9Cbt#!1F&1q59p|D@cl*>kZ?2xaNj?x`8iQ<|uV(QlaM`YgHV7TByBwe#qIBOW(| zyt;&ji>w@yx)3REUb|Kue)dm*V3ba378gW|Eb9Fk^QIOZtL+7-rENm=$440dF;L*+ z-Uo&QVw>mC5Vyqw^=^}`>hZEX*y6|8;84L>jMk!%;9Q zhe$&Dg$5PMa$0LXLK*RO*flyRLS$azM*FU&_i&9)_Hk>I;)AFUmce~>&2Fa&(U+9g zz&vN1vS-;7Vjdm~vReUhLwcdlcFVozd&IrFPjK^EL`07JE4cS+4PMnrO}ofiZHRxh z-6bQL;mj0*eI-%&#lT4MP*n;Oyb4tca#?{?^@=(D9X;~!Ey|x;l%Or=CeLk)73d#M@NDKy zU&2K~vI2pQ5>Ya;jPp7Y*KuL)x*-HEy?6<|Wu5-ToV0wmgm^gIN4eP*ySX@?@|Vb9 zmPO}El(6hEkP)5cx}Ypb4D1S=)x}%*@Zg<%TM$^ncjB(>;u>%_V{@9IMh+t(qu9Wt zn>2oPnc?vqzqWVYo9MyA9tK)%dIv&>iZct?`IgH_>U9gO^>tcnb_i z9Th49W~0p3M-(!76&z7O4Bsul$$Jzv>Q3*8{x=$6gG4e(Av#VxT)}3LsT0Bx`D!Qo zqu%#v?h5S@5sc-!An5t}^;c*37S~(X6Bjymvj|5T^EQb)HZM$I?3 zNyCZ$wYv+6J5fdkyqzAHS;Ytrza5uHw0($2&N3!nN6dY(MV)g+7HyA{q=-!li1?ag6{OtP_V4WqQyTzq#~iS7e- z$u(1^b$6b1Y+-cZbv#5)iqt4#l56ob=36^T3x*^jw$Kp$=14bFl2jl@v9y_O!Q#auxIC6a`*h@&Nl~)9lC$ZY z0>jZ z9hr7{q+Nd4Zvg8!i}GjwPTgi;rZVnkE(TA87oB3puJVh^oujHWg0vu7ekKaOeTG9( zMqpB2+plhDODg)2q7xxhn+zxIpB%xByHo(lt z5xivmA(AV0k5B<@CMUdt8^ zhY7Z|mj^3ShkmAOQNw?-h}zikuI*+L&gPlyvV9hpRuiLN8a8muXIi3RM(Pd}c}zp1sm186JFPFtQL6Fr%UFld0l z#9&XQCi-&yoH-H+swx8l=oK-6@ztbg%@bZMzd)?oDh)0sW!A`5^e&v9b0l{G#uIuD zz0zLAh5fD8x~Q})*TRe^^z`L|<(tn;*g+>UW{-T_tScjtk`E+>!Ji3AYh?FE_sG^X zlFKIb^7p|+OBG|MoahUvvMe1p8sRG5P8@`om(WZ)NL)yMD`@2y+?|s`hJU`koHZrcSKdO@5nAoYTu`G9)Muegc0hYz_g)up)?-FB#3K(1U8lRm>@@DFUP2GPH9@2AV*Iur zfliathr~Kyo$=15BX_?pf*dm&CM=Y5LWqwCGGa2~71%5vX0_ogxqs(HT63zFJ*}%U zXS`J+jD&fQ45YqF91VTS8DgG|eHG%T>@iNgAgsA25E0gj1nj~E64#{W1qsY#3`QP{ zDodZgeJA9Z%w}}Sr36OGYREoglVN3wojfyr0@(~YBMh5E6O9mnl;q7wtkSv)6z5r?Wf=ue^_|E zLda*OWg_ciUgOK&scBOPXayS{<)6sC{#6wrqem7Fhf#Z{Z`!yh=zAjSF#=a%x}K1s zz(6=ejq2q#cF?V|C11Epi*%fue!Z?fm%rJY(IOI-G>ZaA5X2_MPPOUsdBKe#%>d7! zDF{soR{x;0c==_X$_gBZojZ(3YCdyzEY9t@wIUMC8|8Cfk<(xr3vH>7k(ln-h?Js) zCArlEhPBudZU&H?{hj`U9Tpz>s~gB{14C;|z;)QzpwF z$FadhH7Vqj^wNg2TiHrv%di}0p0F0V$>jy1dCD+zrFEy(l0T;` z$#=wQir6dkyJ(4~GDUcoVN9`$4RW#d({m&QB$eecE}Zhsf36oj9=4sj%Dq;8Fg*UM zNq#o<@ospkyEHMpxpLusc)N)g2U7!Fn;H(3-G{}$D!LO%-|Uj@fVV7mhqTUJ3ZK=8 zi0{+Kz=`@f5D$h`F#l#Q{=OiED>Yp7Y5NaMgIauZi9N9ED%qCcUv*BvoF-8nTrAj1 zXzPQD1V2?U>h(Qo%4z+A@qaIIB$>Ukb2|ejwi5z$$Z+F)0M(og^*q)&$rz%b*d><7 zmjH*7{y)zLDrjx$95(}a0Q}n{ceQ?Zr?q}B4#lK0)aTlRjb?L!P5l@9)+q+16PhPE zJmgcC`YRRDJp5vR~xDCRz~cfv9CFhv7kC#YF= z$iHn%Lt&rH2*auR8N;~6>=nJ{q-G!_<9QkimZIaSNQ&r&_<}DK=Ls_veFV>&HQq_= zQ(bPf^HVPm7WJ0Nre?_C5Yix#@|Y4}@7#{UosKupg8lfXwscc7ec{OCTF2ty%A8r< zXY>8DA(6?R#!IvgFU5!DHx;}sS~Q?~&<+$5?^Y~V#7&n}Fz|U>+mad3r2UxE?l^d0 z3Rz&Yx6R8R&+VQVZtfI#SOo;EH%+g%$j|n3+D-tO%@9K6jT+Vj-(fh!_NBLThad_>agB2?C_CsO;hkC9OYZ7t@SXNFf(57)W$&dt> z`%>8UA%1lWBi|%n=h|l}Kjzj-=3lZV5qX4GRBO5$jv?5<8YUyO3aq8<3N-7_mW&)P z()f$Jk9_XIY$0SlGeo&GKQ1j!cjd5;@-2&1Y$`j8a)=5^m?i(L%@6XKng6Jxb2moO zN3(+h$5DnFrcU8h#0-9jvoR2lDD2I|AIs0C;eIDQFdGSvZwSOlw;GrET3G}FOGf0# z#!@A0m_m z8>kU`eH`_Ykj#A!k-1s8U~9!cGxT}Bzy8pACF{p(eS8|d1+F+w-VGsvY?{rTS8ld= z$VjYd08MfU|%Sz%C)i^Md@vCClqugR=&NwhwfNWPparnsm+)O^BH4o*2PfFv$*uLB9liK zr-;z}Cw*Cc2%MvPmN@Q}K0nFhXTjbqbJ!rxdiV14dOjlq8X&B`BcIO$^~@}alQFbQ zQ}y2F0dXvpM?aA{{d-B?PUmf$1ijSrS#WL{fmj@HCU@%a`z0v-bH>{JJe4ep_4I|M z$PVHMkhF+@LW@zv%kUz8QNMlkHf6AQlK#F6h|sIKKzza$-jWsUX*TUv zH>so)Y54^(zL87@_BN6^VST|Mp{>^8obnSCoDxyj7-`j%l-u2+71>iDd>2RTtW^r~ zRefk#tDv3i{28D7Y?sgE1CjGEYno&C{%u}EV9w`5I0#TB*}k8yPVk_ zCd?C*WwjHQ1gCU)d{7ty9El@dj_JT+_duvGxrFj{bXND}!(p!wNML{kk$kzk>S_tu zY5v0O+xSUI|Hf}*nMelMxocOoVRY`p6`^fJHy=U&In9`7tZE9n9?m&JO`8iJ6D0E& zQ*O2z{W6>lR4Of2Th2NmtauM%iKQJhPh(GFaQAl`MF2i6sWr!r5+2{ot)5h+$iJ-> z?CRV4eBBK%jGJbIaE+ ztSZgy8Z&bWQJ-_AgFJ%9YcnYh!Ju91?TT@X1Lu9)^S>J_B#yt?)G;t~`d(7L&cnN0IBznXxuTzN-nbz+ zgs$;FCFK8J?ffq2N6?Dc@LTA%R-w&dJ4ko&@2m>;3F*AsBDcz<6sMmhx(I!e!rjcNS>UNin>fsNR3)Ip57d}6% z0!}dgYo!$5;kyL~CzwbuNFa}r$s%1eLb= zI`=gvSI_Ss=5(ASXV=P` z1}`?83_!rgc>zEJkfi^~Ix^>XL$7cA+i#x*3Tj!8_>7RB0f_elmvd~db}Y-XfVJ8F zdog+^vg7H>%%XOL8lb~u^yS;q?|D?nGy2Z#Ye1V=$LQDb0{p*L0smMRFBAx(!!8yx7uJ4?+I_GIn_-4_Q0f)C567rb) z4tIwPV3_K{tiV#~aA z#EG@FijOm9*y{M?JM}DJ`&7XC%;)F9@jS-4;CQXqr7bmdowgnpX%lU_Hu>SC2qYl% z8xJl@btj)-7Mv9qK7IVdl3v;~Q2ii`0g`NMcNt`~HN74=yD`~bzw@vfL%PSM>9^Yb zVf2?zC@OPHsnq1trj>kpPlI*XmTK9o!|XXF{hWPWqbFcfRtLYi*SwGN!Q)o(HLo2$tYCh3&MehmyVm4{w`Vt4M z)e13it9#n#ZBTKe!}rFyFS_FU>6{Hhv7(oMqc@aOcZuo)<$! z-sce1nf|Kdz zJCw~>)ETe)#vc~g$ENL%O%E#~OEvSB$Em*+TA3wZ!Yu*Eum6c!8?FFd8=rY-Eg!~I zF2zuP`OpCY(IMeRQOusY*wy2WLgBK$^iCcwekV&`hXuv?CoGp4<_QYVeZ~e78XoKT zC8*uL>z~h_!BqeKy!7AnMd{6ZtetO^hFEq8r8n-M|7MAS-@ay_pR3Fc#|K>V;dZTs zpwE^@p7z)7Dj|b!e+2cxtI2X>LC9A{E9Y1L*;1C6dn@U#;Lh5*;>zis$YP&k!!Y4Q z43o>AYIxa@g}z)8tf~&@`k@(qM=WN-a$kS6pl(LI_gMu1b#K*Fg45nZ3NG0xzuoov zOnOk)MzIH;s~a~XAby7>DJk#P-yXo>yo}Y^*NS6=xl?UjhGZM&J|!~DXOs~sx%_V8 z?5wnRxO8KDeUd?iZU5Xog}wbvbr;1)>D8{E*;KVV>1@z8&Zx&5!=IXf2JJ8F@6*5j zj*cHVSubke^BS)vG27Cm-+x8PKM))<2n#+~&{lbSbD-~5%JYScbJeG*S8hUU=g`j? zC4-%t=|P|NcnxF3-#lWO-A?qh+qF25`EntTXlUihwi(JDal zpA@s1!4JQHLtoE0N+gy(>|Zl!srA-=_BIyqaR(!q+_Q=q)$x6|df|skeTy~66Yw$Bv|%%LZG@-Y8PN5Zy?;rNG9N_W-1Bwb*6 z-y-VRwRcZ6DfpV(Z~vqfeIpB`ko|2@jS64y$`Zn_zwH{{{>?YCGvJ=3D(O#R%Fp5v%TO zq>id)L~~CLDNa`JZh%p!m6HwB{n7OLwIdzsLJ8sh8Hcn%)4#BVyBw>w@Zg*`#CjnG z>Ha?~Bf0}YaZ}}-G38H`weXoL(td9`ZW@Ys^GDwc{3f6+bKgdmIK_sqo-33Tc{!rUgvjx; zOx`f$(WRMHah@=uxMAZ9wbgUBXUim%B2_fzQ)Q=N=jf&EqIIj#SAx%?K$mmYk5M0n z?<|EJz~~F@%UXe7sp+Wl^8HgujN$M9cRsBn9~!i3t551+obwq#o2q*4jj+gLe{gwJ zbvvn@xiDQU8IlXu((6x#UlHDJG`3;<{VkR2?vbGr+4r>3 zar=elWDyyan0s!!l2aP`wA)t=OT=<uos`XP4;f=}GrX4XS(J78nVlLXD9+vN-4ep7X%( zi2q7j66NSk^)g(womkEJ!}2))yr#tw4zQ%p^eh9_z>u8$k|`-}-_V%c+`2k;k%7G* zDB;h)e*DvtApZW8E8&q=BRxks;+?!ApCY!5fPO?LhCibQ6T+A2JNCU%O0;{pi|XHEA6KCKGy&JsuAy6SA)TT=C!E?>~Yc z*Gt+RX~8nVaehQ`&usI?2Yb_#nmy`|n*RYPCJSB(Zr}U7nwL+O!rJ%!oNMNb+#Zvz zqk_4L)xE;#p!}PzyOb4^VP9ma=*$>`MJm2i0`!;?NRG$pB31^$7;>oR*i}V7?+>Q@ zKdi!uz_tZ`@U+LYsDR2l+M+8~AMH3t?ClM!wsmWq@&!I!2FIO#IH6C^O@?FHxeW30 zA{)g^knt`oP&;$`xX_*shj>a8Z?;6FdzzD^9amP9dlsqQ%;r4MY9V72ouN){XrEQv zR~^RY#9tGH6;@Y`leX+!m-=zE#RJUjX#FkpB-1D(?CsF8X@pi~qOW4g1SS}c$nXGL z$f*lZ>KXu)5;f<;BB#e$w9YQ;`szI zAJDzwy5}`7IxE(!sZpL?&ucpXIhXXrw09oWteXZ3fSjwl0`1g2T0MJAZ|<+btdDkc zuS1$`Aekiu^~ETb>*w#sYo1qXs!;Mn`IrAS$$x+!Epo)S<<(4GX{E1>u^&ujRy<_g zsBhEDQ0}v?yFY|M7;8Fs$U)1&eZlCXQDEMxlNb9fk~dQ-nC(kitlxbDn6v! z3+bX|(B#dq`zzKO&@3&2nE{nc6s=yNVGeJ<^*-h1|DF!i{-9^~A0P`eAK~)WhAEtV zlAl@Wa|}!kKGCI^FnHZbO7=IuwE6Q{H8BN$xCYcic)gx7)0Gs2n9w`%_l0mwtZs`I zK9faG`jLupdC4(uhv!LB{#qz=D4USEq+>U4iW-B{HDSt#N795gE4`%!SHJ_0fJjAU zG@a$cx)nCJIVv|^hB?1D8X~zkZfSB!R()*?F|AFa$&NQ z*WISco0=q1cP!|kP>g+TgQ(o@^~(jInOh(upPp=tIpK8J9`u$(=2+Xxokx1LPB73$ zWQG7tvR;{5-rOXA!F$Qlry z2L82SR3QtDA01*{z9Y_!><^N4G3yQ(m8(>WUD}yK$sU*CPr#Y`vWZUAp=7F!86;~& z%>i*tuU1q;_}M}_ei{{RbBk!@7rQG`h6a#C(cLEKM12|ur?w&6P3BOFmkK0Dx=Wj7&l!_NeIw&gH-5(ljJ4S@ zW!wm2HF>`(T0|&E?wX@8-JQ_Mq9W`BOs);AlMsg#JoOr7)|bj@}Dy~y0n)&6@a z-+e!SO+;XVpFpBQ(OlrLW*)>;19I{ofPQlCKS1Bh%@d-hEOQ^>pzr$6C#nGA(>qes25>aYcJp zD(d*A6-%~?sAf^WsG)qsMZNu$I#^zG!DmGGklA|1L&08!B0ej7LXPq}UdF|D8<*sh zZ*2zOg4`hM#-*G8`OsLTOwfq5v+#S9yna#F%G)(ZeyK$(;_CuXDA?bdPygA(^oJUG zA4bX^Stmy54QCWbNsrJ+))`3F=ZyNF18O-^B^(N4$&_S2V<~y=aY0b$P86J+74~vR zd(jS&(lzBLHkl`WMyH-V^sQ`ErZU-`vZ}TTPo-pzvu7B_C1T@7g=Y8}2!hfTRB zOY8U5NfN>|lI15>u%WPjuV7_S++1wSb|iT0-Fns+^bpm$mKu=6q;!Jc_kioC%%i*g z=bQBlDH*!ZntA1#C$pkTzVex;SA+=>>?ei)LMDw!y95Q&Vj&u|>&Jt{$;uZ5cm#XO zIP7k{eh$PKLVWB|0``axLBKDx0)LBUBJ&59@TaYX`V9nW>sQA{h)igViO`Vm(8Tv8 zl+@=A)F4=;Ruo2k0Ny3_F$0w3j=Rv?AoPMUbK3pLFr2USH0T(8>^z$N4t7iAe-kdE zu?4iqVtukgJ~uO4lOH@StVe|>NCfMm*YL;RUMntWZT<<6m6b`l;yakdr!47raua%6 z!R0}#v-nZFwvdP7H|0ZX!p|9O>aykk0EJ`~Rwt~s?#7N8xO8a0Qd#1r+al^4;zs{m zClL`{q4SDy6F48w67RUD%Y_`*s>rcL%J7f#9%lz1^IqerVbUxT^@f>iU+SVtPc4$w z)7}s`Y;T^N5RKN(EV5S)u?YSPxd(sDB;-$^e|U^WZUp9}4^xx&q!QjN(fq-VcWH#S--%_Yab&`mly{muttm!|lFazYq1hIVznu z&N%|{)gU%D#^$y6bs%QIqbaRMUSQmQfXDl@scY-GOyyGP#Q7rF|9fe0Vs+w$kS?Nv z(5zAZ-ZFnSH(9v*LYb92`E*d7>xTsfNg)u4gI_yzJ_p56ff7P;4a&j`!dPq&N?R==t#Rh0TnZ{Jyu)90+2+RCzz z-DcX;Z^B4_OSDD>&Exy_Gh+M|Z7AYaERpIT^7yPARi5uf|2nG6G0;hx??m&EPW20ygkgmO zI|78y{}AeaRCsQfNvfG~FSC%b|CBo+esuH9+io}0Pb>Y{-SZ@N{ZsVd>0tfupul|u zy|3#ldAsx6&A+|*(yd|*))yJwv-_HRe?*%}pgC{04)u^S1KFtq6{hZ$xOJ00*Z~_@ zcv`aJ@?o__2o3zG7z+wTRP{&(iz+%}TgsQ1MFVUt+G>JAytYM!=MNlc>vNnz8tPLI}tC`)2}fiMb|qBQ(l z!|*Nv07(nbaB9NO`)_!g=T5s3zhAU=(#r_b+gOM?y59=^ZZWq$1np~zrIlM{M61*7 zAMwcmHc5I2v@_}!mf(24cd2@w<&)ARjlpUuyFeb8XWL7LaLB$EpW_b0k4B$B_VWqIP`lbe#k$QK24H`NmRXw;9l`c9$ zs8f3`HfRBiy@FMd#qd;qJzo3*&wd@bLw2^N5jf;t)#J^x=rir(i_9ziQO)zAysH39Rc%PF zQm}DiELGVN@8K@My9FTEzFF21R@|tdo{N&OTj28i5vw*{m){=! z%=MUOcr#NNqr2NOJ~Rs12}hsm=PB@%}^>%1=?tF zXm;!mD5b!A+mjjgWgw2FNT`K%n!?br>ZVkx$q2$6^hLB^t;|O#WY=Y2d?PEtY2i+| zbhtu+41Ko0VB%N!8zKQ=i7;}OIn`_EnDhi;)ms;;Oe61I5$fO(GduSPU4qW9K0)Jw ze`&Ze>fRKSQ9S<$ChQPYfFrKd-U}|di}+~Np$QTA26=SqrT@xFZ##FY>>rVRh`NjCp?-^X#n!bHZ?%Ei0BR!7XMJ_ zikXH!sj4cjR;f}X8?_1|dr`#@h>tmO@OLIN1)abOCdcr+&92hpy=PY&hU^now>I|1 zP<>U8BQuC+G?#dB$MiIR%6`84O{wRv+ykHvs^a@g18s;;skA!3%nWbrhuj)zibZS) zy1I^S52T1Ocn|QQ_`3sgzqhG{wrD=51!4U8U4WP|OBkb&I$9fc%TLS1sEV~P!mdR} zp7PZ$&te}Xj%c@FC;WXNdvgodY|mHhy0B=?;w31M4@`UoTv66>E9`OW%``(f!)GN= zD{{@?N3ALZJ(}zP0V3&oZvA`?x;twV9ZKKC zaPAtdA+!CkZhmu%^E8^|p0I5k9QitG^3`M2ojy2>IPoRURNqKXEQX>s{SeKWSLTw{ zmG|F9apf7Hw}pEoV-J|1+3B^9`)3~JEaaUu3NDt_nOz2ae;4FOMf#tD{&mE50ds{XW`7fzIvCTYcznv^Xx0;!+>S^d+R z;c9ZVvAcZsrdI!9P0#Q9<wiRn$zM`YjNww>F^~Xcde*khj z`k|MbXTLy@w4dwD4T0gIFX9X9MR)Vir-KBDS-jsz4I*v+yNm(BGucfSYXEh^^u(Wh zpY`V$INuMQKYHdN#5F^PxU!*KI6*!#%|-+n^!AQ;UKA}3{*K14>X(V2CpGMsJwKi4 z=vvWQ$IphK5GF#Jb&|Bt5DRbC^9X}{mUWwOtJSegw&on7KN=guBlDATiD71Jg4N~?xN z5JaYUA~vo45U;{{szt%?Iv)Xt*1@H!s6ADE>^mxB#-%zELT|nc_Qm9sn({CS%wE}T zGnV-9OEKUf)NYts0N_RArMmfU(MC3W;KnNitogPKQ~51f{uk(g1o5FiR5$aEQGx|c zZ{69=3Zyk#KdiCx!13Ye}D_HA1F}NS&m@HuzD9k{kA7rM~Qd-DqG?;Sgqq? zH!GA+P(_yH&;j=l>W>wL*vU?vj*=+`b$Z8{=007~!R;JxgY(^z?2gl0TQ_|r2^F)o z0?VeK2*=)5DffOCx4`VgsZVSBu`qSP)wjJLgr%%!MM=v0LBYCqT;&_@U5GbECb1^= zNV#nJaP_GOCr3J-l|vowcAIyamT>~(Z*D7Y#i1<2L0%Hk<0#$&(gu8Hy~RzaI08jL zE}UZ37X^@+$E+Ar;2j$L`u$ruxyj>T7Q_ zLv960!V%XS|FGke*~kFyH*p&Rk7iR>!6~nAOTtca8wsiSswZv(O6ssC^vy8IOoTwg z?ujn4X8f^k{$gJGHO^1>P|DQ9@6AoXE6CgwKeEO(abC%==x7>Iz6T;5oFV!LGsxY{ zIpWOuPqsmCyVIUUp6`F|-R(bR9eQpR$e4c06Uub5@E_Do4=AD9%DJM{n<}xGSA$(C z@4nkT)&F|J{w-T9w9{IHbgrlD&eGQ53R=ZwtNk^ok*Gu6v7k~*70IIh9TP1jacNf*4JtMHZwu4_l19?kB%CLmnVPz&l zJ4?|#;%-nP7@>ag(wpT?l|1IjFY0qe+jo(L62~1)g;l^CYcrW;oVu-|?3EoL5B9&C7hS$dsnWeg^rT(Gp z==_VEp~-H8*yk|fmIPaazsqU^jG4XBF1aPm%TYnDL-Si+Hhk;l~<%wMG6 zaR}-E9welVqd#cu)AG5FtCS)jdGWF99Qfg0(9`#;o>AS+NU2#o1c8H83kA2>ovVo*j(Xr{+}UFG0) zz2e365%KEX2X<%PfFEBx_Yefaq$-5%eCys_a(qw<+`jZDHX~ik_Ny|s@mM`m5Pfp$ zdS#*jU#1=X6}Q;-Tg%~1U7!%pNU_JC9CRh#e|v&F{bPgaw27;rVk41D z&gq3DN#<>-FgOVx>AR>PRdt(k8kh{do<>{C{-GZ)lu5k-Br};Fq8&of;P?P78gMhT4v~@C-G++g<_9 zh4P0KlJz2nmWg%0JG?X!EyOwVk^=gL18{ANCJn4q3#)AOwx}|y+Sn7) zVd<&Q@+F+;l)r0!o!Z$@jwilP^8@b&bm$4DUQXT@sJhkI*AB-R$ODbqFgk}#^{D>H zl_WJ0wi&TdCA8o>tF@BBzg#3-)+Jq_t3lrOhRp~x^4)Q7u>LDFdSv$Q9id9PZ>&ZB zS(44gO_UtWjtUFyz~%eoGDf7`rzw#5H(p4@L*Vr6? z=Sf|fsI7 zt!BHwet_scUSG{5BD|V*|1@iM&Lk$+HIJr21RIl@E9<3KQ;+GmMK;C#7Zi7x#u}!J z-^m8MqF1~YT2;Lt(kKHT1qXV+RMpQb9#LB@#b0|xbr5uLSH|HdAx}wmj!i%pjU@i) zO}WtFUl__Ca^V`BVX=>)4Q$YPg%~c8xHlO`2_)}w-~<@x#FfTLW0{UEkq8fknEbus zKOpeIF13j9$5q91mQ)Fve4n|s4{gR;Dwf1&gc0g?KgK%BXyeo>NOCH=p=5?Bww2W^ z9Gb>5Y(}>aa{Fo$AIcsV?uc#-rt&qZB9=~yO$v}xulhZDThxghM9`L@^sIU~NrL5onLTIl zRS3|uSvH9rxUxI5xZdd3_Gx{WBFOD`xm`#nFwZu$-s@R|H^G>uw~y|W_~t3^1L_!D zXPve8{%5oGu&nq$fzNSD3t*|@;qAn?9piZtsvQfiXCmS>Nykg#&<+Cq>$9UrNcoBM z&V;|GD4e&HR%GT7pukTzLKCbI*vs zbg*p{6-~E6rbH!`SywATsFkMBf)96RsI$%spT-qmp)bpJ*QBkCjpzKc5E6B0m6`by zskyC)Fw!+g^k>B6#OIeui1NDTsn5-eK$sN0bhDHQUCT*#?6t|+;lqu|E-t-~_rVR{tdjHG zOCW}`AswXp=N?^RkKyx8U`M^0YVv4}%ZUYolI_qHi@~;KywB%ly8j)Ff%5J1i&W*Z(t$WEY zqZ(|uXvX!KOfh+j5$Uu+irLc8Kh*HTL{@!%9Cx=^F}|qPvZKX2#K5^wN*5eUgyt}0 zd?ykEy^h;L9OjrAC%~jtiaC9Pgckc9Vi!fbHNke4m7vv=lNP~Ly?&fj^RaX2;bkBi z5RLLj(X~YI>IbgS4d(}k^v9-W3h8!}$BcugeGk`H#sgT7^2;k_pF>?$4LQFhNXD_%+6l@77 zidQD1{xwT?C!o_YJA%Q%%5B{)*I%NTJTs!R18~(TzE^M!Kpl(ytk&D;o#w&x5O=Ur z8)37g<2n*imx&lWH?yR{(obk(J}WIjI#A9(u=HgvJi5)Mu1iFx(k5WQUvVLfd_F5G z=u~xwz+nT!XZ7-fV>tF3frLokH8v;bs0Dmn)rAeGpn{Z@zV-{%1?dl^jN5YUp!iY0 zJrNGWHn}tkDDE6;9jOm9Ou6%72uyg}*G zm?zY#rA`05D$S}|5#lVOyTG70Rul?HukVUe7uNJKS;U*Q9SVRG#|_~?1$$4TI#|Lu zBL|2#oPzr}c(FHK+!GSoePbw-jXzRMTE#Q3t%H^PVW+F(4=>3ZaFqwpFlsfVjQL2${;1!^Pts z4j$5wF=`GCiFh$o(m3_XwPYgU0UlENGcS2@^XBuq(@#f_uUruNArSt1&~ zl>mEn5ZqzQeT+uy4I_Y$XtI$Gu$Wr+#on@PB6x6XIl+Ll?;(8?eSek?2dYA-m=Aa< z2rBBxL{$;hf&?1u-}=mL2L$!-fjG9>_3)aI;a=>k*fx5MRvU_3WK~u#cI9YXd62V8Gku_A0tbQ zGkqtG!95Oc#5@$Cm;WuU`6mlb0P^V`1=}}G)(~*!!gEDX$D$}5Ym4WT={yium+xtR-F)5bJwn;?Xs!&WmogtoEZmwsx|_LprrOu+F_u|K)bJCC zdptCRm8l%*KBjS1`Egxv>dn4)d6Wi`A!JF`rHJxp?(X362w_NZ-kQ>QY|Db~O2=G# zA0f;p(l3%UgU82KO=+MD(P<<9;@X)>@MW;R{_VIC|8%UmnF7QcmcN2_w)WmyJVBV& z6|If*EE4R-KvS+hs^9Sq^|zmdqsUvTFRWTV#yK&ERS9?`*053d<+p6q07}M>{@Ed} zc2GiY)A$K{i4x$}4ix2&2GM;g556Ov1q!q#>C896Vb_ecAT@?Zw;=cfe0tYr`FBtXyAQZi7 zYLvi}SsRVEl_ExqKwFXlSdrwaob15dd)4&K{%*!3{IGo49e286G4mQB!q%_!nEeXJ z%`!{I@)c(R;7qQB05KUD1Ck+vGt7x0?DnU&-dT8#?p~GNo75!UTd#V65SJd!ZtY8% z^|&9+zgFjJN`30l9IBakFEF160sr*-I)Af2RQc-hc;f@Pt1j6?ben$Hh{Ku__k=KF z(9=O^-Jf|ol?Pa(lex?piNiTE(^5mD-nxlUB8{wOyw(evMB4^^4|RR%oeEM*ROO#ui4{X+^s{y1{1Oo&mlu^d8O-?8`_K9e z;;s4wdDAFgJ1-=rPg)m-L^D-3whqw*oXSkC%;YBRd*7+=p4O=ue*W&nl?MB)F~O{% zZxF#vcWm{Ui+NGwN?{~=mwABQklaP-m;z3G0cJA3Eyla{4Ye3({=v2p!M4W;DSPh6 zQ{d)ZDWd-Fszy`b=78C1XAP^$wCYLy=Qn z&9!4F*cYc^Rm(0r%d}s1o`&3%>RtJwj6b0RM|xY_gHG#v{p|7j`0QNz*zR?RAcOHH z^AO_Z$^xN-S=Q3K1F?gf{l}ksr{al4oz~9~DZb*d>mT5sH z+R!M3kg=%P;*7?6IOg|ZgHljZ(qD+TP~iUo7V_}N6}(KxSq7t1^~BrbtZ4Hr-_`O7 zIGBf#{qkBJoL<}Hkh_Gne?G;MM_F&w-ahov^x?ow33IAaC;bMiVS3M`Jy3ZI<>0Yualmk|G)_GbSz584>xQa z`yARh-M)f*veUNk@j`nK=4Kz@ovDRukpNrDs5Y!@wKTq3h~@1x>6@WZLvofJpYHY_ zrxCMiTOA54z!YqB{c5L6yw;Y(t}%bDUce9`U(L|Ee7l`vcOj(C>{|v3?8fifj#t0N z`vhH!GVvHL2P-JfwC$|h81xF4myEUkeYNtsBP@uk@08=<>vtIyhqAa}>^fR$06~a2 zzTfBzPNBcmd#U2=D@+wlNW*zE-&R^-lVn*z*AA&mBHZ#Dd0wDI^nZ=9JF+sz*MXcB zUeJxoG#)}Fw9W?A{a7(`l3qjDve8bLvekBJ@E}vTjaax*#~GRITBgjo{Fo!plKCtn zHV5AOkU51${EF&#-#$MCQH!sv)7k#R^uNII=-TthV?NWv?^BDTSSr%sxeeh`UC)X) z%d_OERXOLn5$G2ZAEQSdtphDkW2~b3RI~eY>|j`EqVP{G5}L&7x^y>o{uyboF%ZPWfi$bfIOiHPu34jbBi$}Vke48&sahiS zX;S@W^4y(3sf*j){m^ypm9M-lAyLsTQNAY>LABg;#vB*LW!w8wUC-9))(#H9>=hWDJX8C{ zz8;{0lOiuZU73D?7wHq!KLztjZx#3+t5jsJ*mgnCIic5-^TS>ty*;+b!Zo*kC(7$g z7*)J1t9Nw?VfNY)Go;>#dh?96WXH%}5t-Vz{L^d~iR-c#N%_MU*^*u5@l%FuvhoR< zXkn$a+&?BiSM!^7f1e`h47rQ740N^?dWD8|4)^=JQ&>&EOYjMIO?j)w{BEVlmUg!c z5nvM|A7^>yHqb-(E#?fV0aSuU8o@68u^x|-J?%V$U8mwgNK@v+5UGYRi(9DBBI>HY zcRC~(8W57@Fouy;+rl4ZK8hKX;pM31C^Z{hV0;^eVR7gdZG*t*z1UJMv%S-<5?(fp z0QGkaf7pKvpoj@G!gJA{Qez@N!fhOTNB?c9w^wzT*D)Cyr_pTF$=s z5@kh$Qled-K=Gpi(D!D-=xL(xjn=Ipk$(3ctV0nwf-_~EXQ)m%!Z(oqNr>DT1uxZG z5a(bSWEQtxbXFsTuvo2^{s#a@mOrx%l^r1bum_WBgJ0(mbknP!a}ifQgUU6n`|Q!l zp-iOvOO2wROm(E0Oi1Z^C4%}KDoQAoAc!8fSiKS!+y26er0VH>${PBaB7`W8N5!B6e6jzC6iommRNd)Us32yJ){y9 zsX1v?&r2{p$-d*)TM}_VZ>1v6O)R!)y!6(@Cf(yCTvXV&N2_0Oh>cl~EN!|FZ_ZQI4fz(7+$vm59P&8MFr!MYNXrQa z8#%2kS!uru%>`T$Vp53EDq2JPE{|0m*Wyj=1j@gc<$m^$Q`5dcb4DExJ@t0HpRH>$ z_uT-gAT*vt=xwJOMDgABE8jxZq@tDIxu|iYKs|y-qY?#?rb>w{K8gqT2$3+voa03A zx&3V-@irRRwW~qyxbfrqM3`4v zloK1cftNGQ&yhD=ghKJbAhXMQ(=sq8UNdCX z(CT%2sEQ0B_CHBgU}z(EtfD!1yRE%V4QSWnYt%jQH~jZ6|GwK{B=goHCcc-K55ziI z7rFw747j?dXIRC9a-iVe<71at96~&j1)JTQ{`fqZwN*5GWBuShFGWA3TuGma$VtyG zDZc5E;`{4&@gHFOYDS9dUiw80a)`L31H&CL6u-sbdlJi6(XmLdrFDd$Q3}O;ncMgo zoMJQCc+Yd6j^oM^_N96=h1x`3i8NFDZ)=l3@JC^hr#+JbLkAvg?@(ac?Z?xgh3I_BRAEszy(PfZYw^1cvRo!YLzkHze+a4#vgubC9 zsBkZAS63UZ^~?%^ZBao7kX6>mn#s8Zi*&%)Zz{)U!V(deQDgC;PP>LPflfYXaWn;4 zD+c2QUmNzZJo+#k&*eTmzZ}k93_4|{E+s2K|9%^H%olYW{_i_J1QQPvPjIE<#~OA$ zW*eGV*JLW`gr)dY& z>1=1))|UXwef$8&D{;WonV1kci9BmYN5+G{2$U9&)(ZhdbMHLH0v$lDrx5uBuJa)Lw3!4*-tRM-p{ZvC>n7>vXs%oJ7~pxrYp!}77#*E; zAv6!!c)5AFc9p5_$yzR-Pt={vhs>XUEu6RahPY;|*tsk=fnfIds{~QxZ%^qCiFFy?0CQexFiurnh#EmpobF_K$B#_k0TZG#Iz=c`_%$-vZ~iJ z=igM8=>8pw%`u|;&ht*4L>g|Oivs;%K{u}*fLp3UTRd*Ojvr#UD?0TMzG&fDXp_N= zPcX~%lj}Z}R8{ni5o&|w$3{yD(izMS5<{d_!*t_D;o_laE%AVHGQr}$56y67vSm*} z!m3iIWfJdKeKX>UO8C@+zEgU_m*$pZ4po4%*&nhqG5@B|e`A0W1W|bNL z_8i<^ipLIa@YixRdp0LaX}{i|-LLCEdfm7v+0GVOR=Z-X5LZfkY?Hlz-rblMbn3CO z3Zf&L!hkt0bGZi!q$P&wv((vT)d8BgYdU?{z0bJODwk}(Xpp$wQESi(a!F{yi$33CNYocf*>Q59nTrK#R+)dXH&kbYyyeWTz!=krW!u9o~jmd@f} z_K|1YWEdSBwTTDb;S)XciNPf`&xkf-zYA8zb#4t}rp?zKWUg%si34hxE;n*%Fyzpl z8Y!f`^f}|f%6P5BKd&t8qD!ha1&%DS#A6B8nr-0y4(R(F@-7yoArp890+QRO{Zo_U zDCJK}7N6?4;ua56fESUV1xBxE$lKYWge86h6=#b?kSp$6de!i?HsS0RN9b7p%iRgT zCn!6^yunn7??1-vJ(Qy|WBNtXMjM}Uxa|;CY7Qi)vogs**CU+)Urw5uc!X+j?(|v^ zr(Uh$q8n^o6=iJFUO``Vvsg(5Q{EOD~kspEvxM2Q2+=R&5I4c^;zorF0f+j9rasBT2 zN}o*W5NRo9tnJ{v`3vyl!vSIkBo@~AWu|wj^-|)W8%Jn;sKF3SE$TZ#*FF{uTsU&s zFnG#gJr5rZKjEho!XiZ(vGGn`{Voyykig))FxzfJLPfXT7;eFs7gC=UX^XZi7=#$J z>?TJV_*Nkq1rDbCyUa$%ME87~R^D(22$vx0tmu&C%@J?=BAKiBGZDx><>koWixGvB zN+2LRF{owpCNX+5jW^Up9=6{(gVI_oF;`mqHLWXdR%2-0yG$U zO}f@p<$cdsOY?8&V?E2egVw2R+^oAtrV%24(;&2B#;`A!Jyw{f5r+2o4g5fU7gJ&-EP);3`$ z?FWoI`P_6s1!XMD&FaaDOm(jB*raey(|&>dE)$7Yh*GysEFHI#@ExzDtY6!>su|Bt zYCA@YfD6|W`5(>1dK;+GHwio;{9cx-W(q!~uWeK&vvTkuL9hiN-nLC`~G@;xyxokF$mc~61ON<$BQ}?aif{f z`XnJhhz7>Clbrp>C+DE9Lx2 zu}%Z#mhd$DovHiW`WDEvwFW?1jY>s!M5aiPXVwyO_oA}TCxET!IGT{iD4IswN;9nI8AO|ZSF7jvqJjTIGtD^S~<)O)Yg#O)BQ{7Jj z;UC#EzRfx4F?;WmI~nEC2EGtaUv|5~ct?SXEWE3m9uutbJZ38W`G>f*myQk&yOWg> z=fp>Jd1eg(x7+R#`vJ0cqh34qE6H+y99_b9tOyBq1(gC|%5{z58!sQJ#MmFzipxY} z%MKD%v`j9z&O+yCr9dQ+X2!~?Tpy2dg>9^5E~q!g!C4n8*5?G5%-1X4_`4PlQqmTC zbxd2ii*iSFRi_SjM~4btS@k|0<8G_D4PDX)FW9%H`)pL!d?oA*$32jI9HtK+@IB)@ zCNKQqPP8>!BYL+ts6^GhbMkViyW9>ELrye$?EPZA5>UFCp!H0p@Vn6eQFNAJQFdJv z9zeQ5x<$IXyA+V_?o_&A=mtThW)Mkf2?3>s9zbEF6=@h`=#HV^@A>|7@q>%!oPE|_ z>t0><;ctfQqzG0_Q!PwM$wdoUmW|d)+jI|YCvJdl;=9EFj?ITC6K8fKFOl2aV5i;9-$0sgUZYw|F~ z(i1t_y{EAz*5W32gS0};sw85(IEL&P53e>z8An9W0t=GXyjdq)Z8+yfbKcM8a$db> z`f;f|GBSBbMKr=ZGnKr@n|epS&@Y2OhQ-a*!CF^d>hlbRg`M_ez$Q-|dV&~hMY`sh z4%!tn&n#Pv`LB7{3g>VWs$1=Z#QrEvA2dG_m9ZU@AFd)Zyvq;JS+eYOje~!){$L&F zB~nGeuEyPhJZIE1ZEvd!>QEv}N#&^09qtT$@tbEqGCgk4L?-?a;(>#|1~@{FtLIL6 z&9gq{&3X<-$tos`waI=d7dhE~iEDo&81s!ZHTZtAPmQ?*8cc(V>WMjw(AShjf@4Ub zeJ^)9g6GRpK3_cO-bbM40V@NI;wQv~`S=q}@&Jn#R{Dvh?~HK_uKd<+!X%C-Tq`Q7 zBLO(;nqvVr4ahw+xkUC&>CTR?1>Y?pw04L}LF55kH2qta81C?x%ufKgni@g_`qLNq z?FG&yH-QP+iI>COU_Gg)msJflH9L~daruR0*YYnbLq0=q6}N@)zsT1jU4APXpR2nu zEbJn6yGTwA+>@QqN)&gJ-Kt#*3lqE^!)Qoo$<~n93q@9U!3Ddg{$yujAHwj}ytHR) zQecyAoR=!iwX;;Vc~|aYxG)ChFvtga1n-BNg3`uw>az^jq>NeXw`Um>$eAy`@uK`u zLxM~nviY==cHPwc4nBwFvblL_;YEdKN!w98{F~sDj&+6qJLc*0w32?dt`u<3VvH@t z-D^hm*U3V;O7IzpW>u+A(;ioTL9OxoPniduq~3}W z<#E%c&~>i@6L9<74+RX@mZCUn2;CtIvE14gO&)ViVgco%x>)?eR_7U)PZ*3-w@gk} z)KZ!Kp{@GvM4B(lA(UddN_fJO9M4u=wR%#&Fi=9z;0h#LgxbzUdE86T7>esTDnhE_ zQ~JJM4(V|^Iwv8&@3t#P4r4FL)EroZ&+R=!8ZLEkzr>k5-i#jev5!jqzWXtf|5ztSbN^53ItL$uO#I@`KTzMuTr@)(!KJ9-O`FF-`D>#z+dFUtA|6z#jD$5~< zl_&ay>Z9H?ya`(mbag0NW3tY4T2vqHs^g-KMpb>rapZ1wVQc-)JHei&9w_c6;uk^6 z9shDs;K=72xwK54WzL$RD-|T45VN~q*4up5x2Q@2OC`x$bp1Cj{B^@tsE->poiB{( zg+TorhOu(3A46BcW@QlKws1EZ%o3eYy}anZ%XNPt#zYEf`QW>}w5{F}UY%2F#z|=y z@v_O94*jQGQ)vJ_R{)S66_miftM(`M#@(GvAeR_l4n4iFLZgVzr6?^)(*COJaH6&r7OYd_NrfDYZY< zpO~9b6p|ESf~8wCRsh$MP+vEpbFEB}xQVsHT_u)=n@3S@%)SwAg~O{c@~RbNm-q!>&(7iq3W1th-y7#D_L zTaoL)^J`RK*z-^TZ<0$it1in%gzY8b>o!Ge>bg;OS{;5F8yFO#Z6aS;Cp&bp2_y#JN!#T|leFD5SYpg?G8wzm*cFtc@Cu-6%|^&bf5_Q<<(bZR&sF*LtD zy;ep7-F=k3*}L_S3-Nkr&#bvks*-Bn?;!w)_m7bWKv_vlE2VdyeX>!6O|@Wy6kR3 zu(}-21<_v$jSTc1v;1m>DM*Y!zdjxwKCVTptd(tld%mNf{-+&L2#L@@A{|AzZNHDJ z1>p+P=q|-`OeUKgBZy6!1M`VxCE87;U+rbbu?ED*T8tgxa~jy;fSJ(__v>5shA&|* zBP>wdrcN?t%<%eQ5t8#9szt+AiWQCULOii^!lKygtiO{UJZ92~oVYlgP6Y{RT0Tr$ z>fa&}qHC)x{u|P{yrj&IFX+^Z0-pOgWuh!Fmof3;?bFI~!m}}9ZU%=C;v(U(E#cpA zT@sxu#7O$T-I_5Dou7+tm?8NUypkbTxt+Kvo_;9=t?JaON!rf}xZns3T(G`}LUfPm zEd2K35zM8aShdNVVbo$ECYGmSM=9tPYRUi@Qa>Q*!t|IpyKHFHswXRN05A|ykW+Rk z@Wz5hXI=n&!@V9-otT9EYsK4nb0j#T@8IFKzUtP0_i;<_LF82IUT*i21sW1`h%Z@6 zG7!oixl!XFl=`Jsn-2VbKU_WF7!4w2DCD>{F^5zRPq+ya^am2~wLbs5vbUWEMlr_I zGE`c6$Qz5N+zok@h;@DWfiUk8t!MfCrkEnhUs&Lu-c#$?RxXw3XT;DO(IwwhEV}cj zV*07>s_OqMkc>EAzIvHGnz{k zp29vHffB1iZBLu6Z=4!!mCtH`h33LSo9PB#DsodZAgfM0xquL{sUxS{{Uq|k72lbb zrm8eRa`Kw}My<+(EOSSLJV+^}-;YaYx`FP8f7pwNk%gz+38()IM{(?!YUTU+Y1#JW zAZ@U$yJVl{B_0xlk&LDWQw3|XYkvm>tlFAPqHOMUm5KrEW)h}7$KLg4`I+J)0p-T1 z(tTE(Zk5G#l_UMm>+HR#3$W0reGdSNyp$|q(bz@Ljk(JILdxLIgyOY#W{01GmTF9E zP6{cFn5bFEQtWGPzma6#Xh6@gngF(zt(X#=3&Ek^_+`FSDf`IAeb3~2*Qio^FCxY+ ziz5O(J6gG0qJ@mHmEKvD%deMC4oniE&als?9U)%udgjGZhG>5^%suR5^rLTC@Ynn4 zr6XJnUU~g!8q+{2-wXunYqmIvPUmED!B1mJ;aqfzZnm8VCCg0XD3S!xyyE{rl(<|X zP)uw|=2JP=(eTqgF~&@C@3;w#{zbf=Qvod3Q7WamdffSN<^H20r}s~-0(9Y|_?rix zPy>Mj{Y_tGu--$K7_SqJS%l|lP+ZQuJg-b|3KmV#j&PBM+Pt(PYy4IKBIyzy|JPX# zE;Z6k0sE^gj%Z`g!f_j8W6WcWxguMc>n3n}t}r8vEkz3HDHD6gG>wb(5+g80j1oVI z!q0M?p`L||Nvg}nXx@htB(xZy^*W-)pHo8|RT@8jyauPPQJ5(uu}I2z`qNLDFJ9`I z*~ogV9IWN@pY_~-jGf)F1HLrg`EUBSQmGA&j1|?pHv)h_@8fM>;GRvNPnQ4g@~>On zdRUcVAcz<)Wwb{JKjxOnN@W$+6Gk|bB-{euo%`}*mtsx@^S7NzZFI4#_O9)VpvJsI zzS0Q%%ljDPhg!Rws;<=YEz42xny?M@eB03GYV4L3}d(~>qY_tbpy)u^51sXNs2 zTW&kJ>IG+iu5?$L)uE)iK*zZoA5{7Jxod)$8$}}42llYC7MG-=hJL~#Jh9k5j~MvS z>k<)T4rau3Zk0|Gxr(RVly(B5nlst{11W|fgfP{h8&R9EDmdy6jlsXmM}t#e2f_8M(r1jrc6TWA-x{J&kds8|zt!{M7#qchwN;y;wcr;(ti21@E0Xf2+Z7nhr-jA7@$znFzQndN_fK`06s`lohJ``r!pv+8UvS$j8s#(+@E2uGa0NHS(c#H( zg_#cAuvm}bDvyK#1mek;P$qTk)^nB@f+CWCzC0jp>B2WU>*!Mn+_c{ek%n(pobGkT z>=h_2Wsf%DRwUm>b8Sz#hVs2i5Sfw^uVX}&LkGS4lotYd-_OnX(;2X$Q_6NG=Sz3a z0a-)ARB^$U*Id6QsPP+VwtWfe?qYiyJ$tFpmr|UfJ9%8a4+P-WchdKHj~EGtXKbaF z$^YUt#!}UOED*6wx2)TV+e+}q5W|9a6Ud4jO)x5KrEV19{6ugBH0az`KM}@D(aebOCeahP6;Mxp7QJS zYy3{h5t+A7v@#&B<_{BaYpqGZmqTbh3--S%{+X7jussHmfab@^km<-*FMqk(kx4%# zIu{QtsZ~Kr2MR5tQ(bC$jo+51h@PkR1VCt6hdfQk2J%)Wuq&E%!o+W~Bsw;QIZUj+ z%pHysduRRZfN8fFPZ&<%wh+Yq{YW@w@TT#D1O6MS&iJ2)Mk`S{qKP%#Ga|}NKmQeb zc1Tw{oC`hU1dvz$dF7;j&W|Jgrnj9DIJB+Dce&zfL}U-GCyYsFQu>~A<9;iy%5ngKg-Xz$s#D7;8tgeS&R59G|caTff-8T zBa(v{+{84P_7lxdxFkQj|AZ+A zR#C)bw~-@ng}^#Os{cByo@|O%;`8Lv!nCCsRpjpl4HkchNOqdd%(~IFh`Cu9;~Xo_ zI;y2B@lQ%hd$N*A+NX^U+#!TtI}e}ZVX650|Izy9yezn;HE(}+Pb1XyJ3>HKsz}I@9hh; z4Zql)UHaWwTrmGo+<6JUy(tN7uSlIGam}N)o!Afa_M>Ebt&qwesZ*qL?&mARO8H3_ zKO`_!d*jQPouC7BPLUc9lZhR^jUxnoed2P?YauhA);yCOScAMyG<1<{lXFW5rAFC? zs|&lYGA4fXNcZd6oCWntG3i7BEO(FscdF)e`K z{#<1J)tZU~`5V7inS@E?bg!c96PLg790I`>D&h%>@r<98{8et1bMhZ5J{oV3%XECo zikujbFD%yD!-Dx&nT6$>rDeglX>amO-{%(4;AQ+g)6t__G&zGveU1-fcGbdoKy)jf zRlXKN(h-w|#yMfnHIX&MiTTZk^^}h+>Zbk&!gMtyjaT&jJIZ520zES0U?2@8@b_>o@yN`p`@HOJL3A zJB5g0x|NdJKi$6Wy%o?Ld)8Y61qo9tQmhbrMX8>e@@yO`iQy_l`wVRlk&EWIDZS>Knk-L9b;vh z_*vxfJiSisd2~&FA<%O-1R^4GVU{iutyIQBgv5TF+J?88!kUH4l!FxF{r)cZ*IgB0 ztZv4?4K$#n{8z{(=`X*Lcfm>L`lq}{Lthk~H%1XK*E`QZrdMt#IK=Y>ajFu~QSU?r zWC<1@w-S=sUURl2p!}MzGlrs1Y7<8=xV^a`63g9m8guIGHmdXF%=)!?pLMRyH=)VS z-%ZgU%>#`4anqAI-ss9{VF*u8%vel--@7|DoW#-@xUbSmjoxm5mBc~`mz+f^sltunk%H~oK`BU#Z3y9x~DzFcEnbtcv(-@zxL>Y zdx=%DNz9hqxGpYA7vE$sQcT0mpLZf<97&{Q9k=KO<_Nh$MYzt7J6)Ysqui5V? zc{07Y6S%0>1d5?^(Te#=vmwq~Ja4WRT*A9_vTR?EdM~?`a#|^e&Rmc2A#t2vh$PAJ zUESy@1*L$y$+a>7bG6^Jy!It10<3aOLbsvMX_V#4waEDDy<Sa{oH)jb}>+M!Q5KCeD}!pySJyfq_O+aUiAL*KKQXO!7-fRWX4aM zR$HhHRjz&z@YRjE0u&rCK7s@OOIom^tqP zKaq3NA0h`DpK|Ps`so+s!V7-b3ru4N)Ma+{^wmO05nQ|xNBIi%aMB3N;NMeA0qch= zFioAfh4@b0q!amc;ZSm0k=7)T*R6G`zU_eDdXQa=H9PfNdRZ^YSuYF6;5}}J zhFdWY?_18e#cyPPTiFBAqL~$J&a0-Z1%=A|eBbZ-Nm#Y8birxWup1G@t;yrcNq~nG zUEj0^9syr2eetfi+4C1^X@$YP^|oyDGGDQe2`qOYU8Z@OD6(Iuf>8?cx8@a71vDt3 z>f#jpt6PAj3KT$OmF!=h&uq`@Ttr>=Z6FnduA{5(>`K-eZ?AUIdv0IabqfRWKvbQE zDRJGO#@mZeHlK*wR)Dt{jQheJWQyE;%-=}SSA+SiGS2_0zBFBjKATk<)w(n}I8 zLD+wEEGAF21yN64V7tu4GZF37IyWP62TkP^DR9 zQyjw>vZ>@6t@bFRnfMDJ;AflA2_M(>{GEKIgZs$IoCo#av`MrBhb%(V0@Gc&2Toa@ z6dk#NT2L*Q)?t^b5H>Q-eDrptX4n!DLYD*`u6#HNy6 zyvT)6a$!=HbK++%aw}*PtTR`;zV8d{KM)r4r`xcdk?n_1+W?iZ;sNSc5}i^#S&!bA z71F;_P>QZ%?z^14Qc5`AJG^K4e|RUOM$*zgFvy5tr>C?ssRL`??2fd!q>=JoQp=g|JAN^3fMa2K~b$=r)9AOD5@HaH=Z11 z5W;n&{h>xQ26gc&%M_$udb0!9dB@qJZTt!w04DZB#clfc%E+-(zL+~6Kvlv*SVaHW z#s90yVc+8Ruj-uEcL?Q<jT|7 ztCR{N5)!k=ja^|So7MY3Vi}D0L+NGFGY6GOSpQf;SnS8J*A9dWQuHu=d=#%$pQn~@ z_^Ig1Vt9pBc6gLR>i7IgfNK_+RrGG`TLsFoj>C+27IsMFFI+GCGA$zMDhpwoZsBWp zKk~jQbGe&QjfR(7;U;+pjfwjjz`DZ-{R4DT?Q^n;g4>4a^V+qX`FQbKeKvUIerk!C zRrQl#8kBE$f^=1M6f5%{l&|7erE|yNbNZuNPk%y-Pxv_048nd5CbS71N-WK)+ccK1 z5@8@rKg}^VTqCV|?sZ-DqPIR}lglVNDEv`G(5%6az2RyoUr%1&=ZY_fIM>xWI;d3& z!Z_#rOk_f?3X~sDv`XPTgOyJo=(FjWcg8Y_hNv?YJ_~dyj8q=GSfcO@Ev-3jToJRF z2OF^QcHoGezMQ^%h~OKo-UCMkt@@R4YataZIJTLv$#n71#7z*_$+^=Hy=*%QxaLi3 zTEKhpocB2xs8aFr0SDiGy!79VINbpl^njstr^)u>bQW6j5(vQMDCSJ}UJ4-)&DIh{ z3Q-j`a-`v!lQjoRdg}p9gSZ5>Z|>OZFQ?da(id|>eLb4D1RAFKllamb5M-=;w!@%U z`5gRtg5=c=_qD^^^r~dLnH6q{s9G>Uy(oVrhBT-OEQ{6_U5bYowSHC@%U zN||ja;)ooaaQ9wO1-=Ch1SI$id!`wLvH47oxN&*hYoN0_+-6rtKPga`Nj9Tuw*vLx zjBO!>hkkVs`CbW%vofSa5VIKJm#1N@L>?JQ^`{t1jMKCu_MW3+%wDWQ9Gb&U#|sJa ziqqp{*IH&(*G8lS^@dn{*b7k4xAMAwR6{SIn3YXBD2Zi->$f4SRrE|gya}FFd?<$> zd2u!*r_nqD0;a>t*4H}Fuw!oBp4)7li-(Kl-jajK#u8hl-?Py3osJ>Enq^B0n|bp@ z(FtyyJYNxyr*Qi!f)vPjH-5|pJ{(OEXT`3fU=)+$*5&OZ%{57hUCE_BQ#7h4loVK^ z&R5?DA}#A}P_1N#PmieMfSw5<)~H-*~%p<{}aGuH6M9#tyyDh6Aqh zcLVa%TrhWe=K9m1$8YtR5(&~yQkjY#2DHob3J)|)Oau}^e+fi_ecvk60S8frTj_g( zV{(_GgnV0zjpn=Ya$p36#4559=Lvq{aH`Da=8F{;iHGVOgy*KnWE{#@`qSA>%|$H_ zq;~3ra>Imi6xY{0dz42-OlnCbrg|f+Y1DZ}GW9Gbj!@LU_A>k5TpV#Rrif17tM*hD zH9HGv$UaQ^K8_XJ6Kx?q3n5cZIM1(YlAQt^BqDR)M^7Pj&Qu|Nuw_7nE}^8MIejw! zG>oDkZiVgl%Z==G8bJx*N0zI3GDY-Ln*h%^Ny+}c>0TY+H?9VTTlc2PD)P+Zon|0; z=*dX8LlIG3x(in7GyaX9&TfMCY25n$1_#d`Iaf26Tm}Phyz<+a_IbrDjv#=J5X{^c z@DPInU)0)0YCmEynb_zw()SqmG5a$r|WLD%y$^XMuKv`U$sRNI8P22LXD4^8ALGk{hlT4kcB3h(;JjsuZ6&7X-ExW&A>KV=5#3OW-zg*b_8OOsc2((-sj z>2nYATMSsJbE=vi^}0`Qi^RtX{<}-{yWv5?L+)U?&%L_ zAF?%XPxpbL)>g@=$NFNe2?5|+fxYPQ^csMf*==m6_LV|L&LhUl=rm(B%NpI`?Rg$a&KN!S#EPDt9DLf}wd0LE*GV>5-E*jg|*FZEhUOZ?LpSycNoXi04X%F)A z{Rhz#!iSW*IN#8hEjS%K=w+&RGDy1x%B(5tH;l-#huHM7H9bX#c>WO1Sc35t6^Doj zO%QGZ1;zBJd)x2#Ife_CBTjszZ2~;=W@+GclKu7FzV`65zIz(Zxs=ZSj)>I)qkOP@bWCQ&X-86Y=nEpuz#{o}va!|Fn7j6c5YSwa%oQTs_xRFv<9b)fTKldrdt zvLi4nM+Zmx-w3R7u>1Dr?Eo5WOdut2Bj4_B-qe2F@$sCBkj|hCH_(Pt-UTsNOc#G~ zo<9;P`Xr_3I3L}o_;Gjp_x~?$;E#ShI|jwo|I@BH1id#;j36^jyzGl3d!gFHR&jNmBsS8;ENe&Me$ixh2C`P=N}9F4sf0t z=S87b78sS2aVN@A-Ja~JPFf&CI?|0v)PAP6Tt%B^;#zjt)>3Mtksoc(^JJ>KNX6I(rR`r z_Hbe(%P1LSL{xq${W&;f{meqXAOJnScU{6HePORt`#Ab}=T>TWb857jOwDl5>EjqW z4igtilF)R=6x~Aw96eekYLgllHG2Pnh6DHPfi67-2|@qe&4yb=;Cg-3zl=~)2)h7C zAjV+9@REbuzQ4QIkIZhaje?tMjXGIxQb^p|)0}~edW(4G>}=W6s~f&P84}Wt#68A^ z6!Gna{Cad3^Lm&P$g?_>GdLHa zqB<05K-m^^1$D(se(%V->7XObc77a`@=cp~H2j^Lulw{=$jm4puj93ta#O0xBfK}A zf;Mmd2x#ppR*>C)1T+l0?9Rp#yHqd5)BUsLN;iW2$d4+R=4G`H!L`?yj}eO5y(v{- zd!t+X@~!a6yaf!@fH9skCIM*zbR__As|UmdAl>W(?K^Qp4OBSilv-8j;=jkW_9=9`bg+0WFi5k^qKlz-wi zcpW(wdY@yEycfeE@A$h;S%uK^`=OFoP|_JuSz)Y99x$Qh9=4NSK+8c-BDd^dDw2dv zn@)?uHcw6bh#R&}qe!d8FO-td>%hk<45>ZZQOzEQ(7h3&9p znU8b|@2yo<1p|)0wmJd@6&@7aAm+1ensF@ENsqUxH<_^-DKsd8-$i*ekiKP<;>i-> zA#t4|TjD#*mmaz7+C1EEUZmxBYkNT6WW33<7=>DAK;^P-{sT3GfA&acMVY+9&|&Ca zFZ>#aE7ehy_bFA9=aOvmP;_b0AzD{oYA}R9m56;}lb2~QR;Ty;C~9(4pZt2)79d0y zNAyH(&+1QB!lm#oWZKAzf@3^_&y^M+yW7?Gdl%u^WzW;6-Sahf`yHo+WNXaJ9 zpc!I*L@)r;YP;K^Rv-Il)JWv#=Jw$=ea)G&l)ugaqExj)1luPaMaA}V?oU2NNZd-L zmfjO4b*V7c{>HuK&$d#C#-nr4*_<}2R8n$W+qB=W+2eQT2ANXl8%)_)j;zNDDPNc; zQUY8)4~>I;?X{}SuM}{cHq^dT!?w|%$rYEQWU@S(klTIQh9QjIl$N!0WYt#=1fe~R z7CFj@aB-K*!dk!T)A?ze&j(r-X@1JXRkDsHzOhC`q%H6B4MZ(3z z8+|JV`1#g+y0i6b(Q?3O8m+)^5fwpuvCO=hGpg1>Rwx^@SqhlOx;`mZ-t1fg{fvoe z6!Jhk1n923-LGD&FaQHJr#78vLHl;=gjpt`rjiX{!kX^0zuis)3STDr0CthwPDC(@ zFCL6f_LGT?HM9D@MEM zknwmmzZ**U)xQws@uO3`F>9^tD>i)o`YX$5ye8MIqxjmq)HV@f3g&mPz3vGL9&>Nu z9m8^`NT6GbCf&(h%Bad=?o3$C%6UC@G%h0VFRj#Iq|U+nosp;czZzRp!gYT74P)L5W(!UevZZ(_!G|{lO`fp%(qP*U+kwVf~cN( z$^A!x2BVzr$G4qY>2u%QT)um^oz9=`G=A!Om~89=D^}eHM@P(8M0F|j(9~x6PUX$* zuuYfDO-@#hdbF?2T*!*tM@a01T-F+L9huYuyYf7~+TWQG%-J=q_X9u!*0$v6UD ziL?;poEL6n6L%^?&!-(!QKq#5rtNqSzO>NqZgsiBp<%g}3#<3hkCoj2W)oS32{Ian z!ti=6%>G6}U0;35!4MfHnmEb$gw?M$ZlX|OQD<3OHPf*6lbrr-vD|mw9`^o_ty|b+7XYx8PqL$$jhg79;8=dhfBHQ+4lE^IHC(feZd0d59 zYO;O{PigUZzqoVyJ8tSjw?$L{qf7F9YS^`r^uuZ0def9x2MVY6VFbU!W_c)Jl&Mt% zuEIsoDdccY@aF=>qb)jNi)fP~F1>elfF&Or)=zM{=x)Jylg4jY3`lTSyO+O#PT}G& zcZi5Ro4eh%&Dn+^XX1-KCf(?`*-MgysX_Cyn>@bh+g(J*F!0*l23iX9<{yKbJZ-eE z@_5bCj4C5o((E|2^Y%L~0FsPN@Ba^`fUP^7f_Y%Kr+5p#yeW{2zz2J;GBWo)ANQ~S zyk)vagxES&3V1h;$>uD091th>TZ~_6xsQAC_!9y)#!nhP_TlP9z(*22OchT@(e{*Wh{_@YS7EdtQLRr&Tn%`#+(RZ<eqZ_(JzK+y_O{@A>W^@s?qL4Ypx{1yBVdMzmfa&eq_ljs!Xg2>h+F; zfEv1p=rkZ&Yje_u5GGQ~#KC@X6l$TWTXwn+nHrL296-MP@h|EM5FJPpp@ld!DpcLI zK-fSxt|#X!Z{2P-(sq->OG*gM1Jzl026w{+Fe?20NLqz*rL7 zS$|Gunhgt5S(D9vSMe)zh7VEF&+R>6;|bjVqkqLUuixpnPm*ofSg7@7 zY*IBQ5E2ZGpb34t+Sy^FjS({0K!~L}4IFlPWM2*5E-q60eY(@+X?IqsT@qdQAL#!F zQ&4R!dM?Gh;ZE;t3&8Qt++P4+!}!HN4FfE7@wy^ovD$w5_itW-2LoSG!b-m&@|Z*? zquy6mMLgX@Hb$!ZM`i*(-gC5gtQq>(2=+=Q(UDQx%JhPOL(rNO0aQa@@N_UEd&1^T zj}YAO40i^{pqdTgQ9E7{XjC`T>-aB_myu0%9#*x>eHK=5C=kjZH%^?lYU)j;uv;iK z^L)~533`?ADzn$2K1`f!DEt|YyC4@%c|nKI1@@S)G!z{dhNxk>*TzmZjM*!8k$SF$ zf0HZtp%E9s9v`U@XgKOpO<*#*Z0F1-r{Z0hhJ5XXXIp$a@v!Z%)aiv`^R8-rs1=O1 zj`PuDKS5ZHso9u(^%3@#!Xt*Jw@8F$&881fKS$ab$~n2du+v!fTN0FcLjT%E8lC#Q zL#Si@hJ?ScZhtx&XqzqWOMM9L0LDuuCFZ`y?4r%N(a*`ZBBON1k5|bZMfz8cQxSN< z55b-O*%f;x`W{O6CE!pca8&T!MfgQb`}8IF;&vYm1jjsW0r?InaXX!~nVhum>|4LR z@Kvw%F+kV~QcrRH2jZ^*nVE}BGY*h_TPkDhgJ3MIC!?OBP<9TzXA8*E_BOG?#4a&- zH{Mt^oGag95mmo0I+!kDUfuR}#W^gwKY*EyoN5kZnQI8qn=IHpj>+r(H`%`4@AV-K z`KX?wQ~fD-Pwp@+BoEUKpBqE>A8UNd?6%`Hw{OcFKd9{ zqNU+kt1c5vHTy|xxZ@-rXt=&Jb$rZ*de7K1>r&)uSmVnn)?bum=7(0qPhawZ%=sb8 zr$z%IEf(VJ#K_f>IWzU28fJv=kfKiSF&6D^l4xV@^Bb9{d#Y3jEff~Qk15gw2e3gC zX(}c16f>x=P><43QV^qh1G5{w8wu?(Lfc7o5t90seN9kmHBy&0wX@U3YG?{8IA94} zCHPb>-_z{yv9v{WL_}`bKTS=4u6eN6IbLF+Fl^G}yJ;9LF%j7}UCeAj@_$?ypKGiI z;4W<6Qo9)av8Ap!+N#P@D?di>K?Sn2LN--&I zSKXq43ed*Bxx+^2KHyJqGW`!kc%KK9BtKQS)2QC29aQyYAV6Ybmrn}5SgJi7?%tIIRL?gdI?=Ojvx>I>vl|$GD6_2}wV;#b&McbF@Y@d6Xh*oL zJW4?VFBrXl$)Z<@ihLhAIa*p0o$N1EtJo6*9CpR-KzR97DKKULy+2>EUpA^6p|to& z6m%}A)c7$kpv${jL2+vqY2S9ftC&?2$eX^9pnepqkNED74`NxPap)BPaj)egMa{?C=RXgH*beE*9dtx zx>9e7CW-~p|32a$f7iX0C7AyHopN>HpR4*y z#{~7D!6?-$a(>D_&-_;7#W+86=qr@uvA-p}MP3)~7g|`-5eP5Mv6IGdC3jtW-Cp%F zn*I?fvG~~6ku+sJJVI=G$@wSHY+JxIN(Du>qi54nNA~zGmU7awyf^b}Mn1jAIo1Ti z#{4VB0+a#Z8QfsILJ!jlIwB{w>>*oUDVv>JgP(ee9c}#*vAkp3V>A-ZmD%_-fghPD zKun}^RD}nBpOI`Lu}1NEl3G90S|~NV2EV(Y5f?&)X=+HXe*)4$<~% z@*|3`7%;^qtdZXqIqLNFJe-XB9Ycm2JmWu!Af?Zj!7tuRHp#uoFOm{aHBY9Wntb-x zEd#}rjKA_(ZKZ|=$wzv}7if$@k)Cpw22;T*-%tuX3TrIfzf@>y2)i&Ze~9s0zK+2m zPv=3%w$G)M8Kj(u$SNpSO!cnB*!nKj?yTvLp2V!JPwH_hDA|?F{|Cx$2M|e20M8*? z6^PXhl_k;Ta^`olW<5FSJ&6^H>(pdmd*x=W=XR>-zUqdvVf~tWocE64qrqe-%rthp zHwM|SOm7M6MFrMFNY2woTzm< zwSRxBARnwiz(NUDmjw^fKa!4C?%e;n49{}@^B*Xq?G~uY(Z88_h|-%?8Z9yRHD{8# z??VGcwvX`JqM>ST%Xm17V4J*-wyjoG^P9k2}0$l+$(iXprY927@Q!TX@>B zzpEQ(HTu5LoWm$Wf92fPlacwyq@qA>5(J-EB}EyI+CPnWXPOoD?5CiCwC7IPnO%tN9tP2q)~q*$xmd_PxWqX zu}X~Wh8}h*JFNoE*bE;D2|uk5g(s3jN<-#^2*5#)52V@;KxS790HFd3b#GUU-&)0T z;4Y*hQRFuoZ@Y~R9}tK3D=+RIX_}UsI^IP@SKsX4?yfZz_W|!UG{7$hcG9wLEJNr& zfNkl*A85<8mAE&*XMqI$3Ga^ttHjQebN#g_sKg%4-%0DP^7=7iLbu*g04Xz-E5qPr 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 diff --git a/index.html b/index.html deleted file mode 100644 index f775186..0000000 --- a/index.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - HW1: Noise - - - - - - \ No newline at end of file diff --git a/package.json b/package.json index 370fadd..1627791 100644 --- a/package.json +++ b/package.json @@ -1,29 +1,22 @@ { "scripts": { - "start": "webpack-dev-server --hot --inline", - "build": "webpack", - "deploy": "gh-pages-deploy" - }, - "gh-pages-deploy": { - "prep": [ - "build" - ], - "noprompt": true - }, - "dependencies": { - "dat-gui": "^0.5.0", - "gl-matrix": "^2.3.2", - "stats-js": "^1.0.0-alpha1", - "three": "^0.82.1", - "three-orbit-controls": "^82.1.0" + "start": "webpack-dev-server --no-hot --live-reload", + "build": "webpack" }, "devDependencies": { - "babel-core": "^6.18.2", - "babel-loader": "^6.2.8", - "babel-preset-es2015": "^6.18.0", - "gh-pages-deploy": "^0.4.2", - "webpack": "^1.13.3", - "webpack-dev-server": "^1.16.2", + "@types/dat.gui": "^0.7.7", + "@types/webgl2": "0.0.6", + "ts-loader": "^9.2.5", + "typescript": "^4.4.2", + "webpack": "^5.52.0", + "webpack-cli": "^4.8.0", + "webpack-dev-server": "^4.1.1", "webpack-glsl-loader": "^1.0.1" + }, + "dependencies": { + "3d-view-controls": "^2.2.2", + "dat.gui": "^0.7.7", + "gl-matrix": "^3.3.0", + "stats-js": "^1.0.1" } } diff --git a/src/Camera.ts b/src/Camera.ts new file mode 100644 index 0000000..77a7610 --- /dev/null +++ b/src/Camera.ts @@ -0,0 +1,41 @@ +var CameraControls = require('3d-view-controls'); +import {vec3, mat4} from 'gl-matrix'; + +class Camera { + controls: any; + projectionMatrix: mat4 = mat4.create(); + viewMatrix: mat4 = mat4.create(); + fovy: number = 45; + aspectRatio: number = 1; + near: number = 0.1; + far: number = 1000; + position: vec3 = vec3.create(); + direction: vec3 = vec3.create(); + target: vec3 = vec3.create(); + up: vec3 = vec3.create(); + + constructor(position: vec3, target: vec3) { + this.controls = CameraControls(document.getElementById('canvas'), { + eye: position, + center: target, + }); + vec3.add(this.target, this.position, this.direction); + mat4.lookAt(this.viewMatrix, this.controls.eye, this.controls.center, this.controls.up); + } + + setAspectRatio(aspectRatio: number) { + this.aspectRatio = aspectRatio; + } + + updateProjectionMatrix() { + mat4.perspective(this.projectionMatrix, this.fovy, this.aspectRatio, this.near, this.far); + } + + update() { + this.controls.tick(); + vec3.add(this.target, this.position, this.direction); + mat4.lookAt(this.viewMatrix, this.controls.eye, this.controls.center, this.controls.up); + } +}; + +export default Camera; diff --git a/src/framework.js b/src/framework.js deleted file mode 100644 index 9cfcd1b..0000000 --- a/src/framework.js +++ /dev/null @@ -1,75 +0,0 @@ - -const THREE = require('three'); -const OrbitControls = require('three-orbit-controls')(THREE) -import Stats from 'stats-js' -import DAT from 'dat-gui' - -// when the scene is done initializing, the function passed as `callback` will be executed -// then, every frame, the function passed as `update` will be executed -function init(callback, update) { - var stats = new Stats(); - stats.setMode(1); - stats.domElement.style.position = 'absolute'; - stats.domElement.style.left = '0px'; - stats.domElement.style.top = '0px'; - document.body.appendChild(stats.domElement); - - var gui = new DAT.GUI(); - - var framework = { - gui: gui, - stats: stats - }; - - // run this function after the window loads - window.addEventListener('load', function() { - - var scene = new THREE.Scene(); - var camera = new THREE.PerspectiveCamera( 75, window.innerWidth/window.innerHeight, 0.1, 1000 ); - var renderer = new THREE.WebGLRenderer( { antialias: true } ); - renderer.setPixelRatio(window.devicePixelRatio); - renderer.setSize(window.innerWidth, window.innerHeight); - renderer.setClearColor(0x020202, 0); - - var controls = new OrbitControls(camera, renderer.domElement); - controls.enableDamping = true; - controls.enableZoom = true; - controls.target.set(0, 0, 0); - controls.rotateSpeed = 0.3; - controls.zoomSpeed = 1.0; - controls.panSpeed = 2.0; - - document.body.appendChild(renderer.domElement); - - // resize the canvas when the window changes - window.addEventListener('resize', function() { - camera.aspect = window.innerWidth / window.innerHeight; - camera.updateProjectionMatrix(); - renderer.setSize(window.innerWidth, window.innerHeight); - }); - - // assign THREE.js objects to the object we will return - framework.scene = scene; - framework.camera = camera; - framework.renderer = renderer; - - // begin the animation loop - (function tick() { - stats.begin(); - update(framework); // perform any requested updates - renderer.render(scene, camera); // render the scene - stats.end(); - requestAnimationFrame(tick); // register to call this again when the browser renders a new frame - })(); - - // we will pass the scene, gui, renderer, camera, etc... to the callback function - return callback(framework); - }); -} - -export default { - init: init -} - -export const PI = 3.14159265 -export const e = 2.7181718 \ No newline at end of file diff --git a/src/geometry/Cube.ts b/src/geometry/Cube.ts new file mode 100644 index 0000000..793c624 --- /dev/null +++ b/src/geometry/Cube.ts @@ -0,0 +1,133 @@ +import {vec3, vec4} from 'gl-matrix'; +import Drawable from '../rendering/gl/Drawable'; +import {gl} from '../globals'; + +class Cube extends Drawable { + indices: Uint32Array; + positions: Float32Array; + normals: Float32Array; + center: vec4; + + constructor(center: vec3) { + super(); // Call the constructor of the super class. This is required. + this.center = vec4.fromValues(center[0], center[1], center[2], 1); + + } + + create() { + + let indices: Array; + indices = []; + + for(let i of [0, 1, 2, 3, 4, 5]){ + let si = i*4 + indices = indices.concat([si, si+1, si+2]); + indices = indices.concat([si, si+2, si+3]); + } + + console.log(indices) + + this.indices = new Uint32Array(indices); + this.normals = new Float32Array([ + 0, 0, 1, 0, + 0, 0, 1, 0, + 0, 0, 1, 0, + 0, 0, 1, 0, + 0, 0, -1, 0, + 0, 0, -1, 0, + 0, 0, -1, 0, + 0, 0, -1, 0, + -1, 0, 0, 0, + -1, 0, 0, 0, + -1, 0, 0, 0, + -1, 0, 0, 0, + 1, 0, 0, 0, + 1, 0, 0, 0, + 1, 0, 0, 0, + 1, 0, 0, 0, + 0, 1, 0, 0, + 0, 1, 0, 0, + 0, 1, 0, 0, + 0, 1, 0, 0, + 0, -1, 0, 0, + 0, -1, 0, 0, + 0, -1, 0, 0, + 0, -1, 0, 0 + ]); + this.positions = new Float32Array([ + -1, -1, 1, 1, + 1, -1, 1, 1, + 1, 1, 1, 1, + -1, 1, 1, 1, + + -1, -1, -1, 1, + 1, -1, -1, 1, + 1, 1, -1, 1, + -1, 1, -1, 1, + // + -1, -1, -1, 1, + -1, -1, 1, 1, + -1, 1, 1, 1, + -1, 1, -1, 1, + // + 1, -1, 1, 1, + 1, -1, -1, 1, + 1, 1, -1, 1, + 1, 1, 1, 1, + // + -1, 1, -1, 1, + -1, 1, 1, 1, + 1, 1, 1, 1, + 1, 1, -1, 1, + // + 1, -1, -1, 1, + 1, -1, 1, 1, + -1, -1, 1, 1, + -1, -1, -1, 1, + + // 0, 0, 0, 0, + // 0, 0, 0, 0, + // 0, 0, 0, 0, + // 0, 0, 0, 0, + + // 0, 0, 0, 0, + // 0, 0, 0, 0, + // 0, 0, 0, 0, + // 0, 0, 0, 0, + + // 0, 0, 0, 0, + // 0, 0, 0, 0, + // 0, 0, 0, 0, + // 0, 0, 0, 0, + + // 0, 0, 0, 0, + // 0, 0, 0, 0, + // 0, 0, 0, 0, + // 0, 0, 0, 0, + + // 0, 0, 0, 0, + // 0, 0, 0, 0, + // 0, 0, 0, 0, + // 0, 0, 0, 0, + ]); + + + this.generateIdx(); + this.generatePos(); + this.generateNor(); + + this.count = this.indices.length; + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.bufIdx); + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, this.indices, gl.STATIC_DRAW); + + gl.bindBuffer(gl.ARRAY_BUFFER, this.bufNor); + gl.bufferData(gl.ARRAY_BUFFER, this.normals, gl.STATIC_DRAW); + + gl.bindBuffer(gl.ARRAY_BUFFER, this.bufPos); + gl.bufferData(gl.ARRAY_BUFFER, this.positions, gl.STATIC_DRAW); + + console.log(`Created cube`); + } +}; + +export default Cube; diff --git a/src/geometry/Icosphere.ts b/src/geometry/Icosphere.ts new file mode 100644 index 0000000..412995b --- /dev/null +++ b/src/geometry/Icosphere.ts @@ -0,0 +1,179 @@ +import {vec3, vec4} from 'gl-matrix'; +import Drawable from '../rendering/gl/Drawable'; +import {gl} from '../globals'; + +class Icosphere extends Drawable { + buffer: ArrayBuffer; + indices: Uint32Array; + positions: Float32Array; + normals: Float32Array; + center: vec4; + + constructor(center: vec3, public radius: number, public subdivisions: number) { + super(); // Call the constructor of the super class. This is required. + this.center = vec4.fromValues(center[0], center[1], center[2], 1); + } + + create() { + const X = 0.525731112119133606; + const Z = 0.850650808352039932; + const N = 0; + + let maxIndexCount = 20 * Math.pow(4, this.subdivisions); + let maxVertexCount = 10 * Math.pow(4, this.subdivisions) + 2; + + // Create buffers to back geometry data + // Index data will ping pong back and forth between buffer0 and buffer1 during creation + // All data will be in buffer0 at the end + const buffer0 = new ArrayBuffer( + maxIndexCount * 3 * Uint32Array.BYTES_PER_ELEMENT + + maxVertexCount * 4 * Float32Array.BYTES_PER_ELEMENT + + maxVertexCount * 4 * Float32Array.BYTES_PER_ELEMENT + ); + const buffer1 = new ArrayBuffer( + maxIndexCount * 3 * Uint32Array.BYTES_PER_ELEMENT + ); + const buffers = [buffer0, buffer1]; + let b = 0; + + const indexByteOffset = 0; + const vertexByteOffset = maxIndexCount * 3 * Uint32Array.BYTES_PER_ELEMENT; + const normalByteOffset = vertexByteOffset; + const positionByteOffset = vertexByteOffset + maxVertexCount * 4 * Float32Array.BYTES_PER_ELEMENT; + + // Create 3-uint buffer views into the backing buffer to represent triangles + // The C++ analogy to this would be something like: + // triangles[i] = reinterpret_cast*>(&buffer[offset]); + let triangles: Array = new Array(20); + let nextTriangles: Array = new Array(); + for (let i = 0; i < 20; ++i) { + triangles[i] = new Uint32Array(buffers[b], indexByteOffset + i * 3 * Uint32Array.BYTES_PER_ELEMENT, 3); + } + + // Create 3-float buffer views into the backing buffer to represent positions + let vertices: Array = new Array(12); + for (let i = 0; i < 12; ++i) { + vertices[i] =new Float32Array(buffer0, vertexByteOffset + i * 4 * Float32Array.BYTES_PER_ELEMENT, 4); + } + + // Initialize normals for a 20-sided icosahedron + vertices[0].set([ -X,N,Z,0 ]); + vertices[1].set([ X,N,Z,0 ]); + vertices[2].set([ -X,N,-Z,0 ]); + vertices[3].set([ X,N,-Z,0 ]); + vertices[4].set([ N,Z,X,0 ]); + vertices[5].set([ N,Z,-X,0 ]); + vertices[6].set([ N,-Z,X,0 ]); + vertices[7].set([ N,-Z,-X,0 ]); + vertices[8].set([ Z,X,N,0 ]); + vertices[9].set([ -Z,X, N,0 ]); + vertices[10].set([ Z,-X,N,0 ]); + vertices[11].set([ -Z,-X,N,0 ]); + + // Initialize indices for a 20-sided icosahedron + triangles[0].set([ 0,4,1 ]); + triangles[1].set([ 0,9,4 ]); + triangles[2].set([ 9,5,4 ]); + triangles[3].set([ 4,5,8 ]); + triangles[4].set([ 4,8,1 ]); + triangles[5].set([ 8,10,1 ]); + triangles[6].set([ 8,3,10 ]); + triangles[7].set([ 5,3,8 ]); + triangles[8].set([ 5,2,3 ]); + triangles[9].set([ 2,7,3 ]); + triangles[10].set([ 7,10,3 ]); + triangles[11].set([ 7,6,10 ]); + triangles[12].set([ 7,11,6 ]); + triangles[13].set([ 11,0,6 ]); + triangles[14].set([ 0,1,6 ],); + triangles[15].set([ 6,1,10 ]); + triangles[16].set([ 9,0,11 ]); + triangles[17].set([ 9,11,2 ]); + triangles[18].set([ 9,2,5 ]); + triangles[19].set([ 7,2,11 ]); + + // This loop subdivides the icosahedron + for (let s = 0; s < this.subdivisions; ++s) { + b = 1 - b; + nextTriangles.length = triangles.length * 4; + let triangleIdx = 0; + + // edgeMap maps a pair of vertex indices to a vertex index at their midpoint + // The function `mid` will get that midpoint vertex if it has already been created + // or it will create the vertex and add it to the map + let edgeMap: Map = new Map(); + function mid(v0: number, v1: number): number { + let key = [v0, v1].sort().join('_'); + if (!edgeMap.has(key)) { + let midpoint = new Float32Array(buffer0, vertexByteOffset + vertices.length * 4 * Float32Array.BYTES_PER_ELEMENT, 4); + vec4.add(midpoint, vertices[v0], vertices[v1]); + vec4.normalize(midpoint, midpoint); + edgeMap.set(key, vertices.length); + vertices.push(midpoint); + } + return edgeMap.get(key); + } + + for (let t = 0; t < triangles.length; ++t) { + let v0 = triangles[t][0]; + let v1 = triangles[t][1]; + let v2 = triangles[t][2]; + let v3 = mid(v0, v1); // Get or create a vertex between these two vertices + let v4 = mid(v1, v2); + let v5 = mid(v2, v0); + + let t0 = nextTriangles[triangleIdx] = new Uint32Array(buffers[b], indexByteOffset + (triangleIdx++) * 3 * Uint32Array.BYTES_PER_ELEMENT, 3); + let t1 = nextTriangles[triangleIdx] = new Uint32Array(buffers[b], indexByteOffset + (triangleIdx++) * 3 * Uint32Array.BYTES_PER_ELEMENT, 3); + let t2 = nextTriangles[triangleIdx] = new Uint32Array(buffers[b], indexByteOffset + (triangleIdx++) * 3 * Uint32Array.BYTES_PER_ELEMENT, 3); + let t3 = nextTriangles[triangleIdx] = new Uint32Array(buffers[b], indexByteOffset + (triangleIdx++) * 3 * Uint32Array.BYTES_PER_ELEMENT, 3); + + let triangleOffset = nextTriangles.length; + t0.set([v0, v3, v5]); + t1.set([v3, v4, v5]); + t2.set([v3, v1, v4]); + t3.set([v5, v4, v2]); + } + + // swap buffers + let temp = triangles; + triangles = nextTriangles; + nextTriangles = temp; + } + + if (b === 1) { + // if indices did not end up in buffer0, copy them there now + let temp0 = new Uint32Array(buffer0, 0, 3 * triangles.length); + let temp1 = new Uint32Array(buffer1, 0, 3 * triangles.length); + temp0.set(temp1); + } + + // Populate one position for each normal + for (let i = 0; i < vertices.length; ++i) { + let pos = new Float32Array(buffer0, positionByteOffset + i * 4 * Float32Array.BYTES_PER_ELEMENT, 4); + vec4.scaleAndAdd(pos, this.center, vertices[i], this.radius); + } + + this.buffer = buffer0; + this.indices = new Uint32Array(this.buffer, indexByteOffset, triangles.length * 3); + this.normals = new Float32Array(this.buffer, normalByteOffset, vertices.length * 4); + this.positions = new Float32Array(this.buffer, positionByteOffset, vertices.length * 4); + + this.generateIdx(); + this.generatePos(); + this.generateNor(); + + this.count = this.indices.length; + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.bufIdx); + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, this.indices, gl.STATIC_DRAW); + + gl.bindBuffer(gl.ARRAY_BUFFER, this.bufNor); + gl.bufferData(gl.ARRAY_BUFFER, this.normals, gl.STATIC_DRAW); + + gl.bindBuffer(gl.ARRAY_BUFFER, this.bufPos); + gl.bufferData(gl.ARRAY_BUFFER, this.positions, gl.STATIC_DRAW); + + console.log(`Created icosphere with ${vertices.length} vertices`); + } +}; + +export default Icosphere; diff --git a/src/geometry/Square.ts b/src/geometry/Square.ts new file mode 100644 index 0000000..1a21a10 --- /dev/null +++ b/src/geometry/Square.ts @@ -0,0 +1,47 @@ +import {vec3, vec4} from 'gl-matrix'; +import Drawable from '../rendering/gl/Drawable'; +import {gl} from '../globals'; + +class Square extends Drawable { + indices: Uint32Array; + positions: Float32Array; + normals: Float32Array; + center: vec4; + + constructor(center: vec3) { + super(); // Call the constructor of the super class. This is required. + this.center = vec4.fromValues(center[0], center[1], center[2], 1); + } + + create() { + + this.indices = new Uint32Array([0, 1, 2, + 0, 2, 3]); + this.normals = new Float32Array([0, 0, 1, 0, + 0, 0, 1, 0, + 0, 0, 1, 0, + 0, 0, 1, 0]); + this.positions = new Float32Array([-1, -1, 0, 1, + 1, -1, 0, 1, + 1, 1, 0, 1, + -1, 1, 0, 1]); + + this.generateIdx(); + this.generatePos(); + this.generateNor(); + + this.count = this.indices.length; + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.bufIdx); + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, this.indices, gl.STATIC_DRAW); + + gl.bindBuffer(gl.ARRAY_BUFFER, this.bufNor); + gl.bufferData(gl.ARRAY_BUFFER, this.normals, gl.STATIC_DRAW); + + gl.bindBuffer(gl.ARRAY_BUFFER, this.bufPos); + gl.bufferData(gl.ARRAY_BUFFER, this.positions, gl.STATIC_DRAW); + + console.log(`Created square`); + } +}; + +export default Square; diff --git a/src/globals.ts b/src/globals.ts new file mode 100644 index 0000000..cac5bf2 --- /dev/null +++ b/src/globals.ts @@ -0,0 +1,5 @@ + +export var gl: WebGL2RenderingContext; +export function setGL(_gl: WebGL2RenderingContext) { + gl = _gl; +} diff --git a/src/main.js b/src/main.js deleted file mode 100644 index 92b19a4..0000000 --- a/src/main.js +++ /dev/null @@ -1,60 +0,0 @@ - -const THREE = require('three'); // older modules are imported like this. You shouldn't have to worry about this much -import Framework from './framework' -import Noise from './noise' -import {other} from './noise' - -// called after the scene loads -function onLoad(framework) { - var scene = framework.scene; - var camera = framework.camera; - var renderer = framework.renderer; - var gui = framework.gui; - var stats = framework.stats; - - // LOOK: the line below is synyatic sugar for the code above. Optional, but I sort of recommend it. - // var {scene, camera, renderer, gui, stats} = framework; - - // initialize a simple box and material - var box = new THREE.BoxGeometry(1, 1, 1); - - var adamMaterial = new THREE.ShaderMaterial({ - uniforms: { - image: { // Check the Three.JS documentation for the different allowed types and values - type: "t", - value: THREE.ImageUtils.loadTexture('./adam.jpg') - } - }, - vertexShader: require('./shaders/adam-vert.glsl'), - fragmentShader: require('./shaders/adam-frag.glsl') - }); - var adamCube = new THREE.Mesh(box, adamMaterial); - - // set camera position - camera.position.set(1, 1, 2); - camera.lookAt(new THREE.Vector3(0,0,0)); - - scene.add(adamCube); - - // edit params and listen to changes like this - // more information here: https://workshop.chromeexperiments.com/examples/gui/#1--Basic-Usage - gui.add(camera, 'fov', 0, 180).onChange(function(newVal) { - camera.updateProjectionMatrix(); - }); -} - -// called on frame updates -function onUpdate(framework) { - // console.log(`the time is ${new Date()}`); -} - -// when the scene is done initializing, it will call onLoad, then on frame updates, call onUpdate -Framework.init(onLoad, onUpdate); - -// console.log('hello world'); - -// console.log(Noise.generateNoise()); - -// Noise.whatever() - -// console.log(other()) \ No newline at end of file diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..64b7ecd --- /dev/null +++ b/src/main.ts @@ -0,0 +1,183 @@ +import {vec3, vec4} from 'gl-matrix'; +const Stats = require('stats-js'); +import * as DAT from 'dat.gui'; +import Icosphere from './geometry/Icosphere'; +import Square from './geometry/Square'; +import OpenGLRenderer from './rendering/gl/OpenGLRenderer'; +import Camera from './Camera'; +import {setGL} from './globals'; +import ShaderProgram, {Shader} from './rendering/gl/ShaderProgram'; +import Cube from "./geometry/Cube"; + +// Define an object with application parameters and button callbacks +// This will be referred to by dat.GUI's functions that add GUI elements. +const defaultColor1: Array = [180, 150, 150, 1]; +const defaultColor2: Array = [255, 0, 0, 1]; +const defaultColor3: Array = [0, 0, 255, 1]; +const defaultColor4: Array = [0, 255, 0, 1]; +const defaultN_octaves: number = 7.0; +const defaultPersistance: number = 4.0; +const defaultLattice_spacing_mod: number = 9.0; + + +const controls = { + tesselations: 5, + 'Load Scene': loadScene, // A function pointer, essentially, + color1: defaultColor1, + color2: defaultColor2, + color3: defaultColor3, + color4: defaultColor4, + n_octaves: defaultN_octaves, + persistance: defaultPersistance, + lattice_spacing_mod: defaultLattice_spacing_mod +}; + + +let icosphere: Icosphere; +let square: Square; +let cube: Cube; +let prevTesselations: number = 5; +let prevColor1: Array = defaultColor1; +let prevColor2: Array = defaultColor2; +let prevColor3: Array = defaultColor3; +let prevColor4: Array = defaultColor4; +let prevN_octaves: number = defaultN_octaves; +let prevPersistance: number = defaultPersistance; +let prevLattice_spacing_mod: number = defaultLattice_spacing_mod; + +let time: number = 0.0; + +function loadScene() { + icosphere = new Icosphere(vec3.fromValues(0, 0, 0), 1, controls.tesselations); + icosphere.create(); + // square = new Square(vec3.fromValues(0, 0, 0)); + // square.create(); + // cube = new Cube(vec3.fromValues(0, 0, 0)); + // cube.create(); +} + +function main() { + // Initial display for framerate + const stats = Stats(); + stats.setMode(0); + stats.domElement.style.position = 'absolute'; + stats.domElement.style.left = '0px'; + stats.domElement.style.top = '0px'; + document.body.appendChild(stats.domElement); + + // Add controls to the gui + const gui = new DAT.GUI(); + gui.add(controls, 'tesselations', 0, 8).step(1); + gui.add(controls, 'Load Scene'); + gui.addColor(controls, 'color1'); + gui.addColor(controls, 'color2'); + gui.addColor(controls, 'color3'); + gui.addColor(controls, 'color4'); + gui.add(controls, 'n_octaves', 1, 14).step(1); + gui.add(controls, 'persistance', 1, 10,0).step(0.1); + gui.add(controls, 'lattice_spacing_mod', 1, 10,0).step(0.1); + + // get canvas and webgl context + const canvas = document.getElementById('canvas'); + const gl = canvas.getContext('webgl2'); + if (!gl) { + alert('WebGL 2 not supported!'); + } + // `setGL` is a function imported above which sets the value of `gl` in the `globals.ts` module. + // Later, we can import `gl` from `globals.ts` to access it + setGL(gl); + + // Initial call to load scene + loadScene(); + + const camera = new Camera(vec3.fromValues(0, 0, 5), vec3.fromValues(0, 0, 0)); + + const renderer = new OpenGLRenderer(canvas); + renderer.setClearColor(0.2, 0.2, 0.2, 1); + gl.enable(gl.DEPTH_TEST); + + const lambert = new ShaderProgram([ + new Shader(gl.VERTEX_SHADER, require('./shaders/lambert-vert.glsl')), + new Shader(gl.FRAGMENT_SHADER, require('./shaders/lambert-frag.glsl')), + ]); + lambert.setUnifVec3(vec3.fromValues(defaultColor1[0]/255.0, defaultColor1[1]/255.0, defaultColor1[2]/255.0), 'unifColor1'); + lambert.setUnifVec3(vec3.fromValues(defaultColor2[0]/255.0, defaultColor2[1]/255.0, defaultColor2[2]/255.0), 'unifColor2'); + lambert.setUnifVec3(vec3.fromValues(defaultColor3[0]/255.0, defaultColor3[1]/255.0, defaultColor3[2]/255.0), 'unifColor3'); + lambert.setUnifVec3(vec3.fromValues(defaultColor4[0]/255.0, defaultColor4[1]/255.0, defaultColor4[2]/255.0), 'unifColor4'); + lambert.setFloat(defaultN_octaves, 'unifN_octaves'); + lambert.setFloat(defaultPersistance * 0.1, 'unifPersistance'); + lambert.setFloat(defaultLattice_spacing_mod * 0.1, 'unifLattice_spacing_mod'); + + // This function will be called every frame + function tick() { + + + camera.update(); + stats.begin(); + gl.viewport(0, 0, window.innerWidth, window.innerHeight); + renderer.clear(); + if(controls.color1 != prevColor1){ + prevColor1 = controls.color1; + lambert.setUnifVec3(vec3.fromValues(prevColor1[0]/255.0, prevColor1[1]/255.0, prevColor1[2]/255.0), 'unifColor1'); + } + if(controls.color2 != prevColor2){ + prevColor2 = controls.color2; + lambert.setUnifVec3(vec3.fromValues(prevColor2[0]/255.0, prevColor2[1]/255.0, prevColor2[2]/255.0), 'unifColor2'); + } + if(controls.color3 != prevColor3){ + prevColor3 = controls.color3; + lambert.setUnifVec3(vec3.fromValues(prevColor3[0]/255.0, prevColor3[1]/255.0, prevColor3[2]/255.0), 'unifColor3'); + } + if(controls.color4 != prevColor4){ + prevColor4 = controls.color4; + lambert.setUnifVec3(vec3.fromValues(prevColor4[0]/255.0, prevColor4[1]/255.0, prevColor4[2]/255.0), 'unifColor4'); + } + + if(controls.n_octaves != prevN_octaves){ + prevN_octaves = controls.n_octaves; + lambert.setFloat(prevN_octaves, 'unifN_octaves'); + } + if(controls.persistance != prevPersistance){ + prevPersistance = controls.persistance; + lambert.setFloat(prevPersistance * 0.1, 'unifPersistance'); + } + if(controls.lattice_spacing_mod != prevLattice_spacing_mod){ + prevLattice_spacing_mod = controls.lattice_spacing_mod; + lambert.setFloat(prevLattice_spacing_mod * 0.1, 'unifLattice_spacing_mod'); + } + + if(controls.tesselations != prevTesselations) + { + prevTesselations = controls.tesselations; + icosphere = new Icosphere(vec3.fromValues(0, 0, 0), 1, prevTesselations); + icosphere.create(); + } + + time += 0.01; + lambert.setTime(time); + renderer.render(camera, lambert, [ + icosphere, + // square, + // cube + ]); + stats.end(); + + // Tell the browser to call `tick` again whenever it renders a new frame + requestAnimationFrame(tick); + } + + window.addEventListener('resize', function() { + renderer.setSize(window.innerWidth, window.innerHeight); + camera.setAspectRatio(window.innerWidth / window.innerHeight); + camera.updateProjectionMatrix(); + }, false); + + renderer.setSize(window.innerWidth, window.innerHeight); + camera.setAspectRatio(window.innerWidth / window.innerHeight); + camera.updateProjectionMatrix(); + + // Start the render loop + tick(); +} + +main(); diff --git a/src/noise.js b/src/noise.js deleted file mode 100644 index 2ba8699..0000000 --- a/src/noise.js +++ /dev/null @@ -1,18 +0,0 @@ - - -function generateNoise() { - return Math.random() -} - -function whatever() { - console.log('hi'); -} - -export default { - generateNoise: generateNoise, - whatever: whatever -} - -export function other() { - return 2 -} \ No newline at end of file diff --git a/src/rendering/gl/Drawable.ts b/src/rendering/gl/Drawable.ts new file mode 100644 index 0000000..3006b5c --- /dev/null +++ b/src/rendering/gl/Drawable.ts @@ -0,0 +1,67 @@ +import {gl} from '../../globals'; + +abstract class Drawable { + count: number = 0; + + bufIdx: WebGLBuffer; + bufPos: WebGLBuffer; + bufNor: WebGLBuffer; + + idxBound: boolean = false; + posBound: boolean = false; + norBound: boolean = false; + + abstract create() : void; + + destory() { + gl.deleteBuffer(this.bufIdx); + gl.deleteBuffer(this.bufPos); + gl.deleteBuffer(this.bufNor); + } + + generateIdx() { + this.idxBound = true; + this.bufIdx = gl.createBuffer(); + } + + generatePos() { + this.posBound = true; + this.bufPos = gl.createBuffer(); + } + + generateNor() { + this.norBound = true; + this.bufNor = gl.createBuffer(); + } + + bindIdx(): boolean { + if (this.idxBound) { + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.bufIdx); + } + return this.idxBound; + } + + bindPos(): boolean { + if (this.posBound) { + gl.bindBuffer(gl.ARRAY_BUFFER, this.bufPos); + } + return this.posBound; + } + + bindNor(): boolean { + if (this.norBound) { + gl.bindBuffer(gl.ARRAY_BUFFER, this.bufNor); + } + return this.norBound; + } + + elemCount(): number { + return this.count; + } + + drawMode(): GLenum { + return gl.TRIANGLES; + } +}; + +export default Drawable; diff --git a/src/rendering/gl/OpenGLRenderer.ts b/src/rendering/gl/OpenGLRenderer.ts new file mode 100644 index 0000000..3949f6a --- /dev/null +++ b/src/rendering/gl/OpenGLRenderer.ts @@ -0,0 +1,42 @@ +import {mat4, vec4} from 'gl-matrix'; +import Drawable from './Drawable'; +import Camera from '../../Camera'; +import {gl} from '../../globals'; +import ShaderProgram from './ShaderProgram'; + +// In this file, `gl` is accessible because it is imported above +class OpenGLRenderer { + constructor(public canvas: HTMLCanvasElement) { + } + + setClearColor(r: number, g: number, b: number, a: number) { + gl.clearColor(r, g, b, a); + } + + setSize(width: number, height: number) { + this.canvas.width = width; + this.canvas.height = height; + } + + clear() { + gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); + } + + render(camera: Camera, prog: ShaderProgram, drawables: Array) { + let model = mat4.create(); + let viewProj = mat4.create(); + //let color = vec4.fromValues(1, 0, 0, 1); + + mat4.identity(model); + mat4.multiply(viewProj, camera.projectionMatrix, camera.viewMatrix); + prog.setModelMatrix(model); + prog.setViewProjMatrix(viewProj); + //prog.setGeometryColor(color); + + for (let drawable of drawables) { + prog.draw(drawable); + } + } +}; + +export default OpenGLRenderer; diff --git a/src/rendering/gl/ShaderProgram.ts b/src/rendering/gl/ShaderProgram.ts new file mode 100644 index 0000000..9ee37c8 --- /dev/null +++ b/src/rendering/gl/ShaderProgram.ts @@ -0,0 +1,164 @@ +import {vec4, mat4, vec3} from 'gl-matrix'; +import Drawable from './Drawable'; +import {gl} from '../../globals'; + +var activeProgram: WebGLProgram = null; + +export class Shader { + shader: WebGLShader; + + constructor(type: number, source: string) { + this.shader = gl.createShader(type); + gl.shaderSource(this.shader, source); + gl.compileShader(this.shader); + + if (!gl.getShaderParameter(this.shader, gl.COMPILE_STATUS)) { + throw gl.getShaderInfoLog(this.shader); + } + } +}; + +class ShaderProgram { + prog: WebGLProgram; + + attrPos: number; + attrNor: number; + attrCol: number; + + + unifModel: WebGLUniformLocation; + unifModelInvTr: WebGLUniformLocation; + unifViewProj: WebGLUniformLocation; + unifTime: WebGLUniformLocation; + unifColor1: WebGLUniformLocation; + unifColor2: WebGLUniformLocation; + unifColor3: WebGLUniformLocation; + unifColor4: WebGLUniformLocation; + unifN_octaves: WebGLUniformLocation; + unifPersistance: WebGLUniformLocation; + unifLattice_spacing_mod: WebGLUniformLocation; + + + constructor(shaders: Array) { + this.prog = gl.createProgram(); + + for (let shader of shaders) { + gl.attachShader(this.prog, shader.shader); + } + gl.linkProgram(this.prog); + if (!gl.getProgramParameter(this.prog, gl.LINK_STATUS)) { + throw gl.getProgramInfoLog(this.prog); + } + + this.attrPos = gl.getAttribLocation(this.prog, "vs_Pos"); + this.attrNor = gl.getAttribLocation(this.prog, "vs_Nor"); + this.attrCol = gl.getAttribLocation(this.prog, "vs_Col"); + this.unifTime = gl.getUniformLocation(this.prog, "u_time"); + this.unifModel = gl.getUniformLocation(this.prog, "u_Model"); + this.unifModelInvTr = gl.getUniformLocation(this.prog, "u_ModelInvTr"); + this.unifViewProj = gl.getUniformLocation(this.prog, "u_ViewProj"); + this.unifColor1 = gl.getUniformLocation(this.prog, "u_Color1"); + this.unifColor2 = gl.getUniformLocation(this.prog, "u_Color2"); + this.unifColor3 = gl.getUniformLocation(this.prog, "u_Color3"); + this.unifColor4 = gl.getUniformLocation(this.prog, "u_Color4"); + this.unifN_octaves = gl.getUniformLocation(this.prog, "u_N_octaves"); + this.unifPersistance = gl.getUniformLocation(this.prog, "u_Persistance"); + this.unifLattice_spacing_mod = gl.getUniformLocation(this.prog, "u_Lattice_spacing_mod"); + + } + + use() { + if (activeProgram !== this.prog) { + gl.useProgram(this.prog); + activeProgram = this.prog; + } + } + + setModelMatrix(model: mat4) { + this.use(); + if (this.unifModel !== -1) { + gl.uniformMatrix4fv(this.unifModel, false, model); + } + + if (this.unifModelInvTr !== -1) { + let modelinvtr: mat4 = mat4.create(); + mat4.transpose(modelinvtr, model); + mat4.invert(modelinvtr, modelinvtr); + gl.uniformMatrix4fv(this.unifModelInvTr, false, modelinvtr); + } + } + + setViewProjMatrix(vp: mat4) { + this.use(); + if (this.unifViewProj !== -1) { + gl.uniformMatrix4fv(this.unifViewProj, false, vp); + } + } + + // setGeometryColor(color: vec4) { + // this.use(); + // if (this.unifColor !== -1) { + // console.log('unifcolor', this.unifColor, color); + // gl.uniform4fv(this.unifColor, color); + // } + // } + + setUnifVec3(toSet: vec3, key: string) { + this.use(); + const obj = this; + if (key in obj) { + // Now that we've confirmed the attribute exists, it's + // type-safe to recast myObjKey and access it as an attribute + //console.log(); + const ref = obj[key as keyof typeof obj] + //if (ref !== -1) { + //console.log('unifcolor', obj[key], color); + gl.uniform3fv(ref, toSet); + //} + } + } + + setFloat(toSet: number, key: string) { + this.use(); + const obj = this; + if (key in obj) { + // Now that we've confirmed the attribute exists, it's + // type-safe to recast myObjKey and access it as an attribute + //console.log(); + const ref = obj[key as keyof typeof obj] + //if (ref !== -1) { + //console.log('unifcolor', obj[key], color); + gl.uniform1f(ref, toSet); + //} + } + } + + setTime(time: number){ + this.use(); + if (this.unifTime !== -1) { + gl.uniform1f(this.unifTime, time); + } + } + + draw(d: Drawable) { + this.use(); + + if (this.attrPos != -1 && d.bindPos()) { + gl.enableVertexAttribArray(this.attrPos); + gl.vertexAttribPointer(this.attrPos, 4, gl.FLOAT, false, 0, 0); + } + + if (this.attrNor != -1 && d.bindNor()) { + gl.enableVertexAttribArray(this.attrNor); + gl.vertexAttribPointer(this.attrNor, 4, gl.FLOAT, false, 0, 0); + } + + d.bindIdx(); + gl.drawElements(d.drawMode(), d.elemCount(), gl.UNSIGNED_INT, 0); + + if (this.attrPos != -1) gl.disableVertexAttribArray(this.attrPos); + if (this.attrNor != -1) gl.disableVertexAttribArray(this.attrNor); + } +}; + +export default ShaderProgram; diff --git a/src/shaders/adam-frag.glsl b/src/shaders/adam-frag.glsl index 5dfa18c..332b61b 100644 --- a/src/shaders/adam-frag.glsl +++ b/src/shaders/adam-frag.glsl @@ -3,6 +3,82 @@ varying float noise; uniform sampler2D image; +// so called "canonical" pseudoranom +float random_1(vec2 co){ + return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453); +} + +float random1d_1(float x){ + return random_1(vec2(x, 1.337)); +} + +float random3d_1(vec3 inp){ + return random1d_1(random1d_1(random1d_1(inp.x) * inp.y) * inp.z); +} + + +float lerp(float a, float b, float x) { + return a + x * (b - a); +} + +//float lerp(float a, float b, float x){ +// return a*(1-x) + b*x; +//} + +// test of twenty four and thirty six miles per hour. +// + +float bilinear_interp(float a, float b, float c, float d, float x, float y){ + + float left = lerp(a, b, x); + float right = lerp(c, d, x); + return lerp(left, right, y); +} + +float trilinear_interp(float a, float b, float c, float d, float e, float f, float g, float h, float x, float y, float z){ + float bottom = bilinear_interp(a, b, c, d, x, y); + float top = bilinear_interp(e, f, g, h, x, y); + return lerp(bottom, top, z); +} + +float trilinear_interp2(float a, float b, float c, float d, float e, float f, float g, float h, float x, float y, float z){ + // adapted from https://en.wikipedia.org/wiki/Trilinear_interpolation + + float xd = (x - floor(x)); + float yd = (y - floor(y)); + float zd = (z - floor(z)); + + float c00 = a * (1.0 - xd) + d * xd; + float c01 = b * (1.0 - xd) + c * xd; + float c10 = e * (1.0 - xd) + h * xd; + float c11 = f * (1.0 - xd) + g * xd; + + float c0 = c00 * (1.0 - yd) + c10 * yd; + float c1 = c01 * (1.0 - yd) + c11 * yd; + + float cf = c0 * (1.0 - zd) + c1 * zd; + + return cf; +} + +// trilinear + +float interp_noise(float x, float y, float z){ + // interpolating the surrounding lattice values (for 3D, this means the surrounding eight 'corner' points) + + // start by assigning lattice as whole numbers to start + float a = random3d_1(vec3(floor(x), floor(y), floor(z))); + float b = random3d_1(vec3(floor(x), floor(y+1.0), floor(z))); + float c = random3d_1(vec3(floor(x+1.0), floor(y+1.0), floor(z))); + float d = random3d_1(vec3(floor(x+1.0), floor(y), floor(z))); + float e = random3d_1(vec3(floor(x), floor(y), floor(z+1.0))); + float f = random3d_1(vec3(floor(x), floor(y+1.0), floor(z+1.0))); + float g = random3d_1(vec3(floor(x+1.0), floor(y+1.0), floor(z+1.0))); + float h = random3d_1(vec3(floor(x+1.0), floor(y), floor(z+1.0))); + + return trilinear_interp2(a, b, c, d, e, f, g, h, x, y, z); +} + void main() { vec2 uv = vec2(1,1) - vUv; diff --git a/src/shaders/lambert-frag.glsl b/src/shaders/lambert-frag.glsl new file mode 100644 index 0000000..c6b5894 --- /dev/null +++ b/src/shaders/lambert-frag.glsl @@ -0,0 +1,214 @@ +#version 300 es + +// This is a fragment shader. If you've opened this file first, please +// open and read lambert.vert.glsl before reading on. +// Unlike the vertex shader, the fragment shader actually does compute +// the shading of geometry. For every pixel in your program's output +// screen, the fragment shader is run for every bit of geometry that +// particular pixel overlaps. By implicitly interpolating the position +// data passed into the fragment shader by the vertex shader, the fragment shader +// can compute what color to apply to its pixel based on things like vertex +// position, light position, and vertex color. +precision highp float; + +uniform vec3 u_Color1; +uniform vec3 u_Color2; +uniform vec3 u_Color3; +uniform vec3 u_Color4; + +uniform float u_time; + +// These are the interpolated values out of the rasterizer, so you can't know +// their specific values without knowing the vertices that contributed to them +in vec4 fs_Nor; +in vec4 fs_LightVec; +in vec4 fs_Col; +in vec4 fs_Pos; +in float noise_res; + +out vec4 out_Col; // This is the final output color that you will see on your + // screen for the pixel that is currently being processed. + +int repeat = 1; + +// so called "canonical" pseudoranom +float random(vec2 co){ + return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453); +} + +float random1d(float x){ + return random(vec2(x, 1.337)); +} + +float random3d(vec3 inp){ + return random1d(random1d(random1d(inp.x) * inp.y) * inp.z); +} + +int inc(int num){ + num++; + return num; +} + +float grad(int hash, float x, float y, float z) +{ + switch(hash & 0xF) + { + case 0x0: return x + y; + case 0x1: return -x + y; + case 0x2: return x - y; + case 0x3: return -x - y; + case 0x4: return x + z; + case 0x5: return -x + z; + case 0x6: return x - z; + case 0x7: return -x - z; + case 0x8: return y + z; + case 0x9: return -y + z; + case 0xA: return y - z; + case 0xB: return -y - z; + case 0xC: return y + x; + case 0xD: return -y + z; + case 0xE: return y - x; + case 0xF: return -y - z; + default: return 0.0; + } +} + +float fade(float t) { + + return t * t * t * (t * (t * 6.0 - 15.0) + 10.0); +} + +int p[512] = int[512](151,160,137,91,90,15, +131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23, +190, 6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33, +88,237,149,56,87,174,20,125,136,171,168, 68,175,74,165,71,134,139,48,27,166, +77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,55,46,245,40,244, +102,143,54, 65,25,63,161, 1,216,80,73,209,76,132,187,208, 89,18,169,200,196, +135,130,116,188,159,86,164,100,109,198,173,186, 3,64,52,217,226,250,124,123, +5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42, +223,183,170,213,119,248,152, 2,44,154,163, 70,221,153,101,155,167, 43,172,9, +129,22,39,253, 19,98,108,110,79,113,224,232,178,185, 112,104,218,246,97,228, +251,34,242,193,238,210,144,12,191,179,162,241, 81,51,145,235,249,14,239,107, +49,192,214, 31,181,199,106,157,184, 84,204,176,115,121,50,45,127, 4,150,254, +138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180,151,160,137,91,90,15, +131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23, +190, 6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33, +88,237,149,56,87,174,20,125,136,171,168, 68,175,74,165,71,134,139,48,27,166, +77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,55,46,245,40,244, +102,143,54, 65,25,63,161, 1,216,80,73,209,76,132,187,208, 89,18,169,200,196, +135,130,116,188,159,86,164,100,109,198,173,186, 3,64,52,217,226,250,124,123, +5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42, +223,183,170,213,119,248,152, 2,44,154,163, 70,221,153,101,155,167, 43,172,9, +129,22,39,253, 19,98,108,110,79,113,224,232,178,185, 112,104,218,246,97,228, +251,34,242,193,238,210,144,12,191,179,162,241, 81,51,145,235,249,14,239,107, +49,192,214, 31,181,199,106,157,184, 84,204,176,115,121,50,45,127, 4,150,254, +138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180); + + +// Linear Interpolate +float lerp(float a, float b, float x) { + return a + x * (b - a); +} + +float perlin(float x, float y, float z) { +// if(repeat > 0) { +// x = x%repeat; +// y = y%repeat; +// z = z%repeat; +// } + + + int xi = int(x) & 255; + int yi = int(y) & 255; + int zi = int(z) & 255; + float xf = x-floor(x); + float yf = y-floor(y); + float zf = z-floor(z); + float u = fade(xf); + float v = fade(yf); + float w = fade(zf); + + int aaa, aba, aab, abb, baa, bba, bab, bbb; + aaa = p[p[p[ xi ]+ yi ]+ zi ]; + aba = p[p[p[ xi ]+inc(yi)]+ zi ]; + aab = p[p[p[ xi ]+ yi ]+inc(zi)]; + abb = p[p[p[ xi ]+inc(yi)]+inc(zi)]; + baa = p[p[p[inc(xi)]+ yi ]+ zi ]; + bba = p[p[p[inc(xi)]+inc(yi)]+ zi ]; + bab = p[p[p[inc(xi)]+ yi ]+inc(zi)]; + bbb = p[p[p[inc(xi)]+inc(yi)]+inc(zi)]; + + float x1, x2, y1, y2; + x1 = lerp( grad (aaa, xf , yf , zf), // The gradient function calculates the dot product between a pseudorandom + grad (baa, xf-1.0, yf , zf), // gradient vector and the vector from the input coordinate to the 8 + u); // surrounding points in its unit cube. + x2 = lerp( grad (aba, xf , yf-1.0, zf), // This is all then lerped together as a sort of weighted average based on the faded (u,v,w) + grad (bba, xf-1.0, yf-1.0, zf), // values we made earlier. + u); + y1 = lerp(x1, x2, v); + + x1 = lerp( grad (aab, xf , yf , zf-1.0), + grad (bab, xf-1.0, yf , zf-1.0), + u); + x2 = lerp( grad (abb, xf , yf-1.0, zf-1.0), + grad (bbb, xf-1.0, yf-1.0, zf-1.0), + u); + y2 = lerp (x1, x2, v); + + return (lerp (y1, y2, w)+1.0)/2.0; // For convenience we bind the result to 0 - 1 (theoretical min/max before is [-1, 1]) +} + + + + +vec3 color_multistop(float x){ + vec3 color = mix(u_Color1, u_Color2, smoothstep(0.0, 0.7, x)); + color = mix(color, u_Color3, smoothstep(0.7, 0.8, x)); + color = mix(color, u_Color4, smoothstep(0.8, 0.9, x)); + color = mix(color, u_Color1, smoothstep(0.9, 1.0, x)); + return color; +} + +void main() +{ + + // Material base color (before shading) + vec4 diffuseColor = vec4(u_Color1, 1.0); + + // Calculate the diffuse term for Lambert shading + float diffuseTerm = dot(normalize(fs_Nor), normalize(fs_LightVec)); + // Avoid negative lighting values + diffuseTerm = clamp(diffuseTerm, 0.0, 1.0); + + float ambientTerm = 0.2; + + float lightIntensity = diffuseTerm + ambientTerm; //Add a small float value to the color multiplier + //to simulate ambient lighting. This ensures that faces that are not + //lit by our point light are not completely black. + + + + // Compute final shaded color + out_Col = vec4(diffuseColor.rgb * lightIntensity, diffuseColor.a); + + //fs_Pos = fs_Pos; + vec4 fs_Pos2 = fs_Pos * 20.0; // zoom factor + + //float i = floor(sc_v.x); + //float f = fract(sc_v.x); + + //float rnd = random3d(vec3(fs_Pos.x, fs_Pos.y, fs_Pos.z)); + float rnd = perlin(fs_Pos2.x + u_time, fs_Pos2.y + u_time, fs_Pos2.z + u_time); + //out_Col = vec4(vec3(rnd),1.0); + + vec3 color = color_multistop(noise_res); + //vec3 color = vec3(out_Col.x * rnd, out_Col.y * rnd, out_Col.z * rnd); + color = vec3(color.x * rnd, color.y, color.z); + + + //float part = mix(random(vec2(i)), random(vec2(i) + 1.0), f); + //float part = rnd; + out_Col = vec4(color.x, color.y, color.z, 1.0); + + +} diff --git a/src/shaders/lambert-vert.glsl b/src/shaders/lambert-vert.glsl new file mode 100644 index 0000000..aae2f2f --- /dev/null +++ b/src/shaders/lambert-vert.glsl @@ -0,0 +1,183 @@ +#version 300 es + +//This is a vertex shader. While it is called a "shader" due to outdated conventions, this file +//is used to apply matrix transformations to the arrays of vertex data passed to it. +//Since this code is run on your GPU, each vertex is transformed simultaneously. +//If it were run on your CPU, each vertex would have to be processed in a FOR loop, one at a time. +//This simultaneous transformation allows your program to run much faster, especially when rendering +//geometry with millions of vertices. + +uniform mat4 u_Model; // The matrix that defines the transformation of the + // object we're rendering. In this assignment, + // this will be the result of traversing your scene graph. + +uniform mat4 u_ModelInvTr; // The inverse transpose of the model matrix. + // This allows us to transform the object's normals properly + // if the object has been non-uniformly scaled. + +uniform mat4 u_ViewProj; // The matrix that defines the camera's transformation. + // We've written a static matrix for you to use for HW2, + // but in HW3 you'll have to generate one yourself + +uniform float u_time; +uniform float u_N_octaves; +uniform float u_Persistance; +uniform float u_Lattice_spacing_mod; + +in vec4 vs_Pos; // The array of vertex positions passed to the shader + +in vec4 vs_Nor; // The array of vertex normals passed to the shader + +in vec4 vs_Col; // The array of vertex colors passed to the shader. + +out vec4 fs_Nor; // The array of normals that has been transformed by u_ModelInvTr. This is implicitly passed to the fragment shader. +out vec4 fs_LightVec; // The direction in which our virtual light lies, relative to each vertex. This is implicitly passed to the fragment shader. +out vec4 fs_Col; // The color of each vertex. This is implicitly passed to the fragment shader. +out vec4 fs_Pos; +out float noise_res; + +const vec4 lightPos = vec4(5, 5, 3, 1); //The position of our virtual light, which is used to compute the shading of + //the geometry in the fragment shader. + + + +// so called "canonical" pseudoranom +float random_1(vec2 co){ + return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453); +} + +float random1d_1(float x){ + return random_1(vec2(x, 1.337)); +} + +float random3d_1(vec3 inp){ + return random1d_1(random1d_1(random1d_1(inp.x) * inp.y) * inp.z); +} + + +float lerp(float a, float b, float x) { + return a + x * (b - a); +} + +float lerp2(float a, float b, float x){ + return a*(1.0-x) + b*x; +} + + +float bilinear_interp(float a, float b, float c, float d, float x, float y){ + + float left = lerp(a, b, x); + float right = lerp(c, d, x); + return lerp(left, right, y); +} + +float trilinear_interp(float a, float b, float c, float d, float e, float f, float g, float h, float x, float y, float z){ + float bottom = bilinear_interp(a, b, c, d, x, y); + float top = bilinear_interp(e, f, g, h, x, y); + return lerp(bottom, top, z); +} + +float cos_interp1(float a, float b, float x){ + float cos_t = (1.0 - cos(x*3.41459)) * 0.5; + return lerp(a, b, cos_t); +} + +float trilinear_interp2(float a, float b, float c, float d, float e, float f, float g, float h, float x, float y, float z){ + // adapted from https://en.wikipedia.org/wiki/Trilinear_interpolation + + float xd = (x - floor(x)); + float yd = (y - floor(y)); + float zd = (z - floor(z)); + + float c00 = cos_interp1(a, d, xd); + float c01 = cos_interp1(b, c, xd); + float c10 = cos_interp1(e, h, xd); + float c11 = cos_interp1(f, g, xd); + + float c0 = cos_interp1(c00, c10, yd); + float c1 = cos_interp1(c01, c11, yd); + + float cf = cos_interp1(c0, c1, zd); + + return cf; +} + + + +// trilinear +// const float lattice_spacing = 0.1; + +// lattice point before +float l_b(float d, float ls){ + return floor(d / ls) * ls; +} + +// lattice point after +float l_a(float d, float ls){ + return ceil(d / ls) * ls; +} + +float interp_noise(float x, float y, float z, float ls){ + // interpolating the surrounding lattice values (for 3D, this means the surrounding eight 'corner' points) + + // start by assigning lattice as whole numbers to start + float a = random3d_1(vec3(l_b(x, ls), l_b(y, ls), l_b(z, ls))); + float b = random3d_1(vec3(l_b(x, ls), l_a(y, ls), l_b(z, ls))); + float c = random3d_1(vec3(l_a(x, ls), l_a(y, ls), l_b(z, ls))); + float d = random3d_1(vec3(l_a(x, ls), l_a(y, ls), l_b(z, ls))); + float e = random3d_1(vec3(l_b(x, ls), l_b(y, ls), l_a(z, ls))); + float f = random3d_1(vec3(l_b(x, ls), l_a(y, ls), l_a(z, ls))); + float g = random3d_1(vec3(l_a(x, ls), l_a(y, ls), l_a(z, ls))); + float h = random3d_1(vec3(l_a(x, ls), l_b(y, ls), l_a(z, ls))); + + return trilinear_interp2(a, b, c, d, e, f, g, h, x, y, z); +} + +//const float N_OCTAVES = 7.0; +//const float PERSISTANCE = 1.0 / 2.0; +//const float lattice_spacing_mod = 0.9; + +float fbm3d(float x, float y, float z){ + float total = 0.0; + for (float i = 0.0; i < u_N_octaves; ++i){ + float frequency = pow(2.0, i); + //float power = pow(2.0, i); + float amplitude = pow(u_Persistance, i); + + total += amplitude * interp_noise(x, y, z, (1.0/(frequency * 1000.0)) * u_Lattice_spacing_mod); + } + return total / 1.0; +} + +void main() +{ + fs_Col = vs_Col; // Pass the vertex colors to the fragment shader for interpolation + fs_Pos = vs_Pos; + noise_res = fbm3d(vs_Pos.x, vs_Pos.y + (u_time * 0.002), vs_Pos.z); + + mat3 invTranspose = mat3(u_ModelInvTr); + fs_Nor = vec4(invTranspose * vec3(vs_Nor), 0); // Pass the vertex normals to the fragment shader for interpolation. + // Transform the geometry's normals by the inverse transpose of the + // model matrix. This is necessary to ensure the normals remain + // perpendicular to the surface after the surface is transformed by + // the model matrix. + + + vec4 modelposition = u_Model * vs_Pos; // Temporarily store the transformed vertex positions for use below + +// if(modelposition.x > 0.5){ +// modelposition = vec4(modelposition.x, sin(u_time) * modelposition.y, modelposition.z, modelposition.w); +// }else{ +// if(modelposition.z > 0.5){ +// modelposition = vec4(modelposition.x, modelposition.y, modelposition.z, cos(u_time) * modelposition.w); +// }else{ +// modelposition = vec4(modelposition.x, modelposition.y, tan(u_time / 4.0) * modelposition.z, modelposition.w); +// } +// } + modelposition = (modelposition* 1.0) + (vs_Nor * 1.0 * noise_res); // cos(u_time) + + fs_LightVec = lightPos - modelposition; // Compute the direction in which the light source lies + + gl_Position = u_ViewProj * modelposition;// gl_Position is a built-in variable of OpenGL which is + // used to render the final positions of the geometry's vertices +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..79efea7 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "outDir": "./dist", + "sourceMap": true, + "noImplicitAny": true, + "module": "es6", + "target": "es6", + "allowJs": true, + "moduleResolution": "node" + } +} diff --git a/webpack.config.js b/webpack.config.js index 57dce48..2cce33b 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,28 +1,37 @@ const path = require('path'); module.exports = { - entry: path.join(__dirname, "src/main"), + mode: process.env.NODE_ENV === 'production' ? 'production' : 'development', + entry: path.resolve(__dirname, "src/main"), output: { - filename: "./bundle.js" + path: path.resolve(__dirname, "dist"), + filename: "bundle.js", + publicPath: '/', }, module: { - loaders: [ + rules: [ { - test: /\.js$/, - exclude: /(node_modules|bower_components)/, - loader: 'babel', - query: { - presets: ['es2015'] - } + test: /\.ts$/, + use: 'ts-loader', + exclude: /node_modules/ }, { test: /\.glsl$/, - loader: "webpack-glsl" + loader: 'webpack-glsl-loader' }, ] }, + resolve: { + extensions: ['.ts', '.js' ], + }, devtool: 'source-map', devServer: { - port: 7000 - } -} \ No newline at end of file + port: 5660, + static: { + directory: path.join(__dirname, 'dist'), + }, + client: { + overlay: true, + } + }, +}; From 197afa1e4be9f740d96a76b0fe0e34e2e41256c8 Mon Sep 17 00:00:00 2001 From: pjewell Date: Wed, 21 Sep 2022 21:26:54 -0400 Subject: [PATCH 2/4] -updated readme --- README.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d4ef264..fc066ec 100644 --- a/README.md +++ b/README.md @@ -115,4 +115,13 @@ Using dat.GUI and the examples provided in the reference code, make some aspect - Create a [pull request](https://help.github.com/articles/creating-a-pull-request/) to this repository, and in the comment, include a link to your published project. -- Submit the link to your pull request on Canvas. \ No newline at end of file +- Submit the link to your pull request on Canvas. + +## Submission Content + +- (may be updated further) + +- Implemented some FBM noise generation as described above with adjustable spacing of lattice points, octaves, and persistance. +- Cosine interpolation +- applied the FBM results directly added to the normals of the sphere in the vertex deformation +- Added multi-stop linear color interp to space out certain bands of color \ No newline at end of file From d96eab92b24931756f8c21e34b6d15cf298fc429 Mon Sep 17 00:00:00 2001 From: pjewell Date: Wed, 21 Sep 2022 21:35:04 -0400 Subject: [PATCH 3/4] -added old github generator for pages --- .github/workflows/build-and-deploy.yml | 37 ++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 .github/workflows/build-and-deploy.yml diff --git a/.github/workflows/build-and-deploy.yml b/.github/workflows/build-and-deploy.yml new file mode 100644 index 0000000..016ee56 --- /dev/null +++ b/.github/workflows/build-and-deploy.yml @@ -0,0 +1,37 @@ +name: Build and Deploy +on: + push: + branches: + - master +jobs: + build-and-deploy: + runs-on: ubuntu-latest + steps: + - name: Checkout 🛎️ + uses: actions/checkout@v2.3.1 + with: + persist-credentials: false + + - uses: actions/setup-node@v2-beta + with: + node-version: "15.x" + + - uses: actions/cache@v2 + with: + # npm cache files are stored in `~/.npm` on Linux/macOS + path: ~/.npm + key: ${{ runner.os }}-build-${{ hashFiles('**/package-lock.json') }} + + - name: Install and Build 🔧 + run: | + npm ci + export NODE_ENV=production + npm run-script build + touch dist/.nojekyll + - name: Deploy 🚀 + uses: JamesIves/github-pages-deploy-action@3.6.2 + with: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + BRANCH: gh-pages + FOLDER: dist + CLEAN: true From 685f17d6c01c9199760297edc49fb3f0214b9077 Mon Sep 17 00:00:00 2001 From: pjewell Date: Wed, 21 Sep 2022 21:37:34 -0400 Subject: [PATCH 4/4] -added more previous project files --- dist/index.html | 20 + package-lock.json | 3120 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 3140 insertions(+) create mode 100644 dist/index.html create mode 100644 package-lock.json diff --git a/dist/index.html b/dist/index.html new file mode 100644 index 0000000..062fed2 --- /dev/null +++ b/dist/index.html @@ -0,0 +1,20 @@ + + + + Project 0: Getting Started | CIS 566 + + + + + + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..e1a47a3 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,3120 @@ +{ + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "3d-view": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/3d-view/-/3d-view-2.0.1.tgz", + "integrity": "sha512-YSLRHXNpSziaaiK2R0pI5+JKguoJVbtWmIv9YyBFtl0+q42kQwJB/JUulbFR/1zYFm58ifjKQ6kVdgZ6tyKtCA==", + "requires": { + "matrix-camera-controller": "^2.1.1", + "orbit-camera-controller": "^4.0.0", + "turntable-camera-controller": "^3.0.0" + } + }, + "3d-view-controls": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/3d-view-controls/-/3d-view-controls-2.2.2.tgz", + "integrity": "sha512-WL0u3PN41lEx/4qvKqV6bJlweUYoW18FXMshW/qHb41AVdZxDReLoJNGYsI7x6jf9bYelEF62BJPQmO7yEnG2w==", + "requires": { + "3d-view": "^2.0.0", + "has-passive-events": "^1.0.0", + "mouse-change": "^1.1.1", + "mouse-event-offset": "^3.0.2", + "mouse-wheel": "^1.0.2", + "right-now": "^1.0.0" + } + }, + "@discoveryjs/json-ext": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.3.tgz", + "integrity": "sha512-Fxt+AfXgjMoin2maPIYzFZnQjAXjAL0PHscM5pRTtatFqB+vZxAM9tLp2Optnuw3QOQC40jTNeGYFOMvyf7v9g==", + "dev": true + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@types/dat.gui": { + "version": "0.7.7", + "resolved": "https://registry.npmjs.org/@types/dat.gui/-/dat.gui-0.7.7.tgz", + "integrity": "sha512-CxLCme0He5Jk3uQwfO/fGZMyNhb/ypANzqX0yU9lviBQMlen5SOvQTBQ/Cd9x5mFlUAK5Tk8RgvTyLj1nYkz+w==", + "dev": true + }, + "@types/eslint": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.0.tgz", + "integrity": "sha512-07XlgzX0YJUn4iG1ocY4IX9DzKSmMGUs6ESKlxWhZRaa0fatIWaHWUVapcuGa8r5HFnTqzj+4OCjd5f7EZ/i/A==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==", + "dev": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", + "dev": true + }, + "@types/http-proxy": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.7.tgz", + "integrity": "sha512-9hdj6iXH64tHSLTY+Vt2eYOGzSogC+JQ2H7bdPWkuh7KXP5qLllWx++t+K9Wk556c3dkDdPws/SpMRi0sdCT1w==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true + }, + "@types/node": { + "version": "9.6.61", + "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.61.tgz", + "integrity": "sha512-/aKAdg5c8n468cYLy2eQrcR5k6chlbNwZNGUj3TboyPa2hcO2QAJcfymlqPzMiRj8B6nYKXjzQz36minFE0RwQ==", + "dev": true + }, + "@types/retry": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", + "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", + "dev": true + }, + "@types/webgl2": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@types/webgl2/-/webgl2-0.0.6.tgz", + "integrity": "sha512-50GQhDVTq/herLMiqSQkdtRu+d5q/cWHn4VvKJtrj4DJAjo1MNkWYa2MA41BaBO1q1HgsUjuQvEOk0QHvlnAaQ==", + "dev": true + }, + "@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "requires": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webpack-cli/configtest": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.0.4.tgz", + "integrity": "sha512-cs3XLy+UcxiP6bj0A6u7MLLuwdXJ1c3Dtc0RkKg+wiI1g/Ti1om8+/2hc2A2B60NbBNAbMgyBMHvyymWm/j4wQ==", + "dev": true + }, + "@webpack-cli/info": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.3.0.tgz", + "integrity": "sha512-ASiVB3t9LOKHs5DyVUcxpraBXDOKubYu/ihHhU+t1UPpxsivg6Od2E2qU4gJCekfEddzRBzHhzA/Acyw/mlK/w==", + "dev": true, + "requires": { + "envinfo": "^7.7.3" + } + }, + "@webpack-cli/serve": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.5.2.tgz", + "integrity": "sha512-vgJ5OLWadI8aKjDlOH3rb+dYyPd2GTZuQC/Tihjct6F9GpXGZINo3Y/IVuZVTM1eDQB+/AOsjPUWH/WySDaXvw==", + "dev": true + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", + "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", + "dev": true + }, + "acorn-import-assertions": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.7.6.tgz", + "integrity": "sha512-FlVvVFA1TX6l3lp8VjDnYYq7R1nyW6x3svAt4nDgrWQ9SBaSh9CnbwgSUTasgfNfOG5HlM1ehugCvM+hjo56LA==", + "dev": true + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true + }, + "ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true + }, + "ansi-regex": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.0.tgz", + "integrity": "sha512-tAaOSrWCHF+1Ear1Z4wnJCXA9GGox4K6Ic85a5qalES2aeEwQGr7UC93mwef49536PkCYjzkp0zIxfFvexJ6zQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "binary-search-bounds": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/binary-search-bounds/-/binary-search-bounds-2.0.5.tgz", + "integrity": "sha512-H0ea4Fd3lS1+sTEB2TgcLoK21lLhwEJzlQv3IN47pJS976Gx4zoWe0ak3q+uYh60ppQxg9F16Ri4tS1sfD4+jA==" + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserslist": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.0.tgz", + "integrity": "sha512-g2BJ2a0nEYvEFQC208q8mVAhfNwpZ5Mu8BwgtCdZKO3qx98HChmeg448fPdUzld8aFmfLgVh7yymqV+q1lJZ5g==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001254", + "colorette": "^1.3.0", + "electron-to-chromium": "^1.3.830", + "escalade": "^3.1.1", + "node-releases": "^1.1.75" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "caniuse-lite": { + "version": "1.0.30001255", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001255.tgz", + "integrity": "sha512-F+A3N9jTZL882f/fg/WWVnKSu6IOo3ueLz4zwaOPbPYHNmM/ZaDUyzyJwS1mZhX7Ex5jqTyW599Gdelh5PDYLQ==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chokidar": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "colorette": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", + "dev": true + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "cubic-hermite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cubic-hermite/-/cubic-hermite-1.0.0.tgz", + "integrity": "sha1-hOOy8nKzFFToOTuZu2rtRRaMFOU=" + }, + "dat.gui": { + "version": "0.7.7", + "resolved": "https://registry.npmjs.org/dat.gui/-/dat.gui-0.7.7.tgz", + "integrity": "sha512-sRl/28gF/XRC5ywC9I4zriATTsQcpSsRG7seXCPnTkK8/EQMIbCu5NPMpICLGxX9ZEUvcXR3ArLYCtgreFoMDw==" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "requires": { + "execa": "^5.0.0" + } + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "del": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", + "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", + "dev": true, + "requires": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.832", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.832.tgz", + "integrity": "sha512-x7lO8tGoW0CyV53qON4Lb5Rok9ipDelNdBIAiYUZ03dqy4u9vohMM1qV047+s/hiyJiqUWX/3PNwkX3kexX5ig==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "enhanced-resolve": { + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.2.tgz", + "integrity": "sha512-F27oB3WuHDzvR2DOGNTaYy0D5o0cnrv8TeI482VM4kYgQd/FT9lUQwuNsJ0oOHtBUq7eiW5ytqzp7nBFknL+GA==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true + }, + "es-module-lexer": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.7.1.tgz", + "integrity": "sha512-MgtWFl5No+4S3TmhDmCz2ObFGm6lEpTnzbQi+Dd+pw4mlTIZTmM2iAs5gRlmx5zS9luzobCSBSI90JM/1/JgOw==", + "dev": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dev": true, + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, + "fastq": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.12.0.tgz", + "integrity": "sha512-VNX0QkHK3RsXVKr9KrlUv/FoTa0NdbYoHHl7uXHv2rzyHSlxjdNAKug2twd9luJxpcyNeAgf5iPPMutJO67Dfg==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "filtered-vector": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/filtered-vector/-/filtered-vector-1.2.5.tgz", + "integrity": "sha512-5Vu6wdtQJ1O2nRmz39dIr9m3hEDq1skYby5k1cJQdNWK4dMgvYcUEiA/9j7NcKfNZ5LGxn8w2LSLiigyH7pTAw==", + "requires": { + "binary-search-bounds": "^2.0.0", + "cubic-hermite": "^1.0.0" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "follow-redirects": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.3.tgz", + "integrity": "sha512-3MkHxknWMUtb23apkgz/83fDoe+y+qr0TdgacGIA7bew+QLBo3vdgEN2xEsuXNivpFy4CyDhBBZnNZOtalmenw==", + "dev": true + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "fs": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.2.tgz", + "integrity": "sha1-4fJE7zkzwbKmS9R5kTYGDQ9ZFPg=", + "dev": true + }, + "fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "gl-mat3": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gl-mat3/-/gl-mat3-1.0.0.tgz", + "integrity": "sha1-iWMyGcpCk3mha5GF2V1BcTRTuRI=" + }, + "gl-mat4": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gl-mat4/-/gl-mat4-1.2.0.tgz", + "integrity": "sha512-sT5C0pwB1/e9G9AvAoLsoaJtbMGjfd/jfxo8jMCKqYYEnjZuFvqV5rehqar0538EmssjdDeiEWnKyBSTw7quoA==" + }, + "gl-matrix": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.3.0.tgz", + "integrity": "sha512-COb7LDz+SXaHtl/h4LeaFcNdJdAQSDeVqjiIihSXNrkWObZLhDI4hIkZC11Aeqp7bcE72clzB0BnDXr2SmslRA==" + }, + "gl-quat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gl-quat/-/gl-quat-1.0.0.tgz", + "integrity": "sha1-CUXskjOG9FMpvl3DV7HIwtR1hsU=", + "requires": { + "gl-mat3": "^1.0.0", + "gl-vec3": "^1.0.3", + "gl-vec4": "^1.0.0" + } + }, + "gl-vec3": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gl-vec3/-/gl-vec3-1.1.3.tgz", + "integrity": "sha512-jduKUqT0SGH02l8Yl+mV1yVsDfYgQAJyXGxkJQGyxPLHRiW25DwVIRPt6uvhrEMHftJfqhqKthRcyZqNEl9Xdw==" + }, + "gl-vec4": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gl-vec4/-/gl-vec4-1.0.1.tgz", + "integrity": "sha1-l9loeCgbFLUyy84QF4Xf0cs0CWQ=" + }, + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "globby": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "dev": true + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-passive-events": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-passive-events/-/has-passive-events-1.0.0.tgz", + "integrity": "sha512-2vSj6IeIsgvsRMyeQ0JaCX5Q3lX4zMn5HpoVc7MEhQ6pv8Iq9rsXjsp+E5ZwaT7T0xhMT0KmU8gtt1EFVdbJiw==", + "requires": { + "is-browser": "^2.0.1" + } + }, + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "html-entities": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", + "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==", + "dev": true + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "http-parser-js": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", + "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==", + "dev": true + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.1.tgz", + "integrity": "sha512-cfaXRVoZxSed/BmkA7SwBVNI9Kj7HFltaE5rqYOub5kWzWZ+gofV2koVN1j2rMW7pEfSSlCHGJ31xmuyFyfLOg==", + "dev": true, + "requires": { + "@types/http-proxy": "^1.17.5", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + }, + "import-local": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", + "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "internal-ip": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-6.2.0.tgz", + "integrity": "sha512-D8WGsR6yDt8uq7vDMu7mjcR+yRMm3dW8yufyChmszWRjcSHuxLBkR3GdS2HZAjodsaGuCvXeEJpueisXJULghg==", + "dev": true, + "requires": { + "default-gateway": "^6.0.0", + "ipaddr.js": "^1.9.1", + "is-ip": "^3.1.0", + "p-event": "^4.2.0" + }, + "dependencies": { + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + } + } + }, + "interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ip-regex": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", + "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", + "dev": true + }, + "ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "dev": true + }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-browser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-browser/-/is-browser-2.1.0.tgz", + "integrity": "sha512-F5rTJxDQ2sW81fcfOR1GnCXT6sVJC104fCyfj+mjpwNEwaPYSn5fte5jiHmBg3DHsIoL/l8Kvw5VN5SsTRcRFQ==" + }, + "is-core-module": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz", + "integrity": "sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-ip": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz", + "integrity": "sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==", + "dev": true, + "requires": { + "ip-regex": "^4.0.0" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, + "is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "jest-worker": { + "version": "27.1.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.1.1.tgz", + "integrity": "sha512-XJKCL7tu+362IUYTWvw8+3S75U7qMiYiRU6u5yqscB48bTvzwN6i8L/7wVTXiFLwkRsxARNM7TISnTvcgv9hxA==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "loader-runner": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "mat4-decompose": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mat4-decompose/-/mat4-decompose-1.0.4.tgz", + "integrity": "sha1-ZetP451wh496RE60Yk1S9+frL68=", + "requires": { + "gl-mat4": "^1.0.1", + "gl-vec3": "^1.0.2" + } + }, + "mat4-interpolate": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mat4-interpolate/-/mat4-interpolate-1.0.4.tgz", + "integrity": "sha1-Vf/p6zw1KV4sDVqfdyXZBoqJ/3Q=", + "requires": { + "gl-mat4": "^1.0.1", + "gl-vec3": "^1.0.2", + "mat4-decompose": "^1.0.3", + "mat4-recompose": "^1.0.3", + "quat-slerp": "^1.0.0" + } + }, + "mat4-recompose": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mat4-recompose/-/mat4-recompose-1.0.4.tgz", + "integrity": "sha1-OVPCMP8kc9x3LuAUpSySXPgbDk0=", + "requires": { + "gl-mat4": "^1.0.1" + } + }, + "matrix-camera-controller": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/matrix-camera-controller/-/matrix-camera-controller-2.1.4.tgz", + "integrity": "sha512-zsPGPONclrKSImNpqqKDTcqFpWLAIwMXEJtCde4IFPOw1dA9udzFg4HOFytOTosOFanchrx7+Hqq6glLATIxBA==", + "requires": { + "binary-search-bounds": "^2.0.0", + "gl-mat4": "^1.1.2", + "gl-vec3": "^1.0.3", + "mat4-interpolate": "^1.0.3" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "mem": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/mem/-/mem-8.1.1.tgz", + "integrity": "sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.3", + "mimic-fn": "^3.1.0" + }, + "dependencies": { + "mimic-fn": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", + "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", + "dev": true + } + } + }, + "memfs": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.2.4.tgz", + "integrity": "sha512-2mDCPhuduRPOxlfgsXF9V+uqC6Jgz8zt/bNe4d4W7d5f6pCzHrWkxLNr17jKGXd4+j2kQNsAG2HARPnt74sqVQ==", + "dev": true, + "requires": { + "fs-monkey": "1.0.3" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.49.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz", + "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==", + "dev": true + }, + "mime-types": { + "version": "2.1.32", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz", + "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==", + "dev": true, + "requires": { + "mime-db": "1.49.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "mouse-change": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/mouse-change/-/mouse-change-1.4.0.tgz", + "integrity": "sha1-wrd+W/o0pDzhRFyBV6Tk3JiVwU8=", + "requires": { + "mouse-event": "^1.0.0" + } + }, + "mouse-event": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/mouse-event/-/mouse-event-1.0.5.tgz", + "integrity": "sha1-s3ie23EJmX1aky0dAdqhVDpQFzI=" + }, + "mouse-event-offset": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mouse-event-offset/-/mouse-event-offset-3.0.2.tgz", + "integrity": "sha1-39hqbiSMa6jK1TuQXVA3ogY+mYQ=" + }, + "mouse-wheel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mouse-wheel/-/mouse-wheel-1.2.0.tgz", + "integrity": "sha1-bSkDseqPtI5h8bU7kDZ3PwQs21w=", + "requires": { + "right-now": "^1.0.0", + "signum": "^1.0.0", + "to-px": "^1.0.1" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "dev": true + }, + "node-releases": { + "version": "1.1.75", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.75.tgz", + "integrity": "sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/open/-/open-8.2.1.tgz", + "integrity": "sha512-rXILpcQlkF/QuFez2BJDf3GsqpjGKbkUUToAIGo9A0Q6ZkoSGogZJulrUdwRkrAsoQvoZsrjCYt8+zblOk7JQQ==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "orbit-camera-controller": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/orbit-camera-controller/-/orbit-camera-controller-4.0.0.tgz", + "integrity": "sha1-bis28OeHhmPDMPUNqbfOaGwncAU=", + "requires": { + "filtered-vector": "^1.2.1", + "gl-mat4": "^1.0.3" + } + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-event": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz", + "integrity": "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==", + "dev": true, + "requires": { + "p-timeout": "^3.1.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + }, + "dependencies": { + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + } + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-retry": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", + "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", + "dev": true, + "requires": { + "@types/retry": "^0.12.0", + "retry": "^0.13.1" + } + }, + "p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "dev": true, + "requires": { + "p-finally": "^1.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "parse-unit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-unit/-/parse-unit-1.0.1.tgz", + "integrity": "sha1-fhu21b7zh0wo45JSaiVBFwKR7s8=" + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "path": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/path/-/path-0.11.14.tgz", + "integrity": "sha1-y8dWk1XLPIOv60rOQ+z/lSMeWn0=", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "dev": true, + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "dependencies": { + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + }, + "quat-slerp": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/quat-slerp/-/quat-slerp-1.0.1.tgz", + "integrity": "sha1-K6oVzjprvcMkHZcusXKDE57Wnyk=", + "requires": { + "gl-quat": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + } + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "requires": { + "resolve": "^1.9.0" + } + }, + "regexp.prototype.flags": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", + "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "right-now": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/right-now/-/right-now-1.0.0.tgz", + "integrity": "sha1-bolgne69fc2vja7Mmuo5z1haCRg=" + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selfsigned": { + "version": "1.10.11", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.11.tgz", + "integrity": "sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA==", + "dev": true, + "requires": { + "node-forge": "^0.10.0" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "signum": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/signum/-/signum-1.0.0.tgz", + "integrity": "sha1-dKfSvyogtA66FqkrFSEk8dVZ+nc=" + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "sockjs": { + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", + "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==", + "dev": true, + "requires": { + "faye-websocket": "^0.11.3", + "uuid": "^3.4.0", + "websocket-driver": "^0.7.4" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "stats-js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stats-js/-/stats-js-1.0.1.tgz", + "integrity": "sha512-EAwEFghGNv8mlYC4CZzI5kWghsnP8uBKXw6VLRHtXkOk5xySfUKLTqTkjgJFfDluIkf/O7eZwi5MXP50VeTbUg==" + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "strip-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.0.tgz", + "integrity": "sha512-UhDTSnGF1dc0DRbUqr1aXwNoY3RgVkSWG8BrpnuFIxhP57IqbS7IRta2Gfiavds4yCxc5+fEAVVOgBZWnYkvzg==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.0" + } + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "tapable": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", + "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", + "dev": true + }, + "terser": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.2.tgz", + "integrity": "sha512-0Omye+RD4X7X69O0eql3lC4Heh/5iLj3ggxR/B5ketZLOtLiOqukUgjw3q4PDnNQbsrkKr3UMypqStQG3XKRvw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.2.3.tgz", + "integrity": "sha512-eDbuaDlXhVaaoKuLD3DTNTozKqln6xOG6Us0SzlKG5tNlazG+/cdl8pm9qiF1Di89iWScTI0HcO+CDcf2dkXiw==", + "dev": true, + "requires": { + "jest-worker": "^27.0.6", + "p-limit": "^3.1.0", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.2" + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "to-px": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/to-px/-/to-px-1.1.0.tgz", + "integrity": "sha512-bfg3GLYrGoEzrGoE05TAL/Uw+H/qrf2ptr9V3W7U0lkjjyYnIfgxmVLUfhQ1hZpIQwin81uxhDjvUkDYsC0xWw==", + "requires": { + "parse-unit": "^1.0.1" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, + "ts-loader": { + "version": "9.2.5", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.2.5.tgz", + "integrity": "sha512-al/ATFEffybdRMUIr5zMEWQdVnCGMUA9d3fXJ8dBVvBlzytPvIszoG9kZoR+94k6/i293RnVOXwMaWbXhNy9pQ==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4" + } + }, + "turntable-camera-controller": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/turntable-camera-controller/-/turntable-camera-controller-3.0.1.tgz", + "integrity": "sha1-jb0/4AVQGRxlFky4iJcQSVeK/Zk=", + "requires": { + "filtered-vector": "^1.2.1", + "gl-mat4": "^1.0.2", + "gl-vec3": "^1.0.2" + } + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typescript": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.2.tgz", + "integrity": "sha512-gzP+t5W4hdy4c+68bfcv0t400HVJMMd2+H9B7gae1nQlBzCqvrXX+6GL/b3GAgyTH966pzrZ70/fRjwAtZksSQ==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "watchpack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.2.0.tgz", + "integrity": "sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA==", + "dev": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "webpack": { + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.52.0.tgz", + "integrity": "sha512-yRZOat8jWGwBwHpco3uKQhVU7HYaNunZiJ4AkAVQkPCUGoZk/tiIXiwG+8HIy/F+qsiZvSOa+GLQOj3q5RKRYg==", + "dev": true, + "requires": { + "@types/eslint-scope": "^3.7.0", + "@types/estree": "^0.0.50", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.8.0", + "es-module-lexer": "^0.7.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.4", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.2.0", + "webpack-sources": "^3.2.0" + } + }, + "webpack-cli": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.8.0.tgz", + "integrity": "sha512-+iBSWsX16uVna5aAYN6/wjhJy1q/GKk4KjKvfg90/6hykCTSgozbfz5iRgDTSJt/LgSbYxdBX3KBHeobIs+ZEw==", + "dev": true, + "requires": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.0.4", + "@webpack-cli/info": "^1.3.0", + "@webpack-cli/serve": "^1.5.2", + "colorette": "^1.2.1", + "commander": "^7.0.0", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "v8-compile-cache": "^2.2.0", + "webpack-merge": "^5.7.3" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + } + } + }, + "webpack-dev-middleware": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.0.0.tgz", + "integrity": "sha512-9zng2Z60pm6A98YoRcA0wSxw1EYn7B7y5owX/Tckyt9KGyULTkLtiavjaXlWqOMkM0YtqGgL3PvMOFgyFLq8vw==", + "dev": true, + "requires": { + "colorette": "^1.2.2", + "mem": "^8.1.1", + "memfs": "^3.2.2", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^3.0.0" + } + }, + "webpack-dev-server": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.1.1.tgz", + "integrity": "sha512-Kl1mnCEw8Cy1Kw173gCxLIB242LfPKEOj9WoKhKz/MbryZTNrILzOJTk8kiczw/YUEPzn3gcltCQv6hDsLudRg==", + "dev": true, + "requires": { + "ansi-html-community": "^0.0.8", + "bonjour": "^3.5.0", + "chokidar": "^3.5.1", + "colorette": "^1.2.2", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "del": "^6.0.0", + "express": "^4.17.1", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.0", + "internal-ip": "^6.2.0", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "portfinder": "^1.0.28", + "schema-utils": "^3.1.0", + "selfsigned": "^1.10.11", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "spdy": "^4.0.2", + "strip-ansi": "^7.0.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^5.0.0", + "ws": "^8.1.0" + } + }, + "webpack-glsl-loader": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/webpack-glsl-loader/-/webpack-glsl-loader-1.0.1.tgz", + "integrity": "sha1-cqDjAZK9V5R9YNbVBckVvmgNCsw=", + "dev": true, + "requires": { + "fs": "0.0.2", + "path": "^0.11.14" + } + }, + "webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + } + }, + "webpack-sources": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.0.tgz", + "integrity": "sha512-fahN08Et7P9trej8xz/Z7eRu8ltyiygEo/hnRi9KqBUs80KeDcnf96ZJo++ewWd84fEf3xSX9bp4ZS9hbw0OBw==", + "dev": true + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "ws": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.2.tgz", + "integrity": "sha512-Q6B6H2oc8QY3llc3cB8kVmQ6pnJWVQbP7Q5algTcIxx7YEpc0oU4NBVHlztA7Ekzfhw2r0rPducMUiCGWKQRzw==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + } + } +}