diff --git a/BungeeCord-Patches/0006-Fetch-modules-from-the-Waterfall-API-endpoint.patch b/BungeeCord-Patches/0006-Fetch-modules-from-the-Waterfall-API-endpoint.patch index bae7024..2a31bf0 100644 --- a/BungeeCord-Patches/0006-Fetch-modules-from-the-Waterfall-API-endpoint.patch +++ b/BungeeCord-Patches/0006-Fetch-modules-from-the-Waterfall-API-endpoint.patch @@ -1,4 +1,4 @@ -From f2f55cb7743a44bc8d0db757315cbfab4d43f22f Mon Sep 17 00:00:00 2001 +From e8b830735afa54b82ac3ebbc9a64601a4dbfb360 Mon Sep 17 00:00:00 2001 From: Tux Date: Thu, 19 May 2016 11:34:52 -0700 Subject: [PATCH] Fetch modules from the Waterfall API endpoint @@ -6,24 +6,11 @@ Subject: [PATCH] Fetch modules from the Waterfall API endpoint Don't fetch from the BungeeCord CI, as that only has their modules diff --git a/proxy/src/main/java/net/md_5/bungee/module/JenkinsModuleSource.java b/proxy/src/main/java/net/md_5/bungee/module/JenkinsModuleSource.java -index 2536435c..5bb86152 100644 +index 064639f3..6a6661a5 100644 --- a/proxy/src/main/java/net/md_5/bungee/module/JenkinsModuleSource.java +++ b/proxy/src/main/java/net/md_5/bungee/module/JenkinsModuleSource.java -@@ -1,10 +1,10 @@ - package net.md_5.bungee.module; - --import com.google.common.io.ByteStreams; --import com.google.common.io.Files; - import java.io.IOException; - import java.net.URL; - import java.net.URLConnection; -+import java.nio.file.Files; -+import java.nio.file.StandardCopyOption; - import lombok.Data; - import net.md_5.bungee.Util; - -@@ -18,13 +18,21 @@ public class JenkinsModuleSource implements ModuleSource - System.out.println( "Attempting to Jenkins download module " + module.getName() + " v" + version.getBuild() ); +@@ -19,11 +19,19 @@ public class JenkinsModuleSource implements ModuleSource + ProxyServer.getInstance().getLogger().info( "Attempting to Jenkins download module " + module.getName() + " v" + version.getBuild() ); try { - URL website = new URL( "https://ci.md-5.net/job/BungeeCord/" + version.getBuild() + "/artifact/module/" + module.getName().replace( '_', '-' ) + "/target/" + module.getName() + ".jar" ); @@ -41,11 +28,8 @@ index 2536435c..5bb86152 100644 con.setReadTimeout( 15000 ); + con.setRequestProperty( "User-Agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" ); -- Files.write( ByteStreams.toByteArray( con.getInputStream() ), module.getFile() ); -+ Files.copy( con.getInputStream(), module.getFile().toPath(), StandardCopyOption.REPLACE_EXISTING ); - System.out.println( "Download complete" ); - } catch ( IOException ex ) - { + Files.write( ByteStreams.toByteArray( con.getInputStream() ), module.getFile() ); + ProxyServer.getInstance().getLogger().info( "Download complete" ); -- -2.43.0 +2.47.0 diff --git a/BungeeCord-Patches/0007-Fixup-ProtocolConstants.patch b/BungeeCord-Patches/0007-Fixup-ProtocolConstants.patch index 4753fb4..9ef01d0 100644 --- a/BungeeCord-Patches/0007-Fixup-ProtocolConstants.patch +++ b/BungeeCord-Patches/0007-Fixup-ProtocolConstants.patch @@ -1,14 +1,14 @@ -From 33836af35fea51d5c0c09c5b355f557b6caa8e95 Mon Sep 17 00:00:00 2001 +From 1f600472dc962c517bdd8dd1f7f5572808263a88 Mon Sep 17 00:00:00 2001 From: Troy Frew Date: Tue, 15 Nov 2016 09:07:51 -0500 Subject: [PATCH] Fixup ProtocolConstants diff --git a/protocol/src/main/java/net/md_5/bungee/protocol/ProtocolConstants.java b/protocol/src/main/java/net/md_5/bungee/protocol/ProtocolConstants.java -index 82ef4c5d..ef45ea31 100644 +index 86412d48..66609085 100644 --- a/protocol/src/main/java/net/md_5/bungee/protocol/ProtocolConstants.java +++ b/protocol/src/main/java/net/md_5/bungee/protocol/ProtocolConstants.java -@@ -121,6 +121,16 @@ public class ProtocolConstants +@@ -123,6 +123,16 @@ public class ProtocolConstants SUPPORTED_VERSION_IDS = supportedVersionIds.build(); } @@ -26,5 +26,5 @@ index 82ef4c5d..ef45ea31 100644 { -- -2.39.3 (Apple Git-146) +2.47.0 diff --git a/BungeeCord-Patches/0009-Don-t-access-a-ByteBuf-s-underlying-array.patch b/BungeeCord-Patches/0009-Don-t-access-a-ByteBuf-s-underlying-array.patch index e7ed9d9..9332984 100644 --- a/BungeeCord-Patches/0009-Don-t-access-a-ByteBuf-s-underlying-array.patch +++ b/BungeeCord-Patches/0009-Don-t-access-a-ByteBuf-s-underlying-array.patch @@ -1,4 +1,4 @@ -From 399142c001df2d50e1cba9eee822388bc39b12ab Mon Sep 17 00:00:00 2001 +From b212fd1b0a9b781f13e21b4c1e9c0432640baaf1 Mon Sep 17 00:00:00 2001 From: Techcable Date: Tue, 3 May 2016 20:31:52 -0700 Subject: [PATCH] Don't access a ByteBuf's underlying array @@ -43,10 +43,10 @@ index 70b292f0..91f71c09 100644 * Allow this packet to be sent as an "extended" packet. */ diff --git a/proxy/src/main/java/net/md_5/bungee/ServerConnector.java b/proxy/src/main/java/net/md_5/bungee/ServerConnector.java -index abdbfd1d..04bd6778 100644 +index b58a01c6..c7637608 100644 --- a/proxy/src/main/java/net/md_5/bungee/ServerConnector.java +++ b/proxy/src/main/java/net/md_5/bungee/ServerConnector.java -@@ -277,7 +277,7 @@ public class ServerConnector extends PacketHandler +@@ -286,7 +286,7 @@ public class ServerConnector extends PacketHandler ByteBuf brand = ByteBufAllocator.DEFAULT.heapBuffer(); DefinedPacket.writeString( bungee.getName() + " (" + bungee.getVersion() + ")", brand ); @@ -56,10 +56,10 @@ index abdbfd1d..04bd6778 100644 } diff --git a/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java b/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java -index 4684bfd8..63be43eb 100644 +index d518d05f..21019091 100644 --- a/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java +++ b/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java -@@ -313,7 +313,7 @@ public class DownstreamBridge extends PacketHandler +@@ -325,7 +325,7 @@ public class DownstreamBridge extends PacketHandler brand = ByteBufAllocator.DEFAULT.heapBuffer(); DefinedPacket.writeString( bungee.getName() + " (" + bungee.getVersion() + ")" + " <- " + serverBrand, brand ); @@ -69,7 +69,7 @@ index 4684bfd8..63be43eb 100644 // changes in the packet are ignored so we need to send it manually con.unsafe().sendPacket( pluginMessage ); diff --git a/proxy/src/main/java/net/md_5/bungee/netty/PipelineUtils.java b/proxy/src/main/java/net/md_5/bungee/netty/PipelineUtils.java -index 25f045be..544d34ed 100644 +index 2446f489..380b6012 100644 --- a/proxy/src/main/java/net/md_5/bungee/netty/PipelineUtils.java +++ b/proxy/src/main/java/net/md_5/bungee/netty/PipelineUtils.java @@ -55,7 +55,7 @@ import net.md_5.bungee.protocol.Varint21LengthFieldPrepender; @@ -82,5 +82,5 @@ index 25f045be..544d34ed 100644 { @Override -- -2.44.0 +2.47.0 diff --git a/BungeeCord-Patches/0010-Optimize-uuid-conversions.patch b/BungeeCord-Patches/0010-Optimize-uuid-conversions.patch index f6d41dd..ce299c7 100644 --- a/BungeeCord-Patches/0010-Optimize-uuid-conversions.patch +++ b/BungeeCord-Patches/0010-Optimize-uuid-conversions.patch @@ -1,4 +1,4 @@ -From 064c9dfefd11db8d743f61ab3a4003dca63f3f7b Mon Sep 17 00:00:00 2001 +From 4ef93b430b7240ea845535477c4d3ac49f906088 Mon Sep 17 00:00:00 2001 From: Techcable Date: Mon, 14 Mar 2016 15:40:44 -0700 Subject: [PATCH] Optimize uuid conversions @@ -250,10 +250,10 @@ index e582808f..29cd91dd 100644 } diff --git a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java -index 1d9a9ee5..616adcf1 100644 +index 224f231b..b7d7e71a 100644 --- a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java +++ b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java -@@ -806,7 +806,7 @@ public class InitialHandler extends PacketHandler implements PendingConnection +@@ -823,7 +823,7 @@ public class InitialHandler extends PacketHandler implements PendingConnection @Override public String getUUID() { @@ -263,5 +263,5 @@ index 1d9a9ee5..616adcf1 100644 @Override -- -2.44.0 +2.47.0 diff --git a/BungeeCord-Patches/0014-Enable-TCP_NODELAY.patch b/BungeeCord-Patches/0014-Enable-TCP_NODELAY.patch index b34bf1e..c481ec6 100644 --- a/BungeeCord-Patches/0014-Enable-TCP_NODELAY.patch +++ b/BungeeCord-Patches/0014-Enable-TCP_NODELAY.patch @@ -1,4 +1,4 @@ -From 8b98ff8d43ae4244bb9700d76f6d8b02270bc6fd Mon Sep 17 00:00:00 2001 +From 2cc77d1ddf7c29c825de970bd7cefcdfab496674 Mon Sep 17 00:00:00 2001 From: Harry Date: Sun, 24 Jan 2016 15:13:29 -0700 Subject: [PATCH] Enable TCP_NODELAY. @@ -6,10 +6,10 @@ Subject: [PATCH] Enable TCP_NODELAY. This is enabled by default on CraftBukkit/Spigot >= 1.8 and may help with network performance. diff --git a/proxy/src/main/java/net/md_5/bungee/netty/PipelineUtils.java b/proxy/src/main/java/net/md_5/bungee/netty/PipelineUtils.java -index 544d34ed..6a0d3351 100644 +index 380b6012..f1fce77b 100644 --- a/proxy/src/main/java/net/md_5/bungee/netty/PipelineUtils.java +++ b/proxy/src/main/java/net/md_5/bungee/netty/PipelineUtils.java -@@ -195,6 +195,7 @@ public class PipelineUtils +@@ -194,6 +194,7 @@ public class PipelineUtils { // IP_TOS is not supported (Windows XP / Windows Server 2003) } @@ -18,5 +18,5 @@ index 544d34ed..6a0d3351 100644 ch.config().setWriteBufferWaterMark( MARK ); -- -2.44.0 +2.47.0 diff --git a/BungeeCord-Patches/0015-Micro-optimizations.patch b/BungeeCord-Patches/0015-Micro-optimizations.patch index 9c6b271..8fb6d65 100644 --- a/BungeeCord-Patches/0015-Micro-optimizations.patch +++ b/BungeeCord-Patches/0015-Micro-optimizations.patch @@ -1,4 +1,4 @@ -From 87cb9413787e84d11886b19ed594167c8138e688 Mon Sep 17 00:00:00 2001 +From 1aa3fbcfe8aaf58084220dfc5142cff546a0b6c2 Mon Sep 17 00:00:00 2001 From: Tux Date: Tue, 19 Jan 2016 15:13:29 -0700 Subject: [PATCH] Micro-optimizations @@ -8,10 +8,10 @@ Subject: [PATCH] Micro-optimizations - Don't create a data input stream for every plugin message we get from servers diff --git a/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java b/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java -index b7856d92..61ce9ed6 100644 +index 21019091..b501f7bd 100644 --- a/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java +++ b/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java -@@ -295,7 +295,6 @@ public class DownstreamBridge extends PacketHandler +@@ -307,7 +307,6 @@ public class DownstreamBridge extends PacketHandler @SuppressWarnings("checkstyle:avoidnestedblocks") public void handle(PluginMessage pluginMessage) throws Exception { @@ -19,7 +19,7 @@ index b7856d92..61ce9ed6 100644 PluginMessageEvent event = new PluginMessageEvent( server, con, pluginMessage.getTag(), pluginMessage.getData().clone() ); if ( bungee.getPluginManager().callEvent( event ).isCancelled() ) -@@ -322,6 +321,7 @@ public class DownstreamBridge extends PacketHandler +@@ -334,6 +333,7 @@ public class DownstreamBridge extends PacketHandler if ( pluginMessage.getTag().equals( "BungeeCord" ) ) { @@ -28,5 +28,5 @@ index b7856d92..61ce9ed6 100644 String subChannel = in.readUTF(); -- -2.43.0 +2.47.0 diff --git a/BungeeCord-Patches/0016-Allow-invalid-packet-ids-for-forge-servers.patch b/BungeeCord-Patches/0016-Allow-invalid-packet-ids-for-forge-servers.patch index e58cd26..43c309d 100644 --- a/BungeeCord-Patches/0016-Allow-invalid-packet-ids-for-forge-servers.patch +++ b/BungeeCord-Patches/0016-Allow-invalid-packet-ids-for-forge-servers.patch @@ -1,4 +1,4 @@ -From 729077c39ea8d44f92ec3941204a153369368729 Mon Sep 17 00:00:00 2001 +From 093baa399deb298b579af81ebc95cc560bd188d4 Mon Sep 17 00:00:00 2001 From: Techcable Date: Thu, 19 May 2016 17:09:22 -0600 Subject: [PATCH] Allow invalid packet ids for forge servers @@ -37,10 +37,10 @@ index d79d5e5c..250e7620 100644 { packet.read( in, protocol, prot.getDirection(), protocolVersion ); diff --git a/protocol/src/main/java/net/md_5/bungee/protocol/Protocol.java b/protocol/src/main/java/net/md_5/bungee/protocol/Protocol.java -index 317fb2d4..db50f379 100644 +index 8aa57ed4..7a26c419 100644 --- a/protocol/src/main/java/net/md_5/bungee/protocol/Protocol.java +++ b/protocol/src/main/java/net/md_5/bungee/protocol/Protocol.java -@@ -884,14 +884,23 @@ public enum Protocol +@@ -917,14 +917,23 @@ public enum Protocol return protocol; } @@ -66,10 +66,10 @@ index 317fb2d4..db50f379 100644 throw new BadPacketException( "Packet with id " + id + " outside of range" ); } diff --git a/proxy/src/main/java/net/md_5/bungee/ServerConnector.java b/proxy/src/main/java/net/md_5/bungee/ServerConnector.java -index 7a211f1b..a25a493e 100644 +index 824166e5..b02121af 100644 --- a/proxy/src/main/java/net/md_5/bungee/ServerConnector.java +++ b/proxy/src/main/java/net/md_5/bungee/ServerConnector.java -@@ -234,6 +234,12 @@ public class ServerConnector extends PacketHandler +@@ -243,6 +243,12 @@ public class ServerConnector extends PacketHandler public static void handleLogin(ProxyServer bungee, ChannelWrapper ch, UserConnection user, BungeeServerInfo target, ForgeServerHandler handshakeHandler, ServerConnection server, Login login) throws Exception { ServerConnectedEvent event = new ServerConnectedEvent( user, server ); @@ -83,10 +83,10 @@ index 7a211f1b..a25a493e 100644 ch.write( BungeeCord.getInstance().registerChannels( user.getPendingConnection().getVersion() ) ); diff --git a/proxy/src/main/java/net/md_5/bungee/entitymap/EntityMap.java b/proxy/src/main/java/net/md_5/bungee/entitymap/EntityMap.java -index 70b58fab..0045a449 100644 +index 755b8fd6..699bbe3a 100644 --- a/proxy/src/main/java/net/md_5/bungee/entitymap/EntityMap.java +++ b/proxy/src/main/java/net/md_5/bungee/entitymap/EntityMap.java -@@ -343,6 +343,12 @@ public abstract class EntityMap +@@ -345,6 +345,12 @@ public abstract class EntityMap int packetId = DefinedPacket.readVarInt( packet ); int packetIdLength = packet.readerIndex() - readerIndex; @@ -100,5 +100,5 @@ index 70b58fab..0045a449 100644 { rewriteInt( packet, oldId, newId, readerIndex + packetIdLength ); -- -2.45.1 +2.47.0 diff --git a/BungeeCord-Patches/0017-Add-basic-support-for-configurable-tab-complete-thro.patch b/BungeeCord-Patches/0017-Add-basic-support-for-configurable-tab-complete-thro.patch index 1939cc6..dcf0d92 100644 --- a/BungeeCord-Patches/0017-Add-basic-support-for-configurable-tab-complete-thro.patch +++ b/BungeeCord-Patches/0017-Add-basic-support-for-configurable-tab-complete-thro.patch @@ -1,4 +1,4 @@ -From 5343292903efcc962a2a510267018bb5872c3995 Mon Sep 17 00:00:00 2001 +From bd268bfef42ab87a581edb79d2fd4f47d665378b Mon Sep 17 00:00:00 2001 From: Johannes Donath Date: Sat, 4 Jul 2015 06:31:33 +0200 Subject: [PATCH] Add basic support for configurable tab-complete throttling @@ -73,7 +73,7 @@ index 741ebfde..91743f01 100644 + } } diff --git a/proxy/src/main/java/net/md_5/bungee/connection/UpstreamBridge.java b/proxy/src/main/java/net/md_5/bungee/connection/UpstreamBridge.java -index f80515d4..050cc29b 100644 +index c9e3697e..7ac9e6de 100644 --- a/proxy/src/main/java/net/md_5/bungee/connection/UpstreamBridge.java +++ b/proxy/src/main/java/net/md_5/bungee/connection/UpstreamBridge.java @@ -51,6 +51,8 @@ public class UpstreamBridge extends PacketHandler @@ -85,7 +85,7 @@ index f80515d4..050cc29b 100644 public UpstreamBridge(ProxyServer bungee, UserConnection con) { this.bungee = bungee; -@@ -230,6 +232,20 @@ public class UpstreamBridge extends PacketHandler +@@ -231,6 +233,20 @@ public class UpstreamBridge extends PacketHandler @Override public void handle(TabCompleteRequest tabComplete) throws Exception { @@ -107,5 +107,5 @@ index f80515d4..050cc29b 100644 boolean isRegisteredCommand = false; boolean isCommand = tabComplete.getCursor().startsWith( "/" ); -- -2.44.0 +2.47.0 diff --git a/BungeeCord-Patches/0018-Improve-server-list-ping-logging.patch b/BungeeCord-Patches/0018-Improve-server-list-ping-logging.patch index fc174b5..ab9a905 100644 --- a/BungeeCord-Patches/0018-Improve-server-list-ping-logging.patch +++ b/BungeeCord-Patches/0018-Improve-server-list-ping-logging.patch @@ -1,4 +1,4 @@ -From d5eaa35359d90f611f6450fb6ee12014e0a13921 Mon Sep 17 00:00:00 2001 +From 6a3372622d017776aec8f1ddca2987fbf4435cd8 Mon Sep 17 00:00:00 2001 From: Janmm14 Date: Sat, 12 Dec 2015 23:43:30 +0100 Subject: [PATCH] Improve server list ping logging @@ -7,10 +7,10 @@ This functionality of this patch was adopted upstream, however, this patch remains for a few misc improvements around here diff --git a/proxy/src/main/java/net/md_5/bungee/ServerConnector.java b/proxy/src/main/java/net/md_5/bungee/ServerConnector.java -index a25a493e..63920e7e 100644 +index b02121af..6f49765f 100644 --- a/proxy/src/main/java/net/md_5/bungee/ServerConnector.java +++ b/proxy/src/main/java/net/md_5/bungee/ServerConnector.java -@@ -522,6 +522,6 @@ public class ServerConnector extends PacketHandler +@@ -533,6 +533,6 @@ public class ServerConnector extends PacketHandler @Override public String toString() { @@ -19,10 +19,10 @@ index a25a493e..63920e7e 100644 } } diff --git a/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java b/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java -index d408840d..cd3ed518 100644 +index b501f7bd..1c075a9f 100644 --- a/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java +++ b/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java -@@ -790,6 +790,6 @@ public class DownstreamBridge extends PacketHandler +@@ -802,6 +802,6 @@ public class DownstreamBridge extends PacketHandler @Override public String toString() { @@ -31,10 +31,10 @@ index d408840d..cd3ed518 100644 } } diff --git a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java -index 616adcf1..0fbe8b0d 100644 +index b7d7e71a..72f6111e 100644 --- a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java +++ b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java -@@ -812,20 +812,7 @@ public class InitialHandler extends PacketHandler implements PendingConnection +@@ -829,20 +829,7 @@ public class InitialHandler extends PacketHandler implements PendingConnection @Override public String toString() { @@ -57,10 +57,10 @@ index 616adcf1..0fbe8b0d 100644 @Override diff --git a/proxy/src/main/java/net/md_5/bungee/connection/UpstreamBridge.java b/proxy/src/main/java/net/md_5/bungee/connection/UpstreamBridge.java -index bfd5cb5f..2dafa4d9 100644 +index 7ac9e6de..0a020ffc 100644 --- a/proxy/src/main/java/net/md_5/bungee/connection/UpstreamBridge.java +++ b/proxy/src/main/java/net/md_5/bungee/connection/UpstreamBridge.java -@@ -396,6 +396,6 @@ public class UpstreamBridge extends PacketHandler +@@ -397,6 +397,6 @@ public class UpstreamBridge extends PacketHandler @Override public String toString() { @@ -69,5 +69,5 @@ index bfd5cb5f..2dafa4d9 100644 } } -- -2.44.0 +2.47.0 diff --git a/BungeeCord-Patches/0019-Add-a-property-to-accept-invalid-ping-packets.patch b/BungeeCord-Patches/0019-Add-a-property-to-accept-invalid-ping-packets.patch index 32c064d..f4820a7 100644 --- a/BungeeCord-Patches/0019-Add-a-property-to-accept-invalid-ping-packets.patch +++ b/BungeeCord-Patches/0019-Add-a-property-to-accept-invalid-ping-packets.patch @@ -1,4 +1,4 @@ -From 34c7d23c344f60184778406b573dfaa6209be1a9 Mon Sep 17 00:00:00 2001 +From 6b92feb2426c2bd0866b6ee3aa7fc175ecea40ca Mon Sep 17 00:00:00 2001 From: Techcable Date: Sun, 7 Feb 2016 00:01:19 -0700 Subject: [PATCH] Add a property to accept invalid ping packets @@ -9,10 +9,10 @@ You can enable it by setting '-Dwaterfall.acceptInvalidPackets=true' at the comm Fixes #23 diff --git a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java -index 0fbe8b0d..deb9fef3 100644 +index 72f6111e..fd577788 100644 --- a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java +++ b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java -@@ -325,10 +325,14 @@ public class InitialHandler extends PacketHandler implements PendingConnection +@@ -333,10 +333,14 @@ public class InitialHandler extends PacketHandler implements PendingConnection thisState = State.PING; } @@ -29,5 +29,5 @@ index 0fbe8b0d..deb9fef3 100644 disconnect( "" ); } -- -2.44.0 +2.47.0 diff --git a/BungeeCord-Patches/0021-Better-Decompression-Sanity.patch b/BungeeCord-Patches/0021-Better-Decompression-Sanity.patch index 23293e3..ed4cac3 100644 --- a/BungeeCord-Patches/0021-Better-Decompression-Sanity.patch +++ b/BungeeCord-Patches/0021-Better-Decompression-Sanity.patch @@ -1,4 +1,4 @@ -From 248079a510a933343b7f52004e87a7c38170a5ed Mon Sep 17 00:00:00 2001 +From 2bdd9d8ae204e2645bbb2cb9fb07e45800f9c710 Mon Sep 17 00:00:00 2001 From: Techcable Date: Fri, 18 Mar 2016 10:53:24 -0700 Subject: [PATCH] Better Decompression Sanity @@ -45,10 +45,10 @@ index 445ee947..eaedf4bc 100644 out.add( decompressed ); decompressed = null; diff --git a/proxy/src/main/java/net/md_5/bungee/netty/ChannelWrapper.java b/proxy/src/main/java/net/md_5/bungee/netty/ChannelWrapper.java -index e8d5ed19..00e03bae 100644 +index 682bb807..e0a35f73 100644 --- a/proxy/src/main/java/net/md_5/bungee/netty/ChannelWrapper.java +++ b/proxy/src/main/java/net/md_5/bungee/netty/ChannelWrapper.java -@@ -181,7 +181,7 @@ public class ChannelWrapper +@@ -185,7 +185,7 @@ public class ChannelWrapper if ( ch.pipeline().get( PacketDecompressor.class ) == null && compressionThreshold >= 0 ) { @@ -58,5 +58,5 @@ index e8d5ed19..00e03bae 100644 if ( compressionThreshold < 0 ) { -- -2.43.0 +2.47.0 diff --git a/BungeeCord-Patches/0024-Improve-ServerKickEvent.patch b/BungeeCord-Patches/0024-Improve-ServerKickEvent.patch index 035bc31..3a4b2ff 100644 --- a/BungeeCord-Patches/0024-Improve-ServerKickEvent.patch +++ b/BungeeCord-Patches/0024-Improve-ServerKickEvent.patch @@ -1,4 +1,4 @@ -From c948a81d4f6604ea281baa2f9a96ac9366ea9e44 Mon Sep 17 00:00:00 2001 +From 1c384f08c5a31d8a3b5b38bf87ac23c6066cffc5 Mon Sep 17 00:00:00 2001 From: Nathan Poirier Date: Tue, 28 Jun 2016 23:00:49 -0500 Subject: [PATCH] Improve ServerKickEvent @@ -68,10 +68,10 @@ index 3f9efaa8..5d2597ad 100644 /** * @return the kick reason diff --git a/proxy/src/main/java/net/md_5/bungee/ServerConnector.java b/proxy/src/main/java/net/md_5/bungee/ServerConnector.java -index e670a57a..307a417b 100644 +index 6f49765f..661c6563 100644 --- a/proxy/src/main/java/net/md_5/bungee/ServerConnector.java +++ b/proxy/src/main/java/net/md_5/bungee/ServerConnector.java -@@ -439,7 +439,7 @@ public class ServerConnector extends PacketHandler +@@ -450,7 +450,7 @@ public class ServerConnector extends PacketHandler ServerKickEvent event = new ServerKickEvent( user, target, new BaseComponent[] { kick.getMessage() @@ -81,56 +81,10 @@ index e670a57a..307a417b 100644 { // Pre cancel the event if we are going to try another server diff --git a/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java b/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java -index cd3ed518..d4036c5d 100644 +index 1c075a9f..c567d549 100644 --- a/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java +++ b/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java -@@ -98,16 +98,19 @@ public class DownstreamBridge extends PacketHandler - return; - } - -+ // Waterfall start - ServerInfo def = con.updateAndGetNextServer( server.getInfo() ); -- if ( def != null ) -+ ServerKickEvent event = bungee.getPluginManager().callEvent( new ServerKickEvent( con, server.getInfo(), TextComponent.fromLegacyText( bungee.getTranslation( "server_went_down" ) ), def, ServerKickEvent.State.CONNECTED, ServerKickEvent.Cause.EXCEPTION ) ); -+ if ( event.isCancelled() && event.getCancelServer() != null ) - { - server.setObsolete( true ); -- con.connectNow( def, ServerConnectEvent.Reason.SERVER_DOWN_REDIRECT ); -- con.sendMessage( bungee.getTranslation( "server_went_down" ) ); -- } else -+ con.connectNow( event.getCancelServer(), ServerConnectEvent.Reason.SERVER_DOWN_REDIRECT ); -+ } -+ else - { -- con.disconnect( Util.exception( t ) ); -+ con.disconnect0( event.getReason() ); - } -+ // Waterfall end - } - - @Override -@@ -122,7 +125,19 @@ public class DownstreamBridge extends PacketHandler - - if ( !server.isObsolete() ) - { -- con.disconnect( bungee.getTranslation( "lost_connection" ) ); -+ // Waterfall start -+ ServerInfo def = con.updateAndGetNextServer( server.getInfo() ); -+ ServerKickEvent event = bungee.getPluginManager().callEvent( new ServerKickEvent( con, server.getInfo(), TextComponent.fromLegacyText( bungee.getTranslation( "lost_connection" ) ), def, ServerKickEvent.State.CONNECTED, ServerKickEvent.Cause.LOST_CONNECTION ) ); -+ if ( event.isCancelled() && event.getCancelServer() != null ) -+ { -+ server.setObsolete( true ); -+ con.connectNow( event.getCancelServer() ); -+ } -+ else -+ { -+ con.disconnect0( event.getReason() ); -+ } -+ // Waterfall end - } - - ServerDisconnectEvent serverDisconnectEvent = new ServerDisconnectEvent( con, server.getInfo() ); -@@ -633,10 +648,14 @@ public class DownstreamBridge extends PacketHandler +@@ -645,10 +645,14 @@ public class DownstreamBridge extends PacketHandler public void handle(Kick kick) throws Exception { ServerInfo def = con.updateAndGetNextServer( server.getInfo() ); @@ -147,5 +101,5 @@ index cd3ed518..d4036c5d 100644 { con.connectNow( event.getCancelServer(), ServerConnectEvent.Reason.KICK_REDIRECT ); -- -2.44.0 +2.47.0 diff --git a/BungeeCord-Patches/0026-Add-timeout-variant-to-connect-methods.patch b/BungeeCord-Patches/0026-Add-timeout-variant-to-connect-methods.patch index 5011dc9..a06d0b1 100644 --- a/BungeeCord-Patches/0026-Add-timeout-variant-to-connect-methods.patch +++ b/BungeeCord-Patches/0026-Add-timeout-variant-to-connect-methods.patch @@ -1,4 +1,4 @@ -From c489acf737b0340bc283c49f39517a14736a58a1 Mon Sep 17 00:00:00 2001 +From 96e88d4ac24e1ba6941f1d4f070ec88db6c67ad9 Mon Sep 17 00:00:00 2001 From: Ichbinjoe Date: Sat, 16 Jul 2016 20:44:01 -0400 Subject: [PATCH] Add timeout variant to connect methods @@ -75,7 +75,7 @@ index 0fe647b8..32af4937 100644 * Connects / transfers this user to the specified connection, gracefully * closing the current one. Depending on the implementation, this method diff --git a/proxy/src/main/java/net/md_5/bungee/UserConnection.java b/proxy/src/main/java/net/md_5/bungee/UserConnection.java -index c8d5648c..7e36c0eb 100644 +index 52bca3e9..36582d85 100644 --- a/proxy/src/main/java/net/md_5/bungee/UserConnection.java +++ b/proxy/src/main/java/net/md_5/bungee/UserConnection.java @@ -285,9 +285,20 @@ public final class UserConnection implements ProxiedPlayer @@ -99,7 +99,7 @@ index c8d5648c..7e36c0eb 100644 if ( callback != null ) { // Convert the Callback to be compatible with Callback from ServerConnectRequest. -@@ -381,7 +392,7 @@ public final class UserConnection implements ProxiedPlayer +@@ -382,7 +393,7 @@ public final class UserConnection implements ProxiedPlayer if ( request.isRetry() && def != null && ( getServer() == null || def != getServer().getInfo() ) ) { sendMessage( bungee.getTranslation( "fallback_lobby" ) ); @@ -109,5 +109,5 @@ index c8d5648c..7e36c0eb 100644 { disconnect( bungee.getTranslation( "fallback_kick", connectionFailMessage( future.cause() ) ) ); -- -2.44.0 +2.47.0 diff --git a/BungeeCord-Patches/0029-Fix-potion-race-condition-on-Forge-1.8.9.patch b/BungeeCord-Patches/0029-Fix-potion-race-condition-on-Forge-1.8.9.patch index a6bb5f8..34737c5 100644 --- a/BungeeCord-Patches/0029-Fix-potion-race-condition-on-Forge-1.8.9.patch +++ b/BungeeCord-Patches/0029-Fix-potion-race-condition-on-Forge-1.8.9.patch @@ -1,4 +1,4 @@ -From f5c341bf2e3a268299c88c9fe9726111194e498d Mon Sep 17 00:00:00 2001 +From 92107dac4cc9aca1290d127e86fbf240a959d493 Mon Sep 17 00:00:00 2001 From: Aaron Hill Date: Thu, 15 Sep 2016 22:38:37 +0200 Subject: [PATCH] Fix potion race condition on Forge 1.8.9 @@ -117,7 +117,7 @@ index 00000000..7ed2dc3a + } +} diff --git a/proxy/src/main/java/net/md_5/bungee/UserConnection.java b/proxy/src/main/java/net/md_5/bungee/UserConnection.java -index d8f7bc95..d15f2bcc 100644 +index 36582d85..df160672 100644 --- a/proxy/src/main/java/net/md_5/bungee/UserConnection.java +++ b/proxy/src/main/java/net/md_5/bungee/UserConnection.java @@ -1,7 +1,9 @@ @@ -142,10 +142,10 @@ index d8f7bc95..d15f2bcc 100644 @Setter private String lastCommandTabbed; diff --git a/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java b/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java -index d4036c5d..ad9fc042 100644 +index c567d549..a9258264 100644 --- a/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java +++ b/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java -@@ -753,6 +753,32 @@ public class DownstreamBridge extends PacketHandler +@@ -750,6 +750,32 @@ public class DownstreamBridge extends PacketHandler } } @@ -216,5 +216,5 @@ index d15044f4..bea2bbff 100644 * Sends the server mod list to the client, or stores it for sending later. * -- -2.45.1 +2.47.0 diff --git a/BungeeCord-Patches/0033-Use-Log4j2-for-logging-and-TerminalConsoleAppender-f.patch b/BungeeCord-Patches/0033-Use-Log4j2-for-logging-and-TerminalConsoleAppender-f.patch index 87dbbd5..36d2599 100644 --- a/BungeeCord-Patches/0033-Use-Log4j2-for-logging-and-TerminalConsoleAppender-f.patch +++ b/BungeeCord-Patches/0033-Use-Log4j2-for-logging-and-TerminalConsoleAppender-f.patch @@ -1,4 +1,4 @@ -From 044b8172b414f1fb8a4f696402d12adc5720518f Mon Sep 17 00:00:00 2001 +From c9c86d9054a05493a074fab732839c90121a1b6d Mon Sep 17 00:00:00 2001 From: Minecrell Date: Fri, 22 Sep 2017 12:46:47 +0200 Subject: [PATCH] Use Log4j2 for logging and TerminalConsoleAppender for @@ -509,19 +509,6 @@ index 3e5ca394..00000000 - return ( lastSpace == -1 ) ? cursor - buffer.length() : cursor - ( buffer.length() - lastSpace - 1 ); - } -} -diff --git a/proxy/src/main/java/net/md_5/bungee/module/ModuleManager.java b/proxy/src/main/java/net/md_5/bungee/module/ModuleManager.java -index 9ec4920e..d3abee44 100644 ---- a/proxy/src/main/java/net/md_5/bungee/module/ModuleManager.java -+++ b/proxy/src/main/java/net/md_5/bungee/module/ModuleManager.java -@@ -44,7 +44,7 @@ public class ModuleManager - ModuleVersion bungeeVersion = ModuleVersion.parse( proxy.getVersion() ); - if ( bungeeVersion == null ) - { -- System.out.println( "Couldn't detect bungee version. Custom build?" ); -+ proxy.getLogger().warning( "Couldn't detect bungee version. Custom build?" ); // Waterfall - Use logger - return; - } - diff --git a/slf4j/nb-configuration.xml b/slf4j/nb-configuration.xml deleted file mode 100644 index 7e465924..00000000 @@ -1588,5 +1575,5 @@ index 21a48df6..00000000 - -} -- -2.39.3 (Apple Git-146) +2.47.0 diff --git a/BungeeCord-Patches/0039-Optionally-log-InitialHandler-connections.patch b/BungeeCord-Patches/0039-Optionally-log-InitialHandler-connections.patch index 1e015bb..4639dee 100644 --- a/BungeeCord-Patches/0039-Optionally-log-InitialHandler-connections.patch +++ b/BungeeCord-Patches/0039-Optionally-log-InitialHandler-connections.patch @@ -1,4 +1,4 @@ -From 34ee64660bf849e84b516b691fde2772ff3f758e Mon Sep 17 00:00:00 2001 +From 396b6aec9b76caa9d06636bbd8b15f23ba03449a Mon Sep 17 00:00:00 2001 From: Gabriele C Date: Thu, 8 Feb 2018 19:10:52 +0100 Subject: [PATCH] Optionally log InitialHandler connections @@ -61,10 +61,10 @@ index ef44d334..4ff8da6d 100644 public String getGameVersion() { return gameVersion; diff --git a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java -index 05261ccf..fcd973e5 100644 +index 1a6b7ae3..d6872035 100644 --- a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java +++ b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java -@@ -388,7 +388,10 @@ public class InitialHandler extends PacketHandler implements PendingConnection +@@ -396,7 +396,10 @@ public class InitialHandler extends PacketHandler implements PendingConnection case 3: transferred = handshake.getRequestedProtocol() == 3; // Login @@ -77,5 +77,5 @@ index 05261ccf..fcd973e5 100644 ch.setProtocol( Protocol.LOGIN ); -- -2.44.0 +2.47.0 diff --git a/BungeeCord-Patches/0043-Provide-an-option-to-disable-entity-metadata-rewriti.patch b/BungeeCord-Patches/0043-Provide-an-option-to-disable-entity-metadata-rewriti.patch index 447ea8e..24505a9 100644 --- a/BungeeCord-Patches/0043-Provide-an-option-to-disable-entity-metadata-rewriti.patch +++ b/BungeeCord-Patches/0043-Provide-an-option-to-disable-entity-metadata-rewriti.patch @@ -1,4 +1,4 @@ -From 19006aa082232d2d527b49872c4e8c14988a8565 Mon Sep 17 00:00:00 2001 +From e940da46ebd2e126da2b76a536e8ef77b206eb54 Mon Sep 17 00:00:00 2001 From: Shane Freeder Date: Mon, 14 Jan 2019 03:35:21 +0000 Subject: [PATCH] Provide an option to disable entity metadata rewriting @@ -57,10 +57,10 @@ index 4ff8da6d..e860214f 100644 + } } diff --git a/proxy/src/main/java/net/md_5/bungee/ServerConnector.java b/proxy/src/main/java/net/md_5/bungee/ServerConnector.java -index e10f33ad..c0c523e3 100644 +index 661c6563..cc5afa04 100644 --- a/proxy/src/main/java/net/md_5/bungee/ServerConnector.java +++ b/proxy/src/main/java/net/md_5/bungee/ServerConnector.java -@@ -264,7 +264,8 @@ public class ServerConnector extends PacketHandler +@@ -273,7 +273,8 @@ public class ServerConnector extends PacketHandler ch.write( new PluginMessage( user.getPendingConnection().getVersion() >= ProtocolConstants.MINECRAFT_1_13 ? "minecraft:register" : "REGISTER", Joiner.on( "\0" ).join( registeredChannels ).getBytes( StandardCharsets.UTF_8 ), false ) ); } @@ -70,7 +70,7 @@ index e10f33ad..c0c523e3 100644 { ch.write( user.getSettings() ); } -@@ -319,6 +320,7 @@ public class ServerConnector extends PacketHandler +@@ -328,6 +329,7 @@ public class ServerConnector extends PacketHandler user.getTabListHandler().onServerChange(); Scoreboard serverScoreboard = user.getServerSentScoreboard(); @@ -78,7 +78,7 @@ index e10f33ad..c0c523e3 100644 for ( Objective objective : serverScoreboard.getObjectives() ) { user.unsafe().sendPacket( new ScoreboardObjective( -@@ -342,6 +344,7 @@ public class ServerConnector extends PacketHandler +@@ -351,6 +353,7 @@ public class ServerConnector extends PacketHandler { user.unsafe().sendPacket( new net.md_5.bungee.protocol.packet.Team( team.getName() ) ); } @@ -86,7 +86,7 @@ index e10f33ad..c0c523e3 100644 serverScoreboard.clear(); for ( UUID bossbar : user.getSentBossBars() ) -@@ -360,13 +363,34 @@ public class ServerConnector extends PacketHandler +@@ -369,13 +372,34 @@ public class ServerConnector extends PacketHandler } user.setDimensionChange( true ); @@ -94,7 +94,7 @@ index e10f33ad..c0c523e3 100644 + if ( !user.isDisableEntityMetadataRewrite() && login.getDimension() == user.getDimension() ) // Waterfall - defer { user.unsafe().sendPacket( new Respawn( (Integer) login.getDimension() >= 0 ? -1 : 0, login.getWorldName(), login.getSeed(), login.getDifficulty(), login.getGameMode(), login.getPreviousGameMode(), login.getLevelType(), login.isDebug(), login.isFlat(), - (byte) 0, login.getDeathLocation(), login.getPortalCooldown() ) ); + (byte) 0, login.getDeathLocation(), login.getPortalCooldown(), login.getSeaLevel() ) ); } user.setServerEntityId( login.getEntityId() ); @@ -106,24 +106,24 @@ index e10f33ad..c0c523e3 100644 + // Only send if we are not in the same dimension + if ( login.getDimension() != user.getDimension() ) // Waterfall - defer + { -+ user.unsafe().sendPacket( new Respawn( (Integer) user.getDimension() >= 0 ? -1 : 0, login.getWorldName(), login.getSeed(), login.getDifficulty(), login.getGameMode(), login.getPreviousGameMode(), login.getLevelType(), login.isDebug(), login.isFlat(), (byte) 0, login.getDeathLocation(), login.getPortalCooldown() ) ); ++ user.unsafe().sendPacket( new Respawn( (Integer) user.getDimension() >= 0 ? -1 : 0, login.getWorldName(), login.getSeed(), login.getDifficulty(), login.getGameMode(), login.getPreviousGameMode(), login.getLevelType(), login.isDebug(), login.isFlat(), (byte) 0, login.getDeathLocation(), login.getPortalCooldown(), login.getSeaLevel() ) ); + } + Login modLogin = new Login( login.getEntityId(), login.isHardcore(), login.getGameMode(), login.getPreviousGameMode(), login.getWorldNames(), login.getDimensions(), login.getDimension(), login.getWorldName(), login.getSeed(), login.getDifficulty(), + (byte) user.getPendingConnection().getListener().getTabListSize(), login.getLevelType(), login.getViewDistance(), login.getSimulationDistance(), login.isReducedDebugInfo(), login.isNormalRespawn(), login.isLimitedCrafting(), login.isDebug(), login.isFlat(), login.getDeathLocation(), -+ login.getPortalCooldown(), login.isSecureProfile() ); ++ login.getPortalCooldown(), login.getSeaLevel(), login.isSecureProfile() ); + user.unsafe().sendPacket(modLogin); + // Only send if we're in the same dimension + if ( login.getDimension() == user.getDimension() ) // Waterfall - defer + { -+ user.unsafe().sendPacket( new Respawn( (Integer) login.getDimension() >= 0 ? -1 : 0, login.getWorldName(), login.getSeed(), login.getDifficulty(), login.getGameMode(), login.getPreviousGameMode(), login.getLevelType(), login.isDebug(), login.isFlat(), (byte) 0, login.getDeathLocation(), login.getPortalCooldown() ) ); ++ user.unsafe().sendPacket( new Respawn( (Integer) login.getDimension() >= 0 ? -1 : 0, login.getWorldName(), login.getSeed(), login.getDifficulty(), login.getGameMode(), login.getPreviousGameMode(), login.getLevelType(), login.isDebug(), login.isFlat(), (byte) 0, login.getDeathLocation(), login.getPortalCooldown(), login.getSeaLevel() ) ); + } + } + // Waterfall end user.unsafe().sendPacket( new Respawn( login.getDimension(), login.getWorldName(), login.getSeed(), login.getDifficulty(), login.getGameMode(), login.getPreviousGameMode(), login.getLevelType(), login.isDebug(), login.isFlat(), - (byte) 0, login.getDeathLocation(), login.getPortalCooldown() ) ); + (byte) 0, login.getDeathLocation(), login.getPortalCooldown(), login.getSeaLevel() ) ); if ( user.getPendingConnection().getVersion() >= ProtocolConstants.MINECRAFT_1_14 ) diff --git a/proxy/src/main/java/net/md_5/bungee/UserConnection.java b/proxy/src/main/java/net/md_5/bungee/UserConnection.java -index d15f2bcc..b8762fc0 100644 +index df160672..a84f9b12 100644 --- a/proxy/src/main/java/net/md_5/bungee/UserConnection.java +++ b/proxy/src/main/java/net/md_5/bungee/UserConnection.java @@ -821,4 +821,9 @@ public final class UserConnection implements ProxiedPlayer @@ -137,10 +137,10 @@ index d15f2bcc..b8762fc0 100644 + // Waterfall end } diff --git a/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java b/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java -index ad9fc042..6ed25f82 100644 +index a9258264..da3db022 100644 --- a/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java +++ b/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java -@@ -757,6 +757,7 @@ public class DownstreamBridge extends PacketHandler +@@ -754,6 +754,7 @@ public class DownstreamBridge extends PacketHandler @Override public void handle(net.md_5.bungee.protocol.packet.EntityEffect entityEffect) throws Exception { @@ -148,7 +148,7 @@ index ad9fc042..6ed25f82 100644 // Don't send any potions when switching between servers (which involves a handshake), which can trigger a race // condition on the client. if (this.con.getForgeClientHandler().isForgeUser() && !this.con.getForgeClientHandler().isHandshakeComplete()) { -@@ -768,6 +769,7 @@ public class DownstreamBridge extends PacketHandler +@@ -765,6 +766,7 @@ public class DownstreamBridge extends PacketHandler @Override public void handle(net.md_5.bungee.protocol.packet.EntityRemoveEffect removeEffect) throws Exception { @@ -157,7 +157,7 @@ index ad9fc042..6ed25f82 100644 } diff --git a/proxy/src/main/java/net/md_5/bungee/entitymap/EntityMap.java b/proxy/src/main/java/net/md_5/bungee/entitymap/EntityMap.java -index 0045a449..39eab669 100644 +index 699bbe3a..0f9f5957 100644 --- a/proxy/src/main/java/net/md_5/bungee/entitymap/EntityMap.java +++ b/proxy/src/main/java/net/md_5/bungee/entitymap/EntityMap.java @@ -27,6 +27,11 @@ public abstract class EntityMap @@ -172,7 +172,7 @@ index 0045a449..39eab669 100644 switch ( version ) { case ProtocolConstants.MINECRAFT_1_8: -@@ -305,7 +310,13 @@ public abstract class EntityMap +@@ -307,7 +312,13 @@ public abstract class EntityMap DefinedPacket.readVarInt( packet ); break; default: @@ -225,5 +225,5 @@ index 00000000..cb81d1dd +// Waterfall end \ No newline at end of file -- -2.45.1 +2.47.0 diff --git a/BungeeCord-Patches/0044-Add-ProxyDefineCommandsEvent.patch b/BungeeCord-Patches/0044-Add-ProxyDefineCommandsEvent.patch index 0f9e17d..d14224b 100644 --- a/BungeeCord-Patches/0044-Add-ProxyDefineCommandsEvent.patch +++ b/BungeeCord-Patches/0044-Add-ProxyDefineCommandsEvent.patch @@ -1,4 +1,4 @@ -From 8c33d4de8183d34c90460a315ad42307e731c4dc Mon Sep 17 00:00:00 2001 +From b93ab3b66e55042fa4965d287eb4bec71d2532dc Mon Sep 17 00:00:00 2001 From: Shane Freeder Date: Thu, 14 Mar 2019 07:44:06 +0000 Subject: [PATCH] Add ProxyDefineCommandsEvent @@ -54,10 +54,10 @@ index 00000000..1fd4fc90 + +} diff --git a/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java b/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java -index 6ed25f82..1a863dc0 100644 +index da3db022..7b9c9268 100644 --- a/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java +++ b/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java -@@ -792,9 +792,25 @@ public class DownstreamBridge extends PacketHandler +@@ -789,9 +789,25 @@ public class DownstreamBridge extends PacketHandler { boolean modified = false; @@ -86,5 +86,5 @@ index 6ed25f82..1a863dc0 100644 CommandNode dummy = LiteralArgumentBuilder.literal( command.getKey() ).executes( DUMMY_COMMAND ) .then( RequiredArgumentBuilder.argument( "args", StringArgumentType.greedyString() ) -- -2.44.0 +2.47.0 diff --git a/BungeeCord-Patches/0046-OSX-native-zlib-and-crypto.patch b/BungeeCord-Patches/0046-OSX-native-zlib-and-crypto.patch index e3c9868..5aefc22 100644 --- a/BungeeCord-Patches/0046-OSX-native-zlib-and-crypto.patch +++ b/BungeeCord-Patches/0046-OSX-native-zlib-and-crypto.patch @@ -1,849 +1,904 @@ -From d2ee8dce1c0b939e6d60695edd93b7132cd8b43b Mon Sep 17 00:00:00 2001 +From bfc12af5afb0dd0155cbde38059d4f79b03f127b Mon Sep 17 00:00:00 2001 From: Colin Godsey Date: Tue, 16 Apr 2019 07:25:52 -0600 Subject: [PATCH] OSX native zlib and crypto -diff --git a/native/compile-native.sh b/native/compile-native.sh -index c342e782..2ee8df94 100755 ---- a/native/compile-native.sh -+++ b/native/compile-native.sh -@@ -8,7 +8,17 @@ echo "Compiling mbedtls" - echo "Compiling zlib" - (cd zlib && CFLAGS=-fPIC ./configure --static && make) +diff --git a/native/compile-native-arm.sh b/native/compile-native-arm.sh +index f3e2fd59..c73a235e 100755 +--- a/native/compile-native-arm.sh ++++ b/native/compile-native-arm.sh +@@ -1,17 +1,37 @@ +-#!/bin/sh ++#!/usr/bin/env bash --CXX="g++ -shared -fPIC -O3 -Wall -Werror -I$JAVA_HOME/include/ -I$JAVA_HOME/include/linux/" -+# Waterfall - rewrite below to extend platform support -+CXX="g++ -shared -fPIC -O3 -Wall -Werror" + set -eu --$CXX -Imbedtls/include src/main/c/NativeCipherImpl.cpp -o src/main/resources/native-cipher.so mbedtls/library/libmbedcrypto.a --$CXX -Izlib src/main/c/NativeCompressImpl.cpp -o src/main/resources/native-compress.so zlib/libz.a + CWD=$(pwd) + + echo "Compiling mbedtls" +-(cd mbedtls && CFLAGS="-fPIC -I$CWD/src/main/c -DMBEDTLS_USER_CONFIG_FILE=''" make CC=aarch64-linux-gnu-gcc AR=aarch64-linux-gnu-ar no_test) ++#Waterfall start - rewrite to add support for macOS ++pushd mbedtls +if [[ "$OSTYPE" == "darwin"* ]]; then -+ PREFIX="osx-" -+ CXX_ARGS="-I$JAVA_HOME/include/ -I$JAVA_HOME/include/darwin/" ++ CFLAGS="-fPIC -I$CWD/src/main/c -DMBEDTLS_USER_CONFIG_FILE=''" make no_test +else -+ CXX_ARGS="-I$JAVA_HOME/include/ -I$JAVA_HOME/include/linux/ -Wl,--wrap=memcpy" ++ CFLAGS="-fPIC -I$CWD/src/main/c -DMBEDTLS_USER_CONFIG_FILE=''" make CC=aarch64-linux-gnu-gcc AR=aarch64-linux-gnu-ar no_test +fi -+ -+CXX="g++ -shared -fPIC -O3 -Wall -Werror" -+ -+$CXX -Imbedtls/include src/main/c/NativeCipherImpl.cpp -o src/main/resources/${PREFIX:-}native-cipher.so mbedtls/library/libmbedcrypto.a $CXX_ARGS -+$CXX -Izlib src/main/c/NativeCompressImpl.cpp -o src/main/resources/${PREFIX:-}native-compress.so zlib/libz.a $CXX_ARGS ++popd ++#Waterfall end + + echo "Compiling zlib" +-(cd zlib && CFLAGS="-fPIC -DNO_GZIP" CC=aarch64-linux-gnu-gcc CHOST=arm64 ./configure --target="aarch64" --static && make CFLAGS="-fPIC -march=armv8-a+crc" CC=aarch64-linux-gnu-gcc AR=aarch64-linux-gnu-ar) ++pushd zlib ++if [[ "$OSTYPE" == "darwin"* ]]; then ++ CFLAGS="-fPIC -DNO_GZIP" ./configure --static && make CFLAGS="-fPIC" ++else ++ CFLAGS="-fPIC -DNO_GZIP" CC=aarch64-linux-gnu-gcc CHOST=arm64 ./configure --target="aarch64" --static && make CFLAGS="-fPIC -march=armv8-a+crc" CC=aarch64-linux-gnu-gcc AR=aarch64-linux-gnu-ar ++fi ++popd + + CC="aarch64-linux-gnu-gcc" +-CFLAGS="-c -fPIC -O3 -Wall -Werror -I$JAVA_HOME/include/ -I$JAVA_HOME/include/linux/" ++if [[ "$OSTYPE" == "darwin"* ]]; then ++ CC="aarch64-apple-darwin24-gcc-14" # Brew GCC ++ PREFIX="osx-" ++ CFLAGS="-c -fPIC -O3 -Wall -Werror -I$JAVA_HOME/include/ -I$JAVA_HOME/include/darwin/" ++else ++ CFLAGS="-c -fPIC -O3 -Wall -Werror -I$JAVA_HOME/include/ -I$JAVA_HOME/include/linux/" ++fi + LDFLAGS="-shared" + + echo "Compiling bungee" +@@ -20,10 +40,10 @@ $CC $CFLAGS -Imbedtls/include -o NativeCipherImpl.o src/main/c/NativeCipherImpl. + $CC $CFLAGS -Izlib -o NativeCompressImpl.o src/main/c/NativeCompressImpl.c + + echo "Linking native-cipher-arm.so" +-$CC $LDFLAGS -o src/main/resources/native-cipher-arm.so shared.o NativeCipherImpl.o mbedtls/library/libmbedcrypto.a ++$CC $LDFLAGS -o src/main/resources/"${PREFIX:-}"native-cipher-arm.so shared.o NativeCipherImpl.o mbedtls/library/libmbedcrypto.a + + echo "Linking native-compress-arm.so" +-$CC $LDFLAGS -o src/main/resources/native-compress-arm.so shared.o NativeCompressImpl.o zlib/libz.a ++$CC $LDFLAGS -o src/main/resources/"${PREFIX:-}"native-compress-arm.so shared.o NativeCompressImpl.o zlib/libz.a + + echo "Cleaning up" + rm shared.o NativeCipherImpl.o NativeCompressImpl.o diff --git a/native/src/main/java/net/md_5/bungee/jni/NativeCode.java b/native/src/main/java/net/md_5/bungee/jni/NativeCode.java -index 62bdaa0e..5218ffc3 100644 +index 4426823c..b11b7a07 100644 --- a/native/src/main/java/net/md_5/bungee/jni/NativeCode.java +++ b/native/src/main/java/net/md_5/bungee/jni/NativeCode.java -@@ -20,6 +20,7 @@ public final class NativeCode +@@ -27,6 +27,7 @@ public final class NativeCode - public NativeCode(String name, Supplier javaImpl, Supplier nativeImpl) + public NativeCode(String name, Supplier javaImpl, Supplier nativeImpl, boolean extendedSupportCheck) { + if ("Mac OS X".equals( System.getProperty( "os.name" ))) name = "osx-" + name; // Waterfall this.name = name; this.javaImpl = javaImpl; this.nativeImpl = nativeImpl; -@@ -75,6 +76,6 @@ public final class NativeCode +@@ -95,7 +96,7 @@ public final class NativeCode public static boolean isSupported() { -- return "Linux".equals( System.getProperty( "os.name" ) ) && "amd64".equals( System.getProperty( "os.arch" ) ); -+ return ("Linux".equals( System.getProperty( "os.name" ) ) && ("amd64".equals( System.getProperty( "os.arch" ) ) || "x86_64".equals( System.getProperty( "os.arch" )))) || ("Mac OS X".equals( System.getProperty( "os.name" ) ) && "aarch64".equals( System.getProperty( "os.arch" ) )); // Waterfall +- return "Linux".equals( System.getProperty( "os.name" ) ) && ( isAmd64() || isAarch64() ); ++ return ("Linux".equals( System.getProperty( "os.name" ) ) && ( isAmd64() || isAarch64() )) || ("Mac OS X".equals( System.getProperty( "os.name" ) ) && "aarch64".equals( System.getProperty( "os.arch" ) )); // Waterfall } - } -diff --git a/native/src/main/resources/osx-native-cipher.so b/native/src/main/resources/osx-native-cipher.so + + private static boolean isAmd64() +diff --git a/native/src/main/resources/osx-native-cipher-arm.so b/native/src/main/resources/osx-native-cipher-arm.so new file mode 100755 -index 0000000000000000000000000000000000000000..13ce8b6df298be2f4e1693e008371a8770d3b41f +index 0000000000000000000000000000000000000000..fbfc7517a8bb417391dfdc517995afec591cbfa0 GIT binary patch -literal 36888 -zcmeHweOy#k{{Ol6&cF;$f`A~R45$UDAR##v#sF$Mni|kIF>ORd8J-0!6_qixMImF< -zU0ZWk{A#Tbn3WamwuRcZK0j_&Rx7BrsF{+F7&yQ8=iWOyjM(n}_VxY#@qNvCz0RET -zIS-$6&gbcT&bgP%k=vK3^7sfEE%lDVLSa#FCzH>HGbxHyCCW-;=fn<5Ps(Lt;yRD;{et&1;;9cjEX-6UK}l -zFHxVdX1Rq067G)L}%rDBwERHNFUN9^_ -zy~OxJ=CBN7VOC~QL~#Kd!I()zZ2}G;h?ZghWsGUD09pg#HkC8>6w<~D#&$rlU6G%H -zNFhXy{gILwdLTY1OhJEIyM5?~0vhLU{}}k`pVLPj{owG}aW!AFpLfLY-o -z=0%>n^;d+WP9_aT;nW?8AFCdL`BSAh^*LNYtx>e -zoq*MKZ=bTTxFj<#B2n%_SlL5}H0~78g~kh$VWJZSq6O6#u4ZhTG-H^929U+z(IlkV-&bO_fNIA3|#GvXZhM|lZD!@Qblc-z?rWKLfv(Nue&C&Iu+A( -zs2UPGT2aQh_>(tKR>7mJHL;^b@TqGRyz6*oI!<*rQO6!KB|E#Yb+?f3t6}CAp>G}h -z;&r==`lnF7Rq(5O9`MPfy0tArpSn&pTgTQj;P-8rn0+9fbuQ|)5i+N5>5jx&O~?mIzM_m+bB -zuyYK@SycmL&WKKkN<;;sfXE|qh^&FepUK!xZjdQ?DR2|~ulB{Q25@*H_CoYPbVqbU -zbVYPQREzjc9NXD_jjWEwn}xN_d`V%ZymfsuX?eLD=Ia3%jr6{2?4hZjGw3BSgL_3=G8Dtg?Y<-S!xAmN>(uDvll7OEk5IrqHj|u -z`l~rz?D*bnq#8024nAEJ6y_fUX3i5#$=Sv*?WF#?H7kt~NSXKc{*zn|D_!*aITwAH -zl9}Ta$>rtooQkdU1=4vks -zk>Qtt`-rhXdu54p%9Z{>(d|o|Qri0uh(5bSnR2#&|LAi|6e;KW2S$7H3VkoWm;N&6 -zg(&E$-(}8qf247!cA_y-TZOr7!dw!%EUB(o#}AL|VuxXE4H)yshjp=$$Y1vIG+!C1 -zi;Y4)s<*~`Hc}Tm2>Ion!_8wbzc)M;=CMdW^Yk%4iS!?ygUrRC0d&e7<5``21M7Ge -z)8vn3k5gV$I5*BO)K+DnKm$BLaY$r8XK=$^A+kA2_CM~QMVCw8wUnX -zm?i|ePD9

_ytNApht^g6A*Pdq$TEg6m?N{-x+&ivC|`mufqqmy3f`(H~`L8y`3L -zM}LiUp}{|85%RZ@Ps{kNcSp9iF$Z)h16^>5ks52v(Q1R3_ksaaT>_l@>Yo$(>L0^A -z9t-k}?i2z;BP;~Z!H$T -zFr;dZ#Re%Db2K!dZ*LIbYjpIanZD6W-Geuoh%xlFu -zpIOYMj9aWoN#|9SCfJ2Df^XfOJC^m(>lmy3rn0WmMBq!n7<;zexMT4n`q-Ayn3i(o -zv0H}TXyc8xphc-KY=_c(4Pz5cY{%ZExHtAPj7>I)#yO3#X%E2~WByedmN~Hw>@6Y< -zTR{)Pb4bQxPs=tNTCTF8Wguutw(17fMf*-y=`&bED%O$$nE_qPCAwPnuwz!5suZw= -zDph4zs4mPkDlsgNQ|nigtqM&5oD^07Shb9qt5G%-GFk=uFa&81Y=al}5Zw1%(R*pk -zVI;p^!_D!%*}RMHEH!E=mlEZ~ylVQh-lnvfjk`vvQqt4X8wD>NnhG#$oW6C2XG#Lf -zD9XVv*?!rnED9Md!{5IzjcX!%AmB_Vj1=({aLw>!Z#r- -z1F+%=RmyDCQ+_MP7>)dA=<`t89I-5eIq5wIu-?^ag^ixPQs00v^3w7e52Nj*wERYQ -z-d*3odFX#cp9sKPkslVwdcT4;9-|V&sLmr!m6DIT!s(tVQ-Fuc8aPk=>cvtYu?_mH -zrZ#9>h&G40Ui!mm^D6pGPAd@MNVJcX^95+{**7WdRlqCICo?Ux@iN+9=9K#3@;C&0 -zqR(*Pqr4KlsX)Jqw5&!I=cFGlkENn^av#bU%6&YM2Vb6U6O?uFE^MCaswK7MRX&X1 -zb3v@>auOHj#p#-?eDh*n`ex8)CU_XdGkptaq?7XuJk!Yec5l|il)9!};KefVQNx(N -zRpz&>7m@tVq8{8&?~+(%IBnu3YX;2-gv@>?(-@tpE|&~KoeZ|%pL1b1B% -z@v#cDsKOpce9QrlDmhpELG;t7BF#J8;wS-3Udy7V%!PJdtgp97gaFI&|a)ZdsVtxe`z2WrXSA2 -zp3-n(qHR@}lKo*Da8nE)DX|thFWS@x>ON?Yi?Oy_bwB2w?(aa^Q=nG^{1Az5KBDeJ -ziL3QqgJfT2#C^JN0$*z&9~}6Z4t_sK_jk$iK)SyL{I%+SIrvF(V5|G*(AHk}sgG6n -zKSdv_?k|T7knTG{PVIGn2V{nH|1#Pakp7`9=|1^PKXM-WDvUD}^7AS9JQVs>k38vq -z73x;o={}WJL9aYy-6z-seYOLiRUdoO{em8J|82}g`3t&V-GlCLlXc%}XY6%<_`j+9 -zR=$z$Gw`k_-ERhcdeZ&PvhFVfU5V%Ry5B1E+E(|ek5%{g$UG-~FSpTs0X*zU_Zz^+ -z2J&ywF9)=H3%Y+u)crhB_bV}854yi22eNFd`$M6V_PXx@9ebeeLnnLGee|L72kE{C -zYzE=9)%{4=mQn -zQd=+9VcQpV@Gqj?l{kmHz$b?7-e1eJj+IXESCn*qQ}5pfpQ#0BDQ;ZDcR`UEf3_|+c1dY|2nl%^R&U$w|Q&+}wE*EEk -ze?)6MR|5}}Sev4*4Ro{m#>}KJpM|d+EY3?j)30mcK+7PJCr530lI})48IL)Q!`z<4 -z9LHj=V{on*4PTKLdDC%c^od&@x;16EuTZ$^Zr{e8ML(Q{J3URwH{oN(IWjZjbo$u>-~3*?8=z&g)3UhGIR8mu -zY|igpx)z_v7Q$UtJ-k0auT<|>b?sYwVIW^id`RoGyzh+lw_uDGXYc{*ZAHX$zjdvk -z{Q@Q1slu6-=6oLI7n0D2Te)E$eDrY6pbf{lONDb@kf6GlZn30N+aRn%{i{tIE(py0 -zR(6(lXik=v{D=w0P%X6;&tz!ZhWdTHe`R>i0&N&@kx!vEYPHyF%|S`5Js555*Q+O) -zye6$T7;6^k0=aq}b0vBFEz-G=m(W4F+HkDf74*&K!d)(c#@T~u{i^+;U3=HMXjm=j -z?St;LNJqCpK1h!i;!Z0*p0!)`9nU{~t_e<%7iAsJ<MIWZ!n;okSb!J|D-F0hjIzs^!Run%l2~jl -zQld!~&tlg(F>^7Z27Igm4`1NfPLg-Y9$4uj*`kA(uL)<+lc3#)unXIO2lnhPE{hYJ -zw+uFk#-KG3-DKO@O;0(Tal1;#VvS?4*3npV67-aOI>~;13Hm=sCerNW0QZAFbXQ30 -z-G#YdlWoWi(e|=B*d!k-f2?v~D+41T1AQ&`%YYec)j%%9_f-BbBpVxif3p1ASEC9z@3DC8oIZRbgH$ -z`G5mKocf|FYUPHY1lCTro$eIzR)von(mFn%@&Mu`zF*}`;}3D05y^JwjP-FVahI|h -zXTKk?x1Gj)ks5Z#1-SOzvZNYHCHI%=F9Y{x+?N_S*NZLfNYzVzY6cJ7 -z)Vei#%psg}sdVRD4>WLUM7IO^Snm}XME*Rlu6zq{^9o&OFd}FeF>?j$ -zYyh2T%|G0*yuSeJ4(D7ecOor?Pe8huCHT0iVEdr=uw_p|M#n-{$3SLBLw1v}PeKO; -zX`lSXd*^a5x_7>7ljz==?uBZExQ3Q;Z$uwNU&KC$eu(~veGvl?`!%#gvL+LwSA*CN -z_DzTx{?R(RM{L`pHme{9ZLX}NZ4WaCA`c_7<7VPOb04H9KMpZN8F#GX2bukm`e$g& -z#bsPd)|`Np0FL)sD6rmbk-DaF@DJhz+y$VG>Mt7dOLm04uQ7*m6&r33WVK}P|AsL? -zDH~A>U6by#%GH<~?gqW@V%%_FxnUdVO}fbknX;=qkk#(uCjh?UOIGw^xStmi}8Lsx-#I*@?^sG -z--2*#3t}tuKb^*YlEqAOX7gwd-}Z1xZFU6tg)aNUaBmL(ux{H}_CC=|1$v3Rs0lHz -zvl%D&x+RtT66?5|uUS&b_E4WJ@K1+*eFfV4iM(UxKHyg%XuWaIAT##g9mU`m?DLM& -z^1%|nzR;Mj;U29*=2r**uk$Ml<9t#UUHeJdBZ&VQ-`?uznQyyr4@rD8+VJgXSjW&GKDAdoe*oh-b9-F5}=M!+&_5109?s+$~NLZtJ+-7?;M`i!oMWEYUxCz&K%zk%zue|!9kwS{AoYH^RdAJ5iA -zyD*+}ty{&p*B#(`)sdYbn9|U}_uGpK(B8`5VC-k)Z&~5ZS1hTwj&L1hLu8u~Lq0W? -zk?nx5Daw{8OVN)?HvXky=0DlW(yCxH^%v#fqY!hh&3HQ8%iGJ7Z2KQ5Pjtq8hUDb| -zvh*m`-L=d9bv3snTVXFtG5uLg8Yj!pvhW^d=ql_scE>a -z@6s!JxJ0k$IEg-wL`(E~FN$=h`s5=aR$USCZnnW|a$%`{HvW+XcL@)o9r+to=u319 -zg`JgbBYZpA_u)0BEV8 -zio3uX=yH4%o7ar}iBs>Y*Nh9D#Iiys>EyKMGF`*{?Gkz@OYEU6sfV)B-OBLJxzBy` -znu>WXz`W#CoY#G2nAd$}nAd$}nAd$}nAd$}n3qi%7be{?&19xg4D==Xk6XNWttP82 -z4)7=g?ujmeo)_?Lfg0}^;Ouv7LT+G6P6B&cv-e^g&0nKj7Dq7EW#hb0=h8Mo6;AsR -zc=NP+iEb^OVKrIj<5Ec(p%B2tO{na_`apo$I -zK9zJ|^(xl39q}^W!KlXh&NDkpe0DpT>s5Kl7}|Ik<*)KMZyK{2asJd#!rAi>%2k|i -z98-s9{NkZtmz2W{3GIS=ne6g -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 -OH&Gqh_V>G0)!4L{+0J*)|D1o<@pirY +zmiykj+q>^oSscB6>5emF9K&S~@BjoNv7EV578?Zk3Z+_YO2Uj3A*=U~x;M%s+z#1h +zpc-0jv3@}@rNqmcURpmf|MNicPB^vix#Y~ylSV?TEh;XVS=5tdO>fM@V$m+C2H~=v +z+KeeAdYHR#X|=kd;=;_lIX!sq`L;{+rV5;5jBsA6OE*i}go9pwUeVnN-!r}_s>Rqm +zVmhudz^!SBCE~AEtIyERE=^CaLe&IF_vLTkL218&}t{dro?LF +z6Q?DM(p5{f?sF%a1T|we9}&yFt7Mx`}t9V@Zq5hUj=(Z5Ql@~EFP7al$zcYI9q?-$K{^sz-7 +z>qjF`1>gW?jiIz4Cx>U{!AP5Rf@+XmM*)bID2K-}T8@R46cvW$WX>c=URYGD&kc0fLVaGbP?(-xsLObGOh|e`L5@CTR(j$5%)HTK(58nz +z$@4#^FHjNZq5e&|12zuW +zH~0fR(p-->e8zR8?W-LPR7)oao*}qH5-32jbpoXGIeJg +z^3U)db={@0wXM8+-PPo{TF^1-qST#Nc)pIw{7)i2t15C)cVg+i5}@)mUgKG38rnYK +z$kr1LbbV#0z2O8i_!lZk`$2K=*1gS9|?gS?vv^uVV~1 +zb$snjUKY$_j5D{#31dV*!ECX59cz*s2ZEM?XS?1)e>4~GopR6_Sl7yX)}7(25X +z!7^q@DjCX*Z>i!ti-WnwYRr?$Ll|4%hB_}5`Xv*d3Y_L@lCimM4x4?_WvuaPaxBIZ +zS9?(aa6{4(&?fv}ZOfP&Xt)CU +z16%<80L}m>fFnRD&^JI=t|fj9zDRln{!@Q5m27?5OPDLtq(9dZ_trcwjiD?5!`j<( +zxY}D<$oOdsGv3AqG=-xqng@khucmp3G3Wd=n}^HZ-~ +znHh>ZbKl`N&GCqxqvjyzs0p%T#_^oIqwS6k{bv +z1bS2!LjYc6wc0A54wE^|%?!!k!kP0b98s>E0}V=S@VrW7a4yJ^K9VL3MN((wE&_jaME~M~5RFK0swW8>WsPj`T9uQN{#}?=4rkaU$-Yx_THN +z$Ne9!!;MAY0qn;Z=~|U^1M_$q`8NlQF@msbq<7V^$cW6L}TKU3zF{LC<)Dbc)- +zQ}lTC+OJWzh<9;%4rQBAwrQB}lxKKfr)N<1P1d5QRDbV?MZD{;l)FZh^1Rbxi}s~x +zUyAnMW|c;D@q_9X`zs9u2Ln#QmV~c<2Rlj +z0Q&B*6%Y7IJHc<0J-70T`c~cnU=OeZ$N@Y+2H*g!p5_2wYDC(og1>_N>#z-tJj1IS +zXWDZO?GCUtM@0n}OLg4qPC1YtWP<(XqyJW69Y{g{$(UbKEyiP{vE6w3FUW)Km&$6p +z%i;5|rVwo{Q_M{hY*jwD4fA|zF_%1Pu{=3lrl>H$FPwqzymQC20d^fpwA;`p<#m_F +zfnF^7*jIDoj>(JoW0^;Nn#%2t-_j019e30PFG@Y(JM6IbaCPMWE&JXhzuWgx^i4jA +z`Z+jD6#gnKr8gBw#f;!NU-#!Y1mBK>t6WgI_%&Ar%U`S1C*fUO% +zoSvHAz`LnYm4{p7G;PnjCdVR=(%cg7Y^2?f3l=@4Hw;1$$y85b8sWiBy_Y&YPs)M=(sB?ttuQ`G`YtSY!HDAEPP(Msc=cB&sp!lFQ +zz?Y+qK2_gv8TBu7cA8OAKZLuY%_z{Lv>jx#0_|3$W;7@`d(9}RF9p?;+EBVcYU7GD +zPU++Xk~nzMs00#QcgSu^sv=|VcRdqzuMW?qyg +z)>)%TchNZes@GDT?VPhF1od+>bE86^pDxs?4Ctq+jD@b;nIYs?ruWlah+sh>XhZc} +z0^)-XbNw`-<0c99>jPXgp)ZJS`*+P~$;Y~0kM{NH{WU>YuQM|05xySYmkZU#cgM&QNA@BRy{vJsm$o98F +zzGmAmhdfCSEN%ZB>RQ`AwK3cNezY;${xawQ*}gsW)Y|rULTAYKFQa}w*&phX?NiM3 +z6X&9-L_Z^;Kl>r)k+84rNR#bXqHML5?NeSQ?8-&5eZpPPW(Vk*?XfT0&+o(b-^Ez$ +ze#Q2y`mp^P$@a~D#@hBr{hPLLmK)hVgY5dU{U-3IFWcWD+5S@Sm1J&h`)!h}Ep4CL +zm~DTbBy+O&atqt%A;Z3GzaDa|r}!4_vcbD|VEcy!+s_qjzXJXBVf#C?q05%GKN2=+ +zZTl{;vHRLSY_d<=M;pq&pY6NAXAn(G+Yf_}xv%Y`{ynx2|MJgle~|sXwm)9Z=4K*p +zVsgU(@&&`~n1`vHL%ehEUdeKw)ZU+UTDCX@`J49s +z>P{ua0~Yb@QU{h|9mAq;AnHR+P^6e)*xnT<-HK!c?(=ll>!?=@(!!tm?HdtLN&;$JpqR%->w426JJ)*T6Kr~dHrWAv$X&holfL9&u +zx9J>%`aXuf4c(?OO`v<#4smt4?08qc9I?6`;xBu|VGfAL6o@I6h$&@8OCDie>cwL) +z(gWubbxKwB+6(Vyyg!*KE5>t<7iU6##A`e|feh?0H+fw;yR@0CfqGs$E!#xx0IdmLk&h_NPMUoio(qD+uY=bZ^Hw_Ma~%W!5PcT(TJ +zjdP2^*b8^L8j@}z#*B7g9qnG5eJ1e=M}IpuHx2uiYVfDcscD?bSCvP6I)k|OtPtCZ +zvG~ixr(aBn&F|K`0bVxQFO3O|@tzjMX20p!y|^Wd4|ZJj;6Wdao${cf`@p&j!(_E2 +zhtw|9ZU@Z26@9ciKn|F18(WT@MY@&hvOis0-8 +zQ9+$9)d;C2+X9HW>4E +z0)Ml(V8@H#an=Jgf5pMT?&fulDppH&dwb5GAuA3t!#P_b4}HQJ2hSPFMr)uSWJe2e +zo;7|v>oD6po@IGlUL&*lu@}H)9W8J5U`J$SE`{2C}H; +ztmvpf2j(`YpL*?0dv^S3oX2$DG3{=Jy@~oY5PCnbZUE+|x?>tc=Os_e*lwEBLfBGw +z=>&`~9^;I|cw?bke-+NRYS704^c94DR`$`4*Bw)z{b0O8KNr9+(?0I_?Kv{gk}FZ_kWH02Sm|4H?dpv0bF^qCYV6#Z&MHpJBWP>_Jb0cOSqn)PN5BSr09f +zJ)64}K8gCEIT7C^-+9c^cXHU{c9%}X91}3t37B&{cu6sx=s&*#|L><0saAS`XU`sV +zZbw%>XJOUjUWV%-ejF_t$I)HOvVGZ~-`I~t1i!#iC +z$6Vx?lO5&;*_Arfc4JP@V$5Y0y1PXhGws1+-Px||&|~s_H=)P3Fz!x_8)qvg4j8Z( +z0<=HK)z;A6fpz-I3`uw>?tycc6F!_zg_ifYD05>erC7UG@PiNG{M4frXG5Ys(|N8} +z-3uf)R~D)0uWnQ*o1TIFhYR=qtT7&Iox;f~--$JrLq-Y*t9%F6xDWQIz&VIS$4$8N +ztWkk+t(5s3^5>Kn72zv4`p2>k^6hk{=z=jh<6bB8sW=3{Y% +zl{iaTjlJKGSldqHyhsVZ;|N*@ZkbZF0j%Q;#&ZE>Q!(cQGUtjZ+~A6fGN+2|NIPbCK#y;iyMQf+=%8JVov9*YWD{_&(#PzGVjB_Bw))kj|r@AJ) +zviiOK_HN(iSyunH-`?#8%xjBpK;B;8p?PP0hvgaU#@D~p@1^aRL3<0%OSPQS#nuko +zl`sC>1Q|Fh)oV2vLonx9(T{UFRL>~^&WG|a-=i4w5m|qXad1T@(&uH$ig$oFEmwC1 +z0Kmi0wB@X;9(03X2M`qnVk +zXb@gsVLMrl%E(~vbdK1*Pia&@58Cl8pnV@R`XUV{vh(H%m2n{MC#R{5Fvgwh*9I89 +zareIJXDlk?k~3!eB>QkOw}m_#&>p64oP_vbJdd*g)KNS&gyNE&K?y^Qf!vCXw}&x2 +zpYg6c1)KP!Y)ma|O+3>oS7K~98!X4!U^&hP%W*bXjsbaNU$baf!L#E!Rvb=3xFir>dvFd( +za?7-k+b>AB^S<|$+iMc7c7AXla&xbnjBz8@a5MQp4vG*?2#)&a1{Nm1M;zx_}PE;BH +zgt6|zI7NFMVZ=LvSciP;lxUBb+HE}awzWS?iID8o8}=&bk!Y)hec9?Q*s7qH4MU6_ +zBohb3DEzt@Ss9-k>*Zci4LjsmnqX_&0Om>98Mv*irQ_rj%F1SR}2R +z-T?TDN5nY|Gb#qTS1>zueYL~bdS(}k`=j+jyoBd02eK$GMqHQmDB{PcC<>I3nbF$2ltYY+_~8W(e6Sa3x7v%e&HcKgU+SkBeXK-ZLVR+c +ze#mF^)z2KMp9$#aD*TJJKGcPk)aE=KTZ^^jU^dt9;Pyx6)#g1GN9)+ZdanP$9pmTM +z7EFw<#X0UlJX;g|!eq{=ZWY(B?hx0%j{F4SbPs&sUVmW(@6GZJz>C1g|>0v7C@yp(I)we`nVXaG%ek?MTlXS=}uumPj3cn3mdo)S%Z?cp> +z+K~K77kvSasJ8-okeR($(u1g|70@+b=$fz>gRZHd16_US+7H+#(tZW8naBUB{5|iL +zzng_Tw!nXotjzN7%b&r>9y^K=UOlH+eY3;S>SvzSS6`7VfXbn4pJdSx!|AQMx8d) +z=_dc|%p!&M{Q6$)KO|dqVv#id6`iJ@HMa@*=J^HSJceuohsHweaQdccLl3|9g^2vx +z7ft-BTEBM`@vCZ6d>GkI)ycg*wo*lFISzAr=o%bZikC%vMDJ`sH>;%hsLC845$`D8 +zcol7lZ-MZ$qHjcOC&fN8l_BX%#60K0uO>O>13&)@;ucyv{)Rl2kmrFs-#Ue-*gifv +zqJsP@(YU*&dDY3_zq5WZZ7|4KWCr@GeW0K35x!Zl8QPY`)tWTVB&vwU_i10+ +z&MSgxJ%VhWRKBQQM|)UR#`zeQQ4>Rb+|qu8{Sk+K5}wzW;#>;4OJ@z@GkaM_HDp&N +zlXs*EcfKPXHa720LdzF7mb83ONbd%S&%Hl^e?Beqx;Rvcy)*h<>F8Cl%5fmA{Z-jZ +z#~LeL23F8{)f&ug2jDW^!KlLi&NVATcy^n}^{=>;8Q5?H`DxUN2E2cF+`40K>^M89e&Vw7HMcz(4_oQdBN9~ZtGfaAhbX3V2>+yUNF@xrCKi0S!^iQL| +zKA3*UNn8bg{P +zukD;XF+e^kKLKgx!5`sqx1&9(n&ri!Zh-IbJQd@Q5G~Rnk~d$18v6{;Y`>(mcu3+LW=?|-K&ode)KL?Mmm0zK&g7U_W&X&;O95R3Fsi}VPK +zbg)G_)FM6FBK@#MdaOnIF^hDZn9fR{mmZdro;N2fv7|V0_7nQt{KAC^g@yTrOt=!C +zN>L?FR6UXKL}F6vSk(hX2%_kU&o9ZDrOL}MR?&Y3QR#Bhi;7f4ER=|aS`!P9nz4!L +znK}Ads^WZAZhB5mzD|{=pRdvtE-Wa{r~ery{AW0oDmEcGBq2U7d557D|~DB6 +z%FZk(z+I?HQ`e7Gl@#H>#?f%&6GGX9*sQ(BugA=Y;EhYN&tGhvbau#_56toYd2LYm +zra>LgZnLXA+WqH4Q6c{MznSs;D$RHMrrM2c`sS6Q1fM%v{^Ovst2au5+rKP#i@Fl~ +z8~gD0JSrCc^x3-VpPo03+I1m7m%Huu!ADwmHYXRIF32modEnibpTDu-l-GyTO8(@P +z@oD|##if(vZA;hu5L7Z~YkTF>;d1v?c3m$hpSiYdm7*oEC1drt(ywQKG4`uHe_no~ +z{&sumd-6Lm$@<5_5_abwUh)2CE7x3kbo|$$AB5DaBF0R<)gJSUruprJN2>o=JO1$5 +z!}Xhezpofk;y-8Wq4(7987ez|yY1TPrYUxji=X#(xv>A!{LMFi{^4+Qzx-1jmG6w% +zo2oppF}8Tlk+QO-UJnQS&gY>5FTZh%LWivK`{MN#?=}C>|I(1#`wui}H*cyfPpppH +zvF5`WQ=V9M$YQaqDyE+`j*1&mbSiq{}xp4^KFq__|m9L$Rel_ +z_|3Um+Mc}TnTmg?&n^3}`N0?-kM&#}%lXr{O(~D2elzK7xJY>6R<88H`DNoZUN2uE +zd`CvotpTocKAUp$t$9z)zxw8q;r0u>Znu6JfAWa`=wzdAp7CS;h3TrA?Rn|TgF37K +z4j;)>0K6aiPcJvCYpB&_y3^hD%k9ovH*Z|OcJ=3uD^|rrjf-!*`In6Me|&xO`K=dD +zy}kBu{E6$YzIJJOrEIT0?31;j`%}DM$QrmVFFHaUwf%B=#V_9ZreZ_={=juF{dlrv +z{gro@M`Wii>hh^_3VnabfypP0D)Dc@p0 +za8=>g3;V_XwECNt6&FK?bWQx`>E^BHOty3%^WI +zZ+qyw+yxJRvGKVJJFdDWKk&W-!hpM1GW>RqUNsX-P_`xgKO&9j6!o@E___SaM +z=jtpDX)1EDe`QriOv1HZtcF)05tTESQE~)O><#&wyns9Vsf7DF*?LYMg%Zb>&rf{^ +zQgXaIApD=!`}LE8a_Xm9>ZciL;S&2%zoB^3K}h!V6KJioUvKxS{CB*7Y>>Ui$tzLa +z@w-!Be)Yx4md~k68lV#?dNCmCs5pK#(!wRuRS83=+e{VM5nL)_5{n$8Q&|12zuWIAG&|jRQ6g +z*f?P0fQ&|12zuWIAG&|jRQ6g*f?P0fQ&|12zuWIAG&|jRQ6g*f?P0fQ&|12zuWIAG&| +zjRQ6g*f{Y25eHP5>vX_tfB^vUTL4Jl6950d_;<9$9Pt<5OlC}tuK}n@wc1>LuC8FAR+o`Y +zSW$7hE}IZ7eXgi?&YY6;!dYS#{$O`u0n_T}gBRL4`r_iuTs_n37i1PQ?d*cW%)H{+ +zNEGUkIeUI#W-;z_a;cKGkZHwlHQ|n)b3sKM0n?h>6_ga~GSX2Ii6W*IX`@n+p1$26 +zT%4A5(Z>^bwqgi=n*H!&z}Fdg@o%m(rO>xaW*!FQ&a+KpQGP5IKcC0rZ%E=xO)Mgc +zMe(faakQDKW1+KWvT?~RpJy5|z`a|@q~kn7k~y>2FZCLcAl3oxEpJo}3J+)h8| +zrsAi11b%+R7cyk@S*c2nJ}iYlgDK0Itu59U6|>)R#o79WTJ}4RXASb-pK;7i_^_3hWePQ36e_%g3TzvPacS8%AYY>c(XLGV +zESpUo&88X9_pr1yi4C$jx?F8;Nlr1_B+Ja3r!OqhYeAlEkxBi~(BGCZnU-DSbb2j& +zN5-?t(V$cnEDn@tv5PX)6H-@Dek>d1pV7}(S*X+_=PG`YzA!&?k)FNEgGx63kY~ES +zh@D2y#rnd$^c*cvExRtuEfQs1!58GD7thWw%+<1u=EmCeyjh|qy$33-_{tiu!H2=L +zdHP~)?ksJ1q;_UW-WL)A>p$me1wFrm+&YF-!I|#dmTdi +zYZCr~gzt(L=@pvGCA?h1?65b-=vn2d`2``ZFn-YFZ +z!X5FU5}MyASO{Hy5?&?Yqb2-`ginz0>G&EXT~A4PtAx*%@Pfz0@+A^pE#a>cj*p?N +zP>bb%knk!Af0uCjNQyx$|5(E1628xjFB8j~&G-rtKWxV7voW|%nDHtR|I&;bMf~q( +z{8bTeGvmJ(@gL0i8zO$ujBgQf`uaSgXGnOvgpc$P+snZq8gGL{PbJ|s;bM8T +zgm;Y*@h2r*E`8)EN5V5C{ACGu9wgS^CgHB0BEDC`k41`ji-dnB;Xg_E3<+1j-f4W5 +z5< +zYK0%R!oRS>zq7*6S>dr@OB^5pFcE-Nm`wsq2510N08;@^01^QdH$4eR0+`#zBRv7| +zpU_Y-?Z3Z>NTJ1l&{7P9{{0?>C0=V@x@ff&*K!>qmcFuQ&!otv?~=ar5%Tm=onnPP +zvV{=n-qBD{)T_2QUCWC1PNYb0j*faYmBJ8;qx#CH@T6Bh1wQw7N4fWQNxAoxg^(C9U*I?=$ry$t)Oqcas(~t +z$$`OH)u9}#I)e3Sb=U#jZ71d-WWJjRE7E4pv&!hzifZ&~qAM=c=H=&+Cgzt=@NChV +z$|!`t+X3a|=<_UcNV|L2p&VUt#AvHZ1--L$;_!PnrP1}yp$>aZfHHbbfV!KNUYxEi +zp$!=g6?3_33897fST77)*y3qtmk3sFi4a4{ptZB|^B}v4DWm8ooPIEci765INrul# +zqJktUNTPxyDo8@X?eCnMumZn@<-)usdms<1I%gDub!>T1HWx4hKo>r>x5j|DL;SR! +znD;BcfuEZT^NSXQ~*)}HbBt{t0qR$N%L?aQxEZT%suWrKfNr0EY&{PB+G +zVE4x5GuKS`vufzb!*4iz`1R)(mE(tQG39@|@u|eg(_7v=`)Qe};3HXF>8bj%?eEXX +z|MdLqCi$1gk7vsgXV{q*?^?WQ`8R*5n6z@_|NOV*M~Ce8Y}tRQ?1AFS-Gxt8K2nk} +Vwd}}i`l@LKmrl%oDsL%x-7}=y1-^#0=m0A?8>6<+7=&fT3rR78rRz2`}3W1=FYu& -zXe#yLkEXBFxpU^6@A*ET@A=M|nScM~4}X1h5TpYBj-u31?x_rd4+N7{70jUg7gt+b -zFIsxZMOIb%U!!#`*12;)1it8EYwM=fn>Q7kmBTwB8(sUsucM>RD~ip7U_!7pdD_~# -zanns#ZH%kR;e~S}yqaALohRXi4j#1IUu)~Cjhi;Kue~-tFQxab4&Kq}sDVFs%}Zdb -z4tVRK*|8q(T&?YbhBIv*L{8ML)O;5ioB -zsdP@o{|)C`DZDcrK0kIHbe@Fg;rL@IoxYaiR>!DDS66nPq*EUU2koDQ_EY1qlJ2_wE&UbQt282j|G{&RPCdtUp>+_vilT9khc9`KId?8T>2J0>5B@V1G*7UqBmW)Y -zz!44{;lL3N9O1wb4jkdY5e^*Tz!44{;lL3N9O1wb4jkdY5e^*Tz!44{;lL3N9O1wb -z4jkdY5e^*Tz!44{;lL3N9O1wb4jkdY5e^*Tz=$09`Nd!E`RN6zp8Yph^z82px_^>R -z?f7Xr*bxSeLt)2~q4x#BN6u-S-QCG?)z!1RgVfnye<%o^dgy(r?t3bNp{|NVyX#%M -zkIe4gnVz;|S9TAn5V!cBgB1uor3jF4wl=v_@;Y|K@YSsR`W9>Dkx1qz7EP8-u#9ALtC8-hVT^ -zY6`mZl)}Vd$oOh}H1>Aceua2rYY -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 -z~iY)|w%+wFMy -zNsic%r|wOI*a+LCf8_7buf4L-E*B5kHLvsNcDB5JdgLeCygmw++Mg8F=Ur?R -z!?_`~hf=@{^CArFs2x4ra@} -z(&g$kE%yd}aUEk?9r`Lbd()X68oy;J{vlPpm$+)kaK-L>nxte;S^w)p#~#P6!a?_(0brzCzKm-sz1@%zNJLCw~)f|^Iq3Z`?M&M~$1ETdO` -z=;C1Lk^ZR>Z~K?`_B6e%w~9D5mw6K3%KGPY;!m$9&_8%F^Ka_Wvv$teO5s?y^{icW -zg8ArKsfECwPg%(C`P7}Va&3^~JV(2^ThA)ccjsK{8DGE2Yj$gV=|i5e!^)s04=(?M -z9}xfZ@W}AQ5C6t^)`Dj(<4*<8sTv#HP6DR}%1QigpiX$s=6p8oW;r}(Q9lkmCBuBv -zMXVz-)zUqq1)0lc&DNa%Z*%kDjiOaL$Msm}IL}4;yUpvhbnrgl-Z71s3qI^XF1nUA -zoyRBQ>#RTL)@Sy`vW4o{XNN`omfuXYSyMRM^+n$Y&&Gz@+s`PR8QG=5G+5D`n|D6t -z9>(_gs*mvdyJN5m`dK}?GZ;t*dE2rn@($En -z8~W{`U$$f3X4OdtgrBZug$MC!7XLmft>~xcE$=It_LSxj;939m5lyj7#5??ebXqZ! -z<}GkBUv2QqWTu!@eKmhIe=ExMTf0x5KV-P$hv4~M!Rx9{!14SxS#h6`+=K5oXgP+c -z&wyW>LTd=D_*yOV4D(T#nebxaw&MD)xjwot7}F#90WUxnYG1LX@uNPL$ehl+%Qel1 -z;Anc4Weucz$w^#tnF-yVhOD1Igd_DvBedFehm)t<{3_S*seA1@c$V-IddmAJ@%Gn7 -z!u=bs3$`mpP@AlcU$srRtG_S%Z@#qWSL-feem-i%{NBB*>Nb;u?K_Z=A!{7T%Y2%r -zRe7g8C6w=9)w)^vP|Xw4?+Wx=*8=p&+MugFoafd{PraUVj-KzJ?_T<%dkgbR6rbjVL -zUB(?}1h#f+R*ZCM6ccF;=Hn0YOP%3s@Gv -zi@vh>{S@?8*Q*}d+SkQ?t#B9j;DM2=soIvSZ0y*>wU#dumvYR}CilblJez56-)!|? -zj_T)8ANR?)K93dqgf-~hq{a@z=L-=&wq5|Htrv7;ZV(h2kWUY9Z-xd$++9zF` -z^+D;nu1wFA`_@{%(d!!W@pf*pFuG&9;nrw*H_wUpT8m0v!o{!Gv*_Qbau{K3<=r)Y -zy&u1}=nwrEyyDBoKyQY}-@-4~7}1_`x{02Q-u7bn51(AyQE}y7kKfPcbI!YGk;hKA -z?)w>Q#nJ3?DY(XK-Rj6D!;bSK{?wos+zT*&%ADeP+2wfoI{KQP!;egkxiO6FPX0o^ -zqo-eaPyE~C#lFhz=(_crW%rT#a_B>@;mMgf=2qHQnQVZk{9l2XwTitoW=Gxf{Z%`% -z-PJ?#i&m#`@sHVDZJ*?F6LuxPru9^qqdz>*xyBVPan9M!oqhi@noCQ0+hlw09@W0c -zF?jo#F?hSJjJJlvSb1=d(`V7?IR9JB6LEzBhv{ -zw<({GA27SEbbgk;#`8YGjqWkTV__>h`ajca_aNx!d>6Hrd6|w)M-QGW -z>PDpd)ID6}xz~+9uPoYsK7Hao -z@Eh>;(sAi2FtT2@iV5*GmjA#Xd)#jFxHS~@p`;JK)c5IfKB>+1A-BGdwnN;@*(bdu -zC)F!HSp5>>C)Eo-m!BJ0?CGIiF@&4@^QR1-`#-aj^UAi55;%c($NY0iIqme2bu=7x!R4YIlcgH?QW7 -z(st8J+bM@4c*ELZLrHj5(4uxZgU8xnJiHN&?Cl$OTjrf`fAh1%`5!&BKJ2SKV4&{2DxKcKy`c)o& -z3$PoA7jHOWImeptisP5(*;ip>C;Y^SvcZ3Jxwz?(&e^@ZTQ;bbUW&(X{8t;BmO_EP~9f#ghO&|`^P^om65L7I2p!KZXcc$Y7+ifI*`=C$%$*oJl_=2X)qQ$ -z8=y~aiR~S;yhwAVw2$eZ!Hn)boAT7KHub;9NjC;cnS=pQCC`3SdmNZOpY;cTX8!@Q7rn(1w#F6K)HIJzH% -zE)gdd=XUXnIStqr=XV{OxF-Im6S^e1mC2xRD0-3}hn~=;L{B)Ep467{NqW-9J!`KU -z!qfjQ$Faoc^q&(l8Nf4TXCv0@qHGwsYTz~io;yF4=d -zvUy=F{dpODdHQFizC*Zr97fWYw(8;flB_Gy7u_d>mVu;yk-jL`;`F7tOkd*r3!?jF -z>dWAnPWQ*~D{7O}7oAIAww3Wk`Z7PEFT!&?`cgPO=o_Xl&_9~KsD0sdXD4ICzT&gm -zd08EbzPud1EG^?p5(htD%6yK$2yKR%skd6)x=Hw-q2FBjde_BO;0CnX#07NAEfOMX!}9hQdkphqhHk;n{TKe -z@Uf-fkCa;&Ay2RZTw~gWtIJaqJS@q|(@y-Yi7S;*2VwU#__DApQCla^H%ap=xh?6*ID5sz5S-}6+YyjjR)QbNItGE -z@9+_=C(aGFXT=X)SFQ~j+TwgC>ze2u(KGDTxNzC4uphN^bcKm^nC{z{Z@;N@-_<|z -z+_TjubS4|qwPK&{ujsn&uh`M;#}Ylh$aX))e#i0J?p=w#hOe`uE=RZc)GeB2^U9A& -z2G13JVOHxN+R(n(#_ONI7cH6m7W`jwJu|-ifcLNC%?;3g$=I=Z?6;Xq$Di8(uC*U; -zUc%INt;^TU^-rMK)+DUIFncgJi{CLs-N&XqhA91r0KZMUxV(M^|`^r;H-{1>Axxl?a -z>8{;ZBrji>#r*>AUu4PKvmYV)O||{>JLnE4 -zwXlbQ-~0JJqh%X@z@E(%zB3Z|4mkV4AM!2<-ciw6x9^iloTqZnjeShADe#Z%3VwAt -zdoOTr#C#BS-UnEnY>T>P=9sI2cc3~LTFud5vF=ai8-4DHIm-6rX4rGC`)c8q#*Y=~ -zcQO5%E7;4yZ|kqv*{`$Q`a7;quID|D!e4#lZ;6+5FQmZz4)nvG-;&(p{;XjnCuoSr -z@bQMVQ$L;+7cO>AyNsS4r;pah;AK8~;MdW*r3ALqf!_-3#JVV!sc_Y^Ne)-xq8!iw -z{@>Rb-7WA%&!j{)VQX5e?{M|Vv5?Rc-5V0`q$`$pLeHdY;lfDg!o}{m8ofJB`lsja -zi+zNL_L1nl5qeL`qxNnW_KU(p?w_M)j7vUGHlVfQ4>*pL_Xfws2WxYHcdQuv#JzGo -z*J%4woIJGO;nv;tu(zX1BIV#-!f2*xc`I -ztjqCQK9bJ^GOs(B?z)%79f>iuSK98$S?)2~E3JOo17iJ`>Yg3CZ2CPr%0(vflrbI} -zi+XaWY8$-=BYr-s^qP$)__U42j>aO_62WIo^yfw07b=0Di|!w?SKjQcP#5SK+G)&f -z&*-<=QTmE~yLfKXa2Gz{rS`1d_bR^o;w#ZJk1NOQQuK(U_EVn8^P6@}_eV{4A|H_C -zYd*m{qu0TQ<~44tz8rf5b*{bd192X!bsu{hBD}^+Uu}Xuev7`H?5*3y{nsQ7N%}g* -zpf5cR`n11P<6LezO7uW`ClwDXzMP0W5;A4IaA@=#o1ll^Mh|n*F6P>i=$V7OmX1Ns -zzw@q`k>rJp%x5>d823!*X>-5%)?8#43EeP#eY{Lo%n=5Ayt0~@ppD-~8$Ny)zGNiY -zq>IOlLE9%rp)IM4$`5FqtfNi8hsA51WzX64yJt9M1M)ZCH@LO0{LLvYCy~6~?AJ5W -zg%SMCw;0>&j_9rHcK*ZLtoe*6XP)19;u*#h_APymw(a}hUd)f~KMtJyeQ$6)SeuP2 -z&M>>9-RFUI2e9J%!NBr4cpI-K-Q7d`OeRBKo_iL`$FrB%uF=onq_jT?+hvZ2&MDf5 -zp!%%y&Du9@=b}gbwYKYYJfTmCy<@Wmd%QY?J;nZv-=;&@`Yvq5;3Ra``?D=`M)zkE -z$Du=OoesTcJob*w9uhs+P)rZMjUH@W?@btq9@%@#81y{L9zN?==AX;$eK9n7d)J;f -z>w|nvZ_8zbtsW9h=>$#uHkz>UUF`WAi6+_kv@vM<%qTRC&(0Ii7d0s+33>ltMYoSh -zgqz_c-OWrG7FWFHCyt-V>j$y(2^9&L-gh{E%jWSomWl0Our+sRE_Cmt@q99Q+=iVc -z>&yKG@1x*eE%B-1ipIryKFyv%<9r_Lj2&EKZ|q{TS>~rM|6EQJdxu78)8_9}jnSq# -zzBhpnD#wYv?TS^zU*qu@aI~)LY2sc_mCFl`qiwUlhdPe7tj(f(ZsTYhKQBLywpkyy -zjHB&<&ykIzZJc8rM_cqGq76Crq>FK79)3oAzq~j6slOja8`^0u*Lt?O-sd~;-F`0W -zcJZKeQa&EtD>&Wtc4EGr_FlF&4*ox+uh-+YNe(YxPp&ZklM~K}=HU}IbFXZ(%_Rq$ -zlW51fZt7TVEl>56%f~gx^#~sM{jed&UIXwDewy>>ultYe3H?ZJ*NpC5`*mmJQWI)& -z%wL%&a>M7sU9aj^JS{rH6n^93L>x|?_}gat(`&lz*`L$dJ11Xb^h}(Z0d{=-37!q& -zy7sn;LP)E}7tUG=Oamd^;==tI( -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 -z`OURwZ)AP;4bmS~2za{Rtl=%lZR|2Q> -zdtV72myOH!*sagKV~l-Ca_ltnIo9dk!wEjAZj^5jHq#&7x{zn@?H$v`E5@}vl=^L% -zFctf*!G`+`_G9n>*aJ?MR;RTYePoMfj~<8Ggnw6E1ARYBU9zwH&S5!EUm?2E3HdOl1EFJlhz1=}Nvh -z-&x-bvvX3<1Ig7%vX;$xn%Od}2?dV^e(}JOJ3o^MA`E5;| -zzIQI)!eDRevW98h=-T9#j?eXi`?erehwd|mk3HbyNVNQ-x)_J%`!DM?-8miIacd!? -z6Wol4z-V*)*h4>i-yw0h(Z+LS=nCJnnJwBE_W(=z$$a{9&h@P?Xcm0(lb+`9u>Okp -z=<%$J;^}xF*5&&KS9M1*BV&hgJ?$4ext7sYz(%w9ZNW{xL++Yg+NZW+Ur-bI0^zl5 -zd8)gxJhj+xBGBpai-5bG@b;+@2L_ivAQ*U++UPkQS!naq=S<@h!^yku`a@<;!hT_5wK -z+MnDLtuusIoD(v&@6Bfp>sR>-Tc0HRt#^76@#frTWBF;XnAch17s0ihv(Z0- -zToiX3Y$q36hiINhhqI0b-zI1MnZs`zfxh*_@jMSalWQ3phgev+=$kgog?(NR-oCS_ -z1G3S8SUb|sciH{PDm}}N?aTg`x%UbgJk}@Wvd=mGnEoDu-JBqK^kYwl#ctSZCRszH -z@qQ)G_#T3c_f^F@%igl7ria6H2qzvDAGFZ(#i`J-s^=1<3vMLzk? -zAG;*gY5RuMr<~|3&m_kM2%#s>+iV(&0S6XMq>AZXZb}!cpde=ES&)%kBl=`xxh? -z|0%Vr9_q|DllO^Y?aO+#j)~rhq4&jJ*};ag2-AMe^}6?!t_Z^LZ~R -zZPmAVMBSJk&1YV&{n7MA=Hh-w{efMu5-z3hS?~jJTv~l?Wa<`s#$-v9IZA5ubJE*+x -zW8A|cZ`P(>7e6wH1!KsYYbNgnhfm(W{_jJ#=aJ-n?s(#+~^x4dq-FsJ{6ucXV@BV-^9q)ld*_s -zEcZbJvE4^Do!OF^N`6T1HlO0Z;nYGt+xs8C#`Wtit;7B#Az#1tQu~7A`+quIY<%(e -z*73!V1N1w5{8emx$+I?ZXl-lXbK3mTFqPY;wRmnezZ)|8eMY!aN9Gdp3AX-r_id8A -z)b)XKy_zmtjpl}IGRKnEoWOH5#3IT8*>B>f`2CM5>ibrutAHa___#e??y(#S5G -z;kWXf??CsGGWfG^6>V%J8AQBa5x@Vt5XUjp=^H|c`RqC;FVmGtjwaYomf)L -zh1eS2$9G(-B*!AzP7Q|0i&&1Xi=5Tosg|RAYFWc^!*X;6-{ln>usyxQnj0|NRbO!R -z_HIefe`kx4oeH0GiumaHu>J_23V0Dc_kwS8a5CoW(6JzRD!gg9KM>4=!QFe5YjX&) -zjp0h>4a#2J>qO(;e^%<8?qH&LRfS$M#sduITBMEkrr9xD9o~)*cD_ -zeK$DWgU?Yst+?IC=TFy4_YNLQTN^iSl=F7+HZZleP)>ZLc>6NOHQjc8@nXjtWb+cGbf#bYqwvJEFw4AByJcd_osvef*GHN8Bo( -zj!v1ta`-2rWUANQ$c-SfJa -zb*$O!zx!_T+TT=^CHQ+;{!{Wk1n|N)M><%tW??-0?hx0tZX0CG9Ba3B#^b)*Q#r=V -zbzHYu->m0*q#ZxBcZDK5_Fb6YXknfP@32MpD2W@`Z((-8T%GNR)_p0)P@D9U=s00l -z%FZiS9?fSewqAG@-?6;8if@-(#y!x>Bp>h`$&YETn_vEpGju=5;M`eU6YG9sWcTQYi;4VPe&J!z -zo985hRqxnrvHHXK)nxntPH~*)Vv`=~EVq`3OVocPeOrU -zSVsTIK1uJ*k<23dAP$i3%pO0j@B4kzIs;ngm(zM)(f`ga`rnvNr+11ikZHB)(MY~% -z_#daPHyNBD(alYR{=89(B+b)|cD&Ws(b4ERL#*bJ_9Av(DFg)p1!|eIR -zw4=q(SL_oMpR&SXOEh1_whj&{<~`w2!JJWo&x^%5tPy;^Iv#vJJ{+Ha1s{!H7$eU9 -z3T>oIY8Se-WMn_syw*>1$%p&cx|2G+@0q$}e3L(n>u}q*)O1;I%S+L_3~XNrIsL=3 -zUqm#bhokOQ(Ov`gZ;Jl+I$74abJNk^;@rJT_?|Y_h63-lA -zcLo2=!=`ui>bX;swfF*UgO4|M>|lP`d)t!5Kj>Vt`1;h*)hDBWYZ|^blev5SvQ%}I -zt}Q$1tNQLWZ+@3xE -z!{gTnL$_bvaB|N!{j2Z8`pN27M{AgD(#|FO)y25D&FP1DVf;Xz>YKAR(c0!NV1 -z+WI+mY)ve%W)UZFL%pTlIY;%iruSDpBvvNiJU -zqLui<=l`NSB0dnjTnrt(zu(W3z)W8Ac}I+?H(ZnZrfsjTTg#T`Lr2Pe8h)Mc*ca`S -zow+a6K3U?;dF-3rLB5oEbFrtvVkf^|Vczx6&U)OuE_m8RLzvK)lyt*zj@Hk9jq)qc -zN1F>u$F}y0+1SIJg!jL`kKKEWa!v#8`yj&CaAs~DZ*E`TrhU0K>h}&y_hkd7M@{U- -z;kSJsPxsQ;=U{u%xwl`eCss<^lo}%fQXe+}N9VzC56L{tQeFEZ* -zLUr^GnJE7`{(GD1XE;?yIOU)Z9*=Zy`N8mq!`Evoon9pGlL(&ZDFZcCwsp>U@&|>W-m$oaUi3$uMAndVtHetdt0I`2=roZT4?+Q5xODOPJ2(W6zr?ZS2&zhlJ&Wl-}cl;PuA`!5Mtap8fp6@s!{s -z>R!e5Y!G~l8%~o?34+The{(A53xc3P`6(rMHP<-QQ*NYerSLsl`%W%A8>0J1!raN- -zy8mS7E~n_Okw>lW=J^@BmWQv(^~K-AEqm6H=TV1t*Git~7<{aEadsw)@y% -zJMH?^Ke8*vu-`6T8Hp|rhoh(GDd4D|(ct)%q^Ta7c<$U?*I4A8d^_kfTs=P%_9H%s -zM`k~wYe`vK<^^PFemjOw8-wrUrM@b9-ciTsdBTyOQ#X0c|E;sY3w*Wx#G$L(NuB9sLbuSTZC2;y;&j#P#S1)(+JbJpz_XpPP1tyR -zD+YdOt%rV^eWYYJk}-Aae^FOY#c8Wjsl&XS%$c#Vh8WCz!_~8yc=Nua(Y}w?oeh&c5)v&!i~Y_t^IgbFI@u -zeVggNrWL(^UZ7#kvJqA`4_j%2C=78Ps*^d$xLD^$@2d_n!37kM{v~Yu|o69(z_bo}D|oG{zwJ6$D3ne{>8M -zR&?J7yj}FafVkOg)76Vtde@|m70`|CY`=%GcF^8(KgP%C-IUs!7{|u+vGum?RZY}q -zTz$szL3;~)T<>CiukTsU?-{hI3>GGJ$MEMFF4JRh&B}f|W=~^E!v0(LLGIU2nwuqQL31)Q)6`>i}d=ZaqA-3)lf82+9`sa_^*rIXkSxVx}%=3m(& -zJZR({1;kAgW4!#c_qLzPo~KCD*3ph1i1>lb6(5@{(!?*7!Rx%w1eZQNBQi)^_K>U} -zq^;uLJ$1ZO5_?X>ziY&^fh279st6zd&QF7d4*}1`W)J9dmus*0ei(ll2OEfdAa%mS -z>4@Y~qxj@W=@jkEr{K4FXLMiuO|CK@BLA_GZ-s=T_-Czyht0zoX!Y?wG#TF**ZVl> -zgW0b0eTkS!ZOqRI=i%=h7(R#S`+Mhm{20s2#&pNUvU$fN@59)XRs8-Qdw$WKD8}VD -z?41~X&MAY{=KRcifd%i;S7>7H1b>^a+x+^v4E7-H%HwCvGsZ(VMw|0-h8HmTUWwtQ -zZ^N1xdZeGLX}_t0k<=d|5>2Xkp|(vx@TeWW%fYnPJt -z-0RUE>owNCdT&Wv)-tBIvP%!YA2_-g -z?-#N#Scff9px8e+d*bFr)rMpJxD{_ZSN~$kw79jptK5_eb^KmJF{b*ZLayZ1Xdk|I7S%sjp4M0A+EqeEEtIa4j6T -z`=j~Jx_vBrF3%`8hv-rbEhww4&2_G}y{igKg3j8=S);=QBH`?Cr^HlhV -ztfyCP*RL`^7(b7R&(t%KA##xKH66rP3ZDC|*pGL$2#`&11VwUtk&?@Rdf1FIa2RpfuzTVZkV>8#ECTAq6tgIo(c+U+|zdEjN( -z|C3Geu0G(vmkxugHi8R0?T58@tEb?>#ms%=9SWDZamc06&i3N?F_eFaab+B@V{J}8 -z(j6Pa_XXDfYK)8Nr#g2pEAQn=oyLv(xHvF${wE}#Rrpe{I4gNQ94uzfUdN8kOZT!Bse+qSxKTNAh?_^CZ;wWL}z~Eb?ygxg7ce|dOl}zD#LDvLd*X%cPdbl_i`aMPO -ztNB-V->;C+rSD1}zR%-DKN{WlEAz<%WZS(}ZPayp>9+2=JFyJt@7 -z>1;>a<~{t@zVIE;p?%=WA*gPd^z+hro6Gh72V>}cS3Cz7_1^1atgq<$;OUJ+JFtzt -z{MMK@KKQ(;vU=Mc*hc)UE%xE}rI*{uF7Ob4PB-K-y66 -z(h -z1LAi0G-&JKedZkvj<3Fd+;=Ye>h+I#Q97^(`RiE#y$8$gVK2=^a0HvVV$3#-rEgb+ -zM@Rlhen>jv^;Pufoxb9!-X%YHHauPqjpFZ_@b^q);QYOjC4Hsz*ZSQCeaA$(72!CzD8ie*(RI=9 -zz7JL~or`#w_dJnpU>8P9YlOezMtjG;Y)3d+KYT4VB$>u`gYUI|)VVg*F+KRdg4aKH -z9sQ^_|9$Bw{``{{7@bDo|L3U_F%Eck}PNwEXCT6~a-VgrqwKF#zJ4p$``mSXt6SIkR(E_omFmuZCAwbMT^;4>agV24A-r^dn$Tn%5)q$O&8&d#iAVJdOhn_4#Vg<1Q>d@ -zs~m>WJT?sD2|h4;d!|Etth?Ru;REhCqt^0jb^DJi-Y@GfelI3|rzE*lzV+UB4>AW1 -zzMS}&=gCrA8b5Xw@L9`k*R@^DB^pP$bA8+FG~;t(Erk3_@=lt2m|JqWi~Fj0@1A~V -zyU!mY?s+nc%LJN;q#RMqAL5J`h<(I^&+r{{<(JT3i*K4;9A@?+ -z9C(&WI6#NlP!3#o&`-E7BVNe1%-cLt+d?`!PxT|U7k;L1z|1f|4T6s!Kb}vZk!#(9 -z#8|`!i#@E*1M?2Xj^jLVQ?4V+zAnX=CGQO_vtQW~>%|gV@^<9(pYLuVyCv`fS$Ust -zdYR;f>`JoZDEjtrO!C9pOD}j9T6z)nkKjsv-_v|87#gb~8Y}PTmonHt;JlpPI2UbW -zkc&=^0X&UiI?xnE@83@Ffw}0%;jY=;g*5jYbk70!OYq&Yi*tGJYJpsV>N2V3j$PPH -zMP+lx8>m;^LmZQS=s;5<$H#j4-gMo*`#MkDcYo7~y^3Y?$SQou>DJ@S-7cSR_43=7 -zntoZ#iTv%Jigc3a(zg3H!KIOJQoZU@4fDId=IqzbZ=K&g;LiU$g%9`RegOVY3c7jE -zV|U0isfx!9=Iv$m=$G<3vK^Zfh(SCq*1iuMl}DdgTr;V?;EBgtBU|pzy^r13TODiK -z819|)cQnTN&f4NwqVL{xEBspl|5o%q$$clb9azpOh5-)VK8zo<%V3{L-}Ws1bPe2o -z+^}1qm%u<;`$lQe|$dA8u45iaKiTU`zn-Qz*f^7-^@4d -z4Ti>GZc&>G=7+xrzWAY{>z4qp*qV<;^(^@@e8?p)}-`<&s}c(19d^4?&)fL%?+VwV;r+b -z-aDaj6_ZKE;nPbxtUr7oNRIJ*v7YOux7PkeSI>BPH=g3l0%Pi11>ppKCuvIYY}CWV -zAl~-Jz`q<`I06lO!CUl+Hr@+XyiYKKoklvSJlBb~*DJ)2!B1Ob+BKa|Z{!@bVii!m*Zho&yS#|nKOoVB&DTprDyX8H-X`S-_8 -z?fxA4aoqzKSq|Yk#>zfFkN5Sq?z{ct?|TN=+XPETp8sC#ZO`fy-&7{nalkd%g5UG- -zMLaQm26m`*E;tsPKO&Yb*7>!B>ZBXsraZw&dB(AD#t*kIVziC`mV(HHadq4WE6&G_qN*#5wF -zVsv}=+Iq>6H6MHE!S$hPi#s%i_9eZVF|40p)WU1VD&cF7>B9Q!&^75op?2)+#`A=} -z>3+I3Z)ww~L?`JZ -z+m>CH$e8~2-noR`i*D(b#?ZKmUxbgXw=B+zaQ5pb!&fv#Yp)LZ;tc&2HEIGBilX$V*ZzsQNt2m)RQOxrS -z%_Gba-=$AUJ#$KmIpf=j`qZxZ-Ct+UXjU#Q!7Ju))6XvNFXZ=GOYE75T`{-i?tNXi -z$;a6QHe>$2&Dn9B!;XAC^Elu0kPd5I01w+Fi!GU1A>Uh2sbXHVcultW*t~7BMQ~?b -zxP)){x_GKT_4H2e1MFJF{pbbEQx~AOfwi;jYgZFuhkkRs@ -zUsl{waCP3lm^~5~DgR>MLF8SN*uj&caS%HMf8c_{>4q!6qczTemlf^l8^y>R6(igF -zhTmC!`}Iu(hrWWN@qlglgH+WTz0*qLiC;gZ2xn}J7;pfyNJ47wh*Q7;h3f@Ko5nX#6_x*cp)y -z7%$NQ$Jak(9gwU{Uid!q5#}SoeJ(NnbJ1L7*Rk!8wJ5&GY&m2-T9}J`Yt6Ux4f9KL -zk^kw^sl)7-G#;==@=L@+=I68y*Vv**Yw!d8sbSy0QV!p*B=ow)u37BjfDI&-}6 -zR{bs1m*i%eqWq=7)tvtO$h$mVykBZ_zUCyK?-EX9y^NpVc(3+Tec~>ppyFp*jdC77p$6Wsdj(1=)aUP7EsKt-8;oi)Ya7#G#ply-O -zLE8wPiyfLheT;4EZ0RI%S2nRHVUgx&u4iYE+d@~e%GnBrbQd}_zx%#gADG@Tmn(+z -z^LK`C5hh_;AL)|jbHk@>zMyW{e1ZMwUaPeqX};jP=RLCTD<9LY30HV*JW4^2=GWT0 -zd5$8O632pGM&vHyy@{-WY@Mcg89N03=-z*E%m}99bHRL$_3~twM*tTa&tJo4L-)L% -zatwA2_~aaIjhuUaN3V}}2DxrIVXp5bK3>LmYP802>z-)+;+|)G*|3NuoBiGf_!O_7 -z_?@%y8~fHM7JHs=X7L4`{E9@FLcHE -zm?T|{KVCZ89396>|9}xf?;!F}Oc%@VSk`;o&%%eGALxi^);&RJ-mLXWwaf|cOLLm?{hj@llb#W+RjRx*U)}JqWuicPiB7sI3;sC -z_!P^(b$K7K0QgIwOZgb?59@t=W;2Pri|#EI<{~@VN+^(G0lvy<0o+ac;!N!W?iGY|5TF(b_nt@0j{^pynxZ63QnGo(w$M -z89o|c7Uk=xv+J@=wS``fe-dVvoKj&9FwQH&@bb0$s0lul@6S3Qf2Y0+T;I2GN4gK9 -z+>x!*f*0khvVJY5{?sRVH7cwqpR~>AlN?U5j6NZ`if?XS@cekUpU=c^`Fr?peG@#= -zy?@^?w)aS9to_dfJJG%h-D+`r4>Aq8>K63O^aU6{FgW(G={d3bv{6vp*(b^)4W?n6|HM -zqJxbeMb9H%X-@HT)KvI6vB=Lt8vdu%4qD~&ozK>HMF-Pc`wEODd#;!6O(2dz@A%$f -zACHZ0S8i6YG#>@+xd`L|%2=+ohv;=IsTZ6&%l+Yoa!7u8rX$9w7&GzDBVX`-Lye;!Bfr -zN>WaFzwZb5mUCBsbX5KIZEBB`=0)Q(xD7^pS)*J&@`?O<6w^lXPssIB&BgQ`G?_CO -z(5KDykegaRi=UO;=czAnjieo?aCF4{A)$vb=gV~v^6Npz{G{|TLJbGmw{I4l7NXKOZo2_5LJ$Gzge-`4Ru -z+6unfXOypZd5Ck+l?7bmv3lc=*Y9jOPUv_H@4Ij7ctrx9@()Rvv$)2y_eGv!3vu5c -zzO7?wqHkt?5trS-Iht!pebw(j6nj~Yy(FJY;FSU&3Eoo|<&T&fxEDTDm?+=Oci;W* -zhQx37m&Ns|3j3{lF0sFN^NZ}fSv(~kW`24qT$%0;o^Rh5x9cq3^R^4$zgvD^W4rs2 -z__0XW@TKyng2i=w4LLX3i?2F2U(3CfowmQKY~M}!IBE8xu=m8~*Th(D&KC-1@*WI2 -z@YLiAp0TQ^`?~!;D)GB2@q0?*_i>5eGo#E>0dZ`{-x@>wwkbTp2 -zE8n?t!SyTGUb|rVrVZ_DuRXIR_x7M^-A&hDUB7nSruq%5H?H1P|L)d}n>MUoc|+pD -zH5*p1j_d!ZK3I6_Yfe2Qab57^>%rUBu35Y8U2EeC;BLBU!`k{)AQiN)edo&S+pn&_ -zx_#rOm1|e6uHUq7UHvsHH`HIXa@CsQS4;X_-@a+}hLzVZxPJB8Yd5udc&pZJ*syxl -zruw$kE3aO?p?+1{Y5?8ja9FkOh8rPkBW$R@VfCiAbyvq@ysLff)$86>zp?$@tK;Sl -z#x>Wkymn(f%m_Tt4Xf&JXy16l%1x`W;D>s#PnLl6nZA7N^ -ztJhvVf890n4Trcdr|mW&(Nz^Zd&Qs*}m3SdfpqC*RF=xtJ_ye%T{ja2qMK1 -z1_63{{p$MF8#b)l5LerYL5=F$QR-{1Xs;j -zi7}|ZdNuOdw7P!bsf+5H*4@~#q5aynP4x>GFFtMlYhL}DMfJ;8uUtF-`gJ$mSbyHi -z_Uo_js9(AE>iRdY+_0v8$<@~b+o|v5fR8rdz`|f+kO_|B^N5u}bub|~I!FhTf{Nf6 -z5@^Q;SMtV|AbcxjGFxLd22&>1@%u)~tAil(XfSyq`!vHVDfOJ+!%^+GQW`nm$#vq9 -z@Dd8oV`M%OOr6MjJlsqQSIMPIhXSS{RQuG3VVApp9rQ+{SUdmmm%nZo$@GyWWYZ=k$}>;KI7yvioLio(9*%wKS1 -zFIV_J$~l~WhyE}ydY-gz`qte?WiotKkaDiJbpA -z|Mi?NGsx`by6_>c582n2`KXhB2j`19f5yqbo%0;$f6Y<&-cD)Z{3ZHJ -zo^PW}4a{~KaOhONonHz -zd-Rw5FQdTc%%3^=-^}@$oPXWPe+}p8b>?q5N}sk-&gcB+^cOuBQ)(0Pe;4PcbN%0( -z{IBJFF6V#AQRCf4Igj)IrN8*ebIl=koB52B|1F%K&H4X0`LE-A0q6h7QTp^@$_1SN -z`XKiI81N7Xx|4S&xbKdRbznSwhIDgv7zm4-O=U?O~d38~m -zIe(G$@#~f{NK&_A94Pl -zPX5<%K9BQY*@?SwYk@HVG -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 -zX?I#(D+vT=Y9YpZ_tA -z9GO<9`vkhoV_Y7(odZ+v_TY?x=K}W3v)a8rEwjh)j8V-d+M8aPN;b@*o_W^)t)Nva -zDATqzA3+d!c81S}gu|^e=a8(7psL3tt85e*Si6H6O)xCzBJBaT4_Z>752n)t+|9`H -zz|?YqrgVaWzHFwc@L}-62Sk5%PlUFaS)QkOG8F49)nzuRun|XoXbG!>t-qOY%N9I@ -zL_i*_Zw$X6ux|w`9lF+W!I=UlJq8ouZzNJAVGMsNy@@L~XvCX6+Ntf_jMk^#7_W<5 -zA1MaE@Yd|A;8(w`v^;SBp@tC``tR?2YvIY{&riH=T{K|#Z!7nvxIR9gUS~LdCif-a?oMsFLp``q^}ua)N~%v`heVAHUvV^42wk2R)5{(jh=2^VG^E&Ji^ -zRqsT0PAo2uE$-a^<45zP^(T^M-!t%=#@OXe#>jU^7w!18dcqx3m(AE(ci~oe?XX)9 -zobK~t+}JI@>N9O%TJ6at`}6PHbU5K+jrY_3I|f$;$wdVhqyDrl?8<;h>Dr%n`Eu`0 -z44+%Oaq5usr-od5bYAp74s^yQ3|)|8+New(bfo>^=}*`u-Mu<`cy`SFFHH<{?MUD8 -z*PAtt>7A)N_r9?=s^ydLisD%x4B!1}m}O5{e8M~LeVuYDW8b6xhy#5>`?q?wZ13?Uzwl|GxK;pj(wW>um!%WRR6EH+tjMey6XjP8@vT`FQ^j+vHd>XK(YG9m{6E{La@87iH{j^md{j2T&RQ(%o -zZC&Epb6{V=tG15uCyf7<>G<4TcE&uxzi>{VpkdQ}JKwv%?8yUHwxm8h!N2d|l%VIo -YFSzF`_p;|E#gsG;Opk>B#DL>}0I}yufB*mh +literal 121720 +zcmeF4e|+6leg8igt58V7N<9@P65$oTKj#z-k)IwuW46+ +zXMd}lBy2qcZ{6CBg$|eE_qA*U?;;VLKRuVih~7m1H#fJnH{ZCSWlfuZF2=9++z8&F +z1ES|7ew9Jco`fg9=1I-X?`XKJp}FyrcddxH>-kylN|!tfrjnYGgfutbw64(0vEf}w +zS^EQC5--VI#=X*IB;AVfyVBwF16N1SNq7lRc3a%f#M`YAy@Gm|SMr?fr%E(8uWZ@W +z;>y~y@G3k9uKx8ti|6t1YHq$^V?la7-F)RBxZc65Eo2qJbJ)jk)z2nUbMr;Z-gV*9 +zcPxvz83a$3^wT|Wo*h-y+a#$anZVsn-{Ka +z+0^l#wuPZC}1)W*JlN(H~i +zwfA3BL3bDg$Z7CfB>kQ1(r7%?m0eD$OSJRAP@CJ1CF&L#;~q+%Cfo>IZ0TQ_c4w7TO4r4^kU +zH?^%f<@{4tcJdTeJdu9aa;y6FtJk%xY}?R$OUtHM7xn&n_kPj3TQ)6fU$>_1h7E1E +zEoy9Ay}D(?qMKS<7cD;Hl+#W*wRy2Mq>R>EH*9EIyUAX*v}|Z?f7=-gTW+~!b=$&~ +zEgNp@SbN$T)B$P`2)^V(?f+cx1%yArsptB0!J*z;NTO#G{Qf-GoO>4k^*6^opZa1d +zXhJ@Y{2igd5egikz!3@@p}-Le9HGDw3LK%p5egikz!3@@p}-Le9HGDw3LK%p5egik +zz!3@@p}-Le9HGDw3LK%p5egikz!3@@p}?;b1rF>8p6v>P5AVM{)wjPf=y`2LS>F%S +zsqHPn^q$w!!S=GCe)#+o>WAxt^Io_<75r6eS^e-X@^`1FZ{L4=L*LHywC%60IKK}# +zJ*{Wg5C0&Y-X4_Iyzo($3~iiRKYS;!>$Xns`C&R3zMi^IoEO|L7+cAI(@|TW3wBQL +zsSCC~r+hx)PyH*q7AUm;_P_7jpALE+1)lJ{i`4q$4Dd|#oxhVSxCq}#;Q8>|gW47b)E-*bNb@jVkNe+K2ZQhsZ7&)s(m_w!zO7<^t^ +z(a=|WYB0S2_J8PoGTr=wXjx3hvIQ{>|LA<9q5A$U@KXIpNW$lbmBGOIr&|7S-P`Mj +zTL&A4ucwV0C@Wg4jA-rYeEu1tbD7b(HrRUUXl<+Aos>zZf;0NdgZrWXg6XN?%p@Gu +zTT&anyX?S$Gt{2=rS|HctnNAg7ld<7ZTjmz9Z082XclaL4ZMZ>>$9Od_}7B}>)F}`u5ky;Dca9 +ze28RTd=L+W1NirNUZ^jrW41n5ECa!Ic=X)sSEu`4PnRwDQ98X~-)|!8M+JW+9(|F% +zh~{O-Y`wIuerC_V!VllquP6BR`qhnnYD@jRi}JhD$1gaa@@eX|rVDjGMxTd(U)1mG +zXTITntH1TgBs%)se;znc9mxqaee#5!@Bi$;1Iqt8`3D+{`6*sTeV;_%k6Q5K)=7Oo +zrr-O}*~TCken%J#EIm3HerIhk@R`ZM8FwPj;{De%kzD?8QgFsj=>OnR!TN{N!DU7( +z +za8`a&a8`=tvH4@kOVuwKN{8F6UMjQA$^s+zvj?9GQ<=T_`IHY_`D8vY1!IW3{A9tQ +zuG-^%)Vj%h%31r=9a7zf%=UbBF#H0`-XfeLJbPWcS>#3UwJgs1(ZKt&9-P%%9^qxM +z=wF8Z4MBr2#rtaTP8IseyPhFvG+KX4`|v&JDte6Ck7T~1f%?1vdSx=td?L4{;*&-< +z(W0b(e+>RHu77=3OyBSXho}1B^XW(X$y+alrUO=I3|^JuZuBc3$pPWTyBEp7EZ9-;t7^JbAsiTOt9R!6D-#d^yJYYlgG*R +z17UfvUh;{)aYf(uOpfddaz8>JWP{L?QXM&0x+dG?bT*t-tka=%9UGLLQP2^~ldU_V +z6K1bR)$JoXF+3_=enC2MIdUA^_QO05O;nex{gN?9c{{7|J(+VonfCLJvcCOYLC-^7 +zHT!mO19=RLJKsJ5jOC>f(pXKiVUo2fBD)DXd$tP33_*P@#6s +zCQ&E0GbO$dFk}C~+r(sE(r-%U`?A1a_R|NS%LNa;YW@P{p-p5zOW%Qmm#w(XBz(%p +z`MxY|4yh0Ft)Q>TK}|FVnJ7O$e4s=I#LwzrU>AJf%^V&24dm0=1^8x>kCLXny2xHP +zl|_9SQW^PpDe##O55>Rv^#eoT7he43PpEF**Aq;Ytz(>_jqhq~(7V+8UQPOQ377*z +zi>QAxX%R3_W=vZ4?}>d$&|vWH#psn +zUkQAc44ns@?*~ir=K<&Y^-IEr2#(!NZsxk!Gk&b&gMyu&H3(@@ouo#)E#xUL`nWU+Afcns3-Ug#oT^fvNdehaoJbh3H? +znppn1)JxbXkAFG%_o*ImM3-J@%O0Z$*15oXx}d{Nj>ZPBAy}`nYS-FM8*c0KpLuXr +z_fe6a^eS&2FkZxua`T$rF7oOk->S*yseR>9x7W?%9L`oZ^m#idr~Xl{J?+|1o@;}> +zb!KaNcU&8n%O>-xB3!y1U#ty}i?>tQN@%=Zy6I`0b-ex?PZw7wevkZmT6h@{|7vsf +z!LZ;Xrjx1r@~l0STedW?dby?b13CI=c^3x*ed+7^b8~_!d+u~) +zI-vvg4Cbv7%<$HTHkP*qxdP7+dG~!)ejTvSr_bp8fcnfBYB;i?DAteC@4BQ274$d$e8zX*@AHM#+=dE8;TpqkL +zJ|PF)PKJzkiwpUKUS{ZbcxEA=dhwVSW?cT{!rWc$G_8nu*&PI*4|k<|!kG~rv)GY` +zpzB=x4lft%?TTUqz*60u@MT;#d^;-(eSoJO^e^0!nQiY<)dRighuwb>e(kt6x*y=a +z%jLfkEKz&x3B3Oy?45M^p&iZr`)^;`cc3eZ0VQp^WOyeyoRJFd4};P5Y#sd-uY^-vKSAe%)~D=<`U(CWv_54=)CWKKYh%Sh +z>r=L-|PhK;ls$k8V(mC6O7sU8gR=*GSu#MOnI`uzyfBZ +zN2-Gyg?*#sKkE87ioL!^a+849m&B6Z1|4nQ}8eyZ2icYOM?5AU-K#Yt?SZ=7BzFK +z&Cg7>mC-m1ZbRwJ0_k}#^f#E`Q8dm-w`PMU{gE#!zg}=`{9v3A47+Fi(0u8S;hpIc +z_o3*f@sK|GvDDi56foyUII4{72{Fcja0+GT1_OeVpU-@1Zv8;&++gY~oal2-v-dq-Q$hbps)>%ui|eGAZ~f +zKQGGfbv{xIXHAr!_qyiGe=5q4<=E$Ai{uBj`~Ld;jta{!?Qfd?9-!Z5Q=oalo*eb; +zPuHE$xBvE;`0_{f1NyP`6_rveh&VNCU$SKlG)qa +zIKAJ>@Z6WatbaS@mQ#QE%t`AddtOiTQ=Ko!`v5y^b-1cdN;<_=F#+l3g=foFK6$R@ +z4xe=}mpv?5u3WY3;b0)nqfN_0UIk}wI?vF~`S0wI_N!(9O+#jE~pOv^jX>Cxo_1vK9$#a7lTxW1i +zZ9UieD_e9$F#N=hX%TIAtmyA+yu7~xe>InR2K&l9=qzlumlOIwbOmE@>dA9=&fQAl +zTC?@sT{VLF6?0-rBM@$nl(`-2AQQ=Bc}LKKZn-dt#bBYG3luOWR?2 +zP}K`A|BW3G{d=L2;fXE&x$&$9&uZGA2Aho-M=3F6NsEloPSdeeo%|w}1`SV;|AUK&h; +zg*`{Nd!0>rh_*exsw4cKJO;g>p5-G;L+1diJVQ*WzSG)+Z+j^FS?aF37#&PiR^*m0 +z*p^KZb0FW!P;U?QvYiVyD^D^Y{PZp>JQ(Y<*!MB}ihO$7mOCcjj5HGVaHBZ~7I9v{DO*l@=VLG!(W*Ik)_eq +zEXG~lXm%jty~D}(+w3auu&I0PJ$M$; +zlKzy|PvY(0jfVTHZwv01kDxMHYrkTfa94ew_TPS0-%rt^H{|46pKwRy8*p&BRTTS>+zBjb7>AWK#bdF|slw_dX9Wu0ea +zeLMB{QXe_5{48ZkWxkj9!~i8Tl?DS?+bOpkSdxE_r|AHAKaVUI#g_T*z5n(ocIM|< +z|3S<;9Aln!f%>hv!wlp}*NnT)3~Ub7BtPk@$S=~|%ljb2o-{9z{jzV>*(&Pkd7*H} +zE<9e~wemB{2NwNWHNA*_V31?BN;wR(Mfy& +z==2Jf}wRmHYkd41;|-Yt6!-;`^P +zGP&=)_xVgm$7aj_Qk1`d{J2iW)p@E=C#*v5rqp*DKA(&5v3Ub9ZQh_O|1mC^SrFVAFu0@E1S1V2Hae&w`7hdehC*pZ&wUs +zOg@a#w&Lz;zs9#;U9gE+7aQaJBx?h?c}3%vm!BBFTz%B{l#@;5WbCq6K!1y?ne7-8 +zSH2DGzdhZzpYKdQ{=9oOaqM*Sz8^AY97`{kf@?hIt&DUs?8F|^$6OVOZvkdg8CN_l +zyInuuMqQJ0%4Twmk71;D7DK_d^zBd#6u<51LS4mp;<0SDeMcI|ArHB_XJ+LXUnyT< +zZ39oSz&w6y1#4+ck9uVPE4F8QDu-noEl=%YBeS{c0rBMn=#}i6=2T&h`p`hnYFD_# +z@n?H>`u%^=cv?)`!Wu5E6&s7TpBjg@+e&C_IE)t)_c(n9nT}(@g_v=-pWCQ!vVD}x +zJNdT$YL1+swUFJpKzhf(`>@BA9do3540C}(fQG8%p{A(P-3`#jLyWQn+=`r5AVAEmaE_GK&k +zcpuwIj`#GoYj^5dU(m8%Y=5|Qtj^aCU;d_#3ney^B85(eHpXHf*kO;~?|S^|3UV-_9zKGv*X``lYFCdK +z`@Sr3B);kFlS~qm>K8pMpYhl7g{O-KeE +z)AwMjmNRF#8J~r?*tUF{aV`}sIas;&s)>~gnG478h{1=VzwkUdfj@rIX!xKn+iDJi +z%de~qdKu0`KGYXy&zi6qic3|SO@J@5O&ZgYXN?y_*me5vwWNWZ@OapDtNdJ9%efhoPAKLcs=CR~;=C*0rkJbv0o +z4y_JrY7e>2l@qTsmJC*pBZJK8#*{(cnG8-FLk59sGRT^Q3De=X4}s1Jd)^+~b0?E` +z9s(TM;4R^ba85AwV0fxOvD`CXF_}kJyJJ0#zGbLP3Z2un44qs4W?@8EfF +zW7JQBvBc>Bb#e{1ZY+w6WQyyU{29#X+e5GOJq?E1OURu6ZeZ_dudmVQwn{Oq(EHZu +zf;=j|pfXXs9s0RCW%$F7l=NMGSd*u->r31YG|nY(Y2i-!<;yPmOCs +z;lE;)Rwk=Dj8R#1i-QT{U5{yqGQ- +z`latd$P)fyVQd$@7}J1lK7RMHiFeRHe|lse#^OQ#5aeX&bmPaka-uRxInlG^n_ma-V?PuATfCg|`9%jGM?`0pGrItd +zyMN^3$g&p)(VsU$m*-wDwjD_vMw6HJ%8~Mt%qx-?eJ7+ZgGu|MzTn$Brm5WN#+&FiM|_4PW-p1QDnYpaHjHcQqj?8&Y#XO1<|`-1>L2~Epl@btosS?qWBZ%PE5cv%6nr*6 +zMyih=q>qMoVm_XC_Db+W7uQz&Y#VDd7t)TE&lLEUPp*sXtXZMhV2+r;(2EbwTEHBo +z61$gU-b323tZEzcnarxbF3M2$&$xbovfrib2Pi{gZnSNdd?J;zxQF*Kfg6sDHGIw1 +zt&I{hXa?W7|H9YBE`0xs`T<>xX|1DZibu9B&;{)vtP*!u}QObT8d&BpefmzA2T0b*N**oxg +z6vN}(cKUbSKE)G_4#diQJkjHzwPGqO+UAMxTwH~^u +zjI|xyTYdS`Zr;`F=HqdGVtyavDEw7N_SX4N`Zkj1`-kSaf-By~FqqefSM(!p$B(^M +zPW9M39@nE>MtjMrqd7CUMSk7SqPa{FY$pf55ZFtdY(w{$ufkP(m0TZ%i{e6qi~&B+ +z`n`<0+OGmXz~AP%mfz{}ftgRpioQ*Wc9Iv1MImdFw{USJci|FuZA13XlniPgexZ)= +z(0-=>C8W>xz;`pKU4{w?m +ztxZszrMIz$b!*M6DP!%5jnnva_Y~-Ab;(yb^+jbp-`gFXPE|hj17uSCPE|3UQqHfN +z+`o|Vk7w;WR6ALdU1BQiq44=;6R1bbeOs1wCO+TFTl|51)~{@LxMmI4idES=ms%Y_lcm8}C$J^fH>Iv5WE{y=`0=@t)CW-S`%WpF4cEDWZC3ZAWeOrX76R1m{=ut*8ioF8Zd(8hYMit7-!6sh!UF_MGlbkJ8uf+r>Uk +z!(I4*m&!Ar-zy*QAKr|dd0e?>mm)`8wZ`%s_H)`heLFSTiEKcUuDuD`S$`dT@LA>B +z8pyG3P|sQqKN!chn)mVDE5d7{{i{y&k9+lRC+qEYvED7&hh+cm8>fHi3G`2EPSwse +z7PmwWw4PEjCLeP${7CRr+H~*ErneXBg$@fhMu{YnKZ7)0OZ%vQ0 +zA6{q8W<+uH-i;^m-In%Q$MjjQ9s7T$5HsC>Jod_e3!gxljn|!RdIzjO1J-@OioX#9 +z%g5!dy{dFiALTQd46%B?V<<+?`eJ)WJ%f|ddL?w1F&-Nf1YPepVcd|&!zglgg$wF*BUsh1ApPC`Qb%8LRSx| +zPw7OTxVJu`@nM)(yA +zUvubL(&&jW- +zU!py0wl9t6150vl9{6YJgOtBAfv +z<8k0cGRja+W4Y$DO|?Gef$jEVQIGQnC6lu8$X?$03SLjl +zwo~5o*4oinMO`n)?Nc0HKA(7D?`tQX9gV{$ZtmT2&1M@*4mKuHj(Od*@yc4P>a}Yo +zG{*G_9 +z`VpqE8;>XaaPmaocCAx=tg^?xZ=S_^I@ucQ&*W(tV8`#j%zh!>i;nD_93DE0c*kgM +zjx+wM9~F*wHV*S$!S*yI^Uc3V%wOQ)+r9lO)nD0>FPwPze2_0pj6X3yD1W$p5R=oc +zU!5Pax^8SgfW&mdrbT-TaXBIDLBW +z7=23eXzck$6K8z7`Nk-**oTOP{p}B2T$nLBpR~D}=ac7YhYg*oIos!@yNaPHCI!DW +zFVP-*&UV$envbl{IeDv#Vgfqrp^mXOJ|6}DIj>k}34HuQga3!JN4z(C&v^+u-8_`~ +z2LCDtUuUFcZLKo4G|`swoaqaZa1ehIxH^a54v&H^3N>fQ?C%~%oJ$n`6V74_x%G8cpBQCF||#b +zikYW$<=NJG@m*No=F9fiKQDf9X4CK_X!%IUv@zI+ldK9XA1EBBfKg) +zBPX{-{LfUxd)`NhH^zR6d>P_R+E5Q=n`fE|_6nLfn8f}n~fG9 +ziH*yb7jBjZFUhkQOsVX>pLG*S*(-&Ct&6@(?T_XUrSK}8?-=((ZKaC+OW`rDkNMi1 +zNahYloa?n~Co~5zT`-^j+C%d(;hWJw^cS5+iF27uFmE&3F}@7?IU;=fWyH3hKWS_q +z^P=H{`;4U~8=hwsSD)lfY}8Tcg+&W8I~?SH1lFNOtXv0ol;eV&cC9 +z-?V2OI#i57hu&Xv-}IVs`t)_Tr;9Oj%sh&&^k^Z`Hw~L*!!@#xAEGE +z`2>`kkWa92V)mOo4h5e;c!&t<{t1Xp(&%E|CiMSas;yALs=lk{C#J2?QCHFh$^DSX+{g~eprp_6A4BY1SX^m$m +z&vEwWF4{8L`ndWP*@y6$gbwB0w|3DTp850RfW4&m^uy@aoIWwVi1mQ-hZH-LKbqiI +zZ^Fh|j8lA>D8KlAAAir{-uOjKa~I#_4L@jQb_96-8}FZb@1KF8^@CPVcHhgeWOfXgYFDYj`$7ph$oe(4Ntqo@4(1+4IhcEhazOb*mIL~u +zb4=84&o7Myqxye~68<0es-t}|M&n=cnuw}#Wa>V*$Enl?ydnRu@(}IX6Lo4I(8q{{ +zDo^J)**oG-S__su$H|_FT@h32+{?RF7nht_R>`?#yt8uD-$R+@>t#!ApI|5S=+ti+ +z#W5bf-|lP-hIidTn~mV}Ip!d@yL;hAo|gcJj8Atq|P| +zmuA!i{s{M3PdCb| +zKXz`OaK#4?o!^{4IfA|C67y>+!mBzq=kEvxhOTz~O448blFv-P{8-)Y`Yb*la5$?E +z8lTjU(4CnB&QTrk@^x;bjL}->|4WvHr|#*a(JkTw=gPTvj6GWGm9GY8#Y0n>XB3l1 +zzPZQGp6|0Aq=@;@@{8w#gH=lc&;Z#ABZpK8;djXpfn?y(*x&NGT}(!ImU +z<28hD1PohWIOzK*S@HSM&D%Qmi6B$1Pu#;VtDF2joWBXVQr*m?SFGKe;8&~T!PAKt +zI&vVn%RWqb%9tLhEHY+t_?ZHIYg}JSMeoTP(S~oCMSvYghWIHJX@RK#mk({$< +zC+mM(2;5CSyv%EEAm%nGRTM7r|yKU)_S}>st>#@@bIfwWi!#aYic7UdE>ob8~md;5zANG +zd<(MuETRMbZ}NJ^JDtI-@ntvlKJ;zux8()HRpLdmuG{A_R^4O2Q>YvB3z%A$Z1{qk +ztv^m7|H=G}%g;pl#d|0cXUC<}&+cr-&OZ(fo1;GIyi&VYzgKX-0$Jr<4%+0HLwnyF +z`x%wv8%O>^?k}X=}S24M({d^ +z;G5Pi?SY59Thc(hD6-QhZm=<;(S3(=$5)+N1Y6^Yi|Ggtt*tOy1P$}P&7X%R +zq6e^Y@Xnw6#@QAX^j+{PJw6Achtcp?#n<`hhWgR?i{NX-r>4_N__U~mPbEBQa&u4V +z_aVu337j{=TjR-C{AGS){B`{}7=O+FTwuDm*W{A=u?#XM4AwgOB=fy4$)}OtP%icz +zWRp5t$;S>L+f7b}Wec11+ZJce>dDST?uhta#Ze!IsMr1NNS>^XDfA_3OLI_Y +zuyrba!GL0Hnc%~hE}O%c!~J>k6?CP)cBQYn=2~X-C}yYcX*VwmhU5DsfyL>Tof%!_ +z|1Rs8Yjv_~=9c{4OJYvfb@+eph2QKNL0jl%v6j5I5%d8+WLUH^SxVXuy<`4(FLdLb +z?M2LbIdbnh@S*G-c09pbJJ)l}-(M+-4JfYrB>M`-k`e8P9w8&=I{r1d>r%!d;9L)! +z;@=HR(72>sVz*Z3;c?p5UirA~H1c??lfB0ic2;>~{GMSG^^vVh*{^SBR2!{m*J4$w +zw`I~a^t%cj9x&KXp(nr|bb4ZWnzKMlK)RDYsz3dQW>v*=`4dcFMUTll7o7jn}s9$!! +zB%=4$@pv@a`4HH*m+8Op!OL$FpVX5}urVLbHN3RM=!*;&(cmf0g`y9h2G~urJu9F= +z^j(bpQ^&vew&_Cm{$RhQ*`$38hxl8XRwwyen)*&wSF#Ry-QCgeG)nHo6ZJiTXS?f1 +zo#SQnT`Bs`V)RZ$^~4iBd;4c=Aa`8X|91GGbAh1i0I-cl?T)TS7x*fe;Vhd#YKW=CsJS$EpoHJik>ad!WKt0Nm~<)|NzYtUTr#&8QXcmQAi +z&eU0Z=M!H;ua_^b=t1U=Th{s6e(>KGq-xLs+VMUJv>B~GKdCJEq`f?5=ypew|D_&#pzItf>mU2kkQsg(XO8;6qz_n%U-qW2;aR^MM!yB0_@(dn +zx0sVfwDfq^M80*rcI%pbL#;iL?+E^3oKN{Bj<+TK%A>1U?6=@1&!M|)m)5pjw=bxQ +zY=ZFGwIbD%Uy)j3IC2hj{tDfzO#QHai}iw%I)eEG{dmIhO>)uee6>E&gJ(N$#@l{J +zE9GZqBBS!%mL+%_@g|Cc#&Qn5INw<32uJ7r@m#lT+n)5+=Q5dRK9S>h&Y>r3`XfDP +za`GOnhhW|Ft!-t?dHR8vP +z!=*c{Q4_D}qtU*F{lSO8p7etJ@aGH +zvteTNyyh23&+gb4(4JM!L=!#n^Syk=c{6^oviZet7Hm#Z?n-4dbaAAJcb?zJN8^Kw +zll%IIGFGP#D~+AKxz^bmjcX&uyM+7_iz)8U;nn-=CO}(%Mrd+u_P&s_N5eJ5xIAsm +zo{qzd-sBn1*VZFX_-^T|`?Y__d`HHuUO)Der}q&JursM>{OwNuPD+A??eTgTH +zpRnQ4+GF27Z8$jgJx1$sL6hr#y|+WF>x7wc6Yd1jl50YyId)%}{&MCWPf%(^-Iwu?{TpEa7X76Uns<Di@H<+Xu_?tY4Z;K23?=AJO^d1=YJ2TXY&k&-2I)lOMf%#}oUTuxe +z=>an1WgsE%^NC~dPWAL%Av^5PsW5q?PNegP%HNxQ4*n)__H^G72Gb{G1Bm1LzKaK* +z-|eIFd-_57{V44o7Jh3jke~OC#qWlL@EaJ1%~=f59LvWJ?BoP}oVnn0SbfHXZOq2<;KtnOH%s;=*A&Ear&mV$ +z@jsay*|(%GqCS?|put%0Bc0A{$xI_wWap&&--KF5Y}?x(KhO2^F3rO>Civ^;UMin= +zbpLmUi?uKM-Z?QJ@?WTT_~*Djn^RXX8o_>=kF`lh){4!aY;`&t0 +zoZZQ!=VKykc1 +zakE~px8#kOe#GSJ1$Q1L)>}WpF1nu%}wYdZNG<$g>-#XsN_X6~gF-7#wwUqUkUkkpP +z$LvX0+I;Fh`o?#WuPtwRbIEB=V*4UXC&|M +zDB=C!c)Um6%(p|nSbJ3&%Rx4hy;xRQ6EC}}vKMw1uiK)Y_WST%YgT{nig%x_??MLW +zfx^6arXO#1ARo>z^5gkshe2*$6c1Y8z1jTr$FZwP9|D|WU(fj`edJkuE#aG}{%G>H +z3f^xM@7-RvVfqrcg`Lfg61Nll9KT24>3J}pX4+w(!EPtp#~wMlb54AM0(;m&G>FUHM2;_zvh}A>;TjTRc6NBID4rcN80B^aS2S>G{MY +zaNL2cy#ZVF^U(8v??1L{WdBFENjh^!JTtzbJJ#1Z6YuNYzv{luq^}E0d3`~_{>~}b +z-?*Pn?&Mp*(@K-0(QMIZn)tgMH%!NYs{!+%y^Z# +z#6ic4S4QIWTH5u+k5{Z46rHldVM{b##kvj-DaJkFQO1~2gwHF5F{~bZ{&gbwwA7BE +z(O1Do?dQkwv!AAnWJ%>hH=m632c6gaX+AM=?^}0~r}Lu8OZqpx_^*d+E^h0X8n5nu +z`>W9z2)0Iqxc*^TJEA@!hhwf=(V7F+bE^Ma9WQI#v&rZ$aO`eVdpn@-8?duBb~nEJ +z>{wsp^P-qWz;yIl=SR;P}xJQ?|0 +zRri%yjNR*(rz$J-Zuz`_(Qo)wdS4|^o@}kzAMCD;Efe%v<{yTBf6dt%;Zf?J43Ssr +zpX?F7^f|jmdx}_h<#=qgnBaK7opPlxyx)^$zT4~h0L=&8{8Ht6osQ*o7L=8V*2rh$ +zc{RLna;Wk?-uI2TJo^Dg`mdi4-5Pqs$?bvqs;|TR$@1HxIZQUG=i+@^!7pxi@*!Fn +zJ>aM6=B!LKw>g*(_LpjR#~YJn?=xr)qV^ZiesbSo1^W)IPs9R@hc3oodP><+IZ%Fv +z{8Cv^eg*jkt3)0Q7Vz!e`nh&(O3*IWoh1pMe#_zY>6;G&En~ZIFdINWeib(0Er+3x +zzcx0&bb1UOb$f42o}7+;n|+G0-Dq)kqeNfZ6Ef%J+uQiVp|Afe9DZ5)+T!$;zQ+1< +znDkY2?M~9F3ma52N8YBs;$QgqUld2g27;IKp`*R0e(VHh@|}-6s;yju`Vz$u3*VL~ +zKgwQJ7cY(XswQQi&FxjSbrFKQbac2G@>ND{#(3L$Zt9$?_`}uxjLUwnKi}|Y?W@F& +zo6Pufz!JlF!c)g>_n*^79tP-zK-u*5l@7!uL&m2orLX +zl8hM6(LB1{;rvriOB)l4+qUxZ-B{P0g!jL`j(vxWVo!tacSeM-;mjC2(eHQqo!d96 +zt9~u9bU?ab^3=$>9PaIR_VitiH4nB+<2eB +z6&WeSgcEqh@`>M(uZ+&0iQ=FW|IVp;hErvPQ;z;Y}x7Fj&DRkqj +z=$2&;lPCVGbuCT!*1Fesy>{;P-S?Xg4(04wI`-Yy{CfMtH@CI^W2e3S>GtbVk#~&` +zxjJX}@$ZY|GZ{NMi@A4Fr+D{eWWww#^YXm6uRE^m=bMSex_jL>X3ecNpH68$ooJIY +z30M7lVm~MNnQlnlnj9THt?qZU5}XWe_jWn^(WP~L{v_wBuW?7<4p7(}xnsz30W<>4QONG}+T;K=mA|k#bKj0k8RD#xV +zo|iL?v#$O4I}3TW3I9VY}qJsY)-s|$i!Qpo1^ +zcf5u7*&z59AD(L88U(9J|9DCee0Nb0>?2J&mGVloUrV}$w3Xz4Z+8e@Q~kr?@SA(| +z9m<|vY|*{@d^kL*hy676t{2)W<`@62Zpj`<_Nfl?2frxh3@jZ=#Kc+Aq(teVXJ2^G3q(^v_aOH1Bfyo2R_ac{1G*pFHo#&j4HH +zwRg?>b}rw}$mh4}qichcrE27meEFW<{&YK>RX(6E8kc<;>6&lXe>*QfF8V!T4_i1{ +zo3!ye;Ofg8418B>2U#Y6V2JkZ`JRHD<;ja>9UMeYUzgv`*k<@p#^Dm5CB|OV`zbe| +z`jKAIhTS`VWwd^II9z>yo&}ETSsxs|l6|VBPwYo`@6{IZCtr^K8Lpn53H=crL?hE5 +z^{b(zEaL*aG`k(cr;NdO{8C*d?Ss@c+G9BS{!YKo{}TWEJlL6pEZI0Y2N>}l%u@NK +ze3O?c{2=24SKD6<{(gV4^{4bb&vod8$u;-dn_7%>VqfHFdWHX`v95L;+ +zE8_Q{8%rcF(AD-)W?kM+@=PuhvV}ZtvpmliFRO{Q+%L1|cNy~WGJ8H_y|6a<%^7H- +zc^@)rI+Bv^h|lCnw$7nmOskST1aZ62Dw~RAq?ld_9yg}gM>>gpr0zGWyH48o2xlRS +zUjN2#_=IEZ#no^6#Pq^;8C?={nr_c)(TlO?%Zz1_9*vZnGbA^q<&bq^q9(ss-se&z +zt%H2zImTP~slCGbou@|{uj~Jm%aiP}pWS}Lhqlab^fKDyd^!KU+J`6|Gl`q?voe}LPF6dF>H+@R?JEI%I|GneTmm#d6OUOwc +z8Hwgr?DI_60opd*gHL7~hbYH>Hj|Ya_DdG?J)tKhd>1{g90#920DjDG@V9&T3Vot= +zjh^3%o3;JJKc<3$=DraX9?x0&EF +zpgki)lx021`n{ChQ^OgQ=yHhU4Es%=Mozt`>~qeB?!l`&zcL57>hIX)z1Ow +zlhKWKy^WJRnC?2;m++fZ#_Wu69(fkQ$T38}<@XMcA8mQwnCv)zw%5_f+b|Yr6@JT) +z^}onYdDbaW@pFzLZUAFG-=bFe9T^!#d +zob~-xII*6=#xmry-TNTwlY4*P>bsvK#*6GR-aUYi<@#siDRm77W%p2LInR{cdmm$I +zZpt&C&>5!ICi9n~@_hHvdh1nIzH)C-S>`h)x8SdJc?N&kLEtY-&=K9p`>}#Hl5-2} +ziJbu=o|(UMY{8E{aCE`nF`VZ`IGddr;SVP4Nr~S0^MF3}y|HyiF~(ST;F*o78sj-SRy4Fp?o`Oh>}T40^jMdASxl4v)2_ +z$mET(_xe~BHX`f$tFr4`%?{?MV}2txQ+p&s_#oSBGKj4dJa;eOZy;>Q@tvb)pYf-w +zdEfrq6Ta>aotbh>-~O(2PgduIPN5x*%anhJ?*k9>z2XtpT7J4~=Du&86Ab^)S;6pu +zn;iU`fbGs)==OM$XWx}S9X#vTtQsyVE1OQ;SFz~_S{;m5VnD33u>LS^g?>KIcZ?z4 +zg`FMtdpo_r%di$Go8nAA;6Rs7gR3%v3p}ljwX@k%(BKNjK4K5~t6e+9Qz&Qaa(o+# +z!Nj=Ij+e1^#~;a#wc+am>wne871UE+$@dz;Q@e2;=Ld$){)EJ}@?Qv+WW}$?gC(rr +z>)hUT)xKrW8(HmX!l%hEVoYY78!Lb49Lh@XDDwp0Bj`&MyKQ#uHYadP&{ONtCe&BT +z89jk#^i*G!r@jKO*UK(>zOUAw3!(QYa*_46_d;OkcTKHa0hbJP&+DDw>z&=hr^gFz +zA>UJVj?Mpb-vILoS^6LG!`FGbU`L~GfW@{!{4p7*9tr!ef&Ij%XK%K?l=g#uH~H8G +zZTHPhJ)7-p-@J!=tr6djY-&xo;t0xHF8RD_!RAuA|L!<)-yM&^1-bX~7|ScNK6F<7 +z@OE@#FZXKG+6SMD$}6|shi=4sZ_y9GM!i%|c7ccJBb(vd==SsI=Bb0 +z0dYBO8hz{J4D`-AM^|4zt~(!j_40?0D;d}W|Fthb=VR%6cDOVb!4Yi6igC-(mVWyp +zJUX&RvO|&)FR$v4&i@rnb^iR&dC+(TebhN!=Rn_c;DNI@`h5;PoBr}nzE8f9y$qts +zyk}QE-QyuyGu;Gs9zFg=>8^f5BS~M`5aHK{ +zoylQm_CW9DufOkk#XMwhlKHs|zd=-vjzL$S5AXKgt8?zAeEAbTPcU5BPSN#8tnrTI +zFp|-{vjyHKDB_Lt4Psr=Zzn8*SDj9OF3?_~aJ$;df^R6C57-rS2L{Vo?Jh$|MqwF9oXT{wCyVX%_q*zyg$!;ct~?%epfNeZ+h## +zNpMrdh(5<}di(eM&UcpI_>SM-$@_uCdw%yj%Wr_0{CYkK(YaNyMBsx{vq +z##Y^*{Jp0q)6FmVZ%)bhhwWv1JfZ*8wcj6~yp^-4qWx1QoT&SN4{rw$y+02H-Q7yI=2iF_x$u#m?uFf2PqnF&BdWMR6yMJ&Y~6+!X^A +zoW-a6Y|n+m_&v{L;hCM)s65`w7s|pvo731cXOVuUWG+r!gO@?)sJA?ajCU-E=KS1; +zob5-PalqPfFbrmd$3Rr)ifH^}uT_Lk<*;};T8t=p9_P#WKBB>=_&s#Rmyll@JDQvy +zX8Ix=*jFVS=!fZ04qUfWPq;3}U&t<7uz9qy`E+)H@<%H#{7l|}nPGey!te3z$G#qY +zm-aV~ +zMOz!hqLXa^Pi>eCGzQVx+@sK;0edZ7xIkyYs!jV1_v)TZs;P4qx>8o&)LHM|Jcve#FcT$!&4-|bt9WRbmT +z_xm!zRgq0nzVcFa3wyre^wys5T-Y<{p8qR_?e^`yAG%KodN}j3CuCo${BVPLZ%ICK +zrFf2X#>N7C508tL9{@+i&nFk=N-8gSqOIn}7V~pwwEKL^V=f!ReSrF|k8zx{y3m&T +z_i(xy`dtV8uIv8_-wM +z9!hHC-M}mQ%~a=`>D^txP`UlLCt`83vEs$CfB0Pfj=z7EF=@DHOxpqvUQF0c$*TM9 +zUQbu?#gB72{1#&P%tfgOox5H82WoT!Gz?^BM0e<{3hls@bQZ}m^K +z<$SQh_kmILG?GEZw@$KkULp1idfMF5-syP;el+mp?=$B#eXeXY2skC-DmNW)X#sG{DQyx=4N~g>Gv{lu-{Tl@Qn6sjB9soNI&&m +zVmI_#?({St(QT +zYC~(17So2+6O3wTO1WsS;$w9|K4bxkT-pY*;BpM<}tYr&JSQtWqHui +z&22WT{rgP5DkAyf+n?cpKcTwRJDYl|ihhfmIz=)`9qG38vWUmjxAW%`dar&Qgl5>Xa?cP+$I1DNX;YEV8Xe(}b)KzUt17qsEAV +z9LKIBThBPoZ+u9GH6MV6?c&9j%XFizto!uR&XLl0+ +z-*r0Qp%*buU4q;a*N`uWy&SfCd^(#?D}Vp*pyv@@y}4+-knUKyPW;D9qBAd+gU=pd +znY>)#V2<)WBUxjP%XwLq7T;GJqm(l^D}bZ2YG3|?w|S?-qZI|aEWai1^1OX9eZ((P +z+{Jz~kuxXJgJ;yoA@mUZfeQ|28Lr$%bDKfWE6P(h@{PI5H@0~V_gU`!ye5J}UBOX% +zz_z$Sig=!WCz19)(ac5#ATpCpq +zk_Fx`LnnA|u+#KeaM+|TwFm6c +zY!g0_**eX^)wcSh`S*bxsS&@6rTELkjWzwdrv(H0T^o(Jy^YPBp@9y#_|zkeOZvU! +z7Jf&5H?~M+BBNg=_)x}tn8bX;+Lb?`@w9TQ +zbn9!Sp4|pCHdTVQ(G>&>0HW#E1%oW$a-~0wQUuT>b-pap&{Gzx_BXd6N +zv%%H4{;P<&JYD!!YU94fB_Hb&PUFOPrfCfKcx!wGR)b3T?2HA=TO|| +zto{0dRq#Le62F~;&l=HCa~*ua1b*@S3K|Uh`8RztJLBo4eq*B!sh@sL+@aQ`UvW$( +z*)Q6kXg}IrKiGm4t!JXY_T2+NE#}{`%=!41g$+SIkP-D+-vjCMX3bF|yKS_z`5|Qs +zGRGW*xyP=P(T9_fQN?cNyZa3AE&!hLeOyQL68~II+1ZKbD#|ZPl%L7-$*e5^r(}Ew +zn_@AzZf^q?0l$HMDJH|WVPZ0!rZb7yi@q!6=fgY7N+$MjUEX&;-|V+@K2Q|1$qNqi +zeB<|gr<3!c#p|KPX$IZd?^aH9oKJi5cjtn$V3YRDjpoNW{nn|U3u>GqE}@vh(8<7) +zo?)Z0Wl_wIJbN$QR9X7#@lV3c5?9L41;zyh7@oiO4K+cB(zRI!WbagWk*oWegpWHL +z+<6C0qHi}Z(I?6q4(bsPW +zD1Kyfwcr)ms;r-nsXqBhT8#-SiYaaLF(rpn%%eXPUqv@JE_izUt{=}tZ`ph3Z*>zi +zf_G6|7CnpgJ(3wK|GHo&%2yy;%iOwyOkJ*W8FFUwgzW91p61O9{%L`g$uV{py+0Yb +z;0!@qx8T++7~YBjdVc$UV1Jta&;16hlMOEq)=y~Z_f049Q-36jRu+E7W&K=DeKEO( +z&(LHD84tzl8f1f5+GuiR>+2)~HCrPYK(57mKmO!BPtiS-Rmv$oWb&WN?Dcux_Kzwf +z!1LvNY$@)8ct@YU0xx13IDY;ec?Y_jU)!Z`K;^`LQaXG22jLX@iY?N*$(^jV*hL@t +z{k~!1(w!CyXDl>$mGs5glP2Gn8v2N>-orb1x<2<(6t6RzNPYRJL!ajRIcLVjFr>G@ +zv^8au9c=6jYmO8F2YClTlj#-H=&VYY)P8HyP~xQFY?V~|LsfrVp_@{Mkd+c +zP}t9aY-aE^@`9bpED&syU#Sm~`U1`Jj%H0&QJHpE#&8jh-~%#WCEtp*!k1>T +zrO7cR$){ew<_Gu|cUOI6RQ2`y)gC8}i$-T~8;a<%O7VR76WR61r;YfZ;OkWyi>W(g +zJZCJRPP?lknZr-C*y7N%tp%SJJ1f2~P+i~}O{?+qz09gD^G74Uu*u^v8Z7!DSfUMe +zhO;kS-l=|MUz*YB_KOUJIb=~hb9A+GyIi?lGddN|w7emgH#EcG38qiRGw^c0c7*dd +zywZ9_^=-)bN_#*y1H)#Htu%IPV8{sp3|}u>Aw9u+x%DGirMEB +zI+?R?PKQC}lCq^eTxKt!XVVNP8&0;=-rR+|Z#M3xHjpODFRC##2w!};Lgbj{i?>IbsxaWDI? +z%RA4atl+DBMlpLAhd3WuIhA*8t2g?1`OcQ&gp9}V{^#<}xe0iRKO|wE$UFAl7ifwu +z#C5-SdFS**-OR!QF1vv3NfAia*Tw^tEtTx+i$4V_#gZt9ZTJE^Pm9*?qO` +zzDZ)oB3Z+h%AN`q@3A$++$b-)>e*~9-&gdz4Lgx__K7g&CBCJUww2}^68lv6UT$mb +ze0%NA9tv)uSnbue+}!e> +zmPM;u*50(}l3O=ja^uBqYu0V(T)JVyx(#|81eaWXS?wk7ti5>Y#g|-q)o;|!+sGm_ +z{WY$;b@j^Hwd*$3u3p!&vbJ?~%f^kh0(Odkol**{&Q%MRMb(4Wb!#`?x~6TVdko&~ +zZf@*Y+p)2|ke|J%fZ>Ww8#>nBbk4HeMQhtOEn2g(`OHN(+`9Irwzfq#ukBd$u9i(5 +z?`dmXx3X>N=GL}bHg&99%VcIv%c{b25#AfxHnwf5{oUq`n>Mtytnqjh`gP-mwzl~7 +zZ`8U1?`-K<-L|rJ)4JN$mes4*wbrg}yDct7nZ>7^b_&1GoS+XKN;Gr%+Er`U-L^Ka +zQoEsT)2$oU*0zFo(6RPCEvq|L)~@W>xT$4rYa7k1tG%&hL+uSMt*b`9EvmD+V^iCP +zmeq?^x2?TtQ@e-Px^BaUw$@Fx?QJb9+cwm;wzmQ3R)<6Dx;3{zg^f_Ec1_!+_H`@c +zHg4-!yK>!awHrHrw=FL2VBEO6<))3b&@S*mH?-ES>DaiYWm9W=4B!T6v#NGe=PiX^ +zZQQhO1Eh=IL}+dd)WbC`YddQl-s?6LdcU!A%?;~TZ;WB8zph+_fT!0DP}tSq&~{5( +z%ckNg3l|E%jmS=I+uD^2*WI|#aEJ>Pldc%FXNAx81YOy(sl}1AW3A8hv^OfRZKJa* +zJ6a`(EgL$6NX~>oa3eBQ+h$7UbM3)^M)@76$Bj33w05+u-2`)_mB9__g^n +z0M>ijHi(PJUG2&?7__OacJV2v*EX)ZrE^2aP3@a%7cW_I=EBoXJ?-?`n*hxAj+#dYg^W?ti8Bp!>Zbbm8*g7B>1?1AFBXf7)%Z_!BIg)P##nUlY*mzbTB0- +z3yvXRcx-SzC)5PtZ;_5;Inc&n>f{>kZy}u;1eqs;<0hl`;q|0io*&|>@>@yuJn!T^ +z{#SSru|A5folEa7FO>A{Tf +zW$K^I{U#FUEMx|$&#^fnMkahS&%In#{%+Dcc+OK_@U9_YpEG|LOrN}h`}dOG&hx+1 +zANCf9t4Y}TOh4D7Ngp6x#PdGtv(F&Blr)w0KTZ2{xyN*dr}6$DX`iEe!W&4evCjMn +zSJtnEcahHL`CHV7fFZUooW=9~wBN`*F^BLsc>XuqCng`>Oj^M6UvU*Z?;|be`G?eJ +z4Ry#_G2!t+JzbeLnOJrB9@5)*{}tLNUKid-dJE5g##QwGJ<>aQ{x0>2Cx_ROPU88G +zXup+v_7jJ{$@4d8e>V5XRd@=|f5-J0((jYr#q&=c|MAP!dQGPC +zLFPXk{}~*@g*^WaSIN@{Nf-0{f7BQMB{S3L{|?9hjXcAL%s)H+i>7mV{!^|h-$iQV +z`P2?IXu7M_`iy0pDt|ZW9XtGw(R;(7l;^nVBNg>MU~j`E-8nj+mvYT)^0-V2|r +zNHclzm@A%)r`yB7Tz*YF(OIpVBYt$D%$I}0Qar|$i%sk3}maFLXe$rB&_flW{ +zzm_zI=TAERZ{hh|p8wPFe+|zIdH!3jQ%D~qUCi@Os4xDHrTXrj=I( +zv&&P*Rh5?qGs{zxW|TJsbIMco$Camp6UtL%)646E6U$SzQ_C~KtnyTNeEFS0J*Xd7 +zUPk>psXtToPpB%NtoldIC~r~y>yIm+r26UU<%?DS)T!lDRR8GX%b&9PwH<4{w}aa~ +z(%)HpdXZ~`?=lHL<|urc5U-{Jk7f#9OjR%~s19ZaHNo8A2>_aA)vTkV@T|N|mM3sY$7$Qeo=o)N!d3Qnjg5Q}wCqldY>w-Nt4RUkK%7Kf1&&1d$;{nl>Ake{2hIezbOa#JLV1k +z9s36V;9%9%sne!S=Whmo$Gg93_jf|c-^`M~SqJ%>eUQHs-{9YzH~44#FFy*tXEGHP +zm6c+rSSGfJw8y!>D)%?l{Y`U!qFeG$G)(?^ditxUtG||zcf?}}xko%6g#5D(M*gGG +z`VWvUB7KGQR??r5R+GL1NU%(k#*^Nbe^72kAFRe?$6R(*Kc; +zBK;oeouq#zy@m9rq#H@!CLK@u1Jdu1ULd`V^w*^KkbXouhV=WScai>;bPDOuNoz^} +zOFD`4$E52>|4sT$(%+NbNBS8lMY@yJKzfQ)M|zmlLfS>DBK44doAfMcG3hbVdeSST +z4C!9dGSZhxIZ_{~gET~%N%}bHD$+}&C8PmTCux{ePI^CSDe0d`^GJ`9+DQLHnnC&) +z>2lK7NoSJ2NV=8uI%x{&gQSZ||Btkg^f}TR()UPnNS`8IOZqR;xuh?VwvhIdrqP3G +zsZ8)ut{>&Pg6j&d&vSjA>*-ui=lTV%U*Nit>qf4xaea+zCD%%>+qiDydLh>fx&8~+ +zf8lyE*OR$^mg{G^uHw3i>t3#Vxz6S~o9idJev<3eT(9Q(pIrZw>p5J{;rh2+|Ca0R +zTyN+46Rtnus&QvB*L%3$!}S8L7jS)=>(gB4bDhuiGh9Ez^(L-2as3Y0?{KZ=TFvzV +zt`Bg%g6kDrU*!5C*R!~u#r1Knk8{0^>up?r%=O1ykL7wS*AH?15Z6n%Uc&XOT))b7 +z5!Xdr|AOmZa9ziB9oO%3{XW+kt~FdA*c1q_atzNs~zLAibHik~E!k8R-nt +zCQ=#*U8F|R4$@rGr%A1(mq`Ha +zlpNwZ0lN!6r-{mHpWrZS$B37-|%g@n%y?uDcll8MI= +ze;&Sv>*0Ag|G%9xkFKKF^LTaNz9E4K0bvGtfN>1(g)I-+9>ewmBnZe7j0<3-xw*HK +zd&%9r3nY0_f`nmb5F&&{1jztuSPclAsNoO=C2A0as4Vdj7?6N~0eKi;e!s3?XM4=y +z4E{0yROkGv>r+)-%eT7v_OCd!aXt70Fm9YFZm1d>&K?^06S~2BFpQIdcHH2-9CY~o +z2lfy9hV8@K0=zJXg)}ucQ^HM;$jv2q`-KC?VwA)FW8aNFV_&h4*e~#vV7_649}N6k +zm}ABw!J@%ne+=#`#$v$|z@~tC!Lq^Dffa*QfEh>QHnBZy3){gqu>MFetTz^H3RpH+ +zF&K6@`(Y}8OR?{Gm@=PbQhG-zBK&ck!T;ssxp4O$9=Uod1PUtByoZ9FdrMghFPsnw +z?+~eP?duH$9eqU+5taYZ)XCvQvj?Vyq(C}CLZaaU>$l33n6m) +z)X`(mKpaGqz)I-)0L1mf=qGlswvq<@oB%o0P2PumNVrP%;PC1ndK-{Xe*b><(3`t| +zJ5g|1tsdB&W{Mrc+NL26-~R@Sf;sGQk?UQmr$WHT5zFfjS!>oK;T?E`%amM`g15(; +zvJwrarr#R6^LEl9%}9bM9M6F*gm!YN9R=?jJdAeqdA)BtIF)b8%OxcaB2B+N-k_;0 +zNUMapVt?ZOk84eGxn})NdQ(|$((jcOa-O7Y#s*H5H)=w`Ir!&f +zNPOTCp)U_uN!hrr@r=&^Jflu{#x;&-Tz7cJ=L4Qm4m{(t3D3CpVI^kkCkRHkFc!%a +z_zMNwGt*%FEeNg0Ay6u^9xIR!Q#X&74~019*XL}OU5_J?BqJXQyjG=-WpFN`61~0% +zHVOX06Z*@h(z$&n&OzdAIxnJg9-Ry5yqC`WI;ct)1%v`Z +z0il3UKqw#-5DEwdgaSeVp@2|8C?FIN3J3*+0zv_yfKWgvAQTV^2nB=!LII(GP(Uak +z6c7ps1%v`Z0il3UKqw#-5DEwdgaSeVp@2|8C?FIN3J3*+0zv_yfKWgvAQTV^2nB=! +zLII(GP~brdL_z^OSRPn2F#MnX#-UK8Eu4E8iEu_{u_0h}r7>2Up4~8AlA&JsaDdbw +zY%*95*ebC1z;=Tj0y_p)i50`4s;WzKS-lym)t*M=*8&Fl0~TuZ*`pyS7%vTXXil4-J!)dx6Cq{uSjNm&yJk&G40^pDUqG|5FwJda%^hxNudUbT +zv1)!l>*Uj51gwj~s?I44!iyLd&BCy7CWZ@hKyTR*@H02`H;n}pR{akXWaQn!@ajg$ +zHd~yIR5!DyID>w>n#?lwM&?NVfXAoV)MWj_MN$Aplfjlr%w%);K{k&~V@XcUof@!n +zNDlZ^wo-xtO@%R>Op*HbW)}ggpNB43J+5SjTVq$GOm+(r^HV^NI}oXu3jHWQB0*SL +z1C_I!30cz{jvNSuP*asoRlKda0Ci<}6PFyHiC5XSe83B>Sb_#CPB +z0NV_8Za;}a&n?BU=t~UCzA-iI!|Mw5VXmUEieoaA*<22{H;#Ry0^^6|3up1t3P^@( +zj$pX16vL7-S?#6j%ut(j&BEA@EUA-v)F!aEb9 +zug7yx@YZKounIy3v+43WoZ4`wCDqSrLSE2(er)3PCQRWq9}Q7qmAm|@?7I*vyAhtnM~2I$KGjD}4!Tn{O`Ym?sF_ei9cu|VrfFC^EKC1Lm)EJXKdbC> +z$zpSAzFs}qBH8M*!g;xD(^8x`CA}$%qIhHtdBo=qIllyfez +z(u{LHale+F3yDX!;`|A5>o%MZ6VLru&L@Z?+H?LpaZ(4)SBOiA|3Ta@lIJV12%5uk +zZPl4`N8+}`-H8Vi4>9;DUj7B*E5vEU-Fou;8N^eGbBW(0-b~EDXT;cUV*dRi#!86! +zca9i4Ld?Hw#Mo(K<2y!G#O(+2_HPpRAU1{a@#YgZM}{&J=zZu(WH3hWK|P5hiH8u! +z5|2j?V{8g>GO?Z5P3$GkBu*!W-yhZjx*GW>yn7gn14FJL{u^;YH0Cn)0T|}9KO!-9 +z4GejEXB}BLh$BbS^%^qFZx!kNiov}h0>=zwup<0`6dd!33mIqp{m1-pne+R^)iru? +zwu?BA*2_U+@1wl@H^fo&y!wGSiMWcmTOVHEJ>u#voST9`*!~pCZ%I6QJkM`OTyEza +zO>BFOb06ZIft-gB*YxF_K)juJGI2S)8{*+2E*s7HRpP8MoEH#B4d%R(xQd>)?-K_o +ze?ReaRNqnJSn7WTGR#+5Gz=P!UnoC+3$MS1xW^UFVes~V`h=e6+=jS_xGQnOMV>#1 +zcnZ9~<1v~zx`6W};tP0V!I5f|r~Dvs+-9CXi@1n*DRJaRo}W)#_1~QL5m!=w4ie{H +z=K0?dmtN(3iMSv2rv@4H`Iw$J7{~GFtmNf85SL%)+>N+^*2_TRDV=zJB5~1^T<@2V +zn=p1Oma|6rm6Y!$PKe_9(}>e4e=f0;_)TCa$qPf18yfMBMtq6EP_&u%PKYZR~fxQZr4K@?(b+B1rIbgHF>X*S~HUlgh?0#ho$JKACF4bs>QjD?JLl`@e?*AFUy+DI#q*PF+p0(HM$OldZ8V%e?MGw}f +zF%f{fx<*Q!k7=aTdYVSUeYAnyA8>MO3vgdo)qS%%ZwF!658FdS8KAaN9Kt#8Wjl_5q%+ +zJdS&FytGf72HP9Zkl$)?QzLq%ym?ZRFXI?jhKi+eGsI9U#^b}yF_`&UrDC8Nz=mn~ +znAa0YWmQ)-#+huv#v3JS>5W%djO~5}ZF)i2hDGU}yvIZ~PEf#SQJq|W4z~J`Oj#f> +z4FubvA0m(w0lN;r0Uj7sYS0I5c|a(Aiwk#v^`>DG{csl=Z8t=yn`gT$X|ys;l+$8Peasr7i$e^@HVaVVz80PWcXvu4>kb| +zkB&?_(IZl3;T#_n-mBea_xRJhyJ1MvwC={8*4^TB#rQpJ;^l4SPjnq8RW6H}_UocO +zhyV2Kc#CJ(@K-jOUTZh+z2X&HW)$q4;Q8!gO0ja{$dNR8+ywKztir6!+24P(V8py` +zn-=u?>D`wv+)!SP>l%OIKwtac26f9@^~9Ka^G|)Xqh)l4V_BOGmJg+_^UlP_N9>KL +z%sD+{?(N*I?;N<3I;q9QQ|;z$`*ZKe-hYh$^nB54v+@#VT^hOe)!Z(FZw>t|sq@`e +zKYZ)Jl%zG^ubq79`n%U+Dh@;)2^)F6_(boOXS-aP@b#?=PRG`*OFwRX`^A-q7UVJC +zyry3~dBgkcOcHHZEtsZ-0?CmWF=4>^m~6X^?Y(m +z&E)=_vVY!oufR5FVDCfz)QIldG<<$F74 +z-Rl3Eef^MI@k66NxZ3%~nO*M$PA+zJ&hBzOvunZ^{hK`>|6!+tol`&S)^`5QJ#t0* +zpfAQ06tL2e(4h3!+_aqMGKzX7?HJIewDbBIv!#MXyF)Wwzw|0y{m6c{aOT!C&7V5Z +zWaMw{Dy}W;x^LL{dxNd#-VS=^Pkgtzb +z;-{l*N$2)nI-FkKH}8?;=%l`Fsx};cY4;y8J2e?TbBXJdyu(HNmi|l9s!PlFy}jY3 +J0e6qH{{iO8w2c4& literal 0 HcmV?d00001 -- -2.44.0 +2.47.0 diff --git a/BungeeCord-Patches/0047-Speed-up-some-common-exceptions.patch b/BungeeCord-Patches/0047-Speed-up-some-common-exceptions.patch index 8e494c4..c70e7e3 100644 --- a/BungeeCord-Patches/0047-Speed-up-some-common-exceptions.patch +++ b/BungeeCord-Patches/0047-Speed-up-some-common-exceptions.patch @@ -1,4 +1,4 @@ -From 9abe9adf843bb142e7ff2d5888f49d89ed08367a Mon Sep 17 00:00:00 2001 +From 4ee0d7b23287f5d557f54cb1072fc3ab9f931182 Mon Sep 17 00:00:00 2001 From: Shane Freeder Date: Mon, 25 Nov 2019 19:54:06 +0000 Subject: [PATCH] Speed up some common exceptions @@ -172,10 +172,10 @@ index 237955ab..d0bd4d75 100644 + // Waterfall end } diff --git a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java -index fcd973e5..473edd76 100644 +index d6872035..a7241527 100644 --- a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java +++ b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java -@@ -21,6 +21,8 @@ import javax.crypto.SecretKey; +@@ -23,6 +23,8 @@ import javax.crypto.SecretKey; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; @@ -184,7 +184,7 @@ index fcd973e5..473edd76 100644 import lombok.Getter; import lombok.RequiredArgsConstructor; import lombok.ToString; -@@ -510,6 +512,14 @@ public class InitialHandler extends PacketHandler implements PendingConnection +@@ -518,6 +520,14 @@ public class InitialHandler extends PacketHandler implements PendingConnection Preconditions.checkState( EncryptionUtil.check( loginRequest.getPublicKey(), encryptResponse, request ), "Invalid verification" ); SecretKey sharedKey = EncryptionUtil.getSecret( encryptResponse, request ); @@ -221,5 +221,5 @@ index ac99d02c..0c1ecfb8 100644 // Waterfall start -- -2.44.0 +2.47.0 diff --git a/BungeeCord-Patches/0050-Allow-to-disable-tablist-rewrite.patch b/BungeeCord-Patches/0050-Allow-to-disable-tablist-rewrite.patch index 4f65af1..09ff0c4 100644 --- a/BungeeCord-Patches/0050-Allow-to-disable-tablist-rewrite.patch +++ b/BungeeCord-Patches/0050-Allow-to-disable-tablist-rewrite.patch @@ -1,4 +1,4 @@ -From 2ee860a1e91e6e08c061c0338dc60458afe618ca Mon Sep 17 00:00:00 2001 +From 10d6d10e393b7642c67a334d1da7279c8f8e9275 Mon Sep 17 00:00:00 2001 From: xDark Date: Fri, 31 May 2019 08:11:31 +0300 Subject: [PATCH] Allow to disable tablist rewrite @@ -50,10 +50,10 @@ index e860214f..b88e3c8a 100644 + } } diff --git a/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java b/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java -index 1a863dc0..d5405b90 100644 +index 7b9c9268..96655cb7 100644 --- a/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java +++ b/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java -@@ -174,8 +174,14 @@ public class DownstreamBridge extends PacketHandler +@@ -171,8 +171,14 @@ public class DownstreamBridge extends PacketHandler @Override public void handle(PlayerListItem playerList) throws Exception { @@ -71,5 +71,5 @@ index 1a863dc0..d5405b90 100644 @Override -- -2.44.0 +2.47.0 diff --git a/BungeeCord-Patches/0051-Remove-version-from-brand-info.patch b/BungeeCord-Patches/0051-Remove-version-from-brand-info.patch index 3605cc7..3df2c3a 100644 --- a/BungeeCord-Patches/0051-Remove-version-from-brand-info.patch +++ b/BungeeCord-Patches/0051-Remove-version-from-brand-info.patch @@ -1,14 +1,14 @@ -From c702bcf84aeca3cc1e1791ef19e081b8e2df64d0 Mon Sep 17 00:00:00 2001 +From 874f2333b281a17a07efe555d3799f50ce46acbb Mon Sep 17 00:00:00 2001 From: Shane Freeder Date: Sat, 20 Jun 2020 18:21:17 +0100 Subject: [PATCH] Remove version from brand info diff --git a/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java b/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java -index d5405b90..3bca89be 100644 +index 96655cb7..213c130f 100644 --- a/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java +++ b/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java -@@ -332,7 +332,7 @@ public class DownstreamBridge extends PacketHandler +@@ -329,7 +329,7 @@ public class DownstreamBridge extends PacketHandler Preconditions.checkState( !serverBrand.contains( bungee.getName() ), "Cannot connect proxy to itself!" ); brand = ByteBufAllocator.DEFAULT.heapBuffer(); @@ -18,5 +18,5 @@ index d5405b90..3bca89be 100644 brand.release(); // changes in the packet are ignored so we need to send it manually -- -2.44.0 +2.47.0 diff --git a/BungeeCord-Patches/0052-Add-auth-url-option.patch b/BungeeCord-Patches/0052-Add-auth-url-option.patch index 2f55816..93665af 100644 --- a/BungeeCord-Patches/0052-Add-auth-url-option.patch +++ b/BungeeCord-Patches/0052-Add-auth-url-option.patch @@ -1,14 +1,14 @@ -From 0e7f030c8314b7ca0176021eb3cb8dc85ac60832 Mon Sep 17 00:00:00 2001 +From af32bdf15c26fbc215936d4011604fd435b8e23b Mon Sep 17 00:00:00 2001 From: theminecoder Date: Sun, 19 Jul 2020 10:18:23 +1000 Subject: [PATCH] Add auth url option diff --git a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java -index 473edd76..d095e5f9 100644 +index a7241527..e3a1f744 100644 --- a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java +++ b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java -@@ -83,6 +83,8 @@ import net.md_5.bungee.util.QuietException; +@@ -87,6 +87,8 @@ import net.md_5.bungee.util.QuietException; public class InitialHandler extends PacketHandler implements PendingConnection { @@ -17,7 +17,7 @@ index 473edd76..d095e5f9 100644 private final BungeeCord bungee; private ChannelWrapper ch; @Getter -@@ -538,7 +540,7 @@ public class InitialHandler extends PacketHandler implements PendingConnection +@@ -548,7 +550,7 @@ public class InitialHandler extends PacketHandler implements PendingConnection String encodedHash = URLEncoder.encode( new BigInteger( sha.digest() ).toString( 16 ), "UTF-8" ); String preventProxy = ( BungeeCord.getInstance().config.isPreventProxyConnections() && getSocketAddress() instanceof InetSocketAddress ) ? "&ip=" + URLEncoder.encode( getAddress().getAddress().getHostAddress(), "UTF-8" ) : ""; @@ -27,5 +27,5 @@ index 473edd76..d095e5f9 100644 Callback handler = new Callback() { -- -2.44.0 +2.47.0 diff --git a/BungeeCord-Patches/0056-Configurable-plugin-messaging-limits.patch b/BungeeCord-Patches/0056-Configurable-plugin-messaging-limits.patch index f5c11bb..9abaf17 100644 --- a/BungeeCord-Patches/0056-Configurable-plugin-messaging-limits.patch +++ b/BungeeCord-Patches/0056-Configurable-plugin-messaging-limits.patch @@ -1,4 +1,4 @@ -From 6603022d84bbaf4302d6e65fe79282924cbe8679 Mon Sep 17 00:00:00 2001 +From cff6ef34d7eb83a4762d29e230b530e70616e1e1 Mon Sep 17 00:00:00 2001 From: FivePB Date: Tue, 16 Nov 2021 21:15:32 +0100 Subject: [PATCH] Configurable plugin messaging limits @@ -83,10 +83,10 @@ index b88e3c8a..da0efa36 100644 + } } diff --git a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java -index d095e5f9..864cb119 100644 +index e3a1f744..bbaf947f 100644 --- a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java +++ b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java -@@ -848,9 +848,10 @@ public class InitialHandler extends PacketHandler implements PendingConnection +@@ -865,9 +865,10 @@ public class InitialHandler extends PacketHandler implements PendingConnection for ( String id : content.split( "\0" ) ) { @@ -101,5 +101,5 @@ index d095e5f9..864cb119 100644 } } else if ( input.getTag().equals( "UNREGISTER" ) || input.getTag().equals( "minecraft:unregister" ) ) -- -2.44.0 +2.47.0 diff --git a/BungeeCord-Patches/0057-ServerConnectRequest-sendFeedback.patch b/BungeeCord-Patches/0057-ServerConnectRequest-sendFeedback.patch index d1f2d67..fb10e76 100644 --- a/BungeeCord-Patches/0057-ServerConnectRequest-sendFeedback.patch +++ b/BungeeCord-Patches/0057-ServerConnectRequest-sendFeedback.patch @@ -1,4 +1,4 @@ -From 63ef97642f82dd1c190d47cc6b58a42fada64c2d Mon Sep 17 00:00:00 2001 +From 8ad2dc138d2ee4a68720ce6b179dfb75f8d96c22 Mon Sep 17 00:00:00 2001 From: Shane Freeder Date: Fri, 16 Apr 2021 06:29:28 +0100 Subject: [PATCH] ServerConnectRequest#sendFeedback @@ -31,7 +31,7 @@ index c81b0a4e..d21370be 100644 } } diff --git a/proxy/src/main/java/net/md_5/bungee/UserConnection.java b/proxy/src/main/java/net/md_5/bungee/UserConnection.java -index ee527938..2813c16f 100644 +index a84f9b12..951fa17d 100644 --- a/proxy/src/main/java/net/md_5/bungee/UserConnection.java +++ b/proxy/src/main/java/net/md_5/bungee/UserConnection.java @@ -298,12 +298,16 @@ public final class UserConnection implements ProxiedPlayer @@ -53,7 +53,7 @@ index ee527938..2813c16f 100644 builder.connectTimeout(timeout); // Waterfall if ( callback != null ) { -@@ -351,7 +355,7 @@ public final class UserConnection implements ProxiedPlayer +@@ -352,7 +356,7 @@ public final class UserConnection implements ProxiedPlayer callback.done( ServerConnectRequest.Result.ALREADY_CONNECTED, null ); } @@ -62,7 +62,7 @@ index ee527938..2813c16f 100644 return; } if ( pendingConnects.contains( target ) ) -@@ -361,7 +365,7 @@ public final class UserConnection implements ProxiedPlayer +@@ -362,7 +366,7 @@ public final class UserConnection implements ProxiedPlayer callback.done( ServerConnectRequest.Result.ALREADY_CONNECTING, null ); } @@ -71,7 +71,7 @@ index ee527938..2813c16f 100644 return; } -@@ -397,14 +401,14 @@ public final class UserConnection implements ProxiedPlayer +@@ -398,14 +402,14 @@ public final class UserConnection implements ProxiedPlayer ServerInfo def = updateAndGetNextServer( target ); if ( request.isRetry() && def != null && ( getServer() == null || def != getServer().getInfo() ) ) { @@ -90,5 +90,5 @@ index ee527938..2813c16f 100644 } } -- -2.44.0 +2.47.0 diff --git a/BungeeCord-Patches/0058-Don-t-send-exceptions-to-the-client-during-kicks-etc.patch b/BungeeCord-Patches/0058-Don-t-send-exceptions-to-the-client-during-kicks-etc.patch index 06df9b3..f44cf41 100644 --- a/BungeeCord-Patches/0058-Don-t-send-exceptions-to-the-client-during-kicks-etc.patch +++ b/BungeeCord-Patches/0058-Don-t-send-exceptions-to-the-client-during-kicks-etc.patch @@ -1,4 +1,4 @@ -From 7cec69fe57fe38d7ce33e58023d690f9ade8219a Mon Sep 17 00:00:00 2001 +From 889fe24a64472d2f23786c4dcad5ed59aa5d6736 Mon Sep 17 00:00:00 2001 From: Shane Freeder Date: Tue, 22 Mar 2022 14:56:44 +0000 Subject: [PATCH] Don't send exceptions to the client during kicks, etc @@ -13,10 +13,10 @@ allows for retaining much of the overall context here, i.e. who was this exception assocated with? diff --git a/proxy/src/main/java/net/md_5/bungee/UserConnection.java b/proxy/src/main/java/net/md_5/bungee/UserConnection.java -index 2813c16f..f29a6f62 100644 +index 951fa17d..e98bf147 100644 --- a/proxy/src/main/java/net/md_5/bungee/UserConnection.java +++ b/proxy/src/main/java/net/md_5/bungee/UserConnection.java -@@ -429,7 +429,8 @@ public final class UserConnection implements ProxiedPlayer +@@ -430,7 +430,8 @@ public final class UserConnection implements ProxiedPlayer private String connectionFailMessage(Throwable cause) { @@ -27,5 +27,5 @@ index 2813c16f..f29a6f62 100644 @Override -- -2.44.0 +2.47.0 diff --git a/BungeeCord-Patches/0059-Improve-login-state-transition.patch b/BungeeCord-Patches/0059-Improve-login-state-transition.patch index a8f1df2..b68996b 100644 --- a/BungeeCord-Patches/0059-Improve-login-state-transition.patch +++ b/BungeeCord-Patches/0059-Improve-login-state-transition.patch @@ -1,14 +1,14 @@ -From 91ba8610d491e730d73485443773c8a24024a4d0 Mon Sep 17 00:00:00 2001 +From 9bc80c19893dd16e36b2e1fb67ceed4971a1a010 Mon Sep 17 00:00:00 2001 From: Shane Freeder Date: Sun, 8 May 2022 12:04:30 +0100 Subject: [PATCH] Improve login state transition diff --git a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java -index 864cb119..6344462c 100644 +index bbaf947f..37715ba9 100644 --- a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java +++ b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java -@@ -512,6 +512,7 @@ public class InitialHandler extends PacketHandler implements PendingConnection +@@ -520,6 +520,7 @@ public class InitialHandler extends PacketHandler implements PendingConnection { Preconditions.checkState( thisState == State.ENCRYPT, "Not expecting ENCRYPT" ); Preconditions.checkState( EncryptionUtil.check( loginRequest.getPublicKey(), encryptResponse, request ), "Invalid verification" ); @@ -16,7 +16,7 @@ index 864cb119..6344462c 100644 SecretKey sharedKey = EncryptionUtil.getSecret( encryptResponse, request ); // Waterfall start -@@ -566,7 +567,7 @@ public class InitialHandler extends PacketHandler implements PendingConnection +@@ -576,7 +577,7 @@ public class InitialHandler extends PacketHandler implements PendingConnection } } }; @@ -26,5 +26,5 @@ index 864cb119..6344462c 100644 } -- -2.44.0 +2.47.0 diff --git a/BungeeCord-Patches/0060-Add-protocol-version-to-packet-not-found-message.patch b/BungeeCord-Patches/0060-Add-protocol-version-to-packet-not-found-message.patch index 2c63b79..e2993b0 100644 --- a/BungeeCord-Patches/0060-Add-protocol-version-to-packet-not-found-message.patch +++ b/BungeeCord-Patches/0060-Add-protocol-version-to-packet-not-found-message.patch @@ -1,4 +1,4 @@ -From c4dec751225b67840a2d1092920fd487d2b4d165 Mon Sep 17 00:00:00 2001 +From 1f9e69b8ef64b3ecd7ac64ac61bef3486f6b9545 Mon Sep 17 00:00:00 2001 From: Shane Freeder Date: Sun, 12 Jun 2022 06:45:54 +0100 Subject: [PATCH] Add protocol version to packet not found message @@ -6,7 +6,7 @@ Subject: [PATCH] Add protocol version to packet not found message Also avoids a double get, but, this is probably trivial diff --git a/protocol/src/main/java/net/md_5/bungee/protocol/Protocol.java b/protocol/src/main/java/net/md_5/bungee/protocol/Protocol.java -index db50f379..b0473509 100644 +index 7a26c419..f84bfab8 100644 --- a/protocol/src/main/java/net/md_5/bungee/protocol/Protocol.java +++ b/protocol/src/main/java/net/md_5/bungee/protocol/Protocol.java @@ -2,6 +2,8 @@ package net.md_5.bungee.protocol; @@ -18,7 +18,7 @@ index db50f379..b0473509 100644 import gnu.trove.map.TIntObjectMap; import gnu.trove.map.TObjectIntMap; import gnu.trove.map.hash.TIntObjectHashMap; -@@ -965,9 +967,12 @@ public enum Protocol +@@ -998,9 +1000,12 @@ public enum Protocol { throw new BadPacketException( "Unsupported protocol version" ); } @@ -34,5 +34,5 @@ index db50f379..b0473509 100644 } } -- -2.45.1 +2.47.0 diff --git a/BungeeCord-Patches/0062-Add-message-for-outdated-clients-that-don-t-support-.patch b/BungeeCord-Patches/0062-Add-message-for-outdated-clients-that-don-t-support-.patch index cf84170..0f20ec6 100644 --- a/BungeeCord-Patches/0062-Add-message-for-outdated-clients-that-don-t-support-.patch +++ b/BungeeCord-Patches/0062-Add-message-for-outdated-clients-that-don-t-support-.patch @@ -1,4 +1,4 @@ -From 1c5029315edd50653076483bba5e7e406fe07848 Mon Sep 17 00:00:00 2001 +From 793b803787b1644c63d7505f2eb89b729a2e3606 Mon Sep 17 00:00:00 2001 From: Aurora Date: Mon, 18 Jul 2022 15:56:05 +0200 Subject: [PATCH] Add message for outdated clients that don't support secure @@ -8,10 +8,10 @@ Clients before 1.19 don't support secure profiles, but since secure profiles is things checked those outdated clients didn't get a useful message telling them to update. diff --git a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java -index 6344462c..d58caade 100644 +index 37715ba9..31a7e109 100644 --- a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java +++ b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java -@@ -435,6 +435,7 @@ public class InitialHandler extends PacketHandler implements PendingConnection +@@ -443,6 +443,7 @@ public class InitialHandler extends PacketHandler implements PendingConnection if ( BungeeCord.getInstance().config.isEnforceSecureProfile() && getVersion() < ProtocolConstants.MINECRAFT_1_19_3 ) { @@ -32,5 +32,5 @@ index 149c742f..8d5075f6 100644 error_occurred_player=\u00a7cAn error occurred while parsing your message. (Hover for details) error_occurred_console=\u00a7cAn error occurred while parsing your message: {0} -- -2.44.0 +2.47.0 diff --git a/BungeeCord-Patches/0063-Replace-reflection-inside-netty-with-ChannelFactory.patch b/BungeeCord-Patches/0063-Replace-reflection-inside-netty-with-ChannelFactory.patch index b6fa81a..f098010 100644 --- a/BungeeCord-Patches/0063-Replace-reflection-inside-netty-with-ChannelFactory.patch +++ b/BungeeCord-Patches/0063-Replace-reflection-inside-netty-with-ChannelFactory.patch @@ -1,4 +1,4 @@ -From 429d77cd283c12f043fb0da276a0a3856aa31ab2 Mon Sep 17 00:00:00 2001 +From 51c676a4225026c9553e4f4f1596dbd9574773c6 Mon Sep 17 00:00:00 2001 From: Janmm14 Date: Mon, 21 Jun 2021 23:43:39 +0200 Subject: [PATCH] Replace reflection inside netty with ChannelFactory. @@ -32,10 +32,10 @@ index 377df7ec..8f531f85 100644 .handler( PipelineUtils.BASE_SERVERSIDE ) .option( ChannelOption.CONNECT_TIMEOUT_MILLIS, BungeeCord.getInstance().getConfig().getRemotePingTimeout() ) diff --git a/proxy/src/main/java/net/md_5/bungee/UserConnection.java b/proxy/src/main/java/net/md_5/bungee/UserConnection.java -index f29a6f62..1d009633 100644 +index e98bf147..d6561c60 100644 --- a/proxy/src/main/java/net/md_5/bungee/UserConnection.java +++ b/proxy/src/main/java/net/md_5/bungee/UserConnection.java -@@ -414,7 +414,7 @@ public final class UserConnection implements ProxiedPlayer +@@ -415,7 +415,7 @@ public final class UserConnection implements ProxiedPlayer } }; Bootstrap b = new Bootstrap() @@ -69,7 +69,7 @@ index 37337429..c3683c30 100644 } // Waterfall End diff --git a/proxy/src/main/java/net/md_5/bungee/netty/PipelineUtils.java b/proxy/src/main/java/net/md_5/bungee/netty/PipelineUtils.java -index 3b157d79..52c308f7 100644 +index 75d2bd0e..37e37aaf 100644 --- a/proxy/src/main/java/net/md_5/bungee/netty/PipelineUtils.java +++ b/proxy/src/main/java/net/md_5/bungee/netty/PipelineUtils.java @@ -5,6 +5,7 @@ import io.github.waterfallmc.waterfall.event.ConnectionInitEvent; @@ -80,7 +80,7 @@ index 3b157d79..52c308f7 100644 import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelOption; import io.netty.channel.EventLoopGroup; -@@ -125,6 +126,12 @@ public class PipelineUtils +@@ -124,6 +125,12 @@ public class PipelineUtils private static boolean epoll; private static boolean io_uring; @@ -93,7 +93,7 @@ index 3b157d79..52c308f7 100644 static { -@@ -155,6 +162,12 @@ public class PipelineUtils +@@ -154,6 +161,12 @@ public class PipelineUtils } } } @@ -106,7 +106,7 @@ index 3b157d79..52c308f7 100644 } public static EventLoopGroup newEventLoopGroup(int threads, ThreadFactory factory) -@@ -186,6 +199,34 @@ public class PipelineUtils +@@ -185,6 +198,34 @@ public class PipelineUtils return io_uring ? IOUringSocketChannel.class : epoll ? EpollSocketChannel.class : NioSocketChannel.class; } @@ -142,5 +142,5 @@ index 3b157d79..52c308f7 100644 { return io_uring ? IOUringDatagramChannel.class : epoll ? EpollDatagramChannel.class : NioDatagramChannel.class; -- -2.44.0 +2.47.0 diff --git a/BungeeCord-Patches/0064-reduce-log-spam-from-clients-registeirng-too-many-ch.patch b/BungeeCord-Patches/0064-reduce-log-spam-from-clients-registeirng-too-many-ch.patch index 779b718..93fa41c 100644 --- a/BungeeCord-Patches/0064-reduce-log-spam-from-clients-registeirng-too-many-ch.patch +++ b/BungeeCord-Patches/0064-reduce-log-spam-from-clients-registeirng-too-many-ch.patch @@ -1,14 +1,14 @@ -From 52469c9e7dbe741742c9504d69ccfc7e3e90a4f5 Mon Sep 17 00:00:00 2001 +From 1c5154b28e2e752d104ad4bf9a02043d0b8c22ee Mon Sep 17 00:00:00 2001 From: Shane Freeder Date: Fri, 21 Apr 2023 15:32:33 +0100 Subject: [PATCH] reduce log spam from clients registeirng too many channels diff --git a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java -index d58caade..f28576f6 100644 +index 31a7e109..185e63ad 100644 --- a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java +++ b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java -@@ -188,7 +188,17 @@ public class InitialHandler extends PacketHandler implements PendingConnection +@@ -194,7 +194,17 @@ public class InitialHandler extends PacketHandler implements PendingConnection @Override public void handle(PluginMessage pluginMessage) throws Exception { @@ -28,5 +28,5 @@ index d58caade..f28576f6 100644 @Override -- -2.44.0 +2.47.0 diff --git a/BungeeCord-Patches/0065-Prevent-proxy-commands-from-breaking-the-chat-chain-.patch b/BungeeCord-Patches/0065-Prevent-proxy-commands-from-breaking-the-chat-chain-.patch index 095e5ed..823e2d6 100644 --- a/BungeeCord-Patches/0065-Prevent-proxy-commands-from-breaking-the-chat-chain-.patch +++ b/BungeeCord-Patches/0065-Prevent-proxy-commands-from-breaking-the-chat-chain-.patch @@ -1,4 +1,4 @@ -From 0952d57b25738151a17baef23d393ed7f4356861 Mon Sep 17 00:00:00 2001 +From b160d8c6f7d3026d15fb27b472e2b49cf3393eca Mon Sep 17 00:00:00 2001 From: Shane Freeder Date: Sun, 15 Oct 2023 00:36:38 +0100 Subject: [PATCH] Prevent proxy commands from breaking the chat chain system @@ -19,12 +19,12 @@ index e2221010..4dde7257 100644 // Waterfall end } diff --git a/protocol/src/main/java/net/md_5/bungee/protocol/Protocol.java b/protocol/src/main/java/net/md_5/bungee/protocol/Protocol.java -index b0473509..f25d3fab 100644 +index f84bfab8..fb239f75 100644 --- a/protocol/src/main/java/net/md_5/bungee/protocol/Protocol.java +++ b/protocol/src/main/java/net/md_5/bungee/protocol/Protocol.java -@@ -558,6 +558,13 @@ public enum Protocol - map( ProtocolConstants.MINECRAFT_1_19_1, 0x05 ), - map( ProtocolConstants.MINECRAFT_1_20_5, 0x06 ) +@@ -586,6 +586,13 @@ public enum Protocol + map( ProtocolConstants.MINECRAFT_1_20_5, 0x06 ), + map( ProtocolConstants.MINECRAFT_1_21_2, 0x07 ) ); + // Waterfall start + TO_SERVER.registerPacket( @@ -76,7 +76,7 @@ index 00000000..08ecf2a3 + } +} diff --git a/protocol/src/main/java/net/md_5/bungee/protocol/packet/ClientCommand.java b/protocol/src/main/java/net/md_5/bungee/protocol/packet/ClientCommand.java -index 887ff29f..d4700090 100644 +index 33c838f9..f259ee91 100644 --- a/protocol/src/main/java/net/md_5/bungee/protocol/packet/ClientCommand.java +++ b/protocol/src/main/java/net/md_5/bungee/protocol/packet/ClientCommand.java @@ -108,4 +108,9 @@ public class ClientCommand extends DefinedPacket @@ -90,10 +90,10 @@ index 887ff29f..d4700090 100644 + } } diff --git a/proxy/src/main/java/net/md_5/bungee/connection/UpstreamBridge.java b/proxy/src/main/java/net/md_5/bungee/connection/UpstreamBridge.java -index 2dafa4d9..b482fe2e 100644 +index 0a020ffc..d509ce7e 100644 --- a/proxy/src/main/java/net/md_5/bungee/connection/UpstreamBridge.java +++ b/proxy/src/main/java/net/md_5/bungee/connection/UpstreamBridge.java -@@ -196,16 +196,22 @@ public class UpstreamBridge extends PacketHandler +@@ -197,16 +197,22 @@ public class UpstreamBridge extends PacketHandler @Override public void handle(ClientCommand command) throws Exception { @@ -118,7 +118,7 @@ index 2dafa4d9..b482fe2e 100644 { for ( int index = 0, length = message.length(); index < length; index++ ) { -@@ -224,7 +230,13 @@ public class UpstreamBridge extends PacketHandler +@@ -225,7 +231,13 @@ public class UpstreamBridge extends PacketHandler if ( !chatEvent.isCommand() || !bungee.getPluginManager().dispatchCommand( con, message.substring( 1 ) ) ) { return message; @@ -133,5 +133,5 @@ index 2dafa4d9..b482fe2e 100644 throw CancelSendSignal.INSTANCE; } -- -2.45.1 +2.47.0