From 2b881c74e14cdf238271fbb5e059a02abed08be2 Mon Sep 17 00:00:00 2001 From: vini2003 Date: Fri, 26 Jun 2020 23:11:57 -0300 Subject: [PATCH 1/7] Port to 1.16.1. --- build.gradle | 5 ++-- gradle.properties | 23 +++++++++--------- gradle/wrapper/gradle-wrapper.properties | 4 +-- .../LinkartModMenuIntegration.java | 6 +++-- .../mixin/AbstractMinecartEntityMixin.java | 19 ++++++++++++++- .../linkart/mixin/PlayerEntityMixin.java | 18 ++++++++------ .../linkart/registry/LinkartNetworks.java | 10 ++++---- .../vini2003/linkart/utility/RailUtils.java | 20 ++++++++++++++- src/main/resources/assets/linkart/icon.png | Bin 88643 -> 77420 bytes src/main/resources/fabric.mod.json | 2 +- 10 files changed, 74 insertions(+), 33 deletions(-) diff --git a/build.gradle b/build.gradle index db14265..8d33230 100644 --- a/build.gradle +++ b/build.gradle @@ -6,8 +6,7 @@ plugins { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 -archivesBaseName = project.mod_archive_base_name -version = project.mod_version +archivesBaseName = project.mod_name + "-" + project.mod_version + "+" + project.version_meta group = project.mod_group repositories() { @@ -26,7 +25,7 @@ repositories() { dependencies { // Minecraft - minecraft "tcom.mojang:minecraft:${minecraft_version}" + minecraft "com.mojang:minecraft:${minecraft_version}" // Yarn mappings "net.fabricmc:yarn:${yarn_mappings}:v2" diff --git a/gradle.properties b/gradle.properties index b3e63dd..11cd722 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,20 +1,21 @@ -# Gradle org.gradle.jvmargs=-Xmx4G # Fabric -minecraft_version=1.15.2 -yarn_mappings=1.15.2+build.15 -loader_version=0.8.2+build.194 -api_version=0.5.1+build.294-1.15 +minecraft_version = 1.16.1 +yarn_mappings = 1.16.1+build.9 +loader_version = 0.8.8+build.202 + +#Fabric api +api_version = 0.14.0+build.371-1.16 # Mod mod_name = linkart -mod_version = 1.2.4 +mod_version = 1.3.2 mod_group = com.gitub.vini2003 -mod_archive_base_name = linkart +version_meta = fabric-1.16.1 # Dependencies -clothconfig_version = 2.14.1 -autoconfig_version = 2.2.0 -modmenu_version = 1.10.0+build.28 -libcd_version = 2.4.1+1.15.2 \ No newline at end of file +clothconfig_version = 4.5.6 +autoconfig_version = 3.2.0-unstable +modmenu_version = 1.12.2+build.17 +libcd_version = 2.5.0+1.16.1 \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 701fdc4..e8ec9b8 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ -#Wed May 13 17:42:25 BRT 2020 -distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-all.zip +#Sun Apr 05 08:38:40 BRT 2020 +distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStorePath=wrapper/dists diff --git a/src/main/java/com/github/vini2003/linkart/integration/LinkartModMenuIntegration.java b/src/main/java/com/github/vini2003/linkart/integration/LinkartModMenuIntegration.java index 009574b..eb271e9 100644 --- a/src/main/java/com/github/vini2003/linkart/integration/LinkartModMenuIntegration.java +++ b/src/main/java/com/github/vini2003/linkart/integration/LinkartModMenuIntegration.java @@ -2,8 +2,10 @@ import com.github.vini2003.linkart.Linkart; import com.github.vini2003.linkart.configuration.LinkartConfiguration; +import io.github.prospector.modmenu.api.ConfigScreenFactory; import io.github.prospector.modmenu.api.ModMenuApi; import me.sargunvohra.mcmods.autoconfig1u.AutoConfig; +import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.Screen; import java.util.Optional; @@ -16,7 +18,7 @@ public String getModId() { } @Override - public Optional> getConfigScreen(Screen screen) { - return Optional.of(AutoConfig.getConfigScreen(LinkartConfiguration.class, screen)); + public ConfigScreenFactory getModConfigScreenFactory() { + return (ConfigScreenFactory) screen -> AutoConfig.getConfigScreen(LinkartConfiguration.class, screen).get(); } } diff --git a/src/main/java/com/github/vini2003/linkart/mixin/AbstractMinecartEntityMixin.java b/src/main/java/com/github/vini2003/linkart/mixin/AbstractMinecartEntityMixin.java index 138f30d..8a0ecc5 100644 --- a/src/main/java/com/github/vini2003/linkart/mixin/AbstractMinecartEntityMixin.java +++ b/src/main/java/com/github/vini2003/linkart/mixin/AbstractMinecartEntityMixin.java @@ -3,7 +3,11 @@ import com.github.vini2003.linkart.accessor.AbstractMinecartEntityAccessor; import com.github.vini2003.linkart.utility.CollisionUtils; import com.github.vini2003.linkart.utility.RailUtils; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.entity.Entity; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.vehicle.AbstractMinecartEntity; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.Vec3d; @@ -81,7 +85,7 @@ public void setNextUuid(UUID uuid) { } @Inject(at = @At("HEAD"), method = "tick()V") - void onTick(CallbackInfo callbackInformation) { + void onTickCommon(CallbackInfo callbackInformation) { World mixedWorld = ((AbstractMinecartEntity) (Object) this).world; AbstractMinecartEntity next = (AbstractMinecartEntity) (Object) this; @@ -101,6 +105,19 @@ void onTick(CallbackInfo callbackInformation) { } } + @Environment(EnvType.CLIENT) + @Inject(at = @At("HEAD"), method = "tick()V") + void onTickClient(CallbackInfo callbackInformation) { + AbstractMinecartEntity entity = (AbstractMinecartEntity) (Object) this; + + entity.getPassengerList().stream().filter(passenger -> passenger instanceof PlayerEntity).forEach(player -> { + player.yaw = entity.yaw + 90 * 0.75f; + player.pitch = entity.pitch; + player.prevYaw = entity.prevYaw + 90 * 0.75f; + player.prevPitch = entity.prevPitch; + }); + } + @Inject(at = @At("HEAD"), method = "pushAwayFrom(Lnet/minecraft/entity/Entity;)V", cancellable = true) void onPushAway(Entity entity, CallbackInfo callbackInformation) { if (!CollisionUtils.shouldCollide((Entity) (Object) this, entity)) { diff --git a/src/main/java/com/github/vini2003/linkart/mixin/PlayerEntityMixin.java b/src/main/java/com/github/vini2003/linkart/mixin/PlayerEntityMixin.java index 6bc7688..4d89a00 100644 --- a/src/main/java/com/github/vini2003/linkart/mixin/PlayerEntityMixin.java +++ b/src/main/java/com/github/vini2003/linkart/mixin/PlayerEntityMixin.java @@ -6,13 +6,15 @@ import com.github.vini2003.linkart.registry.LinkartItems; import com.github.vini2003.linkart.registry.LinkartLinkerRegistry; import com.github.vini2003.linkart.registry.LinkartNetworks; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.network.ClientSidePacketRegistry; -import net.minecraft.container.PlayerContainer; -import net.minecraft.container.Slot; import net.minecraft.entity.Entity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.vehicle.AbstractMinecartEntity; import net.minecraft.item.Item; +import net.minecraft.screen.PlayerScreenHandler; +import net.minecraft.screen.slot.Slot; import net.minecraft.text.Text; import net.minecraft.text.TranslatableText; import net.minecraft.util.ActionResult; @@ -23,6 +25,7 @@ import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import java.util.Optional; @@ -30,10 +33,11 @@ import static com.github.vini2003.linkart.utility.TextUtils.literal; @Mixin(PlayerEntity.class) -public class PlayerEntityMixin { - @Shadow +public abstract class PlayerEntityMixin { @Final - public PlayerContainer playerContainer; + public PlayerScreenHandler playerScreenHandler; + + @Shadow protected abstract boolean shouldDismount(); @Inject(at = @At("HEAD"), method = "interact(Lnet/minecraft/entity/Entity;Lnet/minecraft/util/Hand;)Lnet/minecraft/util/ActionResult;", cancellable = true) void onInteract(Entity entityA, Hand hand, CallbackInfoReturnable callbackInformationReturnable) { @@ -127,7 +131,7 @@ void onInteract(Entity entityA, Hand hand, CallbackInfoReturnable } if (LinkartConfigurations.INSTANCE.getConfig().isChainEnabled()) { - Optional optionalSlot = playerContainer.slots.stream().filter(slot -> slot.getStack().getItem() == LinkartItems.CHAIN_ITEM).findFirst(); + Optional optionalSlot = playerScreenHandler.slots.stream().filter(slot -> slot.getStack().getItem() == LinkartItems.CHAIN_ITEM).findFirst(); if (!optionalSlot.isPresent()) { sendToClient(playerEntity, new TranslatableText("text.linkart.message.cart_link_failure_chain").formatted(Formatting.RED)); @@ -172,7 +176,7 @@ private static void cancelCallback(CallbackInfoReturnable callback private static void sendToClient(PlayerEntity playerEntity, Text text) { if (playerEntity.world.isClient) { - playerEntity.sendMessage(text); + playerEntity.sendMessage(text, true); } } } diff --git a/src/main/java/com/github/vini2003/linkart/registry/LinkartNetworks.java b/src/main/java/com/github/vini2003/linkart/registry/LinkartNetworks.java index b2fdcf3..16236ae 100644 --- a/src/main/java/com/github/vini2003/linkart/registry/LinkartNetworks.java +++ b/src/main/java/com/github/vini2003/linkart/registry/LinkartNetworks.java @@ -3,18 +3,18 @@ import com.github.vini2003.linkart.accessor.AbstractMinecartEntityAccessor; import io.netty.buffer.Unpooled; import net.fabricmc.fabric.api.network.ServerSidePacketRegistry; -import net.minecraft.container.PlayerContainer; -import net.minecraft.container.Slot; import net.minecraft.entity.Entity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.vehicle.AbstractMinecartEntity; import net.minecraft.item.ItemStack; +import net.minecraft.network.PacketByteBuf; +import net.minecraft.screen.PlayerScreenHandler; +import net.minecraft.screen.slot.Slot; import net.minecraft.server.world.ServerWorld; import net.minecraft.text.TranslatableText; import net.minecraft.util.Formatting; import net.minecraft.util.Identifier; import net.minecraft.util.ItemScatterer; -import net.minecraft.util.PacketByteBuf; import java.util.Optional; import java.util.UUID; @@ -39,13 +39,13 @@ public static void initialize() { context.getTaskQueue().execute(() -> { PlayerEntity playerEntity = context.getPlayer(); - PlayerContainer playerContainer = playerEntity.playerContainer; + PlayerScreenHandler playerContainer = playerEntity.playerScreenHandler; if (LinkartConfigurations.INSTANCE.getConfig().isChainEnabled()) { Optional optionalSlot = playerContainer.slots.stream().filter(slot -> slot.getStack().getItem() == LinkartItems.CHAIN_ITEM).findFirst(); if (!optionalSlot.isPresent()) { - playerEntity.sendMessage(new TranslatableText("text.linkart.message.cart_link_failure_desynchronization").formatted(Formatting.RED)); + playerEntity.sendMessage(new TranslatableText("text.linkart.message.cart_link_failure_desynchronization").formatted(Formatting.RED), true); return; } else { optionalSlot.get().getStack().decrement(1); diff --git a/src/main/java/com/github/vini2003/linkart/utility/RailUtils.java b/src/main/java/com/github/vini2003/linkart/utility/RailUtils.java index 7bf46d0..8b7aa12 100644 --- a/src/main/java/com/github/vini2003/linkart/utility/RailUtils.java +++ b/src/main/java/com/github/vini2003/linkart/utility/RailUtils.java @@ -5,6 +5,7 @@ import net.minecraft.block.AbstractRailBlock; import net.minecraft.block.BlockState; import net.minecraft.block.enums.RailShape; +import net.minecraft.entity.LivingEntity; import net.minecraft.entity.vehicle.AbstractMinecartEntity; import net.minecraft.util.Pair; import net.minecraft.util.math.BlockPos; @@ -16,6 +17,23 @@ public class RailUtils { public static Pair getNextRail(AbstractMinecartEntity next, AbstractMinecartEntity previous) { + Optional.ofNullable(next.getPassengerList().size() >= 1 ? next.getPassengerList().get(0) : null).ifPresent(entity -> { + entity.yaw = next.yaw; + entity.pitch = next.pitch; + + entity.prevYaw = next.yaw; + entity.prevPitch = next.pitch; + }); + + Optional.ofNullable(previous.getPassengerList().size() >= 1 ? previous.getPassengerList().get(0) : null).ifPresent(entity -> { + entity.yaw = previous.yaw; + entity.pitch = previous.pitch; + + entity.prevYaw = previous.yaw; + entity.prevPitch = previous.pitch; + }); + + BlockPos entityPosition = next.getBlockPos(); BlockPos finalPosition = previous.getBlockPos(); @@ -45,7 +63,7 @@ public static Vec3d getNextVelocity(AbstractMinecartEntity entityA, AbstractMine double maximumDistance = Math.max(LinkartDistanceRegistry.INSTANCE.getByKey(entityA.getType()), LinkartDistanceRegistry.INSTANCE.getByKey(entityB.getType())); - if (pair == null && entityA.dimension == entityB.dimension) { + if (pair == null && entityA.world.getDimensionRegistryKey() == entityB.world.getDimensionRegistryKey()) { return new Vec3d(entityB.getX() - entityA.getX(), entityB.getY() - entityA.getY(), entityB.getZ() - entityA.getZ()); } else if (pair == null) { return entityB.getVelocity(); diff --git a/src/main/resources/assets/linkart/icon.png b/src/main/resources/assets/linkart/icon.png index c6d2ebba3d7735c4c0bd2c92dcf5aaa20d5526f1..26ff4ca2ee705ab7ea8106f712823f1c2028a125 100644 GIT binary patch literal 77420 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ⅈ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%0A-8>hLU zdx5*$*n%LxEv1a5pT&Q&sRkOFJhK;2e&$mo$5$W47l!!J&ga8uH$9Swg)#-k{rGv)t&L9(cUeCAB{Hk;~OaHs@Tc2|s05|9-tp z)6xlF6{=Q2$rQ%tE=_2D>bc<0Wn!@}A(hiuf(NoYJ(BLUSQJ+_X|D7l9|oK?hqY3M#THq+=0Nd|#k#!~xjMPiImK zI+VITJkI+155q8Seff(mAlT@$qz^hCGjAL4U=$H#@6WGN@*s`jV;O&&zj>wq!;jnI#vXM;fcE{FLK;PtKdqWod z+8>t+#)Xchg9Rz&vWS@@Muwz%|HosexPTl(b#i|Y|Br9_)VVo9(Vq9NMbRqFA^nWa zL~v3hiH!drFFG&tNs?{U%=?Kp*~}BO1~St$1}zpxGHJdq0#znOEBdJA4cVd5Gwd(!M8*Tp{>3;GpXiu1*UmWs~a;JFJ2b^kl1^eMrHX|xhdt*6VB7BHHb?#tnztDnBZ&&!&z5xeU)iU5P7SP11Ap&C zI)`D8CwE`eCpS-FB0;@)D#s;QGKJsF)`ZJRRKtBM|Kz->_*1WPJRwWKFS5ar)T}qn z4;KB>pL(48buMaRRNs$yhAmAp$x>V2gzWSxt6(9%Q-yod3Jz~wPf!m5k|#k?G*PCp z2=@0kvMLjGkhY6wHI?<->qXZ@24mh7LaL>z?ssx)mcDPDqH>kZ+sYNTku1t(_ z_ZXW;qcd>R{+Lo(bJJD4-j#r$~*M{t>>J;5Bauk*)jmn#P zv4|uY$76ON5ioN+(Oz1jj9hA=u9yXsW8Q{g$hGGBJ>*S{TAf;JSq^T=l<*Lp<%PJ~ zeTr>OVp{{Tt9h+@4(IEDdtbTHx&B++Uh61iXk)X=fZMb^aoz-Q_2TlXy)J!8P^-koW`9*{eb41k z=Ca>eK@>JIdiA+;E@B?reWB}}lfTM=lh5wd{pH`UTAhJ(>)67wj!1G9KWn;tu@&Ko z;^Hsirl+H0_yNv?mvKgk-g_-xw5jyOkbXv~oz@-!4XHoeT#~oqT7J|~!d$>5^%;h2 z?|R+k0I}TLt;`sQSff_ts+KE^y||v#BgNbNE|M9n82Sn(VPKqE+;;XT%uF<0b@v$B zs}uxk+;~TZ>tUt;IqMNG<0nTAq~ekN#|KR9PF9*yPuIfPVt>>1fBO|bF$#Q0mJ5#D zg|2;IO7Gl2!_di}x&aKBfasoxYaJ@ZaJTW&VTP{a6Qj=)^;5GSrsF12`{UVirHO7$ zSW}P)wf$|-!|V00oC=kM*|-@a05Hgo(Qmry42W|>N1F@$kKAa{Y9bg#ntmgg>UjN^ zl0!A&MOV&?t}jMMU5=YZ~mg>Qe`p3FxNt)9_j~a z0CS-^K5t5rk%`2FJJ*u{Rf4hEu>Yi=`n8{IG2qsJBdlZm*rta3}g8M_=zCDwV0RlCi$?^z@^5l{9 z#=%UZ&krfzkC@_=mX-F6)AdKs2;(*Mv>tAi4d<{x5w2LjyZmKX9(| zPcBG5fd7b6%le;-zCfYL#Y5b8XRcH*tk*hQiz5`JajIYcBBF(Wf|*;k z7Ty1@8SaIGybBw9m;AgqW*?oV+{FZsdQ)gq(}_30fRmT5&4?3tK9yz8>&axb(k>W9 zQ!Me&HV)-MuL#1ovRl(AYVu_9suJLnzFjcsCjXAIN9dmK|144J*#Lw)XXa9-fP`=! zEfy}DB2?IRxP11tV^U8j{a41rsn(eZH6J~_`kT$SW}43Vziqxd&$>K~<-_=YM?cGC zbzN!tHS8G*4LNqh2W-51nOj!Gtg8u@t|L!DmBl{oq1JyCwd|%7tOk_hP}8J~$N`ZQ zsIoc}G)(#czdQp{U>2$-@-0B8rt2H!RB^|cFS}N0yy>m9DF5|C7~p*u)$SwcM9oY!tQ@sEF>MBTN!WYbQji;p0ug)IKQH>cW^bk=@j-@Z-A56 z_-?0e7LWg^|nu*PLd|3oG9Dk9q!8bAJ8YWGu3JOD>DHYK| zF9woukGeuu>ga_oKX@JBzl?@D1mM8IRX+&Xzf5=ZQvdCtd-c*SR(&d%MXc6KF#mbY z;yC47ZbqhLt;|Bl1Y%Z zi6c{$c@f%?vjb`!R$>)!L<~`q{Fvc#x;|Fd{Te;(JTF&KlU8KuS_}=On8p?>&H2SvK#R*3o;NwjGpz{3 zP>6CGl7xb=r-FIYCtW>9g1SvY=e_*qpMOSE6oMVK{Nh6h-t}y;IV308cE@N5-KEez zno1$i8uR?Opct-i)S5DV%44@#p;rg)69DKy=&AC#{OF|7t9AsuaQLty}hzY~bp)^$Qs0hAe!W}Y&U&E_AaVY&?r4%bX$mDW#Ls_Cw&_d!J^juNT zpf9=AD8hI#xRi3WxFoE}g|brTxtELBf}OC43!i9GrDxu?u=bVN7|xUQbNXs54?Pbn z5sXmC@yClwsy8y6oy|WE)Des4tp$+{sSD~?m+jlD%ItF*RIyfb@jnAC~3?F9ox7mY~}iQooP{W^6Vdr zG9^1G!ZbEX(C@S*4j(1{P%NtQXM6vlGBsDsjfnYh6p8+7e7YYE-*0K{SbW+Y!hZ_o zN|wp&OfmYt@c;)1Fk$~m36^~i{e#}-`a<6rNx33$j@l&}Vt43mpOt-YPueU(!&QOt zt@>%w)q_WWroD+Fk_uoaW~lnCZS@T1uy7cqj__MuQ(Beg5~+zjJOP#QQdb-Qn(l4! z$i)XVyMU*y0O*${Wjx#FocteVHTw?o@nH;%@0&jeu7*m4IUEKi%9C#{xF_M$QPhh2 zXwwW>6ANVbPZKZXnE_p6$oJHyJ`1MoKBGK;XBWkKb76n=)l{RgqV&)ovpFC}+a+%B zBi6Zkt?IP|2DjyHzgDwlya_eT3jHH8LDCaTWnv4^agDbJ$jG=n=$?_Ovk?_md{zte zMe&-{B${&(A80-B!N!hy-tcr&gk*-ah>=W0q)WqNKE0aB$6Aj{k`V$bRXl4*U3GUz_3$}k0Tfi z|JAyBkJ1&|lBGw#!A1R&_MjKdaKX@91rt*cvJ{?^8p*9z5lWB!x&k&mWuG-rCM&>JPc((FW!g7A6;0}UW*vH=CxTr;Lp{*F*l=?F&hiao; z;sW=nMeR}B_JbSPxDKDLA{pnlrtJj7%9;^eRy~l>$VIYbE90jqdi#z%CuMBZDqP6a z(j1s?-)XGN^Az ziO3NEwP1bXA;5AQf$}2YEb0rQco{KXW;K=z^{;83$d=~SiPY$gXYa$a9BaHOJ?1wi ze~w358cp1rJWAos&?-Lgtw|-~D-z}AT7s#hN@PR|Y(G`zgEf*&fQn&GsBf8R%LjdAWe z2qum6DV@2C8jBDt6Op;4#=5vX^j3AvjebbuJ%C$x88xt@O zx}5e|fR97@c7YyjuP2Nb#YNS9#mRgU_(0y{U3NQ6qE6DFRu}hASd8B|&2&IEy2*m?}yOztQ03>~UG|dNeGx9&W*t0DY45nr$GRP&-ObkSd{V zX+94L!$~?JU3}y(I~Mg2^y<3!Nk(2aal0}JT~xf5HF#4}IL3^(h98u{v1Z^F=M}vX&R>bl<_$3a zl}yGJjN3p6cj&UbatX{;}_#hOFD8TT~V*v17Ba6TxN3MTp9c=QJUg5E8%XE$3sO(P>h0~A;uYsyIu)SXWMsV1d#OYZ0T6|Po(YxOx;u5 zIfmx}>hHSv+MOD|?`w#wC8+GAxEWy2M26Dq*Lk0;3@5B#xD2{^3W-|!;wC=*){V;? zX+Z;v%ju1V-wqEmN{7>2PjW9>Ea;4xVX|>hZpCbkasg$)jq7DLPSO-C~r3eZcgNa0&(fxk0P+5$-U?|5+qX0!6JueJ3no ze(SWC4mL)HAND2Tq|m0m#9Fl3CT;lPn0e=EPfQ2*Z!U6czp3sUZ)KD%xf}`0)_@<% zv3Vo-l0FMM)=m)HjMylU9sgk{p}OT!=D{p)jHZ#Hu=KSVWR)__m98CBjM%d1lvFeO z^L-|j?4E59`+aV_lLV?cPNV32<3*7{uViS*VyuO%(elhqE4-`6JAd3!sG;O%6++6*53QiqQqzuiwsM6Q$YqCo0ZyiOU8 ziWW%cDXzQTYMnBkM()vswD%dz7<@@TF@>= yo7wHL0U3K)l6ngwwjBE4?eE_cNL?&8wtGb_O6UIb*xuH~rD^r(VIoT*M+jHFUP7StUI_KT537Y|u<9V=W%xW;@y__Y;^b zE)Tofi1?LA&Ere{-S<^c;3qjdvGa`{g4vCryW>A^Z-M1NZb@!#$y#Pc?H9D@;qZ%5 z2HuZJN!rFeA@fztaxiyyHGWycDdk8vH?4R919CL_UqAO>Dg&Lx?8!_kKWg$^=hND# z3YjO$Q@qW#+?n9kram;MR>f39(^nJEu&C)6`+kReZa0Gz>*G8^M`Duk@hYM}C^J&hq4(xoD5okkv z(mt3lkta$gE`+9L*}RV$P!}<0$ROa{p#<|1vQ6A4wV8l3q8Sa$6E*kEB8N;_?UNi* zm;AtBGG-YRlcNmph;)u~o6H|M3`)!+k582K|rac`uV zr?ZZfa5A>8L5s!!9q@Rp%UkU^4&u9Dan*m1Tr&eKHXWX|Z5s*73s^%!CqpXM z^9;zIqQu)xK-bFH2v&{Sh#lGD2cHRolh2UksWsqByNt* z1d%vrEW6u#E5-}rAK_t^v{a;dD2czBudQKn)zJi6vtM6Izrh@jc%eDsKTGN2m|31W zAG@L(3tbP7PBDr)YK&ev-}w6IE35A=6Qa5yX4=6g#!%IG~_PTVus z75vD6z}RY2`&Gm~brTuAJP{Wdw6HC=ORHtH9(YJ2v7qrPP# zFjt`{glRORJAbRf&5}uzbuN0^;Ri|4MpUMO0+3c0MNN$bJd3WACNj&k8os1yi8**M zQLk79lq0k=Tc{hUy%r==vr2(sk|#Xn%7xJgzOjSXP{5*}s*!Yar_ZT94JIC&BLNg9%+Z~kW7-vU` z^T3>yATy;vh{X~&qbXRv>vTUa&`!a=0D2Li8cu5IZaL&@-U*RVU>nu zk*co8aM~BV#IBM`S~UPSh_Q=%a840tIH}S}(l&pi2Wv?vj+Dn{Ud3<>2_~W^Gn=fL zU7+#nsGo_H_|GXq3)YwdTvx0Nl3eYj3t2nj{r?a^u^0H`1a;Cayi>DrRIRx9zmw${ z0hpQ*rt(^qxz6UpPl4=M#LGJ9Xhx)y>$c{-3gw|ebdsHS>k7MySEg53)mpDw{!7rsnM$N;CU25Ega|atv0>NX^d1L^8i0%0GT)@p-l_rd8Y{H$IYllO5 zdW_GTjZPoMXLO-C#0<%$(#jc7XPLm$l8D7TUR0spPuB=+VsiSiDEQ{OXC1zbgjSQ( zu%he59u$)M)RL8WjjAR%GYJb*99sF$Ul3nXLFKpzT0E$EsJ%#4MsTT=Nr2^Z5QFYi zc0r~?I?a6#8RHC#T>GqVR->0!&`N$e*XNU5Rcqt7%9UmGd6hqkaWc-?(2Svv%v1}o zjYe@fkk$%l{UZT4Wzj<(!Xt+ynV>3`w0MN|1u#tZ38-{)l!UT7#E zvvKZx4YSH=M88d|ARMv@*&K03#^e~$5EUp#8-RDr(Mql~LTj#@bS}s^8APH z%?})q#=xnnjC|D!*;`)p?EyN`N~wz}Hyxey1H_{^B20x}X6k7^BJa2h7`Cu=SdPcJ zthAqXc6(j9nuEu}GA%Jq4$ZVeuBvYAY}LCUf*qth=@#DMHA2C_9ByNNMT6`^OMq5B z61aFS2R0;+?X>{GE;L;Opy`u0FjVpXsxAy?y{;zZi#I{jWdbA4;k z_+o4)calpT(S<{OYU#vj^d2;50C2{aHin-Gwp(_300yy6$WyHDhCAkfb5!Tv+Zc z)`1^c2_)-fwN53qhnbbth+Nq?n3jZ;lyuYqka#qzmU+cv6s8h~Nmkym;5&rLI3wVa z8=~TiT^8zMKrbt=$qPZQ!k@Yp3YMBB)r^}n)_9~Ok!gCaia|PZ3Go8rCvwNQ1I=kY zTs7N++JgN32i7{;+XwGDIy;9qhonilC_5H?2!%D$v=d8J>7R+Sb2HUQ7frbMt=!#( z+`9L^k|=oglIuMKb)XC=&(O2uYgL(!CB&%;C_$XFOiSp}3}Z2eg13;n-L3mV`)c#C z8;#iqgiM7_3v(cvm&e4=xvwiLi;MUSWN%Zj~ zzNtS$)PGzB1D2?zlwi8WEeNOd+wQmu)IX13X`5?`2RMcQ!v#)NhudlAIZf*jD z{`dz3BthaFnu&0w7(DdxinLnf5BAd`hA(~HtE@Bb??VBH=~(~%_jk}MhwyhTAen=> z$z}eFQD_}?E>>$wWeuI1ue?rr+MP=|2V*v3wq(_C_!Ri5f0mmtrNK zQVhX1YNd*vA#j5@pSB9}4JGo)x#=ZRqlV@=5K=aFhWVPD{Ndr@d|c49;pFVB%9+^w?`eba&==IHt zv0W+HSiDbL5Z<|is{@7T7cXK8yIoFKp|vK10*-w`nNQEPk8ui;*8EM$7G9Em{qly+ z$z{Bs?DcHBe6g6EEBOr8t^1-mu26%9Ml;$a_>Ff(Jp9H86~*u#CkMr&Ikur3>x9Y# z(Nj+us7VKJv9`(j2)gT1BW(-!${#D^3G*jsUQ}j3~_UPUHfG8Z{l@ zXte4MT|}2`*c`=eXI!v)tSbA& z%f~li{5Cbs2nbjunQ~!lfN66Lz*8&EO^!0=Lzb{M0kpGH#q3h{z?e8-K=gfIh8>F7~!<=?f&)o zuW=jq}ZfeXRVbAEJ+|hgIL@3fwY1-18Txzp)wRdAXokbrE>mUT-@j9lCV(i z;o$)s9ur|r@GQWKQH%%^MXnZ#s~ej$F_Hxroc4OQ)Q&mvf9EujQBASe2yYVoa9TSq z##z{FnxiY8?<&TLg2l>^TjRdBS#Tt;S=id*wECSyCm76L6s{#ZUqbTvk_cUaoKvlq zT8lw`R3t7$K?IS6Tf6DBX>Z?d_J;f(OJ(Wy$i*X?l*T3gbvxluW^ErzO#*?waWzk0 z$D#r`8h7l#<$h>>^1Oyask^DO17ufg`CRdYerAnw{bC`ofyP^T=N1Alju+A^2?z+b z3Qg-R)LvqPj;GBaugi3xu4)L2$^F!Tsb}Iog@lRC|CI*vdLz)-_ROSpji1KG8f^MV zO!ds+&H+Z_at$)f%Ffd`i&Hs_Bg)dt5JLdBpc)UGe~OAi8{*GEvSBhQ?IB5DC>fi# zdFB4B+v9gp3M>EeR6|0tFA-G6i zqj46=`R>bMGcvxqBFiV+f#z46xF$Q0 zg1!lf>zGU^hy4a?B4RuI5rz*{eZB8=4QpqSJ1wyh0r&xLG)I9&!qZUlmlBWnAkqcu z1;qj*ucxDN%+NfB%s5?r{V!E|MFfO|i-HfqE}T>H|AB3a`;?)dzxV7kE*TSy(s`(* zgDd8j>5|oMe@x|x=)X+DZx`i_WrY&7s#rRS6dAm6JwWicLFE zhlN0+?uYtG-uL^FOp)1ID_OI<)ZYG7a={Zc@q>3|?ah#UR>Hj)lkKQ-c^DYT6}H?n zXWHOt#eUyV%S+dob{#cOm%W3}bar-iWUajock^rc$7e%3J-X<_%E9q5_@b;srGC3s zr)^>AWf53iyw%pKS! z!=pXbMPU2b`qA|0simiCCcSxXj;EEC6}+fF^co#FN%((bsq%|)J~^f3qMVSXQo_l_ zFK8snP054$P(S;jDKcR5G}D6I&wQm3ZQ%M!FesWYIMG+lo`h9&68VO!91JtF!ia6b>E>m_~HKA@9?wRp@EK?1;+}+KDSv)0wR>Cs7$JYuXwU5nEW=j zJB&L7df8=pmL0U=)Pp*;5G`@fJOWep@xSHo)wBm{~31Z8dhc?P&#HVwf%Ii7I^Y!GbBc3K;LW!2~@{; zIX#8zpR@0nVSwm&YT6c<+IS^#+{&j0^yY&qW3-1%(bWEVaYSe+bE)!k%C}@&*%uT{ zc){I9{plJEv^hn?cXR0u?A;9wC33b0NO6_(v{2(3+P)_;GJ!!s^S>#NqAjQOe|u>J zK+=yg&%MOfFB*Vs_&iQ3AkUVCzOX+p-#=G)F2hS2_A0(`-!eI3kwB|8a~4cZ&v%v= zLI-Mzl{ti|QWNClnD(UaIVJIr?_?i*ekBg|>t+p`*YRoVBR$m9fZ;e}U!#JIoEt3Q z-|f9d8?1Xw8muOO`8m>iy&G0MFu1RS=T_^-aYGwAShvHMb8DW2`J~xzCHqTh<|=-Jj5}H7p3$lo_LAwc4#E98k-%ZA-}n8Mq_IvOlQ^+v z%H#(-rIW($`pR9gH?kU{G7`)kYF&(plb>hH2FjCpW+~5>I_|EeS$X+F|2nk5u8$x7 z{=r~RPF)=_?N5+%nTpWgDzeVKUuI^$_lEd+c<7cm{!FeE&+x!3803^r>aB0s-}|Pj zvB?krnykawS^}3cPAkN&2;amQ;!UCX=XG0#v<#>2sFCG zn~kW$qOc_;C5Jl`L~VK%1za3V*(}7+F0J9twaIADPoInbSKP^|w26z~VImo=Rr=fz z_UDZ4neWISaS>)i%VSJ+Xo)5eZzb3>;^PzN3_P8vNr|N>eg&^&+*2Kh-ub_A+z)15 zKfsiQx$v!E{5$VW-2#8DvrfY}#-Bo>ZGlE-=bIvHxM~17!oSvqX(Apn- zv2)@0Nfm}AUMQetWa5x3{!N6E%C;HazDBDb^D(yL4vH@4&-` z(%Jx1X(PsAd;6$|y|hrq{C&?h^QC-MsGrW%WR74@PtOz2)$AQggC}o1Tcot&l4h}g zSh6OL>s8PH`uN{t@wR=&v4+8EsmUmP`cczt-AH<}5bSxJ0McQJECx@R)C4|2*XEIf z&BA0SpuS96`+YatcW%Ts2+04_#N8fe>Q`}*MIq(Mi>AnjP`L0Psgu$bZaL#3UE0yV zLqj-LzkmGradjni9m{g?DuYDWqU1zKx;W8L4fV~soM}cLH#f7?K_(RJ3`Lckm6SX_ zMs~S<2m}c9XAN$!i}I7s^fT|R_h7c@Yq`dJa&mSd6G?q(jCnmJyGS(HWL0`Uu} zf)C2gydkkhQpsv$2Yk@_cg?>*Gh$9N^`&a2=;mZ4IUtL5mqdAfw3hxTyS=L``1ip~ zVj^)};fhIoEzP^X*eIkR`i=;-;Q%X4E_rwdXS}hNMhaDduzP`tlB5 zK5!Dv6P`rZOJ{SEXWv1Op^$ExvIPh>%B|kh^R4_PBKVz*bO)@wHYSdG14Fo+t#|wV z+EC~^@D1t?16l&wxQI`V{vb?rJF@=%-Thlb<$D@Hj@RlOqpiV` zUDVj^?QN+_!v7eXcaHq- z5EpFptk@`|w+;%QB+eNQC*utI+2Pp}cnbcHah%0+>N6o3f80OChz_Jk@GI7UTg-mP zXZTrg=(Tq`-$b}ROB4k1`nieV6I(9fdw{aWZ>yeE80qQh`8!bZrgRJEF4I=Cy>)0t zR9@Zr9jbyq8LZc>RN2@v6}UcciPCE*rJNZhj!n_K2qq#FUeos^8Z{z=YhGGeTJKF( zylmHplaxSSRzuidg)s?f7c5DCNbgg%C!x~J6R^-XYOC+->wQg+c*vn5B!8znC*Ucj zqT|Bq7KB;8fJ@rVN&aD|*-=JtEuApg@SL5UK=-r*UGruY{pN+Im)pw6H!tWH{3jD+ zF3KD>>7yvG|7?VLM|!1cmmVW`T-s%F3Z>V+gg2(>it`gMde9RIvlq3*j>(~$nIbW{ zz%%Atw;(RCLJA|^Z1{>V%zKT13IRY`ZxdRVmaXtk9ZRq$fMFvZS3< z+blmMazh_7S2UlH7UY}mZewQFHE7T0a?3?pCS0OVGzyAG6|P{<2I^N1nBs3sOAxVW z>3Gu7)*>EUcn;QcmzD+x2Qjehub2Ls<0e&i_83E>V4i65f*rY*g$AS4{5HM5RwkOq z1-l5mW4N)?bn!ITW@00xS%uA;HZ5LgZ%rDl{mP%_ABeG3&5OCHkUi|A`SB52=HgXH zR`R5I)xJ7AyZ!azRW!w z@z?dp88cY{9dV$hnGD1!E5G)k1?de;__VI&gIECOEV`S#_;)^dkn7@7K0EkmVDKkV zp7*)(Bpp~HE!IS|FT+|n%hAUN@U!@920%LnFCyxhNscfPK2%QlQV9$s{aPUNd)c=k zAxR5crSIkj&g|VdnXG57=um6Y7749pOK=K>5+Gbsr_u;RU<=pR4|jSe zlTnIiyEEQXO{!e45ivT&w2XsQ29NFAW7I`-+nT@hlY^KlOwy>o_{qo1Exs8XlS+2^k$K#trtk=W-b?Wy80o&-Po9B zNT!JWM#dG%Ns)eZbo9S%mm}66t$U#*qG`rDGOL*A+EZGmw74utc5?Hbxi|}82CJ0wCuVvs?`gy#BtY z@+3P~{>VyC68C5G&5Ml@$!{z$Xy(qiv@S?11*{w}#_NIpiC;3l`|+4-yrX4LSZp!7+{Lw7V9XN4uMcD#hmxNqY_lCe7DeZY!B(|;QGB|Oeu}K%p_gx7XyHHw3L8LuRxAI zrir&u;ZaKZ$%{Yhe(vAuqD$vQLc6!LJmS9Om1O^Xa^Ncnf7stSiF++m)E)V7Um#ii zYonXyo1bub&^zEzT zVjlaDY--?-iu6xO_}(TbbFzYe|Gtm7S-H8np?(vH){F}cb+hNu+xh(Jsr^Og2zyw& zKL$_G@V(sVic~1_dC|_#2;*(fL;5Qx6L7uIQLa$y_{|6D9?g>!u%pLyiJsk|ZvEZj z?>X(-6F53-r!JG#9rWkyc0?5eK``(Plm(&1^Uu}h5h}w>JyOyN3cvnI%@pOJWT)6~ zfIm~~xw7GU$x5ebr)z4nlsd6>BVD@LH%d$2ze3DJMB*l0A-&0+p8unBy>6XXOK57q zuJF>A9aFU&%0h8ZtV;wGBqe{J_52bM5juC>7yshcjxX|z$#BM$2KOq-@6kbDW3&CbIaxlsp^u!&8F7O(Hn(l}T}0 zQ&QtK7kWgWFA)d4q9V#r66xbte}l7KyTi%VnI<+LPUM+Jj?VnV{w91XxBjZDTXFwD z)_n6;(|~%c2Lj%}FrVWY+-6MBk;h;-dKEybbN>B~tuObrD0kQe!v8jrM-||N3OSQEHh{BQTI!f;(JPI@Vv(NJo3jGO&4hm=F}|) zik@dv5zDMvjrbw?E9oKS3VnTFp8pjx;fY>jo*2-qo`=1JBo&y>3WS-(O>FvaVt1kIv2+bA&O3YW?A*;tTPBF4;GeYrIofF+eLGMe_uUD+t5cbQHk??-}vTEYG1H!@4K24 zqKR(_F?$JRv_v^lcKj?~lI?A*KSoA`J2)(&p>!{-3nAM-7+G0`goW{oD=3?nbH?1; zwNKE$NS{+!z+;*{O5+&Wy2vuNlw6ux!n7S-DS(znATKyPcAl`19uqlC8e`lgm18Z+;`= z-7I3fF`cn5WS4+PgC|~rZtrnPB=G>rMdkGbuPeon+FZNgBT^??DUaky`osqkLPzeU zbZv!)6UkcB`i}P_==@S53TiQF>44kwzfUbxk0bDxv{j85OB^ABKawmW$&;K0B0$~6 z712~$BtUL+Is(xbFP;P)o_%*{US3?J3lLzdpa(A}zbBYqS?PvdqcNi$gsUYFf8*7o zC$aXQ9YHtSUf{y+Z)3dSLwW8aHSclZ2{8c38W|_Z!eB3%+9?L`AO=u)rvsKaPm)tXM}NMaf8m*C*r;< zsPnkuD86#-bD@T5nuUR^D41`T*d{n(A3Cx0FXWP(A!LLC$aEbUgysRZNp!5{CGN)E z%B%ODo}T2_pOqOjK=`ku zEHvzW(Qs%A8F;uDzN~ZUD|c z-i0Yrox6ZfxmnX_{e&p9D^c6twb+IAU~gn(-H) zF}8kD?(b~;g;_#FQ8h!IkQ`S-TO^5}gT4Ls`S$Qd36q(C)Zca#lcl{(9q52)-d23Q z4Sw^jqRK})Qkjx^AqDAW|1b);ASAPGb$Rvb)2B~=|NiwMvYX?5!oEA6y|6TJ z{)-(imk`PC9pIkfzTO4SFEa7zsc*JnGeMTz1nczCnn{ZrjPPRyoZu``21N2F+mH*b zdS5>xm2$HLSp?`wHhZ>vVs~(+l_bBGXpX;Z#L-;k+1Xh`LxTZ_XFD?;39NZ%MNF#V z-c^#{9rZmO-+=)SM5UtQ>aD8$^oN0;5}75o#O+}<;u5YXRA+~jRY_G^ruFIdQy98{ zT`2$li-APgoj(CIys5GSX`X2TX zGYA}8_sI?sSM@hp9+Tu}-hcSOCC9@sCU@StR_B|AyF7AxbfD#EqXkN3)0 z_DgkMj4bSgF0!8U2}qR}F&h&hXd?eGJ@0#}n@Bv!f8g7VDW^7lzG@)o`&n~Kz_j&< zL>v=Qq5}ENXB+u~@}t+EP@p$%zW-%4li^yN!S?aT#>T3ut4$ltaT|}>@Fk|DWI>9! zlo+&$F!IF5o z?*kb@)Ch$|zaPYK`!yTK+2?HGSBYcy)~d&}VcVY@8eYARkjc?b40iazH;7@XIiCCT zzn{wB2{z@@;v9xK_y+UfWYEUEGStF67=&2r9UiD0Vf;RiWO6QX83gw4=C!n%Ej z+90}MLCvX}$q~PfZZPr`W29OY0Yb*!Dagye6Qy<4s;(jV%9@@y%Ch#8k@-W&ZxHa#kS2AC!Z;M=oP%wd~YVCS&X5OZN02FE6h& z$Rt*;WYuaMDT9dZ2RO>SdU`)6Z`gwK*$rAs%TGzCol0_wE6;`t4*djfkvwYTnJ8+c zQ*ZmXQ^?25d;Yztr)TYa{IzJBsNcktW`y;_)+}egm&ls5&`tgeS~XN5Mr@V&%nG0! z5JZkCblceH?vNFi2og)HIEZRV$w({wo|e4bQLi3MT)?bRc4Y(W&@F8prh8b$p zS2Phgs{w5U>_o=D5p)Pe?D4*I<<{vf_zgug#b$8)kMn}q*!9v->9{Wpa39an$J z*~sRz?;jOa9o*lhd95exVWUG%JMO5h^l?u zNi-5E7t?|@DI%OxSjhaX!8$DQ&94Qq6ajaA9*ey=DU6waV0I0dP4->M^2nJ@&#P1S zwfIq_wXnFHGaXA-Ss>xw`>@Bmjg1YG&_i9`--Co4cnWG|%m%d=FAd6=xQ;oEXdHLx zwMMM@fctqr&-c546a=lF(1ncX|8eqjvydgOJ<*XV zx@e;L6z=BAO6Tk2MU13WS*BXaOy>l8^7%!w*da5~qKAqQA-TLmq|d*@iBR_P7>d<7 z7wE|aU&#Ojg$%N>vXb}zVUSWyG=}T>)q>5N-Cf&3<%SA4f$LkgM8Ejd9$Nzh%?8(8 z^Pogx$?I0=+6{`0Y-UcHg-jdjY(Mtb)Ce@$fD+6{QXA@bpMU7<>#ME(xinJ*{L;8V zm@peFa#yV*&DIti;@JsWPF}p2HnR#2^Hva6al-pGQ>W@Og$4D znOyW~DIvo)V@lmzC{tV;jF%XJu~w;X~B-uyJ10BI#ib@(UY?* zmY$1a()>dH}~SG5{^VmK-k)j+XGmGp((A8GWFtYUVGT;FkLpOw$a*&mgX zO3gWnpzedL0x~2)P>C#Q048Ci#YtIs`3XR#>$4*sO{i%0?gYUG_u=pV4CJ7w^dYf z*CFv+1Cou{NHt%gufP7E2cJ&mbn*FRboc3aIRjPIash;&c1wR7iF;Fir%+n#vY*#Drm8I1Um96rQU=2~stvRtv46ZPDw4Z={0nSY zz}cU;E~c!HCRe1f8TVI}VOLU3sehde(x*u>PJ}5zz;``%IAFocDXzep9nuqp+}u zBjV~SiH+dx{m({YNWJs3(oh~?dl^Kv9u2bMx|{+!;3P7B;+rVdF2?eZGHnbTLUNeL zuaktnVgRiDjpcZJ9T~adOh)@umLIV%)rV0)pC-KzJ+8S)qX0CrYTav7MB58d1K%-l zoNdXbJ9i+dZ}6{andlu#Su(?S68Q=X3$-h$dBzBsTUJg48+(m}nryQwnIvAnNrb7R zEQed((r*p=Nq7H(9xp{1=G|%? zsVZ?6GKVnoUG@9OLL;f^8?0C?=h47v?Le6FLhU69B}t zLWFbsfsmrkvQy-aGIkbYAfjNCZR={{%w%UoRR&i_DTpTpH=8=pXBlfC$EXexgarnQ z-r0bh{UGMdZk*lmoapKm-HK2yu&p>F8{24x<~NR6yE$q1@bx>E*Ef{{2c&5u7*7J` zxLS64C4wm91HU&myhPk)h}jRDJqfFP7gM@#h>v-)Y9C{C{{8Hqsh-Nj*3?&8GTvgR_#Q@o|CAe=cD$spMi8_0Ks; z6ilD2vxc|TWuWN-t0(-~?K5wN zs?}#M*sm7wJx@Nn49|QyL%{e7>Fsj|7@O@TJG;pjzsf6g z3mNp*p?N^}oOr-Qz4Vn%9H8Bu{ms9N_;><<))>YCw9o@H$BC6La!v~83wB}h)+P&= zHl;%YFd&)u8{j$nD*4pgH5jc_eu7ZzMeorgl(4dvF`Gq-#$`ALVVczB1~^aJek$v` zr&($+P^JM=Q)=(-?|&?KRRRFGPv=^8xZgFKDd7f*02}fOYw@D3MGg#bF^j~COh7a3>7RCzG7G%6kQcA`2Q6{~s84N)Am znIjUo@B=1Al57{-EOOhI2mc3M98fe6Jt*xA)J}XwHwmY&2vt+HcX6pQ1KU4XT7F{1 z-9*rv4^{ZaknUw-MVI$rDB8Zhhnv$i;8Eo6+D6jA4fetq3-U}bxs0~YN>d=0FU!Hv zjinjm>Bgvn<*k|TEih#G_pDEElM#Tw6mWYuA`EF|gaWqIi$k_`dM(1W>i7&VkgFko z@qhv(7uq$9Qm@N(?`NFV__2s?UlM>_pXqagZHc>sw};Np#Trc(wUZW`C|jDJez5bN!8QSf3wGZ z94oXNT^bWa(Fe$cqj%%QoXV1NH4TyR(YY)|C~f6e)qVC#=(57SSj%S9;%>Te>16}# z-zo4_US&*9ljj-_qNRkRKU+TW4)oo_N!w0>tE5`A!xr0rek1+t+!y@h&tgKxKn^dn zkX;|cY{U=p&?DvSt8F{@BZnT-YZ$YJ@Fehwk~)>*L}#(=iFP5t7_RLIx3%|VpRJj`RWKcd*$nrK~=!vY%4 zDz!RMSXkHo;}c>{`yym7LxZ}+l+aOp8RJEN_3}NvmY12|Q=r$o^+lCcPIt=UYzL`w z&YZtPdPHtvsDVqGRbqmo@<3$X9&?Oc`4qqh|GB{*drq>POf4*XR`*V??`2JRr-)VP zQ{VT&JH*G>dPVVEPf(ORE;F2(SVyJKDo-aq@l8?#&j`H*RYnv* zcW2H2E#^^8S1+K?x3jKssTbRQ2GFGvB>f{ z;RZw^TWhCgfr;L4SNzL~?xL-V(2i7F-&p-FG@iU0wNG*(Cq8abg24LOF$!vbzl~}c z7A{fntJhaQzSblXXB=WXV6YteYw~znn#EFG!Z$}tLsW&m?CLiM>C)1azS~Zz@zyx$ zzot1VTuB$y?Q|H3;NHZi+1)+2%v+G$TxC+WQ8O`t@kcb82@Prdwoh{uK8`7R#PGll z#x?fGtF*Q*$EKlQb`0vSn!kM{_We5i2=9>8j0(!AsVnU9p}{>{v>IV(AHVy3=xy~; z1V}PXn}*O(r9BvRM($`nTz-%0BTsK*SRxX3-7Un0oI6do=U1uyz$X7~sE4R9gWnJz z>6;}JbgovUUxLjm=Z)GoFtt&+xyxmSxmA2%R_7eIzP|n>CGEl|gO=2m#lyuT2hlHy zWejx}&=zoI4l4*Pm_gV@&!(m0VB~cF1NEVqR17MrHEm1^juY$rig_7fDrLq=`j4Wk zWY(i{#DA!p4AzPlZ90y)eJG=T2zYrpnL$KXS63)UJCw}}RnVWx^P(x}%SPJgm)aMV ztGKkPC)k(2y>#{k@lrHvT9AT9dK9cr)6b{LgAXxu-tmIKW`du_u>p}zh_{k=QoO8N zS5*s`Nd`FypY+Qi1AKe~FNl6#>Pg;vt0qVl|5T9cafI{c!u*t7^52G&b&Ulm&L*{_B1A|Q3S0%CBJM3iU zxu9?9|A(Tp3W#crqOeMLcZYOHH#l@kNOyNgHz*|`(k(E6beD98)WFc)4Z_eJ_uLoW zc$hQu|7Y*DzqK|tdDM3-Dono6>yTP1fb(r}oo2v^dxsHUeGw*=3(ty#k#s0?_J(cG z?h5WFo<)nsxKv@$-CCe4hm!g(7y6wdfydjaKyoZjh0F}>64WW{p)zsD&Pk7?>eq0h zEH2u&p`&o|@tkDfSZr5^L0P$K;|_iEw6BkNWl5Rtz}+388LdHUcEB;0g2E8+V~u*N z0xX4rQ8(yVSh%$6fAgoIAvr(yPI*8b?VbCjyUqBoJP(Xfv#-Q7TeI{U?0cUOv5`~s z_|3hkM@nU^{O{7kj(LZOd5P;JQBK@L_ZCv#Ide<(v&tK0Bl?f$N=WeV;B6nIf*ma^ zw!gt40XE?K1}yG2KcwWYP+6y|i?@Wmq&FHn>48^Uv~MBEicRnXBElknoL56mBX5_f zc}<@#?t1~qskpdEx(v?kTO={i5XR7lWeu_HC1SdAViVqUrqqftuxc#zgW{81!%7?p`mM>0~!G z1%C$~eW=ICQj?1WBDMS&dP?tOINJVqs&s=uIZ6JN6}X}I(kr1fN_1Ce{N;7kLoqE( z?6~wAgow)vr6z%fIFnIN;zN!7Y?)8x`)8)CVawCC^DYWpw{2#V zpwz`rS(8!UTWEM~M`Av*jH;V_l-Go4DkP3$Ik7nKQV@?Anz>bA5=5HL8iJ>9bLxDc~yp^mF zm_^}Z3`~J^qr-9S(>r##kTri^!Cw#7lNi|_XdV10o=aR9DYwzWg+$b4csu~(f$(Om z5AeTNycw6i_Ry31QExdjp$%Y=ZsiHu&OpksgeuJ5Ix=+~uwkNRAlqkQ*xuYwh%7BF zZD9~=VZ67nu;}#0OL_NIBLIZ}icBzvA2EVQfMY=*5=k$?G%xCVqxTYor^`7j3oqz&L#OvQj!5hy|;!0q^v(=A+6Ne0YwKY<{(8SgqN1>t6 zPQ(9zMpl=KQID}_xMqbNp^>Ec}`Y0dVxmuPO))t^tH19yE1gJIy$T!at1By(1X z+)r|a;%SgW9n>qK`s=za>;Rk$I29%P3-GEdPGMWug5Ms>xrj`s0QuMx!qy3GKTfnnes(WvVTL^$RB5f z(T8VdW>QAeWHk6nhi0DQH7fs1UnO!XZW}-qL%5ans+2MNb@s$5JNQ?KE-n9-c{0|* zivjvRrTpu`(9ps{y0*^mGMaYRZCMzzH;7pIoq|3EmO+}$sS25SQ@})y*d6hYjuv$` zLY@qC@#sK|4G1?0Aq#bFT0@UW%*L$r5nHq3f291l zsRhjZG5Y6z{M2|nf(We7@C(!0F>C_e^=Eu~F6FRPoPpyWXTN*NKbvBy3AG|t10yK_ zqN%dL2k5J#`);(jU#r7!tp7TLNyr-GX{1-M+?@+c?$B?h_j&10H8u5eoM|MF^*>qs zL-}W+n>A*-7s1Ye{&OXU2v^LCsqX@ijEz7Vzk5jpAErC-TJT2D(7q*( zuJ_XZTcaikxfy8sVIQ_gzh)Q_xxC5lwtJLPT3Q+wW9!7|mk~Ap`q33SVkB#IoR@-s z>7M-*kK40wRiuN+tSb&EgS1}DZ<5Ky{CLwK(alJqPXBb3)fzM8GtGYYd{P=C9lO!& z|LSuv+p8=bHIz~8W}TW8`62ZF?4e1xq?SM1^i+YTJxfJvfp{Y(56nCYD=hkMeqibU z<%zN`h&G$E=53DUbNAQCV4sq1RMKq+9!Y;@s+#j*A5M|XEc~9ir;EK>> z9Ye`Snwdm;F+HsiHi6~QiDd!)7St1!h41`pBZe}3h_#A%eMPk(TZT<00Pv|Q`;Z8s zuQ-+dOKrxP=Yx*HfkaU&MKflcSC|ej*MFkh=4|Bc?LDJ`8$dH+$xRh-_AT;JJ%JL5 z_7r4Us-o7bNvIaq@uU9~wYx2sW~-LTfGi>G`r&gMzBw98rEG_rZW+W$HeqZ+q*FlP-%Hj}M^KSGjOaY|9ZLAWpPP!D$taXkm<%y#&ikiop9-pmZ}3s^xtAVEiQ#H zh9ht=@H;sB1(ksj_Vez#6_m`VQ4zfN6{KJ9#hy9=Sm9NoCs_jY$0sHLljY}rvGiGu zR1h^~MPX+)m;vz$cf*J{9c`?o8%$$nfssk2d>Ye;!ivG3V~MTKU*eOPVa7ikf1KsH zJs6vjLE?r6G@lKTl;oti=cXa8!o$de^?I(*JkNr6kwZG~k?lXQ=UU`GqJKz@SVxqK zn$I$Zer$}byJSM~w4F_sfkQsxqGd`mps5S7ER(ac?~n9(L}T-IAg(pQ*N2Lpo6n$y zhebY`jn6{ak@=Yu^~t_SGy3-P+$V(WlV;Ze_O0GttPYsLX9dDJxA z|33BrMJ2$UNVAuiF^$Kfe$J`5p_XI}EOF{2?afMhQx8EY$DE-k;+N&rBABtQN_NAr zezc}Zn8FwdL{n@KHBwsn$t}Pi3Akh8Vq-UniOwUTw0@>v)cVD0xHckv@X=R^RcUIB z^Cg4tW%h+qrZM^)DE&?TI4wuq(vR+srg3tPO~l9-);cCI>>Nq#YrRLW?}@jXu3EUP za8sMuL~uCNI#tF=1It{YQV;GZf4Wc%RZ|Dz}>l0AT|xZ3V2)gKxqHdq1}lx7*CoMs)8TgoBV!W?rZp`~nf zWz)2C13j544DaDq<+b1vG-)IWNC!D@T*E@nN7hKJ`%mHV4QtKApTomRxsGC2Wq|9U zMCi9OJ5l3^&cH&eC+k|N0@uSk8E3&YAz4>4$+j$rNE=OF=Vy~VUHcbovuRrKWN~wQ zb$O^#;_vFzu3UACM8$I6Wj@pOi>sIx)-!?@UADpH18T@Q;bdO+FH88qsG3-8%gjZ3 z_oRj!AVcAQRqjSps%LUi{W|sOT(hSP{Ilo^Y-l=E*I!7J&z}s`KT_>%QL)PCWA+wU z`N&$CVVQIkI0Q5|Z)Lz=)O>9}m55Rb4ptkr5w=yEUIMPER)0U~6^t1_K1P?)>LoP~ zq{@ts7E+vuSM@}}(WvhYe!)Af*8n2RwwNr>8}U!-IO6)uimPv#^qI$;xHK94es(!V zIkfi-g(acGH*$GRq;D$DIv3PjwnuKPOXxBv=j*&Vcf>qdi=GfxND*FV`zm@*t47kH z_CeD(1(*&B>t|cys1!%rQKQ*+JP(tN07_;%!uw8pDRpw*BmTIgR3)i?haZNORR0@5 zb3WsrWWiq&5)u8Cm6H+u0e(q@G*oAP1mS}LJ%D=mPPO`D?_lpo&H9ss%u<4sf!|5O zF{ua@aay{}39xobOG!D#wX^dKf+>%BWm{Lc&dhQFtf;8-^TowQAL~B;8neELxj*~~ z$>^de`R0J751-#VdQbS%a&C{^0N^>yb3ejy7&cQ&wvS3Pai~8g&mL$VRT|jG z6wOr=AYz~xI02&(M@%>A#E_N>7n~HeZ$tD|T=Lye4al0iY&#?!_(!c46_1Dn?*p0I&_$yHayj=4SsvJupRU)=cC z(*u|U7e;Lkg#4~bA_c)9E@6Bb^JG++X**&T?l(YZ1{$y!d*g4a;rPr%tU0$bb*EX+ zioU?hsL4=L9Wn(`W0umhR6i}2cob6P!nSKbXU8}RqyAQWbJHV22c6Lke%TS>r>LUc z-E<-)BWpUF9%M_PAV?{ZRXozEGE|^hkDjGZ<*Zgs0RG39oA@{0V1_~X%6F=u=EB1F z@?(bN6tTOP8PmlwzocZw5J2suQtnoNgxQcE2{o;h{a^x??ZJ3k;}RR?P^?H-1zd0Q zQPspjZGtOHHJb>p3mfsr7L%70lhszIWgGEZAvPtKRrIdJH<~W+0V4OqVjXbL?8rk} z7E(rBvwu*7_#3|AGAn!ofLogn6H&8haSDN|T&~ zKj1T+&*CNL#IO3_zGMa8Qi)$@Oho&rK;~Zt*Y84K}r4LG-IsXt@j^@+lFw!m_7 z@M)0P@~d}mkKE>K=je+dhC))8=8VClbF6=j^<^SwIAx6DaZwunr;LqcE4QGv8}_>eYt zHn`=5`jP1wjk7adv5-lIuEFdJ6o51eIhlc9ZeHd$5CiY%t?oH{fs#J?An1F3ELx-= zad|&sq?4|Y!d~>Jo!}Ljr;*3s3h3GcqltG-1Nqcuspuno$y0TJ9QF{-87L$D%Q?X9yt;QuHz(7auo_H96CrAdn11hLC z6F$&SH&p0RtGm`)zi|9Tos7?1=_j_1%5%hR%u5%U)@@AEI%S~TazGi0nek`IlOm5R zyZOyog5$)+D`y?J=brnzYjQvPH`fPuQ(1N;F72O_vpp~y%gx9DIH|qikfNfZH~=+D z>$;#*b9*stFxbm#>ou*xFz4$iD@<2v@~n2UwT;Zf&M5}a+3ZiM%F21NXXd8a~juq2P=I(-v z*eA`Dj-9b#I1*2{ml7j3m3K+~$C@@OXamw%nS6}{V`Q#ka}5xV@1hfv4+apyw^GjS zY$?Q~@t^7^)ovUlUhq`KuW@i()3dV3a?>5{ukK%jc^lqVwdCdH$lzB7Kb*J(K4t}n zyqUEsnK%8R7@ywKJofx7aVOyOI_}*$J-=*IA9L+V#MSYA{!hQ?1EVMbI!` z?6Z{&)*eKRw7*RzBqrB0@PF(Kd^GLQku4&Q-kyeKd#^D+u;+fu1NT$o>95F2^wAX! zG}`{FMSq{S2i-#a24-6phtH&+gMJEG`?lrM_~BM6j8F?-s$(Mf%A)H$F37zvBKEG8 zIgz}^(XnKoV*xI8YRK~*Y5ZrlNNr}P=j9%d&yae2zL(OH3^5FGc)79>SJ_NRND%hI zkqI-xM8OBNo0Zl;5xlc7QH6Ld;4bdz2tfpGk0n0;=mwGnJ)f0G_b?V(VrXcCh@<;N z;^N}Ep63i`PkRg-={4Epsq=zhU`cL|-;j3^D@S$=WtxqN@7uVPv+j;JibZGWH(2r7 zsB4(f(9P8ysEElQfBHkkgSVL1e+^((0p2b`vn($UM31ASq>BQ)_OGui zq0yqZy>b$-TQLGvCR7v@I0~41gS7M1rU${EvlXtJy$F4c_=(`M<)x+ZaIs{5dEfX? z7-S?Efe7qcC1UiAvK_|gN`^&smKCUVF@<2f`0sYEz>lu)?-0SO+p(lhN{pI}q{gJ}e z%aOl$oh-%P4tVHuMIgL9sdhcD!k*p(mcYiYyV=0k^DM?t_<-rxLy1S5Y@@LyYJdd< z_>I+^oE&12$(?ZH;OFaQV0`-f4SFoM&7`_Z{Q3LLP%p_{c$%SgOFhm`JuE6wCdM#M z#P9O}>&W-@6~;hm9Gyw4a;2j=rY#T2}HiZf43v65V61LnV0H zox&UlX@2&oydE~adH~Q97dbDGrc)_k9Bd^0?u=cYxbCZv0P+MS@0rgpx0SynDGsr% zKVPQOx(un#;KKWxsE771U4W^<)eL?wh&xP(NVCxgAxi8ikB4q*CQ3gc)~)`>&~N7( zJbcO(R^0qK34xi74-VV=xLoLuQMnHpssR_DI~Tt|X#0hW{^+u(u+`Kb%eojEZ?#eR z?h1H8KmwO-uKYzBl@JKBrQ4}X`IqTk1D4T|Me2adxYxf}#xFV6HCvfcZdH3lRv-vp z`CTjUeT_FQWu4_sS>H@{ibYAYJ-$3rJtssWnGz#N5q{W5R3|~A@FL}va<_Dts|vg* zWlU34;-~V~*W_Ksy(tU~Xr+w2;a7I7SXUoO24oxGrZYeaQAYpn3B z>LT1O_!|hkWkuzCRcrF_P_3p5;UEBXdgCF>-NX!TJ*;erVDVftA|%{AOj59Qvt6Lj zfaucHg85A;oImN&t~wh-u!F-f>}5`(#Vchsv}Zf>eHCG;^Mg0=izA?su+;JJ^j6=1 z)_OC2xqiCFkRroi?E+I48U6HL51jX3M@}h$qvzU3+;k`Wey0??0!CcD7ff05;YtDC zQ|7A=o}bD}*`Uz{tn2e{?u_p!luaWe2NTP`Xzxm_OjiIHFG7Rh&e`7XQoIx$<- zSUjtASC{90<-6yuVrIrW3zs{lL%T(5g9SKs(dNhS;P=;_TzCrRrTfE!m300kqzPum zceuVRk)UFyO_;3mHY`5Pu0V%@YNWd3p)Atp1C~kR3iZ2Na3Bc7ud`%Eb6fy6z!}7q zV*jxy5@~}S4c1;$b2cslV;h^0^9=92uzr7|6;F>LrP(*8i|GW+H_vytJ6j0U48(st zxAHavw!dy_LgpBa8KI3B8Z_O#pgnh!yQR2i3{<@2x8E-JC(gm+z<@uxu+9wv>f__w zTVS3lpRX$D@4VTIcz7t%ent9e8Kczll?*QUh{P*4UzQ=M)AM0AitK1$OPsyY1Cr>j zVRU&K&!q!dd*L2>RS)GYwiD~8&J7Nwg8iiz|Bk&oNpc`S6%n><N3xHzZ;)cc zyYJo2X)`fW(+3iF9&igHzlFhdp}(V+XNYo3c>gf9S~%vO7A!#TAyZpcB>e+SBM?b% zg;GDp`Lx9;adU@9yS3-oEwivco|B!MB}F}J*x3{B0R`yx!-0wlO<`Me(`&^(i%Fw>A}ZS<{%z?(vX+Sk=xd4HLZQgb+A0qF#649U+0%x zmOZg7qsJF1gn+1;0nm|HC1$eDq;L$(rQ*9{7Q{i)o{2EVrR(|TZh=?^<$>az ztlFY~fW4Ecnj@G{m_j{&=m||i+eO;`!DmX1K9UmD3aE}$;zJS8 zXG<9@9x0x~(JZYFWth9YoxN{qAL|ueL%S|5e2`Ui)$3}wIygPK9#@SlO^$#28P6i) zDnC;9&Ajrr4P!Q&vDji@)Q*m11l6UccpA=qih>b*0To8lw}5=ec{eIA{`{ChY80wr zB)0_lzR2oneT>Crj*_L62zml?4eC}V6kltES?u+k8rl={`bb#b{O_-% zSJ3ozw^FoKN>OGEbG}N>%hAG1!2P|bW|7XtHt*=}xQomD$A4n2>r%<2_ydUKjH1u` z31;HhtV@C^oUO3lGFo-!3}aib#+)4{?yu4^~T$|Z@!H6g4O>nU- zD|Il9USY2+uk;OAuZlp-b%R%;B4Dk{= zqj-L3bf8tB@qmZC%NyuuCg&w%#QE_L3^I*qo9RQsa$acu7Cw@Kz^e7}GJ0T(%%wfg z=*2}x*bx2QOemtlXlq&QuKf4t#ffz4VIM8&QXP0~{NQ_RA3ka=74u15Ei!n=u`2m< zBJrE^>X)H;CYeGtwzbZa;L_zNi@$E2O=26UL_CYGL6dK2C>nU}f>J3y2eLjgm$leM zs;DLl5CHR{xfQ0l-m*{z)a%$nztfnOimMLZl6Z1cu)nLSA32k0y5J7HzVCe_ObC)C|ZFYZ_F~48Ve6{+c4d#irS6 z-@d5!9G+avi{j(I9l0DvW*BmFk10!gbO?T>ssK>JF9mfvXdH(5mzilt_71aIF%%Mh zyh#v#US4>+PS4vM7eb+fmW+$cOei@o+aOts1#lF#J@0d)k!td*U2G4I4QRG1j4&F0 zhij4XH*-YWxsSI{l5||YOm-V+zHET^DVt`m?_OgXog!&C;&VZi>$7S_@qw zx#TD!N*Ez}ue(5-X_r)Kj-eix(k*9cjqCPc3ahpx68-sjP=xo$S=TpIsHA4#!<8Ld zzDy#LQXC13HnSMPU$=A%)q-944mk>2Zp8at@gjxoi=|{v8R><5&vQSp;`2>`$zyHT zwR;zI@jXX0+<*oS=hbB4Xc{BKsH&pOH6Vruez}9@0p<;&yXWk{t^rkc>#2K5@vMaB zio{Xtvx}l8VPlPM1a7+nHwq8P$o*s!Y=tB@^Yr9Gubgn>Xh93@vQXpgOB2^_Yw#Lx zaeaL`K$%Z2et3K0M6t{dV_{EWC?1s2_#okZ_8n>7*x|%MSygyhWSkf>F)_h=`cbDO zW$6d?Fpvz}_M{<5I}BxHb~pwzM|C{zy7@35zb1@&2}7T0IA zHw$88X8JMP>f0Z-h9U+b6o$$MC%|&jbG~IcJJ@|ct{kS&hGpNhBf&nZkzAr-J=&t5VxBRqFDJVnwv-{=C^P@~Z9hVI4POXDeze}8EL@%NJrUcA3@GbpiMN-<9-?5s#(_g(;4zjl|qqmDg%AR z)yT<-r|UX#WM>C{#RJgJ_LS!kqa)b8eCnuu0E&D3L) zigog> zk$2wsY`^v_hu_>~{Z7ql=LKvP4_QtonsE&4q@jWVcV~q$L^5F(OwM!UrN$|!BDPW0 z8$EKAi#2AU<^Fc3YUvv1d(1!L%mb32XT3Wu4&kK+9Itfe3UR8F)8y$Cdo?}(3H>%B z{G&-QL7bx=BsIE2Mwej*dRL34IQDMn`G29{>772&P7(0={IT=!Q)B|+G&6u7DVI@5)XBk_B<>-=+?TVo?x@Qsaufx&Eei*LH7^IH4;9+^v|ylxNJ zP!a3sRqY)`Lz%Lx&`Zz7N1-VDqMb{VyLV2K%pXAKyzIuZLXcYJgzOjJ$51-C-&pw{ zu_FxGS)*7?@<$$VJ=xfI=}P&~7^}IMlzx|G=*L}zbl&r8Bg{FlWziD>(&g)#c9;98 z+Ubc!v2_1zQDy?`E{58O8U?TYukES~XqnvU7Wp!Lf|r^0!xHi^JtnCwt`$;c@`o`M{`G{ ze7>s;#4G95)sOjoEcyC2c~*9yA~wuoCX$v*QH$*I2RioxBVPsJ!KT!83Blw|ejeNJ zJo64dnST_;v^C>$znf_>xLw%wCH(?H8$ax3X(%*cN~y6QCwPW2d>1$Ql{LKI4_RH3kBGJTU%Qj zX~So_4VU+i73*We$!Mc4Z-b96Zo9PBDiP}or&^7yI9+m*SPq=n&c1*Den{?a`{4&S z5J;PbIxqtAXKu53h(Qo|$40K}_WbY-aN3+{qmsPH;n*k!Di#zg7QR0r)vgb}$;MsN zaL_Ui7^R&QQ3}9w0&6JzXg5h;D&LJ9L>S?e+P1hlbLR}WYI;3{IW4v8IoJs&b$DGb zb({~kj}CKZ3~y%DTl~{-TraYAyAL=ijiE4)5Ew4q#S#V)qB_TIBDM zgmxG2ykV=67v!{zsBZD4!+()csvn2`K0G|Uc2fO^X|EL9+9bvk1#h2i{3&=8o^ZL- zLe8exM-js^o%pdJvMpp6S={uTxlDYFtD&Cux~SvJ3@Dn#M9W+?AsWv4gSa#; z(4py&{BiQ>F!wpwbhiDqTMD_axO*FVDqXAF3WOB>LvK@8w+J*cuz>T}yTkJM?Cnx~ zPZ0QiLY8M}2d)0lvFDXh0MQ*1v(B=dP=WcF%gme zQ|iJW)Bf9mxsUM;$%+}C$4kr0c4>4+G*OuCM=SS?H=B+;sGvI-2(E4rtb3hjq*;5?>O_Iy#k#lxHu3wL*k7b);&rA28(DC$PcidoM!d^RG2d~hKy@VA~hAwQ5w zgv-)*5!kxOT$rp)kOv<#Shq6hh^_zB6m)yb4=;*zztU2_cmY>3V%X^>vuZfb+%$#s zMXUbsSC8lo54D59bs7tUA9SUm;i6v`y1FX$mSuKryNl0pYA7KEan&!%(RguEgDN1= z&E3Gi-ewvuQ*NJUf?~(!xRnv**W+CZYw)@1OG2c`Z-7XjY6DQ7z8yP@^DPz1SeN zOt8*tv^I`cMlw7U-keAihgSS~gl7eHhFG!2_6xz@QW9}o#p~tzQ``7g1J!Q67;L## zyKCz_jm9Hz@vld|M{SIGHc4`hyyz5vXp`VGe~Fa>l1hW;V=m!I!FXud;=Ib}zuC7$ zF{Aq}4TAeBabqpw9XbBehMFK7)=^S9PUE|Amsi5@9!;Bl3yJH`faZ2zo@VT4XKrXX zZOcKKOjfE9+s%&Yde%mPO?&YkjBS8^nU@=Ux4|ECtCjwd}j##2=8 zOGfqUNHt$mvvV&B;Lg}pBKrH+s2C+QBH{tC83{1*wo#7Or zX52ecRu>_99SbSakp3b|G$qM0Da$Zqa~Z%EIQ_w9H4UiCOA4e;fvkR%f&U(`777eH zZ{oyjt!!Q^7YQR}#Pk({yu4B=vCMOJQon!H>Tn=r^8Tjoib)Ee4E* z_x7yarvHzVbA1wQw=cEn^i_J@Jr zrs0M#mO>d;jy&HzCKY>EcekoZ=&FTPDH+zg$-Isb05%^=ipY6dhlp2bnd|csUo#p` zX(>tDl@w0M?F2vi=>xL3I9w$v;(A!;eXI*HYNn@#^N;N`>JStTsVzPtv8 zd%@2xFDG(2z6`m4{U)vpANOL9JJ;^-&bQ^(f+b46*S;aoNT-GULo@vIXVvk0dQx8Z z8ypR4hyCYIe?NsyqfBpGO#j1S7Z03TS!uR-`~$d?fdGs>hU-7&N@Nic{7x&-wY5&? zRpIOM*F_#1Oe$esVbZ%1-%oa_#vj>2w=4O&p71PDiI8AOmPgx=gS*=Lm+of@}K_D3Y+3em42CdgD>5coO zEccLpteV!1c1!JXlIbr0bp-#J&g+ZBT|#wW<#M11&DfYm?T3KJo3S5pSkD`wbl#`v zMA~Ylja83$-SR7+dP;0nKbV6rN4` z^u@%L^3*5`n+yR1xpJG2NM_RrH>=W#>6Qw9b3`h6q$%$D44H9b)LSXsrUf5L(MPu` zt(|T=1$zn!@=&GtgHK$Z?usRD5duItxw)M9s82yH72}2+!N+qahZz}?wP9&~jmrsi zu=VqmQzPMn03a!RPX+&Xi625X>~L%@-LLl;j8Y%U0ECxj8uaIZO5aLne>MUAvNqbreQ*MIACvfr;((n0JE zgFL=p0-Y$$h$m=zBdEOmAAPxoVVnOC>Ku^;CxoL?N zYoP8%zK=QfhZssC-Vz7ea&v^Pm`XSR(dzs0YBcEGWF>m+DPUX@{J=IG(!JnmU; z?l%25jzY_*zKj6Vk1H!HJzL4f-Ab;#fj$^L3}dA5>!wfY#4hDW7h8(Neh{8-%&fE3jKF(g$vVHV~ng(%o*+Wd*6+)^N z{wFPPu++22QDUf2PKrCZ#rjPsFWTf1$#97vJ2*bhYo}cgE76;JgVE8KY%vdowS709lC3(r zu-}cO0Dtc3%yf&{8?Te8EDLcp)P{}fTZ117yV|l^U91=t z)3T1@!ZyZzyk56+fpqSDH=%Vod|b0Y0uIye5fEH?M2gHv9)Rae1ixI~F_=HNfwuAq zM0?43m$!Tl3)5y)eaOa&2Fdb#3d=As+8ZEll+xK81nR)Ky;lL2U3S7 zk9g8@9qe9qcTqpp^xjZM=awk=oCq{OlCexSmqa5i7y}1pStqiJiYF6(UYzR^(GU~` zHo|yuTa< zyFLB9bZHu;gTUM>M;P3eLf`~hWmoaPrRr9qXU2~%91j1noeftK&{qPNHs#KP2osf% zh-<7r%GQ#^)K!;)^zH~6(@y?mr1JNe2M$L08j$x0ah`>3cDSa0$*5#~a(ot2=fLXgAWa;MT_#yL+dvI+7 zZ}zzLsK6pMml@wm{(=MMX)d(Nz0Qg%5XZoNf_|Do3<|IF?6gEbNZ;D9?Oe;M0wSH zTs><-IZ)m#BU%>V;byj5*0@Jv$?~u7ExxCaJ4 z_y0b&sIMc;-`={WxF(=Ur1a5ra2mr*iTVxsv0`}hcBJnL34<1$XIb`L?%hr?z~YIg zi3D%W?p8WFW)3)E5)}_oB(vWRA9LH5 z+-P2g``e`V7sq{wm88`W6Td&4cX-c!pEv7b|Lji2{;t4A~z3tuHdw zRv<4ZJxC64p`%W8ZLd8NFA&HGGdz&I8j&R) zc(L>Jv?6XLK!Tb1?oip<%i1r z`y1IC-5Vam`agL%`ePg5^PfSZ+e!3UPL7Tj$5L^Aa?(pch;OayW7XUrFB~9RSo9uh zJj-WH$nT-&PkT{;taiyg<5C zHhaEZA8luoQkVoh-MO}mJ87N@uWuQ88S0pHxl9^8FHjy~@yt>fV+ z=;EPw$QdEcE30GF8<%LQR(?MGLRp%pUFo7+u3aki*GZAD$cr*S<9D;~!)D;p6JyX> zC~W^ySMONc#(itS|BZ%OeYbg)lD)oLJ;+UzeM-rLnv9c_9U0nhCsNbYkl5nvs+wN-QMX<={m zINzF?Np6476_2T3w+su@eFzJBMWU4?Cc|CuS1KIqZO>z~0vmMTLZf!w zp{3^j@p*Z@D%X3k9Y+^zY;j9LORrcg}k`5Z0LlW)OVe`)%J zMYAu?I81OC@*``OKl%e(Wi_k5mVPN~f_a033LHJnM4*#~i`>S+Pq5RP5!vzP32Y6~Oou@Mc|H+T7Z# zD!!?e`{PXseeMLH0V$o17HGA$`BT%;I&aL`x#&AL^7v3>cd-6B3AP-_^jxDmn4S=C z^p*c*5Q`=G@c|3S&wrHriI0kKVpjv7nK4Q<71Nt1Rk@ofU>mb7UCP`0GB-|uDz)6S zOm#@F083}QJx$@%)2F^6{?*Swl0g%#mjs*Td0#&_9=#%C3&ZmZRT=EiG+rXp{`upZfU9 zN14d|$5eo;_ok7q$j4RM<9d?n0CM_Jilva#Zg*9^;ztezwp)lmV&oQ<)=&$&NwC(SE!ygw=oS z7_7?19?KNiII|+!>~8bh!Vq=a|8MN^JhL)&47RI)WeTVpv36kdy_%h_)ow0)nmrJH zg|-yO(miMx(9rpOvwWezLwZi?sK=tq=zwD2bl1DJMZh}rDE`8Yi)A;UsxqB z_~6@ZR8~6vYF9^0iFn_c82E2a4FDC9zT9K#>A}H5yIp-`^JI?SfSK@V?2pdJoX)uY zlaI~TIJ9hSk)f&ubtZ^8bpQ}W?`lby&BvBU3RpC5Ivx!fNk6e!9@PH%0!fzSoe^lb zG&pa6SSt4xHKEA-wVy0`e>I~SbJ1q*m)EYo28CjCSNm{?<1nLgJU<4<+_n|cy8KKx z9=N%&3Es1D^lIQs_nn?zzaQz( zAo=BNR)<+}Xne+q2WM_Jxud2ATaZa~btCgVlv*H!xv;D2)q?6(di)+i)oS^VQ>PM) z>S^Pn(Yt}Dn(iHt|zqL=pjyJ!P_ z#p8K*nK?HP!s>K~cN?KtbJYg(tJ6}&X}*h{PHlgB!Tz^~Z9!s53P?e)y(KJipGc(e z(4-Y$CyHHEVEA{3BK%=*6F(Ff6KxP8uj#)N4~9?}n08Cb35e*SJ$V0-N8B_sE34}% zr8-(r&al?Vpv~!6JBK>n`JuY=(FhfOu}u)RG&n=v@Z%xpnKNf!~U5TL?rKCb~I&4Qz`Fx+#*%{Y) z_HM3s26#Fwl3iF>SX92Rfl8drB9j_9k@V>KBbX_!Ys(Q3Y^O4nPZ(B?W zO!%^7M>rj3k7iXbrfb`M$@ps!{Rld5*V^bt=stz8@Cw=zKtL7&RZ0BK^P5Fsu7k37wr)R9Ufze1*l1{n4((6 z3}iIu7ETG~?aZti#EcyFO@Z)EvW=W7A1-6hJSk6>j*RIQ7mP%T7>t%PPe0i@IrIq| zNyo!|{`G{G#u25a0$C8f1TjSm@%ioF+~dhHuOfAQVwnH&5sKZ-XMj;+VEy>>#O<>& zt8$edZ3>k{&@akogd`>zEflWnlBi8^BPSBTAeLa{20oq3QTq133~7yaKAyH6#pXet z?ZzAXgJb&E{1THRl4CXvCjL12-#$1F+W8zy_WdLma{IhkQ{RNNfGic!%9&^_NvMuQ z9YN_Ipb{(gl!{<+AV6g1>lYNp5?1ngAny52HRx(P7hE$KmBgqyFrZ=Qmf%}eo28>D z<5gPg7uE;*+@yix_oQJ__DzC+;2yOad#4Dt(!wLeH@lFYNNA5NaFTXESDQrJzx>^m zfda4KcAQddENQj5T)w>6rbf8~Q=bp6oXgYl|K&NefnC;mKBIf=2oo)SYC%__bVp?w z3z)57nul> z{?EiLj@7ZlhjnvS>S)(vQ&Rw^^zy_Rl+D=21c0ENMpvzxUpBV}0<v^V+hK>K<*9t^y;^OS}j?7Vt2O5Wwi=f;U zNmX~S(S{{;)C}c>E1D5xFaftCx9+FY4Jfn^s}{op#R^>D#d7QLsh+X6?#)c+!x3wS zG9sRGrKAz4{O7_k*Z_LcgB0_p3#Sj1ZnXaC0ILH(@!85^JX@I z5*7DnaXt(E$I)4^MbWllm|jA28)51O%j6y1N^e z=9~BX2YbvhJM+waU)Oow2lgzK&C9=(!RUSk&>kMK2oB88*G);n-CP=Yxq1D!28$&V zev)exAHI5>#KJM@anIrLA9)$0ge)v!%04(hZJdp{xc@u)etY^5Yk52u8h!RUR z6)A1_`uh58)}^fvkjr#F#&8*DdhYCJS5dg%8xSFJi50vk+el!Zy5qHM(o0NgT-!ceh#WH~m>vWyfJD&s|L|kZ{>H;{UGWb_U)> z=u%4)Fq-`IY+(toTD?-E0T`%2_IGPw%zj)rrP!cSQdzF1^h)cp^FeD>M_n;(Vn?D@ zI}Sd9W(W)`)5PU?Qj4Kw!~pl8+aV%CaCQdUfLLIR99E~`glekaZi@fH}cph9VZY`@KD-i9fi2r+q~Ie9O@ zN+kt*3;Oa-(+a&KZfA~o{_oAi!(mx zZ@a_EqfncMltLL)=xGbHRb4kjb_&M)C5MtL>TD9Z{E0?XX-mHFOLv_{>wah`>b1VH z)&2k$?B5YyO@~%WhZm>7A>>`%Cw{J{RJn(oXP6b7ahE$ z2N=yAK7JiqS&abT|Ms~Y;jJf|JtiyUu;M~@wo^~Aocf2hlC%}a^W8#xo2Rev6%%%X zJ0J=OiDvnyKz!pw$)I{>|0L>va?be2cY;XjRjl>96vb?zjea;@PT;QHU8Y^n zNvpSLvk?{!dk(ZL{8%4eE{kXuJE%@G8jZg?I{v%6{^?X0{7yhn!0mL2fpu*CqeIG| zJr(Oq2)dUpImJP`1=RO&hgp=U*-#ap0b2*~5q90G9L52_(X`W~(DFOyGUiacxKw=Var%kAF_0Z1~aS_RfZq3v4FS@}at?7v&5j<_LM3lb^HOhQGzUnaNrd*H1|)_>H@_^o%-1j#ZzfBO9cQhrF7dyArp$m1ppWU&?(b z$6Fjh*`vQsS4@ri7jK<~m(V^!i~7~wS20)36_n~KBS$EBn<7^cpyLS+uvP+Y^U3*X!b3_K|h3n;6ad=t9?br-D^;J*EaH$j?kr8}vEr4iI(p=u- zD{Zs|&uG?TszcsdGe0e7OnJwgfq-U#8vERcmb;zixm2%JHl&3lbfXy!Qx%$63?J5F|oCvM5h4HgQ+ri?XLbQh;X^;im z{46C$Ij`r?Sik+@s^JI>%G~Dgr&Mu9r7VXVL=Uq`9z%P9Y$~ms#8cOCta=-T#YWT{kb=!(T_ZG-oqGu<A4H)LH;sKKtnS?ejqY=g-n|InU~Z zK}%Q3D6ilef8#mRW8Jp(h3zi%tct4~L$9~z11=$`RZ3G>OLe29Bo^Ban3aM0AstQ`Cn6JC4{G}v(4f;=a zt(7av4-YT=B`=z6N4Ht+Of4)d?3X(Y)_5x!r*Z7Q+u2yk*s6|ZqJ5x0*QmeOMsU@K zT>b@JRf>P)`&eU!#kn>U;&)hBOk-Yd?lS^Y#Pr#QY3=a0Z?&^&ZmuGE*e&`QK{%bQtxxtmxvTrRL9?8QCfmUMlbi|Q`H2o?O zU4$|!>QBo?57)prO-)rUJXU%C?+LmP_(Q zfpi+3G}h`;44~VvRTLV$!yWfuE*Z@*JYi&)f}DI>@3vU=V!vEoBDl&qS8wsp{8T}K zX|YmnzV$ctHOPnY>1iP@zUk??5-xo)-cQ#!cuR-1n*%^Tpkv5+h6?)KX@m*bv5qJx z09~*CIgdLlG04GZsUyw%q3Eo&sN-Ugk9BDSm!O)VnKh2CuT#Nex_YnUc)of`u%-d0 zBT%Xo&VA6I7Pdqhmaf3X``EnDsq{~M68u(+ywQ1A@e2-qBocYpSc&(E(GQ8*2BV%Y z+rqCK-^7`9$k^5<6Iwayq>?De&KEwi$Y z2n%-8aNWx+zj>a9$#j8l{>#Gn03M~Sr0!#q@P*ttuPZY;6TWw^dt^bPm zZ?FP0mkCj%WSk$lD65wIuK*^(Un5~9obOtNyiIABKQkEWU0!jHJ?)%6s`+fPCCf=| zm-`B23OlYJoc*0MsTyBWE^fN|Q(NG2NhNzXURF7hD#y8R6K3R!bdgj4_FqE_JJPFs zXrV^a+hKbe0e((F4&kYVNpVs_f~)s<2)mzndBeF&ok+spiwX*Iiipg>U7 z>2s|AVKZEi!l+ce42Z}ysO!oU$L4l@;?Xg@E4u6p)z7P}MXd4+5k&|E>)u6Cx>PBr zDeTsrU=B;oL+u;&sJD8*V|Jb#Iw9s4*GzuhV>UK2I!TPtaIPQ&vR$#xNlVjqm{~9cMTa$8 zk72nB?%A+0K1^*wzB7FcqP&WhI6W`bMy3%~t^WlaV%0Hm1YA&$hk^0_v0igSfp%dX zsA3q5EYX*MN0!qD7@>~8honF}0b2bCQ@BnG*v=*cl1H4!7E{dFK!lSxxl1`T1tdeif>=tnkjz|7C9PS0{VBdOerl;lkhLHWyQG_P#=fmYsI5 z56!_RkSBqUnTEzjg`S!b!EOO+{ZUH|2M|P(SskDJZ8~o zbve_Wq)TxGa)(`AT#Lzl*=}e-(Hmzy2N-S~n&bb#%-z!Ryx5>+=e2<9;35*TBH@`B zz~V=UFRDEAT!JCxKK@4C+vB>iF_Xvk)6x_(`V~&me+y#g6X)xKCf?5=&nWepRBi~r zrMbV1BY6SOkLwlt$6o)70?`}ZnMxW6O=Lrk3+=f!610e+#Wq>xj>Y2DpU^y{f@tGOu4-wkjTCP%Tk4BM>5=!@=;aT zu9t7y2cwvi`CQGl#Ab$-Q@ws|V{O}upU3asy2xl1p80v-P#{@+zXUL|05Xus!3#Tf z#M7JSb@+P5Hcs^pM4tO>U+Rj}{DV;GUkAax8#g!0htaPkp|(lu3quZ+E^4N7l`3yj zM`T{gbAn}X$TO0G*&^>axQo$Fu()U0MZud1R%?Mv*>I|Is-Ui;um1;ARkAELHaG=^ z%*qZSpc@z~3t&mSW~vA(Angsl*}T-E#~=Nmmm*oFo}c`qcnjPMfBy+jHYe(S_+@g| zf1AeBDlXqD;97D2HY^8~4io#AHb-2-k8Vi9Ynlwh*b_1xOtv^_nYG-8S zBym8tuXRHeE+1LiYTT69H(G+yQk3}fHnuKrM8we5A8=%jz6GS@i zj%5qG^OSphHd$_URT8@Ku+ZWq;h>9bG(bW4K`H8aFz$Ui;jF>ezG`j7V@ug8=<_fg zxp^>}Cm@Vxn3bz$KVN}=1tARbMSe}8=1xD(VYOPJKaYFLLPu?GQ8d3lrYqgT+5jpH z!tCMR4DB8T-w^YxsL$H59?Hida-6x3n@`!6#Wo|39U7Pnym~HUkE!0gDGZ`QfmGIE zniizzk-zKxv>hJ|!WDV^7&=m7_Q5z<>tue{@K)*N?&bNPg(&+5PWqRdNuccX=yvk% zbcw6Qydu@2KC~~3@1le7O_8_6OdrJ(J@Q>7p>FM^TnMIGt2%59u zgYV8jN*}yJCT-1@8*WYFh>LxV?cx;~@sMY@$cm8}vZGJ)d=}fZ$w0@=&D?sZEG0yP zy5V`_5pfC8$k#k&e%T-M3G1|zoD9SL`ma6J$Pc>aZ%^bSl}Bh}dZUc$?dFMwF(p$O z@s3S(nyf+!QNJFYpYm=E8Q-aZxIy|ue~{>%n&`vP<(OKQ%%yaN35G0%o2p1Q@ZO$Z zQ(SIS5PW@5T0NO#lUMV%PhA~!?A%#TU!k%Ob(&`b1PdvnCj$4$ERu-5i>}MQ4ZUKU zeNGzjCrw2~YwXh_tgOHTH3LnJp=fD}u(J#Q_AW&}~3t5H~$m;W)n z(DyE{3QzmOQ$dLu%F*pUlAC`G)|r`XEPt}p$3&(fm!+jGI}jDjeH+rnYD17#3LNN5 zG~2H~Ei`uq3INyV(H;%{!0wN-deNar+3!Vmd3ou7Q|xa=f~8^d-vdPZ{*4jGwfT68 zSHK434$e3KB@ZHW4gTZ%J*70i8zeyeLG1BjFD*WxJdV@nA7pg*awb9e=#T`8h z1_{fBy{4czJ~HuD%;;dYT=jF_Bv7Vu;R$CaVIj4Dd6a&tR$XU#dLCBl1(!B6F^F4_ zefzX}n<$EpFUoQhEA~%HBtVo-a!KKr-nBf$*2zf~KI-@9Y;=&Lfz;S|YwiylnE-C#+EUNPDw8VUC&Q1SGg~%W~UVhv;R({TNauM(ySfXUW6Two^qRwN`?dOQa zS~kAN;hyYu|G2}5i`D~xP4az!<5n7_s*QdxC%C+HJ}W-4Z?3BP=xxzr-Y)q^Lc&*= zHFuuFJR_w9ANq{6lc(}~Ao)f%vW};(V^^+hj=~sYF$(`TLJ-Q4LVQA=)VSHvr?Nub zWx=;hMs(oB8YHxk1!FPhDk+Tgy%AN6p=(8jdTNB+@?-8|)en@-TM&F@rC*^{06pq8 zLs~Lr{8tp!E0gt%44Rk0+~-&TeBkbSs73Z|l58hqESEGN=WJptLkb8U<#zd=QXA5p zn3t;Sre)^9mp=CTXGBqVXY(cIWU-bGjx~gUIQuh)2p`N(TBXxwod8Tcd0Wig9*V=z zGVVNP53sxGji>Bx$u z(`)--T3!kShKhPh$ub&|@|~i09^d?yb;%^tyX>q~U4?t_EXkAv;Qc{{XOWc{?@(2#QY@?K@l_NESV!16@Y&@t27XGPbFN=$%Y}IKnGE z7$W3S3I;q4Jyf(!I5Zv^Si)hX^Z7s2y7GbFOy(r}M*T|&Uz^+A5-ijjb3b%&a1dWt z7OdQP>yJ3qZM2Q^mGSyL!Md3K@pwd`?SvIZ=)al|NL}r2l^$u-6U)PPBLyd=zu%f7 z4JYQtg;wXvsC4Cv%X)hcNY?nHT&=@_lKu6r|9NT?6D~iha%W2odY2IAW`z>*W-PU^ zzz+1d_!~!ddRBJtMCMqsKfR6m4PmX7W<3%(8nJiRX+*3RyDB}0ztZsZM~=M>4u9m3 zpV)RjZKC0ya%kU6Yh~nlWMt{Sx`Z&xcWc77{JMnx`}?N;>3&!1j6*4kLd4quA%L6> z%)*MY^gd2$F}QvzH?7QO+gOad4!QdS16fWNA0US_y z5^p-*=PJ65ZeOHPU$G$J{Npo;@m_l75=ldN~Y^RrvYkduqU3 z?9pIiRd^g?;}~<)zO;Bxr=7+mJTQblAm-y*zCk+JZfA-37{3mKsWH z{RqYttst9kb}DpMui;PGDev*y_7f<03)hbM^deVS*mt$@tNq`r`&;50x`Q3kuIKB# zylA?OPUH0*z$rz)-Uuu-gY+eae3>at9KU`Q(R)6}i_s1_)947U?3*USb6P{OI9w!; z*$S$2FlN)eRYSR*;5&I;}v9h#u+fpZ+tio16MNS!qgHB_% zxk>n~8(MEcx-or z9Qf38iG+hgD9$;}bLtD7xScpw|C=Q+GDUOY;1Vh5_|2z{r#Q>0xowc9?G~@yfPnmp z6HxikprW!t(uHgyV5h=~nT7-Z+HxR95GT0UA&=6V;$%C3k9^2riIP+Ud z{Tl!aLRJ4B79Hbujbrn=U8;sZEjCBQWdi<@2gSbAXP8kb>8&SKgOx>GFpd>gmT9ee zQo12Xpu!P((V_)50tl-mNsoZZTxL7 zSSr(dA~+DD7!P$B4;7CeRb<$eVm1Sk@dXOk#`|@_Zo}g54VB z8}Ibzmp#3*@3!ClwrF1%bzfm8EB#!j7!h9wm`yFd4^1;ELjrqWcnWq(a5C6Xe+8*f zxx|R78szg&C0wq7-{)qsD=F?n2Hq8G-Xt(-wz;p)lkP*fXTP9SLTt4aK_fSi58vD* z@)R+VCM83B;SdHiTPIvyTeeiUAFp4X510KF5NNp52)fD8)6F=SyKED=fdg71{na?R z?YjAUFBTtb3W`i!Jw0*?H7I3UA_nXG8ks*<5z0zUhkJW_W@8T}eR-L3g_@PR(QkdO z54c@juP@=1K`;5f&MlNqNYISSP@;^7~dXRO3uobBVNnFC0?!&@dcm%lx zW8pqL%-N|+*8N$7ms5S}`L1p?Ty48yG+Ra`ua{Z>xckH>jr}^evcc$Toy~bp_66Y{ z8MTG^R!#(1pSZoOh0#`3+w-}f908APVZlSd?b2GAms2HCQl)$XrqIVYUYDEhFu#7L zSTN9FP_9_^N3MeI=`0RaTe@7ntqWh_2=~N6rg?D~iTYktqrh*gWoJSZ6*{T9rlthv z)_-Q76@B`>d~uTX!yR{l`jpz``n{l~v4g}7^$+?HoQyM=&U3tS;4pvBb6Cr6R@`qI z>$d2UB9nLX@Xt0iR_5*>mD%+6_V@eC>)R4xBbk}9?4ycG)!I;kn{hB`(IIIAK{@uz z$$&v(3jlYHV{d3|ejB9<0M6Hn78e)#68BnKGiR&U8?Bz+2+kY(edW;7W@4?)v=XQk zbv$~FHvC|WZ^Dt9YalZW(^TYl83daiA6<_IED#`tSP~)q!rp}ef1#cFxNWX@V7XMd z^pTU=`u>4trAteAgTBq}q=)p)PpWQz$CNtqfx z@Mv6c@s^gdfkht2%iK#KbI@`ZRUWjQW_6X7!YEdlZewR|Cz3f*%1J2$${yVQ%T2fh zj#~JtUHivP@>>#80+j(=wH$5KTp_cWh6FUy#3va?xaGxSkU+#~?^sfjF|n^5MdhWm z^jAZXfo(nFdl-7&MT2PsQii3^ulR$8Ds;UJKov!EC!-wOySTcY ztR8oLQ^_@9z%o5D^t;=Z-L0+UcXJHr+9}baOezx%2@^Yft0?fw1gT>y zS~!-huHR1sC2_#)Vjw6mUBwBpbJQk@jJ8Hq@WA~Z=>j4u3P3BgUuv0n@T3k=N1Y8& zovkt|ZsU5BY>0!-w5yIGaZA&jg|6ja$jmI(OkeQ|D=<2f=lbeqau>59@L15zX0D~S zqu_0_)vs)mtFbVJOhLgmuZMf{qGC%v-Ni*flvs0XYkvwceQOzo+`zf+IU(`rp6A0h z8z&ck7ZtUy&o(=?I6FBhFmNgn0#46K@9=(NGJHA=yBE~cB`3evs_aL~_4}co`Z1Kw z8-bX_oUY2)byWY;T86lXoK&Vr%Np)u}~2@TAFF zRhAhL1l^C0;BE2ayq)LKYQ;*0$-avwXF2x2h#Q1Fwl4@IxA<($yr;7uaT!3&)%h7fEbKbz*pfz+EzS!k z9MGi6-`P;!)g@Kies?r*V;3Cw@-C6zJ4LvJRGUOL2v8`3J3lMnCeSw7%;(>sa{j`; zM7z8_fR%52?gsPa5^i(XnWXv@h<@hWL{MW$+7MLy#EY(jS--XRJNUqlW}(p8 z1p_iQEk&(?rFXmv6y)1?68=_Jez(CilzuM`gO`+Kr#w}ER>0-ERks3`=+?ZbuB%KL z$E0dNbmrVQhGKu}5@lw`N#r%8HMO77vfwam9*qvuv>(!M-X0JbO>d{;a zXqE8{2GrYAy2160^GHUMTVqLN%0OUbp&RYYfO>i4iI;-206B zExFJ^E(w+eEwXVsnCxA?!6+|3ccbZmqECAypWs(J6yZp->WKP6OB`nWN^gLkLobda zEG(QBL}vDu9X2<&xafUx%KIH|lvT=JV*B@UoLv*)v zXXY#$Yg>A;_Bpxd40S)W``B1KMqb9=vu=<(D&mLqr@!C=(}@)bA#%%DXv-iAbYEo! zZGTU{F(sRFa$#;<)6J8`J<~b!h^McXZWCxm0wd?&H9zQi`9+(hEcGZ|IE6eVUb#j| zET<|{@rooAo+esbAmxhftwZO@+ROFGIH$Ik%SbG~<|*I;N>9Zv9A90TP2H-5NUQ|7 zenM#wo!6&j=fbX{Gv`lXf8v}UQgixUd^3es{Ywi4eWY%0C1~=xnMHk2X;=?#Vyd4E z&yFtvW}_{BEgLaKYH*X|h-ArDvB=Z+yGLX1nwVaX_KP9r^fj^%552X&7r}Omk|Hm? zG2AI_HX;iFaJfT+Hn?Ruvb^1DXWz-!{D5to>#wIjlCgc@c&yZpqj8A_Gr$+4D9WHk z{mpe{cMm0E#UI9OL8`=I!!)CoZD`JIl+j%oI&50M%k|-+@vua0bm7Ob-~$GkAKKMW zdGQRQIc=;9pV8ZPI{{0Hd90)f+p|`$`}?J0(V!G{32!y4hnY%4SBI%$#oPq<59hAq zXs54ysJIY$S*f@d%5%(%1^x>x7IPlSV?-Ctf;X9iW^w=K4LErRiP|Qpw&S!`hi7Bu zy63b@$$)$>50X81D~Qo8alE|Yx001^&n?OXTSbM|Xj4;DfPA}`6z5p4(@GW(J`Wzg z7dNQUS)1R@IXvZEE?Fe~qU@2PW#r3!+{vOLbt63wemiIuwfIpb-~}9Gt>f!I>Uh(- zQ@Pl*nALZLx~g}&0#kC-yITC4`1HASor5_3G9$`%z7 zd{D$#TqMfpxzNu|*u<$H&k3x!3xFM;Ny24>%Q(tn!j2kUf;-wWvnGzsxv1^he)!GZ z0pQ6y3vvD+l>Up~@@DbP`u7+~*Kt->)(o@-3fk>>O0H$cIK>0VMpz*2YT8#fv)#kysuE65u<6ZT;3ibgK-lA zyzh+Hx!qcz))WKoH%Su{6aQyz^+W>eVG%t_ax_x&zdv>%6Y4Da>yZ6Vnnu&3cmo74 z^C0{j5)}4<6?G1+G0jDtSs2WAu6t}~3m7-M&A?`H0SqDY(#;LdgD-WjqiyEE#wX*Z9P`_)dJZ&4t+#|%)kf4JP(!X>Xx9+d47igouwmRKm>Q0Z);4287 zU)7sTWnpY}K6IqoF6oEtcQg=fWaLF*qbpD2mp{&M+?d=ZN(>mMwU2H2g9WB4_!PTEXDD9l@ zYRvuL12F%G-^1)t=!|7yGPf@>B_{h#T(#WRvt`YBwJ353{$=jBxN=ORb9_9IVWbh9 z?>O9&H&BB^iEg2}7Du(_c3z>`LAR8}g&Lb=oYtl$MZxlEgyRtvzSLp!Ph=&k_Prf; zPhvpM@9Y=dC>y1vovm#z5=a>{hO0$=PX*pmn>5pTzusmnEe%=?AP6Tx0b16^5!=!q zTyg|FFM6QP6ukC<1EAZZ)sK8047d1yZwS3h)&Kn)BfjJ(&lZb2EKcf7k3=u1_%(RC z{sI6uIPru{tJq+3?T7J|I`TzHqNd;{;WuDlHH{JC?Eo@Nwc$J zVmH{14g7n2VBFjxg`m>thPm46X=?68uJJ{X*DnF`w|7yk4KA8$M@b}$h(2|fyDNI% z6BaGv&cq1JZO&)|KQL{mbh{57o`g566qHHk6E}o0d7i~f^VnT=g$=wyI|9;)xmjs( z3m-Awv+UB)ft@vF(6Xq*Z}?{rwF6OiNH zj51=)Mfcx5$%c#KDGdgrUzaSv(IA{{AB(MS7{%DLaD3+ux2bBMVb%?d7b<8jDv-iL z?!qjjFD^G%*mjHCFierVD?&O+78r}en8(&%{8l+bVYU3Fs=`A3JjjVcq=uDtFO1lw zqiN4gb6j#f7HAC6v=dF+J(mKu8E2GjO!6DkypJ3jem}%5q&@A7QLzIxn6G6EXZ*H@ z%v>F+ll`sCEB4DD{$d$nQuz)QKj`&v*GI(HTa5OMB?RMWR5{*VY{ORycSBPn%l_mz zfUsGzlbD(SqqZ$cMn^YQ`}L0A%A$AurV)w+L}GZ=yfo+&%nr7d%uw&Un7&qEMu9LN8v!Ha-=8jPT!Pvt$yHwHrxtGD3@ z-6DkE=E`o#BJ+VxD2>Ms79s_?AwbRL zlaX(pT^oHBXMWQ_ZZ9DDsR)W68{f#DzLN@uv ze)X@!uq}_0sl6OsDG^gvwL9I=%dN(yb{%~eu4<8PI^3c=51WFc5|$kTC;&?bBa`jM z=0=-@7aDMi$=(pk%NO>cQVv(S(r7oziTZbAwZacz%yb*wV+YQ#5=7*+f>VAAFFfm+ zy+arDHB*TPjN0br-E`7F!qmV2?)_~GUm=Y*{$-7}4hqnFlRapxQ`{tN3Bl3VRXy!1 z>;5*0g#}Kwoo}@r%jux&DJ&-83?(20Y8jIGd7XJ3!Pr;U)m?t@D!=5W0|*CbZ!}1f zTXVb)PRDNvbxY~f02%0Mg$EWx{x*E= z19UD7drw3O2f(JpPIAy`L96o;^%XFoUXz{gUS7B)J?7aPK!r!$>8tmr)2FCO zVx64sm83~C&-QIj*kY8r%ah zjiQwSP~24$t6t5IEih?y`$d^oe22~3#R{;CfqR88oJM3wZ#07|nwwOKzxrxX}heC6p2yh8bYN+N)0ml;tIcb23qB63f0gf3dVuyTOH zXOn(GCTypxvyC-sg;O1aP)qr*+DL<&ow&x11++}wBEOmG@`BZm2}NC}j#w$8+V-bLFc0Nqv!|rA;4#e6O!pA| zJ<+IJY5|GyxyKMJHM>{C&xIN?X@{E|8?kFS5B|*R)xG?2e9FTG#F*LHRkHnE@^$s^ z-ph6S?Y?_5yR{ECs|PSRfK;P#N<1vw9$q8Q6k?EO4CFYD_15ow30z%kR+kL8a|9eI zhXwH0yJIf}Q&R$^si~mF*>w9heGa|1#S2IOjs`?8JxR8)p?>yPw{7;SNfBJ9m!1{e z2D^{%-v+y}U03&%=`g8tGO%csJHyH}Vnt84Q=w!dEEBOclp%Uh=)yfQeDQ zL2mwv^y(Vq@=jc$%+RiLp3f3yU{!*hp2=RF1Pvz9aTwpx;9L%nU8arKTjay6BTSvK zoq!{ob>N-36>VgYT~H7-k`0v1D#*`%q3p_`nY+iM3f}pxN^5_!U|qf3=_+X%s z5wQaaEY!Bpnk^Q&{y-_@Vp1V&c|2clF)#7ZThkzk>^q2cA)+Ce^5K%n#oad`xTtv2 zc%O;gI~ka+xx2$l;PcwBRa`8^96VfxIOFs3m1e>ylPkl|P*X)`XDk7=4iU~o#bJsZ z*_kQ>fNM}n@?Z1J);7Dfcw%~bX>l>C4=Z~Db)1n|t1`?FmdCrX=pk`%HAtA2k%WXb zUs(!eNJ26u_^hx@IA;E7N-c54;NpA`qxI^M+33NsJ$58@ES;*u{b56P7mV%3N&OV8 z#9m!PN!B0}GPJozW%9;Jb_&RkH|Rm-0XupF890m2^Md-tE`GasXzv|u*+1B8;CMPp zQ2$?ZhKsy>#cXgEOwrD%OtEnYp-?Wgm}kp#&X*0J1=}BFWR&9yO+=OTH>lf=|Noeq zwZPW7p9eMHsKg4*_O7t=Dh?V9Ya9l0!(1Zoa%L6TWEyKWriVGpS)Q^BUvGV!`0DkO znCmghOHLWDDaFH~HQ8j8cKG={rWBj12i>;vt3Dm|7&+Fb1RVA-+K^dgt+u1b==phS zvqI0)6$36j6S@;+7Lu)e;_Q#Y+{udUWw;1SHDBLqZXd*0NLw(5;WFDTJRxX*Dsbb| zarMP^*MGkSTRs46xj*IgyfeMjP%C^$cXsy#>^Cm@u-up3H;igc7~1QbG@><;@zF(qCzgG~`8=ye8R2{ck)a z{TA0sxf6H10r1T+=K4&+d46ZkQ=teBo1Qpa%}oFWsJ|<00?oOpzesm#e`@qQ%KE)W z^7(L{-9N6Ps?V780}o`%xOw0?E|W@A_z~r);9zDnnC+}>8L*IW<;AhHu$X5g3z9+Y z3v+|4izF7|2-2_;aagsX=k44Og=p*cQ9S|4uZwEWV9;WV^aj5UI6pw55$keupxe$6lKN9>ZKHprQ2w}J|0vN; z!>?AQRT0Do{jzg*D2j*Admzk-7z$Gi1yl)UA=AGJ{0&$D#|$Ok+Dqn*;=nA@LF0HI%5fsH~#gf$+yTCG4!lN&fS2-g#N_yg2Grje1PNjYeg? z+MwqZnimS{Z*d91f(E371{tQQ6J#^bonpjcKkd+17qx9&Knkyma6azJiM)ieuUQK= z{;5On2FC=S0pdvY(;|`|9e(1+29@-6X*|z;vM1Y-1azPMfBk22G+CZLn$I+ZmeEK} zx9KY?eA&7wvXtz+}eQloUhTS0EIC)YFfUz7O5{VLMGBBletOzcouy2Wd0hUQyrUKl0aK99RoeI^hHUZ-Q_p6~*klTt3y$ zwNix#pDwJv!buc;rg=d|)Uefv+=L)v)NImgUu@>yhIrXGDQ6S>ykf3y|FjE7;X%H+ z4_s)|<>1*IveA z+j`U@X#)(VO4~{xR}H#3PMsv6Y+h`BI0gHk7M_+-pc1GCt*DWj8G^6}u!kEL&17om z@H2;Vf&nMl)P~_T)j1^>BI_0;&%wuP!PACW!g<_q_Dfvw${fdCp8_fKQ3giZ8f7Wa z#8iF&7giTHdtOWMC4F=b`WBRyo_=>J`oM{=Lt-LeDK^3>BXT#bb~uwvvtVD47(fbG zHp5#0HMi!sk4jV|32`61h{%WVc_69*%oaG{=c4I}`Ov^r_kH!>LSd)D?s$$ktr68< zha-Vx?v-=mFCYniozeLCsmV#tX6XvpSw24M+g4hq@!(40gu`@z;7@`Dm4{8Be&Ow6uElNBd6VyoH|l9s)jG& z=Z2tc!!NscQ?KT(si;!}KMxj1;U9oLt5e`o%6&00t*{jdT#Wx39iO7}A^v>xS*|`4tPwyKoJUnibX`YoOQ&9au zl_m}qVJv57zk@Sxzanrn*8eL+h}i<1=}HftL)4S@RVq{hLy5rkG@EyfWuSQGs5HDg z_Cdv#bs9&Pz_HUUcXuN>sY~(xwo@&5*Jp0r#rbw!<-?oPQI=Doa8oB@_s?guE2yQU zP_3xZU-fA!a;>heZN0cmE%fXvd56jntE?xFVJF7BN0DNl23BLpZW)25kuKx8 zp6A2aR8*shp*nVK;n$iut=Gq!8{!E0#f7DLInh1Gi_M0>=) zn(g#z#gE9jFQd`FTL)NIdBT_7+h-fg#@QRDt*V1h4pLSLLVoT*EG&kE=Z~Pyi9oX~ zh|*=^=^R%GM;CoOI;R6zSuNBfa)YpEk3xLC9@c(jDpj=JRYKV#_}*=)-zv#Xu-WRB z0ay3V7Jo;Ew{k=**yQUY_9g%k3XFlHateo@?D2VGo7kxct;I9?56~Odz*Bz##WcZdFy$I#Az$ z!RAjK<0*J-HF^803_Bb0yNtL6ldZm$e~)6QX|D%$TZj5}nA8T7BqxHD~1{oA|`QtMy{r>$fTUlK{7cv5`gAYMji+Qyw zTc(2|XXL^9m+($_!U!%c7)Mu-O$H&2vY{^Mrq#T3d=~t6b~AUA&r$|Ov?)0d*2`o@ zV1;wfiM-3>uHfganYCMmzg1LV==#{!btzaU%KcZt+j%|XL(SLCe#RURx_&e+;B>bY zxp|LKr_tBYM@vyU%4y_-I)nQP@^+1?p%Wbz<`qjLT4hj9pvy#L85g_*D>Oru3T&=u zudrLbzdqo1tDv++U1|@E@M$r!U=&P+#^<_JxPDr?x-Qq6-iN`akd=O%9?^}~I!*!Y z=gu!HE9hd8@JLo=k&WkzmEMk@?SzB@!u9o>n+H@CDRbrmKD@SJ;|Y`|SMy>3cAApQ zm*Vb-^lsbJvTkb9*Za-_YSTOgXi<%R6A|DWir<_WJ>KQ2L4x6ozpn&o^9wsnm*3qC zTWC4I^%hH2dt0^g3mSS9$jtQ!n8j@Zsuzk|YuQV(Q6Po>wSO)k;C-X~Ha!v$;M2SuhW<^aY)w!{t~ zCz}9#z*wOR86p3RleSaC&R?r<^U9LOf^mB47z}HHoPk0n53vv&SpRS>tU+V(KhCM#R0|&%aPp9TC;N{4h}A?uC?m< zi`;*ygg+j4o}ri>T3I{Kvvj=?s~ABfDLeZamc8dA5}qSXM%i>h+N9%in3EM?YX#ow zp@!Zem?HSlT@sFRIBY$^8Q;CTfcmJ_J78}{D1G^B#Jvpy;W)dyCk# z^?7ke4lNm2z1hRF?}N|Sk3hg75tm!5!8vOb%6hd2EDQc<6+e zwWIg`8d;CG-rH;`Lmh50_b`Q9FF099K8L)oy|msqYe;PUHKBliLmhxw@yZ}BG~+Ru z848Y#jL1qa&2KX)GF!GjWzN6|TFe{Q57hIBxwdsHAc%**8g})mdfI}*tc$w)6*kI5 zzYP;#?L6P*`tIC!`AP}x{c3ERID*K+W1{0vo%dZwL^uNplN8qouR=);yU{g(+O+suX*h%%qu3bjO2Tstimz^YUMGGX6kD1H%Wr9C?| z2(;^H4}BHR9NAF^E&sMhuW6}yL)CyXTr!9;JIjWY`whU_an?IKnPH-VZZGqQXG@nY zX}Y^M#rg;^R&?n35AWNKKx|)~coJ3YM-hy7-}qzBo)^$W^s~UI*HY0aciCc9^f(9o zhr+!>zpfw~UuSSTfj+yAFE0_UQwZ~0`rxKzkhCFo!P%d;Z|82!#(Fh@W?z8R(^|K& znpy#zx5T-Vd8x2)aKDt0F$RcfS~mg-jIAQk3*|fWJV{>z;hB2-j=P#d*b!?eh&-px(8;wghtNT{9ab3c{afAlE|wf3J@DZ)BL zrEq>;$|+R!wt(g#t*H|$bjakxSI;5?`re>740+jNmchYDE+n9Cfs(2mUjxf87$9s1 zbpC-baRh#eD6*yg4}w8` zzL#RNGv$41e+SL$t-6DDG^iDM9rU$}=joOyDjS>?^e=uc{n++`*EJK;NX<=G&@}^f z5^5N-K;McLAN$zHu%Hp~DB!EoU;f2k;Ak>eQCVyqG+`q{kmM6jKDmCq{=_yjR1k}f zciss(y@{|l$p#y3+TfsobkOW9j>c3joxu!H9W(``o0bl`t(7gV=_f=9o$LX3Ok33| zTefb|=2lZd%0H z95iy9TgtveI%tHkRL`W-qhsP@KsspR{Dq5jE`;WwB?tEV-`YlOdITRZ>MkbPB;g9Q2r+ zyIu!P8s2^TZT%C=0W0W#{d4KQ_CVK6NFxcj=^Y!{&%au_nW(E~4TBiw?Q_pP7j**~ zKdgZ z^fvUBN=xLkre|ixou2{G0n%nnaqVY7fJSGtnPRb^?W6CD)&b2UAuX6K)LRT=;`fgYiplhn3um_5$HWEehbA?Pq+A(l!xq}{pq)_ zC=b3`xOwyD zy?greajH$dwgnMtdZf1DE9$_&fQSSGorH|?8M!okTYpZ68L5HBNk-$rid%eiAwzS} zNP)w`q7@ENT?k7D-P7Geu8JHqfWho>cCD@Op5&kjxJ$S#g9S?(W4DCmBkl!d zVWGMOFVA=Z_z;C_#^E619GYBo*E*Di)0EyBNC%A;sp%ldLD$vSdmS_ebokDl*||Bj zllUe)?MrBWFdV zrUpJ*b<^ks3M2tacJA60;}i~nqwLC+EAlxw%SL@)LKC2^s+AkNEj3A z)~#FG$|w|+RmUk|90BS^A{;ciDoh3GVWoqHg9^wMbYm)2AN;|Y%Vwp!^g3uZ>h9$;&>XZJFRz0h zzH?h%o?0$d%Rcz=7lxxo>79Y=j(zsdxep}A%i91*^58ms2? z7`vT|7wM*L4rK4VmB_4JyLO?+qPhk0VEA;8bO*PJ5c!iN5_GkzeRn{Tgz=8WT8s}m zZIBSvQYwg#^4i+A);6y%!!edlr}6z)#2ql+c#$3`V!C)&?cTEoFBWn@K4wWO)u8T~ z_V)JR+x^(+2rtd(=;%a6aMLmc0YnLza^l#rEAI2{FJ8Kck3&>J1!)ujT(fq+3!)oK zR%b62MW__~K3p(dzlb~FqXg;2Qqg;ipW}Ehv4DdZi?b>1H^m}EAWJ$d@n`3vQ{ zIOTI$yb#zpG>8{$qV$Uw&YwDYLcRB%MmC3!B;mNtcx-1oPWURLu0|DDB3v__An3~+ zK4BH-r~&UOPk;%6cf4=y0bo@5z(P4*Jc;90@-Kg}0yYQkgR?T?H$ri*f|LA_aM8pp=Kt$ZAS@_6|w|oXrqF#}-Y{axxMWp(H zT=<310g#YFfH3+|{XtBo$0lL%AiQd8Yqj6^Ai!RC@7y_k>Xh80l%y9I;nb*?RAuC* zdAnUzz(>QWz&ndL)*z!Jqa*j^sT5#-ejYv%FZH~7IF#c@KR9vBIe(5bGBR@UBD<}q zS_{I1LqqBXV*~~T-}Hfqb6|NYm4e4^QNC^yuyb~H*5zefO%a^GaQ@u+bKa+{_ODn0 zH{I3kzwMjL=isIfA9{~mv&x1ILwAR7ojP$mX!jEhTwIvPi>4+U9v+Y=Hwg6sei?Yz zwhl`xR;=`O&FEvi@Og!oHmp&xEUq1VSnbokP#Hzf|L3=QUi%L#&tyOIFMmj`mQ@m3 zjiqZ=`QA7F051{Y)mS#i7fTO=*$YJE|KHx5Ku2<<_nln;3RQ*sJ{o8M-3|1?zMFmW z7~UKX=hBR%k*tv{$Z{6ZA<`5UpbN2GI;J~AgJr3oC5QM{_%E~JGQb8)p z{&Rq))NxmF?%Y`@IAo5^L>oa69(P_CfkM&nmwBaWX>F~ns-k-lu}qkT$!IZ#Cc*^! z;9hllY6{~M43DDGC`^GwB5ss8aO=hmY8iPDDJOSr0DHV}MjL z0cln|L8-BN5@5uwOhigQ2BM6q#>Pf@UYHPb;y@WS%RdIn-(;f2nz5UMHa{bdZ%5JI z(Z*4LknoKfG}1 z17l;tO`C=%=J086%%Klo`~S{)`^``x91ic=wac3VOiWDNG%ed-15|+qC;&AMS0%9v z40U$9kb^)Q!eCQ*pu=0`B9;=-n;nHO|Jtwr_V4_Y{Ra;I)YxJT8VzY9je~t5(C@tc zP9l-4udf%sc}8Q=v9Ymh*RDc7>x|){5uOPaqRVsB1P&1$h+B0U7^YGw$TUVo@}vqz z&2zJ}@-u!G!! zrKB{lupr%n7y?aBlIdHwZVC~%6KGkU6fHJOGXa5S+wB=Sktdn~)flc|s62=ZVJWP# zKr7KRbInp1XCTlb6%y#dp~1QNx$5egh2%gx z$G&^(aUsna0-J)yW7%ezX3}gk*KCI@%`#l3n=E8nQ<^R7oWOMv;JXCh;!2Cn2^k+4 z81THmW%ZA; zJc9>FpaDjIW`Q0W9E>h5LY;?)hiMfA1e%40BO1MXcL=?xxw%D*DA{n7!R9f@M>rs$ z7)wHbT0HhhY#n@Sd7a(ucpvAZn$}@`$FU8?+++4Fd*=am}g6K@9SF?5_A%;grF5I}Y zxmn#Prm~{4p}wxNvV!kCB?&YkALGF;2BXGNMFB zwV0)u>d+2(1U)@H4QVDf1RClL2mZ!aRzszMrC3yvW&#%lP4xJ-$-np1jZ>4Ku#o0# zWSLf^S*I)6Ni!o|P(`K{X?Cs<2M|%@@ZiCNRaI3w88-9LM<0ndf377K7mtbr-~im$ zEA-2l+$A)@7hPQ)+hKQL|5sB>HxudI7T^8*-`0m8rgZX<%P*Yn+FSxP<(##$YNdsk& z#Q|SS@>tj#4pYSQN!w2MOxMldIq>%I>aPFr!4urel5E@ZTr;vwId{(gKlz>C#fKl5 zF-860${?f}AAYO{S|fK^K{>=ov7v#zE15j?A??CVCmpUa*4dRS-T49t?1IH{)4Rl; ztmDUSVE50C6{?vx2VjBV#|CB}@V9>TSO49=|GM%R7(nTaz3OVrtpvkWzz-xKqhc?7 z!O+mqPk;IoY3EOF4I16j(jw+S1<+`G%!zWD7WrRYg=O3V^Fs-iY14BPxL--c<4|Wh zWY&$^z$kCYc#(G6gWJcI&HhD{Gd4DY55h_xhOxX*eXNmKN+e>b6x5j?r(;2*`|sS2 zrXO+HdlQ9~K}!&g!5jczgt9a%K$r0`Upu2-8T{CWoB;^Dm(s7n=P9yId`WQ^pq8W`+k<4>xN!qFKJ?Z;=u}m8bPVjDaoJ20@p_ z6a=8P%qSF;oyH4dr7(aFLXKXZo-&F>7aXR8$>9LaCX37i@n#e7 zd(XV}c7N8*P%4)BR{NFS(~q{_d^z^qmAKO@G&304fi8En=YG~q2D<#p%P+&Bbj-oA z7(QEC(-U!0aiPoReL)F_YH_YHoJ9si9{P6dXm4k4Po~41$i~r$u4ivgzh?L>(7+s~ zwyw_dRy`*WCMXdGfc)4V{d(62Hh=DmU;O+3=qr6Y=#_&=f?YF+QFJkS`}VEb^p~o5 zttv!R7HDcB2nioqodpPHDbu54qmb!%JWeYUPz{E6pr)nfQ? zILfUGZes#E3q_g<2sFMAAfRHHKmv`*hy0Nokcb0_GO~?Ra<+v)CwW#OPZ@!RWrRd{ zAx0(PipiN7$W2X6b!A1QRGQ%h<)x(+<-x6++rn8=#)w6umo8oE@9!61JgPt=1GrGe zCmOZx^D?qPL+<6ff$YZu)k+hHn;U$&;>(8IfCQQ@2%^VhQS)*@Ky{KxBx6fU@*;Ny zl4iQTW`QmV;A^z>v0bAlyKl5q&0QJi3tC8^Khb{u)7>BbAo?kiW{rh&3_EF-+n54I z%`d<7GMXhFT888@-NI$sL7M%gx3?F=L@`9ji6{ja7#O&#p+begg+R+Wb_OAFZA5r< zPH(>xB0SpS?K^km-wB;@n}i*|{f~d=7k=rNw{&&0ee2m`vW$TC_upAq$a)s}{MoZ4 z6By)@kfE?Naf$qpKs$iI5L|>;v<4dV;fEg%4-cmwm**=zpwaZz1vl!Jx+^4-J@6e2 z3W)@=N`^7^MCj~q0)Qd7ShFDn8rE>TfQv{C8l|9!FbFp=Lb24zAq09Uz08i1W)Hcr z=hoQegEev>OhZc>M$r5B?ukSqNCM&`ETB(!cXc+@)!~}}Jqpq$Hj%h|`SKlOu0vj1 zW+BjNECiY)!^l6CfdqPSVcyt$d{qcBaw~?w$YHtZZGi%09@30&O}J$p7txW!RC-H4 zGst9YiO(I`2{hE1y9{K3MwKFabVWX~i_MQUR74-@zENJ9yff2utn=otKYIN~qYvwj znhlN}e5j+%-Kd$QnIC9ix0}9?h*k>9g2BCe_oA`Mo;g8aR4@KsyT+fnU3>f=LCYY# z(a__&cI|@0Lv%E5440r^+)Ep`X$gMk_y6fH{Nk6Cha=E`z|hd37&XhBJ9B1fi76Mx zr;0#>+qczU1ua4SpqK!{#Jvp9SS)t+>ecD#nU0PQA&8Iz)C>(~g+M0^O_ViS2s9*^ zu~VkLD6pY z!39EXzyJRG9wf*Y3M>%KV4E1SXfv{ zrT7wEfU)Y};1HC^7^JR1N5~(%fBN+B-Mh4JH9Aa94O<6|RAhm^b?cU#uH0^*kGSwk zuAp}`x4@4LFl@Yb?P^t3buGOIAU&u=bkawpNCFMa0xbj-4kQ;2M?#^naz!v`uCH%E zy2zn;m;wTgyMBBZh~khyBh2jV46ZDBl6`nW?IMv1IrAjYh*BO3;ZFQlf8*~QK5~?w zld7VtyQh}D7OM;&c|(aaAAE57^m~vper&)N6r#?IYI7yfl%8DObR!~w!io#TreD&( zXF3S97%2lG(21obltf%vMWAs=Hz;r?5-bCBUI_H~)O4k^ww(l8WDNBQ$Sora^w&Rl zLXl=?^rcx8%I&C`5T($;A+Reub#-;Uy}e3D(*f#?E`~|b|5gJ1QE0(E}n3#r57=dIfFSiA&t1B?l)zkCHCmw%b zuli0Cz@$0**>Pk8GJWOpMFa{34x{uQsg#C0!=`mAqB@Tgg?8w>Jw{IUtHllgEVrXdS&Yi3s+t-q;?M5AH){Lvb(3H)a zH@k{LAPPFa@`i6;pv-*s^FR0B{MO&^+p!bM#a5@Ki6@swW)^1_78esxz!mm3=rm`~ zd@wRHEO!z`py4Pl54N_pmX?;pVoS~fEgV3RX$UTS&=!Tf(%kFB#DuZHj;RI-G(3@? zs_N>B%1X9Fbb3@M1R4WjlolT`#6$6sBBCQO3P?RyOlSy!7U4;t>+0CkjAHmE1bShC zzjIHPOY{dM(YdAT=!ugpR&QwCwfljl=4M0z@<{g5#f$H}`|jAN?cTeYIp~0{KvOM2 z;80k)c2psf>$HyzU%4bjZ~N zG+GM+Q=4Hg{W0Faur4rxMpg*Q7C)l_1=fj$28vq@bZl4l0m7pP4h`RR-b~glF#8XF z`zycn%fHes?IZw=#%FGRVQ6YT8qf6eZ| z^5v}8==F5>(5gEMEWjbKlxYmSP!B?wIy*Z_{!sZOZO9Mlc%-62$ZOUJ+GuTJLnT;) zO=^My1Y`FNv6v7YA<(E9ic3R#@`OM`uVqanxr7}!>gyYho;U#src)dv#odtRrYwJi zN37Rgf9>44^V7y7TPxB6GD5T+`I$*dQD7&~B+cZOuN?_=Ng#l$g(@wPehroddU|Rq zyG}Co2LB*?tu4EA;$A>B*_`>=fnvKYL*G zA3uNd`_~Ws?3UAm*NQst>e<^=*RmR5Ed)JF?D68jji3GbbpP37547Ur{P?xfsJ!89 z1XZ0?+u0~_ar=%DwE0^tC!|;B&Ycr8ifa!SXt+eF97=A60_ThpUs~$hv4d_gT-gVx zrs!hS@-3^LK^}JO+&wlnMteR8(9P;<>pI(721l|UFlnv~MS^9mt!>S%E%f@nTmqeW zd;>|GJb4m_chb)gLY?U^1Xn!vEr11xjy$3SxH?eA*|}NTWjP;1w^B7#9DPtH`)1d+cdTeBPYHBKxOrWZ{ zuK^{;M$MnU_RSBEFljc*Ylp1P7&Swh`9Zo4q0xyYac7`H(oDG}NT%Pjl4&_u;c%5o zS9iDP+jlhJci(x3AFl^|ibKx5+mdL8Z)|FkA6JoMp}HN6&_Hj%*q@AWn?pt26py{O1LZFw7 z+YX#0e|&9J(-V(2&70;ifT2f$me#h)%1SaW1R7zC(KPGKOX7{xOeo7~nf9S0$2vMQ zbDD?)2GEoYXZj+bPjx`^3N#^4YY0BNa6V8%?-gPw0^L}>{4am?5*sz&bg^9# zlji!YZOi0K0Vi6EF`CZEG)Xf*FySE6`D1P;p4q*7cU4uD=-sZEn3%Y6;|4!i57bv) z0nb(A91%lEu^}Xo13O2=S#-!NS2FKhfDbi&=ZMZ6NWX^^W2l+AIdrGG?B|{A?7RbaXV`?Qm1begUkms=#+LI`7aJ8#@O#VT8q`PzW?h0JIG9Vf=1}e6r7u9Xn2* zd?>oOs4Ulmh?`{^*va(b!ou9#Tyt|%GD&yt>=!}^G>y9#(tGoZ5p;Pd6f_35@}ALV zgh1C~bZ%mWoBJN9YG4x=<=GFW_x1HbVvsjQOmXx0 z_S>iCX@H0_=P~Dbn|nw z&?;#}nOPGJV8W1Q6GnDZ%PSMp(~Gf~EW~Dk7Imly^wop)HXQLW&*kTWjP0 z%dcI1dt{IEgoXl}&@iM~u1;2e{5A?-@T_GM&}e*yPXDDM&31iF$h6XQy`f{oZ9>P6 z9Ye#@*9zJGwQJWbcWYQPECgEMR{osBCsQf&G_+0<2!mcUH#ZMS;$CUo=1_)>pwpBE z%b{hXV`Io<4g0CBBA8i`8fa^4#b;!66t}Xt(q(D&sjaEr-qQuo@sVNU>E94!mTl8+ zWSFE4l7~ThV`J8?Y&|_a7y?66q@6byB-8Sw2elOlv{F)x!O@Kd2L~%E*pvl)AUM!a z+|1&yvMVWwq$h2KKqF&{HUW6j?_jiq8HrLUkPSF!41y~tT5wre5bdX-t+S=4udXo3 zDwVLfxFA+5%D4O^(4q1WJt=C*^6JXO)O0L;S78?DhPv8FI7|~n0wK@?w{8v(^ozVf zpoJUXmq)hG{trKY^VKW6e|mXKYH1}H)*27)+`5NJvsEu)exeSg0Iz)G-`x1{9ok#2 zt&y+capwQ{#(B9)?a&G10HS;7@9mp6Lw3wfJtw48XV0Ep#|dcQr$7UTC}{VnDP;^r zvx8 z5AELlz`#Ji5NH5NnwpxNo13jS#zbgmG%efI+zgp+YHGT3`!>xI(trl)BV?LNMf&-z%qjy4}#k45|8rF~{BO969c>uW-uUvybQ*sCcBM|OVZX8n z>&nK(%bB?nJAr1=jB5u(*F_moG(d+SEzm3+{PERm-PqVrd?jv7&Btw~GOF-JYFIVIClJax9KfPgmYSG`na3^-gm#tj~&s>_Lu+mZ*Ui6OIlYee$g&1 zE!k(aZWk>;o^Q!wb+sn__}qsd@>dk6H^g91++b|IfB%6{2;Wl3Bw7;B>d?^88?V1k zZaM!GlM_fztpCF)YJcK27F)M&tE{R-gm^qLKRX+Na;V>QN0ZSWl_ zHeiD(@iV5_5j1X${%}gXhfp+kA@Sp*qqr8qQ0U+zPmzzpLkIU-UV>L&{jof}6~q&K zx*)c=Kwn)syJ1sPTKZQv;iiVW4c%FmUN9(ryv2$1d@eUFlE60*q?sS!!bxtbtEFfZ zqjTlUEQ7IED*mMs&(BB2FLKpYtWkxHb@5^`AL>(1Vr+Eeqsta;3Bh`{ZT-??iC=p< z`NuD2wvjV~kQH^AZvp^mX8)uM2w0Yk?4^GhX6KCa{Jr&%W_Dx`QaQXU>-~_BX6`c1 za+f_iVF-tiIgOYDeD-sntE#GUCD6hM?ofaFlb?`#y>J>q1EC1yCWkBJSY^RrM~BlM zzII8#A3bDvWW?AoK?^cPnYT1+If4eFDN$veEBl$Msx&d$(0G9`yF@P}L8o}XYt z>7{sdF}kuEIP{69+q%>ZsY?QZXC6Mjy{l6eAmWEV{Naro*OVd%Qpwa(bdg@Ct=W-K zC)|aCWdHahZ`&g7Bmfmq0a@i2AdQsC)n$C2r1#LU%-HzE6vn@_fd(}(`L&9*RaL?C zo}x5rCR3Ee;6Oh;ikbbg8_ux@%KpnAmwofh33=3Ph72Z`mhlOOOD#vu{0oCO1EshD z^QhSpltOH%uZ)^4E7mjlSTo11t*gULs%E1yN56devcHSRJdi`61=P+wAV-82?A*B% z6_L}LIRIjzHACI_u?Dgcvq4#)qp?^C+YXF%b@NyW8a=PDVtbNTAVa=jUdHj*F%V?O>aQmX?}-ON2B>s%v}p z9Bk>dxCeUn;p5x3@UPyW0TuT2`|rR1!3X%_5fk?^NH>vOhB}K3h@Ih_5dw{9xNhVo zoCO+x&=Bw!(o8}r9?~NWPo5dMW6N$-_2krySY$2la71&>EsYJ86)&LfS5ycvi1$vonosoo`;VR3^j0BJy$TWtK@(MYEM$;BDjU-FhylprX z+Onk!pPM)NdL0NfIToXfmiG4cwYIiaR94Q< z&x^*iu)y{m zUhGl`3NFw|@=g+e1EBj$IJ*nzn6#gnsvzxxj!qCJGkR+cl-8Ud?3?8pdqaIJ3a=Lo={$`+tR{* zLTqeoywjiA2f$LGX?1x?ARtz`a9Kow0=)P_pySd?J~8%$G(%zG5Oc&rpxZWg?B27l z+L*!)mz7qQm&LiRZaTJiM@KW;=6hv%Ili=%OfA!TlGk2;{hfE-naX}qfGp6Eq=59m z9t1j*B{u?1k&IIC=)h8-Q4{h{b2N4)gg}ciwLs1cA}11Y3LvkU10>LqP)OMnRKVh< zcku^if&QH@RsLW9yzb4xCv!?OL2cDRnnh7r6X2bVIbZmbKf$OO2UOv52T`_ZCUADm zq*>&|FRH4m4;(lEhv@hYm{Y%X>(+Yh0WG6D#Q}86X^9*WO?>Ott*hwbtli``DB_X> zV-Q!f91h3=E%)B?5Zlj;z24MVEysN&5{U$48d|JKDu6~;R#Yl$oB{05EkJ=hctc9{(iJ0KND2?c4bJ!5s$q5D;I;^p>tJx^-|6XynR5pwrOojeH^ChG$!A zTV+)hA8Tg|bZu?jk>kg!s+e(^NU-d{1H0Or)H?|%;}2eX>HPT%V$>`{0u3>uDeoYy za6q*O0yO&!B9)bPds$?$x*Cz@pf#sBggydAplM*sj~To%(A7sJ!Qy`5_NQTQVRGZl${n(hr{8gKlv&0A>whq&abyOYi}L# zijbFH`5`&%h%IKRcBHZjnIm^}aiJppn`A8x%W|O6O$|;PG}^7)7%*;$9^0Gv+t0+m_UgmrnGR2!+G4(V3a)#l=Mg-~vHc zko+au;NDChJIP4LmQ!E*NF-E8p5$DXSt zff8Qr#*?LnCj&t+)J@k%dIW8x#rNW1$62Fh*)2fYu#!nmTIs3%Z(i zIG>ftrwbF77I2TXZy)<1N8i32a&T~P9k&>j$?OLW^a~^K5CxYGvV_5%+qejit_bCl zUq7Q5LCerID+@GWM&Qc;<{)8<(I~BOK$83%Fx=>VlT%Z%r6neOa^ita zjr9$U4GlQUeKu_xUx-C9pjuuYpIb-Q72C-avTRqZw+XJ2p196puGF zWG)cI2ts-CBwHAZHiW-IpcC=dB+cZ`d}*Xp-`PI*l}}##aPpYGG=qZ&59at8 z&;Y54CD?32!(N)5)l;+kI0VyIXOJ^9n)y+{$OnCjx0zhXdBBxIikB{3vV7a}+LI;F zgxeZ%8y-5cbLUR>WE$c!4|mb4tE+F{xg+`;A?HCeKZ-yTY@{r$i3agF6KEn>9$HQ< zudZY^wnt*z!PGFxWx6^&K24v5M&om(e<*4^ltJwQQRB%JWIC2e)mBF6C&U{!GCv`f z1%ntb4-E}LLuvJhkV3RS$aG6fD^78NP9z)z8iRStGd;siAj43r?yXFkYqIwtA+~MX zUMWz~q ztYTAQHJMzFMwf&T14W?AO8M&_ExSD%>Ko7@`n)`Xer(t9Z+znRYuEO=m1fPkX3i=` z&6yP%3i`UK*@G;Dxl-r+u}kjc$&)lF;m0;uMu+FyZ@-P6#gEq&3xNijSBOAhDyM#| z#->L4X$$E5R470aWo2cfqoeWz@|3P+T{~oH=N`5j20xH+5NMkHKtjpXa)P~s*$7EV zq*I3qK&EGBjR(8wj3JcEE6W`%P52CrWi5S2>_m#m^wdJMsiq1Vy>r*@kFH!nEHMv& z6fv5fnwqN5o=R?LXb6WxBnq-XV<;I4h2rr9(ygqlL_WnsgQVv1r8vH6T3TBVJ$R(1 z#zLBR@7mqm)QtKm4+iCtEXHM5uU_FZCuwAXHl&$raYmp~W5yF4kY?n??xH9Y&_e8p zoB~a-aby}yhi!t`IuryKzLZGXwE1=Hg28uwFG?QC6P(}*&^G9xf@#yVW z2adma+36821=rGyJF^SljE-G-@3QSWWrx0?VA++-Xa>s@52-XZHTCuNVMLO%$mRg> zfxKM1dX*oqH~t8;;>Zc=uA`#^Ls3#^ipVcSfP313z))w+cN{omY45)M=vw$>hQkJm zK+CEj&wk9$&o3@6Li<>BQyW@YU4=~JgYO|E!hIR59W9NJ>Cwpni&`gr6RfPP4h-~4=79Y{Cg8Coe^ytEwuRGJD1Rfw(Fa=bagb>TTuGs2U=L#IjI%+zvs<@r zg}f-=qjtz`5={<=mo8me_Xh|C)&ecC>rs|aV5&9ehzpC0J9q4qYLEv;q?`k4*vHKa zbV}Y_#u>}Z?Af=U9EwIO0u3$0hh$n7XxiQkdK6t;6t5OFGdwy5nQmg+2JyyJTT>Sa zN49ou-rm(YFfxkN$zK4Co>_=B)>LlWw%u4aeNzmjNqN~~@TFM2@!oME(17+bW)m0b zNfNPs4gy_P77T^LP0h_mjvZ%9IEZu;$9NCYY?f^B^2;w>yqMW|K>-8L@*tCDI)o;Q zW)L)L63UF~HBW;O7>vua#vCJ8##1wy3n%xtEP+N~>H5l7+D4$WNJy{F0VKz;IWav` zUsodxD*|nnW`eF}U)%gwK6&+rcaE7~K;TA+bE*P#eBK{Cw`3`n2>>^cZE{bV#TIk~v7*xA`x z5y_f_N2{guTY%xZ8IU4BL z*eIb+j@H;%~|gTOt(( zXFprNOvnNqi!s&X2lluUXmZ>g9-f<qoT*0`%HeBT^P`zx~$f)9_7nmsR0?lAi`hMa768-Hu->cql6LJ{b>xfwC@ zqYCuuD(cGIMg0?KkO?FU^inb&jqySu0~JQO$UX#G{KhE%`X@Nt*#G&h7cQ+Fca~-u zX!PD)``t?OD=+@r+7-UFvx-eh*@~@E( zp!XiZA7>YhpC3yCC3RNY84Kp6hx(L93P;DrB9Sny<%k)NcqoL*%lGfwOHY3&ym{tA zV@0`H0#H$n>DOw!^2*END*@_E^PZ)pnYX1}yl{aWy*qa7KX@1p(GpRQaEHr-kY?_c z4U8+l0a_w z8x;HK8)U-I&$G+DBrP%_P>|;I0>{yj;Z|whUwLlulbx5h)=YkT?lb&27ql2|XOFQd zs2d>7++}chC!43D#%#x*y{NU7K5z)8V?i?&!WV;<0nij5ee_YC{YA~u;RF8aul`Cb zquK~~6ljzrrv&E=aP0W;o^H0Cn~gxjm%GgZjjy{)mo8n&ep|LHzVzi^HU4FmAl7+M2($p&4S}w0Y}$AHVMMKsu$L|Jb4=(1`=z-ZnQwplo7|-V1X|RXEYNm1 z3p7lnO97kewFVfyhNasYc|yjeKxaY{<5Sb-6sc$s=(|IMl(8*cnLYf3KtI#*QE%@U8e_(DGqKK z*Hh#nDLpF;zlgM#zYJ|HUj;cd&2NaAfjE25VGRms*Crw5__Uh#^k`^kz-`*>+#E*x z<)O^mY(YGk#0O(=;~~VZ{{B0-dC#iAVEOJNCtExDdfRwvIhsh7mz0FcgOKJ{c@8=a zr1{Df+poG*YI$yUE^JK5ih{@+bB7(bC!Cp{URYcRNyB7-@0E0x@ele7*`>dkvH&r$ zAkT#GDGno+Qnyk~WTrS^KV`N41Q>G~856?VmGkHDWhQ#E{HPA@Z}v9a{o>YhuP2|n zlGvfq{wtlGx05rdG?%cWA8Fjmx^(C-vE1NRQStK)VqloaRT;cxg=ROw+M|fo$ zesn@S6P5O0WC`>p_RQG#zyE!CLmXGgQyfHTNuac(RE(gB#>^D0k*Rdf!^Q|YlQ{_* zK@&oJ*)t(o-z8KQW&ne6w5_c@S#y`cV357u5K3|7GHZ^MuGB6uOsGmL%`X53x~mFo<-regggJPk$m_r(y=uJdZC4Bk9`geO4j6`0G4&o}Zr= zGxaq!SW2_hO4XD_hJ)F>*9y9^?skSM&dDuzQ_>j_GvOEQrjL8Ahf(m7EWpF&QU z2~o9I&hwY0_DDCEVg$XVYW54;uIP`N33|(kv-Bufj+&hRBSXIkheE#GZMD|(vlTLpdV}=dboY?F9x0^AJ|mhHD$@sgD1HQUrRIUHiwqH z@YSz!*QQM;_GUerWGPHQk!I?f{Ma6yFd%2JHMRpRL!LN!a_iQu&I0X_#77@}wC-;p zG?TSi5_0cW={zVS5V01c(Z0Suq#R&=^6!EM7&yY;=(X&W;beXWI2DORZr-{@ixye@ zbnWZpN?yfbz~f?+Nkdn{CBp1JOQ$} z$X1mhE;7tVvPL$A97ES8rzSDFG_R~^Zfb67YMz)-AJ0LN=`twF9@VUL748%zmUO^PTkN!!w`nz4Nn~6Bp*Pwtf`vn&QXV zK$<(+vi3F!8_+@*Oa8?RFTDO*)`Qx#|7WMM|EHz6K$_+KnjHj4K|iE3e%Z+rG_b>m z52KNIP$U!qvEF;{JXQIcw2j0CC&3Hv5o6aQ_&og zd67&h5&TA3Lhx4BGBZ3 zfblt5Bb$nm<>lp((Gh&i3$P&E_=tDH+R@(LE}o=cK^c~pOG?;duYdF1?_RxnHJMDB z-){oY(Pn3it@P7fPHg1?atbuQJfhL4Jl8A)8jwJvxO8F60-a=E3bcO(zjm@fqr&C2 z6FLG7e|bLu*_tfS=Rf#h^zM-56Os_OS*pqu3$T>0R?YF+L_sH&+rJ(f= zVI2rtcWi z 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.7.4", "fabric": "*", - "minecraft": "1.15.x" + "minecraft": "1.16.x" }, "suggests": { "flamingo": "*" From 28330649bd53e68759fbf011f51c6694edbec2af Mon Sep 17 00:00:00 2001 From: Martmists Date: Sun, 18 Oct 2020 23:24:00 +0200 Subject: [PATCH 2/7] 1.16.3 --- build.gradle | 4 ++-- gradle.properties | 21 +++++++++--------- gradle/wrapper/gradle-wrapper.jar | Bin gradle/wrapper/gradle-wrapper.properties | 0 .../com/github/vini2003/linkart/Linkart.java | 0 .../AbstractMinecartEntityAccessor.java | 0 .../configuration/LinkartConfiguration.java | 0 .../LinkartModMenuIntegration.java | 0 .../vini2003/linkart/item/LinkerItem.java | 0 .../mixin/AbstractMinecartEntityMixin.java | 0 .../vini2003/linkart/mixin/EntityMixin.java | 2 +- .../linkart/mixin/PlayerEntityMixin.java | 3 ++- .../registry/LinkartConfigurations.java | 0 .../registry/LinkartDistanceRegistry.java | 0 .../linkart/registry/LinkartItemGroups.java | 2 -- .../linkart/registry/LinkartItems.java | 4 ---- .../registry/LinkartLinkerRegistry.java | 0 .../linkart/registry/LinkartNetworks.java | 5 +++-- .../linkart/utility/CollisionUtils.java | 0 .../vini2003/linkart/utility/RailUtils.java | 2 +- .../vini2003/linkart/utility/TextUtils.java | 0 src/main/resources/assets/linkart/icon.png | Bin .../resources/assets/linkart/lang/en_us.json | 3 +-- .../assets/linkart/models/item/chain.json | 6 ----- .../assets/linkart/models/item/linker.json | 0 .../assets/linkart/textures/item/chain.png | Bin 239 -> 0 bytes .../assets/linkart/textures/item/linker.png | Bin .../recipes/chain_from_crafting_table.json | 17 -------------- .../chain_from_crafting_table.json.mcmeta | 7 ------ .../recipes/linker_from_crafting_table.json | 0 .../linker_from_crafting_table.json.mcmeta | 0 src/main/resources/fabric.mod.json | 0 src/main/resources/linkart.mixins.json | 0 33 files changed, 20 insertions(+), 56 deletions(-) mode change 100644 => 100755 gradle/wrapper/gradle-wrapper.jar mode change 100644 => 100755 gradle/wrapper/gradle-wrapper.properties mode change 100644 => 100755 src/main/java/com/github/vini2003/linkart/Linkart.java mode change 100644 => 100755 src/main/java/com/github/vini2003/linkart/accessor/AbstractMinecartEntityAccessor.java mode change 100644 => 100755 src/main/java/com/github/vini2003/linkart/configuration/LinkartConfiguration.java mode change 100644 => 100755 src/main/java/com/github/vini2003/linkart/integration/LinkartModMenuIntegration.java mode change 100644 => 100755 src/main/java/com/github/vini2003/linkart/item/LinkerItem.java mode change 100644 => 100755 src/main/java/com/github/vini2003/linkart/mixin/AbstractMinecartEntityMixin.java mode change 100644 => 100755 src/main/java/com/github/vini2003/linkart/mixin/EntityMixin.java mode change 100644 => 100755 src/main/java/com/github/vini2003/linkart/mixin/PlayerEntityMixin.java mode change 100644 => 100755 src/main/java/com/github/vini2003/linkart/registry/LinkartConfigurations.java mode change 100644 => 100755 src/main/java/com/github/vini2003/linkart/registry/LinkartDistanceRegistry.java mode change 100644 => 100755 src/main/java/com/github/vini2003/linkart/registry/LinkartItemGroups.java mode change 100644 => 100755 src/main/java/com/github/vini2003/linkart/registry/LinkartItems.java mode change 100644 => 100755 src/main/java/com/github/vini2003/linkart/registry/LinkartLinkerRegistry.java mode change 100644 => 100755 src/main/java/com/github/vini2003/linkart/registry/LinkartNetworks.java mode change 100644 => 100755 src/main/java/com/github/vini2003/linkart/utility/CollisionUtils.java mode change 100644 => 100755 src/main/java/com/github/vini2003/linkart/utility/RailUtils.java mode change 100644 => 100755 src/main/java/com/github/vini2003/linkart/utility/TextUtils.java mode change 100644 => 100755 src/main/resources/assets/linkart/icon.png mode change 100644 => 100755 src/main/resources/assets/linkart/lang/en_us.json delete mode 100644 src/main/resources/assets/linkart/models/item/chain.json mode change 100644 => 100755 src/main/resources/assets/linkart/models/item/linker.json delete mode 100644 src/main/resources/assets/linkart/textures/item/chain.png mode change 100644 => 100755 src/main/resources/assets/linkart/textures/item/linker.png delete mode 100644 src/main/resources/data/data/tenor/recipes/chain_from_crafting_table.json delete mode 100644 src/main/resources/data/data/tenor/recipes/chain_from_crafting_table.json.mcmeta rename src/main/resources/data/{data/tenor => linkart}/recipes/linker_from_crafting_table.json (100%) mode change 100644 => 100755 rename src/main/resources/data/{data/tenor => linkart}/recipes/linker_from_crafting_table.json.mcmeta (100%) mode change 100644 => 100755 mode change 100644 => 100755 src/main/resources/fabric.mod.json mode change 100644 => 100755 src/main/resources/linkart.mixins.json diff --git a/build.gradle b/build.gradle index 8d33230..bf9964d 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'fabric-loom' version '0.2.7-SNAPSHOT' + id 'fabric-loom' version '0.5-SNAPSHOT' id 'maven-publish' } @@ -46,7 +46,7 @@ dependencies { modImplementation "io.github.prospector:modmenu:${modmenu_version}" // LibCD - modImplementation "io.github.cottonmc:LibCD:${libcd_version}" + // modImplementation "io.github.cottonmc:LibCD:${libcd_version}" } processResources { diff --git a/gradle.properties b/gradle.properties index 11cd722..595cd89 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,21 +1,20 @@ org.gradle.jvmargs=-Xmx4G -# Fabric -minecraft_version = 1.16.1 -yarn_mappings = 1.16.1+build.9 -loader_version = 0.8.8+build.202 +minecraft_version=1.16.3 +yarn_mappings=1.16.3+build.47 +loader_version=0.10.2+build.210 #Fabric api -api_version = 0.14.0+build.371-1.16 +api_version=0.24.0+build.411-1.16 # Mod mod_name = linkart -mod_version = 1.3.2 +mod_version = 1.3.3 mod_group = com.gitub.vini2003 -version_meta = fabric-1.16.1 +version_meta = fabric-1.16.3 # Dependencies -clothconfig_version = 4.5.6 -autoconfig_version = 3.2.0-unstable -modmenu_version = 1.12.2+build.17 -libcd_version = 2.5.0+1.16.1 \ No newline at end of file +clothconfig_version = 4.8.2 +autoconfig_version = 3.2.2 +modmenu_version = 1.14.6+build.31 +# libcd_version = 2.5.0+1.16.1 \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar old mode 100644 new mode 100755 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties old mode 100644 new mode 100755 diff --git a/src/main/java/com/github/vini2003/linkart/Linkart.java b/src/main/java/com/github/vini2003/linkart/Linkart.java old mode 100644 new mode 100755 diff --git a/src/main/java/com/github/vini2003/linkart/accessor/AbstractMinecartEntityAccessor.java b/src/main/java/com/github/vini2003/linkart/accessor/AbstractMinecartEntityAccessor.java old mode 100644 new mode 100755 diff --git a/src/main/java/com/github/vini2003/linkart/configuration/LinkartConfiguration.java b/src/main/java/com/github/vini2003/linkart/configuration/LinkartConfiguration.java old mode 100644 new mode 100755 diff --git a/src/main/java/com/github/vini2003/linkart/integration/LinkartModMenuIntegration.java b/src/main/java/com/github/vini2003/linkart/integration/LinkartModMenuIntegration.java old mode 100644 new mode 100755 diff --git a/src/main/java/com/github/vini2003/linkart/item/LinkerItem.java b/src/main/java/com/github/vini2003/linkart/item/LinkerItem.java old mode 100644 new mode 100755 diff --git a/src/main/java/com/github/vini2003/linkart/mixin/AbstractMinecartEntityMixin.java b/src/main/java/com/github/vini2003/linkart/mixin/AbstractMinecartEntityMixin.java old mode 100644 new mode 100755 diff --git a/src/main/java/com/github/vini2003/linkart/mixin/EntityMixin.java b/src/main/java/com/github/vini2003/linkart/mixin/EntityMixin.java old mode 100644 new mode 100755 index 13d238f..a9c034d --- a/src/main/java/com/github/vini2003/linkart/mixin/EntityMixin.java +++ b/src/main/java/com/github/vini2003/linkart/mixin/EntityMixin.java @@ -86,7 +86,7 @@ void removeLink(CallbackInfo callbackInformation) { @Inject(at = @At("HEAD"), method = "adjustMovementForCollisions(Lnet/minecraft/util/math/Vec3d;)Lnet/minecraft/util/math/Vec3d;", cancellable = true) void onRecalculateVelocity(Vec3d movement, CallbackInfoReturnable callbackInformationReturnable) { - List collisions = this.world.getEntities((Entity) (Object) this, getBoundingBox().stretch(movement)); + List collisions = this.world.getOtherEntities((Entity) (Object) this, getBoundingBox().stretch(movement)); for (Entity entity : collisions) { if (!CollisionUtils.shouldCollide((Entity) (Object) this, entity) && world.getBlockState(((AbstractMinecartEntity) (Object) this).getBlockPos()).getBlock() instanceof AbstractRailBlock) { diff --git a/src/main/java/com/github/vini2003/linkart/mixin/PlayerEntityMixin.java b/src/main/java/com/github/vini2003/linkart/mixin/PlayerEntityMixin.java old mode 100644 new mode 100755 index 4d89a00..ee593e0 --- a/src/main/java/com/github/vini2003/linkart/mixin/PlayerEntityMixin.java +++ b/src/main/java/com/github/vini2003/linkart/mixin/PlayerEntityMixin.java @@ -13,6 +13,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.vehicle.AbstractMinecartEntity; import net.minecraft.item.Item; +import net.minecraft.item.Items; import net.minecraft.screen.PlayerScreenHandler; import net.minecraft.screen.slot.Slot; import net.minecraft.text.Text; @@ -131,7 +132,7 @@ void onInteract(Entity entityA, Hand hand, CallbackInfoReturnable } if (LinkartConfigurations.INSTANCE.getConfig().isChainEnabled()) { - Optional optionalSlot = playerScreenHandler.slots.stream().filter(slot -> slot.getStack().getItem() == LinkartItems.CHAIN_ITEM).findFirst(); + Optional optionalSlot = playerScreenHandler.slots.stream().filter(slot -> slot.getStack().getItem() == Items.CHAIN).findFirst(); if (!optionalSlot.isPresent()) { sendToClient(playerEntity, new TranslatableText("text.linkart.message.cart_link_failure_chain").formatted(Formatting.RED)); diff --git a/src/main/java/com/github/vini2003/linkart/registry/LinkartConfigurations.java b/src/main/java/com/github/vini2003/linkart/registry/LinkartConfigurations.java old mode 100644 new mode 100755 diff --git a/src/main/java/com/github/vini2003/linkart/registry/LinkartDistanceRegistry.java b/src/main/java/com/github/vini2003/linkart/registry/LinkartDistanceRegistry.java old mode 100644 new mode 100755 diff --git a/src/main/java/com/github/vini2003/linkart/registry/LinkartItemGroups.java b/src/main/java/com/github/vini2003/linkart/registry/LinkartItemGroups.java old mode 100644 new mode 100755 index 9d06d86..3a40ae9 --- a/src/main/java/com/github/vini2003/linkart/registry/LinkartItemGroups.java +++ b/src/main/java/com/github/vini2003/linkart/registry/LinkartItemGroups.java @@ -12,8 +12,6 @@ public class LinkartItemGroups { public static void initialize() { if (LinkartConfigurations.INSTANCE.getConfig().isLinkerEnabled()) { LINKART_GROUP = FabricItemGroupBuilder.build(new Identifier(Linkart.ID, "linkart"), () -> new ItemStack(LinkartItems.LINKER_ITEM)); - } else if (LinkartConfigurations.INSTANCE.getConfig().isChainEnabled()) { - LINKART_GROUP = FabricItemGroupBuilder.build(new Identifier(Linkart.ID, "linkart"), () -> new ItemStack(LinkartItems.CHAIN_ITEM)); } } } diff --git a/src/main/java/com/github/vini2003/linkart/registry/LinkartItems.java b/src/main/java/com/github/vini2003/linkart/registry/LinkartItems.java old mode 100644 new mode 100755 index 4f786b6..45f7861 --- a/src/main/java/com/github/vini2003/linkart/registry/LinkartItems.java +++ b/src/main/java/com/github/vini2003/linkart/registry/LinkartItems.java @@ -8,14 +8,10 @@ public class LinkartItems { public static Item LINKER_ITEM; - public static Item CHAIN_ITEM; public static void initialize() { if (LinkartConfigurations.INSTANCE.getConfig().isLinkerEnabled()) { LINKER_ITEM = Registry.register(Registry.ITEM, new Identifier(Linkart.ID, "linker"), new LinkerItem(new Item.Settings().maxCount(1).group(LinkartItemGroups.LINKART_GROUP))); } - if (LinkartConfigurations.INSTANCE.getConfig().isChainEnabled()) { - CHAIN_ITEM = Registry.register(Registry.ITEM, new Identifier(Linkart.ID, "chain"), new Item(new Item.Settings().group(LinkartItemGroups.LINKART_GROUP))); - } } } diff --git a/src/main/java/com/github/vini2003/linkart/registry/LinkartLinkerRegistry.java b/src/main/java/com/github/vini2003/linkart/registry/LinkartLinkerRegistry.java old mode 100644 new mode 100755 diff --git a/src/main/java/com/github/vini2003/linkart/registry/LinkartNetworks.java b/src/main/java/com/github/vini2003/linkart/registry/LinkartNetworks.java old mode 100644 new mode 100755 index 16236ae..e8bffcc --- a/src/main/java/com/github/vini2003/linkart/registry/LinkartNetworks.java +++ b/src/main/java/com/github/vini2003/linkart/registry/LinkartNetworks.java @@ -7,6 +7,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.vehicle.AbstractMinecartEntity; import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; import net.minecraft.network.PacketByteBuf; import net.minecraft.screen.PlayerScreenHandler; import net.minecraft.screen.slot.Slot; @@ -42,7 +43,7 @@ public static void initialize() { PlayerScreenHandler playerContainer = playerEntity.playerScreenHandler; if (LinkartConfigurations.INSTANCE.getConfig().isChainEnabled()) { - Optional optionalSlot = playerContainer.slots.stream().filter(slot -> slot.getStack().getItem() == LinkartItems.CHAIN_ITEM).findFirst(); + Optional optionalSlot = playerContainer.slots.stream().filter(slot -> slot.getStack().getItem() == Items.CHAIN).findFirst(); if (!optionalSlot.isPresent()) { playerEntity.sendMessage(new TranslatableText("text.linkart.message.cart_link_failure_desynchronization").formatted(Formatting.RED), true); @@ -82,7 +83,7 @@ public static void initialize() { PlayerEntity playerEntity = context.getPlayer(); if (LinkartConfigurations.INSTANCE.getConfig().isChainEnabled()) { - ItemScatterer.spawn(playerEntity.world, playerEntity.getX(), playerEntity.getY(), playerEntity.getZ(), new ItemStack(LinkartItems.CHAIN_ITEM)); + ItemScatterer.spawn(playerEntity.world, playerEntity.getX(), playerEntity.getY(), playerEntity.getZ(), new ItemStack(Items.CHAIN)); } }); })); diff --git a/src/main/java/com/github/vini2003/linkart/utility/CollisionUtils.java b/src/main/java/com/github/vini2003/linkart/utility/CollisionUtils.java old mode 100644 new mode 100755 diff --git a/src/main/java/com/github/vini2003/linkart/utility/RailUtils.java b/src/main/java/com/github/vini2003/linkart/utility/RailUtils.java old mode 100644 new mode 100755 index 8b7aa12..8dbc17a --- a/src/main/java/com/github/vini2003/linkart/utility/RailUtils.java +++ b/src/main/java/com/github/vini2003/linkart/utility/RailUtils.java @@ -63,7 +63,7 @@ public static Vec3d getNextVelocity(AbstractMinecartEntity entityA, AbstractMine double maximumDistance = Math.max(LinkartDistanceRegistry.INSTANCE.getByKey(entityA.getType()), LinkartDistanceRegistry.INSTANCE.getByKey(entityB.getType())); - if (pair == null && entityA.world.getDimensionRegistryKey() == entityB.world.getDimensionRegistryKey()) { + if (pair == null && entityA.world.getRegistryKey() == entityB.world.getRegistryKey()) { return new Vec3d(entityB.getX() - entityA.getX(), entityB.getY() - entityA.getY(), entityB.getZ() - entityA.getZ()); } else if (pair == null) { return entityB.getVelocity(); diff --git a/src/main/java/com/github/vini2003/linkart/utility/TextUtils.java b/src/main/java/com/github/vini2003/linkart/utility/TextUtils.java old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/linkart/icon.png b/src/main/resources/assets/linkart/icon.png old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/linkart/lang/en_us.json b/src/main/resources/assets/linkart/lang/en_us.json old mode 100644 new mode 100755 index b4ec20a..6d3ca4e --- a/src/main/resources/assets/linkart/lang/en_us.json +++ b/src/main/resources/assets/linkart/lang/en_us.json @@ -23,6 +23,5 @@ "text.linkart.message.cart_link_failure_self": "Failed to link carts; cannot link cart with itself!", "text.linkart.message.cart_link_failure_desynchronization": "Failed to link carts on the server; server-side inventory did not contain enough chains!", "text.linkart.message.cart_unlink_success": "Cart at [%s, %s, %s] unlinked as child of [%s, %s, %s]!", - "item.linkart.linker": "Linker", - "item.linkart.chain": "Chain" + "item.linkart.linker": "Linker" } \ No newline at end of file diff --git a/src/main/resources/assets/linkart/models/item/chain.json b/src/main/resources/assets/linkart/models/item/chain.json deleted file mode 100644 index adcf491..0000000 --- a/src/main/resources/assets/linkart/models/item/chain.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "linkart:item/chain" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/linkart/models/item/linker.json b/src/main/resources/assets/linkart/models/item/linker.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/linkart/textures/item/chain.png b/src/main/resources/assets/linkart/textures/item/chain.png deleted file mode 100644 index 748c5479bba5dfa3f465d94b66350456faca54bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 239 zcmVPx#sYygZR5*>jlDiQDAq+(Kt{R%46e=NBCA6RpsDMl%oyftBJo5R>C-G)5toBI) z_@|gziAeq3xnpjv0RU1;I(a@$CL*;WQvyrQIUif8KJ9+?Eer{mSw#dfMm4jDpp^2a z`HAJxeWEu%7Vy(HbMGCs*7*!<+RUuLwJyV7Hk*-%mdvNewpHEx9Lgj6yVc+JwZ^Aa pjdTE4&mjZ=z>fJtDWzp>uNO3biz%7h6Wjm*002ovPDHLkV1jR$VqgFO diff --git a/src/main/resources/assets/linkart/textures/item/linker.png b/src/main/resources/assets/linkart/textures/item/linker.png old mode 100644 new mode 100755 diff --git a/src/main/resources/data/data/tenor/recipes/chain_from_crafting_table.json b/src/main/resources/data/data/tenor/recipes/chain_from_crafting_table.json deleted file mode 100644 index 0072f98..0000000 --- a/src/main/resources/data/data/tenor/recipes/chain_from_crafting_table.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " 1 ", - "1 1", - " 1 " - ], - "key": { - "1": { - "item": "minecraft:iron_ingot" - } - }, - "result": { - "item": "linkart:chain", - "count": 2 - } -} diff --git a/src/main/resources/data/data/tenor/recipes/chain_from_crafting_table.json.mcmeta b/src/main/resources/data/data/tenor/recipes/chain_from_crafting_table.json.mcmeta deleted file mode 100644 index e38fe7f..0000000 --- a/src/main/resources/data/data/tenor/recipes/chain_from_crafting_table.json.mcmeta +++ /dev/null @@ -1,7 +0,0 @@ -{ - "when": [ - { - "libcd:item_exists": "linkart:chain" - } - ] -} \ No newline at end of file diff --git a/src/main/resources/data/data/tenor/recipes/linker_from_crafting_table.json b/src/main/resources/data/linkart/recipes/linker_from_crafting_table.json old mode 100644 new mode 100755 similarity index 100% rename from src/main/resources/data/data/tenor/recipes/linker_from_crafting_table.json rename to src/main/resources/data/linkart/recipes/linker_from_crafting_table.json diff --git a/src/main/resources/data/data/tenor/recipes/linker_from_crafting_table.json.mcmeta b/src/main/resources/data/linkart/recipes/linker_from_crafting_table.json.mcmeta old mode 100644 new mode 100755 similarity index 100% rename from src/main/resources/data/data/tenor/recipes/linker_from_crafting_table.json.mcmeta rename to src/main/resources/data/linkart/recipes/linker_from_crafting_table.json.mcmeta diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json old mode 100644 new mode 100755 diff --git a/src/main/resources/linkart.mixins.json b/src/main/resources/linkart.mixins.json old mode 100644 new mode 100755 From b5cf73af724db4e8a12e95a00cd17ab8e4f6082b Mon Sep 17 00:00:00 2001 From: Martmists Date: Sun, 18 Oct 2020 23:35:33 +0200 Subject: [PATCH 3/7] buildcc --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index bf9964d..def1d71 100644 --- a/build.gradle +++ b/build.gradle @@ -37,7 +37,7 @@ dependencies { modImplementation "net.fabricmc.fabric-api:fabric-api:${api_version}" // ClotConfig - modApi "me.shedaniel.cloth:config-2:${clothconfig_version}" + // modApi "me.shedaniel.cloth:config-2:${clothconfig_version}" // AutoConfig modApi "me.sargunvohra.mcmods:autoconfig1u:${autoconfig_version}" From 61998b9b1f51dcbf8f216a79040e8a4aec5b48fc Mon Sep 17 00:00:00 2001 From: dmkenza <66675746+dmkenza@users.noreply.github.com> Date: Tue, 26 Oct 2021 20:00:35 +0300 Subject: [PATCH 4/7] Convert to 1.17.1 --- build.gradle | 37 ++++++++++++------- gradle.properties | 17 ++++++--- gradle/wrapper/gradle-wrapper.properties | 5 +-- settings.gradle | 9 ++++- .../mixin/AbstractMinecartEntityMixin.java | 4 +- .../vini2003/linkart/mixin/EntityMixin.java | 6 +-- .../vini2003/linkart/utility/RailUtils.java | 16 ++++---- src/main/resources/fabric.mod.json | 3 +- src/main/resources/linkart.mixins.json | 2 +- 9 files changed, 60 insertions(+), 39 deletions(-) diff --git a/build.gradle b/build.gradle index def1d71..9c85b31 100644 --- a/build.gradle +++ b/build.gradle @@ -1,10 +1,16 @@ plugins { - id 'fabric-loom' version '0.5-SNAPSHOT' + id 'java-library' + id "org.jetbrains.kotlin.jvm" + id 'fabric-loom' version '0.9-SNAPSHOT' id 'maven-publish' } -sourceCompatibility = JavaVersion.VERSION_1_8 -targetCompatibility = JavaVersion.VERSION_1_8 +java { + toolchain { + languageVersion = JavaLanguageVersion.of(16) + } +} + archivesBaseName = project.mod_name + "-" + project.mod_version + "+" + project.version_meta group = project.mod_group @@ -13,7 +19,8 @@ repositories() { // modmuss50 maven { name = "modmuss50" - url = "https://maven.fabricmc.net/io/github/prospector/modmenu/" +// url = "https://maven.fabricmc.net/io/github/prospector/modmenu/" + url = "https://maven.terraformersmc.com/releases/" } // Cotton @@ -21,6 +28,7 @@ repositories() { name = "Cotton" url = "https://server.bbkr.space/artifactory/libs-release/" } + maven { url "https://maven.shedaniel.me/" } } dependencies { @@ -40,25 +48,24 @@ dependencies { // modApi "me.shedaniel.cloth:config-2:${clothconfig_version}" // AutoConfig - modApi "me.sargunvohra.mcmods:autoconfig1u:${autoconfig_version}" + // https://mvnrepository.com/artifact/me.sargunvohra.mcmods/autoconfig1u + modImplementation group: "me.sargunvohra.mcmods", name: 'autoconfig1u', version: '3.3.1' + + + //"me.sargunvohra.mcmods:autoconfig1u:${autoconfig_version}" // ModMenu - modImplementation "io.github.prospector:modmenu:${modmenu_version}" + modImplementation "com.terraformersmc:modmenu:${modmenu_version}" // LibCD // modImplementation "io.github.cottonmc:LibCD:${libcd_version}" } processResources { - inputs.property "version", project.version - - from(sourceSets.main.resources.srcDirs) { - include "fabric.mod.json" - expand "version": project.version - } + inputs.property "version", project.version.toString() - from(sourceSets.main.resources.srcDirs) { - exclude "fabric.mod.json" + filesMatching("fabric.mod.json") { + expand "version": project.version.toString() } } @@ -91,3 +98,5 @@ publishing { mavenLocal() } } + +compileKotlin.kotlinOptions.jvmTarget = "16" \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 595cd89..64b08f5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,11 +1,18 @@ org.gradle.jvmargs=-Xmx4G -minecraft_version=1.16.3 -yarn_mappings=1.16.3+build.47 -loader_version=0.10.2+build.210 + +minecraft_version=1.17.1 +yarn_mappings=1.17.1+build.63 +loader_version=0.12.3 #Fabric api -api_version=0.24.0+build.411-1.16 +api_version=0.41.0+1.17 +loom_version=0.9-SNAPSHOT + +# Kotlin +kotlin_version=1.5.30 +fabric_kotlin_version=1.6.4+kotlin.1.5.30 + # Mod mod_name = linkart @@ -16,5 +23,5 @@ version_meta = fabric-1.16.3 # Dependencies clothconfig_version = 4.8.2 autoconfig_version = 3.2.2 -modmenu_version = 1.14.6+build.31 +modmenu_version = 1.14.15 # libcd_version = 2.5.0+1.16.1 \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index e8ec9b8..f371643 100755 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Sun Apr 05 08:38:40 BRT 2020 -distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.0-bin.zip zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/settings.gradle b/settings.gradle index 5b60df3..68d828d 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,10 +1,17 @@ pluginManagement { repositories { - jcenter() + mavenCentral() maven { name = 'Fabric' url = 'https://maven.fabricmc.net/' } + gradlePluginPortal() } + + plugins { + id 'fabric-loom' version loom_version + id "org.jetbrains.kotlin.jvm" version kotlin_version + } + } diff --git a/src/main/java/com/github/vini2003/linkart/mixin/AbstractMinecartEntityMixin.java b/src/main/java/com/github/vini2003/linkart/mixin/AbstractMinecartEntityMixin.java index 8a0ecc5..3f895f8 100755 --- a/src/main/java/com/github/vini2003/linkart/mixin/AbstractMinecartEntityMixin.java +++ b/src/main/java/com/github/vini2003/linkart/mixin/AbstractMinecartEntityMixin.java @@ -111,8 +111,8 @@ void onTickClient(CallbackInfo callbackInformation) { AbstractMinecartEntity entity = (AbstractMinecartEntity) (Object) this; entity.getPassengerList().stream().filter(passenger -> passenger instanceof PlayerEntity).forEach(player -> { - player.yaw = entity.yaw + 90 * 0.75f; - player.pitch = entity.pitch; + entity.setYaw ( entity.getYaw() + 90 * 0.75f); + player.setPitch(entity.getPitch()); player.prevYaw = entity.prevYaw + 90 * 0.75f; player.prevPitch = entity.prevPitch; }); diff --git a/src/main/java/com/github/vini2003/linkart/mixin/EntityMixin.java b/src/main/java/com/github/vini2003/linkart/mixin/EntityMixin.java index a9c034d..360c17b 100755 --- a/src/main/java/com/github/vini2003/linkart/mixin/EntityMixin.java +++ b/src/main/java/com/github/vini2003/linkart/mixin/EntityMixin.java @@ -5,7 +5,7 @@ import net.minecraft.block.AbstractRailBlock; import net.minecraft.entity.Entity; import net.minecraft.entity.vehicle.AbstractMinecartEntity; -import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NbtCompound; import net.minecraft.util.math.Box; import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; @@ -36,7 +36,7 @@ public abstract class EntityMixin { public abstract double getZ(); @Inject(at = @At("RETURN"), method = "toTag(Lnet/minecraft/nbt/CompoundTag;)Lnet/minecraft/nbt/CompoundTag;") - void onToTag(CompoundTag tag, CallbackInfoReturnable callbackInformationReturnable) { + void onToTag(NbtCompound tag, CallbackInfoReturnable callbackInformationReturnable) { if ((Object) this instanceof AbstractMinecartEntity) { AbstractMinecartEntity entity = (AbstractMinecartEntity) (Object) this; AbstractMinecartEntityAccessor accessor = (AbstractMinecartEntityAccessor) entity; @@ -52,7 +52,7 @@ void onToTag(CompoundTag tag, CallbackInfoReturnable callbackInform } @Inject(at = @At("RETURN"), method = "fromTag(Lnet/minecraft/nbt/CompoundTag;)V") - void onFromTag(CompoundTag tag, CallbackInfo callbackInformation) { + void onFromTag(NbtCompound tag, CallbackInfo callbackInformation) { if ((Object) this instanceof AbstractMinecartEntity) { AbstractMinecartEntity entity = (AbstractMinecartEntity) (Object) this; AbstractMinecartEntityAccessor accessor = (AbstractMinecartEntityAccessor) entity; diff --git a/src/main/java/com/github/vini2003/linkart/utility/RailUtils.java b/src/main/java/com/github/vini2003/linkart/utility/RailUtils.java index 8dbc17a..8325c9d 100755 --- a/src/main/java/com/github/vini2003/linkart/utility/RailUtils.java +++ b/src/main/java/com/github/vini2003/linkart/utility/RailUtils.java @@ -18,19 +18,19 @@ public class RailUtils { public static Pair getNextRail(AbstractMinecartEntity next, AbstractMinecartEntity previous) { Optional.ofNullable(next.getPassengerList().size() >= 1 ? next.getPassengerList().get(0) : null).ifPresent(entity -> { - entity.yaw = next.yaw; - entity.pitch = next.pitch; + entity.setYaw (next.getYaw()); + entity.setPitch(next.getPitch()); - entity.prevYaw = next.yaw; - entity.prevPitch = next.pitch; + entity.prevYaw = next.getYaw(); + entity.prevPitch = next.getPitch(); }); Optional.ofNullable(previous.getPassengerList().size() >= 1 ? previous.getPassengerList().get(0) : null).ifPresent(entity -> { - entity.yaw = previous.yaw; - entity.pitch = previous.pitch; + entity.setYaw (previous.getYaw()); + entity.setPitch(previous.getPitch()); - entity.prevYaw = previous.yaw; - entity.prevPitch = previous.pitch; + entity.prevYaw = previous.getYaw(); + entity.prevPitch = previous.getPitch(); }); diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 1ff6dfe..8e2b060 100755 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -27,8 +27,7 @@ ], "depends": { "fabricloader": ">=0.7.4", - "fabric": "*", - "minecraft": "1.16.x" + "fabric": "*" }, "suggests": { "flamingo": "*" diff --git a/src/main/resources/linkart.mixins.json b/src/main/resources/linkart.mixins.json index 0b9e3e1..73aa5d0 100755 --- a/src/main/resources/linkart.mixins.json +++ b/src/main/resources/linkart.mixins.json @@ -2,7 +2,7 @@ "required": true, "minVersion": "0.8", "package": "com.github.vini2003.linkart.mixin", - "compatibilityLevel": "JAVA_8", + "compatibilityLevel": "JAVA_16", "mixins": [ "AbstractMinecartEntityMixin", "EntityMixin", From 85df16bad150a4cf1075e3b1925ff05bf5e85678 Mon Sep 17 00:00:00 2001 From: dmkenza <66675746+dmkenza@users.noreply.github.com> Date: Tue, 26 Oct 2021 20:22:55 +0300 Subject: [PATCH 5/7] Fix code for 1.17.1 --- build.gradle | 1 - gradle.properties | 2 +- .../linkart/integration/LinkartModMenuIntegration.java | 9 +++++---- .../com/github/vini2003/linkart/mixin/EntityMixin.java | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/build.gradle b/build.gradle index 9c85b31..2934aab 100644 --- a/build.gradle +++ b/build.gradle @@ -19,7 +19,6 @@ repositories() { // modmuss50 maven { name = "modmuss50" -// url = "https://maven.fabricmc.net/io/github/prospector/modmenu/" url = "https://maven.terraformersmc.com/releases/" } diff --git a/gradle.properties b/gradle.properties index 64b08f5..a2c9c1d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -23,5 +23,5 @@ version_meta = fabric-1.16.3 # Dependencies clothconfig_version = 4.8.2 autoconfig_version = 3.2.2 -modmenu_version = 1.14.15 +modmenu_version = 2.0.14 # libcd_version = 2.5.0+1.16.1 \ No newline at end of file diff --git a/src/main/java/com/github/vini2003/linkart/integration/LinkartModMenuIntegration.java b/src/main/java/com/github/vini2003/linkart/integration/LinkartModMenuIntegration.java index eb271e9..aa0f42f 100755 --- a/src/main/java/com/github/vini2003/linkart/integration/LinkartModMenuIntegration.java +++ b/src/main/java/com/github/vini2003/linkart/integration/LinkartModMenuIntegration.java @@ -12,10 +12,11 @@ import java.util.function.Supplier; public class LinkartModMenuIntegration implements ModMenuApi { - @Override - public String getModId() { - return Linkart.ID; - } + +// @Override +// public String getModId() { +// return Linkart.ID; +// } @Override public ConfigScreenFactory getModConfigScreenFactory() { diff --git a/src/main/java/com/github/vini2003/linkart/mixin/EntityMixin.java b/src/main/java/com/github/vini2003/linkart/mixin/EntityMixin.java index 360c17b..f64ffd4 100755 --- a/src/main/java/com/github/vini2003/linkart/mixin/EntityMixin.java +++ b/src/main/java/com/github/vini2003/linkart/mixin/EntityMixin.java @@ -35,7 +35,7 @@ public abstract class EntityMixin { @Shadow public abstract double getZ(); - @Inject(at = @At("RETURN"), method = "toTag(Lnet/minecraft/nbt/CompoundTag;)Lnet/minecraft/nbt/CompoundTag;") + @Inject(at = @At("RETURN"), method = "writeNbt(Lnet/minecraft/nbt/NbtCompound;)Lnet/minecraft/nbt/NbtCompound;") void onToTag(NbtCompound tag, CallbackInfoReturnable callbackInformationReturnable) { if ((Object) this instanceof AbstractMinecartEntity) { AbstractMinecartEntity entity = (AbstractMinecartEntity) (Object) this; @@ -51,7 +51,7 @@ void onToTag(NbtCompound tag, CallbackInfoReturnable callbackInform } } - @Inject(at = @At("RETURN"), method = "fromTag(Lnet/minecraft/nbt/CompoundTag;)V") + @Inject(at = @At("RETURN"), method = "readNbt(Lnet/minecraft/nbt/NbtCompound;)V") void onFromTag(NbtCompound tag, CallbackInfo callbackInformation) { if ((Object) this instanceof AbstractMinecartEntity) { AbstractMinecartEntity entity = (AbstractMinecartEntity) (Object) this; From a416f2e0e2fac130b067ca0c7db4a5c0c27c005c Mon Sep 17 00:00:00 2001 From: dmkenza <66675746+dmkenza@users.noreply.github.com> Date: Tue, 26 Oct 2021 22:59:56 +0300 Subject: [PATCH 6/7] Rename .java to .kt --- ...actMinecartEntityMixin.java => AbstractMinecartEntityMixin.kt} | 0 .../vini2003/linkart/utility/{RailUtils.java => RailUtils.kt} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename src/main/java/com/github/vini2003/linkart/mixin/{AbstractMinecartEntityMixin.java => AbstractMinecartEntityMixin.kt} (100%) rename src/main/java/com/github/vini2003/linkart/utility/{RailUtils.java => RailUtils.kt} (100%) diff --git a/src/main/java/com/github/vini2003/linkart/mixin/AbstractMinecartEntityMixin.java b/src/main/java/com/github/vini2003/linkart/mixin/AbstractMinecartEntityMixin.kt similarity index 100% rename from src/main/java/com/github/vini2003/linkart/mixin/AbstractMinecartEntityMixin.java rename to src/main/java/com/github/vini2003/linkart/mixin/AbstractMinecartEntityMixin.kt diff --git a/src/main/java/com/github/vini2003/linkart/utility/RailUtils.java b/src/main/java/com/github/vini2003/linkart/utility/RailUtils.kt similarity index 100% rename from src/main/java/com/github/vini2003/linkart/utility/RailUtils.java rename to src/main/java/com/github/vini2003/linkart/utility/RailUtils.kt From 2274c16a29e67294ae844663fa7f85b3116f2df3 Mon Sep 17 00:00:00 2001 From: dmkenza <66675746+dmkenza@users.noreply.github.com> Date: Tue, 26 Oct 2021 22:59:57 +0300 Subject: [PATCH 7/7] Update code --- .../configuration/LinkartConfiguration.java | 2 +- .../mixin/AbstractMinecartEntityMixin.kt | 231 +++++----- .../vini2003/linkart/utility/RailUtils.kt | 421 ++++++++++-------- 3 files changed, 336 insertions(+), 318 deletions(-) diff --git a/src/main/java/com/github/vini2003/linkart/configuration/LinkartConfiguration.java b/src/main/java/com/github/vini2003/linkart/configuration/LinkartConfiguration.java index 5a26edc..162dfe3 100755 --- a/src/main/java/com/github/vini2003/linkart/configuration/LinkartConfiguration.java +++ b/src/main/java/com/github/vini2003/linkart/configuration/LinkartConfiguration.java @@ -10,7 +10,7 @@ public class LinkartConfiguration implements ConfigData { public boolean enableLinker = true; @ConfigEntry.Gui.Tooltip - public boolean enableChain = true; + public boolean enableChain = false; @ConfigEntry.Gui.Tooltip public int pathfindingDistance = 8; diff --git a/src/main/java/com/github/vini2003/linkart/mixin/AbstractMinecartEntityMixin.kt b/src/main/java/com/github/vini2003/linkart/mixin/AbstractMinecartEntityMixin.kt index 3f895f8..38129a5 100755 --- a/src/main/java/com/github/vini2003/linkart/mixin/AbstractMinecartEntityMixin.kt +++ b/src/main/java/com/github/vini2003/linkart/mixin/AbstractMinecartEntityMixin.kt @@ -1,127 +1,104 @@ -package com.github.vini2003.linkart.mixin; - -import com.github.vini2003.linkart.accessor.AbstractMinecartEntityAccessor; -import com.github.vini2003.linkart.utility.CollisionUtils; -import com.github.vini2003.linkart.utility.RailUtils; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.minecraft.client.network.ClientPlayerEntity; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.entity.vehicle.AbstractMinecartEntity; -import net.minecraft.server.world.ServerWorld; -import net.minecraft.util.math.Vec3d; -import net.minecraft.world.World; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Unique; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import java.util.UUID; - -@Mixin(AbstractMinecartEntity.class) -public abstract class AbstractMinecartEntityMixin implements AbstractMinecartEntityAccessor { - @Unique - UUID nextUuid; - - @Unique - private AbstractMinecartEntity previous; - - @Unique - private AbstractMinecartEntity next; - - @Unique - private UUID previousUuid; - - @Override - public AbstractMinecartEntity getPrevious() { - if (previous == null && getPreviousUuid() != null && !((AbstractMinecartEntity) (Object) this).world.isClient) { - previous = (AbstractMinecartEntity) ((ServerWorld) ((AbstractMinecartEntity) (Object) this).world).getEntity(getPreviousUuid()); - } - - return previous; - } - - @Override - public void setPrevious(AbstractMinecartEntity previous) { - this.previous = previous; - this.nextUuid = previous == null ? null : previous.getUuid(); - } - - @Override - public AbstractMinecartEntity getNext() { - if (next == null && getNextUuid() != null && !((AbstractMinecartEntity) (Object) this).world.isClient) { - next = (AbstractMinecartEntity) ((ServerWorld) ((AbstractMinecartEntity) (Object) this).world).getEntity(getNextUuid()); - } - - return next; - } - - @Override - public void setNext(AbstractMinecartEntity next) { - this.next = next; - this.nextUuid = next == null ? null : next.getUuid(); - } - - @Override - public UUID getPreviousUuid() { - return previousUuid; - } - - @Override - public void setPreviousUuid(UUID uuid) { - this.previousUuid = uuid; - } - - @Override - public UUID getNextUuid() { - return nextUuid; - } - - @Override - public void setNextUuid(UUID uuid) { - this.nextUuid = uuid; - } - - @Inject(at = @At("HEAD"), method = "tick()V") - void onTickCommon(CallbackInfo callbackInformation) { - World mixedWorld = ((AbstractMinecartEntity) (Object) this).world; - - AbstractMinecartEntity next = (AbstractMinecartEntity) (Object) this; - AbstractMinecartEntityAccessor accessor = (AbstractMinecartEntityAccessor) next; - - if (!mixedWorld.isClient) { - - if (accessor.getPrevious() != null) { - AbstractMinecartEntity previous = accessor.getPrevious(); - - Vec3d nextVelocity = RailUtils.getNextVelocity(next, previous); - - if (nextVelocity != null) { - next.setVelocity(nextVelocity); - } - } - } - } - - @Environment(EnvType.CLIENT) - @Inject(at = @At("HEAD"), method = "tick()V") - void onTickClient(CallbackInfo callbackInformation) { - AbstractMinecartEntity entity = (AbstractMinecartEntity) (Object) this; - - entity.getPassengerList().stream().filter(passenger -> passenger instanceof PlayerEntity).forEach(player -> { - entity.setYaw ( entity.getYaw() + 90 * 0.75f); - player.setPitch(entity.getPitch()); - player.prevYaw = entity.prevYaw + 90 * 0.75f; - player.prevPitch = entity.prevPitch; - }); - } - - @Inject(at = @At("HEAD"), method = "pushAwayFrom(Lnet/minecraft/entity/Entity;)V", cancellable = true) - void onPushAway(Entity entity, CallbackInfo callbackInformation) { - if (!CollisionUtils.shouldCollide((Entity) (Object) this, entity)) { - callbackInformation.cancel(); - } - } -} +package com.github.vini2003.linkart.mixin + +import org.spongepowered.asm.mixin.Mixin +import net.minecraft.entity.vehicle.AbstractMinecartEntity +import com.github.vini2003.linkart.accessor.AbstractMinecartEntityAccessor +import org.spongepowered.asm.mixin.Unique +import java.util.UUID +import net.minecraft.server.world.ServerWorld +import org.spongepowered.asm.mixin.injection.Inject +import org.spongepowered.asm.mixin.injection.At +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo +import com.github.vini2003.linkart.utility.RailUtils +import net.fabricmc.api.EnvType +import net.minecraft.entity.player.PlayerEntity +import com.github.vini2003.linkart.utility.CollisionUtils +import net.fabricmc.api.Environment +import net.minecraft.entity.Entity + +@Mixin(AbstractMinecartEntity::class) +abstract class AbstractMinecartEntityMixin : AbstractMinecartEntityAccessor { + + @Unique + var nextUuid2: UUID? = null + + override fun getNextUuid(): UUID? { + return nextUuid2 + } + + override fun setNextUuid(uuid: UUID?) { + nextUuid2 = uuid + } + + + @Unique + private var previous: AbstractMinecartEntity? = null + + @Unique + private var next: AbstractMinecartEntity? = null + + @Unique + private var previousUuid: UUID? = null + override fun getPrevious(): AbstractMinecartEntity? { + if (previous == null && getPreviousUuid() != null && !(this as AbstractMinecartEntity).world.isClient) { + previous = + ((this as AbstractMinecartEntity).world as? ServerWorld?)?.getEntity(getPreviousUuid()) as AbstractMinecartEntity? + } + return previous + } + + override fun setPrevious(previous: AbstractMinecartEntity?) { + this.previous = previous + nextUuid = previous?.uuid + } + + override fun getNext(): AbstractMinecartEntity? { + if (next == null && getNextUuid() != null && !(this as AbstractMinecartEntity).world.isClient) { + next = + ((this as? AbstractMinecartEntity)?.world as? ServerWorld)?.getEntity(getNextUuid()) as AbstractMinecartEntity? + } + return next + } + + override fun setNext(next: AbstractMinecartEntity?) { + this.next = next + nextUuid = next?.uuid + } + + override fun getPreviousUuid(): UUID? { + return previousUuid + } + + override fun setPreviousUuid(uuid: UUID?) { + previousUuid = uuid + } + + + @Inject(at = [At("HEAD")], method = ["tick()V"]) + fun onTickCommon(callbackInformation: CallbackInfo?) { + RailUtils.handleTickCommon(this as? AbstractMinecartEntity, callbackInformation) + } + + + + @Environment(EnvType.CLIENT) + @Inject(at = [At("HEAD")], method = ["tick()V"]) + fun onTickClient(callbackInformation: CallbackInfo?) { + val entity = (this as? AbstractMinecartEntity) ?: return + entity.passengerList.stream().filter { passenger: Entity? -> passenger is PlayerEntity } + .forEach { player: Entity -> +// entity.yaw = entity.yaw + 90 * 0.75f +// player.pitch = entity.pitch +// player.prevYaw = entity.prevYaw + 90 * 0.75f +// player.prevPitch = entity.prevPitch + } + } + + @Inject(at = [At("HEAD")], method = ["pushAwayFrom(Lnet/minecraft/entity/Entity;)V"], cancellable = true) + fun onPushAway(entity: Entity?, callbackInformation: CallbackInfo) { + if (!CollisionUtils.shouldCollide(this as Entity, entity)) { + callbackInformation.cancel() + } + } + +} \ No newline at end of file diff --git a/src/main/java/com/github/vini2003/linkart/utility/RailUtils.kt b/src/main/java/com/github/vini2003/linkart/utility/RailUtils.kt index 8325c9d..a7dc6c7 100755 --- a/src/main/java/com/github/vini2003/linkart/utility/RailUtils.kt +++ b/src/main/java/com/github/vini2003/linkart/utility/RailUtils.kt @@ -1,190 +1,231 @@ -package com.github.vini2003.linkart.utility; - -import com.github.vini2003.linkart.registry.LinkartConfigurations; -import com.github.vini2003.linkart.registry.LinkartDistanceRegistry; -import net.minecraft.block.AbstractRailBlock; -import net.minecraft.block.BlockState; -import net.minecraft.block.enums.RailShape; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.vehicle.AbstractMinecartEntity; -import net.minecraft.util.Pair; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Vec3d; -import net.minecraft.world.World; -import org.apache.commons.lang3.mutable.MutableDouble; - -import java.util.*; - -public class RailUtils { - public static Pair getNextRail(AbstractMinecartEntity next, AbstractMinecartEntity previous) { - Optional.ofNullable(next.getPassengerList().size() >= 1 ? next.getPassengerList().get(0) : null).ifPresent(entity -> { - entity.setYaw (next.getYaw()); - entity.setPitch(next.getPitch()); - - entity.prevYaw = next.getYaw(); - entity.prevPitch = next.getPitch(); - }); - - Optional.ofNullable(previous.getPassengerList().size() >= 1 ? previous.getPassengerList().get(0) : null).ifPresent(entity -> { - entity.setYaw (previous.getYaw()); - entity.setPitch(previous.getPitch()); - - entity.prevYaw = previous.getYaw(); - entity.prevPitch = previous.getPitch(); - }); - - - BlockPos entityPosition = next.getBlockPos(); - BlockPos finalPosition = previous.getBlockPos(); - - BlockState state = next.world.getBlockState(next.getBlockPos()); - - if (!(state.getBlock() instanceof AbstractRailBlock)) return null; - - List fuck = (List) getNeighbors(next.getBlockPos(), state.get(((AbstractRailBlock) state.getBlock()).getShapeProperty())); - - for (BlockPos initialPosition : fuck) { - Set cache = new HashSet<>(); - - cache.add(entityPosition); - - MutableDouble distance = new MutableDouble(0); - - if (step(next.world, cache, initialPosition, finalPosition, distance)) { - return new Pair<>(initialPosition, distance); - } - } - - return null; - } - - public static Vec3d getNextVelocity(AbstractMinecartEntity entityA, AbstractMinecartEntity entityB) { - Pair pair = getNextRail(entityA, entityB); - - double maximumDistance = Math.max(LinkartDistanceRegistry.INSTANCE.getByKey(entityA.getType()), LinkartDistanceRegistry.INSTANCE.getByKey(entityB.getType())); - - if (pair == null && entityA.world.getRegistryKey() == entityB.world.getRegistryKey()) { - return new Vec3d(entityB.getX() - entityA.getX(), entityB.getY() - entityA.getY(), entityB.getZ() - entityA.getZ()); - } else if (pair == null) { - return entityB.getVelocity(); - } - - BlockPos position = pair.getLeft(); - double distance = pair.getRight().getValue(); - - distance += Math.abs((entityA.getX() - (entityA.getBlockPos().getX()) - (entityB.getX() - entityB.getBlockPos().getX()))); - distance += Math.abs((entityA.getZ() - (entityA.getBlockPos().getZ()) - (entityB.getZ() - entityB.getBlockPos().getZ()))); - distance += Math.abs((entityA.getY() - (entityA.getBlockPos().getY()) - (entityB.getY() - entityB.getBlockPos().getY()))); - - Vec3d velocity = Vec3d.ZERO; - - if (distance > maximumDistance) { - distance = maximumDistance; - - if (position.getX() > entityA.getBlockPos().getX()) { - velocity = new Vec3d(velocity.x + LinkartConfigurations.INSTANCE.getConfig().getVelocityMultiplier() * distance, velocity.y, velocity.z); - } else if (position.getX() < entityA.getBlockPos().getX()) { - velocity = new Vec3d(velocity.x - LinkartConfigurations.INSTANCE.getConfig().getVelocityMultiplier() * distance, velocity.y, velocity.z); - } - if (position.getY() > entityA.getBlockPos().getY()) { - velocity = new Vec3d(velocity.x, velocity.y - LinkartConfigurations.INSTANCE.getConfig().getVelocityMultiplier() * distance, velocity.z); - } else if (position.getY() < entityA.getBlockPos().getY()) { - velocity = new Vec3d(velocity.x, velocity.y + LinkartConfigurations.INSTANCE.getConfig().getVelocityMultiplier() * distance, velocity.z); - } - if (position.getZ() > entityA.getBlockPos().getZ()) { - velocity = new Vec3d(velocity.x, velocity.y, velocity.z + LinkartConfigurations.INSTANCE.getConfig().getVelocityMultiplier() * distance); - } else if (position.getZ() < entityA.getBlockPos().getZ()) { - velocity = new Vec3d(velocity.x, velocity.y, velocity.z - LinkartConfigurations.INSTANCE.getConfig().getVelocityMultiplier() * distance); - } - } - - return velocity; - } - - public static boolean step(World world, Set cache, BlockPos currentPosition, BlockPos finalPosition, MutableDouble distance) { - BlockState state = world.getBlockState(currentPosition); - - if (!(state.getBlock() instanceof AbstractRailBlock)) return false; - - if (currentPosition.equals(finalPosition)) return true; - - cache.add(currentPosition); - - List neighbors = (List) getNeighbors(currentPosition, state.get(((AbstractRailBlock) state.getBlock()).getShapeProperty())); - - for (BlockPos neighbor : neighbors) { - if (!cache.contains(neighbor) && step(world, cache, neighbor, finalPosition, distance)) { - if (distance.getValue() > LinkartConfigurations.INSTANCE.getConfig().getPathfindingDistance()) { - return false; - } else { - distance.increment(); - return true; - } - } - } - - return false; - } - - public static Collection getNeighbors(BlockPos position, RailShape shape) { - List neighbors = new ArrayList<>(); - switch (shape) { - case NORTH_SOUTH: - neighbors.add(position.north()); - neighbors.add(position.south()); - neighbors.add(position.north().down()); - neighbors.add(position.south().down()); - break; - case EAST_WEST: - neighbors.add(position.west()); - neighbors.add(position.east()); - neighbors.add(position.west().down()); - neighbors.add(position.east().down()); - break; - case ASCENDING_EAST: - neighbors.add(position.west().down()); - neighbors.add(position.west()); - neighbors.add(position.east().up()); - break; - case ASCENDING_WEST: - neighbors.add(position.west().up()); - neighbors.add(position.east()); - neighbors.add(position.east().down()); - break; - case ASCENDING_NORTH: - neighbors.add(position.north().up()); - neighbors.add(position.south()); - neighbors.add(position.south().down()); - break; - case ASCENDING_SOUTH: - neighbors.add(position.north().down()); - neighbors.add(position.north()); - neighbors.add(position.south().up()); - break; - case SOUTH_EAST: - neighbors.add(position.east()); - neighbors.add(position.south()); - neighbors.add(position.east().down()); - neighbors.add(position.south().down()); - break; - case SOUTH_WEST: - neighbors.add(position.west()); - neighbors.add(position.south()); - neighbors.add(position.west().down()); - neighbors.add(position.south().down()); - break; - case NORTH_WEST: - neighbors.add(position.west()); - neighbors.add(position.north()); - neighbors.add(position.west().down()); - neighbors.add(position.north().down()); - break; - case NORTH_EAST: - neighbors.add(position.east()); - neighbors.add(position.north()); - neighbors.add(position.east().down()); - neighbors.add(position.north().down()); - } - return neighbors; - } -} +package com.github.vini2003.linkart.utility + +import com.github.vini2003.linkart.accessor.AbstractMinecartEntityAccessor +import com.github.vini2003.linkart.registry.LinkartConfigurations +import com.github.vini2003.linkart.registry.LinkartDistanceRegistry +import net.minecraft.block.AbstractRailBlock +import net.minecraft.block.enums.RailShape +import net.minecraft.entity.Entity +import net.minecraft.entity.vehicle.AbstractMinecartEntity +import net.minecraft.entity.vehicle.FurnaceMinecartEntity +import net.minecraft.util.Pair +import net.minecraft.util.math.BlockPos +import net.minecraft.util.math.Vec3d +import net.minecraft.world.World +import org.apache.commons.lang3.mutable.MutableDouble +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo +import java.util.* + +object RailUtils { + + fun getNextRail(next: AbstractMinecartEntity, previous: AbstractMinecartEntity): Pair? { + Optional.ofNullable(if (next.passengerList.size >= 1) next.passengerList[0] else null) + .ifPresent { entity: Entity -> + entity.yaw = next.yaw + entity.pitch = next.pitch + entity.prevYaw = next.yaw + entity.prevPitch = next.pitch + } + Optional.ofNullable(if (previous.passengerList.size >= 1) previous.passengerList[0] else null) + .ifPresent { entity: Entity -> + entity.yaw = previous.yaw + entity.pitch = previous.pitch + entity.prevYaw = previous.yaw + entity.prevPitch = previous.pitch + } + val entityPosition = next.blockPos + val finalPosition = previous.blockPos + val state = next.world.getBlockState(next.blockPos) + if (state.block !is AbstractRailBlock) return null + val fuck = + getNeighbors(next.blockPos, state.get((state.block as AbstractRailBlock).shapeProperty)) as List + for (initialPosition in fuck) { + val cache: MutableSet = HashSet() + cache.add(entityPosition) + val distance = MutableDouble(0) + if (step(next.world, cache, initialPosition, finalPosition, distance)) { + return Pair(initialPosition, distance) + } + } + return null + } + + fun getNextVelocity(entityA: AbstractMinecartEntity, entityB: AbstractMinecartEntity): Vec3d { + val pair = getNextRail(entityA, entityB) + val maximumDistance = Math.max( + LinkartDistanceRegistry.INSTANCE.getByKey(entityA.type), + LinkartDistanceRegistry.INSTANCE.getByKey(entityB.type) + ) + if (pair == null && entityA.world.registryKey === entityB.world.registryKey) { + return Vec3d(entityB.x - entityA.x, entityB.y - entityA.y, entityB.z - entityA.z) + } else if (pair == null) { + return entityB.velocity + } + val position = pair.left + var distance = pair.right.value + distance += Math.abs(entityA.x - entityA.blockPos.x - (entityB.x - entityB.blockPos.x)) + distance += Math.abs(entityA.z - entityA.blockPos.z - (entityB.z - entityB.blockPos.z)) + distance += Math.abs(entityA.y - entityA.blockPos.y - (entityB.y - entityB.blockPos.y)) + var velocity = Vec3d.ZERO + if (distance > maximumDistance) { + distance = maximumDistance + if (position.x > entityA.blockPos.x) { + velocity = Vec3d( + velocity.x + LinkartConfigurations.INSTANCE.config.getVelocityMultiplier() * distance, + velocity.y, + velocity.z + ) + } else if (position.x < entityA.blockPos.x) { + velocity = Vec3d( + velocity.x - LinkartConfigurations.INSTANCE.config.getVelocityMultiplier() * distance, + velocity.y, + velocity.z + ) + } + if (position.y > entityA.blockPos.y) { + velocity = Vec3d( + velocity.x, + velocity.y - LinkartConfigurations.INSTANCE.config.getVelocityMultiplier() * distance, + velocity.z + ) + } else if (position.y < entityA.blockPos.y) { + velocity = Vec3d( + velocity.x, + velocity.y + LinkartConfigurations.INSTANCE.config.getVelocityMultiplier() * distance, + velocity.z + ) + } + if (position.z > entityA.blockPos.z) { + velocity = Vec3d( + velocity.x, + velocity.y, + velocity.z + LinkartConfigurations.INSTANCE.config.getVelocityMultiplier() * distance + ) + } else if (position.z < entityA.blockPos.z) { + velocity = Vec3d( + velocity.x, + velocity.y, + velocity.z - LinkartConfigurations.INSTANCE.config.getVelocityMultiplier() * distance + ) + } + } + return velocity + } + + fun step( + world: World, + cache: MutableSet, + currentPosition: BlockPos, + finalPosition: BlockPos, + distance: MutableDouble + ): Boolean { + val state = world.getBlockState(currentPosition) + if (state.block !is AbstractRailBlock) return false + if (currentPosition == finalPosition) return true + cache.add(currentPosition) + val neighbors = + getNeighbors(currentPosition, state.get((state.block as AbstractRailBlock).shapeProperty)) as List + for (neighbor in neighbors) { + if (!cache.contains(neighbor) && step(world, cache, neighbor, finalPosition, distance)) { + return if (distance.value > LinkartConfigurations.INSTANCE.config.getPathfindingDistance()) { + false + } else { + distance.increment() + true + } + } + } + return false + } + + fun getNeighbors(position: BlockPos, shape: RailShape?): Collection { + val neighbors: MutableList = ArrayList() + when (shape) { + RailShape.NORTH_SOUTH -> { + neighbors.add(position.north()) + neighbors.add(position.south()) + neighbors.add(position.north().down()) + neighbors.add(position.south().down()) + } + RailShape.EAST_WEST -> { + neighbors.add(position.west()) + neighbors.add(position.east()) + neighbors.add(position.west().down()) + neighbors.add(position.east().down()) + } + RailShape.ASCENDING_EAST -> { + neighbors.add(position.west().down()) + neighbors.add(position.west()) + neighbors.add(position.east().up()) + } + RailShape.ASCENDING_WEST -> { + neighbors.add(position.west().up()) + neighbors.add(position.east()) + neighbors.add(position.east().down()) + } + RailShape.ASCENDING_NORTH -> { + neighbors.add(position.north().up()) + neighbors.add(position.south()) + neighbors.add(position.south().down()) + } + RailShape.ASCENDING_SOUTH -> { + neighbors.add(position.north().down()) + neighbors.add(position.north()) + neighbors.add(position.south().up()) + } + RailShape.SOUTH_EAST -> { + neighbors.add(position.east()) + neighbors.add(position.south()) + neighbors.add(position.east().down()) + neighbors.add(position.south().down()) + } + RailShape.SOUTH_WEST -> { + neighbors.add(position.west()) + neighbors.add(position.south()) + neighbors.add(position.west().down()) + neighbors.add(position.south().down()) + } + RailShape.NORTH_WEST -> { + neighbors.add(position.west()) + neighbors.add(position.north()) + neighbors.add(position.west().down()) + neighbors.add(position.north().down()) + } + RailShape.NORTH_EAST -> { + neighbors.add(position.east()) + neighbors.add(position.north()) + neighbors.add(position.east().down()) + neighbors.add(position.north().down()) + } + } + return neighbors + } + + fun adjustVelocities(next: AbstractMinecartEntity, previous: AbstractMinecartEntity) { + + + var entityA: AbstractMinecartEntity = next + var entityB: AbstractMinecartEntity = previous + + if (entityA is FurnaceMinecartEntity) { + val temp = entityB + entityB = entityA + entityA = temp + } + + val nextVelocity = RailUtils.getNextVelocity(entityA, entityB) + entityA.velocity = nextVelocity + } + + fun handleTickCommon(entityMixin: AbstractMinecartEntity?, callbackInformation: CallbackInfo?) { + val mixedWorld = (entityMixin as? AbstractMinecartEntity)?.world ?: return + val next = (entityMixin as? AbstractMinecartEntity) ?: return + val accessor = (next as? AbstractMinecartEntityAccessor) ?: return + if (!mixedWorld.isClient) { + if (accessor.previous != null) { + val previous = accessor.previous + RailUtils.adjustVelocities(next, previous) + } + } + } +} \ No newline at end of file