From 0ab40ccc70b8358e91c0d25e7f0c720d81556987 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lorenzo=20Dellac=C3=A0?= Date: Thu, 2 Jul 2020 12:57:43 +0200 Subject: [PATCH] initial commit --- error_pages/error_404.html | 41 ++ error_pages/style.css | 104 ++++ home-style.css | 161 +++++++ images/logos/brain-128.ico | Bin 0 -> 67646 bytes images/logos/brain-128.png | Bin 0 -> 8400 bytes images/logos/brain.jpg | Bin 0 -> 145296 bytes index.html | 50 ++ pages/about.html | 42 ++ pages/contact.html | 43 ++ pages/style.css | 321 +++++++++++++ scripts/arrow-fade.js | 10 + scripts/click-gb.js | 211 +++++++++ scripts/three.r95.min.js | 949 +++++++++++++++++++++++++++++++++++++ scripts/vanta.net.min.js | 1 + 14 files changed, 1933 insertions(+) create mode 100644 error_pages/error_404.html create mode 100644 error_pages/style.css create mode 100644 home-style.css create mode 100644 images/logos/brain-128.ico create mode 100644 images/logos/brain-128.png create mode 100644 images/logos/brain.jpg create mode 100644 index.html create mode 100644 pages/about.html create mode 100644 pages/contact.html create mode 100644 pages/style.css create mode 100644 scripts/arrow-fade.js create mode 100644 scripts/click-gb.js create mode 100644 scripts/three.r95.min.js create mode 100644 scripts/vanta.net.min.js diff --git a/error_pages/error_404.html b/error_pages/error_404.html new file mode 100644 index 0000000..6b12050 --- /dev/null +++ b/error_pages/error_404.html @@ -0,0 +1,41 @@ + + + + + + + + + + 404 - Not found :( + + + + + + + + + + + + + + + +
+
+
+

404

+

Page not found

+
+ Homepage +
+
+ + + + diff --git a/error_pages/style.css b/error_pages/style.css new file mode 100644 index 0000000..fd32c88 --- /dev/null +++ b/error_pages/style.css @@ -0,0 +1,104 @@ +* { + -webkit-box-sizing: border-box; + box-sizing: border-box; +} + +body { + padding: 0; + margin: 0; +} + +#notfound { + position: relative; + height: 100vh; + background: #030005; +} + +#notfound .notfound { + position: absolute; + left: 50%; + top: 50%; + -webkit-transform: translate(-50%, -50%); + -ms-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); +} + +.notfound { + max-width: 767px; + width: 100%; + line-height: 1.4; + text-align: center; +} + +.notfound .notfound-404 { + position: relative; + height: 180px; + margin-bottom: 20px; + z-index: -1; +} + +.notfound .notfound-404 h1 { + font-family: 'Montserrat', sans-serif; + position: absolute; + left: 50%; + top: 50%; + -webkit-transform: translate(-50% , -50%); + -ms-transform: translate(-50% , -50%); + transform: translate(-50% , -50%); + font-size: 224px; + font-weight: 900; + margin-top: 0px; + margin-bottom: 0px; + margin-left: -12px; + color: #030005; + text-transform: uppercase; + text-shadow: -1px -1px 0px #8400ff, 1px 1px 0px #ff005a; + letter-spacing: -20px; +} + + +.notfound .notfound-404 h2 { + font-family: 'Montserrat', sans-serif; + position: absolute; + left: 0; + right: 0; + top: 110px; + font-size: 42px; + font-weight: 700; + color: #fff; + text-transform: uppercase; + text-shadow: 0px 2px 0px #8400ff; + letter-spacing: 13px; + margin: 0; +} + +.notfound a { + font-family: 'Montserrat', sans-serif; + display: inline-block; + text-transform: uppercase; + color: #ff005a; + text-decoration: none; + border: 2px solid; + background: transparent; + padding: 10px 40px; + font-size: 14px; + font-weight: 700; + -webkit-transition: 0.2s all; + transition: 0.2s all; +} + +.notfound a:hover { + color: #8400ff; +} + +@media only screen and (max-width: 767px) { + .notfound .notfound-404 h2 { + font-size: 24px; + } +} + +@media only screen and (max-width: 480px) { + .notfound .notfound-404 h1 { + font-size: 182px; + } +} diff --git a/home-style.css b/home-style.css new file mode 100644 index 0000000..6fe72c4 --- /dev/null +++ b/home-style.css @@ -0,0 +1,161 @@ +@charset "utf-8"; + +html, body { + font-family: 'Montserrat', sans-serif; + height: 100%; + width: 100%; + margin: 0; + padding: 0; + background-color: black; + -moz-user-select: none; + -webkis-user-select: none; + -ms-user-select: none; + user-select: none; + -o-user-select: none; +} + +.main{ + height: 100%; + width: 100%; + margin: 0%; + display: flex; + align-items: center; + justify-content: center; + text-align: center; + background: linear-gradient(45deg, #067062, #063d70, #2d0670, #4e0670, #700667); + background-size: 1000%, 100%; + animation: gradient 7s linear infinite; + animation-direction: alternate-reverse; +} + +h1 { + font-size: 90px; + font-weight: 800; + width: 100%; + color: white; + position: absolute; + margin-top: 20px; +} + +.bottomnav { + display: flex; + align-items: center; + text-align: center; + margin-top: auto; + padding-bottom: 20px; + text-transform: uppercase; +} + +.bottomnav a { + color: white; + text-align: center; + text-decoration: none; + padding: 14px; + font-size: 30px; + font-family: 'Oswald', sans-serif; + font-weight: 300; +} + +.bottomnav a.rainbow { + background: linear-gradient(to right, #33ffc5 20%, #fc33ff, #ff3370, #ff3333, #3dff33, #33ffc5); + background-size: 800px, 800px; + color: aquamarine; + background-clip: text; + text-fill-color: transparent; + animation: gradient 2s linear infinite; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; +} + + +/* ANIMATED GRADIENT BACKGROUND */ +@keyframes gradient { + 0% {background-position: 0%} + 100% {background-position: 100%} +} + +/*MOBILE*/ +@media (min-width: 0px) and (max-width: 200px) { + + h1 { + font-size: 20px; + } + .bottomnav a { + font-size: 8px; + } +} + +@media (min-width: 200px) and (max-width: 300px) { + + h1 { + font-size: 39px; + } + .bottomnav a { + font-size: 11px; + } +} + +@media (min-width: 300px) and (max-width: 400px) { + + h1 { + font-size: 52px; + } + .bottomnav a { + font-size: 18px; + } +} + +@media (min-width: 400px) and (max-width: 500px) { + + h1 { + font-size: 64px; + } + .bottomnav a { + font-size: 27px; + } +} +@media (min-width: 500px) and (max-width: 800px) { + + h1 { + font-size: 76px; + } + .bottomnav a { + font-size: 28px; + } +} +@media (min-width: 800px) and (max-width: 1000px) { + + h1 { + font-size: 80px; + } + .bottomnav a { + font-size: 29px; + } +} + +/* 4K+ MONITORS*/ +@media (min-width: 2100px) { + + h1 { + font-size: 180px; + } + .bottomnav a { + font-size: 40px; + } +} + + +@font-face { + font-family: 'Oswald'; + font-style: normal; + font-weight: 300; + src: url(https://fonts.gstatic.com/s/oswald/v24/TK3_WkUHHAIjg75cFRf3bXL8LICs169vsUZiZQ.woff2) format('woff2'); +} + + +@font-face { + font-family: 'Montserrat'; + font-style: normal; + font-weight: 800; + src: url(https://fonts.gstatic.com/s/montserrat/v14/JTURjIg1_i6t8kCHKm45_c5H3gnD_g.woff2) format('woff2'); +} \ No newline at end of file diff --git a/images/logos/brain-128.ico b/images/logos/brain-128.ico new file mode 100644 index 0000000000000000000000000000000000000000..cc022a77ab5cf02d82698736393e5cd778c2fbb7 GIT binary patch literal 67646 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 literal 0 HcmV?d00001 diff --git a/images/logos/brain-128.png b/images/logos/brain-128.png new file mode 100644 index 0000000000000000000000000000000000000000..48d70ffd2d2613df979da7c1f1b5c10051691916 GIT binary patch literal 8400 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!CRxHv#k{%C4$nVr=wS0d|S)6SB+o#)MI| zAY6G8ImTjIK6!ZxCYY|Rv36XNpB5?^oNxqglNgH+V3&obaq;!IqWW`VV<(`KEmCk} z)#oT3@j`0dQCq3HC9J*pD*Mq6?h=kP6R}KmR#*|p75@y0vKp^8#;={&mEUy z#WV4eGTSwmSx}RBj4Ow2(oD4%A}4YAVbG9$E3oj6!J4jJp+=SAX)nG}sh&r)h~Or^2J52Ofi6oW-l52dATa87u@;I_EJ|mnr@YVWJ$oAa z4zWo9#q!NWVQ3yl@$|_EuX5pd$88}s!ivxWueMI089H|e^(8X}x4ckIeS#lKDkh`4g| z<3sDM`XaQA&C-T z;5@zeqnYY_GSS?dfoF*(!(a_IDa!O`(DR+#gLbV!GC}nj4DS6lYoYlT$g)6Dh}+pO z1s`^}|wG>?GU{$U6voFmklEj<4OyMox`K@YBDDh^T-pm$vx+^H&;V#A| zk$_5lm>N6E*;vy{K>dxAi3iyJD*~wY+rZ+56zx?0Zq>_BY{3(?+7EqHP6?_H^u}o_ zj+ok;96OuU{atj6VQt}y;}mNt(h7{LI*sH?iLN-OyM^Uz-Alt6rN_BJ`f}Y+6#C~9 z$n(QBX4DK=$&sc-fRZ+#iQLHu=cYQjCx~3g- z*8c|Pn=Ex~-yB*?hR3k;p(D|pdtWjZT{7)Uswr`bhLW!w+FI{cLOYqTu2Z zZbv}kgGZF2Pm*x_^-UVJ!>aUuOX7k5tf9TCO*ABew-Amxla$=86mg`=Bimsy? z5#E`xGHr}C&C?@mD{jk_m&aMTKg4fw8{rKNUtWmlpNE2{uNq}WD@NMUQ6F|-J6|yYZHdAXld|%b6x&%p{Ih_`7MbeX#5myU=EWd zp>bgU{_)@!fXEhU#W8`0eMLHkjTxT^-vmZ>s`mTKKwjV{eQyKQKb3Wn#W}uLGD5b9dNgi*U`oL|GV- zg+2_+rSh+-6vL}t;<_z<-jvCCdFkr1gMZ3k;+OByge(Ch*gK#$r#r3Dazmi1>D#wL z9+W?@K`#Q*{cjUlTh}P#?Y{Ata4v!}H2L zq9BO!E^JiLSdv3dYSE+a-g2s|FtEU#=^&vWrTm<4xO-NDZQ?%y-c4FrP!`&#RM(J9 zFY0dZ>ImXCn#Z)kp40n2QCItg9thh~#R1}FO;aurH_td+XtFk#BIXatb%&z`P@Zuo zBVxOZv{E#Vayj3PF?xy4{_vVsy9(n)H{Vbj^u>nad;h)Q3qsOVtD_#u^ z8N>+nJre7mIHv8@cnGNk#lM1y)#CIU#6E8NjLdU8MlIXz?SRQzgz5n|x;!&@g#nQ5Z+C_*{9}-W(}3ruz$E9rh*Bxgo1jMX=omd-9_0 z{ubgN0}}RfY?>ET@KPDdTueTq(@V}B$765ETV%D6Rjk07t7%k)pW~zHa=0o#8kFi^ znNo)(@9{B}GV?V0la~dxzyyLm?^nra#WjU#Ykm7{yZ+m?&?C);~ z%bq`(T$hU+FC&!-s zkYqC`{#~$}2XRK|kkKNv5xGj@feuLd zly#4VeR~fHvfet!VR%uowVsPUtLG4$@C1)SLK_o(Rwq8?+Z(es zWQe1!uEeIOhmHy&{q!XyXU5 zMB-i??=T|qq}TvF>X{(lZf#XhY)HpPG_F^Le%tCKHh z0BDLb`2PV7O+3bez;FuLu>|`w07+s|TucD~3{GQ6^*l?*89N z;cxc|5H*Q2r~F+D4-Wtcy)pcEC`7{l$^SRGqL8_R-L&v;EPwpu!y*Ah4| z8bE~sp5!B7`yY+3+Z_CX_#dUZ2oR%1I2vy4G7W4Fc}c$$L9LJQAN;?TtJU=Ny8!41c~XE{azctU0FICI zpQt}LFc+JGf6m{pz+?chzjP}}fX5{OCK}-n%s)%0@__DB2ND24I1xYrH9-M2V#Ntq z^@7|F{KtQy{^0b59nwSc003Gm89-8-Tq0m0P(7!%p9FvaGV}if^pBE)!Lgt63jlyJ z$t8MhcF0U(yxbpO%hKT1$HyfFCf6#zuUfQEz|{o5E0 zW+8$N1W=QCN&Ex#2LqI41^|Nb{DF9KbAAKDzkOFAT7WG8OgJDy@(1XjC4v~FwL|~_ z&F*bv4Fj4mM3WW7Lm4&-Vw(OZ>JJXoW4I66%Vr<(}JcMfBkP@0DwMs)fm)gg$5vL-2F|BrU-uR3`hiGd%FJ# z8VFlO7PiYN48Q=|7x)7J@Cp8=A@L$GS{;8IJO1w)w&nLoe8R#2xc+c_W0(Y^TlhhY zVQB7#?~tnhP9zXdDDlgF05}p%hz|)qJ_=A$uKTiZdiw8Bh=gXB@Vap25R8FLuayqD z6F_QK!?;b6@F0~$ahoJbdu2cQ5K zTgS|bPz1vM`M~+N7C?EvXoL;YdItCC(_KA?!O0@xxmN$VZBWCssbaT(9={Ch4Ws^+ z_!dY>{Xe4taL57p3FDCN42FBX6_iya>pc3upaGZ*pW6Pe&;1zLPl3Mizo7vM6nXxC z2e5P=1X@P_ujqeOzRa?s^ZrryUlo7KW3k}#p^^Nl>Q97>L(pGpA)WNE5#rR0>>i|3 z{WStsGt`Ou|1~TG6&Z>E{_AK(Pu7mV+%y2jx{6BpufyqZ#eN?#{!$g_1<}8R`#T6L z@c#u3`GfUe`mY84Yk~h-;J+659~OB1n~x+q#5EEG0zyGSK?5NKS$?CFvI0a@OdJye z>M!$qX3$8Kcdm?Cgn##ugm_X4q5T3praYp4y!mvLdy6_bm7_Lt?UbYR@fW}z76le@ z+imRdP4;7_kC0kU&`Zvj-14KG-0R0j-_jhV8o{-%CyzNEP%vUp`y7y*iKQR+_YDwl zw;z@4cXv%S3J-<~zlbWsl}e#qAfn`?+8Rtg#2F0r%@*i;Or9JF2&oMMb#~wA;9IbG zc@pZ!s?slnwzy1<_}P)!N)JZl68{3s@_ZE6=($sn1T%*lwQ+?STxgM`N zs!n-%*XI5X)~?h;_?Bt2zK<-$Sec9g4Bg}wFEcVpQleoaAzbt64Yvgt4qdXFiV!6s zZ~rYECV4UYGL`Bk6104Tv8(ahtOu;LEAe4W;{^0?;dhqrNHgY za)X946cnMYT=z7g_zPwfK1Qd}e5WT=0a%o=vyL>q3yjHYF2u50`JCD5WPL;gEN6AB zfy?ji#j6-HOMY~;ir4OAx&$qI`JE(iQg_`>DUeak%m??lMNd8mYf8zQ6R|Wmu#|qx z0~^DAWC_7f3UP-cN6R;j$JVbk$L`Yn@s=aeWHR&kg>@yLcF(&WDf}3lTC^&9*xxL(KUsG{WYGnR_E0H?#s(M z#=A`;+>6^oLctqMyk-6U;ipSvSVi(uN|dO;{g56Uj~k3#7CW74m(Ba>dQ$xc5^L-< z(@l#Igyb+!(CxQVdnim>i?xv;&&k%W@BrvEjPEmVk%#T$*}}c(8RWN66n+9ti4Zh6 zeDREE#ZCfD_qbggZR!s%<-{$JgNU8|mhd~I0QNDH%h^I|C)E$~VWGm3}d${49YW7_h?af^Al_;Pe5@b={C#kWI}h3QRPm-g*Xes*<7d(9AlEj(H(rfC`{XrL$p zL_5EXqtNYh`KY<^Z-I@3=Wr$BHzlRCIJ$Js2^+o*YDMT2G=9Bwo zC_&&Cpql^17j@``NuOx%DCL=8P$gWAVsz)K>UtXwEibh`IJ6#mm|%BGomSGFopyCP z6LEsQlI0dIq=$qSFpv6U=E+Kcy>e?(>-(d_xej3Tk$rlJME6H;SSn2oOcEj;3OqO~ z+7nfw451(yrF^C4A^jEky+3T5O?d zuIPBc-un_=dF{l+Mm7Q5R!~E7O*jTZI*b9XBAAK9b#jhM9k0cV`E85gV4M-~{ue+b zJe&M#6sv*ctqdK!Wm`}EE(>CDdUxwrycoKpk0x4ZJslLb!@wlDFv&ns%5vk98;GsB8ESDH@gBehmnR`?QqU-tgNqA!q#s-L6< zO<_WWI&P}#Y_MwT`sGE?U9LGM28)gE8+K+Ex6k|v7KbvLIZnPIkVOkiyM^~|8$Baw zGv3?BLLgQ)t9<{RsZh;*V5rqC>g`lecs%K`C(mNt>(W@gTpq{}xNF;1ylsp2om@~m zw0_`9gtnOCkzUj|MumTFKJU$`pS>OTNMb%q8D%7b3Sjq8;drqKM@A0m9LT#a&{rzB zNqc)h0|j|?az{(Vyd-Sa#qU$n-jTwPz2^8BityRC8@}9!$JiL1nxqO2*D@%nTV2N= zTt*24R&GFY44igG9)l|aK0rnC{~ z=1S}&Q7Pf)zMjIII`P}N8f9VLnmT&sF*M3mvhU+~iSxUAyr0x|J%t>hfsM7im`eWz z5MUjqV3Fc_@q9Q)^j-z32d`x!X!IZzh2sP&jw!zbksf!W2`2*8zbVP|5Rre|dLp5N zStP!owr!Wg*GgZZ!R8K(>u6vJG;YcGaLaF%cN>;UFD5&Es}=zx0%dF1t0B_O$BjWt zQj!y(TM^1oKGC`apiyR)iN|RPcqXwzEydPBpBKV&zqyodr)3tcBop@pY%^6LP^|Qz zgwyjZy|LUL_piai{UDcpwT#o7(6l7irN~BGUm21rYwtI(oo7(&v)&O@=bQWFue==e zt@W8l53)%ymZY!s^%~bX8XjkW)iJedlCQ)84U-ICqaXcE(!RGrLF9Tc6(IsynFW1j z;}=vIBqtdEeWKKOcBQXKBl}}>JVUr(S2P+mK>BiCq(-zSQD$1;fh_>EL;*xj(#(s- z7sear0f1SLoj#Zqe%}uQvM382Pt6fFq>vW0%`_!#wgA2+pzlFJdE7Yn25A*pEwI;4 z%?;dA=S3`xe1A0FR(xfGG?8}PnZZY zj2*2WR>g3kddl6jJ$KVSh-6@_z;HoS+0zi`j8(Ueb+<2ctF(b+vPKGCKb>0noPM_M z8{p>tcs)eEbMIHzFxO?DIT-Q7cPp-zUfA1j!_%F|(Q}J1LJkWGc=qTv7;PR{fF&#o zgCHnxIsik}AL)t|3&l?u4F&XvYqo@~oY@)1=CMt|raEjziF}04j@JUTl`#-omCGj9P3Uj4=9CaR62YG09|SOG<1>p4nMZfD%8&pL?ePogDj1Ct10ml(89kIac=-SvnTG!T=4qNr=)6p zJOVMoO}^b8LuMe6CvCu716<6a!+`R<3miVrQYk4yh*woV24!8Mhe(o%DHl%L7o$u~NqT3>x zlyETP<}&o;q~_#&x>2(V)ioYe9IRJyH(#%X@nwDY{oVXaR5Sh>Xn>_BpLTk=uDii(pT`_M8o-~gA>h*bM5YF^B+-j zk8b%LhlTNn2`aa=ZuuP$j7v!X^^xosgAZwKG`+JFIr%p z_ADa`ijI2}!LYBe8KB2c|VP`1`Mh zwLr6Um&Ix|^babs;Z;hZ+2_s_b`I>b^x%f`LlSpLJNm!oW!nI z>a0d7x%M?kW5ACrESb!#BI8LXLZJW>T;xilJnt<>r2Lqd=A{!NP&ciX!^0&L(aMmV}c2*l2om|AzyG(nd;lR=X+_Xs*hhEUkr8X$Po4{zv6{e z?*WlGh{P6h1i1yH)EhCWSlz-DuRW+{tLZG-cw7sbJLps+#2p^v4!Orx+0O9?e^|DU z^^ltGhZn(t;K&KN*a&*Dfh2QK{@Nw2G%)Q~U0qu#N0YvOEra!EvG@#CH$@j)LBS~8 z*e22FKd9XZ3&Q$RbB*>FA4;6-FFwa>M{p{pM8Q!Y>IW!63*vwM0m-w1jY{MFDUwuP zj5!Z&IN+1^q51NtbgzCyDFupg2VORD?$Azh)h8jX`+%>^n7AF4@`f`f=rSDYCg+hV z5|q%fk{*z$GNr0>5+SNc%mW2}i?mxtWz^o9KmNiV{O!HlUSv4vW3%&t=gMAkirQL- z`E#xjnz*Qil~V=CJ^Rfp3mmGI38MOH>mnHnXhDg z*Cuo2=<)FtV6znb2 zVXT{>M%8RqK<-v^f9cXas;X_KqpO+C(pYX%itKVm$^g5I=}fdZ)njpVaX^1KEe8>% z^pkk+!hwqDhlz}REr7ytjhK>G{}dD6C(@bKuq z+-=~Y$&2fId*fS@pr)Mf2M`g}-HT;2?H6qLrebt}2rVj=huUd-cTI-b;e6g>*VH?S z))SmKEI^Xpj&urLG>Z3pIVobXu`j1AN}QBl$7{cvB-oqy5CZZnPkryGV(2RFdx{O< zS~$MEYkC1Jq5*}fR+$fncY-_1H`#uNWC>GNYI8K51+y@aGR_gbFLp@5Yqo#L`uW-& zQw%78902$ya0dKdlzoVeBVltTszUuvdO5tiKhZWW=R3T!vlXat$9h42IB*fnLLoDL zt?+!iUjpzAS$6qE=E)*1HFu-WNh`5Z3l&j41um^g%yfL?t!cU&Hg~9OC3zX36 zhW$IfrB5~5#00d+Vy~SQdUgB^x@o>Iz<;( z?t8T}xJ9%g(34cDc0x%XF+Y!a^NNd}pNC6n`+5HWcuDnV%jyJF@xNR)6W`;RBAV$` z7|U^d!&9WE#ieXyWgp|76>X;GjY z{{bv*9HMj1v&d-+&A7MMxp@XE)ABss>$;)NR&&P;!HujD%d!Z z=Y_xfTTL6UHyJ%Cw<_7Uc7Oi?GD&zcI&`VlBFpP%19c0RQ%K=tJbhIZkD-RcQrt%2~uyXoaS@%Yo&Hk~YKj1&To7 zAHLBvHMf#rh~EMqyKJ&*gM8b~<>al3+Gu~_NmG)sYWW(>dDi3|3*t1f>bky^Xb~;y zg6b%KmUeu0BGF9_6BN*T=X#h!zn)OdO%z7}ZtAeirQ`ui13X4bwC7%5;$|#}(p@zgZN~h>5{rkK`ekrTh*l2b*@xlo*L}TS}@o!Gvr(jHZ5iU#JWxs)>x+^Xhn#DFASER=d7Sm zTV+OtVS{+iL`TVMqyx;MNcN~Cl#R#0^B_U&(*AMIL7C9+`&xD`Qh8rZk8b_}oDF5` zF+y6#{{a2$h&zXaKwy~^fOA%x*68fNDni|J^N7&cTLq?LNBecNe zDg{Ai(NJyH=_19`*>;&Zr9owesl4;8%sO;22R$A`)PN2fs4$DAA1lzuM(I!b`t%=Q zg29>p53XB3UU3)|(f92_6I`cA3uDbr()_OkN;XoF(2^U=)2sb(4inMo>BF;)OFHF) z1H@}9Wo9brTi!&}+I+-}w3Wum#%o`l3HRKz?JWWenjN3yqA&7N{{X-{h5Qc6y}`|? z*|sJKn5Nq!cz(^?6VA!QWLG}bS;NL;D;_&ZBR-1H9R*of;x4 z+j8G5r+yu%+39&0M7m4uc7)4Jm<+Ji}yWX0(^m>yg*gP&aTRf0TUs5>TI)aX(vS*4q(SJ=mOpoURnj zU3A-AK6gc#VHkD`D1k#^)B^t9sR~`w8mBC^h-aK zjqDB5POxYP8x_-7vU!o0wX*!wbdSPHh!Fld{lk z#vr(Rk{N<@r=e}uJe`r3UIrsnam5$g$v{^;P4F`6QUX!L37&a?oz5SBm*O~PG3>o| z{=b`@n1hB3$jmCtX>5jP1{w0=&jhmfc4nceVVF$!#My*MFFl`q9oa#OG|Ahxi=`5& z<*iBVd_R!ZQEJ~3W#V&hY>C@vEiWu^4SnFQx!)4x`f77SwtYiUoyRW&aq;qWmXxL7 zY;!Bbm+Z=0&n}gzeAZlAvmfyFn}r0^<@yqr?%Y+proi)k{N}y9M#?#zz@Ynx(f$7Q;c|&Obdhy-AcUngiFa_wPhMwhY-)2{AohWE{1T?Y zC%BcDs>c%_wWTNXdNzJaI*aNZ&_%3X(iuU|0rw<*iK({lSPj)sWQvrfEh&6Pm5)WM zt0%xWOGCm_*5RsiwiIv#*ULIGg;jrr_IvdgENX$(QrM!NEa7XNc}P(_LUmW=3$@gu z@7OoC5>12wJ%XVU8f1zr2rLIVv0Wxe78Uyy?cO%gt6S@%`O6RkqaW}9Zwb`!>(c+! zORZ8Us)xliJ^r-OcxRKE%s_!Aj1=2f`3bT~T4D|9kDimf6N3=A_)%?HjnH9uR2{p||hsB$#h= zh^h^9vkGfN2`Y0we7nJ$ctah*z$VB)@KLl8JGX(WGF%zdRQY0TCw6Cmgz^mmP?0i= z5g{urW`L;7U#Fqa{5%1K@N-7jE7X{SqKTx#nxvt=xeLY?8|U}Zunn))>&^WRah!Qp zR|*mB&f|^E?Hl(20z_BB%fA&IGU+UEbiOX94Gj;j=<{4B%tFu3T;q66ppkxNn=BP} z=REs$ojO?P3;}OpJBZUas-i)ckqG_6P}kw2`7#hd-d9W@97{(~qK5p#q8;wW%5#lZb(F=O3Egg5u-l^R};c z&^jFCSYTy8FTuwL=@OHHjx0Ckvq-wBf-iU85O~>~=;vR}ok_xMwkzXN%ggPj?nfcI z(mVK-c1h=5Yvm8O_F3dEk!Lj~r~V4~Vry=l*WXyflLib0#BcoXqJbHGhgjZC%WPt{ z9Rrgif4i_xM5mdKyqk?A;cJrHXDE8l;&$S0Z0cOVXt(?7^&B>Jh`7 zl-^)uSra>4RX0lP|?g22z07baj)*ChGNZjUp5Q zd~px!zD>0CeLuf&=b%4}{%_Bp#)tg&w0j9Y7U(2;07d{_SbuSk>Tb<}s+UHEC_T1p zV0v47u>xrNX-~NR zJWHt@ERdT`uLGJ}p{58@EKC2PSn@(I5}=9NJsoVvMsW<<7?tlDeu#E>9{HhTogM!h zIdc5yFYe)JUjvVoGCik!c`wha*I*b?vXMRP13>`L565)m!@^G3o^&|v^FPxwLVlt& zM}stI+Kh6S2#_r}S$zt7ezrUorY0N32+3FUb0rK@>#;$15izPv6WP&yaer1loa8Fa zJ-}`}-I>EnLNkmz_WDB&s`-@?kBWJ=cri@IsVH&*LIPHXbYfVfv5mj45BOQkM!;&} zQTuW)g8d167Q4=aH~0J5cMsP?@(PA^NiP=8PBTWaZvy`T&>pP;Sj@3Ho%POA1pc=_ z;%v~=u3_S?KLp42Xo(=o)wAzhVK`-0ypR(;<7Vbm+A+Fnh6`ZF$ zl|pU?v8AJ+au_&`7)v2orJ%&)peIJ31^KDiNBfDy%LfNZj(L~k#yi)t2`@6rB^}ML zI)H#m$t!8T5F%7`ImMYO{|C)E0T~pGi6KmgVX>rUxAik)#QAyYW+6O-v=bDl3HLZKiN7;?DVQ7u}3_qB<;so0?^xWq3yciey zw9cL=XYNpgDHesH|CTu2HD_=%Kd2eOpi37G=iq8cV&np8bL4MyUbE6)tj1BQrLgH# zlu)+N*-k5=T?AAXb>W+Y&=PhU9LtUpQDYXN{kot<84s5F{k)o_L}5a?(V+WtA+`_e zl1^*JLe;_g?A>5y^ctff=;?QSmBa1Jne5Awci(;T4E_Nob$G|`Er*$ucRFq9kWQ#S zM>|rTD^wAB8Vh5aY^(VcvT2Vu>x+rrq}Kb6oGiOyyuIIM>}! z5gm6d#WbN7Co?N?|^h^5>FWe*TUKgggN9WjSvOHZQA z0A1C2GXM6+TNySVoX4DA!%G}7I-zW)-^V29mA*{|mja>QhsgM>&99gqcO3hJ*6=Pw zG6F#eQ-U`@vcJ^QCPyigcqfxT#u$*^&ij75x;pI2Rk-=$F!^q~8=y&^A252qXNmRD z5qcST*M4gOjE<=3>?nJl>VGZP*|ilSM_fR>7&tH@(Np=SzwpDL;Qcd_ z$6X4f8-HWNfkiqc!C$fX@HxHS*Ko*)#lqG1z}Rb#fooZjv103C_V00TnowxCBwvE_ z>rR6Xv%4oM2ib18t79?z=m%k3C1~acJvN~v{MNCQ_pbC^2kOaV@;42Q;#@{5p0&=V zg_CROH7Z3Y&O@ezS%GTBVF4){U*U1E){Y(0cD=?*?noaXsOawf5pBTUL9G}dc;5~e z5K}AK&@kdfGPexk#Zi;~x!gII{A?5iRthe38qZbF6-yFQFxfk4l=nLR2UtsrURl8_ zXIj@LQ<05UrQJ@{PWAC)i=gK%+h-`!iVs~zu*4qT{x{|aT{xMYjsMqY7ks`42C8K9 zcqOW>V;*62=oDNZaWbg3h2p=VE@PC1X*QdE&`i^;%#~ycVoTDP+~2-x?dE{K_dl0( z;?dy=@;@1;+hh=pKm$Qah00MWJYONCC!$S6%^sOzr8D;dmzS9v$~+Y4Ixh1eO#nAk zOhJWw{(W1!?=`dhIHA_daPg<}HLQ&U=92pa%KjvQ9!Z2Mc>IG(*DkD+1kS5(#6RYv zX*@*pouOIP7%9Lh)&1()@$V=8HNbRhLgvY^o1*fWV(AOe^F!-7B)0* zC7H8(bVL|DtQPtx{%VNw=a)4rEY#tZnz!NezRlzNV6Ug)F*A3q$^4+E?@_%oEWvie zw}PLIUAU<&;$ zY|fJ@DnrdkV!9?(%@W)(S1{*hcezXVQdS6JT9T^Zr%-Dv&oopF$d$hJX}#Z~tvym( z5BEhbwFkcH&kscRx`&J$U7XesX(ksXpH1~TaW9UHYMo8Am+u|zm;9JPQO8gM>F_Z+)@MFf3YMg}hWY;h&u&9Z z;v8R?Dt+Do7iK~f`3?-Q*RSQq+xb6+T{tw9XSAR#Vq59Z|zK~R02<(+8%dt7U-o8yyPMEmTx#UmXt~S*yKYgV+SYCQ1 zG(TPc=~tCVr-~kdiaj{$mQ^R1|E=xjh}qH3QdAw}I|(20SDab;oy4~Mww*lM^Wk}2 zlBVgOQ9j|aH~sIDtT*H~qx}dX47j^e%(dd2=^`;^Ng6DTEs8 zP@m?_GmrSK63vM+_LS~gn_XM5qh7*F#Sme*=_hXOxxuilha)b@f+`e)>3@y% zB0(IJhL5dnhQ3QtCyI88(PUKary@Uf1qO!5cE#>Z`)*&K_WdHyU$~ZQ3-l5NVansU zM>5A+PRAa`D#q3aCk;wjvpvGY_{30x4ap&R!^PSnTS_Q-2J%}w3M%H&i!ehGUx@$#*lB{Ig4HTsArktA3H^^3FJ%Z>m zFL-yzXATa{l#4(bSoyZ8%tupubRky3NV1tAc5DbX??{f-X>TBdl}(7`tv70_Qw~82 zAffRB*UWO2f$;z!m;GB7I9oNl&5n)nJ2FZsFVKgM&~D?Gf-2df9M+0FNhM-Q^NH)7 z&l3!4HluiC##HpQM@zB>vMVA-dTo}RDhCzK$^p#RIy8>7E@_S=<5hRT?XMxzG5lpW zc!+l#a3u&ZM%jwBCdcDVM8!XVO9^TXG@M?4u(lipVES?yVsZLj7mX;>HP4^aY>t!` z#71?PmWO_)-KSVQ?n~u{Sqq*JevjOqGlClW>zMmwZFl%Y4m~C_nHM-&7p-(ru$tfS z#3QAbYya@x=lXg{wvQ7vt1Y}g!s(&dz? zo9yTtOE$=Pvc`p1Ybu90JY5rA@i{OF&biu2(c>zYM!)7*{21TFFUMerty_L(ishhpM5Z|)~ z(<3|Mw^m0X9o-PX37-IH0k+2XGso#tmSLruR$iw#m#6gr!&Znp55Q{b1X~f9gsK`? zU^p>TB3qdT3)|g(2Yy~X5HT^OwwJ1}cBc(aOX$gV zWqpY`OaI}K=>faHNpl+-*c7)Lue--r{Xf?o7Gz@xZYCtcm)Bwy?f5AC+PpsG`rR)T z+KaoG9zK9q*xBwixtV)Vv5&{yQuN8J`70XQW{}WvE~SLS^c`D*r_PpJ`GJU1cFkMs z7X=+ED00|r`_4`m6M%#Aty&Bu_a*uJ{hdqfFKq*Lek&<@ym&H!z{9FIAkcyYq;IcO z81?gZOvItYZ1LSU&r8u5_ygspvVNF_CmS(g+@A|M`GpDIZ?c#7yzFs&+f2E?fi6+` z4T$7O+*%Fcma&y-P4jAuLBVx4K>bkybUHFvH@=ukA$8CqA|XkqVaR;BHNUsrM`_*8>%LUd)~1il54hZ^*e{CDRmlfr zcEyP%351Ks@qPAm0{uneyp?_I$46HlqwLoHU_ARC)qY-gxj~6j< z%b3iW_V3i+pYVQQk~L)YLi3`%AHK7igym}V>~Xh@-U5J0s!L$yH{8BfZsV@z2aOHR z$NQJx;~i|qHEx2W6m>T_Hsvoe?$fmCYe_B2VAb@ae~e{6a#h1HWF5GG$`$)`u4%!R z4u!TRur%&IAUIp}J6fMRrGif%{Wd{T6^|ZwTs@oCRqp;tOyW5tf! z1qn{I&N!bLrt=dknpS&5Ef)YWf~c3PgF-JRR1Hvtpb_i#(;Lo9a;u>?R9B^(aC5#O zh~b23Rvj=+pB)a0U|Ct`J~jmXSaEli?UP{bv$e_!1nm2k_#rJ1r9KiF(5uDGu%5xb2a}sOxk{0}phLMhax|n68+K=F$ zk}o~MR}88@Td8nQ=*;bR;&kU2=t^%IL*N>+NO4wsH`a3!b^@P^^0j?zKiwH9<|m>! zsWy?j%Z|o33Iq0bBI6iHA5&9RKxD6-$Ia+Q&T^6t}UeBoJbL7ospQX2HfccioCQO^1!@2eZW z+*WwZ6oK>=jUMB`E$)-V>Ot-8_X7m~;~2pbb|iY)+LX#FDvpK15SgyH7JsKjPQ&1x z9{+`NveZ0lMxTjnV71n)IhO%{{3Mt$;oB?4Fg;AiNVbglq^J*`bnMZ=maQ%QT|S>y zTJX)Mu!4z46gkap%>xf&0r_vMC$!KV-Biz2e+i)TRO`T6grs8B!AtE`Ir+HmNWjC` zj+JWTiq5r;ASoVMJM7hPlH}zom!83c?JKKU3y)}IK{^^#?Fpv<3xl6D%>}h^=gB?} zlc>IHN;_%IEEHmogroT_buj`$xF#)&4d%$hl*&W7Q)s#bgVaT3F&LB4h_TS z;3ko`NhV=%P@CkZDa)I}1h=xrzq9?KfM~q1W^;hTdutJp5*?TBdbZ=EnAN&tc0ODq z10qXaXK9FuQ^Uz!V#gB-;;W!5Y#}2xo>8tl9fA0WB-F&2kcVQC5Tji}D3>oa=9O1m zvv+%Xe0kBXFjN2Xyk`|a#{=5eDZao0Sa8%8LdF`p&?xe$!_6I5rzm)xr;5O5q4FLQ z;KY5N>d0aBjmUn`)nO#Yj4zH=neNULU+|HNO0_5IWpb-77cNeBQ0w9R-~X_mAbIK~ z-(z!tZ4^%hN-QgpT@YCD=%7%Hx?MfFr5~e2pT(+8O{!b-_RMYh;>qh!Zm}&uRT~lF zFMi%wQ`0K0Aa^q>Pdiq!Hgrs%hy*}a^lU}*DUITGUZ6~a#}2F#ye)I8 zt0=(K2@_D4BNy}J*S~o#T#k>Q*2{|>cC_&Ed=tCe@5L!FHIW|F1$kf4lU1043Twfi z^dJRYBmnhJG3idEyJpqmjoa)P&Q5Q(ePT%3*wKY#q(a(CYk+$_)fb!>%q*rB%_zyQ z`1yE`Ol=)EWkp3OCo-8)-`w?@3+gri0SSR)^0k~sVO^Ot*8Zc1n8fwLeHYQ1h@=`= zK4PAVYix?8X}?r>EO9pADO|L~zeD0<{9pUSSt9CM z#A4vBS52uX4S|qZ<$25HpA;REe*o-%D=W$`3zU16{#K2!ZWgsPUbD~9`5#d$I>h5M z^5Z1+Mp}-xy)^HSJL<6X0mSzZL!yrNV!+g|yPJ;g?;QReM5U!}Bz&LqNbTGDP}Uc-(``TK-$tHT|S`!6~{%Y(e=~ z$NW2d_-2D*m+Na8he=7hBH{Sq(5RKbF~je9mPWtYE$``5|1qY5{{iN4RF=1l15Rri znSVVd@Y+~1XE+{-G(~h+zaLBI2h>Iy5&#Q{R32Qa;Fx__FNh=^>y@LcmLvhhF`o9_ z7Hn68?c~R=#>Yi5uUW?cXRQOYasl^URp4d$f1uoI7FP0PxoRhWsqd2JC7{_o!)qRa z&)4>#nBqZMMi|3_WO$o+j4mxDt_lPe&zZ{ho|M|PRx&4P@VxzdN%}oRv}^?xBDDt; z<^Ror3$9w)bA%N%a9eyGf4VW=a=uD2AzVBA?(O@ZQBni=i0#T{HZa+MA>MNeq$OUCmZY>s7XKu|QA4Ync9927WlCcogxn~TfvEP^#}VNFl7M{Awy zPWED>9W)}o*IV|LYKtz48ZefC|LV4eTTE~4wZiy#$>!5NlAreCFMNi&k%$FB_LkHy z_+bZP&cOM`VCMbp!B;N+vmtpk{7;K?!~uMIvc(|;g#L#_T^!pfQZi9$K`J~$LYR4$#?!HMuOGT zfS5(Z1AqoheEg3d+mXKj5Umk^`P@`IQPn`vtVC+T4}ST5hrZbTHbCT(#Xh${zI|`i zxl64>+B&w9h%dEni}E>hoVPwP#_b&ozUGP$X&KEy5QDB3hGiqVlvT$`g|nQ*t%&6& zjYZ^Mi|}12e)LmskH_|4i6{YcGtXp{c|amzwzZ=#zD2N8B)ywNE0S-pn z;k5)D=i-7UQ|k0mV+`R@rqo>v#W)$}IvDGLY%`s_nxYHc0!_*nwde#2Di3nh4~*^h zEQSHRbMvwE=kg(ohV1};xo2ZxsG0{mWkskbo0h#}>`0ocZ@a?wYK+PW4yo33qC_Ytx4myJLM-bikzvMbK)lC$+_eAx-q&nl4#n}iGl4@_n>eYfzpMK%Od7hO? z2IxbsX^`Vzxuz0x2z&<{?tPcHe>FRNe9OLkAz3DZls?0*80NT&ATxq62d|X{&&XMK zs%7#ko}O`T)@K18A*MsoQ=Ovkxz1SKE)K!@+NLy89dk8dKO`HB-#&S@uM0<2WfQ*Em?x&&YlH2bgBy3pzJDxtQgwG%{CW!)K#3g9|!V@5cY)!pzrO?#rYgW$I$graFw(~U2@dt zFbqWo01h<)suL&Z7u;QlxIj%%al>7zGBR3>VvJsT!W-S8f?vn^$fm=bkaVKxbg@dT z1gmT_F}t#mm`eORN*v#Ku;nIL&s@wJ_9h}tX3S&O_wcw=eZYy}a^dX0T&rlHkQ9ZU zkxGcB(T!VN8syIx{*B>@Fr$GdSBadIOrWHKkWY#+{mLjqX3g|Bad_g~=d0P9)o(Pz ze&JQ&g~{UZ;pB%IeHqfG6cZ;mPA*Ee4kg927ExONQg$+f^^KZ>!97k5Z&7>a|JC99 zE2=rTY6!QxghAS%|g2?)I> z7Hxhg!Sy8d{pQ=n84L9wwarBoLzM}ED((p)=STjYkCArYj)9ZeQHpI>w{GSU#MbXS zg&Ky{M@AG3igpe==SGJW{D$yLY_W1~G0)=QAC84UK`aC@FTj}=O(~vXk%)95qOgTX z9^*}(n#bX!I#xVoE@KzrDq$>3tifb<6=HjMrlxmk zMnhb=yE?r;%%Kj2cW(QJH)Ht2M3fyjZbI4|X^MCIgLXX5X6a+Aa#^o#m6M*!rqCDb zJ|IA+h+Yqp5`gV0i6C5%p%@|hOS6QNpvL}MVRhOt2zWx>h5$E_G6K^DcGm0gq%0_Q zE}B)pwhOaQ@{`5Z+)=o1ckhiB4dZOx9jErn2IUNA?n{EbrmPRjUTa1nGuGeS2MZW> zf-nWb>5?y`8NfW&o@?eKn^Q|@gdhp4ROgRzK58`k@__Db;lG{Ey)OJY4$R={pBgyqKqex`N#`&E& zKa1{I-N=4Mf3kxT44&>Jg$n>cIk>c7(uQaVnIjQ3$cJ#Y@s+F>S+Pn?X^3CY*Nx|h zKOEtoJWH5kX&yp>dg`J46KlB359z#WSKDHjv6U=q$LpuJWGW>V&PTyZu4E*l^g;GZ z+t@^km=W<`7CYk;SnX-TMR?U|JM_Pn0umTKu;Cj`5uWhfZ{Mm!nfqtjFpu==!*GG3 z*=uv+WmJ!h%-9s2kdCZ%YfOtc>=Pq^J=a0_BloN3JBeu8Bg5DHNaOLW!yXbvC$!bNV+~}v>*54_AKOp$q+W`3jI1%_H~)kKGliBBn(f_lE@NA1(E=y9d1zaIM~k5 z<9S>`>m;q?@HeUX7WRtl-WMXoO7X~3pP^XJwTZ@lTUE1yWck#CaC9-OR=F>F@kn07&P*!Q=D1cSD$Y!Bt$ zeN}K3QX<9_oNG&SeIS?ldnJ3z!nXK>+}fKF%q&l@YGmy3p1@i_g_B@7e2Zwe3_&cG z4yawHDO&vzd|Yh;dT)O2_C*Bwq)mkD$!CJZu^bu`2GlR5P*`dlpl6pYQOi{PCCR$? z&Ph!!D9PimcY0%KY5Qd{E<61*PkCcEA4p~oEI zobH>|IXaNBoz^Zkc`Iqni6J6XUkAJ!k$TH-`%`@kAnc0MMo(@RCs4qek5Z@9pswH> znBl`MlTvmB8$QYS&J#cn8Mg4N*+1@_|52m0zq1byu}hIng1DNrI-Ul7UDx^YQw*uY zTtC}p0Z;`%9&@QLo)6?BmHez-LWu;#pAuTK@|wzy$l0n6`e!)UYjCpiuucU^x-Ub_ zKrt&MR#V|-u2Ci0T@H#8=%b!umoUYS%u+rWhM5fw>~ZhEPlGMCmkpDXzf(jgI(5B=bK7MMVHR}d2R z2jAQ>Dwl0JIU+h2nBC&&xxRRjVe_tUHe%#KDNX}|h&^fmvAnB<`(cEc8!m@q_k4mz z#i9kipy?uOeWi$ps2Ds%u?ZktCO9_|8N2j!_42CL z^nepS#~MLGx|k;p|Nlk$M+NCRQT$N|8cZ~=v)f|^Qqf&|XQ}4;N-f_}rBI4W5|Oo- z>41^pr_BJGiqgt0dv?F_kHw9E{H!Y1IF8fW(OFP4&F9%P? zNqaO9KpJq76(F(YPf@oxck=~e3>JU8TIE5Bo9o^FxHQ7TB}Cq8HihCb zPeb}`yOp-Jg`BL_xcgeNzVDN)kWF?y*76^x$0Q3ul9%j%$5cezcjWv%G)aW?j<+WB zY$SIYB&hO%x&RoU2BLN#*qmiwjxI)x!okHrI_Wdw?Y77Gj;vl#EBz6dAon?|8HL9g zdN^MNeW}KSdDqTomtxcD^_TU3mmLwZF6o`gF1+I&y{Gc@x~)%k!{w z^Y%P+xnY?_yA-<*q1|m^RcJdNzQSlvw?Xu^L{^4Pl$2YRnWExlsVf!UolS0 zXl?n+&}iYI;%XDUxYPD6M4LEx2g&WK-4^H$R92e1)H}U-OF`uR1%NL{tm$!G5td>` zRaC47z&GqdE+5p?6$-0KZLFYP5*`n~YW%EtL@^3r9Y$ z9BC#&3l3qPDZ}{V-M&)WHaF;x+}~p^MLw6P^LK9--7ITxm2v3PLd;JN2clu&WF*DE zT%8!k#lGXF+dKC;@k+Mf!6mh9T$t>HXcaqz&f=0Gf-k-(`+#g+j1sgGz6pOGhsFaN zcpTjcbkjmZw{_kn-MTI@nN3{KmRe!u^#tP`pbnRdD4O` z&y@!Q#M7lgNV7~m&Ts(axpluNA8aO*jMScu(zTB|InqhLR7f31oX$^+l%#^5#;Kv; zZ$O58$zOd=*eWNPTghviQ^^YoT~l_wR(3fkKAv%oZw=yf1$SO>vY>f)X7dZ^oysY< z483$u3`$!vDw2c8YsaIrfdA}ea9aP5HF36zyZrsHzKcIqtEtGYkl`T`y`EKnLlQ&! z??Wj8Bom=~=$yN3`R5D?GIAkH;w6r@wRR`+mV80x7xNfYZo4+@6}h*h5d|V1w`0~a zTa>s`mx%kD%;{l2ato#efIJcxr^kMIQGbQ|roH|1&F>B8F3`y6M05SeBkEcBV~AdJncv*hPF5s>$l`lGV$x>28`3f3q^1*`6L3V2>0H@a8NU$OU+Hw9p-%lR zG}e+Gk*p-Z*d^}ZWD*~gpeb|DQ2S2S5zLwDZfGbIHB3k*r_Vn#G&{L8MZZj=lMrmV z;P3xa>^V`>J^59`twzA(IJSIHEu5I+=p%6iHAFnlyzx=1t5GQASY@E(I#ApCO^fQ^ zIMpWk9CvpkCXy!x!yis-%$2H$Y8Td5Jg=1dU;xcB5 zWM@k{#=2ZHCe=vX%I{OSKO94n?p~4K;97kA4^dFaFH&XYVZkrlCm7E;KG0dpQ@7lZ zJ(|r94F^}uQOc@3^Ry&A?53K^o-SjN^->Vsnd2s$+~kLPG{ z04^gpPzaxZl7d3bGk?M9`Q8YV$x2X3xyx>L|8l=o>6vop;Se$0L9VeEohZft`}<0G zVcD4QeO2{uy4lFCBfpZehn*DV5ZDApoVP6NlPHuH81f`!yavoaV%8#G^9XJZZ_5Om zH*d*F@gNuur;>7Ra~0yTH21{w>Y~{e{ThL-_^8Ir$qT9J2#WfvOv2t0@`Q(0rmpA-L_j197Zn@TUR6 ztstsh@U6zsD+QA)lkv^fo1-?X;hT2h)0%hd_e5mjdtO5gu*2SGeLW*{>QzEnpj(<; zy>ELw{#3vG@ZW>?s4JHK`F{Y?yHKAThM;Der$bZrZTeOd1>KUxO!^S`T5J)U>7b}dMTJ{o?yJrGyw?y|#@D*|zcC`@kN?%(PPf&P_yrp#M8^#+rZ=9wtcx*_;b8VqvUpb{{Yc|36>u0+vZo* zUM*QcfrofZkMJVV1%l+t+*)x7LMlKS-MCL$7zgBL^<`T0w($Nf4aWx}p3f(nX))^b zRN!Kfh@A7mUbb=rPwI!FPlXz3k_If~TIf29`WeJ)7q~{Jyic>K6C_BZWg1upj{IBQ zAwADBIb6tfN*_)BhMs@fA3sU_k@fMi^jKD%5)LM2qM0Gd)*Q3Uej5qpDEZIOFSuo;qtm3s&ui(O7`+Ebh$zG8R74;YN~35>zefU-&ZLH-C^<|s zh+`bXxjs?MfWe)3LJSUfAR zc}6+*YqaKRJe`{m;Rn<) zQ&9i-4?XYKG1qO%d9_odAd62JB6KHzuN*A%(#Wiz+8IL2fry=6j%Ob`h_&X0E-EaE zEnc7R$KaL_*JsJ~7!s{^ls+V_n3x5K7Z6o^q)N5q7j#S+swCL-go`ZmcW{dMpMLvt zx^`DlSvSaq6w#i2x*P|q==j=XELK`I-|3M2{ynvpK)sb};X`&Z*WtDpt@UNDRy*-q z!{Q5Wr=h~3U$v0hTG>_^U~NxpI=aA09~HoxJkd{?EaPT$}%86SUf-P$q|TP|0= zzY5!|_hf`ZJ;EH2Qt^b?2`at1q$8pS3e02yS^DA-J%&jKc%h%oW5(&WzPUOkI)O&Oc=G(~P$=w6K-fSGwl)$-psA(;J zrbGS@S8p8^Ror$B55oXMGn6#LFf`I#0uC^AN=Y|Jcej*uBi$j=At;S>2?)|44I(Y6 ze&c;V&%56D`|JEOYn?T}bIuj}+IwG#GqN%40~Eer+avd@l-!x8o32g{_fe}Crp3% zWNr7f$>Q08@QMTqGugOprW$S&kwyXxbWW$KB-9Y(!1TnF(UYR*0`FcA5LnlFB0m|5 z0Qr=iK9t)%anX|2)Lfb;k2E(=_Lz`!D|y`+w$4yAgq|PHhyTz|=VE|ow!J%2Rje*Z z<)?39|BqQ&6q_hk$n8Ri5)Ijx32e?dg@oGFq952h`}R)l^`b5YNenpPC-u@6K&W zBUkK3TWCyvq>wk&Tis9qLnDu%G>Y?p*43a|e0O;N`QbRDDfqi?pXA$J~`6S3uU z(LQRw@VI{VF$b`yU{-b=ld*OFPvqZo-f;ep2r&Oo8Z`YMcZmO_ZZhxskEf_qj?&&E zB!YvvQAF+YX!zV8Xrf2A#9Rmu3wRtdeFjLU=h|2;*9RllD zLIq5I^Bpe)eb}N=oy?Bm2t6FzL#bJff0DPn+I%Ly9muVbE@-z^x1{e1bQlA_&$Dz9 z2r6u6wOj`Ju)UP9#nNeM^Zp>7D4Gw zx3D=HbeQp-KZYIf2Xb%xIaiZPMJczjD5ynfV2XI5XG1;Ldyuodp0-{JKX9dM9hOY4 zieDTWzXOxp0 z+AQ@H@#n#Oe*qHcR&9_Mc$Vm@CyBry?#qWfEGen#f|>aG9x`1t@vqp%T=X!rf5N1{ zfa84rfx#jo`;uz*sN3BrN1n1edZn}+X(T)fU6}XiMr=PVhy1xJ#}jeEX;#w4GsJ_{ zqeyiEVA}RVf)&wBGGX*Xbg3z!So1C8Wm3LKi*A-}+(VKqAkxwB~H>#hz4Bri0c zLv2X>KM3OpE{>kI-hRKQr6w_X%d?j-Q7`V#tRV?Pniow8h4M6p-qd}%5ecmU)Yk-u zpf(ulk0xuvbY&$(1n8Nz!vbB6RKqDhL{#MGI=o8z=FR0EKD2w;O@TiA=M#VuovPAQ zo-S<|+r5~5s7pWzpq*xwf%#*uNjUk4`Jeeqc*Xj+sUoiw?7|+Vgo22)IYnJUp z`Q@`;i4h32s2$<62MG}XUI_+{W)0dvMSk@Xe0JBl5jyk}n>Ja!&j zjQuaze7BDA@43BI&LIkx^d5f!p8vQYe*xFo|MiXrpq!(D7$6|Z7W$vH^#AdW4ofL+ zJR|D+vIRZo(J=cT?`YtEy`zscng9F+(x1;OuqhhxEzIX5 zMQ2BA9rN5?=oX*eI-Yzx9ZE}`^nQZYg-yq@lM2K17>gD1utjXzTWfD?q#akC4 zM}7K&okJ@Xdomv;b7>A@Qh?K}9n2r>6 zD!TVe`TIUyHRl~R=nb@Dc$190eZtmPFU~;xgqLfDw zm-H7*VrC3soh535w^p;@G2}=u^*RT30uF1AZZFq25QU|sCXL;Ia^6@{n zojd9dr=ONb_HV6(3*Rh@9ir2@kgWux7`K&KglScf>s3_hemO;&`v!Z(g&B zXX)`uqb6^Ze|Mv3VH5legP0VMUzfjrWHr z#YQ|4WA`*IzGD=%{f2c`(p>d~ zFU%yhD0iwmb0=Zzi_JOrezHb%e0x*R(=wTZo18H=I!S9 zojGSAaoYu72^tUH2W;e&6rVc;mR;mSoUhJY)TcVVE4M#Z$#Na3By2k7S8NX}W^fd@ z`NI6CeEF-Govq-MSY`>DmNG_eYF3Qb1~l`Eu=F$g2^(<5pRyb_ApB7>cBF~f!NLoJu} zbqxSF)8d_WtPhY0uktH279Td{GGF!n0JAQO5d;hk3> z=Wgmw)z?3EJ^RmZvd1u_z2M_D`HhCyQ0x?Q6tB{jz+&9_9aS1WT(x{;ErCV1wrcfp znd(az_R;Vb|INN8bnGPI!S|QQEFuM_t5m+5-cPJ+2f_t{i(qPsyj8w|t%QWrKQ8Ab z0&ffaqm!Zndm<&I)Mx4FYxCZwrA_?%#F`UiH}jtl?4TSxzjfq8bK&s_6<61kA1}(L5}69`xe-I$R0urr4K-v`<0Hq3}snRWCcdib$lj zAoe#(4Ht%f;z@mgA&}|y6Nl4`OV3icDfPzbqK>#<>6F4sDP`sa4XIy9A^~CAUErDs zS~>d=HBGoaICY>LW6PSY+Z_2(kp+sGr&XP-|Cwlr4KKwis*$$S>DLUjQa|ylrg}Y< z&TR@$KbWm1R*?dd4aGrcWK5+I*v}tveuRiuh)V?K!;uhI>y0GEVYN9eq=V5OWlZ6* zBVP%V%{Il(z!e*v0J{D0MUP>6iUfV0?v0cfG`WvRafDRa$(KexR3jxyG>Rfql-uqL z*nv$ti8U2@kS#oWNr4r%8Ls-x+y7PCKs2rR9Zf2Y)Ae>nV!OD?QY|q^Ws|uNirsxl zP(lDEhq^ln=!|K2g@z%%_63b%+hhm4!eUsBw2fq>9`#yO)Mjz|^%oEmom5CNeL%_K zu{s}?t#K8BC?+nG3y<(hQZ#!a+X2ER>%329@12=PQ*2ffdN>&>GKNHCRb+&hkGxw3 z>AI70*?^=iG*gkzv+N0NnJVv7FtBS?2_dPwY1z|It^8-73dmq(W4Oy(9sWt7vfto@y)N~{pI_vx>T1sRIWr%A(B z^ZnM46in!3p2yF_2%hs0Zo(}4EIkA6x`04?BRaLNfIvHgw9W0dom&TepkLc+ulvo# zSCvo;ilJ%dD756UqR>Gc*(@URglUqI?<5>gDa=#Iz@BIXib8OFr5Cd=_G3P9x7|mM z(x3T#eUtMQxtbD_q_%F{Vk4cj9n3q_{JoOLO*HQF&6oHBJnVHca7?b#@|6|mOt>U) z)GV~DDN=cQhMDe5uxJ;wXqBnKh(t4nlD6-S*a0572hZEX5@N0@Y}Pgat7^H;;fy6A zUVvBNH62~hy;tDIML(F{bM4TekX8_8;U>|qE@7YFCIf#82_O6x$Ba)*?piXD$q%Z5 z@Ual#gmLM&v40b}S02C080&tfSR00EkHJ1M@6w$C;Z1q(g%R#X-A6Q6C7r&8x8P*J z&qh@RV#9kPFNe!zk0z$1X+t`xd!K9#bnO=V7L(mxa1+JYU2cZy{dv^)p}-JtqHK(V z342&ik!WcG%26#5QRgK&oSo0qq;6qj4aMznBKx>=OJ{I5H_}sW=M+L@m5Hop1 zl1m=Pzxaxdohq2Jdb5BS!1V5`F5{uVwgicseQv<57Jc)?N)TW4W6p}0F(6)rXXpnF zIMqt80?0c!NTzwXRiR9D{yWHfboTPs{DtjQ&iWM=$tSd5vlO;P2k)s?pR8Iq+swx? zKF>CgHIK)!S}7WZM;7jA2$McI(dnVLyAN&8fMIpX4vUbK!!nt*>Jx1 zoc;6Nh@NRxOD#%Ejq}URI|nuOwA(;bJiG`&rDES;^{op}*3qhL>qR<5z`-a?*iG1P zwnO7e#haxk>C1CT2Xl+#?IN8-cxk$@@obJ8P?0^Rp_+M=K|9o@6-l+SAX^bIKg^tA zN8z#U_)~$(aij9oc)hSIu=1u1&cyG!0eye?Mn%&-Ao-ACvEynOvaS<6)j$M+EP(Wrp(6y$(c}mXJT|n0`ozM*sXpB z90~mRt@dE&S%SedW%3t*r&yAXr)$Q!)vr3q2BMH*fw)a*QojFSVSAtydr6(wO(#b8 znQZuzSRyg4?Myb^_MFUx&?%i@;7a`oiyF&*5DvB4f=9sTlV5X284w+GoiFZbTQi(l zv5C*T-hGgOfA8t3G@cO8Z{^4WnoVGP4~}Xx*&Kv97t`@StTe-AEf<8r z(kIwBO3)g)^kYx2Si;q6A096k`kIO*gkyf@w{(~}5laq@Os!0nYjg8IND0m|N+WO% z0@p6Ru&}bGOeJMJZ3Q=`xonkHiDP+Ogx6OR)`a1n!ly52`OC@>&WV0zg`($QC{33x zL!1~f%Lax`+w0;LXV({Zt0R`A;j!txRn*FCGqQ?3$UQ4ZrT84FH;IUZzta25&i#jeDBntct#^trC-F;+5Hg+i3c*L~i2nxPE#sz7ND zA3?oPxH+YzBYlXm*Tb+BdFKL=j)I>krh-P`aHGjH)hU~gw+AU!E~?FbsbZDBuLUtcPA_SG;;XVr z9Pd8+_i8?(vd92Y9PT3=f#h-vU4!7B_?xYI^gr(>vUS7 z!jE`)F1%e9gUusDs)?7WJ2=kHxY;jCM;{DhaGJ5XkHC9 z6Ti6irl_0&gQ%QZIY93ZF(P>!-lj1-X;saW>O4B}5aYnIYz(Bh)2B&2u3hVSn!wxc zkiqiJGvdGvmn~|3bXGdR+m}&_=1dt#B5>I#5W&gA8=4s2f{mo3_B91Lq;euLtfVcN zb)ORMnWH^iRb^=xML1x~vJedzIlmHS%>U4Kd>)TDUgzi4wk-2^rW~E@cgmd0 z)r{K0IUW1IH}e{S$k#Z+UNkDD(Gxs7=nZeCstm2H)%5t>fDt3JN{>cs6YN#C8J zwZBW>JF9Sg>_Lzqo3Gs4S>XIui!y-$6O+=a)eM(`#nY)YEq`h=o2}Fgt@}kt>HwvN zh;aoFsJw(5q1-6LNk(i#6fPYD2u~1}XreO8DUS>@*R@HFwbr1O#b~J|Zsj23`o=>c zC=>mJ*K6U`fXX;$vvWvxd7MPNgORG+BU)2Zr`Y&0RYRyJTrPD{#nGdP za?JA5?^Mda&lyQVG|iK25jr4$O4xIYxYC)9E{NB{R#c4o%p6Ws?W*sp@XT&z9x-kn zlYfj0V#-eT#NxLfNqcsR42`BsJYW?oPc7+uxoS{XI#oiZ@KfZ$q4x=SCc5{LH&YZ^ zQL#ot3Mo@cwKBXm{vG?KCqNvv8AIzLkq=dK{Etr^iq8H z8%@t^`0fg33(c8Ra_zZe*xv7(FY3_j*Y&IS734ENuV|?mFKQ-5Dt3`=;cz;_ zggi3KL={iK8L0>GToOp(vckAg8{&yP2aM@C?k*SQ2~47?1Ah7py}e7FU;a=DozZ@i zIyf#tMGr;`UYN6(j<_@jaqn}Z;()tJ0*c0_-;bxp#MKP&jw!IKTw05;@Ustp0bWqO zBr4mGrvTYEa02(0>aRF@Uwpj(T($RF7!3}6iJW62{mN_n?k@nhdGWe#+H~QgWQgI9 z>)&=NA;B5MH~IW+K6nT!gaMKd0EA*V(xRLyXtV}L?eQ2w z<*JpG0bm{WCcbLcxe&s6WOy7u$|^5m<|P{5H)ew2OH?z#>^EVy{;Vy=bHaAx zAaFvDRvA`znI=1R^B_<%SR$_|Bc29ax2$O5`RD$stSsqyX9SDhGF0z`zlG2{G2-32dhwEAekZ>JD9D~ymEmL!#(uvEMGq31 z4$*&fKx0KqCpejaQ8_d99w0gUI;uq_rXL+9$_6L+DRMuoB-q}muhZ|cJd+|wwNRWO zf4xln8r}-$Jd%;c&Ln1tNv2&JDe(NU!glCHY}R*WfuBe5`k9}&{njgrJ@v+7$84-v zske&b%LF{W`=~KlC*_(cpXEtknI1#g4_551zIkzbAt+){#r1JmafAz=_mVF+b~(pQ zG=IZM_%9&+zv1_J#vZ>NE6~>L>GIWR9_>Q7co-voDZC{|M--vR6PF@x;^cv<4rW!m zOs9&6-`yQJ5OlljYkUuQ_wzTAJE6O0ILn%@5gP>xVC}b52w&B)^mU|t<9IzG>u!Wd zc`j^BO9gklwc+9l64*@)xpX{#u>VG?kJo6>k5r-3$vEzs^1rzZyh`IbOY6EmpGi^E zflBP#+lc1i;75@JP&wvMlPVrofkh&_-UmY@uc?*Yv$%i#G0NUz$$L0dLMRQBMCEmD zgxqk3MJle6-|KXBj!37u9V&k`2&M{lZ#K3pr#@8cgEv7{xP${l=4}VBpQ)k}y$YsCALowsPg@Hm4-`%j;FU@$=#7h}~+@yO8M7 zg=s;-J(_2rMN7XGnw5d+@-G9%_&o}nM``*81v+PsOlc^)4tf@iv&X`Lodc`~|KOeZ zK9|~H;q&=}HWC=JVIoqQSze2Ww-SnsOpcqPunvD=-H-7XFx@Y$i=)@t zh`S6$M7u<{H3fA41^na_FSsuvgS}8iTn2fa?^n(QyjACuH@EvGdG~c?5RpDVoJxI? zFY2Poa#i2P>@d>gUFyW=p@e99Wirf~LTMS}ll2o56@6*rf7awhKOocm8 zZy}FprO;LvAWv>)3m56o=}A(?mEu5?CI88j{bCGQdbVsVny-b%Hvm;g z?NtX#*gTOcF}#0St_aeDS@;gIYgs}JBg>yKQX8c)-B$Za{Ww0&?-xUE zW{M^_Cq4@^j6w$0ghPh5ejI_ZO>{{}8q%_L(XmTHOy{R_R;0}plRb>L?2l+;-#h)h zWk#LyCI!M8#pLR!&-yjziXqTl^{QhnJHa^xa%?a8PQ1zS;0fq32F6bkL?7HuP%vwU zhJlO$$U_=NO8)}HQQ%ZX((`t;d)ef)X84czok)TPDxyf@PHu%@zaPJ~q~w*&ggP}i zz)Q$T1$G6FQ$sm@@--CP^zb^;8h!QmdIJP9KUvUiNNmD*vrCZN4+bPEak@aoxc&m< zupJdY*}2*ze2FGDI{3n9JHYGaaahUeafJ%d_U|;+P`*ldIY*yt(ewZB@AI`Z?fNgQ zjN7X}5c~yd8Y!x}`pW$cEmz;#dzQAc%`?-^V-BK&qz?hd#p3lXhY@(U3e((Mqlyji z^kf$dijO%I(n6u{7-U{sDUHhDl`*nM`aF=x-C9{i{n$5i7>n$p5U0O~Ze9qez+KY| z>tga*XKO;8Xj2i&Hmvd%sh-%7oQGiEwlJJ6#HjNreVl;bQ|b5k#C?*)9SDN32HyR> z2m3;E8}JJ$@BG%nU*A3VZfgQo=-v+H$7a(67+Lyd>ZJRyEasESG$u2V#%D&R>9V)L zz%k*BFd>*0Q*2=wn_CXl_^h(}q!f*$sPxIib4gjTBQWtZ~9bH0YjOA&lFM|-38++J|RXN*(!v7o4?Mg^QoA2 zI%|$Hhb(AZ!a47VEehR22KFNz=@=uc!3m20daKwjzT0yHAv!7@ZO;n2x;lYSj61VN zAv-t)CYp1)?_(?RrNn?5I=}$~8HhUrTC~z!<;o!naj(Rlho+OoPOxF>zZPS1OUcM) zfGXkwIDT!o98g*+C*x6~)nlemMUYm4Rc|k}co0^~cNEmmF&*!8hwDUs}hF zfH?->(mpyl5Ia7UG!oMe!p5#$-QqasE`UMV{TRD)QnW-}!zbh(0ea$vFSjnM@_2@l zAiAL$jy|=)zI&3uHvx^+r1f`>oIjl0GnKq1kvEj^LP`8e_E)%_J852sl)4I)A)AO2 zz`l29fvtF;qA2!^=jd&Ep@s|{e2oH`;9hBfG-jI4@85sCE#-)ROm6Qarmfm!#va8g znc@9>?Zwv-o@p~%Z28GV0Pw;BCpj7HARbcX`pa@$Po}!Aq5pOTXF!k251wTGk^!Jlx?k&*X%63ITLgr^#!tUU^?f>!Cr}6z@d)ssnjR?Ve!w`1<^qs zN~ca66YhuLsHyh1>wfdFalZbE5|~XTBb9VG5_-yw&X+&di!U@dg|m_moh0JUH~^Je zq{^Dpyd<IRri!b^&u_B+=b>#>KW$O!+zJH`8S2PUu%4gIm<(kCxY#XqI6#bN zz!Fa-gj@fYm!g36D<4(R8(cEJRJjz|FhyC`(aMxJrg!|)k6OL>)`!e;g& z8T{K**MWyXVs+b;kzA%+yEu~9sfJarvwO$R?l-Ydzjce{Q|`B`j17*wj8&fOFKDZu#RO4h@}w+#oW6>A z*SHtRXRg_k4T13ifa}dtSHVwGa6Iua6mZbscaKDJqLXK56a(Ki^fs_Ie-Afg1G-_} zGQa$y*|s4O;P72i&&(xf6>gGA0av1HNs0VYF_YL>bLmEGl5q05|o5$O|y zoMBW0!ic+jy$5+aX4PfJ;Y{yD&61Xn8f$pn1Y`KWS>*&WPy73$p_0) zvZO6k`2wHCuvKkPMiI&fXF<02=?Ncu|NA|~P&iV&rmZLI*ss|07+;jF-f*HE?1E5Z#W$Jf~u5;2m3sHl7uHX???s-EMr&sbY> zs^Ps;@Fby-hvH%|_w&7MtpeD`3~ClgozFdd#j~c*b-NT(eu0<9hX=Mm$8~RD#kz3! zC1ifJwRwcb26@^avpQHM)Nqut&?Cw7dJHkOt@kvaUtGQ|SH^_!fz@{|N+j6xYvv}0 zErheE>6pk?n_9a0g~GCD%@a38*u?i@`FiSS0jF0?eoMo2y&H4g4dQegvb2Bnmh!#Z ze9LZ7#Tp)J4kl$79sREietbg(2v=!s_1bwIFMn^%*(@w9(d9Cr;?&vKz%ug0l<>)| zh-HFE8=?>G8;{BOn!c@aH5q_t&w26#kLp1r@So>ExsxoM-z{Q(arU3uNVt9 z`K(4118ILlN^?0petM%agzK$=3;(c5m#L)JMuDWM09$F>Nm1ie^gKz`*GA$mz;|U%KQdK3Rtag| zLfI%kiRN-s&`Q@cNwh&FMMn@zA`mhBgZ7#*8hJhMHbmQEY?Fp)A)9~7|UtNFwb3H zcyi!=3=P_!)(~M?`|DS>J~Of6LR$qU20sI6rG*YRHl&@ppI!+qkjk_M zURo+ebm}sn3psu_7_5FPf@>7lG+>88X>EJi_v697hP|o%YfqU%pL$<0;|N_v_i?{^ zM{VM8^PiFa?_?8+F9Tf~%kk6pnZM^L8rhGp-P|kL2-}K7e)8Vsqrzn>T|$0g%2lXF z-=}TNc~baHvP(@p_D_L~1u!{~l1=_Ym?%C2_FnLMAu9VRsZduCaq#L9uO}lRL{pejaS`&6?zh-Ija_oKb;3#)d}=iOT88I+ zc^gBL=)#yJ$N7)rD!>073MZ3+2z5l`c?XY3aiS&_XH@(StvDPkaJOX+i&RqAeY$%@ z7J~@Ir}Zi>E8uo`kK_7$U#jvNCgCbgnAglt;|VmQ$Y+v?v%o4Z#;M<~ZQcCgGY_gX zS17Z(j4T6N@kAA^I-20}vuRJOT%GRRy%M>*pnobauI3@>Z+A$DKE}U)`p!x0U9j+e zeQ1c-E!O_cilX4=x0|VDK)ZzH&)=2L1$IWs<|?9`7iq;EOM6yc^jY6YqapN>b(}T7{Qi=n$1#(7;Ke+ z*N2mGm-ZY>tX5SMW$xDa@3ou35t)^BB|0Vad8Us?-=`>^^25Firx3`bR+1_HU7$p@ z>*gso(3%{CJp*>!Ag2}kzV?pFgKtk}t8#t=rSDm-pl2dq*aw!de%1oqx{n=09~im;aw;wP<_)^X2@9z>R#K zmd_LKe~}q{BeQ#=ZH)(GR>ke`QD*GC)$a(xb8C7!Co2>d-|PQYaKIwVzwuxwUtl zNrKbOjNBfEayAm&vUNwz#m)@VN))6$5bkJ6Fqb;XZQDKib!sZA(`LsqE!B+u=FMlq zXJvei{pjluJAX3+h+TyLxNcI}!*#XqP&ki+Sp!B)wl&ZkjgMI?YA}>NHj)2KqJ>Wu=@uWp!(gGr zCU-!rlB^9*E{|cRiOke3-nx4hjaqzwgBMfAA;}cJ;vHFB7CP-)g{PvN{@js=zkg-1 zAmGrhzy5l$Fx|myo)YQ(b^@R8v#e5L?kB0gfUVQ3-^Zw~x|;J(4I&tuN3tMM41LCS9_{C9aGuhCPF!kl~kW5 zw}q$AS$ow1ZoGzmHmTsU_u(_^vU|Ci_=8h2qoUK$D}n@>c8q2^+7G9td|RWDz;bKV zO_nr7=l1ENx9{&(ttL1VDUM=ZSU8WOon!Fu#-2cXOOlEB?cs<_BW^S!YZfGT28h81 zc1Towp)b_;hBV3=P3KLrIkE%1jhcV`&ort&{m-@0eUJZZ`L}&mCz_-5urskki z8Rba7${$iq+Ua=hoL>9&PI~_0U5`>!!6st;Ay{;8?HLeF;?EM$8YNGC?ofRr++Js4 zXEZZ9P+W}IyKt_)>t?o$fgMweS}By|g?cx=cfSyQ02t_rY@p%kJG? zx1}yrwJg+P1uLGU0zz*P)4!*yNxL*yAKO-oGE7Q?KY`$Im?=gRD$Z7a&)}sYr7dB; zXu1M0S|v|JxaRZ5zsg`<0o1C9e+f2>spHUY`-#6El{X&#v6}O1n=s~^BJ#fgzhlkg zKZZ6R7hnnEW+cQK0 zw?hvlvtc`e*_0}c^k=Q@+-u@tsD8~Rj!ed8dL9JdvWV1jgEgR`xf6XmsFoi{Jot6B z;G0$jm!UDjq`|);g+!*yd3j$RmqW3{Q5H~t0Zm!_fkz{5geKQj7glokyQ1#AGl!K7 zE0FzP>Q4HZxcYc}M%xUV{%;GbZX)L9{sKU#;bCV)#Lgd6VWbV4M|{7t#2%I-6^3J) zA_NzK%Qce7g_$;MYU8t@sJt0_xS`#+LGSTn{tW{^-r~lJ9ywu8WZG{#<^-7SN!7Ts zRq%a|Wd=~6(%ecRwY(Y06WLG`H6ur>K?zaIKpLjM*>`m&!t4#1?$j`pBc{-Dqtz3g zKW_Qx6tun`q8S>QY^6hHg0^4&($1VJt1X1~T5}^Uzqtlnx0WDEfd2LO^i$D)u&S~V zbGWjx?aldCiH(BqmVq$0)eD`WR8BQ>fA#q+AR}8NBSqv|ib`Z_;O2n#1NZ3sh%PZB zy0Eyd#d*F4{7qQ~qGI8UgVM8Y{dD^I`0v`y*v#HytAx$Sswg(d{{Gtmk zzC4d*%Y&9zSjBW`nCatK;;pPBn?q)og@IoMIO zqRnzVchR=~_))T;=e@W8pPm5-G_I!MN=+~5-Y#eA&+7zi31$T#FB+5=bLL1TUuM4? zQxl+e@bPPEV}vPvdk-oP_5PP!anPTind$qzJ<&76$!R_KJ&_89Y+TXj{=x6KX=2nM zG-JZzFt$d@*Y2)y6r8?J155LZo}LWZ#44{tBN@yg*3~RdXe~{f5h85jlz6{pHNlv! zSaO3OV0!%B={BZ9ov%di8)RV8;eHuKxkf5LDohNSV$31p`BuLdv0rsrm(3-<25M7H z0V|-L5vT=ko^7Bo0XNQdetGL}2{fU@j>ELV$CX?gCo0;nMm7R`R!t>^R1u-Q?xOo;Elv=Aj#{reWNEwA#58 zWM{@iW3oWAssXIYTF<6Vs7gcQaeUNXVzwi2a`>X~Dk(yvwulf22qmPEIE7Q?FChGk z1eP-MKriye_41@bA;hC58O+3h)D{{T;a{R6$ayz~VooBngI!J~y_q#I$IUvAt^%o1 zODkm0i$T@Rf{MY3`&;BMb2h%-nf8(N3);W}bBQP$-XsK(V{Do}B_T=C%Q1Mp24?Yn zJG{W<+$~ehLTPYW0GbEh9+d(Gf)U+swUd7J>flkM!w}~C zs?TRYM)H@DEjiZVJW6tDWx+u#N-f^D1(nl5xca3nW)?*mMZo^fydmJ)GWYxGip&ZP zSG4@-&G~?RmnIS3X=BfXyN6D?AXQ=CM?chs$=#)aPI~k5q?|1CzB5dz%EE*Ap64dP zQjKn^n>ykVFuqcK=V>9>VN74l&jX1fMx-n;E7)B1kMxObYU8F`bI~ayxiKFKbIv^b ziZWxGlrlrb0kOq>h_8mPo#f3q+(+Te@t#QwnH{EQzx@BSE*;;`krTY9$)$1Pdc_JF zu+L^0;Kf!X`RG>8;Z$c5^14?!7N`gML8;NJZy~U0urvF0{-=iYw-0E8TaW(oUuy8c z$%YKD!D2A(GNiWPwC4f^Lg;+JefmnUyFLt{|8cMgW@pT;#4IN}?|32^4rZ8Y3s--d z$B}q%muSCHwph1eiN!er1&)#N&N3nNL1;i5_Vn#8hyNDge*x_yKLZYxz)|xjwh;O^ z(TMa|28?9onG6^YBJ%!ubD{cxe>+nLb(eHYu?ohxRcUNEwtZWw1!Rk>cl3$p*^%n+ z9pMBdw}rd-c+VVwO5AtaG|EuJ8; zuu>ozTn?O(nON3pz-Go~($9?*W}EL0mNy@|>uMa_mK_tyr6Qp)VzyFAs3vkj<;qmq z?>V_cURVT~M#|Hp_XGdtf&V40{SUhE-^%q~fE&Gh4Qlafe?x`GXhLQ;dZtH`pY!MK z%Lez8{p$F^{mx6N^MZR$y5JgM6&m{t=8JCv8Q2(d?yWkI&=x2I>)?Z1Uf07pRX7|X ztU@yDYBl|#*Gfws2p8eRQPmPmL-n%%8Akp;H&2o4eCIgWum3iCX=?_+#O;#In$g+v zZ4AnVqoFzi5a+BVVHNwt-c}P}|4|T?tKAQ3F>+(qw-lnJ2hoN?iImOSa`kofanPa! zC?bi_+R0+>j0HM`dCucQI{4I?(<4H!6L8SJnKKeIn;kKbOWQ-pb>%hi)JDVQ2w@r- zT3FbZ1&#hg$;%`YB*(@1qV~xdM5loH)DI@vT12Ih)O{+S!N!B%QileU6Jp)KqhF4z zT^}X=Q4QF@+4a#~Ct59YM}wSE`qa}41HDWyv!h>gF>CBOK0dwa6xAwh@9_A=m1@89 zOpiI4=-q{b^(Q@D5XgjxwY*PPQZX=i0%PRXOl*HmNiRdHVYWpqZvoV0^mvzYW~&t@ zf|+;WQuQe{mk$R5j8f)7pcPvJFIR>U(wS{;EZ~GBsZM4Vl2+cYL}nj0s%vf;wpPj( zUQteOia8!R{(h^v)I%jKd)j#CYIM4yr1(YX+|;uCdNyv{aTnD89EQ6=-%g2^1VD%S~;ejhGjS-fBQhM)TK@X%{>bNnTw zyBGl$DJcU?U3UHq!EqL?{6!8 zb23eb_`kaE5?Ut0ap7ZHWI*F~J$7glpN+z4m2sv+^hrIRHEz86%CLL}fdNT*Rv*ot zXR0WhvWW#Ba&A~vBh+YRQ%R~d9G^9Gn7#OG`IE3$0~#94Mk-i%$z^Zb;kKHBlMbPN3p=M z#-&Fwb^Stjbwe}k$XiI5V&XJaNg48E45L*C^MI^BO)Gu0g(rU#uS~Ul7!p6~*ZX>r zfZISxM@LJSWUS0MQTG>MYvlQ5^5Box(7rv#u>AMtl-k?dU+*FAs(uoO;CCK&{!-8K z(HRl3vv0!KfkmXLjLKxO2s8ki9eg!CuT&lc3%--c*Z1N5BFdhFceFaDD9*#PFYphi zLMffuqEL`;K{-!lVu_jJ;qPrV3YA*41BiNjZgMy*%|2G27)tJpS7|?M4ohYLayH8_ z&f2)nOCzOKMA!32SGW_4BASYW5k0iluXch>on(H81O?q6f<5Yb3cBl!H4GAkVval9 z2?FdP36q){MSyJcP{!|7vZWQAG4YZ1Y&nDS_jtq~K0Tr+p`JRc@A$^u+fK85vJlqk z?kC@T{k8p9;|ABA8^2t5p>W1*`i;#SLC>IvtAjgxoK#=RYw*5TDx(-rr0-byo_?MA zhEYt%`-a8&B_0+x{yiQ=A!lf4S)IxxAQhJbjR+%^UdF}3oLF8zG+imXEfmJt&;)kO zX{qq0($UQo*xl$sJv>yX@Hx6e)p+TDu8baf{B`NV^6+$tpHei*zmdSKRuUEld^+`$pP=_bEX{Ix#j?Cv(OZ9*s=D zm?40d5c`LQFYUig6lr798#Z0{3P$xJXC6;J*2XGFmM&2rQZ9Q=#!>f5zCX6?j^QLl z;QVCxSx!tDO^|G0?YOjlOYRIbRvy0yL9ri*M{(Mps)J~SmCJk|1$&x*9JUVfiZIY= zYlio1q$g1|gJJ7IEHu8x@* zLJ&t5rf`>X*egCZcr8=rf^lCyd(+cA>?853VPA|AxU1(;;!V^C5IT?@-jJ>JjZ}JK z5|G@JY1<||YZyi{0O9qxY>Pc&BgY=l>X!z{kjDKfd>>ePU3WTqxUpCl+n)1yRS@I} zA-=mgT%1{afm%;+B{EwxHq9NZkmbYm@lQxyeL>mo>BAr3S3&+cF$*3Bg|MgN44`2c zq~9#B@0q+crbwOG{Vx`o_{&-~HOnMp;3*m=vqkHjMG=?tArE96Yj$xFZH*+#( zw{!_Sm~*IA@7bvH()w_m7~t#cQUjzBpv1%CC2D5Dh=k(-=auuny?FWJMXNFDkJhIL zw_YSIbZg!(jy*HHQ#dwd{rzf}{@)o~^F|goWVSuF+HZNvFp)eVn-LKos`d^x0^aY9tl3q0dPk2;Ge+5qC z>265_k1}=)vMZ;HwS$d_Oyo5lc^!~inrFb*16yDTrr1#>BGK)Bck~}M&c<08X|4Pa zykH19Mj1L-Tf`H|PH8+u>h7?Zakpc~N!4VrX=*xY$4>s4mroIVqDf(l03?PDs;yAD zPx;(?5;7`TKUA)mQrLb<;u7_n?`ictxl=cc#@c*zKnK{%vLl#L`~4kK&+6mKtEqKHfq76!($k#EgwRXCU0*%uClX{k{hi@mbm0R}Kd z_$tZrRG@>HS#!>HM(Qn`=K^Emsw;_0!_jsTY%3wg`U}qNr;BO{Gl0HL`amNz zgvvL{$f#ZlgiZGRcYAVXP$eKO+*uf$W3JQz9FLo2Mx0(nM~}`%JYh0_^pd#7$~`!x z6)Ujm#9vYqoi`G6TT!YGH*3krNf2iTY7R|7D_LxeJ~LrQS{<6(T2jmzkaU#k5d84n za}#0q^28wO@5kK9#M>Ec=h0`1h3O~6Y%vD?ck=W{EVJ6s?xPp+$zh44+fe)gt??gQ z6k!2^3hxf?A2$kOlSkQda#JQUD9jLOWfzDhh{g+ddqjW#SSW;QUF3mR!al*wa(Fl- zq~tYr7sbVVT0<=6Psm3IrH4%tY3nCX^i%_WaoB`o;-W;oRK3_at*-Eq*Y&=V9htr4 z?rxsqhS&JAg&1%bM3M5Cv5WhnI-zRPg0iDhWRhu99?NS&71 zF=nT}R2@O4F3wA1Y%bPC|3A9^va7AO`~HUm1W0gqNg!w`?(XhZC={niaWC#}!QG)y zq_`D#cc+B{#Y^$xoc~|K}*2`)!|qn;9e4 zs?gjzMwQCn|+lERq3WrCkN%}=n{X&@0eRmu1(mA{Q`vr zM?|AEGVz84fBQrlqwo!_hztv-Uue%R>3u$-D%pF7dD-;J+>AZCbhDT&G_YYVqf%BD zcW}!3{r_ar|F_bFFaY*L&Px>OR1%gg{?>ib)U{}RwpWf{*-l_7_Br?$GbwnrK&9<< z`dz$d1E9!hCah5qXZR6x#Z_bSdS>%1^^E8mMGS3s@Q_FJ@uK1cwf!@7Gxr-7{L)Iv zloWdqTGn{vG<&qtidAq-$0O43zyH?gKa_R`EPgvsSi6^=dR+>WYs@HSg;9 zaS0mD|8-8WtcRMPbwiup%*>pQZbTgzOo>S_(1zMx4=1P;CRD=EmUSKT%gb@A`KYK} zwwEd%q$RKB(9k;Bfsj(14k_Z|be3Lilr?Aqu)c8A{Xe14zN3|__K{X}9T$;_NkkAy zOCX`@l!|L)v#lc;+V%T7CfPV*9%E9$&5YeWAEtI=4M9zB78DYd4AB*LSPaZmhm5#I zz{#0TMN_-_sah!Ft^;cJld_6u(GQ~m@{)$@lcv3nz-TZMQbB}D zh|FJO@N8k+A{HfQKO&{7#*wq1bMBUj#bB$I3)L_ID(YQ3u`_3+N!FMqhXTPyD`y6k z5{95hY%^|p%@O4}XKf17Kdyp%9%kbPJY`*J9Wg}FtG+6AJyNR>l8~)OwWm(y28~3A zl8hi~`+i~)HB2d_GO1zOGrF@+K`A9^Ng5V2KulkUsAE2k(vhG{kffG~?p-YgnLtE` z%`Cp*vZY)fsB)yX{vL6bL}h0MsUMY7=JOHIrA9I;qs$JHmX%NRRZJC4_2Yg2EIS;W zJ@b+Hop5j;mDc;Tfx;QYP4!-7^58!JSe2`)!@1|tO#m-hTKWS4PrQ0^7|S4@Mm(H% zW*E&r$1FVTbCJwYf2UJ6_Itk@#%ryHO717o=d%Sq-a90!a}!!cLD6P7Q9F?BZ@y__ zymHnb%I`x?GjBh4lt8hS>XnLc*uh$e#Wy02c36gDi)0e69!>-KOn8i*TO)Sk@eifG zn){BXu&@!f<; zlZ$m>^(VU4&l;b*B@JOs;8 zIgzpB7bHS(cfzhK_T z^5x(S0P|7=8cQjjOdXlr59e2S1_ESGBuw!Y0z5)pM&VDNk3r*E{n4cjft^0_4Rjr! z^&I((@hj5yUR!nLs=6%8vpo5deZ1-1*wM z!w_jRs$bOl6Q2O2tbWxbr@3Y72pMu_g%`9aDPXUd?WU{R?RR8s%cdjpc$t8RLoQy^6~#)*c3WrA}5vm@{wWNrir!YnS)~sU)nBYNQ(9 z@v`s27vl=*R^{Oin=z9AaUzi>S>K%1)yRSN;E9O;%|(}4{T?%IzduE9IxE^!$y5m# z4WdVPcHZtuR)GDG?b2c2qZ+A-9sN)qM(!o}AK)8e6LX>pN#E@`}kp;CS+P7PvNl2yVuW6&Dv=OH8@|G-L*ug)&k#mhLj zw8HhC+A55)BO8E*C%(FA>UUnnFvffe{ZQG8e_DEd{%;YTt%8S+It(*~UK(E#PfOB~ z_8$wzrG3NUsG20p5jbs}L|#=s4Tl+0lAWAQjKRPekA$Ve(_<-mb10`zFd@yTTApl1 z;-Kj%oxz2_e?Z45t3VNq)QM&`-3`t!kHHX@b(4Ruq7)dIZ>#%%!n?jC+q6xB1j?7;UY{9T-yB)w16*2S&EL23C`1q!A z{oYgH#_I#5&JDQoWOR*Um1q)aP#{Chp$=|1B>P*4-Bgqq^w8k<1A(10ramq2b!6SN z-OCyc2^;!cCdWAqsw(5)+JjX}$DCARl-F6ZvaN%M=u?>tk_50Oi&!ZI3M@k{eU?bB z33vVjXcl+*n~vCfY_)hX%8?j?i6VX?Kw;#1#`3OD}F;=f;#Z_|-4*^P8EA zs?ORD{Auh@&=BIFxb~UgpJTzUo`=K5oT#Y7$Ipnrwea|`QWailjJZ?H!bLqJGE)+d z_H=&e8}i)~{&aJI8WofPA~*J|Jvxrquj&S_N~TIHC8uv$YI6wC>yL?kTgfy&_>*XzaQP6rUzxi z{zSEG1aPiSJw~mhg{{abQ^9$bu(gvo)#U75u4ahe5)+IDMD zBqw^cQ$^`+ISk^4L$!}7rJ4(dk@BAL^_-UfErg$fBt?x^StzKa3a1jdT*HaMB+p8& z>E!@fk_;uxqUP5y-Jj|lg{R}+sD@PY^-j;f!7pFMnD(E8^2<$Kb(%*RHbz3<_MA08 z7Zhs95;25fJ*tOXNCVMzm%P@wm-hSYt2>mH&7}=W(i`Q%ahX%b?RgR{Tek)0RAh$V zICT`NZ@^(VHYlR)e|Aj{aw;W-A^e(*)F54t2)Qz|1dx1kkpHanV)WstSdi@h2pB<^ zmY|E7U`hYk0CsQw*~FJGwdYl+IcZZ%p&81oXyij!Lj*ra>fywZNbDv|zqgg=JFE{Z z#QhwLvpuOiRCcfy=9D5f!m5CYEnt%}Rv1Jt^bY`FzK;i>4@+79+rYkx| z{wp$ZsHbxF8oGEdaJfAoaQV`LarKVgh6~J%x1a)uG-o;Vg7cZBtLNe{R~Ac!tU&N% zVY&~dL`|zwdU#60V$cE$oVHp7B@FXl^3x*#5^0>gAh;Jz<^kNEEfmbXe69GjvtP_8 zkhz#xxP64YisMxf`L6tS9y{y1P2@-Zo&>IygrC=WaRXl_@JbvOKsC&C6lDS$EGpAD z6u6$rP(t$MhQ<0@X*c;XN%b-@H_9ozh|ls?EBB#dStIXVi8ltX=R5nwmSF={T5^Br zzQhTG4)mfIP*>B3Q8ZnE;qyW99vmruRo?h?D_5XIp%iS>@@DnY-lti*d7odkcpIJl z6s|qwsl+B5(I8cv7-+^0Ss)P7=g+;Yz(X4JrgeG#L~P{!OXwkbF04+ZqkAN^n2#@$ zCR8li3Vc&!jB9bY^6%+(v1=-=ka=YG+*!|hf-8{SFY_B+yx-%^^pWDDh#QinAbcT) z^?4@Pig8u0jI21+z~agye&CpsZudjt787-|R9e}psa;%dtcoj^S|2+Bg40o#PiPp( zz>XdHx2b%=0XqU&mL659(Lyau5Vyehujp%QNMUBpJx+K&MQu2&Ue%JjJVec!+jsxT zHzy~J?&OnS;h;gS44H0{prDD-q4wX0Bt>zJ4;sG<&wqPXogO?~oN5bZj{fNtf$iw3 z6po9kyRRxjlgH9hseR%<=m(Pqr4Tj@Y-nSkVp?&k$KqQq@aYDsN+Z)iyzqfi{}CQ1+s@XY9wv&T=7bO6>LXkZ5KH*jE!p(3hnb&w_>%u8vU`yAQ;o` z$gp4Iu~esbIiJY_?LPzhU6wN^Ag5n3O6%#zRqL3$G!09>c?13rP%&1+%rS&4(fwOG z;_+Q>9mTy?XCaI5(MPPZF^nQ29+d=AD3+Qpo0)}Vj4wS~h7^>=N?8+|b>HOie<$Jt z!-K$TInb1n-k@hin=MGce>}vjR1#%}VolQE6X!G@ZaE3L(&e#C$=JkHlT$?g*#Xn2 zsv(BjI+Z(D?%ND{CAP_gfwP(0MN|qt`W<*Z8&~el@|z46@EXjG-YG`S(}r~SVS#jt z0iDgIKyD8wyRDyZU?aIc3S2&a5h4>_p~S*4wx@-BmXrH%WxaGO7BKvDoQ9n|LxwCm zdoDjZ-C>INixsxOFw3t^1`yQoxMwp&UTzUvlBgxYmAG&LSucIAcxsG+=+G^Cub`fcRqGOvTp|Hc7sXy{Pwk{EBoQ;apsW#LC*;{KxNQT9>9V}L||$% z%Fg|*#{JQH68;7>ucVu8SDoR0EzbMV7uz|@cr_y!37(}+f*b-8x6F;G=l)1=N^r-g4@O%50aC%gYg?CBTU%=n0!43`I~YHF zbSE9qsO0;m&lO3z-G3xt5_k)yZ|`ylqykYNy(DRl>-V^<*CFw(D-5H$bBNu zKleFMYfjc3!js;)%X42ML7*66 zcg++!cB&*C#vB@CPf7)~)Z~uZvvR>Xjzc}UG$n9&FiUBtFMTGV2CpnimSn$xYXHUh zrn}**Kh*pl5BODE+JMY<=@*#PO5!bphmq^Y1C<3d3!nA`3(-i$>zNIavAh=-8_+{Z zmsAjmtxFO{O^=-%9G+PJbqJh3RZ|pazuN*P%G7zcR}>sf0A9pcTzGOU=i2O@lM0fg z|7W9CSF3D}iq2|Br--&xEvxdzug(8c&sXAr%1WZFIrfqT-7;j7%M}c_BJQk_P!c>m z008n5#j3iRzShUG>1(wD&QIL~NM!beXc3}a?I!{^v80tkcyN|3Q+%B_70HlQ52$3C zx*trkOxXS~g0&TYMIRAVK4jy~gb<-K)HtX+Mf(_gyhJ|cA}W0eOKWb`B-uXH>^{sH zxYKk-2AVvoPeaAZ^v-s$0W8w)%xv-qAI70sjjpcE>R?^|Zh!D_6_FWx+D_8XYLt_6lE!h66!!J;bUAySN|1WXJ2)5wewsLYe_5s z2`)ilE&7{FJ!y}kjJI4~CKwr|A=J^m4Xub&Sw5soQqM|O!W=onMil8gE1#vEwM*;$ z&CnK{M7Zkum&MIWfVJm(^nDJ$XE&-Q(+Bm>21jcAT*EfMkFi!@NeT0b8|UX1P2bT| zyBsN8?nLrTZSQt3j&LGIP6}l5Z*ZsEV`iU*63HK3Z$IyzS$SrRJ#wiLNpcJJD@$@& z5(?pXUkhVu(w3scIgAJi-W=+3QzrJQ5_X+MOrMw~MTL|RBo?VxQhFLvtLvWOfxLsP zvUEUxVpiahVl>qJ2F<)hbe>IFGY2N+0FM%bSRcT8oOI!#J|VcVC4|TObfr|$07j<{ zS&>$1)<#p6oqq0BBPS2h7EGc(@Kv?P8B!38FMF8bjv;X{3@-vfcF=iWtNJdwTDRYs zpuKC#eh^yysY$&{{gsykeJa1VLTFpo;c1nI&iPuuB1ZH33P4stq>Tc1DLdWKhUdF@ zVcAu&8;cz){+x*dJsKdE&;=b)K3B>%3vpvU(Sg2}p*Y9Vt;zkWwLkTH`yx}s`U$=p z&A~D2NCYW{NWRHlJ+e(l#uq|LCgh&b(f`>MBVi@zFsiiVD~ycn!~gP8a#`|US%MPB z^Zc}~&+JjLz>w?|=1}BzS;^VR-F1SS{;G}_UNFgTuz@y?E|c@whW#pGiu*)kg{ca|0T z2IVVrQcl$4YcUes5=|EvZ%gphFzjsOBM^A12mU?|!$`7!OE5{M@hIt#a8T^9u9QF4 z@`>uN1pQu{e)~!EZVFy3^B$QP`cZVz4eD+4rHrZQG7MQ$k^lbt`- z;W%Xn=fcwna^n5MfEVhJMTFQFy5Me}hzeUll#z1uc?pb8G-DzXoAp=~Ijp=c&U=_t zW90sz8Um4(6L^+;!JE%Dfg_BHFPAgGQrLBwZ6#*{P!f)hCu_d2V8Mt~@1jmr)v}9J5`vN;dV-23BEYtw_YOO?FzfWjP-lAv0Bb z$6JrUHK5fVl)!=+FnvmdaE_OpNfx^BhRUF}gBm;rN|k1$`W_KMd*PP*6ss$o@|-CI zAXF`bIIj#bPsxp84jT(p-`;yu!$h@^vFdBUX(JJYf%2AjQ|h_h0HZj75lKeJ@oafC%#6TXd_~F%KcW zW+fR#<Prbxg20Wm*^#WJqzM+QLTB9J zk2Tf6A1{ndlj32V{qgZRthfG4s)yPr9Va0N{(HKsM*c)@Z?y0}BaC`Sj(K_b{2PjA z=uX+ux-HHSe71BHeAhJ<9N|Yh)!&j`WQi6I9RC4O=ZkMr;&jS_YplfnO)+I7YhJ?U z1eQqfnRU=c60Dt89%d18`C$>I==Y!?ir*Uam&^A{9aj?6uY7XQH5@^4shzSIjCG>R z%BAmR9*l{A?B9TSD_T z***ZTo3u(Di4dS4BLy{ORuQsM*@5DjQ4~H~Y0;?~2g@-4^L0dy+@T39=))$K@Bv~Z z8aNS!n04{G$=qw0pjW%fgON~0rASOjlW_v>0R=*K zT#?;C7F^2;$tF0W(N1cMmJ6SX&(zjcJkClLWLHtnAjP;E=6)Mr^b_&?Fln`>w0;5k zX|zSgAl-iZ>wn8N{OatTDkpmyw%3dZI^1|l;kh#HO4ttlDITqirxWbSo-<(lUC5zW z3~5C*+wzk&&i9~{XX6H@P4!78$Lm`$xky$tAhVag-{8p=PcBaQvzv0dbYFwt z|G76uk06>UxIdhON^nK}Zx(e)4|_ojCj=19&(OAMS392@AWn;(SS*D9g5OAV*dS-J#jhaAHC4^a#YU;;2eO>L{a3< zu!v1f-FLRsOpbhse|c>jE^!p4y6{@TCiv94Guk8_DHPk7laU3m0=UYAp!G3#F$3xB ze85>3-;b$gc#EK@jM#U*Vz%>rgEcu|6Objmj;!dHFS9x3%(SFA2oOHS<`;B1wQiG9xRlCDf43nWl;I!=I0y_XK zTNO|6-k|#ZNooEZSK{HdeD_<*fp__vC?cnhXd(fRLc}1ibydY{ztdkEZ&2^fg`-q; zwywL*CKAto1}{=hD8Q?H(|BFBee2RD<|Y2}oE#i}AG=_mPLC zYJ5ufJq_r{A_cEg{EED5dNEgP49WJBU>iXigD)4eksIctZpy^|ih|&+o@S?ZEh-!Q zLJm%T8qyam%Tc3mzuaSOUXJmryJvW0{XHm|mYlafI|TgdCG%i^lIZ5xYg%xV1Uiaw z`Ho?JzwQ;|e>Bp9*DuF`0KH1Um-f#`uk^kudQc8h0Ksi9`pOLj$8SB1)FLR%*^E=H z$CdU`lVGZBot|-rL=paF<-}Iqbtf32Q|Us!OV230vvqNlj)p>Yzs0nZFDI3f72+tz z*gD$I{UDm>@2B2cU4Br~)fTg1dcc1z4@+k(hHG|Yu|k$9zJ$eu!(rJaX5?99THBwV z?9@k!@v&vze%#;Q2*2Qh&e!rMh_dpemB+g zlSK4Wr3<@4!r=zs%0W0u2CCwU738-n$cytUs%ll*8IXLQS(eU@UgE7cD&$DB@-eEK z4BZPyK+pkYTM*be$e4P2vrW%14<9c#t$ z!gIkbhK7u2M($WnN)7KbG*WFA0Wp2cF2@|76?uCu-xoo@7%7vXU+*^Qkpc47o2nS7 zGIU?9^|FIvBxl11&&;y=We>#jZrdEP>&{zVTjSKm*ljX2TE@#Hr^?RDZcs`goDVZj z&rQ_4is!h%hmM3(m622Od{n>7p`!nR2KIl0P~XbvMNs7J`JIE4@dBa&6nJ>x;c?!( zcX@tv$f2Rotqc;ik{4ci^O()+DbFdY&W{tE16*3J(GQDq4WGl`0FC6P-ay^_bYU_& zb_x7dyw0giZArqi$Z4bzC5{ElA8rD)a1=k2q0xFsnIcCON%ZbU_Brsg(8WP6EQmP+ zXknwW$hWfhfj!9y?lLooer2is1rS?jHVBjg)X_MBTd^m@l_50gj5V&wa<{yTBEy>E zis-+hnL}YG_lWg+=I66g^|^SBSz6kCsEc~#)F1}(_4y%>FnLHzzj6wDBoJU7^M2az z<%U@6SQZtK4){rEZGYY=2@Dl@pKcG_bg=l{*YacE(Yuw8*xqZexgbq{18(ISyS}+* zGpMa-fxevxuY{D@A7@i#cNGqgs+-`!oK#eEOYA-FrFI^BM6SODPc_MJSPv#9MD*!R zgM{PH$A-eGS>TWtW7M(37rDX!VWvJbblR_boC!JK5yQS2*~8e~t!vS{td!DRI(h9p z*^=8{*|;gu_e`(gKfuHr4fXFqIcx;=X`0w_XyufrsE37_`GEMk)n4`U>M|)=S7bL7 zOYV;~BHybCm*J7U=GcGP^RK!s z7|x4PS}sH8j*O!$LfYBP>~YV{OlD!x(p-rm$M$alIGHTG_P(q9=4IoYCtqHfqa;pA zV4qF^f>6bN7A8}_+tk1Z0@NIl^~P}srIPwhr-B#}h|}X~%1(3SU^31SLdXt%0;wrDTMTnU>1bFa;70VwrqSo!TgsWH(~Repz`Hu}Bm%M@6jXh0AF|rmoVFYv zf#?@Z$jJ#~jT>rj+kUK#)>^hADiUXDE`J9*4wCZ^3DZOq<`e&^%sxoHE98EYz38j| zt|YVeRp8QoWh>>6+}=s2bYdACy*Pdh{5NEw1{4dJk}qp+A=qeq=9x*hp2G2Tf&%w1 z43Tb1uY;ERp5-qWX7k+MB|m-Z$iKOn9XFfKC4;FhqQ$31ZN5V@N0hG zr(-EwI~KBow*LTpsl7+((zS|`zr$uZ=64%@)jSR*Xd)o}vkQ^N_jQtjY_a*Upnq8p zXVn3@MR7+1;(CwY10;Iq#&?{sDukcTiD#5ry*jf6C#9x51hS?5r9@6@wv2xo%9EuQ zS>DtPnZ;nsw#!mum$jJI2-h^bY*Dk70M*pI4gTDWgi}_TK?+138qX*^?Wr0X>B_h3 zsIb#|iH*-scM^OhxF~0QXTrnZMuV4-s&l98%~%@tTC*J(`24W&D8{}BkMH~qVnCpR zy}$+Wl&VTS&fyEHETud-B*qz1CFw_j{?B{_1|*#0SlnPq-*kv@Q}e%=N4Xzrd9jya zqY{!o;|alcTDr!kOyAE-tyz6)iIUuTWR*foHbNs)NKuyy?1p`A_?k7~iCGd8+lccA zpjP3m$>`vt?Ih(kGcpEBEB}&fQBDltQo7^nMQBWUOqE`#LY%qeO`ZzZdxNn6iUsB0 zdKP8DM`UCfBB+X3KuLKAI*aiWR&|dez;1D5JGz@f;ob40zw;>VVXbYgVC)53$utld zktsBQ{+JHOxkp;;b9L7N4K&RWVFQ3tk)TK$@0ugJ&?5bx0s@Exb@F?Ya_-DO9udMt zf%KzE%7vvMC!XF*!6)KUP8<%#Rx$Y0tIO$Dlh<<)J;G73*mbvEeO=)Y5@+5A)(45A z+TlaLVg*lf*G@>G&zC)?F5Pf`2)CLaV{k0lZD$;2%SrkY<8YmOywEW(fuiy~;53pY zb|!5}pB#U&7U#(hD`8*qGh+&;o#5N5i=^SpKNPSWJw^T$NoMTV{^2`r-(QCV3{Idz zq_@Y`m*3Ytd*87?6vBB*Zx2hn3mPPvol#Y3F)R*@q?wcr1v@m773s}VPnt(mdI?;H z>l+!|A3xxqXewgTX%R7`U|eLW!gN;cw}%$$^v;V_?Y?`2z}^FZed92=Fi@{==zzJr zkW1DcYYUTZfAFUcMHE3S;WX&1+y47D!KAT|$s?=!RB)zBf%2BK+#X<_5Q8BG)@P|a zQu382hoN#iL3($Q7j(DXo0tYFo;hm`73COJ!oF10smimXwFWJ+@ex%C($ zpkwFGE7r+)>O7jt4WI41-zon9bjl@O?een$|>BW|$i$xFP5gVJCe`HED?fnqY?tNCp6uHxQ zj=IaiL(!`UgC*)UEZ10`q6eo0wQLEfEC!1)HQ@PU&MB=aljv2g>}MI>0>7gIEm1%9 z9TRt?va;(=wE@PYmvV#Kw2zPuY^1<2L!M$*g$f+SE&8(}s;`bvChl3^(+x}Su>ykX zQJG=OWO-lSZ?woy5;%|2fq*}KOQ>lM9T&DYdn!id6HeZzgqO9-5ETGPo#Spbv*&zE z952D^#&^NK4Q&uX1RU8aneDZoTG^ThcgDSWIwB*u6L=s*&W!fO#Y-PNnhY zUYQJcjyPSmg`k3^p}6yNYMb--Z=wnsmC;@`v{KzA7j4SODQyl!@5HsA~T~S`uh8N|MVE{h1=vaH3|K9Bs zp)p$|<Ss7o8RxV0Yu9<3Y1>oMuFcDZ}vkCroPUr$`v06f*!`dGuSxh4|t?t1HP^Yp9a zy*%h;63>1d2Ne0ccQz2&WAe6#+Q|Ny5%5wZ6#Q*r)AJ51kDNfCXEsh-2TgusQW*^I z9!hZOO+Wd(rjuJ#?NX6Kr)!;(9dKWHT<%5=iY-A_CDjD$X*KI`@rW<2Mn;mgy|YUb z`-y6RJ$_o*wU^ITU4D(FK`0ik@F)JFk}i%kV<@~@;8APF|7#yg?cJVv#`#s}M?|Ry z=h~w(Rw0WFE(bNeVb`0QcQd`?B3@6OpQ`gKolV}b+>YHbk-A>3=Ci%Ma{{(^oe^9S zfB9)aLX`GK=iS}xYKbga;3ns*+HGc#)OtSJDj&{rQiFT+Kc&rT(^> z+~Lxk0)`3ePb*p5-#Qf>DuWPjng~{i&0D@wCsBYtEM@HgYS`G-l0c8^PW42wxG?=1 zHo*d+%jSm3zLZki^MXT02sVf?nX$8UM&gO;z60@v=)llHq04T`KNvrHy`P1UQNHnC zq}+|ln4(deS|AF;SD&1B96KMZ_7dpJwgifjM4VkO{=FPF)L}Z(W<5DqoAi3nB$USA z+ienL5Fs0)Hfo6H%yP1bhH?UOLld zXxKJ%Z)u}d67nY`sxO9WLJ5kh)b*}yq_r!?&xHLBDH?+}vIl3FOF z4GTyUt=*niq?s;zF{2;#2{gcPiHd!5)y=U_k=bcAP)*14SarFw-j8YDM`t$yCgT2* zLwx0-9Fl&4(uNz!YZPmJ#x0LuK|m^npn3JHUW+3`03`*CL0-*bAKF%s^Qh-=dO1#a zuTMo4R6Uj*{MCQ$ziG2{L|&;N8yA;V(aKcnHu=R0bpX)BG&(fa))>q!>B{hL-b63} z<%l;R=_kT@BI7aWcnlHVS{!oaGAt9f@AcAcXgerJ1(pYyma@|d1M>QNQ<`wnU|6z@ z{{bS7r<>5fU6<>Ki~Qr-OJobSJ)P?BMVx6Hs0#~ugmB#+H3}C{=(4Zp6j(7sM=&X~ zhDWkHG}CpXSzLik%`4=tTIhAo1->hN9D87q zOWz>mD1sK(Jt%mWA;g?XK2i?ENS69U|GcydAa4;h$o1_JCgOh6<@MG7O#la;0i{&i z%-t83H9b!jBRsKn-*+redoyHqBg`#> z4Apy;;;|S~$&bpBPS?1q$0P{H%E{+{i}I{ zu8$!fK5e@+pxB0sSkRr#AH6}aN#_BR>BIl7{=Z8uYFOs>CU+CV=3tca>eeXuZHwx1JF(`^QGypBKb^yHNKv z5*q!evq^%R3E3}A#BKfq;Lgm`_}|W^0IuD2kY=z2R}+tLi9*t}klso0Qy52oNek=s zw_{aINP%;Z-pyHm`}h790Ay*EO_oT1E0P0*J}3T3Zm*XtgE*L*ri|95WJ_^Q;rw)SF*b=cOhv=u z##ljss~J%0-AT>jQKdjuvbzhHY>r3rvcZa9#*D0jWkDot>c$yd9&5@1m&C5v3{8-+ z6=D2qZ(W)=aoYLP=MV?n)&@)&ZQBq+Ndi4Wix95&V(R?SR=Q^fA#XAz?jezhuS_-X zf}ILY^Gie@P7B!>*JYy32)nlQDYP+~rk)F1Gwu*vs5SXxYnGMQ+^e(EOpPy^1ySok zUrxu3U$WR*9jdcNHwUBahVh&q!J5!HK3zNu`9=&vsOs0BHr|}qttsXwC?Cllu2lS& z0E{{D|3>vOzEO(?3SGVGj{jJCvo?V@z-$gQfpGl?sQlC!k%rHn@iZQAxVN{e8kJL_ zrd7k5wleF-)UQf67M8Sr`T4ehzCt)~?k`LX_pjIGqs`&*f(@3uhvoW}Vk+K)kM4?I zyUFeKs7gvM-Vf;-t}lF&M{J+oF2^Kqs0Qtr6D4UfQO-O4v&9&_@}RYQ91EPnQ5-0u zF664n%+`53(Uv{qp^nBNQ7ba~QGSa~R58XAO1qrD&yDYTQE-0~v3pS)8?9fftmvw}&m%fckn42%VF zg|UL(8?cd$Jv_)9xSY5=Mq5VnrGSkWtH7{U@(fq1tu7^Siow%sS<_wIp|Jhv?#Xz1 z^oaqds-TC$E(_ZCUl+i=n?7@-&WTlgJ3q=Mll>Y$8tcAJrv%b;Xe-=hp@mn=C=1SyX z++xHSa4{$%7&@2CsHyK5ds-yN3Nge7N)v>>jz_jP;FtYEQvBDIV$dOtWJ`~y+L?m_ z*Bp7v!60fLsXPZD<%++l&f1&GXCR8`U^aVeJ{Obqv3h?`v#NmEpkVbASqJWZIp;_k z9-grYF)EZzkxzwQ4G#7zCdvP-EuUUPr8DsJ_Sj->hlWcuhPpzH9~T^6GWOmIv$i`C zvM9FI9i{bqYSMGLfY8I`h_=(zwJ?xLLb>1j`6vGdf^iSS-1xa{5Ej$}C$?<#5O=2V zHm+*%Td%V)Sk#WQogNjZP~nkC)%;?C0707Dd~sfj)~LO|I_qhBdfC-zn^!}tWFlc4 zX2FMh9EE2LyrGvSDx(&z6XqUSjkc^PadNEZC)y8R7*%<-pfHOyG=l;*pYrUp(Dm!$ zWPn>=Lf(a`u!bWRJ=qgDp*=pj?u&)vk0^KHR!9XV@en)sD$+9WH**;YZ#YYOl9XRf zQ-G()Xbvg}jEAJnbz+)Cn@U6e;#NswARPzAC<)QUR%a!Diy21Dqe)Z(OlOeOtAQ&@ zWAmEW%pKM}!ck+Wl{PPXBTG$ARb0}Fr%9R?X_HbHf^yJWbK^s2P>_9)>amC#qA@-)z*e6sqm?vAxovm| zyIdh*fopBVi6Sy<$MB|0&YI_ z3F#zR@TrihY3EP zS0>NQ*HdA3UTpDdSdH@1b$4Z02p~Sb`GL@Eje2&5yLczJ9lvrMx!f3ehZ;3&X-i6n z+6?e$`wgp-3L=WsA8R;|Le2(}hQ)wjG^9I)cMGo}X6+8S=PN}%hM1pzE|VttETDG_ zN2rz6#JHi>xg%In zG3Xb|{7rZSoyF>)G`T#$P>)WQukSiR(q{&cEf`Jb4Ss<4#;e{xA@M|!3#jnNLDy#L z_?pz+;%z7&JKH~ccX@retG!%`{E_{yX6p2%JJ9+;_q_Qz-$w&=(^gfcnT&cn;$z`< zZtcG+wDJ7>^O^qu`b(~ybIzisN;9#%@k-(ON-E!$^BN|L8y!-=Rm6s7A=gybm54?Y zp-{yVXp)D1!kVv`4XQ9-Aq>n~-3>{U;J~&*m0A_Va9Er9K!^R=Tu{3*i_k|sOjRa@ zd6#>FyQM5kFLKzH$^TWf&WEdFF1XRqP02xpL;1tgT$Os80TagNd95wH{BZLAA{GYQ2cFmux(e``tqj(1|Ni-An{ zb+*UieQ;_&X9*DnOfQll`#pq3Wkj^NEr2KiBeH-rfD0m;Jdm_nl_8zdPX_``s+w%t zBEE+_%Q(cq^md`(BiuM*4el==(U_M20v&tbHbpp2!;ar*QFWwjg%;Ifz2Mkl5ZTI+ zEMy_|*PD(Xea+|gaB0Z0;@|4=IdY*x23rZ@#WYL%oN({${{!*j6oV>f&fkQQC`Vb1hi z97O2}7%jeR>dg+lkzR;E}=`fjWI#VI4Bc~dGv53dz+;*?rE5|Ee?Zc-q!Hvdl zrWx+GYVpg~vi|@Id)24YQx?>ze>?+xRRKq9Nm@QhCUIg9@xM}Mc&8BAa6px%CE6QF zSt;HK$znKxY-w_Njj?nei1m+8{ina+sD zar33dh6CzHpZ;*BBaHIAo=PQhpn_mK-rw(CQd&uMEi>~mVO)b;v>k znNyqBW;R!CpABTrPeO1I#X^(AQoj5?t4?;1mX@?aF}k&_?)PKU||{6lW#Re+l_g7LrPINvBhOze<&JB5T?^aY%{5aIRojl!*##-;XUil{3#x$H$TNA=! zL%Qe$y7*ta=E5>N((qi~;}{Gz+}O6~q5KpR-$w)Jko`zknC}?;rd>-9PNr?Mze0_?i|pd0!Pr zYri2%XhHe%881_SoEeR+NIqo%T|-9dJv~ep#8wlZJ@uodmlFRA4>R36_8%>q{n!u# z0G|2f+f3A{=EaJDPg=4(IZ(n%GZl_{2VN;kJX(|TgCDCCg+i<05`fV#$CuaGu5r9) z?t^YmkYUu<&C!F)N8=9oUJMi$NqIC*^j-YW(o33~H? zzRY7^i3HQIV-iSenDi9A`IJuzCwE^+ti9WME+ZHI?9=q|QYxzqOVB1^DW8y|CdarL zwbsQ?Z49!@YzHj3L@TEhST2oZP6i35O2(BAoVrPq8H%4JTGGv%N&_TZ>%9(;bC{LN zmg^oBRFceOQxPwqi9gZtxLNAR_?(Xv{O8NI)Gt4pWHCmxyY&x=ZjtL?7mn_`OxtZ!V@0v$^gM04wGsoh5g$4n+AMW+{?SYfEJ=X`{F z%uVSjUi2Q}vBGE8O>Wl`N4q>PU7qJC8tikAQFp7^`oF<_FEB|}M_+RE@`7pWl7>O6iB>qFagHkO<| z1*6;;)!@`v?SwFH>g^GY`Q6bo`4Nrfu^4T{Afl3m=|H%f_ZLI5^d@V(esU`e7^b7h z#z63=o0F9~MLGjDq??DyU0w)@)ic{j-KlIOdR?((=;2meahZ+}#Vt)9pAk&QP1|0` z@Kwb4*f~jzC7oUJ2RMn)?%#ake}Ip0gP5Pcof}0Pe8>Mj{RbHQitzN0yiqpR$B;}% z9cwS?}z^eGbVJ!dafNUhq#&; zELo*5jidCdO9PG9#S*XX935XUgU|8S9wWGje=<{gT^k4PBL49hYGIPxnAu@`F7omk z&o)uni{pB7S@Js_84VvFNGXG)kIh7|<0gyOJayIxRq3=Oi8i4v>*|z`b#bRfW37$# z?~|krw3}PDzwKu!`%$SFOgwA*jjmILlM>7>(ix5xy+59-Bj8BjpkMbruYrImK^2cM z_+bX(M!@_*yd`yK3_Qsb%I2nG zm#0t9=!eISNloXcdK*WC!36dIR5r7jjks@Ns0}r56=U!p2m9L+(%W%_&nUi%@kIXM z$Pj-l62|?ehq)4P1Ep*H+SMy;I~vrav7DsPlP$I#bYEEDD4IZE}(){7M#l_~lyCD1H z^QM!y>kZD`%4|=vbMy6-Wq+@Y3R}nj7hwjT`EW6uvvt0M7k*dre2LdX-%xGp{&hI% zkDoEsnP&W9Lq$7lfWBImEU=X1WB6P-e0NX`c;?VDH25u$+wlL#ru2s-YSpd!Wh zDu`oJIWEcG6Z^gK?jl7&KwYy>3coCBl0=e{nw{m(cstgDJrOBK69abEUfN>^9M+*F zb^uE)*GA|^jy=JpsxxsW6$nhSLzM}6-z&1QRH1N{scL6R0wyy=jv6ODPBfQR!_UM6 z1sALt&iNNek$e*^xY8afoc_#X>Cq9bot$4UO<%tB{{S>&zuBkFoQ=sNnmprKJ>P%$ zwOp&;Ux{ukisSmxxgJ$#5sFxjLvEC{!%obG9I|z>fTFL7nVX@Jh4T7g@}(X`U=x@f z0aQ0VmtgqALo(Hx%bo&O}$yx@(+t(tP@t=dR9+& z-~Kiuk1_Uj;(GoxDQJg~iPL~Cf41xWdh=f;`R(zbhAoj1_!%L6 zI<89U z&qHAi_WI0C5vAAy!JQ8`4d)rWG9l@1Eio`;QXe6j>S|pVydr#A! z1o*OHp)cw}iwbM3*pv{sT{k_Tc|hqQvZEd}S;%scU3N`sD89}4{{XKtPbQV7r52Ca zGDzWrpb8YJEsfxx4FW)!c3}kP^5dqHT2>JPFfG()x9P(M4|nIG=M=z*aa*24vx(PZ z@L#RZ6`9{m+N3FBvlIg|WvIXGHvTneVQ^<;Mor4p=t#;l5_ZJg?eEY1gOE$k5fcc+ zl!g)+jRtn!a3G)pz=~y^A$cJ&#m8xy(kf$xk3b?w6vVoR>k_4eghz#xVA+=7XrwLH z0AxXe^ReMAT5_50&WcXvkmF0Yna)K4aXMe8r2c>G3j;Qp2nu)F>~j{>FJcy&1yDqi zPyi&~0fKRJ{rYM4*QhIHx)d@fNQKKTHV*@s!6`!P1RS!w^oZl}A(J^1bpoam3?U&- z7}02Rs6rXE5puyuBuW-^PC7nC{j}P={{Yv85K*f$nf1n_JuxL@K>|iX9tos{I8)c? zzS@UI0V_B|2kJr=%tf6dX8~C)3n~o9_qOfn;Vtrsj9pa884jeZgErIZwdelC#k1BU zO8oasfB*<0G7%(k!j7(yDTI~{Y?CBaO-6502t^;}OuaBgNQ9VZ@YW(OYIb8#`l%+7 zC@|?6mnh&8rAAmV0B6fYBBDIs?Bl-Lwk8^#^b9i*dg1>7WiKwT&MMCeh!{PuTY{92 z5zy(z&Wl9b?K9x&8-5g)sR4lkLuQ3 + + + + + + + Mind Overflow :: Home + + + + + + + + + + + + + + diff --git a/pages/about.html b/pages/about.html new file mode 100644 index 0000000..40ad9e7 --- /dev/null +++ b/pages/about.html @@ -0,0 +1,42 @@ + + + + + + + Mind Overflow :: About + + + + + +
+ +

About

+ +
+ +
+

A little biography

+

Hi. I'm Lorenzo and I'm an 18 years old high school student.

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas risus nibh, ornare eu eleifend et, facilisis eget odio. Suspendisse tellus leo, cursus vel mi ullamcorper, ultrices commodo nisl. Donec auctor sodales urna id vehicula. Nunc mattis dapibus tincidunt. Sed ac euismod ante. Nunc laoreet ante vitae dolor vulputate, quis volutpat ex posuere. Duis in porttitor odio. Sed id accumsan dolor. Donec eu dictum nibh.

+ +

Curabitur ac efficitur eros. Etiam elementum nibh hendrerit, commodo urna ut, convallis eros. Aenean ac feugiat elit. Quisque vestibulum ante in ipsum feugiat, in malesuada dolor mattis. Morbi id quam malesuada, molestie tortor quis, iaculis odio. Maecenas efficitur, elit et dictum volutpat, mauris dui dignissim ex, in laoreet tellus felis nec risus. Cras tincidunt consectetur magna ac tincidunt.

+ +

Curabitur sed tellus lobortis, euismod massa ac, dapibus velit. Nulla vestibulum ex lectus, eget rhoncus lectus sagittis eget. Nullam consectetur a nulla non auctor. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus ac sollicitudin arcu, in condimentum mi. In tempus dolor et diam faucibus, eget sollicitudin leo facilisis. Praesent eu finibus odio. Ut quam neque, viverra at eros vel, pretium molestie ipsum. Proin facilisis purus purus, non mattis ante efficitur ac. Nulla porta, nulla non tristique blandit, libero ligula posuere lorem, eu vehicula leo mi sed lorem. Fusce at aliquam nunc.

+ +

Mauris dignissim velit in ipsum vestibulum laoreet. Nam vitae ornare magna. Etiam ultricies feugiat elementum. Sed aliquet dolor quis ullamcorper accumsan. Curabitur posuere diam eu orci tempor, non hendrerit sem convallis. In hac habitasse platea dictumst. Aenean orci odio, porta in dictum sit amet, rutrum non eros. Suspendisse ac volutpat nibh, eget ultrices odio. Curabitur ut faucibus libero. Mauris commodo quis nunc non laoreet. Suspendisse congue semper sapien, vel bibendum dolor.

+
+ +
+

Copyright © 2020 ― Lorenzo Dellacà

+
+ + diff --git a/pages/contact.html b/pages/contact.html new file mode 100644 index 0000000..9672fb2 --- /dev/null +++ b/pages/contact.html @@ -0,0 +1,43 @@ + + + + + + + Mind Overflow :: Contact + + + + + +
+
+ Home + About + Services + Cloud +
+

Contact

+ +
+ +
+

Use any of the following links to get in touch with me!

+ +
+
+

Copyright © 2020 ― Lorenzo Dellacà

+
+ + + diff --git a/pages/style.css b/pages/style.css new file mode 100644 index 0000000..a29a1f5 --- /dev/null +++ b/pages/style.css @@ -0,0 +1,321 @@ +/* CSS Document */ + +html, body { + font-family: 'Montserrat', sans-serif; + font-weight: 800; + margin: 0; + padding: 0; + background-color: black; + height: 100%; + width: 100%; +} + +.topnav { + width: 100%; + display: flex; + align-items: center; + justify-content: center; + text-transform: uppercase; + padding-top: 20px; + -moz-user-select: none; + -webkis-user-select: none; + -ms-user-select: none; + user-select: none; + -o-user-select: none; +} + +.topnav a { + color: white; + text-align: center; + text-decoration: none; + padding: 14px; + font-size: 30px; + font-family: 'Oswald', sans-serif; + font-weight: 300; +} + +.topnav a.rainbow { + background: linear-gradient(to right, #33ffc5 20%, #fc33ff, #ff3370, #ff3333, #3dff33, #33ffc5); + background-size: 800px, 800px; + color: aquamarine; + background-clip: text; + text-fill-color: transparent; + animation: gradient 2s linear infinite; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; +} + +h1 { + font-size: 120px; + margin: 0%; + width: 100%; + position: absolute; + bottom: 10%; +} + +.arrow-down { + border: solid white; + opacity: 0.4; + border-width: 0 2px 2px 0; + display: inline-block; + padding: 6px; + margin-left: -6px; + position: absolute; + transform: rotate(45deg); + animation: bounce 1.5s infinite; + transition: 1s; +} + +/* ARROW BOUNCE */ +@keyframes bounce { + 0% { top: 94%; } + 50% { top: 92%; } + 100% { top: 94%; } +} + +h2 { + margin: 0%; + padding: 20px; + padding-top: 38px; + font-size: 40px; +} + +h3 { + margin: 0%; + padding: 20px; + font-size: 25px; +} + +.top-bar, footer { + background: linear-gradient(45deg, #067062, #063d70, #2d0670, #4e0670, #700667); + background-size: 1000%, 100%; + animation: gradient 7s linear infinite; + animation-direction: alternate-reverse; + color: white; + + -moz-user-select: none; + -webkis-user-select: none; + -ms-user-select: none; + user-select: none; + -o-user-select: none; +} +.top-bar { + height: 100%; + text-align: center; +} + +.content { + font-family: 'Montserrat', sans-serif; + font-weight: 200; + background-color: #151515; + font-size: 20px; + color: white; + width: 100%; + text-align: center; + box-sizing: border-box; + padding-left: 10%; + padding-right: 10%; + padding-bottom: 20px; +} + +.content a { + text-decoration: none; + color: paleturquoise; + position: relative; + +} + +ul { + list-style-type: none; + padding: 0%; + margin: 0%; +} + +li { + padding: 16px; +} + + +/* ANIMATED GRADIENT BACKGROUND */ +@keyframes gradient { + 0% {background-position: 0%} + 100% {background-position: 100%} +} + +/*MOBILE*/ +@media (min-width: 0px) and (max-width: 200px) { + + h1 { + font-size: 20px; + } + h2 { + font-size: 15px; + padding-top: 20px; + } + h3 + { + font-size: 8px; + } + .content { + font-size: 10px; + } + .topnav a { + font-size: 8px; + } + li { + padding: 5px; + } +} + +@media (min-width: 200px) and (max-width: 300px) { + + h1 { + font-size: 39px; + } + h2 { + font-size: 18px; + padding-top: 25px; + } + h3 + { + font-size: 10px; + } + .content { + font-size: 13px; + } + .topnav a { + font-size: 11px; + } + li { + padding: 6px; + } +} + +@media (min-width: 300px) and (max-width: 400px) { + + h1 { + font-size: 52px; + } + h2 { + font-size: 21px; + padding-top: 28px; + } + h3 + { + font-size: 13px; + } + .content { + font-size: 16px; + } + .topnav a { + font-size: 18px; + } + li { + padding: 8px; + } +} + +@media (min-width: 400px) and (max-width: 500px) { + + h1 { + font-size: 64px; + } + h2 { + font-size: 25px; + padding-top: 31px; + } + h3 + { + font-size: 15px; + } + .content { + font-size: 18px; + } + .topnav a { + font-size: 27px; + } + li { + padding: 10px; + } +} +@media (min-width: 500px) and (max-width: 600px) { + + h1 { + font-size: 80px; + } + h2 { + font-size: 30px; + } + h3 + { + font-size: 18px; + } + .content { + font-size: 20px; + } + .topnav a { + font-size: 29px; + } + li { + padding: 13px; + } +} +@media (min-width: 600px) and (max-width: 800px) { + + h1 { + font-size: 95px; + } + h2 { + font-size: 35px; + } + h3 + { + font-size: 20px; + } + .content { + font-size: 23px; + } + .topnav a { + font-size: 29px; + } +} +/* 4K+ MONITORS*/ +@media (min-width: 2100px) { + + h1 { + font-size: 150px; + } + h2 { + font-size: 45px; + padding: 40px; + } + .content { + font-size: 25px; + } + li { + padding: 20px; + } +} + +@font-face { + font-family: 'Oswald'; + font-style: normal; + font-weight: 100; + src: url(https://fonts.gstatic.com/s/oswald/v24/TK3_WkUHHAIjg75cFRf3bXL8LICs169vsUZiZQ.woff2) format('woff2'); +} + + +@font-face { + font-family: 'Montserrat'; + font-style: normal; + font-weight: 800; + src: url(https://fonts.gstatic.com/s/montserrat/v14/JTURjIg1_i6t8kCHKm45_c5H3gnD_g.woff2) format('woff2'); +} + + +@font-face { + font-family: 'Montserrat'; + font-style: normal; + font-weight: 200; + src: url(https://fonts.gstatic.com/s/montserrat/v14/JTURjIg1_i6t8kCHKm45_aZA3gnD_g.woff2) format('woff2'); +} \ No newline at end of file diff --git a/scripts/arrow-fade.js b/scripts/arrow-fade.js new file mode 100644 index 0000000..0bb6aa9 --- /dev/null +++ b/scripts/arrow-fade.js @@ -0,0 +1,10 @@ +// JavaScript Document +$(document).ready(function(){ + $(window).scroll(function(){ + if($(this).scrollTop() > $(window).height()*0.3){ + $(".arrow-down").css({"opacity" : "0"}) + } else { + $(".arrow-down").css({"opacity" : "0.4"}) + } + }) +}) \ No newline at end of file diff --git a/scripts/click-gb.js b/scripts/click-gb.js new file mode 100644 index 0000000..e671b61 --- /dev/null +++ b/scripts/click-gb.js @@ -0,0 +1,211 @@ +var c = document.getElementById("c"); +var ctx = c.getContext("2d"); +var cH; +var cW; +var bgColor = "#FF6138"; +var animations = []; +var circles = []; + +var colorPicker = (function() { + var colors = ["#FF6138", "#FFBE53", "#2980B9", "#282741"]; + var index = 0; + function next() { + index = index++ < colors.length - 1 ? index : 0; + return colors[index]; + } + function current() { + return colors[index]; + } + return { + next: next, + current: current + }; +})(); + +function removeAnimation(animation) { + var index = animations.indexOf(animation); + if (index > -1) animations.splice(index, 1); +} + +function calcPageFillRadius(x, y) { + var l = Math.max(x - 0, cW - x); + var h = Math.max(y - 0, cH - y); + return Math.sqrt(Math.pow(l, 2) + Math.pow(h, 2)); +} + +function addClickListeners() { + document.addEventListener("touchstart", handleEvent); + document.addEventListener("mousedown", handleEvent); +} + +function handleEvent(e) { + if (e.touches) { + e.preventDefault(); + e = e.touches[0]; + } + var currentColor = colorPicker.current(); + var nextColor = colorPicker.next(); + var targetR = calcPageFillRadius(e.pageX, e.pageY); + var rippleSize = Math.min(200, cW * 0.4); + var minCoverDuration = 750; + + var pageFill = new Circle({ + x: e.pageX, + y: e.pageY, + r: 0, + fill: nextColor + }); + var fillAnimation = anime({ + targets: pageFill, + r: targetR, + duration: Math.max(targetR / 2, minCoverDuration), + easing: "easeOutQuart", + complete: function() { + bgColor = pageFill.fill; + removeAnimation(fillAnimation); + } + }); + + var ripple = new Circle({ + x: e.pageX, + y: e.pageY, + r: 0, + fill: currentColor, + stroke: { + width: 3, + color: currentColor + }, + opacity: 1 + }); + var rippleAnimation = anime({ + targets: ripple, + r: rippleSize, + opacity: 0, + easing: "easeOutExpo", + duration: 900, + complete: removeAnimation + }); + + var particles = []; + for (var i = 0; i < 32; i++) { + var particle = new Circle({ + x: e.pageX, + y: e.pageY, + fill: currentColor, + r: anime.random(24, 48) + }); + particles.push(particle); + } + var particlesAnimation = anime({ + targets: particles, + x: function(particle) { + return particle.x + anime.random(rippleSize, -rippleSize); + }, + y: function(particle) { + return particle.y + anime.random(rippleSize * 1.15, -rippleSize * 1.15); + }, + r: 0, + easing: "easeOutExpo", + duration: anime.random(1000, 1300), + complete: removeAnimation + }); + animations.push(fillAnimation, rippleAnimation, particlesAnimation); +} + +function extend(a, b) { + for (var key in b) { + if (b.hasOwnProperty(key)) { + a[key] = b[key]; + } + } + return a; +} + +var Circle = function(opts) { + extend(this, opts); +}; + +Circle.prototype.draw = function() { + ctx.globalAlpha = this.opacity || 1; + ctx.beginPath(); + ctx.arc(this.x, this.y, this.r, 0, 2 * Math.PI, false); + if (this.stroke) { + ctx.strokeStyle = this.stroke.color; + ctx.lineWidth = this.stroke.width; + ctx.stroke(); + } + if (this.fill) { + ctx.fillStyle = this.fill; + ctx.fill(); + } + ctx.closePath(); + ctx.globalAlpha = 1; +}; + +var animate = anime({ + duration: Infinity, + update: function() { + ctx.fillStyle = bgColor; + ctx.fillRect(0, 0, cW, cH); + animations.forEach(function(anim) { + anim.animatables.forEach(function(animatable) { + animatable.target.draw(); + }); + }); + } +}); + +var resizeCanvas = function() { + cW = window.innerWidth; + cH = window.innerHeight; + c.width = cW * devicePixelRatio; + c.height = cH * devicePixelRatio; + ctx.scale(devicePixelRatio, devicePixelRatio); +}; + +(function init() { + resizeCanvas(); + if (window.CP) { + // CodePen's loop detection was causin' problems + // and I have no idea why, so... + window.CP.PenTimer.MAX_TIME_IN_LOOP_WO_EXIT = 6000; + } + window.addEventListener("resize", resizeCanvas); + addClickListeners(); + if (!!window.location.pathname.match(/fullcpgrid/)) { + startFauxClicking(); + } + handleInactiveUser(); +})(); + +function handleInactiveUser() { + var inactive = setTimeout(function() { + fauxClick(cW / 2, cH / 2); + }, 2000); + + function clearInactiveTimeout() { + clearTimeout(inactive); + document.removeEventListener("mousedown", clearInactiveTimeout); + document.removeEventListener("touchstart", clearInactiveTimeout); + } + + document.addEventListener("mousedown", clearInactiveTimeout); + document.addEventListener("touchstart", clearInactiveTimeout); +} + +function startFauxClicking() { + setTimeout(function() { + fauxClick( + anime.random(cW * 0.2, cW * 0.8), + anime.random(cH * 0.2, cH * 0.8) + ); + startFauxClicking(); + }, anime.random(200, 900)); +} + +function fauxClick(x, y) { + var fauxClick = new Event("mousedown"); + fauxClick.pageX = x; + fauxClick.pageY = y; + document.dispatchEvent(fauxClick); +} diff --git a/scripts/three.r95.min.js b/scripts/three.r95.min.js new file mode 100644 index 0000000..c67a7e4 --- /dev/null +++ b/scripts/three.r95.min.js @@ -0,0 +1,949 @@ +// threejs.org/license +(function(l,ya){"object"===typeof exports&&"undefined"!==typeof module?ya(exports):"function"===typeof define&&define.amd?define(["exports"],ya):ya(l.THREE={})})(this,function(l){function ya(){}function z(a,b){this.x=a||0;this.y=b||0}function I(){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];0b&&(b=a[c]);return b}function C(){Object.defineProperty(this,"id",{value:If+=2});this.uuid=H.generateUUID();this.name="";this.type="BufferGeometry";this.index=null;this.attributes={};this.morphAttributes={};this.groups=[];this.boundingSphere=this.boundingBox=null;this.drawRange={start:0,count:Infinity};this.userData={}}function Ib(a,b,c,d,e,f){R.call(this);this.type="BoxGeometry";this.parameters={width:a,height:b,depth:c,widthSegments:d,heightSegments:e, +depthSegments:f};this.fromBufferGeometry(new kb(a,b,c,d,e,f));this.mergeVertices()}function kb(a,b,c,d,e,f){function g(a,b,c,d,e,f,g,l,N,O,Jf){var r=f/N,v=g/O,P=f/2,y=g/2,w=l/2;g=N+1;var E=O+1,x=f=0,B,z,A=new p;for(z=0;zm;m++){if(n=d[m])if(h=n[0],k=n[1]){q&&e.addAttribute("morphTarget"+m,q[h]);f&&e.addAttribute("morphNormal"+ +m,f[h]);c[m]=k;continue}c[m]=0}g.getUniforms().setValue(a,"morphTargetInfluences",c)}}}function Vf(a,b){var c={};return{update:function(d){var e=b.render.frame,f=d.geometry,g=a.get(d,f);c[g.id]!==e&&(f.isGeometry&&g.updateFromObject(d),a.update(g),c[g.id]=e);return g},dispose:function(){c={}}}}function Ua(a,b,c,d,e,f,g,h,k,m){a=void 0!==a?a:[];T.call(this,a,void 0!==b?b:301,c,d,e,f,g,h,k,m);this.flipY=!1}function Jb(a,b,c){var d=a[0];if(0>=d||0/gm, +function(a,c){a=S[c];if(void 0===a)throw Error("Can not resolve #include <"+c+">");return Xd(a)})}function Xe(a){return a.replace(/#pragma unroll_loop[\s]+?for \( int i = (\d+); i < (\d+); i \+\+ \) \{([\s\S]+?)(?=\})\}/g,function(a,c,d,e){a="";for(c=parseInt(c);cb||a.height>b){if("data"in a){console.warn("THREE.WebGLRenderer: image in DataTexture is too big ("+a.width+"x"+a.height+")."); +return}b/=Math.max(a.width,a.height);var c=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");c.width=Math.floor(a.width*b);c.height=Math.floor(a.height*b);c.getContext("2d").drawImage(a,0,0,a.width,a.height,0,0,c.width,c.height);console.warn("THREE.WebGLRenderer: image is too big ("+a.width+"x"+a.height+"). Resized to "+c.width+"x"+c.height);return c}return a}function k(a){return H.isPowerOfTwo(a.width)&&H.isPowerOfTwo(a.height)}function m(a,b){return a.generateMipmaps&&b&&1003!== +a.minFilter&&1006!==a.minFilter}function q(b,c,e,f){a.generateMipmap(b);d.get(c).__maxMipLevel=Math.log(Math.max(e,f))*Math.LOG2E}function n(b,c){if(!e.isWebGL2)return b;if(b===a.RGB){if(c===a.FLOAT)return a.RGB32F;if(c===a.HALF_FLOAT)return a.RGB16F;if(c===a.UNSIGNED_BYTE)return a.RGB8}if(b===a.RGBA){if(c===a.FLOAT)return a.RGBA32F;if(c===a.HALF_FLOAT)return a.RGBA16F;if(c===a.UNSIGNED_BYTE)return a.RGBA8}return b}function t(b){return 1003===b||1004===b||1005===b?a.NEAREST:a.LINEAR}function u(b){b= +b.target;b.removeEventListener("dispose",u);a:{var c=d.get(b);if(b.image&&c.__image__webglTextureCube)a.deleteTexture(c.__image__webglTextureCube);else{if(void 0===c.__webglInit)break a;a.deleteTexture(c.__webglTexture)}d.remove(b)}b.isVideoTexture&&delete B[b.id];g.memory.textures--}function r(b){b=b.target;b.removeEventListener("dispose",r);var c=d.get(b),e=d.get(b.texture);if(b){void 0!==e.__webglTexture&&a.deleteTexture(e.__webglTexture);b.depthTexture&&b.depthTexture.dispose();if(b.isWebGLRenderTargetCube)for(e= +0;6>e;e++)a.deleteFramebuffer(c.__webglFramebuffer[e]),c.__webglDepthbuffer&&a.deleteRenderbuffer(c.__webglDepthbuffer[e]);else a.deleteFramebuffer(c.__webglFramebuffer),c.__webglDepthbuffer&&a.deleteRenderbuffer(c.__webglDepthbuffer);d.remove(b.texture);d.remove(b)}g.memory.textures--}function l(b,t){var r=d.get(b);if(b.isVideoTexture){var l=b.id,v=g.render.frame;B[l]!==v&&(B[l]=v,b.update())}if(0w;w++)v[w]=t||l?l?b.image[w].image:b.image[w]:h(b.image[w],e.maxCubemapSize);var y=v[0],E=k(y),P=f.convert(b.format),x=f.convert(b.type),N=n(P,x);p(a.TEXTURE_CUBE_MAP,b,E);for(w=0;6>w;w++)if(t)for(var B,z=v[w].mipmaps,A=0,D=z.length;At;t++)e.__webglFramebuffer[t]=a.createFramebuffer()}else e.__webglFramebuffer= +a.createFramebuffer();if(h){c.bindTexture(a.TEXTURE_CUBE_MAP,f.__webglTexture);p(a.TEXTURE_CUBE_MAP,b.texture,n);for(t=0;6>t;t++)x(e.__webglFramebuffer[t],b,a.COLOR_ATTACHMENT0,a.TEXTURE_CUBE_MAP_POSITIVE_X+t);m(b.texture,n)&&q(a.TEXTURE_CUBE_MAP,b.texture,b.width,b.height);c.bindTexture(a.TEXTURE_CUBE_MAP,null)}else c.bindTexture(a.TEXTURE_2D,f.__webglTexture),p(a.TEXTURE_2D,b.texture,n),x(e.__webglFramebuffer,b,a.COLOR_ATTACHMENT0,a.TEXTURE_2D),m(b.texture,n)&&q(a.TEXTURE_2D,b.texture,b.width,b.height), +c.bindTexture(a.TEXTURE_2D,null);if(b.depthBuffer){e=d.get(b);f=!0===b.isWebGLRenderTargetCube;if(b.depthTexture){if(f)throw Error("target.depthTexture not supported in Cube render targets");if(b&&b.isWebGLRenderTargetCube)throw Error("Depth Texture with cube render targets is not supported");a.bindFramebuffer(a.FRAMEBUFFER,e.__webglFramebuffer);if(!b.depthTexture||!b.depthTexture.isDepthTexture)throw Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");d.get(b.depthTexture).__webglTexture&& +b.depthTexture.image.width===b.width&&b.depthTexture.image.height===b.height||(b.depthTexture.image.width=b.width,b.depthTexture.image.height=b.height,b.depthTexture.needsUpdate=!0);l(b.depthTexture,0);e=d.get(b.depthTexture).__webglTexture;if(1026===b.depthTexture.format)a.framebufferTexture2D(a.FRAMEBUFFER,a.DEPTH_ATTACHMENT,a.TEXTURE_2D,e,0);else if(1027===b.depthTexture.format)a.framebufferTexture2D(a.FRAMEBUFFER,a.DEPTH_STENCIL_ATTACHMENT,a.TEXTURE_2D,e,0);else throw Error("Unknown depthTexture format"); +}else if(f)for(e.__webglDepthbuffer=[],f=0;6>f;f++)a.bindFramebuffer(a.FRAMEBUFFER,e.__webglFramebuffer[f]),e.__webglDepthbuffer[f]=a.createRenderbuffer(),w(e.__webglDepthbuffer[f],b);else a.bindFramebuffer(a.FRAMEBUFFER,e.__webglFramebuffer),e.__webglDepthbuffer=a.createRenderbuffer(),w(e.__webglDepthbuffer,b);a.bindFramebuffer(a.FRAMEBUFFER,null)}};this.updateRenderTargetMipmap=function(b){var e=b.texture,f=k(b);if(m(e,f)){f=b.isWebGLRenderTargetCube?a.TEXTURE_CUBE_MAP:a.TEXTURE_2D;var g=d.get(e).__webglTexture; +c.bindTexture(f,g);q(f,e,b.width,b.height);c.bindTexture(f,null)}}}function $e(a,b,c){return{convert:function(d){if(1E3===d)return a.REPEAT;if(1001===d)return a.CLAMP_TO_EDGE;if(1002===d)return a.MIRRORED_REPEAT;if(1003===d)return a.NEAREST;if(1004===d)return a.NEAREST_MIPMAP_NEAREST;if(1005===d)return a.NEAREST_MIPMAP_LINEAR;if(1006===d)return a.LINEAR;if(1007===d)return a.LINEAR_MIPMAP_NEAREST;if(1008===d)return a.LINEAR_MIPMAP_LINEAR;if(1009===d)return a.UNSIGNED_BYTE;if(1017===d)return a.UNSIGNED_SHORT_4_4_4_4; +if(1018===d)return a.UNSIGNED_SHORT_5_5_5_1;if(1019===d)return a.UNSIGNED_SHORT_5_6_5;if(1010===d)return a.BYTE;if(1011===d)return a.SHORT;if(1012===d)return a.UNSIGNED_SHORT;if(1013===d)return a.INT;if(1014===d)return a.UNSIGNED_INT;if(1015===d)return a.FLOAT;if(1016===d){if(c.isWebGL2)return a.HALF_FLOAT;var e=b.get("OES_texture_half_float");if(null!==e)return e.HALF_FLOAT_OES}if(1021===d)return a.ALPHA;if(1022===d)return a.RGB;if(1023===d)return a.RGBA;if(1024===d)return a.LUMINANCE;if(1025=== +d)return a.LUMINANCE_ALPHA;if(1026===d)return a.DEPTH_COMPONENT;if(1027===d)return a.DEPTH_STENCIL;if(100===d)return a.FUNC_ADD;if(101===d)return a.FUNC_SUBTRACT;if(102===d)return a.FUNC_REVERSE_SUBTRACT;if(200===d)return a.ZERO;if(201===d)return a.ONE;if(202===d)return a.SRC_COLOR;if(203===d)return a.ONE_MINUS_SRC_COLOR;if(204===d)return a.SRC_ALPHA;if(205===d)return a.ONE_MINUS_SRC_ALPHA;if(206===d)return a.DST_ALPHA;if(207===d)return a.ONE_MINUS_DST_ALPHA;if(208===d)return a.DST_COLOR;if(209=== +d)return a.ONE_MINUS_DST_COLOR;if(210===d)return a.SRC_ALPHA_SATURATE;if(33776===d||33777===d||33778===d||33779===d)if(e=b.get("WEBGL_compressed_texture_s3tc"),null!==e){if(33776===d)return e.COMPRESSED_RGB_S3TC_DXT1_EXT;if(33777===d)return e.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(33778===d)return e.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(33779===d)return e.COMPRESSED_RGBA_S3TC_DXT5_EXT}if(35840===d||35841===d||35842===d||35843===d)if(e=b.get("WEBGL_compressed_texture_pvrtc"),null!==e){if(35840===d)return e.COMPRESSED_RGB_PVRTC_4BPPV1_IMG; +if(35841===d)return e.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(35842===d)return e.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(35843===d)return e.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}if(36196===d&&(e=b.get("WEBGL_compressed_texture_etc1"),null!==e))return e.COMPRESSED_RGB_ETC1_WEBGL;if(37808===d||37809===d||37810===d||37811===d||37812===d||37813===d||37814===d||37815===d||37816===d||37817===d||37818===d||37819===d||37820===d||37821===d)if(e=b.get("WEBGL_compressed_texture_astc"),null!==e)return d;if(103===d||104=== +d){if(c.isWebGL2){if(103===d)return a.MIN;if(104===d)return a.MAX}e=b.get("EXT_blend_minmax");if(null!==e){if(103===d)return e.MIN_EXT;if(104===d)return e.MAX_EXT}}if(1020===d){if(c.isWebGL2)return a.UNSIGNED_INT_24_8;e=b.get("WEBGL_depth_texture");if(null!==e)return e.UNSIGNED_INT_24_8_WEBGL}return 0}}}function Kb(){D.call(this);this.type="Group"}function Z(a,b,c,d){Na.call(this);this.type="PerspectiveCamera";this.fov=void 0!==a?a:50;this.zoom=1;this.near=void 0!==c?c:.1;this.far=void 0!==d?d:2E3; +this.focus=10;this.aspect=void 0!==b?b:1;this.view=null;this.filmGauge=35;this.filmOffset=0;this.updateProjectionMatrix()}function yc(a){Z.call(this);this.cameras=a||[]}function af(a){function b(){return null!==e&&!0===e.isPresenting}function c(){if(b()){var c=e.getEyeParameters("left"),f=c.renderWidth;c=c.renderHeight;x=a.getPixelRatio();y=a.getSize();a.setDrawingBufferSize(2*f,c,1);B.start()}else d.enabled&&(a.setDrawingBufferSize(y.width,y.height,x),B.stop())}var d=this,e=null,f=null,g=null,h= +[],k=new I,m=new I;"undefined"!==typeof window&&"VRFrameData"in window&&(f=new window.VRFrameData,window.addEventListener("vrdisplaypresentchange",c,!1));var q=new I,n=new fa,t=new p,u=new Z;u.bounds=new V(0,0,.5,1);u.layers.enable(1);var r=new Z;r.bounds=new V(.5,0,.5,1);r.layers.enable(2);var l=new yc([u,r]);l.layers.enable(1);l.layers.enable(2);var y,x,w=[];this.enabled=!1;this.userHeight=1.6;this.getController=function(a){var b=h[a];void 0===b&&(b=new Kb,b.matrixAutoUpdate=!1,b.visible=!1,h[a]= +b);return b};this.getDevice=function(){return e};this.setDevice=function(a){void 0!==a&&(e=a);B.setContext(a)};this.setPoseTarget=function(a){void 0!==a&&(g=a)};this.getCamera=function(a){if(null===e)return a.position.set(0,d.userHeight,0),a;e.depthNear=a.near;e.depthFar=a.far;e.getFrameData(f);var b=e.stageParameters;b?k.fromArray(b.sittingToStandingTransform):k.makeTranslation(0,d.userHeight,0);b=f.pose;var c=null!==g?g:a;c.matrix.copy(k);c.matrix.decompose(c.position,c.quaternion,c.scale);null!== +b.orientation&&(n.fromArray(b.orientation),c.quaternion.multiply(n));null!==b.position&&(n.setFromRotationMatrix(k),t.fromArray(b.position),t.applyQuaternion(n),c.position.add(t));c.updateMatrixWorld();if(!1===e.isPresenting)return a;u.near=a.near;r.near=a.near;u.far=a.far;r.far=a.far;l.matrixWorld.copy(a.matrixWorld);l.matrixWorldInverse.copy(a.matrixWorldInverse);u.matrixWorldInverse.fromArray(f.leftViewMatrix);r.matrixWorldInverse.fromArray(f.rightViewMatrix);m.getInverse(k);u.matrixWorldInverse.multiply(m); +r.matrixWorldInverse.multiply(m);a=c.parent;null!==a&&(q.getInverse(a.matrixWorld),u.matrixWorldInverse.multiply(q),r.matrixWorldInverse.multiply(q));u.matrixWorld.getInverse(u.matrixWorldInverse);r.matrixWorld.getInverse(r.matrixWorldInverse);u.projectionMatrix.fromArray(f.leftProjectionMatrix);r.projectionMatrix.fromArray(f.rightProjectionMatrix);l.projectionMatrix.copy(u.projectionMatrix);a=e.getLayers();a.length&&(a=a[0],null!==a.leftBounds&&4===a.leftBounds.length&&u.bounds.fromArray(a.leftBounds), +null!==a.rightBounds&&4===a.rightBounds.length&&r.bounds.fromArray(a.rightBounds));a:for(a=0;af.normalMatrix.determinant();ba.setMaterial(e,h);var k=t(a,c,e,f),m=!1;if(b!==d.id||S!==k.id||nd!==(!0===e.wireframe))b=d.id,S=k.id,nd=!0===e.wireframe,m=!0;f.morphTargetInfluences&&(va.update(f,d,e,k),m=!0);h=d.index;var q=d.attributes.position;c=1;!0===e.wireframe&& +(h=ra.getWireframeAttribute(d),c=2);a=xa;if(null!==h){var n=pa.get(h);a=ya;a.setIndex(n)}if(m){if(d&&d.isInstancedBufferGeometry&!ua.isWebGL2&&null===ha.get("ANGLE_instanced_arrays"))console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");else{ba.initAttributes();m=d.attributes;k=k.getAttributes();var u=e.defaultAttributeValues;for(N in k){var l=k[N];if(0<=l){var r=m[N];if(void 0!==r){var v=r.normalized, +p=r.itemSize,w=pa.get(r);if(void 0!==w){var y=w.buffer,E=w.type;w=w.bytesPerElement;if(r.isInterleavedBufferAttribute){var x=r.data,B=x.stride;r=r.offset;x&&x.isInstancedInterleavedBuffer?(ba.enableAttributeAndDivisor(l,x.meshPerAttribute),void 0===d.maxInstancedCount&&(d.maxInstancedCount=x.meshPerAttribute*x.count)):ba.enableAttribute(l);F.bindBuffer(F.ARRAY_BUFFER,y);F.vertexAttribPointer(l,p,E,v,B*w,r*w)}else r.isInstancedBufferAttribute?(ba.enableAttributeAndDivisor(l,r.meshPerAttribute),void 0=== +d.maxInstancedCount&&(d.maxInstancedCount=r.meshPerAttribute*r.count)):ba.enableAttribute(l),F.bindBuffer(F.ARRAY_BUFFER,y),F.vertexAttribPointer(l,p,E,v,0,0)}}else if(void 0!==u&&(v=u[N],void 0!==v))switch(v.length){case 2:F.vertexAttrib2fv(l,v);break;case 3:F.vertexAttrib3fv(l,v);break;case 4:F.vertexAttrib4fv(l,v);break;default:F.vertexAttrib1fv(l,v)}}}ba.disableUnusedAttributes()}null!==h&&F.bindBuffer(F.ELEMENT_ARRAY_BUFFER,n.buffer)}n=Infinity;null!==h?n=h.count:void 0!==q&&(n=q.count);h=d.drawRange.start* +c;q=null!==g?g.start*c:0;var N=Math.max(h,q);g=Math.max(0,Math.min(n,h+d.drawRange.count*c,q+(null!==g?g.count*c:Infinity))-1-N+1);if(0!==g){if(f.isMesh)if(!0===e.wireframe)ba.setLineWidth(e.wireframeLinewidth*(null===R?U:1)),a.setMode(F.LINES);else switch(f.drawMode){case 0:a.setMode(F.TRIANGLES);break;case 1:a.setMode(F.TRIANGLE_STRIP);break;case 2:a.setMode(F.TRIANGLE_FAN)}else f.isLine?(e=e.linewidth,void 0===e&&(e=1),ba.setLineWidth(e*(null===R?U:1)),f.isLineSegments?a.setMode(F.LINES):f.isLineLoop? +a.setMode(F.LINE_LOOP):a.setMode(F.LINE_STRIP)):f.isPoints?a.setMode(F.POINTS):f.isSprite&&a.setMode(F.TRIANGLES);d&&d.isInstancedBufferGeometry?0=ua.maxTextures&&console.warn("THREE.WebGLRenderer: Trying to use "+a+" texture units while this GPU supports only "+ua.maxTextures);X+=1;return a}; +this.setTexture2D=function(){var a=!1;return function(b,c){b&&b.isWebGLRenderTarget&&(a||(console.warn("THREE.WebGLRenderer.setTexture2D: don't use render targets as textures. Use their .texture property instead."),a=!0),b=b.texture);ia.setTexture2D(b,c)}}();this.setTexture=function(){var a=!1;return function(b,c){a||(console.warn("THREE.WebGLRenderer: .setTexture is deprecated, use setTexture2D instead."),a=!0);ia.setTexture2D(b,c)}}();this.setTextureCube=function(){var a=!1;return function(b,c){b&& +b.isWebGLRenderTargetCube&&(a||(console.warn("THREE.WebGLRenderer.setTextureCube: don't use cube render targets as textures. Use their .texture property instead."),a=!0),b=b.texture);b&&b.isCubeTexture||Array.isArray(b.image)&&6===b.image.length?ia.setTextureCube(b,c):ia.setTextureCubeDynamic(b,c)}}();this.setFramebuffer=function(a){L=a};this.getRenderTarget=function(){return R};this.setRenderTarget=function(a){(R=a)&&void 0===Ba.get(a).__webglFramebuffer&&ia.setupRenderTarget(a);var b=L,c=!1;a?(b= +Ba.get(a).__webglFramebuffer,a.isWebGLRenderTargetCube&&(b=b[a.activeCubeFace],c=!0),T.copy(a.viewport),wc.copy(a.scissor),ea=a.scissorTest):(T.copy(od).multiplyScalar(U),wc.copy(fa).multiplyScalar(U),ea=qa);Q!==b&&(F.bindFramebuffer(F.FRAMEBUFFER,b),Q=b);ba.viewport(T);ba.scissor(wc);ba.setScissorTest(ea);c&&(c=Ba.get(a.texture),F.framebufferTexture2D(F.FRAMEBUFFER,F.COLOR_ATTACHMENT0,F.TEXTURE_CUBE_MAP_POSITIVE_X+a.activeCubeFace,c.__webglTexture,a.activeMipMapLevel))};this.readRenderTargetPixels= +function(a,b,c,d,e,f){if(a&&a.isWebGLRenderTarget){var g=Ba.get(a).__webglFramebuffer;if(g){var h=!1;g!==Q&&(F.bindFramebuffer(F.FRAMEBUFFER,g),h=!0);try{var k=a.texture,m=k.format,q=k.type;1023!==m&&da.convert(m)!==F.getParameter(F.IMPLEMENTATION_COLOR_READ_FORMAT)?console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format."):1009===q||da.convert(q)===F.getParameter(F.IMPLEMENTATION_COLOR_READ_TYPE)||1015===q&&(ua.isWebGL2||ha.get("OES_texture_float")|| +ha.get("WEBGL_color_buffer_float"))||1016===q&&(ua.isWebGL2?ha.get("EXT_color_buffer_float"):ha.get("EXT_color_buffer_half_float"))?F.checkFramebufferStatus(F.FRAMEBUFFER)===F.FRAMEBUFFER_COMPLETE?0<=b&&b<=a.width-d&&0<=c&&c<=a.height-e&&F.readPixels(b,c,d,e,da.convert(m),da.convert(q),f):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete."):console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.")}finally{h&& +F.bindFramebuffer(F.FRAMEBUFFER,Q)}}}else console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.")};this.copyFramebufferToTexture=function(a,b,c){var d=b.image.width,e=b.image.height,f=da.convert(b.format);this.setTexture2D(b,0);F.copyTexImage2D(F.TEXTURE_2D,c||0,f,a.x,a.y,d,e,0)};this.copyTextureToTexture=function(a,b,c,d){var e=b.image.width,f=b.image.height,g=da.convert(c.format),h=da.convert(c.type);this.setTexture2D(c,0);b.isDataTexture?F.texSubImage2D(F.TEXTURE_2D, +d||0,a.x,a.y,e,f,g,h,b.image.data):F.texSubImage2D(F.TEXTURE_2D,d||0,a.x,a.y,g,h,b.image)}}function Lb(a,b){this.name="";this.color=new G(a);this.density=void 0!==b?b:2.5E-4}function Mb(a,b,c){this.name="";this.color=new G(a);this.near=void 0!==b?b:1;this.far=void 0!==c?c:1E3}function qd(){D.call(this);this.type="Scene";this.overrideMaterial=this.fog=this.background=null;this.autoUpdate=!0}function ob(a,b){this.array=a;this.stride=b;this.count=void 0!==a?a.length/b:0;this.dynamic=!1;this.updateRange= +{offset:0,count:-1};this.version=0}function zc(a,b,c,d){this.data=a;this.itemSize=b;this.offset=c;this.normalized=!0===d}function cb(a){J.call(this);this.type="SpriteMaterial";this.color=new G(16777215);this.map=null;this.rotation=0;this.lights=!1;this.transparent=!0;this.setValues(a)}function Ac(a){D.call(this);this.type="Sprite";if(void 0===Nb){Nb=new C;var b=new Float32Array([-.5,-.5,0,0,0,.5,-.5,0,1,0,.5,.5,0,1,1,-.5,.5,0,0,1]);b=new ob(b,5);Nb.setIndex([0,1,2,0,2,3]);Nb.addAttribute("position", +new zc(b,3,0,!1));Nb.addAttribute("uv",new zc(b,2,3,!1))}this.geometry=Nb;this.material=void 0!==a?a:new cb;this.center=new z(.5,.5)}function Bc(){D.call(this);this.type="LOD";Object.defineProperties(this,{levels:{enumerable:!0,value:[]}})}function Cc(a,b){a=a||[];this.bones=a.slice(0);this.boneMatrices=new Float32Array(16*this.bones.length);if(void 0===b)this.calculateInverses();else if(this.bones.length===b.length)this.boneInverses=b.slice(0);else for(console.warn("THREE.Skeleton boneInverses is the wrong length."), +this.boneInverses=[],a=0,b=this.bones.length;ac;c++){var n=q[h[c]];var t=q[h[(c+1)%3]];f[0]=Math.min(n,t);f[1]=Math.max(n,t);n=f[0]+","+f[1];void 0===g[n]&&(g[n]={index1:f[0],index2:f[1]})}}for(n in g)m=g[n],h=a.vertices[m.index1],b.push(h.x,h.y,h.z),h=a.vertices[m.index2],b.push(h.x,h.y,h.z)}else if(a&&a.isBufferGeometry)if(h=new p,null!==a.index){k=a.attributes.position;q=a.index;var u=a.groups;0===u.length&&(u=[{start:0, +count:q.count,materialIndex:0}]);a=0;for(e=u.length;ac;c++)n=q.getX(m+c),t=q.getX(m+(c+1)%3),f[0]=Math.min(n,t),f[1]=Math.max(n,t),n=f[0]+","+f[1],void 0===g[n]&&(g[n]={index1:f[0],index2:f[1]});for(n in g)m=g[n],h.fromBufferAttribute(k,m.index1),b.push(h.x,h.y,h.z),h.fromBufferAttribute(k,m.index2),b.push(h.x,h.y,h.z)}else for(k=a.attributes.position,m=0,d=k.count/3;mc;c++)g=3*m+c,h.fromBufferAttribute(k,g),b.push(h.x, +h.y,h.z),g=3*m+(c+1)%3,h.fromBufferAttribute(k,g),b.push(h.x,h.y,h.z);this.addAttribute("position",new A(b,3))}function Fc(a,b,c){R.call(this);this.type="ParametricGeometry";this.parameters={func:a,slices:b,stacks:c};this.fromBufferGeometry(new Rb(a,b,c));this.mergeVertices()}function Rb(a,b,c){C.call(this);this.type="ParametricBufferGeometry";this.parameters={func:a,slices:b,stacks:c};var d=[],e=[],f=[],g=[],h=new p,k=new p,m=new p,q=new p,n=new p,t,u;3>a.length&&console.error("THREE.ParametricGeometry: Function must now modify a Vector3 as third parameter."); +var r=b+1;for(t=0;t<=c;t++){var l=t/c;for(u=0;u<=b;u++){var y=u/b;a(y,l,k);e.push(k.x,k.y,k.z);0<=y-1E-5?(a(y-1E-5,l,m),q.subVectors(k,m)):(a(y+1E-5,l,m),q.subVectors(m,k));0<=l-1E-5?(a(y,l-1E-5,m),n.subVectors(k,m)):(a(y,l+1E-5,m),n.subVectors(m,k));h.crossVectors(q,n).normalize();f.push(h.x,h.y,h.z);g.push(y,l)}}for(t=0;td&&1===a.x&&(k[b]=a.x-1);0===c.x&&0===c.z&&(k[b]=d/2/Math.PI+.5)}C.call(this);this.type="PolyhedronBufferGeometry";this.parameters={vertices:a, +indices:b,radius:c,detail:d};c=c||1;d=d||0;var h=[],k=[];(function(a){for(var c=new p,d=new p,g=new p,h=0;he&&(.2>b&&(k[a+0]+=1),.2>c&&(k[a+2]+=1),.2>d&&(k[a+4]+=1))})();this.addAttribute("position",new A(h,3));this.addAttribute("normal",new A(h.slice(),3));this.addAttribute("uv",new A(k,2));0===d?this.computeVertexNormals():this.normalizeNormals()}function Hc(a, +b){R.call(this);this.type="TetrahedronGeometry";this.parameters={radius:a,detail:b};this.fromBufferGeometry(new Sb(a,b));this.mergeVertices()}function Sb(a,b){na.call(this,[1,1,1,-1,-1,1,-1,1,-1,1,-1,-1],[2,1,0,0,3,2,1,3,0,2,3,1],a,b);this.type="TetrahedronBufferGeometry";this.parameters={radius:a,detail:b}}function Ic(a,b){R.call(this);this.type="OctahedronGeometry";this.parameters={radius:a,detail:b};this.fromBufferGeometry(new pb(a,b));this.mergeVertices()}function pb(a,b){na.call(this,[1,0,0, +-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1],[0,2,4,0,4,3,0,3,5,0,5,2,1,2,5,1,5,3,1,3,4,1,4,2],a,b);this.type="OctahedronBufferGeometry";this.parameters={radius:a,detail:b}}function Jc(a,b){R.call(this);this.type="IcosahedronGeometry";this.parameters={radius:a,detail:b};this.fromBufferGeometry(new Tb(a,b));this.mergeVertices()}function Tb(a,b){var c=(1+Math.sqrt(5))/2;na.call(this,[-1,c,0,1,c,0,-1,-c,0,1,-c,0,0,-1,c,0,1,c,0,-1,-c,0,1,-c,c,0,-1,c,0,1,-c,0,-1,-c,0,1],[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5, +11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],a,b);this.type="IcosahedronBufferGeometry";this.parameters={radius:a,detail:b}}function Kc(a,b){R.call(this);this.type="DodecahedronGeometry";this.parameters={radius:a,detail:b};this.fromBufferGeometry(new Ub(a,b));this.mergeVertices()}function Ub(a,b){var c=(1+Math.sqrt(5))/2,d=1/c;na.call(this,[-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,-d,-c,0,-d,c,0,d,-c,0,d,c,-d,-c,0,-d,c,0,d,-c,0,d,c, +0,-c,0,-d,c,0,-d,-c,0,d,c,0,d],[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],a,b);this.type="DodecahedronBufferGeometry";this.parameters={radius:a,detail:b}}function Lc(a,b,c,d,e,f){R.call(this);this.type="TubeGeometry";this.parameters={path:a,tubularSegments:b,radius:c,radialSegments:d, +closed:e};void 0!==f&&console.warn("THREE.TubeGeometry: taper has been removed.");a=new Vb(a,b,c,d,e);this.tangents=a.tangents;this.normals=a.normals;this.binormals=a.binormals;this.fromBufferGeometry(a);this.mergeVertices()}function Vb(a,b,c,d,e){function f(e){q=a.getPointAt(e/b,q);var f=g.normals[e];e=g.binormals[e];for(t=0;t<=d;t++){var m=t/d*Math.PI*2,n=Math.sin(m);m=-Math.cos(m);k.x=m*f.x+n*e.x;k.y=m*f.y+n*e.y;k.z=m*f.z+n*e.z;k.normalize();r.push(k.x,k.y,k.z);h.x=q.x+c*k.x;h.y=q.y+c*k.y;h.z= +q.z+c*k.z;l.push(h.x,h.y,h.z)}}C.call(this);this.type="TubeBufferGeometry";this.parameters={path:a,tubularSegments:b,radius:c,radialSegments:d,closed:e};b=b||64;c=c||1;d=d||8;e=e||!1;var g=a.computeFrenetFrames(b,e);this.tangents=g.tangents;this.normals=g.normals;this.binormals=g.binormals;var h=new p,k=new p,m=new z,q=new p,n,t,l=[],r=[],v=[],y=[];for(n=0;n=b;e-=d)f=cf(e,a[e],a[e+1],f);f&&qb(f,f.next)&&(Oc(f),f=f.next);return f}function Pc(a,b){if(!a)return a;b||(b=a);do{var c=!1;if(a.steiner||!qb(a,a.next)&&0!==ma(a.prev,a,a.next))a=a.next;else{Oc(a);a=b=a.prev;if(a===a.next)break;c=!0}}while(c||a!==b);return b} +function Qc(a,b,c,d,e,f,g){if(a){if(!g&&f){var h=a,k=h;do null===k.z&&(k.z=ae(k.x,k.y,d,e,f)),k.prevZ=k.prev,k=k.nextZ=k.next;while(k!==h);k.prevZ.nextZ=null;k.prevZ=null;h=k;var m,q,n,t,l=1;do{k=h;var r=h=null;for(q=0;k;){q++;var v=k;for(m=n=0;mn.x?q.x>l.x?q.x:l.x:n.x>l.x?n.x:l.x,B=q.y>n.y?q.y>l.y?q.y:l.y:n.y>l.y?n.y:l.y;m=ae(q.x=m;){if(p!==r.prev&&p!==r.next&&ud(q.x,q.y,n.x,n.y,l.x,l.y,p.x,p.y)&&0<=ma(p.prev,p,p.next)){r=!1;break a}p= +p.prevZ}r=!0}}else a:if(r=a,q=r.prev,n=r,l=r.next,0<=ma(q,n,l))r=!1;else{for(m=r.next.next;m!==r.prev;){if(ud(q.x,q.y,n.x,n.y,l.x,l.y,m.x,m.y)&&0<=ma(m.prev,m,m.next)){r=!1;break a}m=m.next}r=!0}if(r)b.push(k.i/c),b.push(a.i/c),b.push(v.i/c),Oc(a),h=a=v.next;else if(a=v,a===h){if(!g)Qc(Pc(a),b,c,d,e,f,1);else if(1===g){g=b;h=c;k=a;do v=k.prev,r=k.next.next,!qb(v,r)&&df(v,k,k.next,r)&&Rc(v,r)&&Rc(r,v)&&(g.push(v.i/h),g.push(k.i/h),g.push(r.i/h),Oc(k),Oc(k.next),k=a=r),k=k.next;while(k!==a);a=k;Qc(a, +b,c,d,e,f,2)}else if(2===g)a:{g=a;do{for(h=g.next.next;h!==g.prev;){if(k=g.i!==h.i){k=g;v=h;if(r=k.next.i!==v.i&&k.prev.i!==v.i){b:{r=k;do{if(r.i!==k.i&&r.next.i!==k.i&&r.i!==v.i&&r.next.i!==v.i&&df(r,r.next,k,v)){r=!0;break b}r=r.next}while(r!==k);r=!1}r=!r}if(r=r&&Rc(k,v)&&Rc(v,k)){r=k;q=!1;n=(k.x+v.x)/2;v=(k.y+v.y)/2;do r.y>v!==r.next.y>v&&r.next.y!==r.y&&n<(r.next.x-r.x)*(v-r.y)/(r.next.y-r.y)+r.x&&(q=!q),r=r.next;while(r!==k);r=q}k=r}if(k){a=ef(g,h);g=Pc(g,g.next);a=Pc(a,a.next);Qc(g,b,c,d,e, +f);Qc(a,b,c,d,e,f);break a}h=h.next}g=g.next}while(g!==a)}break}}}}function Ng(a,b){return a.x-b.x}function Og(a,b){var c=b,d=a.x,e=a.y,f=-Infinity;do{if(e<=c.y&&e>=c.next.y&&c.next.y!==c.y){var g=c.x+(e-c.y)*(c.next.x-c.x)/(c.next.y-c.y);if(g<=d&&g>f){f=g;if(g===d){if(e===c.y)return c;if(e===c.next.y)return c.next}var h=c.x=c.x&&c.x>=g&&d!==c.x&&ud(eh.x)&&Rc(c,a)&&(h=c,m=q)}c=c.next}return h}function ae(a,b,c,d,e){a=32767*(a-c)*e;b=32767*(b-d)*e;a=(a|a<<8)&16711935;a=(a|a<<4)&252645135;a=(a|a<<2)&858993459;b=(b|b<<8)&16711935;b=(b|b<<4)&252645135;b=(b|b<<2)&858993459;return(a|a<<1)&1431655765|((b|b<<1)&1431655765)<<1}function Pg(a){var b=a,c=a;do b.xma(a.prev,a,a.next)?0<=ma(a,b,a.next)&&0<=ma(a,a.prev,b):0>ma(a,b,a.prev)||0>ma(a,a.next,b)}function ef(a,b){var c=new be(a.i,a.x,a.y),d=new be(b.i,b.x,b.y),e=a.next,f=b.prev;a.next=b;b.prev=a;c.next=e;e.prev= +c;d.next=c;c.prev=d;f.next=d;d.prev=f;return d}function cf(a,b,c,d){a=new be(a,b,c);d?(a.next=d.next,a.prev=d,d.next.prev=a,d.next=a):(a.prev=a,a.next=a);return a}function Oc(a){a.next.prev=a.prev;a.prev.next=a.next;a.prevZ&&(a.prevZ.nextZ=a.nextZ);a.nextZ&&(a.nextZ.prevZ=a.prevZ)}function be(a,b,c){this.i=a;this.x=b;this.y=c;this.nextZ=this.prevZ=this.z=this.next=this.prev=null;this.steiner=!1}function ff(a){var b=a.length;2Number.EPSILON){var k=Math.sqrt(h),m=Math.sqrt(f*f+g*g);h=b.x-e/k;b=b.y+d/k; +g=((c.x-g/m-h)*g-(c.y+f/m-b)*f)/(d*g-e*f);f=h+d*g-a.x;d=b+e*g-a.y;e=f*f+d*d;if(2>=e)return new z(f,d);e=Math.sqrt(e/2)}else a=!1,d>Number.EPSILON?f>Number.EPSILON&&(a=!0):d<-Number.EPSILON?f<-Number.EPSILON&&(a=!0):Math.sign(e)===Math.sign(g)&&(a=!0),a?(f=-e,e=Math.sqrt(h)):(f=d,d=e,e=Math.sqrt(h/2));return new z(f/e,d/e)}function h(a,b){for(M=a.length;0<=--M;){var c=M;var f=M-1;0>f&&(f=a.length-1);var g,h=w+2*O;for(g=0;gq;q++){var n=m[f[q]];var l=m[f[(q+1)%3]];d[0]=Math.min(n,l);d[1]=Math.max(n,l);n=d[0]+","+d[1];void 0===e[n]?e[n]={index1:d[0],index2:d[1],face1:h,face2:void 0}:e[n].face2=h}for(n in e)if(d=e[n],void 0===d.face2||g[d.face1].normal.dot(g[d.face2].normal)<=b)f=a[d.index1],c.push(f.x,f.y,f.z),f=a[d.index2], +c.push(f.x,f.y,f.z);this.addAttribute("position",new A(c,3))}function vb(a,b,c,d,e,f,g,h){R.call(this);this.type="CylinderGeometry";this.parameters={radiusTop:a,radiusBottom:b,height:c,radialSegments:d,heightSegments:e,openEnded:f,thetaStart:g,thetaLength:h};this.fromBufferGeometry(new Wa(a,b,c,d,e,f,g,h));this.mergeVertices()}function Wa(a,b,c,d,e,f,g,h){function k(c){var e,f=new z,k=new p,t=0,v=!0===c?a:b,w=!0===c?1:-1;var A=r;for(e=1;e<=d;e++)n.push(0,y*w,0),l.push(0,w,0),u.push(.5,.5),r++;var C= +r;for(e=0;e<=d;e++){var D=e/d*h+g,H=Math.cos(D);D=Math.sin(D);k.x=v*D;k.y=y*w;k.z=v*H;n.push(k.x,k.y,k.z);l.push(0,w,0);f.x=.5*H+.5;f.y=.5*D*w+.5;u.push(f.x,f.y);r++}for(e=0;ethis.duration&&this.resetDuration()}function Rg(a){switch(a.toLowerCase()){case "scalar":case "double":case "float":case "number":case "integer":return ec;case "vector":case "vector2":case "vector3":case "vector4":return fc; +case "color":return Hd;case "quaternion":return cd;case "bool":case "boolean":return Gd;case "string":return Jd}throw Error("THREE.KeyframeTrack: Unsupported typeName: "+a);}function Sg(a){if(void 0===a.type)throw Error("THREE.KeyframeTrack: track type undefined, can not parse");var b=Rg(a.type);if(void 0===a.times){var c=[],d=[];ia.flattenJSON(a.keys,c,d,"value");a.times=c;a.values=d}return void 0!==b.parse?b.parse(a):new b(a.name,a.times,a.values,a.interpolation)}function Kd(a){this.manager=void 0!== +a?a:ka;this.textures={}}function ge(a){this.manager=void 0!==a?a:ka}function gc(){}function he(a){"boolean"===typeof a&&(console.warn("THREE.JSONLoader: showStatus parameter has been removed from constructor."),a=void 0);this.manager=void 0!==a?a:ka;this.withCredentials=!1}function mf(a){this.manager=void 0!==a?a:ka;this.texturePath=""}function ie(a){"undefined"===typeof createImageBitmap&&console.warn("THREE.ImageBitmapLoader: createImageBitmap() not supported.");"undefined"===typeof fetch&&console.warn("THREE.ImageBitmapLoader: fetch() not supported."); +this.manager=void 0!==a?a:ka;this.options=void 0}function je(){this.type="ShapePath";this.color=new G;this.subPaths=[];this.currentPath=null}function ke(a){this.type="Font";this.data=a}function nf(a){this.manager=void 0!==a?a:ka}function le(a){this.manager=void 0!==a?a:ka}function of(){this.type="StereoCamera";this.aspect=1;this.eyeSep=.064;this.cameraL=new Z;this.cameraL.layers.enable(1);this.cameraL.matrixAutoUpdate=!1;this.cameraR=new Z;this.cameraR.layers.enable(2);this.cameraR.matrixAutoUpdate= +!1}function dd(a,b,c){D.call(this);this.type="CubeCamera";var d=new Z(90,1,a,b);d.up.set(0,-1,0);d.lookAt(new p(1,0,0));this.add(d);var e=new Z(90,1,a,b);e.up.set(0,-1,0);e.lookAt(new p(-1,0,0));this.add(e);var f=new Z(90,1,a,b);f.up.set(0,0,1);f.lookAt(new p(0,1,0));this.add(f);var g=new Z(90,1,a,b);g.up.set(0,0,-1);g.lookAt(new p(0,-1,0));this.add(g);var h=new Z(90,1,a,b);h.up.set(0,-1,0);h.lookAt(new p(0,0,1));this.add(h);var k=new Z(90,1,a,b);k.up.set(0,-1,0);k.lookAt(new p(0,0,-1));this.add(k); +this.renderTarget=new Gb(c,c,{format:1022,magFilter:1006,minFilter:1006});this.renderTarget.texture.name="CubeCamera";this.update=function(a,b){null===this.parent&&this.updateMatrixWorld();var c=this.renderTarget,m=c.texture.generateMipmaps;c.texture.generateMipmaps=!1;c.activeCubeFace=0;a.render(b,d,c);c.activeCubeFace=1;a.render(b,e,c);c.activeCubeFace=2;a.render(b,f,c);c.activeCubeFace=3;a.render(b,g,c);c.activeCubeFace=4;a.render(b,h,c);c.texture.generateMipmaps=m;c.activeCubeFace=5;a.render(b, +k,c);a.setRenderTarget(null)};this.clear=function(a,b,c,d){for(var e=this.renderTarget,f=0;6>f;f++)e.activeCubeFace=f,a.setRenderTarget(e),a.clear(b,c,d);a.setRenderTarget(null)}}function me(){D.call(this);this.type="AudioListener";this.context=ne.getContext();this.gain=this.context.createGain();this.gain.connect(this.context.destination);this.filter=null}function hc(a){D.call(this);this.type="Audio";this.context=a.context;this.gain=this.context.createGain();this.gain.connect(a.getInput());this.autoplay= +!1;this.buffer=null;this.loop=!1;this.offset=this.startTime=0;this.playbackRate=1;this.isPlaying=!1;this.hasPlaybackControl=!0;this.sourceType="empty";this.filters=[]}function oe(a){hc.call(this,a);this.panner=this.context.createPanner();this.panner.connect(this.gain)}function pe(a,b){this.analyser=a.context.createAnalyser();this.analyser.fftSize=void 0!==b?b:2048;this.data=new Uint8Array(this.analyser.frequencyBinCount);a.getOutput().connect(this.analyser)}function qe(a,b,c){this.binding=a;this.valueSize= +c;a=Float64Array;switch(b){case "quaternion":b=this._slerp;break;case "string":case "bool":a=Array;b=this._select;break;default:b=this._lerp}this.buffer=new a(4*c);this._mixBufferRegion=b;this.referenceCount=this.useCount=this.cumulativeWeight=0}function pf(a,b,c){c=c||pa.parseTrackName(b);this._targetGroup=a;this._bindings=a.subscribe_(b,c)}function pa(a,b,c){this.path=b;this.parsedPath=c||pa.parseTrackName(b);this.node=pa.findNode(a,this.parsedPath.nodeName)||a;this.rootNode=a}function qf(){this.uuid= +H.generateUUID();this._objects=Array.prototype.slice.call(arguments);this.nCachedObjects_=0;var a={};this._indicesByUUID=a;for(var b=0,c=arguments.length;b!==c;++b)a[arguments[b].uuid]=b;this._paths=[];this._parsedPaths=[];this._bindings=[];this._bindingsIndicesByPath={};var d=this;this.stats={objects:{get total(){return d._objects.length},get inUse(){return this.total-d.nCachedObjects_}},get bindingsPerObject(){return d._bindings.length}}}function rf(a,b,c){this._mixer=a;this._clip=b;this._localRoot= +c||null;a=b.tracks;b=a.length;c=Array(b);for(var d={endingStart:2400,endingEnd:2400},e=0;e!==b;++e){var f=a[e].createInterpolant(null);c[e]=f;f.settings=d}this._interpolantSettings=d;this._interpolants=c;this._propertyBindings=Array(b);this._weightInterpolant=this._timeScaleInterpolant=this._byClipCacheIndex=this._cacheIndex=null;this.loop=2201;this._loopCount=-1;this._startTime=null;this.time=0;this._effectiveWeight=this.weight=this._effectiveTimeScale=this.timeScale=1;this.repetitions=Infinity; +this.paused=!1;this.enabled=!0;this.clampWhenFinished=!1;this.zeroSlopeAtEnd=this.zeroSlopeAtStart=!0}function re(a){this._root=a;this._initMemoryManager();this.time=this._accuIndex=0;this.timeScale=1}function Ld(a,b){"string"===typeof a&&(console.warn("THREE.Uniform: Type parameter is no longer needed."),a=b);this.value=a}function se(){C.call(this);this.type="InstancedBufferGeometry";this.maxInstancedCount=void 0}function te(a,b,c){ob.call(this,a,b);this.meshPerAttribute=c||1}function ue(a,b,c){Q.call(this, +a,b);this.meshPerAttribute=c||1}function sf(a,b,c,d){this.ray=new mb(a,b);this.near=c||0;this.far=d||Infinity;this.params={Mesh:{},Line:{},LOD:{},Points:{threshold:1},Sprite:{}};Object.defineProperties(this.params,{PointCloud:{get:function(){console.warn("THREE.Raycaster: params.PointCloud has been renamed to params.Points.");return this.Points}}})}function tf(a,b){return a.distance-b.distance}function ve(a,b,c,d){if(!1!==a.visible&&(a.raycast(b,c),!0===d)){a=a.children;d=0;for(var e=a.length;dc;c++,d++){var e=c/32*Math.PI*2,f=d/32*Math.PI*2;b.push(Math.cos(e),Math.sin(e),1,Math.cos(f),Math.sin(f),1)}a.addAttribute("position",new A(b,3));b=new Y({fog:!1});this.cone=new W(a,b);this.add(this.cone);this.update()}function xf(a){var b=[];a&&a.isBone&&b.push(a);for(var c=0;ca?-1:0b;b++)a[b]=(16>b?"0":"")+b.toString(16);return function(){var b=4294967295*Math.random()|0,d=4294967295*Math.random()|0,e=4294967295*Math.random()|0,f=4294967295*Math.random()|0;return(a[b&255]+a[b>>8&255]+a[b>>16&255]+a[b>>24&255]+"-"+a[d&255]+a[d>>8&255]+"-"+a[d>> +16&15|64]+a[d>>24&255]+"-"+a[e&63|128]+a[e>>8&255]+"-"+a[e>>16&255]+a[e>>24&255]+a[f&255]+a[f>>8&255]+a[f>>16&255]+a[f>>24&255]).toUpperCase()}}(),clamp:function(a,b,c){return Math.max(b,Math.min(c,a))},euclideanModulo:function(a,b){return(a%b+b)%b},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},lerp:function(a,b,c){return(1-c)*a+c*b},smoothstep:function(a,b,c){if(a<=b)return 0;if(a>=c)return 1;a=(a-b)/(c-b);return a*a*(3-2*a)},smootherstep:function(a,b,c){if(a<=b)return 0;if(a>=c)return 1; +a=(a-b)/(c-b);return a*a*a*(a*(6*a-15)+10)},randInt:function(a,b){return a+Math.floor(Math.random()*(b-a+1))},randFloat:function(a,b){return a+Math.random()*(b-a)},randFloatSpread:function(a){return a*(.5-Math.random())},degToRad:function(a){return a*H.DEG2RAD},radToDeg:function(a){return a*H.RAD2DEG},isPowerOfTwo:function(a){return 0===(a&a-1)&&0!==a},ceilPowerOfTwo:function(a){return Math.pow(2,Math.ceil(Math.log(a)/Math.LN2))},floorPowerOfTwo:function(a){return Math.pow(2,Math.floor(Math.log(a)/ +Math.LN2))}};Object.defineProperties(z.prototype,{width:{get:function(){return this.x},set:function(a){this.x=a}},height:{get:function(){return this.y},set:function(a){this.y=a}}});Object.assign(z.prototype,{isVector2:!0,set:function(a,b){this.x=a;this.y=b;return this},setScalar:function(a){this.y=this.x=a;return this},setX:function(a){this.x=a;return this},setY:function(a){this.y=a;return this},setComponent:function(a,b){switch(a){case 0:this.x=b;break;case 1:this.y=b;break;default:throw Error("index is out of range: "+ +a);}return this},getComponent:function(a){switch(a){case 0:return this.x;case 1:return this.y;default:throw Error("index is out of range: "+a);}},clone:function(){return new this.constructor(this.x,this.y)},copy:function(a){this.x=a.x;this.y=a.y;return this},add:function(a,b){if(void 0!==b)return console.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(a,b);this.x+=a.x;this.y+=a.y;return this},addScalar:function(a){this.x+=a;this.y+=a;return this}, +addVectors:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;return this},addScaledVector:function(a,b){this.x+=a.x*b;this.y+=a.y*b;return this},sub:function(a,b){if(void 0!==b)return console.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(a,b);this.x-=a.x;this.y-=a.y;return this},subScalar:function(a){this.x-=a;this.y-=a;return this},subVectors:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;return this},multiply:function(a){this.x*=a.x;this.y*= +a.y;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;return this},divide:function(a){this.x/=a.x;this.y/=a.y;return this},divideScalar:function(a){return this.multiplyScalar(1/a)},applyMatrix3:function(a){var b=this.x,c=this.y;a=a.elements;this.x=a[0]*b+a[3]*c+a[6];this.y=a[1]*b+a[4]*c+a[7];return this},min:function(a){this.x=Math.min(this.x,a.x);this.y=Math.min(this.y,a.y);return this},max:function(a){this.x=Math.max(this.x,a.x);this.y=Math.max(this.y,a.y);return this},clamp:function(a, +b){this.x=Math.max(a.x,Math.min(b.x,this.x));this.y=Math.max(a.y,Math.min(b.y,this.y));return this},clampScalar:function(){var a=new z,b=new z;return function(c,d){a.set(c,c);b.set(d,d);return this.clamp(a,b)}}(),clampLength:function(a,b){var c=this.length();return this.divideScalar(c||1).multiplyScalar(Math.max(a,Math.min(b,c)))},floor:function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);return this},ceil:function(){this.x=Math.ceil(this.x);this.y=Math.ceil(this.y);return this},round:function(){this.x= +Math.round(this.x);this.y=Math.round(this.y);return this},roundToZero:function(){this.x=0>this.x?Math.ceil(this.x):Math.floor(this.x);this.y=0>this.y?Math.ceil(this.y):Math.floor(this.y);return this},negate:function(){this.x=-this.x;this.y=-this.y;return this},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},lengthSq:function(){return this.x*this.x+this.y*this.y},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},manhattanLength:function(){return Math.abs(this.x)+ +Math.abs(this.y)},normalize:function(){return this.divideScalar(this.length()||1)},angle:function(){var a=Math.atan2(this.y,this.x);0>a&&(a+=2*Math.PI);return a},distanceTo:function(a){return Math.sqrt(this.distanceToSquared(a))},distanceToSquared:function(a){var b=this.x-a.x;a=this.y-a.y;return b*b+a*a},manhattanDistanceTo:function(a){return Math.abs(this.x-a.x)+Math.abs(this.y-a.y)},setLength:function(a){return this.normalize().multiplyScalar(a)},lerp:function(a,b){this.x+=(a.x-this.x)*b;this.y+= +(a.y-this.y)*b;return this},lerpVectors:function(a,b,c){return this.subVectors(b,a).multiplyScalar(c).add(a)},equals:function(a){return a.x===this.x&&a.y===this.y},fromArray:function(a,b){void 0===b&&(b=0);this.x=a[b];this.y=a[b+1];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this.x;a[b+1]=this.y;return a},fromBufferAttribute:function(a,b,c){void 0!==c&&console.warn("THREE.Vector2: offset has been removed from .fromBufferAttribute().");this.x=a.getX(b);this.y=a.getY(b); +return this},rotateAround:function(a,b){var c=Math.cos(b);b=Math.sin(b);var d=this.x-a.x,e=this.y-a.y;this.x=d*c-e*b+a.x;this.y=d*b+e*c+a.y;return this}});Object.assign(I.prototype,{isMatrix4:!0,set:function(a,b,c,d,e,f,g,h,k,m,q,n,l,u,r,p){var t=this.elements;t[0]=a;t[4]=b;t[8]=c;t[12]=d;t[1]=e;t[5]=f;t[9]=g;t[13]=h;t[2]=k;t[6]=m;t[10]=q;t[14]=n;t[3]=l;t[7]=u;t[11]=r;t[15]=p;return this},identity:function(){this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);return this},clone:function(){return(new I).fromArray(this.elements)}, +copy:function(a){var b=this.elements;a=a.elements;b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];b[4]=a[4];b[5]=a[5];b[6]=a[6];b[7]=a[7];b[8]=a[8];b[9]=a[9];b[10]=a[10];b[11]=a[11];b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return this},copyPosition:function(a){var b=this.elements;a=a.elements;b[12]=a[12];b[13]=a[13];b[14]=a[14];return this},extractBasis:function(a,b,c){a.setFromMatrixColumn(this,0);b.setFromMatrixColumn(this,1);c.setFromMatrixColumn(this,2);return this},makeBasis:function(a,b,c){this.set(a.x, +b.x,c.x,0,a.y,b.y,c.y,0,a.z,b.z,c.z,0,0,0,0,1);return this},extractRotation:function(){var a=new p;return function(b){var c=this.elements,d=b.elements,e=1/a.setFromMatrixColumn(b,0).length(),f=1/a.setFromMatrixColumn(b,1).length();b=1/a.setFromMatrixColumn(b,2).length();c[0]=d[0]*e;c[1]=d[1]*e;c[2]=d[2]*e;c[3]=0;c[4]=d[4]*f;c[5]=d[5]*f;c[6]=d[6]*f;c[7]=0;c[8]=d[8]*b;c[9]=d[9]*b;c[10]=d[10]*b;c[11]=0;c[12]=0;c[13]=0;c[14]=0;c[15]=1;return this}}(),makeRotationFromEuler:function(a){a&&a.isEuler||console.error("THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order."); +var b=this.elements,c=a.x,d=a.y,e=a.z,f=Math.cos(c);c=Math.sin(c);var g=Math.cos(d);d=Math.sin(d);var h=Math.cos(e);e=Math.sin(e);if("XYZ"===a.order){a=f*h;var k=f*e,m=c*h,q=c*e;b[0]=g*h;b[4]=-g*e;b[8]=d;b[1]=k+m*d;b[5]=a-q*d;b[9]=-c*g;b[2]=q-a*d;b[6]=m+k*d;b[10]=f*g}else"YXZ"===a.order?(a=g*h,k=g*e,m=d*h,q=d*e,b[0]=a+q*c,b[4]=m*c-k,b[8]=f*d,b[1]=f*e,b[5]=f*h,b[9]=-c,b[2]=k*c-m,b[6]=q+a*c,b[10]=f*g):"ZXY"===a.order?(a=g*h,k=g*e,m=d*h,q=d*e,b[0]=a-q*c,b[4]=-f*e,b[8]=m+k*c,b[1]=k+m*c,b[5]=f*h,b[9]= +q-a*c,b[2]=-f*d,b[6]=c,b[10]=f*g):"ZYX"===a.order?(a=f*h,k=f*e,m=c*h,q=c*e,b[0]=g*h,b[4]=m*d-k,b[8]=a*d+q,b[1]=g*e,b[5]=q*d+a,b[9]=k*d-m,b[2]=-d,b[6]=c*g,b[10]=f*g):"YZX"===a.order?(a=f*g,k=f*d,m=c*g,q=c*d,b[0]=g*h,b[4]=q-a*e,b[8]=m*e+k,b[1]=e,b[5]=f*h,b[9]=-c*h,b[2]=-d*h,b[6]=k*e+m,b[10]=a-q*e):"XZY"===a.order&&(a=f*g,k=f*d,m=c*g,q=c*d,b[0]=g*h,b[4]=-e,b[8]=d*h,b[1]=a*e+q,b[5]=f*h,b[9]=k*e-m,b[2]=m*e-k,b[6]=c*h,b[10]=q*e+a);b[3]=0;b[7]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return this},makeRotationFromQuaternion:function(){var a= +new p(0,0,0),b=new p(1,1,1);return function(c){return this.compose(a,c,b)}}(),lookAt:function(){var a=new p,b=new p,c=new p;return function(d,e,f){var g=this.elements;c.subVectors(d,e);0===c.lengthSq()&&(c.z=1);c.normalize();a.crossVectors(f,c);0===a.lengthSq()&&(1===Math.abs(f.z)?c.x+=1E-4:c.z+=1E-4,c.normalize(),a.crossVectors(f,c));a.normalize();b.crossVectors(c,a);g[0]=a.x;g[4]=b.x;g[8]=c.x;g[1]=a.y;g[5]=b.y;g[9]=c.y;g[2]=a.z;g[6]=b.z;g[10]=c.z;return this}}(),multiply:function(a,b){return void 0!== +b?(console.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),this.multiplyMatrices(a,b)):this.multiplyMatrices(this,a)},premultiply:function(a){return this.multiplyMatrices(a,this)},multiplyMatrices:function(a,b){var c=a.elements,d=b.elements;b=this.elements;a=c[0];var e=c[4],f=c[8],g=c[12],h=c[1],k=c[5],m=c[9],q=c[13],n=c[2],l=c[6],u=c[10],r=c[14],p=c[3],y=c[7],x=c[11];c=c[15];var w=d[0],B=d[4],E=d[8],P=d[12],N=d[1],z=d[5],A=d[9],D=d[13],C=d[2], +H=d[6],G=d[10],K=d[14],L=d[3],I=d[7],J=d[11];d=d[15];b[0]=a*w+e*N+f*C+g*L;b[4]=a*B+e*z+f*H+g*I;b[8]=a*E+e*A+f*G+g*J;b[12]=a*P+e*D+f*K+g*d;b[1]=h*w+k*N+m*C+q*L;b[5]=h*B+k*z+m*H+q*I;b[9]=h*E+k*A+m*G+q*J;b[13]=h*P+k*D+m*K+q*d;b[2]=n*w+l*N+u*C+r*L;b[6]=n*B+l*z+u*H+r*I;b[10]=n*E+l*A+u*G+r*J;b[14]=n*P+l*D+u*K+r*d;b[3]=p*w+y*N+x*C+c*L;b[7]=p*B+y*z+x*H+c*I;b[11]=p*E+y*A+x*G+c*J;b[15]=p*P+y*D+x*K+c*d;return this},multiplyScalar:function(a){var b=this.elements;b[0]*=a;b[4]*=a;b[8]*=a;b[12]*=a;b[1]*=a;b[5]*= +a;b[9]*=a;b[13]*=a;b[2]*=a;b[6]*=a;b[10]*=a;b[14]*=a;b[3]*=a;b[7]*=a;b[11]*=a;b[15]*=a;return this},applyToBufferAttribute:function(){var a=new p;return function(b){for(var c=0,d=b.count;cthis.determinant()&&(g=-g);c.x=f[12];c.y=f[13];c.z=f[14];b.copy(this);c=1/g;f=1/h;var m=1/k;b.elements[0]*=c;b.elements[1]*=c;b.elements[2]*=c;b.elements[4]*=f;b.elements[5]*=f;b.elements[6]*=f;b.elements[8]*=m;b.elements[9]*=m;b.elements[10]*=m;d.setFromRotationMatrix(b); +e.x=g;e.y=h;e.z=k;return this}}(),makePerspective:function(a,b,c,d,e,f){void 0===f&&console.warn("THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.");var g=this.elements;g[0]=2*e/(b-a);g[4]=0;g[8]=(b+a)/(b-a);g[12]=0;g[1]=0;g[5]=2*e/(c-d);g[9]=(c+d)/(c-d);g[13]=0;g[2]=0;g[6]=0;g[10]=-(f+e)/(f-e);g[14]=-2*f*e/(f-e);g[3]=0;g[7]=0;g[11]=-1;g[15]=0;return this},makeOrthographic:function(a,b,c,d,e,f){var g=this.elements,h=1/(b-a),k=1/(c-d),m=1/(f-e);g[0]= +2*h;g[4]=0;g[8]=0;g[12]=-((b+a)*h);g[1]=0;g[5]=2*k;g[9]=0;g[13]=-((c+d)*k);g[2]=0;g[6]=0;g[10]=-2*m;g[14]=-((f+e)*m);g[3]=0;g[7]=0;g[11]=0;g[15]=1;return this},equals:function(a){var b=this.elements;a=a.elements;for(var c=0;16>c;c++)if(b[c]!==a[c])return!1;return!0},fromArray:function(a,b){void 0===b&&(b=0);for(var c=0;16>c;c++)this.elements[c]=a[c+b];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);var c=this.elements;a[b]=c[0];a[b+1]=c[1];a[b+2]=c[2];a[b+3]=c[3];a[b+4]=c[4]; +a[b+5]=c[5];a[b+6]=c[6];a[b+7]=c[7];a[b+8]=c[8];a[b+9]=c[9];a[b+10]=c[10];a[b+11]=c[11];a[b+12]=c[12];a[b+13]=c[13];a[b+14]=c[14];a[b+15]=c[15];return a}});Object.assign(fa,{slerp:function(a,b,c,d){return c.copy(a).slerp(b,d)},slerpFlat:function(a,b,c,d,e,f,g){var h=c[d+0],k=c[d+1],m=c[d+2];c=c[d+3];d=e[f+0];var q=e[f+1],l=e[f+2];e=e[f+3];if(c!==e||h!==d||k!==q||m!==l){f=1-g;var t=h*d+k*q+m*l+c*e,u=0<=t?1:-1,r=1-t*t;r>Number.EPSILON&&(r=Math.sqrt(r),t=Math.atan2(r,t*u),f=Math.sin(f*t)/r,g=Math.sin(g* +t)/r);u*=g;h=h*f+d*u;k=k*f+q*u;m=m*f+l*u;c=c*f+e*u;f===1-g&&(g=1/Math.sqrt(h*h+k*k+m*m+c*c),h*=g,k*=g,m*=g,c*=g)}a[b]=h;a[b+1]=k;a[b+2]=m;a[b+3]=c}});Object.defineProperties(fa.prototype,{x:{get:function(){return this._x},set:function(a){this._x=a;this.onChangeCallback()}},y:{get:function(){return this._y},set:function(a){this._y=a;this.onChangeCallback()}},z:{get:function(){return this._z},set:function(a){this._z=a;this.onChangeCallback()}},w:{get:function(){return this._w},set:function(a){this._w= +a;this.onChangeCallback()}}});Object.assign(fa.prototype,{set:function(a,b,c,d){this._x=a;this._y=b;this._z=c;this._w=d;this.onChangeCallback();return this},clone:function(){return new this.constructor(this._x,this._y,this._z,this._w)},copy:function(a){this._x=a.x;this._y=a.y;this._z=a.z;this._w=a.w;this.onChangeCallback();return this},setFromEuler:function(a,b){if(!a||!a.isEuler)throw Error("THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.");var c= +a._x,d=a._y,e=a._z;a=a.order;var f=Math.cos,g=Math.sin,h=f(c/2),k=f(d/2);f=f(e/2);c=g(c/2);d=g(d/2);e=g(e/2);"XYZ"===a?(this._x=c*k*f+h*d*e,this._y=h*d*f-c*k*e,this._z=h*k*e+c*d*f,this._w=h*k*f-c*d*e):"YXZ"===a?(this._x=c*k*f+h*d*e,this._y=h*d*f-c*k*e,this._z=h*k*e-c*d*f,this._w=h*k*f+c*d*e):"ZXY"===a?(this._x=c*k*f-h*d*e,this._y=h*d*f+c*k*e,this._z=h*k*e+c*d*f,this._w=h*k*f-c*d*e):"ZYX"===a?(this._x=c*k*f-h*d*e,this._y=h*d*f+c*k*e,this._z=h*k*e-c*d*f,this._w=h*k*f+c*d*e):"YZX"===a?(this._x=c*k*f+ +h*d*e,this._y=h*d*f+c*k*e,this._z=h*k*e-c*d*f,this._w=h*k*f-c*d*e):"XZY"===a&&(this._x=c*k*f-h*d*e,this._y=h*d*f-c*k*e,this._z=h*k*e+c*d*f,this._w=h*k*f+c*d*e);if(!1!==b)this.onChangeCallback();return this},setFromAxisAngle:function(a,b){b/=2;var c=Math.sin(b);this._x=a.x*c;this._y=a.y*c;this._z=a.z*c;this._w=Math.cos(b);this.onChangeCallback();return this},setFromRotationMatrix:function(a){var b=a.elements,c=b[0];a=b[4];var d=b[8],e=b[1],f=b[5],g=b[9],h=b[2],k=b[6];b=b[10];var m=c+f+b;0f&&c>b?(c=2*Math.sqrt(1+c-f-b),this._w=(k-g)/c,this._x=.25*c,this._y=(a+e)/c,this._z=(d+h)/c):f>b?(c=2*Math.sqrt(1+f-c-b),this._w=(d-h)/c,this._x=(a+e)/c,this._y=.25*c,this._z=(g+k)/c):(c=2*Math.sqrt(1+b-c-f),this._w=(e-a)/c,this._x=(d+h)/c,this._y=(g+k)/c,this._z=.25*c);this.onChangeCallback();return this},setFromUnitVectors:function(){var a=new p,b;return function(c,d){void 0===a&&(a=new p);b=c.dot(d)+1;1E-6>b?(b=0, +Math.abs(c.x)>Math.abs(c.z)?a.set(-c.y,c.x,0):a.set(0,-c.z,c.y)):a.crossVectors(c,d);this._x=a.x;this._y=a.y;this._z=a.z;this._w=b;return this.normalize()}}(),angleTo:function(a){return 2*Math.acos(Math.abs(H.clamp(this.dot(a),-1,1)))},rotateTowards:function(a,b){var c=this.angleTo(a);if(0===c)return this;this.slerp(a,Math.min(1,b/c));return this},inverse:function(){return this.conjugate()},conjugate:function(){this._x*=-1;this._y*=-1;this._z*=-1;this.onChangeCallback();return this},dot:function(a){return this._x* +a._x+this._y*a._y+this._z*a._z+this._w*a._w},lengthSq:function(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w},length:function(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)},normalize:function(){var a=this.length();0===a?(this._z=this._y=this._x=0,this._w=1):(a=1/a,this._x*=a,this._y*=a,this._z*=a,this._w*=a);this.onChangeCallback();return this},multiply:function(a,b){return void 0!==b?(console.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."), +this.multiplyQuaternions(a,b)):this.multiplyQuaternions(this,a)},premultiply:function(a){return this.multiplyQuaternions(a,this)},multiplyQuaternions:function(a,b){var c=a._x,d=a._y,e=a._z;a=a._w;var f=b._x,g=b._y,h=b._z;b=b._w;this._x=c*b+a*f+d*h-e*g;this._y=d*b+a*g+e*f-c*h;this._z=e*b+a*h+c*g-d*f;this._w=a*b-c*f-d*g-e*h;this.onChangeCallback();return this},slerp:function(a,b){if(0===b)return this;if(1===b)return this.copy(a);var c=this._x,d=this._y,e=this._z,f=this._w,g=f*a._w+c*a._x+d*a._y+e*a._z; +0>g?(this._w=-a._w,this._x=-a._x,this._y=-a._y,this._z=-a._z,g=-g):this.copy(a);if(1<=g)return this._w=f,this._x=c,this._y=d,this._z=e,this;a=1-g*g;if(a<=Number.EPSILON)return g=1-b,this._w=g*f+b*this._w,this._x=g*c+b*this._x,this._y=g*d+b*this._y,this._z=g*e+b*this._z,this.normalize();a=Math.sqrt(a);var h=Math.atan2(a,g);g=Math.sin((1-b)*h)/a;b=Math.sin(b*h)/a;this._w=f*g+this._w*b;this._x=c*g+this._x*b;this._y=d*g+this._y*b;this._z=e*g+this._z*b;this.onChangeCallback();return this},equals:function(a){return a._x=== +this._x&&a._y===this._y&&a._z===this._z&&a._w===this._w},fromArray:function(a,b){void 0===b&&(b=0);this._x=a[b];this._y=a[b+1];this._z=a[b+2];this._w=a[b+3];this.onChangeCallback();return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this._x;a[b+1]=this._y;a[b+2]=this._z;a[b+3]=this._w;return a},onChange:function(a){this.onChangeCallback=a;return this},onChangeCallback:function(){}});Object.assign(p.prototype,{isVector3:!0,set:function(a,b,c){this.x=a;this.y=b;this.z=c;return this}, +setScalar:function(a){this.z=this.y=this.x=a;return this},setX:function(a){this.x=a;return this},setY:function(a){this.y=a;return this},setZ:function(a){this.z=a;return this},setComponent:function(a,b){switch(a){case 0:this.x=b;break;case 1:this.y=b;break;case 2:this.z=b;break;default:throw Error("index is out of range: "+a);}return this},getComponent:function(a){switch(a){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw Error("index is out of range: "+a);}},clone:function(){return new this.constructor(this.x, +this.y,this.z)},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;return this},add:function(a,b){if(void 0!==b)return console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(a,b);this.x+=a.x;this.y+=a.y;this.z+=a.z;return this},addScalar:function(a){this.x+=a;this.y+=a;this.z+=a;return this},addVectors:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;return this},addScaledVector:function(a,b){this.x+=a.x*b;this.y+=a.y*b;this.z+= +a.z*b;return this},sub:function(a,b){if(void 0!==b)return console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(a,b);this.x-=a.x;this.y-=a.y;this.z-=a.z;return this},subScalar:function(a){this.x-=a;this.y-=a;this.z-=a;return this},subVectors:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;return this},multiply:function(a,b){if(void 0!==b)return console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."), +this.multiplyVectors(a,b);this.x*=a.x;this.y*=a.y;this.z*=a.z;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*=a;return this},multiplyVectors:function(a,b){this.x=a.x*b.x;this.y=a.y*b.y;this.z=a.z*b.z;return this},applyEuler:function(){var a=new fa;return function(b){b&&b.isEuler||console.error("THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.");return this.applyQuaternion(a.setFromEuler(b))}}(),applyAxisAngle:function(){var a=new fa;return function(b, +c){return this.applyQuaternion(a.setFromAxisAngle(b,c))}}(),applyMatrix3:function(a){var b=this.x,c=this.y,d=this.z;a=a.elements;this.x=a[0]*b+a[3]*c+a[6]*d;this.y=a[1]*b+a[4]*c+a[7]*d;this.z=a[2]*b+a[5]*c+a[8]*d;return this},applyMatrix4:function(a){var b=this.x,c=this.y,d=this.z;a=a.elements;var e=1/(a[3]*b+a[7]*c+a[11]*d+a[15]);this.x=(a[0]*b+a[4]*c+a[8]*d+a[12])*e;this.y=(a[1]*b+a[5]*c+a[9]*d+a[13])*e;this.z=(a[2]*b+a[6]*c+a[10]*d+a[14])*e;return this},applyQuaternion:function(a){var b=this.x, +c=this.y,d=this.z,e=a.x,f=a.y,g=a.z;a=a.w;var h=a*b+f*d-g*c,k=a*c+g*b-e*d,m=a*d+e*c-f*b;b=-e*b-f*c-g*d;this.x=h*a+b*-e+k*-g-m*-f;this.y=k*a+b*-f+m*-e-h*-g;this.z=m*a+b*-g+h*-f-k*-e;return this},project:function(){var a=new I;return function(b){a.multiplyMatrices(b.projectionMatrix,a.getInverse(b.matrixWorld));return this.applyMatrix4(a)}}(),unproject:function(){var a=new I;return function(b){a.multiplyMatrices(b.matrixWorld,a.getInverse(b.projectionMatrix));return this.applyMatrix4(a)}}(),transformDirection:function(a){var b= +this.x,c=this.y,d=this.z;a=a.elements;this.x=a[0]*b+a[4]*c+a[8]*d;this.y=a[1]*b+a[5]*c+a[9]*d;this.z=a[2]*b+a[6]*c+a[10]*d;return this.normalize()},divide:function(a){this.x/=a.x;this.y/=a.y;this.z/=a.z;return this},divideScalar:function(a){return this.multiplyScalar(1/a)},min:function(a){this.x=Math.min(this.x,a.x);this.y=Math.min(this.y,a.y);this.z=Math.min(this.z,a.z);return this},max:function(a){this.x=Math.max(this.x,a.x);this.y=Math.max(this.y,a.y);this.z=Math.max(this.z,a.z);return this},clamp:function(a, +b){this.x=Math.max(a.x,Math.min(b.x,this.x));this.y=Math.max(a.y,Math.min(b.y,this.y));this.z=Math.max(a.z,Math.min(b.z,this.z));return this},clampScalar:function(){var a=new p,b=new p;return function(c,d){a.set(c,c,c);b.set(d,d,d);return this.clamp(a,b)}}(),clampLength:function(a,b){var c=this.length();return this.divideScalar(c||1).multiplyScalar(Math.max(a,Math.min(b,c)))},floor:function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);this.z=Math.floor(this.z);return this},ceil:function(){this.x= +Math.ceil(this.x);this.y=Math.ceil(this.y);this.z=Math.ceil(this.z);return this},round:function(){this.x=Math.round(this.x);this.y=Math.round(this.y);this.z=Math.round(this.z);return this},roundToZero:function(){this.x=0>this.x?Math.ceil(this.x):Math.floor(this.x);this.y=0>this.y?Math.ceil(this.y):Math.floor(this.y);this.z=0>this.z?Math.ceil(this.z):Math.floor(this.z);return this},negate:function(){this.x=-this.x;this.y=-this.y;this.z=-this.z;return this},dot:function(a){return this.x*a.x+this.y* +a.y+this.z*a.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length()||1)},setLength:function(a){return this.normalize().multiplyScalar(a)},lerp:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;this.z+=(a.z-this.z)*b;return this},lerpVectors:function(a, +b,c){return this.subVectors(b,a).multiplyScalar(c).add(a)},cross:function(a,b){return void 0!==b?(console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(a,b)):this.crossVectors(this,a)},crossVectors:function(a,b){var c=a.x,d=a.y;a=a.z;var e=b.x,f=b.y;b=b.z;this.x=d*b-a*f;this.y=a*e-c*b;this.z=c*f-d*e;return this},projectOnVector:function(a){var b=a.dot(this)/a.lengthSq();return this.copy(a).multiplyScalar(b)},projectOnPlane:function(){var a= +new p;return function(b){a.copy(this).projectOnVector(b);return this.sub(a)}}(),reflect:function(){var a=new p;return function(b){return this.sub(a.copy(b).multiplyScalar(2*this.dot(b)))}}(),angleTo:function(a){a=this.dot(a)/Math.sqrt(this.lengthSq()*a.lengthSq());return Math.acos(H.clamp(a,-1,1))},distanceTo:function(a){return Math.sqrt(this.distanceToSquared(a))},distanceToSquared:function(a){var b=this.x-a.x,c=this.y-a.y;a=this.z-a.z;return b*b+c*c+a*a},manhattanDistanceTo:function(a){return Math.abs(this.x- +a.x)+Math.abs(this.y-a.y)+Math.abs(this.z-a.z)},setFromSpherical:function(a){var b=Math.sin(a.phi)*a.radius;this.x=b*Math.sin(a.theta);this.y=Math.cos(a.phi)*a.radius;this.z=b*Math.cos(a.theta);return this},setFromCylindrical:function(a){this.x=a.radius*Math.sin(a.theta);this.y=a.y;this.z=a.radius*Math.cos(a.theta);return this},setFromMatrixPosition:function(a){a=a.elements;this.x=a[12];this.y=a[13];this.z=a[14];return this},setFromMatrixScale:function(a){var b=this.setFromMatrixColumn(a,0).length(), +c=this.setFromMatrixColumn(a,1).length();a=this.setFromMatrixColumn(a,2).length();this.x=b;this.y=c;this.z=a;return this},setFromMatrixColumn:function(a,b){return this.fromArray(a.elements,4*b)},equals:function(a){return a.x===this.x&&a.y===this.y&&a.z===this.z},fromArray:function(a,b){void 0===b&&(b=0);this.x=a[b];this.y=a[b+1];this.z=a[b+2];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this.x;a[b+1]=this.y;a[b+2]=this.z;return a},fromBufferAttribute:function(a,b,c){void 0!== +c&&console.warn("THREE.Vector3: offset has been removed from .fromBufferAttribute().");this.x=a.getX(b);this.y=a.getY(b);this.z=a.getZ(b);return this}});Object.assign(ra.prototype,{isMatrix3:!0,set:function(a,b,c,d,e,f,g,h,k){var m=this.elements;m[0]=a;m[1]=d;m[2]=g;m[3]=b;m[4]=e;m[5]=h;m[6]=c;m[7]=f;m[8]=k;return this},identity:function(){this.set(1,0,0,0,1,0,0,0,1);return this},clone:function(){return(new this.constructor).fromArray(this.elements)},copy:function(a){var b=this.elements;a=a.elements; +b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];b[4]=a[4];b[5]=a[5];b[6]=a[6];b[7]=a[7];b[8]=a[8];return this},setFromMatrix4:function(a){a=a.elements;this.set(a[0],a[4],a[8],a[1],a[5],a[9],a[2],a[6],a[10]);return this},applyToBufferAttribute:function(){var a=new p;return function(b){for(var c=0,d=b.count;cc;c++)if(b[c]!==a[c])return!1;return!0},fromArray:function(a,b){void 0===b&&(b=0);for(var c=0;9>c;c++)this.elements[c]=a[c+b];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);var c=this.elements;a[b]=c[0];a[b+1]=c[1]; +a[b+2]=c[2];a[b+3]=c[3];a[b+4]=c[4];a[b+5]=c[5];a[b+6]=c[6];a[b+7]=c[7];a[b+8]=c[8];return a}});var eb={getDataURL:function(a){if(a instanceof HTMLCanvasElement)var b=a;else{"undefined"!==typeof OffscreenCanvas?b=new OffscreenCanvas(a.width,a.height):(b=document.createElementNS("http://www.w3.org/1999/xhtml","canvas"),b.width=a.width,b.height=a.height);var c=b.getContext("2d");a instanceof ImageData?c.putImageData(a,0,0):c.drawImage(a,0,0,a.width,a.height)}return 2048a.x||1a.x?0:1;break;case 1002:a.x=1===Math.abs(Math.floor(a.x)%2)?Math.ceil(a.x)-a.x:a.x-Math.floor(a.x)}if(0>a.y||1a.y?0:1;break;case 1002:a.y=1===Math.abs(Math.floor(a.y)%2)?Math.ceil(a.y)-a.y:a.y-Math.floor(a.y)}this.flipY&&(a.y=1-a.y)}}});Object.defineProperty(T.prototype,"needsUpdate",{set:function(a){!0===a&&this.version++}});Object.assign(V.prototype,{isVector4:!0,set:function(a,b,c,d){this.x=a;this.y= +b;this.z=c;this.w=d;return this},setScalar:function(a){this.w=this.z=this.y=this.x=a;return this},setX:function(a){this.x=a;return this},setY:function(a){this.y=a;return this},setZ:function(a){this.z=a;return this},setW:function(a){this.w=a;return this},setComponent:function(a,b){switch(a){case 0:this.x=b;break;case 1:this.y=b;break;case 2:this.z=b;break;case 3:this.w=b;break;default:throw Error("index is out of range: "+a);}return this},getComponent:function(a){switch(a){case 0:return this.x;case 1:return this.y; +case 2:return this.z;case 3:return this.w;default:throw Error("index is out of range: "+a);}},clone:function(){return new this.constructor(this.x,this.y,this.z,this.w)},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;this.w=void 0!==a.w?a.w:1;return this},add:function(a,b){if(void 0!==b)return console.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(a,b);this.x+=a.x;this.y+=a.y;this.z+=a.z;this.w+=a.w;return this},addScalar:function(a){this.x+= +a;this.y+=a;this.z+=a;this.w+=a;return this},addVectors:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;this.w=a.w+b.w;return this},addScaledVector:function(a,b){this.x+=a.x*b;this.y+=a.y*b;this.z+=a.z*b;this.w+=a.w*b;return this},sub:function(a,b){if(void 0!==b)return console.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(a,b);this.x-=a.x;this.y-=a.y;this.z-=a.z;this.w-=a.w;return this},subScalar:function(a){this.x-=a;this.y-= +a;this.z-=a;this.w-=a;return this},subVectors:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;this.w=a.w-b.w;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*=a;this.w*=a;return this},applyMatrix4:function(a){var b=this.x,c=this.y,d=this.z,e=this.w;a=a.elements;this.x=a[0]*b+a[4]*c+a[8]*d+a[12]*e;this.y=a[1]*b+a[5]*c+a[9]*d+a[13]*e;this.z=a[2]*b+a[6]*c+a[10]*d+a[14]*e;this.w=a[3]*b+a[7]*c+a[11]*d+a[15]*e;return this},divideScalar:function(a){return this.multiplyScalar(1/ +a)},setAxisAngleFromQuaternion:function(a){this.w=2*Math.acos(a.w);var b=Math.sqrt(1-a.w*a.w);1E-4>b?(this.x=1,this.z=this.y=0):(this.x=a.x/b,this.y=a.y/b,this.z=a.z/b);return this},setAxisAngleFromRotationMatrix:function(a){a=a.elements;var b=a[0];var c=a[4];var d=a[8],e=a[1],f=a[5],g=a[9];var h=a[2];var k=a[6];var m=a[10];if(.01>Math.abs(c-e)&&.01>Math.abs(d-h)&&.01>Math.abs(g-k)){if(.1>Math.abs(c+e)&&.1>Math.abs(d+h)&&.1>Math.abs(g+k)&&.1>Math.abs(b+f+m-3))return this.set(1,0,0,0),this;a=Math.PI; +b=(b+1)/2;f=(f+1)/2;m=(m+1)/2;c=(c+e)/4;d=(d+h)/4;g=(g+k)/4;b>f&&b>m?.01>b?(k=0,c=h=.707106781):(k=Math.sqrt(b),h=c/k,c=d/k):f>m?.01>f?(k=.707106781,h=0,c=.707106781):(h=Math.sqrt(f),k=c/h,c=g/h):.01>m?(h=k=.707106781,c=0):(c=Math.sqrt(m),k=d/c,h=g/c);this.set(k,h,c,a);return this}a=Math.sqrt((k-g)*(k-g)+(d-h)*(d-h)+(e-c)*(e-c));.001>Math.abs(a)&&(a=1);this.x=(k-g)/a;this.y=(d-h)/a;this.z=(e-c)/a;this.w=Math.acos((b+f+m-1)/2);return this},min:function(a){this.x=Math.min(this.x,a.x);this.y=Math.min(this.y, +a.y);this.z=Math.min(this.z,a.z);this.w=Math.min(this.w,a.w);return this},max:function(a){this.x=Math.max(this.x,a.x);this.y=Math.max(this.y,a.y);this.z=Math.max(this.z,a.z);this.w=Math.max(this.w,a.w);return this},clamp:function(a,b){this.x=Math.max(a.x,Math.min(b.x,this.x));this.y=Math.max(a.y,Math.min(b.y,this.y));this.z=Math.max(a.z,Math.min(b.z,this.z));this.w=Math.max(a.w,Math.min(b.w,this.w));return this},clampScalar:function(){var a,b;return function(c,d){void 0===a&&(a=new V,b=new V);a.set(c, +c,c,c);b.set(d,d,d,d);return this.clamp(a,b)}}(),clampLength:function(a,b){var c=this.length();return this.divideScalar(c||1).multiplyScalar(Math.max(a,Math.min(b,c)))},floor:function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);this.z=Math.floor(this.z);this.w=Math.floor(this.w);return this},ceil:function(){this.x=Math.ceil(this.x);this.y=Math.ceil(this.y);this.z=Math.ceil(this.z);this.w=Math.ceil(this.w);return this},round:function(){this.x=Math.round(this.x);this.y=Math.round(this.y); +this.z=Math.round(this.z);this.w=Math.round(this.w);return this},roundToZero:function(){this.x=0>this.x?Math.ceil(this.x):Math.floor(this.x);this.y=0>this.y?Math.ceil(this.y):Math.floor(this.y);this.z=0>this.z?Math.ceil(this.z):Math.floor(this.z);this.w=0>this.w?Math.ceil(this.w):Math.floor(this.w);return this},negate:function(){this.x=-this.x;this.y=-this.y;this.z=-this.z;this.w=-this.w;return this},dot:function(a){return this.x*a.x+this.y*a.y+this.z*a.z+this.w*a.w},lengthSq:function(){return this.x* +this.x+this.y*this.y+this.z*this.z+this.w*this.w},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)},normalize:function(){return this.divideScalar(this.length()||1)},setLength:function(a){return this.normalize().multiplyScalar(a)},lerp:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;this.z+=(a.z-this.z)*b;this.w+=(a.w-this.w)*b;return this},lerpVectors:function(a, +b,c){return this.subVectors(b,a).multiplyScalar(c).add(a)},equals:function(a){return a.x===this.x&&a.y===this.y&&a.z===this.z&&a.w===this.w},fromArray:function(a,b){void 0===b&&(b=0);this.x=a[b];this.y=a[b+1];this.z=a[b+2];this.w=a[b+3];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this.x;a[b+1]=this.y;a[b+2]=this.z;a[b+3]=this.w;return a},fromBufferAttribute:function(a,b,c){void 0!==c&&console.warn("THREE.Vector4: offset has been removed from .fromBufferAttribute()."); +this.x=a.getX(b);this.y=a.getY(b);this.z=a.getZ(b);this.w=a.getW(b);return this}});fb.prototype=Object.assign(Object.create(ya.prototype),{constructor:fb,isWebGLRenderTarget:!0,setSize:function(a,b){if(this.width!==a||this.height!==b)this.width=a,this.height=b,this.dispose();this.viewport.set(0,0,a,b);this.scissor.set(0,0,a,b)},clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.width=a.width;this.height=a.height;this.viewport.copy(a.viewport);this.texture=a.texture.clone(); +this.depthBuffer=a.depthBuffer;this.stencilBuffer=a.stencilBuffer;this.depthTexture=a.depthTexture;return this},dispose:function(){this.dispatchEvent({type:"dispose"})}});Gb.prototype=Object.create(fb.prototype);Gb.prototype.constructor=Gb;Gb.prototype.isWebGLRenderTargetCube=!0;gb.prototype=Object.create(T.prototype);gb.prototype.constructor=gb;gb.prototype.isDataTexture=!0;Object.assign(Sa.prototype,{isBox3:!0,set:function(a,b){this.min.copy(a);this.max.copy(b);return this},setFromArray:function(a){for(var b= +Infinity,c=Infinity,d=Infinity,e=-Infinity,f=-Infinity,g=-Infinity,h=0,k=a.length;he&&(e=m);q>f&&(f=q);l>g&&(g=l)}this.min.set(b,c,d);this.max.set(e,f,g);return this},setFromBufferAttribute:function(a){for(var b=Infinity,c=Infinity,d=Infinity,e=-Infinity,f=-Infinity,g=-Infinity,h=0,k=a.count;he&&(e=m);l>f&&(f=l);n>g&&(g=n)}this.min.set(b,c,d); +this.max.set(e,f,g);return this},setFromPoints:function(a){this.makeEmpty();for(var b=0,c=a.length;bthis.max.x||a.ythis.max.y||a.zthis.max.z?!1:!0},containsBox:function(a){return this.min.x<=a.min.x&&a.max.x<=this.max.x&&this.min.y<=a.min.y&&a.max.y<=this.max.y&&this.min.z<=a.min.z&& +a.max.z<=this.max.z},getParameter:function(a,b){void 0===b&&(console.warn("THREE.Box3: .getParameter() target is now required"),b=new p);return b.set((a.x-this.min.x)/(this.max.x-this.min.x),(a.y-this.min.y)/(this.max.y-this.min.y),(a.z-this.min.z)/(this.max.z-this.min.z))},intersectsBox:function(a){return a.max.xthis.max.x||a.max.ythis.max.y||a.max.zthis.max.z?!1:!0},intersectsSphere:function(){var a=new p;return function(b){this.clampPoint(b.center, +a);return a.distanceToSquared(b.center)<=b.radius*b.radius}}(),intersectsPlane:function(a){if(0=a.constant},intersectsTriangle:function(){function a(a){var e; +var f=0;for(e=a.length-3;f<=e;f+=3){h.fromArray(a,f);var g=m.x*Math.abs(h.x)+m.y*Math.abs(h.y)+m.z*Math.abs(h.z),k=b.dot(h),l=c.dot(h),q=d.dot(h);if(Math.max(-Math.max(k,l,q),Math.min(k,l,q))>g)return!1}return!0}var b=new p,c=new p,d=new p,e=new p,f=new p,g=new p,h=new p,k=new p,m=new p,l=new p;return function(h){if(this.isEmpty())return!1;this.getCenter(k);m.subVectors(this.max,k);b.subVectors(h.a,k);c.subVectors(h.b,k);d.subVectors(h.c,k);e.subVectors(c,b);f.subVectors(d,c);g.subVectors(b,d);h= +[0,-e.z,e.y,0,-f.z,f.y,0,-g.z,g.y,e.z,0,-e.x,f.z,0,-f.x,g.z,0,-g.x,-e.y,e.x,0,-f.y,f.x,0,-g.y,g.x,0];if(!a(h))return!1;h=[1,0,0,0,1,0,0,0,1];if(!a(h))return!1;l.crossVectors(e,f);h=[l.x,l.y,l.z];return a(h)}}(),clampPoint:function(a,b){void 0===b&&(console.warn("THREE.Box3: .clampPoint() target is now required"),b=new p);return b.copy(a).clamp(this.min,this.max)},distanceToPoint:function(){var a=new p;return function(b){return a.copy(b).clamp(this.min,this.max).sub(b).length()}}(),getBoundingSphere:function(){var a= +new p;return function(b){void 0===b&&(console.warn("THREE.Box3: .getBoundingSphere() target is now required"),b=new Da);this.getCenter(b.center);b.radius=.5*this.getSize(a).length();return b}}(),intersect:function(a){this.min.max(a.min);this.max.min(a.max);this.isEmpty()&&this.makeEmpty();return this},union:function(a){this.min.min(a.min);this.max.max(a.max);return this},applyMatrix4:function(a){if(this.isEmpty())return this;a=a.elements;var b=a[0]*this.min.x,c=a[1]*this.min.x,d=a[2]*this.min.x,e= +a[0]*this.max.x,f=a[1]*this.max.x,g=a[2]*this.max.x,h=a[4]*this.min.y,k=a[5]*this.min.y,m=a[6]*this.min.y,l=a[4]*this.max.y,n=a[5]*this.max.y,t=a[6]*this.max.y,u=a[8]*this.min.z,r=a[9]*this.min.z,p=a[10]*this.min.z,y=a[8]*this.max.z,x=a[9]*this.max.z,w=a[10]*this.max.z;this.min.x=Math.min(b,e)+Math.min(h,l)+Math.min(u,y)+a[12];this.min.y=Math.min(c,f)+Math.min(k,n)+Math.min(r,x)+a[13];this.min.z=Math.min(d,g)+Math.min(m,t)+Math.min(p,w)+a[14];this.max.x=Math.max(b,e)+Math.max(h,l)+Math.max(u,y)+a[12]; +this.max.y=Math.max(c,f)+Math.max(k,n)+Math.max(r,x)+a[13];this.max.z=Math.max(d,g)+Math.max(m,t)+Math.max(p,w)+a[14];return this},translate:function(a){this.min.add(a);this.max.add(a);return this},equals:function(a){return a.min.equals(this.min)&&a.max.equals(this.max)}});Object.assign(Da.prototype,{set:function(a,b){this.center.copy(a);this.radius=b;return this},setFromPoints:function(){var a=new Sa;return function(b,c){var d=this.center;void 0!==c?d.copy(c):a.setFromPoints(b).getCenter(d);for(var e= +c=0,f=b.length;e=this.radius},containsPoint:function(a){return a.distanceToSquared(this.center)<=this.radius*this.radius},distanceToPoint:function(a){return a.distanceTo(this.center)-this.radius},intersectsSphere:function(a){var b=this.radius+a.radius; +return a.center.distanceToSquared(this.center)<=b*b},intersectsBox:function(a){return a.intersectsSphere(this)},intersectsPlane:function(a){return Math.abs(a.distanceToPoint(this.center))<=this.radius},clampPoint:function(a,b){var c=this.center.distanceToSquared(a);void 0===b&&(console.warn("THREE.Sphere: .clampPoint() target is now required"),b=new p);b.copy(a);c>this.radius*this.radius&&(b.sub(this.center).normalize(),b.multiplyScalar(this.radius).add(this.center));return b},getBoundingBox:function(a){void 0=== +a&&(console.warn("THREE.Sphere: .getBoundingBox() target is now required"),a=new Sa);a.set(this.center,this.center);a.expandByScalar(this.radius);return a},applyMatrix4:function(a){this.center.applyMatrix4(a);this.radius*=a.getMaxScaleOnAxis();return this},translate:function(a){this.center.add(a);return this},equals:function(a){return a.center.equals(this.center)&&a.radius===this.radius}});Object.assign(Ma.prototype,{set:function(a,b){this.normal.copy(a);this.constant=b;return this},setComponents:function(a, +b,c,d){this.normal.set(a,b,c);this.constant=d;return this},setFromNormalAndCoplanarPoint:function(a,b){this.normal.copy(a);this.constant=-b.dot(this.normal);return this},setFromCoplanarPoints:function(){var a=new p,b=new p;return function(c,d,e){d=a.subVectors(e,d).cross(b.subVectors(c,d)).normalize();this.setFromNormalAndCoplanarPoint(d,c);return this}}(),clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.normal.copy(a.normal);this.constant=a.constant;return this},normalize:function(){var a= +1/this.normal.length();this.normal.multiplyScalar(a);this.constant*=a;return this},negate:function(){this.constant*=-1;this.normal.negate();return this},distanceToPoint:function(a){return this.normal.dot(a)+this.constant},distanceToSphere:function(a){return this.distanceToPoint(a.center)-a.radius},projectPoint:function(a,b){void 0===b&&(console.warn("THREE.Plane: .projectPoint() target is now required"),b=new p);return b.copy(this.normal).multiplyScalar(-this.distanceToPoint(a)).add(a)},intersectLine:function(){var a= +new p;return function(b,c){void 0===c&&(console.warn("THREE.Plane: .intersectLine() target is now required"),c=new p);var d=b.delta(a),e=this.normal.dot(d);if(0===e){if(0===this.distanceToPoint(b.start))return c.copy(b.start)}else if(e=-(b.start.dot(this.normal)+this.constant)/e,!(0>e||1b&&0a&&0c;c++)b[c].copy(a.planes[c]);return this},setFromMatrix:function(a){var b=this.planes,c=a.elements;a=c[0];var d=c[1],e=c[2],f=c[3],g=c[4], +h=c[5],k=c[6],m=c[7],l=c[8],n=c[9],t=c[10],p=c[11],r=c[12],v=c[13],y=c[14];c=c[15];b[0].setComponents(f-a,m-g,p-l,c-r).normalize();b[1].setComponents(f+a,m+g,p+l,c+r).normalize();b[2].setComponents(f+d,m+h,p+n,c+v).normalize();b[3].setComponents(f-d,m-h,p-n,c-v).normalize();b[4].setComponents(f-e,m-k,p-t,c-y).normalize();b[5].setComponents(f+e,m+k,p+t,c+y).normalize();return this},intersectsObject:function(){var a=new Da;return function(b){var c=b.geometry;null===c.boundingSphere&&c.computeBoundingSphere(); +a.copy(c.boundingSphere).applyMatrix4(b.matrixWorld);return this.intersectsSphere(a)}}(),intersectsSprite:function(){var a=new Da;return function(b){a.center.set(0,0,0);a.radius=.7071067811865476;a.applyMatrix4(b.matrixWorld);return this.intersectsSphere(a)}}(),intersectsSphere:function(a){var b=this.planes,c=a.center;a=-a.radius;for(var d=0;6>d;d++)if(b[d].distanceToPoint(c)d;d++){var e=c[d]; +a.x=0e.distanceToPoint(a))return!1}return!0}}(),containsPoint:function(a){for(var b=this.planes,c=0;6>c;c++)if(0>b[c].distanceToPoint(a))return!1;return!0}});var S={alphamap_fragment:"#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\n#endif\n",alphamap_pars_fragment:"#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif\n",alphatest_fragment:"#ifdef ALPHATEST\n\tif ( diffuseColor.a < ALPHATEST ) discard;\n#endif\n", +aomap_fragment:"#ifdef USE_AOMAP\n\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\n\treflectedLight.indirectDiffuse *= ambientOcclusion;\n\t#if defined( USE_ENVMAP ) && defined( PHYSICAL )\n\t\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\t\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.specularRoughness );\n\t#endif\n#endif\n",aomap_pars_fragment:"#ifdef USE_AOMAP\n\tuniform sampler2D aoMap;\n\tuniform float aoMapIntensity;\n#endif", +begin_vertex:"\nvec3 transformed = vec3( position );\n",beginnormal_vertex:"\nvec3 objectNormal = vec3( normal );\n",bsdfs:"float punctualLightIntensityToIrradianceFactor( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n\tif( decayExponent > 0.0 ) {\n#if defined ( PHYSICALLY_CORRECT_LIGHTS )\n\t\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n\t\tfloat maxDistanceCutoffFactor = pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n\t\treturn distanceFalloff * maxDistanceCutoffFactor;\n#else\n\t\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\n#endif\n\t}\n\treturn 1.0;\n}\nvec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {\n\treturn RECIPROCAL_PI * diffuseColor;\n}\nvec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) {\n\tfloat fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\n\treturn ( 1.0 - specularColor ) * fresnel + specularColor;\n}\nfloat G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\tfloat gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\treturn 1.0 / ( gl * gv );\n}\nfloat G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\treturn 0.5 / max( gv + gl, EPSILON );\n}\nfloat D_GGX( const in float alpha, const in float dotNH ) {\n\tfloat a2 = pow2( alpha );\n\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\n\treturn RECIPROCAL_PI * a2 / pow2( denom );\n}\nvec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\n\tfloat alpha = pow2( roughness );\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\n\tfloat dotNL = saturate( dot( geometry.normal, incidentLight.direction ) );\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\tfloat D = D_GGX( alpha, dotNH );\n\treturn F * ( G * D );\n}\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\n\tconst float LUT_SIZE = 64.0;\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\n\tfloat dotNV = saturate( dot( N, V ) );\n\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\n\tuv = uv * LUT_SCALE + LUT_BIAS;\n\treturn uv;\n}\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\n\tfloat l = length( f );\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\n\tfloat x = dot( v1, v2 );\n\tfloat y = abs( x );\n\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\n\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\n\tfloat v = a / b;\n\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n\tvec3 lightNormal = cross( v1, v2 );\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 = - cross( N, T1 );\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn vec3( result );\n}\nvec3 BRDF_Specular_GGX_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n\tvec4 r = roughness * c0 + c1;\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n\tvec2 AB = vec2( -1.04, 1.04 ) * a004 + r.zw;\n\treturn specularColor * AB.x + AB.y;\n}\nfloat G_BlinnPhong_Implicit( ) {\n\treturn 0.25;\n}\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\n\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\n}\nvec3 BRDF_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\n\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_BlinnPhong_Implicit( );\n\tfloat D = D_BlinnPhong( shininess, dotNH );\n\treturn F * ( G * D );\n}\nfloat GGXRoughnessToBlinnExponent( const in float ggxRoughness ) {\n\treturn ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 );\n}\nfloat BlinnExponentToGGXRoughness( const in float blinnExponent ) {\n\treturn sqrt( 2.0 / ( blinnExponent + 2.0 ) );\n}\n", +bumpmap_pars_fragment:"#ifdef USE_BUMPMAP\n\tuniform sampler2D bumpMap;\n\tuniform float bumpScale;\n\tvec2 dHdxy_fwd() {\n\t\tvec2 dSTdx = dFdx( vUv );\n\t\tvec2 dSTdy = dFdy( vUv );\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\n\t\treturn vec2( dBx, dBy );\n\t}\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\n\t\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\n\t\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\n\t\tvec3 vN = surf_norm;\n\t\tvec3 R1 = cross( vSigmaY, vN );\n\t\tvec3 R2 = cross( vN, vSigmaX );\n\t\tfloat fDet = dot( vSigmaX, R1 );\n\t\tfDet *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\t}\n#endif\n", +clipping_planes_fragment:"#if NUM_CLIPPING_PLANES > 0\n\tvec4 plane;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\tplane = clippingPlanes[ i ];\n\t\tif ( dot( vViewPosition, plane.xyz ) > plane.w ) discard;\n\t}\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\tbool clipped = true;\n\t\t#pragma unroll_loop\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tclipped = ( dot( vViewPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t}\n\t\tif ( clipped ) discard;\n\t#endif\n#endif\n", +clipping_planes_pars_fragment:"#if NUM_CLIPPING_PLANES > 0\n\t#if ! defined( PHYSICAL ) && ! defined( PHONG )\n\t\tvarying vec3 vViewPosition;\n\t#endif\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif\n",clipping_planes_pars_vertex:"#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG )\n\tvarying vec3 vViewPosition;\n#endif\n",clipping_planes_vertex:"#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n", +color_fragment:"#ifdef USE_COLOR\n\tdiffuseColor.rgb *= vColor;\n#endif",color_pars_fragment:"#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif\n",color_pars_vertex:"#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif",color_vertex:"#ifdef USE_COLOR\n\tvColor.xyz = color.xyz;\n#endif",common:"#define PI 3.14159265359\n#define PI2 6.28318530718\n#define PI_HALF 1.5707963267949\n#define RECIPROCAL_PI 0.31830988618\n#define RECIPROCAL_PI2 0.15915494\n#define LOG2 1.442695\n#define EPSILON 1e-6\n#define saturate(a) clamp( a, 0.0, 1.0 )\n#define whiteCompliment(a) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\nhighp float rand( const in vec2 uv ) {\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n\treturn fract(sin(sn) * c);\n}\nstruct IncidentLight {\n\tvec3 color;\n\tvec3 direction;\n\tbool visible;\n};\nstruct ReflectedLight {\n\tvec3 directDiffuse;\n\tvec3 directSpecular;\n\tvec3 indirectDiffuse;\n\tvec3 indirectSpecular;\n};\nstruct GeometricContext {\n\tvec3 position;\n\tvec3 normal;\n\tvec3 viewDir;\n};\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\tfloat distance = dot( planeNormal, point - pointOnPlane );\n\treturn - distance * planeNormal + point;\n}\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn sign( dot( point - pointOnPlane, planeNormal ) );\n}\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;\n}\nmat3 transposeMat3( const in mat3 m ) {\n\tmat3 tmp;\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n\treturn tmp;\n}\nfloat linearToRelativeLuminance( const in vec3 color ) {\n\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\n\treturn dot( weights, color.rgb );\n}\n", +cube_uv_reflection_fragment:"#ifdef ENVMAP_TYPE_CUBE_UV\n#define cubeUV_textureSize (1024.0)\nint getFaceFromDirection(vec3 direction) {\n\tvec3 absDirection = abs(direction);\n\tint face = -1;\n\tif( absDirection.x > absDirection.z ) {\n\t\tif(absDirection.x > absDirection.y )\n\t\t\tface = direction.x > 0.0 ? 0 : 3;\n\t\telse\n\t\t\tface = direction.y > 0.0 ? 1 : 4;\n\t}\n\telse {\n\t\tif(absDirection.z > absDirection.y )\n\t\t\tface = direction.z > 0.0 ? 2 : 5;\n\t\telse\n\t\t\tface = direction.y > 0.0 ? 1 : 4;\n\t}\n\treturn face;\n}\n#define cubeUV_maxLods1 (log2(cubeUV_textureSize*0.25) - 1.0)\n#define cubeUV_rangeClamp (exp2((6.0 - 1.0) * 2.0))\nvec2 MipLevelInfo( vec3 vec, float roughnessLevel, float roughness ) {\n\tfloat scale = exp2(cubeUV_maxLods1 - roughnessLevel);\n\tfloat dxRoughness = dFdx(roughness);\n\tfloat dyRoughness = dFdy(roughness);\n\tvec3 dx = dFdx( vec * scale * dxRoughness );\n\tvec3 dy = dFdy( vec * scale * dyRoughness );\n\tfloat d = max( dot( dx, dx ), dot( dy, dy ) );\n\td = clamp(d, 1.0, cubeUV_rangeClamp);\n\tfloat mipLevel = 0.5 * log2(d);\n\treturn vec2(floor(mipLevel), fract(mipLevel));\n}\n#define cubeUV_maxLods2 (log2(cubeUV_textureSize*0.25) - 2.0)\n#define cubeUV_rcpTextureSize (1.0 / cubeUV_textureSize)\nvec2 getCubeUV(vec3 direction, float roughnessLevel, float mipLevel) {\n\tmipLevel = roughnessLevel > cubeUV_maxLods2 - 3.0 ? 0.0 : mipLevel;\n\tfloat a = 16.0 * cubeUV_rcpTextureSize;\n\tvec2 exp2_packed = exp2( vec2( roughnessLevel, mipLevel ) );\n\tvec2 rcp_exp2_packed = vec2( 1.0 ) / exp2_packed;\n\tfloat powScale = exp2_packed.x * exp2_packed.y;\n\tfloat scale = rcp_exp2_packed.x * rcp_exp2_packed.y * 0.25;\n\tfloat mipOffset = 0.75*(1.0 - rcp_exp2_packed.y) * rcp_exp2_packed.x;\n\tbool bRes = mipLevel == 0.0;\n\tscale = bRes && (scale < a) ? a : scale;\n\tvec3 r;\n\tvec2 offset;\n\tint face = getFaceFromDirection(direction);\n\tfloat rcpPowScale = 1.0 / powScale;\n\tif( face == 0) {\n\t\tr = vec3(direction.x, -direction.z, direction.y);\n\t\toffset = vec2(0.0+mipOffset,0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 1) {\n\t\tr = vec3(direction.y, direction.x, direction.z);\n\t\toffset = vec2(scale+mipOffset, 0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 2) {\n\t\tr = vec3(direction.z, direction.x, direction.y);\n\t\toffset = vec2(2.0*scale+mipOffset, 0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 3) {\n\t\tr = vec3(direction.x, direction.z, direction.y);\n\t\toffset = vec2(0.0+mipOffset,0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\telse if( face == 4) {\n\t\tr = vec3(direction.y, direction.x, -direction.z);\n\t\toffset = vec2(scale+mipOffset, 0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\telse {\n\t\tr = vec3(direction.z, -direction.x, direction.y);\n\t\toffset = vec2(2.0*scale+mipOffset, 0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\tr = normalize(r);\n\tfloat texelOffset = 0.5 * cubeUV_rcpTextureSize;\n\tvec2 s = ( r.yz / abs( r.x ) + vec2( 1.0 ) ) * 0.5;\n\tvec2 base = offset + vec2( texelOffset );\n\treturn base + s * ( scale - 2.0 * texelOffset );\n}\n#define cubeUV_maxLods3 (log2(cubeUV_textureSize*0.25) - 3.0)\nvec4 textureCubeUV( sampler2D envMap, vec3 reflectedDirection, float roughness ) {\n\tfloat roughnessVal = roughness* cubeUV_maxLods3;\n\tfloat r1 = floor(roughnessVal);\n\tfloat r2 = r1 + 1.0;\n\tfloat t = fract(roughnessVal);\n\tvec2 mipInfo = MipLevelInfo(reflectedDirection, r1, roughness);\n\tfloat s = mipInfo.y;\n\tfloat level0 = mipInfo.x;\n\tfloat level1 = level0 + 1.0;\n\tlevel1 = level1 > 5.0 ? 5.0 : level1;\n\tlevel0 += min( floor( s + 0.5 ), 5.0 );\n\tvec2 uv_10 = getCubeUV(reflectedDirection, r1, level0);\n\tvec4 color10 = envMapTexelToLinear(texture2D(envMap, uv_10));\n\tvec2 uv_20 = getCubeUV(reflectedDirection, r2, level0);\n\tvec4 color20 = envMapTexelToLinear(texture2D(envMap, uv_20));\n\tvec4 result = mix(color10, color20, t);\n\treturn vec4(result.rgb, 1.0);\n}\n#endif\n", +defaultnormal_vertex:"vec3 transformedNormal = normalMatrix * objectNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif\n",displacementmap_pars_vertex:"#ifdef USE_DISPLACEMENTMAP\n\tuniform sampler2D displacementMap;\n\tuniform float displacementScale;\n\tuniform float displacementBias;\n#endif\n",displacementmap_vertex:"#ifdef USE_DISPLACEMENTMAP\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, uv ).x * displacementScale + displacementBias );\n#endif\n", +emissivemap_fragment:"#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\n\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif\n",emissivemap_pars_fragment:"#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif\n",encodings_fragment:" gl_FragColor = linearToOutputTexel( gl_FragColor );\n",encodings_pars_fragment:"\nvec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.xyz, vec3( gammaFactor ) ), value.w );\n}\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.xyz, vec3( 1.0 / gammaFactor ) ), value.w );\n}\nvec4 sRGBToLinear( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );\n}\nvec4 LinearTosRGB( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.w );\n}\nvec4 RGBEToLinear( in vec4 value ) {\n\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\n}\nvec4 LinearToRGBE( in vec4 value ) {\n\tfloat maxComponent = max( max( value.r, value.g ), value.b );\n\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\n\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\n}\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.xyz * value.w * maxRange, 1.0 );\n}\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.x, max( value.g, value.b ) );\n\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\n\tM = ceil( M * 255.0 ) / 255.0;\n\treturn vec4( value.rgb / ( M * maxRange ), M );\n}\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\n}\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.x, max( value.g, value.b ) );\n\tfloat D = max( maxRange / maxRGB, 1.0 );\n\tD = min( floor( D ) / 255.0, 1.0 );\n\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\n}\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\nvec4 LinearToLogLuv( in vec4 value ) {\n\tvec3 Xp_Y_XYZp = value.rgb * cLogLuvM;\n\tXp_Y_XYZp = max(Xp_Y_XYZp, vec3(1e-6, 1e-6, 1e-6));\n\tvec4 vResult;\n\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\n\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\n\tvResult.w = fract(Le);\n\tvResult.z = (Le - (floor(vResult.w*255.0))/255.0)/255.0;\n\treturn vResult;\n}\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\nvec4 LogLuvToLinear( in vec4 value ) {\n\tfloat Le = value.z * 255.0 + value.w;\n\tvec3 Xp_Y_XYZp;\n\tXp_Y_XYZp.y = exp2((Le - 127.0) / 2.0);\n\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\n\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\n\tvec3 vRGB = Xp_Y_XYZp.rgb * cLogLuvInverseM;\n\treturn vec4( max(vRGB, 0.0), 1.0 );\n}\n", +envmap_fragment:"#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\tvec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#else\n\t\tvec3 reflectVec = vReflect;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\tvec2 sampleUV;\n\t\treflectVec = normalize( reflectVec );\n\t\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\t\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\n\t\tvec4 envColor = texture2D( envMap, sampleUV );\n\t#elif defined( ENVMAP_TYPE_SPHERE )\n\t\treflectVec = normalize( reflectVec );\n\t\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) );\n\t\tvec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\n\t#endif\n\tenvColor = envMapTexelToLinear( envColor );\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\t#endif\n#endif\n", +envmap_pars_fragment:"#if defined( USE_ENVMAP ) || defined( PHYSICAL )\n\tuniform float reflectivity;\n\tuniform float envMapIntensity;\n#endif\n#ifdef USE_ENVMAP\n\t#if ! defined( PHYSICAL ) && ( defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) )\n\t\tvarying vec3 vWorldPosition;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\tuniform float flipEnvMap;\n\tuniform int maxMipLevel;\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( PHYSICAL )\n\t\tuniform float refractionRatio;\n\t#else\n\t\tvarying vec3 vReflect;\n\t#endif\n#endif\n", +envmap_pars_vertex:"#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\tvarying vec3 vWorldPosition;\n\t#else\n\t\tvarying vec3 vReflect;\n\t\tuniform float refractionRatio;\n\t#endif\n#endif\n",envmap_physical_pars_fragment:"#if defined( USE_ENVMAP ) && defined( PHYSICAL )\n\tvec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {\n\t\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, queryVec, 1.0 );\n\t\t#else\n\t\t\tvec4 envMapColor = vec4( 0.0 );\n\t\t#endif\n\t\treturn PI * envMapColor.rgb * envMapIntensity;\n\t}\n\tfloat getSpecularMIPLevel( const in float blinnShininessExponent, const in int maxMIPLevel ) {\n\t\tfloat maxMIPLevelScalar = float( maxMIPLevel );\n\t\tfloat desiredMIPLevel = maxMIPLevelScalar + 0.79248 - 0.5 * log2( pow2( blinnShininessExponent ) + 1.0 );\n\t\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\n\t}\n\tvec3 getLightProbeIndirectRadiance( const in GeometricContext geometry, const in float blinnShininessExponent, const in int maxMIPLevel ) {\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( -geometry.viewDir, geometry.normal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( -geometry.viewDir, geometry.normal, refractionRatio );\n\t\t#endif\n\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\tfloat specularMIPLevel = getSpecularMIPLevel( blinnShininessExponent, maxMIPLevel );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, queryReflectVec, BlinnExponentToGGXRoughness(blinnShininessExponent ));\n\t\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\t\tvec2 sampleUV;\n\t\t\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\t\t\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_SPHERE )\n\t\t\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0,0.0,1.0 ) );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#endif\n\t\treturn envMapColor.rgb * envMapIntensity;\n\t}\n#endif\n", +envmap_vertex:"#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\tvWorldPosition = worldPosition.xyz;\n\t#else\n\t\tvec3 cameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#endif\n#endif\n", +fog_vertex:"\n#ifdef USE_FOG\nfogDepth = -mvPosition.z;\n#endif",fog_pars_vertex:"#ifdef USE_FOG\n varying float fogDepth;\n#endif\n",fog_fragment:"#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = whiteCompliment( exp2( - fogDensity * fogDensity * fogDepth * fogDepth * LOG2 ) );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, fogDepth );\n\t#endif\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif\n",fog_pars_fragment:"#ifdef USE_FOG\n\tuniform vec3 fogColor;\n\tvarying float fogDepth;\n\t#ifdef FOG_EXP2\n\t\tuniform float fogDensity;\n\t#else\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n#endif\n", +gradientmap_pars_fragment:"#ifdef TOON\n\tuniform sampler2D gradientMap;\n\tvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n\t\tfloat dotNL = dot( normal, lightDirection );\n\t\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n\t\t#ifdef USE_GRADIENTMAP\n\t\t\treturn texture2D( gradientMap, coord ).rgb;\n\t\t#else\n\t\t\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\n\t\t#endif\n\t}\n#endif\n",lightmap_fragment:"#ifdef USE_LIGHTMAP\n\treflectedLight.indirectDiffuse += PI * texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n#endif\n", +lightmap_pars_fragment:"#ifdef USE_LIGHTMAP\n\tuniform sampler2D lightMap;\n\tuniform float lightMapIntensity;\n#endif",lights_lambert_vertex:"vec3 diffuse = vec3( 1.0 );\nGeometricContext geometry;\ngeometry.position = mvPosition.xyz;\ngeometry.normal = normalize( transformedNormal );\ngeometry.viewDir = normalize( -mvPosition.xyz );\nGeometricContext backGeometry;\nbackGeometry.position = geometry.position;\nbackGeometry.normal = -geometry.normal;\nbackGeometry.viewDir = geometry.viewDir;\nvLightFront = vec3( 0.0 );\n#ifdef DOUBLE_SIDED\n\tvLightBack = vec3( 0.0 );\n#endif\nIncidentLight directLight;\nfloat dotNL;\nvec3 directLightColor_Diffuse;\n#if NUM_POINT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tgetPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tgetSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_DIR_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tgetDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\tvLightFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\n\t\t#endif\n\t}\n#endif\n", +lights_pars_begin:"uniform vec3 ambientLightColor;\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n\tvec3 irradiance = ambientLightColor;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treturn irradiance;\n}\n#if NUM_DIR_LIGHTS > 0\n\tstruct DirectionalLight {\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t};\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n\tvoid getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tdirectLight.color = directionalLight.color;\n\t\tdirectLight.direction = directionalLight.direction;\n\t\tdirectLight.visible = true;\n\t}\n#endif\n#if NUM_POINT_LIGHTS > 0\n\tstruct PointLight {\n\t\tvec3 position;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t\tfloat shadowCameraNear;\n\t\tfloat shadowCameraFar;\n\t};\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n\tvoid getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tvec3 lVector = pointLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tdirectLight.color = pointLight.color;\n\t\tdirectLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay );\n\t\tdirectLight.visible = ( directLight.color != vec3( 0.0 ) );\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\tstruct SpotLight {\n\t\tvec3 position;\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tfloat coneCos;\n\t\tfloat penumbraCos;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t};\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n\tvoid getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tvec3 lVector = spotLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tfloat angleCos = dot( directLight.direction, spotLight.direction );\n\t\tif ( angleCos > spotLight.coneCos ) {\n\t\t\tfloat spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n\t\t\tdirectLight.color = spotLight.color;\n\t\t\tdirectLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );\n\t\t\tdirectLight.visible = true;\n\t\t} else {\n\t\t\tdirectLight.color = vec3( 0.0 );\n\t\t\tdirectLight.visible = false;\n\t\t}\n\t}\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n\tstruct RectAreaLight {\n\t\tvec3 color;\n\t\tvec3 position;\n\t\tvec3 halfWidth;\n\t\tvec3 halfHeight;\n\t};\n\tuniform sampler2D ltc_1;\tuniform sampler2D ltc_2;\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\tstruct HemisphereLight {\n\t\tvec3 direction;\n\t\tvec3 skyColor;\n\t\tvec3 groundColor;\n\t};\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\n\t\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tirradiance *= PI;\n\t\t#endif\n\t\treturn irradiance;\n\t}\n#endif\n", +lights_phong_fragment:"BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;\n",lights_phong_pars_fragment:"varying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\nstruct BlinnPhongMaterial {\n\tvec3\tdiffuseColor;\n\tvec3\tspecularColor;\n\tfloat\tspecularShininess;\n\tfloat\tspecularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\t#ifdef TOON\n\t\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\n\t#else\n\t\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\t\tvec3 irradiance = dotNL * directLight.color;\n\t#endif\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong\n#define Material_LightProbeLOD( material )\t(0)\n", +lights_physical_fragment:"PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nmaterial.specularRoughness = clamp( roughnessFactor, 0.04, 1.0 );\n#ifdef STANDARD\n\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\n\tmaterial.clearCoat = saturate( clearCoat );\tmaterial.clearCoatRoughness = clamp( clearCoatRoughness, 0.04, 1.0 );\n#endif\n", +lights_physical_pars_fragment:"struct PhysicalMaterial {\n\tvec3\tdiffuseColor;\n\tfloat\tspecularRoughness;\n\tvec3\tspecularColor;\n\t#ifndef STANDARD\n\t\tfloat clearCoat;\n\t\tfloat clearCoatRoughness;\n\t#endif\n};\n#define MAXIMUM_SPECULAR_COEFFICIENT 0.16\n#define DEFAULT_SPECULAR_COEFFICIENT 0.04\nfloat clearCoatDHRApprox( const in float roughness, const in float dotNL ) {\n\treturn DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) );\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t\tvec3 normal = geometry.normal;\n\t\tvec3 viewDir = geometry.viewDir;\n\t\tvec3 position = geometry.position;\n\t\tvec3 lightPos = rectAreaLight.position;\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\n\t\tvec3 lightColor = rectAreaLight.color;\n\t\tfloat roughness = material.specularRoughness;\n\t\tvec3 rectCoords[ 4 ];\n\t\trectCoords[ 0 ] = lightPos - halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos + halfWidth - halfHeight;\n\t\trectCoords[ 2 ] = lightPos + halfWidth + halfHeight;\n\t\trectCoords[ 3 ] = lightPos - halfWidth + halfHeight;\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\n\t\tvec4 t1 = texture2D( ltc_1, uv );\n\t\tvec4 t2 = texture2D( ltc_2, uv );\n\t\tmat3 mInv = mat3(\n\t\t\tvec3( t1.x, 0, t1.y ),\n\t\t\tvec3( 0, 1, 0 ),\n\t\t\tvec3( t1.z, 0, t1.w )\n\t\t);\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n\t}\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\t#ifndef STANDARD\n\t\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\n\t#else\n\t\tfloat clearCoatDHR = 0.0;\n\t#endif\n\treflectedLight.directSpecular += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry, material.specularColor, material.specularRoughness );\n\treflectedLight.directDiffuse += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\t#ifndef STANDARD\n\t\treflectedLight.directSpecular += irradiance * material.clearCoat * BRDF_Specular_GGX( directLight, geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\n\t#endif\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 clearCoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t#ifndef STANDARD\n\t\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\t\tfloat dotNL = dotNV;\n\t\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\n\t#else\n\t\tfloat clearCoatDHR = 0.0;\n\t#endif\n\treflectedLight.indirectSpecular += ( 1.0 - clearCoatDHR ) * radiance * BRDF_Specular_GGX_Environment( geometry, material.specularColor, material.specularRoughness );\n\t#ifndef STANDARD\n\t\treflectedLight.indirectSpecular += clearCoatRadiance * material.clearCoat * BRDF_Specular_GGX_Environment( geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\n\t#endif\n}\n#define RE_Direct\t\t\t\tRE_Direct_Physical\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\n#define Material_BlinnShininessExponent( material ) GGXRoughnessToBlinnExponent( material.specularRoughness )\n#define Material_ClearCoat_BlinnShininessExponent( material ) GGXRoughnessToBlinnExponent( material.clearCoatRoughness )\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}\n", +lights_fragment_begin:"\nGeometricContext geometry;\ngeometry.position = - vViewPosition;\ngeometry.normal = normal;\ngeometry.viewDir = normalize( vViewPosition );\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\n\t\t#ifdef USE_SHADOWMAP\n\t\tdirectLight.color *= all( bvec2( pointLight.shadow, directLight.visible ) ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\n\t\t#ifdef USE_SHADOWMAP\n\t\tdirectLight.color *= all( bvec2( spotLight.shadow, directLight.visible ) ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\n\t\t#ifdef USE_SHADOWMAP\n\t\tdirectLight.color *= all( bvec2( directionalLight.shadow, directLight.visible ) ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\t\trectAreaLight = rectAreaLights[ i ];\n\t\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\t#pragma unroll_loop\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t}\n\t#endif\n#endif\n#if defined( RE_IndirectSpecular )\n\tvec3 radiance = vec3( 0.0 );\n\tvec3 clearCoatRadiance = vec3( 0.0 );\n#endif\n", +lights_fragment_maps:"#if defined( RE_IndirectDiffuse )\n\t#ifdef USE_LIGHTMAP\n\t\tvec3 lightMapIrradiance = texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tlightMapIrradiance *= PI;\n\t\t#endif\n\t\tirradiance += lightMapIrradiance;\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( PHYSICAL ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tirradiance += getLightProbeIndirectIrradiance( geometry, maxMipLevel );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\tradiance += getLightProbeIndirectRadiance( geometry, Material_BlinnShininessExponent( material ), maxMipLevel );\n\t#ifndef STANDARD\n\t\tclearCoatRadiance += getLightProbeIndirectRadiance( geometry, Material_ClearCoat_BlinnShininessExponent( material ), maxMipLevel );\n\t#endif\n#endif\n", +lights_fragment_end:"#if defined( RE_IndirectDiffuse )\n\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n\tRE_IndirectSpecular( radiance, clearCoatRadiance, geometry, material, reflectedLight );\n#endif\n",logdepthbuf_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tgl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif",logdepthbuf_pars_fragment:"#ifdef USE_LOGDEPTHBUF\n\tuniform float logDepthBufFC;\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t#endif\n#endif\n", +logdepthbuf_pars_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t#endif\n\tuniform float logDepthBufFC;\n#endif",logdepthbuf_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\t#else\n\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\n\t\tgl_Position.z *= gl_Position.w;\n\t#endif\n#endif\n",map_fragment:"#ifdef USE_MAP\n\tvec4 texelColor = texture2D( map, vUv );\n\ttexelColor = mapTexelToLinear( texelColor );\n\tdiffuseColor *= texelColor;\n#endif\n", +map_pars_fragment:"#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif\n",map_particle_fragment:"#ifdef USE_MAP\n\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n\tvec4 mapTexel = texture2D( map, uv );\n\tdiffuseColor *= mapTexelToLinear( mapTexel );\n#endif\n",map_particle_pars_fragment:"#ifdef USE_MAP\n\tuniform mat3 uvTransform;\n\tuniform sampler2D map;\n#endif\n",metalnessmap_fragment:"float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\n\tmetalnessFactor *= texelMetalness.b;\n#endif\n", +metalnessmap_pars_fragment:"#ifdef USE_METALNESSMAP\n\tuniform sampler2D metalnessMap;\n#endif",morphnormal_vertex:"#ifdef USE_MORPHNORMALS\n\tobjectNormal += ( morphNormal0 - normal ) * morphTargetInfluences[ 0 ];\n\tobjectNormal += ( morphNormal1 - normal ) * morphTargetInfluences[ 1 ];\n\tobjectNormal += ( morphNormal2 - normal ) * morphTargetInfluences[ 2 ];\n\tobjectNormal += ( morphNormal3 - normal ) * morphTargetInfluences[ 3 ];\n#endif\n",morphtarget_pars_vertex:"#ifdef USE_MORPHTARGETS\n\t#ifndef USE_MORPHNORMALS\n\tuniform float morphTargetInfluences[ 8 ];\n\t#else\n\tuniform float morphTargetInfluences[ 4 ];\n\t#endif\n#endif", +morphtarget_vertex:"#ifdef USE_MORPHTARGETS\n\ttransformed += ( morphTarget0 - position ) * morphTargetInfluences[ 0 ];\n\ttransformed += ( morphTarget1 - position ) * morphTargetInfluences[ 1 ];\n\ttransformed += ( morphTarget2 - position ) * morphTargetInfluences[ 2 ];\n\ttransformed += ( morphTarget3 - position ) * morphTargetInfluences[ 3 ];\n\t#ifndef USE_MORPHNORMALS\n\ttransformed += ( morphTarget4 - position ) * morphTargetInfluences[ 4 ];\n\ttransformed += ( morphTarget5 - position ) * morphTargetInfluences[ 5 ];\n\ttransformed += ( morphTarget6 - position ) * morphTargetInfluences[ 6 ];\n\ttransformed += ( morphTarget7 - position ) * morphTargetInfluences[ 7 ];\n\t#endif\n#endif\n", +normal_fragment_begin:"#ifdef FLAT_SHADED\n\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\n\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n#else\n\tvec3 normal = normalize( vNormal );\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t#endif\n#endif\n",normal_fragment_maps:"#ifdef USE_NORMALMAP\n\t#ifdef OBJECTSPACE_NORMALMAP\n\t\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\t#ifdef FLIP_SIDED\n\t\t\tnormal = - normal;\n\t\t#endif\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t#endif\n\t\tnormal = normalize( normalMatrix * normal );\n\t#else\n\t\tnormal = perturbNormal2Arb( -vViewPosition, normal );\n\t#endif\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\n#endif\n", +normalmap_pars_fragment:"#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n\t#ifdef OBJECTSPACE_NORMALMAP\n\t\tuniform mat3 normalMatrix;\n\t#else\n\t\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm ) {\n\t\t\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\n\t\t\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\n\t\t\tvec2 st0 = dFdx( vUv.st );\n\t\t\tvec2 st1 = dFdy( vUv.st );\n\t\t\tfloat scale = sign( st1.t * st0.s - st0.t * st1.s );\n\t\t\tvec3 S = normalize( ( q0 * st1.t - q1 * st0.t ) * scale );\n\t\t\tvec3 T = normalize( ( - q0 * st1.s + q1 * st0.s ) * scale );\n\t\t\tvec3 N = normalize( surf_norm );\n\t\t\tmat3 tsn = mat3( S, T, N );\n\t\t\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\t\tmapN.xy *= normalScale;\n\t\t\tmapN.xy *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t\treturn normalize( tsn * mapN );\n\t\t}\n\t#endif\n#endif\n", +packing:"vec3 packNormalToRGB( const in vec3 normal ) {\n\treturn normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n\treturn 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\nconst float ShiftRight8 = 1. / 256.;\nvec4 packDepthToRGBA( const in float v ) {\n\tvec4 r = vec4( fract( v * PackFactors ), v );\n\tr.yzw -= r.xyz * ShiftRight8;\treturn r * PackUpscale;\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n\treturn dot( v, UnpackFactors );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\n\treturn linearClipZ * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn (( near + viewZ ) * far ) / (( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\n\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\n}\n", +premultiplied_alpha_fragment:"#ifdef PREMULTIPLIED_ALPHA\n\tgl_FragColor.rgb *= gl_FragColor.a;\n#endif\n",project_vertex:"vec4 mvPosition = modelViewMatrix * vec4( transformed, 1.0 );\ngl_Position = projectionMatrix * mvPosition;\n",dithering_fragment:"#if defined( DITHERING )\n gl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif\n",dithering_pars_fragment:"#if defined( DITHERING )\n\tvec3 dithering( vec3 color ) {\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n\t\treturn color + dither_shift_RGB;\n\t}\n#endif\n", +roughnessmap_fragment:"float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\n\troughnessFactor *= texelRoughness.g;\n#endif\n",roughnessmap_pars_fragment:"#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif",shadowmap_pars_fragment:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHTS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHTS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHTS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n\t}\n\tfloat texture2DShadowLerp( sampler2D depths, vec2 size, vec2 uv, float compare ) {\n\t\tconst vec2 offset = vec2( 0.0, 1.0 );\n\t\tvec2 texelSize = vec2( 1.0 ) / size;\n\t\tvec2 centroidUV = floor( uv * size + 0.5 ) / size;\n\t\tfloat lb = texture2DCompare( depths, centroidUV + texelSize * offset.xx, compare );\n\t\tfloat lt = texture2DCompare( depths, centroidUV + texelSize * offset.xy, compare );\n\t\tfloat rb = texture2DCompare( depths, centroidUV + texelSize * offset.yx, compare );\n\t\tfloat rt = texture2DCompare( depths, centroidUV + texelSize * offset.yy, compare );\n\t\tvec2 f = fract( uv * size + 0.5 );\n\t\tfloat a = mix( lb, lt, f.y );\n\t\tfloat b = mix( rb, rt, f.y );\n\t\tfloat c = mix( a, b, f.x );\n\t\treturn c;\n\t}\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n\t\tfloat shadow = 1.0;\n\t\tshadowCoord.xyz /= shadowCoord.w;\n\t\tshadowCoord.z += shadowBias;\n\t\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\n\t\tbool inFrustum = all( inFrustumVec );\n\t\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\n\t\tbool frustumTest = all( frustumTestVec );\n\t\tif ( frustumTest ) {\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tshadow = (\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#endif\n\t\t}\n\t\treturn shadow;\n\t}\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\n\t\tvec3 absV = abs( v );\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n\t\tabsV *= scaleToCube;\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n\t\tvec2 planar = v.xy;\n\t\tfloat almostATexel = 1.5 * texelSizeY;\n\t\tfloat almostOne = 1.0 - almostATexel;\n\t\tif ( absV.z >= almostOne ) {\n\t\t\tif ( v.z > 0.0 )\n\t\t\t\tplanar.x = 4.0 - v.x;\n\t\t} else if ( absV.x >= almostOne ) {\n\t\t\tfloat signX = sign( v.x );\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\n\t\t} else if ( absV.y >= almostOne ) {\n\t\t\tfloat signY = sign( v.y );\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\n\t\t\tplanar.y = v.z * signY - 2.0;\n\t\t}\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n\t}\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n\t\tvec3 lightToPosition = shadowCoord.xyz;\n\t\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\t\tdp += shadowBias;\n\t\tvec3 bd3D = normalize( lightToPosition );\n\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n\t\t\treturn (\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n\t\t#endif\n\t}\n#endif\n", +shadowmap_pars_vertex:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHTS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\t\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHTS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHTS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\n\t#endif\n#endif\n", +shadowmap_vertex:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n#endif\n", +shadowmask_pars_fragment:"float getShadowMask() {\n\tfloat shadow = 1.0;\n\t#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\tDirectionalLight directionalLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tshadow *= bool( directionalLight.shadow ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t}\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\tSpotLight spotLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tshadow *= bool( spotLight.shadow ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t}\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\tPointLight pointLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tshadow *= bool( pointLight.shadow ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t}\n\t#endif\n\t#endif\n\treturn shadow;\n}\n", +skinbase_vertex:"#ifdef USE_SKINNING\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif",skinning_pars_vertex:"#ifdef USE_SKINNING\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\t#ifdef BONE_TEXTURE\n\t\tuniform sampler2D boneTexture;\n\t\tuniform int boneTextureSize;\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tfloat j = i * 4.0;\n\t\t\tfloat x = mod( j, float( boneTextureSize ) );\n\t\t\tfloat y = floor( j / float( boneTextureSize ) );\n\t\t\tfloat dx = 1.0 / float( boneTextureSize );\n\t\t\tfloat dy = 1.0 / float( boneTextureSize );\n\t\t\ty = dy * ( y + 0.5 );\n\t\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\n\t\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\n\t\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\n\t\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\n\t\t\tmat4 bone = mat4( v1, v2, v3, v4 );\n\t\t\treturn bone;\n\t\t}\n\t#else\n\t\tuniform mat4 boneMatrices[ MAX_BONES ];\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tmat4 bone = boneMatrices[ int(i) ];\n\t\t\treturn bone;\n\t\t}\n\t#endif\n#endif\n", +skinning_vertex:"#ifdef USE_SKINNING\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n\tvec4 skinned = vec4( 0.0 );\n\tskinned += boneMatX * skinVertex * skinWeight.x;\n\tskinned += boneMatY * skinVertex * skinWeight.y;\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\n\tskinned += boneMatW * skinVertex * skinWeight.w;\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\n#endif\n",skinnormal_vertex:"#ifdef USE_SKINNING\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n#endif\n", +specularmap_fragment:"float specularStrength;\n#ifdef USE_SPECULARMAP\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\n\tspecularStrength = texelSpecular.r;\n#else\n\tspecularStrength = 1.0;\n#endif",specularmap_pars_fragment:"#ifdef USE_SPECULARMAP\n\tuniform sampler2D specularMap;\n#endif",tonemapping_fragment:"#if defined( TONE_MAPPING )\n gl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif\n",tonemapping_pars_fragment:"#ifndef saturate\n\t#define saturate(a) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nuniform float toneMappingWhitePoint;\nvec3 LinearToneMapping( vec3 color ) {\n\treturn toneMappingExposure * color;\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\n}\n#define Uncharted2Helper( x ) max( ( ( x * ( 0.15 * x + 0.10 * 0.50 ) + 0.20 * 0.02 ) / ( x * ( 0.15 * x + 0.50 ) + 0.20 * 0.30 ) ) - 0.02 / 0.30, vec3( 0.0 ) )\nvec3 Uncharted2ToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( Uncharted2Helper( color ) / Uncharted2Helper( vec3( toneMappingWhitePoint ) ) );\n}\nvec3 OptimizedCineonToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\n", +uv_pars_fragment:"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\n\tvarying vec2 vUv;\n#endif",uv_pars_vertex:"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\n\tvarying vec2 vUv;\n\tuniform mat3 uvTransform;\n#endif\n", +uv_vertex:"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n#endif",uv2_pars_fragment:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvarying vec2 vUv2;\n#endif",uv2_pars_vertex:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tattribute vec2 uv2;\n\tvarying vec2 vUv2;\n#endif", +uv2_vertex:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvUv2 = uv2;\n#endif",worldpos_vertex:"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP )\n\tvec4 worldPosition = modelMatrix * vec4( transformed, 1.0 );\n#endif\n",cube_frag:"uniform samplerCube tCube;\nuniform float tFlip;\nuniform float opacity;\nvarying vec3 vWorldPosition;\nvoid main() {\n\tgl_FragColor = textureCube( tCube, vec3( tFlip * vWorldPosition.x, vWorldPosition.yz ) );\n\tgl_FragColor.a *= opacity;\n}\n", +cube_vert:"varying vec3 vWorldPosition;\n#include \nvoid main() {\n\tvWorldPosition = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n\tgl_Position.z = gl_Position.w;\n}\n",depth_frag:"#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - gl_FragCoord.z ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( gl_FragCoord.z );\n\t#endif\n}\n", +depth_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}\n", +distanceRGBA_frag:"#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main () {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include \n\t#include \n\t#include \n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}\n", +distanceRGBA_vert:"#define DISTANCE\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvWorldPosition = worldPosition.xyz;\n}\n", +equirect_frag:"uniform sampler2D tEquirect;\nvarying vec3 vWorldPosition;\n#include \nvoid main() {\n\tvec3 direction = normalize( vWorldPosition );\n\tvec2 sampleUV;\n\tsampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\n\tgl_FragColor = texture2D( tEquirect, sampleUV );\n}\n",equirect_vert:"varying vec3 vWorldPosition;\n#include \nvoid main() {\n\tvWorldPosition = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n}\n", +linedashed_frag:"uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}\n", +linedashed_vert:"uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvLineDistance = scale * lineDistance;\n\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include \n\t#include \n\t#include \n}\n", +meshbasic_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\t#ifdef USE_LIGHTMAP\n\t\treflectedLight.indirectDiffuse += texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n\t#else\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}\n", +meshbasic_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#ifdef USE_ENVMAP\n\t#include \n\t#include \n\t#include \n\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}\n", +meshlambert_frag:"uniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\nvarying vec3 vLightFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\treflectedLight.indirectDiffuse = getAmbientLightIrradiance( ambientLightColor );\n\t#include \n\treflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\n\t#else\n\t\treflectedLight.directDiffuse = vLightFront;\n\t#endif\n\treflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();\n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}\n", +meshlambert_vert:"#define LAMBERT\nvarying vec3 vLightFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}\n", +meshphong_frag:"#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}\n", +meshphong_vert:"#define PHONG\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n\t#include \n}\n", +meshphysical_frag:"#define PHYSICAL\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifndef STANDARD\n\tuniform float clearCoat;\n\tuniform float clearCoatRoughness;\n#endif\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}\n", +meshphysical_vert:"#define PHYSICAL\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n}\n", +normal_frag:"#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\n}\n", +normal_vert:"#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}\n", +points_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}\n", +points_vert:"uniform float size;\nuniform float scale;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#ifdef USE_SIZEATTENUATION\n\t\tgl_PointSize = size * ( scale / - mvPosition.z );\n\t#else\n\t\tgl_PointSize = size;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n}\n", +shadow_frag:"uniform vec3 color;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include \n}\n",shadow_vert:"#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}\n", +sprite_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n}\n", +sprite_vert:"uniform float rotation;\nuniform vec2 center;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec2 scale;\n\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n\tvec2 rotatedPosition;\n\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n\tvec4 mvPosition;\n\tmvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n\tmvPosition.xy += rotatedPosition;\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include \n\t#include \n\t#include \n}\n"}, +Aa={merge:function(a){for(var b={},c=0;c>16&255)/255;this.g=(a>>8&255)/255;this.b=(a&255)/255;return this},setRGB:function(a,b,c){this.r=a;this.g=b;this.b=c;return this},setHSL:function(){function a(a,c,d){0>d&&(d+=1);1d?c:d<2/3?a+6*(c-a)*(2/3-d):a}return function(b, +c,d){b=H.euclideanModulo(b,1);c=H.clamp(c,0,1);d=H.clamp(d,0,1);0===c?this.r=this.g=this.b=d:(c=.5>=d?d*(1+c):d+c-d*c,d=2*d-c,this.r=a(d,c,b+1/3),this.g=a(d,c,b),this.b=a(d,c,b-1/3));return this}}(),setStyle:function(a){function b(b){void 0!==b&&1>parseFloat(b)&&console.warn("THREE.Color: Alpha component of "+a+" will be ignored.")}var c;if(c=/^((?:rgb|hsl)a?)\(\s*([^\)]*)\)/.exec(a)){var d=c[2];switch(c[1]){case "rgb":case "rgba":if(c=/^(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(d))return this.r= +Math.min(255,parseInt(c[1],10))/255,this.g=Math.min(255,parseInt(c[2],10))/255,this.b=Math.min(255,parseInt(c[3],10))/255,b(c[5]),this;if(c=/^(\d+)%\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(d))return this.r=Math.min(100,parseInt(c[1],10))/100,this.g=Math.min(100,parseInt(c[2],10))/100,this.b=Math.min(100,parseInt(c[3],10))/100,b(c[5]),this;break;case "hsl":case "hsla":if(c=/^([0-9]*\.?[0-9]+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(d)){d=parseFloat(c[1])/ +360;var e=parseInt(c[2],10)/100,f=parseInt(c[3],10)/100;b(c[5]);return this.setHSL(d,e,f)}}}else if(c=/^#([A-Fa-f0-9]+)$/.exec(a)){c=c[1];d=c.length;if(3===d)return this.r=parseInt(c.charAt(0)+c.charAt(0),16)/255,this.g=parseInt(c.charAt(1)+c.charAt(1),16)/255,this.b=parseInt(c.charAt(2)+c.charAt(2),16)/255,this;if(6===d)return this.r=parseInt(c.charAt(0)+c.charAt(1),16)/255,this.g=parseInt(c.charAt(2)+c.charAt(3),16)/255,this.b=parseInt(c.charAt(4)+c.charAt(5),16)/255,this}a&&0a?.0773993808*a:Math.pow(.9478672986*a+.0521327014,2.4)}return function(b){this.r=a(b.r);this.g=a(b.g);this.b=a(b.b);return this}}(),copyLinearToSRGB:function(){function a(a){return.0031308>a?12.92*a:1.055*Math.pow(a,.41666)-.055}return function(b){this.r=a(b.r);this.g=a(b.g);this.b=a(b.b);return this}}(),convertSRGBToLinear:function(){this.copySRGBToLinear(this); +return this},convertLinearToSRGB:function(){this.copyLinearToSRGB(this);return this},getHex:function(){return 255*this.r<<16^255*this.g<<8^255*this.b<<0},getHexString:function(){return("000000"+this.getHex().toString(16)).slice(-6)},getHSL:function(a){void 0===a&&(console.warn("THREE.Color: .getHSL() target is now required"),a={h:0,s:0,l:0});var b=this.r,c=this.g,d=this.b,e=Math.max(b,c,d),f=Math.min(b,c,d),g,h=(f+e)/2;if(f===e)f=g=0;else{var k=e-f;f=.5>=h?k/(e+f):k/(2-e-f);switch(e){case b:g=(c- +d)/k+(cMath.abs(g)?(this._x=Math.atan2(-m,e),this._z= +Math.atan2(-f,a)):(this._x=Math.atan2(n,k),this._z=0)):"YXZ"===b?(this._x=Math.asin(-d(m,-1,1)),.99999>Math.abs(m)?(this._y=Math.atan2(g,e),this._z=Math.atan2(h,k)):(this._y=Math.atan2(-l,a),this._z=0)):"ZXY"===b?(this._x=Math.asin(d(n,-1,1)),.99999>Math.abs(n)?(this._y=Math.atan2(-l,e),this._z=Math.atan2(-f,k)):(this._y=0,this._z=Math.atan2(h,a))):"ZYX"===b?(this._y=Math.asin(-d(l,-1,1)),.99999>Math.abs(l)?(this._x=Math.atan2(n,e),this._z=Math.atan2(h,a)):(this._x=0,this._z=Math.atan2(-f,k))):"YZX"=== +b?(this._z=Math.asin(d(h,-1,1)),.99999>Math.abs(h)?(this._x=Math.atan2(-m,k),this._y=Math.atan2(-l,a)):(this._x=0,this._y=Math.atan2(g,e))):"XZY"===b?(this._z=Math.asin(-d(f,-1,1)),.99999>Math.abs(f)?(this._x=Math.atan2(n,k),this._y=Math.atan2(g,a)):(this._x=Math.atan2(-m,e),this._y=0)):console.warn("THREE.Euler: .setFromRotationMatrix() given unsupported order: "+b);this._order=b;if(!1!==c)this.onChangeCallback();return this},setFromQuaternion:function(){var a=new I;return function(b,c,d){a.makeRotationFromQuaternion(b); +return this.setFromRotationMatrix(a,c,d)}}(),setFromVector3:function(a,b){return this.set(a.x,a.y,a.z,b||this._order)},reorder:function(){var a=new fa;return function(b){a.setFromEuler(this);return this.setFromQuaternion(a,b)}}(),equals:function(a){return a._x===this._x&&a._y===this._y&&a._z===this._z&&a._order===this._order},fromArray:function(a){this._x=a[0];this._y=a[1];this._z=a[2];void 0!==a[3]&&(this._order=a[3]);this.onChangeCallback();return this},toArray:function(a,b){void 0===a&&(a=[]); +void 0===b&&(b=0);a[b]=this._x;a[b+1]=this._y;a[b+2]=this._z;a[b+3]=this._order;return a},toVector3:function(a){return a?a.set(this._x,this._y,this._z):new p(this._x,this._y,this._z)},onChange:function(a){this.onChangeCallback=a;return this},onChangeCallback:function(){}});Object.assign(Rd.prototype,{set:function(a){this.mask=1<g;g++)if(d[g]===d[(g+1)%3]){a.push(f);break}for(f=a.length-1;0<=f;f--)for(d=a[f],this.faces.splice(d,1),c=0,e= +this.faceVertexUvs.length;cthis.opacity&&(d.opacity=this.opacity); +!0===this.transparent&&(d.transparent=this.transparent);d.depthFunc=this.depthFunc;d.depthTest=this.depthTest;d.depthWrite=this.depthWrite;0!==this.rotation&&(d.rotation=this.rotation);1!==this.linewidth&&(d.linewidth=this.linewidth);void 0!==this.dashSize&&(d.dashSize=this.dashSize);void 0!==this.gapSize&&(d.gapSize=this.gapSize);void 0!==this.scale&&(d.scale=this.scale);!0===this.dithering&&(d.dithering=!0);0a?b.copy(this.origin):b.copy(this.direction).multiplyScalar(a).add(this.origin)},distanceToPoint:function(a){return Math.sqrt(this.distanceSqToPoint(a))},distanceSqToPoint:function(){var a=new p;return function(b){var c=a.subVectors(b,this.origin).dot(this.direction);if(0>c)return this.origin.distanceToSquared(b);a.copy(this.direction).multiplyScalar(c).add(this.origin);return a.distanceToSquared(b)}}(),distanceSqToSegment:function(){var a=new p,b=new p,c=new p;return function(d,e,f,g){a.copy(d).add(e).multiplyScalar(.5); +b.copy(e).sub(d).normalize();c.copy(this.origin).sub(a);var h=.5*d.distanceTo(e),k=-this.direction.dot(b),m=c.dot(this.direction),l=-c.dot(b),n=c.lengthSq(),t=Math.abs(1-k*k);if(0=-p?e<=p?(h=1/t,d*=h,e*=h,k=d*(d+k*e+2*m)+e*(k*d+e+2*l)+n):(e=h,d=Math.max(0,-(k*e+m)),k=-d*d+e*(e+2*l)+n):(e=-h,d=Math.max(0,-(k*e+m)),k=-d*d+e*(e+2*l)+n):e<=-p?(d=Math.max(0,-(-k*h+m)),e=0b)return null;b=Math.sqrt(b-e);e=d-b;d+=b;return 0>e&&0>d?null:0>e?this.at(d, +c):this.at(e,c)}}(),intersectsSphere:function(a){return this.distanceToPoint(a.center)<=a.radius},distanceToPlane:function(a){var b=a.normal.dot(this.direction);if(0===b)return 0===a.distanceToPoint(this.origin)?0:null;a=-(this.origin.dot(a.normal)+a.constant)/b;return 0<=a?a:null},intersectPlane:function(a,b){a=this.distanceToPlane(a);return null===a?null:this.at(a,b)},intersectsPlane:function(a){var b=a.distanceToPoint(this.origin);return 0===b||0>a.normal.dot(this.direction)*b?!0:!1},intersectBox:function(a, +b){var c=1/this.direction.x;var d=1/this.direction.y;var e=1/this.direction.z,f=this.origin;if(0<=c){var g=(a.min.x-f.x)*c;c*=a.max.x-f.x}else g=(a.max.x-f.x)*c,c*=a.min.x-f.x;if(0<=d){var h=(a.min.y-f.y)*d;d*=a.max.y-f.y}else h=(a.max.y-f.y)*d,d*=a.min.y-f.y;if(g>d||h>c)return null;if(h>g||g!==g)g=h;if(da||h>c)return null;if(h>g||g!==g)g=h;if(ac?null:this.at(0<=g?g:c,b)},intersectsBox:function(){var a= +new p;return function(b){return null!==this.intersectBox(b,a)}}(),intersectTriangle:function(){var a=new p,b=new p,c=new p,d=new p;return function(e,f,g,h,k){b.subVectors(f,e);c.subVectors(g,e);d.crossVectors(b,c);f=this.direction.dot(d);if(0f)h=-1,f=-f;else return null;a.subVectors(this.origin,e);e=h*this.direction.dot(c.crossVectors(a,c));if(0>e)return null;g=h*this.direction.dot(b.cross(a));if(0>g||e+g>f)return null;e=-h*a.dot(d);return 0>e?null:this.at(e/f,k)}}(), +applyMatrix4:function(a){this.origin.applyMatrix4(a);this.direction.transformDirection(a);return this},equals:function(a){return a.origin.equals(this.origin)&&a.direction.equals(this.direction)}});Object.assign(ja,{getNormal:function(){var a=new p;return function(b,c,d,e){void 0===e&&(console.warn("THREE.Triangle: .getNormal() target is now required"),e=new p);e.subVectors(d,c);a.subVectors(b,c);e.cross(a);b=e.lengthSq();return 0=a.x+a.y}}()});Object.assign(ja.prototype, +{set:function(a,b,c){this.a.copy(a);this.b.copy(b);this.c.copy(c);return this},setFromPointsAndIndices:function(a,b,c,d){this.a.copy(a[b]);this.b.copy(a[c]);this.c.copy(a[d]);return this},clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.a.copy(a.a);this.b.copy(a.b);this.c.copy(a.c);return this},getArea:function(){var a=new p,b=new p;return function(){a.subVectors(this.c,this.b);b.subVectors(this.a,this.b);return.5*a.cross(b).length()}}(),getMidpoint:function(a){void 0=== +a&&(console.warn("THREE.Triangle: .getMidpoint() target is now required"),a=new p);return a.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)},getNormal:function(a){return ja.getNormal(this.a,this.b,this.c,a)},getPlane:function(a){void 0===a&&(console.warn("THREE.Triangle: .getPlane() target is now required"),a=new p);return a.setFromCoplanarPoints(this.a,this.b,this.c)},getBarycoord:function(a,b){return ja.getBarycoord(a,this.a,this.b,this.c,b)},containsPoint:function(a){return ja.containsPoint(a, +this.a,this.b,this.c)},intersectsBox:function(a){return a.intersectsTriangle(this)},closestPointToPoint:function(){var a=new p,b=new p,c=new p,d=new p,e=new p,f=new p;return function(g,h){void 0===h&&(console.warn("THREE.Triangle: .closestPointToPoint() target is now required"),h=new p);var k=this.a,m=this.b,l=this.c;a.subVectors(m,k);b.subVectors(l,k);d.subVectors(g,k);var n=a.dot(d),t=b.dot(d);if(0>=n&&0>=t)return h.copy(k);e.subVectors(g,m);var u=a.dot(e),r=b.dot(e);if(0<=u&&r<=u)return h.copy(m); +var v=n*r-u*t;if(0>=v&&0<=n&&0>=u)return m=n/(n-u),h.copy(k).addScaledVector(a,m);f.subVectors(g,l);g=a.dot(f);var y=b.dot(f);if(0<=y&&g<=y)return h.copy(l);n=g*t-n*y;if(0>=n&&0<=t&&0>=y)return v=t/(t-y),h.copy(k).addScaledVector(b,v);t=u*y-g*r;if(0>=t&&0<=r-u&&0<=g-y)return c.subVectors(l,m),v=(r-u)/(r-u+(g-y)),h.copy(m).addScaledVector(c,v);l=1/(t+n+v);m=n*l;v*=l;return h.copy(k).addScaledVector(a,m).addScaledVector(b,v)}}(),equals:function(a){return a.a.equals(this.a)&&a.b.equals(this.b)&&a.c.equals(this.c)}}); +la.prototype=Object.assign(Object.create(D.prototype),{constructor:la,isMesh:!0,setDrawMode:function(a){this.drawMode=a},copy:function(a){D.prototype.copy.call(this,a);this.drawMode=a.drawMode;void 0!==a.morphTargetInfluences&&(this.morphTargetInfluences=a.morphTargetInfluences.slice());void 0!==a.morphTargetDictionary&&(this.morphTargetDictionary=Object.assign({},a.morphTargetDictionary));return this},updateMorphTargets:function(){var a=this.geometry;if(a.isBufferGeometry){a=a.morphAttributes;var b= +Object.keys(a);if(0c.far?null:{distance:b,point:x.clone(),object:a}}function c(c,d,e,f,m,l,n,q,p){g.fromBufferAttribute(m,n);h.fromBufferAttribute(m,q);k.fromBufferAttribute(m, +p);if(c=b(c,d,e,f,g,h,k,y))l&&(t.fromBufferAttribute(l,n),u.fromBufferAttribute(l,q),r.fromBufferAttribute(l,p),c.uv=a(y,g,h,k,t,u,r)),l=new Ta(n,q,p),ja.getNormal(g,h,k,l.normal),c.face=l;return c}var d=new I,e=new mb,f=new Da,g=new p,h=new p,k=new p,m=new p,l=new p,n=new p,t=new z,u=new z,r=new z,v=new p,y=new p,x=new p;return function(q,p){var v=this.geometry,w=this.material,x=this.matrixWorld;if(void 0!==w&&(null===v.boundingSphere&&v.computeBoundingSphere(),f.copy(v.boundingSphere),f.applyMatrix4(x), +!1!==q.ray.intersectsSphere(f)&&(d.getInverse(x),e.copy(q.ray).applyMatrix4(d),null===v.boundingBox||!1!==e.intersectsBox(v.boundingBox))))if(v.isBufferGeometry){var z=v.index,B=v.attributes.position,A=v.attributes.uv,D=v.groups;v=v.drawRange;var C;if(null!==z)if(Array.isArray(w)){var H=0;for(C=D.length;He.far||f.push({distance:q,point:b.clone(),face:null,object:this})}}(),clone:function(){return(new this.constructor(this.material)).copy(this)},copy:function(a){D.prototype.copy.call(this,a);void 0!==a.center&&this.center.copy(a.center);return this}}); +Bc.prototype=Object.assign(Object.create(D.prototype),{constructor:Bc,copy:function(a){D.prototype.copy.call(this,a,!1);a=a.levels;for(var b=0,c=a.length;b=d[e].distance)d[e-1].object.visible=!1,d[e].object.visible=!0;else break; +for(;ef||(l.applyMatrix4(this.matrixWorld),v=d.ray.origin.distanceTo(l),vd.far||e.push({distance:v,point:h.clone().applyMatrix4(this.matrixWorld),index:g,face:null,faceIndex:null,object:this}))}}else for(g=0,r=u.length/3-1;gf||(l.applyMatrix4(this.matrixWorld),v=d.ray.origin.distanceTo(l),vd.far||e.push({distance:v,point:h.clone().applyMatrix4(this.matrixWorld), +index:g,face:null,faceIndex:null,object:this}))}else if(g.isGeometry)for(k=g.vertices,m=k.length,g=0;gf||(l.applyMatrix4(this.matrixWorld),v=d.ray.origin.distanceTo(l),vd.far||e.push({distance:v,point:h.clone().applyMatrix4(this.matrixWorld),index:g,face:null,faceIndex:null,object:this}))}}}(),clone:function(){return(new this.constructor(this.geometry,this.material)).copy(this)}});W.prototype=Object.assign(Object.create(sa.prototype), +{constructor:W,isLineSegments:!0,computeLineDistances:function(){var a=new p,b=new p;return function(){var c=this.geometry;if(c.isBufferGeometry)if(null===c.index){for(var d=c.attributes.position,e=[],f=0,g=d.count;fd.far||e.push({distance:a,distanceToRay:Math.sqrt(f),point:n.clone(),index:c,face:null,object:g}))}var g=this,h=this.geometry,k=this.matrixWorld,m=d.params.Points.threshold;null===h.boundingSphere&& +h.computeBoundingSphere();c.copy(h.boundingSphere);c.applyMatrix4(k);c.radius+=m;if(!1!==d.ray.intersectsSphere(c)){a.getInverse(k);b.copy(d.ray).applyMatrix4(a);m/=(this.scale.x+this.scale.y+this.scale.z)/3;var l=m*m;m=new p;var n=new p;if(h.isBufferGeometry){var t=h.index;h=h.attributes.position.array;if(null!==t){var u=t.array;t=0;for(var r=u.length;t=a.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}});Pb.prototype=Object.create(T.prototype);Pb.prototype.constructor=Pb;Pb.prototype.isCompressedTexture=!0;Dc.prototype=Object.create(T.prototype);Dc.prototype.constructor=Dc;Dc.prototype.isCanvasTexture=!0;Ec.prototype= +Object.create(T.prototype);Ec.prototype.constructor=Ec;Ec.prototype.isDepthTexture=!0;Qb.prototype=Object.create(C.prototype);Qb.prototype.constructor=Qb;Fc.prototype=Object.create(R.prototype);Fc.prototype.constructor=Fc;Rb.prototype=Object.create(C.prototype);Rb.prototype.constructor=Rb;Gc.prototype=Object.create(R.prototype);Gc.prototype.constructor=Gc;na.prototype=Object.create(C.prototype);na.prototype.constructor=na;Hc.prototype=Object.create(R.prototype);Hc.prototype.constructor=Hc;Sb.prototype= +Object.create(na.prototype);Sb.prototype.constructor=Sb;Ic.prototype=Object.create(R.prototype);Ic.prototype.constructor=Ic;pb.prototype=Object.create(na.prototype);pb.prototype.constructor=pb;Jc.prototype=Object.create(R.prototype);Jc.prototype.constructor=Jc;Tb.prototype=Object.create(na.prototype);Tb.prototype.constructor=Tb;Kc.prototype=Object.create(R.prototype);Kc.prototype.constructor=Kc;Ub.prototype=Object.create(na.prototype);Ub.prototype.constructor=Ub;Lc.prototype=Object.create(R.prototype); +Lc.prototype.constructor=Lc;Vb.prototype=Object.create(C.prototype);Vb.prototype.constructor=Vb;Mc.prototype=Object.create(R.prototype);Mc.prototype.constructor=Mc;Wb.prototype=Object.create(C.prototype);Wb.prototype.constructor=Wb;Nc.prototype=Object.create(R.prototype);Nc.prototype.constructor=Nc;Xb.prototype=Object.create(C.prototype);Xb.prototype.constructor=Xb;var Ug={triangulate:function(a,b,c){c=c||2;var d=b&&b.length,e=d?b[0]*c:a.length,f=bf(a,0,e,c,!0),g=[];if(!f)return g;var h;if(d){var k= +c;d=[];var m;var l=0;for(m=b.length;l80*c){var p=h=a[0];var r=d=a[1];for(k=c;kh&&(h=l),b>d&&(d=b);h=Math.max(h-p,d-r);h=0!==h?1/h:0}Qc(f,g,c,p,r,h);return g}},Va={area:function(a){for(var b=a.length,c=0,d=b-1,e=0;eVa.area(a)},triangulateShape:function(a,b){var c=[],d=[],e=[];ff(a);gf(c,a);var f=a.length;b.forEach(ff);for(a=0;aMath.abs(g-k)?[new z(a,1-c),new z(h,1-d),new z(m,1-e),new z(n,1-b)]:[new z(g,1-c),new z(k,1-d),new z(l,1-e),new z(t,1-b)]}};Sc.prototype=Object.create(R.prototype);Sc.prototype.constructor=Sc;Yb.prototype=Object.create(Oa.prototype);Yb.prototype.constructor=Yb;Tc.prototype=Object.create(R.prototype);Tc.prototype.constructor=Tc;sb.prototype=Object.create(C.prototype);sb.prototype.constructor=sb;Uc.prototype=Object.create(R.prototype);Uc.prototype.constructor=Uc;Zb.prototype=Object.create(C.prototype); +Zb.prototype.constructor=Zb;Vc.prototype=Object.create(R.prototype);Vc.prototype.constructor=Vc;$b.prototype=Object.create(C.prototype);$b.prototype.constructor=$b;tb.prototype=Object.create(R.prototype);tb.prototype.constructor=tb;tb.prototype.toJSON=function(){var a=R.prototype.toJSON.call(this);return jf(this.parameters.shapes,a)};ub.prototype=Object.create(C.prototype);ub.prototype.constructor=ub;ub.prototype.toJSON=function(){var a=C.prototype.toJSON.call(this);return jf(this.parameters.shapes, +a)};ac.prototype=Object.create(C.prototype);ac.prototype.constructor=ac;vb.prototype=Object.create(R.prototype);vb.prototype.constructor=vb;Wa.prototype=Object.create(C.prototype);Wa.prototype.constructor=Wa;Wc.prototype=Object.create(vb.prototype);Wc.prototype.constructor=Wc;Xc.prototype=Object.create(Wa.prototype);Xc.prototype.constructor=Xc;Yc.prototype=Object.create(R.prototype);Yc.prototype.constructor=Yc;bc.prototype=Object.create(C.prototype);bc.prototype.constructor=bc;var xa=Object.freeze({WireframeGeometry:Qb, +ParametricGeometry:Fc,ParametricBufferGeometry:Rb,TetrahedronGeometry:Hc,TetrahedronBufferGeometry:Sb,OctahedronGeometry:Ic,OctahedronBufferGeometry:pb,IcosahedronGeometry:Jc,IcosahedronBufferGeometry:Tb,DodecahedronGeometry:Kc,DodecahedronBufferGeometry:Ub,PolyhedronGeometry:Gc,PolyhedronBufferGeometry:na,TubeGeometry:Lc,TubeBufferGeometry:Vb,TorusKnotGeometry:Mc,TorusKnotBufferGeometry:Wb,TorusGeometry:Nc,TorusBufferGeometry:Xb,TextGeometry:Sc,TextBufferGeometry:Yb,SphereGeometry:Tc,SphereBufferGeometry:sb, +RingGeometry:Uc,RingBufferGeometry:Zb,PlaneGeometry:uc,PlaneBufferGeometry:lb,LatheGeometry:Vc,LatheBufferGeometry:$b,ShapeGeometry:tb,ShapeBufferGeometry:ub,ExtrudeGeometry:rb,ExtrudeBufferGeometry:Oa,EdgesGeometry:ac,ConeGeometry:Wc,ConeBufferGeometry:Xc,CylinderGeometry:vb,CylinderBufferGeometry:Wa,CircleGeometry:Yc,CircleBufferGeometry:bc,BoxGeometry:Ib,BoxBufferGeometry:kb});wb.prototype=Object.create(J.prototype);wb.prototype.constructor=wb;wb.prototype.isShadowMaterial=!0;wb.prototype.copy= +function(a){J.prototype.copy.call(this,a);this.color.copy(a.color);return this};cc.prototype=Object.create(ta.prototype);cc.prototype.constructor=cc;cc.prototype.isRawShaderMaterial=!0;Pa.prototype=Object.create(J.prototype);Pa.prototype.constructor=Pa;Pa.prototype.isMeshStandardMaterial=!0;Pa.prototype.copy=function(a){J.prototype.copy.call(this,a);this.defines={STANDARD:""};this.color.copy(a.color);this.roughness=a.roughness;this.metalness=a.metalness;this.map=a.map;this.lightMap=a.lightMap;this.lightMapIntensity= +a.lightMapIntensity;this.aoMap=a.aoMap;this.aoMapIntensity=a.aoMapIntensity;this.emissive.copy(a.emissive);this.emissiveMap=a.emissiveMap;this.emissiveIntensity=a.emissiveIntensity;this.bumpMap=a.bumpMap;this.bumpScale=a.bumpScale;this.normalMap=a.normalMap;this.normalMapType=a.normalMapType;this.normalScale.copy(a.normalScale);this.displacementMap=a.displacementMap;this.displacementScale=a.displacementScale;this.displacementBias=a.displacementBias;this.roughnessMap=a.roughnessMap;this.metalnessMap= +a.metalnessMap;this.alphaMap=a.alphaMap;this.envMap=a.envMap;this.envMapIntensity=a.envMapIntensity;this.refractionRatio=a.refractionRatio;this.wireframe=a.wireframe;this.wireframeLinewidth=a.wireframeLinewidth;this.wireframeLinecap=a.wireframeLinecap;this.wireframeLinejoin=a.wireframeLinejoin;this.skinning=a.skinning;this.morphTargets=a.morphTargets;this.morphNormals=a.morphNormals;return this};xb.prototype=Object.create(Pa.prototype);xb.prototype.constructor=xb;xb.prototype.isMeshPhysicalMaterial= +!0;xb.prototype.copy=function(a){Pa.prototype.copy.call(this,a);this.defines={PHYSICAL:""};this.reflectivity=a.reflectivity;this.clearCoat=a.clearCoat;this.clearCoatRoughness=a.clearCoatRoughness;return this};Fa.prototype=Object.create(J.prototype);Fa.prototype.constructor=Fa;Fa.prototype.isMeshPhongMaterial=!0;Fa.prototype.copy=function(a){J.prototype.copy.call(this,a);this.color.copy(a.color);this.specular.copy(a.specular);this.shininess=a.shininess;this.map=a.map;this.lightMap=a.lightMap;this.lightMapIntensity= +a.lightMapIntensity;this.aoMap=a.aoMap;this.aoMapIntensity=a.aoMapIntensity;this.emissive.copy(a.emissive);this.emissiveMap=a.emissiveMap;this.emissiveIntensity=a.emissiveIntensity;this.bumpMap=a.bumpMap;this.bumpScale=a.bumpScale;this.normalMap=a.normalMap;this.normalMapType=a.normalMapType;this.normalScale.copy(a.normalScale);this.displacementMap=a.displacementMap;this.displacementScale=a.displacementScale;this.displacementBias=a.displacementBias;this.specularMap=a.specularMap;this.alphaMap=a.alphaMap; +this.envMap=a.envMap;this.combine=a.combine;this.reflectivity=a.reflectivity;this.refractionRatio=a.refractionRatio;this.wireframe=a.wireframe;this.wireframeLinewidth=a.wireframeLinewidth;this.wireframeLinecap=a.wireframeLinecap;this.wireframeLinejoin=a.wireframeLinejoin;this.skinning=a.skinning;this.morphTargets=a.morphTargets;this.morphNormals=a.morphNormals;return this};yb.prototype=Object.create(Fa.prototype);yb.prototype.constructor=yb;yb.prototype.isMeshToonMaterial=!0;yb.prototype.copy=function(a){Fa.prototype.copy.call(this, +a);this.gradientMap=a.gradientMap;return this};zb.prototype=Object.create(J.prototype);zb.prototype.constructor=zb;zb.prototype.isMeshNormalMaterial=!0;zb.prototype.copy=function(a){J.prototype.copy.call(this,a);this.bumpMap=a.bumpMap;this.bumpScale=a.bumpScale;this.normalMap=a.normalMap;this.normalMapType=a.normalMapType;this.normalScale.copy(a.normalScale);this.displacementMap=a.displacementMap;this.displacementScale=a.displacementScale;this.displacementBias=a.displacementBias;this.wireframe=a.wireframe; +this.wireframeLinewidth=a.wireframeLinewidth;this.skinning=a.skinning;this.morphTargets=a.morphTargets;this.morphNormals=a.morphNormals;return this};Ab.prototype=Object.create(J.prototype);Ab.prototype.constructor=Ab;Ab.prototype.isMeshLambertMaterial=!0;Ab.prototype.copy=function(a){J.prototype.copy.call(this,a);this.color.copy(a.color);this.map=a.map;this.lightMap=a.lightMap;this.lightMapIntensity=a.lightMapIntensity;this.aoMap=a.aoMap;this.aoMapIntensity=a.aoMapIntensity;this.emissive.copy(a.emissive); +this.emissiveMap=a.emissiveMap;this.emissiveIntensity=a.emissiveIntensity;this.specularMap=a.specularMap;this.alphaMap=a.alphaMap;this.envMap=a.envMap;this.combine=a.combine;this.reflectivity=a.reflectivity;this.refractionRatio=a.refractionRatio;this.wireframe=a.wireframe;this.wireframeLinewidth=a.wireframeLinewidth;this.wireframeLinecap=a.wireframeLinecap;this.wireframeLinejoin=a.wireframeLinejoin;this.skinning=a.skinning;this.morphTargets=a.morphTargets;this.morphNormals=a.morphNormals;return this}; +Bb.prototype=Object.create(Y.prototype);Bb.prototype.constructor=Bb;Bb.prototype.isLineDashedMaterial=!0;Bb.prototype.copy=function(a){Y.prototype.copy.call(this,a);this.scale=a.scale;this.dashSize=a.dashSize;this.gapSize=a.gapSize;return this};var Vg=Object.freeze({ShadowMaterial:wb,SpriteMaterial:cb,RawShaderMaterial:cc,ShaderMaterial:ta,PointsMaterial:Ea,MeshPhysicalMaterial:xb,MeshStandardMaterial:Pa,MeshPhongMaterial:Fa,MeshToonMaterial:yb,MeshNormalMaterial:zb,MeshLambertMaterial:Ab,MeshDepthMaterial:$a, +MeshDistanceMaterial:ab,MeshBasicMaterial:da,LineDashedMaterial:Bb,LineBasicMaterial:Y,Material:J}),Fb={enabled:!1,files:{},add:function(a,b){!1!==this.enabled&&(this.files[a]=b)},get:function(a){if(!1!==this.enabled)return this.files[a]},remove:function(a){delete this.files[a]},clear:function(){this.files={}}},ka=new ce,Ya={};Object.assign(Ga.prototype,{load:function(a,b,c,d){void 0===a&&(a="");void 0!==this.path&&(a=this.path+a);a=this.manager.resolveURL(a);var e=this,f=Fb.get(a);if(void 0!==f)return e.manager.itemStart(a), +setTimeout(function(){b&&b(f);e.manager.itemEnd(a)},0),f;if(void 0!==Ya[a])Ya[a].push({onLoad:b,onProgress:c,onError:d});else{var g=a.match(/^data:(.*?)(;base64)?,(.*)$/);if(g){c=g[1];var h=!!g[2];g=g[3];g=window.decodeURIComponent(g);h&&(g=window.atob(g));try{var k=(this.responseType||"").toLowerCase();switch(k){case "arraybuffer":case "blob":var m=new Uint8Array(g.length);for(h=0;hg)e=a+1;else if(0b&&(b=0);1Number.EPSILON&&(g.normalize(),c=Math.acos(H.clamp(d[k-1].dot(d[k]),-1,1)),e[k].applyMatrix4(h.makeRotationAxis(g,c))),f[k].crossVectors(d[k],e[k]);if(!0===b)for(c=Math.acos(H.clamp(e[0].dot(e[a]),-1,1)),c/=a,0d;)d+=c;for(;d>c;)d-=c;de&&(e=1);1E-4>d&&(d=e);1E-4>k&&(k=e);Ae.initNonuniformCatmullRom(f.x,g.x,h.x,c.x,d,e,k);Be.initNonuniformCatmullRom(f.y,g.y,h.y,c.y,d,e,k);Ce.initNonuniformCatmullRom(f.z,g.z,h.z,c.z,d,e,k)}else"catmullrom"===this.curveType&&(Ae.initCatmullRom(f.x,g.x,h.x,c.x,this.tension),Be.initCatmullRom(f.y,g.y,h.y,c.y,this.tension),Ce.initCatmullRom(f.z,g.z,h.z,c.z,this.tension));b.set(Ae.calc(a), +Be.calc(a),Ce.calc(a));return b};ca.prototype.copy=function(a){L.prototype.copy.call(this,a);this.points=[];for(var b=0,c=a.points.length;bc.length-2?c.length-1:a+1];c=c[a>c.length-3?c.length-1:a+2];b.set(lf(d,e.x,f.x,g.x,c.x),lf(d,e.y,f.y,g.y,c.y));return b};Ka.prototype.copy=function(a){L.prototype.copy.call(this,a);this.points=[];for(var b=0,c=a.points.length;b=b)return b=c[a]-b,a=this.curves[a],c=a.getLength(),a.getPointAt(0===c?0:1-b/c);a++}return null},getLength:function(){var a=this.getCurveLengths(); +return a[a.length-1]},updateArcLengths:function(){this.needsUpdate=!0;this.cacheLengths=null;this.getCurveLengths()},getCurveLengths:function(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;for(var a=[],b=0,c=0,d=this.curves.length;c=e)break a;else{f=b[1];a=e)break b}d=c;c= +0}}for(;c>>1,ab;)--f;++f;if(0!==e||f!==d)e>=f&&(f=Math.max(f,1),e=f-1),a=this.getValueSize(),this.times=ia.arraySlice(c,e,f),this.values=ia.arraySlice(this.values,e*a,f*a);return this},validate:function(){var a= +!0,b=this.getValueSize();0!==b-Math.floor(b)&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),a=!1);var c=this.times;b=this.values;var d=c.length;0===d&&(console.error("THREE.KeyframeTrack: Track is empty.",this),a=!1);for(var e=null,f=0;f!==d;f++){var g=c[f];if("number"===typeof g&&isNaN(g)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,f,g);a=!1;break}if(null!==e&&e>g){console.error("THREE.KeyframeTrack: Out of order keys.",this,f,g,e);a=!1;break}e= +g}if(void 0!==b&&ia.isTypedArray(b))for(f=0,c=b.length;f!==c;++f)if(d=b[f],isNaN(d)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,f,d);a=!1;break}return a},optimize:function(){for(var a=this.times,b=this.values,c=this.getValueSize(),d=2302===this.getInterpolation(),e=1,f=a.length-1,g=1;gm.opacity&&(m.transparent=!0);d.setTextures(k);return d.parse(m)}}()});var De={decodeText:function(a){if("undefined"!==typeof TextDecoder)return(new TextDecoder).decode(a);for(var b="",c=0,d=a.length;cf;f++){var E=h[u++];var A=B[2*E];E=B[2*E+1];A=new z(A,E);2!==f&&c.faceVertexUvs[e][v].push(A);0!==f&&c.faceVertexUvs[e][v+1].push(A)}}y&&(y=3*h[u++],r.normal.set(m[y++],m[y++],m[y]),w.normal.copy(r.normal));if(x)for(e=0;4>e;e++)y=3*h[u++],x=new p(m[y++], +m[y++],m[y]),2!==e&&r.vertexNormals.push(x),0!==e&&w.vertexNormals.push(x);n&&(n=h[u++],n=l[n],r.color.setHex(n),w.color.setHex(n));if(k)for(e=0;4>e;e++)n=h[u++],n=l[n],2!==e&&r.vertexColors.push(new G(n)),0!==e&&w.vertexColors.push(new G(n));c.faces.push(r);c.faces.push(w)}else{r=new Ta;r.a=h[u++];r.b=h[u++];r.c=h[u++];v&&(v=h[u++],r.materialIndex=v);v=c.faces.length;if(e)for(e=0;ef;f++)E=h[u++],A=B[2*E],E=B[2*E+1],A=new z(A,E),c.faceVertexUvs[e][v].push(A); +y&&(y=3*h[u++],r.normal.set(m[y++],m[y++],m[y]));if(x)for(e=0;3>e;e++)y=3*h[u++],x=new p(m[y++],m[y++],m[y]),r.vertexNormals.push(x);n&&(n=h[u++],r.color.setHex(l[n]));if(k)for(e=0;3>e;e++)n=h[u++],r.vertexColors.push(new G(l[n]));c.faces.push(r)}}d=a;u=void 0!==d.influencesPerVertex?d.influencesPerVertex:2;if(d.skinWeights)for(g=0,h=d.skinWeights.length;g +Number.EPSILON){if(0>m&&(g=b[f],k=-k,h=b[e],m=-m),!(a.yh.y))if(a.y===g.y){if(a.x===g.x)return!0}else{e=m*(a.x-g.x)-k*(a.y-g.y);if(0===e)return!0;0>e||(d=!d)}}else if(a.y===g.y&&(h.x<=a.x&&a.x<=g.x||g.x<=a.x&&a.x<=h.x))return!0}return d}var e=Va.isClockWise,f=this.subPaths;if(0===f.length)return[];if(!0===b)return c(f);b=[];if(1===f.length){var g=f[0];var h=new db;h.curves=g.curves;b.push(h);return b}var k=!e(f[0].getPoints());k=a?!k:k;h=[];var m=[],l=[],n=0;m[n]=void 0;l[n]=[];for(var p= +0,u=f.length;pd&&this._mixBufferRegion(c,a,3*b,1-d,b);d=b;for(var f=b+b;d!==f;++d)if(c[d]!==c[d+b]){e.setValue(c,a);break}},saveOriginalState:function(){var a=this.buffer,b=this.valueSize,c=3*b;this.binding.getValue(a, +c);for(var d=b;d!==c;++d)a[d]=a[c+d%b];this.cumulativeWeight=0},restoreOriginalState:function(){this.binding.setValue(this.buffer,3*this.valueSize)},_select:function(a,b,c,d,e){if(.5<=d)for(d=0;d!==e;++d)a[b+d]=a[c+d]},_slerp:function(a,b,c,d){fa.slerpFlat(a,b,a,b,a,c,d)},_lerp:function(a,b,c,d,e){for(var f=1-d,g=0;g!==e;++g){var h=b+g;a[h]=a[h]*f+a[c+g]*d}}});Object.assign(pf.prototype,{getValue:function(a,b){this.bind();var c=this._bindings[this._targetGroup.nCachedObjects_];void 0!==c&&c.getValue(a, +b)},setValue:function(a,b){for(var c=this._bindings,d=this._targetGroup.nCachedObjects_,e=c.length;d!==e;++d)c[d].setValue(a,b)},bind:function(){for(var a=this._bindings,b=this._targetGroup.nCachedObjects_,c=a.length;b!==c;++b)a[b].bind()},unbind:function(){for(var a=this._bindings,b=this._targetGroup.nCachedObjects_,c=a.length;b!==c;++b)a[b].unbind()}});Object.assign(pa,{Composite:pf,create:function(a,b,c){return a&&a.isAnimationObjectGroup?new pa.Composite(a,b,c):new pa(a,b,c)},sanitizeNodeName:function(){var a= +/[\[\]\.:\/]/g;return function(b){return b.replace(/\s/g,"_").replace(a,"")}}(),parseTrackName:function(){var a="[^"+"\\[\\]\\.:\\/".replace("\\.","")+"]",b=/((?:WC+[\/:])*)/.source.replace("WC","[^\\[\\]\\.:\\/]");a=/(WCOD+)?/.source.replace("WCOD",a);var c=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC","[^\\[\\]\\.:\\/]"),d=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC","[^\\[\\]\\.:\\/]"),e=new RegExp("^"+b+a+c+d+"$"),f=["material","materials","bones"];return function(a){var b=e.exec(a);if(!b)throw Error("PropertyBinding: Cannot parse trackName: "+ +a);b={nodeName:b[2],objectName:b[3],objectIndex:b[4],propertyName:b[5],propertyIndex:b[6]};var c=b.nodeName&&b.nodeName.lastIndexOf(".");if(void 0!==c&&-1!==c){var d=b.nodeName.substring(c+1);-1!==f.indexOf(d)&&(b.nodeName=b.nodeName.substring(0,c),b.objectName=d)}if(null===b.propertyName||0===b.propertyName.length)throw Error("PropertyBinding: can not parse propertyName from trackName: "+a);return b}}(),findNode:function(a,b){if(!b||""===b||"root"===b||"."===b||-1===b||b===a.name||b===a.uuid)return a; +if(a.skeleton){var c=a.skeleton.getBoneByName(b);if(void 0!==c)return c}if(a.children){var d=function(a){for(var c=0;c=b){var p=b++,n=a[p];c[n.uuid]=l;a[l]=n;c[k]=p;a[p]=h;h=0;for(k=e;h!==k;++h){n=d[h];var t=n[l];n[l]=n[p];n[p]=t}}}this.nCachedObjects_=b},uncache:function(){for(var a=this._objects,b=a.length,c=this.nCachedObjects_,d=this._indicesByUUID,e=this._bindings,f=e.length,g=0,h=arguments.length;g!==h;++g){var k= +arguments[g].uuid,l=d[k];if(void 0!==l)if(delete d[k],lb||0===c)return;this._startTime=null;b*=c}b*=this._updateTimeScale(a);c=this._updateTime(b);a=this._updateWeight(a);if(0c.parameterPositions[1]&&(this.stopFading(),0===d&&(this.enabled=!1))}}return this._effectiveWeight=b},_updateTimeScale:function(a){var b=0;if(!this.paused){b=this.timeScale;var c=this._timeScaleInterpolant;if(null!==c){var d=c.evaluate(a)[0];b*=d;a>c.parameterPositions[1]&&(this.stopWarping(),0===b?this.paused=!0:this.timeScale=b)}}return this._effectiveTimeScale=b},_updateTime:function(a){var b=this.time+a,c=this._clip.duration,d=this.loop,e=this._loopCount,f=2202===d;if(0===a)return-1=== +e?b:f&&1===(e&1)?c-b:b;if(2200===d)a:{if(-1===e&&(this._loopCount=0,this._setEndings(!0,!0,!1)),b>=c)b=c;else if(0>b)b=0;else break a;this.clampWhenFinished?this.paused=!0:this.enabled=!1;this._mixer.dispatchEvent({type:"finished",action:this,direction:0>a?-1:1})}else{-1===e&&(0<=a?(e=0,this._setEndings(!0,0===this.repetitions,f)):this._setEndings(0===this.repetitions,!0,f));if(b>=c||0>b){d=Math.floor(b/c);b-=c*d;e+=Math.abs(d);var g=this.repetitions-e;0>=g?(this.clampWhenFinished?this.paused=!0: +this.enabled=!1,b=0a,this._setEndings(a,!a,f)):this._setEndings(!1,!1,f),this._loopCount=e,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:d}))}if(f&&1===(e&1))return this.time=b,c-b}return this.time=b},_setEndings:function(a,b,c){var d=this._interpolantSettings;c?(d.endingStart=2401,d.endingEnd=2401):(d.endingStart=a?this.zeroSlopeAtStart?2401:2400:2402,d.endingEnd=b?this.zeroSlopeAtEnd?2401: +2400:2402)},_scheduleFading:function(a,b,c){var d=this._mixer,e=d.time,f=this._weightInterpolant;null===f&&(this._weightInterpolant=f=d._lendControlInterpolant());d=f.parameterPositions;f=f.sampleValues;d[0]=e;f[0]=b;d[1]=e+a;f[1]=c;return this}});re.prototype=Object.assign(Object.create(ya.prototype),{constructor:re,_bindAction:function(a,b){var c=a._localRoot||this._root,d=a._clip.tracks,e=d.length,f=a._propertyBindings;a=a._interpolants;var g=c.uuid,h=this._bindingsByRootAndName,k=h[g];void 0=== +k&&(k={},h[g]=k);for(h=0;h!==e;++h){var l=d[h],p=l.name,n=k[p];if(void 0===n){n=f[h];if(void 0!==n){null===n._cacheIndex&&(++n.referenceCount,this._addInactiveBinding(n,g,p));continue}n=new qe(pa.create(c,p,b&&b._propertyBindings[h].binding.parsedPath),l.ValueTypeName,l.getValueSize());++n.referenceCount;this._addInactiveBinding(n,g,p)}f[h]=n;a[h].resultBuffer=n.buffer}},_activateAction:function(a){if(!this._isActiveAction(a)){if(null===a._cacheIndex){var b=(a._localRoot||this._root).uuid,c=a._clip.uuid, +d=this._actionsByClip[c];this._bindAction(a,d&&d.knownActions[0]);this._addInactiveAction(a,c,b)}b=a._propertyBindings;c=0;for(d=b.length;c!==d;++c){var e=b[c];0===e.useCount++&&(this._lendBinding(e),e.saveOriginalState())}this._lendAction(a)}},_deactivateAction:function(a){if(this._isActiveAction(a)){for(var b=a._propertyBindings,c=0,d=b.length;c!==d;++c){var e=b[c];0===--e.useCount&&(e.restoreOriginalState(),this._takeBackBinding(e))}this._takeBackAction(a)}},_initMemoryManager:function(){this._actions= +[];this._nActiveActions=0;this._actionsByClip={};this._bindings=[];this._nActiveBindings=0;this._bindingsByRootAndName={};this._controlInterpolants=[];this._nActiveControlInterpolants=0;var a=this;this.stats={actions:{get total(){return a._actions.length},get inUse(){return a._nActiveActions}},bindings:{get total(){return a._bindings.length},get inUse(){return a._nActiveBindings}},controlInterpolants:{get total(){return a._controlInterpolants.length},get inUse(){return a._nActiveControlInterpolants}}}}, +_isActiveAction:function(a){a=a._cacheIndex;return null!==a&&athis.max.x||a.ythis.max.y?!1:!0},containsBox:function(a){return this.min.x<=a.min.x&&a.max.x<=this.max.x&&this.min.y<=a.min.y&&a.max.y<=this.max.y},getParameter:function(a, +b){void 0===b&&(console.warn("THREE.Box2: .getParameter() target is now required"),b=new z);return b.set((a.x-this.min.x)/(this.max.x-this.min.x),(a.y-this.min.y)/(this.max.y-this.min.y))},intersectsBox:function(a){return a.max.xthis.max.x||a.max.ythis.max.y?!1:!0},clampPoint:function(a,b){void 0===b&&(console.warn("THREE.Box2: .clampPoint() target is now required"),b=new z);return b.copy(a).clamp(this.min,this.max)},distanceToPoint:function(){var a=new z; +return function(b){return a.copy(b).clamp(this.min,this.max).sub(b).length()}}(),intersect:function(a){this.min.max(a.min);this.max.min(a.max);return this},union:function(a){this.min.min(a.min);this.max.max(a.max);return this},translate:function(a){this.min.add(a);this.max.add(a);return this},equals:function(a){return a.min.equals(this.min)&&a.max.equals(this.max)}});Object.assign(xe.prototype,{set:function(a,b){this.start.copy(a);this.end.copy(b);return this},clone:function(){return(new this.constructor).copy(this)}, +copy:function(a){this.start.copy(a.start);this.end.copy(a.end);return this},getCenter:function(a){void 0===a&&(console.warn("THREE.Line3: .getCenter() target is now required"),a=new p);return a.addVectors(this.start,this.end).multiplyScalar(.5)},delta:function(a){void 0===a&&(console.warn("THREE.Line3: .delta() target is now required"),a=new p);return a.subVectors(this.end,this.start)},distanceSq:function(){return this.start.distanceToSquared(this.end)},distance:function(){return this.start.distanceTo(this.end)}, +at:function(a,b){void 0===b&&(console.warn("THREE.Line3: .at() target is now required"),b=new p);return this.delta(b).multiplyScalar(a).add(this.start)},closestPointToPointParameter:function(){var a=new p,b=new p;return function(c,d){a.subVectors(c,this.start);b.subVectors(this.end,this.start);c=b.dot(b);c=b.dot(a)/c;d&&(c=H.clamp(c,0,1));return c}}(),closestPointToPoint:function(a,b,c){a=this.closestPointToPointParameter(a,b);void 0===c&&(console.warn("THREE.Line3: .closestPointToPoint() target is now required"), +c=new p);return this.delta(c).multiplyScalar(a).add(this.start)},applyMatrix4:function(a){this.start.applyMatrix4(a);this.end.applyMatrix4(a);return this},equals:function(a){return a.start.equals(this.start)&&a.end.equals(this.end)}});ed.prototype=Object.create(D.prototype);ed.prototype.constructor=ed;ed.prototype.isImmediateRenderObject=!0;fd.prototype=Object.create(W.prototype);fd.prototype.constructor=fd;fd.prototype.update=function(){var a=new p,b=new p,c=new ra;return function(){var d=["a","b", +"c"];this.object.updateMatrixWorld(!0);c.getNormalMatrix(this.object.matrixWorld);var e=this.object.matrixWorld,f=this.geometry.attributes.position,g=this.object.geometry;if(g&&g.isGeometry)for(var h=g.vertices,k=g.faces,l=g=0,p=k.length;lMath.abs(b)&&(b=1E-8);this.scale.set(.5*this.size,.5*this.size,b);this.children[0].material.side=0>b?1:0;this.lookAt(this.plane.normal);D.prototype.updateMatrixWorld.call(this,a)};var Nd,ye;Eb.prototype=Object.create(D.prototype);Eb.prototype.constructor=Eb;Eb.prototype.setDirection=function(){var a=new p,b;return function(c){.99999c.y?this.quaternion.set(1,0,0,0):(a.set(c.z,0,-c.x).normalize(),b=Math.acos(c.y),this.quaternion.setFromAxisAngle(a,b))}}();Eb.prototype.setLength=function(a,b,c){void 0===b&&(b=.2*a);void 0===c&&(c=.2*b);this.line.scale.set(1,Math.max(0,a-b),1);this.line.updateMatrix();this.cone.scale.set(c,b,c);this.cone.position.y=a;this.cone.updateMatrix()};Eb.prototype.setColor=function(a){this.line.material.color.copy(a);this.cone.material.color.copy(a)};ld.prototype=Object.create(W.prototype); +ld.prototype.constructor=ld;L.create=function(a,b){console.log("THREE.Curve.create() has been deprecated");a.prototype=Object.create(L.prototype);a.prototype.constructor=a;a.prototype.getPoint=b;return a};Object.assign(Xa.prototype,{createPointsGeometry:function(a){console.warn("THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");a=this.getPoints(a);return this.createGeometry(a)},createSpacedPointsGeometry:function(a){console.warn("THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead."); +a=this.getSpacedPoints(a);return this.createGeometry(a)},createGeometry:function(a){console.warn("THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");for(var b=new R,c=0,d=a.length;ct[Math.floor(Math.random()*t.length)];function r(t,e){return null==t&&(t=0),null==e&&(e=1),t+Math.random()*(e-t)}function h(t,e){return null==t&&(t=0),null==e&&(e=1),Math.floor(t+Math.random()*(e-t+1))}const a=t=>document.querySelector(t),l=t=>"number"==typeof t?"#"+("00000"+t.toString(16)).slice(-6):t,c=(t,e=1)=>{const i=l(t),s=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(i),o=s?{r:parseInt(s[1],16),g:parseInt(s[2],16),b:parseInt(s[3],16)}:null;return"rgba("+o.r+","+o.g+","+o.b+","+e+")"},u=t=>.299*t.r+.587*t.g+.114*t.b},1:function(t,e,i){"use strict";i.d(e,"a",(function(){return r}));var s=i(0);const o="object"==typeof window;let n=o&&window.THREE||{};o&&!window.VANTA&&(window.VANTA={});const r=o&&window.VANTA||{};r.register=(t,e)=>r[t]=t=>new e(t),r.version="0.5.15";const h=function(){return Array.prototype.unshift.call(arguments,"[VANTA]"),console.error.apply(this,arguments)};r.VantaBase=class{constructor(t={}){if(!o)return!1;r.current=this,this.windowMouseMoveWrapper=this.windowMouseMoveWrapper.bind(this),this.windowTouchWrapper=this.windowTouchWrapper.bind(this),this.resize=this.resize.bind(this),this.animationLoop=this.animationLoop.bind(this),this.restart=this.restart.bind(this);const e="function"==typeof this.getDefaultOptions?this.getDefaultOptions():this.defaultOptions;if(this.options=Object(s.c)({mouseControls:!0,touchControls:!0,minHeight:200,minWidth:200,scale:1,scaleMobile:1},e),(t instanceof HTMLElement||"string"==typeof t)&&(t={el:t}),Object(s.c)(this.options,t),this.options.THREE&&(n=this.options.THREE),this.el=this.options.el,null==this.el)h('Instance needs "el" param!');else if(!(this.options.el instanceof HTMLElement)){const t=this.el;if(this.el=Object(s.f)(t),!this.el)return void h("Cannot find element",t)}this.prepareEl(),this.initThree(),this.setSize();try{this.init()}catch(t){return h("Init error",t),this.renderer&&this.renderer.domElement&&this.el.removeChild(this.renderer.domElement),void(this.options.backgroundColor&&(console.log("[VANTA] Falling back to backgroundColor"),this.el.style.background=Object(s.a)(this.options.backgroundColor)))}this.initMouse(),this.resize(),this.animationLoop();const i=window.addEventListener;i("resize",this.resize),window.requestAnimationFrame(this.resize),this.options.mouseControls&&(i("scroll",this.windowMouseMoveWrapper),i("mousemove",this.windowMouseMoveWrapper)),this.options.touchControls&&(i("touchstart",this.windowTouchWrapper),i("touchmove",this.windowTouchWrapper))}setOptions(t={}){Object(s.c)(this.options,t)}prepareEl(){let t,e;if("undefined"!=typeof Node&&Node.TEXT_NODE)for(t=0;t=0&&o>=0&&s<=i.width&&o<=i.height&&(this.mouseX=s,this.mouseY=o,this.options.mouseEase||this.triggerMouseMove(s,o))}windowTouchWrapper(t){if(1===t.touches.length){const e=this.getCanvasElement();if(!e)return!1;const i=e.getBoundingClientRect(),s=t.touches[0].clientX-i.left,o=t.touches[0].clientY-i.top;s>=0&&o>=0&&s<=i.width&&o<=i.height&&(this.mouseX=s,this.mouseY=o,this.options.mouseEase||this.triggerMouseMove(s,o))}}triggerMouseMove(t,e){this.uniforms&&(this.uniforms.iMouse.value.x=t/this.scale,this.uniforms.iMouse.value.y=e/this.scale);const i=t/this.width,s=e/this.height;"function"==typeof this.onMouseMove&&this.onMouseMove(i,s)}setSize(){this.scale||(this.scale=1),Object(s.e)()&&this.options.scaleMobile?this.scale=this.options.scaleMobile:this.options.scale&&(this.scale=this.options.scale),this.width=Math.max(this.el.offsetWidth,this.options.minWidth),this.height=Math.max(this.el.offsetHeight,this.options.minHeight)}initMouse(){(!this.mouseX&&!this.mouseY||this.mouseX===this.options.minWidth/2&&this.mouseY===this.options.minHeight/2)&&(this.mouseX=this.width/2,this.mouseY=this.height/2,this.triggerMouseMove(this.mouseX,this.mouseY))}resize(){this.setSize(),this.camera&&(this.camera.aspect=this.width/this.height,"function"==typeof this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix()),this.renderer&&(this.renderer.setSize(this.width,this.height),this.renderer.setPixelRatio(window.devicePixelRatio/this.scale)),"function"==typeof this.onResize&&this.onResize()}isOnScreen(){const t=this.el.offsetHeight,e=this.el.getBoundingClientRect(),i=window.pageYOffset||(document.documentElement||document.body.parentNode||document.body).scrollTop,s=e.top+i;return s-window.innerHeight<=i&&i<=s+t}animationLoop(){return this.t||(this.t=0),this.t+=1,this.t2||(this.t2=0),this.t2+=this.options.speed||1,this.uniforms&&(this.uniforms.iTime.value=.016667*this.t2),this.options.mouseEase&&(this.mouseEaseX=this.mouseEaseX||this.mouseX||0,this.mouseEaseY=this.mouseEaseY||this.mouseY||0,Math.abs(this.mouseEaseX-this.mouseX)+Math.abs(this.mouseEaseY-this.mouseY)>.1&&(this.mouseEaseX+=.05*(this.mouseX-this.mouseEaseX),this.mouseEaseY+=.05*(this.mouseY-this.mouseEaseY),this.triggerMouseMove(this.mouseEaseX,this.mouseEaseY))),(this.isOnScreen()||this.options.forceAnimate)&&("function"==typeof this.onUpdate&&this.onUpdate(),this.scene&&this.camera&&(this.renderer.render(this.scene,this.camera),this.renderer.setClearColor(this.options.backgroundColor,this.options.backgroundAlpha)),this.fps&&this.fps.update&&this.fps.update(),"function"==typeof this.afterRender&&this.afterRender()),this.req=window.requestAnimationFrame(this.animationLoop)}restart(){if(this.scene)for(;this.scene.children.length;)this.scene.remove(this.scene.children[0]);"function"==typeof this.onRestart&&this.onRestart(),this.init()}init(){"function"==typeof this.onInit&&this.onInit()}destroy(){"function"==typeof this.onDestroy&&this.onDestroy();const t=window.removeEventListener;t("touchstart",this.windowTouchWrapper),t("touchmove",this.windowTouchWrapper),t("scroll",this.windowMouseMoveWrapper),t("mousemove",this.windowMouseMoveWrapper),t("resize",this.resize),window.cancelAnimationFrame(this.req),this.renderer&&(this.renderer.domElement&&this.el.removeChild(this.renderer.domElement),this.renderer=null,this.scene=null)}},e.b=r.VantaBase},12:function(t,e,i){"use strict";i.r(e);var s=i(1),o=i(0);let n="object"==typeof window&&window.THREE;class r extends s.b{static initClass(){this.prototype.defaultOptions={color:16727937,backgroundColor:2299196,points:10,maxDistance:20,spacing:15,showDots:!0}}constructor(t){n=t.THREE||n,super(t)}genPoint(t,e,i){let s;if(this.points||(this.points=[]),this.options.showDots){const t=new n.SphereGeometry(.25,12,12),e=new n.MeshLambertMaterial({color:this.options.color});s=new n.Mesh(t,e)}else s=new n.Object3D;return this.cont.add(s),s.ox=t,s.oy=e,s.oz=i,s.position.set(t,e,i),s.r=Object(o.h)(-2,2),this.points.push(s)}onInit(){this.cont=new n.Group,this.cont.position.set(0,0,0),this.scene.add(this.cont);let t=this.options.points,{spacing:e}=this.options;Object(o.e)()&&(t=~~(.75*t),e=~~(.65*e));const i=t*t*2;this.linePositions=new Float32Array(i*i*3),this.lineColors=new Float32Array(i*i*3);const s=Object(o.d)(new n.Color(this.options.color)),r=Object(o.d)(new n.Color(this.options.backgroundColor));this.blending=s>r?"additive":"subtractive";const h=new n.BufferGeometry;h.addAttribute("position",new n.BufferAttribute(this.linePositions,3).setDynamic(!0)),h.addAttribute("color",new n.BufferAttribute(this.lineColors,3).setDynamic(!0)),h.computeBoundingSphere(),h.setDrawRange(0,0);const a=new n.LineBasicMaterial({vertexColors:n.VertexColors,blending:"additive"===this.blending?n.AdditiveBlending:null,transparent:!0});this.linesMesh=new n.LineSegments(h,a),this.cont.add(this.linesMesh);for(let i=0;i<=t;i++)for(let s=0;s<=t;s++){const n=Object(o.g)(-3,3),r=(i-t/2)*e+Object(o.g)(-5,5);let h=(s-t/2)*e+Object(o.g)(-5,5);i%2&&(h+=.5*e),this.genPoint(r,n-Object(o.g)(5,15),h),this.genPoint(r+Object(o.g)(-5,5),n+Object(o.g)(5,15),h+Object(o.g)(-5,5))}this.camera=new n.PerspectiveCamera(25,this.width/this.height,.01,1e4),this.camera.position.set(50,100,150),this.scene.add(this.camera);const l=new n.AmbientLight(16777215,.75);return this.scene.add(l),this.spot=new n.SpotLight(16777215,1),this.spot.position.set(0,200,0),this.spot.distance=400,this.spot.target=this.cont,this.scene.add(this.spot)}onUpdate(){let t;null!=this.helper&&this.helper.update(),null!=this.controls&&this.controls.update();const e=this.camera;Math.abs(e.tx-e.position.x)>.01&&(t=e.tx-e.position.x,e.position.x+=.02*t),Math.abs(e.ty-e.position.y)>.01&&(t=e.ty-e.position.y,e.position.y+=.02*t),e.lookAt(new n.Vector3(0,0,0));let i=0,s=0,o=0;const r=new n.Color(this.options.backgroundColor),h=new n.Color(this.options.color),a=h.clone().sub(r);this.rayCaster&&this.rayCaster.setFromCamera(new n.Vector2(this.rcMouseX,this.rcMouseY),this.camera);for(let t=0;t