From 9fa2981834188e15203b3e1f35949942af41a20e Mon Sep 17 00:00:00 2001 From: Mark Slee Date: Wed, 13 Nov 2013 02:58:24 -0800 Subject: [PATCH] Update to new GLucose/HeronLX with transform/projection in HeronLX --- AlexGreen.pde | 4 ++-- JR.pde | 18 +++++++++--------- JackStahl.pde | 12 ++++++------ TestPatterns.pde | 6 +++--- _Internals.pde | 2 +- code/GLucose.jar | Bin 31139 -> 26737 bytes code/HeronLX.jar | Bin 88036 -> 92818 bytes 7 files changed, 21 insertions(+), 21 deletions(-) diff --git a/AlexGreen.pde b/AlexGreen.pde index b89aaa2..e8b55ce 100644 --- a/AlexGreen.pde +++ b/AlexGreen.pde @@ -1,6 +1,6 @@ class SineSphere extends SCPattern { private SinLFO yrot = new SinLFO(0, TWO_PI, 2000); - public final Projection sinespin; + public final LXProjection sinespin; float modelrad = sqrt((model.xMax)*(model.xMax) + (model.yMax)*(model.yMax) + (model.zMax)*(model.zMax)); Pick Sshape; public final PVector P = new PVector(); @@ -99,7 +99,7 @@ final Sphery[] spherys; SineSphere(GLucose glucose) { super(glucose); - sinespin = new Projection(model); + sinespin = new LXProjection(model); addModulator(yrot).trigger(); //Sshape = addPick("Shape", , 1); spherys = new Sphery[] { diff --git a/JR.pde b/JR.pde index cb8ba63..ba9498b 100644 --- a/JR.pde +++ b/JR.pde @@ -6,7 +6,7 @@ class Gimbal extends SCPattern { private final int MAXIMUM_BEATS_PER_REVOLUTION = 100; private boolean first_run = true; - private final Projection projection; + private final LXProjection projection; private final BasicParameter beatsPerRevolutionParam = new BasicParameter("SLOW", 20./MAXIMUM_BEATS_PER_REVOLUTION); private final BasicParameter hueDeltaParam = new BasicParameter("HUED", 60./360); private final BasicParameter fadeFromCoreParam = new BasicParameter("FADE", 1); @@ -21,7 +21,7 @@ class Gimbal extends SCPattern { Gimbal(GLucose glucose) { super(glucose); - projection = new Projection(model); + projection = new LXProjection(model); addParameter(beatsPerRevolutionParam); addParameter(hueDeltaParam); addParameter(fadeFromCoreParam); @@ -79,7 +79,7 @@ class Gimbal extends SCPattern { // Translate so the center of the car is the origin .center(); - for (Coord c : projection) { + for (LXVector c : projection) { //if (first_run) println(c.x + "," + c.y + "," + c.z); rotate3d(c, a, 0, 0); @@ -109,7 +109,7 @@ class Gimbal extends SCPattern { this.girth = girth; } - public color colorFor(Coord c) { + public color colorFor(LXVector c) { float theta = atan2(c.y, c.x); float nearest_circle_x = cos(theta) * radius; float nearest_circle_y = sin(theta) * radius; @@ -135,7 +135,7 @@ class Gimbal extends SCPattern { class Zebra extends SCPattern { - private final Projection projection; + private final LXProjection projection; SinLFO angleM = new SinLFO(0, PI * 2, 30000); /* @@ -146,12 +146,12 @@ class Zebra extends SCPattern { Zebra(GLucose glucose) { super(glucose); - projection = new Projection(model); + projection = new LXProjection(model); addModulator(angleM).trigger(); } - color colorFor(Coord c) { + color colorFor(LXVector c) { float hue = lx.getBaseHuef(); @@ -195,7 +195,7 @@ class Zebra extends SCPattern { // Translate so the center of the car is the origin .center(); - for (Coord c : projection) { + for (LXVector c : projection) { // rotate3d(c, a, b, g); colors[c.index] = colorFor(c); } @@ -215,7 +215,7 @@ class Zebra extends SCPattern { } -void rotate3d(Coord c, float a /* roll */, float b /* pitch */, float g /* yaw */) { +void rotate3d(LXVector c, float a /* roll */, float b /* pitch */, float g /* yaw */) { float cosa = cos(a); float cosb = cos(b); float cosg = cos(g); diff --git a/JackStahl.pde b/JackStahl.pde index dd60db7..862558c 100644 --- a/JackStahl.pde +++ b/JackStahl.pde @@ -9,7 +9,7 @@ class Swim extends SCPattern { // Projection stuff - private final Projection projection; + private final LXProjection projection; SawLFO rotation = new SawLFO(0, TWO_PI, 19000); SinLFO yPos = new SinLFO(-25, 25, 12323); final BasicParameter xAngle = new BasicParameter("XANG", 0.9); @@ -20,7 +20,7 @@ class Swim extends SCPattern { public Swim(GLucose glucose) { super(glucose); - projection = new Projection(model); + projection = new LXProjection(model); addParameter(xAngle); addParameter(yAngle); @@ -53,7 +53,7 @@ class Swim extends SCPattern { float model_height = model.yMax - model.yMin; float model_width = model.xMax - model.xMin; - for (Coord p : projection) { + for (LXVector p : projection) { float x_percentage = (p.x - model.xMin)/model_width; // Multiply by 1.4 to shrink the size of the sin wave to be less than the height of the cubes. @@ -83,7 +83,7 @@ class Balance extends SCPattern { // Projection stuff - private final Projection projection; + private final LXProjection projection; SinLFO sphere1Z = new SinLFO(0, 0, 15323); SinLFO sphere2Z = new SinLFO(0, 0, 8323); @@ -102,7 +102,7 @@ class Balance extends SCPattern { public Balance(GLucose glucose) { super(glucose); - projection = new Projection(model); + projection = new LXProjection(model); addParameter(hueScale); addParameter(phaseParam); @@ -162,7 +162,7 @@ class Balance extends SCPattern { .rotate(rotationX.getValuef() * crazy_factor, 0, 0, 1) .rotate(rotationY.getValuef() * crazy_factor, 0, 1, 0); - for (Coord p : projection) { + for (LXVector p : projection) { float x_percentage = (p.x - model.xMin)/modelWidth; float y_in_range = heightMod.getValuef() * (2*p.y - model.yMax - model.yMin) / modelHeight; diff --git a/TestPatterns.pde b/TestPatterns.pde index 62a1956..6a662f2 100644 --- a/TestPatterns.pde +++ b/TestPatterns.pde @@ -229,13 +229,13 @@ class TestTowerPattern extends TestPattern { */ class TestProjectionPattern extends TestPattern { - private final Projection projection; + private final LXProjection projection; private final SawLFO angle = new SawLFO(0, TWO_PI, 9000); private final SinLFO yPos = new SinLFO(-20, 40, 5000); public TestProjectionPattern(GLucose glucose) { super(glucose); - projection = new Projection(model); + projection = new LXProjection(model); addModulator(angle).trigger(); addModulator(yPos).trigger(); } @@ -256,7 +256,7 @@ class TestProjectionPattern extends TestPattern { .scale(1, 1.5, 1); float hv = lx.getBaseHuef(); - for (Coord c : projection) { + for (LXVector c : projection) { float d = sqrt(c.x*c.x + c.y*c.y + c.z*c.z); // distance from origin // d = abs(d-60) + max(0, abs(c.z) - 20); // life saver / ring thing d = max(0, abs(c.y) - 10 + .1*abs(c.z) + .02*abs(c.x)); // plane / spear thing diff --git a/_Internals.pde b/_Internals.pde index 8c50a76..847eeb6 100644 --- a/_Internals.pde +++ b/_Internals.pde @@ -18,13 +18,13 @@ import glucose.control.*; import glucose.effect.*; import glucose.model.*; import glucose.pattern.*; -import glucose.transform.*; import glucose.transition.*; import heronarts.lx.*; import heronarts.lx.control.*; import heronarts.lx.effect.*; import heronarts.lx.modulator.*; import heronarts.lx.pattern.*; +import heronarts.lx.transform.*; import heronarts.lx.transition.*; import ddf.minim.*; import ddf.minim.analysis.*; diff --git a/code/GLucose.jar b/code/GLucose.jar index 9440558bd4997b26ff78baa8c9545fba069916f4..2321e338d7c71738848af9a13f223c60b1f211d5 100755 GIT binary patch delta 9369 zcmZ8{1zc2J^Zzc*vUD!e-QC?ODJ23*cPx#7D_u%mx?2HJLJ&lxyF+QDq&p-8`~%PL zec#9bem?ik-8nOJ;-33GGv`d`t9j44~CWau47*_@CkB|Z-sKL+V6o>%UBa_~_)tOv z5#DF*G;JiymmcsQKCKXGqT8$Eh~ErVHwq>j7cnuiQIfSVPPDRGWfaU%8gBF38Zs7hWs<}Qx5@49o*lQ$T}b}ISv?UgJUiS&_94oC5mMRylCn5a)ED)G09;qLrg zdoI$y7ig-CG+41K34IsRxb29EfKRwQBjE5V_-RsoSQd{S+STSs$*-Gnb5y7io+-mIjjB42-RA8~TH%eWfrkGX;xI7NUVTNw{U1#S(F_Ts% z>;59lmRTR>TH^R#wCRTz$AyKxFIZ@fB&U2k>*2&Qp{2;lY78GLba!z)Vr)Ei^R&ya zFY8=}#!ip$Ck=bFk)d!)Tai${i!9UmOnyD&DFss((^)=Hv4~%b@Co{rQ{csesDCat zGjr+~SX3@KH9xBM$zL^rHfdfs%pLvn*$xiL`A6b~=*OBtVMM*Nv~RoP9#t(2$-T>P zz~M`4Z&2dS5Jam6X?u<3WlT|$e>*_~;>f;*RlmC)NE0Y&3c{fb-{>jbnZmb2IV2a0 zel9@d;`v>*B%8$KCPd;3QJg&rFCw|-`)r*|$Bty{USMlLM5>e!xBQ}N7$;4+**hMJ z!hR>pSDo#)mO2`*M+D+R3y{gPg-LpxOK{mYewru)wNy;?7a!?f&^Mt&rxcFXVAXM} zoT%=WL0`PWcitE}5Y{DJz2b6x;|fNm4*NLvkUK*uu^*IQ;7w36!>SSp@F0GKr`clr z8T8a}3>%j`V;ou|C5G#tZi&bH6CdL2GzAZD@T#qZn^G0RjlQ6%K9nO0V2ax$;P|wt z(&mZ9_@dX+lZry(hh0u^jaEY6V6+Hk>JMFUuuj!n*enQQt#;{y%t6Q~&dj`@8vkz8B|2|>DBd$uATsv7cj5*Q*yE$*B^$j`v&n3=^ADUM;g>>@-{Mn`;(ucBC$ z{6Vs>TE_zn8-7vL-2N3^iu8v=%jqUHe4;FXhf)c_*bSeJb+5AF7!O;4e{o}9N>?qk zeD9eTcZ7Dt_-YM&VaH59)BA&Sl3)7{)vU-C@u&gUwu{6tr>|&r8-v5i0@n1xBY5vb zu7o~kr(qGMgkaDcXMV(S#Wp2>_3Fv)M|>YmdPluiFe_X*mj}+nOHrQU!fiJj-_9g) z!bG~CL!r0S=K5iphb>+D=NtBOQry5EK6HbkN@^y|3bYVexd(w*4c^re@sDFde-W9A zh<>pAsPOP*&M?xr5%ZF$1$EwY9f;#1n~SQ_$wnRmvgcH?PLG&64O^c^ey3{AN^$Hz zcAcYy>65dD>CW}b&-CSQ9)m-TDIfzPluwZ}XrYZG zs#+OzZV3vT=BwCWFmF<+q)jzPD*b3Bo$N*;dB(;~)IBT+lom`x1~-&=EP46kefbL) z4D~pzzWt6V!+y-=<*Fm7ZrEFyYDfI7HuFWC+wtki&M0CkX~p^=mr?WPiuylGDF*0v zk$Xy>i*mczB~o`_-z{owS7gUv6cA_@7^UV!B@wJwU<-A=KIDG%^+VBeXrCN3;3Ny!XSqjgZ4RwBx0!AC5^UJ{blYWreL zDa>0ulEYmtUW{vYX2x<|MvnHhUzvA_cU#HL?>G&m*1BcD7s_L{S!`;s$}fgCeOW<(k2t+ zt!s90_&pVH{j}_3fog-qDsku-87FU6?`PvBbEWdtkErq=tUcqVR_nD)+yZ2mNWFYY z@YPw!#WSA%Na%bdw|brkhV~WNZ~aP>)!AGPSS)hG<$jX#L>Ifin*O?056L(`457odY2{h{XnpMb6SyPU~A|$MQBcSyDQvD`n4Et>C!d zv+4dMdlzM9A>sg3jn-g1R9cdJcHfr;!35D1)~M?B9~Nn$V!LVEdCy?P_=A%abx7!* zFNovbia@@$MhEK$sCP=GyQBWV{DH`RQziT9Q_8#i^v;fxwnQ^G7#HQX4=KJ>ofS04 zpUpH?a*xS${<}$kiHz2JrVwE^NM8?_UgAly^v|^qa7Q~XO0t-;GII4?P09I(E>F0E z);8u9yZ=zzq~z}w$#j{7DEp?V*q=BEq;4ebR2B z)|IOGLy)qBiScIsuQ9ar8L0z=@)_Ef`6uyfLW{q#owSlawWvDwb@+c@e1phiriO6E z7laORyjyXSS_l^Y4u8)ZesuV3BS70pLa|?O{}|jWzKHd^ZETpwzy0giC+-21=GC8R zCg0VKh@BCU2E+H!X3+f3$c@B*C^Vv9cz+F#)iALlb8>K<>0k`cbyKuUMZnCK`|@(% z{q#o6U-tgWUA-8*vZVH}zFzr&H_xwm#8l)wAiuWpvwkRHal>-r$y4)*_R(SZimO6h z6x#lKMeN^Pw35M$S%on0B4PJ6(qZ}dg&BY3z}dDH!8a;j`=myHp+$UfUIS(bnZwS$ zPy3b&nM=YB%@in5H_VUuHL)tBtH`ws^-uF(kb%T-dgmVl7fcQJm~owv^>`f_1eyYx znVIh}*R$Ygkq<=8}#9fB1@1bEZKtJQ!4ojY0?Mbft3^$y8LcF+ywctT9 zo5+YQIAkm&UP?W5BSJc`kV|70EkQc4ltV-oxIWyvu95Jo=@+g$V(efZ*oPeE;Ehx4 ztDl1ywak?V!gvWgOy>ZV2gEZ@c+|^Z@jNK3%}cPUe7g{+0fpRIwW3t+10E6<2k%+* zzgb}$`wD5f>uvX0;RZOpyELoLFo;qb7W*Lc)z*=auwm&-% zZAIHd3_b|1h$Z`*mlrU({8ao1E>=TaWkx-j=0N6ln8o=K(yJN2=J{2=BVrqBUBj2S zk(z+F>@`QUOdsCg9S?8U{)#68vp?ZK$yOQUBbqm{Cwq`&cA=emNJia%j-t*dMJ(4! z0G~8Np&*9ozl$_=q$uYTc-L#BoSl|h1vXVe&Lq-`aDTQTm1&(Jkx9VzOuQNKxnPp- zjLp#@`O066%R3Zr+p=aRrZ*UuhDi*34@$ ze;Bo8`#XVeDo(8Z{m@aX&69M*>Z7Evr{WgB`=X@8B~TNt%Pbc3KXGRIwfTDb>*FjJb}~Znc441Dq>Fug5u8CO5*pqj2c@X#~%Z&uPY` zGZw;_n{fBrxB{fxyxvt?ChxavWhAY@Ur3Jrp$NJViSzp!MN?1J8rJ23_`(2PAdy!g z3*Zb_Ki-?Yd7F!f*gwNJI|rv)E{s@AG+%l#Qt&PZkd9_0Ed;T1?Jh-Q9mDO>t0X;n zSCI}|sFtBWmdi#y!(O!ZH_-Ui_>LUDa6f1Son&GAcA^~^fN-B;qh&kM)iVX(^bO}w zNW4IUUt6o-wE4&ca>1<-roXynu|u2T5tflFuchP9v1FC~g1F?GqCQ316_BOcDSSPM zcFvs{&h;SqB%cTLh%yJcxIKpi#n=}Jtws4+el@LE#K5>n=oZ&#{{GWMD|4Kl@=bcp zgZ9~9mo9Vp$_DjkV~8}W8S63};<3Mg!CAg+wX9}_UHm?JCgn=Kb1Z;Lz6P8-&!V>^ z(R}k3B}g%V7G@$~gbx*n=f_4A{|7EAdk0-o)a-Rt)umrEVursge2b~eMy4n)8-iwW zZPb>?Vd~A_sE!`^E7y)Xu(y1O2I}2)IBodjT6!Y(a8Bd=p_p~o!0IhdZHKFMFAM1`-496=aXL!Ya)Hm0S(ANW`gEFyC7eh@BmbY~$E?<;G! zpyxNG7(AjX29#?-&Sjv)yM-th2ux6xwu+BQCx{r;Bq914Wo6e zH(DU{QT~%uiHb`%Sw{{>$CACt;*P3;Ls;_n-1rKU@up%; z-H={ApZu=IB<`N%!U0ft-yf|K(w5NNf&%^W&)ZB)U5M_|98}9UgR4fvY1uym487Uj zTNrh6eqjqI4p;9+JEKtkZD3SdA7sv!8m+IV7Z8N5CrkWvnVtCQ$^&9@s(9PD6#P6# z3Vq`35q+n;k^-ENt@jp$xcX^R7WGG04rP_vOO?GF7xp^-zZ-=F%Tr8EW+%$2+TFB9 z=;O@Xlr<23zdHwbOm-9Yc{>*2latq)05bpnp#( zd^%q~M#TIS`O&!u=Hgv#J3IgvK;z)10~XNcC3j7x9&HmBd7&qW7u;1gjv;kd?ib9F zvu>eEq-t0z814+By5Lv=(NEnQ|!{lSTE1ak--XS7;l}- zkrs~j+ZBb?GsOZ;AsL>)pi9r<{hPkygGP4;DDsu?j1`UAD$3>q%{V5$-x!fl9=xth z-*QVhL1b+ZnId}AEWtJDA;jwWIceZ0+DlD>M*b5A;70o2o`kb}C#Jc2J31HysssNQ z73Ms!Yd#9&gYoZBLlosrj=p)8T)I7ywU0gFoK z_hE~KI*i%N3TKsv#i{@!ff~lST)3BUDo3M@t>b}hx{8d(tKl1#mFzkTyR*TF3lWd? z9RIZi@#YtZ-{3`BGrRi2kfryrtgDYkszk#4S>Dbk^36?Fy($Q1#J0v}C#T|xZ?*Hw z!9b96rRu7nRcvO3Hp$o-F;=p+wN!2TmNeDO&p1#!IXh7cJQWloGm2SKYd^Ev<# zl*DJg1vFJvDe4|(XUfC4xt*|BN8?ziBeb+`{Iq`A)`*ICvf}-0O(5%l<)3V~!McLd z3c!%#T;VW7!PG~B*~He@l%ip7wT=b)4e>qWyFdOp6|S89XJ#8RH!bh0#i@_Kyl?g# zi%r87Lb71)_$KWFWc5*kg6U{%MkCsSEVFUYRk!vQONr5gi57kdVK;0nsK<(42SRnI z#bVdFEZJO&&R5WQTv2f0=Ff2*<|w0Rb}vP|C+jid zi2WRQNQ--F`ckAitzG{T`#991=b1q=aBwO$L{Jhee@&{*KUZ)nw7WIJBkNdvMd^en zuIwAa6PN#Tg&K8k_^{)EaL2m9gh!;)N;Fd>!aH`ARW~a@D%y>`QD2G_r8y(2b3NL!=Z>3BF5**Sq!sPV~-)e zn<#NQ=BYlt8TRe8sqD%oB%b{O0{vC(>B+%QkG@y(4Eyzk2&0#*G*#W`prt%xd7U1< zYZuP{-a6%!KyE~1sc~FsrlGGT1b!*E0^K7EqdV47R_DaFo91<9DqNRQbsxZQqc}#P z*Wmde-X6BY7MzbLB&(&~l%TbbMMdLb!E7I?FjA^<1|#ITKDFandpWCq$`CK0v(HVT zE7@6#{pD?}F42@|TSD*q%CMErm|;6xJ9~E*B4?-LrW1+d2}!VdJLj=k%dwkt@W>6u z34M*8vTl@NKAirY(s+3)_Wd(_bqF8L;LF|w{R0>Wst^aF?QmlVzebFrAF{XXfy!R5 zjKWeM$4wLvg`T99(A2K&FEOT282sTNekCFJ!{O^-S988B1goAW#C?0nt}DRT&PGQ| z6zZkOJbk)|EXD}XK^)`Wm;3otTHua^7CydBuWe;nF@hRLXf zmb>vYWiuWz&Oq7r><4S$+_ZJ3w~hKi(yyR`2L7ZtrprqYTleRA2qy;o!otUfMMgU^ z^7(Ab^ztE=5doJtuG`3(hvN*aG!hE?asRXf^U0 z^QJ>CqXEmPfH|f2I<=O~(oB@KsN-rsgt3+TM}Dy*43N)g;d_kjdOdufdH3;DIW#?N z2RX<$aO?{##-PG%9WbVA0)0u+;0c^v$4|PykG}qL^pyX&1gULr@D?{!<BX{G0AbmiuIoVJD|LMq!O262 z*SkU|L_v`{MCD5P3O`=r@fq&oo_@XhXWy67L08b930>xE6uEe)K)M zjOg8VSW3$|*R7AcgVE4S;9W@BB&S#u_36h~|B;9no7)UDHpmnq76=N0 ztqkpUs-AkY5d1m3ew|p}Sa>WZnk{YaI497WY4pg9C7~dBoGvQMUJ*9eYhqydt{|W9 zNtEhJd57#wntK}1yA@j)xc8Hw~+LZi_HMIq!Hz6cAYojf6Ap#oH&{|b>Rq0%P z2v%QpNy=kQ_lNkvJBLBT$jhss6}{iFFfE!Mcnlaie1jZPCVoQ53v(9Xo)D04r}ljm zp6>*C#Wz&&xXXE0Q=I{PMv0~t1UkTFokgGM%S;>E;j8N$_lF3@( zmG>7kshaEBk6w)6cZFq?Y)tpe9c5(Hk%^V%1g7bDt+&%{id_tmWt5qbhs<+B+Dc2G ze>b*%#``?5ss6>mC5PrWU6zd1t$bnW&TZ`%)A_6k(+f(bYnf9SvP)C`c1j$0B5e$t!DLjVkeKun%Y|+ zisuF=q%l6V$5dTc*}Vj1|1Ez#wsQF~;g+*XSm65%_wVfJ{>{zGykD&*NIITwGRz~* zN`)`3*7uBBuhd%=B2Ge#3FU>k2%mv#a}2D)<(;m;EX)v1Ni)1cnJ^uChGmrc;QT!| zOs8^+UN;=NKFw?1Xq`bJ!ymri3;@&dJ)j z5#6zBmlm~Fna3Yyc(i%l#$OJC&}tBj#Vf)lR4AG)&jdOX$S-1po(N2NCviU)2>e_# zJ2UM+vpeVd(VL2=l4(#-0>;AiP0B}E^J-ys_$iCEZ&sq~*}Tp$7KQ(Yq=!kP`Z0G5 zzeP4AW-)&~MmR@rj&T_*KY$p-JHtW0J=Xj6vU$0#-}=XbB!!5ie(p^_USd% zhrG)Mey{w>MU<8)PYf}RKZJ&sD@=qop3n)lR!g<`ns6CRpUXw`0U#1U?d{sy9A26Qy*t}Kg-Is#@o2-;PxY7|I4N(5br8> zXJO#hf-XLggHH`$x|Xt^VEC`r)r#B-5&^89 z_nnjUq(DLy2dKp<|NAm<-s!65-|f-gc8vBf)s{O!65v4mzUKRS5Za3z-)~=r=k0uf z{Uw|yeJe~13`?T{I9~V7r0}8uR{)}39QT_44W@3VEB#-ZE{Z^;A|ntFzt^hwqCk46 z20T%t1nhk7Ibd%Jq+$&Ku1Nw2dK3QB-G4hWe;KpTycMMX&q$@;s(R|&s}6eqGgAM< z|Np-SX}Y(9#J~fe`;p@Ip#U!c4}DnfM*NvC1=3eTpz;|lkn4NjC>1{nB!(vdo(nPH V??;Zq24VyK!2*FyOzv9q{{R7Z!RG(~ delta 13743 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 UhSV6MFj1IgaKD#g0^DH!2UH=P{r~^~ delta 4123 zcmZWs33N?q62A3bWP2|O*;g+Kk(DH4-x48>5Sqjlzr&%! zpe=)RGWzN6A(k^bjUbkh)=b-4(`X4p+f7y7m-Jkm^Iqlu>ieqdum8XGt~Hms+}__s zpFBouW-UpUlGJ8jtq;^ZvacSvn!cNS==**z{FWVn9C8GNl9>r%WVS%KvNFhdRTlC~ zu%@NCrVp72Fo-^JU@7NnEIZaSX}yZqYqSPY7YBOlj^rHAAdVD*m9DcQ1p90Ip}e6~ zo8N`PoVKi|Ww})`kiBc2$abJUneB3$LbeZVKXPW7-$Pz!`Ojo~D!`5Hoj`xKcEKmC zh^fpgg=4@qbLuAweE+eh}(M-{c6iLR6+X@?|N#W{%uiJ+5ziCs&Y#c>B& z6OjhpoBZ-74O ztlD^BGgmkC;D6bMf9=WDjB9+({`ljLZ1YcO*gvT$n(eNWvCL~fBlCJ`ix2a5T|CR{ z`ImoE_*WKiz8l|fW&V=uCCqEP6{WGE-F#E7pXRNRq;e4z1deO2T8e+>gGbJ!vs47NSfbM>rY_5wu1{q{(`Uyf{Uv8;#0OgNm6W&FVLhxgck7dWdZ52VHVKn%76KVRN zPrfTd&wBj0bTH6vt5{(vU$t}-Hu0dREFSUTsfo0btE{|&lgEI@QA@+rQlcQ^i*B2B z!_Mu+kGCqwXQCn=LOIjrl4BPgk?{Ekq-Q#DE*@x_u1f$<7%jXK@W3%=JT3Q#;sm8% zD{-j_@{|AS=PgbqC}p)0=H@ROf}P|te-{xyPQk;*AYK{3cw2y7CtgnY_CUsUL3+_R zM&UOTekKTUj}NwI^<<&_34BbBn@N(FYJ2NM_*e*`QuD{6UJR5AhPbX7gq33%yzA{Z zH#)iFj{kulAC=Z_2$Fk<8$HJUf^a#DgpxF;#Q4M@T`F(M{OxlS`^`K?%yq}<@c zxYRrzFRms*FW!Vr`37x1Zax=(JpEK@+EV1GRR7<$yU;G<=hs-wYja8JrDCp0N2Zgg z90vxfYR@>#aXy=||BM3O)G2_Sh2~mj)MMVk>CGlYre>qS7 z99+bc6!7L!7is?Gnul5MVe`UN!g=#Wbt<@tv8mw42mi!#{?3g^d5oV>6}6|RN>#?l zxm3)dFC(R|=$Z!htUPe3TjgTBGKX<01gVt0MO2zHvKFMF^2H)0XG0qJa(Sg0K5L($ zay6FsJC(9|F>gda0RowMf7{VVvv4Do$W(X0VVOLx%2||7P@d@O37DvPh1fp<`m!=_ zL&5cSj9r4g3sB{FyBd{2{J2m9hfG9e|7yg#i@6iQp0G;7epxF=*7OjkCMtL0JHonb z5QaE#68d!0r8u;|`ho|hsKt-3D$UMXrpmTk?3~^obNu5kq9%fqM!Qv^m29;Od7oBV zar#(4>{AtXKs_$*ZkI>wc9N5JSlg;aqH6}0nZ6UIqGXS zxxBucc$BGRe?t+n4iGN-Wq}K2Ps~E>r4ca?u`~-j_}JoGZoWQ;+fBm(p}x6oUx}kx zrk}NJRN6MOa!59KQ?wkyERQ4RF4ks)funVwU{mu2p3Fn6Qys1Q2@#$H!QyQ;IPh&g zvoFixDN<%XKX}#<{?lhm99L!Qw9Ac6+G
    ~IoeS>FJT&N&<$puwQ)H^!J@_)W z^-Zoa=RET;m+uw1{d-q=#T5r}D92hqVFdN_S}UsZl;`yniKDNh*kxV5 zGWCP=5!!!?AW@JHeq2rG`yMt!{ail&k(v1V$FC_jNS$++u^9zmB@6}NN^KfkfR45I zIvhNs) zFr2&M8Yx@d!aLOZ!FBt|O3a=L?&87kp(j(X)imwCj?_~~RX5O8uTT>vD;N6@ld+zW zwhYp1tq7i?JiSfi2 zO0*vwk9>e(3{K-55yQ=-hT zStY2y6|CgP7jfs#-JB-Ruf01xcA_l;Tim@^*=*P}bZ3Qix@{?>rC2x(%xz~$v!s_j LB