From 4320071a41621efafefb0ad005ffa0078d8a8983 Mon Sep 17 00:00:00 2001 From: Boblet Date: Tue, 9 Sep 2025 16:58:17 +0200 Subject: [PATCH] sesbian lex --- .../tileentity/RenderAssemblyFactory.java | 102 +++++++++++++++++- .../TileEntityMachineAssemblyFactory.java | 53 +++++++++ .../models/machines/assembly_factory.png | Bin 4916 -> 5024 bytes 3 files changed, 154 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/hbm/render/tileentity/RenderAssemblyFactory.java b/src/main/java/com/hbm/render/tileentity/RenderAssemblyFactory.java index 8c6b0d750..25cf3f70a 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderAssemblyFactory.java +++ b/src/main/java/com/hbm/render/tileentity/RenderAssemblyFactory.java @@ -6,6 +6,7 @@ import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; import com.hbm.main.ResourceManager; import com.hbm.render.item.ItemRenderBase; +import com.hbm.tileentity.machine.TileEntityMachineAssemblyFactory; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.item.Item; @@ -29,8 +30,107 @@ public class RenderAssemblyFactory extends TileEntitySpecialRenderer implements case 5: GL11.glRotatef(270, 0F, 1F, 0F); break; } + TileEntityMachineAssemblyFactory assemfac = (TileEntityMachineAssemblyFactory) tileEntity; + bindTexture(ResourceManager.assembly_factory_tex); - ResourceManager.assembly_factory.renderAll(); + ResourceManager.assembly_factory.renderPart("Base"); + if(assemfac.frame) ResourceManager.assembly_factory.renderPart("Frame"); + + double[] arm1 = new double[] {-30, -30, -30, -0.125}; + double[] arm2 = new double[] {-30, -30, -30, -0.125}; + double blade = (System.currentTimeMillis() / 1) % 360D; + + GL11.glPushMatrix(); { + ResourceManager.assembly_factory.renderPart("Slider1"); + + GL11.glTranslated(0, 1.625, -0.9375); + GL11.glRotated(arm1[0], 1, 0, 0); + GL11.glTranslated(0, -1.625, 0.9375); + ResourceManager.assembly_factory.renderPart("ArmLower1"); + + GL11.glTranslated(0, 2.375, -0.9375); + GL11.glRotated(arm1[1], 1, 0, 0); + GL11.glTranslated(0, -2.375, 0.9375); + ResourceManager.assembly_factory.renderPart("ArmUpper1"); + + GL11.glTranslated(0, 2.375, -0.4375); + GL11.glRotated(arm1[2], 1, 0, 0); + GL11.glTranslated(0, -2.375, 0.4375); + ResourceManager.assembly_factory.renderPart("Head1"); + GL11.glTranslated(0, arm1[3], 0); + ResourceManager.assembly_factory.renderPart("Striker1"); + } GL11.glPopMatrix(); + + GL11.glPushMatrix(); { + ResourceManager.assembly_factory.renderPart("Slider2"); + + GL11.glTranslated(0, 1.625, 0.9375); + GL11.glRotated(-arm2[0], 1, 0, 0); + GL11.glTranslated(0, -1.625, -0.9375); + ResourceManager.assembly_factory.renderPart("ArmLower2"); + + GL11.glTranslated(0, 2.375, 0.9375); + GL11.glRotated(-arm2[1], 1, 0, 0); + GL11.glTranslated(0, -2.375, -0.9375); + ResourceManager.assembly_factory.renderPart("ArmUpper2"); + + GL11.glTranslated(0, 2.375, 0.4375); + GL11.glRotated(-arm2[2], 1, 0, 0); + GL11.glTranslated(0, -2.375, -0.4375); + ResourceManager.assembly_factory.renderPart("Head2"); + GL11.glTranslated(0, arm2[3], 0); + ResourceManager.assembly_factory.renderPart("Striker2"); + GL11.glTranslated(0, 1.625, 0.3125); + GL11.glRotated(-blade, 1, 0, 0); + GL11.glTranslated(0, -1.625, -0.3125); + ResourceManager.assembly_factory.renderPart("Blade2"); + } GL11.glPopMatrix(); + + GL11.glPushMatrix(); { + ResourceManager.assembly_factory.renderPart("Slider3"); + + GL11.glTranslated(0, 1.625, 0.9375); + GL11.glRotated(-arm2[0], 1, 0, 0); + GL11.glTranslated(0, -1.625, -0.9375); + ResourceManager.assembly_factory.renderPart("ArmLower3"); + + GL11.glTranslated(0, 2.375, 0.9375); + GL11.glRotated(-arm2[1], 1, 0, 0); + GL11.glTranslated(0, -2.375, -0.9375); + ResourceManager.assembly_factory.renderPart("ArmUpper3"); + + GL11.glTranslated(0, 2.375, 0.4375); + GL11.glRotated(-arm2[2], 1, 0, 0); + GL11.glTranslated(0, -2.375, -0.4375); + ResourceManager.assembly_factory.renderPart("Head3"); + GL11.glTranslated(0, arm2[3], 0); + ResourceManager.assembly_factory.renderPart("Striker3"); + } GL11.glPopMatrix(); + + GL11.glPushMatrix(); { + ResourceManager.assembly_factory.renderPart("Slider4"); + + GL11.glTranslated(0, 1.625, -0.9375); + GL11.glRotated(arm1[0], 1, 0, 0); + GL11.glTranslated(0, -1.625, 0.9375); + ResourceManager.assembly_factory.renderPart("ArmLower4"); + + GL11.glTranslated(0, 2.375, -0.9375); + GL11.glRotated(arm1[1], 1, 0, 0); + GL11.glTranslated(0, -2.375, 0.9375); + ResourceManager.assembly_factory.renderPart("ArmUpper4"); + + GL11.glTranslated(0, 2.375, -0.4375); + GL11.glRotated(arm1[2], 1, 0, 0); + GL11.glTranslated(0, -2.375, 0.4375); + ResourceManager.assembly_factory.renderPart("Head4"); + GL11.glTranslated(0, arm1[3], 0); + ResourceManager.assembly_factory.renderPart("Striker4"); + GL11.glTranslated(0, 1.625, -0.3125); + GL11.glRotated(blade, 1, 0, 0); + GL11.glTranslated(0, -1.625, 0.3125); + ResourceManager.assembly_factory.renderPart("Blade4"); + } GL11.glPopMatrix(); GL11.glShadeModel(GL11.GL_FLAT); GL11.glPopMatrix(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblyFactory.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblyFactory.java index e16572586..a978e5536 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblyFactory.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblyFactory.java @@ -2,6 +2,7 @@ package com.hbm.tileentity.machine; import java.util.HashMap; import java.util.List; +import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.interfaces.IControlReceiver; @@ -24,6 +25,7 @@ import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityProxyDyn.IProxyDelegateProvider; +import com.hbm.tileentity.machine.TileEntityMachineAssemblyMachine.AssemblerArm.ArmActionState; import com.hbm.util.BobMathUtil; import com.hbm.util.fauxpointtwelve.DirPos; import com.hbm.util.i18n.I18nUtil; @@ -181,6 +183,9 @@ public class TileEntityMachineAssemblyFactory extends TileEntityMachineBase impl this.networkPackNT(100); } else { + if(worldObj.getTotalWorldTime() % 20 == 0) { + frame = !worldObj.getBlock(xCoord, yCoord + 3, zCoord).isAir(worldObj, xCoord, yCoord + 3, zCoord); + } } } @@ -404,4 +409,52 @@ public class TileEntityMachineAssemblyFactory extends TileEntityMachineBase impl @Override public FluidTank[] getAllTanks() { return TileEntityMachineAssemblyFactory.this.getAllTanks(); } } + + public static class TragicYuri { + + } + + public static class AssemblerArm { + + public double[] angles = new double[4]; + public double[] prevAngles = new double[4]; + public double[] targetAngles = new double[4]; + public double[] speed = new double[4]; + public double sawAngle; + public double prevSawAngle; + + Random rand = new Random(); + ArmActionState state = ArmActionState.ASSUME_POSITION; + int actionDelay = 0; + boolean saw = false; + + public AssemblerArm() { + this.resetSpeed(); + } + + private void resetSpeed() { + speed[0] = 15; //Pivot + speed[1] = 15; //Arm + speed[2] = 15; //Piston + speed[3] = 0.5; //Striker + } + + public double[] getPositions(float interp) { + return new double[] { + BobMathUtil.interp(this.prevAngles[0], this.angles[0], interp), + BobMathUtil.interp(this.prevAngles[1], this.angles[1], interp), + BobMathUtil.interp(this.prevAngles[2], this.angles[2], interp), + BobMathUtil.interp(this.prevAngles[3], this.angles[3], interp), + BobMathUtil.interp(this.prevSawAngle, this.sawAngle, interp) + }; + } + } + + public static enum YuriState { + WORKING, RETIRING, SLIDING + } + + public static enum ArmState { + REPOSITION, EXTEND, CUT, RETRACT, RETIRE + } } diff --git a/src/main/resources/assets/hbm/textures/models/machines/assembly_factory.png b/src/main/resources/assets/hbm/textures/models/machines/assembly_factory.png index 908603da4f24926c33802da5dc5e7934b3206de7..c60feff7b88469ff7740c7ef332a5f61e8bbb6f1 100644 GIT binary patch literal 5024 zcmXX~2{=^W`yWg8r6{szn~C| z-k$o>MsBFx)pa0rGmdc?N^+ge2g4z_8?|_GP;ZEt9wxCeGL{YF(@_8taLcRoyL~ zD=h7p3l+LA*b+} z*jH#}x1q)5&|HhxN1}EXKBv6t9K|t({Fz=1^a8$wnTY7NZ4ogP{2qPU6iI&XMKNSR zJsSY{0^ne{q^qm@Sm6NUpon(VQ}1HXzw8qf@r--uCwl*>;{|w8YSKva#ay) zL0vedIXY-&&lrn1F70z*NZ?S|^4a&F2```6;CE`x4s3pRhvKWbbgsE{xH6)7iw3|; z>U)tX(1IqB1nQ4U6VQgGsVI8-B0GZ`pVW7HE4IoZ$$)&rseD)7jT6S7g!9>M3!kBY z-UTOgcoz;R2UAceNNX3g$aCZdv$h=Q=$n*Kh9)VGmywX z<)giM2T#6z_8u@QH`GK46DOnub_nfPV>BmLhThbk{7KZ$8*OTA6k7z1^sXFC`|^B5 zxDgf$CT@TDeQQgk1}9mAa~c_ZoWyh2`DFPH6V>1wc0vHO_{=reh%q9hTPX#Jl)qPZ z7jWzW1As8PQLl){Up5`a`o}c;ZXWu{lTnGRNkO)-Wi*8M2 ze-yuHF_q&fh4wxF5{rsK()s&}hLdYx^>Qytgw+W{f)*x60SV~*aP=DMO>MM6u?;94 zd>uhC-U4}R{$$Cu43)^htevj-QHv`0wBN$|uI*!5`YYT3V^h<8DQ!QDmX?;JT+;UA z;YH(_$b9^=s?m>f|MmuFJ>baYef8R{8!|w`dKW45IuDOrYcq+2$}l@V`29Nt=TMi# zlWY*kduwZREg$kj=6OC}x#6t@*Lo*VjA7}e8#9Z>LX?yANM-+V>X1^S%GY*wv~kKu z*FhjqRa;xExpY)$D20veTdK{@Xm)?eYRC!vqn2>|okYdwWZ+}2lGhsj4kfg-wX2(& zqNDizdQKb29dd-{e`P;fU0ZXNENwyDKksmVlRI2h7jxoKrt_$+UTDR0qF#$y$my=j ztcHb!fT5vbRc&o}Ao0k`#)g`Bw1wH4YH;11SL@y{{sk|?sRuA~ttfC`(ZzPIuS;yt zq2v6IxA8sk!sB&ybqarvk8_9ZjkhWLon@9RiTVp~D6z57&9o$q{ws58U4*=Q&wQxk zIQj8?Pxsf(+z!}*K%lHh%CF8&jV|$kSu*S1ldUkZum~mh<0_b0>MdqT#A9nm$NuUe zh`r+1x3Afi=|rPY`-749QY$Nc<_ zeZm7nBO|_@d?expmmkZYfq@UbL{|q;dP+vd7>1RvBl}U5B-Yj5o~{698f2!DrQHhE z4h}|Jo0Q|tcZqx&b!N}V%woUjh!Wh|qMc0pSWs9&C#E!cCA5T`$l2mW?78L_kcbC<`>;mOXR9xQ0Q_w?)jQ7 zShc9{beT`JKp$;=D|oxysIf2RoCRvNkGi21HRa!(ncT`1#V+*X(xddG=iB^EH8qrg z>)hN7kTw&SxX9~B_l>Xxpt0Je*u&=#*7%jEvZLB#EAQ65`vTX546W=#Z(U_58gnp) zLc8|&W#9kE@eJ7i)BEt)Bkk35>0~fes@vhNTdYyPC_V9mQ>E?XCk4rNghQOWg>$Od z6igk(bB|-pP2*eqVo{wrWEJ}4c*PTI=?Vj>mjUy;(o<8pHl9v9fsQpcN2tRO2j6wY zVC<};$MTXcIcl*mGjHwTS09wE{YZ<~!pAGC@Mhf9J8*-+#37RYTNu%pQ7Z~A=CqU) zI`c0aLZC^VCwf^Oa5_Xry(4|AAK5ZVH z!W7Z+V3}5y9_E|bIh@&*1MX${iDdh(bHhqQB z`~Cg>u}hCvw42O9Ftyi#pi`Mwv9|+H`4Txq#_e)1D8IE$-KtCT-JWhzwtgoY+w0PP z3eSOoS1jp~Sq}-XyxGNOH&B4j{kB*b?~vns`u16h3MqC?o+Y`n{q6=Px&YgjDM`+h zKlY$7Q8*(bV?86Pcf})PD^-#sCi5EM)edB}@utusTm*@U5(uILjCAji`J$ubzZxrm z>vqz;%#S?MS~(nqXmc@lFD%vW%`exAs$I^KjQxCEvJI{<{U)@Bhp;ueH6iJ1P3Nc0 zDs40j8Flsb-5aFnpeiQC5ZMer2^@bvnKiXIr`Nu|xB^WY8k&d^GMHlI8e5)`Ye2v> zWDEBhBpzPDc4ODRzQ|vk)Pf*+TzDTF>F zPwtTAQ{3PhwoutRqQ*+z2jg%V8hH59OvyD=SR)&@%9+7eZ#mdgw4v&~jojkC@5B~y zYhqGmdr=z!Uz%j#;B>)J53Tv7;fH&mL_+*Qj{2=z1-+xA5G}661U_R{#%~-ycfzlD zl5#S%f~qJx84{;Fm1tu6fTFOQrGY+^l4kQlsVztpBF69cjZIo%N!cC!h_&Sl{vYIA z1!lq=6@(zriQfJ%gKze_vn*%;5B8jh8Et2w#Tuupj!|WHqG6n!NqJeHIXcLN*sP7L zLfHPYBn96lgW{AvI;0bGJ6k=;Dth7E<_+U6;o(H+pU8gk!E>YdJIXaKp*)>3qQNl1 zLpEbWfaablU;7cOn6-gJ=wj3f?CszoL3ufM!t?aU{nJUojU|;+Q(~nA%=CV>PwEG~ zuq9hW->TxitRSw9!d4y$5+~5FqbaJoa>!9FE@4d`d?PhCcx$^*f|{ZF6RI7?+)XQ` ztJfMEG=bIowTBT?m4=2DfcqlWlRYoG*60cpKYXKGr1RItX(dpeN?MF5bk-0 zUyxVD{$#Q_@F4^~&jt6<=8ffvSUXAx)$FHo`mr6HoHSN)AvJt_p@}0PmgIk)lJ$`C zW=XsD4UP0y>z<}3na+n@o>1`(X(lS}IwQD*uQ7AV zKs%RMb$Nq{I%SoWQvns#)pycqn0TJ`#EC2f(Tu=#7?I=fwdH6#xs(0mL}yL;p0vsQ zQS&EK@U^9V+5!b@5jvNaJsRm(%{JxEtci0jpx{qMX7Qc*x~3RdqU;O`+-GSk^Qu|o zY6ec`LVxyL;vYLJgWbpONWCv>OnO3qn_}{lZ)Oe}y9-1B#Te8l(TdU^3%`&Yx;`<&RP(Lpx64vi{;Ff{DNRhLKCX9b6>iNd1jW{#$9=5qsut?NK>!$pOAVjS!E5SFiQ<>bTq3bh=X3 z6jjA5Pxl_#0Cs2ncPK*YKBG7qQ`UF>rUF}#gdqR8D1Rx1kq44eQiNsK$=3t);*{Fn z1gsoH1Jv^iXzRUuD%0WeT8L9cU{L>)&)w>%*gxn}PcvP1HyQQOJ79=* zUsVVbN+;D>>0Uv!ZeB`Ko$26YalWynX?GB|$sUDxDx6Y$SZe*EQW@nS1c&$i4sme}#S@N0Gc7Ddi2 zQ77F*=Z+D$v$|$VdV1}v`=0AbQd>rChNZZQYPI*M_Iw^?mhLD~_`$(JJ!5w)Zl#6L zS{1b9c{zJXK^)U1zXnW-p3GM;Zyvq_KKbP;Ze4;-yrf5jpNZv?lRniM#o8SuOIfI3 z?ssJm-$VKA<;hW8R&1ThTZ1l0@J&YE_8m;VR6(>;(tq@q5mGT9>G+&iMZrM-FZB@< zQBRc+I-gR2vcvxiPV@=fm8e^i{Q-dm+BV}4@qhm;(TYg@3kv5I0qJc{a|M(R*9%gH zBpiTdEmWAMN*Mo_S!C1GYebdrXV%MRpBgf5vy#R7|2+^lDdzL**Z}k1;VTp(S+VT@ zVKb$cUMJxbI4VRUnV&r-%ZUMB&a}XGGVP?yX}P~c-l7&)D3-h8{>f~s!3fy$-Q7Ro zAoA=j#!1*VRr7}2fA~ZNU~>W$Q_r>LQHVw1Eh5JA{y!20ZDDY0r>&R%0|p6iJc`=* z_r{@Ejvu{ILBcl&xlp_%7X`-fS+fw<|D+xpL+%RLQtLT3dgLB+%#&B9cgE&=DGL`3 z_W$RqWJrG4Rh&>o?d<0_=@mMI#OTkT^%3cjAC#9{){h;7M-Tf);Lm@``yO}L;$<`1 z8bYkD`va|L^Ev0I76&&X|A+^Z*Qw8zFdadc7b>!5rbWcaHrGa5FQp9@9O~1wzIgE> zTLnxe)0j`?#0H)JMbVx^u(3~Ou$!Cg;gEh>V539bI^jZ2PR{zheFF|>@{<@jOEKmm zr#+_QPkfpEB2W>Bp)siE%}h_n?C#!1L`79sRax@&AI0R54`Hl>f`as?YWc}!Z#>#fA)jk+NgP_*8ar*HP`9Bt)o<+v&yf5hPF9x=TnENUXZsx<*)LN zH(1dmXx@T9Ynl Zo0n7cc?RT2sTU&LiX)9eO}++`>*@HuX|t5xzBUXdCoiWYO%yy7|u0a&AVm+8S9z0E&`pP&NgS= zzJ|h<70svJudh`yhN|c2aJ?SHchT)!UB0ko+>&QLp9e%s=1b>p@h^kB1>zQ zDI1i&EX-bA+w8NTTWvJlOgC2me__RWaF5Ojxu})+CYs9k4`g(i?!UOvrja-9`#jQj8xKkv%r96^%)fO&u z^l-HHGqdJcxpl+qtSmukFxdY2b1oG>N_&4lyB}pN*lo1jZf|2cWrr(=Y*7`q&nLVq z#f|7kg7oz<`t`^)pyy0;6#8iQa%T!2KQK8N6WHQe&nyjZ!JU+;RirZ-s5DkM!Z>f} zpy)Y{7Mvb!fT!?HF>BU7S<1GQgV2hK3hqn=f>oL4T3E}`MpH#|bL{D9kb~Uip^DSf zk=~}~%SNRH0(|Bc2Oq0T>RU~h&tpQoatvtk2PK$cgJNz{XD16U@p{YW)z$01Hab<~ z5IWC|{;QNbK~qriWIeklPl#JVgKqWZ&(cT=(+Z6uqFq6PD?*R1{qj{looym+rr~`Y z9nZVDx%ER>*4Ea>8lD&Gj+NUqg+FUOAk{j@S7>S=76N{5slf z1o|;gozxS_HigF7KUYf|TCRjgk;!%fDt=$z^7)<|B3dgir~l$8ErDdPc(#Q+TK|bBlgVRkf9~E7JPJ;6%Kf#9S^c~* z-DFA_%~?~Xrt84)aF~Hu2o=T|D;IsCPRb6I5ig`xJ|t6A+F; zG-UYE8%}WK%O}&C6q~_vb1}KK_eR|n!W`FO9rRLA_f#I)!i1VZFKIzcgj1EPO03R+ zV7;rXB2C^ev7db-&h_)fH_eH*F2~^Tc2f4(HDyl&fs=N#vkrb4ui?Ez6=;6vlua`46I<1vOwU@f;ROZYpB z>AEw4SRS}gt0vuS5f*$NjPK2{Dzmq11=|zfe+B6OzEUY?0@+TrAWzL#PIZ8qE)j1b%!_Xq1{U>zs`q@y+^;-wBtP@?+eioOya3H^n zu-p*>OTbg{&Q1pOtOBwG6J;oLCE#k^AyuH1o%_o=R9#%}+M^W?Wo!~;z5kxe1YR3) z&OM`rw@xw-e+ZiIi1N6p$uYU8_!tc(IBFd|X2`&#t2cn^xFlv4ssYJ*qSMz|m$~-~ zRMf=cgWkcvkmngtRjL`IK7-3x(Uy}}m%eGs(s}y%jrhJ&I4F&;x`RDH&1`CWc24pr z|Bk{#1$3AHEa7cwU;Wv)QOzFJb!MC16bVfK#`rm8cw(iwHI;Hdmu!)NQV^t|YN3A? zuv(a#+lY~xZb!FA5~>*nw2!VQ!|pmUX9O&S;qc?MTwGjJ9@`;UV{>UBvLs8dw$sPQ z2lfoYXJKI>>zdTss%pG6K0dA)@4Gov0##Q2(7Q{4rQ?E}8QB9M@Ua%0r#H0eJfvB= zluTdfs>O6GXWz@)6`BRT!Y++4FB$%$fg#b)#fe;4DlW{Dv&mk(d(HbkLA9@`tyXCG z`RTmy#-#IEk}}4d!&q(h&}*>Qu{+$RsVglosGC|4D(b2VIthZvuN*xE19OHYcLO%R z@ER_SosVY^FUYa=RdD~5mSi`3))B>3@Wg$rgKb%+7BzLW%QAQTMeFM~8+pczVa(<= zVs29A$hOE)3sYH9hSU=g=EM{ z9&E0)(a74H9-t8T;RxzP5&rupZtnpQm2VLVpTmVOgaE}#5IS`Wx}DFCWxpoGVBbk% z7A6?$(lgXm{b4AfyqEZfb& zp(BqbM2y=R_KH6znf;%OVmZa=_ijCDQw zKOr9A$5Lp}=Y z3XL2ew|p|$J29&_ryOG2e5^ZVD0@?W31wZa%_{Bn-b74Ps4^Zxc6_89mfboO?bdP@ z=tieAn(ai=}BV z%no7#kYIy)bHa_7rUVFiY3w`P?e>&=kLgdlprDx@ff7+tDZ8+jFJA4=y)V7AmwWOk z7ZGU1ePJFm5z07bd6sHn?zf?qwb~RFdWlrlC*o- zQlp9G1i)C2t53-h>jHD@09GMc-jKMQjqzNB9Q=lT!wrR6$FTbuagB3u0@;J*B(a7n z%Mgwzc5J0p8J|?m;`WOtlO9lB>chIfe7ES46@Pa)F2vK57rS!0F75SduL5Uhtj;5E z_YgA3K&^LdO!k47ogqejr%CO49>>4TWg)QfK1^}4Z)`Z{~URN2xO|oZUCEWIX_r~ohklQLq4Hed1E*gUev`1YxKF_%kQ4n z+pH`Fkc!V@WHH6O&8jRdzCt$|*DlJ>6R|*KuTM?Aj2Q|(NB{N7%oM_+?(lk)$x#~a z?(;NX&OwKD7$10?+K^F2%{Y$fw#@TJ2VTci`@-p_y5rb7BOw3E*=KW}n8f(5@(|yx_^%|jOS0hI1JL#L&)@EMy9#q+ z9AVnNXMRAajH>kyRjm8}00PiZ`G5ljZ|01DbjGmp?l6P-|DQ`h8(Se{%42@St0&I@ zj6l`r)>*$f(D|y*UY8-uMrD_JCww&GXcs)!up|ta!=7RR^D;V7|LPwDqXScR$n(H* zXc$Z4eIiB@3lscoEws^MQ^tF;YN*s>DiTKxa`bYuPt_%Vu1oI?58fH{L~h8e9_rc( zl@BFp6D6^467mRaqrdKpc*X|urbuNkSm>$YrRA62yjj#^?z(Hmhoo4j|X} zTd*xVhN+H@&|iQiXheE@!>~UWl*8?-()4WEiQTL%E}Z#gUUx)c-;4604L4?&v|11L zTH8jNR{5C>#Qm(p2sR;BGc^ec{ngc@s+jbBEou{6Z>&|vgbw$3 zz$q({9)A%G9S|BuYocTrU`kskds9Vat$P^^j5++ISZ80GYH%UdfFx0+I{2KZ1zIt% zJBMr64Ypys)M8uhD#Fy*n}KF6S&mkT(4A5;q}{vHxU+@ykrACcI}jHaH(VEPvBm7~ zC!0(j{oVe3;7Lesui!JPMObDb^khaKwBW#96G7rCW#Vi1xn3DF_bLR8vkbK0&getU WVV2vB+5rISr>kY8S$^;F>;D7i;-d`!