From a3f71175cc20ca75289dab31fec280821002b7b9 Mon Sep 17 00:00:00 2001 From: Sollace Date: Sat, 14 Dec 2024 02:33:53 +0100 Subject: [PATCH] Ponify the bogged --- .../client/model/ModelType.java | 3 + .../client/render/MobRenderers.java | 1 + .../render/entity/SkeleponyRenderer.java | 74 +++++++++++++----- .../feature/AbstractClothingFeature.java | 43 ---------- .../entity/feature/ClothingFeature.java | 39 +++++++++ .../models/entity/bogged_mushrooms.json | 58 ++++++++++++++ .../textures/entity/skeleton/bogged_pony.png | Bin 0 -> 12637 bytes .../entity/skeleton/bogged_pony_mushrooms.png | Bin 0 -> 9045 bytes .../entity/skeleton/bogged_pony_overlay.png | Bin 0 -> 8734 bytes 9 files changed, 155 insertions(+), 63 deletions(-) delete mode 100644 src/main/java/com/minelittlepony/client/render/entity/feature/AbstractClothingFeature.java create mode 100644 src/main/java/com/minelittlepony/client/render/entity/feature/ClothingFeature.java create mode 100644 src/main/resources/assets/minelittlepony/models/entity/bogged_mushrooms.json create mode 100644 src/main/resources/assets/minelittlepony/textures/entity/skeleton/bogged_pony.png create mode 100644 src/main/resources/assets/minelittlepony/textures/entity/skeleton/bogged_pony_mushrooms.png create mode 100644 src/main/resources/assets/minelittlepony/textures/entity/skeleton/bogged_pony_overlay.png diff --git a/src/main/java/com/minelittlepony/client/model/ModelType.java b/src/main/java/com/minelittlepony/client/model/ModelType.java index fe94eec6..9639eb02 100644 --- a/src/main/java/com/minelittlepony/client/model/ModelType.java +++ b/src/main/java/com/minelittlepony/client/model/ModelType.java @@ -1,6 +1,8 @@ package com.minelittlepony.client.model; import net.minecraft.client.model.Model; +import net.minecraft.client.model.Model.SinglePartModel; +import net.minecraft.client.render.RenderLayer; import net.minecraft.client.model.ModelPart; import net.minecraft.entity.LivingEntity; @@ -35,6 +37,7 @@ public final class ModelType { public static final ModelKey> ZOMBIE = register("zombie", ZomponyModel::new); public static final ModelKey PIGLIN = register("piglin", PiglinPonyModel::new); public static final ModelKey> SKELETON = register("skeleton", SkeleponyModel::new); + public static final ModelKey BOGGED_MUSHROOMS = register("bogged_mushrooms", tree -> new SinglePartModel(tree, RenderLayer::getEntityTranslucent)); public static final ModelKey> SKELETON_CLOTHES = register("skeleton_clothes", SkeleponyModel::new); public static final ModelKey PILLAGER = register("pillager", PillagerPonyModel::new); public static final ModelKey> ILLAGER = register("illager", IllagerPonyModel::new); diff --git a/src/main/java/com/minelittlepony/client/render/MobRenderers.java b/src/main/java/com/minelittlepony/client/render/MobRenderers.java index 0c8a880c..9189c512 100644 --- a/src/main/java/com/minelittlepony/client/render/MobRenderers.java +++ b/src/main/java/com/minelittlepony/client/render/MobRenderers.java @@ -52,6 +52,7 @@ public record MobRenderers (String name, BiConsumer { registry.registerEntityRenderer(EntityType.SKELETON, state, SkeleponyRenderer::skeleton); registry.registerEntityRenderer(EntityType.STRAY, state, SkeleponyRenderer::stray); + registry.registerEntityRenderer(EntityType.BOGGED, state, SkeleponyRenderer::bogged); registry.registerEntityRenderer(EntityType.WITHER_SKELETON, state, SkeleponyRenderer::wither); }); public static final MobRenderers GUARDIAN = register("guardians", (state, registry) -> { diff --git a/src/main/java/com/minelittlepony/client/render/entity/SkeleponyRenderer.java b/src/main/java/com/minelittlepony/client/render/entity/SkeleponyRenderer.java index 702be9db..93433a0c 100644 --- a/src/main/java/com/minelittlepony/client/render/entity/SkeleponyRenderer.java +++ b/src/main/java/com/minelittlepony/client/render/entity/SkeleponyRenderer.java @@ -1,68 +1,102 @@ package com.minelittlepony.client.render.entity; -import com.minelittlepony.api.model.ModelAttributes; -import com.minelittlepony.api.model.PonyModel; +import com.minelittlepony.api.model.*; import com.minelittlepony.api.pony.Pony; import com.minelittlepony.api.pony.meta.Race; import com.minelittlepony.client.MineLittlePony; import com.minelittlepony.client.model.ModelType; import com.minelittlepony.client.model.entity.SkeleponyModel; -import com.minelittlepony.client.render.entity.feature.AbstractClothingFeature; +import com.minelittlepony.client.render.entity.feature.ClothingFeature; import com.minelittlepony.client.render.entity.npc.textures.TextureSupplier; import com.minelittlepony.client.render.entity.state.PonyRenderState; +import net.minecraft.client.model.Model.SinglePartModel; +import net.minecraft.client.render.*; import net.minecraft.client.render.entity.EntityRendererFactory; import net.minecraft.client.render.entity.LivingEntityRenderer; +import net.minecraft.client.render.entity.feature.FeatureRenderer; +import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.mob.*; +import net.minecraft.util.Colors; import net.minecraft.util.Identifier; -public class SkeleponyRenderer extends PonyRenderer> { +public class SkeleponyRenderer extends PonyRenderer> { public static final Identifier SKELETON = MineLittlePony.id("textures/entity/skeleton/skeleton_pony.png"); public static final Identifier WITHER = MineLittlePony.id("textures/entity/skeleton/skeleton_wither_pony.png"); public static final Identifier STRAY = MineLittlePony.id("textures/entity/skeleton/stray_pony.png"); + public static final Identifier BOGGED = MineLittlePony.id("textures/entity/skeleton/bogged_pony.png"); + + public static final Identifier STRAY_SKELETON_OVERLAY = MineLittlePony.id("textures/entity/skeleton/stray_pony_overlay.png"); + public static final Identifier BOGGED_SKELETON_OVERLAY = MineLittlePony.id("textures/entity/skeleton/bogged_pony_overlay.png"); public SkeleponyRenderer(EntityRendererFactory.Context context, Identifier texture, float scale) { super(context, ModelType.SKELETON, TextureSupplier.of(texture), scale); } + @SuppressWarnings("unchecked") @Override - public SkeleponyRenderer.State createRenderState() { - return new State(); + public S createRenderState() { + return (S)new State(); } - public static SkeleponyRenderer skeleton(EntityRendererFactory.Context context) { + public static SkeleponyRenderer skeleton(EntityRendererFactory.Context context) { return new SkeleponyRenderer<>(context, SKELETON, 1); } - public static SkeleponyRenderer stray(EntityRendererFactory.Context context) { - return PonyRenderer.appendFeature(new SkeleponyRenderer<>(context, STRAY, 1), StrayClothingFeature::new); + public static SkeleponyRenderer stray(EntityRendererFactory.Context context) { + return PonyRenderer.appendFeature(new SkeleponyRenderer(context, STRAY, 1), ctx -> { + return new ClothingFeature<>(ctx, ModelType.SKELETON_CLOTHES, STRAY_SKELETON_OVERLAY); + }); } - public static SkeleponyRenderer wither(EntityRendererFactory.Context context) { + public static SkeleponyRenderer bogged(EntityRendererFactory.Context context) { + return PonyRenderer.appendFeature(PonyRenderer.appendFeature(new SkeleponyRenderer<>(context, BOGGED, 1) { + @Override + public BoggedState createRenderState() { + return new BoggedState(); + } + }, ctx -> { + return new ClothingFeature<>(ctx, ModelType.SKELETON_CLOTHES, BOGGED_SKELETON_OVERLAY); + }), BoggedMushroomsFeature::new); + } + + public static SkeleponyRenderer wither(EntityRendererFactory.Context context) { return new SkeleponyRenderer<>(context, WITHER, 1.2F); } - public static class StrayClothingFeature< + public static class BoggedMushroomsFeature< T extends AbstractSkeletonEntity, S extends SkeleponyRenderer.State - > extends AbstractClothingFeature> { - public static final Identifier STRAY_SKELETON_OVERLAY = MineLittlePony.id("textures/entity/skeleton/stray_pony_overlay.png"); + > extends FeatureRenderer> { + public static final Identifier MUSHROOMS = MineLittlePony.id("textures/entity/skeleton/bogged_pony_mushrooms.png"); - private final SkeleponyModel overlayModel = ModelType.SKELETON_CLOTHES.createModel(); + private final SinglePartModel model = ModelType.BOGGED_MUSHROOMS.createModel(); - public StrayClothingFeature(LivingEntityRenderer> render) { - super(render); + public BoggedMushroomsFeature(LivingEntityRenderer> renderer) { + super(renderer); } @Override - protected SkeleponyModel getOverlayModel() { - return overlayModel; + public void render(MatrixStack matrices, VertexConsumerProvider vertices, int light, BoggedState state, float limbAngle, float limbDistance) { + if (!state.sheared) { + matrices.push(); + getContextModel().transform(state, BodyPart.HEAD, matrices); + getContextModel().head.rotate(matrices); + VertexConsumer buffer = vertices.getBuffer(model.getLayer(MUSHROOMS)); + model.render(matrices, buffer, light, OverlayTexture.DEFAULT_UV, Colors.WHITE); + matrices.pop(); + } } + } + + public static class BoggedState extends State { + public boolean sheared; @Override - protected Identifier getOverlayTexture() { - return STRAY_SKELETON_OVERLAY; + public void updateState(LivingEntity entity, PonyModel model, Pony pony, ModelAttributes.Mode mode) { + super.updateState(entity, model, pony, mode); + sheared = entity instanceof BoggedEntity bogged && bogged.isSheared(); } } diff --git a/src/main/java/com/minelittlepony/client/render/entity/feature/AbstractClothingFeature.java b/src/main/java/com/minelittlepony/client/render/entity/feature/AbstractClothingFeature.java deleted file mode 100644 index 5fe33a01..00000000 --- a/src/main/java/com/minelittlepony/client/render/entity/feature/AbstractClothingFeature.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.minelittlepony.client.render.entity.feature; - -import net.minecraft.client.render.OverlayTexture; -import net.minecraft.client.render.VertexConsumer; -import net.minecraft.client.render.VertexConsumerProvider; -import net.minecraft.client.render.entity.feature.FeatureRenderer; -import net.minecraft.client.render.entity.feature.FeatureRendererContext; -import net.minecraft.client.render.entity.model.BipedEntityModel; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.entity.LivingEntity; -import net.minecraft.util.Colors; -import net.minecraft.util.Identifier; - -import com.minelittlepony.api.model.PonyModel; -import com.minelittlepony.client.render.entity.state.PonyRenderState; - -// separate class in case I need it later -public abstract class AbstractClothingFeature< - T extends LivingEntity, - S extends PonyRenderState, - M extends BipedEntityModel & PonyModel - > extends FeatureRenderer { - - protected final FeatureRendererContext renderer; - - public AbstractClothingFeature(FeatureRendererContext render) { - super(render); - renderer = render; - } - - @Override - public void render(MatrixStack matrices, VertexConsumerProvider vertices, int light, S state, float limbAngle, float limbDistance) { - M overlayModel = getOverlayModel(); - - overlayModel.setAngles(state); - VertexConsumer buffer = vertices.getBuffer(overlayModel.getLayer(getOverlayTexture())); - overlayModel.render(matrices, buffer, light, OverlayTexture.DEFAULT_UV, Colors.WHITE); - } - - protected abstract M getOverlayModel(); - - protected abstract Identifier getOverlayTexture(); -} \ No newline at end of file diff --git a/src/main/java/com/minelittlepony/client/render/entity/feature/ClothingFeature.java b/src/main/java/com/minelittlepony/client/render/entity/feature/ClothingFeature.java new file mode 100644 index 00000000..202d17ca --- /dev/null +++ b/src/main/java/com/minelittlepony/client/render/entity/feature/ClothingFeature.java @@ -0,0 +1,39 @@ +package com.minelittlepony.client.render.entity.feature; + +import net.minecraft.client.render.OverlayTexture; +import net.minecraft.client.render.VertexConsumer; +import net.minecraft.client.render.VertexConsumerProvider; +import net.minecraft.client.render.entity.feature.FeatureRenderer; +import net.minecraft.client.render.entity.feature.FeatureRendererContext; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.util.Colors; +import net.minecraft.util.Identifier; + +import com.minelittlepony.client.model.ClientPonyModel; +import com.minelittlepony.client.render.entity.state.PonyRenderState; +import com.minelittlepony.mson.api.ModelKey; + +// separate class in case I need it later +public class ClothingFeature< + S extends PonyRenderState, + M extends ClientPonyModel + > extends FeatureRenderer { + + protected final FeatureRendererContext context; + private final M model; + private final Identifier texture; + + public ClothingFeature(FeatureRendererContext context, ModelKey model, Identifier texture) { + super(context); + this.context = context; + this.model = model.createModel(); + this.texture = texture; + } + + @Override + public void render(MatrixStack matrices, VertexConsumerProvider vertices, int light, S state, float limbAngle, float limbDistance) { + model.setAngles(state); + VertexConsumer buffer = vertices.getBuffer(model.getLayer(texture)); + model.render(matrices, buffer, light, OverlayTexture.DEFAULT_UV, Colors.WHITE); + } +} \ No newline at end of file diff --git a/src/main/resources/assets/minelittlepony/models/entity/bogged_mushrooms.json b/src/main/resources/assets/minelittlepony/models/entity/bogged_mushrooms.json new file mode 100644 index 00000000..c203a01f --- /dev/null +++ b/src/main/resources/assets/minelittlepony/models/entity/bogged_mushrooms.json @@ -0,0 +1,58 @@ +{ + "texture": {"u": 50, "w": 64, "h": 32}, + "data": { + "mushrooms": { + "pivot": [0, 1, -2], + "children": { + "red_mushroom_1": { + "texture": {"v": 16}, + "pivot": [3, -8, 3], + "rotate": [0, 45, 0], + "cubes": [ + { "from": [-3, -3, 0], "size": [6, 4, 0]} + ] + }, + "red_mushroom_2": { + "texture": {"v": 16}, + "pivot": [3, -8, 3], + "rotate": [0, 134, 0], + "cubes": [ + { "from": [-3, -3, 0], "size": [6, 4, 0]} + ] + }, + "brown_mushroom_1": { + "texture": {"v": 22}, + "pivot": [-3, -8, -3], + "rotate": [0, 45, 0], + "cubes": [ + { "from": [-3, -3, 0], "size": [6, 4, 0]} + ] + }, + "brown_mushroom_2": { + "texture": {"v": 22}, + "pivot": [-3, -8, -3], + "rotate": [0, 134, 0], + "cubes": [ + { "from": [-3, -3, 0], "size": [6, 4, 0]} + ] + }, + "brown_mushroom_3": { + "texture": {"v": 28}, + "pivot": [-2, -1, 4], + "rotate": [-90, 0, 45], + "cubes": [ + { "from": [-3, -4, 0], "size": [6, 4, 0]} + ] + }, + "brown_mushroom_4": { + "texture": {"v": 28}, + "pivot": [-2, -1, 4], + "rotate": [-90, 0, 134], + "cubes": [ + { "from": [-3, -4, 0], "size": [6, 4, 0]} + ] + } + } + } + } +} diff --git a/src/main/resources/assets/minelittlepony/textures/entity/skeleton/bogged_pony.png b/src/main/resources/assets/minelittlepony/textures/entity/skeleton/bogged_pony.png new file mode 100644 index 0000000000000000000000000000000000000000..0d07300e640a451edb60b08a0ea1187ea4858e62 GIT binary patch literal 12637 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/minelittlepony/textures/entity/skeleton/bogged_pony_mushrooms.png b/src/main/resources/assets/minelittlepony/textures/entity/skeleton/bogged_pony_mushrooms.png new file mode 100644 index 0000000000000000000000000000000000000000..e915420d470147a2183049687e12175532b62eee GIT binary patch literal 9045 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/minelittlepony/textures/entity/skeleton/bogged_pony_overlay.png b/src/main/resources/assets/minelittlepony/textures/entity/skeleton/bogged_pony_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..09c68707b5220155dc2590eea80df33a0e3b7f87 GIT binary patch literal 8734 zcmeHNc|6ox|NjozsnqC}lrfd18nZIXHDsBJa;+h)vud&oW*9`%s;=DIZPkr*sYI3@ zsVJdE+)|`PNm0pC(%7=a%yYhj((`-ny-)Y~J^%IfI=<(7KA-bGpU?aAIiH#D;YZgW zmgs2eYeEpD=6IYrkpkx92qYSwK*N(zI0B7`qv45QeZ+5{EdoH01|)+< zuwfg=e1Z)f^9k;c`D6$B%A@we%&3m*>y7gRp)`WI6rMZUkJE-17_(jeME(Mr?6lZ% zF<1yD2>g=QLH3Zks;Zi*in^MbnudnDrZ!SXTT4rO#+0d(khAm+XV20%FhI>UH$kBn z&M`1BC7Uh8;YlQtp$U~vAy}CcNdy=Kp`oFnt))F(M`t?0$iRs3)tCG#q^l0wq>MmA zO1cPTU4*<8G6Z(2AQab#E8tm4d4h_nn!1Lj7Erh_8D>gZX@atf%7h6(8Uy6e1YMOW zMtED*scuX)bO@5Lbzh459J}0WdhXR7bBV0bZ5o=>zMDQnf1a_4so8vzg(aCnrP(_$ z7B5-q=;YzK!pqxdr7xSq<@s&kZxo8c!o?AhQQLRyjNP^S$GH6m4jww3aOBscsV7dJ zN;{pNapqj!`3o2G3oc#0exvkeS^4j`Zr^|K@KMdU}eB|jPRW$0qMqo!h0KT_IvKHXljgasn1wh(Ijo8mPaLb_69Uk??#5#+_deP6*#nR zr+rAsu@dars2kNMYg;;#+GXc+*9>Rc7(Xu_$X+w; zuEsgBzcR$jM5f=8Z7!=QdHuX_R;RbcujBy(_RNw~p-u-{mO8y@<+?HSYH+D>rqG`> z<-)^QqCw;AhYakm$@sldKezNt^!J-Z-|39s^msq-(eCz=JslbI5-Q4PR28}BB~&z& z34i`TZ+ur6t_%yh^C30&B0z@n*y%OJ-Cyw5=hX8;EG6_GO(}vfs$$s{U0_r55@UeEFhODbL~BPNMc&I z*^-2hMYUC(?E9DeJ%XH`JJdZXIw^-L1pSjfoL*DW9MCwuD(Y^>yW(|EBPzrD2JcBr z4A^=HQ>6d!b!r}RANaL#dS90RN=rc__2#<#f--5sgQC#h1PQmHE9m*p{i#U?2Mi8p zwff2QoBX|39+2!S!xs*Etq{5XbYk<%@IFn`)cik7CZ)U28=hW_P7H4;7Oo05G!aKX zCVK^bN>QJOrz2{WA7(R8Uxm`0(i<#TSjiz;}Q#k_UUw%c0!Ck+QIVWTSZ> zTJbTFBH>5Yz|B@rJ?M$~E zsvY(}lt~s#Hr93p)+G;|$#glELJE6qbECh;x&Bn|n&X$B7uwv6-+XAJtkHU1MO(w0 z)u)8jCr@Q!p4Kc8FI>x`meJGW))B4Pvp>wL>X2E?9W{_WElaTt92XX^rBueeJv5r@ z8B#-DB{AvIs#P=p^HP>_NoH7>g0+S^PJ@;Ych98?~?;_fP$j~u#Maw?$J*AaQ%&tudity)XCs=9U$Nne)H zTOUb>j+^wYtdzbQ+~hT1=N9_(z2@}PxSk#3<2k;smy)(oQd=*0A6-Q>ycy57uK#eH zVa9M=xwS+N&G~Nl`vJoadR@svQKsc(zh00D4Ux$_n_bh(8>Op@^bTfNUh=pnCS4E= zu;q}F>`)>@??Jn!NI#sVmp?D?T;O{v z4^*G|rE=)T>JOi4+Wh7`W3YNWTilb~`3BJeMr2-H}<`>eU-Iyp|HWiH|}SbO-EqypY5(O+27n{QQal>A|d5&XqBiX1gYhK&(@<-KQeXi}qV-7~hh;!S-@NkLUY*I?h^3eT8<#_8#< zmoHhGS41|m`y$GVtX4-F-Y66oFF2TA&_#|e1fRC^o3rK6LdlDD_b-YtbK`u88Hd+l z4g9P>sJu&rKkd>ZW#W#;**zQkWG)9jX0?brW9XTBs;~EXvsZb&QBmV!+ zxI|uS8T)=K_^Q5xZ*TAFXm5`S4i)hD0bB@*NQ&7e* zyGwOhxlgV+spaj@&~=%*WQFtTXrs2=+mUW@t0CP!t+>&vsi8 z1WjDU_w*6@I4`HM1%c*Fj)28Aj|dD_yq#FtLp`*Pm zoN>;<_S_BprBR_=kEkC!*-`#%DhF+2t!WiO0|0?s5fc>=7!V|+MbOa-TpH-Z!&o#* zp(669qkX`ew7npdiz1nm%yAe-1V5aBw$?;hg>rZ_cZbEJ5a5Z9-XIbM)38{vSZppP znhQexuy`t!ip3GI1Of(VV1$uDB4z|8NH_+3y85zvQx^snsuuwLa z5zY+~%^45DVSkz*3_iCN?r_*xZU8qBs0zWV_%D`(&m2C@fGP0f2L>x<0kXf)6!CeV z$@;=JSfX%eydhxvC)_Wz$9z{P11)D~nuCBH2Ak*TKu5#t(>MY)pF>l0EiEY|GJ#6Q zaEW*_hD0KeF%+&P1;b*JsZ1P>OdwlYj)QUx5{j5XY%UB1z|HvphfE?fDJ-5PhC{${ zFeDb4ieYg$78nZx7muS_aCu}7XB>n}C?8}cGhn<`Fcb$s;YdszkxV6Fs5}ZAL&A}H z7%J6*jo}eEYz~>k;gAVj1r&!(TPz3-WP)(=1DSqYY;cgDLI4v^vvqZ(qY37?&m*n@ zOc4)Epre=bgTf*{3q1LOTn`ZwW)n{)lJG<-1y7`qElCveXC*Igs1Rf#jHx(1Qb^#i z(10_5SSFmO06;Mge4*Kga+xAQsHZ>>Ku3Q%clsoD2HT0l6fqr`A}#>^bQ0w`b`rG! zho|92%!lEe1spyv@~^bv&4aQ6`XJ;>`9iRMq+)1fM|p5VMxI6<1Ne%qghDAc1&zrb zaY4uo=Z*vmV2y~_8<;_UTu?nm({*f||8G)(#KhzA93lzBB2x$$5`jp>Fj*EX42#0U z5qShE5l`ePSonl46!1i1W+>Oz5AX=M0_mwZqeGc00%i84ws->YCQS!}Y9dExhFYukM8s^Jg8D6{;Lo5njt;h-5l`EFtNdRr zLT;XVBJKXghF;m{?De6s0yc?z&r6IbsE6kf%Y9hBLu-1d3vkA5RpOVkmcP8`dS7+7$=Q4t8~W*M*O32c?rwSc z`{Lyh30Y^(LM-1O7yhnkS!F!i`}XT%(zvD>y~Ucsz~lwrgct&$^y>0O%Z z?ShsKr_b1;yQOiys|CjrQH^x)J#A~%bmrb>e-qQ>f|qC37tG(Cg3&p!WYUUjjpYbN zqZK~;mtf-K*Dv3eE^=L^dhZftRb9`3#??IK*pyvmd;I5RS9EP{kR(@MoAC?sG2ZwY zyO5(YF|7mFt6R2XlL%j2-ZY6nuxQ@$Mb83ALFKhw6+=I1Q4MN`=rz%mhtu5;bZyrxw84JO?XX3dN11k2LwYc(#n)#hK@@|5sGdwuOngX|OWlMme}%NvOL zh}>9#IylMUakibO>yy}2(Y(7*R@B9Uz(;zhyC_j=0Nw3H;A6~Bh-oR&-G!xrAqI)k z^_tUC4ppfk6C+;K=oWBpx&$T^V4C|%&tILlAh=CE;8pvDAhV1P*4q=6r<@M_5VmUC z?$fgNmd$NtJtnEcyN8h-xV0W04-P%Ma&EiXhQX(mhGo{=n+rqTsBe}5?IB;l6?Jx;xtvT!OPE6ZTptLND;Xr)y&>rbxHSuT;hc@iA z{+^)v{a*d{UVTxpcrgOHT%^i%YkWb!mb%Xy6M9~Aw^tn3J6_Fuk?w`xt5fUzhg$T1 z`IpNSap+?Uuf9*tcg;-Oaz!eC;Ce}dZHbXf4r-e&>v!tkVq2oZsFxe=)Idhc*F~xz zfe5K>+9i{>-fOq`O?au6EH+=!+N-~gNUT6VNzhws2d-4kkaA_>t~{$}cJO~@K#q(b K9CGZ|Z~G@j3PI!m literal 0 HcmV?d00001