From 7e187bbdd411783c889b9a7123f29ef2598acedc Mon Sep 17 00:00:00 2001 From: ProxySU Date: Wed, 30 Sep 2020 09:39:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0VLESS=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=EF=BC=8C=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ProxySU/MainWindow.xaml | 42 +- ProxySU/MainWindow.xaml.cs | 488 ++++++----- ProxySU/Properties/AssemblyInfo.cs | 4 +- ProxySU/ResultClientInformation.xaml | 75 +- ProxySU/ResultClientInformation.xaml.cs | 469 +++++++---- ProxySU/SSpluginWindow.xaml.cs | 24 +- ProxySU/Translations/ProxySU.en-US.xaml | 19 +- ProxySU/Translations/ProxySU.zh-CN.xaml | 21 +- ProxySU/Translations/ProxySU.zh-TW.xaml | 17 +- ProxySU/V2RayTemplateWindow.xaml | 66 +- ProxySU/V2RayTemplateWindow.xaml.cs | 784 ++++++++++++------ ProxySU/bin/Beta/Beta.zip | Bin 566037 -> 572772 bytes .../vless_http2_tls_server_config.json | 32 + ...=> vless_tcp_tls_caddy_cilent_config.json} | 0 .../vless_tcp_xtls_client_config.json | 29 + .../vless_ws_tls_client_config.json | 32 + .../vless_http2_tls_server_config.json | 27 + ....json => vless_tcp_tls_server_config.json} | 0 .../vless_tcp_xtls_server_config.json | 37 + .../vless_ws_tls_server_config.json | 24 + 20 files changed, 1462 insertions(+), 728 deletions(-) create mode 100644 TemplateConfg/v2ray/client/06_outbounds/vless_http2_tls_server_config.json rename TemplateConfg/v2ray/client/06_outbounds/{tcp_vless_tls_caddy_cilent_config.json => vless_tcp_tls_caddy_cilent_config.json} (100%) create mode 100644 TemplateConfg/v2ray/client/06_outbounds/vless_tcp_xtls_client_config.json create mode 100644 TemplateConfg/v2ray/client/06_outbounds/vless_ws_tls_client_config.json create mode 100644 TemplateConfg/v2ray/server/05_inbounds/vless_http2_tls_server_config.json rename TemplateConfg/v2ray/server/05_inbounds/{tcp_vless_tls_caddy_server_config.json => vless_tcp_tls_server_config.json} (100%) create mode 100644 TemplateConfg/v2ray/server/05_inbounds/vless_tcp_xtls_server_config.json create mode 100644 TemplateConfg/v2ray/server/05_inbounds/vless_ws_tls_server_config.json diff --git a/ProxySU/MainWindow.xaml b/ProxySU/MainWindow.xaml index d762a5d..c32ebd4 100644 --- a/ProxySU/MainWindow.xaml +++ b/ProxySU/MainWindow.xaml @@ -5,7 +5,7 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:ProxySU" mc:Ignorable="d" - Title="ProxySU - v2.2.3" Height="675" Width="620"> + Title="ProxySU - v2.3.0" Height="675" Width="620"> @@ -204,19 +204,34 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -574,6 +589,7 @@ + diff --git a/ProxySU/MainWindow.xaml.cs b/ProxySU/MainWindow.xaml.cs index 2fc123a..c7a1cbb 100644 --- a/ProxySU/MainWindow.xaml.cs +++ b/ProxySU/MainWindow.xaml.cs @@ -45,10 +45,10 @@ namespace ProxySU //ReceiveConfigurationParameters[0]----模板类型 //ReceiveConfigurationParameters[1]----服务端口 //ReceiveConfigurationParameters[2]----V2Ray uuid/(naive/Trojan-go/Trojan/SSR/SS)' Password - //ReceiveConfigurationParameters[3]----Websocket'Path/http2'Path/naive'user + //ReceiveConfigurationParameters[3]----QUIC加密方式/SSR 加密方法/naive'user //ReceiveConfigurationParameters[4]----Domain //ReceiveConfigurationParameters[5]----伪装类型/插件名称 - //ReceiveConfigurationParameters[6]----QUIC密钥/mKCP Seed/SS 加密方式 + //ReceiveConfigurationParameters[6]----Websocket'Path/http2'Path/QUIC密钥/mKCP Seed/SS 加密方式 //ReceiveConfigurationParameters[7]----伪装网站 //ReceiveConfigurationParameters[8]----方案名称 //ReceiveConfigurationParameters[9]----插件参数选项 @@ -113,6 +113,9 @@ namespace ProxySU //初始化SSR的密码 TextBoxSSRPassword.Text = RandomUUID(); + //初始化所选方案面板为不显示 + GridV2rayCurrentlyPlan.Visibility = Visibility.Hidden; + //初始化三合一的所有内容 //TextBoxV2rayUUID3in1.Text = RandomUUID(); //TextBoxV2rayPath3in1.Text = "/ray"; @@ -698,152 +701,202 @@ namespace ProxySU //显示"未选择方案!" TextBlockCurrentlySelectedPlan.Text = Application.Current.FindResource("TextBlockCurrentlySelectedPlanNo").ToString(); - TextBlockV2RayShowPort.Visibility = Visibility.Hidden; - TextBlockCurrentlySelectedPlanPort.Visibility = Visibility.Hidden; + GridV2rayCurrentlyPlan.Visibility = Visibility.Hidden; - TextBlockV2RayShowUUID.Visibility = Visibility.Hidden; - TextBlockCurrentlySelectedPlanUUID.Visibility = Visibility.Hidden; - - TextBlockV2RayShowPathSeedKey.Visibility = Visibility.Hidden; - TextBlockCurrentlySelectedPlanPathSeedKey.Visibility = Visibility.Hidden; - - TextBlockV2RayShowCurrentlySelectedPlanDomain.Visibility = Visibility.Hidden; - TextBlockCurrentlySelectedPlanDomain.Visibility = Visibility.Hidden; - - TextBlockV2RayShowCurrentlySelectedPlanFakeWebsite.Visibility = Visibility.Hidden; - TextBlockCurrentlySelectedPlanFakeWebsite.Visibility = Visibility.Hidden; return; } + else + { + GridV2rayCurrentlyPlan.Visibility = Visibility.Visible; + } TextBlockCurrentlySelectedPlan.Text = ReceiveConfigurationParameters[8]; //所选方案名称 TextBlockCurrentlySelectedPlanPort.Text = ReceiveConfigurationParameters[1]; //服务器端口 TextBlockCurrentlySelectedPlanUUID.Text = ReceiveConfigurationParameters[2]; //UUID TextBlockCurrentlySelectedPlanPathSeedKey.Text = ReceiveConfigurationParameters[6]; //mKCP Seed\Quic Key\Path - TextBlockCurrentlySelectedPlanDomain.Text = ReceiveConfigurationParameters[4]; //域名 + TextBlockCurrentlySelectedPlanFakeWebsite.Text = ReceiveConfigurationParameters[7]; //伪装网站 - if (String.Equals(ReceiveConfigurationParameters[0],"TCP") - || String.Equals(ReceiveConfigurationParameters[0], "TCPhttp") - || String.Equals(ReceiveConfigurationParameters[0], "tcpTLSselfSigned") - || String.Equals(ReceiveConfigurationParameters[0], "webSocket")) + if (String.Equals(ReceiveConfigurationParameters[0],"TCP") == true + || String.Equals(ReceiveConfigurationParameters[0], "TCPhttp") == true + || String.Equals(ReceiveConfigurationParameters[0], "tcpTLSselfSigned") == true + || String.Equals(ReceiveConfigurationParameters[0], "webSocket") == true) { - TextBlockV2RayShowPort.Visibility = Visibility.Visible; - TextBlockCurrentlySelectedPlanPort.Visibility = Visibility.Visible; + //隐藏Path/mKCP Seed/Quic Key + HideV2RayPathSeedKey(); - TextBlockV2RayShowUUID.Visibility = Visibility.Visible; - TextBlockCurrentlySelectedPlanUUID.Visibility = Visibility.Visible; + //隐藏域名/Quic加密方式 + HideV2RayDomainQuicEncrypt(); - TextBlockV2RayShowPathSeedKey.Visibility = Visibility.Hidden; - TextBlockCurrentlySelectedPlanPathSeedKey.Visibility = Visibility.Hidden; - - TextBlockV2RayShowCurrentlySelectedPlanDomain.Visibility = Visibility.Hidden; - TextBlockCurrentlySelectedPlanDomain.Visibility = Visibility.Hidden; - - TextBlockV2RayShowCurrentlySelectedPlanFakeWebsite.Visibility = Visibility.Hidden; - TextBlockCurrentlySelectedPlanFakeWebsite.Visibility = Visibility.Hidden; + //隐藏伪装网站 + HideV2RayMaskSites(); } - else if (String.Equals(ReceiveConfigurationParameters[0], "tcpTLS") || String.Equals(ReceiveConfigurationParameters[0], "VlessTcpTlsWeb")) + else if (String.Equals(ReceiveConfigurationParameters[0], "tcpTLS") == true) { - TextBlockV2RayShowPort.Visibility = Visibility.Visible; - TextBlockCurrentlySelectedPlanPort.Visibility = Visibility.Visible; + //隐藏Path/mKCP Seed/Quic Key + HideV2RayPathSeedKey(); - TextBlockV2RayShowUUID.Visibility = Visibility.Visible; - TextBlockCurrentlySelectedPlanUUID.Visibility = Visibility.Visible; + //显示域名 + ShowV2RayDomainQuicEncrypt(); + TextBlockV2RayShowCurrentlySelectedPlanDomain.Text = Application.Current.FindResource("TextBlockV2RayDomain").ToString(); + TextBlockCurrentlySelectedPlanDomain.Text = ReceiveConfigurationParameters[4]; //域名 - TextBlockV2RayShowPathSeedKey.Visibility = Visibility.Hidden; - TextBlockCurrentlySelectedPlanPathSeedKey.Visibility = Visibility.Hidden; - TextBlockV2RayShowCurrentlySelectedPlanDomain.Visibility = Visibility.Visible; - TextBlockCurrentlySelectedPlanDomain.Visibility = Visibility.Visible; - - TextBlockV2RayShowCurrentlySelectedPlanFakeWebsite.Visibility = Visibility.Hidden; - TextBlockCurrentlySelectedPlanFakeWebsite.Visibility = Visibility.Hidden; + //隐藏伪装网站 + HideV2RayMaskSites(); } - else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS") - || String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS2Web") - || String.Equals(ReceiveConfigurationParameters[0], "Http2") - || String.Equals(ReceiveConfigurationParameters[0], "http2Web")) + else if (String.Equals(ReceiveConfigurationParameters[0], "VlessTcpTlsWeb") == true + || String.Equals(ReceiveConfigurationParameters[0], "VlessXtlsTcp") == true) { - TextBlockV2RayShowPort.Visibility = Visibility.Visible; - TextBlockCurrentlySelectedPlanPort.Visibility = Visibility.Visible; + //隐藏Path/mKCP Seed/Quic Key + HideV2RayPathSeedKey(); - TextBlockV2RayShowUUID.Visibility = Visibility.Visible; - TextBlockCurrentlySelectedPlanUUID.Visibility = Visibility.Visible; + //显示域名 + ShowV2RayDomainQuicEncrypt(); + TextBlockV2RayShowCurrentlySelectedPlanDomain.Text = Application.Current.FindResource("TextBlockV2RayDomain").ToString(); + TextBlockCurrentlySelectedPlanDomain.Text = ReceiveConfigurationParameters[4]; //域名 + + //显示伪装网站(暂时不显示) + ShowV2RayMaskSites(); + } + else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS") == true + || String.Equals(ReceiveConfigurationParameters[0], "Http2") == true) + { + //显示Path + ShowV2RayPathSeedKey(); TextBlockV2RayShowPathSeedKey.Text = "Path:"; - TextBlockCurrentlySelectedPlanPathSeedKey.Text = ReceiveConfigurationParameters[3]; //mKCP Seed\Quic Key\Path + TextBlockCurrentlySelectedPlanPathSeedKey.Text = ReceiveConfigurationParameters[6]; //mKCP Seed\Quic Key\Path - TextBlockV2RayShowPathSeedKey.Visibility = Visibility.Visible; - TextBlockCurrentlySelectedPlanPathSeedKey.Visibility = Visibility.Visible; - TextBlockV2RayShowCurrentlySelectedPlanDomain.Visibility = Visibility.Visible; - TextBlockCurrentlySelectedPlanDomain.Visibility = Visibility.Visible; + //显示域名 + ShowV2RayDomainQuicEncrypt(); + TextBlockV2RayShowCurrentlySelectedPlanDomain.Text = Application.Current.FindResource("TextBlockV2RayDomain").ToString(); + TextBlockCurrentlySelectedPlanDomain.Text = ReceiveConfigurationParameters[4]; //域名 - TextBlockV2RayShowCurrentlySelectedPlanFakeWebsite.Visibility = Visibility.Hidden; - TextBlockCurrentlySelectedPlanFakeWebsite.Visibility = Visibility.Hidden; + //显示伪装网站(暂时不显示) + HideV2RayMaskSites(); } - else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLSselfSigned") || String.Equals(ReceiveConfigurationParameters[0], "http2selfSigned")) + else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS2Web") == true + || String.Equals(ReceiveConfigurationParameters[0], "http2Web") == true + || String.Equals(ReceiveConfigurationParameters[0], "VlessWebSocketTlsWeb") == true + || String.Equals(ReceiveConfigurationParameters[0], "VlessHttp2Web") == true) { - TextBlockV2RayShowPort.Visibility = Visibility.Visible; - TextBlockCurrentlySelectedPlanPort.Visibility = Visibility.Visible; - - TextBlockV2RayShowUUID.Visibility = Visibility.Visible; - TextBlockCurrentlySelectedPlanUUID.Visibility = Visibility.Visible; - + //显示Path + ShowV2RayPathSeedKey(); TextBlockV2RayShowPathSeedKey.Text = "Path:"; - TextBlockCurrentlySelectedPlanPathSeedKey.Text = ReceiveConfigurationParameters[3]; //mKCP Seed\Quic Key\Path + TextBlockCurrentlySelectedPlanPathSeedKey.Text = ReceiveConfigurationParameters[6]; //mKCP Seed\Quic Key\Path - TextBlockV2RayShowPathSeedKey.Visibility = Visibility.Visible; - TextBlockCurrentlySelectedPlanPathSeedKey.Visibility = Visibility.Visible; + //显示域名 + ShowV2RayDomainQuicEncrypt(); + TextBlockV2RayShowCurrentlySelectedPlanDomain.Text = Application.Current.FindResource("TextBlockV2RayDomain").ToString(); + TextBlockCurrentlySelectedPlanDomain.Text = ReceiveConfigurationParameters[4]; //域名 - TextBlockV2RayShowCurrentlySelectedPlanDomain.Visibility = Visibility.Hidden; - TextBlockCurrentlySelectedPlanDomain.Visibility = Visibility.Hidden; - - TextBlockV2RayShowCurrentlySelectedPlanFakeWebsite.Visibility = Visibility.Hidden; - TextBlockCurrentlySelectedPlanFakeWebsite.Visibility = Visibility.Hidden; + //显示伪装网站(暂时不显示) + ShowV2RayMaskSites(); } - else if (ReceiveConfigurationParameters[0].Contains("mKCP")) + else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLSselfSigned") == true + || String.Equals(ReceiveConfigurationParameters[0], "http2selfSigned") == true) + { + //显示Path + ShowV2RayPathSeedKey(); + TextBlockV2RayShowPathSeedKey.Text = "Path:"; + TextBlockCurrentlySelectedPlanPathSeedKey.Text = ReceiveConfigurationParameters[6]; //mKCP Seed\Quic Key\Path + + //隐藏域名/Quic加密方式 + HideV2RayDomainQuicEncrypt(); + + //隐藏伪装网站 + HideV2RayMaskSites(); + } + else if (ReceiveConfigurationParameters[0].Contains("mKCP") == true) { - TextBlockV2RayShowPort.Visibility = Visibility.Visible; - TextBlockCurrentlySelectedPlanPort.Visibility = Visibility.Visible; - - TextBlockV2RayShowUUID.Visibility = Visibility.Visible; - TextBlockCurrentlySelectedPlanUUID.Visibility = Visibility.Visible; - + //显示mKCP Seed + ShowV2RayPathSeedKey(); TextBlockV2RayShowPathSeedKey.Text = "mKCP Seed:"; TextBlockCurrentlySelectedPlanPathSeedKey.Text = ReceiveConfigurationParameters[6]; //mKCP Seed\Quic Key\Path - TextBlockV2RayShowPathSeedKey.Visibility = Visibility.Visible; - TextBlockCurrentlySelectedPlanPathSeedKey.Visibility = Visibility.Visible; + //隐藏域名/Quic加密方式 + HideV2RayDomainQuicEncrypt(); - TextBlockV2RayShowCurrentlySelectedPlanDomain.Visibility = Visibility.Hidden; - TextBlockCurrentlySelectedPlanDomain.Visibility = Visibility.Hidden; - - TextBlockV2RayShowCurrentlySelectedPlanFakeWebsite.Visibility = Visibility.Hidden; - TextBlockCurrentlySelectedPlanFakeWebsite.Visibility = Visibility.Hidden; + //隐藏伪装网站 + HideV2RayMaskSites(); } - else if (ReceiveConfigurationParameters[0].Contains("Quic")) + else if (ReceiveConfigurationParameters[0].Contains("Quic") == true) { - TextBlockV2RayShowPort.Visibility = Visibility.Visible; - TextBlockCurrentlySelectedPlanPort.Visibility = Visibility.Visible; - - TextBlockV2RayShowUUID.Visibility = Visibility.Visible; - TextBlockCurrentlySelectedPlanUUID.Visibility = Visibility.Visible; - + //显示QUIC Key + ShowV2RayPathSeedKey(); TextBlockV2RayShowPathSeedKey.Text = "QUIC Key:"; TextBlockCurrentlySelectedPlanPathSeedKey.Text = ReceiveConfigurationParameters[6]; //mKCP Seed\Quic Key\Path - TextBlockV2RayShowPathSeedKey.Visibility = Visibility.Visible; - TextBlockCurrentlySelectedPlanPathSeedKey.Visibility = Visibility.Visible; + //显示Quic加密方式 + ShowV2RayDomainQuicEncrypt(); + TextBlockV2RayShowCurrentlySelectedPlanDomain.Text = Application.Current.FindResource("TextBlockQuicEncryption").ToString(); + TextBlockCurrentlySelectedPlanDomain.Text = ReceiveConfigurationParameters[3]; //Quic加密方式 + if (String.Equals(TextBlockCurrentlySelectedPlanDomain.Text,"none")==true) + { + HideV2RayPathSeedKey(); + } - TextBlockV2RayShowCurrentlySelectedPlanDomain.Visibility = Visibility.Hidden; - TextBlockCurrentlySelectedPlanDomain.Visibility = Visibility.Hidden; - TextBlockV2RayShowCurrentlySelectedPlanFakeWebsite.Visibility = Visibility.Hidden; - TextBlockCurrentlySelectedPlanFakeWebsite.Visibility = Visibility.Hidden; + //隐藏伪装网站 + HideV2RayMaskSites(); } } + #region 当前方案界面控制 + //显示端口与UUID + private void ShowV2RayCurrentPortUUID() + { + TextBlockV2RayShowPort.Visibility = Visibility.Visible; + TextBlockCurrentlySelectedPlanPort.Visibility = Visibility.Visible; + + TextBlockV2RayShowUUID.Visibility = Visibility.Visible; + TextBlockCurrentlySelectedPlanUUID.Visibility = Visibility.Visible; + } + + //显示Path/mKCP Seed/Quic Key + private void ShowV2RayPathSeedKey() + { + TextBlockV2RayShowPathSeedKey.Visibility = Visibility.Visible; + TextBlockCurrentlySelectedPlanPathSeedKey.Visibility = Visibility.Visible; + } + + //隐藏Path/mKCP Seed/Quic Key + private void HideV2RayPathSeedKey() + { + TextBlockV2RayShowPathSeedKey.Visibility = Visibility.Hidden; + TextBlockCurrentlySelectedPlanPathSeedKey.Visibility = Visibility.Hidden; + } + + //显示域名/Quic加密方式 + private void ShowV2RayDomainQuicEncrypt() + { + TextBlockV2RayShowCurrentlySelectedPlanDomain.Visibility = Visibility.Visible; + TextBlockCurrentlySelectedPlanDomain.Visibility = Visibility.Visible; + } + + //隐藏域名/Quic加密方式 + private void HideV2RayDomainQuicEncrypt() + { + TextBlockV2RayShowCurrentlySelectedPlanDomain.Visibility = Visibility.Hidden; + TextBlockCurrentlySelectedPlanDomain.Visibility = Visibility.Hidden; + } + //显示伪装网站(暂时不显示) + private void ShowV2RayMaskSites() + { + TextBlockV2RayShowCurrentlySelectedPlanFakeWebsite.Visibility = Visibility.Hidden; + TextBlockCurrentlySelectedPlanFakeWebsite.Visibility = Visibility.Hidden; + } + + //隐藏伪装网站 + private void HideV2RayMaskSites() + { + TextBlockV2RayShowCurrentlySelectedPlanFakeWebsite.Visibility = Visibility.Hidden; + TextBlockCurrentlySelectedPlanFakeWebsite.Visibility = Visibility.Hidden; + } + #endregion + //传送V2Ray模板参数,启动V2Ray安装进程 private void Button_Login_Click(object sender, RoutedEventArgs e) @@ -1700,89 +1753,73 @@ namespace ProxySU if (String.Equals(ReceiveConfigurationParameters[0], "TCP")) { inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\tcp_server_config.json"; - //serverConfig = "TemplateConfg\\tcp_server_config.json"; - //clientConfig = "TemplateConfg\\tcp_client_config.json"; } else if (String.Equals(ReceiveConfigurationParameters[0], "TCPhttp")) { inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\tcp_http_server_config.json"; - //serverConfig = "TemplateConfg\\tcp_http_server_config.json"; - //clientConfig = "TemplateConfg\\tcp_http_client_config.json"; } else if (String.Equals(ReceiveConfigurationParameters[0], "tcpTLS")) { inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\tcp_TLS_server_config.json"; - //serverConfig = "TemplateConfg\\tcp_TLS_server_config.json"; - //clientConfig = "TemplateConfg\\tcp_TLS_client_config.json"; } else if (String.Equals(ReceiveConfigurationParameters[0], "tcpTLSselfSigned")) { inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\tcpTLSselfSigned_server_config.json"; - //serverConfig = "TemplateConfg\\tcpTLSselfSigned_server_config.json"; - //clientConfig = "TemplateConfg\\tcpTLSselfSigned_client_config.json"; + } + else if (String.Equals(ReceiveConfigurationParameters[0], "VlessXtlsTcp")) + { + inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\vless_tcp_xtls_server_config.json"; } else if (String.Equals(ReceiveConfigurationParameters[0], "VlessTcpTlsWeb")) { - inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\tcp_vless_tls_caddy_server_config.json"; - //serverConfig = "TemplateConfg\\tcp_vless_tls_caddy_server_config.json"; - //clientConfig = "TemplateConfg\\tcp_vless_tls_caddy_cilent_config.json"; + inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\vless_tcp_tls_server_config.json"; + } + else if (String.Equals(ReceiveConfigurationParameters[0], "VlessWebSocketTlsWeb")) + { + inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\vless_ws_tls_server_config.json"; + } + else if (String.Equals(ReceiveConfigurationParameters[0], "VlessHttp2Web")) + { + inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\vless_http2_tls_server_config.json"; } else if (String.Equals(ReceiveConfigurationParameters[0], "webSocket")) { inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\webSocket_server_config.json"; - //serverConfig = "TemplateConfg\\webSocket_server_config.json"; - //clientConfig = "TemplateConfg\\webSocket_client_config.json"; } else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS")) { inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\WebSocket_TLS_server_config.json"; - //serverConfig = "TemplateConfg\\WebSocket_TLS_server_config.json"; - //clientConfig = "TemplateConfg\\WebSocket_TLS_client_config.json"; } else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLSselfSigned")) { inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\WebSocketTLS_selfSigned_server_config.json"; - //serverConfig = "TemplateConfg\\WebSocketTLS_selfSigned_server_config.json"; - //clientConfig = "TemplateConfg\\WebSocketTLS_selfSigned_client_config.json"; } else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS2Web")) { inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\WebSocketTLSWeb_server_config.json"; - //serverConfig = "TemplateConfg\\WebSocketTLSWeb_server_config.json"; - //clientConfig = "TemplateConfg\\WebSocketTLSWeb_client_config.json"; } else if (String.Equals(ReceiveConfigurationParameters[0], "Http2")) { inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\http2_server_config.json"; - //serverConfig = "TemplateConfg\\http2_server_config.json"; - //clientConfig = @"TemplateConfg\http2_client_config.json"; } else if (String.Equals(ReceiveConfigurationParameters[0], "http2Web")) { inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\Http2Web_server_config.json"; - //serverConfig = "TemplateConfg\\Http2Web_server_config.json"; - //clientConfig = "TemplateConfg\\Http2Web_client_config.json"; } else if (String.Equals(ReceiveConfigurationParameters[0], "http2selfSigned")) { inboundsConfigJson = @"TemplateConfg\v2ray\server\Http2selfSigned_server_config.json"; - //serverConfig = "TemplateConfg\\Http2selfSigned_server_config.json"; - //clientConfig = "TemplateConfg\\Http2selfSigned_client_config.json"; } //else if (String.Equals(ReceiveConfigurationParameters[0], "MkcpNone")|| String.Equals(ReceiveConfigurationParameters[0], "mKCP2SRTP")||String.Equals(ReceiveConfigurationParameters[0], "mKCPuTP")|| String.Equals(ReceiveConfigurationParameters[0], "mKCP2WechatVideo")|| String.Equals(ReceiveConfigurationParameters[0], "mKCP2DTLS")|| String.Equals(ReceiveConfigurationParameters[0], "mKCP2WireGuard")) else if (ReceiveConfigurationParameters[0].Contains("mKCP")) { inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\mkcp_server_config.json"; - //serverConfig = "TemplateConfg\\mkcp_server_config.json"; - //clientConfig = "TemplateConfg\\mkcp_client_config.json"; } // else if (String.Equals(ReceiveConfigurationParameters[0], "QuicNone") || String.Equals(ReceiveConfigurationParameters[0], "QuicSRTP") || String.Equals(ReceiveConfigurationParameters[0], "Quic2uTP") || String.Equals(ReceiveConfigurationParameters[0], "QuicWechatVideo") || String.Equals(ReceiveConfigurationParameters[0], "QuicDTLS") || String.Equals(ReceiveConfigurationParameters[0], "QuicWireGuard")) else if (ReceiveConfigurationParameters[0].Contains("Quic")) { inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\quic_server_config.json"; - //serverConfig = "TemplateConfg\\quic_server_config.json"; - //clientConfig = "TemplateConfg\\quic_client_config.json"; } //读取"inbounds" @@ -1802,21 +1839,27 @@ namespace ProxySU //设置uuid jObjectJson["inbounds"][0]["settings"]["clients"][0]["id"] = ReceiveConfigurationParameters[2]; - //除WebSocketTLSWeb/http2Web/VlessTcpTlsWeb模式外设置监听端口 + + //除WebSocketTLSWeb/http2Web/VLESS+WebSocket+TLS+Web/VLESS+http2+TLS+Web模式外设置监听端口 if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS2Web") == false && String.Equals(ReceiveConfigurationParameters[0], "http2Web") == false - && String.Equals(ReceiveConfigurationParameters[0], "VlessTcpTlsWeb") == false) + && String.Equals(ReceiveConfigurationParameters[0], "VlessWebSocketTlsWeb") == false + && String.Equals(ReceiveConfigurationParameters[0], "VlessHttp2Web") == false) { jObjectJson["inbounds"][0]["port"] = int.Parse(ReceiveConfigurationParameters[1]); } - if (String.Equals(ReceiveConfigurationParameters[0], "VlessTcpTlsWeb") == true) + + //设置VLESS协议的回落端口,指向Caddy + if (String.Equals(ReceiveConfigurationParameters[0], "VlessTcpTlsWeb") == true + || String.Equals(ReceiveConfigurationParameters[0], "VlessXtlsTcp") == true) { - //设置Caddy随机监听的端口,用于Trojan-go,Trojan,V2Ray vless TLS - //Random random = new Random(); + //设置Caddy随机监听的端口 randomCaddyListenPort = GetRandomPort(); + //指向Caddy监听的随机端口 jObjectJson["inbounds"][0]["settings"]["fallbacks"][0]["dest"] = randomCaddyListenPort; } + //TLS自签证书/WebSocketTLS(自签证书)/http2自签证书模式下,使用v2ctl 生成自签证书 if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLSselfSigned") == true || String.Equals(ReceiveConfigurationParameters[0], "tcpTLSselfSigned") == true @@ -1826,26 +1869,32 @@ namespace ProxySU JObject selfSignedCaJObject = JObject.Parse(selfSignedCa); jObjectJson["inbounds"][0]["streamSettings"]["tlsSettings"]["certificates"][0] = selfSignedCaJObject; } - //如果是WebSocketTLSWeb/WebSocketTLS/WebSocketTLS(自签证书)模式,则设置路径 + + //如果是WebSocketTLSWeb/WebSocketTLS/WebSocketTLS(自签证书)/VLESS+WebSocket+TLS+Web模式,则设置路径 if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS") == true || String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLSselfSigned") == true - || String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS2Web") == true) + || String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS2Web") == true + || String.Equals(ReceiveConfigurationParameters[0], "VlessWebSocketTlsWeb")==true) { - jObjectJson["inbounds"][0]["streamSettings"]["wsSettings"]["path"] = ReceiveConfigurationParameters[3]; + jObjectJson["inbounds"][0]["streamSettings"]["wsSettings"]["path"] = ReceiveConfigurationParameters[6]; } - //如果是Http2/http2Web/http2自签模式下,设置路径 + + //如果是Http2/http2Web/http2自签/VLESS+http2+TLS+Web模式下,设置路径 if (String.Equals(ReceiveConfigurationParameters[0], "Http2") == true || String.Equals(ReceiveConfigurationParameters[0], "http2Web") == true - || String.Equals(ReceiveConfigurationParameters[0], "http2selfSigned") == true) + || String.Equals(ReceiveConfigurationParameters[0], "http2selfSigned") == true + || String.Equals(ReceiveConfigurationParameters[0], "VlessHttp2Web") == true) { - jObjectJson["inbounds"][0]["streamSettings"]["httpSettings"]["path"] = ReceiveConfigurationParameters[3]; + jObjectJson["inbounds"][0]["streamSettings"]["httpSettings"]["path"] = ReceiveConfigurationParameters[6]; } - //如果是Http2Web模式下,设置host - if (String.Equals(ReceiveConfigurationParameters[0], "http2Web") == true) + + //如果是Http2+Web/VLESS+http2+TLS+Web模式下,设置host + if (String.Equals(ReceiveConfigurationParameters[0], "http2Web") == true + || String.Equals(ReceiveConfigurationParameters[0], "VlessHttp2Web") == true) { - // jObjectJson["inbounds"][0]["streamSettings"]["httpSettings"]["path"] = ReceiveConfigurationParameters[3]; jObjectJson["inbounds"][0]["streamSettings"]["httpSettings"]["host"][0] = ReceiveConfigurationParameters[4]; } + //mkcp模式下,设置伪装类型 if (ReceiveConfigurationParameters[0].Contains("mKCP") == true) { @@ -1855,12 +1904,20 @@ namespace ProxySU jObjectJson["inbounds"][0]["streamSettings"]["kcpSettings"]["seed"] = ReceiveConfigurationParameters[6]; } } + //quic模式下设置伪装类型及密钥 if (ReceiveConfigurationParameters[0].Contains("Quic") == true) { jObjectJson["inbounds"][0]["streamSettings"]["quicSettings"]["header"]["type"] = ReceiveConfigurationParameters[5]; + jObjectJson["inbounds"][0]["streamSettings"]["quicSettings"]["security"] = ReceiveConfigurationParameters[3]; + + if (String.Equals(ReceiveConfigurationParameters[3],"none") == true) + { + ReceiveConfigurationParameters[6] = ""; + } jObjectJson["inbounds"][0]["streamSettings"]["quicSettings"]["key"] = ReceiveConfigurationParameters[6]; } + serverJson["inbounds"] = jObjectJson["inbounds"]; } @@ -1874,8 +1931,12 @@ namespace ProxySU File.Delete(@"config.json"); - //如果使用http2/WebSocketTLS/tcpTLS/VlessTcpTlsWeb模式,先要安装acme.sh,申请证书 - if (String.Equals(ReceiveConfigurationParameters[0], "Http2") == true || String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS") == true || String.Equals(ReceiveConfigurationParameters[0], "tcpTLS") == true || String.Equals(ReceiveConfigurationParameters[0], "VlessTcpTlsWeb") == true) + //如果使用http2/WebSocketTLS/tcpTLS/VlessTcpTlsWeb/VLESS+TCP+XTLS+Web模式,先要安装acme.sh,申请证书 + if (String.Equals(ReceiveConfigurationParameters[0], "Http2") == true + || String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS") == true + || String.Equals(ReceiveConfigurationParameters[0], "tcpTLS") == true + || String.Equals(ReceiveConfigurationParameters[0], "VlessXtlsTcp") == true + || String.Equals(ReceiveConfigurationParameters[0], "VlessTcpTlsWeb") == true) { //****** "正在安装acme.sh......" ******22 SetUpProgressBarProcessing(55); @@ -2030,10 +2091,13 @@ namespace ProxySU } - //如果是WebSocket+TLS+Web/http2Web/vlessTcpTlsWeb模式,需要安装Caddy - if (ReceiveConfigurationParameters[0].Contains("WebSocketTLS2Web") ==true - || ReceiveConfigurationParameters[0].Contains("http2Web") == true - || ReceiveConfigurationParameters[0].Contains("VlessTcpTlsWeb") == true) + //如果是VLESS+TCP+XTLS+Web/VLESS+TCP+TLS+Web/VLESS+WebSocket+TLS+Web/VLESS+http2+TLS+Web/WebSocket+TLS+Web/http2Web模式,需要安装Caddy + if (String.Equals(ReceiveConfigurationParameters[0], "VlessXtlsTcp") == true + || String.Equals(ReceiveConfigurationParameters[0], "VlessTcpTlsWeb") == true + || String.Equals(ReceiveConfigurationParameters[0], "VlessWebSocketTlsWeb") == true + || String.Equals(ReceiveConfigurationParameters[0], "VlessHttp2Web") == true + || String.Equals(ReceiveConfigurationParameters[0],"WebSocketTLS2Web") ==true + || String.Equals(ReceiveConfigurationParameters[0], "http2Web") == true) { //****** "安装Caddy......" ******28 SetUpProgressBarProcessing(70); @@ -2155,7 +2219,8 @@ namespace ProxySU TextBoxMonitorCommandResults.Dispatcher.BeginInvoke(updateMonitorAction, TextBoxMonitorCommandResults, currentShellCommandResult);//显示命令执行的结果 //在Caddy 2还未推出2.2.0的正式版之前,先用测试版替代 - if (String.Equals(ReceiveConfigurationParameters[0], "http2Web")) + if (String.Equals(ReceiveConfigurationParameters[0], "http2Web") == true + || String.Equals(ReceiveConfigurationParameters[0], "VlessHttp2Web") == true) { //****** "正在为Http2Web模式升级Caddy v2.2.0测试版!" ******30 SetUpProgressBarProcessing(77); @@ -2211,18 +2276,22 @@ namespace ProxySU currentShellCommandResult = client.RunCommand(sshShellCommand).Result; TextBoxMonitorCommandResults.Dispatcher.BeginInvoke(updateMonitorAction, TextBoxMonitorCommandResults, currentShellCommandResult);//显示命令执行的结果 - if (ReceiveConfigurationParameters[0].Contains("WebSocketTLS2Web") == true) - { - serverConfig = @"TemplateConfg\v2ray\caddy\WebSocketTLSWeb.caddyfile"; - } - else if (ReceiveConfigurationParameters[0].Contains("http2Web") == true) - { - serverConfig = @"TemplateConfg\v2ray\caddy\Http2Web.caddyfile"; - } - else if(ReceiveConfigurationParameters[0].Contains("VlessTcpTlsWeb")==true) + if (String.Equals(ReceiveConfigurationParameters[0], "VlessXtlsTcp") == true + || String.Equals(ReceiveConfigurationParameters[0], "VlessTcpTlsWeb") == true) { serverConfig = @"TemplateConfg\v2ray\caddy\vlessTcpTlsWeb.caddyfile"; } + else if (String.Equals(ReceiveConfigurationParameters[0], "VlessWebSocketTlsWeb") == true + || String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS2Web") == true) + { + serverConfig = @"TemplateConfg\v2ray\caddy\WebSocketTLSWeb.caddyfile"; + } + else if (String.Equals(ReceiveConfigurationParameters[0], "VlessHttp2Web") == true + || String.Equals(ReceiveConfigurationParameters[0], "http2Web") == true) + { + serverConfig = @"TemplateConfg\v2ray\caddy\Http2Web.caddyfile"; + } + string upLoadPath = "/etc/caddy/Caddyfile"; client.RunCommand("mv /etc/caddy/Caddyfile /etc/caddy/Caddyfile.bak"); UploadConfig(connectionInfo, serverConfig, upLoadPath); @@ -2244,7 +2313,7 @@ namespace ProxySU TextBoxMonitorCommandResults.Dispatcher.BeginInvoke(updateMonitorAction, TextBoxMonitorCommandResults, currentShellCommandResult);//显示命令执行的结果 //设置Path - sshShellCommand = $"sed -i 's/##path##/\\{ReceiveConfigurationParameters[3]}/' {upLoadPath}"; + sshShellCommand = $"sed -i 's/##path##/\\{ReceiveConfigurationParameters[6]}/' {upLoadPath}"; TextBoxMonitorCommandResults.Dispatcher.BeginInvoke(updateMonitorAction, TextBoxMonitorCommandResults, sshShellCommand);//显示执行的命令 currentShellCommandResult = client.RunCommand(sshShellCommand).Result; TextBoxMonitorCommandResults.Dispatcher.BeginInvoke(updateMonitorAction, TextBoxMonitorCommandResults, currentShellCommandResult);//显示命令执行的结果 @@ -2616,117 +2685,120 @@ namespace ProxySU clientJson["reverse"] = jObjectJson["reverse"]; } + //根据选择的不同模式,选择相应的配置文件 if (String.Equals(ReceiveConfigurationParameters[0], "TCP")) { outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\tcp_client_config.json"; - //serverConfig = "TemplateConfg\\tcp_server_config.json"; - //clientConfig = "TemplateConfg\\tcp_client_config.json"; } else if (String.Equals(ReceiveConfigurationParameters[0], "TCPhttp")) { outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\tcp_http_client_config.json"; - //serverConfig = "TemplateConfg\\tcp_http_server_config.json"; - //clientConfig = "TemplateConfg\\tcp_http_client_config.json"; } else if (String.Equals(ReceiveConfigurationParameters[0], "tcpTLS")) { outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\tcp_TLS_client_config.json"; - //serverConfig = "TemplateConfg\\tcp_TLS_server_config.json"; - //clientConfig = "TemplateConfg\\tcp_TLS_client_config.json"; } else if (String.Equals(ReceiveConfigurationParameters[0], "tcpTLSselfSigned")) { outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\tcpTLSselfSigned_client_config.json"; - //serverConfig = "TemplateConfg\\tcpTLSselfSigned_server_config.json"; - //clientConfig = "TemplateConfg\\tcpTLSselfSigned_client_config.json"; + } + else if (String.Equals(ReceiveConfigurationParameters[0], "VlessXtlsTcp")) + { + outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\vless_tcp_xtls_client_config.json"; } else if (String.Equals(ReceiveConfigurationParameters[0], "VlessTcpTlsWeb")) { - outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\tcp_vless_tls_caddy_cilent_config.json"; - //serverConfig = "TemplateConfg\\tcp_vless_tls_caddy_server_config.json"; - //clientConfig = "TemplateConfg\\tcp_vless_tls_caddy_cilent_config.json"; + outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\vless_tcp_tls_caddy_cilent_config.json"; + } + else if (String.Equals(ReceiveConfigurationParameters[0], "VlessWebSocketTlsWeb")) + { + outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\vless_ws_tls_client_config.json"; + } + else if (String.Equals(ReceiveConfigurationParameters[0], "VlessHttp2Web")) + { + outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\vless_http2_tls_server_config.json"; } else if (String.Equals(ReceiveConfigurationParameters[0], "webSocket")) { outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\webSocket_client_config.json"; - //serverConfig = "TemplateConfg\\webSocket_server_config.json"; - //clientConfig = "TemplateConfg\\webSocket_client_config.json"; } else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS")) { outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\WebSocket_TLS_client_config.json"; - //serverConfig = "TemplateConfg\\WebSocket_TLS_server_config.json"; - //clientConfig = "TemplateConfg\\WebSocket_TLS_client_config.json"; } else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLSselfSigned")) { outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\WebSocketTLS_selfSigned_client_config.json"; - //serverConfig = "TemplateConfg\\WebSocketTLS_selfSigned_server_config.json"; - //clientConfig = "TemplateConfg\\WebSocketTLS_selfSigned_client_config.json"; } else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS2Web")) { outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\WebSocketTLSWeb_client_config.json"; - //serverConfig = "TemplateConfg\\WebSocketTLSWeb_server_config.json"; - //clientConfig = "TemplateConfg\\WebSocketTLSWeb_client_config.json"; } else if (String.Equals(ReceiveConfigurationParameters[0], "Http2")) { outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\http2_client_config.json"; - //serverConfig = "TemplateConfg\\http2_server_config.json"; - //clientConfig = @"TemplateConfg\http2_client_config.json"; } else if (String.Equals(ReceiveConfigurationParameters[0], "http2Web")) { outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\Http2Web_client_config.json"; - //serverConfig = "TemplateConfg\\Http2Web_server_config.json"; - //clientConfig = "TemplateConfg\\Http2Web_client_config.json"; } else if (String.Equals(ReceiveConfigurationParameters[0], "http2selfSigned")) { outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\Http2selfSigned_client_config.json"; - //serverConfig = "TemplateConfg\\Http2selfSigned_server_config.json"; - //clientConfig = "TemplateConfg\\Http2selfSigned_client_config.json"; } //else if (String.Equals(ReceiveConfigurationParameters[0], "MkcpNone")|| String.Equals(ReceiveConfigurationParameters[0], "mKCP2SRTP")||String.Equals(ReceiveConfigurationParameters[0], "mKCPuTP")|| String.Equals(ReceiveConfigurationParameters[0], "mKCP2WechatVideo")|| String.Equals(ReceiveConfigurationParameters[0], "mKCP2DTLS")|| String.Equals(ReceiveConfigurationParameters[0], "mKCP2WireGuard")) else if (ReceiveConfigurationParameters[0].Contains("mKCP")) { outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\mkcp_client_config.json"; - //serverConfig = "TemplateConfg\\mkcp_server_config.json"; - //clientConfig = "TemplateConfg\\mkcp_client_config.json"; } - // else if (String.Equals(ReceiveConfigurationParameters[0], "QuicNone") || String.Equals(ReceiveConfigurationParameters[0], "QuicSRTP") || String.Equals(ReceiveConfigurationParameters[0], "Quic2uTP") || String.Equals(ReceiveConfigurationParameters[0], "QuicWechatVideo") || String.Equals(ReceiveConfigurationParameters[0], "QuicDTLS") || String.Equals(ReceiveConfigurationParameters[0], "QuicWireGuard")) else if (ReceiveConfigurationParameters[0].Contains("Quic")) { outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\quic_client_config.json"; - //serverConfig = "TemplateConfg\\quic_server_config.json"; - //clientConfig = "TemplateConfg\\quic_client_config.json"; } //读取"相应模板的outbounds" using (StreamReader readerJson = File.OpenText(outboundsConfigJson)) { JObject jObjectJson = (JObject)JToken.ReadFrom(new JsonTextReader(readerJson)); + //设置客户端的地址/端口/id jObjectJson["outbounds"][0]["settings"]["vnext"][0]["address"] = ReceiveConfigurationParameters[4]; jObjectJson["outbounds"][0]["settings"]["vnext"][0]["port"] = int.Parse(ReceiveConfigurationParameters[1]); jObjectJson["outbounds"][0]["settings"]["vnext"][0]["users"][0]["id"] = ReceiveConfigurationParameters[2]; - //设置WebSocket系统模式下的path - if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS") == true || String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLSselfSigned") == true || String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS2Web") == true) + + //设置WebSocket模式下的path + if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS") == true + || String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLSselfSigned") == true + || String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS2Web") == true + || String.Equals(ReceiveConfigurationParameters[0], "VlessWebSocketTlsWeb") == true) { - jObjectJson["outbounds"][0]["streamSettings"]["wsSettings"]["path"] = ReceiveConfigurationParameters[3]; + jObjectJson["outbounds"][0]["streamSettings"]["wsSettings"]["path"] = ReceiveConfigurationParameters[6]; } + //设置http2模式下的path - if (String.Equals(ReceiveConfigurationParameters[0], "Http2") == true || String.Equals(ReceiveConfigurationParameters[0], "http2Web") == true || String.Equals(ReceiveConfigurationParameters[0], "http2selfSigned") == true) + if (String.Equals(ReceiveConfigurationParameters[0], "Http2") == true + || String.Equals(ReceiveConfigurationParameters[0], "http2Web") == true + || String.Equals(ReceiveConfigurationParameters[0], "http2selfSigned") == true + || String.Equals(ReceiveConfigurationParameters[0], "VlessHttp2Web") == true) { - jObjectJson["outbounds"][0]["streamSettings"]["httpSettings"]["path"] = ReceiveConfigurationParameters[3]; + jObjectJson["outbounds"][0]["streamSettings"]["httpSettings"]["path"] = ReceiveConfigurationParameters[6]; } - //设置http2web模式下的host - if (String.Equals(ReceiveConfigurationParameters[0], "http2Web") == true) + + //设置http2+TLS+Web/VLESS+http2+TLS+Web模式下的host + if (String.Equals(ReceiveConfigurationParameters[0], "http2Web") == true + || String.Equals(ReceiveConfigurationParameters[0], "VlessHttp2Web") == true) { jObjectJson["outbounds"][0]["streamSettings"]["httpSettings"]["host"][0] = ReceiveConfigurationParameters[4]; } + + //设置VLESS+TCP+XTLS+Web模式下的serverName + if (String.Equals(ReceiveConfigurationParameters[0], "VlessXtlsTcp") == true) + { + jObjectJson["outbounds"][0]["streamSettings"]["xtlsSettings"]["serverName"] = ReceiveConfigurationParameters[4]; + } + + //设置mkcp if (ReceiveConfigurationParameters[0].Contains("mKCP") == true) { jObjectJson["outbounds"][0]["streamSettings"]["kcpSettings"]["header"]["type"] = ReceiveConfigurationParameters[5]; @@ -2735,9 +2807,16 @@ namespace ProxySU jObjectJson["outbounds"][0]["streamSettings"]["kcpSettings"]["seed"] = ReceiveConfigurationParameters[6]; } } + + //设置QUIC if (ReceiveConfigurationParameters[0].Contains("Quic") == true) { jObjectJson["outbounds"][0]["streamSettings"]["quicSettings"]["header"]["type"] = ReceiveConfigurationParameters[5]; + jObjectJson["inbounds"][0]["streamSettings"]["quicSettings"]["security"] = ReceiveConfigurationParameters[3]; + if (String.Equals(ReceiveConfigurationParameters[3], "none") == true) + { + ReceiveConfigurationParameters[6] = ""; + } jObjectJson["outbounds"][0]["streamSettings"]["quicSettings"]["key"] = ReceiveConfigurationParameters[6]; } @@ -12153,12 +12232,19 @@ namespace ProxySU MessageBox.Show(ex.Message); } } - #endregion - // #region 三合一安装过程 + private void Button_Click(object sender, RoutedEventArgs e) + { + //显示服务端连接参数 + proxyType = "V2Ray"; + ResultClientInformation resultClientInformation = new ResultClientInformation(); + resultClientInformation.ShowDialog(); + } + + #region 三合一安装过程 // //生成三合一的v2ray路径 // private void ButtonV2rayPath3in1_Click(object sender, RoutedEventArgs e) @@ -13141,7 +13227,7 @@ namespace ProxySU // } - // #endregion + #endregion } diff --git a/ProxySU/Properties/AssemblyInfo.cs b/ProxySU/Properties/AssemblyInfo.cs index 16d0827..6c62c37 100644 --- a/ProxySU/Properties/AssemblyInfo.cs +++ b/ProxySU/Properties/AssemblyInfo.cs @@ -51,5 +51,5 @@ using System.Windows; // 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号 // 方法是按如下所示使用“*”: : // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("2.2.3.0")] -[assembly: AssemblyFileVersion("2.2.3.0")] +[assembly: AssemblyVersion("2.3.0.0")] +[assembly: AssemblyFileVersion("2.3.0.0")] diff --git a/ProxySU/ResultClientInformation.xaml b/ProxySU/ResultClientInformation.xaml index a3e4ac7..364a1bd 100644 --- a/ProxySU/ResultClientInformation.xaml +++ b/ProxySU/ResultClientInformation.xaml @@ -13,18 +13,18 @@ - + - + - + @@ -34,39 +34,48 @@ - - + + + - - + + - - + + - - - - - - - - - - - - - - - - - + + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -129,7 +138,7 @@ - + diff --git a/ProxySU/ResultClientInformation.xaml.cs b/ProxySU/ResultClientInformation.xaml.cs index 7484e5c..3403009 100644 --- a/ProxySU/ResultClientInformation.xaml.cs +++ b/ProxySU/ResultClientInformation.xaml.cs @@ -53,68 +53,111 @@ namespace ProxySU TextBoxUUIDextra.Text = "16"; //加密方式,一般都为auto TextBoxEncryption.Text = "auto"; + //传输协议 TextBoxTransmission.Text = ""; //伪装类型 TextBoxCamouflageType.Text = MainWindow.ReceiveConfigurationParameters[5]; + + //TLS的Host /Quic 加密方式 + TextBoxHostQuicEncryption.Text = ""; + + //QUIC密钥/mKCP Seed/路径Path + TextBoxQuicKeyMkcpSeedPath.Text = MainWindow.ReceiveConfigurationParameters[6]; + //是否启用TLS TextBoxTLS.Text = "none"; - //TLS的Host - TextBoxHost.Text = ""; - //路径Path - TextBoxPath.Text = MainWindow.ReceiveConfigurationParameters[3]; - //QUIC密钥/mKCP Seed - TextBoxQuicKey.Text = MainWindow.ReceiveConfigurationParameters[6]; - if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "WebSocketTLS2Web")) - { - TextBoxTransmission.Text = "ws"; //传输协议 - TextBoxCamouflageType.Text = "none"; //伪装类型 - TextBoxTLS.Text = "tls"; //是否启用TLS - ShowPath(); //显示路径 - HideQuicKey(); //隐藏Quic\mKCP密钥 - } - else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "TCP")) + if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "TCP")) { TextBoxTransmission.Text = "tcp"; TextBoxCamouflageType.Text = "none"; TextBoxTLS.Text = "none"; - HidePath(); - HideQuicKey(); + ShowHostName(); + ShowPathV2ray(); + } else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "TCPhttp")) { TextBoxTransmission.Text = "tcp"; TextBoxCamouflageType.Text = "http"; TextBoxTLS.Text = "none"; - HidePath(); - HideQuicKey(); + ShowHostName(); + ShowPathV2ray(); } else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "tcpTLS")) { TextBoxTransmission.Text = "tcp"; TextBoxCamouflageType.Text = "none"; TextBoxTLS.Text = "tls"; - HidePath(); - HideQuicKey(); + ShowHostName(); + ShowPathV2ray(); } else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "tcpTLSselfSigned")) { TextBoxTransmission.Text = "tcp"; TextBoxCamouflageType.Text = "none"; TextBoxTLS.Text = "tls"; - HidePath(); - HideQuicKey(); + ShowHostName(); + ShowPathV2ray(); } - else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "VlessTcpTlsWeb")) + else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "VlessXtlsTcp")) { + TextBlockVmessOrVless.Text = Application.Current.FindResource("TabItemHeaderV2RayVlessProtocol").ToString(); + TextBoxTransmission.Text = "tcp"; TextBoxCamouflageType.Text = "none"; TextBoxEncryption.Text = "none"; TextBoxTLS.Text = "tls"; HideAlterId(); - HidePath(); - HideQuicKey(); + ShowHostName(); + ShowPathV2ray(); + //TextBlockQrURLexplain.Text = Application.Current.FindResource("TabItemHeaderV2RayVlessProtocol").ToString(); + ImageShareQRcode.Visibility = Visibility.Collapsed; + TextBoxURL.Visibility = Visibility.Collapsed; + } + else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "VlessTcpTlsWeb")) + { + TextBlockVmessOrVless.Text = Application.Current.FindResource("TabItemHeaderV2RayVlessProtocol").ToString(); + + TextBoxTransmission.Text = "tcp"; + TextBoxCamouflageType.Text = "none"; + TextBoxEncryption.Text = "none"; + TextBoxTLS.Text = "tls"; + HideAlterId(); + ShowHostName(); + ShowPathV2ray(); + //TextBlockQrURLexplain.Text = Application.Current.FindResource("TabItemHeaderV2RayVlessProtocol").ToString(); + ImageShareQRcode.Visibility = Visibility.Collapsed; + TextBoxURL.Visibility = Visibility.Collapsed; + } + else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "VlessWebSocketTlsWeb")) + { + TextBlockVmessOrVless.Text = Application.Current.FindResource("TabItemHeaderV2RayVlessProtocol").ToString(); + + TextBoxTransmission.Text = "ws"; + TextBoxCamouflageType.Text = "none"; + TextBoxEncryption.Text = "none"; + TextBoxTLS.Text = "tls"; + HideAlterId(); + ShowHostName(); + ShowPathV2ray(); + //TextBlockQrURLexplain.Text = Application.Current.FindResource("TabItemHeaderV2RayVlessProtocol").ToString(); + ImageShareQRcode.Visibility = Visibility.Collapsed; + TextBoxURL.Visibility = Visibility.Collapsed; + } + else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "VlessHttp2Web")) + { + TextBlockVmessOrVless.Text = Application.Current.FindResource("TabItemHeaderV2RayVlessProtocol").ToString(); + + TextBoxTransmission.Text = "h2"; + TextBoxCamouflageType.Text = "none"; + TextBoxEncryption.Text = "none"; + TextBoxTLS.Text = "tls"; + HideAlterId(); + ShowHostName(); + ShowPathV2ray(); + //TextBlockQrURLexplain.Text = Application.Current.FindResource("TabItemHeaderV2RayVlessProtocol").ToString(); ImageShareQRcode.Visibility = Visibility.Collapsed; TextBoxURL.Visibility = Visibility.Collapsed; } @@ -123,157 +166,125 @@ namespace ProxySU TextBoxTransmission.Text = "ws"; TextBoxCamouflageType.Text = "none"; TextBoxTLS.Text = "none"; - HidePath(); - HideQuicKey(); + ShowHostName(); + ShowPathV2ray(); } else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "WebSocketTLS")) { TextBoxTransmission.Text = "ws"; TextBoxCamouflageType.Text = "none"; TextBoxTLS.Text = "tls"; - ShowPath(); - HideQuicKey(); + ShowHostName(); + ShowPathV2ray(); + } + else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "WebSocketTLS2Web")) + { + TextBoxTransmission.Text = "ws"; + TextBoxCamouflageType.Text = "none"; + TextBoxTLS.Text = "tls"; + ShowHostName(); + ShowPathV2ray(); } else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "WebSocketTLSselfSigned")) { TextBoxTransmission.Text = "ws"; TextBoxCamouflageType.Text = "none"; TextBoxTLS.Text = "tls"; - ShowPath(); - HideQuicKey(); + ShowHostName(); + ShowPathV2ray(); } else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "Http2")) { TextBoxTransmission.Text = "h2"; TextBoxCamouflageType.Text = "none"; TextBoxTLS.Text = "tls"; - ShowPath(); - HideQuicKey(); + ShowHostName(); + ShowPathV2ray(); } else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "http2Web")) { TextBoxTransmission.Text = "h2"; TextBoxCamouflageType.Text = "none"; - TextBoxHost.Text = MainWindow.ReceiveConfigurationParameters[4]; + TextBoxHostQuicEncryption.Text = MainWindow.ReceiveConfigurationParameters[4];//获取Host TextBoxTLS.Text = "tls"; - ShowPath(); - HideQuicKey(); + ShowHostName(); + ShowPathV2ray(); } else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "http2selfSigned")) { TextBoxTransmission.Text = "h2"; TextBoxCamouflageType.Text = "none"; TextBoxTLS.Text = "tls"; - ShowPath(); - HideQuicKey(); + ShowHostName(); + ShowPathV2ray(); } - else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "mKCPNone")) + else if (MainWindow.ReceiveConfigurationParameters[0].Contains("mKCP")) { + if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "mKCPNone")) + { + TextBoxCamouflageType.Text = "none"; + } + else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "mKCP2SRTP")) + { + TextBoxCamouflageType.Text = "srtp"; + } + else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "mKCPuTP")) + { + TextBoxCamouflageType.Text = "utp"; + } + else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "mKCP2WechatVideo")) + { + TextBoxCamouflageType.Text = "wechat-video"; + } + else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "mKCP2DTLS")) + { + TextBoxCamouflageType.Text = "dtls"; + } + else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "mKCP2WireGuard")) + { + TextBoxCamouflageType.Text = "wireguard"; + } + TextBoxTransmission.Text = "kcp"; - TextBoxCamouflageType.Text = "none"; - TextBoxQuicKey.Text = MainWindow.ReceiveConfigurationParameters[6]; + TextBoxQuicKeyMkcpSeedPath.Text = MainWindow.ReceiveConfigurationParameters[6];//获取mkcp Seed TextBoxTLS.Text = "none"; - HidePath(); - ShowQuicKey();//显示mKCP Seed + ShowHostName(); + ShowMkcpSeed(); } - else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "mKCP2SRTP")) - { - TextBoxTransmission.Text = "kcp"; - TextBoxCamouflageType.Text = "srtp"; - TextBoxQuicKey.Text = MainWindow.ReceiveConfigurationParameters[6]; - TextBoxTLS.Text = "none"; - HidePath(); - ShowQuicKey();//显示mKCP Seed - } - else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "mKCPuTP")) - { - TextBoxTransmission.Text = "kcp"; - TextBoxCamouflageType.Text = "utp"; - TextBoxQuicKey.Text = MainWindow.ReceiveConfigurationParameters[6]; - TextBoxTLS.Text = "none"; - HidePath(); - ShowQuicKey();//显示mKCP Seed - } - else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "mKCP2WechatVideo")) - { - TextBoxTransmission.Text = "kcp"; - TextBoxCamouflageType.Text = "wechat-video"; - TextBoxQuicKey.Text = MainWindow.ReceiveConfigurationParameters[6]; - TextBoxTLS.Text = "none"; - HidePath(); - ShowQuicKey();//显示mKCP Seed - } - else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "mKCP2DTLS")) - { - TextBoxTransmission.Text = "kcp"; - TextBoxCamouflageType.Text = "dtls"; - TextBoxQuicKey.Text = MainWindow.ReceiveConfigurationParameters[6]; - TextBoxTLS.Text = "none"; - HidePath(); - ShowQuicKey();//显示mKCP Seed - } - else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "mKCP2WireGuard")) - { - TextBoxTransmission.Text = "kcp"; - TextBoxCamouflageType.Text = "wireguard"; - TextBoxQuicKey.Text = MainWindow.ReceiveConfigurationParameters[6]; - TextBoxTLS.Text = "none"; - HidePath(); - ShowQuicKey();//显示mKCP Seed - } - else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "QuicNone")) + else if (MainWindow.ReceiveConfigurationParameters[0].Contains("Quic") == true) { + if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "QuicNone")) + { + TextBoxCamouflageType.Text = "none"; + + } + else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "QuicSRTP")) + { + TextBoxCamouflageType.Text = "srtp"; + } + else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "Quic2uTP")) + { + TextBoxCamouflageType.Text = "utp"; + } + else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "QuicWechatVideo")) + { + TextBoxCamouflageType.Text = "wechat-video"; + } + else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "QuicDTLS")) + { + TextBoxCamouflageType.Text = "dtls"; + } + else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "QuicWireGuard")) + { + TextBoxCamouflageType.Text = "wireguard"; + } + TextBoxTransmission.Text = "quic"; - TextBoxCamouflageType.Text = "none"; - TextBoxQuicKey.Text = MainWindow.ReceiveConfigurationParameters[6]; + TextBoxHostQuicEncryption.Text = MainWindow.ReceiveConfigurationParameters[3];//获取Quic加密方式 + TextBoxQuicKeyMkcpSeedPath.Text = MainWindow.ReceiveConfigurationParameters[6];//获取Quic加密密钥 TextBoxTLS.Text = "none"; - HidePath(); - ShowQuicKey();//显示QUIC密钥 - } - else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "QuicSRTP")) - { - TextBoxTransmission.Text = "quic"; - TextBoxCamouflageType.Text = "srtp"; - TextBoxQuicKey.Text = MainWindow.ReceiveConfigurationParameters[6]; - TextBoxTLS.Text = "none"; - HidePath(); - ShowQuicKey();//显示QUIC密钥 - } - else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "Quic2uTP")) - { - TextBoxTransmission.Text = "quic"; - TextBoxCamouflageType.Text = "utp"; - TextBoxQuicKey.Text = MainWindow.ReceiveConfigurationParameters[6]; - TextBoxTLS.Text = "none"; - HidePath(); - ShowQuicKey();//显示QUIC密钥 - } - else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "QuicWechatVideo")) - { - TextBoxTransmission.Text = "quic"; - TextBoxCamouflageType.Text = "wechat-video"; - TextBoxQuicKey.Text = MainWindow.ReceiveConfigurationParameters[6]; - TextBoxTLS.Text = "none"; - HidePath(); - ShowQuicKey();//显示QUIC密钥 - } - else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "QuicDTLS")) - { - TextBoxTransmission.Text = "quic"; - TextBoxCamouflageType.Text = "dtls"; - TextBoxQuicKey.Text = MainWindow.ReceiveConfigurationParameters[6]; - TextBoxTLS.Text = "none"; - HidePath(); - ShowQuicKey();//显示QUIC密钥 - } - else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "QuicWireGuard")) - { - TextBoxTransmission.Text = "quic"; - TextBoxCamouflageType.Text = "wireguard"; - TextBoxQuicKey.Text = MainWindow.ReceiveConfigurationParameters[6]; - TextBoxTLS.Text = "none"; - HidePath(); - ShowQuicKey();//显示QUIC密钥 + ShowQuicEncryption(); + ShowQuicKey(); } else @@ -281,8 +292,8 @@ namespace ProxySU TextBoxTransmission.Text = "tcp"; TextBoxCamouflageType.Text = "none"; TextBoxTLS.Text = "none"; - HidePath(); - HideQuicKey(); + ShowHostName(); + ShowPathV2ray(); } CheckDir("v2ray_config"); @@ -492,27 +503,46 @@ namespace ProxySU } #region 界面控制相关 - private void HidePath() + + //显示Quic 加密方式 + private void ShowQuicEncryption() { - TextBlockPath.Visibility = Visibility.Collapsed; - TextBoxPath.Visibility = Visibility.Collapsed; - TextBlockPathExplain.Visibility = Visibility.Collapsed; - + TextBlockQuicEncryption.Visibility = Visibility.Visible; + TextBlockHost.Visibility = Visibility.Collapsed; } - private void ShowPath() + + //显示Host隐藏Quic加密方式 + private void ShowHostName() + { + TextBlockHost.Visibility = Visibility.Visible; + TextBlockQuicEncryption.Visibility = Visibility.Collapsed; + } + + //显示路径Path,隐藏mKCP/Quic Key/复制按钮 + private void ShowPathV2ray() { TextBlockPath.Visibility = Visibility.Visible; - TextBoxPath.Visibility = Visibility.Visible; - TextBlockPathExplain.Visibility = Visibility.Visible; - - } - private void HideQuicKey() - { + TextBlockMkcpSeed.Visibility = Visibility.Collapsed; TextBlockQuicKey.Visibility = Visibility.Collapsed; - TextBoxQuicKey.Visibility = Visibility.Collapsed; - TextBlockQuicKeyExplain.Visibility = Visibility.Collapsed; - } + + //显示mKCP Seed/复制按钮,隐藏Path/Quic Key + private void ShowMkcpSeed() + { + TextBlockPath.Visibility = Visibility.Collapsed; + TextBlockMkcpSeed.Visibility = Visibility.Visible; + TextBlockQuicKey.Visibility = Visibility.Collapsed; + } + + //显示Quic Key/复制按钮 隐藏Path/mKcp Seed + private void ShowQuicKey() + { + TextBlockPath.Visibility = Visibility.Collapsed; + TextBlockMkcpSeed.Visibility = Visibility.Collapsed; + TextBlockQuicKey.Visibility = Visibility.Visible; + } + + //显示额外ID private void ShowAlterId() { TextBlockUUIDextra.Visibility = Visibility.Visible; @@ -520,6 +550,8 @@ namespace ProxySU TextBlockUUIDextraExplanation.Visibility = Visibility.Visible; } + + //隐藏额外ID private void HideAlterId() { TextBlockUUIDextra.Visibility = Visibility.Collapsed; @@ -527,15 +559,109 @@ namespace ProxySU TextBlockUUIDextraExplanation.Visibility = Visibility.Collapsed; } - private void ShowQuicKey() - { - TextBlockQuicKey.Visibility = Visibility.Visible; - TextBoxQuicKey.Visibility = Visibility.Visible; - TextBlockQuicKeyExplain.Visibility = Visibility.Visible; - } + + //private void HidePath() + //{ + // TextBlockPath.Visibility = Visibility.Collapsed; + // TextBoxQuicKeyMkcpSeedPath.Visibility = Visibility.Collapsed; + //} + //private void ShowPath() + //{ + // TextBlockPath.Visibility = Visibility.Visible; + // TextBoxQuicKeyMkcpSeedPath.Visibility = Visibility.Visible; + + //} + //private void HideQuicKey() + //{ + // TextBlockQuicKey.Visibility = Visibility.Collapsed; + // TextBoxQuicKeyMkcpSeedPath.Visibility = Visibility.Collapsed; + //} + + //private void ShowQuicKey() + //{ + // TextBlockQuicKey.Visibility = Visibility.Visible; + // TextBoxQuicKeyMkcpSeedPath.Visibility = Visibility.Visible; + //} #endregion - + + #region 复制参数到剪贴板中 + + //复制内容到剪贴板函数 + private void CopyToClipboard(string content) + { + if (content != "") + { + Clipboard.SetDataObject(content); + MessageBox.Show(Application.Current.FindResource("MessageBoxShow_V2RayUUIDcopyedToClip").ToString()); + } + else + { + MessageBox.Show(Application.Current.FindResource("MessageBoxShow_V2RayEmptyToClip").ToString()); + } + } + + //复制服务器地址到剪贴板 + private void TextBoxHostAddress_MouseDoubleClick(object sender, MouseButtonEventArgs e) + { + CopyToClipboard(TextBoxHostAddress.Text); + } + + + //复制服务器端口到剪贴板 + private void TextBoxPort_MouseDoubleClick(object sender, MouseButtonEventArgs e) + { + CopyToClipboard(TextBoxPort.Text); + } + + //复制UUID到剪贴板 + private void TextBoxUUID_MouseDoubleClick(object sender, MouseButtonEventArgs e) + { + CopyToClipboard(TextBoxUUID.Text); + } + + //复制额外ID到剪贴板 + private void TextBoxUUIDextra_MouseDoubleClick(object sender, MouseButtonEventArgs e) + { + CopyToClipboard(TextBoxUUIDextra.Text); + } + + //复制加密方式到剪贴板 + private void TextBoxEncryption_MouseDoubleClick(object sender, MouseButtonEventArgs e) + { + CopyToClipboard(TextBoxEncryption.Text); + } + + //复制传输协议到剪贴板 + private void TextBoxTransmission_MouseDoubleClick(object sender, MouseButtonEventArgs e) + { + CopyToClipboard(TextBoxTransmission.Text); + } + + //复制伪装方式到剪贴板 + private void TextBoxCamouflageType_MouseDoubleClick(object sender, MouseButtonEventArgs e) + { + CopyToClipboard(TextBoxCamouflageType.Text); + } + + //复制Host/Quic加密方法到剪贴板 + private void TextBoxHostQuicEncryption_MouseDoubleClick(object sender, MouseButtonEventArgs e) + { + CopyToClipboard(TextBoxHostQuicEncryption.Text); + } + + private void TextBoxQuicKeyMkcpSeedPath_MouseDoubleClick(object sender, MouseButtonEventArgs e) + { + CopyToClipboard(TextBoxQuicKeyMkcpSeedPath.Text); + } + + private void TextBoxTLS_MouseDoubleClick(object sender, MouseButtonEventArgs e) + { + CopyToClipboard(TextBoxTLS.Text); + } + + #endregion + //生成v2rayN客户端导入文件 private void GenerateV2rayShareQRcodeAndBase64Url() { @@ -566,17 +692,17 @@ namespace ProxySU if (TextBoxTransmission.Text.Contains("kcp") == true) { - v2rayNjsonObject["path"] = TextBoxQuicKey.Text;//设置mKCP Seed + v2rayNjsonObject["path"] = TextBoxQuicKeyMkcpSeedPath.Text;//设置mKCP Seed } else if (TextBoxTransmission.Text.Contains("quic")==true) { - v2rayNjsonObject["path"] = TextBoxQuicKey.Text;//设置quic密钥 - v2rayNjsonObject["host"] = "chacha20-poly1305"; + v2rayNjsonObject["path"] = TextBoxQuicKeyMkcpSeedPath.Text;//设置quic密钥 + v2rayNjsonObject["host"] = TextBoxHostQuicEncryption.Text;//Quic加密方式 } else { - v2rayNjsonObject["path"] = TextBoxPath.Text; //设置路径 - v2rayNjsonObject["host"] = TextBoxHost.Text;//设置TLS的Host + v2rayNjsonObject["path"] = TextBoxQuicKeyMkcpSeedPath.Text; //设置路径 + v2rayNjsonObject["host"] = TextBoxHostQuicEncryption.Text;//设置TLS的Host } v2rayNjsonObject["tls"] = TextBoxTLS.Text; //设置是否启用TLS @@ -670,8 +796,8 @@ namespace ProxySU sw.WriteLine(Application.Current.FindResource("TextBlockCamouflageType").ToString() + $"{TextBoxCamouflageType.Text}"); sw.WriteLine(Application.Current.FindResource("TextBlockIsOrNotTLS").ToString() + $"{TextBoxTLS.Text}"); sw.WriteLine("host:" + $"{TextBoxHostAddress.Text}"); - sw.WriteLine(Application.Current.FindResource("TextBlockClientPath").ToString() + $"{TextBoxPath.Text}"); - sw.WriteLine(Application.Current.FindResource("TextBlockClientMkcpQuicKey").ToString() + $"{TextBoxQuicKey.Text}"); + sw.WriteLine(Application.Current.FindResource("TextBlockClientPath").ToString() + $"{TextBoxQuicKeyMkcpSeedPath.Text}"); + sw.WriteLine(Application.Current.FindResource("TextBlockClientMkcpQuicKey").ToString() + $"{TextBoxQuicKeyMkcpSeedPath.Text}"); } @@ -1435,7 +1561,8 @@ namespace ProxySU GroupBoxClientSSpc.Visibility = Visibility.Visible; } + } - + } diff --git a/ProxySU/SSpluginWindow.xaml.cs b/ProxySU/SSpluginWindow.xaml.cs index a7d52fe..70eb2c3 100644 --- a/ProxySU/SSpluginWindow.xaml.cs +++ b/ProxySU/SSpluginWindow.xaml.cs @@ -18,7 +18,7 @@ namespace ProxySU /// public partial class SSpluginWindow : Window { - + //SS加密方法设定 public class EncryptionMethodInfo { public string Name { get; set; } @@ -144,12 +144,6 @@ namespace ProxySU //V2Ray-Plugin SS+WebSocket+TLS+Web模式被选中 else if (RadioButtonWebSocketTLSWebFrontSS.IsChecked == true || RadioButtonWebSocketTLSWebFrontSSHot.IsChecked == true) { - //if (string.IsNullOrEmpty(TextBoxDomain.Text.ToString()) == true) - //{ - // //****** "域名不能为空,请检查相关参数设置!" ****** - // MessageBox.Show(Application.Current.FindResource("MessageBoxShow_DomainNotEmpty").ToString()); - // return; - //} testDomain = TestDomainIsEmpty(); //传递模板类型 MainWindow.ReceiveConfigurationParameters[0] = "WebSocketTLSWebFrontSS"; @@ -203,12 +197,6 @@ namespace ProxySU //SS+GoQuiet-Plugin模式被选中 else if (RadioButtonGoQuietPluginSS.IsChecked == true) { - //if (string.IsNullOrEmpty(TextBoxDomainSS.Text.ToString()) == true) - //{ - // //****** "域名不能为空,请检查相关参数设置!" ****** - // MessageBox.Show(Application.Current.FindResource("MessageBoxShow_DomainNotEmpty").ToString()); - // return; - //} testDomain = TestDomainIsEmpty(); //传递模板类型 MainWindow.ReceiveConfigurationParameters[0] = "GoQuietPluginSS"; @@ -221,12 +209,6 @@ namespace ProxySU //SS+Cloak-Plugin模式被选中 else if (RadioButtonCloakPluginSS.IsChecked == true) { - //if (string.IsNullOrEmpty(TextBoxDomainSS.Text.ToString()) == true) - //{ - // //****** "域名不能为空,请检查相关参数设置!" ****** - // MessageBox.Show(Application.Current.FindResource("MessageBoxShow_DomainNotEmpty").ToString()); - // return; - //} testDomain = TestDomainIsEmpty(); //传递模板类型 MainWindow.ReceiveConfigurationParameters[0] = "CloakPluginSS"; @@ -259,10 +241,6 @@ namespace ProxySU //无插件的界面 private void RadioButtonNonePluginSS_Checked(object sender, RoutedEventArgs e) { - //TextBlockServerListenPort.Visibility = Visibility.Visible; - //TextBoxServerListenPort.Visibility = Visibility.Visible; - //ButtonServerListenPort.Visibility = Visibility.Visible; - //隐藏Websocket Path TextBlockWebSocketPathSS.Visibility = Visibility.Collapsed; TextBoxWebSocketPathSS.Visibility = Visibility.Collapsed; diff --git a/ProxySU/Translations/ProxySU.en-US.xaml b/ProxySU/Translations/ProxySU.en-US.xaml index 40495df..31df416 100644 --- a/ProxySU/Translations/ProxySU.en-US.xaml +++ b/ProxySU/Translations/ProxySU.en-US.xaml @@ -93,8 +93,6 @@ Only the proxy software installed by ProxySU and related configurations are supported. Please make sure that important configurations have been backed up. Uninstalling agents installed using other methods or scripts is not supported. Are you sure you want to uninstall the agent software on the remote host? Start uninstall...... - - Home Forward @@ -115,6 +113,12 @@ V2Ray template library Popular Plan + VLESS + VLESS is a lightweight transmission protocol. Unlike VMess, VLESS don't depend on the system time. The authentication method is also UUID, but alterId is not required. Currently VLESS does not have its own encryption, please use it for reliable channels, such as TLS. Advantages: It can effectively reduce host resource consumption. Currently VLESS does not support sharing. Please ensure that both the client and server v2ray-core are the latest version. + XTLS works well on devices with low performance or without AES hard-decoding. For example, XTLS is used on hard routers, and the network speed can be doubled when the CPU is full, or the same The CPU occupancy rate is halved at Internet speed, and for mobile devices, the reduction in the amount of calculation means power saving.Version requires 4.29+ (Domain required) Not support CDN. + Lightweight protocol VLESS, occupies less host resources, data TLS encrypted transmission, and Caddy2 is used as a disguised website on the node. Suitable for VPS with low configuration, or shared nodes by multiple people, the server client version requires 4.27+ (Domain required) Notsupport CDN. + VLESS protocol, this type of solution with VMESS is more lightweight. Stability is strong, Caddy2 is front-facing, hidden proxy features, it is recognized as https traffic visiting the website, the strongest anti-blocking recognition, (Domain required) CDN is supported + VLESS protocol, this type of solution with VMESS is more lightweight. Based on HTTP/2 transmission. Completely implemented in accordance with the HTTP/2 standard, with Caddy2 as the front, hidden proxy features, H2C protocol forwarding to V2Ray, (Domain required) CloudFlare CDN is not supported TCP WebSocket Http/2 @@ -125,9 +129,11 @@ Random If TLS encryption is used, please keep the default port 443 Use the existing UUID and paste it directly into the box - mKCP Seed/QUIC key + QUIC Key: + mKCP Seed: Enable the mKCP Seed key to enhance anti-recognition, leave it blank to disable it. Version 4.24.2+ Path: + QUIC Encryption: Domain name: Mask a website: Set this item to increase the concealment of the agent (may be empty) @@ -140,8 +146,7 @@ TCP+TLS (self-signed certificate) Data encrypted transmission, the transmission protocol uses TLS, it will be recognized as TLS traffic, not equivalent to https traffic characteristics (no domain name required) Shadowrocket (ios) needs to manually open the "Allow Unsafe" option - Lightweight protocol VLESS, occupies less host resources, data TLS encrypted transmission, and Caddy2 is used as a disguised website on the node. Suitable for low-profile VPS, or shared nodes by multiple people, the server client version requires 4.27+ (domain name required) - Data encrypted transmission, the transmission protocol uses WebSocket, if TLS is not enabled, it will be recognized as WebSocket traffic. + Data encrypted transmission, the transmission protocol uses WebSocket, if TLS is not enabled, it will be recognized as WebSocket traffic. Data encrypted transmission, the transmission protocol uses WebSocket, and TLS is enabled, it will be recognized as TLS traffic. (Domain name required),Support CDN. WebSocket+TLS (self-signed certificate) Data encrypted transmission, the transmission protocol uses WebSocket, and TLS is enabled, and it will be recognized as TLS traffic. (No domain name required) @@ -177,12 +182,16 @@ Server address: Port: User ID(uuid): + Copy + Copied to the clipboard! + Empty content! alterId: The default is 16, and you can fill in a value not exceeding 64. If the client does not have this option, leave it blank Encryption method: Transfer Protocol: Camouflage type(Confuse): TLS: + Tip: Double-click the above content window to copy it to the clipboard. Path: mKCP Seed/QUIC key: default auto diff --git a/ProxySU/Translations/ProxySU.zh-CN.xaml b/ProxySU/Translations/ProxySU.zh-CN.xaml index c051c94..60df92c 100644 --- a/ProxySU/Translations/ProxySU.zh-CN.xaml +++ b/ProxySU/Translations/ProxySU.zh-CN.xaml @@ -118,6 +118,13 @@ V2Ray 模板库 推荐方案 + VLESS协议 + VLESS 是一个无状态的轻量传输协议,与 VMess 不同,VLESS 不依赖于系统时间,认证方式同样为 UUID,但不需要 alterId。目前 VLESS 没有自带加密,请用于可靠信道,如 TLS。优点:可以有效的降低主机资源消耗。目前 VLESS 不支持分享。VLESS 处于公测阶段,测试期间请确保客户端与服务端的 v2ray-core 均为最新版本。 + XTLS 在低性能或没有 AES 硬解的设备上效果出众,如在硬路由上换用 XTLS,同样跑满 CPU 时实现网速 翻倍,或是相同网速时 CPU 占用率减半,而对于移动设备,计算量减少意味着省电。服务端客户端版本要求4.29+ (需域名)不支持CDN。 + 轻量协议VLESS,占用更少主机资源,数据TLS加密传输,用Caddy2在节点上做伪装网站。适合配置低的VPS,或多人共用节点,服务端客户端版本要求4.27+ (需域名)不支持CDN。 + 使用VLESS协议,与VMESS的此类型方案,更轻量。稳定性强,Caddy2做前置,隐藏代理特征,被识别为访问网站的https流量,抗封锁识别最强,需要域名,支持CDN + 使用VLESS协议,与VMESS的此类型方案,更轻量。基于 HTTP/2 传输。完整按 HTTP/2 标准实现,Caddy2做前置,隐藏代理特征,H2C协议转发到V2Ray,需要域名,暂不支持CloudFlare的CDN + TCP传输协议 WebSocket传输协议 Http/2传输协议 @@ -128,9 +135,11 @@ 随机选择 若使用TLS加密,请保持默认的443端口 使用已有UUID,直接粘贴到框中 - mKCP Seed/QUIC密钥 + QUIC密钥: + mKCP Seed: 启用mKCP Seed密钥,可增强抗识别,留空则禁用,要求版本4.24.2+ 路径: + QUIC加密方式: 域名: 伪装网站: 设置此项可增加代理的隐蔽(可为空) @@ -143,7 +152,6 @@ TCP+TLS(自签证书) 数据加密传输,传输协议使用TLS,会被识别为TLS流量,不等同于https流量特征 (无需域名) Shadowrocket (ios)需要手动打开“允许不安全”选项 - 轻量协议VLESS,占用更少主机资源,数据TLS加密传输,用Caddy2在节点上做伪装网站。适合配置低的VPS,或多人共用节点,服务端客户端版本要求4.27+ (需域名) 数据加密传输,传输协议使用WebSocket,未启用TLS,将被识别为WebSocket流量。 数据加密传输,传输协议使用WebSocket,启用TLS,将被识别为TLS流量。(需要域名)支持CDN。 WebSocket+TLS(自签证书) @@ -180,14 +188,19 @@ 服务器地址(address): 端口(port): 用户ID(uuid): + 复制 + 已复制到剪贴板中! + 空内容! 额外ID: - 默认16,可以填不超过64的值,客户端没有此选项可不填 + 不超过64,客户端没此项可不填 加密方式: 传输协议: 伪装类型(混淆): 是否使用TLS: + 提示:双击以上内容窗,即可复制到剪贴板中。 路径(Path): - mKCP Seed/QUIC密钥: + QUIC密钥: + mKCP Seed: 默认auto 二维码/URL 以上参数可以手动或扫描输入客户端,用于官方客户端的配置和相关文件已经存放入目录下,点击 确定 按扭可打开 diff --git a/ProxySU/Translations/ProxySU.zh-TW.xaml b/ProxySU/Translations/ProxySU.zh-TW.xaml index a1ef498..03af2a7 100644 --- a/ProxySU/Translations/ProxySU.zh-TW.xaml +++ b/ProxySU/Translations/ProxySU.zh-TW.xaml @@ -115,6 +115,12 @@ V2Ray 模板庫 推薦方案 + VLESS協議 + VLESS 是一個無狀態的輕量傳輸協議,與 VMess 不同,VLESS 不依賴於系統時間,認證方式同樣為 UUID,但不需要 alterId。目前 VLESS 沒有自帶加密,請用於可靠信道,如 TLS。優點:可以有效的降低主機資源消耗。目前 VLESS 不支持分享。 VLESS 處於公測階段,測試期間請確保客戶端與服務端的 v2ray-core 均為最新版本。 + XTLS 在低性能或沒有AES 硬解的設備上效果出眾,如在硬路由上換用XTLS,同樣跑滿CPU 時實現網速翻倍,或是相同網速時CPU 佔用率減半,而對於移動設備,計算量減少意味著省電。服務端客戶端版本要求4.29+ (需域名)不支持CDN。 + 輕量協議VLESS,佔用更少主機資源,數據TLS加密傳輸,用Caddy2在節點上做偽裝網站。適合配置低的VPS,或多人共用節點,服務端客戶端版本要求4.27+ (需域名)不支持CDN。 + 使用VLESS協議,與VMESS的此類型方案,更輕量。穩定性強,Caddy2做前置,隱藏代理特徵,被識別為訪問網站的https流量,抗封鎖識別最強,需要域名,支持CDN + 使用VLESS協議,與VMESS的此類型方案,更輕量。基於 HTTP/2 傳輸。完整按 HTTP/2 標準實現,Caddy2做前置,隱藏代理特徵,H2C協議轉發到V2Ray,需要域名,暫不支持CloudFlare的CDN TCP傳輸協議 WebSocket傳輸協議 Http/2傳輸協議 @@ -125,9 +131,11 @@ 隨機選擇 若使用TLS加密,請保持默認的443端口 使用已有UUID,直接粘貼到框中 - mKCP Seed/QUIC密鑰 + QUIC密鑰: + mKCP Seed: 啟用mKCP Seed密鑰,可增強抗識別,留空則禁用,要求版本4.24.2+ 路徑: + QUIC加密方式: 域名: 偽裝網站: 設置此項可增加代理的隱蔽(可為空) @@ -140,7 +148,6 @@ TCP+TLS(自簽證書) 數據加密傳輸,傳輸協議使用TLS,會被識別為TLS流量,不等同於https流量特徵 (無需域名) Shadowrocket (ios)需要手動打開“允許不安全”選項 - 輕量協議VLESS,佔用更少主機資源,數據TLS加密傳輸,用Caddy2在節點上做偽裝網站。適合配置低的VPS,或多人共用節點,服務端客戶端版本要求4.27+ (需域名) 數據加密傳輸,傳輸協議使用WebSocket,未啟用TLS,將被識別為WebSocket流量。 數據加密傳輸,傳輸協議使用WebSocket,啟用TLS,將被識別為TLS流量。 (需要域名)支持CDN。 WebSocket+TLS(自簽證書) @@ -177,12 +184,16 @@ 服務器地址(address): 端口(port): 用戶ID(uuid): + 複製 + 已復製到剪貼板中! + 空內容! 額外ID: - 默認16,可以填不超過64的值,客戶端沒有此選項可不填 + 不超過64,客戶端沒此項可不填 加密方式: 傳輸協議: 偽裝類型(混淆): 是否使用TLS: + 提示:雙擊以上內容窗,即可複製到剪貼板中。 路徑(Path): mKCP Seed/QUIC密鑰: 默認auto diff --git a/ProxySU/V2RayTemplateWindow.xaml b/ProxySU/V2RayTemplateWindow.xaml index d481434..9438af8 100644 --- a/ProxySU/V2RayTemplateWindow.xaml +++ b/ProxySU/V2RayTemplateWindow.xaml @@ -67,6 +67,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -94,11 +131,10 @@ - - - + + @@ -177,17 +213,17 @@ - + - + - + - + - + - + @@ -259,14 +295,20 @@ - - - + + + + + + + + + diff --git a/ProxySU/V2RayTemplateWindow.xaml.cs b/ProxySU/V2RayTemplateWindow.xaml.cs index d56f7bd..52c0438 100644 --- a/ProxySU/V2RayTemplateWindow.xaml.cs +++ b/ProxySU/V2RayTemplateWindow.xaml.cs @@ -19,10 +19,35 @@ namespace ProxySU /// public partial class WindowTemplateConfiguration : Window { + //QUIC 加密方法 + public class EncryptionMethodInfo + { + public string Name { get; set; } + public string Value { get; set; } + } + public WindowTemplateConfiguration() { InitializeComponent(); - //RadioButtonTCP.IsChecked = true; + + #region 加密方法选择 初始设置为chacha20-poly1305 + List methodList = new List(); + + methodList.Add(new EncryptionMethodInfo { Name = "chacha20-poly1305", Value = "chacha20-poly1305" }); + methodList.Add(new EncryptionMethodInfo { Name = "aes-128-gcm", Value = "aes-128-gcm" }); + methodList.Add(new EncryptionMethodInfo { Name = "none", Value = "none" }); + + ComboBoxEncryptionMethodInfo.ItemsSource = methodList; + + ComboBoxEncryptionMethodInfo.DisplayMemberPath = "Name";//显示出来的值 + ComboBoxEncryptionMethodInfo.SelectedValuePath = "Value";//实际选中后获取的结果的值 + ComboBoxEncryptionMethodInfo.SelectedIndex = 0; + + DataContext = this; + #endregion + + //隐藏QUIC密钥 + FirstQuicHideEncryption(); } //取消不在当前活动选项卡中的其他所有选项卡中的所有RadioBuuton的选中状态 //代码参考网址:https://blog.csdn.net/weixin_42583999/article/details/103468857 @@ -45,9 +70,13 @@ namespace ProxySU } } + //传递所选择的参数与模板方案 private void ButtondDecide_Click(object sender, RoutedEventArgs e) { - //UncheckLayouts(TabControlTemplate); + bool domainNotEmpty = true; + + #region TCP 传输协议(VMESS) + //TCP模式被选中 if (RadioButtonTCP.IsChecked == true) { @@ -57,6 +86,7 @@ namespace ProxySU MainWindow.ReceiveConfigurationParameters[8] = RadioButtonTCP.Content.ToString(); } + //TCP+http伪装模式被选中 else if (RadioButtonTCPhttp.IsChecked == true) { @@ -68,15 +98,12 @@ namespace ProxySU MainWindow.ReceiveConfigurationParameters[5] = "http"; } + //TCP+TLS模式被选中 else if (RadioButtonTCP2TLS.IsChecked == true) { - if (string.IsNullOrEmpty(TextBoxDomain.Text.ToString()) == true) - { - //****** "域名不能为空,请检查相关参数设置!" ****** - MessageBox.Show(Application.Current.FindResource("MessageBoxShow_DomainNotEmpty").ToString()); - return; - } + domainNotEmpty = TestDomainIsEmpty(); + //传递模板类型 MainWindow.ReceiveConfigurationParameters[0] = "tcpTLS"; //传递方案名称 @@ -86,6 +113,7 @@ namespace ProxySU MainWindow.ReceiveConfigurationParameters[4] = TextBoxDomain.Text.ToString(); } + //tcp+TLS(自签证书)模式被选中 else if (RadioButtonTcpTLS2SelfSigned.IsChecked == true) { @@ -98,15 +126,35 @@ namespace ProxySU // MainWindow.ReceiveConfigurationParameters[4] = TextBoxDomain.Text.ToString(); } - //VLESS+TCP+TLS+Caddy模式选中 + + #endregion + + #region VLESS协议 + + //VLESS+TCP+XTLS+Web模式选中 + else if (RadioButtonVlessXtlsTcp.IsChecked == true) + { + domainNotEmpty = TestDomainIsEmpty(); + + //传递模板类型 + MainWindow.ReceiveConfigurationParameters[0] = "VlessXtlsTcp"; + //传递方案名称 + MainWindow.ReceiveConfigurationParameters[8] = RadioButtonVlessXtlsTcp.Content.ToString(); + + //传递域名 + MainWindow.ReceiveConfigurationParameters[4] = TextBoxDomain.Text.ToString(); + //传递伪装网站 + MainWindow.ReceiveConfigurationParameters[7] = TextBoxMaskSites.Text.ToString(); + //处理伪装网站域名中的前缀 + DisguiseURLprocessing(); + + } + + //VLESS+TCP+TLS+Web模式选中 else if (RadioButtonVlessTcpTlsWeb.IsChecked == true) { - if (string.IsNullOrEmpty(TextBoxDomain.Text.ToString()) == true) - { - //****** "域名不能为空,请检查相关参数设置!" ****** - MessageBox.Show(Application.Current.FindResource("MessageBoxShow_DomainNotEmpty").ToString()); - return; - } + domainNotEmpty = TestDomainIsEmpty(); + //传递模板类型 MainWindow.ReceiveConfigurationParameters[0] = "VlessTcpTlsWeb"; //传递方案名称 @@ -118,20 +166,53 @@ namespace ProxySU MainWindow.ReceiveConfigurationParameters[7] = TextBoxMaskSites.Text.ToString(); //处理伪装网站域名中的前缀 DisguiseURLprocessing(); - //if (TextBoxMaskSites.Text.ToString().Length >= 7) - //{ - // string testDomain = TextBoxMaskSites.Text.Substring(0, 7); - // if (String.Equals(testDomain, "https:/") || String.Equals(testDomain, "http://")) - // { - // //MessageBox.Show(testDomain); - // MainWindow.ReceiveConfigurationParameters[7] = TextBoxMaskSites.Text.Replace("/", "\\/"); - // } - // else - // { - // MainWindow.ReceiveConfigurationParameters[7] = "http:\\/\\/" + TextBoxMaskSites.Text; - // } - //} + } + + //VLESS+WebSocket+TLS+Web模式选中 + else if (RadioButtonVlessWebSocketTlsWeb.IsChecked == true) + { + domainNotEmpty = TestDomainIsEmpty(); + + //传递模板类型 + MainWindow.ReceiveConfigurationParameters[0] = "VlessWebSocketTlsWeb"; + //传递方案名称 + MainWindow.ReceiveConfigurationParameters[8] = RadioButtonVlessWebSocketTlsWeb.Content.ToString(); + + //传递路径 + MainWindow.ReceiveConfigurationParameters[6] = TextBoxPath.Text.ToString(); + //传递域名 + MainWindow.ReceiveConfigurationParameters[4] = TextBoxDomain.Text.ToString(); + //传递伪装网站 + MainWindow.ReceiveConfigurationParameters[7] = TextBoxMaskSites.Text.ToString(); + //处理伪装网站域名中的前缀 + DisguiseURLprocessing(); + } + + //VLESS+http2+TLS+Web模式选中 + else if (RadioButtonVlessHttp2Web.IsChecked == true) + { + domainNotEmpty = TestDomainIsEmpty(); + + //传递模板类型 + MainWindow.ReceiveConfigurationParameters[0] = "VlessHttp2Web"; + //传递方案名称 + MainWindow.ReceiveConfigurationParameters[8] = RadioButtonVlessHttp2Web.Content.ToString(); + + //传递路径 + MainWindow.ReceiveConfigurationParameters[6] = TextBoxPath.Text.ToString(); + //传递域名 + MainWindow.ReceiveConfigurationParameters[4] = TextBoxDomain.Text.ToString(); + //传递伪装网站 + MainWindow.ReceiveConfigurationParameters[7] = TextBoxMaskSites.Text.ToString(); + //处理伪装网站域名中的前缀 + DisguiseURLprocessing(); + } + + #endregion + + #region WebSocket传输协议(VMESS) + //webSocket模式被选中 else if (RadioButtonWebSocket.IsChecked == true) { @@ -141,21 +222,18 @@ namespace ProxySU MainWindow.ReceiveConfigurationParameters[8] = RadioButtonWebSocket.Content.ToString(); } + //WebSocket+TLS模式被选中 else if (RadioButtonWebSocketTLS.IsChecked == true) { - if (string.IsNullOrEmpty(TextBoxDomain.Text.ToString()) == true) - { - //****** "域名不能为空,请检查相关参数设置!" ****** - MessageBox.Show(Application.Current.FindResource("MessageBoxShow_DomainNotEmpty").ToString()); - return; - } + domainNotEmpty = TestDomainIsEmpty(); + //传递模板类型 MainWindow.ReceiveConfigurationParameters[0] = "WebSocketTLS"; //传递方案名称 MainWindow.ReceiveConfigurationParameters[8] = RadioButtonWebSocketTLS.Content.ToString(); //传递路径 - MainWindow.ReceiveConfigurationParameters[3] = TextBoxPath.Text.ToString(); + MainWindow.ReceiveConfigurationParameters[6] = TextBoxPath.Text.ToString(); //传递域名 MainWindow.ReceiveConfigurationParameters[4] = TextBoxDomain.Text.ToString(); @@ -164,39 +242,24 @@ namespace ProxySU //WebSocket+TLS+Web模式被选中 else if (RadioButtonWebSocketTLS2Web.IsChecked == true|| RadioButtonWebSocketTLS2WebHot.IsChecked==true) { - if (string.IsNullOrEmpty(TextBoxDomain.Text.ToString()) == true) - { - //****** "域名不能为空,请检查相关参数设置!" ****** - MessageBox.Show(Application.Current.FindResource("MessageBoxShow_DomainNotEmpty").ToString()); - return; - } + domainNotEmpty = TestDomainIsEmpty(); + //传递模板类型 MainWindow.ReceiveConfigurationParameters[0] = "WebSocketTLS2Web"; //传递方案名称 MainWindow.ReceiveConfigurationParameters[8] = RadioButtonWebSocketTLS2Web.Content.ToString(); //传递路径 - MainWindow.ReceiveConfigurationParameters[3] = TextBoxPath.Text.ToString(); + MainWindow.ReceiveConfigurationParameters[6] = TextBoxPath.Text.ToString(); //传递域名 MainWindow.ReceiveConfigurationParameters[4] = TextBoxDomain.Text.ToString(); //传递伪装网站 MainWindow.ReceiveConfigurationParameters[7] = TextBoxMaskSites.Text.ToString(); //处理伪装网站域名中的前缀 DisguiseURLprocessing(); - //if (TextBoxMaskSites.Text.ToString().Length >= 7) - //{ - // string testDomain = TextBoxMaskSites.Text.Substring(0, 7); - // if (String.Equals(testDomain, "https:/") || String.Equals(testDomain, "http://")) - // { - // //MessageBox.Show(testDomain); - // MainWindow.ReceiveConfigurationParameters[7] = TextBoxMaskSites.Text.Replace("/", "\\/"); - // } - // else - // { - // MainWindow.ReceiveConfigurationParameters[7] = "http:\\/\\/" + TextBoxMaskSites.Text; - // } - //} + } + //WebSocket+TLS(自签证书)模式被选中 else if (RadioButtonWebSocketTLSselfSigned.IsChecked == true) { @@ -206,67 +269,54 @@ namespace ProxySU MainWindow.ReceiveConfigurationParameters[8] = RadioButtonWebSocketTLSselfSigned.Content.ToString(); //传递路径 - MainWindow.ReceiveConfigurationParameters[3] = TextBoxPath.Text.ToString(); + MainWindow.ReceiveConfigurationParameters[6] = TextBoxPath.Text.ToString(); //传递域名 //MainWindow.ReceiveConfigurationParameters[4] = TextBoxDomain.Text.ToString(); } + + #endregion + + #region http2传输协议(VMESS) + //http2模式被选中 else if (RadioButtonHTTP2.IsChecked == true) { - if (string.IsNullOrEmpty(TextBoxDomain.Text.ToString()) == true) - { - //****** "域名不能为空,请检查相关参数设置!" ****** - MessageBox.Show(Application.Current.FindResource("MessageBoxShow_DomainNotEmpty").ToString()); - return; - } + domainNotEmpty = TestDomainIsEmpty(); + //传递模板类型 MainWindow.ReceiveConfigurationParameters[0] = "Http2"; //传递方案名称 MainWindow.ReceiveConfigurationParameters[8] = RadioButtonHTTP2.Content.ToString(); //传递路径 - MainWindow.ReceiveConfigurationParameters[3] = TextBoxPath.Text.ToString(); + MainWindow.ReceiveConfigurationParameters[6] = TextBoxPath.Text.ToString(); //传递域名 MainWindow.ReceiveConfigurationParameters[4] = TextBoxDomain.Text.ToString(); } + //http2+TLS+Web模式被选中 else if (RadioButtonHTTP2Web.IsChecked == true || RadioButtonHTTP2WebHot.IsChecked == true) { - if (string.IsNullOrEmpty(TextBoxDomain.Text.ToString()) == true) - { - //****** "域名不能为空,请检查相关参数设置!" ****** - MessageBox.Show(Application.Current.FindResource("MessageBoxShow_DomainNotEmpty").ToString()); - return; - } + domainNotEmpty = TestDomainIsEmpty(); + //传递模板类型 MainWindow.ReceiveConfigurationParameters[0] = "http2Web"; //传递方案名称 MainWindow.ReceiveConfigurationParameters[8] = RadioButtonHTTP2Web.Content.ToString(); //传递路径 - MainWindow.ReceiveConfigurationParameters[3] = TextBoxPath.Text.ToString(); + MainWindow.ReceiveConfigurationParameters[6] = TextBoxPath.Text.ToString(); //传递域名 MainWindow.ReceiveConfigurationParameters[4] = TextBoxDomain.Text.ToString(); //传递伪装网站 MainWindow.ReceiveConfigurationParameters[7] = TextBoxMaskSites.Text.ToString(); //处理伪装网站域名中的前缀 DisguiseURLprocessing(); - //if (TextBoxMaskSites.Text.ToString().Length >= 7) - //{ - // string testDomain = TextBoxMaskSites.Text.Substring(0, 7); - // if (String.Equals(testDomain, "https:/") || String.Equals(testDomain, "http://")) - // { - // //MessageBox.Show(testDomain); - // MainWindow.ReceiveConfigurationParameters[7] = TextBoxMaskSites.Text.Replace("/", "\\/"); - // } - // else - // { - // MainWindow.ReceiveConfigurationParameters[7] = "http:\\/\\/" + TextBoxMaskSites.Text; - // } - //} + } + //http2(自签证书)模式被选中 else if (RadioButtonHTTP2selfSigned.IsChecked == true) { @@ -276,11 +326,16 @@ namespace ProxySU MainWindow.ReceiveConfigurationParameters[8] = RadioButtonHTTP2selfSigned.Content.ToString(); //传递路径 - MainWindow.ReceiveConfigurationParameters[3] = TextBoxPath.Text.ToString(); + MainWindow.ReceiveConfigurationParameters[6] = TextBoxPath.Text.ToString(); //传递域名 //MainWindow.ReceiveConfigurationParameters[4] = TextBoxDomain.Text.ToString(); } + + #endregion + + #region mKCP 传输协议 (VMESS) + //mKCP无伪装模式被选中 else if (RadioButtonMkcpNone.IsChecked == true) { @@ -288,14 +343,15 @@ namespace ProxySU MainWindow.ReceiveConfigurationParameters[0] = "mKCPNone"; //传递方案名称 MainWindow.ReceiveConfigurationParameters[8] = RadioButtonMkcpNone.Content.ToString(); - + //传递伪装类型 MainWindow.ReceiveConfigurationParameters[5] = "none"; //传递mKCP Seed - if (String.IsNullOrEmpty(TextBoxQuicUUID.Text)==false) + if (String.IsNullOrEmpty(TextBoxQuicAndMkcpSeedUUID.Text)==false) { - MainWindow.ReceiveConfigurationParameters[6] = TextBoxQuicUUID.Text; + MainWindow.ReceiveConfigurationParameters[6] = TextBoxQuicAndMkcpSeedUUID.Text; } } + //mKCP+srtp伪装模式被选中 else if (RadioButton2mKCP2SRTP.IsChecked == true) { @@ -303,14 +359,15 @@ namespace ProxySU MainWindow.ReceiveConfigurationParameters[0] = "mKCP2SRTP"; //传递方案名称 MainWindow.ReceiveConfigurationParameters[8] = RadioButton2mKCP2SRTP.Content.ToString(); - + //传递伪装类型 MainWindow.ReceiveConfigurationParameters[5] = "srtp"; //传递mKCP Seed - if (String.IsNullOrEmpty(TextBoxQuicUUID.Text) == false) + if (String.IsNullOrEmpty(TextBoxQuicAndMkcpSeedUUID.Text) == false) { - MainWindow.ReceiveConfigurationParameters[6] = TextBoxQuicUUID.Text; + MainWindow.ReceiveConfigurationParameters[6] = TextBoxQuicAndMkcpSeedUUID.Text; } } + //mKCP+utp伪装模式被选中 else if (RadioButton2mKCPuTP.IsChecked == true) { @@ -318,14 +375,15 @@ namespace ProxySU MainWindow.ReceiveConfigurationParameters[0] = "mKCPuTP"; //传递方案名称 MainWindow.ReceiveConfigurationParameters[8] = RadioButton2mKCPuTP.Content.ToString(); - + //传递伪装类型 MainWindow.ReceiveConfigurationParameters[5] = "utp"; //传递mKCP Seed - if (String.IsNullOrEmpty(TextBoxQuicUUID.Text) == false) + if (String.IsNullOrEmpty(TextBoxQuicAndMkcpSeedUUID.Text) == false) { - MainWindow.ReceiveConfigurationParameters[6] = TextBoxQuicUUID.Text; + MainWindow.ReceiveConfigurationParameters[6] = TextBoxQuicAndMkcpSeedUUID.Text; } } + //mKCP+wechat-video伪装模式被选中 else if (RadioButton2mKCP2WechatVideo.IsChecked == true) { @@ -333,14 +391,15 @@ namespace ProxySU MainWindow.ReceiveConfigurationParameters[0] = "mKCP2WechatVideo"; //传递方案名称 MainWindow.ReceiveConfigurationParameters[8] = RadioButton2mKCP2WechatVideo.Content.ToString(); - + //传递伪装类型 MainWindow.ReceiveConfigurationParameters[5] = "wechat-video"; //传递mKCP Seed - if (String.IsNullOrEmpty(TextBoxQuicUUID.Text) == false) + if (String.IsNullOrEmpty(TextBoxQuicAndMkcpSeedUUID.Text) == false) { - MainWindow.ReceiveConfigurationParameters[6] = TextBoxQuicUUID.Text; + MainWindow.ReceiveConfigurationParameters[6] = TextBoxQuicAndMkcpSeedUUID.Text; } } + //mKCP+dtls伪装模式被选中 else if (RadioButton2mKCP2DTLS.IsChecked == true) { @@ -348,14 +407,15 @@ namespace ProxySU MainWindow.ReceiveConfigurationParameters[0] = "mKCP2DTLS"; //传递方案名称 MainWindow.ReceiveConfigurationParameters[8] = RadioButton2mKCP2DTLS.Content.ToString(); - + //传递伪装类型 MainWindow.ReceiveConfigurationParameters[5] = "dtls"; //传递mKCP Seed - if (String.IsNullOrEmpty(TextBoxQuicUUID.Text) == false) + if (String.IsNullOrEmpty(TextBoxQuicAndMkcpSeedUUID.Text) == false) { - MainWindow.ReceiveConfigurationParameters[6] = TextBoxQuicUUID.Text; + MainWindow.ReceiveConfigurationParameters[6] = TextBoxQuicAndMkcpSeedUUID.Text; } } + //mKCP+wireguard伪装模式被选中 else if (RadioButton2mKCP2WireGuard.IsChecked == true) { @@ -363,14 +423,19 @@ namespace ProxySU MainWindow.ReceiveConfigurationParameters[0] = "mKCP2WireGuard"; //传递方案名称 MainWindow.ReceiveConfigurationParameters[8] = RadioButton2mKCP2WireGuard.Content.ToString(); - + //传递伪装类型 MainWindow.ReceiveConfigurationParameters[5] = "wireguard"; //传递mKCP Seed - if (String.IsNullOrEmpty(TextBoxQuicUUID.Text) == false) + if (String.IsNullOrEmpty(TextBoxQuicAndMkcpSeedUUID.Text) == false) { - MainWindow.ReceiveConfigurationParameters[6] = TextBoxQuicUUID.Text; + MainWindow.ReceiveConfigurationParameters[6] = TextBoxQuicAndMkcpSeedUUID.Text; } } + + #endregion + + #region QUIC传输协议(VMESS) + //QUIC无伪装模式被选中 else if (RadioButtonQuicNone.IsChecked == true) { @@ -378,10 +443,14 @@ namespace ProxySU MainWindow.ReceiveConfigurationParameters[0] = "QuicNone"; //传递方案名称 MainWindow.ReceiveConfigurationParameters[8] = RadioButtonQuicNone.Content.ToString(); - + //传递伪装类型 MainWindow.ReceiveConfigurationParameters[5] = "none"; - MainWindow.ReceiveConfigurationParameters[6] = TextBoxQuicUUID.Text; + //QUIC 密钥 + MainWindow.ReceiveConfigurationParameters[6] = TextBoxQuicAndMkcpSeedUUID.Text; + //QUIC加密方法 + MainWindow.ReceiveConfigurationParameters[3] = GetEncryptionMethodSS(); } + //QUIC+srtp伪装模式被选中 else if (RadioButtonQuicSRTP.IsChecked == true) { @@ -389,10 +458,14 @@ namespace ProxySU MainWindow.ReceiveConfigurationParameters[0] = "QuicSRTP"; //传递方案名称 MainWindow.ReceiveConfigurationParameters[8] = RadioButtonQuicSRTP.Content.ToString(); - + //传递伪装类型 MainWindow.ReceiveConfigurationParameters[5] = "srtp"; - MainWindow.ReceiveConfigurationParameters[6] = TextBoxQuicUUID.Text; + //QUIC 密钥 + MainWindow.ReceiveConfigurationParameters[6] = TextBoxQuicAndMkcpSeedUUID.Text; + //QUIC加密方法 + MainWindow.ReceiveConfigurationParameters[3] = GetEncryptionMethodSS(); } + //QUIC+utp伪装模式被选中 else if (RadioButtonQuic2uTP.IsChecked == true) { @@ -400,10 +473,14 @@ namespace ProxySU MainWindow.ReceiveConfigurationParameters[0] = "Quic2uTP"; //传递方案名称 MainWindow.ReceiveConfigurationParameters[8] = RadioButtonQuic2uTP.Content.ToString(); - + //传递伪装类型 MainWindow.ReceiveConfigurationParameters[5] = "utp"; - MainWindow.ReceiveConfigurationParameters[6] = TextBoxQuicUUID.Text; + //QUIC 密钥 + MainWindow.ReceiveConfigurationParameters[6] = TextBoxQuicAndMkcpSeedUUID.Text; + //QUIC加密方法 + MainWindow.ReceiveConfigurationParameters[3] = GetEncryptionMethodSS(); } + //QUIC+wechat-video伪装模式被选中 else if (RadioButtonQuicWechatVideo.IsChecked == true) { @@ -411,10 +488,14 @@ namespace ProxySU MainWindow.ReceiveConfigurationParameters[0] = "QuicWechatVideo"; //传递方案名称 MainWindow.ReceiveConfigurationParameters[8] = RadioButtonQuicWechatVideo.Content.ToString(); - + //传递伪装类型 MainWindow.ReceiveConfigurationParameters[5] = "wechat-video"; - MainWindow.ReceiveConfigurationParameters[6] = TextBoxQuicUUID.Text; + //QUIC 密钥 + MainWindow.ReceiveConfigurationParameters[6] = TextBoxQuicAndMkcpSeedUUID.Text; + //QUIC加密方法 + MainWindow.ReceiveConfigurationParameters[3] = GetEncryptionMethodSS(); } + //QUIC+dtls伪装模式被选中 else if (RadioButtonQuicDTLS.IsChecked == true) { @@ -422,10 +503,14 @@ namespace ProxySU MainWindow.ReceiveConfigurationParameters[0] = "QuicDTLS"; //传递方案名称 MainWindow.ReceiveConfigurationParameters[8] = RadioButtonQuicDTLS.Content.ToString(); - + //传递伪装类型 MainWindow.ReceiveConfigurationParameters[5] = "dtls"; - MainWindow.ReceiveConfigurationParameters[6] = TextBoxQuicUUID.Text; + //QUIC 密钥 + MainWindow.ReceiveConfigurationParameters[6] = TextBoxQuicAndMkcpSeedUUID.Text; + //QUIC加密方法 + MainWindow.ReceiveConfigurationParameters[3] = GetEncryptionMethodSS(); } + //QUIC+wireguard伪装模式被选中 else if (RadioButtonQuicWireGuard.IsChecked == true) { @@ -433,27 +518,29 @@ namespace ProxySU MainWindow.ReceiveConfigurationParameters[0] = "QuicWireGuard"; //传递方案名称 MainWindow.ReceiveConfigurationParameters[8] = RadioButtonQuicWireGuard.Content.ToString(); - + //传递伪装类型 MainWindow.ReceiveConfigurationParameters[5] = "wireguard"; - MainWindow.ReceiveConfigurationParameters[6] = TextBoxQuicUUID.Text; + //QUIC 密钥 + MainWindow.ReceiveConfigurationParameters[6] = TextBoxQuicAndMkcpSeedUUID.Text; + //QUIC加密方法 + MainWindow.ReceiveConfigurationParameters[3] = GetEncryptionMethodSS(); } - ////默认模式为 TCP - //else - //{ - // //传递模板类型 - // MainWindow.ReceiveConfigurationParameters[0] = "TCP"; - // //传递方案名称 - // MainWindow.ReceiveConfigurationParameters[8] = RadioButtonTCP.Content.ToString(); - //} + #endregion + //传递服务端口 MainWindow.ReceiveConfigurationParameters[1] = TextBoxServerListenPort.Text.ToString(); //传递uuid MainWindow.ReceiveConfigurationParameters[2] = TextBoxNewUUID.Text.ToString(); - this.Close(); + if (domainNotEmpty) + { + this.Close(); + } + } + //取消选择返回主窗口 private void ButtondCancel_Click(object sender, RoutedEventArgs e) => Close(); @@ -463,8 +550,8 @@ namespace ProxySU //处理伪装网站域名中的前缀 if (TextBoxMaskSites.Text.ToString().Length >= 7) { - string testDomain = TextBoxMaskSites.Text.Substring(0, 7); - if (String.Equals(testDomain, "https:/") || String.Equals(testDomain, "http://")) + string testDomainMask = TextBoxMaskSites.Text.Substring(0, 7); + if (String.Equals(testDomainMask, "https:/") || String.Equals(testDomainMask, "http://")) { //MessageBox.Show(testDomain); MainWindow.ReceiveConfigurationParameters[7] = TextBoxMaskSites.Text.Replace("/", "\\/"); @@ -475,28 +562,25 @@ namespace ProxySU } } } + #region 其他设置中的界面控制 + private void RadioButtonTCP_Checked(object sender, RoutedEventArgs e) { - //TextBlockServerListenPort.Visibility = Visibility.Visible; - //TextBoxServerListenPort.Visibility = Visibility.Visible; - //ButtonServerListenPort.Visibility = Visibility.Visible; + //隐藏mKCP项 + HideMkcpSeed(); + //隐藏QUIC密钥 - TextBlockQuicUUID.Visibility = Visibility.Collapsed; - TextBoxQuicUUID.Visibility = Visibility.Collapsed; - ButtonQuicUUID.Visibility = Visibility.Collapsed; - TextBlockMkcpUUID.Visibility = Visibility.Collapsed; + HideQuic(); + //隐藏Path - TextBlockPath.Visibility = Visibility.Collapsed; - TextBoxPath.Visibility = Visibility.Collapsed; - ButtonPath.Visibility = Visibility.Collapsed; + HidePath(); + //隐藏域名 - TextBlockDomain.Visibility = Visibility.Collapsed; - TextBoxDomain.Visibility = Visibility.Collapsed; - ButtonDomain.Visibility = Visibility.Collapsed; + HideDomain(); + //隐藏伪装网站 - TextBlockMaskSites.Visibility = Visibility.Collapsed; - TextBoxMaskSites.Visibility = Visibility.Collapsed; + HideMaskSites(); Guid uuid = Guid.NewGuid(); @@ -509,27 +593,22 @@ namespace ProxySU } private void RadioButtonTCPhttp_Checked(object sender, RoutedEventArgs e) { - //TextBlockServerListenPort.Visibility = Visibility.Visible; - //TextBoxServerListenPort.Visibility = Visibility.Visible; - //ButtonServerListenPort.Visibility = Visibility.Visible; TextBoxServerListenPort.Text = "80"; + + //隐藏mKCP项 + HideMkcpSeed(); + + //隐藏QUIC密钥 + HideQuic(); + //隐藏Path - TextBlockPath.Visibility = Visibility.Collapsed; - TextBoxPath.Visibility = Visibility.Collapsed; - ButtonPath.Visibility = Visibility.Collapsed; + HidePath(); //隐藏域名 - TextBlockDomain.Visibility = Visibility.Collapsed; - TextBoxDomain.Visibility = Visibility.Collapsed; - ButtonDomain.Visibility = Visibility.Collapsed; - //隐藏QUIC密钥 - TextBlockQuicUUID.Visibility = Visibility.Collapsed; - TextBoxQuicUUID.Visibility = Visibility.Collapsed; - ButtonQuicUUID.Visibility = Visibility.Collapsed; - TextBlockMkcpUUID.Visibility = Visibility.Collapsed; + HideDomain(); + //隐藏伪装网站 - TextBlockMaskSites.Visibility = Visibility.Collapsed; - TextBoxMaskSites.Visibility = Visibility.Collapsed; + HideMaskSites(); Guid uuid = Guid.NewGuid(); TextBoxNewUUID.Text = uuid.ToString(); @@ -539,23 +618,45 @@ namespace ProxySU private void RadioButtonTCP2TLS_Checked(object sender, RoutedEventArgs e) { TextBoxServerListenPort.Text = "443"; - //隐藏Path - TextBlockPath.Visibility = Visibility.Collapsed; - TextBoxPath.Visibility = Visibility.Collapsed; - //TextBoxPath.Text = "/ray"; - ButtonPath.Visibility = Visibility.Collapsed; - //显示域名 - TextBlockDomain.Visibility = Visibility.Visible; - TextBoxDomain.Visibility = Visibility.Visible; - //ButtonDomain.Visibility = Visibility.Visible; + + //隐藏mKCP项 + HideMkcpSeed(); + //隐藏QUIC密钥 - TextBlockQuicUUID.Visibility = Visibility.Collapsed; - TextBoxQuicUUID.Visibility = Visibility.Collapsed; - ButtonQuicUUID.Visibility = Visibility.Collapsed; - TextBlockMkcpUUID.Visibility = Visibility.Collapsed; + HideQuic(); + + //隐藏Path + HidePath(); + + //显示域名 + ShowDomain(); + //隐藏伪装网站 - TextBlockMaskSites.Visibility = Visibility.Collapsed; - TextBoxMaskSites.Visibility = Visibility.Collapsed; + HideMaskSites(); + + Guid uuid = Guid.NewGuid(); + TextBoxNewUUID.Text = uuid.ToString(); + //清除其他选项卡中的选项 + UncheckLayouts((TabItem)TabControlTemplate.SelectedItem); + } + private void RadioButtonVlessTcpTlsWeb_Checked(object sender, RoutedEventArgs e) + { + TextBoxServerListenPort.Text = "443"; + + //隐藏mKCP项 + HideMkcpSeed(); + + //隐藏QUIC密钥 + HideQuic(); + + //隐藏Path + HidePath(); + + //显示域名 + ShowDomain(); + + //显示伪装网站 + ShowMaskSites(); Guid uuid = Guid.NewGuid(); TextBoxNewUUID.Text = uuid.ToString(); @@ -565,23 +666,21 @@ namespace ProxySU private void RadioButtonTCP2TLSnoDomain_Checked(object sender, RoutedEventArgs e) { TextBoxServerListenPort.Text = "443"; - //隐藏Path - TextBlockPath.Visibility = Visibility.Collapsed; - TextBoxPath.Visibility = Visibility.Collapsed; - //TextBoxPath.Text = "/ray"; - ButtonPath.Visibility = Visibility.Collapsed; - //隐藏域名 - TextBlockDomain.Visibility = Visibility.Collapsed; - TextBoxDomain.Visibility = Visibility.Collapsed; - //ButtonDomain.Visibility = Visibility.Visible; + + //隐藏mKCP项 + HideMkcpSeed(); + //隐藏QUIC密钥 - TextBlockQuicUUID.Visibility = Visibility.Collapsed; - TextBoxQuicUUID.Visibility = Visibility.Collapsed; - ButtonQuicUUID.Visibility = Visibility.Collapsed; - TextBlockMkcpUUID.Visibility = Visibility.Collapsed; + HideQuic(); + + //隐藏Path + HidePath(); + + //隐藏域名 + HideDomain(); + //隐藏伪装网站 - TextBlockMaskSites.Visibility = Visibility.Collapsed; - TextBoxMaskSites.Visibility = Visibility.Collapsed; + HideMaskSites(); Guid uuid = Guid.NewGuid(); TextBoxNewUUID.Text = uuid.ToString(); @@ -590,30 +689,22 @@ namespace ProxySU } private void RadioButtonWebSocketTLS2Web_Checked(object sender, RoutedEventArgs e) { - //TextBlockServerListenPort.Visibility = Visibility.Visible; - //TextBoxServerListenPort.Visibility = Visibility.Visible; - //ButtonServerListenPort.Visibility = Visibility.Visible; TextBoxServerListenPort.Text = "443"; - //显示Path - TextBlockPath.Visibility = Visibility.Visible; - TextBoxPath.Visibility = Visibility.Visible; - TextBoxPath.Text = "/ray"; - ButtonPath.Visibility = Visibility.Visible; - //显示域名 - TextBlockDomain.Visibility = Visibility.Visible; - TextBoxDomain.Visibility = Visibility.Visible; - //ButtonDomain.Visibility = Visibility.Visible; + + //隐藏mKCP项 + HideMkcpSeed(); + //隐藏QUIC密钥 - TextBlockQuicUUID.Visibility = Visibility.Collapsed; - TextBoxQuicUUID.Visibility = Visibility.Collapsed; - ButtonQuicUUID.Visibility = Visibility.Collapsed; - TextBlockMkcpUUID.Visibility = Visibility.Collapsed; + HideQuic(); + + //显示Path + ShowPath(); + + //显示域名 + ShowDomain(); + //显示伪装网站 - //TextBlockMaskSites.Visibility = Visibility.Visible; - //TextBoxMaskSites.Visibility = Visibility.Visible; - //隐藏伪装网站 - TextBlockMaskSites.Visibility = Visibility.Collapsed; - TextBoxMaskSites.Visibility = Visibility.Collapsed; + ShowMaskSites(); Guid uuid = Guid.NewGuid(); TextBoxNewUUID.Text = uuid.ToString(); @@ -622,28 +713,22 @@ namespace ProxySU } private void RadioButtonWebSocketTLSselfSigned_Checked(object sender, RoutedEventArgs e) { - //TextBlockServerListenPort.Visibility = Visibility.Visible; - //TextBoxServerListenPort.Visibility = Visibility.Visible; - //ButtonServerListenPort.Visibility = Visibility.Visible; TextBoxServerListenPort.Text = "443"; - //显示Path - TextBlockPath.Visibility = Visibility.Visible; - TextBoxPath.Visibility = Visibility.Visible; - TextBoxPath.Text = "/ray"; - ButtonPath.Visibility = Visibility.Visible; - //隐藏域名 - TextBlockDomain.Visibility = Visibility.Collapsed; - TextBoxDomain.Visibility = Visibility.Collapsed; - //TextBoxDomain.Tag = "可为空"; - //ButtonDomain.Visibility = Visibility.Visible; + + //隐藏mKCP项 + HideMkcpSeed(); + //隐藏QUIC密钥 - TextBlockQuicUUID.Visibility = Visibility.Collapsed; - TextBoxQuicUUID.Visibility = Visibility.Collapsed; - ButtonQuicUUID.Visibility = Visibility.Collapsed; - TextBlockMkcpUUID.Visibility = Visibility.Collapsed; + HideQuic(); + + //显示Path + ShowPath(); + + //隐藏域名 + HideDomain(); + //隐藏伪装网站 - TextBlockMaskSites.Visibility = Visibility.Collapsed; - TextBoxMaskSites.Visibility = Visibility.Collapsed; + HideMaskSites(); Guid uuid = Guid.NewGuid(); TextBoxNewUUID.Text = uuid.ToString(); @@ -652,57 +737,52 @@ namespace ProxySU } private void RadioButtonHTTP2_Checked(object sender, RoutedEventArgs e) { - //TextBlockServerListenPort.Visibility = Visibility.Visible; - //TextBoxServerListenPort.Visibility = Visibility.Visible; - //ButtonServerListenPort.Visibility = Visibility.Visible; TextBoxServerListenPort.Text = "443"; - //显示Path - TextBlockPath.Visibility = Visibility.Visible; - TextBoxPath.Visibility = Visibility.Visible; - TextBoxPath.Text = "/ray"; - ButtonPath.Visibility = Visibility.Visible; - //显示域名 - TextBlockDomain.Visibility = Visibility.Visible; - TextBoxDomain.Visibility = Visibility.Visible; - //ButtonDomain.Visibility = Visibility.Visible; + + //隐藏mKCP项 + HideMkcpSeed(); + //隐藏QUIC密钥 - TextBlockQuicUUID.Visibility = Visibility.Collapsed; - TextBoxQuicUUID.Visibility = Visibility.Collapsed; - ButtonQuicUUID.Visibility = Visibility.Collapsed; - TextBlockMkcpUUID.Visibility = Visibility.Collapsed; + HideQuic(); + + //显示Path + ShowPath(); + + //显示域名 + ShowDomain(); + //隐藏伪装网站 - TextBlockMaskSites.Visibility = Visibility.Collapsed; - TextBoxMaskSites.Visibility = Visibility.Collapsed; + HideMaskSites(); Guid uuid = Guid.NewGuid(); TextBoxNewUUID.Text = uuid.ToString(); //清除其他选项卡中的选项 UncheckLayouts((TabItem)TabControlTemplate.SelectedItem); } - private void RadioButtonQuicNone_Checked(object sender, RoutedEventArgs e) + + //mKCP显示界面 + private void RadioButtonMkcp_Checked(object sender, RoutedEventArgs e) { - //显示QUIC密钥 - TextBlockQuicUUID.Visibility = Visibility.Visible; - TextBoxQuicUUID.Visibility = Visibility.Visible; - ButtonQuicUUID.Visibility = Visibility.Visible; - TextBlockMkcpUUID.Visibility = Visibility.Visible; + //隐藏QUIC密钥 + HideQuic(); + + //显示mKCP Seed + ShowMkcpSeed(); + //隐藏Path - TextBlockPath.Visibility = Visibility.Collapsed; - TextBoxPath.Visibility = Visibility.Collapsed; - ButtonPath.Visibility = Visibility.Collapsed; + HidePath(); + //隐藏域名 - TextBlockDomain.Visibility = Visibility.Collapsed; - TextBoxDomain.Visibility = Visibility.Collapsed; - ButtonDomain.Visibility = Visibility.Collapsed; + HideDomain(); + //隐藏伪装网站 - TextBlockMaskSites.Visibility = Visibility.Collapsed; - TextBoxMaskSites.Visibility = Visibility.Collapsed; + HideMaskSites(); Guid uuid = Guid.NewGuid(); TextBoxNewUUID.Text = uuid.ToString(); uuid = Guid.NewGuid(); - TextBoxQuicUUID.Text = uuid.ToString(); + TextBoxQuicAndMkcpSeedUUID.Text = uuid.ToString(); //Random random = new Random(); int randomServerPort = GetRandomPort(); @@ -710,6 +790,139 @@ namespace ProxySU //清除其他选项卡中的选项 UncheckLayouts((TabItem)TabControlTemplate.SelectedItem); } + + //QUIC显示界面 + private void RadioButtonQuicNone_Checked(object sender, RoutedEventArgs e) + { + //隐藏mKCP项 + HideMkcpSeed(); + + //显示QUIC密钥 + ShowQuic(); + + //隐藏Path + HidePath(); + + //隐藏域名 + HideDomain(); + + //隐藏伪装网站 + HideMaskSites(); + + Guid uuid = Guid.NewGuid(); + TextBoxNewUUID.Text = uuid.ToString(); + + uuid = Guid.NewGuid(); + TextBoxQuicAndMkcpSeedUUID.Text = uuid.ToString(); + + //Random random = new Random(); + int randomServerPort = GetRandomPort(); + TextBoxServerListenPort.Text = randomServerPort.ToString(); + //清除其他选项卡中的选项 + UncheckLayouts((TabItem)TabControlTemplate.SelectedItem); + } + + + //隐藏QUIC相关项 + private void HideQuic() + { + TextBlockQuicUUID.Visibility = Visibility.Collapsed; + TextBoxQuicAndMkcpSeedUUID.Visibility = Visibility.Collapsed; + ButtonQuicAndmKcpSeedUUID.Visibility = Visibility.Collapsed; + TextBlockQuicEncryption.Visibility = Visibility.Collapsed; + ComboBoxEncryptionMethodInfo.Visibility = Visibility.Collapsed; + //TextBlockMkcpUUID.Visibility = Visibility.Collapsed; + } + //如果加密方法选择none,则隐藏只QUIC密钥 + private void NoneEncryptionHideQuicKey() + { + TextBlockQuicUUID.Visibility = Visibility.Collapsed; + TextBoxQuicAndMkcpSeedUUID.Visibility = Visibility.Collapsed; + ButtonQuicAndmKcpSeedUUID.Visibility = Visibility.Collapsed; + } + //窗口初始化时,需要做一次隐藏QUIC加密方法 + private void FirstQuicHideEncryption() + { + TextBlockQuicEncryption.Visibility = Visibility.Collapsed; + ComboBoxEncryptionMethodInfo.Visibility = Visibility.Collapsed; + } + //显示QUIC相关项 + private void ShowQuic() + { + TextBlockQuicUUID.Visibility = Visibility.Visible; + TextBoxQuicAndMkcpSeedUUID.Visibility = Visibility.Visible; + ButtonQuicAndmKcpSeedUUID.Visibility = Visibility.Visible; + TextBlockQuicEncryption.Visibility = Visibility.Visible; + ComboBoxEncryptionMethodInfo.Visibility = Visibility.Visible; + + //隐藏mKCP相关项 + TextBlockMkcpSeedUUID.Visibility = Visibility.Collapsed; + TextBlockMkcpUUID.Visibility = Visibility.Collapsed; + } + //隐藏mKCP Seed相关项 + private void HideMkcpSeed() + { + TextBlockMkcpSeedUUID.Visibility = Visibility.Collapsed; + TextBoxQuicAndMkcpSeedUUID.Visibility = Visibility.Collapsed; + ButtonQuicAndmKcpSeedUUID.Visibility = Visibility.Collapsed; + TextBlockMkcpUUID.Visibility = Visibility.Collapsed; + + } + //显示mKCP Seed相关项 + private void ShowMkcpSeed() + { + TextBlockMkcpSeedUUID.Visibility = Visibility.Visible; + TextBoxQuicAndMkcpSeedUUID.Visibility = Visibility.Visible; + ButtonQuicAndmKcpSeedUUID.Visibility = Visibility.Visible; + TextBlockMkcpUUID.Visibility = Visibility.Visible; + //隐藏QUIC标示 + TextBlockQuicUUID.Visibility = Visibility.Collapsed; + } + //隐藏路径相关项 + private void HidePath() + { + //隐藏Path + TextBlockPath.Visibility = Visibility.Collapsed; + TextBoxPath.Visibility = Visibility.Collapsed; + ButtonPath.Visibility = Visibility.Collapsed; + } + //显示路径相关项 + private void ShowPath() + { + //显示Path + TextBlockPath.Visibility = Visibility.Visible; + TextBoxPath.Visibility = Visibility.Visible; + TextBoxPath.Text = "/ray"; + ButtonPath.Visibility = Visibility.Visible; + } + //隐藏域名相关项 + private void HideDomain() + { + //隐藏域名 + TextBlockDomain.Visibility = Visibility.Collapsed; + TextBoxDomain.Visibility = Visibility.Collapsed; + ButtonDomain.Visibility = Visibility.Collapsed; + } + //显示域名相关项 + private void ShowDomain() + { + //显示域名 + TextBlockDomain.Visibility = Visibility.Visible; + TextBoxDomain.Visibility = Visibility.Visible; + //ButtonDomain.Visibility = Visibility.Visible; + } + //隐藏伪装网站 + private void HideMaskSites() + { + TextBlockMaskSites.Visibility = Visibility.Collapsed; + TextBoxMaskSites.Visibility = Visibility.Collapsed; + } + //显示伪装网站 + private void ShowMaskSites() + { + TextBlockMaskSites.Visibility = Visibility.Collapsed; + TextBoxMaskSites.Visibility = Visibility.Collapsed; + } #endregion //产生随机的uuid @@ -718,12 +931,14 @@ namespace ProxySU Guid uuid = Guid.NewGuid(); TextBoxNewUUID.Text = uuid.ToString(); } + //产生QUIC密钥/mKCP Seed所用的UUID - private void ButtonQuicUUID_Click(object sender, RoutedEventArgs e) + private void ButtonQuicAndMkcpSeedUUID_Click(object sender, RoutedEventArgs e) { Guid uuid = Guid.NewGuid(); - TextBoxQuicUUID.Text = uuid.ToString(); + TextBoxQuicAndMkcpSeedUUID.Text = uuid.ToString(); } + //产生随机服务端口 private void ButtonServerListenPort_Click(object sender, RoutedEventArgs e) { @@ -731,6 +946,7 @@ namespace ProxySU int randomServerPort = GetRandomPort(); TextBoxServerListenPort.Text = randomServerPort.ToString(); } + //产生随机的Path private void ButtonPath_Click(object sender, RoutedEventArgs e) { @@ -742,17 +958,63 @@ namespace ProxySU TextBoxPath.Text = $"/{path}"; //MessageBox.Show(path); } + //产生随机端口 private int GetRandomPort() { Random random = new Random(); return random.Next(10001, 60000); } + + //域名检测是否为空 + private bool TestDomainIsEmpty() + { + if (string.IsNullOrEmpty(TextBoxDomain.Text.ToString()) == true) + { + //****** "域名不能为空,请检查相关参数设置!" ****** + MessageBox.Show(Application.Current.FindResource("MessageBoxShow_DomainNotEmpty").ToString()); + return false; + } + else + { + return true; + } + } + + //加密方法更改后的动作 + private void ComboBoxEncryptionMethodInfo_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + string getMethond = GetEncryptionMethodSS(); + //传递加密方式 + MainWindow.ReceiveConfigurationParameters[3] = getMethond; + if (String.Equals(getMethond,"none")) + { + NoneEncryptionHideQuicKey(); + } + else + { + ShowQuic(); + } + + } + + //读取加密方式 + private string GetEncryptionMethodSS() + { + //string methodName; + //object methodSelected; + //methodSelected = ComboBoxEncryptionMethodInfo.SelectedValue; + //methodName = methodSelected.ToString(); + //return methodName; + return ComboBoxEncryptionMethodInfo.SelectedValue.ToString(); + } private void ButtonDomain_Click(object sender, RoutedEventArgs e) { } + + //private void ButtonTestChecked_Click(object sender, RoutedEventArgs e) //{ // UncheckLayouts((TabItem)TabControlTemplate.SelectedItem); diff --git a/ProxySU/bin/Beta/Beta.zip b/ProxySU/bin/Beta/Beta.zip index 14d2e04a29dc4b1dffede14fae984408a5006f65..1343bb7a4fbee8665f05096f206c4cb852c0d05d 100644 GIT binary patch delta 114252 zcmX7v19TnF+sC5@ZEV}NZQJIJZQkIAzO{0m}r#ag$kkEsu&L} zbc02e(#vv@BPFCSsPrMns_|J0v$J=!uhM3!EAiPp(5hPYdv0!T*N^?!{d@f44e)9q z@K`;b%Jl{QeV=uVxU&gUWngg)7|3GvlMjt_T3UJ;jz#ZOI%g)}23eT{`2&nD zy~+y&)s$Po<3SYCz+de;xPRTDk4!o>Q6q5SAGSI`?nOZb&xR(^O*$oE!3MaJG`L`1 z1*cnfb{aqh&w0p%y0|kWHFK-O&&zkHD;?n2-OA#4(S^nuB4#pn!PEy?_iHeR%f3P< z<(jfW0GX`fs9`cM1JszUMRhulIw`jIj_-lfsXfC&oPRI73Bj;Q%+IDd%1d<4P({Tb z^#PfNkZ9mQX>|m)bmm2)LobgD7a(R_s~n zEaO6C$9&n4O{^o>t8p29d*KcZKOgKmm$ZX_b0JQ`mgG2qHMSQT7lb4d2@0lfi)ny? zBdNj%a!t!#RUN>h>_J-+=A!cbkKw7Giv@Enli83!V@!X^gO5K+H+%nHl`kr z{i6*Fk7}y+n*#ys*}`-h=^uec?I^KNlI0Dfzcpf|an*)$hxp-6mk7rY1;)F{b&j z$P$f(u*fov1F#9AjmFS2Wa#3fR>EqM>cd~OjJ4wbW7@Y zS#oecD6wX(ZyaGSt#6)@Iz>}eYvtf`Xk)ly(Bn(e)V3PbNSPZ=UbBJ6kvVA9Ib&7$ zVL$1`)9ythXcb%>J8|BSm5w!jPX;iNWxGdBdvB!Mw%=nIWFwQ`-#5q|e-KLmnj~s; zbl_`^ty`9P1SXh|QBJ7u?SW#O>IsVE{{5e87vtc2yc3!Kn1})Hz>>PNx5H)Hm*=GbOQR7$h zj<-osPOCt#^O8y&*)&2(Y{|K}%f9f!pfNgHFkCGxz4D|w?%p(v?z$SQhcSFEWq@4m zD~!4jc3$<&-(JbtvH}jxUV>&HhTHsH-YGOLKNU5_omkswa%E!ObUMRddmHEL9?yQ_ zZS*!KO@D(X$^+tfMf#}5dsEyJQwqzIh){PrjwU9RfipQ`S=and&RqyTrNYn$qnO zlf$m0k(KXl_&WQx34cMMQ09e&6Xz0wnD{E2(iH0WP=IbI!&lJV+bmR8JdXjS_1oTS z>)V^=-Xy6f@A}$2p5=h`#K8t1k4_O}Zhl4`+%81FHp5v@56(>KGh9Am(}_{hDfYU- zlw@gzzntUEs07tzpaA_DhDSTDL=H*n#&*8swy_y=dki*L)Mym4+hR)LxRJ=z7x+!_ z%ZoNlbKo%g<$6w(0BrILDmsb$!LV!qZ*-!mYwS*$aqgshPJ*zh6vi$si{Hczca|3D zxo_jf3$><4Y;(N=MUmdoxsaPRUj`vlAD)7LUsK*EH~dD1-wccDk1EZy2EyO7MSE8& z%+9Xf+_kmoZ5)T}5jSBx=BMuAJ$;UCmrXy^c3?-9^#PQ2OkKVl8*B+HWaycLX+4g? zH-z$U$%dB2^pu(*pvubHVCCiLo0H_uf67u-T<6H)Xur8s;(v+;6#E2W0^>IGbMyE#W4)L6Qyp(~~4_Ug7C=$C5U zz;LO?ug{Hv10>?GU|S#9qCY|kx-|i?IKKQ-w}^u1FHoi_Mlt9uc=Th)>G73@0-C}l zcbBSCQFoig-DK52V#ps@tyZ~Z6}IJ(+%OIJsyj3aW}V_Iluw#COd*QW_Fc$AVOysL zC&y!kq;Rm~u-XVaJ69<f^Qpfh*%g`hR$0Y(X(y(XA8pAr$(I) zRJ|{%Kr$1byE%!z&>2l;VJ7VPuLuN#>XXETgvprEO`2OLJs$dSopL%+*W6 zuqsz@qvJ{fdC4*FtjV1G8YK?jz$bV#byzCARFzLOG-_z(TeTd%+R9o8LL+$8bI@#1 zW>aIZ`0jMIQ~(|m$Yuo2Wt1__Nwy2KlrKoA(QcegbEoz@kLY^dJb~K^Ru}q*2z!muWVjdTg3RmOi4r z2SuCYD`a_wy1p-&VT&)y`A=d^uAz;v1CL9cZH*CH`MKd2-<0nQ)LW#2zLV zV1FlOwp`rEdlE7P`Z_Fp&;KshGfMrjAi1%vXcxDT!TpC0h6KbyW|_j>n;>Kdm5h{d z$}K44Je{_q@TZ%3?9Hb?#oi_EtD^;P+2V0xdmS%FT#OOzNeG zXPlt-jm9c7>Lq5AFjnDeBmQt4sXC(w#|^OaR}A}1AYH3{X1OIZ?a?AW0D#kGw(={& zSJpnOt<`L&jBA?JF^h_}n3KLu@oY}L4hgeXt~Z39qvuo!<&eIk?F^DUyS$@E;qsP_ zo4$pX+Rj`JxUl>gv$kMND_<#fghR7MKGan6I(=ZXkTYT+>G;kxgj>_Exd~#R=vJDB z@nHg)M9*6+xA^6rIxbRk7*VDG!W0YI|_9=mNQftFHMQ^CvaDh_1jlh7mud7-? zew$sh`s3%I=_IGPG@epwe?FQ5sWuX_$=2Bqck7m}w3!Y3Fa2w| zG5l!f|59%o_X0oUYJ-v})drV&Q}*qQDySY(hOV1E>AZb+x_;ZTN6M&2lJZQf3meAr z*6(`I@A`N-uw9#{rH{C++uwd`r}F&D^-=Kms5Hg`$>6e?0W_9{|%?hlVkpn4)lW7x|WyXe0 zR9M=YL{#|`Zzm_f-_Sx#PoY*R({^T%sf^kPC8Is_?0K5eggPVE*viEFgoE^U*4p$S zUq#~I^*w#b%@iEG(x8%rgyXWXR{fLC>GS>t0-Nat(w0DOTRoyETZ z`D=vy9gG{$j)~D|R`clKJK;Q929DSWn%?yJ1o|gphYaqhl`NA2UNdTe(KR7ZZ`5xU z&aGp#w}d(OEk$H-T-;*Ro|I@#N# zx$AOSEDTxjRU|0U8$WE?_g&p%bNpdRk+>Rh!kIX0p-*^Bnm8A65$t9H5wq4R`m^X#>6CCOL*LyIrYyLinA8DHWzSn_WU}~P)^L!1sYXWDen-|10 z;2UK)kO|daB*L*b_tmOO!Geb|b~)Uo7!G^bu6G{|y(N7+$xO{nXQ|s4>ComXfpB6ta=R$)`xXd9jAb%$YYhDtW5oaatuXXo z&V#`Dm+2fs(LQ8aB@1m}k+Zez8$`-o%TfdgS8Y`Hc8-gEDcx!-|XWhcB`En@>bv-lV;1c(nwuExC#o}w*oS~Ncx+tK04 z+P9Q(XN{^uKdtiwL6wsVv6u7*^p~29FbVj3Z(b^ouwG*S`gJyC)bZUJM8>j>R5K!sZn?IUhc7M(m+-w?@) zK78g>WY|6m$|c=G+Sh|G6y-%A z`*sW&j!I9uB!&xXMh@~t#pfRWveQswdcA5@&2ps0PWsJ&-B_hN?9!?S$swUxEs(4s zX5LaGf)HpqzKk6lzykUe9zvPm-H=u_zjrR$NI;S7lOPCHkal3}RVcv0#oE z!x{S|YKbV{mu~f%ZZ$>km@~*==I+oGE%l-pD0U$DOpeX$tENU#1XP=*C`-(lQiw3- zsX_?<*N5+-K>F?ib68bV(l7Y5zhwIsCE3DgS+i1*inEF_IpX>`1qcB^&C=W!&XS`;Mv=ES~xI9nNRmZe`d_3G`s# z{w4={zBvlg$KAv4%n5`8n}l&c+q@N2EY!IVlUDCwM;OxJiiZ<>?IcYiZD5SIR}pr& z;dk1p#;*tAA1c#H9Z*4z2-5g46yM=TR-_#A(br4H(qH3>mV+}nd}@&4$TxKj(>9kL z(`X4zEwBeH`wHutSbWTeWoh;(3C zS|hCvqIqEZ(2H*Hg;J9z_wdx8d0}3I(}^utc4+fI zEfDNLUF9wm5YdQF_GF8~)X%{PME_>0)&P&zeoYGBnK@CzPJQ;j+7SRVkt(~6t(BB@zeDqeEZ&_ zFT<3bl0?-c*!YDfs)8DPMy2_&G$NRv=vPjq&9kEVWl_=dkXCq0Sg5~LZ64c1`HQm3 z_`x}#$x}LjilQW)utXj}SqhW7&*@jMTfKB8JxdBM4-ntG#qI)B{RYtxKt~C+IPpW2`xu)oWt}N=u&$Ryv2Ut^IK-Nn z#k$Jk^@Vu-`?B>--M43>Fj6=@C@I;TXz`Xi4#eWoq24Faqp#feYlZR91)0}#go$?g zZwMOEetv3Zfzjls$oi`b)@Sy%*cy51?e?}m&1%aOlkP1-b6a*25`>?YoYdlQ%Q|eKMe7nYksa+2`hzbzAMg$#RLP`7ap6mf9aUc6MuTG z_x#2ACmWPS`dvA38~PRtJCu+eYE<3(cnqM>R;p#LwPYQqtwhZJB#iRD8}Rt|wtJN9 zkHDs`3~ltxO%QcTSBiPge%&0v!cieW?n6sXMNN*0yQSV7%q6{`8lk@0A+RVEt9Z6k zJhZy0a`u!9=oSG^nEP>49!Jhqg(6XlGtnHcRI9s_;-K<)F0wu1uGt+G*sBW$V zy0?eVx5q~>|Mad>BT(|ZWnxKft=hJtp8=m}?v-mySPcW!H3z!3JsNJXKxv*$8&Ugv-6e8i9U+kP(S4M{ssmWGf`TqLoE9uD-6w1Iy&BD6=z)EtY-Js4WjG_1U>@OW0yx`N= zV<1)En!nTM1xq{fJgL8LuL;dhtRStOauh(b&H5ly0!Q6RoBm}oIEdAF;V#cY?ZF&3 zz!ppQ+iv&;cz?bcWnm0`*o^HteCx`r&4K4F zrH2ARPCt#R^Nn4*Mys+lzf=Gegcp=&62gZ0-5Se;XfDQjYgaOtjrNXoyG($FyA+f6 zy5A3x3iIcG#|nRUkDRf#>^QalHwDYsB0?c>#yvX@o5azabmqJGPS%UKZ-Tnkp&BV> zqdhl%6@DWKQXzve3l)JMGKW8rcmWcFEKonc4x&ULX%-@EBkyy=tBAkgiqq)AJcY3m z4pG8ikhY3-A`X3^5=Y!%f(}vpgZCgMzL9!_v%(H}z!Q+=q3qMcqlo(u4!NU#A{UFf z9rESD)o;!MtT8u=x9t3Ay^)EX_8v?9BR+~3yJX#+40E_-TOt+}TPmVSm4KAYGy0`^ z1UjqyrFuA-(qj1Gi;C?PwqiNh${arn07473C!89;ZMjKjV3j$x3jh=g4srH#)TQeq zwt)3Thkwf{uJ=L23wdL~5u^c8>&o*);dqX3GWWc|4GYLRYk?p9m7{Tf2YTHgR z^VG>HkOYu1%*mH+;b5KtGMBDnWgZ8V@)a&lH&t{&*fK{cxRWgy;${MP7A_MM+|d>c zF*A?NOS^Q-nnXnVLByHH@`(y85?52a&+>y$icfBneUWY^AzL~wSKy~Dodx&Jn##&P z&8219b310c@V-j>%1ZmH%8Sa%3$>+3!=>z}5~rfEjrSxo5^G-I=BMtvbhVR+)-%!3 zC-RB#nDMq!+B*ceAFs>#cnhPX(=+Fqe8!t^W`q{s(FM_YKB1E5z*^rq{!`UXH<0-O zHO^Uzw|&QnV+m)B_HHUNEK8+J^MB^F6O;2VpveGkN`{sl`AQM}2zlSF`{_XTG?nS8F1MKPe z1&w=#=6dxcm9ad)QlxMz)ohx^egBGlpo7aKU!^{>5n~8Qgi0KILksd=dJg;ht(all z1{WEpF0&si_ol8Fp`qh?0)>1=Ou1#SpJpK5i?UoiwfSq!9B}Ev>J_?=QBP5G zRLeG;&SV(a9iyd{F+{Z694=&qv5vSp-d3w)!S&7`L2vh7{ALj9GiD7G4nAN2bbnRu zp0n0ALP^_1hAt>G{Gsk-N++VD;nk8B$Oty$0+S1Y(PZcOPc0Z9r7z#~cdTG6bIjz~5hE$O4^gP81v8TfK9aFf!T$^_W{gJ`D-3-R)5 zW7Q6<4Jy{{Pq*3%Gf5rI^l&vyL1|udymaeX>4S@LZJk;X*f#E6oVm@>_@iuMIuHOi zLRo=-wz-Jbg>gS*XEIML!p^&wZbZ{te-XOsDFjEcJN(sgpJ+CtzrQF0U(vWEyJOeX zq&Pz}tCjajFz4IuBjZo6Ke(@bNn`N^Tjzg)y9had8K%Fe7S}GILuEDqhDVKF>JT%0 zGNsdr!p<{js|mrx65JWmQ`=B~qu7@Uh-#mAnohGQdgl>$W ze?Oj#KjS68-t!S76!MMA#4qe?*rMT!4yA0CO`@TQHs)`>cQW*C9#H)&GyxZTy+ z)A~8+Tzi1)o~G?+vK(EiOhtj1fo#bSEa%5cM2>T#=i_Jnf%i)1o@knV79yOBJlRP)O2Vau)=a+I8P=rDqp2u$RtG!9P3je z650fvg>#YJDRkOc*yC-H$;t~I)q&v|1Ze^sj&$O#Rxj^hu88<4RM@p-^i=j-VSVWj zNoJq7N;4`No#M=h{qQ5Z#+$M@EKVU4_FwMfgf~HcQFGfF9D3JH#6@7e(K)7|1fv4$ zOdMVJy4iav;}Ne({bdEz``bvMqDT=*ryB!W<0#p{^yon`tEkTw&GvQ6=pTX%oYT1K zmcBMCC$KT;B7!h0+LC6j;*E4d3wu*(f2c8dV0lxE7LVN0ZUAz#vT&W4jay`1hV{;V z!1hQ7PD|K(P>ic~TZ^yo^aOTbQ21V}$ja5?=ns?JUnV&b<%Pu52OU}98w2GBRmvy2 z95B0dKykr@>Z~E}kyU*&+|r2~=+Cgf)2N~kJ4p!1mchgI1( z0>N!nK%N29^2IL4NQ^Zw%5zNijVUv4z6F^3j^D?~2*zWPzDo8h68S1+!v?w4(c>(if4bYY@; z4DJ2DgssR_`F{nUARYt@-O8TgFbOlhO`+o-$9)LoNtgJ_`OJZN|#N{@~2dAdZ{l(B{aX;-$nm8HIJ#GC0lQbpf*gU zlz(~s+t({T5Zc7@odD)bIoS$Pf7<52*k};kfbFgWZtW}!boR1uXUMq7s3&Sgbe79c zy^kGxzI>)XW*=_QTL#Lk(F4|*9a*$_JzRWZNw*xiTk%}xzzc&nl)OG&j1Oq*@-k0c zh`!AIfPg~x0r|It4D==Son`f}ZE4SKY3NK~3#KwmjoN`bqfMLFlA$ zOC0dW%hH6BPaj^r*+rsz;!0)zaD5%g>F3Sr#>=6^;Ua#PIeO2aSyRQ@t*0%&C|979 zP4nlkYk9SPAev|In3s1%@C)webt98n*OLH~6_%_1=mCO9*;#*>`~EK&lvzayufaC~m7_?Cs>71EzyL{B5}Hu6z=Pq&(bL(LB9a5< zv`$Cd+HYh%t5BVeys;h4_H}-CUIvcS8XRpROyDHnAP?5YLzyJh<;QAvk=9h(Gw57q z5WVSdSS)*<&b0-k73Eg#H)(~khPu|JUHySF`V}8vME+NIF;fpCfo$ED=6srzFNZqKuwTMNO;;9Cs}Aa2P<0TMZ`3IT|d5cLg~y8eGNo*8i5M^K8MeG%EE7Uz^arurV!p8VyicT3o`BCBjHcDNI(m}Z4d zZ#sec_F*X;qPau8>4SvEqJ%r1qVk0GoG7xHC~3cKHJBoxMwYXoH4f|&*|9M3fL<2X zzfQwaoGq3$K9oW|x=Mdn)JoSARVqI(Sb%WpDZ$NDT3{&pHn;ir9rLZNOog>N+5y@B zZEGU-G3CY$9>`#q#vDQlTpMDsR@Ld0&AvanazU99@z0uX`0Hj`8}va!H%W25N@6h6 zjo1C-dN~RG!%-yE=a48{F%SW$Ho(Yro-To8Yp=t2#iE@M`sJLs@QwhxLD7KWkUCxV zr#iwe^(J}5q+Bs4S9z%_e%w=8WIlULRZ9Hw| z<@V_eau$v~99YXH_c;wzsnhS2{yJ14QYg{n>0`XHS7W9@hMBr6d{S%!H*y4MslcV& zWqJ&{CMII%6N5{qtA_61T6L=wcWvl&3bT>voI{AzX&Xi2kz~i&91WDqhjE&hbmzUn{G`W!=c_F zrqjq~AAcKt9F!cqS+g@PiomjcHTp=Z4RvW0h0OHHl836D6z=8TvMo-;np0@o`jToq zl#2DZhx7>CYNavOjab@1bKRw8TJIO0z`Qz5WR=XGbYQuP=W-OVwMzNkoo+OYR%tY1 z<&2`%UlE_0s!r4>TtpQ6`^ky22Td%l zkQ>;%Pa5>)y9~v{HO(?q5zv`U(dqXADXNg@^qL6yogn(ENk%bPgiHc;M_6e7aZlE7`anuo>b5dX>kXAaj?QE!y}hMB{V_< zJA&sw^V4tWZ`J7h?g$^HK>&mgv7y2&(C2?T9Qs=oI+US!pQdvLD+J}ATsd5be;7Yt zlIk3lZh?3Ggm&+tZlLo^AZ*~xx~R#I`9!n_0hoMG{t{=Z(>a7U`h*>+Uq6wdjkt*C zXJGn5ics7iY(o1Zif9x?J-&#Mke#mbZ7BV^M)$BJFWJS30>gYbCkV^`dQ^rEoS>B4 zRr(badc}n|pNa0#lJG<)gKE?#JuC$ebXvk3QCf8oK)A9^AVB?q=NpU9kLe`8XgMMV z>qISX%!}F74f1Gz}Hur;3=H3j-)1 z4rR#dfKZJ{gKUZbAbAUGx#H{GzhPZgDI321g-JFgj0_FKnX}@8O?=xU1~me3P>m>s z^Q)ex+`qWeMn86Gk2JWO6Y|Q3CZ}!Zvm9RH znSPfw0UPJ%)su4pN$nW(8j)*lW99TcfHle{i@`+!x5*bZ*$ZpN3it$t73M{L&XU#aoavxSp=! zRB{iFtQ!L@FVA6RJ~}m7%bPqj^&dew4^;b~yhbL6k*t*o+5=fqnO#wn))WZ9jL|S4 zIN~SPb}Joj+80eJA$f58aIC%bt!wHxT3US5SO3B8zzHkq1sDL@>n~+&adM+_w$GgV zl)dpxk^kqx!WKqy-WG}3oaox_7Sz0XGC7W<|LS-^mdi<~?WTmOpkhE^Smv}`X21&7 zNKFTED@kc@msdTdpR@I;=l`-OJX=<-TpQPESN+;IIwh z1T~HXWaADGggNmXSGZ5odPWa*7ofCdZaz;z%}cGNtc7+@(rSQ)pH3nX`Jrr&#fxtA1-sB3%k&SaWDOKN^LbJ#Hd)OTB@B+2 z?1H%EG8LJRbaP7M*SwHgKP*ufvHv>v%Xsx>Yf&GNUUfYPD{6$numV23r{pmFodm%7 zp9f6XzoQxM6koE)XbZi=b9>9GbNtsd!xb{QssFiR;h(#?^kQoLxWruK{v%TTN2I*9 zV<$EEKEHGImjz-aGn1guQ*=gm`!*+Jrraex)=d$QD<~TlYa?;mPSL{hi`S|k# zXDqC(LYEC!1b&_#HZ&R8iZ`^@F9OYQkxb71e@*O~kRLh_#L;^^ki5zJk99&?Z zjdL=2R(|{A%_xomXr!7#pwdK%_YWeEK8Qp#c>!y=d>^y-hAgN5FMudv4EQOlzWmol z`hPV3V$vF88dSr~TFO>iqULk%I{OCYTBXwHj)U^UbNuhM&K#w+`yNoY(*7%q@vpF>d@t~Ud0F2Br)^p@IKYKEx5MW%yr!L~Lbvq4 z@Q{kxdqTGI6KFoqmTs(*NZI%ws{J1-*-1jXPZn(}=RXv~e<-D1S!Z_dh4U_*O=f^> z;*W0}q5}BlS(JsAnGIRy(&43b;;^*RF4mFFjsKj>c*$u+mXd5n2oyvDg;j+7*^{dZ zVd1$?;ax>t-_WFle>)ol#T4l-!uLWpYrJE z8oYSZXpuD{kLpO3XHYVD@aSrc5pDQBnd zQ~(QebD4Q=s)5^rj@f}BKj?qjsM9&+Wga*yaT%706u(~e0&xq!))bO_1eQ536!7@3 z{wQj659*E?=QlG12=x}4f83m#TEGb!sQjFFw41d2M!q{RT?ER zn=qJ^t3396ESCEn;hm{(->C2|B^xTekk7ugW)~AG7oM{$ly{qP_?NA2w&@5as$pU zEPa(K=7wZH2=B>fdKa8Se9djJKgvDbcg#{M=|9-&8&H7EOr~#BJfA&`SE3yqtxH|JSxpu$uksg!qAgWg* zS>2YYIKi^2k6sZwIuUs}3YmHxvGpF5+;Aqyp=ox586q&T0KkZelODgZu)D(r704zE zs0Iic7Q=6UNj*J7evE#5id{mYIV<&fw-|@G%7&d|%p0C0TKxv=9S~h2fbQJUtqkO@ zT5c%GrF>2619iq2b7oJbZ#y;V1~3ik6eIQOovutMBHaTN^r%uT>vg&LS@m+&>IN4* zGSNRgveZS=4JWGkex+V&>L{6&=QRDLQ`FD?+0PcAAm@=OiOOG8ZBbd#to9#WYvmS1wb)e3dp}9tdA)21?e` zB-6^W=S8ynF?wEv2QN-W8#y3Jt)H zZ)T6JE{dS1Xt8PK+%OzI`%lbwvcis!z?UY-ma-^iJI0?4{#X1Ik)g!~afx+woDrWP zo@>>GdMP+t%3A-Q4X`+(NgANmrs-I}&sYh`5j*=IwK(E@e7c0d&T1@ioDm(ccPTqv zQpPJl-a`9fmq!$>=Rq=?FwRIX!7G5?a_XK(l&r_uhiollj!iW?vYwnJ#o*#42~fMX zck!YG%p3ey@N~f*e0ein;_Pbd1DJ2Ua52^eBp>?y+kc*+w-kKe+Op?x=Fsvtk0Kw# z4QO(xnY8RQAC1oo&MGS(zkJXu_H0;go}(J#^bxpVzc&h<1^v}FQ>jU!d_=`I81SKO z8X~x>jh*e)?jXdTSi|wOSgc9MeEsmjwV)osED9)I&eGX1S2T7QU1~1}co-}p-r@TF zJP>;G1eP$#sPQT&Xo2o!FEUq{TmaGyUX@Odyj)U2KV@i1MOK(%26t3{V$@Ky^S`d2 zs<5pKP-y!XSJyRZO9ep5=&rq4yEw9W8g*j-x|%%Ey`Hol{3kQ1pp(hNw=@ z*L>!my4PJL9!`!;4qEP~6xDi~#D(5pUEFco zTCd8f0S)xm+0JPw(>h0)*+;8YcS_W+8r6RUQvZ->5i_z*sxYe_X(-;kR{w!a{qqG? z83Z(QbPBH`e#uAPTvT#HNT{KgL1kv080glo5<$WP_a&2)*r%8jPwHeJJy+i)D&Add zbv4Y=vQ%mu9V*`0R`>p-1nQ;(0V&sNU?BiL_`{n1?v~njyDju4PXhIAnE;%ABVg1% zMhQgPunr^G*r064bOecHyZ^un|22?(1NB7d!|vIodze852^##o63G#}{1jzJ z+1a(b`8@i5w7yu+Sn_OrbNX?P$sGXCNQt)PQ7Nlhu?YzOOD=mRQHKa_h~Uid1L}y8 zCX^frbX>{{MHv%u=EgA4P2wX>-f$Rqh|cZtSdMo*zp1gwIu=DP9Kj->Bi+&E!_Ff- zOPuTR@omg0d(tHI6&1!yt>O-_Ux`GfoFwly&s2O*i^PrYHi4@F{5~!=0K!$X1H9venT=}v3##SI2B-}dFzo{zVh>drF$$P^V5E5BP1t7h=CEUM@h;_5^7|^-> z(k#t|u}jdN^3a*YWZ_IhFt!Y;{w?g$LJL2-8L%kMk9_keuKl~gNFn>Z2zU%hRr6@@ z>pPFGlh_eLjDqS};lbluX!5X`gStEIdP?!8+i|=mXSMgvp;$xHBM6*ot_C^ z^GyZ&gmPKifkU}1vyfUEdiHD?3jB=YvBbWA?@HIqAgTYF!mJ}dh%9Lq6J{dQFe$+# zoi}}zQTcDDB@H&G(fZ$>ZlJ#GQA}iBuBkzXhHxp%UgDiTnMnafT}FE3j@;p@7L~my z>52qdMn zx+Q$j8OZj(jLF4V-Fovvw4<7dZu=ae<}cD|)(!=3!WQEp8Qe?z!og6|_f>7y=0rib zzb*W5Knymx0r^*Tmma)tPIHcq+J7_0Ti!xR=PnXMxe+$(j74$> zdq3v`^aqx01G|91YhgcYgWQhvKGcwI3$mp(2-cqFH((vP0~$Y<+>J#f7%qd!>v7gt2$lL~VMB}Jb223=rGM*2v;9TOmBDQrTpB}oT020*1h$?$z-`?2&Z`TjB` z&`pk+Z3)3Lj>MJKkcr;Dn6(XwBmoMN}9t1}g zZd2k>&21;@E>hWS5TP z!`zlFtzz=jZ}jU6Ix=*Do|v0n=n;(_WGI_IS{p`0Ne(QTiN(Q|%)wTnV`z5Pi)sw8 zU*Umen>KVzlxf5z-e>(_-G(s{lMZBzo4X`WxfY?QkX;5`SS)OzPo1i&$Lg`;C>~x#oia4bi{udDt`pqw?)Gdow8@{!m2fjaBI*=lh4TJ)V* z7`@dU1Y?BR7y(lzgh+nq=9j@9XdU5XGe?`}Bz!Xgrjn~5Qcdk;Xwf=;cW&H)#xK6o$W#X|Fe6D?BtUZ;i=02NcMG@ zQwyAI6d`|(au;AgHaiVvnLM#OWiKZcx^WJ=^2{)6UJe^NvAw-{l+f6MAhCafIK?JA zjBZ7=PzO`^SV2qbq36MxJBoj8(}|6Wy%p#G#?3Mu9RKE@9pi;Mz5_$#8d>A508l6pt=Kw|;;iUoT0ULG|NyXd4o|f7U(_c?e;` zJ28`C5zB(w7WqXf5|E?bZ(pVs)F_VXC-zF1+DrUd2-}>=0IXANb0zifS-@vG;LX;0 zteLFVS8S}#7(aWXLTDO|eW`o&LF>8+$Z}?=$4taQd+yQS98^be5*UpwVy!YQ#JaTf zfM4uRJDn#x81RzvOjF4#-h(?0Y?n|*$#MCn0j<6*_X5LU^gBxan{tfuH?Iyj?B3#U z47#j;H>8WI@qxxW8;7l_eLMA_BmYYYS?z|bTs+s5cjG%V&ug@g{bBmbst^oBCXeUvR2neuEdO+14_|Ky}A1tzG@Dg)GJPpDO zulBcJIXNI~8+E8lTZFoMqa8`OxTU}sS8f}54L!$8v;o_WuGcc( zOfuUc9e^+0n|S`$6*3Sz)q4Al(B6L zUSL+b-7HBv25b6#Bp>hveh=lu<PSE*3Z(fC*b>V8 zGdth@sMfOV|CoBm@IacT4K%iGb7R}~1{>Si*v^C-+cr10v$36xxv_1XJn#9=b)6qo zGu=~tclXTnG^VR612OCwm0LflIRbH^6%;)-p?6>$P;WRP zL!yfLZ?JY?Xl$N|0icOSgvy%H(TzlEzvogCpGOq){5>F4zEkf$fBq;_^%~H zXCJLa5p&21kh>y6X@X^pV!V6D#=82##=5E|4~6u(sDoQ`N3)Unb=kccSc}rUl(zS% z@ohghfPt16q$ktp)f@-wNy^GBW&~_=5hELt;B%j>qHwPr7R%v^vn2XZ zB({!2*a8&THyr}|po~X_Uw(SA+dWrHDj>GA_`CZCo?7pZy{Ea0H1T#tWZ%OP!Eg$T7*hd@bF*3u=OvOcmC1? zF_vl8yd3EaITF$`OXdpAMCUg~k#RE*J}ShOg(| zuMeA>`cBXX4=owP2&pYS8@^jx-OcuEhovwxG95dvV0Y1|68?&=a^E2=>8+4a^1gNn zOWdOP7J_5?7#-qVzQ@rOU&3FW2;S+SR-vN;Ri_xUc#7A03PU^=X?+~z9@_&PJxHzQ zUX%!OPd*1akA}=_)7R;@JhxoLsV#CD*S=+Df_ba}`c*o-haTp33cA(MV}8oBzqSU* zYTpjqWn`~~-Ox7MW$DvI#B}A;#FLLXA8-cgUVR&A;-{)vZ2Ew2XvJTdz~sYiZ5|Iq zxq#QWWcSfgHf;To)p2zIAEwtUW|kX0IAJ^osI(tDXwHPXmix&-z7BMyG)fO9x4$pSEWh*kfYQa zb8+M^_I0w6{CG1P7T1t_=94&f*IUbP98`H(86)v_%X<55UP`tk5E6d@P3yI6!$-6} zrjOM0y$I7PbI}mEtOSvH*!mB>3)a@ZRA@)WfCF3Mg^B-I=P+O9 zkUxrQBb-|A8YaU9JI7_;hy8fPW3DN-K&IwTqTn$L`|+g5+!DQT;v%tBqJAKCwAA0- zhB{?hXOZKE#I!h|yj$Mkn$h18EH`$~O%w5JK<0`(7S8{-Axc z?^s)ovdz*H(_!bU4XK(xCj67uM8fu*pusx7zXTzVE#yhajo?jN5^3BH+>N^&+dYuX@Ba>= zwP?4|3Dc39&1-$tc4$a6Q-o*NIQ8N0Z!V}_Bri%WH;J;2uqh{UZ>Uo`dRHoHCo)-K zT53NBL3))?R>asBS5{1L?LSRQY>$s{N;pZ$qoLNEBg)Ha4eo@QF_Gfw?!nK7ot)%* zODr#pd!{CkC^#YkB9Iag2q~~hP(ZbrhfX&ttPq@9R6sBTw*%1g>Pf|1@`Y@g{HIm5 z4D98-Gx Y4@UHM0EwB{;$=K9ZCODrTypnBUneV2zM(~`vCl>-g95SqsKRL<}YIL z`1VSZ6Y;P7i(z|wLtVt|V%rrmg1U(^_+{1Q;t#A%Pn!z_{CIN_<;uAGdS!Dw4SA@% zQnzcd4nsOLcc(@Z3|4)9NQC+4%ET)0>FD}IAG0);?7&|#AwtH+xEAjn<8Pcr?(#0r z0sXR?j$PNPT%hV$`*S_hfya)Fh%NOs@oaOozhqu4TJCrFy1CrGEgzP)s;EZ5{UWa_ zGXx^wO3Dl);D&neQmK`EgL)@8E@s*%M(6wf^-9C{lOPZ}QY~K38ATd4r$}w_M4A{k z@+YE_E3Do;7cme68RG8N(SjL-q34KzNk`DuTRPH4>L%6t@0)=vw1D$M8ZMcA=2}G$ z2;l-6F4_u%zayP8ZEfUyDNfEOJa$`lU4RX$dQhD9zAihpW=40bbZ4I@JWGYC@fl*z z<&@*)F9TBqU0u0V#KZPd!YcG?fx!|5A^oJ22OL-7CVA<3g`A&X_EDEQe-0>x8B0n}gn_x32bW+ve6ciC%emzV7~5JF@+U%O0;hpwOe`L-xj+IVpciM( z>$@RBw#*-#2w!a$vZ#DB@ucLdRli_@`kut(E7IlIjjbWs5%+pDR%y0MrhpXUG1e7u zzbT@tQ);tkh6mwS!ML*P_k9CcV2uk$>Y3&3Y7VqSl-H9z+qywd^i6;EsPxZvraEYQ zXVj);(s4Mx(*NjF`9}Y@PlcA=$cPp@CBIJv3QI0ctD<#~UU1dq8Z#s07<0U_gE@H# zMpZhE5vyeOQDoFt9 z#!iS~y1R_Aw;!MM)^lc~Xv00(QV@+2%Ikt|Ardl-k!qg#wKQ;%|6XHFl#%!) zjFeS2&@iwdBu{p?(#>z*0N7Cs& zm!xKJjXqU>M8^<*NaLod`*>%Gj#2CcGj-mQh>ux*iHItof3X^JvjZaAsCy2WuK=v7 zN*Oby{!o%-hMGo3VReM39_H@Y7%EBx({(}hL9rPb~lN#<76%d3vg84&WYzQ6aVG5K5jSobd_(61k_A17ETqeUsw zZlewiH>~|?f{%@8z~mjNh6ny9_1_>GkIEBD&3m!oLK*O;1z%PTe*qX&Keqk@%KCho z#28&T0+^2+EE7$8hz8VDR!%iD>G3@-a=9jy^VVqjV(V>cJoozitj$gggkjv*NWivH zr5P#Z#I9vq$A;L*0OBQ3B9**^e|fD{fTvnM%9xU}?VQ9@$|S3Gjmx;+)+= z`2E2CRNBx?q&MnRo@WmsvEJoCB>=~ng}s79GVt7eI`F|^PVxKtWPWj%j0l9;3HOL+ z^URiC_bAzPXx7Axhz=rCR`e|M7a&b*O7w|n+aUW3>r66C4g0;qE}U1XAvOKD9!awA zXe+bc%=ZFTLik;oiCRm-fpP>X$o80**qMqJTZ$oZoGV@@F?DcpNJFfkS~shbuBGo= zDVA-zBQPZ6md@a9)}TH2{jEmAe*E zw4Bb=zd2Ds7DuZ`4tiJg^hCOC(b?zXKHXX{nYPRD-STnOcTTb{Po70uLn-QTaMEaQ z!VWLU6n44!A9S63gdGmtqzf%*CU{tR_jLQ^!sQ-#iECPgp$)uijG!jUTK@Vu9&CCz z_|J)18Q-OpdDhLUQOMB<3IJ#E3bdecFHQJOE3={28zLQ=`EOCAW^_7bGk2aG$&Kwx z1O{0qi&Rz<_4V0XbY`!nOw-NlBM5cAynlYG|`G$r+XhGtGME?u0QkcgU<5AGfffJ##E&IoIvb0H}5Cz*Z-5*=CavT^V*8PtM)_ zg;miJ5=MgCQ#1-|-gF40b0XGLmI+HVc99nnuIy?-54#r+aKz$+An%^T!Ze^we}~e< zW9nAfqs~RuICjF+_%BAC*NHN=)FnKkG-<*QoWANG&Ao3pSA+PV^4Hwq`X3F?7T0)@ z>Jlz+ImeN8kTt%*OU)<|6Ar(3#Wbml(k?6N*-$|)nm>@f75LyBM+p|y`CqoM+is*FtPjLcLpSv?f$ zyri|L6}}}C4w&*E)l$x6ST5G^YlYCteGfPQXtD5G5NL68wUVoM6mOn($)olGL7z62 ztT3%W8h4&rdM@NQ70_aF;d0$Oe-%${Mr4}gLl_#@5;&Uu1a@QLa{I8Z3;Z=GF_Loi zM{pS})WSOw*#Vlbw8m;pO1~wea3rM1SNP2rz+j$KKmd)tErPxeme;!t*l<&{8x
6r&D>OTU@uqf*=*Gds`k2lBni+wrW-(8HJq^~y|Dc7Xw z|47b;>_C2~e`L8}v6h)}7SyYwpd!hivrzW{B5;=8iH!&T^seLBm4O9)`4fNKz$L)*g)h2~(zk4Vkb z_P@oS0*~G4e4gle@X=dKC+^dHpFD>bk2xKksR3D5zP{}zsqE)^9(ktcmiN@#pTy-c zz@o25kyrN2{-+LgMGiDy^D~9vPy=%Xzi7RtN%pK~Bt@s4^{#xiRJY_@ zm2uy9ta!Lq>G{m^H3?Ee{I5Y7u;r*p{Pr5t_WAip7~AUkwW!$B=^6eWN@y{x7;nD; zbQ(ACF|j5qx)Gv9wfUs)Y|Wi!=1?lmCx6~G=sH5Bl2u_msTy2*u*zbXH(SW?M3zLIFBWBPB45M~+4D-cy0QJ!XD;?f%w+h32uiIPp zCu>F?$FlPRIsHPk*-IVXokyWqkCvSCj_$E?L>Ir!;oR=^7TaR)v=(n)8BZOy%-%!N zqct(QGnYdn`*7UAzrY#bOz0y64?<&FG!{Re^-c>MHp#!hnWlO=3b8^QyO`j-iGezL zICD0_M~R&qLFlp00^M@If^g)ig42ghJNSisdC~BHz@$ci0f%bs7v4u70@72N z+3V}36vNt z!)e4BJ0LVEBpl?RJrzyCBEQ&hyejPh=eC-zneu5$4vQfPl?gJU zh{ZHaeiy*-i7|gqJOTSyQxzw_wzpkY%nfd&-l-7_^-*x>)#}Ng$|s#Aqvbq&BIAc2 z*n*glPqtbMt<2gTW&<@M>5~qYfsy;sksVTtzk?a~1^BM_W_lvD>p3DbZwCH{ofrx=WnVkg#$Z3GDQHNfPO7OkQp8&wispM{0iq8L&3 z;RU1gnL}LHy!qhoXuvR$aubR}!l?Qkme)S94FsUT#;SL}>uECF}XNm>rC}Sv!l2;@)Vo#`j8!*UZZ;(4;!Rz7$c){wy zt^kY$iH%e%*v>1Aki?TK*$_n^8%zyZXQZ$U4jarM%s6U0YIo%SDyM{clNf$L;(_{Y zDPWnvNM3x`x@TyFhPk(kce&~h3h2eI*3cc>VfsHNPO3;{Zbm^-~=KwY*5DB=EQhCGy~GX_zO}`mAejJxf6X^6VJ6Ln*z@)GT-M8M5{ClFp1Yv7PwksbU{ldPfDkc2#?3 zBznETbUijUJvQ2Wg-JpUj*)$avxm zT{)<24Qk(*fRpFdeV)dPqTEo@@&cz9~Roo^FE^`jiF5x?I(5@&kut zpL$r&uh+ltVb^@fZ2eHS4pf_;7v}ieKcD1@O><9+NyG-If=oVX{A~JX$dij73iD5 zo!|^Ao+P}sP%N3y45TMSnC<;eXnIN_1>Nrw_d95Z7bia`o_AzkqiNf03r29tEVx|KK{Rod}9dYoX1ham*aMGP0C;#IaGyl{sMw4fQ zoJgY#C>T>?1{Z0fExRz{+4wr`MNnlHYhlkVT?KD5MrO%s!D1VvJsBV$o%C2*Rm>gq zRRjO_JdgYx2=>)yKmA+QL}Ub?X$J{uFA0Jl?qC}WW6^NTCES~d`bUy%eTKY`YvqpM z`;|FFZ9Ghem-zBf$zfn17rB45cx$;-@VU(k!~b36dJL-#QkVw+e}S$NiBP93=Hb(F z{)c;YON9Dmcrx<;!`&e70|xt&fHSC0Tu>W|zIOpK-Jz1y|3hA;BSTTvn-6z|!rk7p zcd25c%TQ6{EpGI{yB=MHenFwSww!2Xee+kc7I-Rgm^rnFhmEA`;|~3Rs^3>|xv>d? zLV5BW$2Z?yLE`TwcF1O`<$ZZI7>bBrijh}@d|IX{rvJANu(VilgUL$g?xcs5s*WJU zh%pQRuZl7iS?L2_F`4~JxG$spG(jw%Ucxy(yyYgQt$i}ntmk+vd1Tp08Zgi28B}()qFQIu$BMN%0In6j?Q2SHpUrY40QzLqEKuq4Tn~0L+ zic^`}fUOx1yTx68Ab~7_J`ZVVb97nOcG2Q!A647a0U5O(|JipDxXEfvS}qm=@6J5v z&ZrzsHYf!6Hq33 zq8o=VF`Lbvmmq|12r+Xlj=RL6f9ekr6|@Yd8BIqLf#%iJC$k}Hg7=G}pEeW`V)CwI z4IL|ut(eN+PfkX!Ke9<;2$ftYAxlNNqP_F^@bZS!Q=wL|6PAHe8C07U?dne9ozRD8Jvxqtqet8cl993B?As{H^T>}%!V4Bd<(Nd|rY3A@@uVA2+(~?S zREw^55RB3}Ws{s`tBw?)ms}W1XVRGVz)Lz=IYOtV`PJeix>=1>Gw3MREW)*Y60Mju zz6+HlcI$rom&2U=YStNc&wP>~k!ul=)YA(HycV{vi&G=+bW0PocjYEdjbbJAdlGU$ zx_CdM7eh9dZlM<=<1xOuZ3g`U%AQ;+&BStPT;~kNkufo5+kTKu;?4_>j2AS%JtQa} zord0I-<|(kA0TKqS_NtBH%uxD&Z&G==%N2o2(Vm(ZcVj^bXDt(-ldZtrVJ?aLI z3-q58Lmo728q$t2q-SIy3ka!_VLxKo9`<;wRNM2&L*d)I6r08>6SJDSJH@K6&1_ZLQ6?PY2YRSo*2h>w}?J6}>!V7FFhRbybn zH^{DH7oB77)gO4(WqJJ4S!!bfr?}rz?2q&vohHFbihkhPD9h8!uc*xK$%?!x5asqzWHkK8S1eE}NH#9wI)u_@@sBxkG zPo{z~95pin!#mi*;~|lHa{Vv>BEzb4%#x^3Yv{BQ@(8U%xM|2h^U-9{R{5wVYKn8y zlzj{3D04_Bs=Key=T#AU;c^dk(W1p@IQ0Flv~8I4%`_ zood9I>6+ITNu5M{BhCuc-%ygaJEeZ=BkS$q*1DR;f?H*gpJ7N0d8^k7^b2j$h(dd- zI+nMF%;u0CVag_ZDxm1~=Gmg=W}=>NC(U9Vo-}-2$#P=T+3e>GwSeP|VdxpYIn~OU zx;Y$!c=t=mE7bD#Ka~I~H!?}ea^*aPQhU+=Ameb&-2);D&E zs~8uN$A&!=IYlM(w-}q*DR(NEmlV~ahZ%8F1EB@FlLQ+2-}52-xodk>AEF<;Z%o~3a_}Tz|dndgddGvR`p9yhU zgPv7#XlNGoah=SR5HGy9Vr`7g82Ji{mO{8$1Dd=ddn+{2ibmv|h9U^etkm1#Y(6$&8Wp{?^Cbblw z*pzyn(=FUiTAoNhUipc4J}Oulosw;2HFz)Q>bz0~lsf>KjZ4h?er7VPqr(#Z2wnm^ zi0E586no1ao@GxC?HGUJdp}`uRp8-@Kz{DXMm!-;m>g;%q#Hq#L$zv9O>${j(8v*s&i331)D%x^1Hv;#h#8Zoo8_+KzD z*i+Y1tf_zx=}HnnXDON-7aA!Z)6mv5o$bMAiCL;TZeqgK@ybWgsiDqTO^Yj#*0K_hF{Tn7bRxUx5ZzzHN&KhCtH2$8r&`&nI{$1X4fJU zJ3@k&P_@;TXTLvD{295vW-XPH0$IuIQf-1q5d*k8zYd(L?2&3bFDeW5X{@CEN6oa? zI?jE;#C-uza4OhrFwDtdqdLwhWSqHSbL&%)7yj;XR+p1<@iust zT~fFIJq6ihTwnr-w&E+*n(jVIA`p@K0sAs3F4CjIaAeEhcj#E25`*QU^tG|xF^Byc zbOtzEml8%sdRAanBrjI-Pl?95>)3^KU4qNdBrOwAnjtoa<0VE5V#Mq0GoN9c+4P{M z+=uhh*}p`!Hn|3ys5Ds3fmEm`M(fnOLJG}0B@n#{+hv;xfE88AB%#=V#iiA1jHHBu z9VJrSQHyz{C}o=+4`a$npNJfg<{I@6Aq z&h+xLulrB8%A<4qXw;uYGJ_1Q-wpD=n>f;ahcC28*wDG4(8XrujeLmaVHlL0d`9zy z+RIatguSb{K5(Jtv6{0CK*D>ikOUQ&I%3sMXb4QOoW}{T9??rp5MPQ3-^=UvS(e8> z5J;ZSP7vjy8$WgCDlJmkUoJBP@cs^v7=+M|PgBF+A%;-x!MHSuZZv_N|2X<^2|%KC zAwGptOfHLdO@{LgpZyjhI7R?+=Nw`l^C>ASb3LtGxVAmvahV-*T5 zl&ev}EbwTMah*1EN;l@ZrqU;su}I`C;ZeREd}qBGou!x!%s(uSDkz4tWmIAwn&E+C zU;q|5Q^qnVUtU`0RTT3S#wowi8$?|T`9VJ7@Srovr3<%YO|%zPW(~5(>+@;tZ@03V zktyg{6^yIES;dQ5m}jK`tm#u~me>CCDiOyPbcKc0N&5P@xURw$O)xGyGrs#v#YywY z471lNiW)Tu5lwj#YW}fXkBofY6=vrDR|wt zt!U?IYZMAH{mti8;V6-w9Ay!^DrZ&-mE_6`kukl%s@O9n8|Bo1K!O96^zf`mD?tvr zBrfMDmRvf02z+JAgp@2tCBDZ%zW+R{ge2Xi?frH-Fq3(#s$} zlnS1Gn?5|pbleqAFPCw~6>ektC{MIB3XSIa6sd^k9D>PHzyp&^4F&_%gAZ+(ocQ?P5paKD8| zNJ^MgI`c!iIB3WwIwl;1!#+9+Hcz!hYIuNmwNro>Zc%wZ#J2!U?*f&EJ_ipD%H$UD)gWm0Ca5iAv8&q{wte zkJeS@cgY44u;B`4o9>1@Gnuh(-u^=N7kGCowJ9l*qws=vT^4O%`q6E7^^w$Y{4>Nx zb>xW(u{Ej-s&h?umms6&d)byM?OK^$KHG3lQhm^eS2~`BM}Q|NhXJE&CqjQ)eY8;G@g6lMSs&+LO5Z_G#GIDj$c9%KdV-&;9FZTn&3>8DNkZIE zaETF3AA~LEQtjnH^EG3=7_%%F_5NN@Jc|j3h?AA@g8s7mNcmDRFViyTkFVCr8vuuq zF>Tolh(1oE9I1u4v8-!^`!%>g7_B8u{!}DT4fl!liBEk=|ZQsCqV? zGQ5lTalRa7g=lAJ`MXoNEH#q6Z_*KE_>^QPFg#K^V|YYV+Swz!5K+%BVg?s2`Aumy z*0b?m2D@lsE4?kSC;as1{D7K#=xA zW~E&>d-7^bRf9IN6YrLYwpAP*EcZhd6D<<5T@b%xMuu(|n&Nk@YrQ4#LJvyVNae!;H+yN-#S58#??GC#ytH4SyZiD#Hp5`(qBVE_x48URl05EsdM;X( zO59nAi?^8Z*n1^1f30k$`V3Uqf;K6kB@GH^4FfNW3*?B5VG?0?ZC1^{I=Tc5xD#VY z4j8ii3i{<2vyLpID?nNruw&+xHmX74PfMwSdi{{2oaZJ8+Dv7TF2zeOPnY}z3*T(` zQDTm}3s;aL7DZP48cjMAfuk2W=Q~X`!^6@JpHv;<>OOenMz>*|b%4*(?w(YgvWu8m zb}Ffq)ULz5*@vUoFc-b!VGs$-W>>k4R=zq$UAPr@B+dJfN!g_<==e#05gb_4J%Olsy`EsXqzje@~L2el-Chhh$ zGCwX3w4=jLxZf8zZ^1^wF)XylhWSX{4SCZW6hr#Z)G^tbF=5yNA})co_0P;st$C9s zAuN3*)tKk>_uxIG<*>|6^1%&d!x%bidg%AY?;}7m!ya)e%ya!WQqNo|bBUO^9)qgu z&o6UG&ar=Qa`(3c4(b}~aQK%NVlqCQS9jwNdJ5l{=s({zrDS`PbaSaGsG}ler;KD^ zhM43FT(a_LJQ~p6@VKzJ;JCmzdGGPMDSuvCd<+9f|9=cD z^H%cK>72}ZLoSr6*p^gP;FI}wDOrPeqF%(_&DPwLOX=N+yg3QcUHcMuwWJhlnjg%T z3>!badt|ThSr2FRnzz)MhK#JOK8#mwZ+Y>KaofAiA&=yE3`zhC!%MK@QNb4mg{mXt zOuM41bm`s{bw{Z8#Rs=ZEM7}=+D^M$jqJ!CmUa?svsyx;*2uY|l#?})(!Gr!7eB3M z>zUB_8!2f|;&V>@v=0j0hpzo;<$3|L36Zhdt>jn6BPGY%G+U+WDF{IFVtCmphH>yb z>wR69+Nn-Kju~K$5<=FKUxCsFv9hbcGd#m^g}9_AG~pM6EQAyQ-aKZQ{=$7UIEe@m z&>rol2kOJWw4bLYOAK)gfxDVX)?MFcfYKzh6s|7Y%HwKV%bSGP%J?^TNG@E@x3@{+ z-Dn$j+P<1@vlcl>>BZMg_?i8s9b(3RS$ZD#CYy2TUD)*a*A?pNN; zP@yAry|enaEPLcP4}Av}Cls%&Be`NRv8APJ&TVRK1!_mV6|?had8$MH*f%T`^wca2 zCcN3_r47E#*9cRzE5DZ4YWCRm@+_A1V%B#og1Vy;UlrFR{-&-h@k~{|GSckpT3ov6 zssSE_zQykq>$%GzyCTfxZyf$;bqLa(&)hXBwlVf-^wN(0uJs#lk7ibdJi9xrKx+bYYRzKqY9q) zBOO(|xwz1`@)4)xoLdQg%drwnbDQs(0X*jDH-SDL?;gW;YmH~3!yz$QXK2GxF`Y(i zgp#6KCFtaDMYOHYk{Kg|zmyR-S-$lyE8GXMS_Rr#9r#E|e$6)qV~iOAzdjmGMd>FR z0Q*U2RuDcuQu^=}Q-^TgCRaV{)UrfxUxTMxekf`!AM>16a<(c)ol(iQ&-ZT!VAMc$ z2}0AD=D0s{YHMPRrOhYu^c&yEO3s1usuP4Ts}|{w=c)P-3Q=iUlI+onAKJbt8KFB= zV0sNU&@X4kc1u6;-#XMQ!lB~YA*5I~A9_Z^Z8jIxda}-TCmm@+^Tcsshm#U$RfSy; z1!4lTTp#_)z#G*;i;Cid;$ce~pbz#UcbHt+mC&@*uxFmKK9P`Hw}(yt3@P^j1MBqc zFf=gWOTRUILrrRse$+HgAn4zIF43<+9g)77(mMYjEkdIF6pbiRjTH z_ncJ~#bOw!+$ztlH7AKcTUm(K#w66BzGwQ7Ki2Q8bGHIF>}zXczbF84w(T05qr_jP z_#2QJp|^ii=Wf!ml)q(XXp0AxA-drBg1fM1BlE^rLogH{3jfwpnRWpsgs?S!PEBh+ zCZB2A6aPtym!#fLYhQQ?kTl_^Z_2Hawxu$b{IFtT{Vdqa-^e)NbXbCc<0%X4kWd*R zmczG2_YqKSiQbp5G4T?b7h-8zgCw-I@Gi0ATU%SnIsSI&RzmhTIbpBfNi!NLquWeD zns0iQmw>(c`&9(&8^t3lQ1dV3Ve^Cjc>3P>Lt+q~p;+uI-t!n(3Ya#LA(B%swnwEj z%E%qupV*vA8XtNyA9U7V(Gh=1IDnDuhnO_cW{Xla@#2{G4y`M095u_-ouW)-NXMgg zxcKTC+S76d@9;|Ym-G3hYm_5c<}6vNS?ySexL9pHo9mk4)_m5y*4moC^w4dYRyS)2 zo8tw>1vdp(1jm67hF9^Z{&i1DQ9u ze{n^qGA4;92?vx_O6`=#hcfQe0%?s*$HztBGMub5pyb>kXE;?zvgqy_Nz%tj^57(- zyyYHPL_9nVB0W5|f=4@Z5_!*U3VFyHH4p;vO&p#L-ur-rpc@1RVSd;xe>NKFig@@o z5cy_v$M?~G11k&pNpTPEn=wcF3|@xloq}*RtpfD~&JOc-`$fdG=x^{zupcCdpr2@8 zL_G%e$y$c!iWknmCX(#}YDuPoBO~L2!yZ!2EIBs>+cHDh%>Np$S-iN+cTP@F%E#z> z=Cls%q+RNsuJ5hybZ&Y^-l86Y9-dAqWm|=lqy0w1E&vldqPv`-$yso}(R0v0DVgBL__TRH{0ct!ZCAPZGt|0pa-s5-B&kcX7%#63Gy&N}=QRID{ z-4D^C;rG2L>0Fwo18u*lOKIcGn!;KpPd{ z3MqGFi>0eFwNhQiMBwu58|TZ+5Fag3A5w77h~xAU4XDmrL)XS}XzJ4(Ice|P@$Xqd zhg*8lIegOl?VHoyK9u5>yVS)wRAgq9H+gFRGony?bL9liJ0mDyUiU-agotvp)Bi6> z8;8^1e`Q!5i{1iVv}OrX3uOJ9chNaO%pWhMs_7*RP4tVVW$NUwHNO4)RK0XAK9WvvGw-?WT|Qqq&t)02-~t>IdievPR;?0mQ$<(^)3+UY*4VuCK& zvzWC;?I3xqGhvl~CuM)qIXO>dFtg-exkdSZg=_QrS4T6mx_>*daN5$ClOcfL?-~%D z);WHC_!I5r`?;B(K9^ikvHukhA^du_0+G`1nKb3(pR?Mk#nkBJ*@xGWfYF7O%d-wR zVcoBLz23ZG;s;kQ&w+`nM#lTLx5Y-yxdozS2NfCe_2Q^Tb`*r+FAqUBGjPa7*f`9K z8S|nAEb6SK$qJLsSR7pR8Dh7A0o95lJK}NstjeML(eTQp4yvl$Ae?BZHmdG4XU8-@ zH49qYoZnRlQ(WlF47BGKfMpw5azsKU^|`+`(F~^7OA!Bxhsd(eVGA9xJp%n=FDaCm zgK;SaUfLIy3r8p?;WH}-b8Kas$R3iat}3z6N6>$*+Yrm*DkkyFWyk zJeaA_T6v_5nPBL#}pyeZO*YNXfwHk{VbeEw?l5^1PH6VP}vX&TDuJ0 zsn^qJ&y^une;%}9WCkGyY|pZ#pK70qJd0_%dXXXte5aMYzz=O(2CQOTt;B zo)(A6Y?d9ceAnEJ8%-x4{`Ya{u&n1;3E7;pgRd<}|hlnfzX4ij~Z< ziFSc$Ew5)4&Br$b3XCd8T4fA!hSPG~Mi}}UVDXV*L%$JWjFQznLh4%Y(r$P4>wS1+ zc!DC>-zAr`cF9VWA`_|*U)5YUyF%)fwW^Cdztzh>l9u$ofxIbMThE}waSXa6q73sc zmgwujJhkO-7wCPOk z#Mc6=)se^A>pHAF*;hq1XexCb#i3ieP$un^M<(eB^efkO?P|$w5N%*E8EzWA^kxZy zsUe76()T0aQaBb(5+>b3^vv-r&BpDN6OVPA?!vzuRcm}%?KgE!Ko*l|-D-_6ceiL@ z!can&Q9b4p1uleV4)qv1&pPvdH*B18(&21)g+?sz2y<+$ouFQ1yJJmEAlY1*U^PwM zzwkHZ+x2AP@#@-USOh+vxjbGd=Pf*_h*V+`DWLQ1Y3(6Bz1M3ZR_W$w8!V$kFh!W& z$ngqrU$tsq3pjn}H&!GMPM2hmrjB9{`9qG*+G3cZ0Hn+Ff$3INF{Clpquie}0{FrA z0Wp6;lUzs*vGMZUBXc6Pf&hg-#--wnvjg=MLFMQosd0!tTQ@o{giaaB?A89l(b83HH4XSi;h2oI~9jp z7~64s0OxghG|-LQC{jJV6$Zz!_Zh-n)HoMEXn&bAQQC*bhLvg)-He>%MaPz5dy~wY z3=s3{x~UG9*8GYK7md0@(!Fqh%n2)JCm%y>6TfwgyDCRG(erD8zM!Q-MZjSx$(SHD z%oaa5;!e31!}o|kGBX>VA~lVXu0?frP8yEJ0!%z1;2RK&OI24aW3U`imcXOC{hR3# zy&Sw7jiw}HJK%Yr92==P!8U8aCg8nvVB!CDGV+(gBlA1k%E@JqcVP)lvMzn;Vt6Ht zFJVeWRcn!VS~j%w&mTE@cb+QyhoS#^te0e&Y-~4*frzJja~?6?BDiy#xGq!`X9Vr# z0NR2y{V29@Q2uId`fIxzA~>9;`KXp{n2O~;l(-?lp>w%CD=bDoh&FI=c!H!rcfohE z;OqoudtyVkmrNGx@o*I7(+PpvNgUq?``04RBb#VZ)SUvR@ zRHOE<7q{*XqSt|I`nO3;3CvqCXYgLcKp+xfv7O|BF~_iy;83}t>>zJOT(=*F`4Vqd zOkh_t#Hqnv*2Q3xtvX4YJky!%LZ8i#%<0wg?`W`>rGn&np*ItVJwJo?1OGKzq_Uxn zaeKSK0ty;-np_~=>fmUtYM8dbmluw1hae#gEI*kT`c3=qG<{>f@&8UccaStn&4GD; zLJjGiHk|B(UlJT1r#7+pd>9qTUd)?&<_i!aP<;&aXcGi28vG1v%(^I-J=Yg>x8|+?70(3U!7cjb)jD2bFYeOi3Sd5GL9j4aTk2rzFfh z9Tg=-hQ$CM&XZUDwS96gg=-1kLO#ArVnC#j@Vl0|0~D*4Z}ELFOV-i@2EcTQag7DF z&S;?YLpAbFP*YB_K{7@)M2q>!ZU0mN`CgOOS2Jb;et!4qmhUI|6AHu7;TGcyZ=lF*2-=ip$ zU_K%bVc|W}QxZd$sGs~9DFM#sxFKkP({_I8Y7VmRiR%N=#;36|KRIz4nzFM6n=11r z`~QV5XfjUMPGlyV>+7xb2Dtp&8|tU*yL|}ULkKcgX7fu&9Cr%qKnDleAM{$C{T3SY zWgtAX!wy}(!J0$;j#=Hj$&&?s)p@DV%^vYXy>8Rp<6V@q^lv0KS09jnb!I0j=G5Jk z-HLoH+%H<-)Zg!eOEElJXRu4STkkx8V@yQkP2Y_nR6_F;73;5Ebu#t*DzhIxvJ{A# z=7ntzh=&n+ISv3z3ip}+-;k&uxD6VO6&Bv27kQ~m7!1R1N}*C`!rq+Z)N@DI zZJeyw^(8IrVJ-X@wLeHXZAI*Ly!kQb+@3oWBuw?toc4nLLc~xM{OFMFF=T<1hwUJO zOD7ng07Z}Au0>A(K^JE|rF5x!wB!ow)GL$#MS1p1T~N@7xA=bmWk8z0V}Eo>lub*m zv2b~(2D&uRb6J7QG5sJ0ZLC0fAx*)X3NUf++KR+hK~t&*EK;Kan#eXq{%9mO#uD@g ze25PsX`z^=uGJyQMJ6M+3QF$AzC$R$VnY*xn+*0;nb_28DtO4YE*u8Ly9+7R$~-&h z!U@i7C2`Xv#`SEk%NJ-Paev|n_$A==T(a0TE^>w4?F8E1b341DX(^=W0&y3`tn4WX z^tXrD#Hd>+R`IQsZX+%UP#7r-^%z)E>gFzHHqvN}V&6HkNY>Cy%>49X5$1v?7@LCS za>rC#9jjhm!E+BU^!VEpyC~oXhelMn@?h`k#0rkHkT^A3Hm8~}&VMUb`7wk3PAnoj z(pMrB@B5G=-1h4>)>~|;;&Z&@;veR8t$w77mGh*JtC8(&QE4X#U1r_iN7UARrKQPY zh1N}gskAy1Q(>Jyx=Iebh``$AvDK3|LZ(c6U1o}`-}LAT^J>r1^+)e`-NFRDe+fkK zz5yc3*FV;Vjgecw_k#%h6yWf8_d3RujJ;9q+$Wzgjhb$CN!&9WHj z@AO2X=6(MWOpn1tdqdc(4flaXDLW$Ki`mJ}c6BdVv%=$9OMk5<7jwLcY~sYWBRXW| zB#WJL`j9gv+VHfBFk+=J-ixLst4{-q3k+S|fzu00CZ$Woq>h>4G^f6Pp=Ui9d3sSt zGFr=DZnR~E=- zChW>O)LjW*>WX`s$Z>a(%Wn=!QS~^^QrqE5!BNhC$9U-DOK@(-h?>P>DQoHkb7C{D zqx}5#P@dx3y}s5Uz#=RT@n2K&9!#ztJ-=@_rmq{0v47~&_@6kc$_U4LN|n|zYaxk2 zB3bRW1#YN^kcXUAEDNZ~Mc%O{W~SO|+v_{E-rlA4`VKAbyEE$Kx18L!>c|oAORwl8 zkpjH|bk`qmIneKG%-7CXaoN4Og53)PQ59}|>^x%FcNepBw3TCoKe=Lk;_ zV>Bpbrhl8%_asN!uc(_Ni%w5$9)5w}<@0`33cKQeO;PLCv@rmCcyZI9WP#2WoYYVg zx1L3#XN~gu>~Eus04;Br0wfXqLD;Pu-oGA~RWRxUe(C9a5aPQyzD_D|`|v8?d~e(o{$Ku7S+^eg^WMQ}X7D z75gTUXXa7gH&W=BtlY7%UMz{7wZXP7F}7HQoiGdn!EQ#Uc!Gf*+jGmt+`1)?w;5MA zr+?a89{Hw13dC@jznWR=d_iV`6+viZ7pk!(WtLAQP7eFTXA;!p^LRRYUbx^}a8#&M zI3(?3cy0wfCH{yr&PM~5`y1T#bw#AOtY6o2n6ps7aiPvA&po@+1EyP$dX$3Jnod{W zbIeDdLL#>wjS`5|HC8l=f(>)ob0X9AUVni@INyl9%-n!az%}xLeJviAR#4YZ=qFa2 zSI!bzCmtV#q)xtp3zB-lj2#WexU8e;^G%sJBzfJQr2#K?u$o=em5c9@;%urhn_x z1^Qc67MZ8^NT>3RzBE;ANWO3bD?bxJ6;o)v8;)coMrPaE*WO5;b;i`)+ zaPqwy7)&-Snqav7=LCa+p!O#voOJ}5T?{v+aFJV5Jj`wq@gt`bc0N*u4=uw%@$w7x zmAAPV5!5b7?dp)(xVZ6X^JC%hx_?9Zra=v<5Jzkd;3UHzDL~K>{X!ws;{w&3>}s%C z)Mf|v)SH7<<`zMbTjaK)phbo!nlbG4grd6d+kttv9wycWXfAFgOu6(rQewX7i|-DQLdfb1q+E9dy4>moOhv>6 z=)&nU%UW8(?Ovp}uFK^MX_Gk8=Qvh22T;Y{svbEuhDeC8)sL8p!eH>Ub@^ODY;S`e z-a3ckTnLz7O5hu&C7n_tR)5kt_>8$*3S>S<{@{p0M>kO$Nm6UEnlbp~RLZrJR0rUa zATPk$&@?Y-G-(`>nYx_h@(>W}^&Sqr=?&qbK8suE>PD}I2sal&^}e*LNAq)A!;z3& z7pXbe%`bT8Y{c$c{taBC2i%GBqD8&;bxEWhFHC`_Q!Jf+cefP8-+vSo#qokg%*iy} zlI32&Jz`)3zLp9!;(bt1NLwSR; zg*0>sFY9FPn5=>ZyOYXgV#@9N5wS&|!Wc z9PeZNh}as}RP&g0i^F4d5s()X+UZX&2Juz$%_k2z?ZU?cgnw$T$5ZnWVp7MfUMz@x z^QJ`MC_09});PvnB;C~dXB}~F_4NW<2GUkoIoFs8nT*&VMYXuF2+A+9`nvm7K(bl*pp(u6IE{9cUk-LS6lZrhSo9{BjTMX-KCo*3* zGtw?WB*tem+AWTl{OT1@wBMvaCS>x*@RxvieFV#6oqv;B4C{E;wGsbh3eBSR6mqke zAFYTcm!1_n%81Z%HAGjZIDa=lL=%GI_v5LM)__hX4`F%1(?iRc!)&xc=~0&ff9h`AaXWXdI7U44gv0>z+Vq zpPxh}6hs=`^rGh}-^Zsu`qe+4|9!WS{MPovUw^4uob$Pnnn!Ony|S34lP9&w)ZY2Z zZ_apc%`Kj)#mmk-aE6eKr%zA1{Y&S#-}e+QzQ5&;Ex&J?K*k_pQ@nEQjT+G>2+w zHaN51lvswI!B5PL7G>Pu`sF1BD=)mF_J0h~e*M1MaQeJpb>og@LT;dEMEMF)>L&aa zVvs0R^kpOWB_$M71=4k4tYPmdesCt)FYAOn#JF0DCq@;@Na+%rWv1i^*H2nB6aH$R z?R{c|ZM(SOoM zV$0s)8lYbwrQxQ|OtG0$Ujf-_%t%vfN}4$4S{`FDmI)ic)3B)hd{yU?h($Yi8nnTZ z4rN=?Hd`paH%%nfLW{+b+A%d+D#~c@S;CPKN&MK!9kf99bcV?-HpjpqQ&NIBjVJ@G zlHrwPzo(npE~!cElJb00F3aF%|9=%me|fnN18AEKn!J$KM>K|(<7~6NFz(fu8m_18 z<#{#_xeM>u%Do_EZBbd`S~;SUmqF$QPZ=g>)-ob7>!?Xe%({&HX`3T@~M%r3^vPA>VJi->4e1oo`f32J}Ov|TdYh*6w80*QS`C^)N z>^a4apV-8GPQ}Nbj*5{jeP%nCvt8+0@T9SFtQNz6mq3Cwz-(6_GZrO?bZ8KKO3#{3 z{^!a<)&HD*2W(aY36Dml|9@QEPBCILMf^1=ccHe^Fbaib7s?M?=)O$xtco~I>_?)b z9(p~dQQR|~-Yg?&^^-F^42>T(>KR|x7J~OdBUkK53h81*^Nf_9yS!%_G5X$8Np*8g zUC5CvwTS3?i`}qDt}w7^16Ri*w29hz&(NZ+ddu;D1I^|!(+Mnmcz-kadXXxxoyVHe z9O~ef>5h$m)~tW9cipjVbyfU4+lig!)K1euQ{pa4C>hR9Lx40brS$8dNtrFdNu1O) zv4icj4e&uyw%AJu5PL`nfdB~sVu`)P6d)l40x<-CutA7X!tb4T-}8Nb@7dRm%WnF{ zz4zR6&OP^>bN6!#HGk4mNx#Rqi**Cnaeg~U50v83adA)K#(KdsSB4u9_tcbUzC?*M zxN$FxT)Oa-Mlt+09?`#Jns^fK%=z^54MK59eY?ff~#bQyogc@y3(6M!Mh- zZ-O4)Oup!l;a-e;KlQO0pp%0c26szyX2%mT zSD>z0Hqksg1ZuqkS8xg8IaU*jd*hQsJ#gPS4%1%Gl-*a%E;92WXd>PNenf_zVOUv> zWjA#X-;*|(apa^{ zo3&Jl2O4_0yMJs=R{GaST2ye{`Gq z$F`MU_kZ}Bhc}T2(y(0ij5qPl!~BWzc^rf9g8lE8Y{l7!^TV13BnU-2qOp>4@V20; zbM{xAbD-*+gH`7osygRz)j3D1&N*6j&ao4PFRpc3i zY|J@;SwPGe#y0Id6JW$j^8pSD?zovQ3AD}m<%`|lKT~*^l&VxA@Wp2(1=|0*$eMF6V0^wCTU+XEI5B3f@ zUU}Pi>hy)~^UqCcO;16%o2KYIY;FGfw_Yp9&VUbX-DYb7dy0Cv{_=oZqklPsm=D7r zF*iB9ubR9fw1%);>YRXG#+5)Q$uXvUa=23@&w4m(jhd+ikPMs0ox0{ID{v+8HY+fv z4gE%FR`m6$L14h!9MTqajhZU0>!*+t*m0dSuu77D7}pZ;o~a(kGnSS1iR!1-W%Okah zMN>#E^K1qvDpv)Xa8?{@eLOvZn~^cPO2VLu2MNboNG+tQZ zST=>lp(}Rt05mtmvMD@7J+HN=P|B}8Qnkv>!TLoGS%Y?`DO5+-*%tOF(SFhn^#?XtGSMDL!C$gzyUHLsg)P}?af%yp&Q9w8^<=GZq)Bg6{< zyyb@W<$s*Cc#CQu(Z=(UC{#9u`%xZC8VJt7ATQHnXo8Xswwy4lMNRSzgnNNcK6<9p zS~eL&*mg)j(HYwdcaF!TDWt6%s@Calit}PTt2Kx>ty$}TwvD$B_dIis2<$?Y z^LUHndK#`JF}HzuU^~Un6;3@!_ov63Ls_2leIN~B*m(tbyAZ~^Yx+TDeeo_2OXsW_ z7OM`t@l`N<^2Fh(zsn4>2>mtR=pkyHbGTr0HCB}GV&4#?6m;bb{byIXE*5aq#};9FUby{y4Lb#Tc!b+GXjxqs=+ z;0`AAemkB^2!>a|nw(OV^9%H9&V4^p2)c}Wq2RQFh!*0?GyG!n&m zC%5a_D9AnpPqueF4cnwvyZum$tmPCb)}KcejNfZwN^yDSh1`(Re$y4+GzupLt|@1Hi+n1Q8XzO_Q9U7DXO2kWB!9}- z4in4)yrpNLrq%FSGiBbG3$tbW=XpBz>5xT_Lsm4YLw~1OVzHvs3HLljVVY9o zxuANJ#&Qr~%{{S{>=jG6c?F6wVcej~^^r7V1YI~Ork=r@NMi|Tdj-AXdQ_e~b8v32 zKjobOPCQ&&6)bt<&5X5h%pk>@rk+9r!HZN`F8^vp(~Kw!(zMIf)r!oqaH4W8Y~CwC z%|!DXT~)9s$A8U=I5-Ze1z`VJa|#C5LOBuz3N@o4O5t4nF;{wcZQgCl8nB`Y7()R& z;I)mmt7?PL;oxcC{yWH{*_L3HYrLl+9}53+#V)2jd3d8oimBu zQn|Fa+JE*rixE{v2Kf?JmF=l(dHkEM}TxIqRXaRHb*3zgK0m zp2YQpu_@09!}0ddeCT zmo{$SaF90QmCB^;m%a2cx@8yebg4~7GUPbP>*%GFPm9lUUa6NRrMl&%Aq#ie8j|QJ zwhq$LvLtES;&K8@=8}_^D9g3O&`{9|AbV(z2dI=(o#-gwLwt#E%|qXcsa3E@YvnCF zlYi$*=dsn$ktWByF?Xp-mO9-Ev+~?bnX=1grj)mt z7dRH<3`NZm9-^$~Sa8Z)PK!9I@MNAdw~$U1n^pw|yC$?0c8FW zt6`}6U3t&1HCv8-dCC$}-e{`IieqM~VwdptyU&tfXj=}V=DJmKPEVPw&04c%skt%> zHE-jrS;z`yQS&OY7}<{IC~u%tDpyCE53WGyxL`bD1Xhl?p4uAY3pNJ_VMqu>cK?&`WH{^nCGr#niWiOUO-46 z$dx74R;D#w;kKHJu2^& zIcG@;Yn7jw7}v0LD$Dn-1u~>^p&6( zu2H?Us`=+z4PJB1Yk&1$`<0H|OBK^?PF|P&-mk$0;N=fbB5eM^d`47R+~u1tN2%yr z!H98I^cAa;2T4=hlxzDSU9o!l8;Qo%@VKbAatkQ^+MeBP+^{My!&%EODmXX3QtDVT~@f6HSNt%ve*fgPj3<$wGNrSkFx6wS_8g&!i~ zZeB^QsM9$fjFI#O+)n2Y*7Zn#TDSL>w7esy7BAU;xaDY@amKYf;|`Fv@p;dVn;r4L zNjJ`mC+#6F9XZ9)@MleWtu0eZxwN73`|eySX052(;)L<)zEqj3hvKA_S|@Pga*dlc z%*1o#sGV_9(toNr)*@LRzs{2NYuhdIn3CEp{D3jXsMOjA9M)xrDxCY@ZFb)w1vz(H z9L{(|!VtH^$~Ypc#lIdIM2J5N4@YIdoU2?K&N%aIfL0@Hya^o6!I+WENzRK}llGO~ z&1YA8cte$$>JM+IQrOPn4OJSoJG|k*Ui~2sRp$R`hkrP#IM`5G8MH@l-^00WpVUUG zt2(W>)HbZVQsaybO}!O1`z`VuAJz}#iaJd9r%L+~&hcm$9o){CR6a7wo$YOm)K+N_ zP+}ty$mcz^CV{t{bF`&A%5oMMI=xS-vEtv`*(;~X9X~p%*74JhsaF-X%G3@xK3Bd1 zy^zP;bbq$=^w33VsNw#BwnoDl`8`m3i6gf#JJ2ompTL7a3I43wozxPT9-`7+Es?*svhFLKiON^-q%2iW!>Qol{@GPk zpKlAPE(A|)pG(@z)uI<=3)STKs|xm7^`2~@yMJ=*Rl?7GrcZ9S&twbzD-OM0-ClpG zH2-wAI=gY}A5py03ZgF6o{_y>LvN@{xkaqnGbpW*ZalyGewF#T+Q4-(uYb0SZ-M{%DLV^j*(; z;`II3nz!n&9G@M&bmijQbv<01<5@SFp7N3>JcKmGbu7oxunInoP`m)*9RJY9xBrt* zNn^=Xzj#x4oQ5qvwFAzR&po!BbYz~(Q|5H?h~$~d%EpSTdcDh8K~TFgXKvGGE`Rx5 zb?DH*%jyVGs|=5DLykjzL@ima8*Vfax+XsFz@4hL1gBi1S*zCNICJ`$npO(G&(&*f zzIFcMp?oj{7bxUKSU z?7cnFaroEmu(Brt@heA$Kf_b*oqsOa!$sk#W67Xf7dRW?1g;^98%A5%NwtkxMHGjKnKrK~Vrs4&YyK zhfs{hq&n)=3&0|e@H(z#lZA?1m7--hSup0@XB~U6bS4HWW<$|3oNQc2N|IaeWureK zvBb<&>B8SwDMKk{$8CLlR)3r}T#{JoGya4x>8palst;(h{hCHpOK(zrB?^{=TBBQT zuA!TDU8Rg(Q!PWH6|zeMZ=+}o2XOD(cEeaTYd76kliQ?iv!>W_aH&STt>MX|CNVNu zs?Iek4jW5${kAb8QJS)BDvS=PZJMU(QqhlEy-LiPmzgkvsPVRdn17qr{*fHwkvnI|xr*Yr#+~!yoYsfSoFCU33|0@6K3|a28LjEMV0By5n2#cUwC-{%elj#2 za$VK4W9%xwa%aHPF`>O)6(?&*Z>jGy$(xo%0PMMJN*%5`T7kK`WAfxs1Zj4g@!rG9__}4ID7%N#B}Whxb=8lT z{Gyy&PLCfhy~)jb9%f~}(OvlQ#Wh;^r~mk38JY*Yew5Jq`9N<7ftwDwK*&G-SQbX$ z;aY9pQr)<3|6TVJVmf(&bS$*-WpAgLk`ex!I7gx8uDoeOE`N@)Y>8CQ1B#zkXW?;E zZwT<1Lx-7E@LjJu7Vht{w|-2tFe`fcSjs1>Et5aGakr)Q>0k znt1*<#r`VIG=!1I3bhk8~YG3hkEg$(wUq zR=8Z(5MDq?`hO5D^5{LiMQ0`LmZ4_ZuksA%xCuXD8O}Ju#w=&X$c;4T*5TtslWut} z`pjRBeb`O@>oNPF1<8&TFmU^+PWz}Mrz>S`uPlXeDTP|bt=%37wFxXTL<6q_ASZR( zv6%4_=I$eVzRoh~UB+?gJkrvR4+-09t-;vNfIP>RD1Rfcq3%oPii?vQQrslBE1uG9 z8mF@+rQOrc!_8c(aXNt*wnkAi=+bfwAW$PQni7-6*TK<6i9fkdp>6!}KhvX20_WIy zsjyO-m+znS>`FN?xmW9{lHDs+EJqdL&enpOUe2`|;<`>+`w3dNI_#I}44u@KbMH7^ z3@eC z5=HfLJ8^HfQTpYEJml1|B+G;(7VF^{NGVwwl1$)m7Vgg zvVRIX&}T|iT3Nnqn3AePN8vE#4=Ea7RdWm^T_zZ>s#0-$T2BT0@`DBptcb=^McQP({2VIL~w8}g445)c? zcr4+w`0FY)nJTv=wDB?f*C8&^1$sn{+<(E{|2l*=X-%Oi!8^WfLyBzM^c<0?y z$m-fB?{6bm%IAdfR=5!rg>w;1vJ%B}-!byv z`|Q7}Dpw(;q|F#!zv)|>4HgkQ&VK_$M@5Y6rrl(D$nr$EyK|_u+QZa6CG7w&dvN?v zIp_mryK~aXgdzJ+Gm2gBasyGnp348B6Ox6dJ1A!jrC|Rm?nwC zuF~FIf;>=8GL$Q}U)gTGE%YYS5_&7b*KxU>CYfZ&8S!J_Ii9YRdp(zFTz}A6#husU zO>1W=GOZruNg!pJXv~HKDI6A3%!>`QJudtZ{qPZ=sXP6uH$L=PAG`2_k38{12PqKK zw2&WSuER?tq6fqJ%@>UMw8&6os1DCihkg%->vfoo&8A>|G}#zQHAYq%^=#40NQiD; z4FgX&Kw2Yi6j=$x2mrC57Jm}|$QMaPRw63^Ytg~@)>sb{+gu6PlRu1qyMj&aktb_D zUt}ek1c@**;2w+-N7wNknA-?gd_mFyK`N+4?+xlaMmF!QC!f|4y;o~;m$lFPU{FmQXB6Khr-c~cjG@u>p|w=T$uUA z3-IYdAV>KPem{%=7;6gFS$XS73-1rNAciAE9Ln%X5Z+%G=JYx)#Rpnr_0i2QLKa_v zcs9Qg(vczp42w3f71D zAH*Hq{B1ZK3AQ36{sBNwYR0V)R}XRc!hU~U3|#qx6bOeqIy!=S5p|A(P@@mmlYSQ^ zzS9uY+M^qv)uN+8@#KWt4FNnlBEh=o##f>nU*!8Yq8s1V>woWdJMM@U9vEJX? z81xwc4-JR$@(W1u_4@y-;bsJX>F3~Y!wm@h(HGr#O*kmPS$SS$kn3iJx;@mO*KHVV zKtWhBbfDW~Tz{|$zE47_LScSA(-`wbZ=Z|ae&qg+)*x2_veZTIg<2R2)nQd zGs1|T%?!V&Dd>-G?lr`8AJp4Pqs*K8@xMK~c|g2|%ztR)#k~<09=-hL`i` zcQi@wjWK_lzm3|oHeZvJr`bj#7HA6?Fm3)~4u1eE2iok(Aqb=+Y!60?KtMnagr#ER zzXg59uLD3@&2j)r1g^lFZct&}0pcIKd_C1@0YbWFT|{dN#X=%#M~|544&Db5hMJk` zB`Fr_QLaz}l~2$4n8sioqtc^cgjYggJ^G1tL0@zsd@Q)fLR%Io+&=uBj^rAO9&DF$ zN`ILJ%ga5%&SKnlYY6KXw_JK2_7L&t=8(ZZUc%v6K=(mmA2jM0S`)MlvCzw3w#58e z7%4_PsO{%MU2aCxdKrZU2_t6JD80{QD&GRP$V?eg@L+#zfc)`*|1$La4*RV!Zi(^K zmHnCe{{W)z4Snz_S01%@@Q2S2#Xm9nsDF14pC1Z!{OXM__`$^c>O+0+zVNg6zvDf> z488Xuv(JcpyYaZD`N0pa$Ktx`tM`H4#;f$(YxLXe_1l~E+sE|VCjr#quZJ_K54G0Y zTaK1`x#?&`NVFY##y{(~-|DwJ`t6IjZEE`Mk$Uh&K-=f5ugBy5k@{luGGb&4jDOZU z%+?VV>eyNDv>gXrNYCmpi2xde%XP$EL{|MokWd}yS)tl}J0gQfLkG?+5i+>nEpbre`%}*disPy|&7%$)`q=VtEL*d>R(kMjw zzx!&W(Ts1`qqB+C^O^LiTl2})d@7Tkxt7h`%xQr0F{0#M z#QLv4`ofuP=1GY(Ud|^{Ho4YW+Ed?W($}etI^qWsrhUsms!mBJSvr2ODs?4*A`Nlo>L2{d?pJ-$$UPQUdo+J z=2A=PWY&t9#%($Iu+(z$bQ19iK!@US6Z1Xy^V3(q^y`o7jJ^!lvVVh5^X*bH0iGTh zTglC5vdgKt2gXeC2{s=Xn_64WuVs@H>Ev2In^=Be?Bd$oa%%o;a(yOqJ(-@E8yQIq z%?}O7#|8$IeWPQCoW$1B`P53%j6fN5{b?fO-^Iz3`u}TBdgIH6!WTdFoW$QgH9q{N z9m`in?;Eevj)XsV`+wN|e)sVCzdY_o3lG0~pVepm;oj8&6zqA(dIQft;QB1yKa6KP zo};*aBT%p48uAnE;N$zeC6foGhL*dGTP2V@^7R?RX-xNvojnWY@jj1C?>a@a%RUC@ zy|xH{{~UM&7LEjZ`IwKjZ7M4t+L!RgUP^So9Ob0NS1-O-KYsvQEd0jcvV}q3 z`rUZTNhn6YSrLk-&^4f#w=w+J7ipEF$lD4sI_{%kdH#6`Z+Urf*0UO3^b;TTSxZie znU4O>M+Y)~_!lBNN7HnICh@!np(k3GMqBtt9VZ|m;ra?D1E-{BGU>JD<$VX*=a;kH zX?URAYGOWlTz{Y|c+~w7(#=GKdnQ*`{RnqFTBB*%Nlj(4$tuitAU?M^Fgi4xSQr={ zOb!fnT=CIkWW1JhtOfE*emei?RC)pJ$B9I)7X0o!Nn_XY`PJjSy}9{o$(2N|XT@@+ z^O=?2o2m5Tt=|5=zTw_miIwHvRjF)#(%UdUbzBP2d4J)r9s{5%_$qdPJCAF(9#{!u z0q_!FZgw86Th7cUmfaPj0N1$#Zf}bkEDzg4)VWuqKir|{xny=Jxo|QyuNO0sO(k=k zEj~S^ewtzZcx}>1e;hvIqt2OZBAr`iq2#WZs`iv?-Bag#bmks%Cr}zRneM(ktp*CL zGmkbwn}3fG5ylw--+}%U|3)^qM`tT)vV1O)N*ikXf7AQ#Hob>x3;iXtCU5Db&>8HV zTTZ4IbS$G1f=BpP=EsXLWLA^uTPw?pne0j;k6?DGcO{X%zP8#8jH?jGTxvO$UuTA@ za0AWI*E>`OaoJzN#4qLwg&X{&oN-v8j=6 z-+%E3^lo}*W0TIRe})E=Th zb5HMUp+;Mcaa zz9--5ncec=hA(Vuq!!(W=rTKjO1=J?JBMDr^%P$d9r`>T%~ap`3M+5(7q;rBU?$1z z#Ma@)uWtqJNiOCmwgQ1bC=h541j0SP+w%LisI$F=@CaYZ+&r0FOr;HhH?@%e$A2Ih zddrrte~7jM2YeaPTKqKw5#Bfg{mlx(PboMoOgeZu%AjVHKw=B+qC*L{T zyuMZc@YKRWG7Zr*eSNF$5(bF6Y=0QP&w>AZ@}@w4DY*jQm(0HAPOMWa34x0F7-__` z<2vn6;pxtUpzGJ^?r)^sE?7@yZl*zVpU*Ru>G@RYeQ}Gr1B7?5(o%2W+CaC^|CwE^Uy8-OYczZzIAk;nZ(=~v?UMc0WJE zw2s&T#^b=n*az?;3`&?z0Dm_q@LP0+AAkbO;ZcMg#w6vFZiWTA!V4P<{eH_g)F&(k zHxV`Bj549X{O_50$*f}S^%Svm>*1MP9)dNhrM`T%m?jqRZ$gvnxq2dSm!f(i5o*$L zqjq%6sG0f~ZxOuL7q=eoBZ}<}QoEFnJWw#SY57A<^f3yOsaK|U2Y(EXLq!~4Ol0%S zaY&Klev@OkZ<4vZn91r~hF%QW_v1yTKcHu7_&arnxR_CD_`4|PeWSGJQUWtBhN)ak zk?O2K+NceDYN8ct_3YpaG>+Nfy?E!LUbW0Se_8Q57zgEt1YwFbkIhM?4P zsbqbwy=F8P$@y|l_fIIDK-CYt6roFGf}72=0$6;G%ZeVUEgXz zuXZ`HiVi%`vqn2;%j9-)_bp1hC2~yRd`2i^Y+uAPm4E9kf;woU)>S=T=js9{N&Ofn zRaiL{+MPKAugGtb?eI(%bfX@0%h|#}QKzL@wv17whKHl1JaR{W7n?*QMJ>_MFrYx4w9* zA>Kd2Q-2I`j~1)XY(4h4mj``~0>(3JMnY#8t)tJbG8k3X7A(9tlm&t z$dvj3lC15G={}u8MP}uJn`Ap+P8!)tyu-v46sUAT~`t;p#Scfai0{+eqmj71Ced)UYcH%{aFW z29iMT;#5Ah!dro=nku!I}i34eSo-;qg81B6`;ZOk(9Myq=5vuM()jJ+4L+7U#AmU zHopsb%2}Y(5F}56q}i@nm{o-&TINJqS&$46Pq-;W08cf0oXx4v0J&IIhxoJ+ozHVSF?~Sy{&ckXt$l^TWwJ_&BH~Oc(R)VXTT0@7DRb9106N zl(}8RXhzPf#JynL^XUgZXH2$HzLGN)c|@xg}-7S z8Pj`(ert{9I56Vu#0*Xy=}`UbzSJ~K)X#sVAf0$9eRw{PiDT#{u@*vA2xLeKhW@dI zm<_sSb5IgS^M+N&DqE9a#>#kY|I>$Fkya8aj5X%-dC=0#iFhiLO3tOGF3Tj;yicno z;Ir=ns_~655yh$;u%ncGgcb+7G>1(1EK<_bjusY5pp~L%PdZ77mc$8klGdI1^b~)t z`_L(=Y)EB1%++gbk+Rl}YRuw_P$S|;a>vnof=Trgzo{^lKbFd~VywM?!A;P`i1t>I zNO9?^47e99L)~p(pZ)uHZ3lGAZ&H@AKR1{~>&$nLJHC;S#gi82yO*JkR*|5UZ)R@e zsnisVJppU*CdJ3@te)OIei>!=S6_cVpH5OJHC1TXxk7!6>gp=eSG+h|PGA7uc9YVi{!r_;Bb&^hn3*%xam2ZfD;Nj;5Uc4N6elcJZ^Ws3 zD;e^2Rb<#@^)5;rOXIGdhJu~AVQ@fjc73u~m}P&kV{tIgQ6Mx86W%3XhhifkBb zJX)m2UNx&Rz-Tnqk!sb0T%!-R+KFFqDihfh=nF(DbBRm_ok=@*tdmN~(BQQeMO87c z#&K&MY0whxQ{a@)CIb4F4#|DQ+hM{xWX3ya;y9VerZRxCK483s*a9YO!vZ$17d?61 zZAzuS2=5Gf^C2{5b);2gQYC-6GpD(0s6l(st`O@IJX`L2k-mADRXAKl+I02Rs#S1E z+~>Hr-I58X5z*RO>F_~~=qwguTO|ZXi&qTn>p~2hguoahu%?O(S_n9rTIvsxW}_KW zi%`;`1=t`7Uuzg&8>`5ed%g_DNoEJf7RbX|#>2`g(rw|vCh}WwP{)6$tYcILt4O~) zDomN(2MLl|t!MN`tH^*$dR(d9J8%ij4UFd6Dl+7jrXDxAcdQb!8yVT*DzefYSyg-8 zJ2nZ$3l>&Udw)9SmaOWjHsQQP9ceNebsUOAPxXbRC1~rzPTuuGZ8k#mq8txS4^Vj# zVy8|%cC!(?F0Mp2iN1f<-zhIb?48a&xB51vOnq`u4%gPt-g`fxoe>hmxk<=LsPo=1 zp9XtJW* zWVv>@G#n!xCgkeqPVfLRtFILiiP=d#y1;bL7MvG=%s)@}sQ7`Q>yeEi%UQjv!JJAA4gBqKK8E?0=s`g9qnx7s)gD}sSUL6^t^vu zj6=5u(#rK88IzbkHzsZ|rVO8{a&M|su6Jp(Xd>4*@#SEhF2Py!I#Q?Va^X2JOaq!> zDl`rnCj>xEA8=uqOlEh)u`at!(_cv4#@ddU>$Arghnb$0SSRoM+3B18uMt9a~*4 zgd?1Hw}I89QHKprE_v7#H?95yYR=ueZ_KOxB zAJ#gy%ittdahp;Sk1wj{x=W89z${)J2^N{`WDL;G5eFEo(#V4>S$YNfs48Lfqa{h> z@x`P`jjF|oTxli3r_yvHJ!Ao?Q7MtDaAZ_PS`0+?rsj_1rmz8hqXGkbCP=fAqhtYz zQz?J>he^q!-9!CZcpg+r=HXUR^4u@hF)~I%mTVIwmE!O-HOIh^kFka1LZy5>g7HDC zNV|a#A%zu>FHPR{k&IAxmBS=Dhs%O7p*>DrWrP@JJ;2wl!n(zdmv#qcr@yd;X-YGCZU zmY`o=@5(RRIW*lBA2N=YV33zPln0{wV7m%tzt>4iuqNxck&(DvM12^S{ncr6%j18U zR3bl-OwP}wp$(yH&jS9ydi!D|vYwk3J0eF+Gp(uFxvkl$9oYov)V6JtY^HUCT_F;SZZq~6NlGgnSeG*OAz%&{tB5L>PG`=T$nxwj9C`7h;bQS>Wf|% zm|pbK-eD~$$OYPqUhXx-rPeI+KV5&>jv6%rI`B5OpH3=&aSq;|!uQ{3V3U0@N_CTi z+GQ|#T}OOoEU>=ucmh+d9T(b`B8dwfbYfae>553UC6Y%0zkjp52$65L)o7j;-y#GW z@H`GKc}9N==*tZXUp0wnMh!z?{Ot|)dPoV0@K?+ETZ;n_InU)mM+OQ!m3n^&S(U|9 zWR!RaPepb{Nk;)je@7a64(gcA!nXDBU2!`oEU0_9CI;xV4HsgYW9r-Tv+!d0;q=^* z`GfdAIj-HGonL)iWe~oPrdM0YZ9XMVB;E1!_y6YB>wyJ}hFivM(hLB;)o8En__m`4 zS6rd>k;Ra8g&)v#*@gH>0rB+*;Gg~aICptgm?V8NeqLlE|R zY&I3}STZHymJ-?K1trAM(g;QX@QNu+>$`a#wCbgW7kvYzq*Z+PE;WD0x`!I(h3ma! z>J)+PAI6WQV9+`htMU@>zWjXZs{3PQ_b9|_h3s?q=)~HI9X0f01S?cDwW#9pdxRBE zW-K1j8(N*x?S<^t@SvCr8d`uHOVHJq8s5L$!*olP+~TC;FOlQJT9vq!O>3#}rjrpz zsYNnFt|T+O0LheMHllx&v%fy@dxT(yN_d@I=I`(Cl6JJIeO(QS$O{vy$Spi}$=dCEi zj1j|y+X!49__t*X`=+E9?zF4WAp~^HKPGA3lGA z&wa`Rf8EDvf1mSmBj+tdmhb|6weXpN&q?LMbDiWo*OEnE@N5};j=|?{<-vR1&FfG` z7H|Q41U_F=9y%ARON6+%0B#sQe^4HJ7pv2-i*|n~)?JiA#ICzLWcJ;?3+La%?jMc;_N^8fFe(dvJuW1IW$zaKxRPMuQDq3fg`)1JZWzWeS|ve~S1 z%PqGkb8~abYhU|X<#n%n9e!T_`q#4${{6uZeo*=AU;nDOz3#m8PUX#SeltD`IPvqz zPkvIl_uhMz1zc)8e}*sMP5=A9|NXD>xzBwLOadD|*nKOJr8zFz+_{KMs zSHJqz$`60|L;Q^n`44|kUh#@oC|~~am+|+1{_`K@jc$ zKl@p1qpyGc>$Wx!WQ2V~v>Wh@_7m&){`bG%@XUYje)l`&?Qeg(3?1svSHAKU)B`)3 z`uP1UUraY%{Nfj58;k8N*8i<<8cc<~NlueBldHn6sF>F!bpg zZ@dxhfSLc-yyi8cepuuK`dt(^JdbS;eMDM*HtP=d8QT=vSlWhP{pwdyhlRGb)F0|s zl*WIpx8BNp3DP(hF2?gue)1D$qtU+o`Okm0_3hjq+SMO@CiMNH^nU!~A8WSftjAu! zFZwxX6SQ-7^11!?+flE z5F?1Z+OBCqD5B z=I0&z8?&1q_`nC0KmPHL%GtQUZ)0pPUeFgY)`kA-I$nqN7UMaL^?&)xU)sWp{pM?5 z`syHHO>cS= z;s%|2z-=MKb_O5+q8Ggg`+&L4pZ@fxqYPk7i0y4I2OFsU#C`*HlIjlFJM=XW`&-Ju zj-X$7ATKtqzyA8`b$bQ6k2djRANzk8+C3N-VB5lPy>4I=E$t6B!%&x(zx?IOcfb2x zOI!rL25HDXFeX6xKF}BVIHU_PIod;LU*rek6Vy={?_jJ3eH!I;?AS3J=fVeN1>-r4 zXUy#hb`WI?awsHrPM*ZRVfXpj&wi$y&Fi)+DSg8gbKE|xR+_{Tr)N}enZfs@shqeqV_ zi@n^?vAe)$VEy5PK5r?m!-szlEA{pDj`;<49XfOfY4`W{FKUeWj(5C6>FVlYHgHjL zU~xrTTO0Cl;J|@J;V@s%dCqeX-yDA41FBjM;s8J>T&|zLb*a8$NMmjK^eh4y}s{#?|YSJ zJ?mLo8(=JPx)<0H#04MBL*Z2TelAJJ@c8*bc6*S zb^2frr7&yOtWoOf>Tt{tu?^a5$a@-KW@cs>4wTKdZQD>Mz_;iyFy7VM{xOev40{G+ z!`9YT!~LbW9{0G%A->IQfb; z&xds8=jU+@2e~yIufhB_i%&5of%E^c9LB8roFC+1P= zFLGaH=!<{r*RN+~m~T0q3w#E~Ibh2%#xdnMkjAs0{cQXV<38+zkS~$Vci?z%X|VKNDtjFEqK?b_w4-=CwGwtgP_@D*2Ff%cjE zuVNpBNhXsETC;QxUij{Spkp}R`ObH~gZiGyWR%ItN%T2jTk#uWZqx&?(Pv60AIR&Y zZq`3>fAvtPuVwwy1F`#qM`@ib{;r_OIYbxv%7u%4Vm=9c1i}Yica0g04j9a_% zZGUvW{iQa$WtED14y}>x*1r}xU+!7#)|C2Q{_P&&s9E*sq^(m^Oi%dUQqo-}hpvA; z<#2jM2@2Coo_vZ6)9=+cw`aTZt3>dy>}8h2vX_wo;<0QGDQ;T7sub~;k*8?*JIaLp zuMbQE?uqUY0&v$XOFPmnvt7QBR9jYxmkZ^;)Y?Ab2DsifHK^jsZ7{=i#-f~=M&ID+PtL2 zcqHT24A9**h5UMr{EoQhw;WFc@#^Qh=p;3!Ee8)6nXbSc_sdAo%CvBJ1@KRok${wc zz746vmRUeprch-zyTDs_!y0uhl1e=O!K)v=Qot*3$WgOe1?nVE;LWn1 z)~K{{!3x9Spo#44A?Ppp+*~f1%OIKxV-?3-SFsBB9`@=-tReR4^z5u{CCAK_?5Gq@ zDjrWv=jIP(U?<&uCuUN}Tcwe=HLiJEj(hKewsYQ$xaHifF{@=Y?$ui+u*i;#7F&{b zRN0pDqms-UzZxpE)>VZVFExLRm!>jOqf=w%nja<0{)D4s7lE3|s+OS+dr6z%2e2v* zD!bM!uR05l>It;ew_NC9=#mQu4=lHMW1$l3TvdY6uE+jXCYa*AN0T$`lu*`6)x>9_ zuazPX)uvWjG#3qM2+K&lpc5EZ0u${uq}9X(FGL<{mVyV?oQ=5iA?$xq$eWWB(JG8h zB5lug=Jsqd%XHtKcrH7Uzck0%v{q=-U9;@&9F${SYK`4?y=&f^8O3@psp7l?LOHMN z&6Xro2Nl+(o11}19%MWt`h~gzR~4Uvt)TUDnS?#Ay66WooM0~W2n z1#lnR64Gq!Zx6BF7Q}eMYdX00Z1lB|l#|ozX^ZPmVa7?Pmvk67IlbP*m5QQ1mJq+D zRE2{gmrk*Sn@gl)OQ2|-=)SzhQ$k(q8Et7K4JMPx$JdPuRkVmUG88%C8diBd>{~uM zQe4-7na=6+%zpz*`g{pj^~gH8YZarLak{GjhffhNui=Ks z$~zssH72YUo~6=M^7Il=-3Awfl``a=++>+-5=U5edTF2@JRHeOY75-C&jeZ7LKr>{ zZzgRPzi0?Wnircb>a{ZMK4HX}wzueIi%kmk3F^<;vK@a>7CY>=VzDWhe!&WI2AoqA zqb}q#D$1vFvFVc)=$^d9UtrHomSW5WgJT6JxDriX38~kth-yOO@dvXJS!Gf!!Ggr& zjyA-A@C+N20ZfT_NlhWI46=8$C+=9(jLYenkJYA3rDl}kaYqZ{j?JYpCxfPJW5Jfh z3bWmd#qISp!5&X-jbstX0cmZPc(SStB9fXs0A-N3e2U z60k=*lXOOGvJCE;TeFU@RuYcp)?M|-wCb-B zv&UlQGY?a=b6D>VpKU2WxwNe6h01SBJZ!0h-D!U^YlSpc?MbC#XmBO|1OI?0p{&Iz zx$?qUJHB$#Ae>*aHwTl&c$%W0G+FNRVk}9-2*aV5LL%UZ_Y6OIrjRTRUHd1G} z#|gCYVVnyB+_SAW=jeD&buy8i+CRAmX!+aKgn~XByg#3r$X`B*j<20)Hq@AZc0cA@ zqfLKPV{>mHgcxT#FV6!TDOJ6In@|U7mzLo?7PfZ>u{JVj(_K*8jo6A6FnWHRV6V^m}z3(gcFJ- zq|qp5)qt2JX*3v%m*s_+3M?aSQhBMQZ6$xT8H0lg(rlIvK4+597E|mDRA!Q_Z`w!% zYNPoyUMsKZ{61k0KR{Z=iQy@I83HzTz!LpnHy+Zn(P9yoq_VHC|=gUvP zija8XSZaGZ54sizYR6P+Lk;bO@`>Hp-Gam#9o;Sx=ST8DyyxY8q`)#ts8^C!u1{!Qb?tK)M$-|glkL4&8J8?(+^mS z6K*JlpJ3G!`NOF>HdLfFgj6COW^lrFURGYQFP}bq7#fYO<$2`&q-s2uol=)Fh3m@5 zs})iKJkO-^b0@;p;oRKpB({5CVpFwNeU1&5*=X*@9gF(u1M^b7D+ ztwmq(tT6-;LKCo(6<%+(*ITPEd#jNxd$T`kRbS~wsfPrN%hxb8&`kF%dRq?>EjC1b z;$e?Bp3>IK)sh?aC0@0p5e|Q4<|piOY!E99Y*Fyg=3ohFlWv7^k9W=WAV zo5TJ(o8@wK1+PD3o{o`wPLPseaUeW53Ej`!-(yJT8w`fdSL~Yad}gL zgUqbyv}JG6Qxy4#z+P?nf!)hUyS43cd<1b8HvY0AjqlvX)-8D zhJ>wcZmo8WZMBD;t1WNp3Y;maCw@T;V-l2Uw)mFUOgJdg2q>vOtW_6xfzx3;Uc~*ip}^p9Cb8H8!jNv=kgKb*$TF9_#Y# zC?A4g=uA(-j)qCIKIf@QU-TN-F5eq*F=dJCytmf3Z) zZmR}|u8n_%x3j{H`f^wqD+c+SmotxO2e#KD)}}(%IMk$Nho$ukcaRRX*i^akBZ=(c z6zW@tTE$VD6*@E;AYnThafK3-;A5QkVH3U)!>a}UD$-a`(A06Z%0=ZkNIFc5Yb+~$ zgT&YyTsKNRuApet7mW#ot@>}3KYu9zR)p%*e7nr9Y^NyAg+3RpQ$esktM$DP-D5?cbN8rd0^8qIxdg-!5p>7baOaFh-4bdew?Ej!mRR)gWs{73M*ex!*I`qlJf8p0x#^v zNRy#ZoivXwC%2Ipv5vj1!sCnW8=FYADj`96)}sV zYPXoEy@}bQ@iZiEnFH@4KBKJkQWRI0Wo?5luIdv?*~RIpsZ>@IQHRMS34}Bm1-kWx zWkza{tVcn08wE9H6_k-MN-coX`c0%pmD<$yR5Cr4Vm`6QVZyP8NZ+*^)Y>Cx!aRST z$R<-6z)X8dK#o}jLF~OM_7MqobsqB*AA7*&F*in}^Fjl-_7M06jI+(Mn}h@=JY@Iu zY%-V6qz^8^gj>f@w~-fhK5rxVm(=vZ%!y4JtunR115>CaXJ`tw^h{2ndY5_%H88ns zsb@cFn2-)JeBl@;Q`5kDDo;B+#Akmk2h(&sOS?))=U$lJgcS`e7Ce$We$9@2K9^^O zs7n_m(iz$dncAXI@%dyD%BdgLPO6=1|IFb$MBiK=sc#u+VpC#VntQ-m%mX$WDl^R! zY@M0eo|?(zPE13K(ongnSew1vm&;{lAu(%O!p}TBZL8E*fou0vLrz<&tS^5cz}@AN z7XfHnwaxoow57%bKb`_Cfm+=#LQ}y@i#veg2~HU1vYHF)DK1K9U_C`5lRHcU#_W?u zV^0nSNYvjznuS6}MlApn-DnuKp_nQ7Y;iEhZUQ6fBY|d4=wPAjs?;pU*CKcqEP`r5 zm0F2k7_!XmpMf&g&akqFw)uZZi=k;itJPMC`3V)`eBG?(vWL=#=ku(a0zYlUF91zs zQy{fn+1a^7CPQ1=NrR?FQ}8HG&(Qh~&8uFMOk`6TTnHmK;nWu-O~xYRpZY_jS;VZB zQhyi<3=gPofJUegw2jZ_^Pra*77 zrtna!kFZ+-4abD;F22^J#v0VuMVgG|I0U1b2ry>6FS$%WBdfJj01b2Zf;| zERvT|YaAlA>XQJVB5Qvb)?x|#9gow_5fW7INL3vmf}=&!O*AxCEEz;Q*4U+VSQ^>jlnbRj8(rlvY4ifej3QmJ$#o`>hAu2Nzf8lMi%sr=+_sQ_ z{VXK_bZvDpjY-4X3}hzFWLm~06Nj{YyUm0jAly-Go(@#)qT+uOWYA_i9VU^WEiQJP zaiN{Nicd*^2rntRejPa3?XdV7q`Zf8Zcop`PtEkR5%@J6VB35;GX+q-y`)L^Xt_gq z5X`~I7`D<3QDRKgB~AG9YpWd zdliYu(cr-v*Y6KMZ`t%$nQ7eQ_ zP=||VWU_xjdOA#GnuIJcxcNu{Br5}9237~5xuUZJ&~<0*bMQ2LZP5fajpiMb(=<3+ zB&|x@=LFZFv(F%CXr8niiu9dVusC=O@LGyBysgJcqp=iwM8|cuy9`nP33(EZc09&5 z<3t0Gwa*UG-p9FHg+^nK7dm`F7mPrGCzxAG=nj7!Pc+0#S}{XI>63)MB$Vh6ho5Zr z>S{OA*?S717UT#4A^)Lx`fxTiMf;vgx~UAlds|L0e=H zx*~r(&oG46b)SX9wDb9*854_iGj_cU0)_*Z>Bjd460kzd7XYF!AYlst#J^w`=5#VQ z%E)X7_o_j3-$Wu3Ea`k|=X|2z==xqrx~wKbrYM1%ErLN$ z3CjR62gYIA-e$8$B&BaJzWXBey+b-PNQ3VzvI!yWc$e)afYkSH*)C%+u6&Q}c3;TI zd!-xB(a`(gG3!Qfe2X+1e1DNW7peaP^4AGz`v>h_^rE2;6?^HAMm|hJvSJ?Gt~#8f z;g66Gdl2ZmA0=T~xsZ3Efm?~+=2d^XNxJf5q*syGL zm<6;0265|fgP$NPWpKzm?=OrK{ehuRl2x`3Fn%qpbl*-QcC0`aD4R;6qIQ0Y1WjP$ zM{>E@l%B8*e46+rV@owZ+x;05u`A@M_e1j;I`CQ2F9F*Q8iQ<1=3p?A%Bz3-Q~=h` z$$2+}eIAHAV1)rx> zSs|gr|4sl$Jgb6NfyfCVMpo0v-;q5a<^ z-6rIF)0o9qIUa{Ra4w7d4tz^iJzMY<-zGg0aH}Agf_z7+AZlJFzGF{1JAWPR{;sqY zc=6ucRQk{fz}53TX`_l>RCUPTCw^1S*?m-VN`F8CRwM#I@Q0+$1^|C}==~9i*(kg^ zQetyenPVy1{bOmJ3_yUd?3g`*PTJefN+q7jS=|e=Gh*dR#!N&G>g4 ztoXOa30JhPbFau5gmUfo&opZNMV)7BkM|LPI%BlOFRKP0;(}8^@NH5U_j>e&|)CSR`)Vb zq!1r(@U+`_C^k<+E2TmxOyoqXJTi5KqV%i^1s-lWAd$i# zBjDkxJux`|N1+*{6*V52W!Ra@rt%QM+zqI5w>9ZuUfq0Zim^ zPJU&Jr`LfV3I>U;YW4KVfVmA~8l)RT=(j$Ptlv(+ykRn*o+%hjby(c*_m~1L4dS1-cth3 zu8>FOsQJJ|gX#=>f)XeJ&j6K5UrncQx&rvBPEVhmWw1i`N2GSd0?15#)YIz*6z$WB zn5V}cm_uqyM7lg-X$1v7d%Hb09$P?(^6c@LasYpP2%sku`g%QGCWy;0HWuQ?t#end z8KpgaQv0$kq0N12KDb{h#7VHQu>R5j8eJi+D-O@~pkpNn+D^aKAOcqC9h^tQ)xF9S zu~%`3`cJ6i?g1$nD-$hc=W0*TPI-7>GU$ofH>{Ag>L2oSy8#5M-NRDm*gA&k^kY&y zl}vwoM?5iSFu)fc^>ncD>2zw}b#rJl_<$aUx2eG)8XhZFK1{=Fij|Mh@Y-VKqcps( zSos(YuP;`^Mxte5M# zP-7cJw>rT9o^1{=&=%2g2N-CN=ynGfXp?{F4hI-$m*_n zmjev66TQR}Fu@pwOn2J@poHljdjJ$K-D?kkvZa^W1E65(ggpRCm0ng9U@fc|vIjtU z(n)&&6ef+^1E3^h`#e+!DA*>WG-LZ6fre@9fFsZdja}ggG)iMvIs%Q+*j0`|YiNJ$ zVU9p+Y4G8mHXR6N7L0U)kFYOY11pQ{O9AuMwx!T`!E0)vMq&X3nV;#y;LZQ z$Dz3b2ki=>nF2|>La1zD%B~RV8c5j{LRABY>;z8C}%%Gei!riP~Ni$Q-!Ls|P`5M(H4UksuQ&Da-%Fhkec7lSxMdHZ4z zXlT~H7)07N=lLIdR{|erQN`b+Ernk6&Yeu|q}e2Gnx<`_Ep2**-c3qduCm!|+HI3; z*iD)i3vx>p1mzOBR89{B1uRfNRJ`#54+Ip&rY(vf-ioMi-n?(V`F6ie(o%n~-_MBf z-*4Xc=FOWoZ{D0=L8@fDf;1M5w4ruNdIzVPDNA+^PE{vM`Ua<(B};Y+8ql}x4dGN3z~t&-@!jzu9(n>Ox$83PdOAb`0*umN zJ)>c88>8WnB{UiV(-<8G3mJcngbj?2hi!~bfIdc};3h_+;a)~#U>~Eg@C`=e;CV(T z!dr~S!vM)M%+1dZlH%_xl)z*0u1z+OfR;UPwg z;Ae~);i@qjEr#0|ErEXr#%i<_zRGABY#FD~ayV_gMosX82^yUWqbF&!0*V=}gn5is z!S#$*!vl=gz}Fb9g_jtugFi4@4|P*CYKCS;Ef8e10b-0!g9{mLgy$J;g1<4^3_Vjd zIvsw-=nVK9qcdS*x<+R~38S-N4x=q_0i$!^Mn*xngHbCy$S8jV&oOF)R~d!j&y3pP zo0%GIh10V&+6GtWXcU2ab2ZuyFXm~q0}eClfVUWR!svXBx*(HL6v`NNLnEVeVKbu` zL>R^4(~NrHH;j5=nAB(|q%-P+OBwBgYZ>i^`x%`FUuN_!_$i}3>PtX`&WAS`T>x(u zYV>Y6rAVU-;Vgef7s2-!T@3Fn*60#=n9-$hZiz;h!IO+Ghvrg^-UB1bG`a%n8SRCi zF?ug_m231qxRKG7u)0E{tDu9?`vInDbTzz((KRrxQlk$*gwY3KKcj15en6w^-~)`V zhx-}b0IgLT-3YHT`Va)GHM$8NXY^q}he7COxR}u`a4UbKTj8GR8r=p@F}fXIo}tl4 z;O~q+3h%Gg=womZ~6f(LOrZf6DtY`EI*v{yau!qs7 z;O~s?gRDA@J`MGZ?uX5c9)PWkJ_C<1`Ye2v(SvY+(L?Z8Mi0ZNSsHx~USYHk4%KV) z2wXc`qep*X-W-h{gHA^K;Q*t@VfI{&o`7CPPr`kSJ`aCo^c0-cpwSoLE=FI3ml%Bs zjyp-Cr=g0`m!XrUkkO9;T|S`~ zU=gDi;bulJ!Iv2Q1Zoy(^i!D8sL{*N%;;zEbw)pj;}&c53RE)s1)Ry~09?qZAO6hf zAWUDP(IHsO=rFvC(W~$nqhG==82t*0mumDHEM@d-h%tH{zRu_k_!FbwK;<%x-h|5- z{T6>d&gggWGNa$a@yj*(1FT^5M+h_e6I{#a&+sIpzd%2uze1o%qqkraqrbr|jNXQQ zjQ$QUG5QDmjS+~_Q#BG|2ctCcIHO_W+l+>b*BOlvBUfm2oS4aIq=+#(UOdL=1o0h4 zqr^c*qs54o8jTS_Mq|ZZM&rbTj7}7X7>$1y!&YfDLF6-5_7g_bgF;oVYEVIoTJf7v4znp@f4%g;-a8NYs6tjYsJb| zjn;`f8Lb!DA&r{FhZwbp?=#vUI@>flO+3nIqsR|yv`M_eXtS8zuF>h@gN)7)-)3~C zn7dV@v&3DD&K9G#X|zRL#ONIHcSb?c5YebrT)-$Ke#odz)NR)&EN*4gE{=cOq0v@x zKBH~oRYnm}(xK6I(a30r_$H$cF{M+ZP7!0&C4S5(D!$#NQMY(9s?oXPrf!X5qWfHp z;^Gf+je5kC9*ug%X^eJ?2O0H=(|R@9CEjMVTim`=p<%bYEhdx}wrmT_u5h2+$xB(= zf^pdz4tL3z-n-RSfS0Nht;~N>cS3YTX$xL;b@j#|uJh}I=J?B@TDnMaY-36pZI?ax zn~u@-m`vJf{W~DLDGS*X+bx4zaUOx_VkXC(F(*eqCULVnwqtjI2-=aWTYxxz+M-P& zQ%u4iohVf#hWlEhm>Y`~(#xXKnHdQ03Ojj^I*v}ao8J@09=iU@S8sp)*x^sycKF^4 z8=S}EM!8p7IM2qq7x6ofPT=pY^Us`&rnNE}lYH!|9G3}YSgjLQxG$(B^9J{)T5fM} zb8uGt&7WWE4!M~)0gk(*t3n--&<>BWx&k1Hx>dLewTAPCv0!Ys zYq^absI*8(c4B|V&eLsp@Vy(WXfPVWV{FMd27$M07^z4+@U6s zwsu9%Q$ojOZ`Y14^z)QjEf@Ako(?9b?vxr|v&$T5LxMilB7XQME)r zs)$L-P_S23S^-|eM2$vnLwdz$doT7gLD?P-({^JLKNi93b;1R%*)&Jc5rnIvc$_$!Oj;lVZxw#rygqb~c&Qzt; zzx7i8)J6_7=voU&>tFTUnDH|NO6W>8xvoA);G`T9KNpLmVS1IT7`fSXAFykYDj9_} zRi9K}xN#5*t1DS$Cd-jC5#cgI2R*8AjRPrFnNfcr8ISZ}=WLF3A?(6zwyAbYq(Q9v zDmEh0B-VLQhHzJ|k`zxZp>Y(*#>J~0MZ|l%yV0wm0l0pV)u0-EIo(21VJqY6w7qGp zgSd|pSXyriT2)7f+=_)mFP<#0W3#&U1Ejwyr;(6WS(lXTD3Y~^j~q3|Nsp{U5loD z1@^}=Tt_U+RdKp8crt-YY2iSm?XhT=OMB0-j}D`T*wm$q+={!IxZRP`sJ)Yii?l0m zp>z}JGU^QD!;orkJ$Q?Mizeu zeXDYDZYZKGV?$G;^We&~%hSlKsJ)+d_DpODhIEwP}T_&BIy z|7y9!aah#myl-0_3w2Fx-A+3U$Ub}!rHz?XSo&xYDv8RsEE?U~5ys5hc4D)_CKqpz z*!T2?R4(C;AdXNv@$$b2_87ac*a3eTa!(L;Mz+S-C8X+SO#|dlQ%J24=kW){l_IeT z#s+GF-furt%Q(Ff$5+s~EYxecgT6+Zwm+cY_yrSuzB%ky!&Wq|B}2hMUtG7F81|}a z`?aY=Y(PEa<59zCbTg)xRMk!|QNFAd>HE}|!O#pby#;xZgAY-N$z9(}q_2NNdeS#( zRLO?JM63oHG`x~NL zH^f*(cXS%U_C-+-RXIMprG1I#mb&$Dx`<)18M#E}q;k=D8-mP3h zFI^gmF%7bFp2;(s^7L(sbf^J(d~0un?jR(! z&=GeTRMyj_KDgJRJP|*xrr^r$9l6)yiGUc6wlOCYp;3vNT`OPz%7uS7p)?(F{B+Hh zo`_Pw7W8G?s8d3bv75kT%z$iDsW8qNIO5Gb<$bD?OL z*q|eI)c-)*C(_VPEvtV+DpnMhjRr*~O6yYnL3nEfLr1I=7K2l%6kI7}PyDuD#cVVc zL&4ZibRe=x#o%ax*rjyE(L%OGx=mAWRn;5rA|B}2c_+J>+(C`7v(bHaKt}bBTU4@b z*tQ=f8z-5`5ZE%1o`NLo9POCNDPy%eb-N%Y)DFok}iMaCSm>R4Xl+A9TX%V z&K3~B%Gb@ZN7Z@|8(j~6YLUY9aLmknp%%LFwQ!d`g*Ih^=gJ6mCe@x((QnR~USo~W z$Boh_S|pxrapm67#bZ_*H&fymRPz*qZG_? zV^cF}aXPaRPYzw>LX-kyB7DT44+T*++Uw*)dZ3J4Jw&^BoYEP^R&4ai1wl1 zb%r=J(2M(6kvnPP-UiXb6IO}y5V0=R5Nc`@x-W{8{<{4R3M0jb|@ zi*}XusJU4j6*w&>PP4MgKzTT!dR0|rA=^DtwjF=*s8rX@=y6MsZ;Xl9^AD;4yYr%y ztBFddb3PC4fh3(uynQj&{rdW~O z01C!)`y7~2mZ^m__K6X849&!G0Fyv$zmX`f>mOUuo#}pr4jPgLabLPq&06E9g^?6Z z+h-ZX_?^9f!!8-N2@9ix6>=z8Cs;dp{?rNglo!EpjXqwCHieGU49ONQX_hErTU8sj z?>3SYJr|mH5X}r5AF+DPYr1SSc^tX-DK8P+sS59$>@rh8b=9?VD`h#m497YvOJuz#yIA76~>bp?ZFU@#kbK1D>xKt z$5B)-%1#kn;#{>ic9c6KsA7&t9fgx#I7`)kPN~wiBlEsFE!17 zG_)|HS+@a|eM71hsRbuBwI|O?QNuO;)sAquTTifu+k@EHh@%~doIEEn>Y)Df2qKQL zC(!Jfy;MAIlq$DWw~d--TSGLQ(0Q3;6p+T7JcsNP4q`c|OO~w|dh9@2<&TI_1Wk{9 zs&WeWPo*20*s%}lnnZN3QhVd^4-XuFvQ0Ws-9;*c+ydQ%rX|fPzN9r63QD5(T+{?dRQ>pjK#WKYOU2D__(=wvFDBe6y-PGZ-8_JQ(3 z@kxKC%l6Hk%*14?BW2Ixj||c-7$?sM#eHHi=9MCFAiMGp@s%&4XqY-aKUpZ%h(cnh z%GilhSu~uR55W++Oy#OVIHzUTq;co&0+7&%Q>gcgE5tw@f*qZhbuW|-d5{b|3Bjw0 zxH4&t1w1(hQuSkPN&VMFVox&`K&5KYc{;$BUoC37s{q7F-4xBsMgz1+Tp$W7xiF1N zTkcG`EDeUjYF4}Ah{d3PDPh@ba`%YEDU=r_rxI*Yi`k$`)Q%V%)_JAqiuws)XAt)a zps&BS3U2!4mCJ`#Krg?=sgP!sU94vPY8i$$p}$zvpO4d?~8K2)L~H`-cF`vqu9 zK4>?HFkQF1-r0yqZKFXhRSWbqK~JM|>e@-2-OkD<`BW{DQz=thT9oUNg0L@8+IHxXriqn?&`L=d7K)8wE*Xsg&RuJrHlzH%Cg&;ri)vq!oaPFYbM^&Q+*S1z5ZEqd03%rpgO8-K|k<*aa>h+92=j<}uI5 z9M20}hV!0XE!JEgYG_711)ENFtK%CT6vav$e)fi`8^x_p;V^lj`Z^4K+pT4zgoQCu zdbHbbV$PjvHW_d)FKjOQ*N7V3Ua$Z*jNyh$yswOH4}Vt;*I+OhDrJ4|Od~83L9rq$xZq znQEFcroCmn$3+PccRXVp_kkG4j$MEq2U`;;wBxM0(4Jf)`L8DSOhinl(zHFCMf159s)R zN##N&q;wpkQ9K!rGlN1&C?)E_ECdu7XFjJ+hYdJ*aQA&g;zNA9wpzWtgAeEp{k>(4 z=DAY~Sd z=C^pmF)IMVJZKk!vk=xtE40o^7zH_hhR=*Dy=Q_8EQ1M7fp^02womg~u{w5$@~QGr zPvQ~A-f<i-OWaDv=V%I$dfQHq`6zLdH>#J*LQhTCE!|Vs*9kAAa8$`rX>f_O-a?jj^a{0?+qChGtv9k+DJ};^Kd?4Gh zuE)ef!pfrqhqcHxteQkHp=M;r{b&r&KQzc-ch8&M6PR^+{ z)zj--eLC`QYO$mbckPUze^ClJdiBID?Mxm|Mwr~}Xh}v-NVkQ1$ewA7S7P(ykKQMf>i#)0N1Sd^Fn;9e^N3QAoKf+(vW-Qh!GWIVAZvOgH-`RZbyZ>Md~R z-t2wHG|01!!stH0+P2# zHWItSo7bQ!slUPuZI6?@a82LtF+<0uwTZV7;C?JiqQX4wi|x~YRv}&b0$YIg)|Q0K zuvh75liVfqD;>LsCP0B~^6?Ay{(+?2f?Y?KRYGr1gIRBhxf-pKn|Jzxyt9)>iNPJ# zVLh?|oT7`Vc97JXY1o`tL9_^ji-N9D9Z}jonh;dvWN-{X!IjykXw_SH2eOZL(dJ6b zk_*oJ_31U*HScVH0Bqyc8l*8(B$Pz5d){iLZF`{zUP!5igy>P*OeZ^gCe{nlp|%X~ zftR^;b6_f(R>R#({>B%h1HSeBHDacl00+yCD9( zHtQ6JhQ@!7G2A)Qfd-mBQ?rDoX%)BuQ_}1HQR_*w=~$_UG=Sj-9|BF7 zq@W>*SJ0dcx6IBNR4+woAwNbD+-S@a#*%y8DyH=hK*+{Wg;X48=Z#S-Zu8=*#ckQ@ z;8}qisnOSeqsS##?b=?+wFIu7mUz&WPOgRq(qqfo#w7Y&)suRC2eJ&-6d zW??JX(mTDyMw0xNFX6no#`gRR!E=%Wlw$IDrxdjR%Ns@8j)0Ppxi@w(`c zy_DD;739+6!Ax%9Jj_hT*W4d4yPdVwwbj#A7!!1V!e=rd=X3Zvq;joXf8UB<_H8x} z?feETL`p)^Eb&SZnIa2oWrz<+CuuZ4TeFTUf>g!MnrbTzE1Sse@v)b`ET{IC*@e%0_z!XhM$Ormg^an$FfdP1I~*9+D;bs-QYpqvpXaW8{x*VSYXf zJ4wDfb;lRLt;5@+YWcvOIh#6hxtZKy39Yn$h0ZEvls>uT@kJYBQTuEc646W*O^vAz z#*khqE*D&Bp~T4t8UiIv%~8Z+;@U_%N=zA{{>{7`^&b8_Dcv41;sZ30j@|Bb6)MV1 z658{PTn1iu(DQKSae=#4magrxRu_>48LTfa?~GwGyGXbtK@*0iT3QpEW>-ATEbVrG zR;h_SQIqnp_3>;XL8B0Bl2x_C0=b^rR)b8K*h=buT&>Z*W2@A7S%BBvC^Yko@h$WG zu(*zfNJqm37syhdP$dr3OPQr4PDM@GOSFA{`7Cfl0{eVzB4f|^b3>}^shjePUMPDX zUV-vev@eEg(d@eM=^3rj2DvNyo+DI$i2w07J3yl0rAehoKB?jxO=(bJ8{BYhb<|ujCymhM!4t)@Ha zoQ^eOVg)!>jqG>Lsozpx$9 zpX;6fO*oI%$!l|%nY9kVYjttw42AZFAQEgn5y&B6pC;CxY$s^wso#=NsZD&qvzcC3A|!mxS_gs;O*o4AkBvFQa=sY|h5uX)wi3oR|)<%M4bD`dpHYD1+ z1Gr=1sUqI}?7Ymo1h#fWTai-V-bYKPv&{AvIiq%V^>qB-jD{K0=S&ZO(18Z-di`l; zxLqo((B z1!b09UJ^eP4kw=(9n)uR)N9AiDx&7d3(8fvo94VoHyV7x^O?2kxpINHRf*ohSr~Os zEOo&|tAEiPOIui(5@t?+U6Z<25Zh*oD`gi+%wC9?k?%X zavYgB%aY{j+RiD`pC!6l-tVifOW5t^(2c*Uw^9maL+-r>r+wmoH5jj{^`Hfjwt1Ms z29L`z?mmYk-J3jVCdKUpc|WC^y9zfgHWQDS74GhkF`TxHnvR?0&7|o3*j(-UZ z;1;Q#RWS$gkJhz+)(-n5|L1F#-E~{luCp0EH9gLY4zF|0G`x<|C;Bi?vizsTlVb4@ z+#Rr2(|09Qprsz0M*9n?TkG1Qw7+db|qvB?-aiCDXd!6h(QU3daQu{$! zZmwvi#ma>JS*cH!R#;v-S*9U4FbqaE2G!mXtd_=TxWn>)i*}`QY>Xw0D19G+hjg^s z-dDqK8@~TxmxZTQJvIAIYBkw!`FX5kRM+ps*WD&Qbc}r65k!GU=Awdbod$d-M3V;91AY{(ZgL|9#U@`=-A5 zv8tIP@Jz>l!oOTAu6oD*#T_&cDVQ3XQ(3ymWjnMWYDdR;YLH&jrQV}4svAQYUPn8y zOlF>BdQXUbLmFDLdvQ4p!Nm~qvGy>;)Z<{*tgvk%X?OO~ndgRe4xc0NB};aNBFLx_ z`NV6S_l?Srh2@8XR#}I#ef;PhYJ02A`AA% zhqhRP9;M~m*qLi%le9CksE*S7ZT#P6`|YiEH61|}9fe7}6I0Ka%y(YXlzpt1-ZH5d zi}U$^o?z!JW1RLq@;mVWAB>=GthW{KUdLaQiiwWQ{1g{7cn!tZ#Hfp7bUPK+<87~x=On?vRF_8fN6ilPbl zt?$MRZoMw8v0AzX+!aBkRnhKi6>B)zydhqH6?7JXujU^#r=1qDn^k>XRcplAq|adv z9pJXf&18A7vkhO^sbU}8<5Io#JQ#R}~> zX2tr)@V^Xi>UxJRFTj_T$RKUE@Oo6*lBIhHUbLmxktME7R`BS9P9Wo#8xx!d_Hc#` zpW0>hTfUGPDz{FrIKQn!+g@2>VOqq0rxb6qr-6#(wvmug+&3pIgDwtd=g>&!dor{U zhTZNKR-!qxomwu_!1bG2uoh-+WYPm=Z;Qivaj)DAc`gTF0+Sb|U@M89tKJ_d5LTz@+^n~KLIUbQ+uvyi%31q#ptp*D8^uv} zp-uoecvo80g}3FRqE#yocJCOhm9Ms2IW1Tmedn7jw9tF4}?Cb94$Rg7tI+G}1{xVHyO z8Nj(2-0K>`OLSYJJHlP_x^Pcx_DO}Ij#!myd~v)3DBQs8s;L0Ft;8q$Jp{;EBVa{m z9OstsDt|Zsy6Wje%fEH@?BJ}>toj*qXV!(M&zYM&qtq*lK1g?x+FROxiHC>gIe8tY z69nXJOoQgN`m2j1RU-~)jzW@|Gg{kc&Y4voY@1nM7oIsQ=geWS$>zIMjV;s;nPb6x z{cu>#fi~W1eN5zCKLS>3rBrVUc6J;E%f!l%`2g81*zGP-xA(3N_c2H3<}{ftAl)Zj zt!l`UG$_CiE~qO27e#k}HE)adZCRprDyu}YrKPwLL6#4L;sL3e_2xpEF&ri@qFX|E zpPw^uOCJG~R^fI#*5*pw%+QP6WZrR*)e>xNLVYX`BYh0Vz3%spW!}hyWaqobbYxRb zIUXjMlBo^Yt5tuSc>+vPPf=9onf{2hoH8nb9xvU-r=t^|(mg$YnPZ5HP0L%fr;JUY zZww=soN5-9lp;Q4;kxmJ7-j zFhM8k+oh7AN2#0f*fcgT8EG_^!FbQr;EhvQCW%xONi*99>q%d>iyUtOT7D1t5 zqn|nDS+WcN)1@_+Ukup^WP0X>Z=_8xfk_GJ>K-bYUaFsC{+g0)Gruf}pU2$u$|1|v zjQ;qt+Zrlhf}O1OJarmOOxClUS_u=LNsYq+HWNy<)wA|DP+;L1^dbTZ_pWEI!ED(69&4==pti-JZE zzr6Vg9Rqn0Q?UF6mQ9oQ@Rm%T0y&mAW_t$arDZ8u2nDGLmd2vQCV!D9oArs=OlgD( z78mtRT6~(d7^a%H)HAnO`AZ<%TU~1VwPqSurnVGv&8s|2OsKPEmb=oiccM)cEr)zR zCN@ofL6emc4H6S6gS9wjTGU~wdlKONWKgqQYgVS+`y zk&ZT`N?+ypa&vnG-L{ak+UY_Xag-2S!$-f@(k}I^HKuRCjq^Cz)92RIS+VrBnjeKo z81Lf+=*_r`T*`HjlMv;23Ch+(k&n1^+>R)Jd9}E_8H#=A@KFe9Vnjp?11(UVOvt$! zvZeYoVATew7@XLN#Bxr93}d^CVihy%EwA6ZtE0GGh}=PE4cI3hA4z ze#LE!vgmZk_jYWFy>VRTpOMhVQ1Z%VT$-mIwERpcPD(e8&LS*23-VL;qTH2dpAG4M zNzAx&%-jM~lG3Pq%smG(lTu7CR~!VHGS$&UVJqaNE`_>JQ09an!#`xf`}JfS!ivk>_5^oN>C2-%T6tR`KRK1|$#ZUCl$qNs1yPbyIvIf+Z^|b8x@k+O z+aW01ZuJF*wW4V0u)Mb{-vPy5Mn*?}Uc!P7$n_G^xoMlC6LOPFggKh>lyyN-GKI;| z&=p1fbVKkWk+kdJ0a6cqdxNEq-OP5-IEbtQOLYqR=i*euP();&DQGJuun(3OD2I^C8`vpgz#k98ql`=K?bj^QN=}x61N&L$UY8 z6t-77XmsoAdN-;0zUz!+M=w@WZy9{I!bE0U* z1>k1=k%5ZKp~NupC2`o*yay_Oy_7DEy*z9@-4&4Mqeh#gWG@t?AhF6Z?Y&THl_QbP zE=|q*Y#CD%I;``qge;#LG~L!!o`}>Xu(B+Fzhy0c6vhy)_6*~V?W>Sn7F=VyF+0h) zu@CrBsH@qH^Zg*?BvbUd1Vz_Eelmf++uUSxonJQUzH*16^m-^vrZAU(i#uc$H$X|U zi|{j)oEwuAL$q2kAA;OuHXg;?k6I4XeVq3($g=1+bT7uP-%ZZB!}3Xq zi4*UHac)$sbGgeIl6&rdW-GWmak@fZhi&>QnRSoVPv}l&A+NQh-)n`6R_8V46)7fW##_FitJFQ#PM-|h5KWlMpim$<00Tt@X zyaz4Eg(_j;jUW$Mujxvmjx_6Gn40h$ZB)%0%k0lVdP0)Zam(C&km*ydruag<%UWhU z0+W>)7%SKi>sS-R3z4%PwQ^Ip?z)DN_n0OBx)^R83Tx4IcvH9^@_dusGfVl8L-qh9 zvgirO_f5C9?B+aw2^qdLIFlm_J`cGm68S5yxlci63X1NK%>DwTr%09AUrbWAo@v9h z^e@3AtL^GlP<%e=X*kiIxoyN}fiFY3-=sTD&P8K1OYKZE%fMIsiS3y@LtOS%C`v_a z&0WjsUxR=j9VwXGx{}1aFyre`mGT88Z;~jb-+;nYqBOdH8^{X23AqVmjkFGECVX?A zfefF~v7X;9{T39aN^CawBFO4*!!#c2fB>OHD4#pJ+f5qPe z=|iUc^b++gPMR>tdls@1vZTat8zmP#m*fJMs+0N5kZ5YY50yUo*q1Uk@&&qd&rsP9 z{3bn;`Ii2F(6^YYqx_3Stp1U&j_EpGy)L%izH_ha`6N^23HB9qDXsIx&zc`YWda@Z zY4Z>|PBid>@63yb7L9aOum`scOnVVZ6PT}x&?<*J3eJ;zi*jrBE_%bAe8u!ktkk<-hbRq?d@6SPOpzdA_rIv;l&mr{dQ@4oretDEzfAA9m9uQ|aqam}(l+ zx(lO!>Pe#47tu>RD0SK@`5}E19|4QmrQZ*1u!2*pRX+e&<`&m~L|9 zY0$FY`wFM;*;Dj-sYX`(0ZIlb#6rAPvU!`V{G)G^)u{=&SN#bpQq{ia1u9j^pP?X? z40QJ-tuvSX#kWL;z{$J#uOJ7aqb$qbf+F94&Okv$)e@z;tN0s~41o^qukvju8v>=S z#=rY=W$XyKFpisg{sF~)`@Q92YtQc(4O z31Zq%h@162hP9(a_0Y*FhpN%SuPG%;!a<81BXUw@pqOF?Kh($%;~6ma7y)z9rBJ0m^(SS#fO^&ysTC*HQDp#Gxvv5V<~7 z7N6>AzS`GQL7cBeUR5b7QhA1C>S+OAKaxbKTz!=&9||e?r^;$kmYSF;oh>#sBHy=w zmYn6&Q}x(hma<@mNSFiQA%K~GOsJ?8B?%OCPR<^uF6`Na*YTCj^z|=`g3h|F(+Ai2 zDv|Hv^N<$J@+~V3&rQ%#FH*1f>mUMmIJWkZ<0_pk3R9anM*X|>xOWZ~y)~1~#N{2#-xt5;nE1Ywio%2o7@_C|oa5ChVKVM{jtMO@PxMf!l z`3xS=aG>-$-0(9{`Yf5>I8b`M%wIfE`fS|)Gf?^* znZIw|;%}iOeYA~8Q zS+sgEnpv`F&0sY3vS{spU^KI3(YnEC=E$P;gVD^DMa_fIU_Hqek&{5_EkUr&^sR>A#@~qSZq{-s5g){`N zZ}Muhc*~$fwX*n}L5XI{;^3e}b+Wj1P@-9~I5a3xy)14UlxVhp%ngf7Lxigz-h6V~ zeN#Du+^znp%z0bt)HyOYk~(#+%-!yr%GH*$Lu8m#E2+5|t1G7?Wn!(&=}eh8OXhT? zOstnV(Ugg^Wlnd>#5pqO+?0uPWlk(rqAF+HN=)2hnb#w-{1ZtHdA$Q9*UG$|10>Is zd3^&U*Wp&50g`8b$-LdEl1Y_$=cP&}W#+vrRWhkFZ%?XZQfS`!sgg;hB^QW-RLOj< z47F48?!l>M%90BQr>c`B7Y$A|OO{+bI90tYxnyvv*~5PSHcVa&bJf0RJWChHYpOeg z@#@YB*0BGa+DKKuaYuA18E)9Y(?;Yp*KZtIlPFi3-cVK5vfH;7$2d#Q%Jx(Mrp8%(J=TFqv7yZMk8Rn(C9cQ zW;7BS7#$C58Jz$@Mx)?TMx)_+Mq}V^Mq^4x}^6g?dJLuz^uNbTN`} z0iy!AnNcA;#Ha|q!KfI1&8P%U9IjC*lrSoTg^bE!J);U}Wi$;gU{nd$F$%z)jH=+9 zjH=;9Mm6vjqvJ;pwR+Y#OM^*!)PJg!)Osa%cv2K8?Dh|NN2PJUT3rv zMvT#D8SG`W97c@Os0m^xYIG`GI$om{a5JNo@L5Ky;17&e!{`Ybt${K|YoUSBI#|nS zJp?9yYSavi7`4FJj5fg4j821l8Eu3|7;S>DG1?5zGddmWCuwvBG&4FAKF;VYNSmzD z*^t3#3sf*V2j(*h!Wu@ca0#Oj+{&m8?qd{&Cm6NE4;gKR*BEUBF-4;Y+&NXF?eJo{ zMmym185(uKwV4`q!n?CH>Vgk3io!ld-S8ZLqjTZcjAAe{TcbGSGU|c3jCx@Wqn)sq zQ6KDQvUj?o_IVst)S#OMO}Fr#|Gax)grO=rY)xuhHeOi_v@FkBqK>1yZBE@Cin^|FS@%_rVHASHgZqS3!EAM(>Az zI!0H+CmCG>Pc!-e%qi07gYZd4*TM=EK zFuEHqW^@mHl+nHLG^3Bhi;O-2zi0G+Nf=(K(Wjt-(S5Lh(WhZOqx<19Mi0O(j6MSo zGWsk$%jiLPjnP9eE1=QCu#(Z|AjoJR^fGz`_A+`DKEmiRSX`yievs7~Jq}-C^aOO& zX!Io9&gkgs^fdg4(U;+ujJ^VMYBl;Q>|peNHMot@ z*P)-$H{hh18hsPG89f8nGx`=h!RXuY0;BH$b_j&N3(FXN55kO|g{v4n2cKf}eR!79 z58zEkKZNnKH2M+LGI}1`8T}aE$LIz4F{2kDvtFZ@;4wx&f!{OwDU6@3(aUfFqo2Wz zjD8LeGI|A0nxoM#;4DT5;9^F9{qQuSgYYv(hoE$>Mu*`!Mz6wKjD88HH)!-LxPsAZ z@BpJyd`C@XTMpDFo85M{-85N2b7!`?Si!~}19gIrE`xupqPcSMI&oC+%Z!)S7 zSxYpUCh8eginAF7#3hWX#6CvV;!lifMEX*VriWTdq-qC}eb!Sk35U(ZOh*xQ@|$@ereb1>*E3jZP8oXS7fp zV6;fwb*e^q7K_!4mWZnuEfp^_S|--5)M&Z5k5Ln@AZm1~Sj}jKc#+XcQM6j4 zRpLTMt3}Zojn;@q8Lbt$Yc*OYb}?EnzR##x>|Uo)i@1}~22r(Mqtiq;qmANgj5dkZ zW{ozBuQNJbRJCY-bcVQs(V5}^qqD^68#FpwT*hdN7uNd`+k!NYtEA}wjDehs^C*EX#v`e&{tf(H?PIP^0rjWt&D9h=q*aEn&r*=n`>$yF&bR=7YCfc<_b? z4(+|-;4Po(-}l-6t3S~H$R!6JyZnvEuk8Q)C;Q*O|KQCJA;E!1E|Gq=_?d^Z^vi?tBdGLyB4qkoDp*tU|_IxYR zkn6Ym@BGZ+hwkE6@4c%3n)ko@o~sVuf4!C6^2G@mA?N=0-j44ayx~0u_J2-Ef8U4t zFT1P%iEI1!Ud1yC>VB#IYpz8358eFf{wJCqC;wJ^b*c2Oqnpf8SmGm+f<&jvjg7k^Kj6dCa_=o7uGX;1xIY-+p`lHCL4% zc;u@7tM5PX$YX~-{#b?k&Y@4<-+%QT4ekTX?cf#rtOxz~Uw-H#7kMAN`oX)*gK4Gu zfz||ns^Q>uPafWPfB%!0`sX?Jgo6)XefXX$uu80AQYMFP+V4@5W^6yD*KhpDf&F(J zy5@415Hou9mJ1VK$47_nPGCA=tbVuumIwN8z0ee5>O{wA_8z|DvP5+sdT{@t{kMD7 z{ZIC;1Fp&=iSK8UtGN_=LHH0*5ClZTa%XaX*65k25jEajE(YPLLSXot>F2-){H&)Mk_K z#9?3aEpO{K=Y?AJ@jf~|xV?qQInR@NH`e=GkE?>A#MiybyLqSYa)a}@mwt!AyLq*L zZ^!vS%T51{7MEcRcNGG)%58>s_JX33Dz|Fc3$%xZW!xO@$Ek)lQ*2C97hx; zPmZEN3f}9Rai=5In~rZn($yBN^Io=Z|3>fn!`?k7Nb;$qmT88nlPZD;9#41rh44&G za#KxiBabLunAkA|vXZ;-pv?#&Si2Awp-=88jY{3!M1`y zU-t)+O+sdd?cO|O_%=U>5y`sAGH%=Kt-DIKg;Ez6l95F1fm?h0$2W$UX$tPR<=b^R zxa%Td@6qGFOSQrJ&FwdC!A8iGmTSJ<+X6>U2Y0vmcAoV<*W|tSlCSYRvd~?BzD*|r z8@GgzYn|Z>#)ykh(s!({S^4>tM);Zm40Q}*QUUyg=J__Z1W)hwUT^ib9`mk01P##X z;3RNvowwmM)CBtLKllQr|EOj)>@Rek_$RhCvMhd}mQob|@Hd;NMKY^SIs@Gbm^L^a zNGVv~)ZSKyzuwKKe7nz~3#8nC*3|iGYEV2-f6=$&4DcOIG;ZhPehKB3Ej7gtV)^;L zT_=6}4^plEy=#eY-<2!AE9+=Hf-?{y#{sLQhGW* zOAX~5vkqBZ6}!O~WG*SCdaqp$HXrcsKM4N})@526P>BIl$R-|K4 zD=%K-ZQ1KTu>sWEudeqVIe?mc>vx5Es8%*)`#E1z?Zinl(4Ee>;a12Yld7& zA?t=kPJr5?8KIxv^Xt4f8=%+`72aNxE8W^$*-@hdxAvjMzOyfMxuFl-t9(X;=HzBW zbAs!hgXYkOth1fFx-}txNJxHD7e3@u5|OOGMRp8MD$)@Dz_zD#3AJ&fiQ3ZbL^rL= z=*M955v8t(v(7>;x&TIqu1AZ>x1+&#U_VOvUOMdC-{`&4LOr1|wdR9`z`5G?YsdWC zUo60p^vud7{_PhKydjS=ybb3ueozc4jM0wKRe#F6{)E5nEb>%;wd*k0NIiUw8<2&O z?%jgnhu%hXh9N}M&<}x{Ce6LsB+Z8s30I(afld$^8irI&r~*)QoS5vOxzi?^m;456 zU<&G0mk*;2HIk9U^KRT6XlZG`ekgEr8)!@YY`9F>5DY0Q=#v7|PmOF^$m*hUrOe9A zVz4(fqZxtoSA1uGo4gJCyvH|4#;@=8uf8_c3!`~{tGDfP;MTz()zo^A?v?S~(T%7Q zKLfW8_%^)|xK-;v-i9&}7-MTNsJmn8ydqHzhQz8XG88EBk& zZEQFXzwh?TZqp~uQf3_1`xNFL!J31xOu^ZMbGi`Rx{ zrwq%svc2t!l<3AIaPi)27rf2&B)H%nxRFiv2o%cAPElI19dd{D zG4tE6HhOC|f)e!^4GOfCI(Y7+S!VZlV5bNHlMmmaE0V!=b#Qw~M<>X5A<%G!n_?pj z3DoR@%Rsk(YG0F~jPen0Q=NZPJ*XqY-+BwZj)@DbCLAXCM$aJ&whht(X;tJDlq+y+ zOJK_j-W}__N7q7%kQ@ddRPXVb`N2I~psj}b`@8+1oA+R=oB(b*h_D=rDI@9)2cgTF z8#Dv%4fX06l1wQkVbo)CE_n4S@X63>G-Ye|0D*mfXH7GjK-M~VY$wzlYG+)9iwMSi zYXkIfTg>pxoCQ_IQYjY{R97t_I~q8Lh+&g-*Ug86wcDUNfx}JSo4YV@QA!TKvq#xM zpS$MY1Z&iYbZI#*?11$LGN!q{?bp0J*GkFNT}FW7J5-O>2U<=-w1MMmWku&}gWGGT z&Y3fRE8l2RgMT|r*#*q)S}y(KdZQ9TE1~8~nR&NMJw}aC9@sTt>F4;nt?Ndnh4cjc zpe>LqO^G6Wn|DhCxCKGQfVLG7pDq#IAHF>;sDX^V&c(n%gMziU+FPFs)NV&7d0P(q z4!!_6K|he|-@gH6Aw_Z;Ja#ES$7GuUbWnI=2tx@2ALWU8<$z(b zkr3{bsS&8wu}aiSD)iVqHZmDgpy1(aI(gg}4#}?X44m6a(gOn&dST@NVHm9<1ZuW; zZ>^yjWv2S$IC9^i!_WyTE?%?d~!(BJm9ouu7Za0sm3i}4&$Bg%p@qCAkLvVmLsA$D4`K)*-wwq@5Z zt{*g7e7y!fiAp+R^F3eVyR-rB9z2GBPk_>gC|td`Q!9P)maQOzWu`z)U2s=R;M@_U z8#8BBfLC@@22a+&WAN}L=QrX23}WLqR*Y(DoQGy0_V(6I?bmlwAZ=gxtswTD@cN;S{Q(e6Qig(W#O zI>|O7F)YsA>vSnRWOdP$l7b2k*hTyqqMARGx>*N-w?W>Wu={F)j)*9D80##X@FJCs z!4Y%vpE;DcgeJiDQ6@O>@4E@uPG}x2SLvC1pyeq16&rgM5x~0J@-h;Nf^~Rm7tsA7 zdctfodnzKA(d|`^Fi1-wZPZ4AQu{49LKTo6TW!O6g9b&9aIs|M$s?hEVI1kGflmvW z6oW)o>)4uxb?vREkxl6cD`d5GXE5}GyDuv@*aR3$wutP}W^Kj1El04H3GIQ{$QuC$ z2e$Kax{Ux0;xLz@4gc_Bx6|F`qct`LEqM0T97i+*6GsxU$4|yu#^E!8U~(k`?dK-55?mF>UP zhL{kTs2G|8lZ_&j2UJzWyYUbxB36^3`o{GcaDH$ykP>2YOi73}r3#1rExVvr6w>?F zZuV}y;BT(+@2~Z5zl4TsDQVG>OynHt#nri)Ib+i8RJ}Hk7Gt`9`d#bm7O5{OuIjf8 zViJ)iYBqachp~`H#DoR-WMky2%lg$&C%HUOyVo>1s5e-%8qo@QD|8b&W8SR%42TOc zZF_60x9&v{qVgcxX&Xm%rH!ApK5mi4QLQsa=)A`!t4It%p#Q}-?|}_^>WapbT%@j_ zxBvqKl|tyQZ7JG+Mzc&gliIr_uxm3pMStTp@6B3s3a4VlTX16}h42uE%rFIogboEq zJsIZgEJHUd)Fz+x{eP}a2<4%4wu~6Fa%}2GncRXNzUXUe4CVL^K~vX}mUq4FQ*(Is z8@O=>UL59J8R3XYXBWL%kNYwEF|4bx!frY`Gn<2ssqABajXdp7mSH04o+Ib(W=>2e z$hGL`Sucw_C1|yo7U-SDpumO~^g4iPreO#nhhW=oI0DEZD#FZ2H9aT$1$V!x-I;6+ z?*lpeSF-W8yrD^_&6!2PtInY^yzm#b>gM0E2kZOZhCTjcwJ4QABa%iZ#wGryJ7F<- zY?2FyMv5zcV`@X0jL+Jkl2`*wGh$?n$fC}Gt|RFJw78a~Rp_a+Fg4I{O?hbk+P3?OUSJqpLz5 zS3v<2N}v&uvrFo>P-WHcbgj&^0D7=S*N8-2A*#ZEL;x-y{b%R`$=-BSjsZja)rvSm zHvie1v`DG5S62O-I72WS&D_L?qu*{c*I<2(+b~D_VauHAgO#1_p`RmVspqvt=4DYL#Gl#T`@?vmPYr8dA;Sk>(a=Bn;3*V|VE@ zi~ePQ47zsWyxHOAM6Xwp*;RIBjW#X*y5ljdi`ja|ic8!a_lCZ6*(*~qNrS3D-Bb%{ zw8@j>DWn6FvLF+o`6+$IRq&YYkjtQjVG4YaZZ4$bCzjx;b21cVcjE)3aPzjT7$Yu% zA4ywPs2AdFdE=t-4IEz=JhD|T2cBzxCNwN9%E{XleCQ(YyTaO{v!v0bDyuuL z(Vj5J=7TQ^$$0|3E7ZL=TQJ8oxkl&f+MH+Fx= z3sV`|d?Ibca!hdh9-9{DP@~*XsB0j9KY%!&7q8vc=DERCL3rNJt$=HTnLjibrEuQq zwi=Aq!c}1bi<;MI%W3u9Sn5*eR$N<8%_VYZD=0!;BHE4rqP!Lij(? z4L~Jo4e%U}5X9Ve;XqkSjdwcKOx!uv7I|ikALdLmHi~E}ohn}!SIKOX=@jL(NvYM< z*p)Vxm0={Y1L{O~m~>N;+{9=+h1oXNlT{zqI?Q8^$ve2_L8{=9X7ACR(4kaJ3c3aG*QVU+iR{ouBn z81TR(Mrf&fhVynZZy!BAXQY$%xI%J%M;*mrDv#)M7Pj}?bug@wXC72b_#qBLWRPXi$tD3xoj77rZ}`ohI5&o6uiW z5piB!Q3AEn28cH3b$^lV)Df7THtFbV(Ek>f!_tU9bu9IfxzluoAP2!yWu!TwB2T@I zikK%NxR`1cPNdFG<M^Y{!)W14 z1R#)NIZlY`L~TwIacd+^okXz_c~P)HKgo6CCpk-X%DWX#AMOdRie}@`Z(3tbOf+;^ zo#>}6-Yym~KT+s^QjziFFsr~e9yPzcl~23?A0e0d2?69z4GE*;?8p-tDq((*U{azK z^n)RZP24^=s#)n~$Vnj{rWwB4bFdJIe5mIT4&jhZq7!Q%4KXjZh%7N}UmH=ypm_SO zhBz{72|vfurw64H9-W!cHKnC+OxOJhUMTDL~_y=kSTz=%KXZAS|9|EZO+rxkE^;|>qHywb?y_N#%2=ehB42*0BT+hiA$FH}6{qcvYwyKG9WZ_G_;Eac zGWtA6GPL?-Z^0AUD+P4r@j4qaN&fSWv{ROtVV>UVd$10d9VJ#MLTJu(_jC>>?-%hP z3`yb6s96h4G{tPS9q{znafe20B5w(bGAZuTm|M)~K=;VhNi3)9rQX8Y32s=Ay6@1wQP~E&Uv@fi3^htTPW+EBOf&%_@o*#9wT!47$&bpaioq z@tO>mW)na-DHz6ThE^}<*%ZEw8!Kfv%Y2_MyG<g=U1|>^ z9=-~_lJ;?RUen>Rt0JMyf6`X_W#C1xZ|{_Am*;NZhX7v*x&OL;id@SV^uW_&8HWqs zn%43bU=Fl#0#Y&|yIZb8n24!uqrmEdwy`k;d z;H0SjE?-T*S!#82EA?Pt%Bx2oIUZ7hbQL&Zzt8h`h3g*wE@Jbo4o=2-JBp<0u}dgWPZ zD@)L{ekxg!+gJ=B0ArWP*Ckb-T!OKZPLqw@jlJo#oLs+CMbL$uzF^R8MU2c|1xY>b zd4hHN-*@3*3@~llH~quGONjpt*}IL>0mwyDGJgZ`x*;$!^m05q7w81^?ONkZOvF%T zRDLRkNeo^ox4zorAv)UTEM^R^+PGuwivuxq^5k($d)g7pyHn~;nzuMRb|sqK|Lu5u zX#YHRFH=XU0K-;2cOzv<75R&*Uzsdz{4Rl-1p<^;Ku|=_&lC9rmF%Tw%qxVM)68Vr zV-+2|rQ$M$5zOgo#&N5+cs8~k6KJ1wsEcc2nZ-v7Dkp(y>Enm@W4gY+yE)DMEw z`0|Bjo-;iO^TP?DGu-~Z80l(8G;+lJ#FEN(=>c(GcU8OrblO0z0EfA-m$a~dGt+3v z>h`!Y=osTq9lk6^fGyf*qA53R4QZu21)|*6yBfEdQI+>9fpG)wA@w|xcHga0YG6+| zY^iZ+ue}WxL6;83u`@`*wxgN3kY6C`Zi%LIUXz3^DT%WJ{PWnWs@l|jKCS>S7?Lat z6P_fwTbyjU4yDc(nTP@`zFEpfA4&{17sPjOwO@qtA}=*dmB z*^Q;+21+9f*i*6e8HL7{{4lhi6gpZWlFuDYRlG6f`97hf)XaQj3u`S%avlVgR;XJv zS9H&`zfU>l&%M&7C*|}d>wrrS-|#s)`o_)C@JyAcmFX7FC6f8L7#{%7v??rmus$EZ zlc=HNI9dLYOQBy_Z$cqgz|(V(U)>|pV>|y4qpxqmlrN5yBq4ML;S$h*sYd)EdXhnN z{Og;8aMgB7_Vipr9Rztrt&slaj7>Nz$`9bu&y+&0x%`a($Y;B|;YNfZ*o-?J5xtKJh= zJxy@=ut0(n7!s4-p=9>R!CRD17duh=G(r@x5vE)5S*G;!tB|0Tx+RGFFQKrf_v4BE zVHH*7WN+62zzf{6oo?0(J+<@@!%nBI({7+tJF1#W$_=wkwQLP@lG^Wde;FCkkgLS6 z9ITX1yJu6-gcrKdA}rjrG-!+f%*eLf1_XP4wdP7ex{(~M@7|vF!c9*uLY*T_q;gXx zk|WwxAg;HDIfoT!6ax)9 zWhPXsur9?T2}BwSvjRy(VdL1NFzB%f-Cijd^lGqD5q-F+tgcjsVB~(evT!G&zCM0NOcRP}`i7G~&jHnmsOxtP^>@28y*f6c}I#s_P7n%NuV89_pSLlQi zq9~q2&Wa8RE_P$@4~u7BkLHsTR5Jd&sTP#3_9e|n76jnHS>bd0>}99^%Omu#!&(9l zd%pM|sU>XoW1V@phw)cwB(G&qn~BD%_I0e|ENHMWhIq)MD+{}5i$jMnYKm7yinqxM zBXX;W8qETs2x`;SQgQBC>_+8kg*Uw7kJEjCyF6lja0~LAuMnbR@qza%P_uJJ{P;WI zdKHk>1gZwj<%}ZZ=R^s_el#7X=-X1x>4*=X+#O}j>u#*q7RJ}nJgk^TNnP9T`k3qgD$~Su z`~noX`(RpTM%%ig+dNU#6Q%l;|;xr&tA1ZtKTT@zX zf6BPVXrMX1HJ_zIWqMP#aV|nwDu2@KobHo%i7~$P-Eqa zkO~X(_=RFO_z%+|U`+428M||Pt__mi)3p>}`g`NFBf4F1mQc%I0zV+*gH<$kLa1W8 z1gPUt&QHkT!RapH;;Oh`_gG9CQ@>A>8MH}D16|rT z8}ZU{7nD3f{H(0GU!4q2gxQz}NbS5zMTyoHREgUzu>$l;(beiYWd0FV?r*JXef5Y- zWbwUdPCG(qR8uf?d_xsxlW`=iVP$)WG6xMb7Itr&Olet8f+|rM*zx-q&BPV)KgAQ| z;u|h28X!kbC@IWd6(0HRVs80MfIv?Y=S!>Z9?6zk+3o5kUfaB3*c;WUXYm_MPo|ES zsuE6R2A^9Ub^Wi6q)-|4Pbv%(MB(m>rm zY+IHsigMe45RdJs!4j{<_sc(f#9TEmqA44v5|+x&Tv}n zdTuEbL*x8Y&Vs+RF{jF;w$d9+X59QdUNBPy%ZHM^6S-uqxknG(dQS6RNSGmMW*$U7 z2DPa~gQt}b&)Uh3Xr)&={gkO&pb{yTUF2jzxJVMWiJ>Ah<`-~&gs-VaQ~O13l)1K$ zY=F^(E()$_8QQPsgpSyg3!HFaZyTuNb}1=F2Mq(p)g-O(b^{}on8A&?tHC2$KxQ16 zA8Ios8;#FW!Jsn&Y%TD&!3STsX)fgo^wIS`XBoSNJ8FB-TYBN9!qc>YM%HMn_Tuz4 z$Cxl@bMI2JV+SIN{DSm;seEt79eXZ-6sx@sv(B{GFuq(lMm8y;xYS|nvn8_7M%+IC zD-w$+d+1Ah7Wf;{jw~iP>|y{GLjR4Mo*FkbK|-PRjr}5Wg+^lqH_xRc@2oN^I0@jV z`7oHYKX{s_;WnA(D?647(o9bQc$?wpRa~B?(TQ)%%gLknD4Z|nXJ_uTyyC|ZX|Ogr zoA2JRQMukSJ!ZfRbv>h9RnZM$xhT0~zcj`C^7~>+e2vCS_}*8n5VJ_?7#AmYeCi>F zfbi+iz_eG!OBOyuS4Fb{no2JG=ExRuuz?JpT8GrvbdAX&O_zBOx+SPpeMIG5z3iV?J=-+)wt)XjC>x>ll37|71%u;S;2gz(i!6!2^ zOfs04E|$=*o3^N3V@;5n9%@>Zw6dp3Xw6=FFoE!;?#Y5jG!|895UI;&Eh+Q4NA)xft)I5>jg3jNU2As3 zA)OX#Qw&v>1^1VMb+|p|4BAJW6QhlH3|(vIls8tm>f{d(m=$h}6fJ>I3=Fi67Bo0j z<5v%0q~DQb%8^}4&?DUi4UWl5+M-bneU~3^K-Wy2EBaiJs{Veay1ue%>w27@2sGC~ zSzTYU1Hw=CHAJWRO_e9D3{_2_Hvhzqe1_>k#CA!Ru?j_2_QLSbNC*WNgP6+E$OR%ogde?!sEKGr z+3?lpFTQH9HO1dl@hYdTIFzACbE?0$0uCgUl3nT6uCn_HJNt)&7sb@s$MJ4;k+7>6 z83aq5hhLmU!?cfvC&E+(_*B+O3k$+8hDA+(QsG*FR*sZ0un1DnDN)F-kH@~4`5PkZ~q49IYlkH&G{A89Inyu5hs zBe5l@>T8e^d~}oOt8ZX0s$MQ4yGwX)&nN+!iI^2F!%f$u@DnjyFGpjvjmL6fme9b) z8SG!cZW$YwAhgnDVMU@5_4)}&N&O8}N7e01?a z3s&(2$5DkB(z()E3|QL{8N888F;UCi%veK#(M7&F^g=Zutk#_o=u+SBhrY8~7Yj0A zeZke*w;G2kF&e11e#fL$$4|$BshTq@41ct?h-M%s@M%gX<)Jzhqcs&)W^1ai@9bVz zqmDHw*#VV4qUKF9Fx@ILf7RCBPs|qqK{F+w>JjR#+Z?^c)P43UsSe+m_bCf=oI@#^ zB$7ULy=X*GA|?NJ*6%&3dax9e*g(-Pt+0p?6WJhRm4Zf2=L{lxyv^bYQQgzx;4rtm zO>@|Ha$sB(e-RgJSBr#(rg{$gFZH@{L%qYSAa{lpPPh{)FS>iE!^Lfpp&4YLn4OdF zZPCIi!|QAheyY%@Nwr#=p9122fw)7uHu2w&fwxgLcRV&g#`Uck;!Smu&L zm&kC3Rby8@eiU!hgS{&WA3D==>FRjCuBOBwBNp;P$C)b$oq~priB9CsoEeg|MVPJ? z3zo|s-~BDlOwQmP#$dt-m~<6XOf#B;HRQTkAt&z2OYybHd3e~Ajg>?tK+?)okP1Pv z4T{WRj z99d{G`2BQUVBr@KZ+k*n5E9gijeud4$ahv!*VS&2CA8_fW?10pMnXS;xyA~hv}GvQ z&oW{f6WQ*1pr#YFQXDW9c+g2CF=Pc_(e#ZG+{7`5QjPTRG?vBevHlD&VN;{iOKP|z zGGij->vR@#DAp=7Dc%6-eYFp14+=^EsR+kidq-U~b5TlQyGS4>PU$i(4zZDvxbdj! zb@F3gGfT!MH7Zh%im+|6H5&rBH!B~C>C#H3;X2IZQELenTXsmVi?qT z2sZb@5L^hoJxYy-5qQXRUveoXQ)e^A!F4F%DbDtwOJ`WZOdTYEB%>!T#yN;hmJ!Ba zFr(RKdx)Ax5i>9sDY`)Lx<7-VyUCr1aAku>$4LG_~RN45ZTw<>|6dD}>KS^{PX9N7Jr`o^EYh9PQA%$zMBezSX!2*5)?98R7_8c%AR&>8Y?c?cZ*A{*x<`1(WJtKmRb!bppx zI&GcMfpW!RLHjGSC{+m>I8Ej<=A4w=t-LNVd>cciAtAO!OW>_^+<8cC`rbP+=LB}h zDbj@PlXPH_HsS9;Haa{;ZFq(U90m!6-`@!cg1B8kGCDf%pMct<0m@L1Oufa|i=XI` zq7CdmrvWM+k-0A>Y|HQtNo7&%83y2qh%!?h7mE^e+Z(BEpLp@Na)M<-4f%qkZ?yLK zoa_7Tp@A)+D|^KluSZ#DlUqZ#4|DFV?PPWEAN>Hs1|oE57q0s6cJ{}U_`Om z{7cya6$@ou{Z#7Wc9SIhXNt%1?SR${T3Y5ze|bLrXl&O#NcF_Ra7mFLtEyp0o_AHz zPsDvavaXYleTwNVUq%ODGml^wW>Ga*M;Z!C64q4KXdfnfg=gapel{Di#m(ovuu>XdJsI>tY61d2b9M1`6r9%I=9jQvfAS*Sii$B+`>t2VovB+Scux>1ci~+? z+zu;MNYpRkgI5IbssvCfEq?n_T&0k$kpk^0=N$5)atcE&QV420${e<|vOVhUh~Wwc z>M(g9qm?Ts&J@a#t#|(p8=-kh{bF#fL9D+4l~Xy|O9P{uTLVzH0D$GdwQlnblRlTz zRFJuA(#W*z-?GQJs-yVjP$2E1=|dn$8)l_4B|mytTW~zNvuauRG{LC7RhlaFO!03? zy}+QF2HHz1V}nfzR*JUUr23DNKf1;4FzB!8e~HY(_IZ>{I!8?0rpjF||A;(P z>)|MATnC10r|hyh1) z0s_Je=?bP(I5jehmNJ?2k#~WNk-at&Y~za0Pd{f%U!qiEDIfnBnXe`P<#%JFn3zjd zJzZN=MFiGK+ft4?3=P5S%Era7f@PQV(zzuiFaLhwICX_2(ZKagW~VGAz5NqX*NEU1 zS4xK#;4xM%$#`I7_7J}ZITVfs{n6E;;3ejhscYI^#?=`~MUnGuU(<8B;vJ62^{q?2 zi0h{oL!keInwD+hJ*;+CAp)n=B)s~E;z`Hxqv8w|v^;tDDv(iF(|GQ8iJ)-@zh4;D zQ#S*{_td`yT-3B_IUUo>ZuoxEUX1j3wVSW`GK>hG=#0#?c{!_SS2n0;AS4sZu+8MT z6N?g0)qJd&N_TB1#u?O1hlFMFF@nv^0H!t<0qi$$81BeX+(NOAMI5`P6S6hB6 zsX`_XoEfg{xl@U|dc;RJn_Gl-ThgIfimw7+XHyT&l8hzT;Ix&oP+$-`O&fnk0kY_C z)3S?>BV~{n*#?MCf-UAJK+OgvN>lXubwR>R3$oD`goO>^Xs#_(DiMpzUvw%AL^U4i zg*J$=h%?!MQsS!BaBB!e{-tQGrr!3n6-Ru-QQ9AW(tkIUmzHZ$rDV0NcrOeqZ!oZW;xJ|U1^)G*q%7sIcs64oc|=zIzHqBTZ~-a z-KaL^@(;>hk)T4cTx(!l13RZVtSnL+2?Zfz(A8w2ZAF3&mB6^%gf*4FNCGD6QZF5z zgC}u!Qk%$T{F8G{AnZ}kly8%Y-eyuSMVFyG9x3rf)d&3JpYt5P2rjD#A3ixtz3_Q1 zX4k;w)~$&Ry^-7aTk#ffKsa(RJr{>(on0@BWpejonv-e0z{yr$6ixx}$<$D3E8Zd( z&T@_%HqS*)FOsJGi#BZ+Ox``Q)-tb%1hcL9PAco$&3KOpP=ehS$2MlO@nt3{<>AI7 zlNa1q)i;;-tCC-R-?FsTjX~-ob5SwX}>Q)gs_Crd-6J8_ zYAk(hQgbi{WL0fXGy5E+y&+q0o7&KrDy>#oJ*>R}`VEg$oUFRTw~8cS;qyzo!*eof zwn1`}o>5?IvPn(TBaZ8=_D3(1uOgP&VTYmrgN9D~a8q>wyPJ-SiG&Uf?6(IP0^upqZa@V7)yj_^e6;p zG@7i-diJK}@w_9-Mz?|B*T_1KWuxC<2+Vu^EiX)*FR$#J$}y&NhSO$rqA6_V(NAnC zbZD%c()uQJGX7wQ`K=sSRs5+7nTSc1kcg6&ErsEjJ%v^ffQs7!D2X-zSVSBEP_gqZ z=+ykvAxyVC;Kq@FCk#$~bM_P}G85}i?<|OZLk=XdFcKno`voi+>1QM{Z+-g-JPL|f z>&q%=CO~ zch{kd%88p81xJmP2f_(aCB0%dt9M62ux>rUX_2^q)TkOjYUC0iH5whn3RS!%1v3mg z5me#~Az-M};IXQItt8N8CL++K2ppf6y%hj!MqatV^~e>oLLF~0fOAo}fF7xBo`iy@ zC}Kd5QunlS>u@X4N^HyIffLF_bkfw; zJ<={A^Y{)MOGN9CmKG+b0k&vI3o5Ni{$M__)eR5s~^d7uo^ zcLnGyWx0mDS-FC~@kwWWBXTE&D`6)+9*4VJGb=RE<;gi%n0%BKDte0p{ET%@@LKPk z2Z@hhVFy7~ZjI4IKV$0v0`vt3=D!TPf`#cHIiU0lqw{4WJcO??&y2u)+zl$E*PM*0 z`ClXVfB?~E4yZ%}b9wSZ=emYU}oRtERdTe3sH zHl#wFqVd4JRDo0TUL$)dZ~^}<*z4%!1vt7H9SM7+731zTD0@k(ej?UXvzpvEQ z&i?uHY8G~=@3|IW$Ie1nexA7c6tH8J%HiJU5dlH0CI$#u2V_F7R;K_D^?5!VqVFde zfQQDwVPz+~LGR#K?Nq=+3rLZDdG1UosNnA^F(Hw0Pb`Gj4j1^bCIB#^cWp&CfWmIB z_askEw?H&HPj1Hzlv(8mC)LEWr@UU{{12&kw zx+58x$dZdS#m2yxZt9g1xUpJCNaQ%8L_znyM1fS*lwjAI7Co^9ZI7JLzbPK~o{oU^k2pG47hu1!u%&UpYm8&Ua+^WNv2KR>Uf^aLj@dcaUTJ~%)uL`lzJtD>f%i2q zZpgk>8sqa@)!Bfa9TawGF_#;e=ym-jf$yZOZ*T$p>KlRY=Id7=yyl>PFrKawySjC* zaryWwBam$BUNaa^$H>^af$PEn?rTFUtGay)8#D&=zy(gzjqlAZz_Nn}PF16`s@u|h zlTps}SQ9{EXnTL<3e*6VFx5?PnaIl*Uo~JvHCC(evD6)6Ev-8=rsh$qq$orgYp?+| zjiWd+5l*U{M!Jc0YL^{x>4+;!>I&Wu6I~Utd7T3uOzj<`T}SP=i=*RvzZVf|n>%*P zktaZUiHc6jbtsj3{zR=mDb@d}JXF@-+lNV(Eqa@dwwdAM3pFhGHOUCey541|>@3S* z;)dll+AN}99C!r0H2;m8@|Ff$z1=xd1dQ0$+tj$tVW_Fid@9*}>YRVTO*JExHwq~7 zk3E(AXlU-P`Vs#uphoXRXG!_&+~}*33!e{28J}$3X_KkjNi=@3ct6VVCGfZH3xh(I z8ko$P=$yKor-+#t`R=HiYRzM?r%qJN`TV7U-{QnrmO@1YtzDnn`6%bc`6N_Y4Q{oMAXxo^BH1 z)*1aACU_#X$PUt#(Q)kV|CmtgsT>PJOmR*;0t>Z|Czz)sQQ%{ z>H#9(pfa{Fw}c4PK0ku0(XO^j znWF`+y3~oQf5_vSnBFotMk^2_gVWKjBw)ajP;$=(Hq8A zOesu--!U-+8QhBfZ@5)5ZNv!FE>6E|#}f2U1Sr%ZZMotQ{B6FbAiIg8r2js=$L{O~ zpQmc?j>SDFWh;x{=npOq`mz!9k{A2&XNyZJ@l&)LUln~I#?;)?CI9IbNZBYt(f_Sh z|JFbUpQuWKT&x!{cS`T2=G zJ;fLr51)5NY4KLpJ3_y0#| zePatMgDm`ioaG3We#cqJ=Rmv;7~5#e&_Lh0H9seAkp?P;?jBmL&Xx{U?$>ZG;u{{# zB~S<#3uNbikXFZkNJ}d8@1fszPC^nXSR zX<+bwjh1ii)`X*O(L(mXF;#K1JADcBcbCHR1=0|&!CMrXccA5q=7n=$<8g)_Tk-Ij z32v4$s`Ko}U&_9Yn6Wra(8#;ZS`G7Wd5#Xf6S8%6O7Y_8-t9 zntTUZi#8S81ox;j)(8gPmk!;bPyIBvEoH$Dh@-EySNC~8&PK3{T3Gfp?XDMk80G~c z8E!eW@4LG*J0DTV8pJarOn$)`yO&X(*WZeZx1(vbpEy6K7KwjQXpYq*edy9=LlONo z{Yhdd^I4%S-y<6&?1Go+<}`yK4-DqIyInHAr@-PNqWtV-?>FG(_(o!E$dBt?;o$8# zS)X%(<3sbfGPUbw^?`gGTH8??0~Pl6y>9umd+dv)?~L9(QHn{IoSj>kVk$6}` zX5;`}wTGiPV<*C~W_Y;XmT8*az3$h=gtesT#h#P1_3#FDDmR7+|MX+7px`!56q#Xu zMs=_B?FOhEFCVUfCoPCI=*{*a)*r_}+*47rYY04-Is8_$)&4~?sDCg0 zK0e^Hj@iNdi^YJA!nEy8$@J<{H(f^B3DWqeDZQ?+v+6-LBxVa6IFC1;YAK0{HrrJK zvmIPuDx!xHp_CqRh5jQCZ&{?(@R#Xwf#|@d-et`kyzLw$x%-#mzKQyHtUz&e}Ay;x7UA8}MW; zR(&)QGvt97!#Hksb`UOt7O1!k2p6q$&Bo3ERXH>5CGXYg=C@&_CS6j&t-Bc}70|;T zideupAT9{LbUyS}4H&$gs=yc`^DS-$RuKlGaOW%@QI4Gnc?aVCufn=pJ^fE%-I>gE zej=E|%3I8gT)Mk+V++l(@KZ|-Jt)3)NX{BC(DX0!Q{|!zb zCFcnIky7^|Ja8`mW5ctj;nQ^=y%YWqU)Uyi^;s58MuB62_L3ft{ANBbzXUPIZO~D1 z-IcUE;u3r6y==$5g8wqsK($l}k>!!~c}*~wgh3sMsAH{e}Lb;6N*W% zohrY);UCtRRhMXs#7m2L5w=O5YRUiB;gvsr+`uAtCX{11T%*yQZQdpRE5i0es@_L=F5T6BYWKKA#=b>x`KtRVC}| zOUm1V`8PDS!F9d9x3wE5#8jPBa1-7=J}hr#b2<+t1JjQZW$%NC4SjL!CS8^sX)63``{tlJS&>`a(^+rR1_v>@Op6BGu5~jv$JzV-XG;0=c}yNdXk{)Xsf33;y{1 zJH}VDMiKi7G=YVmP8;y4g~nTLo=sloVg0KHfB&=$1UOhX;U%OIMFM9H4fS)gGdXB? z6jzd;nh7{2u62#tv^`Q6E19RrX))moEt}pGs*p{@y2%iUGdP4<1E{b(;>_#E(7{XC7pcm%0x~OYyKI@zx;OP*r@VmLs`q?)| zC1Di6qkq03TQ9ImwHBO^ID45$W@VnI6<-09?#SJLBhW@_0 zCC!#W+1o?RG)7rRBJGUzWuNv@13PM#D+r&z{nO6|VORoB?FnZrj@FlB**oBc{1?`i z2_{8J&g^z%_;(*#m1g#QY<@}>f#NxjCO=5YBX*rE_-@B%M%w7)j@T_tWNwhq%3J)i zJ+v`u1aJsGk#JRUyKR#e)JjOT`tEGfi%tzR2VYe$!EtvNSe=wcf>A?B4!7jX4vSeB zUZ(tnOBsN_FK#g5;?^q-^pbhA6^`>#PaWwHQM zrU?503$&D*klM{P5jI3QlFD{jAU|q#$=XKoe-stx7e&#uW=yP<$&Npgw$Q63O}mf> zBi?Ey-8sE~Kq@!;ymL?^7VYzb+>PsB{c$<@*<(UU&rXu}M!U0;p`Q%6+JJ9q*3gs6 zgfWfK;1V-y@xy5)k8I1r*WB9FOgs_v)f1w`az=5D47mP-qJIDb@{R1cNj78aKHWyi z_Tz7$kTi6U$H__%wiS|jQD*jYeFv;n6%DVO$MRY`>QepZ)eF$m>I#BlHyzbB-b=(H zx?Pq{DGB8v{mFllN-I|MGihmG7edcI%)<9i(cSxn_Y6!JKNUm*MJZBp(mC5%~ zqAsO$=D%w$C!4WKv*2WYmplL;pF9T4;lSe`X zg~xL$itR7uvnX4oGE3&h9h!W0hh1fKDKT#=hj%&ZlxL>$p;xw_kV9W*w@PVwd8x=#6&e)~@=h^{`xi zQUH2cRmj+sRs1(&`xgIR?t;9MD&h(z7#0PIK{B+6fGenoij7S|flbKPSLi48Fg6lN zn){O9HE0F8>&MpfwCfj~m6u^SJ-3zH^XF{}SC(@`LGkME)$Hu_tl~!QKhOom8)YjS zEt*BrA@V4~*ljB(rZ=F+*?Zn=; zU3g#o=z5a2=P)io9+CSu=V7bpxWCY==WTh`x|J{{EiXJHd{veklu^ zE(jVyBT^hS8Z(6J4hqQuksNJ1vne$ST<%*u=|@w2%z@vp|MX6&qrvN3>BdsZaXvE^ zyqEFb;*_LTBV3zuh2z`Pz@{&mFQ-A(2Q5HSl$x=Yg8`BD>J)YhVa06z+Nw`uW1D#Q zjZ<;Do~Ncu8$b-Skx01+NN0Qp!UE4@8fb)snKMypnjT&6VY+ONSs11+Gml$Cl;yxr zYwC&@Hr&O7%ebHrO(312RU-K+x{eEZ{=h1hc_%f;nmr~3`4TC%D49*Uj9ZAj3quxH zQJ%Bt0|)(Sw_93{CzBsCqMi33Q%?)Vh0EQbYddX|=nF^em|a8#X}IfJ4G3iu zb-=_fJFUwHom-=BEK!s%52c#>M99hyi4O~5b1ba^rPWMH(0)SZOAyESoW=$GqpRL; zaMOUa2Wgf1>z^OHpTQjw|b)BEx!>eAMAV_4>(Xz(JL11D0_oZ}df-<*;4aV+Owj$i%KD$HR zB#od-cVI}dMEq5R%IiLCEcbE;3O_J6i|H=soL<#^968-KdhoBVd$M?) z4EAv}0_AiUe=r7ZiRTHD!3@5Q{E>IXx(uIz#6M=HsZs1eN7!X=a*?_d` zph4DSA+zsn@EHO$k(WOp$0#aftLp@2Q&J%`kvm%!Az7VKWI<`M>{*5g$AqAojtRyc z4~h?OL!QsQkMc=Dm7XJe_QSzNVOiGLibavk4VTL-P@qA&t-yh;Ih=G=ZNTI<0^<|O z{diixGP+QMez>?+ztRY@2#DrYACgvA^G0F*wCB&P<4pyJbezB)ZbFqvqhd`&t{*}r zj{Z(5ur4>dn8)2#Opl8&DgYUKg}aHfvtmO=N8gH zTADosZ6J4;spkrXBtb=BQ$3xdq%;@nu>yViCP~6;p;aJsQXe9s`Md}hoCOh0t((=- z*a=8#-dEmw;539Fgthq*!PL2}Mq zxT&mp|0^89UbAe%UF4&O619)0U%e+p0$%u!ybongA5jfzKoDjpi`=?G$wWo-3?3|* z--4h2NNY_?g4zRW>0}3IY zCC)Y$8JJRfgG6q|Cxl9JdR)%cnR@Qj$tsetU{!V-UN6}!EY8)8hrGy6w_5BrpD{paU8AuO+hUPQ0~ zuBu#r5X;yXy^no+zHnG_gtj?Z;t2ZX(Xrg0wS1W$p&+=p+J7(zW#P+dywW`ne!FRT zftbJ9_t|%bB_oVGl3xl3Y)<>}Oo{bosOSFi-xJ`+%4s&dg-V0w9>xFoPL+OZt@U1q~)}58#51FuQ z$BlMz!vZ8*SG4+im)M^Zr4NC$WOqVp#mkil)^8Pi3}t2P-IFtMYuLidLu#KdF7(ov zyFE|Yq)g%W@kH=ZFif#Z;5NDm;~TLcRI&yf7y+7ec6g`VOeHx&jnHNoQFB=?pu>dR zJi{uP9B!0l1aq*8tHQWea#1C#!I%NK^D}l}ZgtyNuE`%o$x`%NU-Dr~ z_s88fD5S`XM_|aaGB?8;p$)9d4Z-5#gnpf}m+peart?*P(UKW0XRYvWC!EY&g|-{< zm87`Xl`9T4-0F1vaZxk%Ou=6i(`vTqZad$&8yiM)multAp}L({{2e#cGQ!3%L)YQd z#2{(1=#wbvHLatn0)KV_j~c%{Yb=q4Sq+pUQ#a0nz)+=%(!Wx%N5{tlx zD6%!(TzvLQmk+;Ach(HT%l#%i@V)W_(%Ol2)@C$>5&K;#hrBtd!&mke9O`R#=M2Q~ zHbZe68!pb|n6mZwdrRp$vExy^Iw2v*aiCaLTL<>CF>%G}bK-yvLg_}@j>aljF>MRe zttyvDQ>&INpv0zk>AUab+e48IR&}t3^d^$l7lw~l@505re#ba zz3Z~+hH+gv_+N!?ZH1rr#(pZ|pYC=_fkTxc9oUGwCdvdzp%rJYE->(2?u2CDqd*}J zsM*A+Mnz8a{W4$Fr1G*|oyUD3et7D?Ysu$v&&1lkC)hbiZn!5m^?DVshJNUO!OMF> zzWIg=K3Ae9Z0EfZDkW{Pv?NTCggr^c8xca=CcFkbqAS1HF5bAd3SQY(TxINxQqvjB^8;m z@#W_GrqBKHi+GPWYfXnytevJV9Zm4);ww*E=;M_wMy^D<>wRAI9hz^Xt`)&qPu`Xg z9C%-~B*3fq0AUlG=EEIaVRh|jn~|J=j;@`82X39HlfA9G(IiiJfnkC4u_hNdcz=(t zj7%wIPk@u9wVY@~kH#PL=HA+}7(xL3b^ZZMqP7y7RJpJ!6T3`_CpT3`(fbCNTOh&5 z4!OtTr-G<)aWI$s9j2Yu6nE6(^6&spRp& z(6zUbQnvTm=;^t!{@lTHDv$WkN2<|lxgZaq+{IA6a&o$6azX)x-W;dQqUvVRLL?_y z$%1gmT*6P$T9?S#Q*~dheo>tWH@$@d>&0I5wqch_7mvAJ;VDp301~GdStQMfZ&GL{ z7ul*e9yTA?-G2S_PJK41)J@I(V1zfGoc=3q+&RSxBEeD7h5RNbaEm+`993C7I4*B! zgj&Z);l*ZKXM+ZszVp%mPXhN8O?U-nm7RS{GxUx5;h?Z{IxZ))VImv;KYqXHKOO*vml1lje|ks7i77`nYAVW`b$&YTZ}=0oG4SV^ zcyUtC=QAegJnJercxgyv6nTk)*2-5g&MY(gLm{)rLUkFVf#)KAr)hz3bgOzj8Pe?I z*1NxoyXjOC%&WW2dAR-C;>-SEGZ=C&<)m49A@Mm zjQX6j|YpZl<@iA1HVlDGavupitEsDBny;_PD@wlh z248qVau=-u(aIY75<@}$)SrGY5A3(cOpZoF!0scT5voSQqor5VICd>Ndo(qz`%}|Q9vMqg z^^>nFam64-H3NkWeaEv~1Z|`Hz}>~OO5Qh+=GvN$Z(KIIr>J#j-M47&>mzLW*$(NQ zjEBZwI&*mYCK0!bJlSn=qJ%9C3!FwcpZ5?7DLveZWFKSmYY_##{0@h<3NcsLF;23y zn29CJDtvx4O5W1Cf6;L+&_BJc6y|4Zlp+zo>2bU*9$%-9uv|d4&e?H;C9-;o{BDK_ zA`vdYf0f*g0WX#KT{qZ~PX27F)i_1@JaQdS^!WSlELAO7GDx-*N96zY^%Y=IwBOq_ zBPop%YtY>tDkUN%AV{|$-6*kigBUO%je!axNH-`Up`>)TbVx{k!>+61`~Q7-aoxMK z_qoq`&hwn-%na{4>lPUsBx4q4F&(!Q_h9y@pyNiMYbDL@)X2od>qKeot)~sHxB+$< zH+F`V@VQn@!b!_jrl)2lAI!2Ve@%UyC35-DwsWhh?pCe@29>-9SLD1^i$ZNb94A6R z#bv0P_J!SriH!tJ9CNzCT_&qCh7M+)al1NUy&*!6c%Tg?FCQ+B)oBgg#8XgSt z&_l6Nmls(e<;|a0RFo{aVm|c7&sNFQVS6|14c%?ZH&xxB?e=n+t5uX5(~^F|zIabg zqObEiapS`tr_{?2EM8$LyM6+pM7y9Gy~#eqg((vpyw;?){=KeH_N|t_CDpeZTAL{`w^pC#8o$oI z%=1PNYTIkLN>xMdf>?UzO8}090U_}Yu{TBR)U;Y6ZChJutQ*{B&l{4)Hf9{)uw@3j zK_PxLlFd+z=^(~T#nBjgAv3*Yx|bS`zLuFb``+6%7P(3+D*{|U zuiyz8TPm?ovoxF8mR8KC7G#=tD9M{D+cj9g;|U&oyq@#EwgjUxL}<)7@D(mxY^Yr9 zJZ4IuWRCH53~?W9r3vS*LS>t)w=W$higk~5(gI)fJLuO;2Z%_gz7Vt#QnK z>pn~3y^nndvwsEtp@-G(oigWSQ91Ux=A~GJ}m`zcsHQ-3xz z$j~O5tg*1rWfOOmGwte4uel%?4S)VjqJ;0z`ERu>QG7*>76PT9T&XSG7!I@qa zofadyb0O0pXNIbq5l`_eoZ-CZlwl$+zfNp?9nPWR2ervB#x^&1go_H5SMY-2gSr&A z^uCTKevjQEX^rM^b7VG*zS5^bPojfo%MRP;4_A#Yx!@mtt2?vq8I{$QOLFY5ta+8t z2AR((io5R)@iL+XuApt^O}y!M z`{EpN7A##^#b4^)iro$N=s^?uSa()kNrJjoK)$6$C$nfjmqpR5lbR=GKjaCA5^(}o zeS+e(J-&=9FMe3u{ZQx4u*NL$U|pjzH^E~y%sk%i&0sO+4Jpm!M#=(n`DBkv@GJac ze8Ge+XY)8y!!LHIW{hfa&1coTRx6(1_7w8lwDn|b)vPTcYMWBc!RnSLHou%=HmNn| zDDkYm6f@DMv))*n55~p(gz%BKTA<JF&X+dRH}zM-t$iOPJfDRg z9S!~OSXV;Ft;*w`Ymqv}O1s z2^Pk_{wA?~w?9|x_@V(LHIZ<*^{rt6!49Z;(Udm$bhr!(^t$be&(gN%W$I)#=lMz0 zJoZW8SBSQd3e_nM#_zA6I2w(>7Q>_(p2aiZ9fvv{!EHnVL*53 ztqxu4JEHa@lZixEgNqF&b0*|wpN3yhsmNX}SBRXcq%RKXFwT8vA)&3EF#>rSH!D_<(j>joFr7*G3j&Qu!Nb^Uv)Q)L1>o?I!DWpz~%bHkqs6L?8?1}}2m zzx_TXs7X>Kum!G`fW{dsfsG?{RbDqMs6kK|(|u&jZ$ROdw%WBol1)1+hExKNd#)HX z;d|CVq4t#MIuX;8ijSddA>JiOhJ>w1x@)RE`PnNvuZf$f%S#4s^a9;nbR4i3j~VF z>v<8;Nmlb@RX}`BzLA%t#w0kvQRnd@=CU^acgsDzvY88B#nj<&C zwTYpCjWUr@vCW22W7utlftU4CxRz6Fm><~cxQ=#v{He*hfY9rFH9a#uwd)&xERPBN z-AL3f##NpD{P?MopXfrV@h!)M9PCgG!4$$~F&bKvTvuHsoEqa7J@L1}-uP<|*MG+4 zPt0=&T}v`T_hGIyv9r9KRysTbZ&X{ij4b*|*5wfak7vK^Z20wqaPSQ4vmffvbAu*H zO;vQ|tg# zhs~zg?p<-D>IBqP!_-#^)Z8SEW!yM~qGS^6Q}$RM*s94&&Hw0g*)!w1zXreBxcu`D zN8eZ642!V(N3GGerf442UYR5JOi7FqTI7@J7pLS$;T>;s!$tO2ZfLQVe-t2CQge-! zjC`iFSoZ8mIoF4@OIrp-TF0I71@`_klnN@8G?`xrdoS#G_+wNz@M7``sv3&57Uf<` z>Q%h^NK;vs9@DF=`EgQ1h;IHI{1U^?wZe$CTJLQ+bE$*|2F_Oj>qMPT-%16jjK-D< zDD?=slxGUpajJ(KG&-pAm1k@c8;!aMjhw#gxxIDw3@f2w#4g$q}E`9ppd0 z_yxea`=vG-%b%&uOp$5xp0Yqtn`PlQQm<=f_afKt*hXcJxUr<*-*K{zevJu_C$_NB z!xaeaDiGZ=2^9-@#~T{`GQQEWz%)zu7EWDe@`snsZ{4(2*w|i^E8t6ZYS^>gIC7WA zbM|nE=7^u7q%)4;kEaRjSrzHMaYg0 z55I3cJlBYKSkC-G%Xp)>00?X$1F3i{8x_i(c3dlK55eMN1p7hqFw z7?9r^;4#c{dy>y$#l}H%O!L-KQRvEq;O(bP8!0xn*#pI%4BXqKkuDaD4Jv}oPLCvF zI(zNjP0rg3v=+7NmFnK?pYJE5gu6sj%r35HNCio0{PZ!h{3Me9{6jxa^b58l(lE9o zqKn__*T!t7JS6scwW({K9Z z(RY$(8qZ#RUQUhs$SprizaW7^G+a|={wbxxi$X4<8=oSo>y8Gr8~Fi7*WM zW>%P|J3+=;O$U9Mi&>lFnDP5)LHLACsTG5idH;u;?}Z$ioSd!C4o&VfE_A&k&L9&n zUX8cV#4;7E_-Mr219!JbrZI7^;LBZgXXM5((RyVt5ww+LaISqL*>zy4Ww&}LuJf5t zSF^J&g^EFqUR;rm|C1Y8T6eNnZ!=1NJg^oD*66Phval1LC>(lPv~RD0SLgyKOcAM& zn;_pVkYlxwQz13rykQOFydk1Ipx3x@=>;o3R*)jA*{qmnEVs)})ir*x)$B*=i7kds zZ3(Yl_I(9h$G^Vi)QeU5*3$i;tZQeW{o?CKEqhzMRAywVl=d0d%|8o0iC4H=K*Gn} z6&}XPdq*WuayjpMZ5ywK>!x$RBm6NR)gWHW0L$A#5~ePt=2vn2O13&CN}OAi+Ia!j z4>~R028@3W&SX|($E$xq9%=Vj0MxXyeUf~SVBCm#F#6uG1UHF-_Q1NiR7Ji=)aQjZ zr{)K_QHfjn))wY3Qyx9fesO_K-nm~4KbyAoLvM&<9F{K0?Cdkz2@-1#rK_{>NW)82 z@`5z>biDekA=#FU=kTMhUOzaqH}nW(Y|_M$=6dDA&=|pUQMondED58bDfO&jv`I?yd?^ePxQkEs*zWB}cYfck zf=qsf_3f08NyV*&alEc=3bM( z0&iM!cHh03^60+pw=>cl$;AT$-|9l=I3L(@W%*=-20ExJuZ3TiOe|IC5mj}z8q(WOyE!By{Hos8i#Lw72S5Ed9;yD420vnzV!xfkb98kEd#3v+ zdZy0^E~u-g7v0KL(FO!xYs`epMMgz(SL=9ll}(c#k&HRi9J)_ctXA_+aw^4h@a9%- z+~}m@X_)iJrRVYeIYadvH~8RZO&OZ-*5O0xBOZFMCEmJ+O59aFrQcsAMa{H=><_+5 z?b}X0QI!g>bgcQ=D6*JS5T$2d*08(Y1mon}-X3ybH}pO}+>xgZHchO7ml?-k`Epn9 zW;#s-Q=NCH+M+yG#`zh^9kuyYyxnu}dsf5h82oso^kAbkx(Nm!MxPsUs1Z~VnZTNw zOM}0{{~$T;QhF_(t8^S=>R_{7SVeqUVCswTSd@Qa)YQ@J$MwDClCdZ#oW%FI+J}Ck zjHw+C7hy^ums{b_?^$VZ+7I7GM(oPAq3CGll3ilPn{i>@XGypzJ{^6T=~RGGxcq=* zmFVWbUd|yja0rw70Gvd5TPdwwYQL>?d(dX2_RP=wvx#?0X=Q0O8dkGQ9S1}<+xV@I zihlNfui0D3wyv_l-uuKw`~aR$Wcc7a<5W0vs-s;2-VPUs4SesZhRVc)TK{7?DuWlT zp@Gt|tFQAqjoKu8!)y-UzM$K?)5bd6??#m7vwi0c<~Mz^!`uTW?ww&5;u1#FDEPGr zk(&LL3Vj9q!|km;BZb1{TQK<-Fd>cH!_PA*9;0U#Q?*vS(2Y#yc$jasmu=3~;ljwB z2`gsr$yksS6E4EVW(UjH8)>x0w6t~yrM7xB==PLKCdMPze8w-&mzKBJ^sKI3&WypA z!WRvczUaF2mMtsIw|sFoZ`Cw6pMJMI3~%b0O>X|$>e2q{oV(QQgQ*9b#Y6V|)dw3& zW?JO^b`wL3*f#3B^8Bi5`&2LZis)3Fwju9rIe#M?nBM2< zP?#^Z-Kf6XqYxd z5(V0eo_-0j@b;4D^kQm}N2V&F{+<1Ebw@a) z{=UO248MMOvLusGtdsY+;~b^#SIHgysiHnZmtDC$L2rUSVpEK|u{Zc5)&Rt{srOGu7BN`Iv)tck# ze74pP7OhbgE9H@`1%oyIDYyDA^y%LXFODV7H%vdi>`VV({$gFdY)@_xHL)jrrHHYAu1ibrPZX(l=aO3LYgU zo^yfwgLeun!}I%eZQdC+B=i}0r0`m{QRiZMHQ=sjN70Jj8qfPgB>n?0q>9#SDIa6h zzG9g&`%ONy(ZzUoi1l=wt26 z`#bP-r6^+YX(ssOpkrA?qFd_i3@dr@DpZLN~~_3Ax*Z;g96WLJ_>OX3?f*+i*lJJH{r{ra_9UX1vP2pxeDe}u|B9X5?` z>;k`8V^qR!qedQamT_*)(H_nyUc=67{T=r4=Pop_2OX+^&YCJK88A=2gX%=T=jvD_ z+=h%Bf!vt(KM+-wc>5-r=S7vm1Uz%#Hq0 z;bk4|+2_xn56UrCp@^B8nYk9vyCY#p^}w{1vt;^#p1$;adLZqTyQ^zhHI02~#;(^~ zipRpf{Pb#BN7?bwe&}JkZ$7#o=Mv0#1Mc=_dJ|eO{PI!M7aPAXERgcjZuiPohHToc zq~WDuwM$cOh28m<2-`NsA}%N>z~(kC`5~#FThXw!uy8MfxmVvs`FUw+g11t5_fu94 zatF6P6B?1RxR~z`G16qCwDk0{A2OPLaqBYx`&gxFaXRT0XuacL7iDUbHr481PQjZV z3g1vtiX+sk^voZpFqi+rYOWe3?zW(*Fie~{vAk~wpXyeX*0NC_V6)@QE%+){sj^h^ z<0VuW(zxZx`y$(tM7)i>O|+MNFRzf|G^?U z-4Yu0!#@WuAI``H?-$nHuNsP0jx!jOrMY|8p!sL{QBY{qDV3>gW@h%#IsV9B zZd5$o{ARuQ`|7>7u{*{*RyWh64Eky3Z?98HmBeDs&(|n1Xyza3i1NPYe4-x5thP_l`=w?MUZVAG>WG zw)5U!Ppdc{*$qC{^CN^G36nVNyl91Yj1j7Fp8tH8-rV~-T;n6WQ`wc^IF6WQt^fGL zx0ecxq_E|K;&uhk)Q_8#sS2X+XWjztf+dM7m&o9IpL2pm+Lsowk`@;yoV{;_QQmCr3TG}lEGxdM3Oj4(B& z7txX_Db3MqZ7m9Pl3sI@R9R;BKFm&ey;E>@uxNrRF6l9S0}uT;`L%3HeFt}cc;WTJ zH)_Y<@^EhZFM1U?l}cgT&5qZg4TkDur5E3bD)W0uLru4}??|v_V>65Uqs*$}U8&Sq z=c_2Yh*evgv2#sJd;Ogw741VYCOQ81lHEt~s?Zdp!lAp>b;V7q4>}FI(7CYvw4SHG zH|SjLeSd8gmks0fYR{lHFD$z;D*z6!7x~_Hd6%5jPS0OM&BQWv^;6N$$vsP3mOZ=h z)i0Hy={a=o{4VA$5n8p)JOd4)A5!UPh7p_D@IE9``07gL+fKsAtJfCdog7~4MswzU zu%lLCabta=r%aJ@4*mgwTuR{iyI$-HBfG47wn3CB0UrwI#%iUo@bg;d!FeP@|0w&X^?#?}-y!|I>=FjH^>u9S9p zN8>$pZx$yq{QX4<>#z;|td^5Cd%kswsaNBb+^o6@*6g`w*0{tt*jqgEh^Z;EpiDg| z2$Z7tyI+OZU&thpj?dj(G#+#e_oEt(#>Xnw%~SUhrw?E-G+5j$DWQrZ3sO_iz8fYT z#i8Q;*2?_H5`loboAJ$`G}>Yq`|jxNSGtSoI9>Dt{AaJ+O;*c3^Oo*w<0daolV@w~ z@Rbgl>0=eP4G$HYlt^Y#H}d-xxC>b zg(j9u=^5-j=eR-go)2CW|BmbU(*{+jX%`msiw*tal$dtmp3%gVzbOUUGXcDa7eN95 zbG#FPQ_{`^=wl!baj^mdCof7YSOEnr#G&_`fC%Ey0w)0CAPzx>-w=oN1%Y5p#33OK zfD`nS0&oe{lrXW#(N2C&oUMxjf}pM_@D#y<-esd+2!am201h}P2G}DGrD!1)0MJhy z2tpjfl>mxPUX;{G05a%^L%jEpEb^?#y-fO6ecKr6A&VHx3zF_ zF|u-Xb>uU0wRHjWL4XV%_ZWI$9S=d%D)coA1A*$Q)gcN~=ouuFw#~g6^=m8k{&`X8 zrm91G`z4D_%mX@P=DYGZE}SY!kvnNDuI8?!Q4X}eM%k;SfbR@)?5<{xU`H502i{cz zT8Lz!9Nm0wEIt6`2n!QLzXM!4nJRLk-((}tlRTM(oaE^iFVROHg5iCUd?n?;^+lp>3rNva-^#ZWE2zcd_q2aq!)n$CB>Cpi?HC1uJN{Nd&`ibOy4 zX!N-rZ@}?F<~q47sh|Z-(CyT{`wZ9QIToME6kU;XXgd(^AZ^0P{^pD|O}ExD3tz4b zc0DY3F1!u5nm^yv8{vdsJj@lg1%1(UEq2bXr5u?&HUpO6jfHB$t(q#BF^ZM=**;woXeG=y zfqrDgqiPHQh1G#5MAvvp0V)^jvawSMxhRud|5UroRf zMR;@aq6AW5M%HuF?O!Dh*9O7~2<7u7)SXS|W*eayaf-k5zlzyM?J88vXDc`Hy7+l( z8|ocA1!&Knx6Y|}VIWYy=23FV+N$pR%jLF}rLW?O=dRUJ;99*Cc}aDYI3YsZ`TXK+ zWb&hTtnWA!jc<|9tjBJ$%2I05FxaYzcWNlv$oR*};@L|C2yfdyhwk>xMouVY-ufn{ znh!mWeT*&gi{3zjLOyfw7zO&(+zRChHgoeskz)gZp{irp;8X5_1<7qpOBb=lrD!PGWAGA;xZph%JZp6)oj#pv{=?h1 zvAhE3g~MrydEScgC8Cbm=YggV%f)|aqN1vB;tm7t*KsS$TWOzQf98cM& z4`2PlZq(3vuqpg!3*gF=P`7O!Y%GQr8XX22nhGMVr)wUOR3EiEJgDZY_9>pvT}+~? z8(U)$Z{xDcXL|mHR%Uy(xCOBJ)~7TCPR~@$y#my5+69c~zGa96rx9ObR+AJZ@;1PJ zYSVJQ-Opch%f9B_$2VGuuHvR$=4PFr0(PwZaV-PEyZ`_{`yKkUMGbA&Xa=7wbA@QCYc zoJNd(!J|hSZGjNP zJ6Ah^p9s5PuC+P77ky>m1i>OZ;4WLp!UW>j^G`@rQ$oj(MmuTxz)90r-xAfp5lDd+ zY!4`J5AahC42&cAW=4|;bP+j0@S#1xfgvyfR@norl>fITSRI8;O~e2xpZr{aexs7W zOAY`RtmC0c+euvijRAS$;otz!VDJlq6X5_gKOVvq4GkTQ8tqc`0wM?$q6YY95J&+@ zPe|Y{QsCq)>C)dK9wFZmA}AabJ$VlbI6@=J_-#V~5;Fs&V0$n?KsnZ}xrim#i;l8r zHbz*KpIGn;A;N^b@WD`@qwwFb)SaNPHiZ!eV2Bey%&fkTj0J^`?~w2RwXB3J(b+(C zFW?-Li;FY&-{ZM)37HfWBDKJD7l59a9qsS@n<4~217~Q?P;3+;J%W;K!09=|7e$6^ z#|AKfN6yfh2P#G+f)`w%EM)y+onePgX7ZAuoTX;$TR)EIMc3~^jtGe-QE^~+h#@rx z*ntZtngpP)GXN0%LuGM=sO;iMs=X_~14CsAh5u%$$`#75s|3L`#5{k%(kO~oi5WfU=?NuDo@xbASOQW= zL{=&I%o7SP@E37W05}7#dIIDUs2WD$Kl;zH^dRd4fCwW)?vFE& zSQuK~d+tyXpj`aoLu-}(toZLJFF;Xh%l|f{Kk-ElL)oD4pAmy2G0^&Zqi|xzcxu~| zSX)Mn3x)qnAkPO9SU?Ccfy-V1Ddj#NG9#xEta=D#gzx%^CnnI^8(@T;CZN{IpV~l3 z7yq(Y^M<5<+(Am8Mv&SEl0N!F!~vas02u5v>woB*DfAxVHT0)erI% z^vjmSAE2Ua-$FV$ji8i2UQP@no zbkalB1E4*N8XOM?_`#Gk=ol#XY106z|vcUAg+t^bx5cZ6cr#kRFP-{J;|r zZ+rat%@aCLz<78IsgExUP@U+L z6QN9y2(AZ1k+*9gSxR!iWkeL9UkKFw9+x83kqE|zKvaA!BsEkXphO0|_3UxMNx=WG zxk4fK#oI`BOenxj6h4NOLn7FELU^fzB(R48ToM5|$SFh-|LjHp+UYwp&;|CXovq;x zLgxRvR|BIYI6pIq0Zlea9*N-HFvvfF9>VbSjSgN3XHH}!D3iY9DKP?hmrt~z)qgaOt>06hN^4o?WS zrY8h(5M~WvgD|yUXRXYQA-A_rmI|syQTQhT$dhG6b*Gx0XfT1BkpMNNS~D^V6e2Cb zi&2oXrC&t1D1cW2Mfi=sFD4Mur+PTY@0mO4;il$De?T;J&V=e~C`8JEW*LyboL|I{ zXn+-lBB1c!p&)j7N(-bkbdv)QyqO8@R;Uvb6e7(*`%FmR^lx@sCbXraSSbA038GDR zS%B-007ek@5FlW7>RCf-DV}Ozpy8x+r8o`#w zQ1rpSi1beYPS|O}f29$v*vuL!{q6}sK}kG_ltv*^0ojFf{}9iBYTBqSjH06O-zh+J zVVZkLCs)h?e2~^3nu6yd$Q6P@q&YbI6dHup-)sUMXs6eUgIWg;`YK{kArbV6gQ)a2 ze+j4f1GJQdNxM~;&}{v~CW?pHkN;+$1)DyLY=AjDd=`-_zW9r?{dvccIC))j}pSaJyfJJEMHq}DH%Zvw<}cl?Vr z@;3{~1}PIER;tr)77^%~2nY~$CL^_w2$r9)s-1tch(Wq%kjH;mx1T|*FxS6WJf_f| ziAamp3~Sp-TKYbn5?($rF>(9LL@fzmlR&Xh_-8Rd_fr188w%Z|I^DRk+<$A~|KEM| ze(5c;jJQ9MAbo&gNzjFc>hG=e-zo) z2ZUJxv`CZDt`6K26I2-^5j>v?nW)2mJ0L%4#Z(9r=G3RuXa8&R-`xq(g>(Fn8pLT( z7fv=pjx{j^iOBb$WE$jb?+=jxti1>A-MMK{gE&q7A5O~rkxm%WAtxw{(}-;KxB*Dw zt8}Qw0qD$6Hzp@_x}J8xDUVp delta 108346 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
&lQh#v+P$CJq=(% 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 diff --git a/TemplateConfg/v2ray/client/06_outbounds/vless_http2_tls_server_config.json b/TemplateConfg/v2ray/client/06_outbounds/vless_http2_tls_server_config.json new file mode 100644 index 0000000..c7c2c22 --- /dev/null +++ b/TemplateConfg/v2ray/client/06_outbounds/vless_http2_tls_server_config.json @@ -0,0 +1,32 @@ +{ + "outbounds": [ + { + "protocol": "vless", + "settings": { + "vnext": [ + { + "address": null, + "port": 443, + "users": [ + { + "id": null, + "encryption": "none", + "level": 0 + } + ] + } + ] + }, + "streamSettings": { + "network": "h2", + "security": "tls", + "httpSettings": { + "path": null, + "host": [ + "" + ] + } + } + } + ] +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/client/06_outbounds/tcp_vless_tls_caddy_cilent_config.json b/TemplateConfg/v2ray/client/06_outbounds/vless_tcp_tls_caddy_cilent_config.json similarity index 100% rename from TemplateConfg/v2ray/client/06_outbounds/tcp_vless_tls_caddy_cilent_config.json rename to TemplateConfg/v2ray/client/06_outbounds/vless_tcp_tls_caddy_cilent_config.json diff --git a/TemplateConfg/v2ray/client/06_outbounds/vless_tcp_xtls_client_config.json b/TemplateConfg/v2ray/client/06_outbounds/vless_tcp_xtls_client_config.json new file mode 100644 index 0000000..c5d9008 --- /dev/null +++ b/TemplateConfg/v2ray/client/06_outbounds/vless_tcp_xtls_client_config.json @@ -0,0 +1,29 @@ +{ + "outbounds": [ + { + "protocol": "vless", + "settings": { + "vnext": [ + { + "address": null, + "port": 443, + "users": [ + { + "id": null, + "flow": "xtls-rprx-origin", + "encryption": "none" + } + ] + } + ] + }, + "streamSettings": { + "network": "tcp", + "security": "xtls", + "xtlsSettings": { + "serverName": "" + } + } + } + ] +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/client/06_outbounds/vless_ws_tls_client_config.json b/TemplateConfg/v2ray/client/06_outbounds/vless_ws_tls_client_config.json new file mode 100644 index 0000000..8a10182 --- /dev/null +++ b/TemplateConfg/v2ray/client/06_outbounds/vless_ws_tls_client_config.json @@ -0,0 +1,32 @@ +{ + "outbounds": [ + { + "protocol": "vless", + "settings": { + "vnext": [ + { + "address": null, + "port": 443, + "users": [ + { + "id": null, + "encryption": "none", + "level": 0 + } + ] + } + ] + }, + "streamSettings": { + "network": "ws", + "security": "tls", + "tlsSettings": { + "serverName": "" + }, + "wsSettings": { + "path": "" + } + } + } + ] +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/server/05_inbounds/vless_http2_tls_server_config.json b/TemplateConfg/v2ray/server/05_inbounds/vless_http2_tls_server_config.json new file mode 100644 index 0000000..96bc51f --- /dev/null +++ b/TemplateConfg/v2ray/server/05_inbounds/vless_http2_tls_server_config.json @@ -0,0 +1,27 @@ +{ + "inbounds": [ + { + "port": 10000, + "listen": "127.0.0.1", + "protocol": "vless", + "settings": { + "clients": [ + { + "id": "" + } + ], + "decryption": "none" + }, + "streamSettings": { + "network": "h2", + "security": "none", + "httpSettings": { + "path": null, + "host": [ + "" + ] + } + } + } + ] +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/server/05_inbounds/tcp_vless_tls_caddy_server_config.json b/TemplateConfg/v2ray/server/05_inbounds/vless_tcp_tls_server_config.json similarity index 100% rename from TemplateConfg/v2ray/server/05_inbounds/tcp_vless_tls_caddy_server_config.json rename to TemplateConfg/v2ray/server/05_inbounds/vless_tcp_tls_server_config.json diff --git a/TemplateConfg/v2ray/server/05_inbounds/vless_tcp_xtls_server_config.json b/TemplateConfg/v2ray/server/05_inbounds/vless_tcp_xtls_server_config.json new file mode 100644 index 0000000..3493a91 --- /dev/null +++ b/TemplateConfg/v2ray/server/05_inbounds/vless_tcp_xtls_server_config.json @@ -0,0 +1,37 @@ +{ + "inbounds": [ + { + "port": 443, + "protocol": "vless", + "settings": { + "clients": [ + { + "id": "", + "flow": "xtls-rprx-origin" + } + ], + "decryption": "none", + "fallbacks": [ + { + "dest": 8800 + } + ] + }, + "streamSettings": { + "network": "tcp", + "security": "xtls", + "xtlsSettings": { + "alpn": [ + "http/1.1" + ], + "certificates": [ + { + "certificateFile": "/usr/local/etc/v2ray/ssl/v2ray_ssl.crt", + "keyFile": "/usr/local/etc/v2ray/ssl/v2ray_ssl.key" + } + ] + } + } + } + ] +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/server/05_inbounds/vless_ws_tls_server_config.json b/TemplateConfg/v2ray/server/05_inbounds/vless_ws_tls_server_config.json new file mode 100644 index 0000000..fc398df --- /dev/null +++ b/TemplateConfg/v2ray/server/05_inbounds/vless_ws_tls_server_config.json @@ -0,0 +1,24 @@ +{ + "inbounds": [ + { + "port": 10000, + "listen": "127.0.0.1", + "protocol": "vless", + "settings": { + "clients": [ + { + "id": "" + } + ], + "decryption": "none" + }, + "streamSettings": { + "network": "ws", + "security": "none", + "wsSettings": { + "path": "" + } + } + } + ] +} \ No newline at end of file