From cf6c20b12ebdf93453f0111e1684e44e809abf67 Mon Sep 17 00:00:00 2001 From: 2dust Date: Tue, 30 Jul 2019 11:53:58 +0800 Subject: [PATCH] up all --- LICENSE | 811 +- README.md | 11 +- v2rayN/v2rayN.sln | 30 + v2rayN/v2rayN.v11.suo | Bin 0 -> 155136 bytes .../v2rayN/Forms/AddServer2Form.Designer.cs | 140 + v2rayN/v2rayN/Forms/AddServer2Form.cs | 75 + v2rayN/v2rayN/Forms/AddServer2Form.resx | 390 + .../v2rayN/Forms/AddServer2Form.zh-Hans.resx | 141 + .../v2rayN/Forms/AddServer3Form.Designer.cs | 231 + v2rayN/v2rayN/Forms/AddServer3Form.cs | 143 + v2rayN/v2rayN/Forms/AddServer3Form.resx | 606 ++ .../v2rayN/Forms/AddServer3Form.zh-Hans.resx | 159 + .../v2rayN/Forms/AddServer4Form.Designer.cs | 188 + v2rayN/v2rayN/Forms/AddServer4Form.cs | 122 + v2rayN/v2rayN/Forms/AddServer4Form.resx | 483 + .../v2rayN/Forms/AddServer4Form.zh-Hans.resx | 166 + v2rayN/v2rayN/Forms/AddServerForm.Designer.cs | 516 ++ v2rayN/v2rayN/Forms/AddServerForm.cs | 293 + v2rayN/v2rayN/Forms/AddServerForm.resx | 1392 +++ .../v2rayN/Forms/AddServerForm.zh-Hans.resx | 301 + v2rayN/v2rayN/Forms/BaseForm.Designer.cs | 51 + v2rayN/v2rayN/Forms/BaseForm.cs | 39 + v2rayN/v2rayN/Forms/BaseForm.resx | 1253 +++ v2rayN/v2rayN/Forms/MainForm.Designer.cs | 749 ++ v2rayN/v2rayN/Forms/MainForm.cs | 1370 +++ v2rayN/v2rayN/Forms/MainForm.resx | 1217 +++ v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx | 453 + .../Forms/OptionSettingForm.Designer.cs | 623 ++ v2rayN/v2rayN/Forms/OptionSettingForm.cs | 361 + v2rayN/v2rayN/Forms/OptionSettingForm.resx | 2247 +++++ .../Forms/OptionSettingForm.zh-Hans.resx | 291 + v2rayN/v2rayN/Forms/QRCodeControl.Designer.cs | 78 + v2rayN/v2rayN/Forms/QRCodeControl.cs | 47 + v2rayN/v2rayN/Forms/QRCodeControl.resx | 222 + .../v2rayN/Forms/QRCodeControl.zh-Hans.resx | 123 + v2rayN/v2rayN/Forms/QRCodeForm.Designer.cs | 94 + v2rayN/v2rayN/Forms/QRCodeForm.cs | 51 + v2rayN/v2rayN/Forms/QRCodeForm.resx | 120 + .../Forms/SubSettingControl.Designer.cs | 113 + v2rayN/v2rayN/Forms/SubSettingControl.cs | 62 + v2rayN/v2rayN/Forms/SubSettingControl.resx | 330 + .../Forms/SubSettingControl.zh-Hans.resx | 145 + .../v2rayN/Forms/SubSettingForm.Designer.cs | 97 + v2rayN/v2rayN/Forms/SubSettingForm.cs | 109 + v2rayN/v2rayN/Forms/SubSettingForm.resx | 273 + .../v2rayN/Forms/SubSettingForm.zh-Hans.resx | 149 + v2rayN/v2rayN/Global.cs | 170 + v2rayN/v2rayN/Handler/ConfigHandler.cs | 784 ++ v2rayN/v2rayN/Handler/ProxySetting.cs | 190 + v2rayN/v2rayN/Handler/QRCodeHelper.cs | 41 + v2rayN/v2rayN/Handler/RoutingRuleHandler.cs | 53 + v2rayN/v2rayN/Handler/V2rayConfigHandler.cs | 1264 +++ v2rayN/v2rayN/Handler/V2rayHandler.cs | 165 + v2rayN/v2rayN/Handler/V2rayUpdateHandle.cs | 214 + .../HttpProxyHandler/HttpProxyHandle.cs | 177 + .../v2rayN/HttpProxyHandler/HttpWebServer.cs | 98 + .../HttpProxyHandler/PACFileWatcherHandle.cs | 45 + .../v2rayN/HttpProxyHandler/PACListHandle.cs | 92 + .../HttpProxyHandler/PACServerHandle.cs | 133 + .../v2rayN/HttpProxyHandler/PrivoxyHandler.cs | 215 + .../v2rayN/HttpProxyHandler/SysProxyHandle.cs | 182 + v2rayN/v2rayN/HttpProxyHandler/WebClientEx.cs | 22 + v2rayN/v2rayN/Mode/Config.cs | 493 + v2rayN/v2rayN/Mode/EConfigType.cs | 11 + v2rayN/v2rayN/Mode/EMove.cs | 11 + v2rayN/v2rayN/Mode/SysproxyConfig.cs | 21 + v2rayN/v2rayN/Mode/V2rayConfig.cs | 455 + v2rayN/v2rayN/Mode/V2rayTcpRequest.cs | 25 + v2rayN/v2rayN/Mode/VmessQRCode.cs | 53 + v2rayN/v2rayN/Newtonsoft.Json.dll | Bin 0 -> 524800 bytes v2rayN/v2rayN/Program.cs | 103 + v2rayN/v2rayN/Properties/AssemblyInfo.cs | 36 + .../v2rayN/Properties/Resources.Designer.cs | 229 + v2rayN/v2rayN/Properties/Resources.resx | 169 + v2rayN/v2rayN/Properties/Settings.Designer.cs | 26 + v2rayN/v2rayN/Properties/Settings.settings | 7 + v2rayN/v2rayN/Resources/about.png | Bin 0 -> 1326 bytes v2rayN/v2rayN/Resources/abp.js.gz | Bin 0 -> 4467 bytes v2rayN/v2rayN/Resources/checkupdate.png | Bin 0 -> 478 bytes v2rayN/v2rayN/Resources/help.png | Bin 0 -> 1310 bytes v2rayN/v2rayN/Resources/mgwz.dll.gz | Bin 0 -> 47355 bytes v2rayN/v2rayN/Resources/minimize.png | Bin 0 -> 141 bytes v2rayN/v2rayN/Resources/option.png | Bin 0 -> 747 bytes v2rayN/v2rayN/Resources/pac.txt | 8046 +++++++++++++++++ v2rayN/v2rayN/Resources/pac.txt.gz | Bin 0 -> 46619 bytes v2rayN/v2rayN/Resources/privoxy.exe.gz | Bin 0 -> 156872 bytes v2rayN/v2rayN/Resources/privoxy_conf.txt | 7 + v2rayN/v2rayN/Resources/promotion.png | Bin 0 -> 680 bytes v2rayN/v2rayN/Resources/restart.png | Bin 0 -> 485 bytes v2rayN/v2rayN/Resources/server.png | Bin 0 -> 672 bytes v2rayN/v2rayN/Resources/sub.png | Bin 0 -> 449 bytes v2rayN/v2rayN/Resources/sysproxy.exe.gz | Bin 0 -> 56029 bytes v2rayN/v2rayN/Resources/sysproxy64.exe.gz | Bin 0 -> 61784 bytes v2rayN/v2rayN/Resx/ResUI.Designer.cs | 667 ++ v2rayN/v2rayN/Resx/ResUI.resx | 322 + v2rayN/v2rayN/Resx/ResUI.zh-Hans.Designer.cs | 0 v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx | 322 + v2rayN/v2rayN/Resx/Resx.zip | Bin 0 -> 7367 bytes v2rayN/v2rayN/Sample/BlankPac.txt | 5 + v2rayN/v2rayN/Sample/SampleClientConfig.txt | 71 + v2rayN/v2rayN/Sample/SampleHttprequest.txt | 1 + v2rayN/v2rayN/Sample/SampleHttpresponse.txt | 1 + v2rayN/v2rayN/Sample/SampleServerConfig.txt | 34 + v2rayN/v2rayN/StringEx.cs | 47 + v2rayN/v2rayN/Tool/CDateTime.cs | 156 + v2rayN/v2rayN/Tool/FileManager.cs | 65 + v2rayN/v2rayN/Tool/Job.cs | 179 + v2rayN/v2rayN/Tool/UI.cs | 38 + v2rayN/v2rayN/Tool/UIRes.cs | 26 + v2rayN/v2rayN/Tool/Utils.cs | 820 ++ v2rayN/v2rayN/app.config | 7 + v2rayN/v2rayN/protos/Command.cs | 560 ++ v2rayN/v2rayN/protos/CommandGrpc.cs | 97 + v2rayN/v2rayN/v2rayN.csproj | 393 + v2rayN/v2rayN/v2rayN.csproj.user | 17 + v2rayN/v2rayN/v2rayN.ico | Bin 0 -> 67646 bytes v2rayN/v2rayN/zxing.dll | Bin 0 -> 450560 bytes v2rayN/v2rayN/zxing.presentation.dll | Bin 0 -> 21504 bytes 118 files changed, 34060 insertions(+), 170 deletions(-) create mode 100644 v2rayN/v2rayN.sln create mode 100644 v2rayN/v2rayN.v11.suo create mode 100644 v2rayN/v2rayN/Forms/AddServer2Form.Designer.cs create mode 100644 v2rayN/v2rayN/Forms/AddServer2Form.cs create mode 100644 v2rayN/v2rayN/Forms/AddServer2Form.resx create mode 100644 v2rayN/v2rayN/Forms/AddServer2Form.zh-Hans.resx create mode 100644 v2rayN/v2rayN/Forms/AddServer3Form.Designer.cs create mode 100644 v2rayN/v2rayN/Forms/AddServer3Form.cs create mode 100644 v2rayN/v2rayN/Forms/AddServer3Form.resx create mode 100644 v2rayN/v2rayN/Forms/AddServer3Form.zh-Hans.resx create mode 100644 v2rayN/v2rayN/Forms/AddServer4Form.Designer.cs create mode 100644 v2rayN/v2rayN/Forms/AddServer4Form.cs create mode 100644 v2rayN/v2rayN/Forms/AddServer4Form.resx create mode 100644 v2rayN/v2rayN/Forms/AddServer4Form.zh-Hans.resx create mode 100644 v2rayN/v2rayN/Forms/AddServerForm.Designer.cs create mode 100644 v2rayN/v2rayN/Forms/AddServerForm.cs create mode 100644 v2rayN/v2rayN/Forms/AddServerForm.resx create mode 100644 v2rayN/v2rayN/Forms/AddServerForm.zh-Hans.resx create mode 100644 v2rayN/v2rayN/Forms/BaseForm.Designer.cs create mode 100644 v2rayN/v2rayN/Forms/BaseForm.cs create mode 100644 v2rayN/v2rayN/Forms/BaseForm.resx create mode 100644 v2rayN/v2rayN/Forms/MainForm.Designer.cs create mode 100644 v2rayN/v2rayN/Forms/MainForm.cs create mode 100644 v2rayN/v2rayN/Forms/MainForm.resx create mode 100644 v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx create mode 100644 v2rayN/v2rayN/Forms/OptionSettingForm.Designer.cs create mode 100644 v2rayN/v2rayN/Forms/OptionSettingForm.cs create mode 100644 v2rayN/v2rayN/Forms/OptionSettingForm.resx create mode 100644 v2rayN/v2rayN/Forms/OptionSettingForm.zh-Hans.resx create mode 100644 v2rayN/v2rayN/Forms/QRCodeControl.Designer.cs create mode 100644 v2rayN/v2rayN/Forms/QRCodeControl.cs create mode 100644 v2rayN/v2rayN/Forms/QRCodeControl.resx create mode 100644 v2rayN/v2rayN/Forms/QRCodeControl.zh-Hans.resx create mode 100644 v2rayN/v2rayN/Forms/QRCodeForm.Designer.cs create mode 100644 v2rayN/v2rayN/Forms/QRCodeForm.cs create mode 100644 v2rayN/v2rayN/Forms/QRCodeForm.resx create mode 100644 v2rayN/v2rayN/Forms/SubSettingControl.Designer.cs create mode 100644 v2rayN/v2rayN/Forms/SubSettingControl.cs create mode 100644 v2rayN/v2rayN/Forms/SubSettingControl.resx create mode 100644 v2rayN/v2rayN/Forms/SubSettingControl.zh-Hans.resx create mode 100644 v2rayN/v2rayN/Forms/SubSettingForm.Designer.cs create mode 100644 v2rayN/v2rayN/Forms/SubSettingForm.cs create mode 100644 v2rayN/v2rayN/Forms/SubSettingForm.resx create mode 100644 v2rayN/v2rayN/Forms/SubSettingForm.zh-Hans.resx create mode 100644 v2rayN/v2rayN/Global.cs create mode 100644 v2rayN/v2rayN/Handler/ConfigHandler.cs create mode 100644 v2rayN/v2rayN/Handler/ProxySetting.cs create mode 100644 v2rayN/v2rayN/Handler/QRCodeHelper.cs create mode 100644 v2rayN/v2rayN/Handler/RoutingRuleHandler.cs create mode 100644 v2rayN/v2rayN/Handler/V2rayConfigHandler.cs create mode 100644 v2rayN/v2rayN/Handler/V2rayHandler.cs create mode 100644 v2rayN/v2rayN/Handler/V2rayUpdateHandle.cs create mode 100644 v2rayN/v2rayN/HttpProxyHandler/HttpProxyHandle.cs create mode 100644 v2rayN/v2rayN/HttpProxyHandler/HttpWebServer.cs create mode 100644 v2rayN/v2rayN/HttpProxyHandler/PACFileWatcherHandle.cs create mode 100644 v2rayN/v2rayN/HttpProxyHandler/PACListHandle.cs create mode 100644 v2rayN/v2rayN/HttpProxyHandler/PACServerHandle.cs create mode 100644 v2rayN/v2rayN/HttpProxyHandler/PrivoxyHandler.cs create mode 100644 v2rayN/v2rayN/HttpProxyHandler/SysProxyHandle.cs create mode 100644 v2rayN/v2rayN/HttpProxyHandler/WebClientEx.cs create mode 100644 v2rayN/v2rayN/Mode/Config.cs create mode 100644 v2rayN/v2rayN/Mode/EConfigType.cs create mode 100644 v2rayN/v2rayN/Mode/EMove.cs create mode 100644 v2rayN/v2rayN/Mode/SysproxyConfig.cs create mode 100644 v2rayN/v2rayN/Mode/V2rayConfig.cs create mode 100644 v2rayN/v2rayN/Mode/V2rayTcpRequest.cs create mode 100644 v2rayN/v2rayN/Mode/VmessQRCode.cs create mode 100644 v2rayN/v2rayN/Newtonsoft.Json.dll create mode 100644 v2rayN/v2rayN/Program.cs create mode 100644 v2rayN/v2rayN/Properties/AssemblyInfo.cs create mode 100644 v2rayN/v2rayN/Properties/Resources.Designer.cs create mode 100644 v2rayN/v2rayN/Properties/Resources.resx create mode 100644 v2rayN/v2rayN/Properties/Settings.Designer.cs create mode 100644 v2rayN/v2rayN/Properties/Settings.settings create mode 100644 v2rayN/v2rayN/Resources/about.png create mode 100644 v2rayN/v2rayN/Resources/abp.js.gz create mode 100644 v2rayN/v2rayN/Resources/checkupdate.png create mode 100644 v2rayN/v2rayN/Resources/help.png create mode 100644 v2rayN/v2rayN/Resources/mgwz.dll.gz create mode 100644 v2rayN/v2rayN/Resources/minimize.png create mode 100644 v2rayN/v2rayN/Resources/option.png create mode 100644 v2rayN/v2rayN/Resources/pac.txt create mode 100644 v2rayN/v2rayN/Resources/pac.txt.gz create mode 100644 v2rayN/v2rayN/Resources/privoxy.exe.gz create mode 100644 v2rayN/v2rayN/Resources/privoxy_conf.txt create mode 100644 v2rayN/v2rayN/Resources/promotion.png create mode 100644 v2rayN/v2rayN/Resources/restart.png create mode 100644 v2rayN/v2rayN/Resources/server.png create mode 100644 v2rayN/v2rayN/Resources/sub.png create mode 100644 v2rayN/v2rayN/Resources/sysproxy.exe.gz create mode 100644 v2rayN/v2rayN/Resources/sysproxy64.exe.gz create mode 100644 v2rayN/v2rayN/Resx/ResUI.Designer.cs create mode 100644 v2rayN/v2rayN/Resx/ResUI.resx create mode 100644 v2rayN/v2rayN/Resx/ResUI.zh-Hans.Designer.cs create mode 100644 v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx create mode 100644 v2rayN/v2rayN/Resx/Resx.zip create mode 100644 v2rayN/v2rayN/Sample/BlankPac.txt create mode 100644 v2rayN/v2rayN/Sample/SampleClientConfig.txt create mode 100644 v2rayN/v2rayN/Sample/SampleHttprequest.txt create mode 100644 v2rayN/v2rayN/Sample/SampleHttpresponse.txt create mode 100644 v2rayN/v2rayN/Sample/SampleServerConfig.txt create mode 100644 v2rayN/v2rayN/StringEx.cs create mode 100644 v2rayN/v2rayN/Tool/CDateTime.cs create mode 100644 v2rayN/v2rayN/Tool/FileManager.cs create mode 100644 v2rayN/v2rayN/Tool/Job.cs create mode 100644 v2rayN/v2rayN/Tool/UI.cs create mode 100644 v2rayN/v2rayN/Tool/UIRes.cs create mode 100644 v2rayN/v2rayN/Tool/Utils.cs create mode 100644 v2rayN/v2rayN/app.config create mode 100644 v2rayN/v2rayN/protos/Command.cs create mode 100644 v2rayN/v2rayN/protos/CommandGrpc.cs create mode 100644 v2rayN/v2rayN/v2rayN.csproj create mode 100644 v2rayN/v2rayN/v2rayN.csproj.user create mode 100644 v2rayN/v2rayN/v2rayN.ico create mode 100644 v2rayN/v2rayN/zxing.dll create mode 100644 v2rayN/v2rayN/zxing.presentation.dll diff --git a/LICENSE b/LICENSE index 261eeb9e..94a9ed02 100644 --- a/LICENSE +++ b/LICENSE @@ -1,201 +1,674 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. - 1. Definitions. + Preamble - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. + The GNU General Public License is a free, copyleft license for +software and other kinds of works. - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. + The precise terms and conditions for copying, distribution and +modification follow. - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. + TERMS AND CONDITIONS - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. + 0. Definitions. - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: + "This License" refers to version 3 of the GNU General Public License. - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. + A "covered work" means either the unmodified Program or a work based +on the Program. - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. + 1. Source Code. - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. - END OF TERMS AND CONDITIONS + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. - APPENDIX: How to apply the Apache License to your work. + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. - Copyright [yyyy] [name of copyright owner] + The Corresponding Source for a work in source code form is that +same work. - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at + 2. Basic Permissions. - http://www.apache.org/licenses/LICENSE-2.0 + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/README.md b/README.md index 55bfdec3..bb10c507 100644 --- a/README.md +++ b/README.md @@ -1 +1,10 @@ -# v2rayN \ No newline at end of file +# v2rayN + +### How to use +- Download exe from release download +- Also need to download v2ray core in the same folder +- Run v2rayN.exe + +### Requirements +- Microsoft [.NET Framework 4.6](https://docs.microsoft.com/zh-cn/dotnet/framework/install/guide-for-developers) or higher +- Project V core [https://github.com/v2ray/v2ray-core/releases](https://github.com/v2ray/v2ray-core/releases) diff --git a/v2rayN/v2rayN.sln b/v2rayN/v2rayN.sln new file mode 100644 index 00000000..02f175e5 --- /dev/null +++ b/v2rayN/v2rayN.sln @@ -0,0 +1,30 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.28010.2050 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "v2rayN", "v2rayN\v2rayN.csproj", "{0A9785E6-D256-4B73-9757-4EF59955FD1E}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {0A9785E6-D256-4B73-9757-4EF59955FD1E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0A9785E6-D256-4B73-9757-4EF59955FD1E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0A9785E6-D256-4B73-9757-4EF59955FD1E}.Debug|x86.ActiveCfg = Debug|Any CPU + {0A9785E6-D256-4B73-9757-4EF59955FD1E}.Debug|x86.Build.0 = Debug|Any CPU + {0A9785E6-D256-4B73-9757-4EF59955FD1E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0A9785E6-D256-4B73-9757-4EF59955FD1E}.Release|Any CPU.Build.0 = Release|Any CPU + {0A9785E6-D256-4B73-9757-4EF59955FD1E}.Release|x86.ActiveCfg = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {56B88873-C9CC-4069-A1E5-DABD6C6E865E} + EndGlobalSection +EndGlobal diff --git a/v2rayN/v2rayN.v11.suo b/v2rayN/v2rayN.v11.suo new file mode 100644 index 0000000000000000000000000000000000000000..91d8fcf08178c6bc0aac54691108bcd255981524 GIT binary patch literal 155136 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 G?f(HalW~Cn literal 0 HcmV?d00001 diff --git a/v2rayN/v2rayN/Forms/AddServer2Form.Designer.cs b/v2rayN/v2rayN/Forms/AddServer2Form.Designer.cs new file mode 100644 index 00000000..0e407a43 --- /dev/null +++ b/v2rayN/v2rayN/Forms/AddServer2Form.Designer.cs @@ -0,0 +1,140 @@ +namespace v2rayN.Forms +{ + partial class AddServer2Form + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AddServer2Form)); + this.btnClose = new System.Windows.Forms.Button(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.txtAddress = new System.Windows.Forms.TextBox(); + this.label13 = new System.Windows.Forms.Label(); + this.txtRemarks = new System.Windows.Forms.TextBox(); + this.label6 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.panel2 = new System.Windows.Forms.Panel(); + this.btnOK = new System.Windows.Forms.Button(); + this.panel1 = new System.Windows.Forms.Panel(); + this.groupBox1.SuspendLayout(); + this.panel2.SuspendLayout(); + this.SuspendLayout(); + // + // btnClose + // + resources.ApplyResources(this.btnClose, "btnClose"); + this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.btnClose.Name = "btnClose"; + this.btnClose.UseVisualStyleBackColor = true; + this.btnClose.Click += new System.EventHandler(this.btnClose_Click); + // + // groupBox1 + // + resources.ApplyResources(this.groupBox1, "groupBox1"); + this.groupBox1.Controls.Add(this.txtAddress); + this.groupBox1.Controls.Add(this.label13); + this.groupBox1.Controls.Add(this.txtRemarks); + this.groupBox1.Controls.Add(this.label6); + this.groupBox1.Controls.Add(this.label1); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.TabStop = false; + // + // txtAddress + // + resources.ApplyResources(this.txtAddress, "txtAddress"); + this.txtAddress.Name = "txtAddress"; + // + // label13 + // + resources.ApplyResources(this.label13, "label13"); + this.label13.Name = "label13"; + // + // txtRemarks + // + resources.ApplyResources(this.txtRemarks, "txtRemarks"); + this.txtRemarks.Name = "txtRemarks"; + // + // label6 + // + resources.ApplyResources(this.label6, "label6"); + this.label6.Name = "label6"; + // + // label1 + // + resources.ApplyResources(this.label1, "label1"); + this.label1.Name = "label1"; + // + // panel2 + // + resources.ApplyResources(this.panel2, "panel2"); + this.panel2.Controls.Add(this.btnClose); + this.panel2.Controls.Add(this.btnOK); + this.panel2.Name = "panel2"; + // + // btnOK + // + resources.ApplyResources(this.btnOK, "btnOK"); + this.btnOK.Name = "btnOK"; + this.btnOK.UseVisualStyleBackColor = true; + this.btnOK.Click += new System.EventHandler(this.btnOK_Click); + // + // panel1 + // + resources.ApplyResources(this.panel1, "panel1"); + this.panel1.Name = "panel1"; + // + // AddServer2Form + // + resources.ApplyResources(this, "$this"); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.CancelButton = this.btnClose; + this.Controls.Add(this.groupBox1); + this.Controls.Add(this.panel2); + this.Controls.Add(this.panel1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Name = "AddServer2Form"; + this.Load += new System.EventHandler(this.AddServer2Form_Load); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.panel2.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.Button btnClose; + private System.Windows.Forms.Button btnOK; + private System.Windows.Forms.TextBox txtRemarks; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.TextBox txtAddress; + } +} \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/AddServer2Form.cs b/v2rayN/v2rayN/Forms/AddServer2Form.cs new file mode 100644 index 00000000..a88afb44 --- /dev/null +++ b/v2rayN/v2rayN/Forms/AddServer2Form.cs @@ -0,0 +1,75 @@ +using System; +using System.Windows.Forms; +using v2rayN.Handler; +using v2rayN.Mode; + +namespace v2rayN.Forms +{ + public partial class AddServer2Form : BaseForm + { + public int EditIndex { get; set; } + VmessItem vmessItem; + + public AddServer2Form() + { + InitializeComponent(); + } + + private void AddServer2Form_Load(object sender, EventArgs e) + { + if (EditIndex >= 0) + { + BindingServer(); + } + else + { + ClearServer(); + } + } + + /// + /// 绑定数据 + /// + private void BindingServer() + { + vmessItem = config.vmess[EditIndex]; + txtRemarks.Text = vmessItem.remarks; + txtAddress.Text = vmessItem.address; + txtAddress.ReadOnly = true; + } + + + /// + /// 清除设置 + /// + private void ClearServer() + { + txtRemarks.Text = ""; + } + + private void btnOK_Click(object sender, EventArgs e) + { + string remarks = txtRemarks.Text; + if (Utils.IsNullOrEmpty(remarks)) + { + UI.Show(UIRes.I18N("PleaseFillRemarks")); + return; + } + vmessItem.remarks = remarks; + + if (ConfigHandler.EditCustomServer(ref config, vmessItem, EditIndex) == 0) + { + this.DialogResult = DialogResult.OK; + } + else + { + UI.Show(UIRes.I18N("OperationFailed")); + } + } + + private void btnClose_Click(object sender, EventArgs e) + { + this.DialogResult = DialogResult.Cancel; + } + } +} diff --git a/v2rayN/v2rayN/Forms/AddServer2Form.resx b/v2rayN/v2rayN/Forms/AddServer2Form.resx new file mode 100644 index 00000000..c98d40e0 --- /dev/null +++ b/v2rayN/v2rayN/Forms/AddServer2Form.resx @@ -0,0 +1,390 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + txtAddress + + + Address + + + 0 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + Bottom + + + + True + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + btnOK + + + txtRemarks + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + AddServer2Form + + + label1 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + panel2 + + + + 12, 27 + + + Fill + + + True + + + 313, 21 + + + groupBox1 + + + 6, 12 + + + True + + + Alias (remarks) + + + 127, 23 + + + 6 + + + 7 + + + groupBox1 + + + 113, 12 + + + 4 + + + Server + + + 23 + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 0 + + + 611, 60 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Edit custom configuration server + + + 432, 104 + + + 611, 10 + + + groupBox1 + + + * Fill in manually + + + 11 + + + 10 + + + panel1 + + + 75, 23 + + + 2 + + + btnClose + + + 303, 17 + + + 0, 211 + + + 75, 23 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + Top + + + 0, 10 + + + 3 + + + 611, 201 + + + 2 + + + 4 + + + 3 + + + 127, 62 + + + groupBox1 + + + True + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 83, 12 + + + &Cancel + + + 12, 62 + + + &OK + + + 0 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 446, 26 + + + groupBox1 + + + label6 + + + $this + + + 1 + + + 0, 0 + + + panel2 + + + label13 + + + 83, 12 + + + 22 + + + 1 + + + panel2 + + + 5 + + + 611, 271 + + + 0 + + + v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + + $this + + + 396, 17 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 1 + + + True + + \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/AddServer2Form.zh-Hans.resx b/v2rayN/v2rayN/Forms/AddServer2Form.zh-Hans.resx new file mode 100644 index 00000000..a01d4dfa --- /dev/null +++ b/v2rayN/v2rayN/Forms/AddServer2Form.zh-Hans.resx @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 取消(&C) + + + *手填,方便识别管理 + + + 别名(remarks) + + + 地址(address) + + + 服务器 + + + 确定(&O) + + + 编辑自定义配置服务器 + + \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/AddServer3Form.Designer.cs b/v2rayN/v2rayN/Forms/AddServer3Form.Designer.cs new file mode 100644 index 00000000..3515e6b9 --- /dev/null +++ b/v2rayN/v2rayN/Forms/AddServer3Form.Designer.cs @@ -0,0 +1,231 @@ +namespace v2rayN.Forms +{ + partial class AddServer3Form + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AddServer3Form)); + this.btnClose = new System.Windows.Forms.Button(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.label13 = new System.Windows.Forms.Label(); + this.cmbSecurity = new System.Windows.Forms.ComboBox(); + this.txtRemarks = new System.Windows.Forms.TextBox(); + this.label6 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.txtId = new System.Windows.Forms.TextBox(); + this.label3 = new System.Windows.Forms.Label(); + this.txtPort = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.txtAddress = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.panel2 = new System.Windows.Forms.Panel(); + this.btnOK = new System.Windows.Forms.Button(); + this.panel1 = new System.Windows.Forms.Panel(); + this.menuServer = new System.Windows.Forms.MenuStrip(); + this.MenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); + this.menuItemImportClipboard = new System.Windows.Forms.ToolStripMenuItem(); + this.groupBox1.SuspendLayout(); + this.panel2.SuspendLayout(); + this.menuServer.SuspendLayout(); + this.SuspendLayout(); + // + // btnClose + // + this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; + resources.ApplyResources(this.btnClose, "btnClose"); + this.btnClose.Name = "btnClose"; + this.btnClose.UseVisualStyleBackColor = true; + this.btnClose.Click += new System.EventHandler(this.btnClose_Click); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.label13); + this.groupBox1.Controls.Add(this.cmbSecurity); + this.groupBox1.Controls.Add(this.txtRemarks); + this.groupBox1.Controls.Add(this.label6); + this.groupBox1.Controls.Add(this.label5); + this.groupBox1.Controls.Add(this.txtId); + this.groupBox1.Controls.Add(this.label3); + this.groupBox1.Controls.Add(this.txtPort); + this.groupBox1.Controls.Add(this.label2); + this.groupBox1.Controls.Add(this.txtAddress); + this.groupBox1.Controls.Add(this.label1); + resources.ApplyResources(this.groupBox1, "groupBox1"); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.TabStop = false; + // + // label13 + // + resources.ApplyResources(this.label13, "label13"); + this.label13.Name = "label13"; + // + // cmbSecurity + // + this.cmbSecurity.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbSecurity.FormattingEnabled = true; + this.cmbSecurity.Items.AddRange(new object[] { + resources.GetString("cmbSecurity.Items"), + resources.GetString("cmbSecurity.Items1"), + resources.GetString("cmbSecurity.Items2"), + resources.GetString("cmbSecurity.Items3"), + resources.GetString("cmbSecurity.Items4"), + resources.GetString("cmbSecurity.Items5"), + resources.GetString("cmbSecurity.Items6"), + resources.GetString("cmbSecurity.Items7")}); + resources.ApplyResources(this.cmbSecurity, "cmbSecurity"); + this.cmbSecurity.Name = "cmbSecurity"; + // + // txtRemarks + // + resources.ApplyResources(this.txtRemarks, "txtRemarks"); + this.txtRemarks.Name = "txtRemarks"; + // + // label6 + // + resources.ApplyResources(this.label6, "label6"); + this.label6.Name = "label6"; + // + // label5 + // + resources.ApplyResources(this.label5, "label5"); + this.label5.Name = "label5"; + // + // txtId + // + resources.ApplyResources(this.txtId, "txtId"); + this.txtId.Name = "txtId"; + // + // label3 + // + resources.ApplyResources(this.label3, "label3"); + this.label3.Name = "label3"; + // + // txtPort + // + resources.ApplyResources(this.txtPort, "txtPort"); + this.txtPort.Name = "txtPort"; + // + // label2 + // + resources.ApplyResources(this.label2, "label2"); + this.label2.Name = "label2"; + // + // txtAddress + // + resources.ApplyResources(this.txtAddress, "txtAddress"); + this.txtAddress.Name = "txtAddress"; + // + // label1 + // + resources.ApplyResources(this.label1, "label1"); + this.label1.Name = "label1"; + // + // panel2 + // + this.panel2.Controls.Add(this.btnClose); + this.panel2.Controls.Add(this.btnOK); + resources.ApplyResources(this.panel2, "panel2"); + this.panel2.Name = "panel2"; + // + // btnOK + // + resources.ApplyResources(this.btnOK, "btnOK"); + this.btnOK.Name = "btnOK"; + this.btnOK.UseVisualStyleBackColor = true; + this.btnOK.Click += new System.EventHandler(this.btnOK_Click); + // + // panel1 + // + resources.ApplyResources(this.panel1, "panel1"); + this.panel1.Name = "panel1"; + // + // menuServer + // + this.menuServer.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.MenuItem1}); + resources.ApplyResources(this.menuServer, "menuServer"); + this.menuServer.Name = "menuServer"; + // + // MenuItem1 + // + this.MenuItem1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.menuItemImportClipboard}); + this.MenuItem1.Name = "MenuItem1"; + resources.ApplyResources(this.MenuItem1, "MenuItem1"); + // + // menuItemImportClipboard + // + this.menuItemImportClipboard.Name = "menuItemImportClipboard"; + resources.ApplyResources(this.menuItemImportClipboard, "menuItemImportClipboard"); + this.menuItemImportClipboard.Click += new System.EventHandler(this.menuItemImportClipboard_Click); + // + // AddServer3Form + // + resources.ApplyResources(this, "$this"); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.CancelButton = this.btnClose; + this.Controls.Add(this.groupBox1); + this.Controls.Add(this.panel2); + this.Controls.Add(this.panel1); + this.Controls.Add(this.menuServer); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.MinimizeBox = true; + this.Name = "AddServer3Form"; + this.Load += new System.EventHandler(this.AddServer3Form_Load); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.panel2.ResumeLayout(false); + this.menuServer.ResumeLayout(false); + this.menuServer.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.Button btnClose; + private System.Windows.Forms.Button btnOK; + private System.Windows.Forms.TextBox txtRemarks; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.TextBox txtId; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TextBox txtPort; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox txtAddress; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.ComboBox cmbSecurity; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.MenuStrip menuServer; + private System.Windows.Forms.ToolStripMenuItem MenuItem1; + private System.Windows.Forms.ToolStripMenuItem menuItemImportClipboard; + } +} \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/AddServer3Form.cs b/v2rayN/v2rayN/Forms/AddServer3Form.cs new file mode 100644 index 00000000..c39f2cfe --- /dev/null +++ b/v2rayN/v2rayN/Forms/AddServer3Form.cs @@ -0,0 +1,143 @@ +using System; +using System.Windows.Forms; +using v2rayN.Handler; +using v2rayN.Mode; + +namespace v2rayN.Forms +{ + public partial class AddServer3Form : BaseForm + { + public int EditIndex { get; set; } + VmessItem vmessItem = null; + + public AddServer3Form() + { + InitializeComponent(); + } + + private void AddServer3Form_Load(object sender, EventArgs e) + { + if (EditIndex >= 0) + { + vmessItem = config.vmess[EditIndex]; + BindingServer(); + } + else + { + vmessItem = new VmessItem(); + ClearServer(); + } + } + + /// + /// 绑定数据 + /// + private void BindingServer() + { + + txtAddress.Text = vmessItem.address; + txtPort.Text = vmessItem.port.ToString(); + txtId.Text = vmessItem.id; + cmbSecurity.Text = vmessItem.security; + txtRemarks.Text = vmessItem.remarks; + } + + + /// + /// 清除设置 + /// + private void ClearServer() + { + txtAddress.Text = ""; + txtPort.Text = ""; + txtId.Text = ""; + cmbSecurity.Text = Global.DefaultSecurity; + txtRemarks.Text = ""; + } + + private void btnOK_Click(object sender, EventArgs e) + { + string address = txtAddress.Text; + string port = txtPort.Text; + string id = txtId.Text; + string security = cmbSecurity.Text; + string remarks = txtRemarks.Text; + + if (Utils.IsNullOrEmpty(address)) + { + UI.Show(UIRes.I18N("FillServerAddress")); + return; + } + if (Utils.IsNullOrEmpty(port) || !Utils.IsNumberic(port)) + { + UI.Show(UIRes.I18N("FillCorrectServerPort")); + return; + } + if (Utils.IsNullOrEmpty(id)) + { + UI.Show(UIRes.I18N("FillPassword")); + return; + } + if (Utils.IsNullOrEmpty(security)) + { + UI.Show(UIRes.I18N("PleaseSelectEncryption")); + return; + } + + vmessItem.address = address; + vmessItem.port = Utils.ToInt(port); + vmessItem.id = id; + vmessItem.security = security; + vmessItem.remarks = remarks; + + if (ConfigHandler.AddShadowsocksServer(ref config, vmessItem, EditIndex) == 0) + { + this.DialogResult = DialogResult.OK; + } + else + { + UI.Show(UIRes.I18N("OperationFailed")); + } + } + private void btnClose_Click(object sender, EventArgs e) + { + this.DialogResult = DialogResult.Cancel; + } + + + #region 导入配置 + + /// + /// 从剪贴板导入URL + /// + /// + /// + private void menuItemImportClipboard_Click(object sender, EventArgs e) + { + ImportConfig(); + } + + private void ImportConfig() + { + ClearServer(); + + string msg; + VmessItem vmessItem = V2rayConfigHandler.ImportFromClipboardConfig(Utils.GetClipboardData(), out msg); + if (vmessItem == null) + { + UI.Show(msg); + return; + } + + txtAddress.Text = vmessItem.address; + txtPort.Text = vmessItem.port.ToString(); + cmbSecurity.Text = vmessItem.security; + txtId.Text = vmessItem.id; + txtRemarks.Text = vmessItem.remarks; + } + + #endregion + + + } +} diff --git a/v2rayN/v2rayN/Forms/AddServer3Form.resx b/v2rayN/v2rayN/Forms/AddServer3Form.resx new file mode 100644 index 00000000..f2f23bba --- /dev/null +++ b/v2rayN/v2rayN/Forms/AddServer3Form.resx @@ -0,0 +1,606 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + 396, 17 + + + 75, 23 + + + + 4 + + + &Cancel + + + btnClose + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel2 + + + 0 + + + True + + + 337, 158 + + + 113, 12 + + + 22 + + + * Fill in manually + + + label13 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 0 + + + aes-256-cfb + + + aes-128-cfb + + + chacha20 + + + chacha20-ietf + + + aes-256-gcm + + + aes-128-gcm + + + chacha20-poly1305 + + + chacha20-ietf-poly1305 + + + 127, 120 + + + 194, 20 + + + 6 + + + cmbSecurity + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 1 + + + 127, 154 + + + 194, 21 + + + 11 + + + txtRemarks + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 2 + + + True + + + 12, 158 + + + 95, 12 + + + 10 + + + Alias (remarks) + + + label6 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 3 + + + True + + + 12, 124 + + + 65, 12 + + + 8 + + + Encryption + + + label5 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 4 + + + 127, 85 + + + * + + + 278, 21 + + + 5 + + + txtId + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 5 + + + True + + + 12, 89 + + + 53, 12 + + + 4 + + + Password + + + label3 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 6 + + + 127, 56 + + + 194, 21 + + + 3 + + + txtPort + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 7 + + + True + + + 12, 60 + + + 71, 12 + + + 2 + + + Server port + + + label2 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 8 + + + 127, 27 + + + 359, 21 + + + 1 + + + txtAddress + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 9 + + + True + + + 12, 31 + + + 89, 12 + + + 0 + + + Server address + + + label1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 10 + + + + Fill + + + 0, 35 + + + 547, 196 + + + 3 + + + Server + + + groupBox1 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + 303, 17 + + + 75, 23 + + + 5 + + + &OK + + + btnOK + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel2 + + + 1 + + + Bottom + + + 0, 231 + + + 547, 60 + + + 7 + + + panel2 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 1 + + + Top + + + 0, 25 + + + 547, 10 + + + 6 + + + panel1 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 2 + + + 17, 17 + + + 235, 22 + + + Import URL from clipboard + + + 162, 21 + + + Import configuration file + + + 0, 0 + + + 547, 25 + + + 8 + + + menuServer + + + System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 3 + + + True + + + 6, 12 + + + 547, 291 + + + Edit or add a [Shadowsocks] server + + + MenuItem1 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuItemImportClipboard + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + AddServer3Form + + + v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/AddServer3Form.zh-Hans.resx b/v2rayN/v2rayN/Forms/AddServer3Form.zh-Hans.resx new file mode 100644 index 00000000..2a5968ca --- /dev/null +++ b/v2rayN/v2rayN/Forms/AddServer3Form.zh-Hans.resx @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 取消(&C) + + + *手填,方便识别管理 + + + 别名(remarks) + + + 加密方式 + + + 密码 + + + 服务器端口 + + + 服务器地址 + + + 服务器 + + + 确定(&O) + + + 从剪贴板导入URL + + + 扫描屏幕上的二维码 + + + 导入配置文件 + + + 编辑或添加[Shadowsocks]服务器 + + \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/AddServer4Form.Designer.cs b/v2rayN/v2rayN/Forms/AddServer4Form.Designer.cs new file mode 100644 index 00000000..fb950a5c --- /dev/null +++ b/v2rayN/v2rayN/Forms/AddServer4Form.Designer.cs @@ -0,0 +1,188 @@ +namespace v2rayN.Forms +{ + partial class AddServer4Form + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AddServer4Form)); + this.btnClose = new System.Windows.Forms.Button(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.label13 = new System.Windows.Forms.Label(); + this.txtRemarks = new System.Windows.Forms.TextBox(); + this.label6 = new System.Windows.Forms.Label(); + this.txtPort = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.txtAddress = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.panel2 = new System.Windows.Forms.Panel(); + this.btnOK = new System.Windows.Forms.Button(); + this.panel1 = new System.Windows.Forms.Panel(); + this.menuServer = new System.Windows.Forms.MenuStrip(); + this.MenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); + this.menuItemImportClipboard = new System.Windows.Forms.ToolStripMenuItem(); + this.groupBox1.SuspendLayout(); + this.panel2.SuspendLayout(); + this.menuServer.SuspendLayout(); + this.SuspendLayout(); + // + // btnClose + // + resources.ApplyResources(this.btnClose, "btnClose"); + this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.btnClose.Name = "btnClose"; + this.btnClose.UseVisualStyleBackColor = true; + this.btnClose.Click += new System.EventHandler(this.btnClose_Click); + // + // groupBox1 + // + resources.ApplyResources(this.groupBox1, "groupBox1"); + this.groupBox1.Controls.Add(this.label13); + this.groupBox1.Controls.Add(this.txtRemarks); + this.groupBox1.Controls.Add(this.label6); + this.groupBox1.Controls.Add(this.txtPort); + this.groupBox1.Controls.Add(this.label2); + this.groupBox1.Controls.Add(this.txtAddress); + this.groupBox1.Controls.Add(this.label1); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.TabStop = false; + // + // label13 + // + resources.ApplyResources(this.label13, "label13"); + this.label13.Name = "label13"; + // + // txtRemarks + // + resources.ApplyResources(this.txtRemarks, "txtRemarks"); + this.txtRemarks.Name = "txtRemarks"; + // + // label6 + // + resources.ApplyResources(this.label6, "label6"); + this.label6.Name = "label6"; + // + // txtPort + // + resources.ApplyResources(this.txtPort, "txtPort"); + this.txtPort.Name = "txtPort"; + // + // label2 + // + resources.ApplyResources(this.label2, "label2"); + this.label2.Name = "label2"; + // + // txtAddress + // + resources.ApplyResources(this.txtAddress, "txtAddress"); + this.txtAddress.Name = "txtAddress"; + // + // label1 + // + resources.ApplyResources(this.label1, "label1"); + this.label1.Name = "label1"; + // + // panel2 + // + resources.ApplyResources(this.panel2, "panel2"); + this.panel2.Controls.Add(this.btnClose); + this.panel2.Controls.Add(this.btnOK); + this.panel2.Name = "panel2"; + // + // btnOK + // + resources.ApplyResources(this.btnOK, "btnOK"); + this.btnOK.Name = "btnOK"; + this.btnOK.UseVisualStyleBackColor = true; + this.btnOK.Click += new System.EventHandler(this.btnOK_Click); + // + // panel1 + // + resources.ApplyResources(this.panel1, "panel1"); + this.panel1.Name = "panel1"; + // + // menuServer + // + resources.ApplyResources(this.menuServer, "menuServer"); + this.menuServer.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.MenuItem1}); + this.menuServer.Name = "menuServer"; + // + // MenuItem1 + // + resources.ApplyResources(this.MenuItem1, "MenuItem1"); + this.MenuItem1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.menuItemImportClipboard}); + this.MenuItem1.Name = "MenuItem1"; + // + // menuItemImportClipboard + // + resources.ApplyResources(this.menuItemImportClipboard, "menuItemImportClipboard"); + this.menuItemImportClipboard.Name = "menuItemImportClipboard"; + this.menuItemImportClipboard.Click += new System.EventHandler(this.menuItemImportClipboard_Click); + // + // AddServer4Form + // + resources.ApplyResources(this, "$this"); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.CancelButton = this.btnClose; + this.Controls.Add(this.groupBox1); + this.Controls.Add(this.panel2); + this.Controls.Add(this.panel1); + this.Controls.Add(this.menuServer); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.MinimizeBox = true; + this.Name = "AddServer4Form"; + this.Load += new System.EventHandler(this.AddServer4Form_Load); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.panel2.ResumeLayout(false); + this.menuServer.ResumeLayout(false); + this.menuServer.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.Button btnClose; + private System.Windows.Forms.Button btnOK; + private System.Windows.Forms.TextBox txtRemarks; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.TextBox txtPort; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox txtAddress; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.MenuStrip menuServer; + private System.Windows.Forms.ToolStripMenuItem MenuItem1; + private System.Windows.Forms.ToolStripMenuItem menuItemImportClipboard; + } +} \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/AddServer4Form.cs b/v2rayN/v2rayN/Forms/AddServer4Form.cs new file mode 100644 index 00000000..edb80516 --- /dev/null +++ b/v2rayN/v2rayN/Forms/AddServer4Form.cs @@ -0,0 +1,122 @@ +using System; +using System.Windows.Forms; +using v2rayN.Handler; +using v2rayN.Mode; + +namespace v2rayN.Forms +{ + public partial class AddServer4Form : BaseForm + { + public int EditIndex { get; set; } + VmessItem vmessItem = null; + + public AddServer4Form() + { + InitializeComponent(); + } + + private void AddServer4Form_Load(object sender, EventArgs e) + { + if (EditIndex >= 0) + { + vmessItem = config.vmess[EditIndex]; + BindingServer(); + } + else + { + vmessItem = new VmessItem(); + ClearServer(); + } + } + + /// + /// 绑定数据 + /// + private void BindingServer() + { + txtAddress.Text = vmessItem.address; + txtPort.Text = vmessItem.port.ToString(); + txtRemarks.Text = vmessItem.remarks; + } + + + /// + /// 清除设置 + /// + private void ClearServer() + { + txtAddress.Text = ""; + txtPort.Text = ""; + txtRemarks.Text = ""; + } + + private void btnOK_Click(object sender, EventArgs e) + { + string address = txtAddress.Text; + string port = txtPort.Text; + string remarks = txtRemarks.Text; + + if (Utils.IsNullOrEmpty(address)) + { + UI.Show(UIRes.I18N("FillServerAddress")); + return; + } + if (Utils.IsNullOrEmpty(port) || !Utils.IsNumberic(port)) + { + UI.Show(UIRes.I18N("FillCorrectServerPort")); + return; + } + + vmessItem.address = address; + vmessItem.port = Utils.ToInt(port); + vmessItem.remarks = remarks; + + if (ConfigHandler.AddSocksServer(ref config, vmessItem, EditIndex) == 0) + { + this.DialogResult = DialogResult.OK; + } + else + { + UI.Show(UIRes.I18N("OperationFailed")); + } + } + private void btnClose_Click(object sender, EventArgs e) + { + this.DialogResult = DialogResult.Cancel; + } + + + #region 导入配置 + + /// + /// 从剪贴板导入URL + /// + /// + /// + private void menuItemImportClipboard_Click(object sender, EventArgs e) + { + ImportConfig(); + } + + private void ImportConfig() + { + ClearServer(); + + string msg; + VmessItem vmessItem = V2rayConfigHandler.ImportFromClipboardConfig(Utils.GetClipboardData(), out msg); + if (vmessItem == null) + { + UI.Show(msg); + return; + } + + txtAddress.Text = vmessItem.address; + txtPort.Text = vmessItem.port.ToString(); + txtRemarks.Text = vmessItem.remarks; + } + + #endregion + + + } +} diff --git a/v2rayN/v2rayN/Forms/AddServer4Form.resx b/v2rayN/v2rayN/Forms/AddServer4Form.resx new file mode 100644 index 00000000..d1e34f1a --- /dev/null +++ b/v2rayN/v2rayN/Forms/AddServer4Form.resx @@ -0,0 +1,483 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + txtAddress + + + Server address + + + + 3 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + Bottom + + + groupBox1 + + + True + + + menuServer + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + btnOK + + + txtRemarks + + + + 194, 21 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + AddServer4Form + + + 89, 12 + + + label1 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + panel2 + + + 12, 158 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Fill + + + 194, 21 + + + groupBox1 + + + 6, 12 + + + 547, 25 + + + True + + + Alias (remarks) + + + 127, 154 + + + groupBox1 + + + 6 + + + 7 + + + groupBox1 + + + 113, 12 + + + MenuItem1 + + + Server + + + 162, 21 + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 0 + + + 2 + + + 547, 60 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Edit or add a [Socks] server + + + 359, 21 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 547, 10 + + + * Fill in manually + + + 4 + + + 10 + + + 71, 12 + + + 0 + + + panel1 + + + 75, 23 + + + 12, 60 + + + 1 + + + $this + + + btnClose + + + label6 + + + 8 + + + 303, 17 + + + 127, 27 + + + 75, 23 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + Top + + + 0, 35 + + + 2 + + + $this + + + panel2 + + + 547, 196 + + + 2 + + + 6 + + + 235, 22 + + + 4 + + + 3 + + + True + + + 5 + + + groupBox1 + + + txtPort + + + 127, 56 + + + 95, 12 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + + Import URL from clipboard + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + &Cancel + + + 12, 31 + + + &OK + + + 11 + + + 0 + + + Server port + + + 337, 158 + + + groupBox1 + + + Import configuration file + + + 0, 0 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 5 + + + System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 3 + + + 1 + + + 0, 25 + + + 1 + + + label13 + + + 3 + + + label2 + + + groupBox1 + + + panel2 + + + 0, 231 + + + 22 + + + 547, 291 + + + 0 + + + v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + + menuItemImportClipboard + + + $this + + + 396, 17 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 1 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + + 17, 17 + + \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/AddServer4Form.zh-Hans.resx b/v2rayN/v2rayN/Forms/AddServer4Form.zh-Hans.resx new file mode 100644 index 00000000..40b56c76 --- /dev/null +++ b/v2rayN/v2rayN/Forms/AddServer4Form.zh-Hans.resx @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 取消(&C) + + + 服务器 + + + *手填,方便识别管理 + + + + 83, 12 + + + 别名(remarks) + + + 65, 12 + + + 服务器端口 + + + 65, 12 + + + 服务器地址 + + + 确定(&O) + + + 92, 21 + + + 导入配置文件 + + + 171, 22 + + + 从剪贴板导入URL + + + 编辑或添加[Socks]服务器 + + \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/AddServerForm.Designer.cs b/v2rayN/v2rayN/Forms/AddServerForm.Designer.cs new file mode 100644 index 00000000..c398397b --- /dev/null +++ b/v2rayN/v2rayN/Forms/AddServerForm.Designer.cs @@ -0,0 +1,516 @@ +namespace v2rayN.Forms +{ + partial class AddServerForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AddServerForm)); + this.btnClose = new System.Windows.Forms.Button(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.btnGUID = new System.Windows.Forms.Button(); + this.label13 = new System.Windows.Forms.Label(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.label24 = new System.Windows.Forms.Label(); + this.label23 = new System.Windows.Forms.Label(); + this.panTlsMore = new System.Windows.Forms.Panel(); + this.label22 = new System.Windows.Forms.Label(); + this.label21 = new System.Windows.Forms.Label(); + this.cmbAllowInsecure = new System.Windows.Forms.ComboBox(); + this.label20 = new System.Windows.Forms.Label(); + this.txtPath = new System.Windows.Forms.TextBox(); + this.label19 = new System.Windows.Forms.Label(); + this.label18 = new System.Windows.Forms.Label(); + this.label17 = new System.Windows.Forms.Label(); + this.label16 = new System.Windows.Forms.Label(); + this.label14 = new System.Windows.Forms.Label(); + this.label15 = new System.Windows.Forms.Label(); + this.cmbStreamSecurity = new System.Windows.Forms.ComboBox(); + this.label12 = new System.Windows.Forms.Label(); + this.txtRequestHost = new System.Windows.Forms.TextBox(); + this.label11 = new System.Windows.Forms.Label(); + this.label10 = new System.Windows.Forms.Label(); + this.cmbHeaderType = new System.Windows.Forms.ComboBox(); + this.label9 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.cmbNetwork = new System.Windows.Forms.ComboBox(); + this.label7 = new System.Windows.Forms.Label(); + this.cmbSecurity = new System.Windows.Forms.ComboBox(); + this.txtRemarks = new System.Windows.Forms.TextBox(); + this.label6 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.txtAlterId = new System.Windows.Forms.TextBox(); + this.label4 = new System.Windows.Forms.Label(); + this.txtId = new System.Windows.Forms.TextBox(); + this.label3 = new System.Windows.Forms.Label(); + this.txtPort = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.txtAddress = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.panel2 = new System.Windows.Forms.Panel(); + this.btnOK = new System.Windows.Forms.Button(); + this.panel1 = new System.Windows.Forms.Panel(); + this.menuServer = new System.Windows.Forms.MenuStrip(); + this.MenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); + this.MenuItemImportClient = new System.Windows.Forms.ToolStripMenuItem(); + this.MenuItemImportServer = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.MenuItemImportClipboard = new System.Windows.Forms.ToolStripMenuItem(); + this.groupBox1.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.panTlsMore.SuspendLayout(); + this.panel2.SuspendLayout(); + this.menuServer.SuspendLayout(); + this.SuspendLayout(); + // + // btnClose + // + this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; + resources.ApplyResources(this.btnClose, "btnClose"); + this.btnClose.Name = "btnClose"; + this.btnClose.UseVisualStyleBackColor = true; + this.btnClose.Click += new System.EventHandler(this.btnClose_Click); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.btnGUID); + this.groupBox1.Controls.Add(this.label13); + this.groupBox1.Controls.Add(this.groupBox2); + this.groupBox1.Controls.Add(this.label9); + this.groupBox1.Controls.Add(this.label8); + this.groupBox1.Controls.Add(this.cmbNetwork); + this.groupBox1.Controls.Add(this.label7); + this.groupBox1.Controls.Add(this.cmbSecurity); + this.groupBox1.Controls.Add(this.txtRemarks); + this.groupBox1.Controls.Add(this.label6); + this.groupBox1.Controls.Add(this.label5); + this.groupBox1.Controls.Add(this.txtAlterId); + this.groupBox1.Controls.Add(this.label4); + this.groupBox1.Controls.Add(this.txtId); + this.groupBox1.Controls.Add(this.label3); + this.groupBox1.Controls.Add(this.txtPort); + this.groupBox1.Controls.Add(this.label2); + this.groupBox1.Controls.Add(this.txtAddress); + this.groupBox1.Controls.Add(this.label1); + resources.ApplyResources(this.groupBox1, "groupBox1"); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.TabStop = false; + // + // btnGUID + // + resources.ApplyResources(this.btnGUID, "btnGUID"); + this.btnGUID.Name = "btnGUID"; + this.btnGUID.UseVisualStyleBackColor = true; + this.btnGUID.Click += new System.EventHandler(this.btnGUID_Click); + // + // label13 + // + resources.ApplyResources(this.label13, "label13"); + this.label13.Name = "label13"; + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.label24); + this.groupBox2.Controls.Add(this.label23); + this.groupBox2.Controls.Add(this.panTlsMore); + this.groupBox2.Controls.Add(this.label20); + this.groupBox2.Controls.Add(this.txtPath); + this.groupBox2.Controls.Add(this.label19); + this.groupBox2.Controls.Add(this.label18); + this.groupBox2.Controls.Add(this.label17); + this.groupBox2.Controls.Add(this.label16); + this.groupBox2.Controls.Add(this.label14); + this.groupBox2.Controls.Add(this.label15); + this.groupBox2.Controls.Add(this.cmbStreamSecurity); + this.groupBox2.Controls.Add(this.label12); + this.groupBox2.Controls.Add(this.txtRequestHost); + this.groupBox2.Controls.Add(this.label11); + this.groupBox2.Controls.Add(this.label10); + this.groupBox2.Controls.Add(this.cmbHeaderType); + resources.ApplyResources(this.groupBox2, "groupBox2"); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.TabStop = false; + // + // label24 + // + resources.ApplyResources(this.label24, "label24"); + this.label24.Name = "label24"; + // + // label23 + // + resources.ApplyResources(this.label23, "label23"); + this.label23.Name = "label23"; + // + // panTlsMore + // + this.panTlsMore.Controls.Add(this.label22); + this.panTlsMore.Controls.Add(this.label21); + this.panTlsMore.Controls.Add(this.cmbAllowInsecure); + resources.ApplyResources(this.panTlsMore, "panTlsMore"); + this.panTlsMore.Name = "panTlsMore"; + // + // label22 + // + resources.ApplyResources(this.label22, "label22"); + this.label22.Name = "label22"; + // + // label21 + // + resources.ApplyResources(this.label21, "label21"); + this.label21.Name = "label21"; + // + // cmbAllowInsecure + // + this.cmbAllowInsecure.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbAllowInsecure.FormattingEnabled = true; + this.cmbAllowInsecure.Items.AddRange(new object[] { + resources.GetString("cmbAllowInsecure.Items"), + resources.GetString("cmbAllowInsecure.Items1"), + resources.GetString("cmbAllowInsecure.Items2")}); + resources.ApplyResources(this.cmbAllowInsecure, "cmbAllowInsecure"); + this.cmbAllowInsecure.Name = "cmbAllowInsecure"; + // + // label20 + // + resources.ApplyResources(this.label20, "label20"); + this.label20.Name = "label20"; + // + // txtPath + // + resources.ApplyResources(this.txtPath, "txtPath"); + this.txtPath.Name = "txtPath"; + // + // label19 + // + resources.ApplyResources(this.label19, "label19"); + this.label19.Name = "label19"; + // + // label18 + // + resources.ApplyResources(this.label18, "label18"); + this.label18.Name = "label18"; + // + // label17 + // + resources.ApplyResources(this.label17, "label17"); + this.label17.Name = "label17"; + // + // label16 + // + resources.ApplyResources(this.label16, "label16"); + this.label16.Name = "label16"; + // + // label14 + // + resources.ApplyResources(this.label14, "label14"); + this.label14.Name = "label14"; + // + // label15 + // + resources.ApplyResources(this.label15, "label15"); + this.label15.Name = "label15"; + // + // cmbStreamSecurity + // + this.cmbStreamSecurity.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbStreamSecurity.FormattingEnabled = true; + this.cmbStreamSecurity.Items.AddRange(new object[] { + resources.GetString("cmbStreamSecurity.Items"), + resources.GetString("cmbStreamSecurity.Items1")}); + resources.ApplyResources(this.cmbStreamSecurity, "cmbStreamSecurity"); + this.cmbStreamSecurity.Name = "cmbStreamSecurity"; + this.cmbStreamSecurity.SelectedIndexChanged += new System.EventHandler(this.cmbStreamSecurity_SelectedIndexChanged); + // + // label12 + // + resources.ApplyResources(this.label12, "label12"); + this.label12.Name = "label12"; + // + // txtRequestHost + // + resources.ApplyResources(this.txtRequestHost, "txtRequestHost"); + this.txtRequestHost.Name = "txtRequestHost"; + // + // label11 + // + resources.ApplyResources(this.label11, "label11"); + this.label11.Name = "label11"; + // + // label10 + // + resources.ApplyResources(this.label10, "label10"); + this.label10.Name = "label10"; + // + // cmbHeaderType + // + this.cmbHeaderType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbHeaderType.FormattingEnabled = true; + this.cmbHeaderType.Items.AddRange(new object[] { + resources.GetString("cmbHeaderType.Items"), + resources.GetString("cmbHeaderType.Items1"), + resources.GetString("cmbHeaderType.Items2"), + resources.GetString("cmbHeaderType.Items3"), + resources.GetString("cmbHeaderType.Items4"), + resources.GetString("cmbHeaderType.Items5"), + resources.GetString("cmbHeaderType.Items6")}); + resources.ApplyResources(this.cmbHeaderType, "cmbHeaderType"); + this.cmbHeaderType.Name = "cmbHeaderType"; + // + // label9 + // + resources.ApplyResources(this.label9, "label9"); + this.label9.Name = "label9"; + // + // label8 + // + resources.ApplyResources(this.label8, "label8"); + this.label8.Name = "label8"; + // + // cmbNetwork + // + this.cmbNetwork.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbNetwork.FormattingEnabled = true; + this.cmbNetwork.Items.AddRange(new object[] { + resources.GetString("cmbNetwork.Items"), + resources.GetString("cmbNetwork.Items1"), + resources.GetString("cmbNetwork.Items2"), + resources.GetString("cmbNetwork.Items3"), + resources.GetString("cmbNetwork.Items4")}); + resources.ApplyResources(this.cmbNetwork, "cmbNetwork"); + this.cmbNetwork.Name = "cmbNetwork"; + this.cmbNetwork.SelectedIndexChanged += new System.EventHandler(this.cmbNetwork_SelectedIndexChanged); + // + // label7 + // + resources.ApplyResources(this.label7, "label7"); + this.label7.Name = "label7"; + // + // cmbSecurity + // + this.cmbSecurity.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbSecurity.FormattingEnabled = true; + this.cmbSecurity.Items.AddRange(new object[] { + resources.GetString("cmbSecurity.Items"), + resources.GetString("cmbSecurity.Items1"), + resources.GetString("cmbSecurity.Items2"), + resources.GetString("cmbSecurity.Items3")}); + resources.ApplyResources(this.cmbSecurity, "cmbSecurity"); + this.cmbSecurity.Name = "cmbSecurity"; + // + // txtRemarks + // + resources.ApplyResources(this.txtRemarks, "txtRemarks"); + this.txtRemarks.Name = "txtRemarks"; + // + // label6 + // + resources.ApplyResources(this.label6, "label6"); + this.label6.Name = "label6"; + // + // label5 + // + resources.ApplyResources(this.label5, "label5"); + this.label5.Name = "label5"; + // + // txtAlterId + // + resources.ApplyResources(this.txtAlterId, "txtAlterId"); + this.txtAlterId.Name = "txtAlterId"; + // + // label4 + // + resources.ApplyResources(this.label4, "label4"); + this.label4.Name = "label4"; + // + // txtId + // + resources.ApplyResources(this.txtId, "txtId"); + this.txtId.Name = "txtId"; + // + // label3 + // + resources.ApplyResources(this.label3, "label3"); + this.label3.Name = "label3"; + // + // txtPort + // + resources.ApplyResources(this.txtPort, "txtPort"); + this.txtPort.Name = "txtPort"; + // + // label2 + // + resources.ApplyResources(this.label2, "label2"); + this.label2.Name = "label2"; + // + // txtAddress + // + resources.ApplyResources(this.txtAddress, "txtAddress"); + this.txtAddress.Name = "txtAddress"; + // + // label1 + // + resources.ApplyResources(this.label1, "label1"); + this.label1.Name = "label1"; + // + // panel2 + // + this.panel2.Controls.Add(this.btnClose); + this.panel2.Controls.Add(this.btnOK); + resources.ApplyResources(this.panel2, "panel2"); + this.panel2.Name = "panel2"; + // + // btnOK + // + resources.ApplyResources(this.btnOK, "btnOK"); + this.btnOK.Name = "btnOK"; + this.btnOK.UseVisualStyleBackColor = true; + this.btnOK.Click += new System.EventHandler(this.btnOK_Click); + // + // panel1 + // + resources.ApplyResources(this.panel1, "panel1"); + this.panel1.Name = "panel1"; + // + // menuServer + // + this.menuServer.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.MenuItem1}); + resources.ApplyResources(this.menuServer, "menuServer"); + this.menuServer.Name = "menuServer"; + // + // MenuItem1 + // + this.MenuItem1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.MenuItemImportClient, + this.MenuItemImportServer, + this.toolStripSeparator1, + this.MenuItemImportClipboard}); + this.MenuItem1.Name = "MenuItem1"; + resources.ApplyResources(this.MenuItem1, "MenuItem1"); + // + // MenuItemImportClient + // + this.MenuItemImportClient.Name = "MenuItemImportClient"; + resources.ApplyResources(this.MenuItemImportClient, "MenuItemImportClient"); + this.MenuItemImportClient.Click += new System.EventHandler(this.MenuItemImportClient_Click); + // + // MenuItemImportServer + // + this.MenuItemImportServer.Name = "MenuItemImportServer"; + resources.ApplyResources(this.MenuItemImportServer, "MenuItemImportServer"); + this.MenuItemImportServer.Click += new System.EventHandler(this.MenuItemImportServer_Click); + // + // toolStripSeparator1 + // + this.toolStripSeparator1.Name = "toolStripSeparator1"; + resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1"); + // + // MenuItemImportClipboard + // + this.MenuItemImportClipboard.Name = "MenuItemImportClipboard"; + resources.ApplyResources(this.MenuItemImportClipboard, "MenuItemImportClipboard"); + this.MenuItemImportClipboard.Click += new System.EventHandler(this.MenuItemImportClipboard_Click); + // + // AddServerForm + // + resources.ApplyResources(this, "$this"); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.CancelButton = this.btnClose; + this.Controls.Add(this.groupBox1); + this.Controls.Add(this.panel2); + this.Controls.Add(this.panel1); + this.Controls.Add(this.menuServer); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Name = "AddServerForm"; + this.Load += new System.EventHandler(this.AddServerForm_Load); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.panTlsMore.ResumeLayout(false); + this.panTlsMore.PerformLayout(); + this.panel2.ResumeLayout(false); + this.menuServer.ResumeLayout(false); + this.menuServer.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.Button btnClose; + private System.Windows.Forms.Button btnOK; + private System.Windows.Forms.TextBox txtRemarks; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.TextBox txtAlterId; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.TextBox txtId; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TextBox txtPort; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox txtAddress; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.ComboBox cmbSecurity; + private System.Windows.Forms.ComboBox cmbNetwork; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.TextBox txtRequestHost; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.ComboBox cmbHeaderType; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.MenuStrip menuServer; + private System.Windows.Forms.ToolStripMenuItem MenuItem1; + private System.Windows.Forms.ToolStripMenuItem MenuItemImportClient; + private System.Windows.Forms.ToolStripMenuItem MenuItemImportServer; + private System.Windows.Forms.Label label15; + private System.Windows.Forms.ComboBox cmbStreamSecurity; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; + private System.Windows.Forms.ToolStripMenuItem MenuItemImportClipboard; + private System.Windows.Forms.Button btnGUID; + private System.Windows.Forms.Label label16; + private System.Windows.Forms.Label label14; + private System.Windows.Forms.Label label17; + private System.Windows.Forms.Label label18; + private System.Windows.Forms.Label label19; + private System.Windows.Forms.TextBox txtPath; + private System.Windows.Forms.Label label20; + private System.Windows.Forms.Label label21; + private System.Windows.Forms.ComboBox cmbAllowInsecure; + private System.Windows.Forms.Label label22; + private System.Windows.Forms.Panel panTlsMore; + private System.Windows.Forms.Label label24; + private System.Windows.Forms.Label label23; + } +} \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/AddServerForm.cs b/v2rayN/v2rayN/Forms/AddServerForm.cs new file mode 100644 index 00000000..816b7013 --- /dev/null +++ b/v2rayN/v2rayN/Forms/AddServerForm.cs @@ -0,0 +1,293 @@ +using System; +using System.Windows.Forms; +using v2rayN.Handler; +using v2rayN.Mode; + +namespace v2rayN.Forms +{ + public partial class AddServerForm : BaseForm + { + public int EditIndex { get; set; } + VmessItem vmessItem = null; + + public AddServerForm() + { + InitializeComponent(); + } + + private void AddServerForm_Load(object sender, EventArgs e) + { + if (EditIndex >= 0) + { + vmessItem = config.vmess[EditIndex]; + BindingServer(); + } + else + { + vmessItem = new VmessItem(); + ClearServer(); + } + } + + /// + /// 绑定数据 + /// + private void BindingServer() + { + txtAddress.Text = vmessItem.address; + txtPort.Text = vmessItem.port.ToString(); + txtId.Text = vmessItem.id; + txtAlterId.Text = vmessItem.alterId.ToString(); + cmbSecurity.Text = vmessItem.security; + cmbNetwork.Text = vmessItem.network; + txtRemarks.Text = vmessItem.remarks; + + cmbHeaderType.Text = vmessItem.headerType; + txtRequestHost.Text = vmessItem.requestHost; + txtPath.Text = vmessItem.path; + cmbStreamSecurity.Text = vmessItem.streamSecurity; + cmbAllowInsecure.Text = vmessItem.allowInsecure; + } + + + /// + /// 清除设置 + /// + private void ClearServer() + { + txtAddress.Text = ""; + txtPort.Text = ""; + txtId.Text = ""; + txtAlterId.Text = "0"; + cmbSecurity.Text = Global.DefaultSecurity; + cmbNetwork.Text = Global.DefaultNetwork; + txtRemarks.Text = ""; + + cmbHeaderType.Text = Global.None; + txtRequestHost.Text = ""; + cmbStreamSecurity.Text = ""; + cmbAllowInsecure.Text = ""; + txtPath.Text = ""; + } + + + private void cmbNetwork_SelectedIndexChanged(object sender, EventArgs e) + { + SetHeaderType(); + } + + /// + /// 设置伪装选项 + /// + private void SetHeaderType() + { + cmbHeaderType.Items.Clear(); + + string network = cmbNetwork.Text; + if (Utils.IsNullOrEmpty(network)) + { + cmbHeaderType.Items.Add(Global.None); + return; + } + + cmbHeaderType.Items.Add(Global.None); + if (network.Equals(Global.DefaultNetwork)) + { + cmbHeaderType.Items.Add(Global.TcpHeaderHttp); + } + else if (network.Equals("kcp") || network.Equals("quic")) + { + cmbHeaderType.Items.Add("srtp"); + cmbHeaderType.Items.Add("utp"); + cmbHeaderType.Items.Add("wechat-video"); + cmbHeaderType.Items.Add("dtls"); + cmbHeaderType.Items.Add("wireguard"); + } + else + { + } + cmbHeaderType.Text = Global.None; + } + + private void btnOK_Click(object sender, EventArgs e) + { + string address = txtAddress.Text; + string port = txtPort.Text; + string id = txtId.Text; + string alterId = txtAlterId.Text; + string security = cmbSecurity.Text; + string network = cmbNetwork.Text; + string remarks = txtRemarks.Text; + + string headerType = cmbHeaderType.Text; + string requestHost = txtRequestHost.Text; + string path = txtPath.Text; + string streamSecurity = cmbStreamSecurity.Text; + string allowInsecure = cmbAllowInsecure.Text; + + if (Utils.IsNullOrEmpty(address)) + { + UI.Show(UIRes.I18N("FillServerAddress")); + return; + } + if (Utils.IsNullOrEmpty(port) || !Utils.IsNumberic(port)) + { + UI.Show(UIRes.I18N("FillCorrectServerPort")); + return; + } + if (Utils.IsNullOrEmpty(id)) + { + UI.Show(UIRes.I18N("FillUUID")); + return; + } + if (Utils.IsNullOrEmpty(alterId) || !Utils.IsNumberic(alterId)) + { + UI.Show(UIRes.I18N("FillCorrectAlterId")); + return; + } + + vmessItem.address = address; + vmessItem.port = Utils.ToInt(port); + vmessItem.id = id; + vmessItem.alterId = Utils.ToInt(alterId); + vmessItem.security = security; + vmessItem.network = network; + vmessItem.remarks = remarks; + + vmessItem.headerType = headerType; + vmessItem.requestHost = requestHost.Replace(" ", ""); + vmessItem.path = path.Replace(" ", ""); + vmessItem.streamSecurity = streamSecurity; + vmessItem.allowInsecure = allowInsecure; + + if (ConfigHandler.AddServer(ref config, vmessItem, EditIndex) == 0) + { + this.DialogResult = DialogResult.OK; + } + else + { + UI.Show(UIRes.I18N("OperationFailed")); + } + } + + private void btnGUID_Click(object sender, EventArgs e) + { + txtId.Text = Utils.GetGUID(); + } + + private void btnClose_Click(object sender, EventArgs e) + { + this.DialogResult = DialogResult.Cancel; + } + + + #region 导入客户端/服务端配置 + + /// + /// 导入客户端 + /// + /// + /// + private void MenuItemImportClient_Click(object sender, EventArgs e) + { + MenuItemImport(1); + } + + /// + /// 导入服务端 + /// + /// + /// + private void MenuItemImportServer_Click(object sender, EventArgs e) + { + MenuItemImport(2); + } + + private void MenuItemImport(int type) + { + ClearServer(); + + OpenFileDialog fileDialog = new OpenFileDialog(); + fileDialog.Multiselect = false; + fileDialog.Filter = "Config|*.json|All|*.*"; + if (fileDialog.ShowDialog() != DialogResult.OK) + { + return; + } + string fileName = fileDialog.FileName; + if (Utils.IsNullOrEmpty(fileName)) + { + return; + } + string msg; + VmessItem vmessItem; + if (type.Equals(1)) + { + vmessItem = V2rayConfigHandler.ImportFromClientConfig(fileName, out msg); + } + else + { + vmessItem = V2rayConfigHandler.ImportFromServerConfig(fileName, out msg); + } + if (vmessItem == null) + { + UI.Show(msg); + return; + } + + txtAddress.Text = vmessItem.address; + txtPort.Text = vmessItem.port.ToString(); + txtId.Text = vmessItem.id; + txtAlterId.Text = vmessItem.alterId.ToString(); + txtRemarks.Text = vmessItem.remarks; + cmbNetwork.Text = vmessItem.network; + cmbHeaderType.Text = vmessItem.headerType; + txtRequestHost.Text = vmessItem.requestHost; + txtPath.Text = vmessItem.path; + cmbStreamSecurity.Text = vmessItem.streamSecurity; + } + + /// + /// 从剪贴板导入URL + /// + /// + /// + private void MenuItemImportClipboard_Click(object sender, EventArgs e) + { + ClearServer(); + + string msg; + VmessItem vmessItem = V2rayConfigHandler.ImportFromClipboardConfig(Utils.GetClipboardData(), out msg); + if (vmessItem == null) + { + UI.Show(msg); + return; + } + + txtAddress.Text = vmessItem.address; + txtPort.Text = vmessItem.port.ToString(); + txtId.Text = vmessItem.id; + txtAlterId.Text = vmessItem.alterId.ToString(); + txtRemarks.Text = vmessItem.remarks; + cmbNetwork.Text = vmessItem.network; + cmbHeaderType.Text = vmessItem.headerType; + txtRequestHost.Text = vmessItem.requestHost; + txtPath.Text = vmessItem.path; + cmbStreamSecurity.Text = vmessItem.streamSecurity; + } + #endregion + + private void cmbStreamSecurity_SelectedIndexChanged(object sender, EventArgs e) + { + string security = cmbStreamSecurity.Text; + if (Utils.IsNullOrEmpty(security)) + { + panTlsMore.Hide(); + } + else + { + panTlsMore.Show(); + } + } + } +} diff --git a/v2rayN/v2rayN/Forms/AddServerForm.resx b/v2rayN/v2rayN/Forms/AddServerForm.resx new file mode 100644 index 00000000..e519eab6 --- /dev/null +++ b/v2rayN/v2rayN/Forms/AddServerForm.resx @@ -0,0 +1,1392 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + 396, 17 + + + 75, 23 + + + + 4 + + + &Cancel + + + btnClose + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel2 + + + 0 + + + 411, 83 + + + 75, 23 + + + 23 + + + &Generate + + + btnGUID + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 0 + + + True + + + 285, 203 + + + 113, 12 + + + 22 + + + * Fill in manually + + + label13 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 1 + + + True + + + + NoControl + + + 526, 165 + + + 65, 12 + + + 35 + + + 3)QUIC key + + + label24 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 0 + + + True + + + NoControl + + + 470, 99 + + + 89, 12 + + + 34 + + + 4)QUIC securty + + + label23 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 1 + + + True + + + 205, 11 + + + 113, 12 + + + 32 + + + Default value true + + + label22 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panTlsMore + + + 0 + + + True + + + 12, 11 + + + 83, 12 + + + 31 + + + allowInsecure + + + label21 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panTlsMore + + + 1 + + + + + + true + + + false + + + 107, 7 + + + 91, 20 + + + 30 + + + cmbAllowInsecure + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panTlsMore + + + 2 + + + 284, 189 + + + 338, 35 + + + 33 + + + panTlsMore + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 2 + + + True + + + 469, 83 + + + 203, 12 + + + 29 + + + 3)h2 host Separated by commas (,) + + + label20 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 3 + + + 124, 125 + + + True + + + 396, 54 + + + 28 + + + txtPath + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 4 + + + True + + + 9, 125 + + + 29, 12 + + + 27 + + + Path + + + label19 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 5 + + + True + + + 526, 147 + + + 59, 12 + + + 26 + + + 2)h2 path + + + label18 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 6 + + + True + + + 469, 68 + + + 59, 12 + + + 25 + + + 2)ws host + + + label17 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 7 + + + True + + + 526, 130 + + + 59, 12 + + + 24 + + + 1)ws path + + + label16 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 8 + + + True + + + 469, 53 + + + 215, 12 + + + 23 + + + 1)http host Separated by commas (,) + + + label14 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 9 + + + True + + + 9, 201 + + + 23, 12 + + + 22 + + + TLS + + + label15 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 10 + + + + + + tls + + + 124, 197 + + + 143, 20 + + + 21 + + + cmbStreamSecurity + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 11 + + + True + + + 282, 34 + + + 299, 12 + + + 20 + + + *tcp or kcp or QUIC camouflage type, default none + + + label12 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 12 + + + 158, 58 + + + True + + + 300, 53 + + + 16 + + + txtRequestHost + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 13 + + + True + + + 9, 34 + + + 95, 12 + + + 19 + + + Camouflage type + + + label11 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 14 + + + True + + + 9, 62 + + + 143, 12 + + + 17 + + + Camouflage domain(host) + + + label10 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 15 + + + none + + + http + + + srtp + + + utp + + + wechat-video + + + dtls + + + wireguard + + + 124, 30 + + + 143, 20 + + + 18 + + + cmbHeaderType + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 16 + + + Bottom + + + 3, 237 + + + 723, 234 + + + 21 + + + Keep the default value if it is not clear + + + groupBox2 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 2 + + + True + + + 353, 175 + + + 113, 12 + + + 15 + + + *Default value tcp + + + label9 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 3 + + + True + + + 353, 147 + + + 119, 12 + + + 14 + + + *Recommended (auto) + + + label8 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 4 + + + tcp + + + kcp + + + ws + + + h2 + + + quic + + + 195, 171 + + + 143, 20 + + + 12 + + + cmbNetwork + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 5 + + + True + + + 12, 175 + + + 167, 12 + + + 13 + + + Transport protocol(network) + + + label7 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 6 + + + aes-128-gcm + + + chacha20-poly1305 + + + auto + + + none + + + 195, 143 + + + 143, 20 + + + 6 + + + cmbSecurity + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 7 + + + 127, 199 + + + 143, 21 + + + 11 + + + txtRemarks + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 8 + + + True + + + 12, 203 + + + 95, 12 + + + 10 + + + Alias (remarks) + + + label6 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 9 + + + True + + + 12, 147 + + + 173, 12 + + + 8 + + + Encryption method (security) + + + label5 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 10 + + + 127, 114 + + + 143, 21 + + + 7 + + + txtAlterId + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 11 + + + True + + + 12, 118 + + + 47, 12 + + + 6 + + + AlterId + + + label4 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 12 + + + 127, 85 + + + 278, 21 + + + 5 + + + txtId + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 13 + + + True + + + 12, 89 + + + 53, 12 + + + 4 + + + UUID(id) + + + label3 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 14 + + + 127, 56 + + + 143, 21 + + + 3 + + + txtPort + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 15 + + + True + + + 12, 60 + + + 29, 12 + + + 2 + + + Port + + + label2 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 16 + + + 127, 27 + + + 359, 21 + + + 1 + + + txtAddress + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 17 + + + True + + + 12, 31 + + + 47, 12 + + + 0 + + + Address + + + label1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 18 + + + Fill + + + 0, 35 + + + 729, 474 + + + 3 + + + Server + + + groupBox1 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + 303, 17 + + + 75, 23 + + + 5 + + + &OK + + + btnOK + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel2 + + + 1 + + + Bottom + + + 0, 509 + + + 729, 60 + + + 7 + + + panel2 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 1 + + + Top + + + 0, 25 + + + 729, 10 + + + 6 + + + panel1 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 2 + + + 17, 17 + + + 237, 22 + + + Import client configuration + + + 237, 22 + + + Import server configuration + + + 234, 6 + + + 237, 22 + + + Import URL from clipboard + + + 162, 21 + + + Import configuration file + + + 0, 0 + + + 729, 25 + + + 8 + + + menuServer + + + System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 3 + + + True + + + 6, 12 + + + 729, 569 + + + Edit or add a [VMess] server + + + MenuItem1 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + MenuItemImportClient + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + MenuItemImportServer + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripSeparator1 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + MenuItemImportClipboard + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + AddServerForm + + + v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/AddServerForm.zh-Hans.resx b/v2rayN/v2rayN/Forms/AddServerForm.zh-Hans.resx new file mode 100644 index 00000000..7c5b3623 --- /dev/null +++ b/v2rayN/v2rayN/Forms/AddServerForm.zh-Hans.resx @@ -0,0 +1,301 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 取消(&C) + + + 服务器 + + + 生成(&G) + + + *手填,方便识别管理 + + + 不清楚则保持默认值 + + + + 95, 12 + + + 3)QUIC 加密密钥 + + + 95, 12 + + + 4)QUIC 加密方式 + + + 53, 12 + + + 默认true + + + 149, 12 + + + 3)h2 host中间逗号(,)隔开 + + + 65, 12 + + + 路径(path) + + + 161, 12 + + + 1)http host中间逗号(,)隔开 + + + 77, 12 + + + 底层传输安全 + + + 197, 12 + + + *tcp或kcp或QUIC伪装类型,默认none + + + 124, 58 + + + 334, 51 + + + 89, 12 + + + 伪装类型(type) + + + 89, 12 + + + 伪装域名(host) + + + 143, 12 + + + *默认tcp,选错会无法连接 + + + 113, 12 + + + *随便选,建议(auto) + + + 127, 171 + + + 211, 20 + + + 107, 12 + + + 传输协议(network) + + + 127, 143 + + + 211, 20 + + + 83, 12 + + + 别名(remarks) + + + 113, 12 + + + 加密方式(security) + + + 95, 12 + + + 额外ID(alterId) + + + 65, 12 + + + 用户ID(id) + + + 65, 12 + + + 端口(port) + + + 83, 12 + + + 地址(address) + + + 确定(&O) + + + 92, 21 + + + 导入配置文件 + + + 171, 22 + + + 导入客户端配置 + + + 171, 22 + + + 导入服务端配置 + + + 168, 6 + + + 171, 22 + + + 从剪贴板导入URL + + + 编辑或添加[VMess]服务器 + + \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/BaseForm.Designer.cs b/v2rayN/v2rayN/Forms/BaseForm.Designer.cs new file mode 100644 index 00000000..f23103bb --- /dev/null +++ b/v2rayN/v2rayN/Forms/BaseForm.Designer.cs @@ -0,0 +1,51 @@ +namespace v2rayN.Forms +{ + partial class BaseForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(BaseForm)); + this.SuspendLayout(); + // + // BaseForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(292, 273); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "BaseForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "BaseForm"; + this.ResumeLayout(false); + + } + + #endregion + } +} \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/BaseForm.cs b/v2rayN/v2rayN/Forms/BaseForm.cs new file mode 100644 index 00000000..9d8f9b0e --- /dev/null +++ b/v2rayN/v2rayN/Forms/BaseForm.cs @@ -0,0 +1,39 @@ +using System; +using System.Windows.Forms; +using v2rayN.Mode; + +namespace v2rayN.Forms +{ + public partial class BaseForm : Form + { + protected static Config config; + protected static System.Drawing.Icon icon; + + public BaseForm() + { + InitializeComponent(); + LoadCustomIcon(); + } + + private void LoadCustomIcon() + { + try + { + if (icon == null) + { + string file = Utils.GetPath(Global.CustomIconName); + if (!System.IO.File.Exists(file)) + { + return; + } + icon = new System.Drawing.Icon(file); + } + this.Icon = icon; + } + catch (Exception e) + { + Utils.SaveLog($"Loading custom icon failed: {e.Message}"); + } + } + } +} diff --git a/v2rayN/v2rayN/Forms/BaseForm.resx b/v2rayN/v2rayN/Forms/BaseForm.resx new file mode 100644 index 00000000..61360d3d --- /dev/null +++ b/v2rayN/v2rayN/Forms/BaseForm.resx @@ -0,0 +1,1253 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAABAAEAgIAAAAEAIAAoCAEAFgAAACgAAACAAAAAAAEAAAEAIAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAgAAAAIAAAACAAAAAwAA + AAMAAAADAAAAAwAAAAQAAAAEAAAABAAAAAQAAAADAAAAAwAAAAMAAAADAAAAAgAAAAIAAAACAAAAAQAA + AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAQAA + AAIAAAADAAAABAAAAAUAAAAGAAAACAAAAAgAAAAKAAAACgAAAAsAAAAMAAAADQAAAA0AAAANAAAADQAA + AAwAAAALAAAACgAAAAoAAAAIAAAACAAAAAYAAAAFAAAABAAAAAMAAAACAAAAAQAAAAEAAAABAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAQAAAAIAAAACAAAABAAAAAUAAAAHAAAACQAAAAwAAAAOAAAAEQAAABMAAAAVAAAAFwAA + ABgAAAAaAAAAGwAAABwAAAAcAAAAHQAAAB0AAAAcAAAAHAAAABsAAAAaAAAAGAAAABcAAAAVAAAAEwAA + ABEAAAAOAAAADAAAAAkAAAAHAAAABQAAAAQAAAACAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAMAAAAEAAAABwAAAAkAAAAMAAAAEAAA + ABMAAAAXAAAAGgAAAB4BAQAgAgEBIwMDASUDAgEmAwMBKAUEASkGAwMrCAUDKwgFAysIBQMsCAUDLAgF + AysIBQMrBgMDKwUEASkDAwEoAwIBJgMDASUCAQEjAQEAIAAAAB4AAAAaAAAAFwAAABMAAAAQAAAADAAA + AAkAAAAHAAAABAAAAAMAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAA + AAQAAAAHAAAACgAAAA4AAAASAAAAFwAAABwAAAAgAwIBJAUDAicGBAIqBQUCKwICAi0FAwMvCQcEMQgH + BjACAwQwAAECMQYFBTURDgg5GRMJPBwWCz0cFgs9GRMJPBEOCDkGBQU1AAECMQICBDAIBwYwCQcEMQUD + Ay8CAgItBQUCKwYEAioFAwInAwIBJAAAACAAAAAcAAAAFwAAABIAAAAOAAAACgAAAAcAAAAEAAAAAgAA + AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAUAAAAIAAAADQAAABIAAAAXAQAAHQIBASIDAgEmBgMDKgQD + AywAAAEtBQQEMRYRCTckHA0+OCoTSlU/G19sUCF1elomhoZjKZWOaCufkmstqphwL7Kccy+3nnQwup51 + MLqccy+3mXEvspNsLaqOaSufh2QqlHtbJ4ZtTyJ1Vj8cXzgpE0okHA0+FhEJNwUEBDEAAAEtBAMDLAYD + AyoDAgEmAgEBIgAAAB0AAAAXAAAAEgAAAA0AAAAIAAAABQAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAYAAAAKAAAADwAA + ABUAAAAcAgIAIgQCAicFBAErBAMDLgUEBDAWEQo5QjEWT2BHH2d6WiaHkGssq6B2MMWtfzTbt4Y367+M + OfXEjzv5yZM8/M2WPv7PmD7/0Zk//9KaP//Tmz//05s//9OaP//Smj//0Jg+/82WPv3KlD37xZA7+cCM + OvW4iDjrroA126F2McWRbCyre1smh2FHH2dCMRZPFhEKOQUEBDAEAwMuBQQBKwQCAicCAgAiAAAAHAAA + ABUAAAAPAAAACgAAAAYAAAADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAABAAAAAwAAAAYAAAAKAAAAEAAAABcBAQAeAwIBJAYDAyoBAAEsBwUEMSIaDDxSPBtaelomhpRt + LbGoezPVt4Y37MSQO/nMlj3/0Zk//9WcQP/YnkH/2J5B/9ieQP/XnkD/155A/9eeQP7XnkD+155A/tee + QP7XnkD+155A/teeQP7XnkD+155A/9eeQP/YnkD/2J5B/9ieQf/WnED/0po//82WPf/FkTv5uog47Kp8 + M9WVbi6xelomh1E8GlshGQw8BwUFMgEAASwGAwMqAwIBJAEBAB4AAAAXAAAAEAAAAAoAAAAGAAAAAwAA + AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAYAAAAKAAAAEQAAABgBAQAgBAMBJgUD + AysDAgMvGRIKOVQ+G1p+XSiKm3MvvrKDNubCjjr5zZY+/tWcQP/XnUD/2J9B/tieQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/2J5A/9ifQf7XnUD/1ZxA/8+YPv7Djzv5s4M25pxyL799XCeLUj0bWhkT + CzkDAgMvBQMDKwQDASYBAQAfAAAAGAAAABEAAAAKAAAABgAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAA + AAQAAAAJAAAADwAAABcBAQAfBAMBJgMCASsIBgQwMSQRQ2xQIXOUbS2xr4A14cOOO/nPmD7/1p1A/9ie + QP/XnkD+155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/tieQP/WnUD/0Jg+/8SPO/mvgTXhlG0usWtOInQwIxJDCAYEMAMCASsEAwEnAQEAHwAA + ABcAAAAPAAAACQAAAAQAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAAHAAAADQAAABQBAQAdBQQBJQUFAiwGBQQwRDMXTXxc + J4ahdjHKuog48syVPf7VnED/155B/9ieQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/2J5B/9Wc + QP/Nlj3+uok486B2Mcp6WiaGQjIWTgYFBDAEAwIsBAMBJQEBAB0AAAAUAAAADQAAAAcAAAADAAAAAQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAEAAAACgAA + ABEAAAAaAwIBIwUDAioHBgQvQDAVSoFeKIynejLTv4w6+NCYPv/XnkD/155A/teeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP7XnkD/0Jk+/8CNOvimejLTfl0njT0u + FEoGBQQvBQMCKgMCASMAAAAaAAAAEQAAAAoAAAAEAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAEAAAADAAAABwAAAA0AAAAWAQAAHwQDASgDAgIuNScSRHxbJoOnejPSwY06+dKa + P//YnkD+2J5A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/2J5B/tObP//Bjjr5pXky03hZJoQzJhJEAwMCLgQDASgBAAAfAAAAFgAA + AA0AAAAHAAAAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAgAAAAQAAAAGQQC + AiQDAQIqFBAINWlOIWuedDDBvos59dGZP//XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ie + Qf/Smj//vYs59ZtyL8JlSh9sEw8INQMBAioEAgIkAAAAGQAAABAAAAAIAAAAAwAAAAEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAgAAAAQAAAAKAAAAEwIBAR0FAwInAQECLUg1GE2QaiyjtoU3686WPf/XnUD/2J5A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/zpc+/7SEN+yLZiqlRTMXTwEB + Ai4FAwInAgEBHQAAABMAAAAKAAAABAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAFAAAADAAAABUDAgEgBAIBKBoU + CTVxUyNxpnkyzcWQO/zVnED/2J5A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/1ZxA/8WQO/yidzHPak8hcxkTCTUEAgEoAwIBIAAAABUAAAAMAAAABQAA + AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAACAAAABgAAAA0AAAAXAwMBIgIBAis4KhNDj2ksm7iHN+7QmD7/155A/teeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/2J5B/tCZ + Pv+2hTfviGQqnTUnEkUDAgIrAwMBIwAAABcAAAANAAAABgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAYAAAAOAQEAGQQCAiQIBgMsXEQdWaB2 + Mb3Djzr51ZxA/9ieQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/tacQP/Cjjr5mnAvv1U/G1sIBgMtBAICJAEB + ABkAAAAOAAAABgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAIAAAAHAAAADwEBABkFAwIlCQcDLnVWJHCvgDXZzJY9/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/LlT3/qHwz2m1QInIJBwMvBQMCJgEBABkAAAAPAAAABwAAAAIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAABgAAAA8CAQAaAwIBJhIOBjJ/Xid+toY35tGZ + P//YnkD+155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ieQP7RmT7/sYI26HZX + JYARDQYzBAIBJgIBABoAAAAPAAAABgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAA + AAYAAAAOAQEAGgYFASYjGgw4jGcrkLuJOO7Tmz//2J5A/teeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP7UnD//toY374FeKJIgGAs5BgUBJwEBABoAAAAOAAAABgAA + AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAFAAAADQIBABkBAQEkLCENOpJrLZnAjTrz1Js//9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/VnED/u4k49IdjKZwpHw07AgEBJAIBABkAAAANAAAABQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABQAA + AAwBAQAXBgQBJSwiDjmXby2fw4469tadQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/WnUD/vYs594tmKqEqHg07BwUBJQEB + ABcAAAAMAAAABQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAKAQEAFgMCASImHAw2lm4umMSPO/bVnED+155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/VnED+vos59ohkKZsiGgw4AwIBIgEBABYAAAAKAAAABAAAAAEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAACQEB + ABMGBAIhFQ8IMJJrLY/Djzrz1p1A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/WnUD/vIo59INh + KZMUDggxBgQCIQEBABMAAAAJAAAAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAYAAAAQBQICHQgGAyqHYyl8wI067tWcQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/VnED/uIc38HhYJYAIBgMrBQICHQAAABAAAAAGAAAAAgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAADQQD + ARoEAwEnf10mbr2LOebVnED/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/UnD//s4M26HBSInEFAwEnBAQBGgAAAA0AAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAoFAwIWAQABI2hNIFW5hzjY05o//9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/RmT//qn0021tCHFoDAQEjBAMCFgAA + AAoAAAADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAHAwICEgAA + AB9GNBU/roA0vdCZPv7XnkD+155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP7Mlj3/nXIwwTwsEkEAAAEfAwICEgAAAAcAAAACAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAABAAAABQAAAA0GBAMbHRUJLaF2MJnMlT35155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeP//XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP7Djzv6jGcrnhoT + CC8HBAMbAAAADQAAAAUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAJBgQDFgAA + ACOGYiluxpE779adQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ifQ//cq1n/2qVN/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9adQP+5hzfwc1QjcwAAACQGAwMWAAAACQAAAAMAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAABAAAABgIBARAAAAEdW0MbR7mIN83Um0D/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/2KFH/+XCiP/pypf/26dS/9eeP//XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/tGZ + P/+nejPRTjkYSgAAAR0CAQEQAAAABgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMBAAEKBgMDGBwU + CSypfDOh0Jg+/deeQf7XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeP//Zokf/6cqX//jw5P/qzZ7/2aNL/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155B/seSPP2SayynGBEILQcDAxgBAAELAAAAAwAA + AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAACAAAABwcEAxECAAIghWEoZciSPOvXnUD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/154//9iiR//pyZf//Pr3//n06//mw4v/2aRM/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/1p1A/reHN+1uUSFqBAICIAcEAhEAAAAHAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMCAwALAAAAGE05 + Fzm6iDe/1ZtA/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/Xnj//2KJH/+nJl//8+vj//f7+//jv + 4//nxY7/2aJJ/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/0Jg+/6F3McVBMBQ9AgIAGAID + AAsAAAADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAABAAAABggGAhIHBQMgnHMvf8+YPvbXnkH/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeP//Yokf/6cmX//z69//9/f7//f39//jw4v/kvX//2aJI/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/YnkH/wY4694JhKIQIBgMhCAYCEgAAAAYAAAABAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMEBAELAQEAGFxC + G0DCjjrR151A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/154//9iiR//pyZf//Pr4//39 + /f/9/f3//f39//bs3P/kv4L/2KFG/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/Tmz//q3401Us3 + F0MCAgAYBQMBCwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAABAAAABQkHARACAgEgpXgxh9KaP/rYnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/Xnj//2KJH/+nJl//8+vj//f39//39/f/9/f3//fz8//br2f/huHX/2KFF/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/FkDv7iWQpjQQCASEJBwERAAAABQAAAAEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIDAwAJAAAAFWhL + H0HGkTzS2J5B/9eeQP7XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeP//Yokf/6cmX//z6 + +P/9/f3//f39//39/f/9/f3//f39//Xo1P/iuXf/2KBE/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/tSb + QP+tfzTWVD0ZRQAAABUDAwAJAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAABAAAABAsIAw4HBQIdpnkygNObP/nYnkH+155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/154//9iiR//pyZf//Pr4//39/f/9/f3//f39//39/f/9/f3//fz6//Tl + zv/fs2v/159C/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/2J5B/sSQO/qJZCmHCQYCHgsIAw4AAAAEAAAAAQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGBQEHBgYAE1Q+ + GTTFkTvI155B/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/Xnj//2KJH/+nJ + l//8+vj//f39//39/f/9/f3//f39//39/f/9/f3//fz7//Pky//gtW3/159C/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/0po//6p8M85FMRQ4BwcBEwYFAQcAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAwkGBAsCAAEZnHMvatObP/LYnkH/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeP//Yokf/6cmX//z6+P/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//Pv4//Hfwf/er2H/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/wI069H5cJnIDAgIZCQYECwAA + AAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFCgQFDzUn + ESfAjTqt155B/9eeQP7XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/154//9ii + R//pyZf//Pr4//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//Pv5//Hfwv/esWb/155B/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP7QmD7/n3YwtCwhDioLBQYQAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQoJAQgAAAAShmIoTM+YPt/YnkH/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/Xnj//2KJH/+nJl//8+vj//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//Pn1/+/Ztv/drFz/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9adQP+2hjfkaE0gUgAA + ABIJCQEIAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEw0GCw4K + BRmygjWC1p1A+teeQP7XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + P//Yokf/6cmX//z6+P/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f7//Pn2/+/Y + tf/drV3/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/2J5B/siTPPuOaSuKDwsFGxMNBgsAAAADAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQUEAAQEBAANRjQVKMiSPLrYnkH/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/154//9iiR//pyZf//Pr4//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f7/+/fx/+3Uq//bqVX/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/0po//6h7 + M8I2JxErBgUADQUEAAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDgoFBgYE + AhGOaCpK05s/5tieQf/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/Xnj//2KJH/+nJl//8+vj//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f7/+/fy/+zSqP/bqVX/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnUD/vIk56m1PIVMJBQMSDgoEBgAAAAEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIUEQMIAAAAFLSENnvXnUH5155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeP//Yokf/6cmX//z6+P/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f7/+vTs/+rOof/apk//154//9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ie + QP/Ikzz6jWgrhAAAABUUEQMIAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxcP + Bws+LBMhyJI8rdieQf/XnkD+155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/154//9iiR//pyZf//Pr4//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3/+vTs/+rMnP/apU7/154//9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/2J5A/tKZP/+keDK0MSMPJRcPBwsAAAADAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQADAAAADIRgJznRmT/S2J9B/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/Xnj//2KJH/+nJl//8+vj//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3/+fHm/+jJ + lv/Zo0r/154//9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/1p1A/7SFNthlSh5AAAAADAABAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARsV + BgUAAAAMpXkyV9acQOvYnkH/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeP//Yokf/6cmX//z6+P/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3/+PLm/+fGj//Zo0r/154//9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/YnkH/wY06735cJl4AAAANGRQFBgAA + AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIxcMBwwHBRK7iTl82J5B/NeeQf7XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/154//9iiR//pyZf//Pr4//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/fz/9+7g/+bDi//YoUb/154//9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9ieQf7LlT38lGwthg8KBhQiFgsHAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAEQCAcIQS4UG8iSPKLZn0H/155A/teeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/Xnj//2KJH/+nJl//8+vj//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/Pz/9+7g/+S/gv/YoUf/154//9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/2J5A/tGZPv+leTGsMyQPHRMK + CAgAAAABAAAAAAAAAAAAAAAAAAAAAAAAAABkVw0ACwoAAgAAAAhcQxwizpg+wdmfQf/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeP//Yokf/6cmX//z6 + +P/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/Pz/9erX/+S+gP/YoEP/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/1ZxA/7CBNchCMBQmAgEACAoKAAJLQQoAAAAAAAAAAAAAAAAAAAAAAAAA + AAAcEQsCBwAFCodiKTPUmz/c2J5B/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/154//9iiR//pyZf//Pr4//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/Pv/9uvZ/+K5 + dv/YoEX/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnUH/uog34GRK + HjoLBAYKGxALAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8VCgMLBgQLpXkxTNadQO7YnkH/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/Xnj//2KJH/+nJ + l//8+vj//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/Pv/8+TM/+G3c//Xn0L/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9ieQf/Cjjrwf10mVQ4IBQweFAoDAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAIBcJAwsIAg21hDZj155A9deeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeP//Yokf/6cmX//z6+P/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/8+/r/9ObR/9+zaf/YoEP/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/8eS + PPeOaCtsDgoEDR8WCQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVDgcEAAABDL+MOXfXnkH4155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/154//9ii + R//pyZf//Pr4//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/Pv/8d/C/9+yaf/Xn0H/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/y5U9+phwLoAAAAIMFQ4HBAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAASAfAQQAAAAMxpA7idieQfzXnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/Xnj//2KJH/+nJl//8+vj//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/8+/n/8uDF/92vYv/Xn0L/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/Plz79oHYwkAAAAAwfHgEEAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABKxoQBQwKBQ/JkzyX2J5B/tee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + P//Yokf/6cmX//z6+P/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/8+/n/79m2/92t + X//XnkH/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/tGZP/+leTKeDAkFEigYDwUAAAABAAAAAAAA + AAAAAAAAAAAAAAAAAAE4IxUFRC8UE82WPaTYnkH/155A/teeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/154//9iiR//pyZf//Pr4//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/8+vf/8Nu6/9ysW//Xn0H/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD+05s//6x+M6s0JBEYNiMTBgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAS8eEAZcQhwXz5g+rtie + Qf/XnkD+155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/Xnj//2KJH/+nJl//8+vj//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/7+fX/7NOq/9upV//XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP7Um0D/sIE0tEYzFhwvHhEGAAAAAQAA + AAAAAAAAAAAAAAAAAAAAAAABKRoPBmlMIBnQmT+12J5B/9eeQP7XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeP//Yokf/6cmX//z6+P/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/v/7+PP/7dWu/9uoVf/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/tWcQP+0gza7UzoYHioaDwYAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAE5Kg4FcVMiGtGZ + PrjYnkH/155A/teeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/154//9iiR//pyZf//Pr4//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/69u//6s2d/9qmT//Xnj//155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD+1ZxA/7WENr5aQBkfOSsPBgAA + AAEAAAAAAAAAAAAAAAAAAAAAAAAAADwsDwV1VSIa0Zk+uNieQf/XnkD+155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/Xnj//2KJH/+nJl//8+vj//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/v/69vD/69Ci/9qm + UP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP7VnED/tYU2vltCGh89LRAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANCATBHNU + IhjSmj+12J5B/9eeQP7XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeP//Yokf/6cmX//z6+P/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/58+n/6MiU/9qkTP/Xnj//155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/tWcQP+1hTa6WUAaHTUh + EwUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBKRcEa04gFdGZP67YnkH/155A/teeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/154//9iiR//pyZf//Pr4//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /v/58uj/6MiU/9mkS//XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD+1ZtA/7ODNbRSPRcaPSYWBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFM0 + HgRbQhwQ0Jg+pdieQf/XnkD+155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/Xnj//2KJH/+nJl//8+vj//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/v/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/37+H/5cGH/9miSP/Xnj//155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP7Tmz//sIE0q0Uy + FhVKLxoEAAAAAAAAAAAAAAAAAAAAAAAAAACCRD4AYC4xAyQXDArPlz6W2J5B/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeP//YoUf/6cmX//z6 + 9//9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/v/7+PT/+fLo//38+//9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/37uD/5cKI/9iiSP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/tKaP/+rfTOdHRMKDlQpKwNpNzIAAAAAAAAAAAAAAAAAAAAAACQb + CgBVPhcCAAAABs2WPYfYnkH8155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/154//9ihR//pyZf//Pr3//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f7///ft3v/pypn/9ejT//38+//9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/P/27Nv/471//9ih + Rf/Xnj//155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/YnkD/0Jg+/ah7 + Mo4AAAAHUDsWAiMaCQAAAAAAAAAAAAAAAAAAAAAAPzMNADUvCgEAAAAFyZM9ddieQfnYnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/Xnj//2KJH/+nJ + l//8+vj//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/v//9urZ/96wZP/ht3P/8+TM//z7 + +v/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/P/26tj/47x9/9igRP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP7Nlj36pHgxfQAAAAU2MAoBPzMNAAAAAAAAAAAAAAAAAAAA + AABuUB4AVj8XARsTBQbGkDte2J5B9deeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeP//Yokf/6cmX//z6+P/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//3+///26tn/3a5f/9igQ//htnD/8+LJ//z7+f/9/f7//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//38 + +v/159P/4rh0/9ifQ//XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/8mT + PPadcy9nIBcHBlE7FgFmShsAAAAAAAAAAAAAAAAAAAAAAH1bIgBrTh0BKB0JBcCMOkbYnkHu2J5B/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/154//9ii + R//pyZf//Pr4//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f7///bq2f/drmD/150+/9ef + Qv/gs2v/8d/B//z6+P/9/f7//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//38+//05c7/4bdy/9efQv/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/YnkH/xZE78JduLU8rHwoFYEYaAW1QHgAAAAAAAAAAAAAA + AAAAAAAAi1M4ALluSwASABEDsYI2LNedQN3Zn0H/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/Xnj//2KJH/+nJl//8+vj//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/v//9urZ/92uYP/XnT//155A/9efQv/fsWf/8d6///z59v/9/f7//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//z7+P/z48r/37Nq/9eeQf/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ie + Qf/AjTnghGIoMhsGEgOPVToAckQuAAAAAAAAAAAAAAAAAAAAAAB/dAsAvasRAAARAAKacC4Y1ZxAwdmf + Qf/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + P//Yokf/6cmX//z6+P/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//3+///26tn/3a5g/9ed + P//XnkD/155A/9eeQf/esGT/79m3//v49P/9/f7//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//z7+f/x4MP/37Np/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/1ZxA/7mHN8dwUiIbCh4AArGgEAB6bwoAAAAAAAAA + AAAAAAAAAAAAAEZHAAAADwAATT8MAolkKQ7Smj+g2Z9B/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/154//9iiR//pyZf//Pr4//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f7///bq2f/drmD/150//9eeQP/XnkD/155A/9efQf/drV7/7tex//v3 + 8P/9/f7//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//z59v/w3sD/3a5g/9eeQf/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/Smj//soI2qWhMIBBZSA8CABAAAEdIAAAAAAAAAAAAAAAAAAAAAAAAAAAAALR4PACfZzcBRTAXBs+Y + PnjZn0H92J5A/teeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/Xnj//2KJH/+nJl//8+vj//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/v//9urZ/92u + YP/XnT//155A/9eeQP/XnkD/155A/9eeQP/cq1n/69Gl//r28P/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//v6 + 9v/v2rf/3q5h/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/2J9A/s6XPf2pfDOBOygVCIpZMAKVYzIAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAt25JAL9yTQEAAAAAyJI8TtieQezYn0H/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeP//Yokf/6cmX//z6+P/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//3+///26tn/3a5g/9edP//XnkD/155A/9eeQP/XnkD/155A/9ee + QP/bqVT/69Gl//r17P/9/f7//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f3+//v48//u2LT/26lW/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/YnkH+yJI87590MFQAAAABlVk8AY5WOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADixB0A/+AeAAAA + AADAjDkt151A0tmfQf/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/154//9iiR//pyZf//Pr4//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f7///bq + 2f/drmD/150//9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/aqFP/6cuZ//n07P/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//v49P/s0qj/3KpY/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9edQP+/jDnXlGwsMgAAAADjyBsAy7AaAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcPx4AfU8rAqF1MBHVnD+r2Z9B/9ieQP7XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/Xnj//2KJH/+nJl//8+vj//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/v//9urZ/92uYP/XnT//155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/apU3/6cyb//nx5v/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f3+//r27v/s0af/2qVO/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/YnkD+1JtA/7eGNrF3VyQWdksoAlM5GwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGdO + GQCMdxUBAAAAAtGZPnTZn0H52J5A/teeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeP//Yokf/6cmX//z6+P/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//3+ + ///26tn/3a5g/9edP//XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeP//apEz/5sSL//ny + 5//9/Pz//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f3+//v48v/py5r/2qdS/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ifQP7Olz76rX40fAAAAAONeBUBZU0ZAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArXY3AMqKQQAtFhICyJM9PtieQejYnkH/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/154//9iiR//pyZf//Pr4//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f7///bq2f/drmD/150//9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/Yokj/58eR//fv4f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f3+//nz + 6f/pyZf/2aNL/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/2J5B/8aRO+ueczBGOSAVAq53OACZaDEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AACSghAAtrAHAAADAAGwgDYV1p1AutmfQf/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/Xnj//2KJH/+nJl//8+vj//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/v//9urZ/92uYP/XnT//155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + P//Yokf/5L6B//ft3v/8/Pr//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//r17f/nxpH/2qVN/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/VnED/u4k4wIJfKBgbGAABop0GAId4 + DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC+dEsAvWpTAXdSJgXSmj972Z9B/Nie + QP7XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeP//Yokf/6cmX//z6 + +P/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//3+///26tn/3a5g/9edP//XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/YoEX/5cGF//br2f/9/fz//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//jw4//mxIz/2KJH/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/2J5B/s+YPv2xgjWDWz0cB6pgSQGkZEEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAO+CbgD+iXYA//+JAMuUPTvYnkHf2J9B/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/154//9iiR//pyZf//Pr4//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f7///bq2f/drmD/150//9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/YoET/4bh1//Xo1P/8+/n//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//ny6P/lwof/2aNJ/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/xZA746J3MUH//4YA8oJxAd55 + ZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJMKACQVDgBtIM3Etad + QKvZn0H/155A/teeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/Xnj//2KFH/+nJ + l//8+vf//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/v//9urZ/92uYP/XnT//155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/YoET/4rp5//Tn + 0P/9/Pv//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//bs3P/kvX//2KBE/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/2J5A/tObP/+6iDiwiGMrFZpcOQFrRyYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAnVxAALlxSAEAABMB0po/XtmfQfTYnkH/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + Qf/Xn0L/159C/9efQv/Xn0L/159C/9efQv/Zo0n/6cqY//z6+P/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//3+///26tn/3a5g/9edP//XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/Xn0L/37Jn//Lgxf/8+vf//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//fu + 4P/kvX7/2KFG/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/YnkH+y5U99q6ANGUGABcCn2E+AY1T + OgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACyiycAyJ0rAB4k + AAHDjzse155BydmfQf/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/2qZQ/+K5dv/kvoH/5L6A/+S+gP/kvoD/5L6A/+XA + hf/v27r//Pv5//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f7///bq2f/drmD/150//9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/Yn0L/4LNr//LgxP/8+/n//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//fz7//Tn0v/iuXb/2J9D/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9WdQP/AjTrNmXEuITk1AAGphSUAm3kiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKfU4AynRVAaNvNQPUmz922Z9B+tifQP7XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + P//gtGz/9OjU//r38P/69u//+vbv//r27//69u//+vbw//v59f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/v//9urZ/92uYP/XnT//155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/Xn0H/3a5g/+/auP/8+fT//f3+//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//fz8//Xo1P/iuHT/2KBE/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/Yn0D+zpc9+7OENn10UCYFv25PAbRw + RQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+B + gwD/i5AA//91AMuWPSzYnkHS2Z9B/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/150//+C2b//37uD//f7+//39/v/9/f7//f3+//39 + /v/9/f7//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//3+///26tn/3a5g/9ed + P//XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/Xn0H/3a9h/+/Ztv/7+fX//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//Pv6//LiyP/fs2v/159B/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9adQP/EkDrWo3gxMf//ZAC2Wl0AqlVWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJZaPQDLZWYBjmcpBdWcP37Zn0H62J9A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnT//4LZv//fu3//9/f7//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f7///bq2f/drmD/150//9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/3KtZ/+3U + rf/69/D//f3+//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//Pv5//Lhxv/fsmj/159C/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/YnkD/z5g++7eGNoRoSx4GolBQAX9L + MwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAwXFRANB5VwBGAEQBzZc+KNieQdLZn0H/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9edP//gtm//9+7f//39/v/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/v//9urZ/92u + YP/XnT//155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/3KpZ/+zSqf/69vD//f3+//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//Pr3//Dd + vf/er2P/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9adQP/FkDvVpnozLFoORQG3a00ArGRJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/mswA87wPAP/AWgDCjzUD1p1Ac9mf + QfjYn0D+155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/150//+C2b//37t///f3+//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//3+///26tn/3a5g/9edP//XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/26hT/+rPov/69Oz//f3+//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f7//Pr2/+/bu//drV//155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/Xn0D+z5g++bmIN3mMaSUE/+FqAPSv + DgD/v/0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD//wAA//8AAP/+agDTmkEf2J5Bv9mfQf/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnT//4LZv//fu4P/9/v7//f3+//39 + /v/9/f7//f3+//39/v/9/f7//f3+//39/v/9/f7//f3+//39/v/9/f7//f3+//39/v/9/f7//v7///br + 2f/drmD/150//9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/26hU/+rMnf/59Or//f3+//39 + /v/9/f7//f3+//39/v/9/f7//f3+//39/v/9/f7//f3+//39/v/9/f7//f3+//39/v/9/f7//f3+//39 + /v/9/f7/+/n1/+7Xs//drFz/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9WdQP/EkDvDrH00Iv//dwD//wAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADGdVEA1YJTAF4h + PQHVnEBW2Z9B7difQf7XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeP//gtW3/9erY//z59v/8+fX//Pn1//z59f/8+fX//Pn1//z59f/8+fX//Pn1//z5 + 9f/8+fX//Pn1//z59f/8+fX//Pn1//z59f/8+vf/9OfS/92tX//XnT//155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/2qVP/+nJlv/37+H//Pn1//z59f/8+fX//Pn1//z59f/8+fX//Pn1//z5 + 9f/8+fX//Pn1//z59f/8+fX//Pn1//z59f/8+fX//Pn1//z59f/8+fX/+fPq/+zSqP/bp1P/154//9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD+zZY97riHN1pbJTECtm9HAbBo + SAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+sVQD/3nIAwXpDAceROw3XnkGd2Z9B/tifQP7XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9upV//mxYz/6syb/+rM + m//qzJv/6syb/+rMm//qzJv/6syb/+rMm//qzJv/6syb/+rMm//qzJv/6syb/+rMm//qzJv/6syb/+rM + nP/mw4n/2qZP/9eeP//XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/Xnj//2qVO/+O9 + f//pzJr/6syb/+rMm//qzJv/6syb/+rMm//qzJv/6syb/+rMm//qzJv/6syb/+rMm//qzJv/6syb/+rM + m//qzJv/6syb/+rMm//qzJv/58WO/9yrW//Xnj//155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/tObP//CjjqhnnIvD7RzPgHLh0UAwIFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOfK + HgDu0xsA5aVJANKZPy7YnkHO2Z9B/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155B/9igQ//YoET/2KBD/9igQ//YoEP/2KBD/9igQ//YoEP/2KBD/9ig + Q//YoEP/2KBD/9igQ//YoEP/2KBD/9igQ//YoEP/2KBE/9ifQ//XnkH/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/159C/9igQ//YoEP/2KBD/9igQ//YoEP/2KBD/9ig + Q//YoEP/2KBD/9igQ//YoEP/2KBD/9igQ//YoEP/2KBD/9igQ//YoEP/2KBD/9igRP/YoET/159C/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/WnkD/yZM80bKCNjHVmkcA9tkcAOfK + HgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMaSNADwpkgBpXwvA9acP2HZn0Hy2J9B/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/2J5B/8+YPvO9iThliGQpBMuNPQG8ijEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA6s8bAOXPFgD//wAAzZc8C9edQJPZn0H62J9B/teeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9efQP7Tmz/7xJA7l6h9MQz//wAA5ccWAOrP + GwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/6pWAP+wWQD//0MA0Jg/JNif + Qb/Zn0H/2J5A/teeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/YnkD+1p1A/8qUPcG0hDcn//9RAP+0WwD/qlYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAwIs2AMaKPABOQBEB151AP9mfQdrZn0H/2J5A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQf/Plz7cwIw5QlxRGwHWlEAAyJE4AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAA//8AAP+7 + dgDXik8B151BW9mfQejZn0H/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/Yn0D/0Zo/6cSPO16dYz0C/+KKAP//AAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/gIAA/3yEAP+6egDVmj8H2J5Ac9mfQfHYn0H+155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/tSbP/LJkjx2sYA1CP/ikQD/fIQA/4CAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADAgEAAxIVAAKJbQAHOlj4O2J5AitmfQfbYn0H+155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9if + QP7VnD/3ypQ9jbKAOA++bkkBwoRAAMGBQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/gEAAxYRCAP///wDOmD4U2J9Bldmf + QfrYn0H+155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/Yn0H+155A+82XPZi3hzgW//9PAMeGQwC/gEAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADSpiwA0qoqAMabGQDUmj8Z2J5BntmfQfrYn0H+155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/2J9A/tee + QPrRmT6gwo07GvrDIgDUrCoA1qktAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAD/4CcA/+seAMN8 + TwDZnkEY2Z9BltmfQffYn0H+155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9ieQP7XnkD30po/mMiTPBm6dUkA/+0eAP/gJwD//wAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/3SsA//YVAPHUHgDVm0EU2Z5Bi9mfQfLZn0H/2J5A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/Yn0D/2J5A8tOa + P4zGkD0V//8qAP/4FQD/4iwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP// + AAB+AIEAyZQ3AP//SADUmkAO2Z9BdNmfQejZn0H/2J5A/teeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD+2J5B/9edQOnTmj91xo88D///KgDKlTcAfgCBAP//AAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6ekAAv4FAAJ5YPwHJlj4G2Z5BXNmf + QdvZn0H/2J9B/teeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/159A/tifQf/YnkHb1Js/XbiI + NwepYUMBwoNAAL19QQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAC/gEAAv4BAALdxQQHXnEED2J9BQNmfQcHZn0H72J9B/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9ifQf/Zn0H72J9BwdSdQEHPlz0DvXVEAb+AQAC/gEAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/qlUA/6pVAP+t + WQDBjC4A2Z5BJdmfQZTZn0Hy2Z9B/9ifQP7XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP7Yn0H/2Z9B8tmfQZTXnUAlqHoqAP+v + WQD/q1UA/6tVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAA//8AAOCaRQAIAEwA155AC9ieQWLZn0HQ2Z9B/dif + Qf7XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/Yn0H+2Z9B/dmfQdDYnkFi155ACwoAUwDinEUA//8AAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA/6tWAP+sVgD/k2MAx4tCA9ieQS/YnkGg2Z9B7tmfQf/Yn0D+155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD+2J9B/9mfQe7YnkGg2J5BL8eLQgP/k2MA/6xWAP+r + VgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAypc1APXnDwC4eD4Bn1w2ANab + Qg/Zn0FZ2Z9BxNmfQfjZn0H/2J5B/teeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD+2J9B/9mf + QfjZn0HE2Z9BWdabQg+fXDYAuHg+AfXnDwDKlzUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAMaVMQDjzRMAxopOAeGlUAHZoEEh2J5Bd9mfQdXZn0H72Z9B/9if + QP7XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD+2J9B/9mfQfvZn0HV2Z9BdtmgQSHhpVABxopOAePNEwDGlTEAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+q + VQD/q1gA7dAbAYdJLQDbnUUE2J9CKtmfQYLZn0HV2Z9B+tmfQf/Yn0D/155A/teeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP7YnkD/2J9B/9ifQfrZn0HV2Z9Bg9if + QirgoEYEh0ktAO3QGwH/q1gA/6pVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/f4EA/3+BAP+fcgEMAIwA1pxIBNme + Qi7Zn0F72Z9BztmfQffZn0H/2J9B/tieQP7XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ie + QP7Yn0D+2J9B/9mfQffZn0HO2Z9Be9qfQi7ZlkMFAgCRAP+ecgH/f4EA/3+BAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD/gIAA/4CqANp/XADzpFQB/9emAN6gQQTZn0Ae2Z9CY9mfQbDZn0Hj2Z9B/dif + Qf/YnkH/2J5A/9eeQP7XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD+2J5A/9ieQf/Yn0H/2Z9B/dmfQePZn0Gw2Z9CY9mfQB7eoEEE/+ezAPOm + VQHaf1wA/4CqAP+AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9+ + hAD/foQA/6BzAY5EQwC6cUYB2Z9DEtmfQT7Zn0GB2Z9Bv9mfQezZn0H62Z9B/9ifQf/Yn0H+155A/tee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9ee + QP/XnkD/155A/9eeQP/XnkD/155A/9eeQP/XnkD/155A/9eeQP7YnkD+2J5B/9ifQf/Zn0H62Z9B7Nmf + Qb/Zn0GB2Z9BPtmfQxK6cUYBjkRDAP+gcwH/foQA/36EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAD//wAA0KMtAN+pPwD/uGIAAAAAAOGi + SATbnkMV2aBBQtmfQXnZn0Gx2Z9B1tmfQfDZn0H+2Z9B/9mfQf/YnkH/2J5A/9eeQP/YnkD+155A/tee + QP7XnkD+155A/teeQP7XnkD+155A/teeQP7XnkD+155A/teeQP7XnkD+155A/teeQP/XnkD/2J5B/9if + Qf/Zn0H/2Z9B/tmfQfDZn0HW2Z9BsdmfQXnZoEFC255DFeGiSAQAAAAA/7hiAN+pPwDQoy0A//8AAP// + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+ZbAD/iHsA/6BoAbohkgCBMUIA3aFBAdmeQBHYnkEt2Z9AUtqf + QX/Zn0Gm2Z9ByNmfQePZn0Hx2Z9B9tmfQfrZn0H+2Z9B/9ieQf/YnkH/2J5B/9ieQf/YnkH/2J5B/9ie + Qf/YnkH/2Z9B/9mfQf7Zn0H62Z9B9tmfQfHZn0Hj2Z9ByNmfQabZn0F+2Z9AUtieQS3ZnkAR3aFBAYEx + QgC6IZIA/6BoAf+IewD/mWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADSgFMA635uANaMSgD/jXgB7qBwAQAAIAD//2kA46NHBNueRAvYn0MW2Z9CLtmfQEnZn0Fj2Z9Bedie + QYzZn0Ge2Z9BrNmfQbbZn0G82Z9Bv9mfQb/Zn0G82Z9BttmfQazZn0Ge2J5BjNmfQXnZn0Fj2Z9ASdmf + Qi7Yn0MW255EC+GkSgP///8AAAAbAO6gcAH/jXgB1oxKAOt+bgDSgFMAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/p1oA/94hAP+Z + awH/rGAB/2SnAP/B6gC9f2oAqngnAcCcGgDRpzoA0ao7AdudPwfZnD8M2KBBEdmgQxTaoEIX2qBCF9mg + QxTYoEER2Zw/DNudPwfRqjsB0ac6AMCcGgCqeCcBvX9qAP/B6gD/Y6YA/6xgAf+ZagH/3iEA/6daAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAD//wAA/6NgAOOUUADLkzkB951ZAP/P + MQD/mW4B9qlcAbJxQwGhWz8Bj0U8AX0yOgF9MjoBj0U8AaFbPwGycUMB9qlcAf+ZbgH/zzEA951ZAMuT + OQHjlFAA/6NgAP//AAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA////////4AAAB///////////////+AAAAAAf/////////////+AAAAAA + B/////////////8AAAAAAAD////////////8AAAAAAAAP///////////4AAAAAAAAAf//////////8AA + AAAAAAAD//////////8AAAAAAAAAAP/////////+AAAAAAAAAAB/////////+AAAAAAAAAAAH/////// + //AAAAAAAAAAAA/////////AAAAAAAAAAAAD////////wAAAAAAAAAAAA////////wAAAAAAAAAAAAD/ + //////4AAAAAAAAAAAAAf//////8AAAAAAAAAAAAAD//////+AAAAAAAAAAAAAAf//////AAAAAAAAAA + AAAAD//////gAAAAAAAAAAAAAAf/////wAAAAAAAAAAAAAAD/////4AAAAAAAAAAAAAAAf////8AAAAA + AAAAAAAAAAD////+AAAAAAAAAAAAAAAAf////AAAAAAAAAAAAAAAAD////gAAAAAAAAAAAAAAAAf///4 + AAAAAAAAAAAAAAAAH///8AAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAP///gAAAAAAAAAAAAAAAA + B///wAAAAAAAAAAAAAAAAAP//8AAAAAAAAAAAAAAAAAD//+AAAAAAAAAAAAAAAAAAf//gAAAAAAAAAAA + AAAAAAH//wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAH/+AAAAAAAAAAAAAAAAAAB//gAAAAAA + AAAAAAAAAAAAf/wAAAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAP/gA + AAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAA + AB/wAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAAAAD+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAA + AAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAA + AAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAA8AA + AAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAA + AAPAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAA + AAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAADwAAAAAAA + AAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAPgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AA + AAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAA + AAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB/AAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAA + AAAAAAAP8AAAAAAAAAAAAAAAAAAAD/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA + AAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/8AAAAAAAAAAAAAAAAAAA//QAAAAAAAAAAAAAAAAAAv/4A + AAAAAAAAAAAAAAAAAH/+AAAAAAAAAAAAAAAAAAB//gAAAAAAAAAAAAAAAAAAf/8AAAAAAAAAAAAAAAAA + AP//QAAAAAAAAAAAAAAAAAL//4AAAAAAAAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAf//wAAAAAAAAAAA + AAAAAAP//9AAAAAAAAAAAAAAAAAL///gAAAAAAAAAAAAAAAAB///4AAAAAAAAAAAAAAAAAf///QAAAAA + AAAAAAAAAAAv///4AAAAAAAAAAAAAAAAH///+AAAAAAAAAAAAAAAAB////0AAAAAAAAAAAAAAAC////+ + AAAAAAAAAAAAAAAAf////gAAAAAAAAAAAAAAAH////8AAAAAAAAAAAAAAAD/////gAAAAAAAAAAAAAAB + /////9AAAAAAAAAAAAAAC//////gAAAAAAAAAAAAAAf/////9AAAAAAAAAAAAAAv//////gAAAAAAAAA + AAAAH//////9AAAAAAAAAAAAAL///////gAAAAAAAAAAAAB///////8AAAAAAAAAAAAA////////gAAA + AAAAAAAAAf///////8AAAAAAAAAAAAP////////wAAAAAAAAAAAP////////+AAAAAAAAAAAH/////// + //4AAAAAAAAAAH//////////AAAAAAAAAAD//////////8AAAAAAAAAD///////////gAAAAAAAAB/// + /////////AAAAAAAAD////////////4QAAAAAAh/////////////4AAAAAAH//////////////gAAAAA + H///////////////gEACAf////////////////AAAA////////////////////////////////////// + //////////////////////////////////8= + + + \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/MainForm.Designer.cs b/v2rayN/v2rayN/Forms/MainForm.Designer.cs new file mode 100644 index 00000000..5b8d5681 --- /dev/null +++ b/v2rayN/v2rayN/Forms/MainForm.Designer.cs @@ -0,0 +1,749 @@ +namespace v2rayN.Forms +{ + partial class MainForm + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows 窗体设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm)); + this.splitContainer1 = new System.Windows.Forms.SplitContainer(); + this.lvServers = new System.Windows.Forms.ListView(); + this.cmsLv = new System.Windows.Forms.ContextMenuStrip(this.components); + this.menuAddVmessServer = new System.Windows.Forms.ToolStripMenuItem(); + this.menuAddShadowsocksServer = new System.Windows.Forms.ToolStripMenuItem(); + this.menuAddSocksServer = new System.Windows.Forms.ToolStripMenuItem(); + this.menuAddCustomServer = new System.Windows.Forms.ToolStripMenuItem(); + this.menuAddServers = new System.Windows.Forms.ToolStripMenuItem(); + this.menuScanScreen = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.menuRemoveServer = new System.Windows.Forms.ToolStripMenuItem(); + this.menuCopyServer = new System.Windows.Forms.ToolStripMenuItem(); + this.menuSetDefaultServer = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); + this.menuMoveTop = new System.Windows.Forms.ToolStripMenuItem(); + this.menuMoveUp = new System.Windows.Forms.ToolStripMenuItem(); + this.menuMoveDown = new System.Windows.Forms.ToolStripMenuItem(); + this.menuMoveBottom = new System.Windows.Forms.ToolStripMenuItem(); + this.menuSelectAll = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator(); + this.menuPingServer = new System.Windows.Forms.ToolStripMenuItem(); + this.menuSpeedServer = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator(); + this.menuExport2ClientConfig = new System.Windows.Forms.ToolStripMenuItem(); + this.menuExport2ServerConfig = new System.Windows.Forms.ToolStripMenuItem(); + this.menuExport2ShareUrl = new System.Windows.Forms.ToolStripMenuItem(); + this.menuExport2SubContent = new System.Windows.Forms.ToolStripMenuItem(); + this.tsbServer = new System.Windows.Forms.ToolStripDropDownButton(); + this.qrCodeControl = new v2rayN.Forms.QRCodeControl(); + this.notifyMain = new System.Windows.Forms.NotifyIcon(this.components); + this.cmsMain = new System.Windows.Forms.ContextMenuStrip(this.components); + this.menuSysAgentEnabled = new System.Windows.Forms.ToolStripMenuItem(); + this.menuSysAgentMode = new System.Windows.Forms.ToolStripMenuItem(); + this.menuGlobal = new System.Windows.Forms.ToolStripMenuItem(); + this.menuGlobalPAC = new System.Windows.Forms.ToolStripMenuItem(); + this.menuKeep = new System.Windows.Forms.ToolStripMenuItem(); + this.menuKeepPAC = new System.Windows.Forms.ToolStripMenuItem(); + this.menuServers = new System.Windows.Forms.ToolStripMenuItem(); + this.menuAddServers2 = new System.Windows.Forms.ToolStripMenuItem(); + this.menuScanScreen2 = new System.Windows.Forms.ToolStripMenuItem(); + this.menuCopyPACUrl = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); + this.menuExit = new System.Windows.Forms.ToolStripMenuItem(); + this.bgwPing = new System.ComponentModel.BackgroundWorker(); + this.bgwScan = new System.ComponentModel.BackgroundWorker(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.txtMsgBox = new System.Windows.Forms.TextBox(); + this.panel1 = new System.Windows.Forms.Panel(); + this.tsMain = new System.Windows.Forms.ToolStrip(); + this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); + this.tsbSub = new System.Windows.Forms.ToolStripDropDownButton(); + this.tsbSubSetting = new System.Windows.Forms.ToolStripMenuItem(); + this.tsbSubUpdate = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator(); + this.tsbOptionSetting = new System.Windows.Forms.ToolStripButton(); + this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator(); + this.tsbReload = new System.Windows.Forms.ToolStripButton(); + this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator(); + this.tsbCheckUpdate = new System.Windows.Forms.ToolStripDropDownButton(); + this.tsbCheckUpdateN = new System.Windows.Forms.ToolStripMenuItem(); + this.tsbCheckUpdateCore = new System.Windows.Forms.ToolStripMenuItem(); + this.tsbCheckUpdatePACList = new System.Windows.Forms.ToolStripMenuItem(); + this.tsbCheckClearPACList = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator10 = new System.Windows.Forms.ToolStripSeparator(); + this.tsbHelp = new System.Windows.Forms.ToolStripDropDownButton(); + this.tsbAbout = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator12 = new System.Windows.Forms.ToolStripSeparator(); + this.tsbLanguageDef = new System.Windows.Forms.ToolStripMenuItem(); + this.tsbLanguageZhHans = new System.Windows.Forms.ToolStripMenuItem(); + this.tsbPromotion = new System.Windows.Forms.ToolStripButton(); + this.toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator(); + this.tsbClose = new System.Windows.Forms.ToolStripButton(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); + this.splitContainer1.Panel1.SuspendLayout(); + this.splitContainer1.Panel2.SuspendLayout(); + this.splitContainer1.SuspendLayout(); + this.cmsLv.SuspendLayout(); + this.cmsMain.SuspendLayout(); + this.groupBox1.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.tsMain.SuspendLayout(); + this.SuspendLayout(); + // + // splitContainer1 + // + resources.ApplyResources(this.splitContainer1, "splitContainer1"); + this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel2; + this.splitContainer1.Name = "splitContainer1"; + // + // splitContainer1.Panel1 + // + resources.ApplyResources(this.splitContainer1.Panel1, "splitContainer1.Panel1"); + this.splitContainer1.Panel1.Controls.Add(this.lvServers); + // + // splitContainer1.Panel2 + // + resources.ApplyResources(this.splitContainer1.Panel2, "splitContainer1.Panel2"); + this.splitContainer1.Panel2.Controls.Add(this.qrCodeControl); + this.splitContainer1.SplitterMoved += new System.Windows.Forms.SplitterEventHandler(this.splitContainer1_SplitterMoved); + // + // lvServers + // + resources.ApplyResources(this.lvServers, "lvServers"); + this.lvServers.ContextMenuStrip = this.cmsLv; + this.lvServers.FullRowSelect = true; + this.lvServers.GridLines = true; + this.lvServers.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.lvServers.Items.AddRange(new System.Windows.Forms.ListViewItem[] { + ((System.Windows.Forms.ListViewItem)(resources.GetObject("lvServers.Items")))}); + this.lvServers.MultiSelect = false; + this.lvServers.Name = "lvServers"; + this.lvServers.UseCompatibleStateImageBehavior = false; + this.lvServers.View = System.Windows.Forms.View.Details; + this.lvServers.SelectedIndexChanged += new System.EventHandler(this.lvServers_SelectedIndexChanged); + this.lvServers.DoubleClick += new System.EventHandler(this.lvServers_DoubleClick); + this.lvServers.KeyDown += new System.Windows.Forms.KeyEventHandler(this.lvServers_KeyDown); + // + // cmsLv + // + resources.ApplyResources(this.cmsLv, "cmsLv"); + this.cmsLv.ImageScalingSize = new System.Drawing.Size(20, 20); + this.cmsLv.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.menuAddVmessServer, + this.menuAddShadowsocksServer, + this.menuAddSocksServer, + this.menuAddCustomServer, + this.menuAddServers, + this.menuScanScreen, + this.toolStripSeparator1, + this.menuRemoveServer, + this.menuCopyServer, + this.menuSetDefaultServer, + this.toolStripSeparator3, + this.menuMoveTop, + this.menuMoveUp, + this.menuMoveDown, + this.menuMoveBottom, + this.menuSelectAll, + this.toolStripSeparator9, + this.menuPingServer, + this.menuSpeedServer, + this.toolStripSeparator6, + this.menuExport2ClientConfig, + this.menuExport2ServerConfig, + this.menuExport2ShareUrl, + this.menuExport2SubContent}); + this.cmsLv.Name = "cmsLv"; + this.cmsLv.OwnerItem = this.tsbServer; + // + // menuAddVmessServer + // + resources.ApplyResources(this.menuAddVmessServer, "menuAddVmessServer"); + this.menuAddVmessServer.Name = "menuAddVmessServer"; + this.menuAddVmessServer.Click += new System.EventHandler(this.menuAddVmessServer_Click); + // + // menuAddShadowsocksServer + // + resources.ApplyResources(this.menuAddShadowsocksServer, "menuAddShadowsocksServer"); + this.menuAddShadowsocksServer.Name = "menuAddShadowsocksServer"; + this.menuAddShadowsocksServer.Click += new System.EventHandler(this.menuAddShadowsocksServer_Click); + // + // menuAddSocksServer + // + resources.ApplyResources(this.menuAddSocksServer, "menuAddSocksServer"); + this.menuAddSocksServer.Name = "menuAddSocksServer"; + this.menuAddSocksServer.Click += new System.EventHandler(this.menuAddSocksServer_Click); + // + // menuAddCustomServer + // + resources.ApplyResources(this.menuAddCustomServer, "menuAddCustomServer"); + this.menuAddCustomServer.Name = "menuAddCustomServer"; + this.menuAddCustomServer.Click += new System.EventHandler(this.menuAddCustomServer_Click); + // + // menuAddServers + // + resources.ApplyResources(this.menuAddServers, "menuAddServers"); + this.menuAddServers.Name = "menuAddServers"; + this.menuAddServers.Click += new System.EventHandler(this.menuAddServers_Click); + // + // menuScanScreen + // + resources.ApplyResources(this.menuScanScreen, "menuScanScreen"); + this.menuScanScreen.Name = "menuScanScreen"; + this.menuScanScreen.Click += new System.EventHandler(this.menuScanScreen_Click); + // + // toolStripSeparator1 + // + resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1"); + this.toolStripSeparator1.Name = "toolStripSeparator1"; + // + // menuRemoveServer + // + resources.ApplyResources(this.menuRemoveServer, "menuRemoveServer"); + this.menuRemoveServer.Name = "menuRemoveServer"; + this.menuRemoveServer.Click += new System.EventHandler(this.menuRemoveServer_Click); + // + // menuCopyServer + // + resources.ApplyResources(this.menuCopyServer, "menuCopyServer"); + this.menuCopyServer.Name = "menuCopyServer"; + this.menuCopyServer.Click += new System.EventHandler(this.menuCopyServer_Click); + // + // menuSetDefaultServer + // + resources.ApplyResources(this.menuSetDefaultServer, "menuSetDefaultServer"); + this.menuSetDefaultServer.Name = "menuSetDefaultServer"; + this.menuSetDefaultServer.Click += new System.EventHandler(this.menuSetDefaultServer_Click); + // + // toolStripSeparator3 + // + resources.ApplyResources(this.toolStripSeparator3, "toolStripSeparator3"); + this.toolStripSeparator3.Name = "toolStripSeparator3"; + // + // menuMoveTop + // + resources.ApplyResources(this.menuMoveTop, "menuMoveTop"); + this.menuMoveTop.Name = "menuMoveTop"; + this.menuMoveTop.Click += new System.EventHandler(this.menuMoveTop_Click); + // + // menuMoveUp + // + resources.ApplyResources(this.menuMoveUp, "menuMoveUp"); + this.menuMoveUp.Name = "menuMoveUp"; + this.menuMoveUp.Click += new System.EventHandler(this.menuMoveUp_Click); + // + // menuMoveDown + // + resources.ApplyResources(this.menuMoveDown, "menuMoveDown"); + this.menuMoveDown.Name = "menuMoveDown"; + this.menuMoveDown.Click += new System.EventHandler(this.menuMoveDown_Click); + // + // menuMoveBottom + // + resources.ApplyResources(this.menuMoveBottom, "menuMoveBottom"); + this.menuMoveBottom.Name = "menuMoveBottom"; + this.menuMoveBottom.Click += new System.EventHandler(this.menuMoveBottom_Click); + // + // menuSelectAll + // + resources.ApplyResources(this.menuSelectAll, "menuSelectAll"); + this.menuSelectAll.Name = "menuSelectAll"; + this.menuSelectAll.Click += new System.EventHandler(this.menuSelectAll_Click); + // + // toolStripSeparator9 + // + resources.ApplyResources(this.toolStripSeparator9, "toolStripSeparator9"); + this.toolStripSeparator9.Name = "toolStripSeparator9"; + // + // menuPingServer + // + resources.ApplyResources(this.menuPingServer, "menuPingServer"); + this.menuPingServer.Name = "menuPingServer"; + this.menuPingServer.Click += new System.EventHandler(this.menuPingServer_Click); + // + // menuSpeedServer + // + resources.ApplyResources(this.menuSpeedServer, "menuSpeedServer"); + this.menuSpeedServer.Name = "menuSpeedServer"; + this.menuSpeedServer.Click += new System.EventHandler(this.menuSpeedServer_Click); + // + // toolStripSeparator6 + // + resources.ApplyResources(this.toolStripSeparator6, "toolStripSeparator6"); + this.toolStripSeparator6.Name = "toolStripSeparator6"; + // + // menuExport2ClientConfig + // + resources.ApplyResources(this.menuExport2ClientConfig, "menuExport2ClientConfig"); + this.menuExport2ClientConfig.Name = "menuExport2ClientConfig"; + this.menuExport2ClientConfig.Click += new System.EventHandler(this.menuExport2ClientConfig_Click); + // + // menuExport2ServerConfig + // + resources.ApplyResources(this.menuExport2ServerConfig, "menuExport2ServerConfig"); + this.menuExport2ServerConfig.Name = "menuExport2ServerConfig"; + this.menuExport2ServerConfig.Click += new System.EventHandler(this.menuExport2ServerConfig_Click); + // + // menuExport2ShareUrl + // + resources.ApplyResources(this.menuExport2ShareUrl, "menuExport2ShareUrl"); + this.menuExport2ShareUrl.Name = "menuExport2ShareUrl"; + this.menuExport2ShareUrl.Click += new System.EventHandler(this.menuExport2ShareUrl_Click); + // + // menuExport2SubContent + // + resources.ApplyResources(this.menuExport2SubContent, "menuExport2SubContent"); + this.menuExport2SubContent.Name = "menuExport2SubContent"; + this.menuExport2SubContent.Click += new System.EventHandler(this.menuExport2SubContent_Click); + // + // tsbServer + // + resources.ApplyResources(this.tsbServer, "tsbServer"); + this.tsbServer.DropDown = this.cmsLv; + this.tsbServer.Image = global::v2rayN.Properties.Resources.server; + this.tsbServer.Name = "tsbServer"; + // + // qrCodeControl + // + resources.ApplyResources(this.qrCodeControl, "qrCodeControl"); + this.qrCodeControl.Name = "qrCodeControl"; + // + // notifyMain + // + resources.ApplyResources(this.notifyMain, "notifyMain"); + this.notifyMain.ContextMenuStrip = this.cmsMain; + this.notifyMain.MouseClick += new System.Windows.Forms.MouseEventHandler(this.notifyMain_MouseClick); + // + // cmsMain + // + resources.ApplyResources(this.cmsMain, "cmsMain"); + this.cmsMain.ImageScalingSize = new System.Drawing.Size(20, 20); + this.cmsMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.menuSysAgentEnabled, + this.menuSysAgentMode, + this.menuServers, + this.menuAddServers2, + this.menuScanScreen2, + this.menuCopyPACUrl, + this.toolStripSeparator2, + this.menuExit}); + this.cmsMain.Name = "contextMenuStrip1"; + this.cmsMain.RenderMode = System.Windows.Forms.ToolStripRenderMode.System; + this.cmsMain.ShowCheckMargin = true; + this.cmsMain.ShowImageMargin = false; + // + // menuSysAgentEnabled + // + resources.ApplyResources(this.menuSysAgentEnabled, "menuSysAgentEnabled"); + this.menuSysAgentEnabled.Name = "menuSysAgentEnabled"; + this.menuSysAgentEnabled.Click += new System.EventHandler(this.menuSysAgentEnabled_Click); + // + // menuSysAgentMode + // + resources.ApplyResources(this.menuSysAgentMode, "menuSysAgentMode"); + this.menuSysAgentMode.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.menuGlobal, + this.menuGlobalPAC, + this.menuKeep, + this.menuKeepPAC}); + this.menuSysAgentMode.Name = "menuSysAgentMode"; + // + // menuGlobal + // + resources.ApplyResources(this.menuGlobal, "menuGlobal"); + this.menuGlobal.Name = "menuGlobal"; + this.menuGlobal.Click += new System.EventHandler(this.menuGlobal_Click); + // + // menuGlobalPAC + // + resources.ApplyResources(this.menuGlobalPAC, "menuGlobalPAC"); + this.menuGlobalPAC.Name = "menuGlobalPAC"; + this.menuGlobalPAC.Click += new System.EventHandler(this.menuGlobalPAC_Click); + // + // menuKeep + // + resources.ApplyResources(this.menuKeep, "menuKeep"); + this.menuKeep.Name = "menuKeep"; + this.menuKeep.Click += new System.EventHandler(this.menuKeep_Click); + // + // menuKeepPAC + // + resources.ApplyResources(this.menuKeepPAC, "menuKeepPAC"); + this.menuKeepPAC.Name = "menuKeepPAC"; + this.menuKeepPAC.Click += new System.EventHandler(this.menuKeepPAC_Click); + // + // menuServers + // + resources.ApplyResources(this.menuServers, "menuServers"); + this.menuServers.Name = "menuServers"; + // + // menuAddServers2 + // + resources.ApplyResources(this.menuAddServers2, "menuAddServers2"); + this.menuAddServers2.Name = "menuAddServers2"; + this.menuAddServers2.Click += new System.EventHandler(this.menuAddServers_Click); + // + // menuScanScreen2 + // + resources.ApplyResources(this.menuScanScreen2, "menuScanScreen2"); + this.menuScanScreen2.Name = "menuScanScreen2"; + this.menuScanScreen2.Click += new System.EventHandler(this.menuScanScreen_Click); + // + // menuCopyPACUrl + // + resources.ApplyResources(this.menuCopyPACUrl, "menuCopyPACUrl"); + this.menuCopyPACUrl.Name = "menuCopyPACUrl"; + this.menuCopyPACUrl.Click += new System.EventHandler(this.menuCopyPACUrl_Click); + // + // toolStripSeparator2 + // + resources.ApplyResources(this.toolStripSeparator2, "toolStripSeparator2"); + this.toolStripSeparator2.Name = "toolStripSeparator2"; + // + // menuExit + // + resources.ApplyResources(this.menuExit, "menuExit"); + this.menuExit.Name = "menuExit"; + this.menuExit.Click += new System.EventHandler(this.menuExit_Click); + // + // bgwPing + // + this.bgwPing.WorkerReportsProgress = true; + this.bgwPing.DoWork += new System.ComponentModel.DoWorkEventHandler(this.bgwPing_DoWork); + this.bgwPing.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.bgwPing_ProgressChanged); + // + // bgwScan + // + this.bgwScan.WorkerReportsProgress = true; + this.bgwScan.DoWork += new System.ComponentModel.DoWorkEventHandler(this.bgwScan_DoWork); + this.bgwScan.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.bgwScan_ProgressChanged); + // + // groupBox1 + // + resources.ApplyResources(this.groupBox1, "groupBox1"); + this.groupBox1.Controls.Add(this.splitContainer1); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.TabStop = false; + // + // groupBox2 + // + resources.ApplyResources(this.groupBox2, "groupBox2"); + this.groupBox2.Controls.Add(this.txtMsgBox); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.TabStop = false; + // + // txtMsgBox + // + resources.ApplyResources(this.txtMsgBox, "txtMsgBox"); + this.txtMsgBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(41)))), ((int)(((byte)(49)))), ((int)(((byte)(52))))); + this.txtMsgBox.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.txtMsgBox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(226)))), ((int)(((byte)(228))))); + this.txtMsgBox.Name = "txtMsgBox"; + this.txtMsgBox.ReadOnly = true; + // + // panel1 + // + resources.ApplyResources(this.panel1, "panel1"); + this.panel1.Name = "panel1"; + // + // tsMain + // + resources.ApplyResources(this.tsMain, "tsMain"); + this.tsMain.ImageScalingSize = new System.Drawing.Size(32, 32); + this.tsMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.tsbServer, + this.toolStripSeparator4, + this.tsbSub, + this.toolStripSeparator8, + this.tsbOptionSetting, + this.toolStripSeparator5, + this.tsbReload, + this.toolStripSeparator7, + this.tsbCheckUpdate, + this.toolStripSeparator10, + this.tsbHelp, + this.tsbPromotion, + this.toolStripSeparator11, + this.tsbClose}); + this.tsMain.Name = "tsMain"; + // + // toolStripSeparator4 + // + resources.ApplyResources(this.toolStripSeparator4, "toolStripSeparator4"); + this.toolStripSeparator4.Name = "toolStripSeparator4"; + // + // tsbSub + // + resources.ApplyResources(this.tsbSub, "tsbSub"); + this.tsbSub.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.tsbSubSetting, + this.tsbSubUpdate}); + this.tsbSub.Image = global::v2rayN.Properties.Resources.sub; + this.tsbSub.Name = "tsbSub"; + // + // tsbSubSetting + // + resources.ApplyResources(this.tsbSubSetting, "tsbSubSetting"); + this.tsbSubSetting.Name = "tsbSubSetting"; + this.tsbSubSetting.Click += new System.EventHandler(this.tsbSubSetting_Click); + // + // tsbSubUpdate + // + resources.ApplyResources(this.tsbSubUpdate, "tsbSubUpdate"); + this.tsbSubUpdate.Name = "tsbSubUpdate"; + this.tsbSubUpdate.Click += new System.EventHandler(this.tsbSubUpdate_Click); + // + // toolStripSeparator8 + // + resources.ApplyResources(this.toolStripSeparator8, "toolStripSeparator8"); + this.toolStripSeparator8.Name = "toolStripSeparator8"; + // + // tsbOptionSetting + // + resources.ApplyResources(this.tsbOptionSetting, "tsbOptionSetting"); + this.tsbOptionSetting.Image = global::v2rayN.Properties.Resources.option; + this.tsbOptionSetting.Name = "tsbOptionSetting"; + this.tsbOptionSetting.Click += new System.EventHandler(this.tsbOptionSetting_Click); + // + // toolStripSeparator5 + // + resources.ApplyResources(this.toolStripSeparator5, "toolStripSeparator5"); + this.toolStripSeparator5.Name = "toolStripSeparator5"; + // + // tsbReload + // + resources.ApplyResources(this.tsbReload, "tsbReload"); + this.tsbReload.Name = "tsbReload"; + this.tsbReload.Click += new System.EventHandler(this.tsbReload_Click); + // + // toolStripSeparator7 + // + resources.ApplyResources(this.toolStripSeparator7, "toolStripSeparator7"); + this.toolStripSeparator7.Name = "toolStripSeparator7"; + // + // tsbCheckUpdate + // + resources.ApplyResources(this.tsbCheckUpdate, "tsbCheckUpdate"); + this.tsbCheckUpdate.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.tsbCheckUpdateN, + this.tsbCheckUpdateCore, + this.tsbCheckUpdatePACList, + this.tsbCheckClearPACList}); + this.tsbCheckUpdate.Image = global::v2rayN.Properties.Resources.checkupdate; + this.tsbCheckUpdate.Name = "tsbCheckUpdate"; + // + // tsbCheckUpdateN + // + resources.ApplyResources(this.tsbCheckUpdateN, "tsbCheckUpdateN"); + this.tsbCheckUpdateN.Name = "tsbCheckUpdateN"; + this.tsbCheckUpdateN.Click += new System.EventHandler(this.tsbCheckUpdateN_Click); + // + // tsbCheckUpdateCore + // + resources.ApplyResources(this.tsbCheckUpdateCore, "tsbCheckUpdateCore"); + this.tsbCheckUpdateCore.Name = "tsbCheckUpdateCore"; + this.tsbCheckUpdateCore.Click += new System.EventHandler(this.tsbCheckUpdateCore_Click); + // + // tsbCheckUpdatePACList + // + resources.ApplyResources(this.tsbCheckUpdatePACList, "tsbCheckUpdatePACList"); + this.tsbCheckUpdatePACList.Name = "tsbCheckUpdatePACList"; + this.tsbCheckUpdatePACList.Click += new System.EventHandler(this.tsbCheckUpdatePACList_Click); + // + // tsbCheckClearPACList + // + resources.ApplyResources(this.tsbCheckClearPACList, "tsbCheckClearPACList"); + this.tsbCheckClearPACList.Name = "tsbCheckClearPACList"; + this.tsbCheckClearPACList.Click += new System.EventHandler(this.tsbCheckClearPACList_Click); + // + // toolStripSeparator10 + // + resources.ApplyResources(this.toolStripSeparator10, "toolStripSeparator10"); + this.toolStripSeparator10.Name = "toolStripSeparator10"; + // + // tsbHelp + // + resources.ApplyResources(this.tsbHelp, "tsbHelp"); + this.tsbHelp.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.tsbAbout, + this.toolStripSeparator12, + this.tsbLanguageDef, + this.tsbLanguageZhHans}); + this.tsbHelp.Image = global::v2rayN.Properties.Resources.help; + this.tsbHelp.Name = "tsbHelp"; + // + // tsbAbout + // + resources.ApplyResources(this.tsbAbout, "tsbAbout"); + this.tsbAbout.Name = "tsbAbout"; + this.tsbAbout.Click += new System.EventHandler(this.tsbAbout_Click); + // + // toolStripSeparator12 + // + resources.ApplyResources(this.toolStripSeparator12, "toolStripSeparator12"); + this.toolStripSeparator12.Name = "toolStripSeparator12"; + // + // tsbLanguageDef + // + resources.ApplyResources(this.tsbLanguageDef, "tsbLanguageDef"); + this.tsbLanguageDef.Name = "tsbLanguageDef"; + this.tsbLanguageDef.Click += new System.EventHandler(this.tsbLanguageDef_Click); + // + // tsbLanguageZhHans + // + resources.ApplyResources(this.tsbLanguageZhHans, "tsbLanguageZhHans"); + this.tsbLanguageZhHans.Name = "tsbLanguageZhHans"; + this.tsbLanguageZhHans.Click += new System.EventHandler(this.tsbLanguageZhHans_Click); + // + // tsbPromotion + // + resources.ApplyResources(this.tsbPromotion, "tsbPromotion"); + this.tsbPromotion.ForeColor = System.Drawing.Color.Black; + this.tsbPromotion.Image = global::v2rayN.Properties.Resources.promotion; + this.tsbPromotion.Name = "tsbPromotion"; + this.tsbPromotion.Click += new System.EventHandler(this.tsbPromotion_Click); + // + // toolStripSeparator11 + // + resources.ApplyResources(this.toolStripSeparator11, "toolStripSeparator11"); + this.toolStripSeparator11.Name = "toolStripSeparator11"; + // + // tsbClose + // + resources.ApplyResources(this.tsbClose, "tsbClose"); + this.tsbClose.Name = "tsbClose"; + this.tsbClose.Click += new System.EventHandler(this.tsbClose_Click); + // + // MainForm + // + resources.ApplyResources(this, "$this"); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.groupBox1); + this.Controls.Add(this.groupBox2); + this.Controls.Add(this.panel1); + this.Controls.Add(this.tsMain); + this.MaximizeBox = true; + this.MinimizeBox = true; + this.Name = "MainForm"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing); + this.Load += new System.EventHandler(this.MainForm_Load); + this.Shown += new System.EventHandler(this.MainForm_Shown); + this.Resize += new System.EventHandler(this.MainForm_Resize); + this.splitContainer1.Panel1.ResumeLayout(false); + this.splitContainer1.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit(); + this.splitContainer1.ResumeLayout(false); + this.cmsLv.ResumeLayout(false); + this.cmsMain.ResumeLayout(false); + this.groupBox1.ResumeLayout(false); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.tsMain.ResumeLayout(false); + this.tsMain.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.TextBox txtMsgBox; + private System.Windows.Forms.ListView lvServers; + private System.Windows.Forms.NotifyIcon notifyMain; + private System.Windows.Forms.ContextMenuStrip cmsMain; + private System.Windows.Forms.ToolStripMenuItem menuExit; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.ToolStripMenuItem menuServers; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator2; + private System.ComponentModel.BackgroundWorker bgwPing; + private System.Windows.Forms.ContextMenuStrip cmsLv; + private System.Windows.Forms.ToolStripMenuItem menuAddVmessServer; + private System.Windows.Forms.ToolStripMenuItem menuRemoveServer; + private System.Windows.Forms.ToolStripMenuItem menuSetDefaultServer; + private System.Windows.Forms.ToolStripMenuItem menuCopyServer; + private System.Windows.Forms.ToolStripMenuItem menuPingServer; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator3; + private System.Windows.Forms.ToolStripMenuItem menuExport2ClientConfig; + private System.Windows.Forms.ToolStripMenuItem menuExport2ServerConfig; + private System.Windows.Forms.ToolStrip tsMain; + private System.Windows.Forms.ToolStripDropDownButton tsbServer; + private System.Windows.Forms.ToolStripButton tsbOptionSetting; + private System.Windows.Forms.ToolStripButton tsbReload; + private System.Windows.Forms.ToolStripButton tsbClose; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator4; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator5; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator6; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator7; + private System.Windows.Forms.ToolStripMenuItem menuMoveTop; + private System.Windows.Forms.ToolStripMenuItem menuMoveUp; + private System.Windows.Forms.ToolStripMenuItem menuMoveDown; + private System.Windows.Forms.ToolStripMenuItem menuMoveBottom; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator9; + private System.Windows.Forms.ToolStripMenuItem menuSysAgentMode; + private System.Windows.Forms.ToolStripMenuItem menuGlobal; + private System.Windows.Forms.ToolStripMenuItem menuGlobalPAC; + private System.Windows.Forms.ToolStripMenuItem menuKeep; + private System.Windows.Forms.ToolStripMenuItem menuSysAgentEnabled; + private System.Windows.Forms.ToolStripMenuItem menuCopyPACUrl; + private System.Windows.Forms.ToolStripMenuItem menuAddCustomServer; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; + private System.Windows.Forms.ToolStripMenuItem menuAddShadowsocksServer; + private System.Windows.Forms.SplitContainer splitContainer1; + private QRCodeControl qrCodeControl; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator10; + private System.Windows.Forms.ToolStripDropDownButton tsbCheckUpdate; + private System.Windows.Forms.ToolStripMenuItem tsbCheckUpdateN; + private System.Windows.Forms.ToolStripMenuItem tsbCheckUpdateCore; + private System.Windows.Forms.ToolStripMenuItem tsbCheckUpdatePACList; + private System.Windows.Forms.ToolStripMenuItem menuAddServers; + private System.Windows.Forms.ToolStripMenuItem menuExport2ShareUrl; + private System.Windows.Forms.ToolStripMenuItem menuSpeedServer; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator11; + private System.Windows.Forms.ToolStripDropDownButton tsbHelp; + private System.Windows.Forms.ToolStripMenuItem tsbAbout; + private System.Windows.Forms.ToolStripMenuItem menuAddServers2; + private System.ComponentModel.BackgroundWorker bgwScan; + private System.Windows.Forms.ToolStripMenuItem menuScanScreen; + private System.Windows.Forms.ToolStripMenuItem menuScanScreen2; + private System.Windows.Forms.ToolStripDropDownButton tsbSub; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator8; + private System.Windows.Forms.ToolStripMenuItem tsbSubSetting; + private System.Windows.Forms.ToolStripMenuItem tsbSubUpdate; + private System.Windows.Forms.ToolStripMenuItem tsbCheckClearPACList; + private System.Windows.Forms.ToolStripMenuItem menuKeepPAC; + private System.Windows.Forms.ToolStripMenuItem menuSelectAll; + private System.Windows.Forms.ToolStripMenuItem menuExport2SubContent; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator12; + private System.Windows.Forms.ToolStripMenuItem tsbLanguageDef; + private System.Windows.Forms.ToolStripMenuItem tsbLanguageZhHans; + private System.Windows.Forms.ToolStripButton tsbPromotion; + private System.Windows.Forms.ToolStripMenuItem menuAddSocksServer; + } +} + diff --git a/v2rayN/v2rayN/Forms/MainForm.cs b/v2rayN/v2rayN/Forms/MainForm.cs new file mode 100644 index 00000000..e9a94ce4 --- /dev/null +++ b/v2rayN/v2rayN/Forms/MainForm.cs @@ -0,0 +1,1370 @@ +using System; +using System.IO.Compression; +using System.Text; +using System.Windows.Forms; +using v2rayN.Handler; +using v2rayN.HttpProxyHandler; +using v2rayN.Mode; +using System.Collections.Generic; +using System.IO; + +namespace v2rayN.Forms +{ + public partial class MainForm : BaseForm + { + private V2rayHandler v2rayHandler; + private PACListHandle pacListHandle; + private V2rayUpdateHandle v2rayUpdateHandle; + private V2rayUpdateHandle v2rayUpdateHandle2; + private List lvSelecteds = new List(); + + #region Window 事件 + + public MainForm() + { + InitializeComponent(); + this.ShowInTaskbar = false; + //this.WindowState = FormWindowState.Minimized; + HideForm(); + this.Text = Utils.GetVersion(); + + Application.ApplicationExit += (sender, args) => + { + Utils.ClearTempPath(); + }; + } + + private void MainForm_Load(object sender, EventArgs e) + { + ConfigHandler.LoadConfig(ref config); + v2rayHandler = new V2rayHandler(); + v2rayHandler.ProcessEvent += v2rayHandler_ProcessEvent; + + } + + private void MainForm_Shown(object sender, EventArgs e) + { + InitServersView(); + RefreshServers(); + + LoadV2ray(); + + HideForm(); + + } + + private void MainForm_FormClosing(object sender, FormClosingEventArgs e) + { + if (e.CloseReason == CloseReason.UserClosing) + { + e.Cancel = true; + + HideForm(); + return; + } + } + + private void MainForm_Resize(object sender, EventArgs e) + { + //if (this.WindowState == FormWindowState.Minimized) + //{ + // HideForm(); + //} + //else + //{ + // //this.splitContainer1.SplitterDistance = config.uiItem.mainQRCodeWidth; + //} + } + + private void splitContainer1_SplitterMoved(object sender, SplitterEventArgs e) + { + //config.uiItem.mainQRCodeWidth = splitContainer1.SplitterDistance; + } + + + //private const int WM_QUERYENDSESSION = 0x0011; + //protected override void WndProc(ref Message m) + //{ + // switch (m.Msg) + // { + // case WM_QUERYENDSESSION: + // CloseV2ray(); + // m.Result = (IntPtr)1; + // break; + // default: + // base.WndProc(ref m); + // break; + // } + //} + #endregion + + #region 显示服务器 listview 和 menu + + /// + /// 刷新服务器 + /// + private void RefreshServers() + { + RefreshServersView(); + RefreshServersMenu(); + } + + /// + /// 初始化服务器列表 + /// + private void InitServersView() + { + lvServers.Items.Clear(); + + lvServers.GridLines = true; + lvServers.FullRowSelect = true; + lvServers.View = View.Details; + lvServers.Scrollable = true; + lvServers.MultiSelect = true; + lvServers.HeaderStyle = ColumnHeaderStyle.Nonclickable; + + lvServers.Columns.Add("", 30, HorizontalAlignment.Center); + lvServers.Columns.Add(UIRes.I18N("LvServiceType"), 80, HorizontalAlignment.Left); + lvServers.Columns.Add(UIRes.I18N("LvAlias"), 100, HorizontalAlignment.Left); + lvServers.Columns.Add(UIRes.I18N("LvAddress"), 120, HorizontalAlignment.Left); + lvServers.Columns.Add(UIRes.I18N("LvPort"), 50, HorizontalAlignment.Left); + lvServers.Columns.Add(UIRes.I18N("LvEncryptionMethod"), 90, HorizontalAlignment.Left); + lvServers.Columns.Add(UIRes.I18N("LvTransportProtocol"), 70, HorizontalAlignment.Left); + lvServers.Columns.Add(UIRes.I18N("LvSubscription"), 50, HorizontalAlignment.Left); + lvServers.Columns.Add(UIRes.I18N("LvTestResults"), 100, HorizontalAlignment.Left); + + } + + /// + /// 刷新服务器列表 + /// + private void RefreshServersView() + { + lvServers.Items.Clear(); + + for (int k = 0; k < config.vmess.Count; k++) + { + string def = string.Empty; + if (config.index.Equals(k)) + { + def = "√"; + } + + VmessItem item = config.vmess[k]; + ListViewItem lvItem = new ListViewItem(new string[] + { + def, + ((EConfigType)item.configType).ToString(), + item.remarks, + item.address, + item.port.ToString(), + //item.id, + //item.alterId.ToString(), + item.security, + item.network, + item.getSubRemarks(config), + item.testResult + }); + lvServers.Items.Add(lvItem); + } + + //if (lvServers.Items.Count > 0) + //{ + // if (lvServers.Items.Count <= testConfigIndex) + // { + // testConfigIndex = lvServers.Items.Count - 1; + // } + // lvServers.Items[testConfigIndex].Selected = true; + // lvServers.Select(); + //} + } + + /// + /// 刷新托盘服务器菜单 + /// + private void RefreshServersMenu() + { + menuServers.DropDownItems.Clear(); + + for (int k = 0; k < config.vmess.Count; k++) + { + VmessItem item = config.vmess[k]; + string name = item.getSummary(); + + ToolStripMenuItem ts = new ToolStripMenuItem(name); + ts.Tag = k; + if (config.index.Equals(k)) + { + ts.Checked = true; + } + ts.Click += new EventHandler(ts_Click); + menuServers.DropDownItems.Add(ts); + } + } + + private void ts_Click(object sender, EventArgs e) + { + try + { + ToolStripItem ts = (ToolStripItem)sender; + int index = Utils.ToInt(ts.Tag); + SetDefaultServer(index); + } + catch + { + } + } + + private void lvServers_SelectedIndexChanged(object sender, EventArgs e) + { + int index = -1; + try + { + if (lvServers.SelectedIndices.Count > 0) + { + index = lvServers.SelectedIndices[0]; + } + } + catch + { + } + if (index < 0) + { + return; + } + qrCodeControl.showQRCode(index, config); + } + + #endregion + + #region v2ray 操作 + + /// + /// 载入V2ray + /// + private void LoadV2ray() + { + if (Global.reloadV2ray) + { + ClearMsg(); + } + v2rayHandler.LoadV2ray(config); + Global.reloadV2ray = false; + + ChangeSysAgent(config.sysAgentEnabled); + } + + /// + /// 关闭V2ray + /// + private void CloseV2ray() + { + ConfigHandler.ToJsonFile(config); + + ChangeSysAgent(false); + + v2rayHandler.V2rayStop(); + } + + #endregion + + #region 功能按钮 + + private void lvServers_DoubleClick(object sender, EventArgs e) + { + int index = GetLvSelectedIndex(); + if (index < 0) + { + return; + } + + if (config.vmess[index].configType == (int)EConfigType.Vmess) + { + var fm = new AddServerForm(); + fm.EditIndex = index; + if (fm.ShowDialog() == DialogResult.OK) + { + //刷新 + RefreshServers(); + LoadV2ray(); + } + } + else if (config.vmess[index].configType == (int)EConfigType.Shadowsocks) + { + var fm = new AddServer3Form(); + fm.EditIndex = index; + if (fm.ShowDialog() == DialogResult.OK) + { + RefreshServers(); + LoadV2ray(); + } + } + else if (config.vmess[index].configType == (int)EConfigType.Socks) + { + var fm = new AddServer4Form(); + fm.EditIndex = index; + if (fm.ShowDialog() == DialogResult.OK) + { + RefreshServers(); + LoadV2ray(); + } + } + else + { + var fm2 = new AddServer2Form(); + fm2.EditIndex = index; + if (fm2.ShowDialog() == DialogResult.OK) + { + //刷新 + RefreshServers(); + LoadV2ray(); + } + } + } + + private void lvServers_KeyDown(object sender, KeyEventArgs e) + { + if (e.Control) + { + switch (e.KeyCode) + { + case Keys.A: + menuSelectAll_Click(null, null); + break; + } + } + switch (e.KeyCode) + { + case Keys.Enter: + menuSetDefaultServer_Click(null, null); + break; + case Keys.Delete: + menuRemoveServer_Click(null, null); + break; + case Keys.U: + menuMoveUp_Click(null, null); + break; + case Keys.D: + menuMoveDown_Click(null, null); + break; + } + } + + private void menuAddVmessServer_Click(object sender, EventArgs e) + { + AddServerForm fm = new AddServerForm(); + fm.EditIndex = -1; + if (fm.ShowDialog() == DialogResult.OK) + { + //刷新 + RefreshServers(); + LoadV2ray(); + } + } + + private void menuRemoveServer_Click(object sender, EventArgs e) + { + + int index = GetLvSelectedIndex(); + if (index < 0) + { + return; + } + if (UI.ShowYesNo(UIRes.I18N("RemoveServer")) == DialogResult.No) + { + return; + } + for (int k = lvSelecteds.Count - 1; k >= 0; k--) + { + ConfigHandler.RemoveServer(ref config, lvSelecteds[k]); + } + //刷新 + RefreshServers(); + LoadV2ray(); + + } + + private void menuCopyServer_Click(object sender, EventArgs e) + { + int index = GetLvSelectedIndex(); + if (index < 0) + { + return; + } + if (ConfigHandler.CopyServer(ref config, index) == 0) + { + //刷新 + RefreshServers(); + } + } + + private void menuSetDefaultServer_Click(object sender, EventArgs e) + { + int index = GetLvSelectedIndex(); + if (index < 0) + { + return; + } + SetDefaultServer(index); + } + + + private void menuPingServer_Click(object sender, EventArgs e) + { + GetLvSelectedIndex(); + ClearTestResult(); + bgwPing.RunWorkerAsync(); + } + + private void menuSpeedServer_Click(object sender, EventArgs e) + { + if (!config.sysAgentEnabled || config.listenerType != 1) + { + UI.Show(UIRes.I18N("NeedHttpGlobalProxy")); + return; + } + + UI.Show(UIRes.I18N("SpeedServerTips")); + + GetLvSelectedIndex(); + ServerSpeedTest(); + } + + private void menuExport2ClientConfig_Click(object sender, EventArgs e) + { + int index = GetLvSelectedIndex(); + if (index < 0) + { + return; + } + if (config.vmess[index].configType != (int)EConfigType.Vmess) + { + UI.Show(UIRes.I18N("NonVmessService")); + return; + } + + SaveFileDialog fileDialog = new SaveFileDialog(); + fileDialog.Filter = "Config|*.json"; + fileDialog.FilterIndex = 2; + fileDialog.RestoreDirectory = true; + if (fileDialog.ShowDialog() != DialogResult.OK) + { + return; + } + string fileName = fileDialog.FileName; + if (Utils.IsNullOrEmpty(fileName)) + { + return; + } + Config configCopy = Utils.DeepCopy(config); + configCopy.index = index; + string msg; + if (V2rayConfigHandler.Export2ClientConfig(configCopy, fileName, out msg) != 0) + { + UI.Show(msg); + } + else + { + UI.Show(string.Format(UIRes.I18N("SaveClientConfigurationIn"), fileName)); + } + } + + private void menuExport2ServerConfig_Click(object sender, EventArgs e) + { + int index = GetLvSelectedIndex(); + if (index < 0) + { + return; + } + if (config.vmess[index].configType != (int)EConfigType.Vmess) + { + UI.Show(UIRes.I18N("NonVmessService")); + return; + } + + SaveFileDialog fileDialog = new SaveFileDialog(); + fileDialog.Filter = "Config|*.json"; + fileDialog.FilterIndex = 2; + fileDialog.RestoreDirectory = true; + if (fileDialog.ShowDialog() != DialogResult.OK) + { + return; + } + string fileName = fileDialog.FileName; + if (Utils.IsNullOrEmpty(fileName)) + { + return; + } + Config configCopy = Utils.DeepCopy(config); + configCopy.index = index; + string msg; + if (V2rayConfigHandler.Export2ServerConfig(configCopy, fileName, out msg) != 0) + { + UI.Show(msg); + } + else + { + UI.Show(string.Format(UIRes.I18N("SaveServerConfigurationIn"), fileName)); + } + } + + private void menuExport2ShareUrl_Click(object sender, EventArgs e) + { + GetLvSelectedIndex(); + + StringBuilder sb = new StringBuilder(); + for (int k = 0; k < lvSelecteds.Count; k++) + { + string url = ConfigHandler.GetVmessQRCode(config, lvSelecteds[k]); + if (Utils.IsNullOrEmpty(url)) + { + continue; + } + sb.Append(url); + sb.AppendLine(); + } + if (sb.Length > 0) + { + Utils.SetClipboardData(sb.ToString()); + UI.Show(UIRes.I18N("BatchExportURLSuccessfully")); + } + } + + private void menuExport2SubContent_Click(object sender, EventArgs e) + { + GetLvSelectedIndex(); + + StringBuilder sb = new StringBuilder(); + for (int k = 0; k < lvSelecteds.Count; k++) + { + string url = ConfigHandler.GetVmessQRCode(config, lvSelecteds[k]); + if (Utils.IsNullOrEmpty(url)) + { + continue; + } + sb.Append(url); + sb.AppendLine(); + } + if (sb.Length > 0) + { + Utils.SetClipboardData(Utils.Base64Encode(sb.ToString())); + UI.Show(UIRes.I18N("BatchExportSubscriptionSuccessfully")); + } + } + + private void tsbOptionSetting_Click(object sender, EventArgs e) + { + OptionSettingForm fm = new OptionSettingForm(); + if (fm.ShowDialog() == DialogResult.OK) + { + //刷新 + RefreshServers(); + LoadV2ray(); + } + } + + private void tsbReload_Click(object sender, EventArgs e) + { + Global.reloadV2ray = true; + LoadV2ray(); + } + + private void tsbClose_Click(object sender, EventArgs e) + { + HideForm(); + //this.WindowState = FormWindowState.Minimized; + } + + /// + /// 设置活动服务器 + /// + /// + /// + private int SetDefaultServer(int index) + { + if (index < 0) + { + UI.Show(UIRes.I18N("PleaseSelectServer")); + return -1; + } + if (ConfigHandler.SetDefaultServer(ref config, index) == 0) + { + //刷新 + RefreshServers(); + LoadV2ray(); + } + return 0; + } + + /// + /// 取得ListView选中的行 + /// + /// + private int GetLvSelectedIndex() + { + int index = -1; + lvSelecteds.Clear(); + try + { + if (lvServers.SelectedIndices.Count <= 0) + { + UI.Show(UIRes.I18N("PleaseSelectServer")); + return index; + } + + index = lvServers.SelectedIndices[0]; + foreach (int i in lvServers.SelectedIndices) + { + lvSelecteds.Add(i); + } + return index; + } + catch + { + return index; + } + } + + private void menuAddCustomServer_Click(object sender, EventArgs e) + { + UI.Show(UIRes.I18N("CustomServerTips")); + + OpenFileDialog fileDialog = new OpenFileDialog(); + fileDialog.Multiselect = false; + fileDialog.Filter = "Config|*.json|All|*.*"; + if (fileDialog.ShowDialog() != DialogResult.OK) + { + return; + } + string fileName = fileDialog.FileName; + if (Utils.IsNullOrEmpty(fileName)) + { + return; + } + + if (ConfigHandler.AddCustomServer(ref config, fileName) == 0) + { + //刷新 + RefreshServers(); + LoadV2ray(); + UI.Show(UIRes.I18N("SuccessfullyImportedCustomServer")); + } + else + { + UI.Show(UIRes.I18N("FailedImportedCustomServer")); + } + } + + private void menuAddShadowsocksServer_Click(object sender, EventArgs e) + { + var fm = new AddServer3Form(); + fm.EditIndex = -1; + if (fm.ShowDialog() == DialogResult.OK) + { + //刷新 + RefreshServers(); + LoadV2ray(); + } + ShowForm(); + } + + private void menuAddSocksServer_Click(object sender, EventArgs e) + { + var fm = new AddServer4Form(); + fm.EditIndex = -1; + if (fm.ShowDialog() == DialogResult.OK) + { + //刷新 + RefreshServers(); + LoadV2ray(); + } + ShowForm(); + } + + private void menuAddServers_Click(object sender, EventArgs e) + { + string clipboardData = Utils.GetClipboardData(); + if (AddBatchServers(clipboardData) == 0) + { + UI.Show(UIRes.I18N("SuccessfullyImportedServerViaClipboard")); + } + } + + private void menuScanScreen_Click(object sender, EventArgs e) + { + HideForm(); + bgwScan.RunWorkerAsync(); + } + + private int AddBatchServers(string clipboardData, string subid = "") + { + if (ConfigHandler.AddBatchServers(ref config, clipboardData, subid) != 0) + { + clipboardData = Utils.Base64Decode(clipboardData); + if (ConfigHandler.AddBatchServers(ref config, clipboardData, subid) != 0) + { + return -1; + } + } + RefreshServers(); + return 0; + } + + #endregion + + + #region 提示信息 + + /// + /// 消息委托 + /// + /// + /// + void v2rayHandler_ProcessEvent(bool notify, string msg) + { + AppendText(notify, msg); + } + + delegate void AppendTextDelegate(string text); + void AppendText(bool notify, string msg) + { + try + { + AppendText(msg); + if (notify) + { + notifyMsg(msg); + } + } + catch + { + } + } + + void AppendText(string text) + { + if (this.txtMsgBox.InvokeRequired) + { + Invoke(new AppendTextDelegate(AppendText), new object[] { text }); + } + else + { + //this.txtMsgBox.AppendText(text); + ShowMsg(text); + } + } + + /// + /// 提示信息 + /// + /// + private void ShowMsg(string msg) + { + if (txtMsgBox.Lines.Length > 500) + { + ClearMsg(); + } + this.txtMsgBox.AppendText(msg); + if (!msg.EndsWith("\r\n")) + { + this.txtMsgBox.AppendText("\r\n"); + } + } + + /// + /// 清除信息 + /// + private void ClearMsg() + { + this.txtMsgBox.Clear(); + } + + /// + /// 托盘信息 + /// + /// + private void notifyMsg(string msg) + { + notifyMain.Text = msg; + } + + #endregion + + + #region 托盘事件 + + private void notifyMain_MouseClick(object sender, MouseEventArgs e) + { + if (e.Button == System.Windows.Forms.MouseButtons.Left) + { + ShowForm(); + } + } + + private void menuExit_Click(object sender, EventArgs e) + { + CloseV2ray(); + + this.Visible = false; + this.Close(); + //this.Dispose(); + //System.Environment.Exit(System.Environment.ExitCode); + Application.Exit(); + } + + + private void ShowForm() + { + this.Show(); + this.WindowState = FormWindowState.Normal; + this.Activate(); + //this.notifyIcon1.Visible = false; + this.ShowInTaskbar = true; + + SetVisibleCore(true); + } + + private void HideForm() + { + //this.WindowState = FormWindowState.Minimized; + this.Hide(); + this.notifyMain.Icon = this.Icon; + this.notifyMain.Visible = true; + this.ShowInTaskbar = false; + + SetVisibleCore(false); + } + + #endregion + + #region 后台测速 + + private void bgwPing_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e) + { + try + { + for (int k = 0; k < lvSelecteds.Count; k++) + { + int index = lvSelecteds[k]; + if (config.vmess[index].configType == (int)EConfigType.Custom) + { + continue; + } + long time = Utils.Ping(config.vmess[index].address); + bgwPing.ReportProgress(index, string.Format("{0}ms", time)); + } + } + catch + { + } + } + + private void bgwPing_ProgressChanged(object sender, System.ComponentModel.ProgressChangedEventArgs e) + { + try + { + int k = e.ProgressPercentage; + string time = string.Format("{0}", Convert.ToString(e.UserState)); + SetTestResult(k, time); + } + catch + { + } + } + private void SetTestResult(int k, string txt) + { + config.vmess[k].testResult = txt; + lvServers.Items[k].SubItems[lvServers.Items[k].SubItems.Count - 1].Text = txt; + } + private void ClearTestResult() + { + for (int k = 0; k < config.vmess.Count; k++) + { + SetTestResult(k, ""); + } + } + + private int testCounter = 0; + private int ServerSpeedTestSub(int index, string url) + { + if (index >= lvSelecteds.Count) + { + return -1; + } + + if (ConfigHandler.SetDefaultServer(ref config, lvSelecteds[index]) == 0) + { + SetTestResult(lvSelecteds[index], "testing..."); + + v2rayHandler.LoadV2ray(config); + v2rayUpdateHandle2.DownloadFileAsync(config, url); + testCounter++; + return 0; + } + else + { + return -1; + } + } + private void ServerSpeedTest() + { + if (config.vmess.Count <= 0) + { + return; + } + ClearTestResult(); + + string url = Global.SpeedTestUrl; + testCounter = 0; + if (v2rayUpdateHandle2 == null) + { + v2rayUpdateHandle2 = new V2rayUpdateHandle(); + v2rayUpdateHandle2.UpdateCompleted += (sender2, args) => + { + if (args.Success) + { + AppendText(false, args.Msg); + SetTestResult(lvSelecteds[testCounter - 1], args.Msg); + + if (ServerSpeedTestSub(testCounter, url) != 0) + { + RefreshServers(); + return; + } + } + else + { + AppendText(false, args.Msg); + } + }; + v2rayUpdateHandle2.Error += (sender2, args) => + { + SetTestResult(lvSelecteds[testCounter - 1], args.GetException().Message); + AppendText(true, args.GetException().Message); + + if (ServerSpeedTestSub(testCounter, url) != 0) + { + RefreshServers(); + return; + } + }; + } + if (ServerSpeedTestSub(testCounter, url) != 0) + { + return; + } + } + #endregion + + #region 移动服务器 + + private void menuMoveTop_Click(object sender, EventArgs e) + { + MoveServer(EMove.Top); + } + + private void menuMoveUp_Click(object sender, EventArgs e) + { + MoveServer(EMove.Up); + } + + private void menuMoveDown_Click(object sender, EventArgs e) + { + MoveServer(EMove.Down); + } + + private void menuMoveBottom_Click(object sender, EventArgs e) + { + MoveServer(EMove.Bottom); + } + + private void MoveServer(EMove eMove) + { + int index = GetLvSelectedIndex(); + if (index < 0) + { + UI.Show(UIRes.I18N("PleaseSelectServer")); + return; + } + if (ConfigHandler.MoveServer(ref config, index, eMove) == 0) + { + //刷新 + RefreshServers(); + LoadV2ray(); + } + } + private void menuSelectAll_Click(object sender, EventArgs e) + { + foreach (ListViewItem item in lvServers.Items) + { + item.Selected = true; + } + } + + #endregion + + #region 系统代理相关 + + private void menuCopyPACUrl_Click(object sender, EventArgs e) + { + Utils.SetClipboardData(HttpProxyHandle.GetPacUrl()); + } + + private void menuSysAgentEnabled_Click(object sender, EventArgs e) + { + bool isChecked = !config.sysAgentEnabled; + config.sysAgentEnabled = isChecked; + ChangeSysAgent(isChecked); + } + + private void menuGlobal_Click(object sender, EventArgs e) + { + config.listenerType = 1; + ChangePACButtonStatus(config.listenerType); + } + + private void menuGlobalPAC_Click(object sender, EventArgs e) + { + config.listenerType = 2; + ChangePACButtonStatus(config.listenerType); + } + + private void menuKeep_Click(object sender, EventArgs e) + { + config.listenerType = 3; + ChangePACButtonStatus(config.listenerType); + } + + private void menuKeepPAC_Click(object sender, EventArgs e) + { + config.listenerType = 4; + ChangePACButtonStatus(config.listenerType); + } + + private void ChangePACButtonStatus(int type) + { + if (HttpProxyHandle.Update(config, false)) + { + switch (type) + { + case 1: + menuGlobal.Checked = true; + menuGlobalPAC.Checked = false; + menuKeep.Checked = false; + menuKeepPAC.Checked = false; + break; + case 2: + menuGlobal.Checked = false; + menuGlobalPAC.Checked = true; + menuKeep.Checked = false; + menuKeepPAC.Checked = false; + break; + case 3: + menuGlobal.Checked = false; + menuGlobalPAC.Checked = false; + menuKeep.Checked = true; + menuKeepPAC.Checked = false; + break; + case 4: + menuGlobal.Checked = false; + menuGlobalPAC.Checked = false; + menuKeep.Checked = false; + menuKeepPAC.Checked = true; + break; + } + } + + } + + /// + /// 改变系统代理 + /// + /// + private void ChangeSysAgent(bool isChecked) + { + if (isChecked) + { + if (HttpProxyHandle.RestartHttpAgent(config, true)) + { + ChangePACButtonStatus(config.listenerType); + } + } + else + { + HttpProxyHandle.Update(config, true); + HttpProxyHandle.CloseHttpAgent(config); + } + + menuSysAgentEnabled.Checked = + menuSysAgentMode.Enabled = isChecked; + } + #endregion + + + #region CheckUpdate + + private void tsbCheckUpdateN_Click(object sender, EventArgs e) + { + System.Diagnostics.Process.Start(Global.UpdateUrl); + } + + private void tsbCheckUpdateCore_Click(object sender, EventArgs e) + { + if (v2rayUpdateHandle == null) + { + v2rayUpdateHandle = new V2rayUpdateHandle(); + v2rayUpdateHandle.AbsoluteCompleted += (sender2, args) => + { + if (args.Success) + { + AppendText(false, UIRes.I18N("MsgParsingV2rayCoreSuccessfully")); + + string url = args.Msg; + this.Invoke((MethodInvoker)(delegate + { + + if (UI.ShowYesNo(string.Format(UIRes.I18N("DownloadYesNo"), url)) == DialogResult.No) + { + return; + } + else + { + v2rayUpdateHandle.DownloadFileAsync(config, url); + } + })); + } + else + { + AppendText(false, args.Msg); + } + }; + v2rayUpdateHandle.UpdateCompleted += (sender2, args) => + { + if (args.Success) + { + AppendText(false, UIRes.I18N("MsgDownloadV2rayCoreSuccessfully")); + AppendText(false, UIRes.I18N("MsgUnpacking")); + + try + { + CloseV2ray(); + + string fileName = v2rayUpdateHandle.DownloadFileName; + fileName = Utils.GetPath(fileName); + using (ZipArchive archive = ZipFile.OpenRead(fileName)) + { + foreach (ZipArchiveEntry entry in archive.Entries) + { + if (entry.Length == 0) + continue; + entry.ExtractToFile(Utils.GetPath(entry.Name), true); + } + } + AppendText(false, UIRes.I18N("MsgUpdateV2rayCoreSuccessfullyMore")); + + Global.reloadV2ray = true; + LoadV2ray(); + + AppendText(false, UIRes.I18N("MsgUpdateV2rayCoreSuccessfully")); + } + catch (Exception ex) + { + AppendText(false, ex.Message); + } + } + else + { + AppendText(false, args.Msg); + } + }; + v2rayUpdateHandle.Error += (sender2, args) => + { + AppendText(true, args.GetException().Message); + }; + } + + AppendText(false, UIRes.I18N("MsgStartUpdatingV2rayCore")); + v2rayUpdateHandle.AbsoluteV2rayCore(config); + } + + private void tsbCheckUpdatePACList_Click(object sender, EventArgs e) + { + if (pacListHandle == null) + { + pacListHandle = new PACListHandle(); + pacListHandle.UpdateCompleted += (sender2, args) => + { + if (args.Success) + { + AppendText(false, UIRes.I18N("MsgPACUpdateSuccessfully")); + } + else + { + AppendText(false, UIRes.I18N("MsgPACUpdateFailed")); + } + }; + pacListHandle.Error += (sender2, args) => + { + AppendText(true, args.GetException().Message); + }; + } + AppendText(false, UIRes.I18N("MsgStartUpdatingPAC")); + pacListHandle.UpdatePACFromGFWList(config); + } + + private void tsbCheckClearPACList_Click(object sender, EventArgs e) + { + try + { + File.WriteAllText(Utils.GetPath(Global.pacFILE), Utils.GetEmbedText(Global.BlankPacFileName), Encoding.UTF8); + AppendText(false, UIRes.I18N("MsgSimplifyPAC")); + } + catch (Exception ex) + { + Utils.SaveLog(ex.Message, ex); + } + } + #endregion + + #region Help + + + private void tsbAbout_Click(object sender, EventArgs e) + { + System.Diagnostics.Process.Start(Global.AboutUrl); + } + + private void tsbPromotion_Click(object sender, EventArgs e) + { + System.Diagnostics.Process.Start(Global.PromotionUrl); + } + #endregion + + #region ScanScreen + + + private void bgwScan_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e) + { + string ret = Utils.ScanScreen(); + bgwScan.ReportProgress(0, ret); + } + + private void bgwScan_ProgressChanged(object sender, System.ComponentModel.ProgressChangedEventArgs e) + { + ShowForm(); + + string result = Convert.ToString(e.UserState); + if (string.IsNullOrEmpty(result)) + { + UI.Show(UIRes.I18N("NoValidQRcodeFound")); + } + else + { + if (AddBatchServers(result) == 0) + { + UI.Show(UIRes.I18N("SuccessfullyImportedServerViaScan")); + } + } + } + + #endregion + + #region 订阅 + private void tsbSubSetting_Click(object sender, EventArgs e) + { + SubSettingForm fm = new SubSettingForm(); + if (fm.ShowDialog() == DialogResult.OK) + { + RefreshServers(); + } + } + + private void tsbSubUpdate_Click(object sender, EventArgs e) + { + AppendText(false, UIRes.I18N("MsgUpdateSubscriptionStart")); + + if (config.subItem == null || config.subItem.Count <= 0) + { + AppendText(false, UIRes.I18N("MsgNoValidSubscription")); + return; + } + + for (int k = 1; k <= config.subItem.Count; k++) + { + string id = config.subItem[k - 1].id.Trim(); + string url = config.subItem[k - 1].url.Trim(); + string hashCode = $"{k}->"; + if (config.subItem[k - 1].enabled == false) + { + continue; + } + if (Utils.IsNullOrEmpty(id) || Utils.IsNullOrEmpty(url)) + { + AppendText(false, $"{hashCode}{UIRes.I18N("MsgNoValidSubscription")}"); + continue; + } + + V2rayUpdateHandle v2rayUpdateHandle3 = new V2rayUpdateHandle(); + v2rayUpdateHandle3.UpdateCompleted += (sender2, args) => + { + if (args.Success) + { + AppendText(false, $"{hashCode}{UIRes.I18N("MsgGetSubscriptionSuccessfully")}"); + var result = Utils.Base64Decode(args.Msg); + if (Utils.IsNullOrEmpty(result)) + { + AppendText(false, $"{hashCode}{UIRes.I18N("MsgSubscriptionDecodingFailed")}"); + return; + } + + ConfigHandler.RemoveServerViaSubid(ref config, id); + AppendText(false, $"{hashCode}{UIRes.I18N("MsgClearSubscription")}"); + RefreshServers(); + if (AddBatchServers(result, id) == 0) + { + } + else + { + AppendText(false, $"{hashCode}{UIRes.I18N("MsgFailedImportSubscription")}"); + } + AppendText(false, $"{hashCode}{UIRes.I18N("MsgUpdateSubscriptionEnd")}"); + } + else + { + AppendText(false, args.Msg); + } + }; + v2rayUpdateHandle3.Error += (sender2, args) => + { + AppendText(true, args.GetException().Message); + }; + + v2rayUpdateHandle3.WebDownloadString(url); + AppendText(false, $"{hashCode}{UIRes.I18N("MsgStartGettingSubscriptions")}"); + } + + + } + + #endregion + + #region Language + + private void tsbLanguageDef_Click(object sender, EventArgs e) + { + SetCurrentLanguage("en"); + } + + private void tsbLanguageZhHans_Click(object sender, EventArgs e) + { + SetCurrentLanguage("zh-Hans"); + } + private void SetCurrentLanguage(string value) + { + Utils.RegWriteValue(Global.MyRegPath, Global.MyRegKeyLanguage, value); + } + + #endregion + + } +} diff --git a/v2rayN/v2rayN/Forms/MainForm.resx b/v2rayN/v2rayN/Forms/MainForm.resx new file mode 100644 index 00000000..99934306 --- /dev/null +++ b/v2rayN/v2rayN/Forms/MainForm.resx @@ -0,0 +1,1217 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + 447, 22 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Magenta + + + 447, 22 + + + 97, 53 + + + 447, 22 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Restart service + + + tsbSubSetting + + + menuMoveUp + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 语言-[中文简体] + + + + NoControl + + + Top + + + tsbHelp + + + 338, 22 + + + System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripSeparator6 + + + 93, 53 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 187, 22 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 447, 22 + + + tsbCheckUpdateN + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuExport2SubContent + + + toolStripSeparator7 + + + Check for updates to v2rayCore + + + Magenta + + + 447, 22 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Fill + + + Subscription + + + 992, 351 + + + 447, 22 + + + Export selected server for client configuration + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Export selected server for server configuration + + + splitContainer1 + + + ImageAboveText + + + System.Windows.Forms.SplitContainer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 992, 56 + + + Bottom + + + 992, 176 + + + + 100 + + + 448, 468 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + v2rayN + + + 444, 6 + + + 447, 22 + + + toolStripSeparator1 + + + 4 + + + System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 338, 22 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 187, 22 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuPingServer + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsIAAA7CARUoSoAAAAE3SURBVFhH7ZaBDQIhDEVvBEdwBDfQDXQER3AD3cARdAPd + QDfSDbQvuSb1AicFjJrwkxcN0FIolOuamv5VE2E+gLaPayWchEcE+hhTXVPhIoQmDcFYbKpoJtwEdX4X + jgIrXfTwnzb6dBw22BaJVdjJmWQs1/SdBRtE0U5cBXW2oSFRO0HtSEeW2FZ1wsq9sjuRdTDVAXnNuWLY + 6JnAl0sYa/Q5q1dhq35ci+Bkq2HJvbZpxGeybAAuw4Fq+cnW1wPITgHFYxvBUw+qHEIL1yq1vDKhVlH3 + NQwF4JkcFRWiUAB7IVW2FFPO3YqlgPd+LJf02e8Fdi3rMdIAcLDuf9UpeT0IS0G/hvhPm305vSl7EQFY + B6zCvozvYGzRM8zEoeg5TPZwDaGvpHQni1yzSxbXPW9q+hF13ROHuJnQcjbhtQAAAABJRU5ErkJggg== + + + + Servers + + + 3 + + + 3, 17 + + + Fill + + + 6, 56 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuAddCustomServer + + + menuMoveDown + + + Import bulk URL from clipboard + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Moves down to the bottom + + + 6, 12 + + + 48, 53 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.ComponentModel.BackgroundWorker, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuGlobalPAC + + + Fill + + + 726, 331 + + + toolStripSeparator4 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Batch export share URL to clipboard (multiple choice) + + + Update subscription + + + menuAddServers2 + + + Fill + + + 2 + + + Add [VMess] server + + + 264, 22 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + + tsbAbout + + + 0 + + + toolStripSeparator5 + + + True + + + 444, 6 + + + tsbPromotion + + + 256, 331 + + + 4, 4, 4, 4 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 444, 6 + + + groupBox1 + + + Add [Socks] server + + + 0 + + + 197, 22 + + + splitContainer1.Panel2 + + + 52, 53 + + + 447, 22 + + + 6, 56 + + + Test server speed (multiple choice) + + + ImageAboveText + + + splitContainer1 + + + 265, 164 + + + 547, 22 + + + $this + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Check for updates + + + tsbLanguageDef + + + panel1 + + + 3, 17 + + + 4 + + + 197, 22 + + + Only open Http proxy, do not automatically configure proxy server (direct mode) + + + 547, 22 + + + Magenta + + + Remove selected server (multiple choice) (Delete) + + + 0 + + + Help + + + menuSelectAll + + + Up to top + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Scan QR code on the screen + + + ImageAboveText + + + tsbCheckUpdate + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuSetDefaultServer + + + Promotion + + + menuAddServers + + + 447, 22 + + + menuAddVmessServer + + + tsbLanguageZhHans + + + toolStripSeparator9 + + + BottomCenter + + + menuExport2ShareUrl + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbReload + + + Check for updates to v2rayN + + + Magenta + + + splitContainer1.Panel1 + + + 0, 66 + + + 5 + + + Server + + + System.Windows.Forms.ListView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuAddShadowsocksServer + + + txtMsgBox + + + 261, 6 + + + System.ComponentModel.BackgroundWorker, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + v2rayN + + + Language-[English] + + + 264, 22 + + + menuScanScreen2 + + + 0 + + + 128, 53 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ImageAboveText + + + System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 0, 417 + + + 444, 6 + + + 264, 22 + + + Setting + + + menuMoveTop + + + menuKeep + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkMAwAAAFFTeXN0 + ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2Vu + PWIwM2Y1ZjdmMTFkNTBhM2EFAQAAACFTeXN0ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0l0ZW0HAAAA + BFRleHQKSW1hZ2VJbmRleAlCYWNrQ29sb3IHQ2hlY2tlZARGb250CUZvcmVDb2xvchdVc2VJdGVtU3R5 + bGVGb3JTdWJJdGVtcwEABAAEBAAIFFN5c3RlbS5EcmF3aW5nLkNvbG9yAwAAAAETU3lzdGVtLkRyYXdp + bmcuRm9udAMAAAAUU3lzdGVtLkRyYXdpbmcuQ29sb3IDAAAAAQIAAAAGBAAAAAD/////Bfv///8UU3lz + dGVtLkRyYXdpbmcuQ29sb3IEAAAABG5hbWUFdmFsdWUKa25vd25Db2xvcgVzdGF0ZQEAAAAJBwcDAAAA + CgAAAAAAAAAAGAABAAAJBgAAAAH5////+////woAAAAAAAAAABoAAQABBQYAAAATU3lzdGVtLkRyYXdp + bmcuRm9udAQAAAAETmFtZQRTaXplBVN0eWxlBFVuaXQBAAQECxhTeXN0ZW0uRHJhd2luZy5Gb250U3R5 + bGUDAAAAG1N5c3RlbS5EcmF3aW5nLkdyYXBoaWNzVW5pdAMAAAADAAAABggAAAAG5a6L5L2TAAAQQQX3 + ////GFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQEAAAAHdmFsdWVfXwAIAwAAAAAAAAAF9v///xtTeXN0 + ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQBAAAAB3ZhbHVlX18ACAMAAAADAAAACw== + + + + menuScanScreen + + + cmsLv + + + toolStripSeparator12 + + + 6, 56 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbSubUpdate + + + tsMain + + + 2 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuSysAgentMode + + + 986, 331 + + + ImageAboveText + + + 447, 22 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 1 + + + cmsMain + + + 264, 22 + + + menuServers + + + $this + + + 0 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbClose + + + menuExport2ClientConfig + + + True + + + 6, 56 + + + 992, 10 + + + menuKeepPAC + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 0 + + + toolStripSeparator8 + + + 89, 53 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Test server delay (multiple choice) + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 447, 22 + + + 264, 22 + + + menuSysAgentEnabled + + + System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Enable Http proxy + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Subscription settings + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuCopyServer + + + Http proxy mode + + + 547, 22 + + + Only open PAC, do not automatically configure PAC + + + 447, 22 + + + MainForm + + + System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuExit + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Server list + + + lvServers + + + splitContainer1.Panel1 + + + Magenta + + + menuGlobal + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 5 + + + Check for updated PAC (requires Http proxy) + + + toolStripSeparator11 + + + 447, 22 + + + About + + + System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Select All (Ctrl+A) + + + Information + + + $this + + + System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbCheckUpdateCore + + + 447, 22 + + + menuRemoveServer + + + 986, 156 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.NotifyIcon, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Down (D) + + + menuCopyPACUrl + + + groupBox1 + + + 447, 22 + + + tsbSub + + + Magenta + + + ImageAboveText + + + Copy selected server + + + 0, 0 + + + 447, 22 + + + System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + Simplify PAC (please set Core route) + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Vertical + + + 447, 22 + + + v2rayN.Forms.QRCodeControl, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + + System.Windows.Forms.ToolStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0, 0 + + + qrCodeControl + + + 264, 22 + + + tsbServer + + + 1 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + ImageAboveText + + + splitContainer1.Panel2 + + + 338, 22 + + + 184, 6 + + + 0, 0 + + + Upward (U) + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + notifyMain + + + Open Http proxy and automatically configure proxy server (global mode) + + + tsbOptionSetting + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuAddSocksServer + + + 64, 53 + + + Magenta + + + Open PAC and automatically configure PAC (PAC mode) + + + 447, 22 + + + Set as active server (Enter) + + + bgwPing + + + 726 + + + 6, 56 + + + Add [Shadowsocks] server + + + splitContainer1 + + + 992, 593 + + + 547, 22 + + + tsbCheckClearPACList + + + Scan QR code on the screen + + + toolStripSeparator10 + + + menuMoveBottom + + + 338, 22 + + + 6 + + + Magenta + + + 187, 22 + + + menuExport2ServerConfig + + + 0 + + + ImageAboveText + + + 6, 56 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Batch export subscription content to clipboard (multiple choice) + + + 52, 53 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Exit + + + bgwScan + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 0, 56 + + + Close + + + 264, 22 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Import bulk URL from clipboard + + + toolStripSeparator2 + + + Add a custom configuration server + + + System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 2 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuSpeedServer + + + 2 + + + Fill + + + Copy local PAC URL + + + toolStripSeparator3 + + + + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsIAAA7CARUoSoAAAAAySURBVFhH7c6xDQAgCEVBRnVTHU2ZABuMxV3yOvJDAAA/ + GqfZVG6X8mg1dfUAAPBQxAZd0SJruVXHWwAAAABJRU5ErkJggg== + + + + 447, 22 + + + 447, 22 + + + System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbCheckUpdatePACList + + + 232, 17 + + + zh-Hans + + + True + + + 65 + + + 137, 17 + + + 498, 17 + + + 17, 17 + + + 409, 17 + + + 327, 17 + + \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx b/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx new file mode 100644 index 00000000..8395e525 --- /dev/null +++ b/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx @@ -0,0 +1,453 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + 252, 22 + + + 添加[VMess]服务器 + + + 252, 22 + + + 添加[Shadowsocks]服务器 + + + 252, 22 + + + 添加[Socks]服务器 + + + 252, 22 + + + 添加自定义配置服务器 + + + 252, 22 + + + 从剪贴板导入批量URL + + + 252, 22 + + + 扫描屏幕上的二维码 + + + 249, 6 + + + 252, 22 + + + 移除所选服务器(多选) (Delete) + + + 252, 22 + + + 复制所选服务器 + + + 252, 22 + + + 设为活动服务器 (Enter) + + + 249, 6 + + + 252, 22 + + + 上移至顶 + + + 252, 22 + + + 上移 (U) + + + 252, 22 + + + 下移 (D) + + + 252, 22 + + + 下移至底 + + + 252, 22 + + + 全选 (Ctrl+A) + + + 249, 6 + + + 252, 22 + + + 测试服务器延迟(多选) + + + 252, 22 + + + 测试服务器速度(多选) + + + 249, 6 + + + 252, 22 + + + 导出所选服务器为客户端配置 + + + 252, 22 + + + 导出所选服务器为服务端配置 + + + 252, 22 + + + 批量导出分享URL至剪贴板(多选) + + + 252, 22 + + + 批量导出订阅内容至剪贴板(多选) + + + 73, 53 + + + 服务器 + + + 253, 468 + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkMAwAAAFFTeXN0 + ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2Vu + PWIwM2Y1ZjdmMTFkNTBhM2EFAQAAACFTeXN0ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0l0ZW0HAAAA + BFRleHQKSW1hZ2VJbmRleAlCYWNrQ29sb3IHQ2hlY2tlZARGb250CUZvcmVDb2xvchdVc2VJdGVtU3R5 + bGVGb3JTdWJJdGVtcwEABAAEBAAIFFN5c3RlbS5EcmF3aW5nLkNvbG9yAwAAAAETU3lzdGVtLkRyYXdp + bmcuRm9udAMAAAAUU3lzdGVtLkRyYXdpbmcuQ29sb3IDAAAAAQIAAAAGBAAAAAD/////Bfv///8UU3lz + dGVtLkRyYXdpbmcuQ29sb3IEAAAABG5hbWUFdmFsdWUKa25vd25Db2xvcgVzdGF0ZQEAAAAJBwcDAAAA + CgAAAAAAAAAAGAABAAAJBgAAAAH5////+////woAAAAAAAAAABoAAQABBQYAAAATU3lzdGVtLkRyYXdp + bmcuRm9udAQAAAAETmFtZQRTaXplBVN0eWxlBFVuaXQBAAQECxhTeXN0ZW0uRHJhd2luZy5Gb250U3R5 + bGUDAAAAG1N5c3RlbS5EcmF3aW5nLkdyYXBoaWNzVW5pdAMAAAADAAAABggAAAAG5a6L5L2TAAAQQQX3 + ////GFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQEAAAAHdmFsdWVfXwAIAwAAAAAAAAAF9v///xtTeXN0 + ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQBAAAAB3ZhbHVlX18ACAMAAAADAAAACw== + + + + 195, 22 + + + 启用Http代理 + + + 340, 22 + + + 开启Http代理,并自动配置代理服务器(全局模式) + + + 340, 22 + + + 开启PAC,并自动配置PAC(PAC模式) + + + 340, 22 + + + 仅开启Http代理,不自动配置代理服务器(直连模式) + + + 340, 22 + + + 仅开启PAC,不自动配置PAC + + + 195, 22 + + + Http代理模式 + + + 195, 22 + + + 服务器 + + + 195, 22 + + + 从剪贴板导入批量URL + + + 195, 22 + + + 扫描屏幕上的二维码 + + + 195, 22 + + + 复制本地PAC网址 + + + 192, 6 + + + 195, 22 + + + 退出 + + + 196, 164 + + + 服务器列表 + + + 信息 + + + 124, 22 + + + 订阅设置 + + + 124, 22 + + + 更新订阅 + + + 61, 53 + + + 订阅 + + + 76, 53 + + + 参数设置 + + + + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAE3SURBVFhH7ZaBDQIhDEVvBEdwBDfQDXQER3AD3cARdAPd + QDfSDbQvuSb1AicFjJrwkxcN0FIolOuamv5VE2E+gLaPayWchEcE+hhTXVPhIoQmDcFYbKpoJtwEdX4X + jgIrXfTwnzb6dBw22BaJVdjJmWQs1/SdBRtE0U5cBXW2oSFRO0HtSEeW2FZ1wsq9sjuRdTDVAXnNuWLY + 6JnAl0sYa/Q5q1dhq35ci+Bkq2HJvbZpxGeybAAuw4Fq+cnW1wPITgHFYxvBUw+qHEIL1yq1vDKhVlH3 + NQwF4JkcFRWiUAB7IVW2FFPO3YqlgPd+LJf02e8Fdi3rMdIAcLDuf9UpeT0IS0G/hvhPm305vSl7EQFY + B6zCvozvYGzRM8zEoeg5TPZwDaGvpHQni1yzSxbXPW9q+hF13ROHuJnQcjbhtQAAAABJRU5ErkJggg== + + + + 76, 53 + + + 重启服务 + + + 232, 22 + + + 检查更新v2rayN + + + 232, 22 + + + 检查更新v2rayCore + + + 232, 22 + + + 检查更新PAC (需要Http代理) + + + 232, 22 + + + 简化PAC (请设置Core路由) + + + 85, 53 + + + 检查更新 + + + 关于 + + + 69, 53 + + + 帮助 + + + 68, 53 + + + 推广 + + + + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAySURBVFhH7c6xDQAgCEVBRnVTHU2ZABuMxV3yOvJDAAA/ + GqfZVG6X8mg1dfUAAPBQxAZd0SJruVXHWwAAAABJRU5ErkJggg== + + + + 关闭 + + \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/OptionSettingForm.Designer.cs b/v2rayN/v2rayN/Forms/OptionSettingForm.Designer.cs new file mode 100644 index 00000000..8c5eb9b9 --- /dev/null +++ b/v2rayN/v2rayN/Forms/OptionSettingForm.Designer.cs @@ -0,0 +1,623 @@ +namespace v2rayN.Forms +{ + partial class OptionSettingForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(OptionSettingForm)); + this.btnClose = new System.Windows.Forms.Button(); + this.tabControl1 = new System.Windows.Forms.TabControl(); + this.tabPage1 = new System.Windows.Forms.TabPage(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.chksniffingEnabled2 = new System.Windows.Forms.CheckBox(); + this.chksniffingEnabled = new System.Windows.Forms.CheckBox(); + this.txtremoteDNS = new System.Windows.Forms.TextBox(); + this.label14 = new System.Windows.Forms.Label(); + this.chkmuxEnabled = new System.Windows.Forms.CheckBox(); + this.chkAllowIn2 = new System.Windows.Forms.CheckBox(); + this.chkudpEnabled2 = new System.Windows.Forms.CheckBox(); + this.cmbprotocol2 = new System.Windows.Forms.ComboBox(); + this.label3 = new System.Windows.Forms.Label(); + this.txtlocalPort2 = new System.Windows.Forms.TextBox(); + this.cmbprotocol = new System.Windows.Forms.ComboBox(); + this.label1 = new System.Windows.Forms.Label(); + this.chkudpEnabled = new System.Windows.Forms.CheckBox(); + this.chklogEnabled = new System.Windows.Forms.CheckBox(); + this.cmbloglevel = new System.Windows.Forms.ComboBox(); + this.label5 = new System.Windows.Forms.Label(); + this.txtlocalPort = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.tabPage2 = new System.Windows.Forms.TabPage(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.tabControl2 = new System.Windows.Forms.TabControl(); + this.tabPage3 = new System.Windows.Forms.TabPage(); + this.txtUseragent = new System.Windows.Forms.TextBox(); + this.tabPage4 = new System.Windows.Forms.TabPage(); + this.txtUserdirect = new System.Windows.Forms.TextBox(); + this.tabPage5 = new System.Windows.Forms.TabPage(); + this.txtUserblock = new System.Windows.Forms.TextBox(); + this.panel3 = new System.Windows.Forms.Panel(); + this.btnSetDefRountingRule = new System.Windows.Forms.Button(); + this.cmbdomainStrategy = new System.Windows.Forms.ComboBox(); + this.labRoutingTips = new System.Windows.Forms.Label(); + this.label15 = new System.Windows.Forms.Label(); + this.label12 = new System.Windows.Forms.Label(); + this.cmbroutingMode = new System.Windows.Forms.ComboBox(); + this.tabPage6 = new System.Windows.Forms.TabPage(); + this.chkKcpcongestion = new System.Windows.Forms.CheckBox(); + this.txtKcpwriteBufferSize = new System.Windows.Forms.TextBox(); + this.label10 = new System.Windows.Forms.Label(); + this.txtKcpreadBufferSize = new System.Windows.Forms.TextBox(); + this.label11 = new System.Windows.Forms.Label(); + this.txtKcpdownlinkCapacity = new System.Windows.Forms.TextBox(); + this.label8 = new System.Windows.Forms.Label(); + this.txtKcpuplinkCapacity = new System.Windows.Forms.TextBox(); + this.label9 = new System.Windows.Forms.Label(); + this.txtKcptti = new System.Windows.Forms.TextBox(); + this.label7 = new System.Windows.Forms.Label(); + this.txtKcpmtu = new System.Windows.Forms.TextBox(); + this.label6 = new System.Windows.Forms.Label(); + this.tabPage7 = new System.Windows.Forms.TabPage(); + this.chkAllowLANConn = new System.Windows.Forms.CheckBox(); + this.txturlGFWList = new System.Windows.Forms.TextBox(); + this.label13 = new System.Windows.Forms.Label(); + this.chkAutoRun = new System.Windows.Forms.CheckBox(); + this.panel2 = new System.Windows.Forms.Panel(); + this.btnOK = new System.Windows.Forms.Button(); + this.panel1 = new System.Windows.Forms.Panel(); + this.tabControl1.SuspendLayout(); + this.tabPage1.SuspendLayout(); + this.groupBox1.SuspendLayout(); + this.tabPage2.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.tabControl2.SuspendLayout(); + this.tabPage3.SuspendLayout(); + this.tabPage4.SuspendLayout(); + this.tabPage5.SuspendLayout(); + this.panel3.SuspendLayout(); + this.tabPage6.SuspendLayout(); + this.tabPage7.SuspendLayout(); + this.panel2.SuspendLayout(); + this.SuspendLayout(); + // + // btnClose + // + this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; + resources.ApplyResources(this.btnClose, "btnClose"); + this.btnClose.Name = "btnClose"; + this.btnClose.UseVisualStyleBackColor = true; + this.btnClose.Click += new System.EventHandler(this.btnClose_Click); + // + // tabControl1 + // + this.tabControl1.Controls.Add(this.tabPage1); + this.tabControl1.Controls.Add(this.tabPage2); + this.tabControl1.Controls.Add(this.tabPage6); + this.tabControl1.Controls.Add(this.tabPage7); + resources.ApplyResources(this.tabControl1, "tabControl1"); + this.tabControl1.Name = "tabControl1"; + this.tabControl1.SelectedIndex = 0; + // + // tabPage1 + // + this.tabPage1.Controls.Add(this.groupBox1); + resources.ApplyResources(this.tabPage1, "tabPage1"); + this.tabPage1.Name = "tabPage1"; + this.tabPage1.UseVisualStyleBackColor = true; + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.chksniffingEnabled2); + this.groupBox1.Controls.Add(this.chksniffingEnabled); + this.groupBox1.Controls.Add(this.txtremoteDNS); + this.groupBox1.Controls.Add(this.label14); + this.groupBox1.Controls.Add(this.chkmuxEnabled); + this.groupBox1.Controls.Add(this.chkAllowIn2); + this.groupBox1.Controls.Add(this.chkudpEnabled2); + this.groupBox1.Controls.Add(this.cmbprotocol2); + this.groupBox1.Controls.Add(this.label3); + this.groupBox1.Controls.Add(this.txtlocalPort2); + this.groupBox1.Controls.Add(this.cmbprotocol); + this.groupBox1.Controls.Add(this.label1); + this.groupBox1.Controls.Add(this.chkudpEnabled); + this.groupBox1.Controls.Add(this.chklogEnabled); + this.groupBox1.Controls.Add(this.cmbloglevel); + this.groupBox1.Controls.Add(this.label5); + this.groupBox1.Controls.Add(this.txtlocalPort); + this.groupBox1.Controls.Add(this.label2); + resources.ApplyResources(this.groupBox1, "groupBox1"); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.TabStop = false; + // + // chksniffingEnabled2 + // + resources.ApplyResources(this.chksniffingEnabled2, "chksniffingEnabled2"); + this.chksniffingEnabled2.Name = "chksniffingEnabled2"; + this.chksniffingEnabled2.UseVisualStyleBackColor = true; + // + // chksniffingEnabled + // + resources.ApplyResources(this.chksniffingEnabled, "chksniffingEnabled"); + this.chksniffingEnabled.Name = "chksniffingEnabled"; + this.chksniffingEnabled.UseVisualStyleBackColor = true; + // + // txtremoteDNS + // + resources.ApplyResources(this.txtremoteDNS, "txtremoteDNS"); + this.txtremoteDNS.Name = "txtremoteDNS"; + // + // label14 + // + resources.ApplyResources(this.label14, "label14"); + this.label14.Name = "label14"; + // + // chkmuxEnabled + // + resources.ApplyResources(this.chkmuxEnabled, "chkmuxEnabled"); + this.chkmuxEnabled.Name = "chkmuxEnabled"; + this.chkmuxEnabled.UseVisualStyleBackColor = true; + // + // chkAllowIn2 + // + resources.ApplyResources(this.chkAllowIn2, "chkAllowIn2"); + this.chkAllowIn2.Name = "chkAllowIn2"; + this.chkAllowIn2.UseVisualStyleBackColor = true; + this.chkAllowIn2.CheckedChanged += new System.EventHandler(this.chkAllowIn2_CheckedChanged); + // + // chkudpEnabled2 + // + resources.ApplyResources(this.chkudpEnabled2, "chkudpEnabled2"); + this.chkudpEnabled2.Name = "chkudpEnabled2"; + this.chkudpEnabled2.UseVisualStyleBackColor = true; + // + // cmbprotocol2 + // + this.cmbprotocol2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbprotocol2.FormattingEnabled = true; + this.cmbprotocol2.Items.AddRange(new object[] { + resources.GetString("cmbprotocol2.Items"), + resources.GetString("cmbprotocol2.Items1")}); + resources.ApplyResources(this.cmbprotocol2, "cmbprotocol2"); + this.cmbprotocol2.Name = "cmbprotocol2"; + // + // label3 + // + resources.ApplyResources(this.label3, "label3"); + this.label3.Name = "label3"; + // + // txtlocalPort2 + // + resources.ApplyResources(this.txtlocalPort2, "txtlocalPort2"); + this.txtlocalPort2.Name = "txtlocalPort2"; + // + // cmbprotocol + // + this.cmbprotocol.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + resources.ApplyResources(this.cmbprotocol, "cmbprotocol"); + this.cmbprotocol.FormattingEnabled = true; + this.cmbprotocol.Items.AddRange(new object[] { + resources.GetString("cmbprotocol.Items"), + resources.GetString("cmbprotocol.Items1")}); + this.cmbprotocol.Name = "cmbprotocol"; + // + // label1 + // + resources.ApplyResources(this.label1, "label1"); + this.label1.Name = "label1"; + // + // chkudpEnabled + // + resources.ApplyResources(this.chkudpEnabled, "chkudpEnabled"); + this.chkudpEnabled.Name = "chkudpEnabled"; + this.chkudpEnabled.UseVisualStyleBackColor = true; + // + // chklogEnabled + // + resources.ApplyResources(this.chklogEnabled, "chklogEnabled"); + this.chklogEnabled.Name = "chklogEnabled"; + this.chklogEnabled.UseVisualStyleBackColor = true; + // + // cmbloglevel + // + this.cmbloglevel.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbloglevel.FormattingEnabled = true; + this.cmbloglevel.Items.AddRange(new object[] { + resources.GetString("cmbloglevel.Items"), + resources.GetString("cmbloglevel.Items1"), + resources.GetString("cmbloglevel.Items2"), + resources.GetString("cmbloglevel.Items3"), + resources.GetString("cmbloglevel.Items4")}); + resources.ApplyResources(this.cmbloglevel, "cmbloglevel"); + this.cmbloglevel.Name = "cmbloglevel"; + // + // label5 + // + resources.ApplyResources(this.label5, "label5"); + this.label5.Name = "label5"; + // + // txtlocalPort + // + resources.ApplyResources(this.txtlocalPort, "txtlocalPort"); + this.txtlocalPort.Name = "txtlocalPort"; + // + // label2 + // + resources.ApplyResources(this.label2, "label2"); + this.label2.Name = "label2"; + // + // tabPage2 + // + this.tabPage2.Controls.Add(this.groupBox2); + resources.ApplyResources(this.tabPage2, "tabPage2"); + this.tabPage2.Name = "tabPage2"; + this.tabPage2.UseVisualStyleBackColor = true; + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.tabControl2); + this.groupBox2.Controls.Add(this.panel3); + resources.ApplyResources(this.groupBox2, "groupBox2"); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.TabStop = false; + // + // tabControl2 + // + this.tabControl2.Controls.Add(this.tabPage3); + this.tabControl2.Controls.Add(this.tabPage4); + this.tabControl2.Controls.Add(this.tabPage5); + resources.ApplyResources(this.tabControl2, "tabControl2"); + this.tabControl2.Name = "tabControl2"; + this.tabControl2.SelectedIndex = 0; + // + // tabPage3 + // + this.tabPage3.Controls.Add(this.txtUseragent); + resources.ApplyResources(this.tabPage3, "tabPage3"); + this.tabPage3.Name = "tabPage3"; + this.tabPage3.UseVisualStyleBackColor = true; + // + // txtUseragent + // + resources.ApplyResources(this.txtUseragent, "txtUseragent"); + this.txtUseragent.Name = "txtUseragent"; + // + // tabPage4 + // + this.tabPage4.Controls.Add(this.txtUserdirect); + resources.ApplyResources(this.tabPage4, "tabPage4"); + this.tabPage4.Name = "tabPage4"; + this.tabPage4.UseVisualStyleBackColor = true; + // + // txtUserdirect + // + resources.ApplyResources(this.txtUserdirect, "txtUserdirect"); + this.txtUserdirect.Name = "txtUserdirect"; + // + // tabPage5 + // + this.tabPage5.Controls.Add(this.txtUserblock); + resources.ApplyResources(this.tabPage5, "tabPage5"); + this.tabPage5.Name = "tabPage5"; + this.tabPage5.UseVisualStyleBackColor = true; + // + // txtUserblock + // + resources.ApplyResources(this.txtUserblock, "txtUserblock"); + this.txtUserblock.Name = "txtUserblock"; + // + // panel3 + // + this.panel3.Controls.Add(this.btnSetDefRountingRule); + this.panel3.Controls.Add(this.cmbdomainStrategy); + this.panel3.Controls.Add(this.labRoutingTips); + this.panel3.Controls.Add(this.label15); + this.panel3.Controls.Add(this.label12); + this.panel3.Controls.Add(this.cmbroutingMode); + resources.ApplyResources(this.panel3, "panel3"); + this.panel3.Name = "panel3"; + // + // btnSetDefRountingRule + // + resources.ApplyResources(this.btnSetDefRountingRule, "btnSetDefRountingRule"); + this.btnSetDefRountingRule.Name = "btnSetDefRountingRule"; + this.btnSetDefRountingRule.UseVisualStyleBackColor = true; + this.btnSetDefRountingRule.Click += new System.EventHandler(this.btnSetDefRountingRule_Click); + // + // cmbdomainStrategy + // + this.cmbdomainStrategy.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbdomainStrategy.FormattingEnabled = true; + this.cmbdomainStrategy.Items.AddRange(new object[] { + resources.GetString("cmbdomainStrategy.Items"), + resources.GetString("cmbdomainStrategy.Items1"), + resources.GetString("cmbdomainStrategy.Items2")}); + resources.ApplyResources(this.cmbdomainStrategy, "cmbdomainStrategy"); + this.cmbdomainStrategy.Name = "cmbdomainStrategy"; + // + // labRoutingTips + // + this.labRoutingTips.ForeColor = System.Drawing.Color.Brown; + resources.ApplyResources(this.labRoutingTips, "labRoutingTips"); + this.labRoutingTips.Name = "labRoutingTips"; + // + // label15 + // + resources.ApplyResources(this.label15, "label15"); + this.label15.Name = "label15"; + // + // label12 + // + resources.ApplyResources(this.label12, "label12"); + this.label12.Name = "label12"; + // + // cmbroutingMode + // + this.cmbroutingMode.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbroutingMode.FormattingEnabled = true; + this.cmbroutingMode.Items.AddRange(new object[] { + resources.GetString("cmbroutingMode.Items"), + resources.GetString("cmbroutingMode.Items1"), + resources.GetString("cmbroutingMode.Items2"), + resources.GetString("cmbroutingMode.Items3")}); + resources.ApplyResources(this.cmbroutingMode, "cmbroutingMode"); + this.cmbroutingMode.Name = "cmbroutingMode"; + // + // tabPage6 + // + this.tabPage6.Controls.Add(this.chkKcpcongestion); + this.tabPage6.Controls.Add(this.txtKcpwriteBufferSize); + this.tabPage6.Controls.Add(this.label10); + this.tabPage6.Controls.Add(this.txtKcpreadBufferSize); + this.tabPage6.Controls.Add(this.label11); + this.tabPage6.Controls.Add(this.txtKcpdownlinkCapacity); + this.tabPage6.Controls.Add(this.label8); + this.tabPage6.Controls.Add(this.txtKcpuplinkCapacity); + this.tabPage6.Controls.Add(this.label9); + this.tabPage6.Controls.Add(this.txtKcptti); + this.tabPage6.Controls.Add(this.label7); + this.tabPage6.Controls.Add(this.txtKcpmtu); + this.tabPage6.Controls.Add(this.label6); + resources.ApplyResources(this.tabPage6, "tabPage6"); + this.tabPage6.Name = "tabPage6"; + this.tabPage6.UseVisualStyleBackColor = true; + // + // chkKcpcongestion + // + resources.ApplyResources(this.chkKcpcongestion, "chkKcpcongestion"); + this.chkKcpcongestion.Name = "chkKcpcongestion"; + this.chkKcpcongestion.UseVisualStyleBackColor = true; + // + // txtKcpwriteBufferSize + // + resources.ApplyResources(this.txtKcpwriteBufferSize, "txtKcpwriteBufferSize"); + this.txtKcpwriteBufferSize.Name = "txtKcpwriteBufferSize"; + // + // label10 + // + resources.ApplyResources(this.label10, "label10"); + this.label10.Name = "label10"; + // + // txtKcpreadBufferSize + // + resources.ApplyResources(this.txtKcpreadBufferSize, "txtKcpreadBufferSize"); + this.txtKcpreadBufferSize.Name = "txtKcpreadBufferSize"; + // + // label11 + // + resources.ApplyResources(this.label11, "label11"); + this.label11.Name = "label11"; + // + // txtKcpdownlinkCapacity + // + resources.ApplyResources(this.txtKcpdownlinkCapacity, "txtKcpdownlinkCapacity"); + this.txtKcpdownlinkCapacity.Name = "txtKcpdownlinkCapacity"; + // + // label8 + // + resources.ApplyResources(this.label8, "label8"); + this.label8.Name = "label8"; + // + // txtKcpuplinkCapacity + // + resources.ApplyResources(this.txtKcpuplinkCapacity, "txtKcpuplinkCapacity"); + this.txtKcpuplinkCapacity.Name = "txtKcpuplinkCapacity"; + // + // label9 + // + resources.ApplyResources(this.label9, "label9"); + this.label9.Name = "label9"; + // + // txtKcptti + // + resources.ApplyResources(this.txtKcptti, "txtKcptti"); + this.txtKcptti.Name = "txtKcptti"; + // + // label7 + // + resources.ApplyResources(this.label7, "label7"); + this.label7.Name = "label7"; + // + // txtKcpmtu + // + resources.ApplyResources(this.txtKcpmtu, "txtKcpmtu"); + this.txtKcpmtu.Name = "txtKcpmtu"; + // + // label6 + // + resources.ApplyResources(this.label6, "label6"); + this.label6.Name = "label6"; + // + // tabPage7 + // + this.tabPage7.Controls.Add(this.chkAllowLANConn); + this.tabPage7.Controls.Add(this.txturlGFWList); + this.tabPage7.Controls.Add(this.label13); + this.tabPage7.Controls.Add(this.chkAutoRun); + resources.ApplyResources(this.tabPage7, "tabPage7"); + this.tabPage7.Name = "tabPage7"; + this.tabPage7.UseVisualStyleBackColor = true; + // + // chkAllowLANConn + // + resources.ApplyResources(this.chkAllowLANConn, "chkAllowLANConn"); + this.chkAllowLANConn.Name = "chkAllowLANConn"; + this.chkAllowLANConn.UseVisualStyleBackColor = true; + // + // txturlGFWList + // + resources.ApplyResources(this.txturlGFWList, "txturlGFWList"); + this.txturlGFWList.Name = "txturlGFWList"; + // + // label13 + // + resources.ApplyResources(this.label13, "label13"); + this.label13.Name = "label13"; + // + // chkAutoRun + // + resources.ApplyResources(this.chkAutoRun, "chkAutoRun"); + this.chkAutoRun.Name = "chkAutoRun"; + this.chkAutoRun.UseVisualStyleBackColor = true; + // + // panel2 + // + this.panel2.Controls.Add(this.btnClose); + this.panel2.Controls.Add(this.btnOK); + resources.ApplyResources(this.panel2, "panel2"); + this.panel2.Name = "panel2"; + // + // btnOK + // + resources.ApplyResources(this.btnOK, "btnOK"); + this.btnOK.Name = "btnOK"; + this.btnOK.UseVisualStyleBackColor = true; + this.btnOK.Click += new System.EventHandler(this.btnOK_Click); + // + // panel1 + // + resources.ApplyResources(this.panel1, "panel1"); + this.panel1.Name = "panel1"; + // + // OptionSettingForm + // + resources.ApplyResources(this, "$this"); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.CancelButton = this.btnClose; + this.Controls.Add(this.tabControl1); + this.Controls.Add(this.panel2); + this.Controls.Add(this.panel1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Name = "OptionSettingForm"; + this.Load += new System.EventHandler(this.OptionSettingForm_Load); + this.tabControl1.ResumeLayout(false); + this.tabPage1.ResumeLayout(false); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.tabPage2.ResumeLayout(false); + this.groupBox2.ResumeLayout(false); + this.tabControl2.ResumeLayout(false); + this.tabPage3.ResumeLayout(false); + this.tabPage3.PerformLayout(); + this.tabPage4.ResumeLayout(false); + this.tabPage4.PerformLayout(); + this.tabPage5.ResumeLayout(false); + this.tabPage5.PerformLayout(); + this.panel3.ResumeLayout(false); + this.panel3.PerformLayout(); + this.tabPage6.ResumeLayout(false); + this.tabPage6.PerformLayout(); + this.tabPage7.ResumeLayout(false); + this.tabPage7.PerformLayout(); + this.panel2.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Button btnClose; + private System.Windows.Forms.Button btnOK; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.ComboBox cmbloglevel; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.TextBox txtlocalPort; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.CheckBox chklogEnabled; + private System.Windows.Forms.CheckBox chkudpEnabled; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.TabControl tabControl1; + private System.Windows.Forms.TabPage tabPage1; + private System.Windows.Forms.TabPage tabPage2; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.ComboBox cmbprotocol; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.ComboBox cmbprotocol2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TextBox txtlocalPort2; + private System.Windows.Forms.CheckBox chkudpEnabled2; + private System.Windows.Forms.CheckBox chkAllowIn2; + private System.Windows.Forms.CheckBox chkmuxEnabled; + private System.Windows.Forms.TabControl tabControl2; + private System.Windows.Forms.TabPage tabPage3; + private System.Windows.Forms.TabPage tabPage4; + private System.Windows.Forms.Label labRoutingTips; + private System.Windows.Forms.TextBox txtUseragent; + private System.Windows.Forms.TabPage tabPage5; + private System.Windows.Forms.TextBox txtUserdirect; + private System.Windows.Forms.TextBox txtUserblock; + private System.Windows.Forms.TabPage tabPage6; + private System.Windows.Forms.TextBox txtKcpmtu; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.TextBox txtKcptti; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.TextBox txtKcpwriteBufferSize; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.TextBox txtKcpreadBufferSize; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.TextBox txtKcpdownlinkCapacity; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.TextBox txtKcpuplinkCapacity; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.CheckBox chkKcpcongestion; + private System.Windows.Forms.TabPage tabPage7; + private System.Windows.Forms.CheckBox chkAutoRun; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.TextBox txturlGFWList; + private System.Windows.Forms.CheckBox chkAllowLANConn; + private System.Windows.Forms.TextBox txtremoteDNS; + private System.Windows.Forms.Label label14; + private System.Windows.Forms.Panel panel3; + private System.Windows.Forms.ComboBox cmbdomainStrategy; + private System.Windows.Forms.Label label15; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.ComboBox cmbroutingMode; + private System.Windows.Forms.CheckBox chksniffingEnabled; + private System.Windows.Forms.CheckBox chksniffingEnabled2; + private System.Windows.Forms.Button btnSetDefRountingRule; + } +} \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/OptionSettingForm.cs b/v2rayN/v2rayN/Forms/OptionSettingForm.cs new file mode 100644 index 00000000..6cf8ebb4 --- /dev/null +++ b/v2rayN/v2rayN/Forms/OptionSettingForm.cs @@ -0,0 +1,361 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Drawing.Text; +using System.Windows.Forms; +using v2rayN.Handler; + +namespace v2rayN.Forms +{ + public partial class OptionSettingForm : BaseForm + { + public OptionSettingForm() + { + InitializeComponent(); + } + + private void OptionSettingForm_Load(object sender, EventArgs e) + { + InitBase(); + + InitRouting(); + + InitKCP(); + + InitGUI(); + } + + /// + /// 初始化基础设置 + /// + private void InitBase() + { + //日志 + chklogEnabled.Checked = config.logEnabled; + cmbloglevel.Text = config.loglevel; + + //Mux + chkmuxEnabled.Checked = config.muxEnabled; + + //本地监听 + if (config.inbound.Count > 0) + { + txtlocalPort.Text = config.inbound[0].localPort.ToString(); + cmbprotocol.Text = config.inbound[0].protocol.ToString(); + chkudpEnabled.Checked = config.inbound[0].udpEnabled; + chksniffingEnabled.Checked = config.inbound[0].sniffingEnabled; + if (config.inbound.Count > 1) + { + txtlocalPort2.Text = config.inbound[1].localPort.ToString(); + cmbprotocol2.Text = config.inbound[1].protocol.ToString(); + chkudpEnabled2.Checked = config.inbound[1].udpEnabled; + chksniffingEnabled2.Checked = config.inbound[1].sniffingEnabled; + chkAllowIn2.Checked = true; + } + else + { + chkAllowIn2.Checked = false; + } + chkAllowIn2State(); + } + + //remoteDNS + txtremoteDNS.Text = config.remoteDNS; + } + + /// + /// 初始化路由设置 + /// + private void InitRouting() + { + //路由 + cmbdomainStrategy.Text = config.domainStrategy; + int routingMode = 0; + int.TryParse(config.routingMode, out routingMode); + cmbroutingMode.SelectedIndex = routingMode; + + txtUseragent.Text = Utils.List2String(config.useragent, true); + txtUserdirect.Text = Utils.List2String(config.userdirect, true); + txtUserblock.Text = Utils.List2String(config.userblock, true); + } + + /// + /// 初始化KCP设置 + /// + private void InitKCP() + { + txtKcpmtu.Text = config.kcpItem.mtu.ToString(); + txtKcptti.Text = config.kcpItem.tti.ToString(); + txtKcpuplinkCapacity.Text = config.kcpItem.uplinkCapacity.ToString(); + txtKcpdownlinkCapacity.Text = config.kcpItem.downlinkCapacity.ToString(); + txtKcpreadBufferSize.Text = config.kcpItem.readBufferSize.ToString(); + txtKcpwriteBufferSize.Text = config.kcpItem.writeBufferSize.ToString(); + chkKcpcongestion.Checked = config.kcpItem.congestion; + } + + /// + /// 初始化v2rayN GUI设置 + /// + private void InitGUI() + { + //开机自动启动 + chkAutoRun.Checked = Utils.IsAutoRun(); + + //自定义GFWList + txturlGFWList.Text = config.urlGFWList; + + chkAllowLANConn.Checked = config.allowLANConn; + + } + + private void btnOK_Click(object sender, EventArgs e) + { + if (SaveBase() != 0) + { + return; + } + + if (SaveRouting() != 0) + { + return; + } + + if (SaveKCP() != 0) + { + return; + } + + if (SaveGUI() != 0) + { + return; + } + + if (ConfigHandler.SaveConfig(ref config) == 0) + { + this.DialogResult = DialogResult.OK; + } + else + { + UI.Show(UIRes.I18N("OperationFailed")); + } + } + + /// + /// 保存基础设置 + /// + /// + private int SaveBase() + { + //日志 + bool logEnabled = chklogEnabled.Checked; + string loglevel = cmbloglevel.Text.Trim(); + + //Mux + bool muxEnabled = chkmuxEnabled.Checked; + + //本地监听 + string localPort = txtlocalPort.Text.Trim(); + string protocol = cmbprotocol.Text.Trim(); + bool udpEnabled = chkudpEnabled.Checked; + bool sniffingEnabled = chksniffingEnabled.Checked; + if (Utils.IsNullOrEmpty(localPort) || !Utils.IsNumberic(localPort)) + { + UI.Show(UIRes.I18N("FillLocalListeningPort")); + return -1; + } + if (Utils.IsNullOrEmpty(protocol)) + { + UI.Show(UIRes.I18N("PleaseSelectProtocol")); + return -1; + } + config.inbound[0].localPort = Utils.ToInt(localPort); + config.inbound[0].protocol = protocol; + config.inbound[0].udpEnabled = udpEnabled; + config.inbound[0].sniffingEnabled = sniffingEnabled; + + //本地监听2 + string localPort2 = txtlocalPort2.Text.Trim(); + string protocol2 = cmbprotocol2.Text.Trim(); + bool udpEnabled2 = chkudpEnabled2.Checked; + bool sniffingEnabled2 = chksniffingEnabled2.Checked; + if (chkAllowIn2.Checked) + { + if (Utils.IsNullOrEmpty(localPort2) || !Utils.IsNumberic(localPort2)) + { + UI.Show(UIRes.I18N("FillLocalListeningPort")); + return -1; + } + if (Utils.IsNullOrEmpty(protocol2)) + { + UI.Show(UIRes.I18N("PleaseSelectProtocol")); + return -1; + } + if (config.inbound.Count < 2) + { + config.inbound.Add(new Mode.InItem()); + } + config.inbound[1].localPort = Utils.ToInt(localPort2); + config.inbound[1].protocol = protocol2; + config.inbound[1].udpEnabled = udpEnabled2; + config.inbound[1].sniffingEnabled = sniffingEnabled2; + } + else + { + if (config.inbound.Count > 1) + { + config.inbound.RemoveAt(1); + } + } + + //日志 + config.logEnabled = logEnabled; + config.loglevel = loglevel; + + //Mux + config.muxEnabled = muxEnabled; + + //remoteDNS + config.remoteDNS = txtremoteDNS.Text.Trim(); + + return 0; + } + + /// + /// 保存路由设置 + /// + /// + private int SaveRouting() + { + //路由 + string domainStrategy = cmbdomainStrategy.Text; + string routingMode = cmbroutingMode.SelectedIndex.ToString(); + + string useragent = txtUseragent.Text.Trim(); + string userdirect = txtUserdirect.Text.Trim(); + string userblock = txtUserblock.Text.Trim(); + + config.domainStrategy = domainStrategy; + config.routingMode = routingMode; + + config.useragent = Utils.String2List(useragent); + config.userdirect = Utils.String2List(userdirect); + config.userblock = Utils.String2List(userblock); + + return 0; + } + + /// + /// 保存KCP设置 + /// + /// + private int SaveKCP() + { + string mtu = txtKcpmtu.Text.Trim(); + string tti = txtKcptti.Text.Trim(); + string uplinkCapacity = txtKcpuplinkCapacity.Text.Trim(); + string downlinkCapacity = txtKcpdownlinkCapacity.Text.Trim(); + string readBufferSize = txtKcpreadBufferSize.Text.Trim(); + string writeBufferSize = txtKcpwriteBufferSize.Text.Trim(); + bool congestion = chkKcpcongestion.Checked; + + if (Utils.IsNullOrEmpty(mtu) || !Utils.IsNumberic(mtu) + || Utils.IsNullOrEmpty(tti) || !Utils.IsNumberic(tti) + || Utils.IsNullOrEmpty(uplinkCapacity) || !Utils.IsNumberic(uplinkCapacity) + || Utils.IsNullOrEmpty(downlinkCapacity) || !Utils.IsNumberic(downlinkCapacity) + || Utils.IsNullOrEmpty(readBufferSize) || !Utils.IsNumberic(readBufferSize) + || Utils.IsNullOrEmpty(writeBufferSize) || !Utils.IsNumberic(writeBufferSize)) + { + UI.Show(UIRes.I18N("FillKcpParameters")); + return -1; + } + config.kcpItem.mtu = Utils.ToInt(mtu); + config.kcpItem.tti = Utils.ToInt(tti); + config.kcpItem.uplinkCapacity = Utils.ToInt(uplinkCapacity); + config.kcpItem.downlinkCapacity = Utils.ToInt(downlinkCapacity); + config.kcpItem.readBufferSize = Utils.ToInt(readBufferSize); + config.kcpItem.writeBufferSize = Utils.ToInt(writeBufferSize); + config.kcpItem.congestion = congestion; + + return 0; + } + + /// + /// 保存GUI设置 + /// + /// + private int SaveGUI() + { + //开机自动启动 + Utils.SetAutoRun(chkAutoRun.Checked); + + //自定义GFWList + config.urlGFWList = txturlGFWList.Text.Trim(); + + config.allowLANConn = chkAllowLANConn.Checked; + + return 0; + } + + private void btnClose_Click(object sender, EventArgs e) + { + this.DialogResult = DialogResult.Cancel; + } + + private void chkAllowIn2_CheckedChanged(object sender, EventArgs e) + { + chkAllowIn2State(); + } + private void chkAllowIn2State() + { + bool blAllow2 = chkAllowIn2.Checked; + txtlocalPort2.Enabled = + cmbprotocol2.Enabled = + chkudpEnabled2.Enabled = blAllow2; + } + + private void btnSetDefRountingRule_Click(object sender, EventArgs e) + { + var lstUrl = new List(); + lstUrl.Add(Global.CustomRoutingListUrl + "proxy"); + lstUrl.Add(Global.CustomRoutingListUrl + "direct"); + lstUrl.Add(Global.CustomRoutingListUrl + "block"); + + var lstTxt = new List(); + lstTxt.Add(txtUseragent); + lstTxt.Add(txtUserdirect); + lstTxt.Add(txtUserblock); + + for (int k = 0; k < lstUrl.Count; k++) + { + var txt = lstTxt[k]; + V2rayUpdateHandle v2rayUpdateHandle3 = new V2rayUpdateHandle(); + v2rayUpdateHandle3.UpdateCompleted += (sender2, args) => + { + if (args.Success) + { + var result = args.Msg; + if (Utils.IsNullOrEmpty(result)) + { + return; + } + txt.Text = result; + } + else + { + AppendText(false, args.Msg); + } + }; + v2rayUpdateHandle3.Error += (sender2, args) => + { + AppendText(true, args.GetException().Message); + }; + + v2rayUpdateHandle3.WebDownloadString(lstUrl[k]); + } + } + void AppendText(bool notify, string text) + { + labRoutingTips.Text = text; + } + } +} diff --git a/v2rayN/v2rayN/Forms/OptionSettingForm.resx b/v2rayN/v2rayN/Forms/OptionSettingForm.resx new file mode 100644 index 00000000..9a4a727c --- /dev/null +++ b/v2rayN/v2rayN/Forms/OptionSettingForm.resx @@ -0,0 +1,2247 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + 355, 16 + + + 75, 23 + + + + 7 + + + &Cancel + + + btnClose + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel2 + + + 0 + + + groupBox1 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage1 + + + 0 + + + 4, 22 + + + + 3, 3, 3, 3 + + + 630, 579 + + + 0 + + + Core: basic settings + + + tabPage1 + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabControl1 + + + 0 + + + tabPage3 + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabControl2 + + + 0 + + + tabPage4 + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabControl2 + + + 1 + + + tabPage5 + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabControl2 + + + 2 + + + Fill + + + 3, 124 + + + 618, 446 + + + 12 + + + tabControl2 + + + System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 0 + + + 356, 43 + + + 229, 23 + + + 18 + + + Set default custom routing rules + + + btnSetDefRountingRule + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel3 + + + 0 + + + AsIs + + + IPIfNonMatch + + + IPOnDemand + + + 123, 13 + + + 209, 20 + + + 16 + + + cmbdomainStrategy + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel3 + + + 1 + + + 5, 83 + + + 598, 16 + + + 13 + + + *Set the rules, separated by commas (,); support Domain (pure string / regular / subdomain) and IP + + + labRoutingTips + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel3 + + + 2 + + + True + + + NoControl + + + 13, 17 + + + 95, 12 + + + 17 + + + Domain strategy + + + label15 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel3 + + + 3 + + + True + + + NoControl + + + 13, 50 + + + 77, 12 + + + 15 + + + Routing mode + + + label12 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel3 + + + 4 + + + Global + + + Bypassing the LAN address + + + Bypass mainland address + + + Bypassing LAN and mainland address + + + 123, 46 + + + 209, 20 + + + 14 + + + cmbroutingMode + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel3 + + + 5 + + + Top + + + 3, 17 + + + 618, 107 + + + 19 + + + panel3 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 1 + + + Fill + + + 3, 3 + + + 624, 573 + + + 12 + + + groupBox2 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage2 + + + 0 + + + 4, 22 + + + 3, 3, 3, 3 + + + 630, 579 + + + 1 + + + Core: Routing settings + + + tabPage2 + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabControl1 + + + 1 + + + chkKcpcongestion + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 0 + + + txtKcpwriteBufferSize + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 1 + + + label10 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 2 + + + txtKcpreadBufferSize + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 3 + + + label11 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 4 + + + txtKcpdownlinkCapacity + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 5 + + + label8 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 6 + + + txtKcpuplinkCapacity + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 7 + + + label9 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 8 + + + txtKcptti + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 9 + + + label7 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 10 + + + txtKcpmtu + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 11 + + + label6 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 12 + + + 4, 22 + + + 3, 3, 3, 3 + + + 630, 579 + + + 2 + + + Core: KCP settings + + + tabPage6 + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabControl1 + + + 2 + + + chkAllowLANConn + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage7 + + + 0 + + + txturlGFWList + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage7 + + + 1 + + + label13 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage7 + + + 2 + + + chkAutoRun + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage7 + + + 3 + + + 4, 22 + + + 3, 3, 3, 3 + + + 630, 579 + + + 3 + + + v2rayN settings + + + tabPage7 + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabControl1 + + + 3 + + + Fill + + + 0, 10 + + + 638, 605 + + + 10 + + + tabControl1 + + + System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + chksniffingEnabled2 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 0 + + + chksniffingEnabled + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 1 + + + txtremoteDNS + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 2 + + + label14 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 3 + + + chkmuxEnabled + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 4 + + + chkAllowIn2 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 5 + + + chkudpEnabled2 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 6 + + + cmbprotocol2 + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 7 + + + label3 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 8 + + + txtlocalPort2 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 9 + + + cmbprotocol + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 10 + + + label1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 11 + + + chkudpEnabled + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 12 + + + chklogEnabled + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 13 + + + cmbloglevel + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 14 + + + label5 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 15 + + + txtlocalPort + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 16 + + + label2 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 17 + + + Fill + + + 3, 3 + + + 624, 573 + + + 6 + + + groupBox1 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage1 + + + 0 + + + True + + + NoControl + + + 468, 60 + + + 120, 16 + + + 32 + + + Turn on Sniffing + + + False + + + chksniffingEnabled2 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 0 + + + True + + + NoControl + + + 468, 27 + + + 120, 16 + + + 31 + + + Turn on Sniffing + + + chksniffingEnabled + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 1 + + + 33, 192 + + + 402, 21 + + + 30 + + + txtremoteDNS + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 2 + + + True + + + 33, 168 + + + 281, 12 + + + 29 + + + Custom DNS (multiple, separated by commas (,)) + + + label14 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 3 + + + True + + + 15, 93 + + + 174, 16 + + + 20 + + + Turn on Mux Multiplexing + + + chkmuxEnabled + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 4 + + + True + + + 15, 63 + + + 120, 16 + + + 19 + + + listening port 2 + + + False + + + chkAllowIn2 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 5 + + + True + + + 369, 62 + + + 84, 16 + + + 18 + + + Enable UDP + + + False + + + chkudpEnabled2 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 6 + + + socks + + + http + + + 257, 60 + + + 97, 20 + + + 17 + + + False + + + cmbprotocol2 + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 7 + + + True + + + 206, 64 + + + 53, 12 + + + 16 + + + protocol + + + False + + + label3 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 8 + + + 124, 60 + + + 78, 21 + + + 14 + + + False + + + txtlocalPort2 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 9 + + + False + + + socks + + + http + + + 257, 25 + + + 97, 20 + + + 12 + + + cmbprotocol + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 10 + + + True + + + 206, 29 + + + 53, 12 + + + 11 + + + protocol + + + label1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 11 + + + True + + + 369, 27 + + + 84, 16 + + + 10 + + + Enable UDP + + + chkudpEnabled + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 12 + + + True + + + 15, 124 + + + 126, 16 + + + 9 + + + Record local logs + + + chklogEnabled + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 13 + + + debug + + + info + + + warning + + + error + + + none + + + 257, 122 + + + 97, 20 + + + 6 + + + cmbloglevel + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 14 + + + True + + + 193, 126 + + + 59, 12 + + + 8 + + + Log level + + + label5 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 15 + + + 124, 25 + + + 78, 21 + + + 3 + + + txtlocalPort + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 16 + + + True + + + 33, 29 + + + 89, 12 + + + 2 + + + Listening port + + + label2 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 17 + + + txtUseragent + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage3 + + + 0 + + + 4, 22 + + + 3, 3, 3, 3 + + + 610, 420 + + + 0 + + + Proxy's Domain or IP + + + tabPage3 + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabControl2 + + + 0 + + + Fill + + + 3, 3 + + + True + + + Vertical + + + 604, 414 + + + 0 + + + txtUseragent + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage3 + + + 0 + + + txtUserdirect + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage4 + + + 0 + + + 4, 22 + + + 3, 3, 3, 3 + + + 610, 420 + + + 1 + + + Directly connected Domain or IP + + + tabPage4 + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabControl2 + + + 1 + + + Fill + + + 3, 3 + + + True + + + Vertical + + + 604, 414 + + + 1 + + + txtUserdirect + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage4 + + + 0 + + + txtUserblock + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage5 + + + 0 + + + 4, 22 + + + 3, 3, 3, 3 + + + 610, 420 + + + 2 + + + Blocked Domain or IP + + + tabPage5 + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabControl2 + + + 2 + + + Fill + + + 3, 3 + + + True + + + Vertical + + + 604, 414 + + + 1 + + + txtUserblock + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage5 + + + 0 + + + True + + + 20, 143 + + + 84, 16 + + + 20 + + + congestion + + + chkKcpcongestion + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 0 + + + 345, 100 + + + 94, 21 + + + 15 + + + txtKcpwriteBufferSize + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 1 + + + True + + + 236, 104 + + + 95, 12 + + + 14 + + + writeBufferSize + + + label10 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 2 + + + 111, 100 + + + 94, 21 + + + 13 + + + txtKcpreadBufferSize + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 3 + + + True + + + 18, 104 + + + 89, 12 + + + 12 + + + readBufferSize + + + label11 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 4 + + + 345, 62 + + + 94, 21 + + + 11 + + + txtKcpdownlinkCapacity + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 5 + + + True + + + 236, 66 + + + 101, 12 + + + 10 + + + downlinkCapacity + + + label8 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 6 + + + 111, 62 + + + 94, 21 + + + 9 + + + txtKcpuplinkCapacity + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 7 + + + True + + + 18, 66 + + + 89, 12 + + + 8 + + + uplinkCapacity + + + label9 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 8 + + + 345, 24 + + + 94, 21 + + + 7 + + + txtKcptti + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 9 + + + True + + + 236, 28 + + + 23, 12 + + + 6 + + + tti + + + label7 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 10 + + + 111, 24 + + + 94, 21 + + + 5 + + + txtKcpmtu + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 11 + + + True + + + 18, 28 + + + 23, 12 + + + 4 + + + mtu + + + label6 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 12 + + + True + + + 15, 42 + + + 204, 16 + + + 29 + + + Allow connections from the LAN + + + chkAllowLANConn + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage7 + + + 0 + + + 30, 132 + + + 468, 21 + + + 28 + + + txturlGFWList + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage7 + + + 1 + + + True + + + 30, 111 + + + 431, 12 + + + 27 + + + Custom GFWList address (please fill in the blank without customization) + + + label13 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage7 + + + 2 + + + True + + + 15, 16 + + + 132, 16 + + + 23 + + + Boot automatically + + + chkAutoRun + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage7 + + + 3 + + + btnOK + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel2 + + + 1 + + + Bottom + + + 0, 615 + + + 638, 60 + + + 11 + + + panel2 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 1 + + + 267, 16 + + + 75, 23 + + + 8 + + + &OK + + + btnOK + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel2 + + + 1 + + + Top + + + 0, 0 + + + 638, 10 + + + 9 + + + panel1 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 2 + + + True + + + 6, 12 + + + 638, 675 + + + 4, 4, 4, 4 + + + Settings + + + OptionSettingForm + + + v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/OptionSettingForm.zh-Hans.resx b/v2rayN/v2rayN/Forms/OptionSettingForm.zh-Hans.resx new file mode 100644 index 00000000..d0a2519d --- /dev/null +++ b/v2rayN/v2rayN/Forms/OptionSettingForm.zh-Hans.resx @@ -0,0 +1,291 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 取消(&C) + + + + 96, 16 + + + 开启流量探测 + + + 96, 16 + + + 开启流量探测 + + + 191, 12 + + + 自定义DNS(可多个,用逗号(,)隔开) + + + 开启Mux多路复用(默认开启) + + + 102, 16 + + + 本地监听端口2 + + + 66, 16 + + + 开启UDP + + + 29, 12 + + + 协议 + + + 29, 12 + + + 协议 + + + 66, 16 + + + 开启UDP + + + 156, 16 + + + 记录本地日志(默认关闭) + + + 53, 12 + + + 日志等级 + + + 77, 12 + + + 本地监听端口 + + + Core:基础设置 + + + 代理的Domain或IP + + + 直连的Domain或IP + + + 阻止的Domain或IP + + + + NoControl + + + 381, 43 + + + 201, 23 + + + 一键设置默认自定义路由规则 + + + 232, 20 + + + + True + + + 383, 12 + + + *设置的规则,用逗号(,)隔开;支持Domain(纯字符串/正则/子域名)和IP + + + 53, 12 + + + 域名策略 + + + 53, 12 + + + 路由模式 + + + 全局 + + + 绕过局域网地址 + + + 绕过大陆地址 + + + 绕过局域网及大陆地址 + + + 232, 20 + + + Core:路由设置 + + + Core:KCP设置 + + + 144, 16 + + + 允许来自局域网的连接 + + + 227, 12 + + + 自定义GFWList地址(不需自定义请填空白) + + + 180, 16 + + + 开机自动启动(可能会不成功) + + + v2rayN设置 + + + 确定(&O) + + + 参数设置 + + \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/QRCodeControl.Designer.cs b/v2rayN/v2rayN/Forms/QRCodeControl.Designer.cs new file mode 100644 index 00000000..5d0a2624 --- /dev/null +++ b/v2rayN/v2rayN/Forms/QRCodeControl.Designer.cs @@ -0,0 +1,78 @@ +namespace v2rayN.Forms +{ + partial class QRCodeControl + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(QRCodeControl)); + this.txtUrl = new System.Windows.Forms.TextBox(); + this.picQRCode = new System.Windows.Forms.PictureBox(); + this.chkShow = new System.Windows.Forms.CheckBox(); + ((System.ComponentModel.ISupportInitialize)(this.picQRCode)).BeginInit(); + this.SuspendLayout(); + // + // txtUrl + // + resources.ApplyResources(this.txtUrl, "txtUrl"); + this.txtUrl.Name = "txtUrl"; + this.txtUrl.ReadOnly = true; + // + // picQRCode + // + resources.ApplyResources(this.picQRCode, "picQRCode"); + this.picQRCode.Name = "picQRCode"; + this.picQRCode.TabStop = false; + // + // chkShow + // + resources.ApplyResources(this.chkShow, "chkShow"); + this.chkShow.Name = "chkShow"; + this.chkShow.UseVisualStyleBackColor = true; + this.chkShow.CheckedChanged += new System.EventHandler(this.chkShow_CheckedChanged); + // + // QRCodeControl + // + resources.ApplyResources(this, "$this"); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.picQRCode); + this.Controls.Add(this.txtUrl); + this.Controls.Add(this.chkShow); + this.Name = "QRCodeControl"; + this.Load += new System.EventHandler(this.QRCodeControl_Load); + ((System.ComponentModel.ISupportInitialize)(this.picQRCode)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.TextBox txtUrl; + private System.Windows.Forms.PictureBox picQRCode; + private System.Windows.Forms.CheckBox chkShow; + } +} diff --git a/v2rayN/v2rayN/Forms/QRCodeControl.cs b/v2rayN/v2rayN/Forms/QRCodeControl.cs new file mode 100644 index 00000000..b9c86ed36 --- /dev/null +++ b/v2rayN/v2rayN/Forms/QRCodeControl.cs @@ -0,0 +1,47 @@ +using System.Windows.Forms; +using v2rayN.Handler; +using v2rayN.Mode; + +namespace v2rayN.Forms +{ + public partial class QRCodeControl : UserControl + { + public QRCodeControl() + { + InitializeComponent(); + } + private void QRCodeControl_Load(object sender, System.EventArgs e) + { + chkShow_CheckedChanged(null, null); + txtUrl.MouseUp += txtUrl_MouseUp; + } + + void txtUrl_MouseUp(object sender, MouseEventArgs e) + { + txtUrl.SelectAll(); + } + + public void showQRCode(int Index, Config config) + { + if (Index >= 0) + { + string url = ConfigHandler.GetVmessQRCode(config, Index); + if (string.IsNullOrEmpty(url)) + { + picQRCode.Image = null; + txtUrl.Text = string.Empty; + return; + } + picQRCode.Image = QRCodeHelper.GetQRCode(url); + txtUrl.Text = url; + } + } + + private void chkShow_CheckedChanged(object sender, System.EventArgs e) + { + picQRCode.Visible = + txtUrl.Visible = chkShow.Checked; + } + + } +} diff --git a/v2rayN/v2rayN/Forms/QRCodeControl.resx b/v2rayN/v2rayN/Forms/QRCodeControl.resx new file mode 100644 index 00000000..ef0c4f04 --- /dev/null +++ b/v2rayN/v2rayN/Forms/QRCodeControl.resx @@ -0,0 +1,222 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 0 + + + + 356, 441 + + + 0, 0 + + + + 0 + + + Show shared content + + + System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 356, 16 + + + QRCodeControl + + + 356, 355 + + + 0, 371 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + Bottom + + + 24 + + + Top + + + Fill + + + True + + + Zoom + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 1 + + + $this + + + 0, 16 + + + $this + + + chkShow + + + $this + + + txtUrl + + + 2 + + + picQRCode + + + 356, 70 + + + 25 + + + 6, 12 + + + True + + + True + + \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/QRCodeControl.zh-Hans.resx b/v2rayN/v2rayN/Forms/QRCodeControl.zh-Hans.resx new file mode 100644 index 00000000..991ed0d0 --- /dev/null +++ b/v2rayN/v2rayN/Forms/QRCodeControl.zh-Hans.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 显示分享内容 + + \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/QRCodeForm.Designer.cs b/v2rayN/v2rayN/Forms/QRCodeForm.Designer.cs new file mode 100644 index 00000000..733adb47 --- /dev/null +++ b/v2rayN/v2rayN/Forms/QRCodeForm.Designer.cs @@ -0,0 +1,94 @@ +namespace v2rayN.Forms +{ + partial class QRCodeForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.picQRCode = new System.Windows.Forms.PictureBox(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.txtUrl = new System.Windows.Forms.TextBox(); + ((System.ComponentModel.ISupportInitialize)(this.picQRCode)).BeginInit(); + this.groupBox1.SuspendLayout(); + this.SuspendLayout(); + // + // picQRCode + // + this.picQRCode.Dock = System.Windows.Forms.DockStyle.Fill; + this.picQRCode.Location = new System.Drawing.Point(0, 0); + this.picQRCode.Name = "picQRCode"; + this.picQRCode.Size = new System.Drawing.Size(482, 483); + this.picQRCode.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.picQRCode.TabIndex = 23; + this.picQRCode.TabStop = false; + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.txtUrl); + this.groupBox1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.groupBox1.Location = new System.Drawing.Point(0, 483); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(482, 90); + this.groupBox1.TabIndex = 0; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "URL"; + // + // txtUrl + // + this.txtUrl.Dock = System.Windows.Forms.DockStyle.Fill; + this.txtUrl.Location = new System.Drawing.Point(3, 17); + this.txtUrl.Multiline = true; + this.txtUrl.Name = "txtUrl"; + this.txtUrl.ReadOnly = true; + this.txtUrl.Size = new System.Drawing.Size(476, 70); + this.txtUrl.TabIndex = 0; + // + // QRCodeForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(482, 573); + this.Controls.Add(this.picQRCode); + this.Controls.Add(this.groupBox1); + this.Name = "QRCodeForm"; + this.Text = "服务器配置二维码和URL"; + this.Load += new System.EventHandler(this.QRCodeForm_Load); + this.Shown += new System.EventHandler(this.QRCodeForm_Shown); + ((System.ComponentModel.ISupportInitialize)(this.picQRCode)).EndInit(); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.TextBox txtUrl; + private System.Windows.Forms.PictureBox picQRCode; + + } +} \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/QRCodeForm.cs b/v2rayN/v2rayN/Forms/QRCodeForm.cs new file mode 100644 index 00000000..d170b173 --- /dev/null +++ b/v2rayN/v2rayN/Forms/QRCodeForm.cs @@ -0,0 +1,51 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using v2rayN.Handler; +using v2rayN.Mode; + +namespace v2rayN.Forms +{ + public partial class QRCodeForm : BaseForm + { + public int Index { get; set; } + + public QRCodeForm() + { + InitializeComponent(); + } + + private void QRCodeForm_Load(object sender, EventArgs e) + { + txtUrl.MouseUp += txtUrl_MouseUp; + } + + void txtUrl_MouseUp(object sender, MouseEventArgs e) + { + txtUrl.SelectAll(); + } + + private void QRCodeForm_Shown(object sender, EventArgs e) + { + if (Index >= 0) + { + VmessQRCode vmessQRCode = null; + if (ConfigHandler.GetVmessQRCode(config, Index, ref vmessQRCode) != 0) + { + return; + } + string url = Utils.ToJson(vmessQRCode); + url = Utils.Base64Encode(url); + url = string.Format("{0}{1}", Global.vmessProtocol, url); + picQRCode.Image = QRCodeHelper.GetQRCode(url); + txtUrl.Text = url; + } + } + + } +} diff --git a/v2rayN/v2rayN/Forms/QRCodeForm.resx b/v2rayN/v2rayN/Forms/QRCodeForm.resx new file mode 100644 index 00000000..1af7de15 --- /dev/null +++ b/v2rayN/v2rayN/Forms/QRCodeForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/SubSettingControl.Designer.cs b/v2rayN/v2rayN/Forms/SubSettingControl.Designer.cs new file mode 100644 index 00000000..30fcadf5 --- /dev/null +++ b/v2rayN/v2rayN/Forms/SubSettingControl.Designer.cs @@ -0,0 +1,113 @@ +namespace v2rayN.Forms +{ + partial class SubSettingControl + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要修改 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SubSettingControl)); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.chkEnabled = new System.Windows.Forms.CheckBox(); + this.btnRemove = new System.Windows.Forms.Button(); + this.txtUrl = new System.Windows.Forms.TextBox(); + this.txtRemarks = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.groupBox2.SuspendLayout(); + this.SuspendLayout(); + // + // groupBox2 + // + resources.ApplyResources(this.groupBox2, "groupBox2"); + this.groupBox2.Controls.Add(this.chkEnabled); + this.groupBox2.Controls.Add(this.btnRemove); + this.groupBox2.Controls.Add(this.txtUrl); + this.groupBox2.Controls.Add(this.txtRemarks); + this.groupBox2.Controls.Add(this.label2); + this.groupBox2.Controls.Add(this.label3); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.TabStop = false; + // + // chkEnabled + // + resources.ApplyResources(this.chkEnabled, "chkEnabled"); + this.chkEnabled.Name = "chkEnabled"; + this.chkEnabled.UseVisualStyleBackColor = true; + this.chkEnabled.Leave += new System.EventHandler(this.txtRemarks_Leave); + // + // btnRemove + // + resources.ApplyResources(this.btnRemove, "btnRemove"); + this.btnRemove.Name = "btnRemove"; + this.btnRemove.UseVisualStyleBackColor = true; + this.btnRemove.Click += new System.EventHandler(this.btnRemove_Click); + // + // txtUrl + // + resources.ApplyResources(this.txtUrl, "txtUrl"); + this.txtUrl.Name = "txtUrl"; + this.txtUrl.Leave += new System.EventHandler(this.txtRemarks_Leave); + // + // txtRemarks + // + resources.ApplyResources(this.txtRemarks, "txtRemarks"); + this.txtRemarks.Name = "txtRemarks"; + this.txtRemarks.Leave += new System.EventHandler(this.txtRemarks_Leave); + // + // label2 + // + resources.ApplyResources(this.label2, "label2"); + this.label2.Name = "label2"; + // + // label3 + // + resources.ApplyResources(this.label3, "label3"); + this.label3.Name = "label3"; + // + // SubSettingControl + // + resources.ApplyResources(this, "$this"); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.groupBox2); + this.Name = "SubSettingControl"; + this.Load += new System.EventHandler(this.SubSettingControl_Load); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.TextBox txtUrl; + private System.Windows.Forms.TextBox txtRemarks; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Button btnRemove; + private System.Windows.Forms.CheckBox chkEnabled; + } +} diff --git a/v2rayN/v2rayN/Forms/SubSettingControl.cs b/v2rayN/v2rayN/Forms/SubSettingControl.cs new file mode 100644 index 00000000..26f83e3d --- /dev/null +++ b/v2rayN/v2rayN/Forms/SubSettingControl.cs @@ -0,0 +1,62 @@ +using System; +using System.Windows.Forms; +using v2rayN.Mode; + +namespace v2rayN.Forms +{ + public delegate void ChangeEventHandler(object sender, EventArgs e); + public partial class SubSettingControl : UserControl + { + public event ChangeEventHandler OnButtonClicked; + + + public SubItem subItem { get; set; } + + public SubSettingControl() + { + InitializeComponent(); + } + + private void SubSettingControl_Load(object sender, EventArgs e) + { + BindingSub(); + } + + private void BindingSub() + { + if (subItem != null) + { + txtRemarks.Text = subItem.remarks.ToString(); + txtUrl.Text = subItem.url.ToString(); + chkEnabled.Checked = subItem.enabled; + } + } + private void EndBindingSub() + { + if (subItem != null) + { + subItem.remarks = txtRemarks.Text.Trim(); + subItem.url = txtUrl.Text.Trim(); + subItem.enabled = chkEnabled.Checked; + } + } + private void txtRemarks_Leave(object sender, EventArgs e) + { + EndBindingSub(); + } + + private void btnRemove_Click(object sender, EventArgs e) + { + if (subItem != null) + { + subItem.remarks = string.Empty; + subItem.url = string.Empty; + } + + if (OnButtonClicked != null) + { + OnButtonClicked(sender, e); + } + } + } +} diff --git a/v2rayN/v2rayN/Forms/SubSettingControl.resx b/v2rayN/v2rayN/Forms/SubSettingControl.resx new file mode 100644 index 00000000..af5f03e9 --- /dev/null +++ b/v2rayN/v2rayN/Forms/SubSettingControl.resx @@ -0,0 +1,330 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + NoControl + + + groupBox2 + + + + 60, 16 + + + txtUrl + + + &Remove + + + 484, 21 + + + + 24 + + + 432, 46 + + + SubSettingControl + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + + groupBox2 + + + 83, 12 + + + groupBox2 + + + 6, 12 + + + label3 + + + 127, 21 + + + True + + + 0 + + + 12, 55 + + + 127, 55 + + + 10 + + + Bottom + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 2 + + + groupBox2 + + + 4 + + + 47, 12 + + + Subscription details + + + 0, 9 + + + Enable + + + chkEnabled + + + 3 + + + NoControl + + + Address (url) + + + 25 + + + 23 + + + groupBox2 + + + groupBox2 + + + 406, 23 + + + True + + + True + + + btnRemove + + + NoControl + + + label2 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 584, 110 + + + NoControl + + + 584, 119 + + + 11 + + + Remarks + + + 0 + + + 12, 25 + + + 75, 23 + + + groupBox2 + + + 265, 21 + + + 10 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 1 + + + $this + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 0 + + + txtRemarks + + + 5 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + + zh-Hans + + \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/SubSettingControl.zh-Hans.resx b/v2rayN/v2rayN/Forms/SubSettingControl.zh-Hans.resx new file mode 100644 index 00000000..12e6dbd4 --- /dev/null +++ b/v2rayN/v2rayN/Forms/SubSettingControl.zh-Hans.resx @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + 48, 16 + + + 启用 + + + 移除 + + + 29, 12 + + + 备注 + + + 65, 12 + + + 地址 (url) + + + 订阅详情 + + \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/SubSettingForm.Designer.cs b/v2rayN/v2rayN/Forms/SubSettingForm.Designer.cs new file mode 100644 index 00000000..489693c8 --- /dev/null +++ b/v2rayN/v2rayN/Forms/SubSettingForm.Designer.cs @@ -0,0 +1,97 @@ +namespace v2rayN.Forms +{ + partial class SubSettingForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SubSettingForm)); + this.btnClose = new System.Windows.Forms.Button(); + this.panCon = new System.Windows.Forms.Panel(); + this.panel2 = new System.Windows.Forms.Panel(); + this.btnAdd = new System.Windows.Forms.Button(); + this.btnOK = new System.Windows.Forms.Button(); + this.panel2.SuspendLayout(); + this.SuspendLayout(); + // + // btnClose + // + this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; + resources.ApplyResources(this.btnClose, "btnClose"); + this.btnClose.Name = "btnClose"; + this.btnClose.UseVisualStyleBackColor = true; + this.btnClose.Click += new System.EventHandler(this.btnClose_Click); + // + // panCon + // + resources.ApplyResources(this.panCon, "panCon"); + this.panCon.Name = "panCon"; + // + // panel2 + // + this.panel2.Controls.Add(this.btnAdd); + this.panel2.Controls.Add(this.btnClose); + this.panel2.Controls.Add(this.btnOK); + resources.ApplyResources(this.panel2, "panel2"); + this.panel2.Name = "panel2"; + // + // btnAdd + // + resources.ApplyResources(this.btnAdd, "btnAdd"); + this.btnAdd.Name = "btnAdd"; + this.btnAdd.UseVisualStyleBackColor = true; + this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click); + // + // btnOK + // + resources.ApplyResources(this.btnOK, "btnOK"); + this.btnOK.Name = "btnOK"; + this.btnOK.UseVisualStyleBackColor = true; + this.btnOK.Click += new System.EventHandler(this.btnOK_Click); + // + // SubSettingForm + // + resources.ApplyResources(this, "$this"); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.CancelButton = this.btnClose; + this.Controls.Add(this.panCon); + this.Controls.Add(this.panel2); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Name = "SubSettingForm"; + this.Load += new System.EventHandler(this.SubSettingForm_Load); + this.panel2.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + private System.Windows.Forms.Button btnClose; + private System.Windows.Forms.Button btnOK; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Button btnAdd; + private System.Windows.Forms.Panel panCon; + } +} \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/SubSettingForm.cs b/v2rayN/v2rayN/Forms/SubSettingForm.cs new file mode 100644 index 00000000..14b5fbf6 --- /dev/null +++ b/v2rayN/v2rayN/Forms/SubSettingForm.cs @@ -0,0 +1,109 @@ +using System; +using System.Collections.Generic; +using System.Windows.Forms; +using v2rayN.Handler; +using v2rayN.Mode; + +namespace v2rayN.Forms +{ + public partial class SubSettingForm : BaseForm + { + List lstControls = new List(); + + public SubSettingForm() + { + InitializeComponent(); + } + + private void SubSettingForm_Load(object sender, EventArgs e) + { + if (config.subItem == null) + { + config.subItem = new List(); + } + + RefreshSubsView(); + } + + /// + /// 刷新列表 + /// + private void RefreshSubsView() + { + panCon.Controls.Clear(); + lstControls.Clear(); + + for (int k = config.subItem.Count - 1; k >= 0; k--) + { + var item = config.subItem[k]; + if (Utils.IsNullOrEmpty(item.remarks) + && Utils.IsNullOrEmpty(item.url)) + { + if (!Utils.IsNullOrEmpty(item.id)) + { + ConfigHandler.RemoveServerViaSubid(ref config, item.id); + } + config.subItem.RemoveAt(k); + } + } + + for (int k = 0; k < config.subItem.Count; k++) + { + var item = config.subItem[k]; + SubSettingControl control = new SubSettingControl(); + control.OnButtonClicked += Control_OnButtonClicked; + control.subItem = item; + control.Dock = DockStyle.Top; + + panCon.Controls.Add(control); + panCon.Controls.SetChildIndex(control, 0); + + lstControls.Add(control); + } + } + + private void Control_OnButtonClicked(object sender, EventArgs e) + { + RefreshSubsView(); + } + + private void btnOK_Click(object sender, EventArgs e) + { + if (config.subItem.Count <= 0) + { + AddSub(); + } + + if (ConfigHandler.SaveSubItem(ref config) == 0) + { + this.DialogResult = DialogResult.OK; + } + else + { + UI.Show(UIRes.I18N("OperationFailed")); + } + } + + private void btnClose_Click(object sender, EventArgs e) + { + this.DialogResult = DialogResult.Cancel; + } + + private void btnAdd_Click(object sender, EventArgs e) + { + AddSub(); + + RefreshSubsView(); + } + + + private void AddSub() + { + var subItem = new SubItem(); + subItem.id = string.Empty; + subItem.remarks = "remarks"; + subItem.url = "url"; + config.subItem.Add(subItem); + } + } +} diff --git a/v2rayN/v2rayN/Forms/SubSettingForm.resx b/v2rayN/v2rayN/Forms/SubSettingForm.resx new file mode 100644 index 00000000..05d3db7b --- /dev/null +++ b/v2rayN/v2rayN/Forms/SubSettingForm.resx @@ -0,0 +1,273 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + NoControl + + + + 448, 17 + + + 75, 23 + + + + 4 + + + &Cancel + + + btnClose + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel2 + + + 1 + + + True + + + Fill + + + 0, 0 + + + 581, 569 + + + 10 + + + panCon + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + NoControl + + + 47, 17 + + + 75, 23 + + + 6 + + + &Add + + + btnAdd + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel2 + + + 0 + + + NoControl + + + 355, 17 + + + 75, 23 + + + 5 + + + &OK + + + btnOK + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel2 + + + 2 + + + Bottom + + + 0, 569 + + + 581, 60 + + + 7 + + + panel2 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 1 + + + True + + + 6, 12 + + + 581, 629 + + + Subscription settings + + + SubSettingForm + + + v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/SubSettingForm.zh-Hans.resx b/v2rayN/v2rayN/Forms/SubSettingForm.zh-Hans.resx new file mode 100644 index 00000000..628dd5ab --- /dev/null +++ b/v2rayN/v2rayN/Forms/SubSettingForm.zh-Hans.resx @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 取消(&C) + + + 添加(&A) + + + 确定(&O) + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkMAwAAAFFTeXN0 + ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2Vu + PWIwM2Y1ZjdmMTFkNTBhM2EFAQAAACFTeXN0ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0l0ZW0HAAAA + BFRleHQKSW1hZ2VJbmRleAlCYWNrQ29sb3IHQ2hlY2tlZARGb250CUZvcmVDb2xvchdVc2VJdGVtU3R5 + bGVGb3JTdWJJdGVtcwEABAAEBAAIFFN5c3RlbS5EcmF3aW5nLkNvbG9yAwAAAAETU3lzdGVtLkRyYXdp + bmcuRm9udAMAAAAUU3lzdGVtLkRyYXdpbmcuQ29sb3IDAAAAAQIAAAAGBAAAAAD/////Bfv///8UU3lz + dGVtLkRyYXdpbmcuQ29sb3IEAAAABG5hbWUFdmFsdWUKa25vd25Db2xvcgVzdGF0ZQEAAAAJBwcDAAAA + CgAAAAAAAAAAGAABAAAJBgAAAAH5////+////woAAAAAAAAAABoAAQABBQYAAAATU3lzdGVtLkRyYXdp + bmcuRm9udAQAAAAETmFtZQRTaXplBVN0eWxlBFVuaXQBAAQECxhTeXN0ZW0uRHJhd2luZy5Gb250U3R5 + bGUDAAAAG1N5c3RlbS5EcmF3aW5nLkdyYXBoaWNzVW5pdAMAAAADAAAABggAAAAG5a6L5L2TAAAQQQX3 + ////GFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQEAAAAHdmFsdWVfXwAIAwAAAAAAAAAF9v///xtTeXN0 + ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQBAAAAB3ZhbHVlX18ACAMAAAADAAAACw== + + + + 订阅设置 + + \ No newline at end of file diff --git a/v2rayN/v2rayN/Global.cs b/v2rayN/v2rayN/Global.cs new file mode 100644 index 00000000..5046c459 --- /dev/null +++ b/v2rayN/v2rayN/Global.cs @@ -0,0 +1,170 @@ + +namespace v2rayN +{ + class Global + { + #region 常量 + + /// + /// 更新链接 + /// + public const string UpdateUrl = @"https://github.com/2dust/v2rayN/releases"; + /// + /// 关于链接 + /// + public const string AboutUrl = @"https://github.com/2dust/v2rayN"; + + /// + /// SpeedTestUrl + /// + public const string SpeedTestUrl = @"http://speedtest-sfo2.digitalocean.com/10mb.test"; + + /// + /// CustomRoutingListUrl + /// + public const string CustomRoutingListUrl = @"https://raw.githubusercontent.com/2dust/v2rayCustomRoutingList/master/"; + + /// + /// PromotionUrl + /// + public const string PromotionUrl = @"https://1.2345345.xyz/ads.html"; + + /// + /// 本软件配置文件名 + /// + public const string ConfigFileName = "guiNConfig.json"; + + /// + /// v2ray配置文件名 + /// + public const string v2rayConfigFileName = "config.json"; + + /// + /// v2ray客户端配置样例文件名 + /// + public const string v2raySampleClient = "v2rayN.Sample.SampleClientConfig.txt"; + /// + /// v2ray服务端配置样例文件名 + /// + public const string v2raySampleServer = "v2rayN.Sample.SampleServerConfig.txt"; + /// + /// v2ray配置Httprequest文件名 + /// + public const string v2raySampleHttprequestFileName = "v2rayN.Sample.SampleHttprequest.txt"; + /// + /// v2ray配置Httpresponse文件名 + /// + public const string v2raySampleHttpresponseFileName = "v2rayN.Sample.SampleHttpresponse.txt"; + /// + /// 空白的pac文件 + /// + public const string BlankPacFileName = "v2rayN.Sample.BlankPac.txt"; + + + /// + /// 默认加密方式 + /// + public const string DefaultSecurity = "auto"; + + /// + /// 默认传输协议 + /// + public const string DefaultNetwork = "tcp"; + + /// + /// Tcp伪装http + /// + public const string TcpHeaderHttp = "http"; + + /// + /// None值 + /// + public const string None = "none"; + + /// + /// 代理 tag值 + /// + public const string agentTag = "proxy"; + + /// + /// 直连 tag值 + /// + public const string directTag = "direct"; + + /// + /// 阻止 tag值 + /// + public const string blockTag = "block"; + + /// + /// vmess + /// + public const string vmessProtocol = "vmess://"; + /// + /// shadowsocks + /// + public const string ssProtocol = "ss://"; + /// + /// socks + /// + public const string socksProtocol = "socks://"; + + /// + /// pac + /// + public const string pacFILE = "pac.txt"; + + /// + /// email + /// + public const string userEMail = "t@t.tt"; + + /// + /// MyRegPath + /// + public const string MyRegPath = "Software\\v2rayNGUI"; + + /// + /// Language + /// + public const string MyRegKeyLanguage = "CurrentLanguage"; + /// + /// Icon + /// + public const string CustomIconName = "v2rayN.ico"; + + #endregion + + #region 全局变量 + + /// + /// 是否需要重启服务V2ray + /// + public static bool reloadV2ray { get; set; } + + /// + /// 是否开启全局代理(http) + /// + public static bool sysAgent { get; set; } + + /// + /// socks端口号 + /// + public static int socksPort { get; set; } + + /// + /// 全局代理端口(http) + /// + public static int sysAgentPort { get; set; } + + /// + /// PAC监听端口号 + /// + public static int pacPort { get; set; } + + #endregion + + + + } +} diff --git a/v2rayN/v2rayN/Handler/ConfigHandler.cs b/v2rayN/v2rayN/Handler/ConfigHandler.cs new file mode 100644 index 00000000..ecefedf0 --- /dev/null +++ b/v2rayN/v2rayN/Handler/ConfigHandler.cs @@ -0,0 +1,784 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Net; +using v2rayN.Mode; + +namespace v2rayN.Handler +{ + /// + /// 本软件配置文件处理类 + /// + class ConfigHandler + { + private static string configRes = Global.ConfigFileName; + + /// + /// 载入配置文件 + /// + /// + /// + public static int LoadConfig(ref Config config) + { + //载入配置文件 + string result = Utils.LoadResource(Utils.GetPath(configRes)); + if (!Utils.IsNullOrEmpty(result)) + { + //转成Json + config = Utils.FromJson(result); + } + if (config == null) + { + config = new Config(); + config.index = -1; + config.logEnabled = false; + config.loglevel = "warning"; + config.vmess = new List(); + + //Mux + config.muxEnabled = true; + + ////默认监听端口 + //config.pacPort = 8888; + } + + //本地监听 + if (config.inbound == null) + { + config.inbound = new List(); + InItem inItem = new InItem(); + inItem.protocol = "socks"; + inItem.localPort = 10808; + inItem.udpEnabled = true; + inItem.sniffingEnabled = true; + + config.inbound.Add(inItem); + + //inItem = new InItem(); + //inItem.protocol = "http"; + //inItem.localPort = 1081; + //inItem.udpEnabled = true; + + //config.inbound.Add(inItem); + } + else + { + //http协议不由core提供,只保留socks + if (config.inbound.Count > 0) + { + config.inbound[0].protocol = "socks"; + } + } + //路由规则 + if (Utils.IsNullOrEmpty(config.domainStrategy)) + { + config.domainStrategy = "IPIfNonMatch"; + } + if (Utils.IsNullOrEmpty(config.routingMode)) + { + config.routingMode = "0"; + } + if (config.useragent == null) + { + config.useragent = new List(); + } + if (config.userdirect == null) + { + config.userdirect = new List(); + } + if (config.userblock == null) + { + config.userblock = new List(); + } + //kcp + if (config.kcpItem == null) + { + config.kcpItem = new KcpItem(); + config.kcpItem.mtu = 1350; + config.kcpItem.tti = 50; + config.kcpItem.uplinkCapacity = 12; + config.kcpItem.downlinkCapacity = 100; + config.kcpItem.readBufferSize = 2; + config.kcpItem.writeBufferSize = 2; + config.kcpItem.congestion = false; + } + if (config.uiItem == null) + { + config.uiItem = new UIItem(); + } + //// 如果是用户升级,首次会有端口号为0的情况,不可用,这里处理 + //if (config.pacPort == 0) + //{ + // config.pacPort = 8888; + //} + + if (config == null + || config.index < 0 + || config.vmess.Count <= 0 + || config.index > config.vmess.Count - 1 + ) + { + Global.reloadV2ray = false; + } + else + { + Global.reloadV2ray = true; + + //版本升级 + for (int i = 0; i < config.vmess.Count; i++) + { + VmessItem vmessItem = config.vmess[i]; + UpgradeServerVersion(ref vmessItem); + } + } + + return 0; + } + + /// + /// 添加服务器或编辑 + /// + /// + /// + /// + /// + public static int AddServer(ref Config config, VmessItem vmessItem, int index) + { + vmessItem.configVersion = 2; + vmessItem.configType = (int)EConfigType.Vmess; + if (index >= 0) + { + //修改 + config.vmess[index] = vmessItem; + if (config.index.Equals(index)) + { + Global.reloadV2ray = true; + } + } + else + { + //添加 + config.vmess.Add(vmessItem); + if (config.vmess.Count == 1) + { + config.index = 0; + Global.reloadV2ray = true; + } + } + + ToJsonFile(config); + + return 0; + } + + /// + /// 移除服务器 + /// + /// + /// + /// + public static int RemoveServer(ref Config config, int index) + { + if (index < 0 || index > config.vmess.Count - 1) + { + return -1; + } + + //删除 + config.vmess.RemoveAt(index); + + + //移除的是活动的 + if (config.index.Equals(index)) + { + if (config.vmess.Count > 0) + { + config.index = 0; + } + else + { + config.index = -1; + } + Global.reloadV2ray = true; + } + else if (index < config.index)//移除活动之前的 + { + config.index--; + Global.reloadV2ray = true; + } + + ToJsonFile(config); + + return 0; + } + + /// + /// 复制服务器 + /// + /// + /// + /// + public static int CopyServer(ref Config config, int index) + { + if (index < 0 || index > config.vmess.Count - 1) + { + return -1; + } + + VmessItem vmessItem = new VmessItem(); + vmessItem.configVersion = config.vmess[index].configVersion; + vmessItem.configType = config.vmess[index].configType; + vmessItem.address = config.vmess[index].address; + vmessItem.port = config.vmess[index].port; + vmessItem.id = config.vmess[index].id; + vmessItem.alterId = config.vmess[index].alterId; + vmessItem.security = config.vmess[index].security; + vmessItem.network = config.vmess[index].network; + vmessItem.headerType = config.vmess[index].headerType; + vmessItem.requestHost = config.vmess[index].requestHost; + vmessItem.path = config.vmess[index].path; + vmessItem.streamSecurity = config.vmess[index].streamSecurity; + vmessItem.remarks = string.Format("{0}-clone", config.vmess[index].remarks); + + config.vmess.Add(vmessItem); + + ToJsonFile(config); + + return 0; + } + + /// + /// 设置活动服务器 + /// + /// + /// + /// + public static int SetDefaultServer(ref Config config, int index) + { + if (index < 0 || index > config.vmess.Count - 1) + { + return -1; + } + + ////和现在相同 + //if (config.index.Equals(index)) + //{ + // return -1; + //} + config.index = index; + Global.reloadV2ray = true; + + ToJsonFile(config); + + return 0; + } + + /// + /// 保参数 + /// + /// + /// + public static int SaveConfig(ref Config config) + { + Global.reloadV2ray = true; + + ToJsonFile(config); + + return 0; + } + + /// + /// 存储文件 + /// + /// + public static void ToJsonFile(Config config) + { + Utils.ToJsonFile(config, Utils.GetPath(configRes)); + } + + /// + /// 取得服务器QRCode配置 + /// + /// + /// + /// + public static string GetVmessQRCode(Config config, int index) + { + try + { + string url = string.Empty; + + VmessItem vmessItem = config.vmess[index]; + if (vmessItem.configType == (int)EConfigType.Vmess) + { + VmessQRCode vmessQRCode = new VmessQRCode(); + vmessQRCode.v = vmessItem.configVersion.ToString(); + vmessQRCode.ps = vmessItem.remarks.Trim(); //备注也许很长 ; + vmessQRCode.add = vmessItem.address; + vmessQRCode.port = vmessItem.port.ToString(); + vmessQRCode.id = vmessItem.id; + vmessQRCode.aid = vmessItem.alterId.ToString(); + vmessQRCode.net = vmessItem.network; + vmessQRCode.type = vmessItem.headerType; + vmessQRCode.host = vmessItem.requestHost; + vmessQRCode.path = vmessItem.path; + vmessQRCode.tls = vmessItem.streamSecurity; + + url = Utils.ToJson(vmessQRCode); + url = Utils.Base64Encode(url); + url = string.Format("{0}{1}", Global.vmessProtocol, url); + + } + else if (vmessItem.configType == (int)EConfigType.Shadowsocks) + { + var remark = string.Empty; + if (!Utils.IsNullOrEmpty(vmessItem.remarks)) + { + remark = "#" + WebUtility.UrlEncode(vmessItem.remarks); + } + url = string.Format("{0}:{1}@{2}:{3}", + vmessItem.security, + vmessItem.id, + vmessItem.address, + vmessItem.port); + url = Utils.Base64Encode(url); + url = string.Format("{0}{1}{2}", Global.ssProtocol, url, remark); + } + else if (vmessItem.configType == (int)EConfigType.Socks) + { + var remark = string.Empty; + if (!Utils.IsNullOrEmpty(vmessItem.remarks)) + { + remark = "#" + WebUtility.UrlEncode(vmessItem.remarks); + } + url = string.Format("{0}:{1}", + vmessItem.address, + vmessItem.port); + url = Utils.Base64Encode(url); + url = string.Format("{0}{1}{2}", Global.socksProtocol, url, remark); + } + else + { + } + return url; + } + catch + { + return ""; + } + } + + /// + /// 移动服务器 + /// + /// + /// + /// + /// + public static int MoveServer(ref Config config, int index, EMove eMove) + { + int count = config.vmess.Count; + if (index < 0 || index > config.vmess.Count - 1) + { + return -1; + } + switch (eMove) + { + case EMove.Top: + { + if (index == 0) + { + return 0; + } + VmessItem vmess = Utils.DeepCopy(config.vmess[index]); + config.vmess.RemoveAt(index); + config.vmess.Insert(0, vmess); + if (index < config.index) + { + // + } + else if (config.index == index) + { + config.index = 0; + } + else + { + config.index++; + } + break; + } + case EMove.Up: + { + if (index == 0) + { + return 0; + } + VmessItem vmess = Utils.DeepCopy(config.vmess[index]); + config.vmess.RemoveAt(index); + config.vmess.Insert(index - 1, vmess); + if (index == config.index + 1) + { + config.index++; + } + else if (config.index == index) + { + config.index--; + } + break; + } + + case EMove.Down: + { + if (index == count - 1) + { + return 0; + } + VmessItem vmess = Utils.DeepCopy(config.vmess[index]); + config.vmess.RemoveAt(index); + config.vmess.Insert(index + 1, vmess); + if (index == config.index - 1) + { + config.index--; + } + else if (config.index == index) + { + config.index++; + } + break; + } + case EMove.Bottom: + { + if (index == count - 1) + { + return 0; + } + VmessItem vmess = Utils.DeepCopy(config.vmess[index]); + config.vmess.RemoveAt(index); + config.vmess.Add(vmess); + if (index < config.index) + { + config.index--; + } + else if (config.index == index) + { + config.index = count - 1; + } + else + { + // + } + break; + } + + } + Global.reloadV2ray = true; + + ToJsonFile(config); + + return 0; + } + + /// + /// 添加自定义服务器 + /// + /// + /// + /// + public static int AddCustomServer(ref Config config, string fileName) + { + string newFileName = string.Empty; + newFileName = string.Format("{0}.json", Utils.GetGUID()); + newFileName = Path.Combine(Utils.GetTempPath(), newFileName); + + try + { + File.Copy(fileName, newFileName); + } + catch + { + return -1; + } + + VmessItem vmessItem = new VmessItem(); + vmessItem.address = newFileName; + vmessItem.configType = (int)EConfigType.Custom; + vmessItem.remarks = string.Format("import custom@{0}", DateTime.Now.ToShortDateString()); + + config.vmess.Add(vmessItem); + if (config.vmess.Count == 1) + { + config.index = 0; + Global.reloadV2ray = true; + } + + ToJsonFile(config); + + return 0; + } + + /// + /// 添加服务器或编辑 + /// + /// + /// + /// + /// + public static int EditCustomServer(ref Config config, VmessItem vmessItem, int index) + { + //修改 + config.vmess[index] = vmessItem; + if (config.index.Equals(index)) + { + Global.reloadV2ray = true; + } + + ToJsonFile(config); + + return 0; + } + + /// + /// 添加服务器或编辑 + /// + /// + /// + /// + /// + public static int AddShadowsocksServer(ref Config config, VmessItem vmessItem, int index) + { + vmessItem.configVersion = 2; + vmessItem.configType = (int)EConfigType.Shadowsocks; + if (index >= 0) + { + //修改 + config.vmess[index] = vmessItem; + if (config.index.Equals(index)) + { + Global.reloadV2ray = true; + } + } + else + { + //添加 + config.vmess.Add(vmessItem); + if (config.vmess.Count == 1) + { + config.index = 0; + Global.reloadV2ray = true; + } + } + + ToJsonFile(config); + + return 0; + } + + /// + /// 添加服务器或编辑 + /// + /// + /// + /// + /// + public static int AddSocksServer(ref Config config, VmessItem vmessItem, int index) + { + vmessItem.configVersion = 2; + vmessItem.configType = (int)EConfigType.Socks; + if (index >= 0) + { + //修改 + config.vmess[index] = vmessItem; + if (config.index.Equals(index)) + { + Global.reloadV2ray = true; + } + } + else + { + //添加 + config.vmess.Add(vmessItem); + if (config.vmess.Count == 1) + { + config.index = 0; + Global.reloadV2ray = true; + } + } + + ToJsonFile(config); + + return 0; + } + + /// + /// 配置文件版本升级 + /// + /// + /// + public static int UpgradeServerVersion(ref VmessItem vmessItem) + { + try + { + if (vmessItem == null + || vmessItem.configVersion == 2) + { + return 0; + } + if (vmessItem.configType == (int)EConfigType.Vmess) + { + string path = ""; + string host = ""; + string[] arrParameter; + switch (vmessItem.network) + { + case "kcp": + break; + case "ws": + //*ws(path+host),它们中间分号(;)隔开 + arrParameter = vmessItem.requestHost.Replace(" ", "").Split(';'); + if (arrParameter.Length > 0) + { + path = arrParameter[0]; + } + if (arrParameter.Length > 1) + { + path = arrParameter[0]; + host = arrParameter[1]; + } + vmessItem.path = path; + vmessItem.requestHost = host; + break; + case "h2": + //*h2 path + arrParameter = vmessItem.requestHost.Replace(" ", "").Split(';'); + if (arrParameter.Length > 0) + { + path = arrParameter[0]; + } + if (arrParameter.Length > 1) + { + path = arrParameter[0]; + host = arrParameter[1]; + } + vmessItem.path = path; + vmessItem.requestHost = host; + break; + default: + break; + } + } + vmessItem.configVersion = 2; + } + catch + { + } + return 0; + } + + /// + /// 批量添加服务器 + /// + /// + /// + /// + /// + public static int AddBatchServers(ref Config config, string clipboardData, string subid = "") + { + if (Utils.IsNullOrEmpty(clipboardData)) + { + return -1; + } + //if (clipboardData.IndexOf("vmess") >= 0 && clipboardData.IndexOf("vmess") == clipboardData.LastIndexOf("vmess")) + //{ + // clipboardData = clipboardData.Replace("\r\n", "").Replace("\n", ""); + //} + int countServers = 0; + + //string[] arrData = clipboardData.Split(new string[] { "\r\n" }, StringSplitOptions.None); + string[] arrData = clipboardData.Split(Environment.NewLine.ToCharArray()); + foreach (string str in arrData) + { + string msg; + VmessItem vmessItem = V2rayConfigHandler.ImportFromClipboardConfig(str, out msg); + if (vmessItem == null) + { + continue; + } + vmessItem.subid = subid; + if (vmessItem.configType == (int)EConfigType.Vmess) + { + if (AddServer(ref config, vmessItem, -1) == 0) + { + countServers++; + } + } + else if (vmessItem.configType == (int)EConfigType.Shadowsocks) + { + if (AddShadowsocksServer(ref config, vmessItem, -1) == 0) + { + countServers++; + } + } + else if (vmessItem.configType == (int)EConfigType.Socks) + { + if (AddSocksServer(ref config, vmessItem, -1) == 0) + { + countServers++; + } + } + } + if (countServers > 0) + { + return 0; + } + return -1; + } + + /// + /// save sub + /// + /// + /// + public static int SaveSubItem(ref Config config) + { + if (config.subItem == null || config.subItem.Count <= 0) + { + return -1; + } + + foreach (SubItem sub in config.subItem) + { + if (Utils.IsNullOrEmpty(sub.id)) + { + sub.id = Utils.GetGUID(); + } + } + + ToJsonFile(config); + return 0; + } + + /// + /// 移除服务器 + /// + /// + /// + /// + public static int RemoveServerViaSubid(ref Config config, string subid) + { + if (Utils.IsNullOrEmpty(subid) || config.vmess.Count <= 0) + { + return -1; + } + for (int k = config.vmess.Count - 1; k >= 0; k--) + { + if (config.vmess[k].subid.Equals(subid)) + { + config.vmess.RemoveAt(k); + } + } + + ToJsonFile(config); + return 0; + } + } +} diff --git a/v2rayN/v2rayN/Handler/ProxySetting.cs b/v2rayN/v2rayN/Handler/ProxySetting.cs new file mode 100644 index 00000000..ec43bce1 --- /dev/null +++ b/v2rayN/v2rayN/Handler/ProxySetting.cs @@ -0,0 +1,190 @@ +using System; +using Microsoft.Win32; +using System.Runtime.InteropServices; + +namespace v2rayN.Handler +{ + /// + /// 设置系统代理类 + /// + class ProxySetting + { + public static bool UnsetProxy() + { + return SetProxy(null, null); + } + public static bool SetProxy(string strProxy) + { + return SetProxy(strProxy, null); + } + + public static bool SetProxy(string strProxy, string exceptions) + { + InternetPerConnOptionList list = new InternetPerConnOptionList(); + + int optionCount = string.IsNullOrEmpty(strProxy) ? 1 : (string.IsNullOrEmpty(exceptions) ? 2 : 3); + InternetConnectionOption[] options = new InternetConnectionOption[optionCount]; + // USE a proxy server ... + options[0].m_Option = PerConnOption.INTERNET_PER_CONN_FLAGS; + options[0].m_Value.m_Int = (int)((optionCount < 2) ? PerConnFlags.PROXY_TYPE_DIRECT : (PerConnFlags.PROXY_TYPE_DIRECT | PerConnFlags.PROXY_TYPE_PROXY)); + // use THIS proxy server + if (optionCount > 1) + { + options[1].m_Option = PerConnOption.INTERNET_PER_CONN_PROXY_SERVER; + options[1].m_Value.m_StringPtr = Marshal.StringToHGlobalAuto(strProxy); + // except for these addresses ... + if (optionCount > 2) + { + options[2].m_Option = PerConnOption.INTERNET_PER_CONN_PROXY_BYPASS; + options[2].m_Value.m_StringPtr = Marshal.StringToHGlobalAuto(exceptions); + } + } + + // default stuff + list.dwSize = Marshal.SizeOf(list); + list.szConnection = IntPtr.Zero; + list.dwOptionCount = options.Length; + list.dwOptionError = 0; + + + int optSize = Marshal.SizeOf(typeof(InternetConnectionOption)); + // make a pointer out of all that ... + IntPtr optionsPtr = Marshal.AllocCoTaskMem(optSize * options.Length); + // copy the array over into that spot in memory ... + for (int i = 0; i < options.Length; ++i) + { + IntPtr opt = new IntPtr(optionsPtr.ToInt32() + (i * optSize)); + Marshal.StructureToPtr(options[i], opt, false); + } + + list.options = optionsPtr; + + // and then make a pointer out of the whole list + IntPtr ipcoListPtr = Marshal.AllocCoTaskMem((Int32)list.dwSize); + Marshal.StructureToPtr(list, ipcoListPtr, false); + + // and finally, call the API method! + int returnvalue = NativeMethods.InternetSetOption(IntPtr.Zero, + InternetOption.INTERNET_OPTION_PER_CONNECTION_OPTION, + ipcoListPtr, list.dwSize) ? -1 : 0; + if (returnvalue == 0) + { // get the error codes, they might be helpful + returnvalue = Marshal.GetLastWin32Error(); + } + // FREE the data ASAP + Marshal.FreeCoTaskMem(optionsPtr); + Marshal.FreeCoTaskMem(ipcoListPtr); + if (returnvalue > 0) + { // throw the error codes, they might be helpful + //throw new Win32Exception(Marshal.GetLastWin32Error()); + } + + return (returnvalue < 0); + } + + + #region WinInet structures + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] + public struct InternetPerConnOptionList + { + public int dwSize; // size of the INTERNET_PER_CONN_OPTION_LIST struct + public IntPtr szConnection; // connection name to set/query options + public int dwOptionCount; // number of options to set/query + public int dwOptionError; // on error, which option failed + //[MarshalAs(UnmanagedType.)] + public IntPtr options; + }; + + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] + public struct InternetConnectionOption + { + static readonly int Size; + public PerConnOption m_Option; + public InternetConnectionOptionValue m_Value; + static InternetConnectionOption() + { + InternetConnectionOption.Size = Marshal.SizeOf(typeof(InternetConnectionOption)); + } + + // Nested Types + [StructLayout(LayoutKind.Explicit)] + public struct InternetConnectionOptionValue + { + // Fields + [FieldOffset(0)] + public System.Runtime.InteropServices.ComTypes.FILETIME m_FileTime; + [FieldOffset(0)] + public int m_Int; + [FieldOffset(0)] + public IntPtr m_StringPtr; + } + } + #endregion + + #region WinInet enums + // + // options manifests for Internet{Query|Set}Option + // + public enum InternetOption : uint + { + INTERNET_OPTION_PER_CONNECTION_OPTION = 75 + } + + // + // Options used in INTERNET_PER_CONN_OPTON struct + // + public enum PerConnOption + { + INTERNET_PER_CONN_FLAGS = 1, // Sets or retrieves the connection type. The Value member will contain one or more of the values from PerConnFlags + INTERNET_PER_CONN_PROXY_SERVER = 2, // Sets or retrieves a string containing the proxy servers. + INTERNET_PER_CONN_PROXY_BYPASS = 3, // Sets or retrieves a string containing the URLs that do not use the proxy server. + INTERNET_PER_CONN_AUTOCONFIG_URL = 4//, // Sets or retrieves a string containing the URL to the automatic configuration script. + + } + + // + // PER_CONN_FLAGS + // + [Flags] + public enum PerConnFlags + { + PROXY_TYPE_DIRECT = 0x00000001, // direct to net + PROXY_TYPE_PROXY = 0x00000002, // via named proxy + PROXY_TYPE_AUTO_PROXY_URL = 0x00000004, // autoproxy URL + PROXY_TYPE_AUTO_DETECT = 0x00000008 // use autoproxy detection + } + #endregion + + internal static class NativeMethods + { + [DllImport("WinInet.dll", SetLastError = true, CharSet = CharSet.Auto)] + [return: MarshalAs(UnmanagedType.Bool)] + public static extern bool InternetSetOption(IntPtr hInternet, InternetOption dwOption, IntPtr lpBuffer, int dwBufferLength); + } + + //判断是否使用代理 + public static bool UsedProxy() + { + RegistryKey rk = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Internet Settings", true); + if (rk.GetValue("ProxyEnable").ToString() == "1") + { + rk.Close(); + return true; + } + else + { + rk.Close(); + return false; + } + } + //获得代理的IP和端口 + public static string GetProxyProxyServer() + { + RegistryKey rk = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Internet Settings", true); + string ProxyServer = rk.GetValue("ProxyServer").ToString(); + rk.Close(); + return ProxyServer; + + } + } +} diff --git a/v2rayN/v2rayN/Handler/QRCodeHelper.cs b/v2rayN/v2rayN/Handler/QRCodeHelper.cs new file mode 100644 index 00000000..e5433dec --- /dev/null +++ b/v2rayN/v2rayN/Handler/QRCodeHelper.cs @@ -0,0 +1,41 @@ +using System.Drawing; +using System.Drawing.Imaging; +using System.IO; +using ZXing; +using ZXing.QrCode; + +namespace v2rayN.Handler +{ + /// + /// 含有QR码的描述类和包装编码和渲染 + /// + public class QRCodeHelper + { + public static Image GetQRCode(string strContent) + { + Image img = null; + try + { + QrCodeEncodingOptions options = new QrCodeEncodingOptions(); + options.CharacterSet = "UTF-8"; + options.DisableECI = true; // Extended Channel Interpretation (ECI) 主要用于特殊的字符集。并不是所有的扫描器都支持这种编码。 + options.ErrorCorrection = ZXing.QrCode.Internal.ErrorCorrectionLevel.M; // 纠错级别 + options.Width = 500; + options.Height = 500; + options.Margin = 1; + // options.Hints,更多属性,也可以在这里添加。 + + BarcodeWriter writer = new BarcodeWriter(); + writer.Format = BarcodeFormat.QR_CODE; + writer.Options = options; + Bitmap bmp = writer.Write(strContent); + img = (Image)bmp; + return img; + } + catch + { + return img; + } + } + } +} diff --git a/v2rayN/v2rayN/Handler/RoutingRuleHandler.cs b/v2rayN/v2rayN/Handler/RoutingRuleHandler.cs new file mode 100644 index 00000000..57d4f564 --- /dev/null +++ b/v2rayN/v2rayN/Handler/RoutingRuleHandler.cs @@ -0,0 +1,53 @@ +using System.Collections.Generic; +using System.Text.RegularExpressions; + +namespace v2rayN.Handler +{ + /// + /// 路由规则文件处理类 + /// + class RoutingRuleHandler + { + /// + /// Parse Pac to v2ray rule + /// + /// + /// + public static List ParsePac(string filePath) + { + string result = Utils.LoadResource(filePath); + if (Utils.IsNullOrEmpty(result)) + { + return null; + } + + //取得rule + string pattern = @"(?is)(?<=\[)(.*)(?=\])"; + Regex rgx = new Regex(pattern); + result = rgx.Match(result).Value; + int index = result.IndexOf("];"); + result = result.Substring(0, index); + if (Utils.IsNullOrEmpty(result)) + { + return null; + } + + string[] arrPac = result.Split(','); + List lstPac = new List(); + foreach (string str in arrPac) + { + //处理有效值 + if (Utils.IsNullOrEmpty(str) + || str.Length <= 3) + { + continue; + } + string value = str.Replace("\",", "").Replace("\"", "").Replace(",", "").Replace("\r\n", "").Replace(" ", ""); + lstPac.Add(value); + } + + return lstPac; + } + + } +} diff --git a/v2rayN/v2rayN/Handler/V2rayConfigHandler.cs b/v2rayN/v2rayN/Handler/V2rayConfigHandler.cs new file mode 100644 index 00000000..531c501b --- /dev/null +++ b/v2rayN/v2rayN/Handler/V2rayConfigHandler.cs @@ -0,0 +1,1264 @@ +using System; +using System.Collections.Generic; +using System.IO; +using v2rayN.Mode; +using System.Net; +using System.Text; + +namespace v2rayN.Handler +{ + /// + /// v2ray配置文件处理类 + /// + class V2rayConfigHandler + { + private static string SampleClient = Global.v2raySampleClient; + private static string SampleServer = Global.v2raySampleServer; + + #region 生成客户端配置 + + /// + /// 生成v2ray的客户端配置文件 + /// + /// + /// + /// + /// + public static int GenerateClientConfig(Config config, string fileName, bool blExport, out string msg) + { + msg = string.Empty; + + try + { + //检查GUI设置 + if (config == null + || config.index < 0 + || config.vmess.Count <= 0 + || config.index > config.vmess.Count - 1 + ) + { + msg = UIRes.I18N("CheckServerSettings"); + return -1; + } + + msg = UIRes.I18N("InitialConfiguration"); + if (config.configType() == (int)EConfigType.Custom) + { + return GenerateClientCustomConfig(config, fileName, out msg); + } + + //取得默认配置 + string result = Utils.GetEmbedText(SampleClient); + if (Utils.IsNullOrEmpty(result)) + { + msg = UIRes.I18N("FailedGetDefaultConfiguration"); + return -1; + } + + //转成Json + V2rayConfig v2rayConfig = Utils.FromJson(result); + if (v2rayConfig == null) + { + msg = UIRes.I18N("FailedGenDefaultConfiguration"); + return -1; + } + + //开始修改配置 + log(config, ref v2rayConfig, blExport); + + //本地端口 + inbound(config, ref v2rayConfig); + + //路由 + routing(config, ref v2rayConfig); + + //outbound + outbound(config, ref v2rayConfig); + + //dns + dns(config, ref v2rayConfig); + + Utils.ToJsonFile(v2rayConfig, fileName); + + msg = string.Format(UIRes.I18N("SuccessfulConfiguration"), config.getSummary()); + } + catch + { + msg = UIRes.I18N("FailedGenDefaultConfiguration"); + return -1; + } + return 0; + } + + /// + /// 日志 + /// + /// + /// + /// + private static int log(Config config, ref V2rayConfig v2rayConfig, bool blExport) + { + try + { + if (blExport) + { + if (config.logEnabled) + { + v2rayConfig.log.loglevel = config.loglevel; + } + else + { + v2rayConfig.log.loglevel = config.loglevel; + v2rayConfig.log.access = ""; + v2rayConfig.log.error = ""; + } + } + else + { + if (config.logEnabled) + { + v2rayConfig.log.loglevel = config.loglevel; + v2rayConfig.log.access = Utils.GetPath(v2rayConfig.log.access); + v2rayConfig.log.error = Utils.GetPath(v2rayConfig.log.error); + } + else + { + v2rayConfig.log.loglevel = config.loglevel; + v2rayConfig.log.access = ""; + v2rayConfig.log.error = ""; + } + } + } + catch + { + } + return 0; + } + + /// + /// 本地端口 + /// + /// + /// + /// + private static int inbound(Config config, ref V2rayConfig v2rayConfig) + { + try + { + var inbound = v2rayConfig.inbounds[0]; + //端口 + inbound.port = config.inbound[0].localPort; + inbound.protocol = config.inbound[0].protocol; + if (config.allowLANConn) + { + inbound.listen = "0.0.0.0"; + } + else + { + inbound.listen = "127.0.0.1"; + } + //开启udp + inbound.settings.udp = config.inbound[0].udpEnabled; + inbound.sniffing.enabled = config.inbound[0].sniffingEnabled; + } + catch + { + } + return 0; + } + + /// + /// 路由 + /// + /// + /// + /// + private static int routing(Config config, ref V2rayConfig v2rayConfig) + { + try + { + if (v2rayConfig.routing != null + && v2rayConfig.routing.rules != null) + { + v2rayConfig.routing.domainStrategy = config.domainStrategy; + + //自定义 + //需代理 + routingUserRule(config.useragent, Global.agentTag, ref v2rayConfig); + //直连 + routingUserRule(config.userdirect, Global.directTag, ref v2rayConfig); + //阻止 + routingUserRule(config.userblock, Global.blockTag, ref v2rayConfig); + + + switch (config.routingMode) + { + case "0": + break; + case "1": + routingGeo("ip", "private", Global.directTag, ref v2rayConfig); + break; + case "2": + routingGeo("", "cn", Global.directTag, ref v2rayConfig); + break; + case "3": + routingGeo("ip", "private", Global.directTag, ref v2rayConfig); + routingGeo("", "cn", Global.directTag, ref v2rayConfig); + break; + } + + } + } + catch + { + } + return 0; + } + private static int routingUserRule(List userRule, string tag, ref V2rayConfig v2rayConfig) + { + try + { + if (userRule != null + && userRule.Count > 0) + { + //Domain + RulesItem rulesDomain = new RulesItem(); + rulesDomain.type = "field"; + rulesDomain.outboundTag = tag; + rulesDomain.domain = new List(); + + //IP + RulesItem rulesIP = new RulesItem(); + rulesIP.type = "field"; + rulesIP.outboundTag = tag; + rulesIP.ip = new List(); + + for (int k = 0; k < userRule.Count; k++) + { + string url = userRule[k].Trim(); + if (Utils.IsNullOrEmpty(url)) + { + continue; + } + if (Utils.IsIP(url) || url.StartsWith("geoip:")) + { + rulesIP.ip.Add(url); + } + else if (Utils.IsDomain(url) + || url.StartsWith("geosite:") + || url.StartsWith("regexp:") + || url.StartsWith("domain:") + || url.StartsWith("full:")) + { + rulesDomain.domain.Add(url); + } + } + if (rulesDomain.domain.Count > 0) + { + v2rayConfig.routing.rules.Add(rulesDomain); + } + if (rulesIP.ip.Count > 0) + { + v2rayConfig.routing.rules.Add(rulesIP); + } + } + } + catch + { + } + return 0; + } + + + private static int routingGeo(string ipOrDomain, string code, string tag, ref V2rayConfig v2rayConfig) + { + try + { + if (!Utils.IsNullOrEmpty(code)) + { + //IP + if (ipOrDomain == "ip" || ipOrDomain == "") + { + RulesItem rulesItem = new RulesItem(); + rulesItem.type = "field"; + rulesItem.outboundTag = Global.directTag; + rulesItem.ip = new List(); + rulesItem.ip.Add($"geoip:{code}"); + + v2rayConfig.routing.rules.Add(rulesItem); + } + + if (ipOrDomain == "domain" || ipOrDomain == "") + { + RulesItem rulesItem = new RulesItem(); + rulesItem.type = "field"; + rulesItem.outboundTag = Global.directTag; + rulesItem.domain = new List(); + rulesItem.domain.Add($"geosite:{code}"); + v2rayConfig.routing.rules.Add(rulesItem); + } + } + } + catch + { + } + return 0; + } + + /// + /// vmess协议服务器配置 + /// + /// + /// + /// + private static int outbound(Config config, ref V2rayConfig v2rayConfig) + { + try + { + var outbound = v2rayConfig.outbounds[0]; + if (config.configType() == (int)EConfigType.Vmess) + { + VnextItem vnextItem; + if (outbound.settings.vnext.Count <= 0) + { + vnextItem = new VnextItem(); + outbound.settings.vnext.Add(vnextItem); + } + else + { + vnextItem = outbound.settings.vnext[0]; + } + //远程服务器地址和端口 + vnextItem.address = config.address(); + vnextItem.port = config.port(); + + UsersItem usersItem; + if (vnextItem.users.Count <= 0) + { + usersItem = new UsersItem(); + vnextItem.users.Add(usersItem); + } + else + { + usersItem = vnextItem.users[0]; + } + //远程服务器用户ID + usersItem.id = config.id(); + usersItem.alterId = config.alterId(); + usersItem.email = Global.userEMail; + usersItem.security = config.security(); + + //Mux + outbound.mux.enabled = config.muxEnabled; + + //远程服务器底层传输配置 + StreamSettings streamSettings = outbound.streamSettings; + boundStreamSettings(config, "out", ref streamSettings); + + outbound.protocol = "vmess"; + outbound.settings.servers = null; + } + else if (config.configType() == (int)EConfigType.Shadowsocks) + { + ServersItem serversItem; + if (outbound.settings.servers.Count <= 0) + { + serversItem = new ServersItem(); + outbound.settings.servers.Add(serversItem); + } + else + { + serversItem = outbound.settings.servers[0]; + } + //远程服务器地址和端口 + serversItem.address = config.address(); + serversItem.port = config.port(); + serversItem.password = config.id(); + serversItem.method = config.security(); + + serversItem.ota = false; + serversItem.level = 1; + + outbound.mux.enabled = false; + + outbound.protocol = "shadowsocks"; + outbound.settings.vnext = null; + } + else if (config.configType() == (int)EConfigType.Socks) + { + ServersItem serversItem; + if (outbound.settings.servers.Count <= 0) + { + serversItem = new ServersItem(); + outbound.settings.servers.Add(serversItem); + } + else + { + serversItem = outbound.settings.servers[0]; + } + //远程服务器地址和端口 + serversItem.address = config.address(); + serversItem.port = config.port(); + + outbound.mux.enabled = false; + + outbound.protocol = "socks"; + outbound.settings.vnext = null; + } + } + catch + { + } + return 0; + } + + /// + /// vmess协议远程服务器底层传输配置 + /// + /// + /// + /// + /// + private static int boundStreamSettings(Config config, string iobound, ref StreamSettings streamSettings) + { + try + { + //远程服务器底层传输配置 + streamSettings.network = config.network(); + streamSettings.security = config.streamSecurity(); + + //streamSettings + switch (config.network()) + { + //kcp基本配置暂时是默认值,用户能自己设置伪装类型 + case "kcp": + KcpSettings kcpSettings = new KcpSettings(); + kcpSettings.mtu = config.kcpItem.mtu; + kcpSettings.tti = config.kcpItem.tti; + if (iobound.Equals("out")) + { + kcpSettings.uplinkCapacity = config.kcpItem.uplinkCapacity; + kcpSettings.downlinkCapacity = config.kcpItem.downlinkCapacity; + } + else if (iobound.Equals("in")) + { + kcpSettings.uplinkCapacity = config.kcpItem.downlinkCapacity; ; + kcpSettings.downlinkCapacity = config.kcpItem.downlinkCapacity; + } + else + { + kcpSettings.uplinkCapacity = config.kcpItem.uplinkCapacity; + kcpSettings.downlinkCapacity = config.kcpItem.downlinkCapacity; + } + + kcpSettings.congestion = config.kcpItem.congestion; + kcpSettings.readBufferSize = config.kcpItem.readBufferSize; + kcpSettings.writeBufferSize = config.kcpItem.writeBufferSize; + kcpSettings.header = new Header(); + kcpSettings.header.type = config.headerType(); + streamSettings.kcpSettings = kcpSettings; + break; + //ws + case "ws": + WsSettings wsSettings = new WsSettings(); + wsSettings.connectionReuse = true; + + string host2 = config.requestHost(); + string path = config.path(); + if (!string.IsNullOrWhiteSpace(host2)) + { + wsSettings.headers = new Headers(); + wsSettings.headers.Host = host2; + } + if (!string.IsNullOrWhiteSpace(path)) + { + wsSettings.path = path; + } + streamSettings.wsSettings = wsSettings; + + TlsSettings tlsSettings = new TlsSettings(); + tlsSettings.allowInsecure = config.allowInsecure(); + if (!string.IsNullOrWhiteSpace(host2)) + { + tlsSettings.serverName = host2; + } + streamSettings.tlsSettings = tlsSettings; + break; + //h2 + case "h2": + HttpSettings httpSettings = new HttpSettings(); + + string host3 = config.requestHost(); + if (!string.IsNullOrWhiteSpace(host3)) + { + httpSettings.host = Utils.String2List(host3); + } + httpSettings.path = config.path(); + + streamSettings.httpSettings = httpSettings; + + TlsSettings tlsSettings2 = new TlsSettings(); + tlsSettings2.allowInsecure = config.allowInsecure(); + streamSettings.tlsSettings = tlsSettings2; + break; + //quic + case "quic": + QuicSettings quicsettings = new QuicSettings(); + quicsettings.security = config.requestHost(); + quicsettings.key = config.path(); + quicsettings.header = new Header(); + quicsettings.header.type = config.headerType(); + + streamSettings.quicSettings = quicsettings; + break; + default: + //tcp带http伪装 + if (config.headerType().Equals(Global.TcpHeaderHttp)) + { + TcpSettings tcpSettings = new TcpSettings(); + tcpSettings.connectionReuse = true; + tcpSettings.header = new Header(); + tcpSettings.header.type = config.headerType(); + + if (iobound.Equals("out")) + { + //request填入自定义Host + string request = Utils.GetEmbedText(Global.v2raySampleHttprequestFileName); + string[] arrHost = config.requestHost().Split(','); + string host = string.Join("\",\"", arrHost); + request = request.Replace("$requestHost$", string.Format("\"{0}\"", host)); + //request = request.Replace("$requestHost$", string.Format("\"{0}\"", config.requestHost())); + + //填入自定义Path + string pathHttp = @"/"; + if (!Utils.IsNullOrEmpty(config.path())) + { + string[] arrPath = config.path().Split(','); + pathHttp = string.Join("\",\"", arrPath); + } + request = request.Replace("$requestPath$", string.Format("\"{0}\"", pathHttp)); + tcpSettings.header.request = Utils.FromJson(request); + } + else if (iobound.Equals("in")) + { + //string response = Utils.GetEmbedText(Global.v2raySampleHttpresponseFileName); + //tcpSettings.header.response = Utils.FromJson(response); + } + + streamSettings.tcpSettings = tcpSettings; + } + break; + } + } + catch + { + } + return 0; + } + + /// + /// remoteDNS + /// + /// + /// + /// + private static int dns(Config config, ref V2rayConfig v2rayConfig) + { + try + { + if (string.IsNullOrWhiteSpace(config.remoteDNS)) + { + return 0; + } + List servers = new List(); + + string[] arrDNS = config.remoteDNS.Split(','); + foreach (string str in arrDNS) + { + //if (Utils.IsIP(str)) + //{ + servers.Add(str); + //} + } + //servers.Add("localhost"); + v2rayConfig.dns = new Mode.Dns(); + v2rayConfig.dns.servers = servers; + } + catch + { + } + return 0; + } + + /// + /// 生成v2ray的客户端配置文件(自定义配置) + /// + /// + /// + /// + /// + public static int GenerateClientCustomConfig(Config config, string fileName, out string msg) + { + msg = string.Empty; + + try + { + //检查GUI设置 + if (config == null + || config.index < 0 + || config.vmess.Count <= 0 + || config.index > config.vmess.Count - 1 + ) + { + msg = UIRes.I18N("CheckServerSettings"); + return -1; + } + + string addressFileName = config.address(); + if (File.Exists(fileName)) + { + File.Delete(fileName); + } + File.Copy(addressFileName, fileName); + + msg = string.Format(UIRes.I18N("SuccessfulConfiguration"), config.getSummary()); + } + catch + { + msg = UIRes.I18N("FailedGenDefaultConfiguration"); + return -1; + } + return 0; + } + + #endregion + + #region 生成服务端端配置 + + /// + /// 生成v2ray的客户端配置文件 + /// + /// + /// + /// + /// + public static int GenerateServerConfig(Config config, string fileName, out string msg) + { + msg = string.Empty; + + try + { + //检查GUI设置 + if (config == null + || config.index < 0 + || config.vmess.Count <= 0 + || config.index > config.vmess.Count - 1 + ) + { + msg = UIRes.I18N("CheckServerSettings"); + return -1; + } + + msg = UIRes.I18N("InitialConfiguration"); + + //取得默认配置 + string result = Utils.GetEmbedText(SampleServer); + if (Utils.IsNullOrEmpty(result)) + { + msg = UIRes.I18N("FailedGetDefaultConfiguration"); + return -1; + } + + //转成Json + V2rayConfig v2rayConfig = Utils.FromJson(result); + if (v2rayConfig == null) + { + msg = UIRes.I18N("FailedGenDefaultConfiguration"); + return -1; + } + + ////开始修改配置 + log(config, ref v2rayConfig, true); + + //vmess协议服务器配置 + ServerInbound(config, ref v2rayConfig); + + //传出设置 + ServerOutbound(config, ref v2rayConfig); + + Utils.ToJsonFile(v2rayConfig, fileName); + + msg = string.Format(UIRes.I18N("SuccessfulConfiguration"), config.getSummary()); + } + catch + { + msg = UIRes.I18N("FailedGenDefaultConfiguration"); + return -1; + } + return 0; + } + + /// + /// vmess协议服务器配置 + /// + /// + /// + /// + private static int ServerInbound(Config config, ref V2rayConfig v2rayConfig) + { + try + { + var inbound = v2rayConfig.inbounds[0]; + UsersItem usersItem; + if (inbound.settings.clients.Count <= 0) + { + usersItem = new UsersItem(); + inbound.settings.clients.Add(usersItem); + } + else + { + usersItem = inbound.settings.clients[0]; + } + //远程服务器端口 + inbound.port = config.port(); + + //远程服务器用户ID + usersItem.id = config.id(); + usersItem.alterId = config.alterId(); + usersItem.email = Global.userEMail; + + //远程服务器底层传输配置 + StreamSettings streamSettings = inbound.streamSettings; + boundStreamSettings(config, "in", ref streamSettings); + } + catch + { + } + return 0; + } + + /// + /// 传出设置 + /// + /// + /// + /// + private static int ServerOutbound(Config config, ref V2rayConfig v2rayConfig) + { + try + { + if (v2rayConfig.outbounds[0] != null) + { + v2rayConfig.outbounds[0].settings = null; + } + } + catch + { + } + return 0; + } + #endregion + + #region 导入(导出)客户端/服务端配置 + + /// + /// 导入v2ray客户端配置 + /// + /// + /// + /// + public static VmessItem ImportFromClientConfig(string fileName, out string msg) + { + msg = string.Empty; + VmessItem vmessItem = new VmessItem(); + + try + { + //载入配置文件 + string result = Utils.LoadResource(fileName); + if (Utils.IsNullOrEmpty(result)) + { + msg = UIRes.I18N("FailedReadConfiguration"); + return null; + } + + //转成Json + V2rayConfig v2rayConfig = Utils.FromJson(result); + if (v2rayConfig == null) + { + msg = UIRes.I18N("FailedConversionConfiguration"); + return null; + } + + if (v2rayConfig.outbounds == null + || v2rayConfig.outbounds.Count <= 0) + { + msg = UIRes.I18N("IncorrectClientConfiguration"); + return null; + } + + var outbound = v2rayConfig.outbounds[0]; + if (outbound == null + || Utils.IsNullOrEmpty(outbound.protocol) + || outbound.protocol != "vmess" + || outbound.settings == null + || outbound.settings.vnext == null + || outbound.settings.vnext.Count <= 0 + || outbound.settings.vnext[0].users == null + || outbound.settings.vnext[0].users.Count <= 0) + { + msg = UIRes.I18N("IncorrectClientConfiguration"); + return null; + } + + vmessItem.security = Global.DefaultSecurity; + vmessItem.network = Global.DefaultNetwork; + vmessItem.headerType = Global.None; + vmessItem.address = outbound.settings.vnext[0].address; + vmessItem.port = outbound.settings.vnext[0].port; + vmessItem.id = outbound.settings.vnext[0].users[0].id; + vmessItem.alterId = outbound.settings.vnext[0].users[0].alterId; + vmessItem.remarks = string.Format("import@{0}", DateTime.Now.ToShortDateString()); + + //tcp or kcp + if (outbound.streamSettings != null + && outbound.streamSettings.network != null + && !Utils.IsNullOrEmpty(outbound.streamSettings.network)) + { + vmessItem.network = outbound.streamSettings.network; + } + + //tcp伪装http + if (outbound.streamSettings != null + && outbound.streamSettings.tcpSettings != null + && outbound.streamSettings.tcpSettings.header != null + && !Utils.IsNullOrEmpty(outbound.streamSettings.tcpSettings.header.type)) + { + if (outbound.streamSettings.tcpSettings.header.type.Equals(Global.TcpHeaderHttp)) + { + vmessItem.headerType = outbound.streamSettings.tcpSettings.header.type; + string request = Convert.ToString(outbound.streamSettings.tcpSettings.header.request); + if (!Utils.IsNullOrEmpty(request)) + { + V2rayTcpRequest v2rayTcpRequest = Utils.FromJson(request); + if (v2rayTcpRequest != null + && v2rayTcpRequest.headers != null + && v2rayTcpRequest.headers.Host != null + && v2rayTcpRequest.headers.Host.Count > 0) + { + vmessItem.requestHost = v2rayTcpRequest.headers.Host[0]; + } + } + } + } + //kcp伪装 + if (outbound.streamSettings != null + && outbound.streamSettings.kcpSettings != null + && outbound.streamSettings.kcpSettings.header != null + && !Utils.IsNullOrEmpty(outbound.streamSettings.kcpSettings.header.type)) + { + vmessItem.headerType = outbound.streamSettings.kcpSettings.header.type; + } + + //ws + if (outbound.streamSettings != null + && outbound.streamSettings.wsSettings != null) + { + if (!Utils.IsNullOrEmpty(outbound.streamSettings.wsSettings.path)) + { + vmessItem.path = outbound.streamSettings.wsSettings.path; + } + if (outbound.streamSettings.wsSettings.headers != null + && !Utils.IsNullOrEmpty(outbound.streamSettings.wsSettings.headers.Host)) + { + vmessItem.requestHost = outbound.streamSettings.wsSettings.headers.Host; + } + } + + //h2 + if (outbound.streamSettings != null + && outbound.streamSettings.httpSettings != null) + { + if (!Utils.IsNullOrEmpty(outbound.streamSettings.httpSettings.path)) + { + vmessItem.path = outbound.streamSettings.httpSettings.path; + } + if (outbound.streamSettings.httpSettings.host != null + && outbound.streamSettings.httpSettings.host.Count > 0) + { + vmessItem.requestHost = Utils.List2String(outbound.streamSettings.httpSettings.host); + } + } + + } + catch + { + msg = UIRes.I18N("IncorrectClientConfiguration"); + return null; + } + + return vmessItem; + } + + /// + /// 导入v2ray服务端配置 + /// + /// + /// + /// + public static VmessItem ImportFromServerConfig(string fileName, out string msg) + { + msg = string.Empty; + VmessItem vmessItem = new VmessItem(); + + try + { + //载入配置文件 + string result = Utils.LoadResource(fileName); + if (Utils.IsNullOrEmpty(result)) + { + msg = UIRes.I18N("FailedReadConfiguration"); + return null; + } + + //转成Json + V2rayConfig v2rayConfig = Utils.FromJson(result); + if (v2rayConfig == null) + { + msg = UIRes.I18N("FailedConversionConfiguration"); + return null; + } + + if (v2rayConfig.inbounds == null + || v2rayConfig.inbounds.Count <= 0) + { + msg = UIRes.I18N("IncorrectServerConfiguration"); + return null; + } + + var inbound = v2rayConfig.inbounds[0]; + if (inbound == null + || Utils.IsNullOrEmpty(inbound.protocol) + || inbound.protocol != "vmess" + || inbound.settings == null + || inbound.settings.clients == null + || inbound.settings.clients.Count <= 0) + { + msg = UIRes.I18N("IncorrectServerConfiguration"); + return null; + } + + vmessItem.security = Global.DefaultSecurity; + vmessItem.network = Global.DefaultNetwork; + vmessItem.headerType = Global.None; + vmessItem.address = string.Empty; + vmessItem.port = inbound.port; + vmessItem.id = inbound.settings.clients[0].id; + vmessItem.alterId = inbound.settings.clients[0].alterId; + + vmessItem.remarks = string.Format("import@{0}", DateTime.Now.ToShortDateString()); + + //tcp or kcp + if (inbound.streamSettings != null + && inbound.streamSettings.network != null + && !Utils.IsNullOrEmpty(inbound.streamSettings.network)) + { + vmessItem.network = inbound.streamSettings.network; + } + + //tcp伪装http + if (inbound.streamSettings != null + && inbound.streamSettings.tcpSettings != null + && inbound.streamSettings.tcpSettings.header != null + && !Utils.IsNullOrEmpty(inbound.streamSettings.tcpSettings.header.type)) + { + if (inbound.streamSettings.tcpSettings.header.type.Equals(Global.TcpHeaderHttp)) + { + vmessItem.headerType = inbound.streamSettings.tcpSettings.header.type; + string request = Convert.ToString(inbound.streamSettings.tcpSettings.header.request); + if (!Utils.IsNullOrEmpty(request)) + { + V2rayTcpRequest v2rayTcpRequest = Utils.FromJson(request); + if (v2rayTcpRequest != null + && v2rayTcpRequest.headers != null + && v2rayTcpRequest.headers.Host != null + && v2rayTcpRequest.headers.Host.Count > 0) + { + vmessItem.requestHost = v2rayTcpRequest.headers.Host[0]; + } + } + } + } + //kcp伪装 + //if (v2rayConfig.outbound.streamSettings != null + // && v2rayConfig.outbound.streamSettings.kcpSettings != null + // && v2rayConfig.outbound.streamSettings.kcpSettings.header != null + // && !Utils.IsNullOrEmpty(v2rayConfig.outbound.streamSettings.kcpSettings.header.type)) + //{ + // cmbHeaderType.Text = v2rayConfig.outbound.streamSettings.kcpSettings.header.type; + //} + + //ws + if (inbound.streamSettings != null + && inbound.streamSettings.wsSettings != null) + { + if (!Utils.IsNullOrEmpty(inbound.streamSettings.wsSettings.path)) + { + vmessItem.path = inbound.streamSettings.wsSettings.path; + } + if (inbound.streamSettings.wsSettings.headers != null + && !Utils.IsNullOrEmpty(inbound.streamSettings.wsSettings.headers.Host)) + { + vmessItem.requestHost = inbound.streamSettings.wsSettings.headers.Host; + } + } + + //h2 + if (inbound.streamSettings != null + && inbound.streamSettings.httpSettings != null) + { + if (!Utils.IsNullOrEmpty(inbound.streamSettings.httpSettings.path)) + { + vmessItem.path = inbound.streamSettings.httpSettings.path; + } + if (inbound.streamSettings.httpSettings.host != null + && inbound.streamSettings.httpSettings.host.Count > 0) + { + vmessItem.requestHost = Utils.List2String(inbound.streamSettings.httpSettings.host); + } + } + } + catch + { + msg = UIRes.I18N("IncorrectClientConfiguration"); + return null; + } + return vmessItem; + } + + /// + /// 从剪贴板导入URL + /// + /// + /// + /// + public static VmessItem ImportFromClipboardConfig(string clipboardData, out string msg) + { + msg = string.Empty; + VmessItem vmessItem = new VmessItem(); + + try + { + //载入配置文件 + string result = clipboardData.Trim();// Utils.GetClipboardData(); + if (Utils.IsNullOrEmpty(result)) + { + msg = UIRes.I18N("FailedReadConfiguration"); + return null; + } + + if (result.StartsWith(Global.vmessProtocol)) + { + int indexSplit = result.IndexOf("?"); + if (indexSplit > 0) + { + vmessItem = ResolveVmess4Kitsunebi(result); + } + else + { + vmessItem.configType = (int)EConfigType.Vmess; + result = result.Substring(Global.vmessProtocol.Length); + result = Utils.Base64Decode(result); + + //转成Json + VmessQRCode vmessQRCode = Utils.FromJson(result); + if (vmessQRCode == null) + { + msg = UIRes.I18N("FailedConversionConfiguration"); + return null; + } + vmessItem.security = Global.DefaultSecurity; + vmessItem.network = Global.DefaultNetwork; + vmessItem.headerType = Global.None; + + vmessItem.configVersion = Utils.ToInt(vmessQRCode.v); + vmessItem.remarks = vmessQRCode.ps; + vmessItem.address = vmessQRCode.add; + vmessItem.port = Utils.ToInt(vmessQRCode.port); + vmessItem.id = vmessQRCode.id; + vmessItem.alterId = Utils.ToInt(vmessQRCode.aid); + vmessItem.network = vmessQRCode.net; + vmessItem.headerType = vmessQRCode.type; + vmessItem.requestHost = vmessQRCode.host; + vmessItem.path = vmessQRCode.path; + vmessItem.streamSecurity = vmessQRCode.tls; + } + + ConfigHandler.UpgradeServerVersion(ref vmessItem); + } + else if (result.StartsWith(Global.ssProtocol)) + { + msg = UIRes.I18N("ConfigurationFormatIncorrect"); + + vmessItem.configType = (int)EConfigType.Shadowsocks; + result = result.Substring(Global.ssProtocol.Length); + //remark + int indexRemark = result.IndexOf("#"); + if (indexRemark > 0) + { + try + { + vmessItem.remarks = WebUtility.UrlDecode(result.Substring(indexRemark + 1, result.Length - indexRemark - 1)); + } + catch { } + result = result.Substring(0, indexRemark); + } + //part decode + int indexS = result.IndexOf("@"); + if (indexS > 0) + { + result = Utils.Base64Decode(result.Substring(0, indexS)) + result.Substring(indexS, result.Length - indexS); + } + else + { + result = Utils.Base64Decode(result); + } + + string[] arr1 = result.Split('@'); + if (arr1.Length != 2) + { + return null; + } + string[] arr21 = arr1[0].Split(':'); + //string[] arr22 = arr1[1].Split(':'); + int indexPort = arr1[1].LastIndexOf(":"); + if (arr21.Length != 2 || indexPort < 0) + { + return null; + } + vmessItem.address = arr1[1].Substring(0, indexPort); + vmessItem.port = Utils.ToInt(arr1[1].Substring(indexPort + 1, arr1[1].Length - (indexPort + 1))); + vmessItem.security = arr21[0]; + vmessItem.id = arr21[1]; + } + else if (result.StartsWith(Global.socksProtocol)) + { + msg = UIRes.I18N("ConfigurationFormatIncorrect"); + + vmessItem.configType = (int)EConfigType.Socks; + result = result.Substring(Global.socksProtocol.Length); + //remark + int indexRemark = result.IndexOf("#"); + if (indexRemark > 0) + { + try + { + vmessItem.remarks = WebUtility.UrlDecode(result.Substring(indexRemark + 1, result.Length - indexRemark - 1)); + } + catch { } + result = result.Substring(0, indexRemark); + } + //part decode + int indexS = result.IndexOf(":"); + if (indexS > 0) + { + } + else + { + result = Utils.Base64Decode(result); + } + + + string[] arr21 = result.Split(':'); + int indexPort = result.LastIndexOf(":"); + if (arr21.Length != 2 || indexPort < 0) + { + return null; + } + vmessItem.address = result.Substring(0, indexPort); + vmessItem.port = Utils.ToInt(result.Substring(indexPort + 1, result.Length - (indexPort + 1))); + } + else + { + msg = UIRes.I18N("NonvmessOrssProtocol"); + return null; + } + } + catch + { + msg = UIRes.I18N("Incorrectconfiguration"); + return null; + } + + return vmessItem; + } + + + /// + /// 导出为客户端配置 + /// + /// + /// + /// + /// + public static int Export2ClientConfig(Config config, string fileName, out string msg) + { + msg = string.Empty; + return GenerateClientConfig(config, fileName, true, out msg); + } + + /// + /// 导出为服务端配置 + /// + /// + /// + /// + /// + public static int Export2ServerConfig(Config config, string fileName, out string msg) + { + msg = string.Empty; + return GenerateServerConfig(config, fileName, out msg); + } + + private static VmessItem ResolveVmess4Kitsunebi(string result) + { + VmessItem vmessItem = new VmessItem(); + + vmessItem.configType = (int)EConfigType.Vmess; + result = result.Substring(Global.vmessProtocol.Length); + int indexSplit = result.IndexOf("?"); + if (indexSplit > 0) + { + result = result.Substring(0, indexSplit); + } + result = Utils.Base64Decode(result); + + string[] arr1 = result.Split('@'); + if (arr1.Length != 2) + { + return null; + } + string[] arr21 = arr1[0].Split(':'); + string[] arr22 = arr1[1].Split(':'); + if (arr21.Length != 2 || arr21.Length != 2) + { + return null; + } + + vmessItem.address = arr22[0]; + vmessItem.port = Utils.ToInt(arr22[1]); + vmessItem.security = arr21[0]; + vmessItem.id = arr21[1]; + + vmessItem.network = Global.DefaultNetwork; + vmessItem.headerType = Global.None; + vmessItem.remarks = "Alien"; + vmessItem.alterId = 0; + + return vmessItem; + } + + #endregion + + } +} diff --git a/v2rayN/v2rayN/Handler/V2rayHandler.cs b/v2rayN/v2rayN/Handler/V2rayHandler.cs new file mode 100644 index 00000000..244892c8 --- /dev/null +++ b/v2rayN/v2rayN/Handler/V2rayHandler.cs @@ -0,0 +1,165 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using v2rayN.Mode; + +namespace v2rayN.Handler +{ + + /// + /// 消息委托 + /// + /// 是否显示在托盘区 + /// 内容 + public delegate void ProcessDelegate(bool notify, string msg); + + /// + /// v2ray进程处理类 + /// + class V2rayHandler + { + private static string v2rayConfigRes = Global.v2rayConfigFileName; + private List lstV2ray; + public event ProcessDelegate ProcessEvent; + private int processId = 0; + + public V2rayHandler() + { + lstV2ray = new List(); + lstV2ray.Add("wv2ray"); + lstV2ray.Add("v2ray"); + } + + /// + /// 载入V2ray + /// + public void LoadV2ray(Config config) + { + if (Global.reloadV2ray) + { + string msg = string.Empty; + string fileName = Utils.GetPath(v2rayConfigRes); + if (V2rayConfigHandler.GenerateClientConfig(config, fileName, false, out msg) != 0) + { + ShowMsg(false, msg); + } + else + { + ShowMsg(true, msg); + V2rayRestart(); + } + } + } + + /// + /// V2ray重启 + /// + private void V2rayRestart() + { + V2rayStop(); + V2rayStart(); + } + + /// + /// V2ray停止 + /// + public void V2rayStop() + { + try + { + bool blExist = true; + if (processId > 0) + { + Process p1 = Process.GetProcessById(processId); + if (p1 != null) + { + p1.Kill(); + blExist = false; + } + } + if (blExist) + { + foreach (string vName in lstV2ray) + { + Process[] killPro = Process.GetProcessesByName(vName); + foreach (Process p in killPro) + { + p.Kill(); + } + } + } + } + catch (Exception ex) + { + Utils.SaveLog(ex.Message, ex); + } + } + + /// + /// V2ray启动 + /// + private void V2rayStart() + { + ShowMsg(false, string.Format(UIRes.I18N("StartService"), DateTime.Now.ToString())); + + try + { + //查找v2ray文件是否存在 + string fileName = string.Empty; + for (int k = 0; k < lstV2ray.Count; k++) + { + string vName = string.Format("{0}.exe", lstV2ray[k]); + vName = Utils.GetPath(vName); + if (File.Exists(vName)) + { + fileName = vName; + break; + } + } + if (Utils.IsNullOrEmpty(fileName)) + { + string msg = string.Format(UIRes.I18N("NotFoundCore"), @"https://github.com/v2ray/v2ray-core/releases"); + ShowMsg(true, msg); + return; + } + + Process p = new Process(); + p.StartInfo.FileName = fileName; + p.StartInfo.UseShellExecute = false; + p.StartInfo.RedirectStandardOutput = true; + p.StartInfo.CreateNoWindow = true; + p.OutputDataReceived += new DataReceivedEventHandler((sender, e) => + { + if (!String.IsNullOrEmpty(e.Data)) + { + string msg = e.Data + Environment.NewLine; + ShowMsg(false, msg); + } + }); + p.Start(); + p.BeginOutputReadLine(); + processId = p.Id; + } + catch (Exception ex) + { + Utils.SaveLog(ex.Message, ex); + string msg = ex.Message; + ShowMsg(true, msg); + } + } + + /// + /// 消息委托 + /// + /// + /// + private void ShowMsg(bool notify, string msg) + { + if (ProcessEvent != null) + { + ProcessEvent(notify, msg); + } + } + } +} diff --git a/v2rayN/v2rayN/Handler/V2rayUpdateHandle.cs b/v2rayN/v2rayN/Handler/V2rayUpdateHandle.cs new file mode 100644 index 00000000..f04a98aa --- /dev/null +++ b/v2rayN/v2rayN/Handler/V2rayUpdateHandle.cs @@ -0,0 +1,214 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Net; +using System.Text; +using Newtonsoft.Json; +using v2rayN.Mode; +using v2rayN.Properties; +using v2rayN.HttpProxyHandler; + +namespace v2rayN.Handler +{ + /// + ///Update V2ray Core + /// + class V2rayUpdateHandle + { + public event EventHandler AbsoluteCompleted; + + public event EventHandler UpdateCompleted; + + public event ErrorEventHandler Error; + + public string DownloadFileName + { + get { return "v2ray-windows.zip"; } + } + + public class ResultEventArgs : EventArgs + { + public bool Success; + public string Msg; + + public ResultEventArgs(bool success, string msg) + { + this.Success = success; + this.Msg = msg; + } + } + + private string latestUrl = "https://github.com/v2ray/v2ray-core/releases/latest"; + private const string coreURL = "https://github.com/v2ray/v2ray-core/releases/download/{0}/v2ray-windows-{1}.zip"; + private int progressPercentage = -1; + private bool blFirst = true; + private long totalBytesToReceive = 0; + private DateTime totalDatetime = new DateTime(); + + public void AbsoluteV2rayCore(Config config) + { + ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; //TLS 1.2 + ServicePointManager.DefaultConnectionLimit = 256; + WebRequest request = WebRequest.Create(latestUrl); + request.BeginGetResponse(new AsyncCallback(OnResponse), request); + } + + private void OnResponse(IAsyncResult ar) + { + try + { + HttpWebRequest request = (HttpWebRequest)ar.AsyncState; + HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(ar); + string redirectUrl = response.ResponseUri.AbsoluteUri; + string version = redirectUrl.Substring(redirectUrl.LastIndexOf("/", StringComparison.Ordinal) + 1); + + string osBit = string.Empty; + if (Environment.Is64BitProcess) + { + osBit = "64"; + } + else + { + osBit = "32"; + } + string url = string.Format(coreURL, version, osBit); + if (AbsoluteCompleted != null) + { + AbsoluteCompleted(this, new ResultEventArgs(true, url)); + } + } + catch (Exception ex) + { + Utils.SaveLog(ex.Message, ex); + + if (Error != null) + Error(this, new ErrorEventArgs(ex)); + } + } + + + public void DownloadFileAsync(Config config, string url) + { + try + { + ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; //TLS 1.2 + ServicePointManager.DefaultConnectionLimit = 256; + if (UpdateCompleted != null) + { + UpdateCompleted(this, new ResultEventArgs(false, url)); + } + + progressPercentage = -1; + + WebClientEx ws = new WebClientEx(); + ws.DownloadFileCompleted += ws_DownloadFileCompleted; + ws.DownloadProgressChanged += ws_DownloadProgressChanged; + ws.DownloadFileAsync(new Uri(url), Utils.GetPath(DownloadFileName)); + blFirst = true; + } + catch (Exception ex) + { + Utils.SaveLog(ex.Message, ex); + + if (Error != null) + Error(this, new ErrorEventArgs(ex)); + } + } + + void ws_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) + { + if (blFirst) + { + totalBytesToReceive = e.TotalBytesToReceive - e.BytesReceived; + totalDatetime = DateTime.Now; + blFirst = false; + } + if (UpdateCompleted != null) + { + if (progressPercentage != e.ProgressPercentage && e.ProgressPercentage % 10 == 0) + { + progressPercentage = e.ProgressPercentage; + string msg = string.Format("......{0}%", e.ProgressPercentage); + UpdateCompleted(this, new ResultEventArgs(false, msg)); + } + } + } + + void ws_DownloadFileCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e) + { + try + { + if (e.Error == null + || Utils.IsNullOrEmpty(e.Error.ToString())) + { + if (UpdateCompleted != null) + { + TimeSpan ts = (DateTime.Now - totalDatetime); + string speed = string.Format("{0} M/s", (totalBytesToReceive / ts.TotalMilliseconds / 1000).ToString("#0.##")); + UpdateCompleted(this, new ResultEventArgs(true, speed)); + } + } + else + { + throw e.Error; + } + } + catch (Exception ex) + { + Utils.SaveLog(ex.Message, ex); + + if (Error != null) + Error(this, new ErrorEventArgs(ex)); + } + } + + /// + /// DownloadString + /// + /// + public void WebDownloadString(string url) + { + string source = string.Empty; + try + { + ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; //TLS 1.2 + ServicePointManager.DefaultConnectionLimit = 256; + + WebClientEx ws = new WebClientEx(); + ws.DownloadStringCompleted += Ws_DownloadStringCompleted; + ws.DownloadStringAsync(new Uri(url)); + } + catch (Exception ex) + { + Utils.SaveLog(ex.Message, ex); + } + } + + private void Ws_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) + { + try + { + if (e.Error == null + || Utils.IsNullOrEmpty(e.Error.ToString())) + { + string source = e.Result; + if (UpdateCompleted != null) + { + UpdateCompleted(this, new ResultEventArgs(true, source)); + } + } + else + { + throw e.Error; + } + } + catch (Exception ex) + { + Utils.SaveLog(ex.Message, ex); + + if (Error != null) + Error(this, new ErrorEventArgs(ex)); + } + } + } +} diff --git a/v2rayN/v2rayN/HttpProxyHandler/HttpProxyHandle.cs b/v2rayN/v2rayN/HttpProxyHandler/HttpProxyHandle.cs new file mode 100644 index 00000000..0eb6d063 --- /dev/null +++ b/v2rayN/v2rayN/HttpProxyHandler/HttpProxyHandle.cs @@ -0,0 +1,177 @@ +using System; +using v2rayN.Mode; + +namespace v2rayN.HttpProxyHandler +{ + /// + /// 系统代理(http)总处理 + /// 启动privoxy提供http协议 + /// 使用SysProxy设置IE系统代理或者PAC模式 + /// + class HttpProxyHandle + { + private static string GetTimestamp(DateTime value) + { + return value.ToString("yyyyMMddHHmmssfff"); + } + + public static void ReSetPACProxy(Config config) + { + if (config.listenerType == 2) + { + //SysProxyHandle.SetIEProxy(false, false, null, null); + //PACServerHandle.Stop(); + } + Update(config, false); + } + + public static bool Update(Config config, bool forceDisable) + { + int type = config.listenerType; + + if (forceDisable) + { + type = 0; + } + + try + { + if (type != 0) + { + var port = Global.sysAgentPort; + if (port <= 0) + { + return false; + } + if (type == 1) + { + PACServerHandle.Stop(); + PACFileWatcherHandle.StopWatch(); + SysProxyHandle.SetIEProxy(true, true, "127.0.0.1:" + port, null); + } + else if (type == 2) + { + string pacUrl = GetPacUrl(); + SysProxyHandle.SetIEProxy(true, false, null, pacUrl); + PACServerHandle.Stop(); + PACServerHandle.Init(config); + PACFileWatcherHandle.StartWatch(config); + } + else if (type == 3) + { + PACServerHandle.Stop(); + PACFileWatcherHandle.StopWatch(); + SysProxyHandle.SetIEProxy(false, false, null, null); + } + else if (type == 4) + { + string pacUrl = GetPacUrl(); + SysProxyHandle.SetIEProxy(false, false, null, null); + PACServerHandle.Stop(); + PACServerHandle.Init(config); + PACFileWatcherHandle.StartWatch(config); + } + } + else + { + SysProxyHandle.SetIEProxy(false, false, null, null); + PACServerHandle.Stop(); + PACFileWatcherHandle.StopWatch(); + } + } + catch (Exception ex) + { + Utils.SaveLog(ex.Message, ex); + } + return true; + } + + /// + /// 启用系统代理(http) + /// + /// + public static void StartHttpAgent(Config config) + { + try + { + int localPort = config.GetLocalPort("socks"); + if (localPort > 0) + { + PrivoxyHandler.Instance.Start(localPort, config); + if (PrivoxyHandler.Instance.RunningPort > 0) + { + Global.sysAgent = true; + Global.socksPort = localPort; + Global.sysAgentPort = PrivoxyHandler.Instance.RunningPort; + Global.pacPort = Global.sysAgentPort + 1; + } + } + } + catch + { + } + } + + /// + /// 关闭系统代理 + /// + /// + public static void CloseHttpAgent(Config config) + { + try + { + ////开启全局代理则关闭 + //if (Global.sysAgent) + //{ + PrivoxyHandler.Instance.Stop(); + + Global.sysAgent = false; + Global.socksPort = 0; + Global.sysAgentPort = 0; + Global.pacPort = 0; + //} + } + catch + { + } + } + + /// + /// 重启系统代理(http) + /// + /// + /// + public static bool RestartHttpAgent(Config config, bool forced) + { + bool isRestart = false; + //强制重启或者socks端口变化 + if (forced) + { + isRestart = true; + } + else + { + int localPort = config.GetLocalPort("socks"); + if (localPort != Global.socksPort) + { + isRestart = true; + } + } + if (isRestart) + { + CloseHttpAgent(config); + StartHttpAgent(config); + return true; + } + return false; + } + + public static string GetPacUrl() + { + string pacUrl = string.Format("http://127.0.0.1:{0}/pac/?t={1}", Global.pacPort, + GetTimestamp(DateTime.Now)); + + return pacUrl; + } + } +} diff --git a/v2rayN/v2rayN/HttpProxyHandler/HttpWebServer.cs b/v2rayN/v2rayN/HttpProxyHandler/HttpWebServer.cs new file mode 100644 index 00000000..e4b777e5 --- /dev/null +++ b/v2rayN/v2rayN/HttpProxyHandler/HttpWebServer.cs @@ -0,0 +1,98 @@ +using System; +using System.Net; +using System.Text; +using System.Threading; + +namespace v2rayN.HttpProxyHandler +{ + public class HttpWebServer + { + private HttpListener _listener; + private Func _responderMethod; + + public HttpWebServer(string[] prefixes, Func method) + { + try + { + _listener = new HttpListener(); + + if (!HttpListener.IsSupported) + throw new NotSupportedException( + "Needs Windows XP SP2, Server 2003 or later."); + + // URI prefixes are required, for example + // "http://localhost:8080/index/". + if (prefixes == null || prefixes.Length == 0) + throw new ArgumentException("prefixes"); + + // A responder method is required + if (method == null) + throw new ArgumentException("method"); + + foreach (string s in prefixes) + _listener.Prefixes.Add(s); + + _responderMethod = method; + _listener.Start(); + + } + catch (Exception ex) + { + Utils.SaveLog(ex.Message, ex); + } + } + + public HttpWebServer(Func method, params string[] prefixes) + : this(prefixes, method) { } + + public void Run() + { + ThreadPool.QueueUserWorkItem((o) => + { + Utils.SaveLog("Webserver running..."); + try + { + while (_listener.IsListening) + { + ThreadPool.QueueUserWorkItem((c) => + { + var ctx = c as HttpListenerContext; + try + { + string rstr = _responderMethod(ctx.Request); + byte[] buf = Encoding.UTF8.GetBytes(rstr); + ctx.Response.StatusCode = 200; + ctx.Response.ContentType = "application/x-ns-proxy-autoconfig"; + ctx.Response.ContentLength64 = buf.Length; + ctx.Response.OutputStream.Write(buf, 0, buf.Length); + } + catch + { + } // suppress any exceptions + finally + { + // always close the stream + ctx.Response.OutputStream.Close(); + } + }, _listener.GetContext()); + } + } + catch (Exception ex) + { + Utils.SaveLog(ex.Message, ex); + } // suppress any exceptions + }); + } + + public void Stop() + { + if (_listener != null) + { + _listener.Stop(); + _listener.Close(); + _listener = null; + } + } + + } +} diff --git a/v2rayN/v2rayN/HttpProxyHandler/PACFileWatcherHandle.cs b/v2rayN/v2rayN/HttpProxyHandler/PACFileWatcherHandle.cs new file mode 100644 index 00000000..08043d73 --- /dev/null +++ b/v2rayN/v2rayN/HttpProxyHandler/PACFileWatcherHandle.cs @@ -0,0 +1,45 @@ +using System.IO; +using System.Windows.Forms; +using v2rayN.Mode; + +namespace v2rayN.HttpProxyHandler +{ + /// + /// 提供PAC功能支持 + /// + class PACFileWatcherHandle + { + private static FileSystemWatcher fileSystemWatcher; + + private static long fileSize; + + public static void StartWatch(Config config) + { + if (fileSystemWatcher == null) + { + fileSystemWatcher = new FileSystemWatcher(Utils.StartupPath()); + fileSystemWatcher.Filter = "pac.txt"; + fileSystemWatcher.NotifyFilter = NotifyFilters.Size; + fileSystemWatcher.Changed += (sender, args) => + { + var fileInfo = new FileInfo(args.FullPath); + if (fileSize != fileInfo.Length) + { + fileSize = fileInfo.Length; + HttpProxyHandle.ReSetPACProxy(config); + } + + }; + } + fileSystemWatcher.EnableRaisingEvents = true; + } + + public static void StopWatch() + { + if (fileSystemWatcher != null) + { + fileSystemWatcher.EnableRaisingEvents = false; + } + } + } +} diff --git a/v2rayN/v2rayN/HttpProxyHandler/PACListHandle.cs b/v2rayN/v2rayN/HttpProxyHandler/PACListHandle.cs new file mode 100644 index 00000000..0fe8d066 --- /dev/null +++ b/v2rayN/v2rayN/HttpProxyHandler/PACListHandle.cs @@ -0,0 +1,92 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Net; +using System.Text; +using Newtonsoft.Json; +using v2rayN.Mode; +using v2rayN.Properties; + +namespace v2rayN.HttpProxyHandler +{ + /// + /// 提供PAC功能支持 + /// + class PACListHandle + { + public event EventHandler UpdateCompleted; + + public event ErrorEventHandler Error; + + public class ResultEventArgs : EventArgs + { + public bool Success; + + public ResultEventArgs(bool success) + { + this.Success = success; + } + } + + private const string GFWLIST_URL = "https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt"; + + private static readonly IEnumerable IgnoredLineBegins = new[] { '!', '[' }; + + public void UpdatePACFromGFWList(Config config) + { + string url = GFWLIST_URL; + if (!Utils.IsNullOrEmpty(config.urlGFWList)) + { + url = config.urlGFWList; + } + + //默认用户已开启系统代理 + //var httpProxy = config.inbound.FirstOrDefault(x => x.protocol=="http"); + //if (httpProxy == null) + //{ + // throw new Exception("未发现HTTP代理,无法设置代理更新"); + //} + WebClient http = new WebClient(); + //http.Headers.Add("Connection", "Close"); + //http.Proxy = new WebProxy(IPAddress.Loopback.ToString(), httpProxy.localPort); + http.DownloadStringCompleted += http_DownloadStringCompleted; + http.DownloadStringAsync(new Uri(url)); + } + + private void http_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) + { + try + { + File.WriteAllText(Utils.GetTempPath("gfwlist.txt"), e.Result, Encoding.UTF8); + List lines = ParseResult(e.Result); + string abpContent = Utils.UnGzip(Resources.abp_js); + abpContent = abpContent.Replace("__RULES__", JsonConvert.SerializeObject(lines, Formatting.Indented)); + File.WriteAllText(Utils.GetPath(Global.pacFILE), abpContent, Encoding.UTF8); + if (UpdateCompleted != null) UpdateCompleted(this, new ResultEventArgs(true)); + } + catch (Exception ex) + { + Utils.SaveLog(ex.Message, ex); + + if (Error != null) Error(this, new ErrorEventArgs(ex)); + } + } + + public static List ParseResult(string response) + { + byte[] bytes = Convert.FromBase64String(response); + string content = Encoding.ASCII.GetString(bytes); + List valid_lines = new List(); + using (var sr = new StringReader(content)) + { + foreach (var line in sr.NonWhiteSpaceLines()) + { + if (line.BeginWithAny(IgnoredLineBegins)) + continue; + valid_lines.Add(line); + } + } + return valid_lines; + } + } +} diff --git a/v2rayN/v2rayN/HttpProxyHandler/PACServerHandle.cs b/v2rayN/v2rayN/HttpProxyHandler/PACServerHandle.cs new file mode 100644 index 00000000..46165d3d --- /dev/null +++ b/v2rayN/v2rayN/HttpProxyHandler/PACServerHandle.cs @@ -0,0 +1,133 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Net; +using System.Text; +using v2rayN.Mode; +using v2rayN.Properties; +using v2rayN.Tool; + +namespace v2rayN.HttpProxyHandler +{ + /// + /// 提供PAC功能支持 + /// + class PACServerHandle + { + private static Hashtable httpWebServer = new Hashtable(); + private static Hashtable pacList = new Hashtable(); + + public static void Init(Config config) + { + InitServer("127.0.0.1"); + + if (config.allowLANConn) + { + List lstIPAddress = Utils.GetHostIPAddress(); + if (lstIPAddress.Count <= 0) + { + return; + } + foreach (string str in lstIPAddress) + { + InitServer(str); + } + } + } + + public static void InitServer(string address) + { + try + { + if (!pacList.ContainsKey(address)) + { + pacList.Add(address, GetPacList(address)); + } + + string prefixes = string.Format("http://{0}:{1}/pac/", address, Global.pacPort); + Utils.SaveLog("Webserver prefixes " + prefixes); + + HttpWebServer ws = new HttpWebServer(SendResponse, prefixes); + ws.Run(); + + if (!httpWebServer.ContainsKey(address) && ws != null) + { + httpWebServer.Add(address, ws); + } + } + catch (Exception ex) + { + Utils.SaveLog("Webserver InitServer " + ex.Message); + } + } + + public static string SendResponse(HttpListenerRequest request) + { + try + { + string[] arrAddress = request.UserHostAddress.Split(':'); + string address = "127.0.0.1"; + if (arrAddress.Length > 0) + { + address = arrAddress[0]; + } + return pacList[address].ToString(); + } + catch (Exception ex) + { + Utils.SaveLog("Webserver SendResponse " + ex.Message); + return ex.Message; + } + } + + + public static void Stop() + { + try + { + if (httpWebServer == null) + { + return; + } + foreach (var key in httpWebServer.Keys) + { + Utils.SaveLog("Webserver Stop " + key.ToString()); + ((HttpWebServer)httpWebServer[key]).Stop(); + } + httpWebServer.Clear(); + } + catch (Exception ex) + { + Utils.SaveLog("Webserver Stop " + ex.Message); + } + } + + private static string GetPacList(string address) + { + var port = Global.sysAgentPort; + if (port <= 0) + { + return "No port"; + } + try + { + List lstProxy = new List(); + lstProxy.Add(string.Format("PROXY {0}:{1};", address, port)); + var proxy = string.Join("", lstProxy.ToArray()); + + string strPacfile = Utils.GetPath(Global.pacFILE); + if (!File.Exists(strPacfile)) + { + FileManager.UncompressFile(strPacfile, Resources.pac_txt); + } + var pac = File.ReadAllText(strPacfile, Encoding.UTF8); + pac = pac.Replace("__PROXY__", proxy); + return pac; + } + catch + { } + return "No pac content"; + } + } +} diff --git a/v2rayN/v2rayN/HttpProxyHandler/PrivoxyHandler.cs b/v2rayN/v2rayN/HttpProxyHandler/PrivoxyHandler.cs new file mode 100644 index 00000000..169ed1df --- /dev/null +++ b/v2rayN/v2rayN/HttpProxyHandler/PrivoxyHandler.cs @@ -0,0 +1,215 @@ +using System; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using v2rayN.Mode; +using v2rayN.Properties; +using v2rayN.Tool; + +namespace v2rayN.HttpProxyHandler +{ + /// + /// Privoxy处理类,提供http协议代理 + /// + class PrivoxyHandler + { + /// + /// 单例 + /// + private static PrivoxyHandler instance; + + private static int _uid; + private static string _uniqueConfigFile; + private static Job _privoxyJob; + private Process _process; + private int _runningPort; + private bool _isRunning; + + static PrivoxyHandler() + { + try + { + _uid = Application.StartupPath.GetHashCode(); // Currently we use ss's StartupPath to identify different Privoxy instance. + _uniqueConfigFile = string.Format("privoxy_{0}.conf", _uid); + _privoxyJob = new Job(); + + FileManager.UncompressFile(Utils.GetTempPath("v2ray_privoxy.exe"), Resources.privoxy_exe); + FileManager.UncompressFile(Utils.GetTempPath("mgwz.dll"), Resources.mgwz_dll); + } + catch (IOException ex) + { + Utils.SaveLog(ex.Message, ex); + } + } + + private PrivoxyHandler() + { + + } + + /// + /// 单例 + /// + public static PrivoxyHandler Instance + { + get + { + if (instance == null) + { + instance = new PrivoxyHandler(); + } + return instance; + } + } + + public int RunningPort + { + get + { + return _runningPort; + } + } + + public bool IsRunning + { + get + { + return _isRunning; + } + } + + public void Start(int localPort, Config config) + { + if (_process == null) + { + Process[] existingPrivoxy = Process.GetProcessesByName("v2ray_privoxy"); + foreach (Process p in existingPrivoxy.Where(IsChildProcess)) + { + KillProcess(p); + } + string privoxyConfig = Resources.privoxy_conf; + _runningPort = GetFreePort(localPort); + privoxyConfig = privoxyConfig.Replace("__SOCKS_PORT__", localPort.ToString()); + privoxyConfig = privoxyConfig.Replace("__PRIVOXY_BIND_PORT__", _runningPort.ToString()); + if (config.allowLANConn) + { + privoxyConfig = privoxyConfig.Replace("__PRIVOXY_BIND_IP__", "0.0.0.0"); + } + else + { + privoxyConfig = privoxyConfig.Replace("__PRIVOXY_BIND_IP__", "127.0.0.1"); + } + FileManager.ByteArrayToFile(Utils.GetTempPath(_uniqueConfigFile), Encoding.UTF8.GetBytes(privoxyConfig)); + + _process = new Process + { + // Configure the process using the StartInfo properties. + StartInfo = + { + FileName = "v2ray_privoxy.exe", + Arguments = _uniqueConfigFile, + WorkingDirectory = Utils.GetTempPath(), + WindowStyle = ProcessWindowStyle.Hidden, + UseShellExecute = true, + CreateNoWindow = true + } + }; + _process.Start(); + + /* + * Add this process to job obj associated with this ss process, so that + * when ss exit unexpectedly, this process will be forced killed by system. + */ + _privoxyJob.AddProcess(_process.Handle); + _isRunning = true; + } + } + + public void Stop() + { + if (_process != null) + { + KillProcess(_process); + _process.Dispose(); + _process = null; + _isRunning = false; + } + } + + private static void KillProcess(Process p) + { + try + { + p.CloseMainWindow(); + p.WaitForExit(100); + if (!p.HasExited) + { + p.Kill(); + p.WaitForExit(); + } + } + catch (Exception ex) + { + Utils.SaveLog(ex.Message, ex); + } + } + + /* + * We won't like to kill other ss instances' v2ray_privoxy.exe. + * This function will check whether the given process is created + * by this process by checking the module path or command line. + * + * Since it's required to put ss in different dirs to run muti instances, + * different instance will create their unique "privoxy_UID.conf" where + * UID is hash of ss's location. + */ + + private static bool IsChildProcess(Process process) + { + try + { + /* + * Under PortableMode, we could identify it by the path of v2ray_privoxy.exe. + */ + var path = process.MainModule.FileName; + + return Utils.GetTempPath("v2ray_privoxy.exe").Equals(path); + + } + catch (Exception ex) + { + Utils.SaveLog(ex.Message, ex); + /* + * Sometimes Process.GetProcessesByName will return some processes that + * are already dead, and that will cause exceptions here. + * We could simply ignore those exceptions. + */ + //Logging.LogUsefulException(ex); + return false; + } + } + + private int GetFreePort(int localPort) + { + int defaultPort = 8123; + try + { + //// TCP stack please do me a favor + //TcpListener l = new TcpListener(IPAddress.Loopback, 0); + //l.Start(); + //var port = ((IPEndPoint)l.LocalEndpoint).Port; + //l.Stop(); + //return port; + return localPort + 1; + } + catch (Exception ex) + { + // in case access denied + Utils.SaveLog(ex.Message, ex); + return defaultPort; + } + } + } +} diff --git a/v2rayN/v2rayN/HttpProxyHandler/SysProxyHandle.cs b/v2rayN/v2rayN/HttpProxyHandler/SysProxyHandle.cs new file mode 100644 index 00000000..a2397740 --- /dev/null +++ b/v2rayN/v2rayN/HttpProxyHandler/SysProxyHandle.cs @@ -0,0 +1,182 @@ +using System; +using System.Diagnostics; +using System.IO; +using System.Text; +using Newtonsoft.Json; +using v2rayN.Mode; +using v2rayN.Properties; +using v2rayN.Tool; + +namespace v2rayN.HttpProxyHandler +{ + class SysProxyHandle + { + private const string _userWininetConfigFile = "user-wininet.json"; + + private static string _queryStr; + + // In general, this won't change + // format: + // + // + // + // + private static SysproxyConfig _userSettings = null; + + enum RET_ERRORS : int + { + RET_NO_ERROR = 0, + INVALID_FORMAT = 1, + NO_PERMISSION = 2, + SYSCALL_FAILED = 3, + NO_MEMORY = 4, + INVAILD_OPTION_COUNT = 5, + }; + + static SysProxyHandle() + { + try + { + FileManager.UncompressFile(Utils.GetTempPath("sysproxy.exe"), + Environment.Is64BitOperatingSystem ? Resources.sysproxy64_exe : Resources.sysproxy_exe); + } + catch (IOException ex) + { + Utils.SaveLog(ex.Message, ex); + + } + } + + public static void SetIEProxy(bool enable, bool global, string proxyServer, string pacURL) + { + Read(); + + if (!_userSettings.UserSettingsRecorded) + { + // record user settings + ExecSysproxy("query"); + ParseQueryStr(_queryStr); + } + + string arguments; + if (enable) + { + arguments = global + ? string.Format( + //"global {0} ;localhost;127.*;10.*;172.16.*;172.17.*;172.18.*;172.19.*;172.20.*;172.21.*;172.22.*;172.23.*;172.24.*;172.25.*;172.26.*;172.27.*;172.28.*;172.29.*;172.30.*;172.31.*;172.32.*;192.168.*", + "global {0} ;localhost;127.*;10.*;172.16.*;172.17.*;172.18.*;172.19.*;172.20.*;172.21.*;172.22.*;172.23.*;172.24.*;172.25.*;172.26.*;172.27.*;172.28.*;172.29.*;172.30.*;172.31.*;172.32.*", + proxyServer) + : string.Format("pac {0}", pacURL); + } + else + { + // restore user settings + var flags = _userSettings.Flags; + var proxy_server = _userSettings.ProxyServer ?? "-"; + var bypass_list = _userSettings.BypassList ?? "-"; + var pac_url = _userSettings.PacUrl ?? "-"; + arguments = string.Format("set {0} {1} {2} {3}", flags, proxy_server, bypass_list, pac_url); + + // have to get new settings + _userSettings.UserSettingsRecorded = false; + } + + Save(); + ExecSysproxy(arguments); + } + + private static void ExecSysproxy(string arguments) + { + using (var process = new Process()) + { + // Configure the process using the StartInfo properties. + process.StartInfo.FileName = Utils.GetTempPath("sysproxy.exe"); + process.StartInfo.Arguments = arguments; + process.StartInfo.WorkingDirectory = Utils.GetTempPath(); + process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; + process.StartInfo.UseShellExecute = false; + process.StartInfo.RedirectStandardError = true; + process.StartInfo.RedirectStandardOutput = true; + + // Need to provide encoding info, or output/error strings we got will be wrong. + process.StartInfo.StandardOutputEncoding = Encoding.Unicode; + process.StartInfo.StandardErrorEncoding = Encoding.Unicode; + + process.StartInfo.CreateNoWindow = true; + process.Start(); + + var stderr = process.StandardError.ReadToEnd(); + var stdout = process.StandardOutput.ReadToEnd(); + + process.WaitForExit(); + + var exitCode = process.ExitCode; + if (exitCode != (int)RET_ERRORS.RET_NO_ERROR) + { + throw new Exception(stderr); + } + + if (arguments == "query") + { + if (stdout.IsNullOrWhiteSpace() || stdout.IsNullOrEmpty()) + { + // we cannot get user settings + throw new Exception("failed to query wininet settings"); + } + _queryStr = stdout; + } + } + } + + private static void Save() + { + try + { + using (StreamWriter sw = new StreamWriter(File.Open(Utils.GetPath(_userWininetConfigFile), FileMode.Create))) + { + string jsonString = JsonConvert.SerializeObject(_userSettings, Formatting.Indented); + sw.Write(jsonString); + sw.Flush(); + } + } + catch (IOException ex) + { + Utils.SaveLog(ex.Message, ex); + } + } + + private static void Read() + { + try + { + string configContent = File.ReadAllText(Utils.GetPath(_userWininetConfigFile)); + _userSettings = JsonConvert.DeserializeObject(configContent); + } + catch (Exception ex) + { + Utils.SaveLog(ex.Message, ex); + // Suppress all exceptions. finally block will initialize new user config settings. + } + finally + { + if (_userSettings == null) _userSettings = new SysproxyConfig(); + } + } + + private static void ParseQueryStr(string str) + { + string[] userSettingsArr = str.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); + _userSettings.Flags = userSettingsArr[0]; + + // handle output from WinINET + if (userSettingsArr[1] == "(null)") _userSettings.ProxyServer = null; + else _userSettings.ProxyServer = userSettingsArr[1]; + if (userSettingsArr[2] == "(null)") _userSettings.BypassList = null; + else _userSettings.BypassList = userSettingsArr[2]; + if (userSettingsArr[3] == "(null)") _userSettings.PacUrl = null; + else _userSettings.PacUrl = userSettingsArr[3]; + + _userSettings.UserSettingsRecorded = true; + } + } +} diff --git a/v2rayN/v2rayN/HttpProxyHandler/WebClientEx.cs b/v2rayN/v2rayN/HttpProxyHandler/WebClientEx.cs new file mode 100644 index 00000000..2ce644d5 --- /dev/null +++ b/v2rayN/v2rayN/HttpProxyHandler/WebClientEx.cs @@ -0,0 +1,22 @@ +using System; +using System.Net; + +namespace v2rayN.HttpProxyHandler +{ + class WebClientEx : WebClient + { + public int Timeout { get; set; } + public WebClientEx(int timeout = 3000) + { + Timeout = timeout; + } + + + protected override WebRequest GetWebRequest(Uri address) + { + var request = base.GetWebRequest(address); + request.Timeout = Timeout; + return request; + } + } +} diff --git a/v2rayN/v2rayN/Mode/Config.cs b/v2rayN/v2rayN/Mode/Config.cs new file mode 100644 index 00000000..eb9aa954 --- /dev/null +++ b/v2rayN/v2rayN/Mode/Config.cs @@ -0,0 +1,493 @@ +using System; +using System.Collections.Generic; +using System.Text.RegularExpressions; + +namespace v2rayN.Mode +{ + /// + /// 本软件配置文件实体类 + /// + [Serializable] + public class Config + { + /// + /// 本地监听 + /// + public List inbound { get; set; } + + /// + /// 允许日志 + /// + public bool logEnabled { get; set; } + + /// + /// 日志等级 + /// + public string loglevel { get; set; } + + /// + /// 活动配置序号 + /// + public int index { get; set; } + + /// + /// vmess服务器信息 + /// + public List vmess { get; set; } + + /// + /// 允许Mux多路复用 + /// + public bool muxEnabled { get; set; } + + /// + /// 域名解析策略 + /// + public string domainStrategy { get; set; } + + /// + /// 路由模式 + /// + public string routingMode { get; set; } + + /// + /// 用户自定义需代理的网址或ip + /// + public List useragent { get; set; } + + /// + /// 用户自定义直连的网址或ip + /// + public List userdirect { get; set; } + + /// + /// 用户自定义阻止的网址或ip + /// + public List userblock { get; set; } + + /// + /// KcpItem + /// + public KcpItem kcpItem { get; set; } + + + /// + /// 启用Http代理 + /// + public bool sysAgentEnabled { get; set; } + + /// + /// 监听状态 0-不改变 1-全局 2-PAC + /// + public int listenerType { get; set; } + + /// + /// 自定义GFWList url + /// + public string urlGFWList { get; set; } + + /// + /// 允许来自局域网的连接 + /// + public bool allowLANConn { get; set; } + + /// + /// 自定义远程DNS + /// + public string remoteDNS { get; set; } + /// + /// 订阅 + /// + public List subItem { get; set; } + /// + /// UI + /// + public UIItem uiItem { get; set; } + + #region 函数 + + public string address() + { + if (index < 0) + { + return string.Empty; + } + return vmess[index].address; + } + + public int port() + { + if (index < 0) + { + return 10808; + } + return vmess[index].port; + } + + public string id() + { + if (index < 0) + { + return string.Empty; + } + return vmess[index].id; + } + + public int alterId() + { + if (index < 0) + { + return 0; + } + return vmess[index].alterId; + } + + public string security() + { + if (index < 0) + { + return string.Empty; + } + return vmess[index].security; + } + + public string remarks() + { + if (index < 0) + { + return string.Empty; + } + return vmess[index].remarks; + } + public string network() + { + if (index < 0 || Utils.IsNullOrEmpty(vmess[index].network)) + { + return Global.DefaultNetwork; + } + return vmess[index].network; + } + public string headerType() + { + if (index < 0 || Utils.IsNullOrEmpty(vmess[index].headerType)) + { + return Global.None; + } + return vmess[index].headerType.Replace(" ", "").Trim(); + } + public string requestHost() + { + if (index < 0 || Utils.IsNullOrEmpty(vmess[index].requestHost)) + { + return string.Empty; + } + return vmess[index].requestHost.Replace(" ", "").Trim(); + } + public string path() + { + if (index < 0 || Utils.IsNullOrEmpty(vmess[index].path)) + { + return string.Empty; + } + return vmess[index].path.Replace(" ", "").Trim(); + } + public string streamSecurity() + { + if (index < 0 || Utils.IsNullOrEmpty(vmess[index].streamSecurity)) + { + return string.Empty; + } + return vmess[index].streamSecurity; + } + public bool allowInsecure() + { + if (index < 0 || Utils.IsNullOrEmpty(vmess[index].allowInsecure)) + { + return true; + } + return Convert.ToBoolean(vmess[index].allowInsecure); + } + + public int GetLocalPort(string protocol) + { + int localPort = 0; + foreach (InItem inItem in inbound) + { + if (inItem.protocol.Equals(protocol)) + { + localPort = inItem.localPort; + break; + } + } + return localPort; + } + + public int configType() + { + if (index < 0) + { + return 0; + } + return vmess[index].configType; + } + + public string getSummary() + { + if (index < 0) + { + return string.Empty; + } + return vmess[index].getSummary(); + } + + #endregion + + } + + [Serializable] + public class VmessItem + { + public VmessItem() + { + configVersion = 1; + address = string.Empty; + port = 0; + id = string.Empty; + alterId = 0; + security = string.Empty; + network = string.Empty; + remarks = string.Empty; + headerType = string.Empty; + requestHost = string.Empty; + path = string.Empty; + streamSecurity = string.Empty; + allowInsecure = string.Empty; + configType = (int)EConfigType.Vmess; + testResult = string.Empty; + subid = string.Empty; + } + + public string getSummary() + { + string summary = string.Empty; + summary = string.Format("{0}-", ((EConfigType)configType).ToString()); + string[] arrAddr = address.Split('.'); + string addr = string.Empty; + if (arrAddr.Length > 2) + { + addr = $"{arrAddr[0]}***{arrAddr[arrAddr.Length - 1]}"; + } + else if (arrAddr.Length > 1) + { + addr = $"***{arrAddr[arrAddr.Length - 1]}"; + } + else + { + addr = address; + } + if (configType == (int)EConfigType.Vmess) + { + summary += string.Format("{0}({1}:{2})", remarks, addr, port); + } + else if (configType == (int)EConfigType.Shadowsocks) + { + summary += string.Format("{0}({1}:{2})", remarks, addr, port); + } + else if (configType == (int)EConfigType.Socks) + { + summary += string.Format("{0}({1}:{2})", remarks, addr, port); + } + else + { + summary += string.Format("{0}", remarks); + } + return summary; + } + public string getSubRemarks(Config config) + { + string subRemarks = string.Empty; + if (Utils.IsNullOrEmpty(subid)) + { + return subRemarks; + } + foreach (SubItem sub in config.subItem) + { + if (sub.id.EndsWith(subid)) + { + return sub.remarks; + } + } + if (subid.Length <= 4) + { + return subid; + } + return subid.Substring(0, 4); + } + /// + /// 版本(现在=2) + /// + public int configVersion { get; set; } + + /// + /// 远程服务器地址 + /// + public string address { get; set; } + /// + /// 远程服务器端口 + /// + public int port { get; set; } + /// + /// 远程服务器ID + /// + public string id { get; set; } + /// + /// 远程服务器额外ID + /// + public int alterId { get; set; } + /// + /// 本地安全策略 + /// + public string security { get; set; } + /// + /// tcp,kcp,ws + /// + public string network { get; set; } + /// + /// 备注或别名 + /// + public string remarks { get; set; } + + /// + /// 伪装类型 + /// + public string headerType { get; set; } + + /// + /// 伪装的域名 + /// + public string requestHost { get; set; } + + /// + /// ws h2 path + /// + public string path { get; set; } + + /// + /// 底层传输安全 + /// + public string streamSecurity { get; set; } + + /// + /// 是否允许不安全连接(用于客户端) + /// + public string allowInsecure { get; set; } + + + /// + /// config type(1=normal,2=custom) + /// + public int configType { get; set; } + + /// + /// + /// + public string testResult { get; set; } + + /// + /// SubItem id + /// + public string subid { get; set; } + } + + [Serializable] + public class InItem + { + /// + /// 本地监听端口 + /// + public int localPort { get; set; } + + /// + /// 协议,默认为socks + /// + public string protocol { get; set; } + + /// + /// 允许udp + /// + public bool udpEnabled { get; set; } + + /// + /// 开启流量探测 + /// + public bool sniffingEnabled { get; set; } = true; + } + + [Serializable] + public class KcpItem + { + /// + /// + /// + public int mtu { get; set; } + /// + /// + /// + public int tti { get; set; } + /// + /// + /// + public int uplinkCapacity { get; set; } + /// + /// + /// + public int downlinkCapacity { get; set; } + /// + /// + /// + public bool congestion { get; set; } + /// + /// + /// + public int readBufferSize { get; set; } + /// + /// + /// + public int writeBufferSize { get; set; } + } + + + [Serializable] + public class SubItem + { + /// + /// + /// + public string id { get; set; } + + /// + /// 备注 + /// + public string remarks { get; set; } + + /// + /// url + /// + public string url { get; set; } + + /// + /// enable + /// + public bool enabled { get; set; } = true; + } + + [Serializable] + public class UIItem + { + /// + /// + /// + public int mainQRCodeWidth { get; set; } = 600; + + } +} diff --git a/v2rayN/v2rayN/Mode/EConfigType.cs b/v2rayN/v2rayN/Mode/EConfigType.cs new file mode 100644 index 00000000..733c8556 --- /dev/null +++ b/v2rayN/v2rayN/Mode/EConfigType.cs @@ -0,0 +1,11 @@ + +namespace v2rayN.Mode +{ + public enum EConfigType + { + Vmess = 1, + Custom = 2, + Shadowsocks = 3, + Socks = 4 + } +} diff --git a/v2rayN/v2rayN/Mode/EMove.cs b/v2rayN/v2rayN/Mode/EMove.cs new file mode 100644 index 00000000..7f67d5b1 --- /dev/null +++ b/v2rayN/v2rayN/Mode/EMove.cs @@ -0,0 +1,11 @@ + +namespace v2rayN.Mode +{ + public enum EMove + { + Top = 1, + Up = 2, + Down = 3, + Bottom = 4 + } +} diff --git a/v2rayN/v2rayN/Mode/SysproxyConfig.cs b/v2rayN/v2rayN/Mode/SysproxyConfig.cs new file mode 100644 index 00000000..8b0d0097 --- /dev/null +++ b/v2rayN/v2rayN/Mode/SysproxyConfig.cs @@ -0,0 +1,21 @@ + +namespace v2rayN.Mode +{ + class SysproxyConfig + { + public bool UserSettingsRecorded; + public string Flags; + public string ProxyServer; + public string BypassList; + public string PacUrl; + + public SysproxyConfig() + { + UserSettingsRecorded = false; + Flags = "1"; + ProxyServer = ""; + BypassList = ""; + PacUrl = ""; + } + } +} diff --git a/v2rayN/v2rayN/Mode/V2rayConfig.cs b/v2rayN/v2rayN/Mode/V2rayConfig.cs new file mode 100644 index 00000000..a57c885a --- /dev/null +++ b/v2rayN/v2rayN/Mode/V2rayConfig.cs @@ -0,0 +1,455 @@ +using System.Collections.Generic; + +namespace v2rayN.Mode +{ + /// + /// v2ray配置文件实体类 + /// 例子SampleConfig.txt + /// + public class V2rayConfig + { + /// + /// 日志配置 + /// + public Log log { get; set; } + /// + /// 传入连接配置 + /// + public List inbounds { get; set; } + /// + /// 传出连接配置 + /// + public List outbounds { get; set; } + + /// + /// DNS 配置 + /// + public Dns dns { get; set; } + /// + /// 路由配置 + /// + public Routing routing { get; set; } + } + + public class Log + { + /// + /// + /// + public string access { get; set; } + /// + /// + /// + public string error { get; set; } + /// + /// + /// + public string loglevel { get; set; } + } + + public class Inbounds + { + /// + /// + /// + public int port { get; set; } + /// + /// + /// + public string listen { get; set; } + /// + /// + /// + public string protocol { get; set; } + /// + /// + /// + public Sniffing sniffing { get; set; } + /// + /// + /// + public Inboundsettings settings { get; set; } + + /// + /// + /// + public StreamSettings streamSettings { get; set; } + + } + + public class Inboundsettings + { + /// + /// + /// + public string auth { get; set; } + /// + /// + /// + public bool udp { get; set; } + /// + /// + /// + public string ip { get; set; } + + /// + /// + /// + public List clients { get; set; } + } + + public class UsersItem + { + /// + /// + /// + public string id { get; set; } + /// + /// + /// + public int alterId { get; set; } + /// + /// + /// + public string email { get; set; } + /// + /// + /// + public string security { get; set; } + } + public class Sniffing + { + /// + /// + /// + public bool enabled { get; set; } + /// + /// + /// + public List destOverride { get; set; } + } + + public class Outbounds + { + /// + /// 默认值agentout + /// + public string tag { get; set; } + /// + /// + /// + public string protocol { get; set; } + /// + /// + /// + public Outboundsettings settings { get; set; } + /// + /// + /// + public StreamSettings streamSettings { get; set; } + /// + /// + /// + public Mux mux { get; set; } + } + + public class Outboundsettings + { + /// + /// + /// + public List vnext { get; set; } + /// + /// + /// + public List servers { get; set; } + + /// + /// + /// + public Response response { get; set; } + } + + public class VnextItem + { + /// + /// + /// + public string address { get; set; } + /// + /// + /// + public int port { get; set; } + /// + /// + /// + public List users { get; set; } + } + public class ServersItem + { + /// + /// + /// + public string email { get; set; } + /// + /// + /// + public string address { get; set; } + /// + /// + /// + public string method { get; set; } + /// + /// + /// + public bool ota { get; set; } + /// + /// + /// + public string password { get; set; } + /// + /// + /// + public int port { get; set; } + /// + /// + /// + public int level { get; set; } + } + + public class Mux + { + /// + /// + /// + public bool enabled { get; set; } + } + + public class Response + { + /// + /// + /// + public string type { get; set; } + } + + public class Dns + { + /// + /// + /// + public List servers { get; set; } + } + + public class RulesItem + { + /// + /// + /// + public string type { get; set; } + /// + /// + /// + public string port { get; set; } + /// + /// + /// + public string outboundTag { get; set; } + + /// + /// + /// + public List ip { get; set; } + + /// + /// + /// + public List domain { get; set; } + } + + public class Routing + { + /// + /// + /// + public string domainStrategy { get; set; } + /// + /// + /// + public List rules { get; set; } + } + + public class StreamSettings + { + /// + /// + /// + public string network { get; set; } + /// + /// + /// + public string security { get; set; } + + /// + /// + /// + public TlsSettings tlsSettings { get; set; } + + /// + /// Tcp传输额外设置 + /// + public TcpSettings tcpSettings { get; set; } + /// + /// Kcp传输额外设置 + /// + public KcpSettings kcpSettings { get; set; } + /// + /// ws传输额外设置 + /// + public WsSettings wsSettings { get; set; } + /// + /// h2传输额外设置 + /// + public HttpSettings httpSettings { get; set; } + + /// + /// QUIC + /// + public QuicSettings quicSettings { get; set; } + + } + + public class TlsSettings + { + /// + /// 是否允许不安全连接(用于客户端) + /// + public bool allowInsecure { get; set; } + + /// + /// + /// + public string serverName { get; set; } + } + + public class TcpSettings + { + /// + /// 是否重用 TCP 连接 + /// + public bool connectionReuse { get; set; } + /// + /// 数据包头部伪装设置 + /// + public Header header { get; set; } + } + + public class Header + { + /// + /// 伪装 + /// + public string type { get; set; } + /// + /// 结构复杂,直接存起来 + /// + public object request { get; set; } + /// + /// 结构复杂,直接存起来 + /// + public object response { get; set; } + } + + public class KcpSettings + { + /// + /// + /// + public int mtu { get; set; } + /// + /// + /// + public int tti { get; set; } + /// + /// + /// + public int uplinkCapacity { get; set; } + /// + /// + /// + public int downlinkCapacity { get; set; } + /// + /// + /// + public bool congestion { get; set; } + /// + /// + /// + public int readBufferSize { get; set; } + /// + /// + /// + public int writeBufferSize { get; set; } + /// + /// + /// + public Header header { get; set; } + } + + public class WsSettings + { + /// + /// + /// + public bool connectionReuse { get; set; } + + /// + /// + /// + public string path { get; set; } + + /// + /// + /// + public Headers headers { get; set; } + } + public class Headers + { + /// + /// + /// + public string Host { get; set; } + } + + public class HttpSettings + { + /// + /// + /// + public string path { get; set; } + + /// + /// + /// + public List host { get; set; } + + } + + public class QuicSettings + { + /// + /// + /// + public string security { get; set; } + /// + /// + /// + public string key { get; set; } + + /// + /// + /// + public Header header { get; set; } + } + +} diff --git a/v2rayN/v2rayN/Mode/V2rayTcpRequest.cs b/v2rayN/v2rayN/Mode/V2rayTcpRequest.cs new file mode 100644 index 00000000..4a4e863d --- /dev/null +++ b/v2rayN/v2rayN/Mode/V2rayTcpRequest.cs @@ -0,0 +1,25 @@ +using System.Collections.Generic; + +namespace v2rayN.Mode +{ + /// + /// Tcp伪装http的Request,只要Host + /// + public class V2rayTcpRequest + { + /// + /// + /// + public RequestHeaders headers { get; set; } + } + + public class RequestHeaders + { + /// + /// + /// + public List Host { get; set; } + } + + +} diff --git a/v2rayN/v2rayN/Mode/VmessQRCode.cs b/v2rayN/v2rayN/Mode/VmessQRCode.cs new file mode 100644 index 00000000..29023757 --- /dev/null +++ b/v2rayN/v2rayN/Mode/VmessQRCode.cs @@ -0,0 +1,53 @@ +using System; + +namespace v2rayN.Mode +{ + [Serializable] + class VmessQRCode + { + /// + /// 版本 + /// + public string v { get; set; } + /// + /// 备注 + /// + public string ps { get; set; } + /// + /// 远程服务器地址 + /// + public string add { get; set; } + /// + /// 远程服务器端口 + /// + public string port { get; set; } + /// + /// 远程服务器ID + /// + public string id { get; set; } + /// + /// 远程服务器额外ID + /// + public string aid { get; set; } + /// + /// 传输协议tcp,kcp,ws + /// + public string net { get; set; } + /// + /// 伪装类型 + /// + public string type { get; set; } + /// + /// 伪装的域名 + /// + public string host { get; set; } + /// + /// path + /// + public string path { get; set; } + /// + /// 底层传输安全 + /// + public string tls { get; set; } + } +} diff --git a/v2rayN/v2rayN/Newtonsoft.Json.dll b/v2rayN/v2rayN/Newtonsoft.Json.dll new file mode 100644 index 0000000000000000000000000000000000000000..71ae7e6cee2c841229a36445461808b8b3d26e2b GIT binary patch literal 524800 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 + /// 应用程序的主入口点。 + /// + [STAThread] + static void Main() + { + if (Environment.OSVersion.Version.Major >= 6) + { + SetProcessDPIAware(); + } + + Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException); + Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException); + AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); + + AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve; + + Process instance = RunningInstance(); + if (instance == null) + { + Utils.SaveLog("v2rayN start up"); + + //设置语言环境 + string lang = Utils.RegReadValue(Global.MyRegPath, Global.MyRegKeyLanguage, "zh-Hans"); + System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(lang); + + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new MainForm()); + } + else + { + UI.Show("v2rayN is already running(v2rayN已经运行)"); + } + } + + private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args) + { + try + { + string resourceName = "v2rayN." + new AssemblyName(args.Name).Name + ".dll"; + using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName)) + { + if (stream == null) + { + return null; + } + byte[] assemblyData = new byte[stream.Length]; + stream.Read(assemblyData, 0, assemblyData.Length); + return Assembly.Load(assemblyData); + } + } + catch + { + return null; + } + } + + ///

+ /// 获取正在运行的实例,没有运行的实例返回null; + /// + public static Process RunningInstance() + { + Process current = Process.GetCurrentProcess(); + Process[] processes = Process.GetProcessesByName(current.ProcessName); + foreach (Process process in processes) + { + if (process.Id != current.Id) + { + if (Assembly.GetExecutingAssembly().Location.Replace("/", "\\") == process.MainModule.FileName) + { + return process; + } + } + } + return null; + } + + static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e) + { + Utils.SaveLog("Application_ThreadException", e.Exception); + } + + static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) + { + Utils.SaveLog("CurrentDomain_UnhandledException", (Exception)e.ExceptionObject); + } + + } +} diff --git a/v2rayN/v2rayN/Properties/AssemblyInfo.cs b/v2rayN/v2rayN/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..21923c6f --- /dev/null +++ b/v2rayN/v2rayN/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的常规信息通过以下 +// 特性集控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("v2rayN")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Microsoft")] +[assembly: AssemblyProduct("v2rayN")] +[assembly: AssemblyCopyright("Copyright © Microsoft 2018")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 使此程序集中的类型 +// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型, +// 则将该类型上的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("72d9f089-5e7a-4c5f-be0a-8a211536b483")] + +// 程序集的版本信息由下面四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值, +// 方法是按如下所示使用“*”: +//[assembly: AssemblyVersion("1.0.*")] +//[assembly: AssemblyVersion("1.0.0")] +[assembly: AssemblyFileVersion("2.30")] diff --git a/v2rayN/v2rayN/Properties/Resources.Designer.cs b/v2rayN/v2rayN/Properties/Resources.Designer.cs new file mode 100644 index 00000000..79727893 --- /dev/null +++ b/v2rayN/v2rayN/Properties/Resources.Designer.cs @@ -0,0 +1,229 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +namespace v2rayN.Properties { + using System; + + + /// + /// 一个强类型的资源类,用于查找本地化的字符串等。 + /// + // 此类是由 StronglyTypedResourceBuilder + // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 + // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen + // (以 /str 作为命令选项),或重新生成 VS 项目。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// 返回此类使用的缓存的 ResourceManager 实例。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("v2rayN.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 重写当前线程的 CurrentUICulture 属性 + /// 重写当前线程的 CurrentUICulture 属性。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap about { + get { + object obj = ResourceManager.GetObject("about", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Byte[] 类型的本地化资源。 + /// + internal static byte[] abp_js { + get { + object obj = ResourceManager.GetObject("abp_js", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap checkupdate { + get { + object obj = ResourceManager.GetObject("checkupdate", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap help { + get { + object obj = ResourceManager.GetObject("help", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Byte[] 类型的本地化资源。 + /// + internal static byte[] mgwz_dll { + get { + object obj = ResourceManager.GetObject("mgwz_dll", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap minimize { + get { + object obj = ResourceManager.GetObject("minimize", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap option { + get { + object obj = ResourceManager.GetObject("option", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Byte[] 类型的本地化资源。 + /// + internal static byte[] pac_txt { + get { + object obj = ResourceManager.GetObject("pac_txt", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// 查找类似 listen-address __PRIVOXY_BIND_IP__:__PRIVOXY_BIND_PORT__ + ///toggle 0 + ///logfile v2ray_privoxy.log + ///show-on-task-bar 0 + ///activity-animation 0 + ///forward-socks5 / 127.0.0.1:__SOCKS_PORT__ . + ///hide-console + /// 的本地化字符串。 + /// + internal static string privoxy_conf { + get { + return ResourceManager.GetString("privoxy_conf", resourceCulture); + } + } + + /// + /// 查找 System.Byte[] 类型的本地化资源。 + /// + internal static byte[] privoxy_exe { + get { + object obj = ResourceManager.GetObject("privoxy_exe", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap promotion { + get { + object obj = ResourceManager.GetObject("promotion", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap restart { + get { + object obj = ResourceManager.GetObject("restart", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap server { + get { + object obj = ResourceManager.GetObject("server", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap sub { + get { + object obj = ResourceManager.GetObject("sub", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Byte[] 类型的本地化资源。 + /// + internal static byte[] sysproxy_exe { + get { + object obj = ResourceManager.GetObject("sysproxy_exe", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// 查找 System.Byte[] 类型的本地化资源。 + /// + internal static byte[] sysproxy64_exe { + get { + object obj = ResourceManager.GetObject("sysproxy64_exe", resourceCulture); + return ((byte[])(obj)); + } + } + } +} diff --git a/v2rayN/v2rayN/Properties/Resources.resx b/v2rayN/v2rayN/Properties/Resources.resx new file mode 100644 index 00000000..cb5fbb08 --- /dev/null +++ b/v2rayN/v2rayN/Properties/Resources.resx @@ -0,0 +1,169 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\Resources\about.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\abp.js.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\resources\checkupdate.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\resources\help.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\resources\mgwz.dll.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\minimize.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\option.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\pac.txt.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\resources\privoxy_conf.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;gb2312 + + + ..\resources\privoxy.exe.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\resources\promotion.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\restart.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\server.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\resources\sub.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\sysproxy64.exe.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\sysproxy.exe.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/v2rayN/v2rayN/Properties/Settings.Designer.cs b/v2rayN/v2rayN/Properties/Settings.Designer.cs new file mode 100644 index 00000000..62dd9b42 --- /dev/null +++ b/v2rayN/v2rayN/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +namespace v2rayN.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/v2rayN/v2rayN/Properties/Settings.settings b/v2rayN/v2rayN/Properties/Settings.settings new file mode 100644 index 00000000..39645652 --- /dev/null +++ b/v2rayN/v2rayN/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/v2rayN/v2rayN/Resources/about.png b/v2rayN/v2rayN/Resources/about.png new file mode 100644 index 0000000000000000000000000000000000000000..48fa6b1bf4b8793ac512f3b21e68abe578835f64 GIT binary patch literal 1326 zcmV+}1=0G6P)oYw{UfMIus^m+?U1`Rvv1x#ahEsCth+n!tqGlP@7?n|=l9M% z=e%pqN2DzQDdkH5umb>20>I-$^nIMK5<&<>+|A6hm^tgZ z?&+y;lM=}1^D}+lKL7yt0l;RZ)S)3IeKo&|u%h-lwrHYN~QzI=IN z&YU^N0bp*U(O6R|mCjDrd8@wTII9q`h=@-T(YsgLx{?4&Dfa`w${+|9d!G0Ee{tT# zX0zEfT5HA3Y1eg+wb~p0g0>iG!-q?E?# zUf=g`J$(4^Z!rn%N5qGly64WFo6+Cj?@xu5Qa;MeZzYq-`GrDZ$moqlKnU?MBK}20 z8{#-OI*#M4wk+!)0L*0OvQlbwJFJOvqtW=2nYT16Ym|T~yGEl?)mpE0UAGjMK!}}P zuh*BPQmIpgLLrF43L!p3M4yN@jzvI9xdH$_snu#7<#M?mWyGB4a=C>;5cDA8K->mp zaON5SU>6bfju8+-Y%-mTh~`E)mr|PM^eO<{9qMYW^)}aa_eNpOc_x!tX5030B1!=O zk6wY4(sZkJL}W^;t>kjK+nD(ut@Tz!d@fY}E)Le{3L$zC@oW$T^F7ZS7$x91&Q8m+ zHW1P6Q3RUjj^k{%EbHa)`D-G&GY+;%006p)=)x!ga|HmfM=3Qcj*$>Uh$uq+Jw)_G z9IWFw_aLI_H8aMpKnSrC5s%eswRz=o`C^ozX4L?IF=8Z5L`R}<;dSRt4vkB~zP`Te z5{blMSf8d9w-q5o4iQcL8>uA{i5m)q!blV@B=9yfCzVoL%=5TL1OS(nQfs3Og>%AA zqsPprl~T*1Fy=gL_ZPL+n>^3+#t~??Vnke6EEa!lXRtK^nc0k9Pa$HRh|aXbNhvon z^XownEGU&qm&XwZ+vE?-d{QZ8l5$GPWHQ~BWqpN+-C-1d0f0A@QoE-Dg+HUSTI)Am z*L|g_H|}>VrCbjH@5T8Y_x1JNXxsK8%d%?4V)1ix8xddsA~SETR;#_0N~Ja_0rOG_ zaS##jzm@}u5F!l#rfgRc(PynhCyZq2bUKwvrH&(F=QSM34r#3)X(nD<0%5k!_I=-s zX7^t0P-vKivs{) k_QPq(RS}q$hY00=0XRKKKYVr8V*mgE07*qoM6N<$f+gv3)c^nh literal 0 HcmV?d00001 diff --git a/v2rayN/v2rayN/Resources/abp.js.gz b/v2rayN/v2rayN/Resources/abp.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..0577c7f5c14d22f0a4f0c744f3284da191c04cf1 GIT binary patch literal 4467 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 F007W`%bNfI literal 0 HcmV?d00001 diff --git a/v2rayN/v2rayN/Resources/checkupdate.png b/v2rayN/v2rayN/Resources/checkupdate.png new file mode 100644 index 0000000000000000000000000000000000000000..bc1fade10c7f46d891fbc4dc179c9a060a3d66b6 GIT binary patch literal 478 zcmV<40U`d0P)hs9FsZYGZJW1U=cV5b^!l(iBI4WxCZ>6jS_(q;Gzd`6-e+i;3~(U ziGUS9goGF1rc3F`T8mf-&$~g9KU*~sP`Yj47C7t)9@8X$5Wpod6@j0yY7KZR5ZD0L z!#OuCTLoUj%UZ!X1>E$hDWQTAmD&WJ3q)fG`*HiJ&TwJ>P^-Bv4y7D}lz1 zD{71cMg{(d0_Wj&JW7U3uCmLdHDfajqCo66VQR72CzCp5GkVb&45VH<%ypq+9?0&`d37e}Rj UA%hUAlmGw#07*qoM6N<$f@l`VumAu6 literal 0 HcmV?d00001 diff --git a/v2rayN/v2rayN/Resources/help.png b/v2rayN/v2rayN/Resources/help.png new file mode 100644 index 0000000000000000000000000000000000000000..03691a424d9856547355ec8642669f30eaa0f461 GIT binary patch literal 1310 zcmV+(1>yRMP))~LG-~O zzZBKRoO9>yy0}_y7W6`^Nm+zZmTjbEt&xg5_ueO-WoEhFo!Ob`i|5njp65L0cb@aS z9m07Ybe{J|#{l_!enu{ryA42|nO70f9A=&iAS9w=%sfg&yK1%Cj{g4s(M}K65rF4; z_c@O98h|V6iemtcO&tJN)#v0pX6BvDyw&&pZ`*-P3*fr$9LI6C6H$Sg89)WVdr=hi z2SIQ;sk~e+UlfMndS<@AE-x@|ojrT@k-@>ie_DaG1W-z?69q(c8G!vnw5d|5>~D7> znJ*Ly^D>#tGeoqJnSTIqm$mjtv$ahDlv1}7(FbzB%>0D4_9ZcGCz~f_wALPgcbNHK z05>#)m;z8Y`ynE_IF936ec%7Q+l`a*p69J5qK^O^snu#L2L=ZIPR>sOP)hA4qO|}X zGse8yZ1Zxtd_fq7>zH{7fD4J}WE{tPeBb}NnY`9|3xF4yIk48cEdjLF>j4A+J~YPM z*-V+|d21cV*#SU8FgYS--fXRXy#>TDfHll~x3zYtA#;uewASA-^CD)xu2~2bi^WyU zyca+Yz;R|iKt$g&^F2g#jVNViZLPIw2-kI2WHK3X;)BMRDW&s*X+&LIgkV@#>p zDU?!sh)68+7ZF`wsZ@Th%Q;G^Pl)IyW z4uDcBARSps&skAVTV;{h^^>xo0W1ecILu)-QzGJPuF%9qsfD_i*#hn7UuDi%_9JzbRmNE|Z z^z^K3cKU`+rPPlAW>{+{qG-|wlv2Of0hV?GP%f7bxNrkfDvo$sx-hvi1hUI%N-7qQdy6(-6<47q!K}1W9F(;DqOJq;iu<~PQCn%2{@DJ_*s3!*3*1h9~Z-U!3+xgZFB z=>$Y6wUUUo16U?~Lli|Ds@1CW5mUyrZF#v|o>{Baq{G=jMADR+IF8>xbLLF{(9qDS zq_##|F0#z*5)m=8jiPANbm_UHhlx^3I+*9>RV0e*9kO&pzYjFET5 zw4)<{h6c~`u9jZE4$^p7u(WCoDMn)v(w;f#pwAJ=M1kO9af8_0B UKc;uLb^rhX07*qoM6N<$g64>K@c;k- literal 0 HcmV?d00001 diff --git a/v2rayN/v2rayN/Resources/mgwz.dll.gz b/v2rayN/v2rayN/Resources/mgwz.dll.gz new file mode 100644 index 0000000000000000000000000000000000000000..40a33e5d0ce5487f7bb24bcdde90e92a7e2a7dcb GIT binary patch literal 47355 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ⅈ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

HkXgnXI|5R1CIgJIQpc?kvrMLG6~d^ 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 O0000vz literal 0 HcmV?d00001 diff --git a/v2rayN/v2rayN/Resources/restart.png b/v2rayN/v2rayN/Resources/restart.png new file mode 100644 index 0000000000000000000000000000000000000000..1c0e0ca60e3da2b229acb1b4be156d964450f82d GIT binary patch literal 485 zcmVPCFlSZpaQM}R6qylKz_+?vR>Z)ySwB?a+6%%CA&NG z%{Sldyf_HGqH1z$UOW(9b*Y-K(iy29AMKz~`7f0{4K=CTj(-4cr0;OFiQZU18Z(6dRxqL zC_**ylslb0JfXT*Ru3Alq4;qI#3UPtOda6!G_>&NfYS; z(CELqZE^q$mq67=@eI?nD_ZY^m549}U~p+IUa#SRo%9iI(e5@(YZn3Z1ozBR7tt61 zY4Rux$}yX}6{X#=9p4vZ&1sq)%QXNxaQc~jI%Wlu8^`I`uIi-( zzyQ&KU7@1mWUQ4z+8tgCzmQ0qHdMRR>NrlhArRFr(3QWE4FgGY1R2)^+dDDWA0}%C brf1+6VT@iOL#5&t00000NkvXXu0mjf?9j+TZs79^Z;RpVgk@vjo5)@Bugg{62O50RMq2!0+kF02t^L_z2tszk$ESxq<2v zz+MAKzzg6P@S_E04uH-sfcL;9@Vx|1GpY;(@)-j0A}qAmQe@eOqYPr z)?`fJ9q?&fjVS>3&eDBd8Y!{YpB#Ey+l>L3y?qw-E{@fd9~**>0r=xj;N>o&mv%~M zlU$!E0QUdej#_Y5h}{Gr>urIR__8Guo)-ez0#(rjAXzjD<_btHtN$fO89GDsbyJ=} z?i7Gr@c7h$eY;yYh~$w0O&|jLG{GhS%QcWn1xA(lF}tY~Q&N_1f>eh7p0+>|IsvB~ zENQ{m)@nZSJ*5K6<{8N4Igv{%CAINV8QLQWXzzTfd6^`@;xcmtTY5)($^i{5ms0cv zKeweNw&h>rb~E6s^1eRalw?du33ib%0MyA@HXRzkOC?TRRQ2dqazVmqXV`ZEkSIzh zy9Gn4I@dN^Km@6j2LzuR#X8e41JTP(gPWKYOaa&e^=hdd#p5#e1`Rvg=WMYx&W~;q z`l94{D2nLb^9o=(d5uC2A)QLGZSxeq*%bunMAaO*<@V%UIJk00P3>eJAg-SbgLmBluLO40000B{Y;E{+L=ClnR2J1ecbe90NsN zgoY-EAP}MmQKX?b@EtDl*!^-JAMfyZ$ICh2^ZtI$Ip1>{YW^BE$9E2pt3VHK;bLaW z4zQ79n*(qkOSqhKV8LbwWBB|(zcPRbx`$_YiTzB7P-+x2xPjj%`IQ0O#tM2f10OeA z$28to1-OeBxLFb46JFz8T>$;~p3>Nqp)3Ve6nLD9_D7Ct?Ev_NsGYAJ18@n0h1*8O zNB@6I|Gu=l2Kq|m9y#kS=)4*@UhK6iFoZ1}qLzoKsK`gWIqM?q9DsOyLf**r6h1V0 zdfSqM>zKzdp5sqiSk^F(-2%v|0(4^%PqB(eY1Br%YgoWN%wZNsI5mK{*&=@8L29#R z!|qNR#W5cyk|M9LTy-IdRV;csWPXCT_**h&FW_NH&lL<{vnoLNT}2nN7K}omsFg^~ rb}L(P&Q8&iP1#1&(&0JI=K%iz8XRFE9}){f00000NkvXXu0mjfM*G7_ literal 0 HcmV?d00001 diff --git a/v2rayN/v2rayN/Resources/sysproxy.exe.gz b/v2rayN/v2rayN/Resources/sysproxy.exe.gz new file mode 100644 index 0000000000000000000000000000000000000000..980d304b0cba3417b89e1f1ef9abbfbb7e3b05a5 GIT binary patch literal 56029 zcmV(zK<2+6iwFp~N8VTj0CRbBaB^>Wc`jvmWdQ74e|%Hb6@N)y(zH#RpskeO1&UTd zETp*BP}eFcby7^Nq*QFHQ@R+P!}1>BMl0QGXCKcf+jKv5lcAgY%{CoHC#J-;1r-oB z#ldE`v3a|&S)sN;YTv%+z9emt{rc>m{joycz3<+0&;51ox#ygF?yJ0cn_v+HLBvnj z1))^{pT_XLguXJGKFVSU!C1)TJh@an*w*P&t2E_sZTWB_Q~AaZ@cH7Pf58S zUz^(`-;;aiJ-N$nsLuW5r|ww0Fe4)^FODP2QM1nX$>O<*--&m7=hpIY|J-~YzC5=A zVImL$q+sl?t;HnxD6-Qe*sbSjVAv!SIDvM9Nm%z!=B9L`Y1|wd?aVX%WB7&A z+D#I|Gj@~FptNMW$505utqYs(xJ|lE5DM4E``(B!(=@Se{9nky@Rx(%HX;;+(ud%} z3!BzA-Hy23%KK~#+-J{&uW9Ywp8_EIj#BY9c6^o&b<+L<12jJm34+jGl=ApU6sA#cowRtANDu!wR* zW%$7%@5eWUM3{E@QGRRF65&NXn!a1`Fixl{VE%<8QlmH!iJ#0Ygzd3){>7} zqF>=<=f%s;-0edmYerS$>*;O&1(e`7`hfg9!o8iJxQ7c2A9N)7e9N+Ua6w!s6HwLhI?jby9DLtZAc~X0Wnc|(fKeN2G zhwyvkSknpjF-{4}8dIW)!qS#Z;_Y5sUG`WV&u^NM#7*EHC=s$~~ zm*mU_uH~*CAq}q-DRr0=u^dYxmWQU$sG^70$7lC;Udr^L^y^jc;6#cUJP*YTV#SZ6 z%Y)P7gS71|r^`KjkXE6JYJFY4zHYj{&IQI1c!db+F~B@e6$7xi!M2e?OK>-9E~5zn{pBAXlriBd(k^J0F}% zjj0ixHDTu@FN>4>?h{`}&-ONI1&y9X^32BeAt}32TW4L%AASk59CQRNJzhqH(BmDTA;;XYbyE!%MFi?>+X*;h znnAHWrJ^MfbC`{oc7t85aPg#^cqS^4XK6P$)Qah$O2!s|@IjKs>fdTMMi?1ArPDhe z!+bi%=Lh5YyT9@n_0u`4RQQkjD&L8IZoUIuGmmx69PiqrQ^t4gxM^b7tjVs4hXMN3A;%MO(B(s`te6Cf@2^fd{Wp0NOmnQqSl*4OnHLnuAcS5H;@! zC1!3a303yaKNzY`S1V71HtEh;%g~2%F|jqf#4Bu}X>fNudVb=-q?Ze3;!`S&_#1d4*G$(q(evBA)(?=)sP4yuo zcmP4*8KSjYlYpN?>=jQ2t?E;<`Bdaoe?7>=k2U)umLY4i(b61rBYJ%)Y8+sjkPsPXE z*@R?&337|r3nhFu`j(>GHOQ=gpKq%)L0L3tvdz!FoQ>Eq*~%6n5~QJcoY2+AJE3() zOK86}X#yy}%ExXhq}+(MmNB=1#IDPI%#6}on%@?H=uIRiN_+d*I~dIf3j=9?2hy-Z z(DuB5Z*34V@(~H7ib7b=E-<$2LIiaYz_p&tL#g0o_O-uoim(RFwXa^fW8m>JLCrWx z&um7|87Jtuq>r8@$MI}@Fx&nO3Nl9c+l-?;u>Oh%^A7Rg@>dW%_OMj|q~;ZN3_ebw zxFd!z+fJD~MzA`1tOIybyL+sIi1Ed46*wHNqt$nXg`O=U z-p$E(jjteeg*Arvu0FgA@%O+wqK)5^MDr)!b-sfteY1kOwex$SQ5@-YTPcZW;@z)R zEVcAHca>#@s&Xuc5V74gkZ(EVc^!PB(&71-qbW_h#%{UB;puI1D0}lgugiaNhwH%$ z_D0VzX9^9dY*`$R+_9ZhO#dF&6X>o_jEbH^lFJ>|_76CJk_niB#o_wMPE$QqtTfvN zIi=frIbcm}J}u!^JEsA0akwtR=9lr8G;H->KzePof2XM~V#rimN)|kUY$;`@slNj? zlG=k!z^aUz^#rLZv`SIGGmuNKEyk-Mh1QapS8oI3us1N8D7vn+wn5I{P_P|l%2}2+|TKk=q zH$y`&wvuiv*KJ>lptTb(+{_`b*qv^o?2a7Dz8bT#oATy&`Kp*7Q^}dZCCa8eVe{1G=T; zaz2{2EzJ%=z5pwUg)u@D=A_U9-Dw)5BMqZMqon+P766X)DluJ7VP{IfebSA=uDcp# zhL6@x3lATf>$UTugzGsp$w)q05ueB`W$hpaCnj*z{+bt8{<-w|J!Jjz^hg=)-BRlC zp&dlm(MA$y_3VmVT30c*m&RVtUWV626e%?#A@4~5EhV5z2*4xm%9Czv;k}-Na?0)- zfII4HKOj4_u8c{`1);0YmENoJbu|2%%GXZ=pF(%IG}1{X48$UV0(45xUIC<$02z+( zFp&WIqpSIL1hO*G7O_;oq<0oQ0Wh|B0E@3eRO}*lWcIcme>39^D2uHQRONgm9O*nk z8h>XWo?|?!+7B)@_$Px)X_fX@FLe)vIPVC&LOZ2TT~bQp{J53ZueLu3g-H!{(DTtY zdOp5|p3iQk=L?(gY<%$1CwUP13J)Hac+kF%2T$G2gC7PEJoa$=V+g>z)b>XZ2~p$; zM0$7&h;M17BSD|qzK!QT4eLS{8iE37OON;IY>;h__Xj2}UOl5{`*Ja{q1F2EF#yxD z;drJV!~Bg#h;W@ zuWe}H<56{rubz3!s2|G7ylVHcYg1>qfG?QFp8q2eje~mhW z%7mJaS3AF@onE7+s2fG~2D^KoTI0~X$F=4@@V3_Bng>%*G3wmBIGD29y>DW@$ttzFzTpV= zMc`Eqn&UVuTHQcH{ddVSDcx=KU+l3ii;GF$#m_F?M1f1HbnkPTAYz|XR}Bz1tsGGL zZ0>zZ%qA~}G{0~=6;^ufMsZTKc2LStBv-mX>CH8gt%+oJm?ns?@#EjY8hEQ1T^>zJkBI%V6>%-Hlfx}VL?bRU{4RR%_ z-X1DrvMTw9@tAyLtCRPO+koV6jpi#?2v|HRZ$sketWHMXn*!ub08h*HA7Lz~CK z0EO%;zvqe#Sl3i-38iQUf+phre;h%JUPsfRY|#Qf1o87uU@dNONOwn9Z>`j|v&z{~ zDNC!1^{)pk!no}zn%A~ZT7dWHG^NEcD$Nd1SJCI^Xtnr&sMtc=)yZo1Riy9=292c> zNq}l^5Zoldsr8Ofy{j54j@`xWi33#Nh;|)zJ=(X~??@^5BpzJOY%?Sq)@a02*xQIi z|GLveYmo1z7qDg|v4ePESGWfS`G)z*E82=Yhx6yl^6c6h+U7j5eV?;!DJJaBunB+4 znOx^XZ=rXsXSU$!d{Cq3bMuIPP3u!ne-9i()ZULEi3rQ&RDKG8M&~`@M(4V)U^(cV zl%n*wl(z@wA2d+3tOz~Hk8qL{Ark@7V(}Yy%$yNGuk+%NiaMvt4QTTXhb8%lXKi>Y~E(_&l zcBCv<`c1~0d}_E$q*S|#K8Q-cINTLOy;5$X2VbWr*wb=R>9H&Qb|YW@tARAWq{tq0 zQyx{6g`v(_b)&DUDiFRT$#V_M(Mu|3;0|?OoC_CdtL=bZ;GUwbb10*uk_R{nmG?&_ z(Q|6U!cgIc&@Df6Y3XW(L-~v-$gc!Ur2b!PXJ*XoZp8UZ7G9z|?|2w1pBvPP_XDjs zTqfGcluvMyTcgRZu)BL%`n#m91akCs4sKG*Vpr>2f2t!G>V|6O#@fg#UCOhwA91vz zwgQ=#>i169@6FNg&1b1bA==GW`D>~*h~e&I?!)dOx30gorh!EAzi97jUC_L$(KMdB z&wUuVe+Ic?z=Fb!fu{UYp^AOww}OCHlO%R`p8duuRGY=VI~vDt7f9fvy{zQ*xut?M z>kci0WP4h=TV6uMQ)X|nddkEN)?fw{DWI7EKYbj0sq1{e$Y~E_GgtwFmr{J}eau-c zbu17?``CLJ!5z7nz*5%ta_{QS zsR?!7g0~ty`)<-VGkDQ=a+JTBNN_+oy>iVpZ`1m%`gbJ{W0ZF9|T;a`BPQrs?Wcqq`bgaQNINAXN3;WG`yu8DB z)w9u5atjrK$A4mFT$yvi3G4eVTS zF7Nh*!0-)87*P4(-JEOd(pAdlyal>s^GJCMHe3#_tvPS0+mj8xz3gXp zST5s{23mT%sM#b@k1=j{_zsP~x85gG8!%f{4(&!qag|-RcA9uItDY|)Jv2QYp}n01 z&}&8YF2|}W-|E`B+BINa`k{zMW+`{Lwb@P*64X4{1RQ}F*#f5i1}%|65)c}$F>zC4 zDvj!=5wFF$#OcKd$yl(ZBu2u$v;C|51gv!T09V(cAn*;S*@5G;rP>UxkRMV0z-Mwl zpUH@pF$h>suaxb6(;fEteA@maFKaLB*~FanBLUwIbR$jCO>%nR7Q|Wg!g!^?IVo@} zaU~xf%y}s>+CYF3?x2Lxe9n1?$ZA8)GsX24b_v>q^T2223QO8;z){8arr$MS?4( z0oP?^0@d&c*G;9lIBva+pSzCdZJZm$hxhe*r8y?hq{fW3XPh8p^mAhzYBIR%4w@p6 zg(+wTZ~L8b;7PB<>JA#O1~5|0+<0On#!>u(1zc<;yw3LZ3k~Z{b1ufps4Iz$XWTsj zTV4MSOwRTZ;ypo2J#DR>q$ovgp6=!pt$PRM1aU~X`3l;sb_m-+4A(E@yN^;rZ-P8O zDEieU1jzj3pyo}4vSLfBkJPyJJ*8-Fd`AwI=la-cH(EeI+8bT(+tk8Ntw-tm=v}=9 zn)v9Jr;xnNomyi7L%b5b(8gXbj@MYLi8dvi>*M=6aY|*>As^M3@DAK@IXWLkiCG(Wg=RM)U~a`CRo<3M=R@K~kqnHvp6zdb`yY2fvs^wQw4NX8`(PK z^qvDk8T~&ZkV6TOr_KSPjDC$ka-DII&yInl5eQ{O@9Hdd@%*O7@p+UOy`i&jvXS?( z@p+UOb$7aQjJ$>Myo)K15~Gtlr-Dk7@I*3E3m6LN2L-`05LNd^d+=r=t_`W7@^3bJ zydxX4;t`bCXi-?M65huPk<^SG!`tJ{N+YRYsdHC~LC8vMlQdI_t(K-BKLz=A42& zqG#_0tMalKO?CcQ&aw<(14zN`vE;Vbtqz%Ql6)6F6w%oHn?aiC7FkRr~PhA^MFwAY+DNqHUem`FMCI<&89C&mucL>-y(lit7KU$d>y=eQg9sF?Mg6-_{Wdc&SpX8xEy3Eha z*vLaQqMCAJXd|pGE7UZtqQa+UvZAYSTB3i1)gjcJq{+2Xef3Y9BT+J;jb$v^->QgX5270GRN2LzfVtmbtQAJGJjOq$MJVp-I|zUL+vCwi-x z>rIGQ*wxXai!_t6Ni?-&R>gHeOCjdgk$8JrA1{?vK^#o0s?uKKA{(4Phj}gp#FIRh zrTvL37P+5+nDY6zk+k*%nOh)tuL1y<=rv5^=ZI@zicch@^$hNI#hyfwy$;CaC(sQP zDx^XQS;N5{Pj!CoIY^=~nn)*bOw$cXR@p6zWXZE}Nim|e3V3~u#hcCurnzJ&bOVKwN z`1{14n$o*u^VZiIm1fuNQVIp@W%Ex=?(kKwakY&^H$ygqYiW(PhgWXK2tZR3E!|PG zrKce-6jl>NXl1F!#|8Oj?F@Tkl+4)n3QJ6FDb!Zxx9_`OY(FLyxDRWQVcBurmc0e) z%6#qUmiLQWCT(eU(V5_AZ(g5x+k&gihqUs-4wt^NF#1cx<^x4hX@go`2$LPAEv~bi zx7u5&+EtDUR6VX{n-)pmD_up@&`7(CcKF>x#j>kqc6Fn3Pn`n>uq-Tq8d$9|!7@JzExp_$yEaD~*3>6x+kIFi zFI06>qgu9D>w<5sT4h(O9BP$It;$lXa@4BnYE`aUm8VwacT^RqRYe_DOV!VpqL=FD zm*JUIr!WHSJD3xGDyV+0LgZ4dY6DfP<#30}QOoTh1r=ui-sx(2meyTgw>Kx=a9y6R zy{pSPh5;+S4xgfR_-&s^>-|&nQDM0wS;!CYpL06+*lcv}+lY>729$XvTZ9a4m0h_Q znuQtd=vL+k^+~F1J-G=*#&k_iSvIYxhP{a+>5g`CvV@~nZ79@%7}n(<-$#Ni6nc^} z1RTb40Ib+h`-6!3v~q`DfU_g+-yP!FJ~k6YjUudrT-rh>sMG-SAbraVkKjcB-{Ms$ z+c^`i(Vu;c!0idqH133xb_?ro;s{=Dz4TiU+gSd#WH79DlDk7znZ8hO=;vAiZBSMK)cx)m(N>2PF@!NpeSfsI0G1iQT->>D<-j z{CP*tW#nPtjN;Uiw345<^%fzei-}~J=4FVxIQQ6m>#qyx{Igbm zmuJeztc64;Ta<1yFm25o*LI=9R=(BNk-4>ZtF0XEIh`O+zN|u(BQ;>aI3m+#DVGQs za^k28GyB*LS8^6lhwml~zfv?ua)KXu%3Vz1vYTZyG?d`Zu1|3hi10JG)qNXqppEAw@=KCh#`K&{VJ z>lbv?FO3!&eApU^oKI(G?;YWdUJjYFhStc={KK5z37}++;E)nhXpO>dma-L=BKe5|vu+4YYjN zdS_cBBAn_Ef$E*@^jh72C!R(118 zXNY;7P|n;YIf7*kjh=&&2w@HDD_GFbc0v}x-wUXay18x;B?*c!B%s>D3F%=|<5wEh zWpzVJ#H_XC&2K51e|BiEL%t|fp5v(@Uc%D2!h1q7NUsa5jM}z%5%Gz8ASj(R@V&%C=Tne zzj3E#=?LH5#yCKpkDWPl4hP5s2S_2dGhCau(==xAi=}Uz0tS1;TS`8e+-(dJxjBma zF3|xumm8l)UKqb$;z#j)@!#|D->WWlErN741@}lnYrKad)M538J<%N%6&+I8Lq9un6oc8WCtw~tB z>26Q(6ScwRM3`E6{>|uQF5y>Vw-FJSNvS>M`FyqJB9cLo$#OP9G{SA!+UVIUryzs) z5Q>LdN~@o*BicM@iTK!ir*$2y*Z~)*!-&q0K-knC;4*3$GHMT5*l9b3B#FMl?*GcxJ_ekQ>mGJXkznZqe(5FpX)2?aTC!d-B#!gd%>MyEK zicW^8PV*C=Tt1zvN5)NQ`Ds3-7)lJ?VvXxM9d#oe-VfUMVFV6B$n$9eYBmfc-mV2V1&4{)QJlX#WP8fgJ&5NLs>D}6&EyxUHk!hs~y!|hL?u4i5~vz z=;?-chBTRdA~(5vJu!>3O0$U%G)*6v(9$k%5Kzo{G+hJT|R zELB@_X|@}hQ{$8wouoA84s#u~xIDkbLS)#LzE>8J{FWi^D`)L;`i)iK9#5ar^{Aa< zmmfen+o*uBAoiKF(lH7tCqz)d?K>g6|<7#7MRKP z-eok}oo6xH#N+4FV+LpUE`^Em0fAEjUvh0TWT+U1NQbtThwa z%ufe6O@ixBZ$Cy0zVIm z6c)?&mU-1%&A>Us`SafAg)MZ6%&tKsZ)~4lA(^hZ2Ku6X^KaKQaJ9=WD8&M#x)U>! zLpfsx7od{N*rb&@x|jn)Vdo|mL7J&AB2{j7F|}_u-KM8SZifn>*!8Ftp)LUR1U-67 z%Thu1Yvo1l;g%b;`a(BZiR<0rMlhuDYY$xJzRUR9R*z0sM<${anK6W`zT4MheNF&GF}oF^O0G1(ODP0f<*&jp%=`a}L4E;QO?iq<25 z@{>h=CR!%6Ot|c+mE@o9iAjafdVSaqw3mJS1^`}_A{{d0)tAZHzTii-m)ZV!a*x^5 zJR%>~Dr3sk&{X(gQ)a^iySi&z1?kwwhdMc%Vo1btyJ03#lS+a#(JC)B8?18Q` zHnp-(>!#DnLj~%p1hlT`0#g;$Xl`m(Opo#0kEZ=WW%^Ha^r<3r2r z`Pg%qEm>JKv&PS^7PuOI6h#ttyEJ~w6nYuRxbB3XnXcmJ=&w#q6lAukeBjwWNHy_Y z2V+Sd7BMuhOShqgTHy;+^VVe-alN9!3rW8W~B&e%y2D$}ns6##F^_!htyF!&-9%4#je*?Wn35y~*A(7s0F=7wBK<#wUH(HS`hIrn zT!Ek0JKL_Mjq4(9KXmSz&}X;Nj2@CQv6_mDalG8+fH?e~_A+QUMZ3=qlUj;9+@C?3 zooeaWw3Jv@`@q z-OkVBo<^~0;|I@zl?7hB(qjHNs1;#eu3?Z+S=7keOw{f?Mj^N5eQU^Cr|uVz013i9a~#E!u(gJ42lV!3F! zgPEy1M}t}vU4(K}$Op4hNc@}+r!Myy7q6*h@cN9|Ot?0*y%QnY+ zes(k6)jL{SOAW!CMK9J?#UMZKExt;!!*8stxCr+RdejWUK&1PYnoT%hFLQvW0EeI5 zMKN+2s2{iXvXqn93+&htxEDGWkk*`|&N43ZwhzId_agXDs4^~s&?hL!Lp_zcJ7+a{ zc!{;`V^Mm zL1U;NmjP0C@Mg`TW=T_u>jor;0d3~cKxjC+%MNr2Id*qAo<}Ta2C~p}Sdeu~oC78e zpRKeZe6)#Zy`+XbGbxyCWuykhHg#AFLyb_L;6+92DCA>-@w&|E74MwAi?1c|`> zHOzgj!C_@9S`@v^&k6*7&CYngz_**AcjV#07Mkgc5;)4TrUAsyMpF@JbeNJ9g6c3D zM4E^EHO^fY?KBPQ6~U4yj?p^piS2j;Sc;IaiybR0Tn@WH4CRE`?9FoPcZId2`KW|t@g7l zFPIx^vhyy&Ke%|7{1bRot!aq(*)3Er33UVK@?m}g)gneGfid{wJa?77mhMCi%Te%N zevFWgPs}95+{6_wk2QaX;rlHRC#F7)W#z@Q{xmw46)F?8L-Su#_F8b_)b$s$r;AhL zUMU0TE#>N@&~>6`Kpx_UE&W$Op$+`mUn=aTQDR;lucjKj=F;nxI{udAQ&btHD5uL! z+<`f=Jq{pc*DCoX_4Ls@WY>EY^@N+N?Ur<@CJw%60 zLtSQA2TPUrb;%8WcO|~ogKx0BZ-!`};!4VMrA|YAn5_K%12Fu3W|bF?rYITfzKnj6 z19Js+VoV@}jvg}sOP6!Z|1C2v748Nszv)# zn|ddnn1`qkA$)=mW==qO>3D>n7S4}w_BjZbqR_v81plw#E|>_HGmdJzpuy28UJmqj zJDo4}Q-iXNOSqaxJEg4=l|RpNzmJdpK*0LVk%LEGZr9@n6gnc$@{a%wVlO1A?f`c| z-K*ff_ghW37F(qEG`EJUx2KLA&JeN@|EcgNfV z7?cA?UiOSS+n>Q`%s}E z;c17556?XWO2A}kf$nVjoKT7GVU^floj6qFd2Vdm(?zD6*RW*f{WAA){ zQqui+FB92L{(@G~EB0p`=#LkuxobJA=bCGRpM}U;FhY_nJiq6Bkks?XHaot1Me{YA zr`#^j`UjrPs!fHGRgOB7XS9Tx-;{Om3Sv}2|45>O0CBS2oN0BP(dq0Ct&4xEtVhhd zh2k4&*P(;MUmFm{CG=n}zkflb1l58kv6*QCo+IV-+)+W#n_;WVHbmiyYb5P;8@w-|~b)O5n-t6~Qn-@ieMG&^wFxdZx_t|w@GaHT0Nq5k|Jl^9lZD!D2FE|oO_Mzuw)>`o3$^Fo|3 zOq{UryWqcfUx*Ux2zVy3!7+6#ngSXe_mu)1GIQxC{z(Ywa!^tbo&CjkXb%&NTj4o= z_9rgD7?-0UGT{wPtRF{8%4pw4TDp_Vqgm`Xm{R&27-ow4j%c=j46Dl!dftp?u!m9; zK1pM=g!{b>?-H~FC%H#R1BoADW&)WnE<%}yhN5;fZU^G|IRuf_#O`f?0x=JLA@ zShndMX>1XJ&xsy%4@Hl#>T+(4w+Am`I}oiMvNF1tEzQPtf9tp7A0bNhLE{)qiNJ@>lk z`~Yv24jKirOXJLEaU&52eQe1N^@KE`KRb6p(oUV<#Y^InU0}zAOLiR=-k}`b`oxoo z8+NUubo{_C+0j=$W)P#mJ-acN{TwS{8RuCK9iNJiUBL707rF@or@>wjUQ+$ zpnF+(Aja>6iN@+N3UCt{U3ZH;dCqk=?G$)E82tgyuyiLHAz}&K4r=hoS<+M($7|yX z&J|oB%aTtTW!+)){L+b6;ONsj_ddt3z(sc(V9__@yW!q(cj4ZDz{79jjS0gwp{4Cl zQ_Gy7#dN4Bq=U`visJU?^mba}{_|WSykzVW;dw3xrqazoEJMib-4CRUT?{0GUej!}^UlR`EPop9De!^$O#nUhIPj_X8ahv2Gc|TJcY? z{s0IK)He}UEBn?z#ky$>>#1k{G1g~*5U3M35^Ze77*@x55pNzt{M9&O`*{!_C7g!} z61Nqz*y)k6q0Jt5TQP}y?7HGu4Ihcu;5bhWeL&8u;W4nh&nIg5Z;2>J;6(I`v3C6U zXaAUpV$_5IJa{aa!&1k!;{qV1c8pcYZ{z)yT;SrktACalMUJ(GFVz=`Q%sOgAg-ML zK91!gAJz~vHa%6w-I?(vjx#3cKhc}~fnT68e0nKHXLe0z#|=;X{#j7)jm<9k&t$sy zJxAEe9!LWZ#h3P0@21xWOpD_}Eqn5(Ntt%+R_N1D{aOz=FO|dmjc7tz%PPjDM6S)L!s`k(7cY0|1vR)%K%^7?~kVEC|!XAf|k$AC_h!|g~3BpJe{~!%-_SiRRE`%iSq;W8Y;W?Zq8uZb? z+&`IURNlS$Dbl6i(e?AO(PL?RS6rg)yv4!|lk?A^{jvE@eCM{F9olJB0nmiW8%5kp zP?PZ$CfAVz34S2&VUtLlN?4Ze)46~efr#;~$KxV~6(R;cx3_09zBlHF&}=jA{QD3$1h!rU=g^aREb^Q^lqr^uS#svMqK5`@mr{M8L9|o)_QtrS5m@u^jrL8 z7T^=28DFtLRHfRvqi(G>z?0Mh$PTPGm75oBodes*q!`YMuxArVCygXmB2D`{hJ-=76JgQ4Clat@ zm;aJ*pL`G4`J0lrQz(xVerd5(y?MO{soXLefWcp`W$TpwiS*(V1E~dYw*3$9}f&1UUoi-uOknw+u1e#LNP> zTucuLn=z_4?J`DHS$mvD_MV}{?E$(1Y1|9N83ayoVN#``9*`vMYPI<&3{x=svTlGU zE+#LJkN9HctVy0!!>&Wq_;}C8ct^>FAO|q7F@QL0*!*~|Y)SPV=if)nB)B5wKNLx@xP*E@(?6@n&r{r z`}k^Pn&G?p~hQEv*0hta}k3j9a#=$=|3kws-5_AdKYz-L(#dS$&f?xH#PA}dX##o>0 zdSnJ<4rKQenpOwN1Wt2eq7OY*bNolg?U22^!}=VVYE@@X4J1jRrX{Ji5)ZZla=kKT=>H1u880W01>!~&Iy8tayJ2hR~(ae&Xmv}mn>3ZmQ4y5eYS z#j$0fEF77w2-~__D~^^!Kt%Wf6i~X&Lc&4_Q^F3FB5>qzF;S#KTK8sE96{$*9MTN6 zP~$U!`2g&ini`Mj@TvNcWSEfvO@Rd_0{WmVy* zE(Ol`WH>XAei2hFKKjMvz_)$Dbi-dTT_KQ8niRsCs@y%#UsZr$P`4R6Uu zEQs3vM8wtkt8NjG)_T48raZh5iF8RqLNjj!_|J&;Onkg_<3a@|WJTnwQmh&Dd|qe~ zC3aGP&n(Tuzy~9>hChhUgiiFf+5A2kj^0+nl~`~lzati$#cz!TXYg;tf){XCELg@D z#)9*Cxfa}fJ?g@3cuT3zWuqw(ChigZ*31+!sB+grXedS3EaXQnCWVrP%j{-x3X?yF z1eu;3<&JEf7sp|Ga@HYKO%~Ec28gLA6+9_~k(+)Ne&hn=p;Z?Lhz^V;76Ai$_39gq z!aMO6!Z$*Pq23G!SB{|7LbF`a%P13Hi{#|Y)fM`OIP!7vaihf8^W{iKC!YWcPVst_ zBhG8JFrN&dkWbYnkgy$0Mx#5dp-~e<(t+EmD1oFZrwPU>L=s;u1qo(*kweL$h$z0q zdIs#A))Qxfzk7rZpnPOEiq7EM(HA6wOii5ov(qNtS(Ka@dK5IBs>9s$Dh-bT3=A5> zuf0n319cq{)HSS8*Z5e`3}HQE9Yd|=p^>@wmoEhYR{JA@@-^GRAo z8m@&Ro}-qZg|M*WoknK4bUM=nYYAwsWf!3ExOpxM^dCbs(g>Um$8hTCKZt0#%C%OE zBEK+hy@=K&F4m<1xh{F?0vPn2%c1aGN7H{v zq_yG%z=~DMZCqSKYcuV1Hg6I{gM+qJ(poi*B*e2S!eo||VpzPCh(-kZGC&^nf-**N zq5`2Q)-6jSh#d~RYsu>QO#QYebS_Y+^kR7N4$(hSO)2qlH8m@JZ;^YcQ+g{`_SPQJ zTdXTIMi{)kqC_UZRy$C{0tu5}bQanC%Ke;!zyD&)=yynj@{#pmTH4Z52(Y5E=SDDsLrwchO(9m;`;AE}I>CS*td#Ol(gy@PaB&)xu=`KA; z8e4A)T@uS-i&7q7u)syRZqsrh%NU-9bsj=jISx)8{~$H}m!S1DCpHOF&7-2dbK`B2 zU(196D%!(4mJZHka~PE(j4iNC+M6ZnY>tw$^O`fb3W_I1`auw#5T;9kT787y5}>vU z!?IP3Htz~BfBDZxb%Nbnb2-}E3iw$rXlCXAQFIcYN0813q^8D*K>tV#{mzxEL`NW3 z8gi{_HA+nOOU3sbYidfoJ(9w zuWBl{cUfB+fv*j!S66BtX15#cJ>GDC9m4D=PIcWyON%>)05?F$zuuZOI5muHy&u^- z8?XaX^KZ9BaRkYF?bRbVNFY5l%DQC4d%U=}_k?}F)pssHsQERlt9TC!K*(0y_3D7D zTg|>EWPSA$ui@2CUvDS3Kg#wZd$0GO!c$JRnq3vL5Hv&^5Is=b(|h98$l88V3&X^> z-uvg%Rbs0yUWq4liAp@8la;W#bN{zWckukTVCxxUi^jk9;44a6#kMDF`~^~_j>2D zQP$B6V}GkIE9fE}(ytL28N^*fn$|1`D79)2U8#=+C>@e$cxJ^Kx3PD=sc`F6NAKMTq)G zJ?X8J`@eyA_f1Z|;lbE)GiyZ=e4>wbH@$PHDR5h>rFE&1o$S97=_LBB0~IiJrd?Qx zf^7$p++6|SAf!1ldElrp?t={Pql0A1{*-YGB|W>=Y5=5*1bU0(B9)dQg% zc38ML3%4U6~n=e*%NVlxc7_dIqu0%@L7>wj68f{3}VQcwB zmq}ZI-6tI*++&xYBEG zEvO2848?PM1^49Bhf;5PQ^%F91)+@5K&vHW94(6iQtu;*`!tX}8&;ve*Q)zT~arMBYgLhch!?>qDqq9<946VM<7z8dv z0LDK1bVCQ(D2i!?ef7GzTR9qjy$N>{jE4ZawuXO|>2xNj;vYt1KnE=gi6*W$E5kR| z=iz+&Mx?m(b5dlA6q!hoo0I}28M4;Bd*~akovbRDFXZ0vez@6RTl!AD6nw=LMfqc?4Z42Ehlp`Bm{0` zHF8{m*<4zu@j|shk21%#RqDmy97viA5Nx*WB?v)d7&~`h1Eu?p;!a~l_Ue|o5Jp1} z`H&b#%Rx8SsEZ7+39R`_G4> zx=MpPGx^o1bDEUK0)san?g+eAw-Lvw5XHU+jr#=GT@j9pJNn6kVN903m1Bz&>t$QJ zlX_Tf96%@k;SYa64}kC`b@jILMr7=H^L5Ga5p=RiG@P2!uchhvC@#s<6 zyDp-7TE7;g_A7d+me48WTegzxk9>49x(h_@>ZZm5Y$9?00Tq9x=&e9q&{R;O!y7vu z>mbl1U;FxTZoO0VBuFG7(V13K88R4&5-pB>nu1U0M0`!|NAxSK|1e?iJda8QlNT83 zvj-bZYPJVbJb!j0rH|9=ii>LCp)Wo)SwJ{uP zp;eT|FwK@KkUoqib>;-DHlzTbTO2?W)wnR6+OAAAuMsz$A$L_N2wo&5Ua5&Bw`N)f6OVm)*X210Gy3b?eu z!3M5JX&C3u#v-v)lb;>_sg$j>9Q0T^^%s_3gKt~s&n0!sH@=F8zv3m~jL%=uzO_oc z?|@%Ee?`}|TOA_R;p-_D67=^BFu3wpaA~pSe0ibxeB>59NTYyGz5L$YstI~{JrL^q zy!Fwq&!haqVw=NLVa5l^`h|jP{`(N6?lB@U<$tw5%46sG!Tx9l`z#tiL46BTO zefWc$fdharFyt~IA?`;pp(V;kH{rAAa_FsiCY&bKrz1#p@hOol zC&iozO*~D8yNBu9wB<=ef$SX1ETixOq zF;1x$*aFQ2F;^7wnAp7be;`giT>LwbO1~IEdU3jQk&CZH1j3`9vt4{K!Z`K_jHdAg z2$E@Bd&#n8M$@w-gAW;4M_bu>vklgkdjV}W%rsi?bn!_@E5Kdg;?@|rA{RF%z(u+x zxIO|`D8LQQo6+Q{1d2o^%?=V|bE~wZ#+q>sxh4wVHNpDw{L2Ph4t}}NP832Z7@3CG zeLxKn8Vj;X7ublJz9^KyF@@y`Z_SUB#GTZjZj1iToW+#VUaK{y0lTJFOVnW9LRq~Q5AvyxlO-TA+4Tw58_&AZ5b_1}bzF(LXK`1u&4|KwASPnJz^jAm~Fa)Y{ zK1CwtTd$BVVAO2FsfxNNo9Q2KHxYZh^=<=r)C@gK2e{(ZbR92$zmKGLQ0aUW0hTUG z%2gNT!>r4{$mAb`=jE-$d^%ibVaB)iv-_^H)R$EBkc1%*@WpH!_>*-i)-ae9Ip6?q-dVm9;$ZI`9A+ zw)_;uQqS~S^;c8~OeyTgJ!3SzF(p_6{rh81?x%cIPrAOXizN2fJ{XNQqq-2)k$lH{ zCco_+G-C$Qmfs&D+QPq$Bpu{3^)QZ`<{tnA?AzI>IPUW|9)g@>-IP*kV(Gnv4`3+y zP4p(L!QI&_la#>6(a!$~kyB|edz79FLN77_`BH+Mu!rc9XL^`LMzStV=*a#1B&!oi zYQ=e|Z}5(9O7qnQ*jBSqX%&ju#3Yh~^Nlm~p83i;BaRH`@EKiFd^XkAUL5x16T!;F zpEu9p9tc?+I4?9h+=J0^T_{I`pe#gITRY@>m!ZKlyVNrgREkI)Ke3g>jKMLecN{62JmfMpuF1cm~^3tIkH@zly2eJdJ8 zVX4}jc~YA*TWWJo5VltQ{cukO;81s5brIMIy}@Y(^}I^!5tN8nb9kniGkweu@zcI1VxC+Ocxaek)d= zHE)Xb_aKP9Eo>MH?A5q=26oMFz-+p7jOXj_^M$7x_gs1m3UP9Tm}BTyj?2?% zWWHL_=KzmEkyq;l2N$xc)qOP-v0p@F)9HfMXQY=-ldZdSjQ26N0#_RKu?~Ork>Vhj z#2##e11Aj7jK7LhCaX0a8x2AIJC4A`b4al^91khfGHnMVxjc2n=L z@jw|i?XVZy&z5liiX(temYhcx^KW!X^{wof`P*7-dxg?O4@zCa?I%6gky1YC=37M} z;nYIHFkdUzvz^7&J&x!V_zX>h-eFw-wit)svBhjYxK%1Se->R_TmgyHRRXs64-hf< zOTaxx9Q^6MARTBM?jcS+7&p}Q-y4l48=dtZjInApkZJt~sSL+4^9gA;_D5{8-XEBzZb35~Cf_`jH3 zDugBoi%=2aIRo~69vETHNETs)Tfm`KnoJ~ujJwZ+ z4UVPsE|XBOs#m@&T+h2r{7{czc+&XOfWXqEk){~1)nu{Wo(uJ!(C*?d2ciZk`d|BA zEevl8=hgztS3qduIaY>p{b_3UR@L+XSS4g5wRXN-Al3;cJ7zI^`~*t0thO|Qb2#Hi zv9tb?-X!0vP$W$~=D!%};>Y~eyY#5x#Aa-*oYB<_QSmYxu|b`T)L4 z`<5Lg5N-$ympl{K{H+nbr?DvqO;)(l*p&4(a%uy zIPCSkxge&AFKEEeJ#>|{X0=`%eWsg<%G5<=Z~*-= z2)*#m`DQJ^tGWqq!tnu@{xVNBD)F%xpzT5D0dTVKq;mOF$Ar(Wehb}D82O|5h%C6 zRv!p0bN^cXDZR2?ON+Ndn-{Q*y+(u%BLp>0I#JCOkk#^{P@b}l;wP*fqngGvRZS>@ zlhIZ~$j~~GiL8L7fqo%QYH#qRD#7rL;AYSrJX1U2UHhq2{-u@t>MDD=NhpHV)?$DZ z8R+7;U9{POvlm(wFJj)2=Y^DPP1W(oSOkmY0DOt^ReEWRZ9ne)63_k{F|Ok&)o~X; zP8(k^=Td|uZe%s{>K#O0Mlg*qAjy9aUn^;T*M!Z=+nnbTN`&!$%xcRaN0R z*hE9w;Qig8nY0n~-e0K|gu2i;F!Lrz6;K42ERRo2<456Fn_Lkhdd@R6wY+29diSUN zpJGqkX+|7fbW4hRoOVnT)M!-fhWI+-^&%`sC_VguO7)ykx^^M>?X^{4idORxpok)K zcgsB!qLIxm4Bf4>`v1!DdMRZOHsrf@VZMpT8f$%nCL0_4$M zf}D2po#1q09axk+qtJiY#`0%SYk0@N5%Cx&pE!bCkn}!D(n(tstrrA`TKYhQ)G1m% z1pIQPy#!HnXu{RM-+YpPs>7EqyfvTf7vYzL6N(P(xZc1VrOEkwO+ld+(^f=D8Hb=D z@B;<*;O!q^T&*;Lcwl4vGEJ0ur7QTFnx@8&kn#=BxZ;dTOSm+a-0135Jd9fV)Wl-fe7_3qDsOMXz3iH zd7dmMpMrMie@Z7k%s!EdUK!8>ZZ}sPE+J=4O%^N;@YjTbS(oRswsH^-PqB5&8AMvn zY(62>O7hyiKY&)V%pX7DD(jYVy}f76KR{%fN_E~nP|ASTss$jFsHuKyEvgQ&1C3Yy z!Eh4F423PqcBiTLj{wxFI%ZH88?Z@HuQt%l^dCFfR6K858xdFP+6If1!V zx(dqUPxQw2Bk%W!JIHJ0F^DH0ruy|(Cu;kR2C@Dl*X6>_1ogi!u4u$>763xoNZydg zSM(@`?Zw z0FgbZ3eg>%VZTU)<0v0-%8wM{rF2EMrx;Mq<==l<=vdY9S@AMK30-`0ryyz_lBmH! z;t`}e4}6=R&p_2`A0;q6B9)&?zeI1IPNtRQJxe5vc2Yu$ifKv35_o>WU>+VU?&=+` zallfX59q0C5vtl9Ri%?X^P@BG;SVAc2zP`Wvy3H)$w|NIzR-F$|2`7}<)wx9d5^nI zHBSC?1__$O{9B@wToyzLOG6Iiv-&O(cUaR7wTf8byC>tlc^H3lt;$$D1c2K$05c>2 z@;NmKYK5}dNfeCI{MVsSU@zLv+H#P-cBO8=ghvtswu%mv#to>v=Dni=AV?$)t7PbQ zNUn7b8lYUwUIcIIqflsyYHnHr#MFml8a5mEAo(s$!v-fIJJ25e6KXr!4G7c0noISvp1YAXMOusO7@FO5Lk*+-||=rR=TZx0y9j8!|N?h*d`~ zs$)YIzsZix9ydyjDrL5vOnRvV^1mw!Z8gSQsx3Cj)uVE)6%``su-7_%hE`PT8Yf@Od{b4c?Y7c#Qx%;z$h-N z5bN)X4)GQ`7P}-1D@BrcQ7#U!wy>Ko_?hH=uMqfE=Gx6ATFi7AlW#ZA)MD~vOo81z zON-IVm_oaGwifg8b`eu#HQh zdM##yjG1pY->AhXGN#IIUaiI4E@Kwj&9`VVt0-n=s&I7~={go^3BD||nBcZWi@89? zSm5JDiq=I6;RX|T6Ng1XokAje_?)K*J6Z6md+!=KcJ%+(H*t(I{`*)$yb2`5u04DAR<3h}hlYTN|r_21xAYb-Z z;NaheGx{PIQsqOPk1mohy{gyI{!nQ05z!@9=jVvRx}{!gu^*V!?hAOX5kV4?ATUSV z@G(KY^WV8Ki3TvBt`DZ|-VJU}`{3YH+lj6Sk{3*S^G%ZLS#WkVgov57*n|D@9zi3B z6iS^S(w;1gdo;?$5t##DvZd7pi#Ua-VOdk-fH>vnG4BmU;>8L6rfSB@<~t){Qtr-R zXZZHg2ZM5_z^!H^_8!P3dHeq8=7(t1EuvL8e!LEYdl!gMo1S!}(q)Ge=!7dIu_+%0FfcBOvpb-FWMv%OJZxQwT8TF4lZK?VzntG%$ zf7guW^|Fz^M5kMxd@9cB;D6Z$5H{Y42av&W|9Ujsc(z~!X|j=qdg^g}6yG{bN{}QB z0O;N9_eJ21BEhp4I)`lD(Nd~9u+AI*gZ%j7FQ?t zp*fxWGJ(*_(*p+k6$4zA3Rn)bhH$hhF_1^#nFkv48aRxV| zMQDF!!XVQ2XXm4&gwDJREjn8^z-4R}OxnoH!i7%o*ALM613mlL#rFfKvK|{%@4L-W zVG;3n7ypF5hk9-8Np9?P_{Bj3@}#(%jNAq*e*}C-%;iPsD&mk`zJp+?`IECz0~Uc+ zR2056a-mAQXLj6$;yC+g!x_axs>$x8t-F(85y|6LzMwaczNFpvuS`dXj!{2j z|4UpI?p*fL;FyIU*HxVp_>r@Qe7>j2rAiBu47y(N-7mER_uz2644c2Boog93{ zbBc{~J4q4UPoLh#8AcJ(7cjj}B1N9zDGcF-WhB1#zvVk<%X?z&{3TpLacboZ%1b0pA~b#doh z)w$72_^)65BGOunjg<96c=o=K1f6*b&md`MT9UMLD;17Mmwfcd#|}I+2sh`H!NUhi z%Qkk|10E~3m!%GqCj;VKsP_&4M%>R5gmy;0LTG8EbQVG5+cx6^UZ^0xS$mtk zmCb*O7ckbFAxXhzy~BOM>ebYYH+-G$67{e6>sc#yKc#Q2eh+leZCPa>T3_I~40@te zpR+|x&!vCw!ce|4n&p|Oj9PInIhuc$T^Sv}{&L83vQm0e~0>vKOWlg%U{ONAu{dW7SAUEPq ztaeU#-RGHN-|rc3f8CR1-{;NC(Opm1;pOPc@Ib~Q$jecZan;nFE0;G9BdGTj zh^GM=c6!gq(E*bc9ZDD0>6|hO$LHspjUxx&RpyXI1FQfP4QxQG%n+(ABb?YBjM4+pw9BRjGxBhX-0A3ORmI(me z06-4_pa%fZLjrg$YbOh=3eBkl;iER3>$wzdLwT2?-H@)!f@Y+r2@On7Tys)HPrYnS z!Z=wo@)rjhBdAZr*8Rm$NNer}2=tltx$uj${;~bkd!h@@f%ML#12==G1CtRI~k%nI9&T3dcA zL=JPwewNI|4%|9|DvXFO8I)C6DXOpsRiFo|Ko3-b9~ zu%AMT^kwmR6Q4&0dgfw&(X&Vr9WkYxtoLO?P8<3AJyWIJS|dRFi2!9w0%XBMQZv?z z;e%YBY$Qf%Z(0^~=d*wgAR~cB;8K*9ZP6Fsi}}ZlfNKN|UxN3a7jI_}QQ}r5sG+c# ze~CDV#^WZ};yueDjk*Lf;`$uO{?^h};uzvMaHdpuKod+)TU%c4Lalm_Kn;9@^%z3)3wp%@iPXQsc5pm;QD zszLRaNKQsVP7*Ji>HxFAC8Cyq&)UZ zTn|)Z4h{Wj+$<^~^!xWjKg*7Oa(gN}YV7+W?CAUyTYaZ?wM7npU~632?pi1XUZE)k zLhps`2l}YSsWr$?*sx=>E10xU9(TmyaQ}0n<&zB)W~Jze#Z(k)p>OEaZpomN7=I)5 zvi{2E7ZiY@gB^hpT2kOsB4`%i3!cSa0j?o_y#Yrcujc@&=6`vfTD|r@1p>>P(1zi)7{roD=G<)M4RwW=L ze>k$kY0yvQ@dA{Dtu1>IzaUiL*1Lqg@%NHGJ*OkJHnjrsa<^Id_}~j52=jIc!%gA@ zNf!1)0<420j~WM(qGS4^;~tU{s@owSEw1Q6ed(Uk-K7g$>s|B>mv0IrqXx;k+` z${_*ya7xBmO5-7Y{gu&5OSIBN=->SjhDzu>w&bsE=`36HTI>7?7ik^Xw6Nep6Hs8tQe;ZDcGCZjH8^xtfFa#3(=gZi+>}}#xfHXB&M0O;H^-oy%=C_P z=Pa+~hhp)$C=0mB8)oWvC5jbd_0-|$@Xr4ucZO^yVm)7K1zI zYjyrJ(aofVT5$q_cvX8pQ&r`IQ5om@qP6}0X=}UvhUD57P;Gzm)qhi4r>raXuT)vm z83z4i!*KkDQmEbm|709S`voF6FvqE$Lc0$3EJdh32Tu1O|H1uaR#Xrsg5C^K?_8xF z^|s(&g}drNJ)G&UUIJRJs#J*@Ri%u@f!>IN1st`jNl`%31zNs*9BEMhg`fHoES}^h@oIBa67>=vz+i z5PEN~Mg5K9jw3Av90ZBw1B>+ZcriR(mK@Sd(VcvOPE+AU?v(3}f*@*G0~!xI`Bf zV15fQ`)dFYE7lEJ=w-sU+y4ZUl);pW&-}Kz6Vn>cbo(f z3nbnj8NvHgiT52SH1r6YuP?B5*FcvV>?=;$$)XNvT#nd4^=4=zu;Pg7J)$=DJ@(jR za72X-v- zt&U0j%|B7*LdyIKg3_)aWGt>Yv^;hj!mn1*u>Xv!m7lLiG&b;Csx3^oN|{bfz~`#{ z)zqYF;}t+seOEr6HSsGiz?x<6T&CWpCzo%m5jN;_QU%W4L^M>!BwS|rjgGO;yrhRnqp^ZYN zi9TN_K8y3R4hy8M2Pv{ZFFL%I&~fWEEC_`t&9cUbc8u<-l{1nT!;hD|E$b~L7^=t> z8^l?xqKGn~Xq`Q5{lRuTF(hhg95{H3=l%F`Ew67Q(Uf26sFIf_DtXOkD>*@{mz_ezJu z=^|52(BPP+4UE>tA0}O*!CIa}0oJMBbR>QfxNL;&YdYcEb>( zli_v-??pP;q3jk~Po9@+)vxJU2PsH*8cL9OeA^Td661o9;m;+l1!Y(Jy4U{`Nji0a zbjR4HxtFcW2^l+eB~?wcND$$Bgr+Q>j@7%7s)mOT z2yzH5{=J%A0s8xDWT9k&9Z|n$3W}^c{6sES&`4qa4D!OsMdy&W4EUlAm3|MIXH=FE*FN*l>W$MdCTnc%S!phu3S5muOWM^n zBVex}Od2-!(7lVjh>R$=9@dM?_xikh&?;`7#4(N?aBVOFw-}yS34tNxQB=VtBS5gr z|7HI?@ad6B-9rafmdCKPcdlK)_N!I;V(hQF*dF__b(gY0W$|`GZ}#`ege2Xb=FPcU z`Pc-bRr}7ykKuUK3+@Smiuw1L?DLtaL4Os7X4c9?r?AE@+RM${%I0q!foh<2TPN&@ zJsHnWq0`;2koox{1h&$jzxs{h0EFE*s63DEJgnZak7GNx@1{fh-p>jnml8Fsv7$tL zVe?;(?Bf{~hirqvimg;xD5k*ug0+>dHb+mZ*+0a(qnfT%uSKyDHM`kg{R}SFT5D$I z7Mc-73q7MN3{N6sgh#NR@aFr`w zf@QY2^6F%C&G{m^(xF#+qK;bLSOq~+B<~n>ux#zfhD;(or!0eO9rb1<8eMy}qZU%? zp{#0A*ddGzJ|7wF`|HnJYlbS-nzKoDp(Bc{0BdaA?Z@kqJ{^E~GXY@DD@pW z0DiwtxixIM2Gd08H&yu?w_=1~7|?RM*XsWW6Nc6VTyt_2+io{D6k_nJ*$fh}Ux?YN zr+-|2Qf4>SAM@uyer9D^%4`O80VNRiXL*mZ{Vb?a42@ddn324>0NpB3)my-Ak)?XR ze_IoR{$IA>pNGIEq1wQCPs}^c<_o{EqM= z6Y%CU9|2pP?Z#oy^(I~azOlkHB20z1O8>q⩔dTauZbqj2!fgkwyd_j0M_af$t)K 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

S@~IR^T3Q+L}HNuE$+1a!ecDgSa0Qn-cgP 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 literal 0 HcmV?d00001 diff --git a/v2rayN/v2rayN/Resources/sysproxy64.exe.gz b/v2rayN/v2rayN/Resources/sysproxy64.exe.gz new file mode 100644 index 0000000000000000000000000000000000000000..c5ff36af391832b09710ea138375632cc984dd32 GIT binary patch literal 61784 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 literal 0 HcmV?d00001 diff --git a/v2rayN/v2rayN/Resx/ResUI.Designer.cs b/v2rayN/v2rayN/Resx/ResUI.Designer.cs new file mode 100644 index 00000000..c580c02b --- /dev/null +++ b/v2rayN/v2rayN/Resx/ResUI.Designer.cs @@ -0,0 +1,667 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +namespace v2rayN.Resx { + using System; + + + /// + /// 一个强类型的资源类,用于查找本地化的字符串等。 + /// + // 此类是由 StronglyTypedResourceBuilder + // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 + // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen + // (以 /str 作为命令选项),或重新生成 VS 项目。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class ResUI { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal ResUI() { + } + + /// + /// 返回此类使用的缓存的 ResourceManager 实例。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("v2rayN.Resx.ResUI", typeof(ResUI).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 使用此强类型资源类,为所有资源查找 + /// 重写当前线程的 CurrentUICulture 属性。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// 查找类似 Batch export subscription to clipboard successfully 的本地化字符串。 + /// + internal static string BatchExportSubscriptionSuccessfully { + get { + return ResourceManager.GetString("BatchExportSubscriptionSuccessfully", resourceCulture); + } + } + + /// + /// 查找类似 Batch export share URL to clipboard successfully 的本地化字符串。 + /// + internal static string BatchExportURLSuccessfully { + get { + return ResourceManager.GetString("BatchExportURLSuccessfully", resourceCulture); + } + } + + /// + /// 查找类似 Please check the server settings first 的本地化字符串。 + /// + internal static string CheckServerSettings { + get { + return ResourceManager.GetString("CheckServerSettings", resourceCulture); + } + } + + /// + /// 查找类似 configuration format is incorrect 的本地化字符串。 + /// + internal static string ConfigurationFormatIncorrect { + get { + return ResourceManager.GetString("ConfigurationFormatIncorrect", resourceCulture); + } + } + + /// + /// 查找类似 Note that custom configuration relies entirely on your own configuration and does not work with all settings. The system agent is available when the socks port is equal to the port in the settings in the custom configuration inbound. 的本地化字符串。 + /// + internal static string CustomServerTips { + get { + return ResourceManager.GetString("CustomServerTips", resourceCulture); + } + } + + /// + /// 查找类似 Whether to download? {0} 的本地化字符串。 + /// + internal static string DownloadYesNo { + get { + return ResourceManager.GetString("DownloadYesNo", resourceCulture); + } + } + + /// + /// 查找类似 Failed to convert configuration file 的本地化字符串。 + /// + internal static string FailedConversionConfiguration { + get { + return ResourceManager.GetString("FailedConversionConfiguration", resourceCulture); + } + } + + /// + /// 查找类似 Failed to generate default configuration file 的本地化字符串。 + /// + internal static string FailedGenDefaultConfiguration { + get { + return ResourceManager.GetString("FailedGenDefaultConfiguration", resourceCulture); + } + } + + /// + /// 查找类似 Failed to get the default configuration 的本地化字符串。 + /// + internal static string FailedGetDefaultConfiguration { + get { + return ResourceManager.GetString("FailedGetDefaultConfiguration", resourceCulture); + } + } + + /// + /// 查找类似 Failed to import custom configuration server 的本地化字符串。 + /// + internal static string FailedImportedCustomServer { + get { + return ResourceManager.GetString("FailedImportedCustomServer", resourceCulture); + } + } + + /// + /// 查找类似 Failed to read configuration file 的本地化字符串。 + /// + internal static string FailedReadConfiguration { + get { + return ResourceManager.GetString("FailedReadConfiguration", resourceCulture); + } + } + + /// + /// 查找类似 Please fill in the correct format extra ID 的本地化字符串。 + /// + internal static string FillCorrectAlterId { + get { + return ResourceManager.GetString("FillCorrectAlterId", resourceCulture); + } + } + + /// + /// 查找类似 Please fill in the correct format server port 的本地化字符串。 + /// + internal static string FillCorrectServerPort { + get { + return ResourceManager.GetString("FillCorrectServerPort", resourceCulture); + } + } + + /// + /// 查找类似 Please fill in the KCP parameters correctly 的本地化字符串。 + /// + internal static string FillKcpParameters { + get { + return ResourceManager.GetString("FillKcpParameters", resourceCulture); + } + } + + /// + /// 查找类似 Please fill in the local listening port 的本地化字符串。 + /// + internal static string FillLocalListeningPort { + get { + return ResourceManager.GetString("FillLocalListeningPort", resourceCulture); + } + } + + /// + /// 查找类似 Please fill in the password 的本地化字符串。 + /// + internal static string FillPassword { + get { + return ResourceManager.GetString("FillPassword", resourceCulture); + } + } + + /// + /// 查找类似 Please fill in the server address 的本地化字符串。 + /// + internal static string FillServerAddress { + get { + return ResourceManager.GetString("FillServerAddress", resourceCulture); + } + } + + /// + /// 查找类似 Please fill in the user ID 的本地化字符串。 + /// + internal static string FillUUID { + get { + return ResourceManager.GetString("FillUUID", resourceCulture); + } + } + + /// + /// 查找类似 is not the correct client configuration file, please check 的本地化字符串。 + /// + internal static string IncorrectClientConfiguration { + get { + return ResourceManager.GetString("IncorrectClientConfiguration", resourceCulture); + } + } + + /// + /// 查找类似 is not the correct configuration, please check 的本地化字符串。 + /// + internal static string Incorrectconfiguration { + get { + return ResourceManager.GetString("Incorrectconfiguration", resourceCulture); + } + } + + /// + /// 查找类似 is not the correct server configuration file, please check 的本地化字符串。 + /// + internal static string IncorrectServerConfiguration { + get { + return ResourceManager.GetString("IncorrectServerConfiguration", resourceCulture); + } + } + + /// + /// 查找类似 Initial Configuration 的本地化字符串。 + /// + internal static string InitialConfiguration { + get { + return ResourceManager.GetString("InitialConfiguration", resourceCulture); + } + } + + /// + /// 查找类似 Address 的本地化字符串。 + /// + internal static string LvAddress { + get { + return ResourceManager.GetString("LvAddress", resourceCulture); + } + } + + /// + /// 查找类似 Alias 的本地化字符串。 + /// + internal static string LvAlias { + get { + return ResourceManager.GetString("LvAlias", resourceCulture); + } + } + + /// + /// 查找类似 Security 的本地化字符串。 + /// + internal static string LvEncryptionMethod { + get { + return ResourceManager.GetString("LvEncryptionMethod", resourceCulture); + } + } + + /// + /// 查找类似 Port 的本地化字符串。 + /// + internal static string LvPort { + get { + return ResourceManager.GetString("LvPort", resourceCulture); + } + } + + /// + /// 查找类似 Type 的本地化字符串。 + /// + internal static string LvServiceType { + get { + return ResourceManager.GetString("LvServiceType", resourceCulture); + } + } + + /// + /// 查找类似 Subs 的本地化字符串。 + /// + internal static string LvSubscription { + get { + return ResourceManager.GetString("LvSubscription", resourceCulture); + } + } + + /// + /// 查找类似 Test Results 的本地化字符串。 + /// + internal static string LvTestResults { + get { + return ResourceManager.GetString("LvTestResults", resourceCulture); + } + } + + /// + /// 查找类似 Transport 的本地化字符串。 + /// + internal static string LvTransportProtocol { + get { + return ResourceManager.GetString("LvTransportProtocol", resourceCulture); + } + } + + /// + /// 查找类似 Clear original subscription content 的本地化字符串。 + /// + internal static string MsgClearSubscription { + get { + return ResourceManager.GetString("MsgClearSubscription", resourceCulture); + } + } + + /// + /// 查找类似 Download V2rayCore successfully 的本地化字符串。 + /// + internal static string MsgDownloadV2rayCoreSuccessfully { + get { + return ResourceManager.GetString("MsgDownloadV2rayCoreSuccessfully", resourceCulture); + } + } + + /// + /// 查找类似 Failed to import subscription content 的本地化字符串。 + /// + internal static string MsgFailedImportSubscription { + get { + return ResourceManager.GetString("MsgFailedImportSubscription", resourceCulture); + } + } + + /// + /// 查找类似 Get the subscription content successfully 的本地化字符串。 + /// + internal static string MsgGetSubscriptionSuccessfully { + get { + return ResourceManager.GetString("MsgGetSubscriptionSuccessfully", resourceCulture); + } + } + + /// + /// 查找类似 No valid subscriptions set 的本地化字符串。 + /// + internal static string MsgNoValidSubscription { + get { + return ResourceManager.GetString("MsgNoValidSubscription", resourceCulture); + } + } + + /// + /// 查找类似 PAC update failed 的本地化字符串。 + /// + internal static string MsgPACUpdateFailed { + get { + return ResourceManager.GetString("MsgPACUpdateFailed", resourceCulture); + } + } + + /// + /// 查找类似 PAC update succeeded 的本地化字符串。 + /// + internal static string MsgPACUpdateSuccessfully { + get { + return ResourceManager.GetString("MsgPACUpdateSuccessfully", resourceCulture); + } + } + + /// + /// 查找类似 Resolve V2rayCore successfully 的本地化字符串。 + /// + internal static string MsgParsingV2rayCoreSuccessfully { + get { + return ResourceManager.GetString("MsgParsingV2rayCoreSuccessfully", resourceCulture); + } + } + + /// + /// 查找类似 Simplify PAC Success 的本地化字符串。 + /// + internal static string MsgSimplifyPAC { + get { + return ResourceManager.GetString("MsgSimplifyPAC", resourceCulture); + } + } + + /// + /// 查找类似 Start getting subscriptions 的本地化字符串。 + /// + internal static string MsgStartGettingSubscriptions { + get { + return ResourceManager.GetString("MsgStartGettingSubscriptions", resourceCulture); + } + } + + /// + /// 查找类似 Start updating PAC... 的本地化字符串。 + /// + internal static string MsgStartUpdatingPAC { + get { + return ResourceManager.GetString("MsgStartUpdatingPAC", resourceCulture); + } + } + + /// + /// 查找类似 Start updating V2rayCore... 的本地化字符串。 + /// + internal static string MsgStartUpdatingV2rayCore { + get { + return ResourceManager.GetString("MsgStartUpdatingV2rayCore", resourceCulture); + } + } + + /// + /// 查找类似 Subscription content decoding failed (non-BASE64 code) 的本地化字符串。 + /// + internal static string MsgSubscriptionDecodingFailed { + get { + return ResourceManager.GetString("MsgSubscriptionDecodingFailed", resourceCulture); + } + } + + /// + /// 查找类似 is unpacking... 的本地化字符串。 + /// + internal static string MsgUnpacking { + get { + return ResourceManager.GetString("MsgUnpacking", resourceCulture); + } + } + + /// + /// 查找类似 Update subscription end 的本地化字符串。 + /// + internal static string MsgUpdateSubscriptionEnd { + get { + return ResourceManager.GetString("MsgUpdateSubscriptionEnd", resourceCulture); + } + } + + /// + /// 查找类似 Update subscription starts 的本地化字符串。 + /// + internal static string MsgUpdateSubscriptionStart { + get { + return ResourceManager.GetString("MsgUpdateSubscriptionStart", resourceCulture); + } + } + + /// + /// 查找类似 Update V2rayCore successfully 的本地化字符串。 + /// + internal static string MsgUpdateV2rayCoreSuccessfully { + get { + return ResourceManager.GetString("MsgUpdateV2rayCoreSuccessfully", resourceCulture); + } + } + + /// + /// 查找类似 Update V2rayCore successfully! Restarting service... 的本地化字符串。 + /// + internal static string MsgUpdateV2rayCoreSuccessfullyMore { + get { + return ResourceManager.GetString("MsgUpdateV2rayCoreSuccessfullyMore", resourceCulture); + } + } + + /// + /// 查找类似 This feature relies on the Http global proxy, please set it correctly first. 的本地化字符串。 + /// + internal static string NeedHttpGlobalProxy { + get { + return ResourceManager.GetString("NeedHttpGlobalProxy", resourceCulture); + } + } + + /// + /// 查找类似 Non-vmess or ss protocol 的本地化字符串。 + /// + internal static string NonvmessOrssProtocol { + get { + return ResourceManager.GetString("NonvmessOrssProtocol", resourceCulture); + } + } + + /// + /// 查找类似 non-Vmess service, this feature is invalid 的本地化字符串。 + /// + internal static string NonVmessService { + get { + return ResourceManager.GetString("NonVmessService", resourceCulture); + } + } + + /// + /// 查找类似 V2ray-core not found, download address: {0} 的本地化字符串。 + /// + internal static string NotFoundCore { + get { + return ResourceManager.GetString("NotFoundCore", resourceCulture); + } + } + + /// + /// 查找类似 Scan completed, no valid QR code found 的本地化字符串。 + /// + internal static string NoValidQRcodeFound { + get { + return ResourceManager.GetString("NoValidQRcodeFound", resourceCulture); + } + } + + /// + /// 查找类似 operation failed, please check retry 的本地化字符串。 + /// + internal static string OperationFailed { + get { + return ResourceManager.GetString("OperationFailed", resourceCulture); + } + } + + /// + /// 查找类似 Please Fill Remarks 的本地化字符串。 + /// + internal static string PleaseFillRemarks { + get { + return ResourceManager.GetString("PleaseFillRemarks", resourceCulture); + } + } + + /// + /// 查找类似 Please select the encryption method 的本地化字符串。 + /// + internal static string PleaseSelectEncryption { + get { + return ResourceManager.GetString("PleaseSelectEncryption", resourceCulture); + } + } + + /// + /// 查找类似 Please select an agreement 的本地化字符串。 + /// + internal static string PleaseSelectProtocol { + get { + return ResourceManager.GetString("PleaseSelectProtocol", resourceCulture); + } + } + + /// + /// 查找类似 Please select the server first 的本地化字符串。 + /// + internal static string PleaseSelectServer { + get { + return ResourceManager.GetString("PleaseSelectServer", resourceCulture); + } + } + + /// + /// 查找类似 Are you sure to remove the server? 的本地化字符串。 + /// + internal static string RemoveServer { + get { + return ResourceManager.GetString("RemoveServer", resourceCulture); + } + } + + /// + /// 查找类似 The client configuration file is saved at: {0} 的本地化字符串。 + /// + internal static string SaveClientConfigurationIn { + get { + return ResourceManager.GetString("SaveClientConfigurationIn", resourceCulture); + } + } + + /// + /// 查找类似 The server configuration file is saved at: {0} 的本地化字符串。 + /// + internal static string SaveServerConfigurationIn { + get { + return ResourceManager.GetString("SaveServerConfigurationIn", resourceCulture); + } + } + + /// + /// 查找类似 Note: After this function relies on the Http global proxy test, please manually adjust the Http global proxy and active node! 的本地化字符串。 + /// + internal static string SpeedServerTips { + get { + return ResourceManager.GetString("SpeedServerTips", resourceCulture); + } + } + + /// + /// 查找类似 Start service ({0})...... 的本地化字符串。 + /// + internal static string StartService { + get { + return ResourceManager.GetString("StartService", resourceCulture); + } + } + + /// + /// 查找类似 Successful configuration + ///{0} 的本地化字符串。 + /// + internal static string SuccessfulConfiguration { + get { + return ResourceManager.GetString("SuccessfulConfiguration", resourceCulture); + } + } + + /// + /// 查找类似 Successfully imported custom configuration server 的本地化字符串。 + /// + internal static string SuccessfullyImportedCustomServer { + get { + return ResourceManager.GetString("SuccessfullyImportedCustomServer", resourceCulture); + } + } + + /// + /// 查找类似 Imported bulk URL from clipboard successfully 的本地化字符串。 + /// + internal static string SuccessfullyImportedServerViaClipboard { + get { + return ResourceManager.GetString("SuccessfullyImportedServerViaClipboard", resourceCulture); + } + } + + /// + /// 查找类似 Scan import URL successfully 的本地化字符串。 + /// + internal static string SuccessfullyImportedServerViaScan { + get { + return ResourceManager.GetString("SuccessfullyImportedServerViaScan", resourceCulture); + } + } + } +} diff --git a/v2rayN/v2rayN/Resx/ResUI.resx b/v2rayN/v2rayN/Resx/ResUI.resx new file mode 100644 index 00000000..b46bc376 --- /dev/null +++ b/v2rayN/v2rayN/Resx/ResUI.resx @@ -0,0 +1,322 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Batch export subscription to clipboard successfully + + + Batch export share URL to clipboard successfully + + + Failed to import custom configuration server + + + Please fill in the correct format extra ID + + + Please fill in the correct format server port + + + Please fill in the KCP parameters correctly + + + Please fill in the local listening port + + + Please fill in the password + + + Please fill in the server address + + + Please fill in the user ID + + + This feature relies on the Http global proxy, please set it correctly first. + + + non-Vmess service, this feature is invalid + + + Scan completed, no valid QR code found + + + operation failed, please check retry + + + Please Fill Remarks + + + Please select the encryption method + + + Please select an agreement + + + Please select the server first + + + Successfully imported custom configuration server + + + Imported bulk URL from clipboard successfully + + + Note that custom configuration relies entirely on your own configuration and does not work with all settings. The system agent is available when the socks port is equal to the port in the settings in the custom configuration inbound. + + + The client configuration file is saved at: {0} + + + The server configuration file is saved at: {0} + + + Note: After this function relies on the Http global proxy test, please manually adjust the Http global proxy and active node! + + + Scan import URL successfully + + + Whether to download? {0} + + + Are you sure to remove the server? + + + Please check the server settings first + + + configuration format is incorrect + + + Failed to convert configuration file + + + Failed to generate default configuration file + + + Failed to get the default configuration + + + Failed to read configuration file + + + is not the correct client configuration file, please check + + + is not the correct configuration, please check + + + is not the correct server configuration file, please check + + + Initial Configuration + + + Non-vmess or ss protocol + + + Successful configuration +{0} + + + V2ray-core not found, download address: {0} + + + Start service ({0})...... + + + Address + + + Alias + + + Security + + + Port + + + Type + + + Subs + + + Test Results + + + Transport + + + Clear original subscription content + + + Download V2rayCore successfully + + + Failed to import subscription content + + + Get the subscription content successfully + + + No valid subscriptions set + + + PAC update failed + + + PAC update succeeded + + + Resolve V2rayCore successfully + + + Simplify PAC Success + + + Start getting subscriptions + + + Start updating PAC... + + + Start updating V2rayCore... + + + Subscription content decoding failed (non-BASE64 code) + + + is unpacking... + + + Update subscription end + + + Update subscription starts + + + Update V2rayCore successfully + + + Update V2rayCore successfully! Restarting service... + + \ No newline at end of file diff --git a/v2rayN/v2rayN/Resx/ResUI.zh-Hans.Designer.cs b/v2rayN/v2rayN/Resx/ResUI.zh-Hans.Designer.cs new file mode 100644 index 00000000..e69de29b diff --git a/v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx b/v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx new file mode 100644 index 00000000..147c247a --- /dev/null +++ b/v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx @@ -0,0 +1,322 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 批量导出订阅内容至剪贴板成功 + + + 批量导出分享URL至剪贴板成功 + + + 导入自定义配置服务器失败 + + + 请填写正确格式额外ID + + + 请填写正确格式服务器端口 + + + 请正确填写KCP参数 + + + 请填写本地监听端口 + + + 请填写密码 + + + 请填写服务器地址 + + + 请填写用户ID + + + 此功能依赖Http全局代理,请先设置正确。 + + + 非Vmess服务,此功能无效 + + + 扫描完成,未发现有效二维码 + + + 操作失败,请检查重试 + + + 请填写备注 + + + 请选择加密方式 + + + 请选择协议 + + + 请先选择服务器 + + + 成功导入自定义配置服务器 + + + 从剪贴板导入批量URL成功 + + + 注意,自定义配置完全依赖您自己的配置,不能使用所有设置功能。在自定义配置inbound中有socks port等于设置中的port时,系统代理才可用 + + + 客户端配置文件保存在:{0} + + + 服务端配置文件保存在:{0} + + + 注意:此功能依赖Http全局代理!测试完成后,请手工调整Http全局代理和活动节点。 + + + 扫描导入URL成功 + + + 是否下载? {0} + + + 是否确定移除服务器? + + + 请先检查服务器设置 + + + 配置格式不正确 + + + 转换配置文件失败 + + + 生成默认配置文件失败 + + + 取得默认配置失败 + + + 读取配置文件失败 + + + 不是正确的客户端配置文件,请检查 + + + 不是正确的配置,请检查 + + + 不是正确的服务端配置文件,请检查 + + + 初始化配置 + + + 非vmess或ss协议 + + + 配置成功 +{0} + + + 未找到v2ray-core,下载地址:{0} + + + 启动服务({0})...... + + + 地址 + + + 别名 + + + 加密方式 + + + 端口 + + + 服务类型 + + + 订阅 + + + 测试结果 + + + 传输协议 + + + 清除原订阅内容 + + + 下载V2rayCore成功 + + + 导入订阅内容失败 + + + 获取订阅内容成功 + + + 未设置有效的订阅 + + + PAC更新失败 + + + PAC更新成功 + + + 解析V2rayCore成功 + + + 简化PAC成功 + + + 开始获取订阅内容 + + + 开始更新PAC... + + + 开始更新V2rayCore... + + + 订阅内容解码失败(非BASE64码) + + + 正在解压...... + + + 更新订阅结束 + + + 更新订阅开始 + + + 更新V2rayCore成功 + + + 更新V2rayCore成功!正在重启服务... + + \ No newline at end of file diff --git a/v2rayN/v2rayN/Resx/Resx.zip b/v2rayN/v2rayN/Resx/Resx.zip new file mode 100644 index 0000000000000000000000000000000000000000..0cb38db96976257ee5c256c7f490c4a730acd46c GIT binary patch literal 7367 zcmZ{pbyQuwn#OV0;;x5MC~|OjDMbngcXxLvE(dpaw}ZR8yB2rXVufObPQUxjojY@9 zCVTB9du2awvXVdYThFT~3k!z=^;eNsmzDoV=RYf=KP|}ASyhJls|C|1Lpx_?2~%fF zb30QfW@Bf?KQi1uKOjM|tI5j$&MDR}LxzHqp@o8a_rGLLrp_LVTIw|mthm0?d%|f# zy{O!#u@x{zK`S~XSeSNJ7L?(U*|Ye;gCP^`7hMk@DSy5JIV?T*SR8ELTYi{e>IlPl zdGt1a;*Z(guW(OC28>9ZBk$w8jueLwi-W>i>83O<&m2E&YcF!raTnAm$>O zBDlCxJ;K!Rri{^-RtPl4U7MDTOyVF`w4L~bgQ7x+#4|z(4v`sHC;BR*)Rb+UCDf@{ z>>V2;*bu#tx;=3X*GnXWv0JhN-^QPlaxDVc?mc5*?#Zu*M*2!tQ6H$h*ojWg1ykj0f}l2M2UPDj$IOHg%-4lF{Nyl`M(%N5+U-dvq|(w zk9eB=;9Y7cLL;`@d|(E#FtTC~#3A93w-t)G@NNK$8P{ea=`e@c72rxaKAyMAId~UU zdDvggUZ0kzL<17Dy^El(6`T509D$ry#A}G(T!ntUn8xploiW@SNNs8zKi|$4p;&a8 zNjJj*d8xt*Yg_1WvKU@=0GLR(#I2rE)hY>kN2B(wjY?2!9;=GbL9a})S9n?jF zg~b7!bfSebhCmgW#I-WE)+owW)Adf7AE_$gw~h2LNi^`g91lee2$^I<}({!=xg8KGc&Yhzy;o%{pk$S`daF zYORm`DVpbYYI3i&KDoO>U_HZ++Y5~gl1WnEy}!o|H13)hDK22y1Yodx&M>-^E({sX z(PMDaYiE;lnT#qr?x;vVXsqlOkoDf=w#6H5A(;?x)Y!$HgFxjYQfeA8l$xtN9?+Qw zjBzkbf-V;;z*7kZ@ch*0F!?-Q2Btc0lnO7pTo?+$L6X$lv@f`B^|M6p`Dy&J&^!wRw2raKqEY*5HLPRZ;fc_ePcLSxK77rCq|XE9z~7E z&0SWIv*3qmwNR!l?Vj`^r2@Xf60^G+dX*k*vB6gSgbYd(^-omT>sVWG7|~I9B3kn< z0&LbYY#7GwcX70rCX!mbZc|yS_LZd^n?)WS?ZTCkb}eZOi`O82Zcm-(?eYiil%*PE z?x^>I_#r)|XR-jJBFDgh0E!LAAuE&M9^c(X58U6sE|1sM^>eN99t>i}~;7f8lokL-l0 zW;WVOk=D&WD+#_h_)R1xNDM4z9pvy`E$6Wmp~qX`4on0uW^cQ++5;~x zCOw`Pb2((UtIF<9*w1|R#>CAw37H=-4`{iG$c@VuXt2^_$od1xmd`ru5R(@c3A!lU zE^4|U!R8N$Ud-^Nb_nVeOBDJGKp66y_mM9Y3z-(;Lz9!I{>xXwsLY$lZaFAdx)9y+ zU;=%_ninA*Ap#viA?MFtW#ju#SV1uXI5pPpmxw;<95?3a;HR{{FE@=9;Z=&s@C|e` zn9t22Bjgr)QzdlG=8@}I1RmW!p)*_P(?Vt0ytt&D>nXWEb_LKL^1dH(w)Ql*IY!b2 ze%>9_!ALrj0`<|R!!8FpXL8=)v*hp=Go`J~W$s>@YbEoh#%-W^Q0Le!d~7~u*P1s5 zd#M{PEVpz)x&_t!oOCRZ+&0k2?W()mLHw=GwXCKimtPN=Y(T0KSKRiCz|eMC(y($Q zV51$GvQQR3OKRDQuXh(q9g~0~P@q{G)fHLb=K=mlTmsUC9V(p)kNz!wLw$Y4RYWu% z9sw`@6Mhx`Yf6E2)V#&i7pofb^W<-xVs}>o36%GFu@^PnycM4?1@QUr$B(Z2n=m_m zE?-eB^k&)PwDw{THDSf@*w}iRlIm>Y3AIDe7sPESyCKzM;i8vVKwp+WoEG%-|R5${q(y)mN+s!(U9o;JR`2za1-bC%SLdy!t0{cb3+L|O^Sv` zy)9ln?)jYk{bIlYVg4kj6rIP=B9|c}sCJaW0*?*XzO~EVK^D#6J#6R)G1QhV+=dzQ zB?Wu+hT5s}nFrKiuOAB6)>mdLrx822>rj30=Jw4ejo-5M?wk zZhAsEYhLKY(_Qg=W_iEawzDPUQ0}!KC!c{|CgEZbP~Mx{ln3>_GEwXC@%au@Yt8?9 zOm9a`@}aK}HVFRo=OucMZiVm)KDpNh0|n_8fspT?ZPMIsXllL(>%F{OE}a4E^k_}> zK`)T(Yz{EKZsy*GQ~xoDDKGIMC}_E2=3!~OGu{7=4eonL^?O@~ltHY}+40l0Xmtt& zUHLMre)U~8%ctLgLeT${>!zZp)zy%opcGl5ps@do>;4-CZfa@9F0f+#g>{5E_{i-# zm>XqD)LI(lQNWF~O@0vxkS@(<}OvB8`2 zq{o>z-23Tun=|4R&o3i@XCmH$9*U{nn7sYZgVboK1v4nbha-L-6J+h0JiJ%J7TSMv*>9? zhY_FG%D3w{lYBs7k8T(TkN?v#MNprT9;;RIA*MS$SwcNTsJ)% zZyqRu%WGB(|GaY;BdXs!nvH8a7+la}bLbHwM2C{mun%1W4@rl4z!E$w(zeakh6z8; z1F~)er27u>T;`2HyDi9%`Sw`-#n2h9tz5B$*``lz38cTaQn$wT$7zzJL#!lveJ*Eh zzs)P{~H#18O}s4oFV>-8awbf z;X)NQz%Mj+DS0Z2!GMyPwJaiouQBnRE>jrr(#b`+}>7$s2%E#{{IOZPGrF+?Rg^Q%YXY5wp|%PcFJEZlU))2YuWpJ<;F`h!DZOEnlLDJqNmGU{s3Y*~!}IoCDFh-) zbQS7=#OD@^XIl#E4)wccAprHBe0(eQSs^%D0tZTiHp*Y<2bXx>z7MdJEb`+B#|V9< ztFN!FjE7ZW`Y5%w?^Aa7TwP-#au%Y_7m>XDq3#_wIl2j62=3%s+UfQZ3m0x2b8?uw z4X@#`7i(4J^y&K7V|#CnC#FY-B!qolti5(Wi&DR*I4hO0S~8ga&X(VS50{PZCmOHc zL!Y~7=3ksKV8tU;VGVUewiX!QraOKIy!Z*@hAj7-{LDAx-#^AA4fMk)CxiV}5g{K+ zdrCk4vz$THxpsCu%%Koeqbkzq4x03cyfUKzx?E zkv~O#9V*&anv_Ox5*G`Ji$#7Fl=bF34SE(ofK~D-^b=h=srzn5xBz&YAe8I28rma| z$4po_B9*v{I4j1rqE;G)vBV%~4CJuFi%u8_JjMK)hOmni7zLfm2`A5~h&IQhrv1g{ z^i%2VasiBOz75WrQ5aj`SIKEBXz?SW#(Fe(4J0D?_=zp6-rt zHj$VUKCcSiv-z&)*%)YmN^y}5OU8xU>Q1}u$B?`{5`G_v+ zMJ72=8}6!m`CL4Zi(<7ZB2nMKAG2}3`W-460=QSLKscfs&w{(4Gpwx*1cTxYK9sas z6h^dx#a4F7F>L}Ds+#IXF&@#~w9)3qg+zGvslmzfATbw6$eI>093Vkk%H7D_^%ZSG z*LveDBI~P8c4+UgJ9G-xR42QhYa8eHr!#Yq}R4x1Ccq%McFakkE5bt+AF9I& z?%Co^iOkPSJ7`5Y#f`K)y%;}+79tp(85+W*CE)6LpI;I0Yk~_O6`DE9YHFaX!Xk`8bzOSm%3bKcR~>(#k@vi8|fHh+ZVtSFzAnQGaUHYO9e%( z!LTm9KS1AqJ@ZF*O-yt2wL@u#xw<1BNU$#g_3WNkO<9P6=cr_79bHn2QTN4H{5_sL zqK@rO7Kpl!X;mL*S^n)%Nc`j~;Z<)Qy_}ZtryuocY`^fYfZzI1{}V#wBX-0d{y<0y z01E0ar|NG{>Tgp?rv49oY$^|tN#NH~Vf=_gQM@LKOlQR(605^Ass+%D(FW|9eB^nj zzSBg@|F#SJIZZr1S7WnA+O_4-`|Z)v#ZU?VqH2~-{Z{A7!l`H^SWY!%BK7!dQ})l9 zJLatI9{Zx?`p1ct6Oo>oYv`JF&+=p?GW;-s8_Lqto$jYr+U6TIF<9B zWA_PNDxIuy^6A-!A@a%0ZKjVVc>9w1M^WsFsj5^f3+pZY?V-@2@0pV8h7zXE5@bu@ zXC8~N!V_;npYq!PWUZ4LLrnpudRa)U_HEOuwi?4s=5CtE1FiTUl|lZWE1nN0m4pZ9 zV-g%v@G^?wxe*)Q~D6M}E#0H774!-lY&U@qFPuVY3=T0Sf@tXmq7ud-y)9YNA+bvrYFW&*f3t3#;dXkNMmhY8qWAcO_#PZeIQ&l~H$UgKHY#%`vs}|7JNLVGx zFxQAi$#>Q}xVi?mIUiDWl;`*9oGwomb|aCaIBcst zNtGY8=!jUKldpVhF2>Wb?ymD>9xo%sV}lnhV#&fLc6O*f3(mkkg!(S{8M(gkBdMwxMw@i1S=|!7D*Kcd5mC@Hsa{C=&aY zows6i)XP+M=kXEa+ALDt@i3Rmozj^|#JbN~(rbN4f6BNdJt;SzUHPV3?4rD&3-5gU zNvuq6`@?`vX~PCJTvLcdY~B9nhR{+rUkgC6TlJ4ahT?4SFvBKfle`QFF0-v)>Q##r zsYFkU2av7A5e<7{nc;y?DgAUAR^_I~MAOSgEsV)rM{Sm9m9z#j6WX&?q9=BMRPvW! z$;ZicezEy6npEV$-ZC>;?NTyG*vG``T_a zuq-)uXYQCbNe~7pT-u`fkV-zH>u_3ALPiyWcbzzDfQhX-gVI~Awf#U0wdP_?Zf!={ zi;r*|iyRl4u~AO;`CQSKG2wYJ?=mVy2x?GrdefolfW>s zJl?NK!^AAs9s@eVxplS2U)7fTC+vunC7J9+-_TJjiqprHlZ3llGYf)=SLoiCr(9p7 z9FP!G)_GV%yj~T}LVLrwIro~iUaLQ*22J@NtW;q*$JuZQ!}$3yS=TaOSSxM7*nqUL zgXg?3$3E*J7{?&Ark;qB5(D4h_-%Kps2bA(3qOWfKQ-P?FW0R#wWAEi)(6l^^(Vr6LVmI=G?3akd+S^liS_RM=LHJkqDd&|uxMd2jh z$6N>Z=fWE0jg`JgT%&XC3mVjS1KPoTNGVqJ%zw)Y9Xm$c<%!D#Th zhf}_kuk$X`L-n+Cdgc&L&k=CFySTyG8%=K@vHUV(lWFC62FYNqJXCwnP*Ehm32g}V%+c6?@66l<#;#8h< zoMOp0o_Vv)T#TTTazQ5yGpO;K4m9nfZVtwUm^K%hNToeJs@A?u;WS5*BLx@`<~%8X7(83lW@~3U$`<;A!BWj! ze@8%kE;U|Ty4pkQuzEZH7AQQE|3PChkb`gN5W&C>l0?vQA|hF!`YV_n1;$7+s4<-6 z(y(*5?yPxC5&q{VOQ8#b1~iyv*RM#N50vqN6oT!Jp0b{tCwsRqF<7gv8@~FC-+~Dq z8nq-;$^E|Z;E@6{j~b{6JOqxxIHX>u*BX-kp_-Bm&#*%q)lL|E*2am1oXOrg{jRuZ zlbA{jp8+p1$WCO-hGrdF`^L~QFxfO}VJyU@iIwMzBrRvs(gfK7(IXvy7Dvz0Nc_d;FtR1^kx^EKS7u!BPa z+Hy-?)phi7Wa=j6snvaUlrubPso;V`b9z^Hy#2#!ZyWdukg5$c8PzdMQ{EhBNr5YP z*nMr2TAg#)7D8CJscF3KwmoFv3H3CV)03*FS2)7EePb-Ib86qZTEwi^(PvSv+V*Pk z?S6WoGhz+#E^Sb7du4%9ez&MJ{IRtNrG4;X@|#X`QpGmF1f}s#A~feiJG=h#4Xmo_ zS3=8Qh1~lkwkDJ!o3KMIE5GiP5xH{1XQNe~*Axd_;aaD}^P3}5`X!~8_Cl__wBufI z=F^CUj_l!Kkhqbuz$-QXwH(GngcFZvC) z)6)ulb?C!z>+G^sdcr$ls}YY$3!8PcYwNU(g}1|1MmP_9{8V4k6MIJ&|87^x;i4;B z6OLheX&l|MkBvdxoAs%6@hC$L=KUK=z}uWjIMTdLnx$SZDz;z?=d-FXmK=hnyeW*t zYv|j?{i~!~R4)`V^o`ic?mu`04TJj+6#BoDc7GV@Poexr{ZCx_KT~*rh57%Jcz^5v z3d8;9{hPY}8Rjqg`g chars) + { + if (s.IsNullOrEmpty()) return false; + return chars.Contains(s[0]); + } + + public static bool IsWhiteSpace(this string value) + { + foreach (var c in value) + { + if (char.IsWhiteSpace(c)) continue; + + return false; + } + return true; + } + + + public static IEnumerable NonWhiteSpaceLines(this TextReader reader) + { + string line; + while ((line = reader.ReadLine()) != null) + { + if (line.IsWhiteSpace()) continue; + yield return line; + } + } + } +} diff --git a/v2rayN/v2rayN/Tool/CDateTime.cs b/v2rayN/v2rayN/Tool/CDateTime.cs new file mode 100644 index 00000000..fb7a2e25 --- /dev/null +++ b/v2rayN/v2rayN/Tool/CDateTime.cs @@ -0,0 +1,156 @@ +using System; +using System.Net; +using System.Runtime.InteropServices; +using System.Text; + +namespace v2rayN +{ + class CDateTime + { + /// + /// 设置本地系统时间 + /// + public static void SetLocalTime() + { + using (WebClient wc = new WebClient()) + { + string url = ""; + string result = string.Empty; + + try + { + wc.Encoding = Encoding.UTF8; + wc.DownloadStringCompleted += wc_DownloadStringCompleted; + wc.DownloadStringAsync(new Uri(url)); + } + catch + { + } + } + } + + static void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) + { + try + { + string result = e.Result; + if (Utils.IsNullOrEmpty(result)) + { + return; + } + EWebTime webTime = Utils.FromJson(result); + if (webTime != null + && webTime.result != null + && webTime.result.stime != null + && !Utils.IsNullOrEmpty(webTime.result.stime)) + { + DateTime dtWeb = GetTimeFromLinux(webTime.result.stime); + + SYSTEMTIME st = new SYSTEMTIME(); + st.FromDateTime(dtWeb); + + //调用Win32 API设置系统时间 + Win32API.SetLocalTime(ref st); + } + } + catch + { + } + } + + /// + /// 时间戳转为C#格式时间 + /// + /// + /// + private static DateTime GetTimeFromLinux(string timeStamp) + { + DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); + long lTime = long.Parse(timeStamp + "0000000"); + TimeSpan toNow = new TimeSpan(lTime); return dtStart.Add(toNow); + } + } + + /// + /// + /// + public struct SYSTEMTIME + { + public ushort wYear; + public ushort wMonth; + public ushort wDayOfWeek; + public ushort wDay; + public ushort wHour; + public ushort wMinute; + public ushort wSecond; + public ushort wMilliseconds; + + /// + /// 从System.DateTime转换。 + /// + /// System.DateTime类型的时间。 + public void FromDateTime(DateTime time) + { + wYear = (ushort)time.Year; + wMonth = (ushort)time.Month; + wDayOfWeek = (ushort)time.DayOfWeek; + wDay = (ushort)time.Day; + wHour = (ushort)time.Hour; + wMinute = (ushort)time.Minute; + wSecond = (ushort)time.Second; + wMilliseconds = (ushort)time.Millisecond; + } + + /// + /// 转换为System.DateTime类型。 + /// + /// + public DateTime ToDateTime() + { + return new DateTime(wYear, wMonth, wDay, wHour, wMinute, wSecond, wMilliseconds); + } + + /// + /// 静态方法。转换为System.DateTime类型。 + /// + /// SYSTEMTIME类型的时间。 + /// + public static DateTime ToDateTime(SYSTEMTIME time) + { + return time.ToDateTime(); + } + } + + public class Win32API + { + [DllImport("Kernel32.dll")] + public static extern bool SetLocalTime(ref SYSTEMTIME Time); + [DllImport("Kernel32.dll")] + public static extern void GetLocalTime(ref SYSTEMTIME Time); + } + + public class WTResult + { + /// + /// + /// + public string stime { get; set; } + } + + public class EWebTime + { + /// + /// + /// + public WTResult result { get; set; } + /// + /// + /// + public int error_code { get; set; } + /// + /// + /// + public string reason { get; set; } + } +} + diff --git a/v2rayN/v2rayN/Tool/FileManager.cs b/v2rayN/v2rayN/Tool/FileManager.cs new file mode 100644 index 00000000..6df1a4bb --- /dev/null +++ b/v2rayN/v2rayN/Tool/FileManager.cs @@ -0,0 +1,65 @@ +using System; +using System.IO; +using System.IO.Compression; +using System.Text; + +namespace v2rayN.Tool +{ + public static class FileManager + { + public static bool ByteArrayToFile(string fileName, byte[] content) + { + try + { + using (var fs = new FileStream(fileName, FileMode.Create, FileAccess.Write)) + fs.Write(content, 0, content.Length); + return true; + } + catch (Exception ex) + { + Utils.SaveLog(ex.Message, ex); + } + return false; + } + + public static void UncompressFile(string fileName, byte[] content) + { + // Because the uncompressed size of the file is unknown, + // we are using an arbitrary buffer size. + byte[] buffer = new byte[4096]; + int n; + + using (var fs = File.Create(fileName)) + using (var input = new GZipStream(new MemoryStream(content), + CompressionMode.Decompress, false)) + { + while ((n = input.Read(buffer, 0, buffer.Length)) > 0) + { + fs.Write(buffer, 0, n); + } + } + } + + public static string NonExclusiveReadAllText(string path) + { + return NonExclusiveReadAllText(path, Encoding.Default); + } + + public static string NonExclusiveReadAllText(string path, Encoding encoding) + { + try + { + using (var fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) + using (var sr = new StreamReader(fs, encoding)) + { + return sr.ReadToEnd(); + } + } + catch (Exception ex) + { + Utils.SaveLog(ex.Message, ex); + throw ex; + } + } + } +} diff --git a/v2rayN/v2rayN/Tool/Job.cs b/v2rayN/v2rayN/Tool/Job.cs new file mode 100644 index 00000000..64415589 --- /dev/null +++ b/v2rayN/v2rayN/Tool/Job.cs @@ -0,0 +1,179 @@ +using System; +using System.Diagnostics; +using System.Runtime.InteropServices; + + +namespace v2rayN +{ + /* + * See: + * http://stackoverflow.com/questions/6266820/working-example-of-createjobobject-setinformationjobobject-pinvoke-in-net + */ + public class Job : IDisposable + { + private IntPtr handle = IntPtr.Zero; + + public Job() + { + handle = CreateJobObject(IntPtr.Zero, null); + var extendedInfoPtr = IntPtr.Zero; + var info = new JOBOBJECT_BASIC_LIMIT_INFORMATION + { + LimitFlags = 0x2000 + }; + + var extendedInfo = new JOBOBJECT_EXTENDED_LIMIT_INFORMATION + { + BasicLimitInformation = info + }; + + try + { + int length = Marshal.SizeOf(typeof(JOBOBJECT_EXTENDED_LIMIT_INFORMATION)); + extendedInfoPtr = Marshal.AllocHGlobal(length); + Marshal.StructureToPtr(extendedInfo, extendedInfoPtr, false); + + if (!SetInformationJobObject(handle, JobObjectInfoType.ExtendedLimitInformation, extendedInfoPtr, + (uint) length)) + throw new Exception(string.Format("Unable to set information. Error: {0}", + Marshal.GetLastWin32Error())); + } + finally + { + if (extendedInfoPtr != IntPtr.Zero) + { + Marshal.FreeHGlobal(extendedInfoPtr); + extendedInfoPtr = IntPtr.Zero; + } + } + } + + public bool AddProcess(IntPtr processHandle) + { + var succ = AssignProcessToJobObject(handle, processHandle); + + if (!succ) + { + //Logging.Error("Failed to call AssignProcessToJobObject! GetLastError=" + Marshal.GetLastWin32Error()); + } + + return succ; + } + + public bool AddProcess(int processId) + { + return AddProcess(Process.GetProcessById(processId).Handle); + } + + #region IDisposable + + private bool disposed; + + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + + protected virtual void Dispose(bool disposing) + { + if (disposed) return; + disposed = true; + + if (disposing) + { + // no managed objects to free + } + + if (handle != IntPtr.Zero) + { + CloseHandle(handle); + handle = IntPtr.Zero; + } + } + + ~Job() + { + Dispose(false); + } + + #endregion + + #region Interop + + [DllImport("kernel32.dll", CharSet = CharSet.Unicode)] + private static extern IntPtr CreateJobObject(IntPtr a, string lpName); + + [DllImport("kernel32.dll", SetLastError = true)] + private static extern bool SetInformationJobObject(IntPtr hJob, JobObjectInfoType infoType, IntPtr lpJobObjectInfo, UInt32 cbJobObjectInfoLength); + + [DllImport("kernel32.dll", SetLastError = true)] + private static extern bool AssignProcessToJobObject(IntPtr job, IntPtr process); + + [DllImport("kernel32.dll", SetLastError = true)] + [return: MarshalAs(UnmanagedType.Bool)] + private static extern bool CloseHandle(IntPtr hObject); + + #endregion + } + + #region Helper classes + + [StructLayout(LayoutKind.Sequential)] + struct IO_COUNTERS + { + public UInt64 ReadOperationCount; + public UInt64 WriteOperationCount; + public UInt64 OtherOperationCount; + public UInt64 ReadTransferCount; + public UInt64 WriteTransferCount; + public UInt64 OtherTransferCount; + } + + + [StructLayout(LayoutKind.Sequential)] + struct JOBOBJECT_BASIC_LIMIT_INFORMATION + { + public Int64 PerProcessUserTimeLimit; + public Int64 PerJobUserTimeLimit; + public UInt32 LimitFlags; + public UIntPtr MinimumWorkingSetSize; + public UIntPtr MaximumWorkingSetSize; + public UInt32 ActiveProcessLimit; + public UIntPtr Affinity; + public UInt32 PriorityClass; + public UInt32 SchedulingClass; + } + + [StructLayout(LayoutKind.Sequential)] + public struct SECURITY_ATTRIBUTES + { + public UInt32 nLength; + public IntPtr lpSecurityDescriptor; + public Int32 bInheritHandle; + } + + [StructLayout(LayoutKind.Sequential)] + struct JOBOBJECT_EXTENDED_LIMIT_INFORMATION + { + public JOBOBJECT_BASIC_LIMIT_INFORMATION BasicLimitInformation; + public IO_COUNTERS IoInfo; + public UIntPtr ProcessMemoryLimit; + public UIntPtr JobMemoryLimit; + public UIntPtr PeakProcessMemoryUsed; + public UIntPtr PeakJobMemoryUsed; + } + + public enum JobObjectInfoType + { + AssociateCompletionPortInformation = 7, + BasicLimitInformation = 2, + BasicUIRestrictions = 4, + EndOfJobTimeInformation = 6, + ExtendedLimitInformation = 9, + SecurityLimitInformation = 5, + GroupInformation = 11 + } + + #endregion +} diff --git a/v2rayN/v2rayN/Tool/UI.cs b/v2rayN/v2rayN/Tool/UI.cs new file mode 100644 index 00000000..8225a291 --- /dev/null +++ b/v2rayN/v2rayN/Tool/UI.cs @@ -0,0 +1,38 @@ +using System.Globalization; +using System.Windows.Forms; + +namespace v2rayN +{ + class UI + { + public static void Show(string msg) + { + MessageBox.Show(msg); + } + + public static DialogResult ShowYesNo(string msg) + { + return MessageBox.Show(msg, "YesNo", MessageBoxButtons.YesNo); + } + + //public static string GetResourseString(string key) + //{ + // CultureInfo cultureInfo = null; + // try + // { + // string languageCode = this.LanguageCode; + // cultureInfo = new CultureInfo(languageCode); + // return Common.ResourceManager.GetString(key, cultureInfo); + // } + // catch (Exception) + // { + // //默认读取英文的多语言 + // cultureInfo = new CultureInfo(MKey.kDefaultLanguageCode); + // return Common.ResourceManager.GetString(key, cultureInfo); + // } + //} + + } + + +} diff --git a/v2rayN/v2rayN/Tool/UIRes.cs b/v2rayN/v2rayN/Tool/UIRes.cs new file mode 100644 index 00000000..a6b455a9 --- /dev/null +++ b/v2rayN/v2rayN/Tool/UIRes.cs @@ -0,0 +1,26 @@ +using System.Collections.Generic; +using System.Reflection; +using System.Resources; + +namespace v2rayN +{ + public class UIRes + { + static ResourceManager res = new ResourceManager("v2rayN.Resx.ResUI", Assembly.GetExecutingAssembly()); + + static string LoadString(ResourceManager resMgr, string key) + { + var value = resMgr.GetString(key); + if (value == null) + { + throw new KeyNotFoundException($"key: {key}"); + } + return value; + } + + public static string I18N(string key) + { + return LoadString(res, key); + } + } +} diff --git a/v2rayN/v2rayN/Tool/Utils.cs b/v2rayN/v2rayN/Tool/Utils.cs new file mode 100644 index 00000000..d78cb10e --- /dev/null +++ b/v2rayN/v2rayN/Tool/Utils.cs @@ -0,0 +1,820 @@ +using Microsoft.Win32; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.IO.Compression; +using System.Net; +using System.Net.NetworkInformation; +using System.Net.Sockets; +using System.Reflection; +using System.Runtime.Serialization.Formatters.Binary; +using System.Text; +using System.Text.RegularExpressions; +using System.Windows.Forms; +using System.Drawing; +using ZXing; +using ZXing.Common; +using ZXing.QrCode; + +namespace v2rayN +{ + class Utils + { + + + #region 资源Json操作 + + /// + /// 获取嵌入文本资源 + /// + /// + /// + public static string GetEmbedText(string res) + { + string result = string.Empty; + + try + { + var assembly = Assembly.GetExecutingAssembly(); + using (Stream stream = assembly.GetManifestResourceStream(res)) + using (StreamReader reader = new StreamReader(stream)) + { + result = reader.ReadToEnd(); + } + } + catch + { + } + return result; + } + + + /// + /// 取得存储资源 + /// + /// + public static string LoadResource(string res) + { + string result = string.Empty; + + try + { + using (StreamReader reader = new StreamReader(res)) + { + result = reader.ReadToEnd(); + } + } + catch + { + } + return result; + } + + /// + /// 反序列化成对象 + /// + /// + /// + /// + public static T FromJson(string strJson) + { + try + { + T obj = JsonConvert.DeserializeObject(strJson); + return obj; + } + catch + { + return JsonConvert.DeserializeObject(""); + } + } + + /// + /// 序列化成Json + /// + /// + /// + public static string ToJson(Object obj) + { + string result = string.Empty; + try + { + result = JsonConvert.SerializeObject(obj, + Formatting.Indented, + new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); + } + catch + { + } + return result; + } + + /// + /// 保存成json文件 + /// + /// + /// + /// + public static int ToJsonFile(Object obj, string filePath) + { + int result = -1; + try + { + using (StreamWriter file = System.IO.File.CreateText(filePath)) + { + //JsonSerializer serializer = new JsonSerializer(); + JsonSerializer serializer = new JsonSerializer() { Formatting = Formatting.Indented }; + //JsonSerializer serializer = new JsonSerializer() { Formatting = Formatting.Indented, NullValueHandling = NullValueHandling.Ignore }; + + serializer.Serialize(file, obj); + } + result = 0; + } + catch + { + result = -1; + } + return result; + } + #endregion + + #region 转换函数 + + /// + /// List转逗号分隔的字符串 + /// + /// + /// + public static string List2String(List lst, bool wrap = false) + { + try + { + if (wrap) + { + return string.Join(",\r\n", lst.ToArray()); + } + else + { + return string.Join(",", lst.ToArray()); + } + } + catch + { + return string.Empty; + } + } + /// + /// 逗号分隔的字符串,转List + /// + /// + /// + public static List String2List(string str) + { + try + { + str = str.Replace("\r\n", ""); + return new List(str.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries)); + } + catch + { + return new List(); + } + } + + /// + /// Base64编码 + /// + /// + /// + public static string Base64Encode(string plainText) + { + try + { + var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText); + return Convert.ToBase64String(plainTextBytes); + } + catch (Exception ex) + { + SaveLog("Base64Encode", ex); + return string.Empty; + } + } + + /// + /// Base64解码 + /// + /// + /// + public static string Base64Decode(string plainText) + { + try + { + plainText = plainText.Trim() + .Replace("\n", "") + .Replace("\r\n", "") + .Replace("\r", "") + .Replace(" ", ""); + + if (plainText.Length % 4 > 0) + { + plainText = plainText.PadRight(plainText.Length + 4 - plainText.Length % 4, '='); + } + + byte[] data = Convert.FromBase64String(plainText); + return Encoding.UTF8.GetString(data); + } + catch (Exception ex) + { + SaveLog("Base64Decode", ex); + return string.Empty; + } + } + + /// + /// 转Int + /// + /// + /// + public static int ToInt(object obj) + { + try + { + return Convert.ToInt32(obj); + } + catch + { + return 0; + } + } + + #endregion + + + #region 数据检查 + + /// + /// 判断输入的是否是数字 + /// + /// + /// + public static bool IsNumberic(string oText) + { + try + { + int var1 = Utils.ToInt(oText); + return true; + } + catch + { + return false; + } + } + + /// + /// 文本 + /// + /// + /// + public static bool IsNullOrEmpty(string text) + { + if (string.IsNullOrEmpty(text)) + { + return true; + } + if (text.Equals("null")) + { + return true; + } + return false; + } + + /// + /// 验证IP地址是否合法 + /// + /// + public static bool IsIP(string ip) + { + //如果为空 + if (IsNullOrEmpty(ip)) + { + return false; + } + + //清除要验证字符串中的空格 + //ip = ip.Trim(); + //可能是CIDR + if (ip.IndexOf(@"/") > 0) + { + var cidr = ip.Split('/'); + if (cidr.Length == 2) + { + if (!IsNumberic(cidr[0])) + { + return false; + } + ip = cidr[0]; + } + } + + + //模式字符串 + string pattern = @"^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$"; + + //验证 + return IsMatch(ip, pattern); + } + + /// + /// 验证Domain地址是否合法 + /// + /// + public static bool IsDomain(string domain) + { + //如果为空 + if (IsNullOrEmpty(domain)) + { + return false; + } + + //清除要验证字符串中的空格 + //domain = domain.Trim(); + + //模式字符串 + string pattern = @"^(?=^.{3,255}$)[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+$"; + + //验证 + return IsMatch(domain, pattern); + } + + /// + /// 验证输入字符串是否与模式字符串匹配,匹配返回true + /// + /// 输入字符串 + /// 模式字符串 + public static bool IsMatch(string input, string pattern) + { + return Regex.IsMatch(input, pattern, RegexOptions.IgnoreCase); + } + + #endregion + + #region 开机自动启动 + + private static string autoRunName = "v2rayNAutoRun"; + private static string autoRunRegPath + { + get + { + return @"Software\Microsoft\Windows\CurrentVersion\Run"; + //if (Environment.Is64BitProcess) + //{ + // return @"Software\Microsoft\Windows\CurrentVersion\Run"; + //} + //else + //{ + // return @"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run"; + //} + } + } + + /// + /// 开机自动启动 + /// + /// + /// + public static int SetAutoRun(bool run) + { + try + { + if (run) + { + string exePath = GetExePath(); + RegWriteValue(autoRunRegPath, autoRunName, exePath); + } + else + { + RegWriteValue(autoRunRegPath, autoRunName, ""); + } + } + catch + { + } + return 0; + } + + /// + /// 是否已经设置开机自动启动 + /// + /// + public static bool IsAutoRun() + { + try + { + var value = RegReadValue(autoRunRegPath, autoRunName, ""); + string exePath = GetExePath(); + if (value?.Equals(exePath) == true) + { + return true; + } + } + catch + { + } + return false; + } + + /// + /// 获取启动了应用程序的可执行文件的路径 + /// + /// + public static string GetPath(string fileName) + { + string startupPath = StartupPath(); + if (Utils.IsNullOrEmpty(fileName)) + { + return startupPath; + } + return Path.Combine(startupPath, fileName); + } + + /// + /// 获取启动了应用程序的可执行文件的路径及文件名 + /// + /// + public static string GetExePath() + { + return Application.ExecutablePath; + } + + public static string StartupPath() + { + try + { + string exePath = GetExePath(); + return exePath.Substring(0, exePath.LastIndexOf("\\", StringComparison.Ordinal)); + } + catch + { + return Application.StartupPath; + } + } + + public static string RegReadValue(string path, string name, string def) + { + RegistryKey regKey = null; + try + { + regKey = Registry.CurrentUser.OpenSubKey(path, false); + string value = regKey?.GetValue(name) as string; + if (IsNullOrEmpty(value)) + { + return def; + } + else + { + return value; + } + } + catch + { + } + finally + { + regKey?.Close(); + } + return def; + } + + public static void RegWriteValue(string path, string name, string value) + { + RegistryKey regKey = null; + try + { + regKey = Registry.CurrentUser.CreateSubKey(path); + if (IsNullOrEmpty(value)) + { + regKey?.DeleteValue(name, false); + } + else + { + regKey?.SetValue(name, value); + } + } + catch + { + } + finally + { + regKey?.Close(); + } + } + #endregion + + #region 测速 + + /// + /// Ping + /// + /// + /// + public static long Ping(string host) + { + long roundtripTime = -1; + try + { + int timeout = 120; + int echoNum = 2; + Ping pingSender = new Ping(); + for (int i = 0; i < echoNum; i++) + { + PingReply reply = pingSender.Send(host, timeout); + if (reply.Status == IPStatus.Success) + { + if (reply.RoundtripTime < 0) + { + continue; + } + if (roundtripTime < 0 || reply.RoundtripTime < roundtripTime) + { + roundtripTime = reply.RoundtripTime; + } + } + } + } + catch + { + return -1; + } + return roundtripTime; + } + + /// + /// 取得本机 IP Address + /// + /// + public static List GetHostIPAddress() + { + List lstIPAddress = new List(); + try + { + IPHostEntry IpEntry = Dns.GetHostEntry(Dns.GetHostName()); + foreach (IPAddress ipa in IpEntry.AddressList) + { + if (ipa.AddressFamily == AddressFamily.InterNetwork) + lstIPAddress.Add(ipa.ToString()); + } + } + catch + { + } + return lstIPAddress; + } + + + #endregion + + #region 杂项 + + /// + /// 取得版本 + /// + /// + public static string GetVersion() + { + try + { + string location = GetExePath(); + return string.Format("v2rayN - V{0} - {1}", + FileVersionInfo.GetVersionInfo(location).FileVersion.ToString(), + File.GetLastWriteTime(location).ToString("yyyy/MM/dd")); + } + catch + { + return string.Empty; + } + } + + /// + /// 深度拷贝 + /// + /// + /// + /// + public static T DeepCopy(T obj) + { + object retval; + using (MemoryStream ms = new MemoryStream()) + { + BinaryFormatter bf = new BinaryFormatter(); + //序列化成流 + bf.Serialize(ms, obj); + ms.Seek(0, SeekOrigin.Begin); + //反序列化成对象 + retval = bf.Deserialize(ms); + ms.Close(); + } + return (T)retval; + } + + /// + /// 获取剪贴板数 + /// + /// + public static string GetClipboardData() + { + string strData = string.Empty; + try + { + IDataObject data = Clipboard.GetDataObject(); + if (data.GetDataPresent(DataFormats.Text)) + { + strData = data.GetData(DataFormats.Text).ToString(); + } + return strData; + } + catch + { + } + return strData; + } + + /// + /// 拷贝至剪贴板 + /// + /// + public static void SetClipboardData(string strData) + { + try + { + Clipboard.SetText(strData); + } + catch + { + } + } + + /// + /// 取得GUID + /// + /// + public static string GetGUID() + { + try + { + return Guid.NewGuid().ToString("D"); + } + catch + { + } + return string.Empty; + } + + #endregion + + #region TempPath + + private static string _tempPath = null; + + // return path to store temporary files + public static string GetTempPath() + { + if (_tempPath == null) + { + Directory.CreateDirectory(Path.Combine(StartupPath(), "v2ray_win_temp")); + // don't use "/", it will fail when we call explorer /select xxx/ss_win_temp\xxx.log + _tempPath = Path.Combine(StartupPath(), "v2ray_win_temp"); + } + return _tempPath; + } + + public static string GetTempPath(string filename) + { + return Path.Combine(GetTempPath(), filename); + } + + public static void ClearTempPath() + { + //Directory.Delete(GetTempPath(), true); + //_tempPath = null; + } + + public static string UnGzip(byte[] buf) + { + byte[] buffer = new byte[1024]; + int n; + using (MemoryStream sb = new MemoryStream()) + { + using (GZipStream input = new GZipStream(new MemoryStream(buf), + CompressionMode.Decompress, + false)) + { + while ((n = input.Read(buffer, 0, buffer.Length)) > 0) + { + sb.Write(buffer, 0, n); + } + } + return System.Text.Encoding.UTF8.GetString(sb.ToArray()); + } + } + + #endregion + + #region Log + + public static void SaveLog(string strContent) + { + SaveLog("info", new Exception(strContent)); + } + public static void SaveLog(string strTitle, Exception ex) + { + try + { + string path = Path.Combine(StartupPath(), "guiLogs"); + string FilePath = Path.Combine(path, DateTime.Now.ToString("yyyyMMdd") + ".txt"); + if (!Directory.Exists(path)) + { + Directory.CreateDirectory(path); + } + if (!File.Exists(FilePath)) + { + FileStream FsCreate = new FileStream(FilePath, FileMode.Create); + FsCreate.Close(); + FsCreate.Dispose(); + } + FileStream FsWrite = new FileStream(FilePath, FileMode.Append, FileAccess.Write); + StreamWriter SwWrite = new StreamWriter(FsWrite); + + string strContent = ex.ToString(); + + SwWrite.WriteLine(string.Format("{0}{1}[{2}]{3}", "--------------------------------", strTitle, DateTime.Now.ToString("HH:mm:ss"), "--------------------------------")); + SwWrite.Write(strContent); + SwWrite.WriteLine("\r\n"); + SwWrite.WriteLine(" "); + SwWrite.Flush(); + SwWrite.Close(); + } + catch { } + } + + #endregion + + + #region scan screen + + public static string ScanScreen() + { + string ret = string.Empty; + try + { + foreach (Screen screen in Screen.AllScreens) + { + using (Bitmap fullImage = new Bitmap(screen.Bounds.Width, + screen.Bounds.Height)) + { + using (Graphics g = Graphics.FromImage(fullImage)) + { + g.CopyFromScreen(screen.Bounds.X, + screen.Bounds.Y, + 0, 0, + fullImage.Size, + CopyPixelOperation.SourceCopy); + } + int maxTry = 10; + for (int i = 0; i < maxTry; i++) + { + int marginLeft = (int)((double)fullImage.Width * i / 2.5 / maxTry); + int marginTop = (int)((double)fullImage.Height * i / 2.5 / maxTry); + Rectangle cropRect = new Rectangle(marginLeft, marginTop, fullImage.Width - marginLeft * 2, fullImage.Height - marginTop * 2); + Bitmap target = new Bitmap(screen.Bounds.Width, screen.Bounds.Height); + + double imageScale = (double)screen.Bounds.Width / (double)cropRect.Width; + using (Graphics g = Graphics.FromImage(target)) + { + g.DrawImage(fullImage, new Rectangle(0, 0, target.Width, target.Height), + cropRect, + GraphicsUnit.Pixel); + } + + var source = new BitmapLuminanceSource(target); + var bitmap = new BinaryBitmap(new HybridBinarizer(source)); + QRCodeReader reader = new QRCodeReader(); + var result = reader.decode(bitmap); + if (result != null) + { + ret = result.Text; + return ret; + } + } + } + } + } + catch { } + return string.Empty; + } + + #endregion + + } +} diff --git a/v2rayN/v2rayN/app.config b/v2rayN/v2rayN/app.config new file mode 100644 index 00000000..620ddb42 --- /dev/null +++ b/v2rayN/v2rayN/app.config @@ -0,0 +1,7 @@ + + + + + + + diff --git a/v2rayN/v2rayN/protos/Command.cs b/v2rayN/v2rayN/protos/Command.cs new file mode 100644 index 00000000..8c54f09b --- /dev/null +++ b/v2rayN/v2rayN/protos/Command.cs @@ -0,0 +1,560 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: command.proto +#pragma warning disable 1591, 0612, 3021 +#region Designer generated code + +using pb = global::Google.Protobuf; +using pbc = global::Google.Protobuf.Collections; +using pbr = global::Google.Protobuf.Reflection; +using scg = global::System.Collections.Generic; +namespace V2Ray.Core.App.Stats.Command { + + /// Holder for reflection information generated from command.proto + public static partial class CommandReflection { + + #region Descriptor + /// File descriptor for command.proto + public static pbr::FileDescriptor Descriptor { + get { return descriptor; } + } + private static pbr::FileDescriptor descriptor; + + static CommandReflection() { + byte[] descriptorData = global::System.Convert.FromBase64String( + string.Concat( + "Cg1jb21tYW5kLnByb3RvEhx2MnJheS5jb3JlLmFwcC5zdGF0cy5jb21tYW5k", + "Ii4KD0dldFN0YXRzUmVxdWVzdBIMCgRuYW1lGAEgASgJEg0KBXJlc2V0GAIg", + "ASgIIiMKBFN0YXQSDAoEbmFtZRgBIAEoCRINCgV2YWx1ZRgCIAEoAyJEChBH", + "ZXRTdGF0c1Jlc3BvbnNlEjAKBHN0YXQYASABKAsyIi52MnJheS5jb3JlLmFw", + "cC5zdGF0cy5jb21tYW5kLlN0YXQiCAoGQ29uZmlnMnsKDFN0YXRzU2Vydmlj", + "ZRJrCghHZXRTdGF0cxItLnYycmF5LmNvcmUuYXBwLnN0YXRzLmNvbW1hbmQu", + "R2V0U3RhdHNSZXF1ZXN0Gi4udjJyYXkuY29yZS5hcHAuc3RhdHMuY29tbWFu", + "ZC5HZXRTdGF0c1Jlc3BvbnNlIgBCTAogY29tLnYycmF5LmNvcmUuYXBwLnN0", + "YXRzLmNvbW1hbmRQAVoHY29tbWFuZKoCHFYyUmF5LkNvcmUuQXBwLlN0YXRz", + "LkNvbW1hbmRiBnByb3RvMw==")); + descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, + new pbr::FileDescriptor[] { }, + new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] { + new pbr::GeneratedClrTypeInfo(typeof(global::V2Ray.Core.App.Stats.Command.GetStatsRequest), global::V2Ray.Core.App.Stats.Command.GetStatsRequest.Parser, new[]{ "Name", "Reset" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::V2Ray.Core.App.Stats.Command.Stat), global::V2Ray.Core.App.Stats.Command.Stat.Parser, new[]{ "Name", "Value" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::V2Ray.Core.App.Stats.Command.GetStatsResponse), global::V2Ray.Core.App.Stats.Command.GetStatsResponse.Parser, new[]{ "Stat" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::V2Ray.Core.App.Stats.Command.Config), global::V2Ray.Core.App.Stats.Command.Config.Parser, null, null, null, null) + })); + } + #endregion + + } + #region Messages + public sealed partial class GetStatsRequest : pb::IMessage { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new GetStatsRequest()); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::V2Ray.Core.App.Stats.Command.CommandReflection.Descriptor.MessageTypes[0]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public GetStatsRequest() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public GetStatsRequest(GetStatsRequest other) : this() { + name_ = other.name_; + reset_ = other.reset_; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public GetStatsRequest Clone() { + return new GetStatsRequest(this); + } + + /// Field number for the "name" field. + public const int NameFieldNumber = 1; + private string name_ = ""; + /// + /// Name of the stat counter. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string Name { + get { return name_; } + set { + name_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + /// Field number for the "reset" field. + public const int ResetFieldNumber = 2; + private bool reset_; + /// + /// Whether or not to reset the counter to fetching its value. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Reset { + get { return reset_; } + set { + reset_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as GetStatsRequest); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(GetStatsRequest other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Name != other.Name) return false; + if (Reset != other.Reset) return false; + return true; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (Name.Length != 0) hash ^= Name.GetHashCode(); + if (Reset != false) hash ^= Reset.GetHashCode(); + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void WriteTo(pb::CodedOutputStream output) { + if (Name.Length != 0) { + output.WriteRawTag(10); + output.WriteString(Name); + } + if (Reset != false) { + output.WriteRawTag(16); + output.WriteBool(Reset); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (Name.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Name); + } + if (Reset != false) { + size += 1 + 1; + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(GetStatsRequest other) { + if (other == null) { + return; + } + if (other.Name.Length != 0) { + Name = other.Name; + } + if (other.Reset != false) { + Reset = other.Reset; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(pb::CodedInputStream input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + input.SkipLastField(); + break; + case 10: { + Name = input.ReadString(); + break; + } + case 16: { + Reset = input.ReadBool(); + break; + } + } + } + } + + } + + public sealed partial class Stat : pb::IMessage { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Stat()); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::V2Ray.Core.App.Stats.Command.CommandReflection.Descriptor.MessageTypes[1]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Stat() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Stat(Stat other) : this() { + name_ = other.name_; + value_ = other.value_; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Stat Clone() { + return new Stat(this); + } + + /// Field number for the "name" field. + public const int NameFieldNumber = 1; + private string name_ = ""; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string Name { + get { return name_; } + set { + name_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + /// Field number for the "value" field. + public const int ValueFieldNumber = 2; + private long value_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public long Value { + get { return value_; } + set { + value_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as Stat); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(Stat other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Name != other.Name) return false; + if (Value != other.Value) return false; + return true; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (Name.Length != 0) hash ^= Name.GetHashCode(); + if (Value != 0L) hash ^= Value.GetHashCode(); + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void WriteTo(pb::CodedOutputStream output) { + if (Name.Length != 0) { + output.WriteRawTag(10); + output.WriteString(Name); + } + if (Value != 0L) { + output.WriteRawTag(16); + output.WriteInt64(Value); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (Name.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Name); + } + if (Value != 0L) { + size += 1 + pb::CodedOutputStream.ComputeInt64Size(Value); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(Stat other) { + if (other == null) { + return; + } + if (other.Name.Length != 0) { + Name = other.Name; + } + if (other.Value != 0L) { + Value = other.Value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(pb::CodedInputStream input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + input.SkipLastField(); + break; + case 10: { + Name = input.ReadString(); + break; + } + case 16: { + Value = input.ReadInt64(); + break; + } + } + } + } + + } + + public sealed partial class GetStatsResponse : pb::IMessage { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new GetStatsResponse()); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::V2Ray.Core.App.Stats.Command.CommandReflection.Descriptor.MessageTypes[2]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public GetStatsResponse() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public GetStatsResponse(GetStatsResponse other) : this() { + Stat = other.stat_ != null ? other.Stat.Clone() : null; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public GetStatsResponse Clone() { + return new GetStatsResponse(this); + } + + /// Field number for the "stat" field. + public const int StatFieldNumber = 1; + private global::V2Ray.Core.App.Stats.Command.Stat stat_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public global::V2Ray.Core.App.Stats.Command.Stat Stat { + get { return stat_; } + set { + stat_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as GetStatsResponse); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(GetStatsResponse other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (!object.Equals(Stat, other.Stat)) return false; + return true; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (stat_ != null) hash ^= Stat.GetHashCode(); + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void WriteTo(pb::CodedOutputStream output) { + if (stat_ != null) { + output.WriteRawTag(10); + output.WriteMessage(Stat); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (stat_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Stat); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(GetStatsResponse other) { + if (other == null) { + return; + } + if (other.stat_ != null) { + if (stat_ == null) { + stat_ = new global::V2Ray.Core.App.Stats.Command.Stat(); + } + Stat.MergeFrom(other.Stat); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(pb::CodedInputStream input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + input.SkipLastField(); + break; + case 10: { + if (stat_ == null) { + stat_ = new global::V2Ray.Core.App.Stats.Command.Stat(); + } + input.ReadMessage(stat_); + break; + } + } + } + } + + } + + public sealed partial class Config : pb::IMessage { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Config()); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::V2Ray.Core.App.Stats.Command.CommandReflection.Descriptor.MessageTypes[3]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Config() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Config(Config other) : this() { + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Config Clone() { + return new Config(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as Config); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(Config other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + return true; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void WriteTo(pb::CodedOutputStream output) { + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(Config other) { + if (other == null) { + return; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(pb::CodedInputStream input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + input.SkipLastField(); + break; + } + } + } + + } + + #endregion + +} + +#endregion Designer generated code diff --git a/v2rayN/v2rayN/protos/CommandGrpc.cs b/v2rayN/v2rayN/protos/CommandGrpc.cs new file mode 100644 index 00000000..6fdec4d6 --- /dev/null +++ b/v2rayN/v2rayN/protos/CommandGrpc.cs @@ -0,0 +1,97 @@ +// +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: command.proto +// +#pragma warning disable 1591 +#region Designer generated code + +using grpc = global::Grpc.Core; + +namespace V2Ray.Core.App.Stats.Command { + public static partial class StatsService + { + static readonly string __ServiceName = "v2ray.core.app.stats.command.StatsService"; + + static readonly grpc::Marshaller __Marshaller_GetStatsRequest = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::V2Ray.Core.App.Stats.Command.GetStatsRequest.Parser.ParseFrom); + static readonly grpc::Marshaller __Marshaller_GetStatsResponse = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::V2Ray.Core.App.Stats.Command.GetStatsResponse.Parser.ParseFrom); + + static readonly grpc::Method __Method_GetStats = new grpc::Method( + grpc::MethodType.Unary, + __ServiceName, + "GetStats", + __Marshaller_GetStatsRequest, + __Marshaller_GetStatsResponse); + + /// Service descriptor + public static global::Google.Protobuf.Reflection.ServiceDescriptor Descriptor + { + get { return global::V2Ray.Core.App.Stats.Command.CommandReflection.Descriptor.Services[0]; } + } + + /// Base class for server-side implementations of StatsService + public abstract partial class StatsServiceBase + { + public virtual global::System.Threading.Tasks.Task GetStats(global::V2Ray.Core.App.Stats.Command.GetStatsRequest request, grpc::ServerCallContext context) + { + throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, "")); + } + + } + + /// Client for StatsService + public partial class StatsServiceClient : grpc::ClientBase + { + /// Creates a new client for StatsService + /// The channel to use to make remote calls. + public StatsServiceClient(grpc::Channel channel) : base(channel) + { + } + /// Creates a new client for StatsService that uses a custom CallInvoker. + /// The callInvoker to use to make remote calls. + public StatsServiceClient(grpc::CallInvoker callInvoker) : base(callInvoker) + { + } + /// Protected parameterless constructor to allow creation of test doubles. + protected StatsServiceClient() : base() + { + } + /// Protected constructor to allow creation of configured clients. + /// The client configuration. + protected StatsServiceClient(ClientBaseConfiguration configuration) : base(configuration) + { + } + + public virtual global::V2Ray.Core.App.Stats.Command.GetStatsResponse GetStats(global::V2Ray.Core.App.Stats.Command.GetStatsRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, global::System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) + { + return GetStats(request, new grpc::CallOptions(headers, deadline, cancellationToken)); + } + public virtual global::V2Ray.Core.App.Stats.Command.GetStatsResponse GetStats(global::V2Ray.Core.App.Stats.Command.GetStatsRequest request, grpc::CallOptions options) + { + return CallInvoker.BlockingUnaryCall(__Method_GetStats, null, options, request); + } + public virtual grpc::AsyncUnaryCall GetStatsAsync(global::V2Ray.Core.App.Stats.Command.GetStatsRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, global::System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) + { + return GetStatsAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken)); + } + public virtual grpc::AsyncUnaryCall GetStatsAsync(global::V2Ray.Core.App.Stats.Command.GetStatsRequest request, grpc::CallOptions options) + { + return CallInvoker.AsyncUnaryCall(__Method_GetStats, null, options, request); + } + /// Creates a new instance of client from given ClientBaseConfiguration. + protected override StatsServiceClient NewInstance(ClientBaseConfiguration configuration) + { + return new StatsServiceClient(configuration); + } + } + + /// Creates service definition that can be registered with a server + /// An object implementing the server-side handling logic. + public static grpc::ServerServiceDefinition BindService(StatsServiceBase serviceImpl) + { + return grpc::ServerServiceDefinition.CreateBuilder() + .AddMethod(__Method_GetStats, serviceImpl.GetStats).Build(); + } + + } +} +#endregion diff --git a/v2rayN/v2rayN/v2rayN.csproj b/v2rayN/v2rayN/v2rayN.csproj new file mode 100644 index 00000000..33c3d80c --- /dev/null +++ b/v2rayN/v2rayN/v2rayN.csproj @@ -0,0 +1,393 @@ + + + + + Debug + AnyCPU + {0A9785E6-D256-4B73-9757-4EF59955FD1E} + WinExe + Properties + v2rayN + v2rayN + v4.6 + 512 + + false + + + 发布\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 2 + 1.0.0.%2a + false + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + false + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + false + + + v2rayN.ico + + + BD431FE78E8A6683106E7110882AE5C41CBF5C60 + + + v2rayN_TemporaryKey.pfx + + + false + + + false + + + + LocalIntranet + + + + + + .\Newtonsoft.Json.dll + False + + + + + + + + + + + + + + + .\zxing.dll + False + + + .\zxing.presentation.dll + False + + + + + Form + + + AddServer4Form.cs + + + Form + + + MainForm.cs + + + Form + + + SubSettingForm.cs + + + Form + + + AddServer2Form.cs + + + Form + + + AddServer3Form.cs + + + UserControl + + + QRCodeControl.cs + + + UserControl + + + SubSettingControl.cs + + + + + + + + + + + Component + + + + + + True + True + ResUI.zh-Hans.resx + + + True + True + ResUI.resx + + + Code + + + Form + + + AddServerForm.cs + + + Form + + + BaseForm.cs + + + + + + + + + + + + Form + + + OptionSettingForm.cs + + + + + + + + + + + AddServer2Form.cs + Designer + + + AddServer4Form.cs + Designer + + + AddServer4Form.cs + Designer + + + AddServer3Form.cs + Designer + + + AddServerForm.cs + Designer + + + MainForm.cs + Designer + + + MainForm.cs + Designer + + + OptionSettingForm.cs + + + QRCodeControl.cs + Designer + + + SubSettingControl.cs + + + SubSettingControl.cs + + + SubSettingForm.cs + Designer + + + AddServerForm.cs + Designer + + + BaseForm.cs + + + OptionSettingForm.cs + Designer + + + QRCodeControl.cs + Designer + + + AddServer2Form.cs + Designer + + + AddServer3Form.cs + Designer + + + SubSettingForm.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + Designer + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + + ResXFileCodeGenerator + ResUI.zh-Hans.Designer.cs + Designer + + + ResXFileCodeGenerator + ResUI.Designer.cs + Designer + + + + + + + + + + + + + + + + False + Microsoft .NET Framework 4 %28x86 和 x64%29 + true + + + False + .NET Framework 3.5 SP1 Client Profile + false + + + False + .NET Framework 3.5 SP1 + false + + + False + Windows Installer 4.5 + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/v2rayN/v2rayN/v2rayN.csproj.user b/v2rayN/v2rayN/v2rayN.csproj.user new file mode 100644 index 00000000..68f714aa --- /dev/null +++ b/v2rayN/v2rayN/v2rayN.csproj.user @@ -0,0 +1,17 @@ + + + + 发布\ + + + + + + zh-CN + false + ProjectFiles + + + false + + \ No newline at end of file diff --git a/v2rayN/v2rayN/v2rayN.ico b/v2rayN/v2rayN/v2rayN.ico new file mode 100644 index 0000000000000000000000000000000000000000..2a2f85a92ab846518d590b2ca8aa5fb0a1afe904 GIT binary patch literal 67646 zcmeHQ30zdw7rt*6KtK@@P*8B+KmipMl}%jAN-ec=Y1PWKEH$@s!6o;tGR=J{Ew@th zpJtg$Wu{r~il(8KmYSNosNDbey_tstf^0Jb$UJ{n=FNL^@44qY_ndRjJ?}mt6#R>i z7x=%NsOF*wA0b3F6nw=m)$jRHJu!WF(EmrT*>j<@D0+OhEC!rg7Rzh=Z24QQK78#s z@)-v-Y&5)y9dR|HIH9qVA&$jRJW;$*yit5nN}>3n_@k6Dm$LZFqMh>^@8P}t4S&lzSQqPL-E4zx zX)>Yd3DV>^Y{vm@%xUA>67S+@mN*eJ;uoO680r+IqF%35*6Wli_*>0rP^vrW^+7Ji zloE{3Eb4c>#(Q|L`8SnW2kT;;=DOJi+hUuR@}TJljZR#499G}}`KgU_Vov?cu~-6y zSa9r?174MkdRadF2o;Jh%*kjB_blcTQQE6W z<1#*Oku3bo?|6;(=yZlq{)WG09co>uQ>`0qur0P}Zksfa7Scr8NF!x|G?RA6kuwgE zcO2`~v$Vyu*DB_?P!{8|0>>!EYz>269}HI4G#U(HKAuJDS1MC9szD8}mhGecpL?xM z`Mz&=tTJj;m+Bu*>J~Kb{T?-!e)ML@>e+ol*3Nw^bp71Eq3ij1Mz4_7AG}s`>7-YK z=8f)JW9mDds*ZZSb%nl9MwfZ6L3OW|tdn)K4YtKL**0k)Euf8dM3V*5N}5SK`{0lR zFd>VFhCBT(jwcTk+Tk)fov2{Y>8e6U2Z8^!fJLZ}r)xx$FrU`Xw+MU%IFFvvBY4^T zexX0E7+Uwp+EMk-Zk!Nt^@qugZvOm1I>T&Kz+-xhIwwVv(XS%!Oy+%6OH{la$HY+z2>UV z-l?-6SfBd=nEf&>QpI=w>==1yZmhY)$b)lJN-{p*uc-GP!u{Is51=l}$4=D!<9m&6 zt{>Cj+|ogH_J7#3)+)-}|X# zK9@nSRDt~s((CjgrAxR*w2SiZIOLgX<7V{<`EK=ydZ)HbYIu`lnphv41H9(NCKERc ztgZT4l?k-Lw%8_gN%Hs5Enk9`*}X$H4(?oa{1cJ>9ZP$;MUZCF&OV?of$S3s`{s}X zFaZZ~*Zexpsi-SC-UG=qjQJoJCqrmhCC@n6@ID;pU&MzW|9(=Vo7CY4h_?xAj%BOj zoQ?Wac_S^f9kerF3=2O#_4Qh-dbFzWR%pc%aqI*8f<9F>%K`NP`^r8SRzFc2^YoSJ zE0qLq%EGQ!hVLHiWHf{}t>gRHpw3lC!R~H{zP$uPAWzJ^A&(v;dtj;Wy$~xY%Q&5)=xRO`Uh1(a-Ge{=>fQQhf5qHN_2Ki* zm$RGP{W?8Lt{GYX-1wJkENWKAw>5ZCi##E3fIVZ&4~jh?_KblsPVNnxSI(eQs`-^H z65gwA#a@dC*4~LY%WczKJ%9Riw$c;qGyA@=kbgeN5K2S6G zLP6jaeM8O@$vg6}pvi!SeKE{+R9o-jqz~@gv}^~=i8g#cx#7*iIOa3ZCCQ90GL|*- z&5(^)v*-j~)uc~A-T`~AD-|ReAolcQJxD+7TIC|n`dWRTtn?=0Hwlc-X26F+|NV{+ zBjsm<>KuN(O@-dz8RvIuCt1&r;e zb3BZDUnj)ygDVt^nEpo1dEZZJc#Uf#4(xNr1M&{>qU(qgET|Dsw2`w>T|3~sAivBF zi9O@iuE5?0bJq%0%DC5?*0a_}SPQ!b8FtwEOvZU;V}m?IT=d$QuGMED@1X&COkR`c zX5JHnyg0O&ZV}Mqh1|IE-X1QY(D{=wzq{-h_cB$3m`R%xfD+ge^^X2LzU~IZvFYnM{JmWIds!GC$&8`S=^eVcad3%Pq|pVMv9L#c zFh%b>8T9^Ty^GXb&@XfbaOTlO3RrDFW=N zb1IH{v3k#~?=`w$3t#`xyg2#$vJUd_qQ`P5H@VZZ>F_*X(LtVn4S%ptyNZ2)1@q&H zi8dd=N2?zk`%Z{M!RJ)Uc8c?F@%5PcJNM194WAD!Xd(aFGDiNheY!mI=@a0+Ll2~p zNvst_OXSP#ZWU3gB{4B!qs|A2l{F96r-!fS3OOrPreu-eC4=fL!2122gIL2(LzflC zNwiE@*h0nr#>GG7nVoZG!pDzTphr7 zXRChLzFydYahsli1lOYZ`^Mqy>F5y zOZ;!hJITrN#)Xse^pBIE7an%VK$*UGhXzso;24wr`( zG+-qL0Xn^2ol|;u zdn7P+>wAs&P}e|z*}&(wO)=3E^69vo;FS-Kf; z_cmik-#sS><;LLVqA%ub)Rjf9emr!{P3A0H+kV|!U*`DVxt%1h{PnB+rz!0lT%fub3iH^vgYG9^vyMOY!0lT%Ap=|Fu~jeQx3-*@=3mS$Y-lp$0rUEWt_dz*tcIJ> zi8&(K^#c{xA_|{FEivlFYL8;R|A+m?e)jQKW#Hyjc_HB|d31T_Lazt7HiZ1~KarR5 z1TidP!ZJHPfZnU9lUp%YW9iky!-u23B-{J^mSZb>{TAR ze}#GM+sW_OWFWWrn`A+ifnR1Lhp1JdlL0-0WrYd9o9cHA5ii4 zhPQxwu~*eo*q7j}{cV44{69+@aQE|#OQ+=Nt&U+Z+-ml+_^2UpHEbCh)nCog~J~Je#zKV;`Y?nYL4=7 zbt+lG$BnVz`^^EA;x5iEv9(J2!}c#sFzNmW0DtHLtQ%7XOt}Ls3WY7855WB-77Ywr zUZ;{rSua-?`t|AJ-}R}Y!p&7(CvfQ;SEjUFSZ!|!=x z`)#5B@A?9Fux7~okrQ9{gA5dc{E<1a68V~mU0Vh;bTc@)`WJW0&<70kcGbIKy$Jf^ zQTUGMA4vSUZm6ys|00jC?eoB|8xuq1>|Mn3x$TR&7~KO(x@L%fIo~3BHy2&e|BbBI z1@Zo?7Hdj&)|J+q|E1FZ<~3t}cl#FdM^5cV{>ZBjye+^p0@v~Go7WHnEE?!jBt!hY zi#a1kthnQyDgEL1-*}MmSLFhFfa}J8tbP@GATQz^_VEKS2T1zp&06tD193NDe6Q`t zH%hrcg=+-vTcXukMigjFFvrg;J4{fckoW6Da1A~ zK*cz{Ie-%6SKR3CYV^RnlBNUyJec=s@@7B$O}5~sDR*GSbFgy{oE}i06GS|3u6q$< ziE5=hGRg%}8dUT)HVrB1h4)u{V)p&=NCxbSzbXTG&g|lm_44=SogOq>puT@#`H(ux z>Q?eBRj;B~MlnDoB%ruc=O$%*k?-?)VZ)y?a0@v^=k_key75zX_IEYCXOq8bUiivk zb=Nen<5MOiz%xVqtNVF4z4~am(z|9v|F1COujUTixGewO|G7N!*#nb5qP{n2&4_y6 zv~5@_paw9euZNQMP$Fs+Gxlm*!4EORb%hguQ=BO2+66pwKIcKn9Z>Pdoc_CxF{J|| zf-=NkG!FJK_HFOLU(Fx6c2S<)wGcAUrl8vb6aMek`>sqEx<}i(0S4?VR~*j| zEGn4x-?UG_UHnpy=bV0j{lani*XGgYeFqAh9#H3h@c)-JtL@|6GQ=-k{D(J<63^EP z(^v9!cSXEtni>B*vVEBUWB(^@|Ch{hL(cDwE9zL~+D_*8XJ0OuJHY*@4i&t;Cz6>9 zzHD%vIYIwAfu8u;gJ{5L!JCrf$#-(%P>YKFY} z_g-~<&-yZeeFx4RktebLh-u$}f}sbP2h4rCK6|J3Bw*{@rjd`Xq93=3OMOJwDJsH4 zTsbc^{`^5?U*L~ty=@YY$bwGEX8aHMUptc^kFD&guIXO>^A~k}&n7Z(=8!!3?cjp6 z??5ufbJ8aR!UhxDdZDfgu}*vRY!e`!jP_Ohy^Ky+|9KYp7o7E9GyX?Ee@)yiq<_ks+5!Q3A&FK^JN;zL=r^g%lC@;6pdP}-JTCRA9 zhdgwAV@QjK?iv2-7i$JI7V}=IuQUtwb;26(0N{UzIpp@2?VS1lDh6}XpOov}8rJrFSZwV5n7THI=RaD(cAP5^&;Mnp|5Nk&$dYy@8Mu1R%6fqDr_1vEp*6@I zcrxF}0Psr&ju+;=71|CMD<5`ftW0_`LWBFBzbAeuD`cX{H{3KKq9%O6J$YjTtUvy> zad!B#w(_4HGq9&LWgz=;!2A7%F-Yz^@cYuI^M?%J`A_8X9-R7GusY~ZZu1vAR`QiW z86Taa1H|CgLAnKfLp}G;j$TIm?Qa8YhdPklgW#I(sUOB;&ET~9Y+&}W&PaFA7F>dknJEve@2$ui88F%YsH7D`>J9>y z`iTR)m6sml>tpYKtms!?Y#$dZYWkGWZTlcH3O3|#&LQm~vv=FDHU1_{xR!JJr}re+ z_pFCMYezUDjpx=-A`<+$8!$)+AEaSZN`G=KHy2fS>y!nm`!+VP4 zvHgUUW5tfCk&RH_ANHLG+82M~!hOWKr#$x+=QBaplmX@t{j~-8BOlxE-6hxy{^Y{` zVX;z<5|@VeQjQILIm`I-#@>%s6I0qXP}Yp7UjjBjodT_ux&C{<_)k{G z9%bOf`hoJw>0MUOAyD62!Q25G?^jPf&38epAJbsvm@YxyGdo8pJz7-B7WTY(PUjf$ zb+3mo5Aaf81D=HqxMF=j5Pl{1ZcnFhto*b6BlG%QM!vTB`z*$PvLXYd<&V{`sLurQ z-BZ@o1M2=G8-_r(ZTIdH>V7=$c@6JmeaT7q>gK%=rA%zwFx&XA9$!^#n-e4gDhUPe znhZc}`)6zWfy}MuJ`D7~xF?5Y`D@d=@&ca6%91X&CjPVqkO8hAUrPKTYwc$>j)dH_ zE2sCE_MWg&?!bP;e6U~l&KbRGm5&G)%93|0i&+CJWE+3}VEf=!V*6X|m5<*D*JD4B ze!xG8^U5rZBk=M5_eIOZHLuAlu(wHAm*F!Psmn$6d8{mrKP%&}(#>@vtm#}hybkNf zSD**1ltaKhX!!0D=8ss}7MSDxx4s-%Z}3}fsu(x+Y^|($vssR?=a1yD5kiii0za^? z*fA|K7`nxJ@nEdeB!2aVx+fFg?`Gm}+P|6TeQn&?0)NUcWdQFL;J)H~HZV)FsL^zv zzubG`(ur;6cb8Z%w!;1Xewfnmz{dl^!ldjfzUuglSla%{9OKU)PU{#ccD(emGU=7- zM#O`Mm~}uVV>`34kLxM;|B?H#Wh?y6I*eM3jK0d?Pj<6GftbhAnh5&S-h zIo~bBdq;MAB*1B5n>NbON9yDXd;WNHugAr%flrC%qN%cTdQ>&5>3{-+KkdQqOFLj~ zXNh_J*gCd={^iA^8}ROuF1a309Q&B_?O*(Mo#2kenkj30JSLWReK^bP{8n~3>?AQ;hEnSs(VXYM-Skg1q^cNcqS#s)$MY|QmsAO-(K_5H5t+yAuw zK>Fu!AJo`gZs-5^_g76e?Z{{C_o--5ZlLp;{>iBfiq zZYDMji^&Dj8UOV3_5g8yufOcc#8Gr zQd!auh!f?E-t_uN9^hT3jD?!#9hv<-fcx-l$8O|zhV7r(LR?EIBZ!eLkFD?56&Dvj zq%0Z~qCYS@`UT*B$-ZktS(sa9k$;)-H$Pv;*yDWf@`kYuUK-Q2x?#t}NafpcnXm8X zRyNN3hVlQKkLqLWoZi?CIf5TR1`rp_jW6K9G+VL;e;;c+x8UuWJN@&&e)18- z#vX@U`lOI6J3t2F#IBE`D*=0TK49M*fx;;>F4(w_gfVo?jldTXW~6D$jf6>e2nXu%9?;JR{+IU7jGnM{N~E`xHH5t3E#!&d z{0e&tU6josVwm`OYJJG*L$C!g#ehAZBUI;xX1R9E5!082WX5$7Px%Mf_uV?Vu?Ml= z{$YKUr}=r@rwD-g!}_;l#73+`&3!sr`FUED6ZAl5$iNX*4>)4Q_sTzfeAr2h``9Cx z=RLD-Onv7iFT^QZM#P8>gY$=b-5II11u{#h|Lpf(J!owzD`9k`2>*rLM#XB zm^brcD)fHk&)$Zu{{m|(%fK^~2jNiX2Jj0KXEqZq;!y#--Js`QM89{T+=2WTIvHS} z*?01QydY0pMO$%VcC$Q<>Dp4>(pJOD2W z@1QWp^g0T8NxtS=IUsHHVTik#X43x7;d$uGv^b+qV9j=JZ$;~GVaMIF|7tEl{8Djv zXlHTxlXi+cxL6#UA8SaM7ZZ>$uSpm1aV5%06wVhIC(+``c_|O3aZXxHnA4vpji8k@ z#{{qs^7NPD^5XUi`zFyx_SJD@%mFzBIVCLf`zVu|#)nGpA`0i!)V-GafqH^EA}2+SQCeWly4eQXVw-Gx zAZZ~@q>V(9R?t~{0)E0I#?I$)auVaJ$6vy;DCbz4h}dt;NU>cH~?Q3MHMO0 z9m#M!HfiVP3e%ozm(2~NR4>F({@hG0?~3MmN^|B0Q<}s3uy{T3ZhdNxHr+i}35dUY zuJHc5rz!y!&8q}hG_Mk1(Y#7P+H(tXRD#l;Ct9`#0ykNngTS=s@s`&?aN2Xr%j`hv z^P#D_gAS!VPt`qiFthVi-30@(d!C9NU{Kog#MJaV+xvV|>h|>y+PS^?nYO*OcxQH= zUHM9Te_DA?v%}WLwBsSO^EBg2${1mB=|8?|G^YQa{GuZBW&h76gObR0ON~)`CEgmx{nZo?8&K zk>?f!4duB70qW^p0@UU$IB2#fDI#RHHz^_zX!?Ch14B*cDGiuUHAu|WrSwSc4ev3_ rP_%Y`a&fZ6WvF&86M3F;ySdAODVM>+7@e7T)0ZIGOsvICS^D^Y+MnoH literal 0 HcmV?d00001 diff --git a/v2rayN/v2rayN/zxing.dll b/v2rayN/v2rayN/zxing.dll new file mode 100644 index 0000000000000000000000000000000000000000..7b99de64bb50ba94b7d4e5ee7de4fe393f46c7a6 GIT binary patch literal 450560 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

hgSVMYPzzfZfFIo=Xjfp$Rkp6FMIhVswX3 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%0DtWc|mylnI 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 P1d>M}c?AAfj=+BbrS9ZE literal 0 HcmV?d00001 diff --git a/v2rayN/v2rayN/zxing.presentation.dll b/v2rayN/v2rayN/zxing.presentation.dll new file mode 100644 index 0000000000000000000000000000000000000000..8ad3f9bf555e2f6eda9336cbd1346971bd49f93b GIT binary patch literal 21504 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 H=YjtX1;GLd literal 0 HcmV?d00001

MfI3u}etVn}Cv?GKOhNcwScM+U84_X=TM8q+jdYUu z(OvXbcM;=&q!5dv2qlJ5HWf%`%-+U7$Nm#Hh=occ#f}qUAr>iYqJi&cVWC@HC?p~c z9fZ5~pV!BBdKBB+Lq7o9Kmz#Pal*#GHgoI5PLqZjqu^|I_n-bAgIRL_TH`TK=(l;d zyKCNG-Sw{tyq#CJvrgzi>*Se`#eW(T=K&jUBBycq^9cOA8$0^r?f2cFN#I9P`$Cro zb{=MfKO2LV9p)Rj9x92yI-x5W#4haR??x`zusShXX!p za1VcX+c>T*xT0+eGkEJG{@F78eu*tf&%kWjUhBx+S5kabI5<-Nm9|lc`W-WmT;cvY zi5pM^KO7L!@nEZY@#9mV|AIY*vLgHPy#L39|K4`^8M1Nn{N1pNuefIXgKp%Yk*feW z82$CI)67Wx;0k=qwsB-bBsP*@+gD5{a%b{a!bpOD+Me;}m&lI;8ypff#H9cA`__Wo zAF2zJXZkfd30HXldDZV03~;5}9@5BLG0o&be(OC7MUPY)at&fhSNyIGW@W)O&;=r; zi&J5Oc@#q72*60ni36u`=Sgw3@KUqqdE^d281^GFSQF_ViE;BVUIU(rWvoN=!}zCS zxD^}=(PED?5|IkCDK2^7lY}&%yjMnoQ91e4SL;o=*poK-xUT6neYaDIhaw1(XL9dH%q? zt3uBInGlm8lrZP^y9JKza6bYbS^kC{hrSRS##96|LnBRx5`W3d zzl;H;I9kWta+zy8%sa(S=ntuRG4F75I1=cxsz}==pr3%Q3wp!hP*PrafJ5S`_Q&_P z*^mR^uL?W;4d!Tsm8a<8ODCtcO$j+1W~$om1xX-XNN;|s6g*P}f1Do! zsS4--6zIdWp%?U*u5>?)^=3kO5=Mc-w%96eSjrMg373zv;G?E1CMNoIehr=QpA9M9 zIzS2+dWdopRFt6f1XU%d2|=|8s!mWgg6a~~h@giEdX%6{1mz^?VS=6@s1!jB2+B)P zMS@!3Rjj-U{PKil!34cY(7OcnC8!HQ?-103pjQbRfLHt+Xi~^GhxC{TpXE}b55126 z_)sgZ>JRhxkKqdtK563Fjl16HsVcof7lhm&M5f$aUV!Nr!!#z4hXW2oe~1mUO5>2J ztA}CIW8{-rdK36BX~ERS+h3x=y@yjFm|{>`qaViRc@E@Yw&FiAFlFNa1yelEzyusvOeGQpN+T4%S=%T4;;+cUwsAs~T6`4GM%?VOXFnw0X4$>`Nk*>`-kh!TqNBTy zpZKvGnU1#EgN%QO!?Pb>f*!)i_S@<5udvS}TaMzBg8jgbAs2AWV0B7klTYx|(M-TZ zNPqT$pPh4PA>AmfN2c(kfQp9tg_?zWHl~KYPGi>duypqo803uWU0%Xf{Q3|S6#KhB zP4$-z5!Q>XTnBe*MXz`-rE}kWv#( zXa9whEw5gS_V67?4Qk)i?s~^!+FX{in7xmuI_vy{=)xwtq>}vjeBwhC!DN>+d#G!9 zC#f=S`#Os-sM{F4;xer`DP)y{E-=G&Z%!_G(pXu7czgcD z(|YvPqpK*o@Dxl8TO9335slpqp_7gju?`lIL`LT0i`w?~W~L6D-J+I(=TK(z)6wJ( z*OG`hDi$gH^{eTA)b^xXYE9-be$6ip^$jjqAL1G?QxocCUhr+ZW2xT$)4()S#&GhNZ$CmpL>p8s6zY_prRJ-y!JbW}Om`b~4bNw2#Qsp4lY67kFG zlrQUjX$DTXl4-qEAU;S>PgNSkO+w#_`zp3O>fTVs8* z|e<3ovv`SZw?E#;S7Cx=^M`sSUV3DtggU==+tQY+)CDfjT5$a?+2FB zTNn8XmPWkNoxN1@*v1Vhf?e$Bw%*H-TNzOiF>J+KM%bpAt+Z{~n<_Oquv{IbO#I$T z)1`|gJy)4UB5lfNoxIFq(yXCktJde`BzwlLC9U7Ev&V{RNPbqPTT&;jIJG9eXz)f; zrpn}2jwt7RNl8d$;d{}jES(q6vU$lQnhT@IyFT#i59*d#_wWe&SY_p(F|8)%uraq)JCfkhI3ZLTSO_*ss zN3ts?jx#0zOLifS!=Eh`^{8)6DE(oBM5?i|*Epwx!`6_TLVG-|;fJTZ0nwkB6Yg*; zXC|9^rIx-JnV9?1yfDFw9jvmoP5BX}`FnamSg z-V5%fsuOnCIcgM62n-sKX?o8p`k77M7SgP&<<#vX3Squ4Uql;*o#1&<*&|g(QKh2Xl1g69P0Z7%PZ@xFnWeZ^$6C5%zL9cjK>%TJVH1jL_{j~A2 z99{C36UkHMmGI!ea2*q1B%LqTIhz%x`kTw3rMK9OpULLJ_?NQEjZNRk=8ltz4UKCO zA=n~x!;M20Har^7naxlRSY4n=LGnZ){7L`B9^*G+4t@Jp}Xt+Sk zqwuxD#i8P+f>*anmqaZ2xKMaa4k{@ifTMVKh=S|IB14>-Gl%htuz>Q&h{T{(BD&^=x$cDSe#-@o&kLEv&nr_otRn+N`4SWO z^V4d^Rucv{jyEoJUfY;xDz;C(xnY?3Ko*mbc|$7TRXQ){;W=jXu_MX?d)&Rm(Ags{ zsy~|TwI#61K3th%+&YRNZq=$$P@RwWZJC$80ME8DBaJ7Vw&p@ z%*?vFb-X{aYL2L#_gmA77V5gz&e>?TDwD~`zL2L(b(hKn2KpM*6}nGJ4~^URF* zl#CQJtv4sr$YDeH{4yiu3V54cR+t-XWt7KH`FL$y%(1uZUo`Zqk;LeHzapi&oRNmf zpG{zVBHkz$;TZlqR5t~sP(0;H6(cH_XMCJ0^#(whRM+7M>F|5?G6gGC z$4`7$l%om=lKt&?`3Xxc;*$ofmn598KbDlJ>ODr3%62rMOkXUkBU<#UecO=%A_noh zpY3^*BT^4+ip?CXzbM3~u3^S=?O@{m{SU^unHPBX9m>8cuy?RfP}yXi-<4AK&?2X+ zP}P;J!w=v65PtJiQlvcWq090Y1J|?*d)yz0_q%Z(i1HHD)V|_2$LgWma`$STojrXa8Vfm@V!lIC5zg3v+ur+r>mn!QMX0>yB zbE4zZi536Sj z_;mj~RUN2kCROX7P`SEp{&B zZN|HKTj@71)f~M4xY|#kw^mJ_t*-IBe&x>-(N$0V+bW_b7|K)LYBVI&L_kf|znf#A zs`o%EHlB72`mnpLyh*5l_@jKx+eoi<$GgI(1n;pQnv8lZ`y%F*u0`zp*Zt8oH;3=9 z)Dr{}MHuTG_%W#oU$_}cl+f!a5(*>24xi%f~XxT5FzTtO}`shWQ!apCmw zCoeaApZzYj^l7tubEw$&jx5Ly87#&QbC&d8GAx@u8dr+gzom6?e&{>Q%kOV<81-Y#B96=sO7>s2KTsgm z^}Crv*)<`W6xS_=OPq;r6Lsa6b)FgMwwo9C8X7)NZ*GvF&#tv5nl!d?^7_=f z@@qqHlIyHbQ@DBZIe+}%a^p=jGaG}@&%Eby@y%?v4^A}gJ{95q^fh;FdcBGdh3wlS zi5K66v*lRJP&T7(XWB|>iBMnu7CSn7A@FwW=aVhBgDkU$j}I7XMl{JC688$CAN%^r z%iuSf?rC|OGVPToD}uAt39+gIqWcXs_2WmEoYihbQT(X8o-E(NR=)0dt~ueDU>;9c z4O>h?;thd=>?#|DzT67L_aYYQmnT$HP8u*hGLTE*$-T=Z*0%fvXV-Lvi7w^+>k;&g z(g2ex@>Z9`OL?rE;}`N%7f%c^s|S9mY#F}kXG<&6aLr!TtLiBoO+%echC6>9si}Hm ze$S6MXT`f)ZR>toR^K@!d(UeeETBCkPnKIdlm7f!Fg54y^uAj+x~!!mueJ&}_my893tEGH53vZ$f1D_1zgmZFW3`c}aH9+HZjdw{OVb)LlHbxjcOY(J$vrqUjb%oX zWkuef^mhkki+T4>?o+s`_uy^UaOnGVBXODB3)7ccKI^6XX{mIuf7^1{Cu4?DzTNv} z^2j^?@Nk#*_~}C#tJ-%jpC9u-E@p5Xi-|}ccM{)AQ4vJr_~LlZ^AY)yilB8e5q>q+ zGv|K1UAVIUNDM=K$kkH8IIf;p?z8oaSB2A5%gc#2T9d34>^LvQEPG1}XvW4Q7|+k~ zd?sVJ*D&$x`Vrn@_GKz}@bYirm`cgX9G@O#luhxz;^wbnL%|W}%|%UDJNJ{u+dV9K zQG)KSAS#n^%6_ARpwE(6u~|kvh5$J@ofdN?!{oGq6kXTuHj=X;s@z zPvm2=nbzd?sNVhk{<-J+Dlu#`snTyY8ZR*@k$=~?Vvd{p7{;gAKcTQatUFJXsLW_*+0nM@PfE2Po#>M|7;x;ty%?=cVc`b_x_s+{6Y-3$ z#&^6}Mvi_ImPmc27Q&!3E=R(B3tMz0a`@A(C8LWQ7bex>WcB9uk^4I+n##7n{1{r> zlq%^brEsIun6Jty3wOo0^ZWa1=T5E*lo?M(#`Z8R-11I2+hyCZE0fmimC=*R0_j>m zqMMtkk3Tv3M{1AzrUh1Wbn;5S!d;?1SMs=4?&6sadI8srKpc5) z&fbKwv80LocJZs|`locL)uS<(l<*PSIJO&hG({ASCxs#{9Ad}Kjfm{+wHG-ZOw9r< zMZ4$CQ0E-Tqo+BDlCJqvELQxWtJb$n@2O?Xo74&|&HuVy5bSFe@{>saMKT9Gd^FrO0~jMX|oMTn_nwYNo{5ZW_Vfx0D>}5+rAq6i9tc zhD>IvQmlvc#GJxslx<7B8%(qA6kB0;A8>9>{LN-mqLJDwx`;}JWIr)WfgTy3NKK(k zX=Vx4A;E0Jdq!Dyq?KJ;$vMqUVuyR;LoW`daXqrAO#fy+&*y3P>@l%p6y;+KdFm9c zgq$1NI*<&dzbm@zjQ?o957V^_!8Gbz4yk*s;g3Fdl+yV2&*V|{4ebkRYi*xvA3bF= zkhQY67wdGZl;y)x0pCUEbgvP%JQc5C3PYGF$j-%zT;@Fk5tUJdW&GBPS(>e>{Z<=` zLz7Y><>=Ken%3{%li{fikGMjFQ=4?%tl+1I!FRTpF$%+!?&3^WxuvvoaLl=3J?w~$DPmgt3mX(ii zwdt9BV;c@)0cXMc*;J*HRn*~649SK#gotOt5c_B65K}lJVdgI=q*G<#P(ym%YfgCT8v zbO7(uI|F8lQtl% z@IdOI_le9IDfb2MExQTTQiU3h>jr}YCuY4h$tKPG6e~4_ZujYO*4}3hAqt}{l7GQ7 zfi08jsgz2rq1jios7@J^9I-1b=A%&~3Zv8|rs}k27V0&k^S-diSoc|?19NbgTxVnq zZR}uIoK{_9D#N#twbmbN4N-1pT}Jla<6QE(IfEB80}@zh84c)|dDwZSTzXIPC_J*< zuut}d8vyzZm;>jUr7Vad)1I+~B#eqDH|`TC-Y|K?JMuPLuK9ZcBUUH~lj%^e%KNHW zhxzMIKV|+=OD`J{IqxM2Ue!D<42K6PqrkDVI>qz9sfJ~FTMoLI_|1rY8DH4k+^8(; zXpZ!4Y)Cwb4Ut%T7>O>*DAv82l58n0gN-}8KQ5ILle1P&pVkn3dB#{%dC`H^u}AKM zMB{h7+-`%67B9ck#| z$vn=ml*eL&_JME%;Jv-~beoIn>lI@T=MiNAVXHxjksCGWM7aDn*I2OJPn@~%nIpCG zxoAM7HGe`P-&jpr{>EU!YUe`Z@urE5Yd2HviyvefZe%84WM2hH-8jt2n|=(Isk)2m^v>s;%|INd7T02uBH2zwjDcqTWDhw68UF7E=0 z6mTRw#>%^;9MEFSa@B`uX#=e_<4*bMrjqD+ua&EtHQc%-RkJsaXYo=NZSwD4GRO3P z)3JlFRY{1z!TE;b;i=}Z zC*>Q1WwF; z?$XYuYmtedi4E+e)|(l@>|V8?=#J8%j2EJ$GEzCo$@k2KYph;n?^CZmdrY|aIYg*l z@18b&#P({alHE4v2jj8%ce|G3wiq(_UeLR%M>3x_Y<-~0aPc-kN6ZnFMt5W# zX|w+-&OkK4YybJ~fz*iPgEL~Ad_ouNdCWA__a`2_#y$RE|32OYW`V2OhXe};_wuis zC?ArgbQN;tTs)k0rAqk6yN4o@Pv5va3@djv__FN2=R%rWzxV^Mr~{l=v^51iSm)e4 zJ02ZZwhdG5 zYT#C5e!_ZIXYaW)k)Ga~gXZh!I57?ChI#ii;s%nGs~^Uxkk7tVl0Ubk=+9fB@ZpG} zJe`62DYbEd)1h~`bmwfe^u&p+^*xJa&*ybwbXLmm{C50hk(MvhsCKDehvBI7#6@nM zp$k^iK?cunXBbaK9yQ|sNpi_q$?)PwE*zk!AE{v&a5( zzV(qY9~!b5zB5wa$GGXfJ&iv8PIUU?K^-3b-tF2MV#;*L?^_JGU%~*%{ zEj{wowcYfGe|GzDtj1TLS}{uVT!61P&R1e@%m$p~n^V?jSi~sY|Ir}$Y&k4?ZAo+M zL(f%XlkP%E{oZvPZJ+EX=|R^Y#Y0&Mp#wkmwf0M%{oG|w-QAgLHPb%Ro!cRld8^s% zIcZDcNAb3C7rR#8-NrSSHtDM$-#=K}E8thhCa+ehf4;FQ`ozzQHvgyP3=`1}8gEnH zN7N*|tG`xTPsK3TsEGFX5af8esl09XN8$pZ$hR@_cOBQg?g^d}j+#8g9`i!>ajb>z ztLXh-=kE{StVt-YTZ#93)AU$sSIqC$yr0D7IP*U6BHQ&ytmw?cg_i4KxMQMs&R#}` z(~Mk-XbQCrx%sVld;98y>>_dxSe*@aGn|sp7Z}s=K1VlCJ25P@Bzs<^a zJgCEsCUvwqF@?J@_N5i+$5+ptR@0`g`o867Jp0D^HRJ0ywFi>tZn3=(pAvcQsdptQ zPfj6mg}?gA@zV>>d^cV`EsgzMPPKb;HaYv3T>0eEJpT{4%nyCkS#%jP8ESN9>7kZ- zMP2)C3Yk?e=j$wy7eqc5D;^BVF5w);mKk2^EsZ-mjh_Rk*xK?X=3OXb&fD)1X0iH` zgR@5t*kA7dU6)irP4=Og>lB(H&LzVZU2p^7OlMjCyj}Oe@Q|0dfjRwoEq48ci6qgr zHTndmQ?FNChpv^sv#v{ib;tE` zwqps+=fZgM1QTM|Y7PqANG#k?VJBAL_N8BpxR;_jvHXb1;3Q9qoPikE-CW$0TiN$dD~@)Ok+o#TG2w{6}1Zl&dSzE_fiw&0*fE}8tH=jk)GoYcY3ZuO<_mbUJ? zA=r8~GRkT1q72_M3HIS#t4I;KVE!nB>1;(4UFsFI*dC3Pp%-&ag`4+=z9|dm<8&Xf zT7Ns}LhL%LT2!wtGT66zQ`B7Pi=Mq);^Q`K-D-t|4Xbwuo!gkPWP{O&R@yn;E%~L1 zxC3dS!R{=QGc2V3@+-x%2Yl=HA znani>|SxFahjkCik#yw982U! zo|CNyRj{h@i@g1D?#z+>R~ACz8DioDORsXr_HbQYtUp_>nkL-3K~!$1V3o8SbBR+^ zK-$|lAtv@S&)mF*Jv-TtE;RZnPkl0sI^Yan= zJ6BB~+QpNi;RZk%QAPKgY$pk33XBey+qs8HANjZPt_3mB)s1-Eqwo13@VYcbik(6E zX3`a&?piBP6CWaax2Cks_wMzN^qE=q@ruTG@{e;k^L|CXFpCw1 ziB%DAZH1^kM|JozdZ!+CmSwHhPEsj7xx+q7YxYFl7JcH8c4@#tiN2V74~_{7Z))-B z7CeZb7+k+&?8xpAc;>@Dt3!;x1m8ZGToo4l|wrzacd;7`7< zUDi~wHuU35Kgral&Kn9+PE~xyzE^Nr)$hM|Uf}9<9(j^Mxxln%>}-nntz8YaU9Y@o zGYcx87!mo^NB+K@?Rvva9Jbb^cKn+8BYc?Z)Jo*`p z+BJ?0;XS8YWmSJVT@ae=TdLBwj(pLWp1RkA`lF9kf$9B0GV-~-$UvMwj1xFu{+EBK z6IK?-4_L_l^|1up7M4~HrXH5u_?6tJon5@$Y^`lPxW%NUj|m+S6+Om%#?sVD$idmu zg`>%~bm{m)+Acd(jDS(@25kDD<9zxrGauhfGfgc}-9{z?k(=8}KVfi2Y zH{lQON8-Y14dO?9FzA>R?*||F=@I`Q@IqXkC?j-KEc z2#%59b`c!Y4#&L1vFvcHI~?0TaP0rU?fwUjOl7yt~w4j_Nb01dzekN~>?Du4q(1FXO=M-6+v1E>Ryz+vDu z-~fCBIDyB25zr5u0Ez)$U>zU^{DD(IC9ofO3YY<-03&b@_zh?UjsTf}8!!)00wKT| z;5{G!yaeokufT5LAz%pf0>^7zAX2Qos+`1c-oJfC5kf>;s+vroafm07L@XKnoxS zWB{(f9Do6EfErK_@B^uUEiehN0}p@;Ko1}d6ae19DuA?{KtKto0S*93fF^L4}cKx25%a!E3v#fF2!o130iZf4 z0JIIX4OAQjfM%fpPe6zCKv z2MPdvgaSY>q5#l7&^}NZP#Mr76aab+1%Unp{RxT&MT6c3y$z}YssdUES_gU%1%M`_ z08ncb0Qv<5fU=?h&{z}zst>9U+Jyo@B~buq9tr^U0`&r223-cF1Em9vKmnkdpqijf zC;(Ih1%SRq0iez(0CWa)26QjzUeE*-0D2h(fDWMmP&pI;S_WDMdIR(Z=oaV}C^8~d z9^eK{0D3?R5CvQS3P2S&1lRy;3(h$kU$Dp;51ML@Bq&M zbKny|&j39H8beM=Mny_ZLPJbTME4ixCPV-+fV}5S3Lq~VQsDb8`1JtTkn^DJZ=pb5 zP>>Ip_7*6|Zw&r_C4s-;h<+WERcK5orhbo{SuSo5ROAJp>@FT3!H#(H{^#E{0_ij2-wikd>#Je^RNyxQ_CxqNC^6sx)NA+Q_5_hJ91!S4echj2UW ze;4@e009VRgCgY_0-S;HB5Y3v{__9}N}d7*`xgiQ6+i;kH^Tnuz;6ZcLHIQ&Qrp0M}5^f)W9@00jt-66*f~zz*Sig!=aeq#@i&sDE34AHtcS$noL;H3-iW z>R%6FM$uCc6K&VOCvXhbzbDkcC2#=3FF}#=3IvoO{FPAu#sC+D9}?>SI&c!gy@dLA z1cV@52#TZ^253NdjZpu{HoGAIRfPI?2gG50EusFAGUb8r3s59J7B~&zaYFrH1UMiZ zL#Y32fDD8?3H5Ie2tqg)6iF`>I1Aw=LjCIltbbDfUVtR5|468RYv3S+(?F5^-3C-3 z{GCw$mw~+yjwjUr4L}aUgM|8b21FoS3W}r`0cb*a^B>rM#SZ&_vcvvIcG!R94*PG} zVgDIB?0@bb*nj;F`%m3r|C2lH|G^IX@7ZDh1v~72^&i-O%?|rd+F}2nci4aQ4*T!e zVgETh?El9TJ`?ElRU`=8!n|G(Q|{{uVhzhsB~Z~O!Mui9b%&vw}VrycemwZs0~ zcG!Q`4*OsD2ln5v!~S3Gu>YwY_Wx*y{rBy#|DqlC|MMT%f87rIPu^kwUv}7k><;_y z+F}2BJM4e?AJ~7>4*P$*!~TEY-kAqCQN?lmZD*&71VK<5fl{=6mPu7s@1`}I_MO^;B z+qvBR?D&pg=W<5dk0J-yIbSaRQMy7qXDhHDOeWYlN1lBTGS1G8+}}Qz`0NDbZ74q% z<;Uvf3-`0{u9x3!v^}Jkug$gR=;cQg*m=D?&9m>VmmjsieT7lJCEgfMw8b5|N=j-e zT^>P4r5h6H^65mv(G-feJ7QYAKHcC*B%#z&=}`kQ;NvOrT zSR&l$u!?7Q8pm*KUuQUxOlskD_VmLI8Ybr+Gb=+iIMw6CZl(cYeNx_jj&v z`>U^u4xCR?Yt};BO0`AfYNE}NigsjkXD>C~-mDRXxtCM zjM@w?1}C;>)aSq!u;ToT`o#QCC7bkp3F`{1;@@!?3>!zH*f9 zx;Ud2fPDB40?#Agu)ZDEx5N5&SltZ#?)?XIS8|B8nFr~2~WsJ)%5;GwE- z=TiDF%H{3FDZ-04LMJW)mOV|6TP)V?AHYz?cT+|sLxLk3|FiWEGegNn$5Cnw3YzQ? zMi?`$yBRYbdq7?81y#8(G-p0$cE)3NWfEqf7-o^mF|!rM?A3*sy?Bm%qOWN%Lhg`l zKWodgwtQfOU@OEn7TY*%J1^fi3oQBF(5IMovd^@qn$~xewr-tn9l^!6GT4o+GbG)1UpKA^*7xbHv>UeTz?IA1f)%Fz z&^W4`boNN?&mC1x7H_!d6rr`8tg5bWTJb7Ai$^2xbd)KE4+IXz z2^E9GQKkrX3ij#f{zFhd$NyYk3 z`GqLc0$Nc=8h+3R|9bd)uEqJBz>&WDQP15dHywFWs88m|de}a&7<7TX(0==aX+Q)% z5CErwvp^c03l@Ou!5!cs@HkijR)e>|$KY$Q1&mCiPA~~jPytQ`bs!Dqfh)oF;C65i zcn~ZB%fNGB4R{s23qArH!MC6v{0jDJ;Yc1B4<>=bfCP>Pr+_esgA2fw;AU_ySOQjq zH^FD1AJ|(tk`E39Q^0f}0uQJLSw%5a)r^9+*oW+E%@^w$VYHzR3JqN_-cSSwLhm@B zJ|;r-OvVE+6*s;JZ|Os!fr{~9Ovh>z3T;vXMI>M)k%-kTF04o@g+7w8GRTY7CO#;a zGN>g#slb}7W3YClslKgax*Cg-pspB#hK2~%Yw2L3CEeVT4n`8mCJ57@sXVOx>0}Th zqdsoLBC(cKL(ovAMp}P$84*)3589IsVSOtJ=~|DKWG$*}s*A=olKsX!5Gfgml_gp* zfhN~BY#3v25~pSud`Q+KDNSoMOuE^) zXvEW6EC$mOx9V+6M$xjCg3sDA$jHHQH0y8%{wP`+cb4P`m3J2E(BC9Hd3 zC9HdZ#E$nM>uisQ2gd^mGzJ_)??KiR38e-S)(vTi4?Kt+6-I-11kvzKsd~~84#n^= z!$y*tMml2Ax^m>jI+UaJZ~unlWNQ)0aM%?>O(!=HPhW^J9O+t+4ZZN?%;m`1LB4|d z&;;=PUbu14zHY=bU^!S1-US=MCh!XwIS&i&K_PH}B0zx)lz}R68c;zT%mMSj0&pYf z2HEf+;w!=XpdajmbDs!GK>*CYklSU>aSRDY%&|`(!Jvv>7uV+Cwc}1N<#Qx3k~r5DyUru}qvT2E~}zA$Ez2#Jj}D#8u)e;``zkklDLS1=2*x zB`H#sbehyGwMp}(h0=Y}BhoX{I%$M!Z`T;t6j!-xzCs-4+TWQpmp_Z2;`z|Cr+2J( zo>yN0JQ@CX*jiz%v(|l~?C>7yJ=S}QSM{FlU8{Vfn2Uoaz}V;>bUpo)Qr0ftDle5) zQM7G~$Ng=_`8$a#ZvmTQ@-^2mque4S>Ur8H5}E$rcp zI~O|l63-Ruq*B-Ga+N3S*&Szny?0NgMIl}0bv4jdnk$|!+NH6jGfPLg$GOYgY48oh7rOsu}@0?qm2aBqBw)mCk zmrj;0k-n4WxR$tjT`wIuzI0OQVWo2ElF~|dzU+`IXX&C>;2v zpqu;X61tqOr5k83T6-%U$rtbrd9qw27t2%@WS1<=#NCB!@IvDw2vNDhcQbvV_6`yyIa;@wqrkAwL1V zYBFEM7xR=Cco#48KHksI;H&t_tcVpe$^_jI(8$wl`Up>vHRGAEW?(tr`R&KoULT5*jl!py}>rH_gN3?WgFR7 ztdDJC{cJ0K9Onolg;7GTP#_cv69k7aStt^U1u6)FOOOSh;1^~HRYE|h5oQZ#2(^ML zGzc-FSx5_WgmZDP<_nh!3xpn_SJ)_gCG-iKgnnTw?q7}*(}u%g7Ye@tqZh%_08#+} Dv=L>8 literal 0 HcmV?d00001 diff --git a/v2rayN/v2rayN/Resources/minimize.png b/v2rayN/v2rayN/Resources/minimize.png new file mode 100644 index 0000000000000000000000000000000000000000..82ee86e496f3e35a2e97b0b595e27907850d6578 GIT binary patch literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJ5KkA!kO=p;R}Hxs6nLC3epymw zvUg=kalo7`>pxA|!g5Z&CzDV9T*Sb{q0qpEuPkoZ=3t&sqV+!yb0^}fpNjeUJ z2zoj#0PBfjGK_Q*!p=_ajz1b_#Lp$AE?k)gZGqF_5cLt&ulmZPQFhJ)eAsB0` zxt>Y@2>O+>t7r=5fpe0|6xS@U(m1xjI{|Pz4(k-6K=FQTqp;R?&H#q(=W~-XP|9*@ z47kqJZ7C~3TqB#P0d7gk*QSAywa5U6X)WJ!jAO*r)&;(-td;zh1b^NIZt;;WaGg*; zVq;^I0g{hftLqux5yYCxB%~x**HPVR5>E3j09-7gg<711)SI^e+0d_;`@S^cS}Ig& zhfBxPl`EL<47i$5^EPy!qi!~uVuDdO*lDAiGt3Eq$0_PF_-lL*Sh2pd`3+Tw4Pbtp z@Es@dxkknWhGGI+lq7-4Xk&mi1Q$i={iWM;oUe)g8;*6_XG32R d_VL|m?;nwPzac>#=}iCt002ovPDHLkV1i;wLL2}9 literal 0 HcmV?d00001 diff --git a/v2rayN/v2rayN/Resources/pac.txt b/v2rayN/v2rayN/Resources/pac.txt new file mode 100644 index 00000000..4bed057c --- /dev/null +++ b/v2rayN/v2rayN/Resources/pac.txt @@ -0,0 +1,8046 @@ +// Generated by gfwlist2pac in precise mode +// https://github.com/clowwindy/gfwlist2pac + +var proxy = "__PROXY__"; + +var rules = [ + "|http://85.17.73.31/", + "||agnesb.fr", + "||akiba-web.com", + "||altrec.com", + "||angela-merkel.de", + "||angola.org", + "||apartmentratings.com", + "||apartments.com", + "||arena.taipei", + "||asianspiss.com", + "||assimp.org", + "||athenaeizou.com", + "||azubu.tv", + "||bankmobilevibe.com", + "||banorte.com", + "||bash-hackers.org", + "||beeg.com", + "||global.bing.com", + "||bloombergview.com", + "||booktopia.com.au", + "||boysmaster.com", + "||bynet.co.il", + "||carfax.com", + ".casinobellini.com", + "||casinobellini.com", + "||centauro.com.br", + "||chobit.cc", + "||clearsurance.com", + "||images.comico.tw", + "||static.comico.tw", + "||counter.social", + "||costco.com", + "||crossfire.co.kr", + "||d2pass.com", + "||darpa.mil", + "||dawangidc.com", + "||deezer.com", + "||desipro.de", + "||dingchin.com.tw", + "||discordapp.com", + "||discordapp.net", + "||dish.com", + "|http://img.dlsite.jp/", + "||dm530.net", + "share.dmhy.org", + "@@|https://share.dmhy.org", + "||dmm.co.jp", + "|http://www.dmm.com/netgame", + "||dnvod.tv", + "||dvdpac.com", + "||eesti.ee", + "||esurance.com", + ".expekt.com", + "||expekt.com", + ".extmatrix.com", + "||extmatrix.com", + "||fakku.net", + "||fastpic.ru", + "||filesor.com", + "||financetwitter.com", + "||flipboard.com", + "||flitto.com", + "||fnac.be", + "||fnac.com", + "||funkyimg.com", + "||fxnetworks.com", + "||g-area.org", + "||gettyimages.com", + "||getuploader.com", + "|https://raw.githubusercontent.com/programthink/zhao", + "||glass8.eu", + "||glype.com", + "||go141.com", + "||guo.media", + "||hautelook.com", + "||hautelookcdn.com", + "||wego.here.com", + "||gamer-cds.cdn.hinet.net", + "||gamer2-cds.cdn.hinet.net", + "||hmvdigital.ca", + "||hmvdigital.com", + "||homedepot.com", + "||hoovers.com", + "||hulu.com", + "||huluim.com", + "|http://secure.hustler.com", + "|http://hustlercash.com", + "|http://www.hustlercash.com", + "||hybrid-analysis.com", + "||cdn*.i-scmp.com", + "||ilovelongtoes.com", + "|http://imgmega.com/*.gif.html", + "|http://imgmega.com/*.jpg.html", + "|http://imgmega.com/*.jpeg.html", + "|http://imgmega.com/*.png.html", + "||imlive.com", + "||tw.iqiyi.com", + "||javhub.net", + "||javhuge.com", + ".javlibrary.com", + "||javlibrary.com", + "||jcpenney.com", + "||jims.net", + "||jukujo-club.com", + "||juliepost.com", + "||kawaiikawaii.jp", + "||kendatire.com", + "||khatrimaza.org", + "||kkbox.com", + "||leisurepro.com", + "||lifemiles.com", + "||longtoes.com", + "||lovetvshow.com", + "|http://www.m-sport.co.uk", + "||macgamestore.com", + "||madonna-av.com", + "||mangafox.com", + "||mangafox.me", + "||manta.com", + "||matome-plus.com", + "||matome-plus.net", + "||mattwilcox.net", + "||metarthunter.com", + "||mfxmedia.com", + "||mojim.com", + "||kb.monitorware.com", + "||monster.com", + "||moodyz.com", + "||moonbingo.com", + "||mos.ru", + "||msha.gov", + "||muzu.tv", + "||mvg.jp", + ".mybet.com", + "||mybet.com", + "||nationwide.com", + "|http://www.nbc.com/live", + "||neo-miracle.com", + "||netflix.com", + "||nflximg.com", + "||nflximg.net", + "||nflxext.com", + "||nflxso.net", + "||nflxvideo.net", + "||nic.gov", + "|http://mo.nightlife141.com", + "||nordstrom.com", + "||nordstromimage.com", + "||nordstromrack.com", + "||nottinghampost.com", + "||npsboost.com", + "||ntdtv.cz", + "||s1.nudezz.com", + "||nusatrip.com", + "||nuuvem.com", + "||omni7.jp", + "||onapp.com", + "||ontrac.com", + "@@|http://blog.ontrac.com", + "||pandora.com", + ".pandora.tv", + "||parkansky.com", + "||phmsociety.org", + "|http://*.pimg.tw/", + "||pure18.com", + "||pytorch.org", + "||qq.co.za", + "||r18.com", + "|http://radiko.jp", + "||ramcity.com.au", + "||rd.com", + "||rdio.com", + "|https://riseup.net", + "||sadistic-v.com", + "||isc.sans.edu", + "|http://cdn*.search.xxx/", + "||shiksha.com", + "||slacker.com", + "||sm-miracle.com", + "||soylentnews.org", + "||spotify.com", + "||spreadshirt.es", + "||springboardplatform.com", + "||sprite.org", + "@@|http://store.sprite.org", + "||superokayama.com", + "||superpages.com", + "||swagbucks.com", + "||switch1.jp", + "||tapanwap.com", + "||gsp.target.com", + "||login.target.com", + "||rcam.target.com", + "||thinkgeek.com", + "||thebodyshop-usa.com", + "||tma.co.jp", + "||tracfone.com", + "||tryheart.jp", + "||turntable.fm", + "||twerkingbutt.com", + "||ulop.net", + "||uukanshu.com", + "||vegasred.com", + "||vevo.com", + "||vip-enterprise.com", + "|http://viu.tv/ch/", + "|http://viu.tv/encore/", + "||vmpsoft.com", + "|http://ecsm.vs.com/", + "||wanz-factory.com", + "||ssl.webpack.de", + "||wheretowatch.com", + "||wingamestore.com", + "||wizcrafts.net", + "||vod.wwe.com", + "||xfinity.com", + "||youwin.com", + "||ytn.co.kr", + "||zattoo.com", + "||zim.vn", + "||zozotown.com", + "14.102.250.18", + "14.102.250.19", + "50.7.31.230:8898", + "174.142.105.153", + "69.65.19.160", + "||xn--4gq171p.com", + "||xn--czq75pvv1aj5c.org", + "||xn--i2ru8q2qg.com", + "||xn--oiq.cc", + "||xn--p8j9a0d9c9a.xn--q9jyb4c", + "||abebooks.com", + "|https://*.s3.amazonaws.com", + "||s3-ap-southeast-2.amazonaws.com", + "||43110.cf", + "||9gag.com", + "||agro.hk", + "||share.america.gov", + "||apkmirror.com", + "||arte.tv", + "||artstation.com", + "||bangdream.space", + "||behance.net", + "||bird.so", + "||zh.bitterwinter.org", + "||bnn.co", + "||businessinsider.com", + "||boomssr.com", + "||bwgyhw.com", + "||castbox.fm", + "||chinatimes.com", + "||clyp.it", + "||cmcn.org", + "||cmx.im", + "||dailyview.tw", + "||daum.net", + "||depositphotos.com", + "||disconnect.me", + "||doubibackup.com", + "||doubmirror.cf", + "||encyclopedia.com", + "||fangeqiang.com", + "||cloud.feedly.com", + "||flyzy2005.com", + "||foreignpolicy.com", + "||free-ss.site", + "||blog.fuckgfw233.org", + "||g0v.social", + "||globalvoices.org", + "||glorystar.me", + "||goregrish.com", + "||hbo.com", + "||spaces.hightail.com", + "||hkgalden.com", + "||hkgolden.com", + "||hudson.org", + "||ipfs.io", + "||japantimes.co.jp", + "||jiji.com", + "||jintian.net", + "||jinx.com", + "||joinmastodon.org", + "||liangzhichuanmei.com", + "||lighti.me", + "||lihkg.com", + "||line-scdn.net", + "||i.lithium.com", + "||cloud.mail.ru", + "||cdn-images.mailchimp.com", + "||mastodon.cloud", + "||mastodon.host", + "||mastodon.social", + "||matters.news", + "||me.me", + "||metart.com", + "||mohu.club", + "||mohu.ml", + "||motiyun.com", + "||msa-it.org", + "||dictionary.goo.ne.jp", + "||go.nesnode.com", + "||international-news.newsmagazine.asia", + "||nikkei.com", + "||niu.moe", + "||nofile.io", + "||now.com", + "||sukebei.nyaa.si", + "||openvpn.org", + "||onejav.com", + "||paste.ee", + "||my.pcloud.com", + "||picacomic.com", + "||pincong.rocks", + "||pixiv.net", + "||potato.im", + "||premproxy.com", + "||prism-break.org", + "||protonvpn.com", + "||api.pureapk.com", + "||quora.com", + "||quoracdn.net", + "||cdn.seatguru.com", + "||secure.raxcdn.com", + "||redd.it", + "||reddit.com", + ".redditlist.com", + "|http://redditlist.com", + "||redditmedia.com", + "||redditstatic.com", + "||rixcloud.com", + "||rixcloud.us", + "||rsdlmonitor.com", + "||shadowsocks.be", + "||shadowsocks9.com", + "||tn1.shemalez.com", + "||tn2.shemalez.com", + "||tn3.shemalez.com", + "||static.shemalez.com", + "||six-degrees.io", + "||softfamous.com", + "||softsmirror.cf", + "||sosreader.com", + "||sspanel.net", + "||sulian.me", + "||supchina.com", + "||teddysun.com", + "||textnow.me", + "||tineye.com", + "||top10vpn.com", + "||tubepornclassic.com", + "||uku.im", + "||unseen.is", + "||cn.uptodown.com", + "||uraban.me", + "||vrsmash.com", + "||vultryhw.com", + "||scache.vzw.com", + "||scache1.vzw.com", + "||scache2.vzw.com", + "||ss7.vzw.com", + "||ssr.tools", + "||steemit.com", + "||taiwanjustice.net", + "||tinc-vpn.org", + "||wenzhao.ca", + "||whatsonweibo.com", + "||wire.com", + "||blog.workflow.is", + "||xm.com", + "||xuehua.us", + "||yes-news.com", + "||you-get.org", + "||zzcloud.me", + "||aex.com", + "||allcoin.com", + "||adcex.com", + "||bcex.ca", + "||bibox.com", + "||big.one", + "||binance.com", + "||bit-z.com", + "||bitcoinworld.com", + "||bitfinex.com", + "||bithumb.com", + "||bitinka.com.ar", + "||bitmex.com", + "||btc98.com", + "||btcbank.bank", + "||btctrade.im", + "||c2cx.com", + "||chaoex.com", + "||cobinhood.com", + "||coin2co.in", + "||coinbene.com", + ".coinegg.com", + "||coinegg.com", + "||coinex.com", + "||coingi.com", + "||coinrail.co.kr", + "||cointiger.com", + "||cointobe.com", + "||coinut.com", + "||discoins.com", + "||dragonex.io", + "||ebtcbank.com", + "||etherdelta.com", + "||exmo.com", + "||exrates.me", + "||exx.com", + "||fatbtc.com", + "||gate.io", + "||gatecoin.com", + "||hbg.com", + "||hitbtc.com", + "||huobi.com", + "||huobi.pro", + "||huobipro.com", + "||bx.in.th", + "||jex.com", + "||kex.com", + "||kspcoin.com", + "||kucoin.com", + "||lbank.info", + "||livecoin.net", + "||localbitcoins.com", + "||mercatox.com", + "||oex.com", + "||okex.com", + "||otcbtc.com", + "||rightbtc.com", + "||topbtc.com", + "||xbtce.com", + "||yobit.net", + "||zb.com", + "||read01.com", + "||kknews.cc", + "china-mmm.jp.net", + ".lsxszzg.com", + ".china-mmm.net", + "||china-mmm.net", + "china-mmm.sa.com", + ".allowed.org", + ".now.im", + "||amazon.co.jp", + ".amazon.com/Dalai-Lama", + "amazon.com/Prisoner-State-Secret-Journal-Premier", + "s3-ap-northeast-1.amazonaws.com", + "||aolchannels.aol.com", + "video.aol.ca/video-detail", + "video.aol.co.uk/video-detail", + "video.aol.com", + "||video.aol.com", + "||search.aol.com", + "www.aolnews.com", + ".avmo.pw", + ".avmoo.com", + "|http://avmoo.com", + ".avmoo.net", + "|http://avmoo.net", + "||avmoo.pw", + ".javmoo.xyz", + "|http://javmoo.xyz", + ".javtag.com", + "|http://javtag.com", + ".javzoo.com", + "|http://javzoo.com", + ".tellme.pw", + ".bbc.com", + "||bbc.com", + ".bbc.co.uk", + "||bbc.co.uk", + "||bbci.co.uk", + ".bbcchinese.com", + "||bbcchinese.com", + "|http://bbc.in", + ".1dumb.com", + ".25u.com", + ".2waky.com", + ".3-a.net", + ".4dq.com", + ".4mydomain.com", + ".4pu.com", + ".acmetoy.com", + ".almostmy.com", + ".americanunfinished.com", + ".authorizeddns.net", + ".authorizeddns.org", + ".authorizeddns.us", + ".bigmoney.biz", + ".changeip.name", + ".changeip.net", + ".changeip.org", + ".cleansite.biz", + ".cleansite.info", + ".cleansite.us", + ".compress.to", + ".ddns.info", + ".ddns.me.uk", + ".ddns.mobi", + ".ddns.ms", + ".ddns.name", + ".ddns.us", + ".dhcp.biz", + ".dns-dns.com", + ".dns-stuff.com", + ".dns04.com", + ".dns05.com", + ".dns1.us", + ".dns2.us", + ".dnset.com", + ".dnsrd.com", + ".dsmtp.com", + ".dumb1.com", + ".dynamic-dns.net", + ".dynamicdns.biz", + ".dynamicdns.co.uk", + ".dynamicdns.me.uk", + ".dynamicdns.org.uk", + ".dyndns.pro", + ".dynssl.com", + ".edns.biz", + ".epac.to", + ".esmtp.biz", + ".ezua.com", + ".faqserv.com", + ".fartit.com", + ".freeddns.com", + ".freetcp.com", + ".freewww.biz", + ".freewww.info", + ".ftp1.biz", + ".ftpserver.biz", + ".gettrials.com", + ".got-game.org", + ".gr8domain.biz", + ".gr8name.biz", + ".https443.net", + ".https443.org", + ".ikwb.com", + ".instanthq.com", + ".iownyour.biz", + ".iownyour.org", + ".isasecret.com", + ".itemdb.com", + ".itsaol.com", + ".jetos.com", + ".jkub.com", + ".jungleheart.com", + ".justdied.com", + ".lflink.com", + ".lflinkup.com", + ".lflinkup.net", + ".lflinkup.org", + ".longmusic.com", + ".mefound.com", + ".moneyhome.biz", + ".mrbasic.com", + ".mrbonus.com", + ".mrface.com", + ".mrslove.com", + ".my03.com", + ".mydad.info", + ".myddns.com", + ".myftp.info", + ".myftp.name", + ".mylftv.com", + ".mymom.info", + ".mynetav.net", + ".mynetav.org", + ".mynumber.org", + ".mypicture.info", + ".mypop3.net", + ".mypop3.org", + ".mysecondarydns.com", + ".mywww.biz", + ".myz.info", + ".ninth.biz", + ".ns01.biz", + ".ns01.info", + ".ns01.us", + ".ns02.biz", + ".ns02.info", + ".ns02.us", + ".ns1.name", + ".ns2.name", + ".ns3.name", + ".ocry.com", + ".onedumb.com", + ".onmypc.biz", + ".onmypc.info", + ".onmypc.net", + ".onmypc.org", + ".onmypc.us", + ".organiccrap.com", + ".otzo.com", + ".ourhobby.com", + ".pcanywhere.net", + ".port25.biz", + ".proxydns.com", + ".qhigh.com", + ".qpoe.com", + ".rebatesrule.net", + ".sellclassics.com", + ".sendsmtp.com", + ".serveuser.com", + ".serveusers.com", + ".sexidude.com", + ".sexxxy.biz", + ".sixth.biz", + ".squirly.info", + ".ssl443.org", + ".toh.info", + ".toythieves.com", + ".trickip.net", + ".trickip.org", + ".vizvaz.com", + ".wha.la", + ".wikaba.com", + ".www1.biz", + ".wwwhost.biz", + "@@|http://xx.wwwhost.biz", + ".x24hr.com", + ".xxuz.com", + ".xxxy.biz", + ".xxxy.info", + ".ygto.com", + ".youdontcare.com", + ".yourtrap.com", + ".zyns.com", + ".zzux.com", + "d1b183sg0nvnuh.cloudfront.net", + "|https://d1b183sg0nvnuh.cloudfront.net", + "d1c37gjwa26taa.cloudfront.net", + "|https://d1c37gjwa26taa.cloudfront.net", + "d3c33hcgiwev3.cloudfront.net", + "|https://d3c33hcgiwev3.cloudfront.net", + "||d3rhr7kgmtrq1v.cloudfront.net", + ".3d-game.com", + ".4irc.com", + ".b0ne.com", + ".chatnook.com", + ".darktech.org", + ".deaftone.com", + ".dtdns.net", + ".effers.com", + ".etowns.net", + ".etowns.org", + ".flnet.org", + ".gotgeeks.com", + ".scieron.com", + ".slyip.com", + ".slyip.net", + ".suroot.com", + ".blogdns.org", + ".dyndns.org", + ".dyndns-ip.com", + ".dyndns-pics.com", + ".from-sd.com", + ".from-pr.com", + ".is-a-hunter.com", + ".dynu.com", + ".dynu.net", + ".freeddns.org", + "cdninstagram.com", + "||cdninstagram.com", + "||facebook.br", + ".facebook.com", + "||facebook.com", + "@@||v6.facebook.com", + "||facebook.design", + "||connect.facebook.net", + "||facebook.hu", + "||facebook.in", + "||facebook.nl", + "||facebook.se", + "||facebookmail.com", + "||fb.com", + "||fb.me", + "||fbcdn.net", + "||fbsbx.com", + "||fbaddins.com", + "||fbworkmail.com", + ".instagram.com", + "||instagram.com", + "||m.me", + "||messenger.com", + "||oculus.com", + "||oculuscdn.com", + "||rocksdb.org", + "@@||ip6.static.sl-reverse.com", + "||thefacebook.com", + "||whatsapp.com", + "||whatsapp.net", + "|https://www.ftchinese.com", + ".ftchinese.com/channel/video", + ".ftchinese.com/premium/001081066", + ".ftchinese.com/story/00102753", + ".ftchinese.com/story/001026616", + ".ftchinese.com/story/001026749", + ".ftchinese.com/story/001026807", + ".ftchinese.com/story/001026808", + ".ftchinese.com/story/001026834", + ".ftchinese.com/story/001026880", + ".ftchinese.com/story/001027429", + ".ftchinese.com/story/001030341", + ".ftchinese.com/story/001030502", + ".ftchinese.com/story/001030803", + ".ftchinese.com/story/001031317", + ".ftchinese.com/story/001032617", + ".ftchinese.com/story/001032636", + ".ftchinese.com/story/001032692", + ".ftchinese.com/story/001032762", + ".ftchinese.com/story/001033138", + ".ftchinese.com/story/001034917", + ".ftchinese.com/story/001034926", + ".ftchinese.com/story/001034927", + ".ftchinese.com/story/001034928", + ".ftchinese.com/story/001034952", + ".ftchinese.com/story/001035890", + ".ftchinese.com/story/001035972", + ".ftchinese.com/story/001035993", + ".ftchinese.com/story/001036417", + ".ftchinese.com/story/001037090", + ".ftchinese.com/story/001037091", + ".ftchinese.com/story/001038178", + ".ftchinese.com/story/001038199", + ".ftchinese.com/story/001038220", + ".ftchinese.com/story/001038819", + ".ftchinese.com/story/001038862", + ".ftchinese.com/story/001039067", + ".ftchinese.com/story/001039178", + ".ftchinese.com/story/001039211", + ".ftchinese.com/story/001039271", + ".ftchinese.com/story/001039295", + ".ftchinese.com/story/001039369", + ".ftchinese.com/story/001039482", + ".ftchinese.com/story/001039534", + ".ftchinese.com/story/001039555", + ".ftchinese.com/story/001039576", + ".ftchinese.com/story/001039712", + ".ftchinese.com/story/001039779", + ".ftchinese.com/story/001039809", + ".ftchinese.com/story/001040134", + ".ftchinese.com/story/001040835", + ".ftchinese.com/story/001040890", + ".ftchinese.com/story/001040918", + ".ftchinese.com/story/001040992", + ".ftchinese.com/story/001041209", + ".ftchinese.com/story/001042100", + ".ftchinese.com/story/001042252", + ".ftchinese.com/story/001042272", + ".ftchinese.com/story/001042280", + ".ftchinese.com/story/001043029", + ".ftchinese.com/story/001043066", + ".ftchinese.com/story/001043096", + ".ftchinese.com/story/001043124", + ".ftchinese.com/story/001043152", + ".ftchinese.com/story/001043189", + ".ftchinese.com/story/001043428", + ".ftchinese.com/story/001043439", + ".ftchinese.com/story/001043534", + ".ftchinese.com/story/001043675", + ".ftchinese.com/story/001043680", + ".ftchinese.com/story/001043702", + ".ftchinese.com/story/001043849", + ".ftchinese.com/story/001044099", + ".ftchinese.com/story/001044776", + ".ftchinese.com/story/001044871", + ".ftchinese.com/story/001044897", + ".ftchinese.com/story/001045114", + ".ftchinese.com/story/001045139", + ".ftchinese.com/story/001045186", + ".ftchinese.com/story/001045755", + ".ftchinese.com/story/001046087", + ".ftchinese.com/story/001046105", + ".ftchinese.com/story/001046118", + ".ftchinese.com/story/001046132", + ".ftchinese.com/story/001046517", + ".ftchinese.com/story/001046822", + ".ftchinese.com/story/001046866", + ".ftchinese.com/story/001046942", + ".ftchinese.com/story/001047180", + ".ftchinese.com/story/001047206", + ".ftchinese.com/story/001047304", + ".ftchinese.com/story/001047317", + ".ftchinese.com/story/001047345", + ".ftchinese.com/story/001047358", + ".ftchinese.com/story/001047375", + ".ftchinese.com/story/001047381", + ".ftchinese.com/story/001047413", + ".ftchinese.com/story/001047456", + ".ftchinese.com/story/001047491", + ".ftchinese.com/story/001047545", + ".ftchinese.com/story/001047558", + ".ftchinese.com/story/001047568", + ".ftchinese.com/story/001047627", + ".ftchinese.com/story/001048293", + ".ftchinese.com/story/001048343", + ".ftchinese.com/story/001048710", + ".ftchinese.com/story/001049289", + ".ftchinese.com/story/001049360", + ".ftchinese.com/story/001049896", + ".ftchinese.com/story/001050152", + ".ftchinese.com/story/001051027", + ".ftchinese.com/story/001051161", + ".ftchinese.com/story/001051372", + ".ftchinese.com/story/001051479", + ".ftchinese.com/story/001052138", + ".ftchinese.com/story/001052161", + ".ftchinese.com/story/001052525", + ".ftchinese.com/story/001052549", + ".ftchinese.com/story/001052701", + ".ftchinese.com/story/001052965", + ".ftchinese.com/story/001053149", + ".ftchinese.com/story/001053150", + ".ftchinese.com/story/001053200", + ".ftchinese.com/story/001053425", + ".ftchinese.com/story/001053496", + ".ftchinese.com/story/001053526", + ".ftchinese.com/story/001053557", + ".ftchinese.com/story/001053906", + ".ftchinese.com/story/001054049", + ".ftchinese.com/story/001054103", + ".ftchinese.com/story/001054109", + ".ftchinese.com/story/001054119", + ".ftchinese.com/story/001054123", + ".ftchinese.com/story/001054139", + ".ftchinese.com/story/001054166", + ".ftchinese.com/story/001054168", + ".ftchinese.com/story/001054190", + ".ftchinese.com/story/001054437", + ".ftchinese.com/story/001054526", + ".ftchinese.com/story/001054607", + ".ftchinese.com/story/001054644", + ".ftchinese.com/story/001054786", + ".ftchinese.com/story/001054843", + ".ftchinese.com/story/001054925", + ".ftchinese.com/story/001054940", + ".ftchinese.com/story/001055051", + ".ftchinese.com/story/001055063", + ".ftchinese.com/story/001055069", + ".ftchinese.com/story/001055136", + ".ftchinese.com/story/001055170", + ".ftchinese.com/story/001055202", + ".ftchinese.com/story/001055242", + ".ftchinese.com/story/001055263", + ".ftchinese.com/story/001055274", + ".ftchinese.com/story/001055299", + ".ftchinese.com/story/001055480", + ".ftchinese.com/story/001055551", + ".ftchinese.com/story/001055559", + ".ftchinese.com/story/001055566", + ".ftchinese.com/story/001055840", + ".ftchinese.com/story/001056099", + ".ftchinese.com/story/001056108", + ".ftchinese.com/story/001056131", + ".ftchinese.com/story/001056375", + ".ftchinese.com/story/001056491", + ".ftchinese.com/story/001056529", + ".ftchinese.com/story/001056534", + ".ftchinese.com/story/001056538", + ".ftchinese.com/story/001056541", + ".ftchinese.com/story/001056554", + ".ftchinese.com/story/001056557", + ".ftchinese.com/story/001056560", + ".ftchinese.com/story/001056567", + ".ftchinese.com/story/001056574", + ".ftchinese.com/story/001056588", + ".ftchinese.com/story/001056594", + ".ftchinese.com/story/001056596", + ".ftchinese.com/story/001056684", + ".ftchinese.com/story/001056832", + ".ftchinese.com/story/001056833", + ".ftchinese.com/story/001056851", + ".ftchinese.com/story/001056874", + ".ftchinese.com/story/001056896", + ".ftchinese.com/story/001056927", + ".ftchinese.com/story/001057011", + ".ftchinese.com/story/001057018", + ".ftchinese.com/story/001057044", + ".ftchinese.com/story/001057162", + ".ftchinese.com/story/001057500", + ".ftchinese.com/story/001057504", + ".ftchinese.com/story/001057509", + ".ftchinese.com/story/001057518", + ".ftchinese.com/story/001057532", + ".ftchinese.com/story/001057533", + ".ftchinese.com/story/001057556", + ".ftchinese.com/story/001057580", + ".ftchinese.com/story/001057638", + ".ftchinese.com/story/001057644", + ".ftchinese.com/story/001057817", + ".ftchinese.com/story/001057875", + ".ftchinese.com/story/001058009", + ".ftchinese.com/story/001058056", + ".ftchinese.com/story/001058224", + ".ftchinese.com/story/001058257", + ".ftchinese.com/story/001058295", + ".ftchinese.com/story/001058328", + ".ftchinese.com/story/001058339", + ".ftchinese.com/story/001058344", + ".ftchinese.com/story/001058352", + ".ftchinese.com/story/001058413", + ".ftchinese.com/story/001058421", + ".ftchinese.com/story/001058440", + ".ftchinese.com/story/001058458", + ".ftchinese.com/story/001058468", + ".ftchinese.com/story/001058561", + ".ftchinese.com/story/001058566", + ".ftchinese.com/story/001058567", + ".ftchinese.com/story/001058585", + ".ftchinese.com/story/001058628", + ".ftchinese.com/story/001058656", + ".ftchinese.com/story/001058665", + ".ftchinese.com/story/001058678", + ".ftchinese.com/story/001058691", + ".ftchinese.com/story/001058721", + ".ftchinese.com/story/001058728", + ".ftchinese.com/story/001059464", + ".ftchinese.com/story/001059484", + ".ftchinese.com/story/001059537", + ".ftchinese.com/story/001059538", + ".ftchinese.com/story/001059551", + ".ftchinese.com/story/001059818", + ".ftchinese.com/story/001059914", + ".ftchinese.com/story/001059920", + ".ftchinese.com/story/001059957", + ".ftchinese.com/story/001060088", + ".ftchinese.com/story/001060156", + ".ftchinese.com/story/001060157", + ".ftchinese.com/story/001060160", + ".ftchinese.com/story/001060181", + ".ftchinese.com/story/001060185", + ".ftchinese.com/story/001060493", + ".ftchinese.com/story/001060495", + ".ftchinese.com/story/001060590", + ".ftchinese.com/story/001060846", + ".ftchinese.com/story/001060847", + ".ftchinese.com/story/001060875", + ".ftchinese.com/story/001060921", + ".ftchinese.com/story/001060946", + ".ftchinese.com/story/001061120", + ".ftchinese.com/story/001061474", + ".ftchinese.com/story/001061524", + ".ftchinese.com/story/001061642", + ".ftchinese.com/story/001062017", + ".ftchinese.com/story/001062020", + ".ftchinese.com/story/001062028", + ".ftchinese.com/story/001062092", + ".ftchinese.com/story/001062096", + ".ftchinese.com/story/001062147", + ".ftchinese.com/story/001062176", + ".ftchinese.com/story/001062188", + ".ftchinese.com/story/001062254", + ".ftchinese.com/story/001062374", + ".ftchinese.com/story/001062482", + ".ftchinese.com/story/001062496", + ".ftchinese.com/story/001062501", + ".ftchinese.com/story/001062508", + ".ftchinese.com/story/001062519", + ".ftchinese.com/story/001062554", + ".ftchinese.com/story/001062741", + ".ftchinese.com/story/001062794", + ".ftchinese.com/story/001063160", + ".ftchinese.com/story/001063359", + ".ftchinese.com/story/001063512", + ".ftchinese.com/story/001063668", + ".ftchinese.com/story/001063692", + ".ftchinese.com/story/001063763", + ".ftchinese.com/story/001063764", + ".ftchinese.com/story/001063826", + ".ftchinese.com/story/001064127", + ".ftchinese.com/story/001064312", + ".ftchinese.com/story/001064705", + ".ftchinese.com/story/001064807", + ".ftchinese.com/story/001065120", + ".ftchinese.com/story/001065168", + ".ftchinese.com/story/001065249", + ".ftchinese.com/story/001065287", + ".ftchinese.com/story/001065335", + ".ftchinese.com/story/001065337", + ".ftchinese.com/story/001065541", + ".ftchinese.com/story/001065715", + ".ftchinese.com/story/001065735", + ".ftchinese.com/story/001065756", + ".ftchinese.com/story/001065802", + ".ftchinese.com/story/001066112", + ".ftchinese.com/story/001066136", + ".ftchinese.com/story/001066140", + ".ftchinese.com/story/001066465", + ".ftchinese.com/story/001066881", + ".ftchinese.com/story/001066950", + ".ftchinese.com/story/001066959", + ".ftchinese.com/story/001067435", + "www.ftchinese.com/story/001067479", + ".ftchinese.com/story/001067528", + ".ftchinese.com/story/001067545", + ".ftchinese.com/story/001067572", + ".ftchinese.com/story/001067648", + ".ftchinese.com/story/001067650", + ".ftchinese.com/story/001067680", + ".ftchinese.com/story/001067692", + ".ftchinese.com/story/001067871", + ".ftchinese.com/story/001067923", + ".ftchinese.com/story/001068062", + ".ftchinese.com/story/001068248", + ".ftchinese.com/story/001068278", + ".ftchinese.com/story/001068379", + ".ftchinese.com/story/001068483", + ".ftchinese.com/story/001068506", + ".ftchinese.com/story/001068547", + ".ftchinese.com/story/001068616", + ".ftchinese.com/story/001068622", + ".ftchinese.com/story/001068707", + ".ftchinese.com/story/001069146", + ".ftchinese.com/story/001069373", + ".ftchinese.com/story/001069516", + ".ftchinese.com/story/001069517", + ".ftchinese.com/story/001069687", + ".ftchinese.com/story/001069741", + ".ftchinese.com/story/001069861", + ".ftchinese.com/story/001069952", + ".ftchinese.com/story/001070053", + ".ftchinese.com/story/001070177", + ".ftchinese.com/story/001070307", + ".ftchinese.com/story/001070809", + ".ftchinese.com/story/001070990", + ".ftchinese.com/story/001071042", + ".ftchinese.com/story/001071044", + ".ftchinese.com/story/001071106", + ".ftchinese.com/story/001071166", + ".ftchinese.com/story/001071181", + "ftchinese.com/story/001071200", + ".ftchinese.com/story/001071208", + ".ftchinese.com/story/001071238", + ".ftchinese.com/story/001071683", + ".ftchinese.com/story/001072271", + ".ftchinese.com/story/001072348", + ".ftchinese.com/story/001072677", + ".ftchinese.com/story/001072726", + ".ftchinese.com/story/001072794", + ".ftchinese.com/story/001072853", + ".ftchinese.com/story/001072895", + ".ftchinese.com/story/001072993", + ".ftchinese.com/story/001073043", + ".ftchinese.com/story/001073103", + ".ftchinese.com/story/001073157", + ".ftchinese.com/story/001073216", + ".ftchinese.com/story/001073246", + ".ftchinese.com/story/001073305", + ".ftchinese.com/story/001073307", + ".ftchinese.com/story/001073408", + ".ftchinese.com/story/001073537", + ".ftchinese.com/story/001073672", + ".ftchinese.com/story/001073849", + ".ftchinese.com/story/001073906", + ".ftchinese.com/story/001074089", + ".ftchinese.com/story/001074110", + ".ftchinese.com/story/001074128", + ".ftchinese.com/story/001074157", + ".ftchinese.com/story/001074246", + ".ftchinese.com/story/001074307", + ".ftchinese.com/story/001074347", + ".ftchinese.com/story/001074423", + ".ftchinese.com/story/001074454", + ".ftchinese.com/story/001074467", + ".ftchinese.com/story/001074493", + ".ftchinese.com/story/001074550", + ".ftchinese.com/story/001074562", + ".ftchinese.com/story/001074653", + ".ftchinese.com/story/001074693", + ".ftchinese.com/story/001074699", + ".ftchinese.com/story/001074712", + ".ftchinese.com/story/001074713", + ".ftchinese.com/story/001074768", + ".ftchinese.com/story/001074782", + ".ftchinese.com/story/001074794", + ".ftchinese.com/story/001074822", + ".ftchinese.com/story/001074874", + ".ftchinese.com/story/001074891", + ".ftchinese.com/story/001074918", + ".ftchinese.com/story/001075081", + ".ftchinese.com/story/001075134", + ".ftchinese.com/story/001075142", + ".ftchinese.com/story/001075216", + ".ftchinese.com/story/001075230", + ".ftchinese.com/story/001075238", + ".ftchinese.com/story/001075262", + ".ftchinese.com/story/001075269", + ".ftchinese.com/story/001075491", + ".ftchinese.com/story/001075500", + ".ftchinese.com/story/001075650", + ".ftchinese.com/story/001075678", + ".ftchinese.com/story/001075703", + ".ftchinese.com/story/001075739", + ".ftchinese.com/story/001076066", + ".ftchinese.com/story/001076142", + ".ftchinese.com/story/001076459", + ".ftchinese.com/story/001076470", + ".ftchinese.com/story/001076538", + ".ftchinese.com/story/001076573", + ".ftchinese.com/story/001076901", + ".ftchinese.com/story/001077067", + ".ftchinese.com/story/001077084", + ".ftchinese.com/story/001077235", + ".ftchinese.com/story/001077344", + ".ftchinese.com/story/001077390", + ".ftchinese.com/story/001077392", + ".ftchinese.com/story/001077465", + ".ftchinese.com/story/001077468", + ".ftchinese.com/story/001077492", + ".ftchinese.com/story/001077745", + ".ftchinese.com/story/001077768", + ".ftchinese.com/story/001077804", + ".ftchinese.com/story/001077852", + ".ftchinese.com/story/001078646", + ".ftchinese.com/story/001078928", + ".ftchinese.com/story/001078967", + ".ftchinese.com/story/001079559", + ".ftchinese.com/story/001079641", + ".ftchinese.com/story/001079909", + ".ftchinese.com/story/001079934", + ".ftchinese.com/story/001079992", + ".ftchinese.com/story/001080054", + ".ftchinese.com/story/001080109", + ".ftchinese.com/story/001080169", + ".ftchinese.com/story/001080226", + ".ftchinese.com/story/001080429", + ".ftchinese.com/story/001080471", + ".ftchinese.com/story/001080550", + ".ftchinese.com/story/001080581", + ".ftchinese.com/story/001080647", + ".ftchinese.com/story/001080778", + ".ftchinese.com/story/001080892", + ".ftchinese.com/story/001080915", + ".ftchinese.com/story/001080935", + ".ftchinese.com/story/001081059", + ".ftchinese.com/story/001081127", + ".ftchinese.com/tag/%E5%8D%81%E5%85%AB%E5%B1%8A%E4%B8%89%E4%B8%AD%E5%85%A8%E4%BC%9A", + ".ftchinese.com/tag/%E6%B8%A9%E5%AE%B6%E5%AE%9D", + ".ftchinese.com/tag/%E8%96%84%E7%86%99%E6%9D%A5", + ".ftchinese.com/video/1437", + ".ftchinese.com/video/1882", + ".ftchinese.com/video/2446", + ".ftchinese.com/video/2601", + ".ftchinese.com/comments", + "||1e100.net", + "||466453.com", + "||abc.xyz", + "||about.google", + "||admob.com", + "||adsense.com", + "||agoogleaday.com", + "||ai.google", + "||ampproject.org", + "@@|https://www.ampproject.org", + "@@|https://cdn.ampproject.org", + "||android.com", + "||androidify.com", + "||androidtv.com", + "||api.ai", + ".appspot.com", + "||appspot.com", + "||autodraw.com", + "||blog.google", + "||blogblog.com", + "blogspot.com", + "/^https?:\\/\\/[^\\/]+blogspot\\.(.*)/", + ".blogspot.hk", + ".blogspot.jp", + ".blogspot.tw", + "||certificate-transparency.org", + "||chrome.com", + "||chromecast.com", + "||chromeexperiments.com", + "||chromercise.com", + "||chromestatus.com", + "||chromium.org", + "||com.google", + "||crbug.com", + "||creativelab5.com", + "||crisisresponse.google", + "||crrev.com", + "||data-vocabulary.org", + "||debug.com", + "||deepmind.com", + "||deja.com", + "||design.google", + "||digisfera.com", + "||dns.google", + "||domains.google", + "||duck.com", + "||environment.google", + "||feedburner.com", + "||firebaseio.com", + "||g.co", + "||gcr.io", + "||get.app", + "||get.dev", + "||get.how", + "||get.page", + "||getmdl.io", + "||getoutline.org", + "||ggpht.com", + "||gmail.com", + "||gmodules.com", + "||godoc.org", + "||golang.org", + "||goo.gl", + ".google.ae", + ".google.as", + ".google.am", + ".google.at", + ".google.az", + ".google.ba", + ".google.be", + ".google.bg", + ".google.ca", + ".google.cd", + ".google.ci", + ".google.co.id", + ".google.co.jp", + ".google.co.kr", + ".google.co.ma", + ".google.co.uk", + ".google.com", + ".google.de", + "||google.dev", + ".google.dj", + ".google.dk", + ".google.es", + ".google.fi", + ".google.fm", + ".google.fr", + ".google.gg", + ".google.gl", + ".google.gr", + ".google.ie", + ".google.is", + ".google.it", + ".google.jo", + ".google.kz", + ".google.lv", + ".google.mn", + ".google.ms", + ".google.nl", + ".google.nu", + ".google.no", + ".google.ro", + ".google.ru", + ".google.rw", + ".google.sc", + ".google.sh", + ".google.sk", + ".google.sm", + ".google.sn", + ".google.tk", + ".google.tm", + ".google.to", + ".google.tt", + ".google.vu", + ".google.ws", + "/^https?:\\/\\/([^\\/]+\\.)*google\\.(ac|ad|ae|af|al|am|as|at|az|ba|be|bf|bg|bi|bj|bs|bt|by|ca|cat|cd|cf|cg|ch|ci|cl|cm|co.ao|co.bw|co.ck|co.cr|co.id|co.il|co.in|co.jp|co.ke|co.kr|co.ls|co.ma|com|com.af|com.ag|com.ai|com.ar|com.au|com.bd|com.bh|com.bn|com.bo|com.br|com.bz|com.co|com.cu|com.cy|com.do|com.ec|com.eg|com.et|com.fj|com.gh|com.gi|com.gt|com.hk|com.jm|com.kh|com.kw|com.lb|com.ly|com.mm|com.mt|com.mx|com.my|com.na|com.nf|com.ng|com.ni|com.np|com.om|com.pa|com.pe|com.pg|com.ph|com.pk|com.pr|com.py|com.qa|com.sa|com.sb|com.sg|com.sl|com.sv|com.tj|com.tr|com.tw|com.ua|com.uy|com.vc|com.vn|co.mz|co.nz|co.th|co.tz|co.ug|co.uk|co.uz|co.ve|co.vi|co.za|co.zm|co.zw|cv|cz|de|dj|dk|dm|dz|ee|es|eu|fi|fm|fr|ga|ge|gg|gl|gm|gp|gr|gy|hk|hn|hr|ht|hu|ie|im|iq|is|it|it.ao|je|jo|kg|ki|kz|la|li|lk|lt|lu|lv|md|me|mg|mk|ml|mn|ms|mu|mv|mw|mx|ne|nl|no|nr|nu|org|pl|pn|ps|pt|ro|rs|ru|rw|sc|se|sh|si|sk|sm|sn|so|sr|st|td|tg|tk|tl|tm|tn|to|tt|us|vg|vn|vu|ws)\\/.*/", + "||googleapis.cn", + "||googleapis.com", + "||googleapps.com", + "||googleartproject.com", + "||googleblog.com", + "||googlebot.com", + "||googlechinawebmaster.com", + "||googlecode.com", + "||googlecommerce.com", + "||googledomains.com", + "||googlearth.com", + "||googleearth.com", + "||googledrive.com", + "||googlegroups.com", + "||googlehosted.com", + "||googleideas.com", + "||googleinsidesearch.com", + "||googlelabs.com", + "||googlemail.com", + "||googlemashups.com", + "||googlepagecreator.com", + "||googleplay.com", + "||googleplus.com", + "||googlescholar.com", + "||googlesource.com", + "||googleusercontent.com", + ".googlevideo.com", + "||googlevideo.com", + "||googleweblight.com", + "||googlezip.net", + "||groups.google.cn", + "||grow.google", + "||gstatic.com", + "||gvt0.com", + "||gvt1.com", + "@@||redirector.gvt1.com", + "||gvt3.com", + "||gwtproject.org", + "||html5rocks.com", + "||iam.soy", + "||igoogle.com", + "||itasoftware.com", + "||lers.google", + "||like.com", + "||madewithcode.com", + "||material.io", + "||nic.google", + "||on2.com", + "||panoramio.com", + "||picasaweb.com", + "||pki.goog", + "||plus.codes", + "||polymer-project.org", + "||pride.google", + "||questvisual.com", + "||admin.recaptcha.net", + "||api.recaptcha.net", + "||api-secure.recaptcha.net", + "||api-verify.recaptcha.net", + "||redhotlabs.com", + "||registry.google", + "||safety.google", + "||savethedate.foo", + "||schema.org", + "||shattered.io", + "|http://sipml5.org/", + "||stories.google", + "||sustainability.google", + "||synergyse.com", + "||teachparentstech.org", + "||tensorflow.org", + "||tfhub.dev", + "||thinkwithgoogle.com", + "||tiltbrush.com", + "||urchin.com", + "||waveprotocol.org", + "||waymo.com", + "||web.dev", + "||webmproject.org", + "||webrtc.org", + "||whatbrowser.org", + "||widevine.com", + "||withgoogle.com", + "||withyoutube.com", + "||x.company", + "||xn--ngstr-lra8j.com", + "||youtu.be", + ".youtube.com", + "||youtube.com", + "||youtube-nocookie.com", + "||youtubeeducation.com", + "||youtubegaming.com", + "||yt.be", + "||ytimg.com", + "||zynamics.com", + "||naughtyamerica.com", + "static01.nyt.com", + "||nyt.com", + "nytchina.com", + "nytcn.me", + "||nytcn.me", + "||nytco.com", + "|http://nyti.ms/", + ".nytimes.com", + "||nytimes.com", + "||nytimg.com", + "userapi.nytlog.com", + "cn.nytstyle.com", + "||nytstyle.com", + ".steamcommunity.com", + "||steamcommunity.com", + "|http://store.steampowered.com/app/333600", + "||t.me", + "||updates.tdesktop.com", + "||telegram.dog", + "||telegram.me", + "||telegram.org", + ".telegramdownload.com", + "||telesco.pe", + "||jtvnw.net", + "||ttvnw.net", + "||twitch.tv", + "||twitchcdn.net", + "||periscope.tv", + ".pscp.tv", + "||pscp.tv", + ".t.co", + "||t.co", + ".tweetdeck.com", + "||tweetdeck.com", + "||twimg.com", + ".twitpic.com", + "||twitpic.com", + ".twitter.com", + "||twitter.com", + "||twitter.jp", + "||vine.co", + "||gov.taipei", + ".gov.tw", + "|https://aiss.anws.gov.tw", + "||archives.gov.tw", + "||tacc.cwb.gov.tw", + "||data.gov.tw", + "||epa.gov.tw", + "||fa.gov.tw", + "||fda.gov.tw", + "||hpa.gov.tw", + "||immigration.gov.tw", + "||itaiwan.gov.tw", + "||mjib.gov.tw", + "||moeaic.gov.tw", + "||mofa.gov.tw", + "||mol.gov.tw", + "||mvdis.gov.tw", + "||nat.gov.tw", + "||nhi.gov.tw", + "||npa.gov.tw", + "||nsc.gov.tw", + "||ntbk.gov.tw", + "||ntbna.gov.tw", + "||ntbt.gov.tw", + "||ntsna.gov.tw", + "||pcc.gov.tw", + "||stat.gov.tw", + "||taipei.gov.tw", + "||taiwanjobs.gov.tw", + "||thb.gov.tw", + "||tipo.gov.tw", + "||wda.gov.tw", + "||teco-hk.org", + "||teco-mo.org", + "@@||aftygh.gov.tw", + "@@||aide.gov.tw", + "@@||tpde.aide.gov.tw", + "@@||arte.gov.tw", + "@@||chukuang.gov.tw", + "@@||cwb.gov.tw", + "@@||cycab.gov.tw", + "@@||dbnsa.gov.tw", + "@@||df.gov.tw", + "@@||eastcoast-nsa.gov.tw", + "@@||erv-nsa.gov.tw", + "@@||grb.gov.tw", + "@@||gysd.nyc.gov.tw", + "@@||hchcc.gov.tw", + "@@||hsinchu-cc.gov.tw", + "@@||iner.gov.tw", + "@@||klsio.gov.tw", + "@@||kmseh.gov.tw", + "@@||lungtanhr.gov.tw", + "@@||maolin-nsa.gov.tw", + "@@||matsu-news.gov.tw", + "@@||matsu-nsa.gov.tw", + "@@||matsucc.gov.tw", + "@@||moe.gov.tw", + "@@||mvdis.gov.tw", + "@@||nankan.gov.tw", + "@@||ncree.gov.tw", + "@@||necoast-nsa.gov.tw", + "@@||siraya-nsa.gov.tw", + "@@||cromotc.nat.gov.tw", + "@@||tax.nat.gov.tw", + "@@||necoast-nsa.gov.tw", + "@@||ner.gov.tw", + "@@||nmmba.gov.tw", + "@@||nmp.gov.tw", + "@@||nmvttc.gov.tw", + "@@||northguan-nsa.gov.tw", + "@@||npm.gov.tw", + "@@||nstm.gov.tw", + "@@||ntdmh.gov.tw", + "@@||ntl.gov.tw", + "@@||ntsec.gov.tw", + "@@||ntuh.gov.tw", + "@@||nvri.gov.tw", + "@@||penghu-nsa.gov.tw", + "@@||post.gov.tw", + "@@||siraya-nsa.gov.tw", + "@@||stdtime.gov.tw", + "@@||sunmoonlake.gov.tw", + "@@||taitung-house.gov.tw", + "@@||taoyuan.gov.tw", + "@@||tphcc.gov.tw", + "@@||trimt-nsa.gov.tw", + "@@||vghtpe.gov.tw", + "@@||vghks.gov.tw", + "@@||vghtc.gov.tw", + "@@||wanfang.gov.tw", + "@@||yatsen.gov.tw", + "@@||yda.gov.tw", + "||kinmen.org.tw", + ".v2ex.com", + "@@|http://v2ex.com", + "@@|http://cdn.v2ex.com", + "@@|http://cn.v2ex.com", + "@@|http://hk.v2ex.com", + "@@|http://i.v2ex.com", + "@@|http://lax.v2ex.com", + "@@|http://neue.v2ex.com", + "@@|http://pagespeed.v2ex.com", + "@@|http://static.v2ex.com", + "@@|http://workspace.v2ex.com", + "@@|http://www.v2ex.com", + "||data.flurry.com", + "page.bid.yahoo.com", + "tw.bid.yahoo.com", + "|https://tw.bid.yahoo.com", + "blogs.yahoo.co.jp", + "||search.yahoo.co.jp", + "buy.yahoo.com.tw/gdsale", + "hk.yahoo.com", + "hk.knowledge.yahoo.com", + "tw.money.yahoo.com", + "hk.myblog.yahoo.com", + "news.yahoo.com/china-blocks-bbc", + "||hk.news.yahoo.com", + "hk.rd.yahoo.com", + "hk.search.yahoo.com/search", + "hk.video.news.yahoo.com/video", + "meme.yahoo.com", + "tw.answers.yahoo.com", + "|https://tw.answers.yahoo.com", + "||tw.knowledge.yahoo.com", + "||tw.mall.yahoo.com", + "tw.yahoo.com", + "||tw.mobi.yahoo.com", + "tw.myblog.yahoo.com", + "||tw.news.yahoo.com", + "pulse.yahoo.com", + "||search.yahoo.com", + "upcoming.yahoo.com", + "video.yahoo.com", + "||yahoo.com.hk", + "||duckduckgo-owned-server.yahoo.net", + ".030buy.com", + ".0rz.tw", + "|http://0rz.tw", + "1-apple.com.tw", + "||1-apple.com.tw", + ".10.tt", + ".100ke.org", + ".1000giri.net", + "||1000giri.net", + ".10conditionsoflove.com", + "||10musume.com", + "123rf.com", + ".12bet.com", + "||12bet.com", + ".12vpn.com", + ".12vpn.net", + "||12vpn.com", + "||12vpn.net", + ".138.com", + "141hongkong.com/forum", + "||141jj.com", + ".141tube.com", + ".1688.com.au", + ".173ng.com", + "||173ng.com", + ".177pic.info", + ".17t17p.com", + "||18board.com", + "||18board.info", + "18onlygirls.com", + ".18p2p.com", + ".18virginsex.com", + ".1949er.org", + "zhao.1984.city", + "||zhao.1984.city", + "1984bbs.com", + "||1984bbs.com", + ".1984bbs.org", + "||1984bbs.org", + ".1991way.com", + "||1991way.com", + ".1998cdp.org", + ".1bao.org", + "|http://1bao.org", + ".1eew.com", + ".1mobile.com", + "|http://*.1mobile.tw", + "||1pondo.tv", + ".2-hand.info", + ".2000fun.com/bbs", + ".2008xianzhang.info", + "||2008xianzhang.info", + "||2017.hk", + "21andy.com/blog", + ".21pron.com", + "21sextury.com", + ".228.net.tw", + "||233abc.com", + "||24hrs.ca", + "24smile.org", + "2lipstube.com", + ".2shared.com", + "30boxes.com", + ".315lz.com", + "||32red.com", + "||36rain.com", + ".3a5a.com", + "3arabtv.com", + ".3boys2girls.com", + ".3proxy.ru", + ".3ren.ca", + ".3tui.net", + "||4bluestones.biz", + ".4chan.com", + ".4everproxy.com", + "||4everproxy.com", + "||4rbtv.com", + "||4shared.com", + "taiwannation.50webs.com", + "||51.ca", + "||51jav.org", + ".51luoben.com", + "||51luoben.com", + ".5278.cc", + ".5299.tv", + "5aimiku.com", + "5i01.com", + ".5isotoi5.org", + ".5maodang.com", + "||63i.com", + ".64museum.org", + "64tianwang.com", + "64wiki.com", + ".66.ca", + "666kb.com", + "6park.com", + "||6park.com", + "||6parker.com", + "||7capture.com", + ".7cow.com", + ".8-d.com", + "|http://8-d.com", + "85cc.net", + ".85cc.us", + "|http://85cc.us", + "|http://85st.com", + ".881903.com/page/zh-tw/", + "||881903.com", + ".888.com", + ".888poker.com", + "89.64.charter.constitutionalism.solutions", + "89-64.org", + "||89-64.org", + ".8news.com.tw", + ".8z1.net", + "||8z1.net", + ".9001700.com", + "|http://908taiwan.org/", + "||91porn.com", + "||91vps.club", + ".92ccav.com", + ".991.com", + "|http://991.com", + ".99btgc01.com", + "||99btgc01.com", + ".99cn.info", + "|http://99cn.info", + "||9bis.com", + "||9bis.net", + ".tibet.a.se", + "|http://tibet.a.se", + "||a-normal-day.com", + "a5.com.ru", + "|http://aamacau.com", + ".abc.com", + ".abc.net.au", + "||abc.net.au", + ".abchinese.com", + "abclite.net", + "|https://www.abclite.net", + ".ablwang.com", + ".aboluowang.com", + "||aboluowang.com", + ".aboutgfw.com", + ".abs.edu", + ".accim.org", + ".aceros-de-hispania.com", + ".acevpn.com", + "||acevpn.com", + ".acg18.me", + "|http://acg18.me", + "||acgkj.com", + ".acmedia365.com", + ".acnw.com.au", + "actfortibet.org", + "actimes.com.au", + "activpn.com", + "||activpn.com", + "||aculo.us", + "||addictedtocoffee.de", + ".adelaidebbs.com/bbs", + ".adpl.org.hk", + "|http://adpl.org.hk", + ".adult-sex-games.com", + "||adult-sex-games.com", + "adultfriendfinder.com", + "adultkeep.net/peepshow/members/main.htm", + "||advanscene.com", + "||advertfan.com", + ".ae.org", + "||aenhancers.com", + "||af.mil", + ".afantibbs.com", + "|http://afantibbs.com", + ".ai-kan.net", + "||ai-kan.net", + "ai-wen.net", + ".aiph.net", + "||aiph.net", + ".airasia.com", + "||airconsole.com", + "|http://download.aircrack-ng.org", + ".airvpn.org", + "||airvpn.org", + ".aisex.com", + "||ait.org.tw", + "aiweiwei.com", + ".aiweiweiblog.com", + "||aiweiweiblog.com", + "||www.ajsands.com", + "a248.e.akamai.net", + "||a248.e.akamai.net", + "rfalive1.akacast.akamaistream.net", + "voa-11.akacast.akamaistream.net", + "||abematv.akamaized.net", + "||linear-abematv.akamaized.net", + "||vod-abematv.akamaized.net", + "|https://fbcdn*.akamaihd.net/", + "rthklive2-lh.akamaihd.net", + ".akademiye.org/ug", + "|http://akademiye.org/ug", + "||akiba-online.com", + "||akow.org", + ".al-islam.com", + "||al-qimmah.net", + "||alabout.com", + ".alanhou.com", + "|http://alanhou.com", + ".alarab.qa", + "||alasbarricadas.org", + "alexlur.org", + "||alforattv.net", + ".alhayat.com", + ".alicejapan.co.jp", + "aliengu.com", + "||alkasir.com", + "||allconnected.co", + ".alldrawnsex.com", + "||alldrawnsex.com", + ".allervpn.com", + "||allfinegirls.com", + ".allgirlmassage.com", + "allgirlsallowed.org", + ".allgravure.com", + "alliance.org.hk", + ".allinfa.com", + "||allinfa.com", + ".alljackpotscasino.com", + "||allmovie.com", + "||almasdarnews.com", + ".alphaporno.com", + "||alternate-tools.com", + "alternativeto.net/software", + "alvinalexander.com", + "alwaysdata.com", + "||alwaysdata.com", + "||alwaysdata.net", + ".alwaysvpn.com", + "||alwaysvpn.com", + "||am730.com.hk", + "ameblo.jp", + "||ameblo.jp", + "www1.american.edu/ted/ice/tibet", + "||americangreencard.com", + "|http://www.americorps.gov", + "||amiblockedornot.com", + ".amigobbs.net", + ".amitabhafoundation.us", + "|http://amitabhafoundation.us", + ".amnesty.org", + "||amnesty.org", + "||amnesty.org.hk", + ".amnesty.tw", + ".amnestyusa.org", + "||amnestyusa.org", + ".amnyemachen.org", + ".amoiist.com", + ".amtb-taipei.org", + "androidplus.co/apk", + ".andygod.com", + "|http://andygod.com", + "annatam.com/chinese", + "||anchorfree.com", + "||ancsconf.org", + "||andfaraway.net", + "||android-x86.org", + "angelfire.com/hi/hayashi", + "||angularjs.org", + "animecrazy.net", + ".animeshippuuden.com", + "aniscartujo.com", + "||aniscartujo.com", + "||anobii.com", + "anonymise.us", + ".anonymitynetwork.com", + ".anonymizer.com", + ".anonymouse.org", + "||anonymouse.org", + "anontext.com", + ".anpopo.com", + ".answering-islam.org", + "|http://www.antd.org", + "||anthonycalzadilla.com", + ".anti1984.com", + "antichristendom.com", + ".antiwave.net", + "|http://antiwave.net", + ".anyporn.com", + ".anysex.com", + "|http://anysex.com", + "||aobo.com.au", + ".aofriend.com", + "|http://aofriend.com", + ".aofriend.com.au", + ".aojiao.org", + "||aomiwang.com", + "video.ap.org", + ".apetube.com", + "||apiary.io", + ".apigee.com", + "||apigee.com", + "apk-dl.com", + "apkdler.com/apk/view", + ".apkmonk.com/app", + "||apkplz.com", + "apkpure.com", + "||apkpure.com", + ".aplusvpn.com", + ".appdownloader.net/Android", + ".appledaily.com", + "||appledaily.com", + "appledaily.com.hk", + "||appledaily.com.hk", + "appledaily.com.tw", + "||appledaily.com.tw", + ".appshopper.com", + "|http://appshopper.com", + "||appsocks.net", + "||appsto.re", + ".aptoide.com", + "||aptoide.com", + "||archives.gov", + ".archive.fo", + "||archive.fo", + ".archive.is", + "||archive.is", + ".archive.li", + "||archive.li", + "||archive.org", + "archive.today", + "|https://archive.today", + ".arctosia.com", + "|http://arctosia.com", + "||areca-backup.org", + ".arethusa.su", + "||arethusa.su", + "||arlingtoncemetery.mil", + "||army.mil", + ".art4tibet1998.org", + "artofpeacefoundation.org", + "artsy.net", + "||asacp.org", + "asdfg.jp/dabr", + "asg.to", + ".asia-gaming.com", + ".asiaharvest.org", + "||asiaharvest.org", + "asianews.it", + "|http://japanfirst.asianfreeforum.com/", + "||asiansexdiary.com", + "||asianwomensfilm.de", + ".asiatgp.com", + ".asiatoday.us", + "||askstudent.com", + ".askynz.net", + "||askynz.net", + "||assembla.com", + "||astrill.com", + "||atc.org.au", + ".atchinese.com", + "|http://atchinese.com", + "atgfw.org", + ".atlaspost.com", + "||atlaspost.com", + "||atdmt.com", + ".atlanta168.com/forum", + ".atnext.com", + "||atnext.com", + "ice.audionow.com", + ".av.com", + "||av.movie", + ".av-e-body.com", + "avaaz.org", + "||avaaz.org", + ".avbody.tv", + ".avcity.tv", + ".avcool.com", + ".avdb.in", + "||avdb.in", + ".avdb.tv", + "||avdb.tv", + ".avfantasy.com", + ".avgle.com", + "||avgle.com", + "||avidemux.org", + "||avoision.com", + ".avyahoo.com", + "||axureformac.com", + ".azerbaycan.tv", + "azerimix.com", + "boxun*.azurewebsites.net", + "||boxun*.azurewebsites.net", + "forum.baby-kingdom.com", + "babynet.com.hk", + "backchina.com", + "||backchina.com", + ".backpackers.com.tw/forum", + "backtotiananmen.com", + ".badiucao.com", + "||badiucao.com", + ".badjojo.com", + "badoo.com", + "|http://*2.bahamut.com.tw", + "||baidu.jp", + ".baijie.org", + "|http://baijie.org", + "||bailandaily.com", + "||baixing.me", + "||bakgeekhome.tk", + ".banana-vpn.com", + "||banana-vpn.com", + ".band.us", + ".bandwagonhost.com", + "||bandwagonhost.com", + ".bangbrosnetwork.com", + ".bangchen.net", + "|http://bangchen.net", + "||bangyoulater.com", + "bannedbook.org", + "||bannedbook.org", + ".bannednews.org", + ".baramangaonline.com", + "|http://baramangaonline.com", + ".barenakedislam.com", + "||barnabu.co.uk", + "||barton.de", + "bartvpn.com", + ".bastillepost.com", + "bayvoice.net", + "||bayvoice.net", + "dajusha.baywords.com", + "||bbchat.tv", + "||bb-chat.tv", + ".bbg.gov", + ".bbkz.com/forum", + ".bbnradio.org", + "bbs-tw.com", + ".bbsdigest.com/thread", + "||bbsfeed.com", + "bbsland.com", + ".bbsmo.com", + ".bbsone.com", + "bbtoystore.com", + ".bcast.co.nz", + ".bcc.com.tw/board", + ".bcchinese.net", + ".bcmorning.com", + "bdsmvideos.net", + ".beaconevents.com", + ".bebo.com", + "||bebo.com", + ".beevpn.com", + "||beevpn.com", + ".behindkink.com", + "||beijing1989.com", + "beijingspring.com", + "||beijingspring.com", + ".beijingzx.org", + "|http://beijingzx.org", + ".belamionline.com", + ".bell.wiki", + "|http://bell.wiki", + "bemywife.cc", + "beric.me", + ".berlintwitterwall.com", + "||berlintwitterwall.com", + ".berm.co.nz", + ".bestforchina.org", + "||bestforchina.org", + ".bestgore.com", + ".bestpornstardb.com", + "||bestvpn.com", + ".bestvpnanalysis.com", + ".bestvpnserver.com", + ".bestvpnservice.com", + ".bestvpnusa.com", + "||bet365.com", + ".betfair.com", + "||betternet.co", + ".bettervpn.com", + "||bettervpn.com", + ".bettween.com", + "||bettween.com", + "||betvictor.com", + ".bewww.net", + ".beyondfirewall.com", + "||bfnn.org", + "||bfsh.hk", + ".bgvpn.com", + "||bgvpn.com", + ".bianlei.com", + "@@||bianlei.com", + "biantailajiao.com", + "biantailajiao.in", + ".biblesforamerica.org", + "|http://biblesforamerica.org", + ".bic2011.org", + "bigfools.com", + "||bigjapanesesex.com", + ".bignews.org", + "||bignews.org", + ".bigsound.org", + ".biliworld.com", + "|http://biliworld.com", + "|http://billypan.com/wiki", + ".binux.me", + "ai.binwang.me/couplet", + "bipic.net", + ".bit.do", + "|http://bit.do", + ".bit.ly", + "|http://bit.ly", + "||bitcointalk.org", + ".bitshare.com", + "||bitshare.com", + "bitsnoop.com", + ".bitvise.com", + "||bitvise.com", + "bizhat.com", + "||bl-doujinsouko.com", + ".bjnewlife.org", + ".bjs.org", + "bjzc.org", + "||bjzc.org", + ".blacklogic.com", + ".blackvpn.com", + "||blackvpn.com", + "blewpass.com", + "tor.blingblingsquad.net", + ".blinkx.com", + "||blinkx.com", + "blinw.com", + ".blip.tv", + "||blip.tv/", + ".blockcn.com", + "||blockcn.com", + "||blockless.com", + "||blog.de", + ".blog.jp", + "|http://blog.jp", + "@@||jpush.cn", + ".blogcatalog.com", + "||blogcatalog.com", + "||blogcity.me", + ".blogger.com", + "||blogger.com", + "blogimg.jp", + "||blog.kangye.org", + ".bloglines.com", + "||bloglines.com", + "||bloglovin.com", + "rconversation.blogs.com", + "blogtd.net", + ".blogtd.org", + "|http://blogtd.org", + "||bloodshed.net", + ".bloomberg.cn", + "||bloomberg.cn", + ".bloomberg.com", + "||bloomberg.com", + "bloomberg.de", + "||bloomberg.de", + "||assets.bwbx.io", + "||bloomfortune.com", + "blueangellive.com", + ".bmfinn.com", + ".bnews.co", + "||bnews.co", + "||bnrmetal.com", + "boardreader.com/thread", + "||boardreader.com", + ".bod.asia", + "|http://bod.asia", + ".bodog88.com", + ".bolehvpn.net", + "||bolehvpn.net", + "bonbonme.com", + ".bonbonsex.com", + ".bonfoundation.org", + ".bongacams.com", + "||boobstagram.com", + "||book.com.tw", + "bookepub.com", + "||books.com.tw", + "||botanwang.com", + ".bot.nu", + ".bowenpress.com", + "||bowenpress.com", + "||app.box.com", + "dl.box.net", + "||dl.box.net", + ".boxpn.com", + "||boxpn.com", + "boxun.com", + "||boxun.com", + ".boxun.tv", + "||boxun.tv", + "boxunblog.com", + "||boxunblog.com", + ".boxunclub.com", + "boyangu.com", + ".boyfriendtv.com", + ".boysfood.com", + "||br.st", + ".brainyquote.com/quotes/authors/d/dalai_lama", + "||brandonhutchinson.com", + "||braumeister.org", + ".bravotube.net", + "||bravotube.net", + ".brazzers.com", + "||brazzers.com", + ".break.com", + "||break.com", + "breakgfw.com", + "||breakgfw.com", + "breaking911.com", + ".breakingtweets.com", + "||breakingtweets.com", + "||breakwall.net", + "briian.com/6511/freegate", + ".briefdream.com/%E7%B4%A0%E6%A3%BA", + "brizzly.com", + "||brizzly.com", + "||brkmd.com", + "broadbook.com", + ".broadpressinc.com", + "||broadpressinc.com", + "bbs.brockbbs.com", + "brucewang.net", + ".brutaltgp.com", + "||brutaltgp.com", + ".bt2mag.com", + "||bt95.com", + ".btaia.com", + ".btbtav.com", + "|http://btdigg.org", + ".btku.me", + "||btku.me", + "||btku.org", + ".btspread.com", + ".btsynckeys.com", + ".budaedu.org", + "||budaedu.org", + ".buddhanet.com.tw/zfrop/tibet", + ".buddhistchannel.tv", + ".buffered.com", + "|http://buffered.com", + ".bullog.org", + "||bullog.org", + ".bullogger.com", + "||bullogger.com", + "bunbunhk.com", + ".busayari.com", + "|http://busayari.com", + ".businessinsider.com/bing-could-be-censoring-search-results-2014", + ".businessinsider.com/china-banks-preparing-for-debt-implosion-2014", + ".businessinsider.com/hong-kong-activists-defy-police-tear-gas-as-protests-continue-overnight-2014", + ".businessinsider.com/internet-outages-reported-in-north-korea-2014", + ".businessinsider.com/iphone-6-is-approved-for-sale-in-china-2014", + ".businessinsider.com/nfl-announcers-surface-tablets-2014", + ".businessinsider.com/panama-papers", + ".businessinsider.com/umbrella-man-hong-kong-2014", + "|http://www.businessinsider.com.au/*", + ".businesstoday.com.tw", + "||businesstoday.com.tw", + ".businessweek.com", + ".busu.org/news", + "|http://busu.org/news", + "busytrade.com", + ".buugaa.com", + ".buzzhand.com", + ".buzzhand.net", + ".buzzorange.com", + "||buzzorange.com", + "||bvpn.com", + "||bwh1.net", + "bwsj.hk", + "||bx.tl", + ".c-spanvideo.org", + "||c-spanvideo.org", + "||c-est-simple.com", + ".c100tibet.org", + "||cablegatesearch.net", + ".cachinese.com", + ".cacnw.com", + "|http://cacnw.com", + ".cactusvpn.com", + "||cactusvpn.com", + ".cafepress.com", + ".cahr.org.tw", + ".calameo.com/books", + "cn.calameo.com", + "|http://cn.calameo.com", + ".calgarychinese.ca", + ".calgarychinese.com", + ".calgarychinese.net", + "|http://blog.calibre-ebook.com", + "|http://google.calstate.edu", + "falun.caltech.edu", + ".its.caltech.edu/~falun/", + ".cam4.com", + ".cam4.jp", + ".cam4.sg", + ".camfrog.com", + "||camfrog.com", + "||cams.com", + ".cams.org.sg", + "canadameet.com", + ".canalporno.com", + "|http://bbs.cantonese.asia/", + ".canyu.org", + "||canyu.org", + ".cao.im", + ".caobian.info", + "||caobian.info", + "caochangqing.com", + "||caochangqing.com", + ".cap.org.hk", + "||cap.org.hk", + ".carabinasypistolas.com", + "cardinalkungfoundation.org", + "carmotorshow.com", + "ss.carryzhou.com", + ".cartoonmovement.com", + "||cartoonmovement.com", + ".casadeltibetbcn.org", + ".casatibet.org.mx", + "|http://casatibet.org.mx", + "cari.com.my", + "||caribbeancom.com", + ".casinoking.com", + ".casinoriva.com", + "||catch22.net", + ".catchgod.com", + "|http://catchgod.com", + "||catfightpayperview.xxx", + ".catholic.org.hk", + "||catholic.org.hk", + "catholic.org.tw", + "||catholic.org.tw", + ".cathvoice.org.tw", + "||cattt.com", + ".cbc.ca", + "||cbc.ca", + ".cbsnews.com/video", + ".cbtc.org.hk", + "||cccat.cc", + "||cccat.co", + ".ccdtr.org", + "||ccdtr.org", + ".cchere.com", + "||cchere.com", + ".ccim.org", + ".cclife.ca", + "cclife.org", + "cclifefl.org", + ".ccthere.com", + "||ccthere.com", + "||ccthere.net", + ".cctmweb.net", + ".cctongbao.com/article/2078732", + "ccue.ca", + "ccue.com", + ".ccvoice.ca", + ".ccw.org.tw", + ".cgdepot.org", + "|http://cgdepot.org", + "||cdbook.org", + ".cdcparty.com", + ".cdef.org", + "||cdef.org", + "||cdig.info", + "cdjp.org", + "||cdjp.org", + ".cdn-apple.com", + "||cdn-apple.com", + ".cdnews.com.tw", + "cdp1989.org", + "cdp1998.org", + "||cdp1998.org", + "cdp2006.org", + "||cdp2006.org", + ".cdpa.url.tw", + "cdpeu.org", + "cdpusa.org", + "cdpweb.org", + "||cdpweb.org", + "cdpwu.org", + "||cdpwu.org", + "||cdw.com", + ".cecc.gov", + "||cecc.gov", + "||cellulo.info", + "||cenews.eu", + "||centerforhumanreprod.com", + "||centralnation.com", + ".centurys.net", + "|http://centurys.net", + ".cfhks.org.hk", + ".cfos.de", + ".cftfc.com", + ".cgst.edu", + ".change.org", + "||change.org", + ".changp.com", + "||changp.com", + ".changsa.net", + "|http://changsa.net", + ".channel8news.sg/news8", + ".chapm25.com", + ".chaturbate.com", + ".chuang-yen.org", + "chengmingmag.com", + ".chenguangcheng.com", + "||chenguangcheng.com", + ".chenpokong.com", + ".chenpokong.net", + "|http://chenpokong.net", + "||cherrysave.com", + ".chhongbi.org", + "chicagoncmtv.com", + "|http://chicagoncmtv.com", + ".china-week.com", + "china101.com", + "||china101.com", + "||china18.org", + "||china21.com", + "china21.org", + "||china21.org", + ".china5000.us", + "chinaaffairs.org", + "||chinaaffairs.org", + "||chinaaid.me", + "chinaaid.us", + "chinaaid.org", + "chinaaid.net", + "chinacomments.org", + "||chinacomments.org", + ".chinachange.org", + "||chinachange.org", + "chinachannel.hk", + "||chinachannel.hk", + ".chinacitynews.be", + ".chinadialogue.net", + ".chinadigitaltimes.net", + "||chinadigitaltimes.net", + ".chinaelections.org", + "||chinaelections.org", + ".chinaeweekly.com", + "||chinaeweekly.com", + "||chinafreepress.org", + ".chinagate.com", + "chinageeks.org", + "chinagfw.org", + "||chinagfw.org", + ".chinagonet.com", + ".chinagreenparty.org", + "||chinagreenparty.org", + ".chinahorizon.org", + "||chinahorizon.org", + ".chinahush.com", + ".chinainperspective.com", + "||chinainterimgov.org", + "chinalaborwatch.org", + "chinalawtranslate.com", + ".chinapost.com.tw/taiwan/national/national-news", + "chinaxchina.com/howto", + "chinalawandpolicy.com", + ".chinamule.com", + "||chinamule.com", + "chinamz.org", + ".chinanewscenter.com", + "|https://chinanewscenter.com", + ".chinapress.com.my", + "||chinapress.com.my", + ".china-review.com.ua", + "|http://china-review.com.ua", + ".chinarightsia.org", + "chinasmile.net/forums", + "chinasocialdemocraticparty.com", + "||chinasocialdemocraticparty.com", + "chinasoul.org", + "||chinasoul.org", + ".chinasucks.net", + "||chinatopsex.com", + ".chinatown.com.au", + "chinatweeps.com", + "chinaway.org", + ".chinaworker.info", + "||chinaworker.info", + "chinayouth.org.hk", + "chinayuanmin.org", + "||chinayuanmin.org", + ".chinese-hermit.net", + "chinese-leaders.org", + "chinese-memorial.org", + ".chinesedaily.com", + "||chinesedailynews.com", + ".chinesedemocracy.com", + "||chinesedemocracy.com", + "||chinesegay.org", + ".chinesen.de", + "||chinesen.de", + ".chinesenews.net.au/", + ".chinesepen.org", + ".chinesetalks.net/ch", + "||chineseupress.com", + ".chingcheong.com", + "||chingcheong.com", + ".chinman.net", + "|http://chinman.net", + "chithu.org", + "|http://chn.chosun.com", + "cnnews.chosun.com/client/news/viw.asp?cate=C01&mcate", + ".chrdnet.com", + "|http://chrdnet.com", + ".christianfreedom.org", + "|http://christianfreedom.org", + "christianstudy.com", + "||christianstudy.com", + "christusrex.org/www1/sdc", + ".chubold.com", + "chubun.com", + "chuizi.net", + "christiantimes.org.hk", + ".chrlawyers.hk", + "|http://chrlawyers.hk", + ".churchinhongkong.org/b5/index.php", + "|http://churchinhongkong.org/b5/index.php", + ".chushigangdrug.ch", + ".cienen.com", + ".cineastentreff.de", + ".cipfg.org", + "||circlethebayfortibet.org", + "||cirosantilli.com", + ".citizencn.com", + "||citizencn.com", + "|http://citizenlab.org", + "|http://www.citizenlab.org", + "||citizenscommission.hk", + ".citizenlab.org", + "citizensradio.org", + ".city365.ca", + "|http://city365.ca", + "city9x.com", + "||citypopulation.de", + ".citytalk.tw/event", + ".civicparty.hk", + "||civicparty.hk", + ".civildisobediencemovement.org", + "civilhrfront.org", + "||civilhrfront.org", + ".civiliangunner.com", + ".civilmedia.tw", + "||civilmedia.tw", + "psiphon.civisec.org", + "||vpn.cjb.net", + ".ck101.com", + "||ck101.com", + ".clarionproject.org/news/islamic-state-isis-isil-propaganda", + "||classicalguitarblog.net", + ".clb.org.hk", + "clearharmony.net", + "clearwisdom.net", + "clinica-tibet.ru", + ".clipfish.de", + "cloakpoint.com", + "||club1069.com", + "cmi.org.tw", + "|http://www.cmoinc.org", + "cmp.hku.hk", + "hkupop.hku.hk", + "||cmule.com", + "||cmule.org", + "||cms.gov", + "|http://vpn.cmu.edu", + "|http://vpn.sv.cmu.edu", + ".cn6.eu", + ".cna.com.tw", + "||cna.com.tw", + ".cnabc.com", + ".cnd.org", + "||cnd.org", + "download.cnet.com", + ".cnex.org.cn", + ".cnineu.com", + "wiki.cnitter.com", + ".cnn.com/video", + ".cnpolitics.org", + "||cnpolitics.org", + ".cn-proxy.com", + "|http://cn-proxy.com", + ".cnproxy.com", + "blog.cnyes.com", + "news.cnyes.com", + "||coat.co.jp", + ".cochina.co", + "||cochina.co", + "||cochina.org", + ".code1984.com/64", + "|http://goagent.codeplex.com", + "||codeshare.io", + "||codeskulptor.org", + "|http://tosh.comedycentral.com", + "comefromchina.com", + "||comefromchina.com", + ".comic-mega.me", + "commandarms.com", + "||commentshk.com", + ".communistcrimes.org", + "||communistcrimes.org", + "||communitychoicecu.com", + "||compileheart.com", + "||conoha.jp", + ".contactmagazine.net", + ".convio.net", + ".coobay.com", + "|http://www.cool18.com/bbs*/", + ".coolaler.com", + "||coolaler.com", + "coolder.com", + "||coolder.com", + "||coolloud.org.tw", + ".coolncute.com", + "||coolstuffinc.com", + "corumcollege.com", + ".cos-moe.com", + "|http://cos-moe.com", + ".cosplayjav.pl", + "|http://cosplayjav.pl", + ".cotweet.com", + "||cotweet.com", + ".coursehero.com", + "||coursehero.com", + "cpj.org", + "||cpj.org", + ".cq99.us", + "|http://cq99.us", + "crackle.com", + "||crackle.com", + ".crazys.cc", + ".crazyshit.com", + "||crchina.org", + "crd-net.org", + "creaders.net", + "||creaders.net", + ".creadersnet.com", + "||cristyli.com", + ".crocotube.com", + "|http://crocotube.com", + ".crossthewall.net", + "||crossthewall.net", + ".crossvpn.net", + "||crossvpn.net", + "||crucial.com", + "csdparty.com", + "||csdparty.com", + "||csuchen.de", + ".csw.org.uk", + ".ct.org.tw", + "||ct.org.tw", + ".ctao.org", + ".ctfriend.net", + ".ctitv.com.tw", + "cts.com.tw", + "|http://library.usc.cuhk.edu.hk/", + "|http://mjlsh.usc.cuhk.edu.hk/", + ".cuhkacs.org/~benng", + ".cuihua.org", + "||cuihua.org", + ".cuiweiping.net", + "||cuiweiping.net", + "||culture.tw", + ".cumlouder.com", + "||cumlouder.com", + "||curvefish.com", + ".cusu.hk", + "||cusu.hk", + ".cutscenes.net", + ".cw.com.tw", + "||cw.com.tw", + "|http://forum.cyberctm.com", + "cyberghostvpn.com", + "||cyberghostvpn.com", + "||cynscribe.com", + "cytode.us", + "||ifan.cz.cc", + "||mike.cz.cc", + "||nic.cz.cc", + ".d-fukyu.com", + "|http://d-fukyu.com", + "cl.d0z.net", + ".d100.net", + "||d100.net", + ".d2bay.com", + "|http://d2bay.com", + ".dabr.co.uk", + "||dabr.co.uk", + "dabr.eu", + "dabr.mobi", + "||dabr.mobi", + "||dabr.me", + "dadazim.com", + "||dadazim.com", + ".dadi360.com", + ".dafabet.com", + "dafagood.com", + "dafahao.com", + ".dafoh.org", + ".daftporn.com", + ".dagelijksestandaard.nl", + ".daidostup.ru", + "|http://daidostup.ru", + ".dailidaili.com", + "||dailidaili.com", + ".dailymotion.com", + "||dailymotion.com", + "daiphapinfo.net", + ".dajiyuan.com", + "||dajiyuan.de", + "dajiyuan.eu", + "dalailama.com", + ".dalailama.mn", + "|http://dalailama.mn", + ".dalailama.ru", + "||dalailama.ru", + "dalailama80.org", + ".dalailama-archives.org", + ".dalailamacenter.org", + "|http://dalailamacenter.org", + "dalailamafellows.org", + ".dalailamafilm.com", + ".dalailamafoundation.org", + ".dalailamahindi.com", + ".dalailamainaustralia.org", + ".dalailamajapanese.com", + ".dalailamaprotesters.info", + ".dalailamaquotes.org", + ".dalailamatrust.org", + ".dalailamavisit.org.nz", + ".dalailamaworld.com", + "||dalailamaworld.com", + "dalianmeng.org", + "||dalianmeng.org", + ".daliulian.org", + "||daliulian.org", + ".danke4china.net", + "||danke4china.net", + ".danwei.org", + "daolan.net", + ".daozhongxing.org", + "darktoy.net", + "||dastrassi.org", + "blog.daum.net/_blog", + ".david-kilgour.com", + "|http://david-kilgour.com", + "daxa.cn", + "||daxa.cn", + "cn.dayabook.com", + ".daylife.com/topic/dalai_lama", + "||db.tt", + ".dbc.hk/main", + "||dcard.tw", + "dcmilitary.com", + ".ddc.com.tw", + ".ddhw.info", + "||de-sci.org", + ".de-sci.org", + "packages.debian.org/zh-cn/lenny/gpass", + "||decodet.co", + ".definebabe.com", + "||delcamp.net", + "delicious.com/GFWbookmark", + ".democrats.org", + "||democrats.org", + "||desc.se", + "||dessci.com", + ".destroy-china.jp", + "||deutsche-welle.de", + "||devio.us", + "||devpn.com", + "||dfas.mil", + "dfn.org", + "dharmakara.net", + ".dharamsalanet.com", + ".diaoyuislands.org", + "||diaoyuislands.org", + ".difangwenge.org", + "|http://digiland.tw/", + "||digitalnomadsproject.org", + ".diigo.com", + "||diigo.com", + "||dilber.se", + "||furl.net", + ".dipity.com", + "||directcreative.com", + ".discuss.com.hk", + "||discuss.com.hk", + ".discuss4u.com", + "disp.cc", + ".disqus.com", + "||disqus.com", + ".dit-inc.us", + "||dit-inc.us", + ".dizhidizhi.com", + "||dizhuzhishang.com", + "djangosnippets.org", + ".djorz.com", + "||djorz.com", + "||dl-laby.jp", + "||dlsite.com", + "||dlyoutube.com", + "||dmcdn.net", + ".dnscrypt.org", + "||dnscrypt.org", + "||dns2go.com", + "||dnssec.net", + "doctorvoice.org", + ".dogfartnetwork.com/tour", + "gloryhole.com", + ".dojin.com", + ".dok-forum.net", + "||dolc.de", + "||dolf.org.hk", + "||dollf.com", + ".domain.club.tw", + ".domaintoday.com.au", + "chinese.donga.com", + "dongtaiwang.com", + "||dongtaiwang.com", + ".dongtaiwang.net", + "||dongtaiwang.net", + ".dongyangjing.com", + "|http://danbooru.donmai.us", + ".dontfilter.us", + "||dontmovetochina.com", + ".dorjeshugden.com", + ".dotplane.com", + "||dotplane.com", + "||dotsub.com", + ".dotvpn.com", + "||dotvpn.com", + ".doub.io", + "||doub.io", + "||dougscripts.com", + "||douhokanko.net", + "||doujincafe.com", + "dowei.org", + "dphk.org", + "dpp.org.tw", + "||dpp.org.tw", + "||dpr.info", + "||dragonsprings.org", + ".dreamamateurs.com", + ".drepung.org", + "||drgan.net", + ".drmingxia.org", + "|http://drmingxia.org", + "||dropbooks.tv", + "||dropbox.com", + "||api.dropboxapi.com", + "||notify.dropboxapi.com", + "||dropboxusercontent.com", + "drsunacademy.com", + ".drtuber.com", + ".dscn.info", + "|http://dscn.info", + ".dstk.dk", + "|http://dstk.dk", + "||dtiblog.com", + "||dtic.mil", + ".dtwang.org", + ".duanzhihu.com", + ".duckdns.org", + "|http://duckdns.org", + ".duckduckgo.com", + "||duckduckgo.com", + ".duckload.com/download", + "||duckmylife.com", + ".duga.jp", + "|http://duga.jp", + ".duihua.org", + "||duihua.org", + "||duihuahrjournal.org", + ".dunyabulteni.net", + ".duoweitimes.com", + "||duoweitimes.com", + "duping.net", + "||duplicati.com", + "dupola.com", + "dupola.net", + ".dushi.ca", + "||dvorak.org", + ".dw.com", + "||dw.com", + "||dw.de", + ".dw-world.com", + "||dw-world.com", + ".dw-world.de", + "|http://dw-world.de", + "www.dwheeler.com", + "dwnews.com", + "||dwnews.com", + "dwnews.net", + "||dwnews.net", + "xys.dxiong.com", + "||dynawebinc.com", + "||dysfz.cc", + ".dzze.com", + "||e-classical.com.tw", + "||e-gold.com", + ".e-gold.com", + ".e-hentai.org", + "||e-hentai.org", + ".e-hentaidb.com", + "|http://e-hentaidb.com", + "e-info.org.tw", + ".e-traderland.net/board", + ".e-zone.com.hk/discuz", + "|http://e-zone.com.hk/discuz", + ".e123.hk", + "||e123.hk", + ".earlytibet.com", + "|http://earlytibet.com", + ".earthcam.com", + ".earthvpn.com", + "||earthvpn.com", + "eastern-ark.com", + ".easternlightning.org", + ".eastturkestan.com", + "|http://www.eastturkistan.net/", + ".eastturkistan-gov.org", + ".eastturkistancc.org", + ".eastturkistangovernmentinexile.us", + "||eastturkistangovernmentinexile.us", + ".easyca.ca", + ".easypic.com", + ".ebony-beauty.com", + "ebookbrowse.com", + "ebookee.com", + "||ecfa.org.tw", + "ushuarencity.echainhost.com", + "||ecimg.tw", + "ecministry.net", + ".economist.com", + "bbs.ecstart.com", + "edgecastcdn.net", + "||edgecastcdn.net", + "/twimg\\.edgesuite\\.net\\/\\/?appledaily/", + "edicypages.com", + ".edmontonchina.cn", + ".edmontonservice.com", + "edoors.com", + ".edubridge.com", + "||edubridge.com", + ".edupro.org", + "||eevpn.com", + "efcc.org.hk", + ".efukt.com", + "|http://efukt.com", + "||eic-av.com", + "||eireinikotaerukai.com", + ".eisbb.com", + ".eksisozluk.com", + "||eksisozluk.com", + "electionsmeter.com", + "||elgoog.im", + ".ellawine.org", + ".elpais.com", + "||elpais.com", + ".eltondisney.com", + ".emaga.com/info/3407", + "emilylau.org.hk", + ".emanna.com/chineseTraditional", + "bitc.bme.emory.edu/~lzhou/blogs", + ".empfil.com", + ".emule-ed2k.com", + "|http://emule-ed2k.com", + ".emulefans.com", + "|http://emulefans.com", + ".emuparadise.me", + ".enanyang.my", + "||enewstree.com", + ".enfal.de", + "chinese.engadget.com", + "||engagedaily.org", + "englishforeveryone.org", + "||englishfromengland.co.uk", + "englishpen.org", + ".enlighten.org.tw", + "||entermap.com", + ".entnt.com", + "|http://entnt.com", + ".episcopalchurch.org", + ".epochhk.com", + "|http://epochhk.com", + "epochtimes-bg.com", + "||epochtimes-bg.com", + "epochtimes-romania.com", + "||epochtimes-romania.com", + "epochtimes.co.il", + "||epochtimes.co.il", + "epochtimes.co.kr", + "||epochtimes.co.kr", + "epochtimes.com", + "||epochtimes.com", + ".epochtimes.cz", + "epochtimes.de", + "epochtimes.fr", + ".epochtimes.ie", + ".epochtimes.it", + "epochtimes.jp", + "epochtimes.ru", + "epochtimes.se", + "epochtimestr.com", + ".epochweek.com", + "||epochweek.com", + "||epochweekly.com", + ".eporner.com", + ".equinenow.com", + "erabaru.net", + ".eracom.com.tw", + ".eraysoft.com.tr", + ".erepublik.com", + ".erights.net", + "||erights.net", + ".erktv.com", + "|http://erktv.com", + "||ernestmandel.org", + "||erodaizensyu.com", + "||erodoujinlog.com", + "||erodoujinworld.com", + "||eromanga-kingdom.com", + "||eromangadouzin.com", + ".eromon.net", + "|http://eromon.net", + ".eroprofile.com", + ".eroticsaloon.net", + ".eslite.com", + "||eslite.com", + "wiki.esu.im/%E8%9B%A4%E8%9B%A4%E8%AF%AD%E5%BD%95", + ".etaa.org.au", + ".etadult.com", + "etaiwannews.com", + "||etizer.org", + "||etokki.com", + ".ettoday.net/news/20151216/614081", + "etvonline.hk", + ".eu.org", + "||eu.org", + ".eucasino.com", + ".eulam.com", + ".eurekavpt.com", + "||eurekavpt.com", + ".euronews.com", + "||euronews.com", + "eeas.europa.eu/delegations/china/press_corner/all_news/news/2015/20150716_zh", + "eeas.europa.eu/statements-eeas/2015/151022", + ".evschool.net", + "|http://evschool.net", + "||exblog.jp", + "||blog.exblog.co.jp", + "@@||www.exblog.jp", + ".exchristian.hk", + "||exchristian.hk", + "|http://blog.excite.co.jp", + "||exmormon.org", + "||expatshield.com", + ".expecthim.com", + "||expecthim.com", + "experts-univers.com", + "||exploader.net", + ".expressvpn.com", + "||expressvpn.com", + ".extremetube.com", + "eyevio.jp", + "||eyevio.jp", + ".eyny.com", + "||eyny.com", + ".ezpc.tk/category/soft", + ".ezpeer.com", + "||facebookquotes4u.com", + ".faceless.me", + "||faceless.me", + "|http://facesoftibetanselfimmolators.info", + "||facesofnyfw.com", + ".faith100.org", + "|http://faith100.org", + ".faithfuleye.com", + "||faiththedog.info", + ".fakku.net", + ".falsefire.com", + "||falsefire.com", + "falun-co.org", + "falunart.org", + "||falunasia.info", + "|http://falunau.org", + ".falunaz.net", + "falundafa.org", + "falundafa-dc.org", + "||falundafa-florida.org", + "||falundafa-nc.org", + "||falundafa-pa.net", + "||falundafa-sacramento.org", + "falun-ny.net", + "||falundafaindia.org", + "falundafamuseum.org", + ".falungong.club", + ".falungong.de", + "falungong.org.uk", + "||falunhr.org", + "faluninfo.de", + "faluninfo.net", + ".falunpilipinas.net", + "||falunworld.net", + "familyfed.org", + ".fangeming.com", + "||fanglizhi.info", + "||fangong.org", + "fangongheike.com", + ".fanqiang.tk", + "fanqianghou.com", + "||fanqianghou.com", + ".fanqiangzhe.com", + "||fanqiangzhe.com", + "fapdu.com", + "faproxy.com", + ".fawanghuihui.org", + "fanqiangyakexi.net", + "fail.hk", + "||famunion.com", + ".fan-qiang.com", + ".fangbinxing.com", + "||fangbinxing.com", + "fangeming.com", + ".fangmincn.org", + "||fangmincn.org", + ".fanhaodang.com", + "||fanswong.com", + ".fanyue.info", + ".farwestchina.com", + "en.favotter.net", + "nytimes.map.fastly.net", + "||nytimes.map.fastly.net", + "||fast.wistia.com", + "||fastssh.com", + "||faststone.org", + "favstar.fm", + "||favstar.fm", + "faydao.com/weblog", + ".fc2.com", + ".fc2china.com", + ".fc2cn.com", + "||fc2cn.com", + "fc2blog.net", + "|http://uygur.fc2web.com/", + "video.fdbox.com", + ".fdc64.de", + ".fdc64.org", + ".fdc89.jp", + "||fourface.nodesnoop.com", + "||feelssh.com", + "feer.com", + ".feifeiss.com", + "|http://feitianacademy.org", + ".feitian-california.org", + "||feministteacher.com", + ".fengzhenghu.com", + "||fengzhenghu.com", + ".fengzhenghu.net", + "||fengzhenghu.net", + ".fevernet.com", + "|http://ff.im", + "fffff.at", + "fflick.com", + ".ffvpn.com", + "fgmtv.net", + ".fgmtv.org", + ".fhreports.net", + "|http://fhreports.net", + ".figprayer.com", + "||figprayer.com", + ".fileflyer.com", + "||fileflyer.com", + "|http://feeds.fileforum.com", + ".files2me.com", + ".fileserve.com/file", + "fillthesquare.org", + "filmingfortibet.org", + ".filthdump.com", + ".finchvpn.com", + "||finchvpn.com", + "findmespot.com", + "||findyoutube.com", + "||findyoutube.net", + ".fingerdaily.com", + "finler.net", + ".firearmsworld.net", + "|http://firearmsworld.net", + ".fireofliberty.org", + "||fireofliberty.org", + ".firetweet.io", + "||firetweet.io", + ".flagsonline.it", + "fleshbot.com", + ".fleursdeslettres.com", + "|http://fleursdeslettres.com", + "||flgg.us", + "||flgjustice.org", + "||flickr.com", + "||staticflickr.com", + "flickrhivemind.net", + ".flickriver.com", + ".fling.com", + "||flipkart.com", + "||flog.tw", + ".flyvpn.com", + "||flyvpn.com", + "|http://cn.fmnnow.com", + "fofldfradio.org", + "blog.foolsmountain.com", + ".forum4hk.com", + "fangong.forums-free.com", + "pioneer-worker.forums-free.com", + "|https://ss*.4sqi.net", + "video.foxbusiness.com", + "|http://foxgay.com", + "||fringenetwork.com", + "||flecheinthepeche.fr", + ".fochk.org", + "|http://fochk.org", + "||focustaiwan.tw", + ".focusvpn.com", + "||fofg.org", + ".fofg-europe.net", + ".fooooo.com", + "||fooooo.com", + "footwiball.com", + ".fotile.me", + "||fourthinternational.org", + "||foxdie.us", + "||foxsub.com", + "foxtang.com", + ".fpmt.org", + "|http://fpmt.org", + ".fpmt.tw", + ".fpmt-osel.org", + "||fpmtmexico.org", + "fqok.org", + "||fqrouter.com", + "||franklc.com", + ".freakshare.com", + "|http://freakshare.com", + "||free4u.com.ar", + "free-gate.org", + ".free-hada-now.org", + "free-proxy.cz", + ".free.fr/adsl", + "kineox.free.fr", + "tibetlibre.free.fr", + "||freealim.com", + "whitebear.freebearblog.org", + "||freebrowser.org", + ".freechal.com", + ".freedomchina.info", + "||freedomchina.info", + ".freedomhouse.org", + "||freedomhouse.org", + ".freedomsherald.org", + "||freedomsherald.org", + ".freefq.com", + ".freefuckvids.com", + ".freegao.com", + "||freegao.com", + "freeilhamtohti.org", + ".freekwonpyong.org", + "||saveliuxiaobo.com", + ".freelotto.com", + "||freelotto.com", + "freeman2.com", + ".freeopenvpn.com", + "freemoren.com", + "freemorenews.com", + "freemuse.org/archives/789", + "freenet-china.org", + "freenewscn.com", + "cn.freeones.com", + ".freeoz.org/bbs", + "||freeoz.org", + "||freessh.us", + "free4u.com.ar", + ".free-ssh.com", + "||free-ssh.com", + ".freechina.news/", + "||freechinaforum.org", + "||freechinaweibo.com", + ".freedomcollection.org/interviews/rebiya_kadeer", + ".freeforums.org", + "||freenetproject.org", + ".freeoz.org", + ".freetibet.net", + "||freetibet.org", + ".freetibetanheroes.org", + "|http://freetibetanheroes.org", + ".freeviewmovies.com", + ".freevpn.me", + "|http://freevpn.me", + "||freewallpaper4.me", + ".freewebs.com", + ".freewechat.com", + "||freewechat.com", + "freeweibo.com", + "||freeweibo.com", + ".freexinwen.com", + ".freeyoutubeproxy.net", + "||freeyoutubeproxy.net", + "friendfeed.com", + "friendfeed-media.com/e99a4ebe2fb4c1985c2a58775eb4422961aa5a2e", + "friends-of-tibet.org", + ".friendsoftibet.org", + "freechina.net", + "|http://www.zensur.freerk.com/", + "freevpn.nl", + "freeyellow.com", + "hk.frienddy.com/hk", + "|http://adult.friendfinder.com/", + ".fring.com", + "||fring.com", + ".fromchinatousa.net", + "||frommel.net", + ".frontlinedefenders.org", + ".frootvpn.com", + "||frootvpn.com", + "||fscked.org", + ".fsurf.com", + ".ftv.com.tw", + "fucd.com", + ".fuckcnnic.net", + "||fuckcnnic.net", + "fuckgfw.org", + ".fulione.com", + "|https://fulione.com", + "||fullerconsideration.com", + "fulue.com", + ".funf.tw", + "funp.com", + ".fuq.com", + ".furhhdl.org", + "||furinkan.com", + ".futurechinaforum.org", + "||futuremessage.org", + ".fux.com", + ".fuyin.net", + ".fuyindiantai.org", + ".fuyu.org.tw", + "||fw.cm", + ".fxcm-chinese.com", + "||fxcm-chinese.com", + "fzh999.com", + "fzh999.net", + "fzlm.com", + ".g6hentai.com", + "|http://g6hentai.com", + "||g-queen.com", + "||gabocorp.com", + ".gaeproxy.com", + ".gaforum.org", + ".galaxymacau.com", + "||galenwu.com", + ".galstars.net", + "||game735.com", + "gamebase.com.tw", + "gamejolt.com", + "|http://wiki.gamerp.jp", + "||gamer.com.tw", + ".gamer.com.tw", + ".gamez.com.tw", + "||gamez.com.tw", + ".gamousa.com", + ".gaoming.net", + "||gaoming.net", + "ganges.com", + ".gaopi.net", + "|http://gaopi.net", + ".gaozhisheng.org", + ".gaozhisheng.net", + "gardennetworks.com", + "||gardennetworks.org", + "72.52.81.22", + "||gartlive.com", + "||gate-project.com", + "||gather.com", + ".gatherproxy.com", + "gati.org.tw", + ".gaybubble.com", + ".gaycn.net", + ".gayhub.com", + "||gaymap.cc", + ".gaymenring.com", + ".gaytube.com", + "||images-gaytube.com", + ".gaywatch.com", + "|http://gaywatch.com", + ".gazotube.com", + "||gazotube.com", + "||gcc.org.hk", + "||gclooney.com", + "||gcmasia.com", + ".gcpnews.com", + "|http://gcpnews.com", + ".gdbt.net/forum", + "gdzf.org", + "||geek-art.net", + "geekerhome.com/2010/03/xixiang-project-cross-gfw", + "||geekheart.info", + ".gekikame.com", + "|http://gekikame.com", + ".gelbooru.com", + "|http://gelbooru.com", + ".geocities.co.jp", + ".geocities.com/SiliconValley/Circuit/5683/download.html", + "hk.geocities.com", + "geocities.jp", + ".gerefoundation.org", + "||getastrill.com", + ".getchu.com", + ".getcloak.com", + "||getcloak.com", + "||getfoxyproxy.org", + ".getfreedur.com", + "||getgom.com", + ".geti2p.net", + "||geti2p.net", + ".getlantern.org", + "||getlantern.org", + ".getjetso.com/forum", + "getiton.com", + ".getsocialscope.com", + "||getsync.com", + "gfbv.de", + ".gfgold.com.hk", + ".gfsale.com", + "||gfsale.com", + "gfw.org.ua", + ".gfw.press", + "||gfw.press", + ".ggssl.com", + "||ggssl.com", + ".ghostpath.com", + "||ghostpath.com", + "||ghut.org", + ".giantessnight.com", + "|http://giantessnight.com", + ".gifree.com", + "||giga-web.jp", + "tw.gigacircle.com", + "|http://cn.giganews.com/", + "gigporno.ru", + "||girlbanker.com", + ".git.io", + "||git.io", + "|http://softwaredownload.gitbooks.io", + "github.com/getlantern", + "|https://gist.github.com", + "http://cthlo.github.io/hktv", + "hahaxixi.github.io", + "|https://hahaxixi.github.io", + "||haoel.github.io", + "||rg3.github.io", + "||sikaozhe1997.github.io", + "||sodatea.github.io", + "||terminus2049.github.io", + "||toutyrater.github.io", + "wsgzao.github.io", + "|https://wsgzao.github.io", + ".gizlen.net", + "||gizlen.net", + ".gjczz.com", + "||gjczz.com", + "globaljihad.net", + "globalmediaoutreach.com", + "globalmuseumoncommunism.org", + "||globalrescue.net", + ".globaltm.org", + ".globalvoicesonline.org", + "||globalvoicesonline.org", + "||globalvpn.net", + ".glock.com", + "gluckman.com/DalaiLama", + "gmbd.cn", + "||gmhz.org", + "|http://www.gmiddle.com", + "|http://www.gmiddle.net", + ".gmll.org", + "||gnci.org.hk", + "go-pki.com", + "||goagent.biz", + "||goagentplus.com", + "gobet.cc", + "godfootsteps.org", + "||godfootsteps.org", + "godns.work", + "godsdirectcontact.co.uk", + ".godsdirectcontact.org", + "godsdirectcontact.org.tw", + ".godsimmediatecontact.com", + ".gogotunnel.com", + "||gohappy.com.tw", + ".gokbayrak.com", + ".goldbet.com", + "||goldbetsports.com", + "||goldeneyevault.com", + ".goldenfrog.com", + "||goldenfrog.com", + ".goldjizz.com", + "|http://goldjizz.com", + ".goldstep.net", + "||goldwave.com", + "gongmeng.info", + "gongm.in", + "gongminliliang.com", + ".gongwt.com", + "|http://gongwt.com", + "blog.goo.ne.jp/duck-tail_2009", + ".gooday.xyz", + "|http://gooday.xyz", + ".goodreads.com", + "||goodreads.com", + ".goodreaders.com", + "||goodreaders.com", + ".goodtv.com.tw", + ".goodtv.tv", + "||goofind.com", + ".googlesile.com", + ".gopetition.com", + "||gopetition.com", + ".goproxing.net", + ".gotrusted.com", + "||gotrusted.com", + "||gotw.ca", + "||grammaly.com", + "grandtrial.org", + ".graphis.ne.jp", + "||graphis.ne.jp", + "||graphql.org", + "greatfirewall.biz", + "||greatfirewallofchina.net", + ".greatfirewallofchina.org", + "||greatfirewallofchina.org", + "||greenfieldbookstore.com.hk", + ".greenparty.org.tw", + "||greenpeace.org", + ".greenreadings.com/forum", + "great-firewall.com", + "great-roc.org", + "greatroc.org", + "greatzhonghua.org", + ".greenpeace.com.tw", + ".greenvpn.net", + "||greenvpn.net", + ".greenvpn.org", + "||grotty-monday.com", + "gs-discuss.com", + "||gtricks.com", + "guancha.org", + "guaneryu.com", + ".guardster.com", + ".gun-world.net", + "gunsandammo.com", + "||gutteruncensored.com", + "||gvm.com.tw", + ".gzm.tv", + "||gzone-anime.info", + "||clementine-player.org", + "echofon.com", + "||greasespot.net", + "||www.klip.me", + "@@||site.locql.com", + "||stephaniered.com", + "@@||download.syniumsoftware.com", + "|http://ub0.cc", + "wozy.in", + "gospelherald.com", + "||gospelherald.com", + "|http://hk.gradconnection.com/", + "||grangorz.org", + "greatfire.org", + "||greatfire.org", + "greatfirewallofchina.org", + "||greatroc.tw", + ".gts-vpn.com", + "|http://gts-vpn.com", + ".gu-chu-sum.org", + "|http://gu-chu-sum.org", + ".guaguass.com", + "|http://guaguass.com", + ".guaguass.org", + "|http://guaguass.org", + ".guangming.com.my", + "guishan.org", + "||guishan.org", + ".gumroad.com", + "||gumroad.com", + "||gunsamerica.com", + "guruonline.hk", + "|http://gvlib.com", + ".gyalwarinpoche.com", + ".gyatsostudio.com", + ".h528.com", + ".h5dm.com", + ".h5galgame.me", + "||h-china.org", + ".h-moe.com", + "|http://h-moe.com", + "h1n1china.org", + ".hacg.club", + "||hacg.club", + ".hacg.in", + "|http://hacg.in", + ".hacg.li", + "|http://hacg.li", + ".hacg.me", + "|http://hacg.me", + ".hacg.red", + "|http://hacg.red", + ".hacken.cc/bbs", + ".hacker.org", + "||hackthatphone.net", + "hahlo.com", + "||hakkatv.org.tw", + ".handcraftedsoftware.org", + "|http://bbs.hanminzu.org/", + ".hanunyi.com", + ".hao.news/news", + "|http://ae.hao123.com", + "|http://ar.hao123.com", + "|http://br.hao123.com", + "|http://en.hao123.com", + "|http://id.hao123.com", + "|http://jp.hao123.com", + "|http://ma.hao123.com", + "|http://mx.hao123.com", + "|http://sa.hao123.com", + "|http://th.hao123.com", + "|http://tw.hao123.com", + "|http://vn.hao123.com", + "|http://hk.hao123img.com", + "|http://ld.hao123img.com", + "||happy-vpn.com", + ".haproxy.org", + "||hardsextube.com", + ".harunyahya.com", + "|http://harunyahya.com", + "bbs.hasi.wang", + "have8.com", + "@@||haygo.com", + ".hclips.com", + "||hdlt.me", + "||hdtvb.net", + ".hdzog.com", + "|http://hdzog.com", + "||heartyit.com", + ".heavy-r.com", + ".hec.su", + "|http://hec.su", + ".hecaitou.net", + "||hecaitou.net", + ".hechaji.com", + "||hechaji.com", + "||heeact.edu.tw", + ".hegre-art.com", + "|http://hegre-art.com", + "||cdn.helixstudios.net", + "||helplinfen.com", + "||helloandroid.com", + "||helloqueer.com", + ".helloss.pw", + "hellotxt.com", + "||hellotxt.com", + ".hentai.to", + ".hellouk.org/forum/lofiversion", + ".helpeachpeople.com", + "||helpeachpeople.com", + "||helpster.de", + ".helpzhuling.org", + "hentaitube.tv", + ".hentaivideoworld.com", + "||id.heroku.com", + "heqinglian.net", + "||heungkongdiscuss.com", + ".hexieshe.com", + "||hexieshe.com", + "||hexieshe.xyz", + "||hexxeh.net", + "app.heywire.com", + ".heyzo.com", + ".hgseav.com", + ".hhdcb3office.org", + ".hhthesakyatrizin.org", + "hi-on.org.tw", + "hidden-advent.org", + "||hidden-advent.org", + "hidecloud.com/blog/2008/07/29/fuck-beijing-olympics.html", + "||hide.me", + ".hidein.net", + ".hideipvpn.com", + "||hideipvpn.com", + ".hideman.net", + "||hideman.net", + "hideme.nl", + "||hidemy.name", + ".hidemyass.com", + "||hidemyass.com", + "hidemycomp.com", + "||hidemycomp.com", + ".hihiforum.com", + ".hihistory.net", + "||hihistory.net", + ".higfw.com", + "highpeakspureearth.com", + "||highrockmedia.com", + "||hiitch.com", + "||hikinggfw.org", + ".hilive.tv", + ".himalayan-foundation.org", + "himalayanglacier.com", + ".himemix.com", + "||himemix.com", + ".himemix.net", + "times.hinet.net", + ".hitomi.la", + "|http://hitomi.la", + ".hiwifi.com", + "@@||hiwifi.com", + "hizbuttahrir.org", + "hizb-ut-tahrir.info", + "hizb-ut-tahrir.org", + ".hjclub.info", + ".hk-pub.com/forum", + "|http://hk-pub.com", + ".hk01.com", + "||hk01.com", + ".hk32168.com", + "||hk32168.com", + "||hkacg.com", + "||hkacg.net", + ".hkatvnews.com", + "hkbc.net", + ".hkbf.org", + ".hkbookcity.com", + "||hkbookcity.com", + ".hkchurch.org", + "hkci.org.hk", + ".hkcmi.edu", + "||hkcnews.com", + "||hkcoc.com", + "hkday.net", + ".hkdailynews.com.hk/china.php", + "hkdf.org", + ".hkej.com", + ".hkepc.com/forum/viewthread.php?tid=1153322", + "china.hket.com", + "||hkfaa.com", + "hkfreezone.com", + "hkfront.org", + "m.hkgalden.com", + "|https://m.hkgalden.com", + ".hkgreenradio.org/home", + ".hkheadline.com*blog", + ".hkheadline.com/instantnews", + "hkhkhk.com", + "hkhrc.org.hk", + "hkhrm.org.hk", + "||hkip.org.uk", + "1989report.hkja.org.hk", + "hkjc.com", + ".hkjp.org", + ".hklft.com", + ".hklts.org.hk", + "||hklts.org.hk", + "news.hkpeanut.com", + "hkptu.org", + ".hkreporter.com", + "||hkreporter.com", + "|http://hkupop.hku.hk/", + ".hkusu.net", + "||hkusu.net", + ".hkvwet.com", + ".hkwcc.org.hk", + "||hkzone.org", + ".hmonghot.com", + "|http://hmonghot.com", + ".hmv.co.jp/", + "hnjhj.com", + "||hnjhj.com", + ".hnntube.com", + "||hola.com", + "||hola.org", + "holymountaincn.com", + "holyspiritspeaks.org", + "||holyspiritspeaks.org", + "||derekhsu.homeip.net", + ".homeperversion.com", + "|http://homeservershow.com", + "|http://old.honeynet.org/scans/scan31/sub/doug_eric/spam_translation.html", + ".hongkongfp.com", + "||hongkongfp.com", + "hongmeimei.com", + "||hongzhi.li", + ".hootsuite.com", + "||hootsuite.com", + ".hopedialogue.org", + "|http://hopedialogue.org", + ".hopto.org", + ".hornygamer.com", + ".hornytrip.com", + "|http://hornytrip.com", + ".hotav.tv", + ".hotels.cn", + "hotfrog.com.tw", + "hotgoo.com", + ".hotpornshow.com", + "hotpot.hk", + ".hotshame.com", + "||hotspotshield.com", + ".hotvpn.com", + "||hotvpn.com", + "||hougaige.com", + "||howtoforge.com", + "||hoxx.com", + ".hqcdp.org", + "||hqcdp.org", + "||hqjapanesesex.com", + "hqmovies.com", + ".hrcir.com", + ".hrcchina.org", + ".hrea.org", + ".hrichina.org", + "||hrichina.org", + ".hrtsea.com", + ".hrw.org", + "||hrw.org", + "hrweb.org", + "||hsjp.net", + "||hsselite.com", + "|http://hst.net.tw", + ".hstern.net", + ".hstt.net", + ".htkou.net", + "||htkou.net", + ".hua-yue.net", + ".huaglad.com", + "||huaglad.com", + ".huanghuagang.org", + "||huanghuagang.org", + ".huangyiyu.com", + ".huaren.us", + "||huaren.us", + ".huaren4us.com", + ".huashangnews.com", + "|http://huashangnews.com", + "bbs.huasing.org", + "huaxia-news.com", + "huaxiabao.org", + "huaxin.ph", + "||huayuworld.org", + ".huffingtonpost.com/rebiya-kadeer", + "||hugoroy.eu", + "||huhaitai.com", + "||huhamhire.com", + "huiyi.in", + ".hulkshare.com", + "humanrightsbriefing.org", + "||hung-ya.com", + "||hungerstrikeforaids.org", + "||huping.net", + "hurgokbayrak.com", + ".hurriyet.com.tr", + ".hut2.ru", + "||hutianyi.net", + "hutong9.net", + "huyandex.com", + ".hwadzan.tw", + "||hwayue.org.tw", + "||hwinfo.com", + "||hxwk.org", + "hxwq.org", + "||hyperrate.com", + "ebook.hyread.com.tw", + "||ebook.hyread.com.tw", + "||i1.hk", + "||i2p2.de", + "||i2runner.com", + "||i818hk.com", + ".i-cable.com", + ".i-part.com.tw", + ".iamtopone.com", + "iask.ca", + "||iask.ca", + "iask.bz", + "||iask.bz", + ".iav19.com", + "ibiblio.org/pub/packages/ccic", + ".iblist.com", + "||iblogserv-f.net", + "ibros.org", + "|http://cn.ibtimes.com", + ".ibvpn.com", + "||ibvpn.com", + "icams.com", + "blogs.icerocket.com/tag", + ".icij.org", + "||icij.org", + "||icl-fi.org", + ".icoco.com", + "||icoco.com", + "||furbo.org", + "||warbler.iconfactory.net", + "||iconpaper.org", + "||icu-project.org", + "w.idaiwan.com/forum", + "||iddddg.com", + "idemocracy.asia", + ".identi.ca", + "||identi.ca", + "||idiomconnection.com", + "|http://www.idlcoyote.com", + ".idouga.com", + ".idreamx.com", + "forum.idsam.com", + ".idv.tw", + ".ieasy5.com", + "|http://ieasy5.com", + ".ied2k.net", + ".ienergy1.com", + "|http://if.ttt/", + "ifanqiang.com", + ".ifcss.org", + "||ifcss.org", + "ifjc.org", + ".ift.tt", + "|http://ift.tt", + "||ifreewares.com", + "||igcd.net", + ".igfw.net", + "||igfw.net", + ".igfw.tech", + "||igfw.tech", + ".igmg.de", + "||ignitedetroit.net", + ".igotmail.com.tw", + "||igvita.com", + "||ihakka.net", + ".ihao.org/dz5", + "||iicns.com", + ".ikstar.com", + "||illusionfactory.com", + "||ilove80.be", + "||im.tv", + "@@||myvlog.im.tv", + "||im88.tw", + ".imgchili.net", + "|http://imgchili.net", + ".imageab.com", + ".imagefap.com", + "||imagefap.com", + "||imageflea.com", + "imageshack.us", + "||imagevenue.com", + "||imagezilla.net", + ".imb.org", + "|http://imb.org", + "|http://www.imdb.com/name/nm0482730", + ".imdb.com/title/tt0819354", + ".imdb.com/title/tt1540068", + ".imdb.com/title/tt4908644", + ".img.ly", + "||img.ly", + ".imgur.com", + "||imgur.com", + ".imkev.com", + "||imkev.com", + ".imlive.com", + ".immoral.jp", + "impact.org.au", + "impp.mn", + "|http://tech2.in.com/video/", + "in99.org", + "in-disguise.com", + ".incapdns.net", + ".incloak.com", + "||incloak.com", + "||incredibox.fr", + "||indiandefensenews.in", + "timesofindia.indiatimes.com/dalai", + "timesofindia.indiatimes.com/defaultinterstitial.cms", + ".indiemerch.com", + "||indiemerch.com", + "info-graf.fr", + "website.informer.com", + ".initiativesforchina.org", + ".inkui.com", + ".inmediahk.net", + "||inmediahk.net", + "||innermongolia.org", + "|http://blog.inoreader.com", + ".inote.tw", + ".insecam.org", + "|http://insecam.org", + "||insidevoa.com", + ".institut-tibetain.org", + "|http://internet.org/", + "internetdefenseleague.org", + "internetfreedom.org", + "||internetpopculture.com", + ".inthenameofconfuciusmovie.com", + "||inthenameofconfuciusmovie.com", + "inxian.com", + "||inxian.com", + "ipalter.com", + ".ipfire.org", + "||iphone4hongkong.com", + "||iphonehacks.com", + "||iphonetaiwan.org", + "||iphonix.fr", + "||ipicture.ru", + ".ipjetable.net", + "||ipjetable.net", + ".ipobar.com/read.php?", + "ipoock.com/img", + ".iportal.me", + "|http://iportal.me", + "||ippotv.com", + ".ipredator.se", + "||ipredator.se", + ".iptv.com.tw", + "||iptvbin.com", + "||ipvanish.com", + "iredmail.org", + "chinese.irib.ir", + "||ironbigfools.compython.net", + "||ironpython.net", + ".ironsocket.com", + "||ironsocket.com", + ".is.gd", + ".islahhaber.net", + ".islam.org.hk", + "|http://islam.org.hk", + ".islamawareness.net/Asia/China", + ".islamhouse.com", + "||islamhouse.com", + ".islamicity.com", + ".islamicpluralism.org", + ".islamtoday.net", + ".isaacmao.com", + "||isaacmao.com", + "||isgreat.org", + "||ismaelan.com", + ".ismalltits.com", + "||ismprofessional.net", + "isohunt.com", + "||israbox.com", + ".issuu.com", + "||issuu.com", + ".istars.co.nz", + "oversea.istarshine.com", + "||oversea.istarshine.com", + "blog.istef.info/2007/10/21/myentunnel", + ".istiqlalhewer.com", + ".istockphoto.com", + "isunaffairs.com", + "isuntv.com", + "itaboo.info", + "||itaboo.info", + ".italiatibet.org", + "download.ithome.com.tw", + "ithelp.ithome.com.tw", + "||itshidden.com", + ".itsky.it", + ".itweet.net", + "|http://itweet.net", + ".iu45.com", + ".iuhrdf.org", + "||iuhrdf.org", + ".iuksky.com", + ".ivacy.com", + "||ivacy.com", + ".iverycd.com", + ".ivpn.net", + "||ixquick.com", + ".ixxx.com", + "iyouport.com", + "||iyouport.com", + ".izaobao.us", + "||gmozomg.izihost.org", + ".izles.net", + ".izlesem.org", + "||j.mp", + "blog.jackjia.com", + "jamaat.org", + ".jamyangnorbu.com", + "|http://jamyangnorbu.com", + ".jandyx.com", + "||janwongphoto.com", + "||japan-whores.com", + ".jav.com", + ".jav101.com", + ".jav2be.com", + "||jav2be.com", + ".jav68.tv", + ".javakiba.org", + "|http://javakiba.org", + ".javbus.com", + "||javbus.com", + "||javfor.me", + ".javhd.com", + ".javhip.com", + ".javmobile.net", + "|http://javmobile.net", + ".javmoo.com", + ".javseen.com", + "|http://javseen.com", + "jbtalks.cc", + "jbtalks.com", + "jbtalks.my", + ".jdwsy.com", + "jeanyim.com", + "||jfqu36.club", + "||jfqu37.xyz", + "||jgoodies.com", + ".jiangweiping.com", + "||jiangweiping.com", + "||jiaoyou8.com", + ".jiehua.cz", + "||hk.jiepang.com", + "||tw.jiepang.com", + "jieshibaobao.com", + ".jigglegifs.com", + "56cun04.jigsy.com", + "jigong1024.com", + "daodu14.jigsy.com", + "specxinzl.jigsy.com", + "wlcnew.jigsy.com", + ".jihadology.net", + "|http://jihadology.net", + "jinbushe.org", + "||jinbushe.org", + ".jingsim.org", + "zhao.jinhai.de", + "jingpin.org", + "||jingpin.org", + "jinpianwang.com", + ".jinroukong.com", + "ac.jiruan.net", + "||jitouch.com", + ".jizzthis.com", + "jjgirls.com", + ".jkb.cc", + "|http://jkb.cc", + "jkforum.net", + "||jma.go.jp", + "research.jmsc.hku.hk/social", + "weiboscope.jmsc.hku.hk", + ".jmscult.com", + "|http://jmscult.com", + "||joachims.org", + "||jobso.tv", + ".sunwinism.joinbbs.net", + ".journalchretien.net", + "||journalofdemocracy.org", + ".joymiihub.com", + ".joyourself.com", + "jpopforum.net", + "||fiddle.jshell.net", + ".jubushoushen.com", + "||jubushoushen.com", + ".juhuaren.com", + "||juliereyc.com", + "||junauza.com", + ".june4commemoration.org", + ".junefourth-20.net", + "||junefourth-20.net", + "||bbs.junglobal.net", + ".juoaa.com", + "|http://juoaa.com", + "justfreevpn.com", + ".justicefortenzin.org", + "justpaste.it", + "justtristan.com", + "juyuange.org", + "juziyue.com", + "||juziyue.com", + "||jwmusic.org", + "@@||music.jwmusic.org", + ".jyxf.net", + "||k-doujin.net", + "||ka-wai.com", + ".kagyu.org", + "||kagyu.org.za", + ".kagyumonlam.org", + ".kagyunews.com.hk", + ".kagyuoffice.org", + "||kagyuoffice.org", + "||kagyuoffice.org.tw", + ".kaiyuan.de", + ".kakao.com", + "||kakao.com", + ".kalachakralugano.org", + ".kankan.today", + ".kannewyork.com", + "||kannewyork.com", + ".kanshifang.com", + "||kanshifang.com", + "||kantie.org", + "kanzhongguo.com", + "kanzhongguo.eu", + ".kaotic.com", + "||karayou.com", + "karkhung.com", + ".karmapa.org", + ".karmapa-teachings.org", + "||kawase.com", + ".kba-tx.org", + ".kcoolonline.com", + ".kebrum.com", + "||kebrum.com", + ".kechara.com", + ".keepandshare.com/visit/visit_page.php?i=688154", + ".keezmovies.com", + ".kendincos.net", + ".kenengba.com", + "||kenengba.com", + "||keontech.net", + ".kepard.com", + "||kepard.com", + "wiki.keso.cn/Home", + "||keycdn.com", + ".khabdha.org", + ".khmusic.com.tw", + "||kichiku-doujinko.com", + ".kik.com", + "||kik.com", + "bbs.kimy.com.tw", + ".kindleren.com", + "|http://kindleren.com", + "|http://www.kindleren.com", + ".kingdomsalvation.org", + "||kingdomsalvation.org", + "kinghost.com", + "||kingstone.com.tw", + ".kink.com", + ".kinokuniya.com", + "||kinokuniya.com", + "killwall.com", + "||killwall.com", + "||kinmen.travel", + ".kir.jp", + ".kissbbao.cn", + "|http://kiwi.kz", + "||kk-whys.co.jp", + ".kmuh.org.tw", + ".knowledgerush.com/kr/encyclopedia", + ".kobo.com", + "||kobo.com", + ".kobobooks.com", + "||kobobooks.com", + "||kodingen.com", + "@@||www.kodingen.com", + "||kompozer.net", + ".konachan.com", + "|http://konachan.com", + ".kone.com", + "||koolsolutions.com", + ".koornk.com", + "||koornk.com", + "||koranmandarin.com", + ".korenan2.com", + "|http://gojet.krtco.com.tw", + ".ksdl.org", + ".ksnews.com.tw", + "||ktzhk.com", + ".kui.name/event", + "kun.im", + ".kurashsultan.com", + "||kurtmunger.com", + "kusocity.com", + "||kwcg.ca", + "kwongwah.com.my", + ".kxsw.life", + "||kxsw.life", + ".kyofun.com", + "kyohk.net", + "||kyoyue.com", + ".kyzyhello.com", + "||kyzyhello.com", + ".kzeng.info", + "||kzeng.info", + "la-forum.org", + "ladbrokes.com", + "||labiennale.org", + ".lagranepoca.com", + "||lagranepoca.com", + ".lalulalu.com", + ".lama.com.tw", + "||lama.com.tw", + ".lamayeshe.com", + "|http://lamayeshe.com", + "|http://www.lamenhu.com", + ".lamnia.co.uk", + "||lamnia.co.uk", + "lamrim.com", + ".lanterncn.cn", + "|http://lanterncn.cn", + ".lantosfoundation.org", + ".laod.cn", + "|http://laod.cn", + "laogai.org", + "||laogai.org", + "laomiu.com", + ".laoyang.info", + "|http://laoyang.info", + "||laptoplockdown.com", + ".laqingdan.net", + "||laqingdan.net", + "||larsgeorge.com", + ".lastcombat.com", + "|http://lastcombat.com", + "||lastfm.es", + "latelinenews.com", + ".latibet.org", + "||le-vpn.com", + ".leafyvpn.net", + "||leafyvpn.net", + "leeao.com.cn/bbs/forum.php", + "lefora.com", + "||left21.hk", + ".legalporno.com", + ".legsjapan.com", + "|http://leirentv.ca", + "leisurecafe.ca", + "||lematin.ch", + ".lemonde.fr", + "||lenwhite.com", + "lerosua.org", + "||lerosua.org", + "blog.lester850.info", + "||lesoir.be", + ".letou.com", + "letscorp.net", + "||letscorp.net", + "||ss.levyhsu.com", + "||cdn.assets.lfpcontent.com", + ".lhakar.org", + "|http://lhakar.org", + ".lhasocialwork.org", + ".liangyou.net", + "||liangyou.net", + ".lianyue.net", + "||liaowangxizang.net", + ".liaowangxizang.net", + "||liberal.org.hk", + ".libertytimes.com.tw", + "blogs.libraryinformationtechnology.com/jxyz", + ".lidecheng.com/blog/fucking-gfw", + ".lighten.org.tw", + ".lightnovel.cn", + "@@|https://www.lightnovel.cn", + "limiao.net", + "linkuswell.com", + "abitno.linpie.com/use-ipv6-to-fuck-gfw", + "||line.me", + "||line-apps.com", + ".linglingfa.com", + "||lingvodics.com", + ".link-o-rama.com", + "|http://link-o-rama.com", + ".linkideo.com", + "||api.linksalpha.com", + "||apidocs.linksalpha.com", + "||www.linksalpha.com", + "||help.linksalpha.com", + "||linux.org.hk", + "linuxtoy.org/archives/installing-west-chamber-on-ubuntu", + ".lionsroar.com", + ".lipuman.com", + "||liquidvpn.com", + "||greatfire.us7.list-manage.com", + "||listentoyoutube.com", + "listorious.com", + ".liu-xiaobo.org", + "||liudejun.com", + ".liuhanyu.com", + ".liujianshu.com", + "||liujianshu.com", + ".liuxiaobo.net", + "|http://liuxiaobo.net", + "liuxiaotong.com", + "||liuxiaotong.com", + ".livedoor.jp", + ".liveleak.com", + "||liveleak.com", + ".livestation.com", + "livestream.com", + "||livestream.com", + "||livingonline.us", + "||livingstream.com", + "||livevideo.com", + ".livevideo.com", + ".liwangyang.com", + "lizhizhuangbi.com", + "lkcn.net", + ".llss.me/", + ".load.to", + ".lobsangwangyal.com", + ".localdomain.ws", + "||localdomain.ws", + "localpresshk.com", + "||lockestek.com", + "logbot.net", + "||logiqx.com", + "secure.logmein.com", + "||secure.logmein.com", + ".londonchinese.ca", + ".longhair.hk", + "longmusic.com", + "||longtermly.net", + "||lookpic.com", + ".looktoronto.com", + "|http://looktoronto.com", + ".lotsawahouse.org/tibetan-masters/fourteenth-dalai-lama", + ".lotuslight.org.hk", + ".lotuslight.org.tw", + "hkreporter.loved.hk", + "||lpsg.com", + "||lrfz.com", + ".lrip.org", + "||lrip.org", + ".lsd.org.hk", + "||lsd.org.hk", + "lsforum.net", + ".lsm.org", + "||lsm.org", + ".lsmchinese.org", + "||lsmchinese.org", + ".lsmkorean.org", + "||lsmkorean.org", + ".lsmradio.com/rad_archives", + ".lsmwebcast.com", + ".ltn.com.tw", + "|http://ltn.com.tw", + ".luke54.com", + ".luke54.org", + ".lupm.org", + "||lupm.org", + "||lushstories.com", + "luxebc.com", + "lvhai.org", + "||lvhai.org", + "||lvv2.com", + ".lyfhk.net", + "|http://lyfhk.net", + ".lzmtnews.org", + "||lzmtnews.org", + "http://*.m-team.cc", + ".macrovpn.com", + "macts.com.tw", + "||mad-ar.ch", + "||madrau.com", + "||madthumbs.com", + "||magic-net.info", + "mahabodhi.org", + "my.mail.ru", + ".maiplus.com", + "|http://maiplus.com", + ".maizhong.org", + "makkahnewspaper.com", + ".mamingzhe.com", + "manicur4ik.ru", + ".maplew.com", + "|http://maplew.com", + "||marc.info", + "marguerite.su", + "||martincartoons.com", + "maskedip.com", + ".maiio.net", + ".mail-archive.com", + ".malaysiakini.com", + "||makemymood.com", + ".manchukuo.net", + ".maniash.com", + "|http://maniash.com", + ".mansion.com", + ".mansionpoker.com", + "||martau.com", + "|http://blog.martinoei.com", + ".martsangkagyuofficial.org", + "|http://martsangkagyuofficial.org", + "maruta.be/forget", + ".marxist.com", + "||marxist.net", + ".marxists.org/chinese", + "||matainja.com", + "||mathable.io", + "||mathiew-badimon.com", + "||matsushimakaede.com", + "|http://maturejp.com", + "mayimayi.com", + ".maxing.jp", + ".mcaf.ee", + "|http://mcaf.ee", + "||mcadforums.com", + "mcfog.com", + "mcreasite.com", + ".md-t.org", + "||md-t.org", + "||meansys.com", + ".media.org.hk", + ".mediachinese.com", + "||mediachinese.com", + ".mediafire.com/?", + ".mediafire.com/download", + ".mediafreakcity.com", + "||mediafreakcity.com", + ".medium.com", + "||medium.com", + ".meetav.com", + "||meetup.com", + "mefeedia.com", + "jihadintel.meforum.org", + "||mega.nz", + "||megaproxy.com", + "||megarotic.com", + "megavideo.com", + "||megurineluka.com", + "meirixiaochao.com", + ".meltoday.com", + ".memehk.com", + "||memehk.com", + "memorybbs.com", + ".memri.org", + ".memrijttm.org", + ".mercyprophet.org", + "|http://mercyprophet.org", + "||mergersandinquisitions.org", + ".meridian-trust.org", + "|http://meridian-trust.org", + ".meripet.biz", + "|http://meripet.biz", + ".meripet.com", + "|http://meripet.com", + "merit-times.com.tw", + "meshrep.com", + ".mesotw.com/bbs", + "metacafe.com/watch", + "||meteorshowersonline.com", + "|http://www.metro.taipei/", + ".metrohk.com.hk/?cmd=detail&categoryID=2", + "||metrolife.ca", + ".metroradio.com.hk", + "|http://metroradio.com.hk", + "meyou.jp", + ".meyul.com", + "||mgoon.com", + "||mgstage.com", + "||mh4u.org", + "mhradio.org", + "|http://michaelanti.com", + "||michaelmarketl.com", + "|http://bbs.mikocon.com", + ".microvpn.com", + "|http://microvpn.com", + "middle-way.net", + ".mihk.hk/forum", + ".mihr.com", + "mihua.org", + "||mikesoltys.com", + ".milph.net", + "|http://milph.net", + ".milsurps.com", + "mimiai.net", + ".mimivip.com", + ".mimivv.com", + ".mindrolling.org", + "|http://mindrolling.org", + ".minghui.or.kr", + "|http://minghui.or.kr", + "minghui.org", + "||minghui.org", + "minghui-a.org", + "minghui-b.org", + "minghui-school.org", + ".mingjinglishi.com", + "||mingjinglishi.com", + "mingjingnews.com", + "||mingjingtimes.com", + ".mingpao.com", + "||mingpao.com", + ".mingpaocanada.com", + ".mingpaomonthly.com", + "|http://mingpaomonthly.com", + "mingpaonews.com", + ".mingpaony.com", + ".mingpaosf.com", + ".mingpaotor.com", + ".mingpaovan.com", + ".mingshengbao.com", + ".minhhue.net", + ".miniforum.org", + ".ministrybooks.org", + ".minzhuhua.net", + "||minzhuhua.net", + "minzhuzhanxian.com", + "minzhuzhongguo.org", + "||miroguide.com", + "mirrorbooks.com", + ".mist.vip", + "thecenter.mit.edu", + ".mitao.com.tw", + ".mitbbs.com", + "||mitbbs.com", + "mitbbsau.com", + ".mixero.com", + "||mixero.com", + "mixpod.com", + ".mixx.com", + "||mixx.com", + "||mizzmona.com", + ".mk5000.com", + ".mlcool.com", + "||mlzs.work", + ".mm-cg.com", + "||mmaaxx.com", + ".mmmca.com", + "mnewstv.com", + "||mobatek.net", + ".mobile01.com", + "||mobile01.com", + "||mobileways.de", + ".mobypicture.com", + "|http://moby.to", + "||moeerolibrary.com", + "wiki.moegirl.org", + ".mofaxiehui.com", + ".mofos.com", + "||mog.com", + "molihua.org", + "||mondex.org", + ".money-link.com.tw", + "|http://money-link.com.tw", + "|http://www.monlamit.org", + ".moonbbs.com", + "||moonbbs.com", + "c1522.mooo.com", + "||monitorchina.org", + "bbs.morbell.com", + "||morningsun.org", + "||moroneta.com", + ".motherless.com", + "|http://motherless.com", + "motor4ik.ru", + ".mousebreaker.com", + ".movements.org", + "||movements.org", + "||moviefap.com", + "||www.moztw.org", + ".mp3buscador.com", + "mp3ye.eu", + "||mpettis.com", + "mpfinance.com", + "mpinews.com", + "mponline.hk", + ".mqxd.org", + "|http://mqxd.org", + "mrtweet.com", + "||mrtweet.com", + "news.hk.msn.com", + "news.msn.com.tw", + "msguancha.com", + ".mswe1.org", + "|http://mswe1.org", + "||mthruf.com", + "muchosucko.com", + "||multiply.com", + "multiproxy.org", + "multiupload.com", + ".mullvad.net", + "||mullvad.net", + ".mummysgold.com", + ".murmur.tw", + "|http://murmur.tw", + ".musicade.net", + ".muslimvideo.com", + "||muzi.com", + "||muzi.net", + "||mx981.com", + ".my-formosa.com", + ".my-proxy.com", + ".my-private-network.co.uk", + "||my-private-network.co.uk", + "forum.my903.com", + ".myactimes.com/actimes", + "||myanniu.com", + ".myaudiocast.com", + "||myaudiocast.com", + ".myav.com.tw/bbs", + ".mybbs.us", + ".myca168.com", + ".mycanadanow.com", + "||bbs.mychat.to", + "||mychinamyhome.com", + ".mychinamyhome.com", + ".mychinanet.com", + ".mychinanews.com", + "||mychinanews.com", + ".mychinese.news", + "||mycnnews.com", + "||mykomica.org", + "mycould.com/discuz", + ".myeasytv.com", + "||myeclipseide.com", + ".myforum.com.hk", + "||myforum.com.hk", + "||myforum.com.uk", + ".myfreecams.com", + ".myfreepaysite.com", + ".myfreshnet.com", + ".myiphide.com", + "||myiphide.com", + "forum.mymaji.com", + "mymediarom.com/files/box", + "||mymoe.moe", + "||mymusic.net.tw", + "||myparagliding.com", + "||mypopescu.com", + "myradio.hk/podcast", + ".myreadingmanga.info", + "mysinablog.com", + ".myspace.com", + "||myspacecdn.com", + ".mytalkbox.com", + ".mytizi.com", + "||naacoalition.org", + "old.nabble.com", + "||naitik.net", + ".nakuz.com/bbs", + "||nalandabodhi.org", + "||nalandawest.org", + ".namgyal.org", + "namgyalmonastery.org", + "||namsisi.com", + ".nanyang.com", + "||nanyang.com", + ".nanyangpost.com", + "||nanyangpost.com", + ".nanzao.com", + "||jpl.nasa.gov", + "||pds.nasa.gov", + "||solarsystem.nasa.gov", + ".nakido.com", + "||nakido.com", + ".naol.ca", + ".naol.cc", + "uighur.narod.ru", + ".nat.moe", + "||nat.moe", + "cyberghost.natado.com", + "||national-lottery.co.uk", + "news.nationalgeographic.com/news/2014/06/140603-tiananmen-square", + ".nationsonline.org/oneworld/tibet", + "||line.naver.jp", + "||navyfamily.navy.mil", + "||navyreserve.navy.mil", + "||nko.navy.mil", + "||usno.navy.mil", + "naweeklytimes.com", + ".nbtvpn.com", + "|http://nbtvpn.com", + "nccwatch.org.tw", + ".nch.com.tw", + ".ncn.org", + "||ncn.org", + "||etools.ncol.com", + ".nde.de", + ".ndr.de", + ".ned.org", + "||nekoslovakia.net", + "||nepusoku.com", + "||net-fits.pro", + "bbs.netbig.com", + ".netbirds.com", + "netcolony.com", + "bolin.netfirms.com", + "||netme.cc", + "netsneak.com", + ".network54.com", + "networkedblogs.com", + ".networktunnel.net", + "neverforget8964.org", + "new-3lunch.net", + ".new-akiba.com", + ".new96.ca", + ".newcenturymc.com", + "|http://newcenturymc.com", + "newcenturynews.com", + "||newchen.com", + ".newchen.com", + ".newgrounds.com", + "newipnow.com", + ".newlandmagazine.com.au", + ".newnews.ca", + "news100.com.tw", + "newschinacomment.org", + ".newscn.org", + "||newscn.org", + "newspeak.cc/story", + ".newsancai.com", + "||newsancai.com", + ".newsdetox.ca", + ".newsdh.com", + "||newstamago.com", + "||newstapa.org", + "newstarnet.com", + ".newtaiwan.com.tw", + "newtalk.tw", + "||newtalk.tw", + "newyorktimes.com", + "||nexon.com", + ".next11.co.jp", + ".nextmag.com.tw", + ".nextmedia.com", + "||nexton-net.jp", + "nexttv.com.tw", + ".nfjtyd.com", + "||co.ng.mil", + "||nga.mil", + "ngensis.com", + ".nhentai.net", + "|http://nhentai.net", + ".nhk-ondemand.jp", + ".nicovideo.jp/watch", + "||nicovideo.jp", + "||nighost.org", + "av.nightlife141.com", + "ninecommentaries.com", + ".ninjacloak.com", + "||ninjaproxy.ninja", + "nintendium.com", + "taiwanyes.ning.com", + "usmgtcg.ning.com/forum", + "||niusnews.com", + "||njactb.org", + "njuice.com", + "||njuice.com", + "nlfreevpn.com", + ".ddns.net/", + ".gooddns.info", + "||gotdns.ch", + ".maildns.xyz", + ".no-ip.org", + ".opendn.xyz", + ".servehttp.com", + "sytes.net", + ".whodns.xyz", + ".zapto.org", + "|http://dynupdate.no-ip.com/", + "||nobel.se", + "nobelprize.org/nobel_prizes/peace/laureates/1989", + "nobelprize.org/nobel_prizes/peace/laureates/2010", + "nobodycanstop.us", + "||nobodycanstop.us", + "||nokogiri.org", + "||nokola.com", + "noodlevpn.com", + ".norbulingka.org", + "nordvpn.com", + "||nordvpn.com", + "||novelasia.com", + ".news.now.com", + "|http://news.now.com", + "news.now.com%2Fhome", + "||nownews.com", + ".nowtorrents.com", + ".noypf.com", + "||noypf.com", + "||npa.go.jp", + ".npnt.me", + "|http://npnt.me", + ".nps.gov", + ".nradio.me", + "|http://nradio.me", + ".nrk.no", + "||nrk.no", + ".ntd.tv", + "||ntd.tv", + ".ntdtv.com", + "||ntdtv.com", + ".ntdtv.co.kr", + "ntdtv.ca", + "ntdtv.org", + "ntdtv.ru", + "ntdtvla.com", + ".ntrfun.com", + "||cbs.ntu.edu.tw", + "||media.nu.nl", + ".nubiles.net", + "||nuexpo.com", + ".nukistream.com", + "||nurgo-software.com", + "||nutaku.net", + ".nuvid.com", + "||nvdst.com", + "nuzcom.com", + ".nvquan.org", + ".nvtongzhisheng.org", + "|http://nvtongzhisheng.org", + ".nwtca.org", + "|http://nyaa.eu", + ".nydus.ca", + "nylon-angel.com", + "nylonstockingsonline.com", + ".nzchinese.com", + "||nzchinese.net.nz", + "observechina.net", + ".obutu.com", + "ocaspro.com", + "occupytiananmen.com", + "oclp.hk", + ".ocreampies.com", + "||october-review.org", + "offbeatchina.com", + "officeoftibet.com", + "|http://ofile.org", + "||ogaoga.org", + "twtr2src.ogaoga.org", + ".ogate.org", + "||ogate.org", + "www2.ohchr.org/english/bodies/cat/docs/ngos/II_China_41.pdf", + ".oikos.com.tw/v4", + ".oiktv.com", + "oizoblog.com", + ".ok.ru", + "||ok.ru", + ".okayfreedom.com", + "||okayfreedom.com", + "okk.tw", + "|http://filmy.olabloga.pl/player", + "old-cat.net", + "||olumpo.com", + ".olympicwatch.org", + "omgili.com", + "||omnitalk.com", + "||omnitalk.org", + "cling.omy.sg", + "forum.omy.sg", + "news.omy.sg", + "showbiz.omy.sg", + "||on.cc", + "||onedrive.live.com", + "||onion.city", + ".onlinecha.com", + "||onlineyoutube.com", + ".onlytweets.com", + "|http://onlytweets.com", + "onmoon.net", + "onmoon.com", + ".onthehunt.com", + "|http://onthehunt.com", + ".oopsforum.com", + "open.com.hk", + "openallweb.com", + "opendemocracy.net", + "||opendemocracy.net", + ".openervpn.in", + "openid.net", + "||openid.net", + ".openleaks.org", + "||openleaks.org", + "openvpn.net", + "||openvpn.net", + "||openwebster.com", + ".openwrt.org.cn", + "@@||openwrt.org.cn", + "my.opera.com/dahema", + "||demo.opera-mini.net", + ".opus-gaming.com", + "|http://opus-gaming.com", + "www.orchidbbs.com", + ".organcare.org.tw", + "organharvestinvestigation.net", + ".orgasm.com", + ".orgfree.com", + "||orient-doll.com", + "orientaldaily.com.my", + "||orientaldaily.com.my", + "||orn.jp", + "t.orzdream.com", + "||t.orzdream.com", + "tui.orzdream.com", + "||orzistic.org", + "||osfoora.com", + ".otnd.org", + "||otnd.org", + "||otto.de", + "||ourdearamy.com", + "oursogo.com", + ".oursteps.com.au", + "||oursteps.com.au", + ".oursweb.net", + "||ourtv.hk", + "xinqimeng.over-blog.com", + "||overplay.net", + "share.ovi.com/media", + "|http://owl.li", + "|http://ht.ly", + "|http://htl.li", + "|http://mash.to", + "www.owind.com", + "|http://www.oxid.it", + "oyax.com", + "oyghan.com/wps", + ".ozchinese.com/bbs", + "||ow.ly", + "bbs.ozchinese.com", + ".ozvoice.org", + "||ozvoice.org", + ".ozxw.com", + ".ozyoyo.com", + "||pachosting.com", + ".pacificpoker.com", + ".packetix.net", + "||pacopacomama.com", + ".padmanet.com", + "page2rss.com", + "||pagodabox.com", + ".palacemoon.com", + "forum.palmislife.com", + "||eriversoft.com", + ".paldengyal.com", + "paljorpublications.com", + ".paltalk.com", + "||pandapow.co", + ".pandapow.net", + ".pandavpn-jp.com", + ".panluan.net", + "||panluan.net", + "||pao-pao.net", + "paper.li", + "paperb.us", + ".paradisehill.cc", + ".paradisepoker.com", + ".partycasino.com", + ".partypoker.com", + ".passion.com", + "||passion.com", + ".passiontimes.hk", + "pastebin.com", + ".pastie.org", + "||pastie.org", + "||blog.pathtosharepoint.com", + "pbs.org/wgbh/pages/frontline/gate", + "pbs.org/wgbh/pages/frontline/tankman", + "pbs.org/wgbh/pages/frontline/tibet", + "video.pbs.org", + "pbwiki.com", + "||pbworks.com", + "||developers.box.net", + "||wiki.oauth.net", + "||wiki.phonegap.com", + "||wiki.jqueryui.com", + "||pbxes.com", + "||pbxes.org", + "pcdvd.com.tw", + ".pchome.com.tw", + "|http://pcij.org", + ".pcstore.com.tw", + "||pct.org.tw", + "pdetails.com", + "||pdproxy.com", + "||peace.ca", + "peacefire.org", + "peacehall.com", + "||peacehall.com", + "|http://pearlher.org", + ".peeasian.com", + ".pekingduck.org", + "||pekingduck.org", + ".pemulihan.or.id", + "|http://pemulihan.or.id", + "||pen.io", + "penchinese.com", + "||penchinese.net", + ".penchinese.net", + "pengyulong.com", + "penisbot.com", + "||blog.pentalogic.net", + ".penthouse.com", + ".pentoy.hk/%E4%B8%AD%E5%9C%8B", + ".pentoy.hk/%E6%99%82%E4%BA%8B", + ".peoplebookcafe.com", + ".peoplenews.tw", + "||peoplenews.tw", + ".peopo.org", + "||peopo.org", + ".percy.in", + ".perfectgirls.net", + "perfectvpn.net", + ".persecutionblog.com", + ".persiankitty.com", + "pfd.org.hk", + "phapluan.org", + "phayul.com", + "philborges.com", + "philly.com", + "||phncdn.com", + "||photodharma.net", + "||photofocus.com", + "||phuquocservices.com", + "||picacomiccn.com", + ".picidae.net", + "||img*.picturedip.com", + "picturesocial.com", + "||pin-cong.com", + ".pin6.com", + "||pin6.com", + ".ping.fm", + "||ping.fm", + "||pinimg.com", + ".pinkrod.com", + "||pinoy-n.com", + "||pinterest.at", + "||pinterest.ca", + "||pinterest.co.kr", + "||pinterest.co.uk", + ".pinterest.com", + "||pinterest.com", + "||pinterest.de", + "||pinterest.dk", + "||pinterest.fr", + "||pinterest.jp", + "||pinterest.nl", + "||pinterest.se", + ".pipii.tv", + ".piposay.com", + "piraattilahti.org", + ".piring.com", + "||pixelqi.com", + "||css.pixnet.in", + "||pixnet.net", + ".pixnet.net", + ".pk.com", + "||placemix.com", + "|http://pictures.playboy.com", + "||playboy.com", + ".playboyplus.com", + "||playboyplus.com", + "||player.fm", + ".playno1.com", + "||playno1.com", + "||playpcesor.com", + "plays.com.tw", + "||m.plixi.com", + "plm.org.hk", + "plunder.com", + ".plurk.com", + "||plurk.com", + ".plus28.com", + ".plusbb.com", + ".pmatehunter.com", + "|http://pmatehunter.com", + ".pmates.com", + "||po2b.com", + "pobieramy.top", + "||podictionary.com", + ".pokerstars.com", + "||pokerstars.com", + ".pokerstars.net", + "zh.pokerstrategy.com", + "politicalchina.org", + "politicalconsultation.org", + ".politiscales.net", + "||poloniex.com", + ".polymerhk.com", + "|http://polymerhk.com", + ".popo.tw", + "||popvote.hk", + ".popyard.com", + "||popyard.org", + ".porn.com", + ".porn2.com", + ".porn5.com", + ".pornbase.org", + ".pornerbros.com", + "||pornhd.com", + ".pornhost.com", + ".pornhub.com", + "||pornhub.com", + ".pornhubdeutsch.net", + "|http://pornhubdeutsch.net", + "||pornmm.net", + ".pornoxo.com", + ".pornrapidshare.com", + "||pornrapidshare.com", + ".pornsharing.com", + "|http://pornsharing.com", + ".pornsocket.com", + ".pornstarclub.com", + "||pornstarclub.com", + ".porntube.com", + ".porntubenews.com", + ".porntvblog.com", + "||porntvblog.com", + ".pornvisit.com", + ".portablevpn.nl", + "||poskotanews.com", + ".post01.com", + ".post76.com", + "||post76.com", + ".post852.com", + "postadult.com", + ".postimg.org", + "||potvpn.com", + "||powercx.com", + ".powerphoto.org", + "||www.powerpointninja.com", + "||presidentlee.tw", + "||cdn.printfriendly.com", + ".pritunl.com", + "provpnaccounts.com", + "||provpnaccounts.com", + ".proxfree.com", + "||proxfree.com", + "proxyanonimo.es", + ".proxynetwork.org.uk", + "||proxynetwork.org.uk", + "||pts.org.tw", + ".pttvan.org", + "pubu.com.tw", + "puffinbrowser.com", + "pureinsight.org", + ".pushchinawall.com", + ".putty.org", + "||putty.org", + "||calebelston.com", + "||blog.fizzik.com", + "||nf.id.au", + "||sogrady.me", + "||vatn.org", + "||ventureswell.com", + "||whereiswerner.com", + ".power.com", + "||power.com", + "powerapple.com", + "||powerapple.com", + "||abc.pp.ru", + "heix.pp.ru", + "||prayforchina.net", + "||premeforwindows7.com", + "||presentationzen.com", + "||prestige-av.com", + "prisoner-state-secret-journal-premier", + ".prisoneralert.com", + "||pritunl.com", + "||privacybox.de", + ".private.com/home", + "||privateinternetaccess.com", + "privatepaste.com", + "||privatepaste.com", + "privatetunnel.com", + "||privatetunnel.com", + "||privatevpn.com", + "||procopytips.com", + "provideocoalition.com", + "||prosiben.de", + "proxifier.com", + "api.proxlet.com", + "||proxomitron.info", + ".proxpn.com", + "||proxpn.com", + ".proxylist.org.uk", + "||proxylist.org.uk", + ".proxypy.net", + "||proxypy.net", + "proxyroad.com", + ".proxytunnel.net", + "||proyectoclubes.com", + "prozz.net", + "psblog.name", + "||psblog.name", + "||psiphon.ca", + ".psiphon3.com", + "||psiphon3.com", + ".psiphontoday.com", + ".ptt.cc", + "||ptt.cc", + ".puffstore.com", + ".puuko.com", + "||pullfolio.com", + ".punyu.com/puny", + "||pureconcepts.net", + "||pureinsight.org", + "||purepdf.com", + "||purevpn.com", + ".purplelotus.org", + ".pursuestar.com", + "||pursuestar.com", + ".pussyspace.com", + ".putihome.org", + ".putlocker.com/file", + "pwned.com", + "python.com", + ".python.com.tw", + "|http://python.com.tw", + "pythonhackers.com/p", + "ss.pythonic.life/", + ".qanote.com", + "||qanote.com", + ".qgirl.com.tw", + "||qiandao.today", + ".qi-gong.me", + "||qi-gong.me", + "||qiangyou.org", + ".qidian.ca", + ".qienkuen.org", + "||qienkuen.org", + "||qiwen.lu", + "qixianglu.cn", + "bbs.qmzdd.com", + ".qkshare.com", + "qoos.com", + "||qoos.com", + "blog.qooza.hk/dafengqixi", + "||efksoft.com", + "||qstatus.com", + "||qtweeter.com", + "||qtrac.eu", + ".quannengshen.org", + "|http://quannengshen.org", + "quantumbooter.net", + "||quitccp.net", + ".quitccp.net", + "||quitccp.org", + ".quitccp.org", + ".quora.com/Chinas-Future", + ".quran.com", + "|http://quran.com", + ".quranexplorer.com", + "qusi8.net", + ".qvodzy.org", + "nemesis2.qx.net/pages/MyEnTunnel", + "qxbbs.org", + ".ra.gg", + "|http://ra.gg/", + ".radicalparty.org", + "||rael.org", + "radicalparty.org", + "radioaustralia.net.au", + ".radiohilight.net", + "||radiohilight.net", + "opml.radiotime.com", + "||radiovaticana.org", + "||radiovncr.com", + "||raggedbanner.com", + "||raidcall.com.tw", + ".raidtalk.com.tw", + ".rainbowplan.org/bbs", + "|https://raindrop.io/", + ".raizoji.or.jp", + "|http://raizoji.or.jp", + "rangwang.biz", + "rangzen.com", + "rangzen.net", + "rangzen.org", + "|http://blog.ranxiang.com/", + "ranyunfei.com", + "||ranyunfei.com", + ".rapbull.net", + "|http://rapidgator.net/", + "||rapidmoviez.com", + "rapidvpn.com", + "||rapidvpn.com", + ".raremovie.cc", + "|http://raremovie.cc", + ".raremovie.net", + "|http://raremovie.net", + "||rawgit.com", + "||rawgithub.com", + "||razyboard.com", + "rcinet.ca", + ".read100.com", + ".readingtimes.com.tw", + "||readingtimes.com.tw", + "||readmoo.com", + ".readydown.com", + "|http://readydown.com", + ".realcourage.org", + ".realitykings.com", + "||realitykings.com", + ".realraptalk.com", + ".realsexpass.com", + ".recordhistory.org", + ".recovery.org.tw", + "|http://online.recoveryversion.org", + "||recoveryversion.com.tw", + "||red-lang.org", + "redballoonsolidarity.org", + ".redchinacn.net", + "|http://redchinacn.net", + "redchinacn.org", + "redtube.com", + "referer.us", + "||referer.us", + "||reflectivecode.com", + "relaxbbs.com", + ".relay.com.tw", + ".releaseinternational.org", + "religioustolerance.org", + "renminbao.com", + "||renminbao.com", + ".renyurenquan.org", + "||renyurenquan.org", + "|http://certificate.revocationcheck.com", + "subacme.rerouted.org", + "||resilio.com", + ".reuters.com", + "||reuters.com", + "||reutersmedia.net", + ".revleft.com", + "retweetist.com", + "||retweetrank.com", + "revver.com", + ".rfa.org", + "||rfa.org", + ".rfachina.com", + ".rfamobile.org", + "rfaweb.org", + "||rferl.org", + ".rfi.fr", + "||rfi.fr", + "|http://rfi.my/", + "|http://vds.rightster.com/", + ".rigpa.org", + ".rileyguide.com", + "riku.me/", + ".ritouki.jp", + "||ritter.vg", + ".rlwlw.com", + "||rlwlw.com", + ".rmjdw.com", + ".rmjdw132.info", + ".roadshow.hk", + ".roboforex.com", + "||robustnessiskey.com", + "||rocket-inc.net", + "|http://www2.rocketbbs.com/11/bbs.cgi?id=5mus", + "|http://www2.rocketbbs.com/11/bbs.cgi?id=freemgl", + "||rojo.com", + "||ronjoneswriter.com", + "||rolia.net", + ".roodo.com", + ".rosechina.net", + ".rotten.com", + ".rsf.org", + "||rsf.org", + ".rsf-chinese.org", + "||rsf-chinese.org", + ".rsgamen.org", + "||phosphation13.rssing.com", + ".rssmeme.com", + "||rssmeme.com", + "||rtalabel.org", + ".rthk.hk", + "|http://rthk.hk", + ".rthk.org.hk", + "|http://rthk.org.hk", + ".rti.org.tw", + "||rti.org.tw", + ".rtycminnesota.org", + ".ruanyifeng.com/blog*some_ways_to_break_the_great_firewall", + "rukor.org", + ".runbtx.com", + ".rushbee.com", + ".ruten.com.tw", + "rutube.ru", + ".ruyiseek.com", + ".rxhj.net", + "|http://rxhj.net", + ".s1s1s1.com", + "||s-cute.com", + ".s-dragon.org", + "||s1heng.com", + "|http://www.s4miniarchive.com", + "||s8forum.com", + "cdn1.lp.saboom.com", + "||sacks.com", + "sacom.hk", + "||sacom.hk", + "||sadpanda.us", + ".safervpn.com", + "||safervpn.com", + ".saintyculture.com", + "|http://saintyculture.com", + ".saiq.me", + "||saiq.me", + "||sakuralive.com", + ".sakya.org", + ".salvation.org.hk", + "||salvation.org.hk", + ".samair.ru/proxy/type-01", + ".sambhota.org", + ".cn.sandscotaicentral.com", + "|http://cn.sandscotaicentral.com", + ".sanmin.com.tw", + "sapikachu.net", + "savemedia.com", + "||savethesounds.info", + ".savetibet.de", + "||savetibet.de", + "savetibet.fr", + "savetibet.nl", + ".savetibet.org", + "||savetibet.org", + "savetibet.ru", + ".savetibetstore.org", + "||savetibetstore.org", + "savevid.com", + "||say2.info", + ".sbme.me", + "|http://sbme.me", + ".sbs.com.au/yourlanguage", + ".scasino.com", + "|http://www.sciencemag.org/content/344/6187/953", + ".sciencenets.com", + ".scmp.com", + "||scmp.com", + ".scmpchinese.com", + "||scramble.io", + ".scribd.com", + "||scribd.com", + "||scriptspot.com", + "seapuff.com", + "domainhelp.search.com", + ".searchtruth.com", + "secretchina.com", + "||secretchina.com", + "||secretgarden.no", + ".secretsline.biz", + "||secretsline.biz", + "||securetunnel.com", + "securityinabox.org", + "|https://securityinabox.org", + ".securitykiss.com", + "||securitykiss.com", + "||seed4.me", + "news.seehua.com", + "seesmic.com", + "||seevpn.com", + "||seezone.net", + "sejie.com", + ".sendspace.com", + "|http://tweets.seraph.me/", + "sesawe.net", + "||sesawe.net", + ".sesawe.org", + "||sethwklein.net", + ".setn.com", + ".settv.com.tw", + "forum.setty.com.tw", + ".sevenload.com", + "||sevenload.com", + ".sex.com", + ".sex-11.com", + "||sex3.com", + "||sex8.cc", + ".sexandsubmission.com", + ".sexbot.com", + ".sexhu.com", + ".sexhuang.com", + "sexinsex.net", + "||sexinsex.net", + ".sextvx.com", + "67.220.91.15", + "67.220.91.18", + "67.220.91.23", + "|http://*.sf.net", + ".sfileydy.com", + "||sfshibao.com", + ".sftindia.org", + ".sftuk.org", + "||sftuk.org", + "||shadeyouvpn.com", + "shadow.ma", + ".shadowsky.xyz", + ".shadowsocks.asia", + "||www.shadowsocks.com", + ".shadowsocks.com", + "||shadowsocks.com.hk", + ".shadowsocks.org", + "||shadowsocks.org", + "||shadowsocks-r.com", + "|http://cn.shafaqna.com", + ".shambalapost.com", + ".shambhalasun.com", + ".shangfang.org", + "||shangfang.org", + "shapeservices.com", + ".sharebee.com", + "||sharecool.org", + "sharpdaily.com.hk", + "||sharpdaily.com.hk", + ".sharpdaily.hk", + ".sharpdaily.tw", + ".shat-tibet.com", + "sheikyermami.com", + ".shellfire.de", + "||shellfire.de", + ".shenshou.org", + "shenyun.com", + "shenyunperformingarts.org", + "||shenyunperformingarts.org", + "shenzhoufilm.com", + "||shenzhoufilm.com", + "||sherabgyaltsen.com", + ".shiatv.net", + ".shicheng.org", + "shinychan.com", + "shipcamouflage.com", + ".shireyishunjian.com", + ".shitaotv.org", + "||shixiao.org", + "||shizhao.org", + "shizhao.org", + "shkspr.mobi/dabr", + "||shodanhq.com", + "||shooshtime.com", + ".shop2000.com.tw", + ".shopping.com", + ".showhaotu.com", + ".showtime.jp", + ".shutterstock.com", + "||shutterstock.com", + "ch.shvoong.com", + ".shwchurch.org", + "||www.shwchurch.org", + ".shwchurch3.com", + "|http://shwchurch3.com", + ".siddharthasintent.org", + "||sidelinesnews.com", + ".sidelinessportseatery.com", + ".sijihuisuo.club", + ".sijihuisuo.com", + ".silkbook.com", + "||simbolostwitter.com", + "simplecd.org", + "||simplecd.org", + "@@||simplecd.me", + "simpleproductivityblog.com", + "bbs.sina.com/", + "bbs.sina.com%2F", + "blog.sina.com.tw", + "dailynews.sina.com/", + "dailynews.sina.com%2F", + "forum.sina.com.hk", + "home.sina.com", + "||magazines.sina.com.tw", + "news.sina.com.hk", + "news.sina.com.tw", + "news.sinchew.com.my", + ".sinchew.com.my/node/", + ".sinchew.com.my/taxonomy/term", + ".singaporepools.com.sg", + "||singaporepools.com.sg", + ".singfortibet.com", + ".singpao.com.hk", + "singtao.com", + "||singtao.com", + "news.singtao.ca", + ".singtaousa.com", + "||singtaousa.com", + "sino-monthly.com", + "||sinocast.com", + "sinocism.com", + "sinomontreal.ca", + ".sinonet.ca", + ".sinopitt.info", + ".sinoants.com", + "||sinoants.com", + ".sinoquebec.com", + ".sierrafriendsoftibet.org", + "sis.xxx", + "||sis001.com", + "sis001.us", + ".site2unblock.com", + "||site90.net", + ".sitebro.tw", + "||sitekreator.com", + "||siteks.uk.to", + "||sitemaps.org", + ".sjrt.org", + "|http://sjrt.org", + "||sjum.cn", + "||sketchappsources.com", + "||skimtube.com", + "||skybet.com", + "|http://users.skynet.be/reves/tibethome.html", + ".skyking.com.tw", + "bbs.skykiwi.com", + "|http://www.skype.com/intl/", + "|http://www.skype.com/zh-Hant", + "||skyvegas.com", + ".xskywalker.com", + "||xskywalker.com", + "||skyxvpn.com", + "m.slandr.net", + ".slaytizle.com", + ".sleazydream.com", + "||slheng.com", + "||slideshare.net", + "forum.slime.com.tw", + ".slinkset.com", + "||slickvpn.com", + ".slutload.com", + "||smartdnsproxy.com", + ".smarthide.com", + "||app.smartmailcloud.com", + "smchbooks.com", + ".smh.com.au/world/death-of-chinese-playboy-leaves-fresh-scratches-in-party-paintwork-20120903-25a8v", + "smhric.org", + ".smith.edu/dalailama", + ".smyxy.org", + "||snapchat.com", + ".snaptu.com", + "||snaptu.com", + "||sndcdn.com", + "sneakme.net", + "snowlionpub.com", + "home.so-net.net.tw/yisa_tsai", + "||soc.mil", + ".socks-proxy.net", + "||socks-proxy.net", + ".sockscap64.com", + "||sockslist.net", + ".socrec.org", + "|http://socrec.org", + ".sod.co.jp", + ".softether.org", + "||softether.org", + ".softether-download.com", + "||softether-download.com", + "||cdn.softlayer.net", + "||sogclub.com", + "sohcradio.com", + "||sohcradio.com", + ".sokmil.com", + "||sorting-algorithms.com", + ".sostibet.org", + ".soumo.info", + "||soup.io", + "@@||static.soup.io", + ".sobees.com", + "||sobees.com", + "socialwhale.com", + ".softether.co.jp", + "||softwarebychuck.com", + "blog.sogoo.org", + "soh.tw", + "||soh.tw", + "sohfrance.org", + "||sohfrance.org", + "chinese.soifind.com", + "sokamonline.com", + ".solidaritetibet.org", + ".solidfiles.com", + "||somee.com", + ".songjianjun.com", + "||songjianjun.com", + ".sonicbbs.cc", + ".sonidodelaesperanza.org", + ".sopcast.com", + ".sopcast.org", + ".sorazone.net", + "||sos.org", + "bbs.sou-tong.org", + ".soubory.com", + "|http://soubory.com", + ".soul-plus.net", + ".soulcaliburhentai.net", + "||soulcaliburhentai.net", + "||soundcloud.com", + ".soundofhope.kr", + "soundofhope.org", + "||soundofhope.org", + "||soupofmedia.com", + "|http://sourceforge.net/p*/shadowsocksgui/", + ".sourcewadio.com", + "southnews.com.tw", + "sowers.org.hk", + "||wlx.sowiki.net", + "||spankbang.com", + ".spankingtube.com", + ".spankwire.com", + "||spb.com", + "||speakerdeck.com", + "||speedify.com", + "spem.at", + "||spencertipping.com", + "||spendee.com", + "||spicevpn.com", + ".spideroak.com", + "||spideroak.com", + ".spike.com", + ".spotflux.com", + "||spotflux.com", + ".spring4u.info", + "|http://spring4u.info", + "||sproutcore.com", + "||sproxy.info", + "||srocket.us", + ".ss-link.com", + "||ss-link.com", + ".ssglobal.co/wp", + "|http://ssglobal.co", + ".ssglobal.me", + "||ssh91.com", + ".sspro.ml", + "|http://sspro.ml", + ".ssrshare.com", + "||ssrshare.com", + "||sss.camp", + "||sstmlt.moe", + "sstmlt.net", + "||sstmlt.net", + "|http://stackoverflow.com/users/895245", + ".stage64.hk", + "||stage64.hk", + "||standupfortibet.org", + "stanford.edu/group/falun", + "usinfo.state.gov", + "||statueofdemocracy.org", + ".starfishfx.com", + ".starp2p.com", + "||starp2p.com", + ".startpage.com", + "||startpage.com", + ".startuplivingchina.com", + "|http://startuplivingchina.com", + "||static-economist.com", + "||stc.com.sa", + "||steel-storm.com", + ".steganos.com", + "||steganos.com", + ".steganos.net", + ".stepchina.com", + "ny.stgloballink.com", + "hd.stheadline.com/news/realtime", + "sthoo.com", + "||sthoo.com", + ".stickam.com", + "stickeraction.com/sesawe", + ".stileproject.com", + ".sto.cc", + ".stoporganharvesting.org", + "||storagenewsletter.com", + ".storm.mg", + "||storm.mg", + ".stoptibetcrisis.net", + "||stoptibetcrisis.net", + "||storify.com", + ".stormmediagroup.com", + "||stoweboyd.com", + "stranabg.com", + "||straplessdildo.com", + "||streamingthe.net", + "streema.com/tv/NTDTV_Chinese", + "cn.streetvoice.com/article", + "cn.streetvoice.com/diary", + "cn2.streetvoice.com", + "tw.streetvoice.com", + ".strikingly.com", + "||strongvpn.com", + ".strongwindpress.com", + ".student.tw/db", + "||studentsforafreetibet.org", + "||stumbleupon.com", + "stupidvideos.com", + ".successfn.com", + "panamapapers.sueddeutsche.de", + ".sugarsync.com", + "||sugarsync.com", + ".sugobbs.com", + "||sugumiru18.com", + "||suissl.com", + "summify.com", + ".sumrando.com", + "||sumrando.com", + "sun1911.com", + ".sunporno.com", + "||sunmedia.ca", + "||sunporno.com", + ".sunskyforum.com", + ".sunta.com.tw", + ".sunvpn.net", + ".suoluo.org", + ".superfreevpn.com", + ".supervpn.net", + "||supervpn.net", + ".superzooi.com", + "|http://superzooi.com", + ".suppig.net", + ".suprememastertv.com", + "|http://suprememastertv.com", + ".surfeasy.com", + "||surfeasy.com", + ".surfeasy.com.au", + "|http://surfeasy.com.au", + "||surrenderat20.net", + ".suyangg.com", + "|http://suyangg.com", + ".svsfx.com", + ".swissinfo.ch", + "||swissinfo.ch", + ".swissvpn.net", + "||swissvpn.net", + "switchvpn.net", + "||switchvpn.net", + ".sydneytoday.com", + "||sydneytoday.com", + ".sylfoundation.org", + "||syncback.com", + "sysresccd.org", + ".sytes.net", + "blog.syx86.com/2009/09/puff", + "blog.syx86.cn/2009/09/puff", + ".szbbs.net", + ".szetowah.org.hk", + "||t-g.com", + ".t35.com", + ".t66y.com", + "||t66y.com", + ".taa-usa.org", + "|http://taa-usa.org", + ".taaze.tw", + "||taaze.tw", + "|http://www.tablesgenerator.com/", + "tabtter.jp", + ".tacem.org", + ".taconet.com.tw", + "||taedp.org.tw", + ".tafm.org", + ".tagwa.org.au", + "tagwalk.com", + "||tagwalk.com", + "tahr.org.tw", + ".taipeisociety.org", + "||taipeisociety.org", + ".taiwanbible.com", + ".taiwancon.com", + ".taiwandaily.net", + "||taiwandaily.net", + ".taiwandc.org", + ".taiwanjustice.com", + "taiwankiss.com", + "taiwannation.com", + "taiwannation.com.tw", + "||taiwanncf.org.tw", + "||taiwannews.com.tw", + "|http://www.taiwanonline.cc/", + "taiwantp.net", + "||taiwantt.org.tw", + "taiwanus.net", + "taiwanyes.com", + "taiwan-sex.com", + ".talk853.com", + ".talkboxapp.com", + "||talkboxapp.com", + ".talkcc.com", + "||talkcc.com", + ".talkonly.net", + "||talkonly.net", + "||tamiaode.tk", + "||tanc.org", + "tangben.com", + ".tangren.us", + ".taoism.net", + "|http://taoism.net", + ".taolun.info", + "||taolun.info", + ".tapatalk.com", + "||tapatalk.com", + "blog.taragana.com", + ".tascn.com.au", + "||taup.net", + "|http://www.taup.org.tw", + ".taweet.com", + "||taweet.com", + ".tbcollege.org", + "||tbcollege.org", + ".tbi.org.hk", + ".tbicn.org", + ".tbjyt.org", + "||tbpic.info", + ".tbrc.org", + "tbs-rainbow.org", + ".tbsec.org", + "||tbsec.org", + "tbskkinabalu.page.tl", + ".tbsmalaysia.org", + ".tbsn.org", + "||tbsn.org", + ".tbsseattle.org", + ".tbssqh.org", + "|http://tbssqh.org", + "tbswd.org", + ".tbtemple.org.uk", + ".tbthouston.org", + ".tccwonline.org", + ".tcewf.org", + "tchrd.org", + "tcnynj.org", + "||tcpspeed.co", + ".tcpspeed.com", + "||tcpspeed.com", + ".tcsofbc.org", + ".tcsovi.org", + ".tdm.com.mo", + "teamamericany.com", + "||techviz.net", + "||teck.in", + ".teeniefuck.net", + "teensinasia.com", + ".telecomspace.com", + "||telegraph.co.uk", + ".tenacy.com", + "||tenzinpalmo.com", + ".tew.org", + ".thaicn.com", + "||theatrum-belli.com", + "theblemish.com", + "||thebcomplex.com", + ".thebobs.com", + "||thebobs.com", + ".thechinabeat.org", + "|http://www.thechinastory.org/yearbooks/yearbook-2012/", + ".thedalailamamovie.com", + "|http://thedalailamamovie.com", + "||thedw.us", + "thefrontier.hk/tf", + "cn.thegay.com", + "|http://thegioitinhoc.vn/", + ".thegly.com", + ".thehots.info", + "thehousenews.com", + "||thehun.net", + ".theinitium.com", + "||theinitium.com", + ".thenewslens.com", + "||thenewslens.com", + ".thepiratebay.org", + "||thepiratebay.org", + ".theporndude.com", + "||theporndude.com", + "||theportalwiki.com", + "thereallove.kr", + "therock.net.nz", + "thespeeder.com", + "||thestandnews.com", + "thetibetcenter.org", + "thetibetconnection.org", + ".thetibetmuseum.org", + ".thetibetpost.com", + "||thetibetpost.com", + "||thetinhat.com", + "thetrotskymovie.com", + "thevivekspot.com", + "||thewgo.org", + ".theync.com", + "|http://theync.com", + ".thinkingtaiwan.com", + ".thisav.com", + "|http://thisav.com", + ".thlib.org", + "||thomasbernhard.org", + ".thongdreams.com", + "threatchaos.com", + "||throughnightsfire.com", + ".thumbzilla.com", + "||thywords.com", + ".thywords.com.tw", + "tiananmenmother.org", + ".tiananmenduizhi.com", + "||tiananmenduizhi.com", + "||tiananmenuniv.com", + "||tiananmenuniv.net", + "||tiandixing.org", + ".tianhuayuan.com", + ".tianlawoffice.com", + "||tianti.io", + "tiantibooks.org", + "||tiantibooks.org", + "tianyantong.org.cn", + ".tianzhu.org", + ".tibet.at", + "tibet.ca", + ".tibet.com", + "||tibet.com", + "tibet.fr", + ".tibet.net", + "||tibet.net", + "tibet.nu", + ".tibet.org", + "||tibet.org", + ".tibet.sk", + "tibet.org.tw", + ".tibet.to", + ".tibet-envoy.eu", + "||tibet-envoy.eu", + ".tibet-foundation.org", + ".tibet-house-trust.co.uk", + "tibet-info.net", + "tibet-initiative.de", + "||tibet-initiative.de", + ".tibet-munich.de", + ".tibet3rdpole.org", + "|http://tibet3rdpole.org", + "tibetaction.net", + "||tibetaction.net", + ".tibetaid.org", + "tibetalk.com", + ".tibetan.fr", + "tibetan-alliance.org", + ".tibetanarts.org", + ".tibetanbuddhistinstitute.org", + "|http://tibetanbuddhistinstitute.org", + "tibetancommunity.org", + ".tibetanjournal.com", + ".tibetanlanguage.org", + ".tibetanliberation.org", + "||tibetanliberation.org", + ".tibetcollection.com", + ".tibetanaidproject.org", + ".tibetancommunityuk.net", + "|http://tibetancommunityuk.net", + "tibetanculture.org", + "tibetanfeministcollective.org", + ".tibetanpaintings.com", + ".tibetanphotoproject.com", + ".tibetanpoliticalreview.org", + ".tibetanreview.net", + "|http://tibetansports.org", + ".tibetanwomen.org", + "|http://tibetanwomen.org", + ".tibetanyouth.org", + ".tibetanyouthcongress.org", + "||tibetanyouthcongress.org", + ".tibetcharity.dk", + "tibetcharity.in", + ".tibetchild.org", + ".tibetcity.com", + ".tibetcorps.org", + ".tibetexpress.net", + "|http://tibetexpress.net", + "tibetfocus.com", + "tibetfund.org", + ".tibetgermany.com", + "||tibetgermany.de", + ".tibethaus.com", + ".tibetheritagefund.org", + "tibethouse.jp", + "tibethouse.org", + "||tibethouse.us", + ".tibetinfonet.net", + ".tibetjustice.org", + ".tibetkomite.dk", + "|http://tibetmuseum.org", + "tibetnetwork.org", + "||tibetnetwork.org", + ".tibetoffice.ch", + "|http://tibetoffice.ch", + "tibetoffice.eu", + "tibetoffice.org", + "tibetonline.com", + "||tibetonline.com", + ".tibetoffice.com.au", + "|http://tibetoffice.com.au", + "||tibetonline.tv", + ".tibetonline.tv", + ".tibetoralhistory.org", + "|http://tibetoralhistory.org", + ".tibetpolicy.eu", + ".tibetrelieffund.co.uk", + "tibetsites.com", + ".tibetsociety.com", + "||tibetsociety.com", + ".tibetsun.com", + ".tibetsupportgroup.org", + "|http://tibetsupportgroup.org", + ".tibetswiss.ch", + ".tibettelegraph.com", + "tibettimes.net", + "||tibetwrites.org", + ".ticket.com.tw", + ".tigervpn.com", + "||tigervpn.com", + ".timdir.com", + "|http://timdir.com", + ".time.com", + "|http://time.com", + ".timsah.com", + "||blog.tiney.com", + "tintuc101.com", + ".tiny.cc", + "|http://tiny.cc", + "tinychat.com", + "||tinypaste.com", + ".tistory.com", + "||tkcs-collins.com", + ".tmagazine.com", + "||tmagazine.com", + ".tmdfish.com", + "|http://tmi.me", + ".tmpp.org", + "|http://tmpp.org", + ".tnaflix.com", + "||tnaflix.com", + ".tngrnow.com", + ".tngrnow.net", + ".tnp.org", + "|http://tnp.org", + ".to-porno.com", + "||to-porno.com", + "togetter.com", + ".tokyo-247.com", + ".tokyo-hot.com", + "||tokyo-porn-tube.com", + "||tokyocn.com", + "tw.tomonews.net", + ".tongil.or.kr", + ".tono-oka.jp", + "tonyyan.net", + ".toodoc.com", + "toonel.net", + "top81.ws", + ".topnews.in", + ".toppornsites.com", + "|http://toppornsites.com", + ".torguard.net", + "||torguard.net", + "||top.tv", + ".topshareware.com", + ".topsy.com", + "||topsy.com", + "||toptip.ca", + "tora.to", + ".torcn.com", + ".torproject.org", + "||torproject.org", + "torrentprivacy.com", + "||torrentprivacy.com", + "|http://torrentproject.se", + "||torrenty.org", + "||torrentz.eu", + "||torvpn.com", + "||totalvpn.com", + ".toutiaoabc.com", + "towngain.com", + "toypark.in", + "toytractorshow.com", + ".tparents.org", + ".tpi.org.tw", + "||tpi.org.tw", + "traffichaus.com", + "||transparency.org", + "||treemall.com.tw", + "trendsmap.com", + "||trendsmap.com", + ".trialofccp.org", + "||trialofccp.org", + ".trimondi.de/SDLE", + ".trouw.nl", + "|http://trouw.nl", + ".trt.net.tr", + "trtc.com.tw", + ".truebuddha-md.org", + "|http://truebuddha-md.org", + "trulyergonomic.com", + ".truth101.co.tv", + "|http://truth101.co.tv", + ".truthontour.org", + "|http://truthontour.org", + ".truveo.com", + ".tsctv.net", + ".tsemtulku.com", + "tsquare.tv", + ".tsu.org.tw", + "tsunagarumon.com", + ".tsctv.net", + "||tt1069.com", + ".tttan.com", + "||tttan.com", + "bb.ttv.com.tw/bb", + "tu8964.com", + ".tubaholic.com", + ".tube.com", + "tube8.com", + "||tube8.com", + ".tube911.com", + "||tube911.com", + ".tubecup.com", + ".tubegals.com", + ".tubeislam.com", + "|http://tubeislam.com", + ".tubestack.com", + "||tubewolf.com", + ".tuibeitu.net", + "tuidang.net", + ".tuidang.org", + "||tuidang.org", + ".tuidang.se", + "bbs.tuitui.info", + ".tumutanzi.com", + "|http://tumutanzi.com", + "||tumview.com", + ".tunein.com", + "|http://tunein.com", + "||tunnelbear.com", + ".tunnelr.com", + "||tunnelr.com", + ".tuo8.blue", + "||tuo8.blue", + ".tuo8.cc", + ".tuo8.club", + "||tuo8.club", + ".tuo8.fit", + ".tuo8.hk", + ".tuo8.in", + ".tuo8.ninja", + ".tuo8.org", + "||tuo8.fit", + "||tuo8.org", + ".tuo8.pw", + "|http://tuo8.pw", + "||tuo8.red", + ".tuo8.space", + "tuitwit.com", + ".turansam.org", + ".turbobit.net", + "|http://turbobit.net", + ".turbohide.com", + "||turbohide.com", + ".tushycash.com", + "|http://tushycash.com", + "||app.tutanota.com", + ".tuvpn.com", + "||tuvpn.com", + "|http://tuzaijidi.com", + "|http://*.tuzaijidi.com", + ".tw01.org", + "|http://tw01.org", + ".tumblr.com", + "||tumblr.com", + "||lecloud.net", + "|http://cosmic.monar.ch", + "||slutmoonbeam.com", + "|http://blog.soylent.com", + ".tv.com", + "|http://tv.com", + "tvants.com", + "forum.tvb.com", + "news.tvb.com/list/world", + "news.tvb.com/local", + "news.tvbs.com.tw", + ".tvboxnow.com", + "|http://tvboxnow.com/", + "tvider.com", + ".tvmost.com.hk", + ".tvplayvideos.com", + "||tvunetworks.com", + ".tw-blog.com", + "|https://tw-blog.com", + ".tw-npo.org", + ".twaitter.com", + "twapperkeeper.com", + "||twapperkeeper.com", + "||twaud.io", + ".twaud.io", + ".twavi.com", + ".twbbs.net.tw", + "twbbs.org", + "twbbs.tw", + "||twblogger.com", + "tweepmag.com", + ".tweepml.org", + "||tweepml.org", + ".tweetbackup.com", + "||tweetbackup.com", + "tweetboard.com", + "||tweetboard.com", + ".tweetboner.biz", + "||tweetboner.biz", + ".tweetcs.com", + "|http://tweetcs.com", + "|http://deck.ly", + "||mtw.tl", + "||tweetedtimes.com", + "||tweetmylast.fm", + "tweetphoto.com", + "||tweetphoto.com", + "||tweetrans.com", + "tweetree.com", + "||tweetree.com", + ".tweettunnel.com", + "||tweettunnel.com", + "||tweetwally.com", + "tweetymail.com", + "||twelve.today", + ".tweez.net", + "|http://tweez.net", + "||twftp.org", + "||twgreatdaily.com", + "twibase.com", + ".twibble.de", + "||twibble.de", + "twibbon.com", + "||twibs.com", + ".twicountry.org", + "|http://twicountry.org", + "twicsy.com", + ".twiends.com", + "|http://twiends.com", + ".twifan.com", + "|http://twifan.com", + "twiffo.com", + "||twiffo.com", + ".twilightsex.com", + "twilog.org", + "twimbow.com", + "||twindexx.com", + "twipple.jp", + "||twipple.jp", + "||twip.me", + "twishort.com", + "||twishort.com", + "twistar.cc", + "||twister.net.co", + "||twisterio.com", + "twisternow.com", + "twistory.net", + "twitbrowser.net", + "||twitcause.com", + "||twitgether.com", + "||twiggit.org", + "twitgoo.com", + "twitiq.com", + "||twitiq.com", + ".twitlonger.com", + "||twitlonger.com", + "|http://tl.gd/", + "twitmania.com", + "twitoaster.com", + "||twitoaster.com", + "||twitonmsn.com", + ".twit2d.com", + "||twit2d.com", + ".twitstat.com", + "||twitstat.com", + "||firstfivefollowers.com", + "||retweeteffect.com", + "||tweeplike.me", + "||tweepguide.com", + "||turbotwitter.com", + ".twitvid.com", + "||twitvid.com", + "|http://twt.tl", + "twittbot.net", + "||ads-twitter.com", + "||twttr.com", + "||twitter4j.org", + ".twittercounter.com", + "||twittercounter.com", + "twitterfeed.com", + ".twittergadget.com", + "||twittergadget.com", + ".twitterkr.com", + "||twitterkr.com", + "||twittermail.com", + "||twitterrific.com", + "twittertim.es", + "||twittertim.es", + "twitthat.com", + "||twitturk.com", + ".twitturly.com", + "||twitturly.com", + ".twitzap.com", + "twiyia.com", + "||twstar.net", + ".twtkr.com", + "|http://twtkr.com", + ".twnorth.org.tw", + "twskype.com", + "twtrland.com", + "twurl.nl", + ".twyac.org", + "||twyac.org", + ".txxx.com", + ".tycool.com", + "||tycool.com", + "||typepad.com", + "@@||www.typepad.com", + "@@||static.typepad.com", + "||blog.expofutures.com", + "||legaltech.law.com", + "||blogs.tampabay.com", + "||contests.twilio.com", + ".embr.in", + "||embr.in", + ".u9un.com", + "||u9un.com", + ".ubddns.org", + "|http://ubddns.org", + "||uberproxy.net", + ".uc-japan.org", + "||uc-japan.org", + ".srcf.ucam.org/salon/", + "|http://china.ucanews.com/", + "||ucdc1998.org", + "|http://hum*.uchicago.edu/faculty/ywang/history", + "||uderzo.it", + ".udn.com", + "||udn.com", + "||udn.com.tw", + "udnbkk.com/bbs", + "||uforadio.com.tw", + "ufreevpn.com", + ".ugo.com", + "||uhdwallpapers.org", + "||uhrp.org", + ".uighur.nl", + "||uighur.nl", + "uighurbiz.net", + ".ulike.net", + "ukcdp.co.uk", + "ukliferadio.co.uk", + "||ukliferadio.co.uk", + "ultravpn.fr", + "||ultravpn.fr", + "ultraxs.com", + "umich.edu/~falun", + "||unblock.cn.com", + ".unblocker.yt", + "unblock-us.com", + "||unblock-us.com", + ".unblockdmm.com", + "|http://unblockdmm.com", + "||unblocksit.es", + "uncyclomedia.org", + ".uncyclopedia.hk/wiki", + "|http://uncyclopedia.hk", + "|http://uncyclopedia.tw", + "underwoodammo.com", + "||underwoodammo.com", + "||unholyknight.com", + ".uni.cc", + "||cldr.unicode.org", + ".unification.net", + ".unification.org.tw", + "||unirule.cloud", + ".unitedsocialpress.com", + ".unix100.com", + "||unknownspace.org", + ".unodedos.com", + "unpo.org", + ".untraceable.us", + "|http://untraceable.us", + "||uocn.org", + "tor.updatestar.com", + ".upholdjustice.org", + ".upload4u.info", + "uploaded.net/file", + "|http://uploaded.net/file", + "|http://uploaded.to/file", + ".uploadstation.com/file", + ".upmedia.mg", + "||upmedia.mg", + ".upornia.com", + "|http://upornia.com", + "||uproxy.org", + "|http://tor.cn.uptodown.com/", + ".upwill.org", + "ur7s.com", + "||urbansurvival.com", + "myshare.url.com.tw/", + "||urlborg.com", + "||urlparser.com", + "us.to", + "||usacn.com", + ".usaip.eu", + "||usaip.eu", + "dalailama.usc.edu", + "iipdigital.usembassy.gov", + "||usfk.mil", + "||usma.edu", + "||usmc.mil", + ".usocctn.com", + "|http://tarr.uspto.gov/", + "||tsdr.uspto.gov", + ".ustream.tv", + "||ustream.tv", + ".usunitednews.com", + "|http://usunitednews.com", + "usus.cc", + ".utopianpal.com", + "||utopianpal.com", + ".uu-gg.com", + ".uvwxyz.xyz", + "||uvwxyz.xyz", + ".uwants.com", + ".uwants.net", + "uyghur.co.uk", + "|http://uyghur-j.org", + "||uyghuramerican.org", + ".uyghurcanadiansociety.org", + ".uyghurensemble.co.uk", + "||uyghurcongress.org", + ".uyghurpen.org", + ".uyghurpress.com", + "|https://uyghurpress.com", + ".uyghurstudies.org", + "|http://uyghurstudies.org", + "uygur.org", + "|http://uymaarip.com/", + ".v2ray.com", + "||v2ray.com", + ".van001.com", + ".van698.com", + ".vanemu.cn", + ".vanilla-jp.com", + ".vanpeople.com", + "vansky.com", + "||vaticannews.va", + "||vcf-online.org", + "||vcfbuilder.org", + ".vegasred.com", + ".velkaepocha.sk", + ".venbbs.com", + ".venchina.com", + ".venetianmacao.com", + "||venetianmacao.com", + "veoh.com", + "mysite.verizon.net", + "vermonttibet.org", + ".versavpn.com", + "||versavpn.com", + "||verybs.com", + ".vft.com.tw", + ".viber.com", + "||viber.com", + ".vica.info", + ".victimsofcommunism.org", + "|http://victimsofcommunism.org", + "||vid.me", + "||vidble.com", + "videobam.com", + "||videobam.com", + ".videodetective.com", + ".videomega.tv", + "||videomega.tv", + ".videomo.com", + "videopediaworld.com", + ".videopress.com", + ".vidinfo.org/video", + "vietdaikynguyen.com", + ".vijayatemple.org", + "vimeo.com", + "||vimeo.com", + "||vimperator.org", + "||vincnd.com", + "||vinniev.com", + "|http://www.lib.virginia.edu/area-studies/Tibet/tibet.html", + ".virtualrealporn.com", + "||virtualrealporn.com", + "visibletweets.com", + "|http://ny.visiontimes.com", + ".vital247.org", + "||viu.com", + ".vivahentai4u.net", + ".vivatube.com", + ".vivthomas.com", + "||vivthomas.com", + ".vjav.com", + "||vjav.com", + ".vjmedia.com.hk", + ".vllcs.org", + "|http://vllcs.org", + "||vmixcore.com", + "||vnet.link", + "cn.voa.mobi", + "tw.voa.mobi", + ".voachineseblog.com", + "||voachineseblog.com", + "voagd.com", + ".voacantonese.com", + "||voacantonese.com", + "voachinese.com", + "||voachinese.com", + ".voanews.com", + "||voanews.com", + "voatibetan.com", + "||voatibetan.com", + ".voatibetanenglish.com", + "||voatibetanenglish.com", + ".vocativ.com", + "vocn.tv", + ".vot.org", + "||vot.org", + ".vovo2000.com", + "|http://vovo2000.com", + ".voxer.com", + "||voxer.com", + ".voy.com", + "||vpn.ac", + ".vpn4all.com", + "||vpn4all.com", + ".vpnaccount.org", + "|http://vpnaccount.org", + ".vpnaccounts.com", + "||vpnaccounts.com", + ".vpncomparison.org", + ".vpncup.com", + "||vpncup.com", + "vpnbook.com", + ".vpncoupons.com", + "|http://vpncoupons.com", + ".vpndada.com", + "||vpndada.com", + ".vpnfan.com", + "vpnfire.com", + ".vpnfires.biz", + ".vpnforgame.net", + "||vpnforgame.net", + "||vpngate.jp", + ".vpngate.net", + "||vpngate.net", + ".vpngratis.net", + "vpnhq.com", + ".vpnmaster.com", + "||vpnmaster.com", + ".vpnmentor.com", + "||vpnmentor.com", + ".vpninja.net", + "||vpninja.net", + ".vpnintouch.com", + "||vpnintouch.net", + "vpnjack.com", + "||vpnjack.com", + ".vpnpick.com", + "||vpnpick.com", + "||vpnpop.com", + "||vpnpronet.com", + ".vpnreactor.com", + "||vpnreactor.com", + "||vpnreviewz.com", + ".vpnsecure.me", + "||vpnsecure.me", + ".vpnshazam.com", + "||vpnshazam.com", + ".vpnshieldapp.com", + "||vpnshieldapp.com", + ".vpnsp.com", + ".vpntraffic.com", + ".vpntunnel.com", + "||vpntunnel.com", + ".vpnuk.info", + "||vpnuk.info", + "||vpnunlimitedapp.com", + ".vpnvip.com", + "||vpnvip.com", + ".vpnworldwide.com", + ".vporn.com", + "||vporn.com", + ".vpser.net", + "@@||vpser.net", + "vraiesagesse.net", + ".vrmtr.com", + "||vtunnel.com", + "||vuku.cc", + "lists.w3.org/archives/public", + "||w3schools.com", + "||waffle1999.com", + ".wahas.com", + ".waigaobu.com", + "waikeung.org/php_wind", + ".wailaike.net", + ".waiwaier.com", + "|http://waiwaier.com", + "||wallmama.com", + "wallornot.org", + "||wallpapercasa.com", + ".wallproxy.com", + "@@||wallproxy.com.cn", + "||waltermartin.com", + "||waltermartin.org", + "||www.wan-press.org", + "||wanderinghorse.net", + "||wangafu.net", + "||wangjinbo.org", + ".wangjinbo.org", + "wanglixiong.com", + ".wango.org", + "||wango.org", + "wangruoshui.net", + "www.wangruowang.org", + "want-daily.com", + "wapedia.mobi/zhsimp", + "||waselpro.com", + ".watchinese.com", + ".wattpad.com", + "||wattpad.com", + ".makzhou.warehouse333.com", + "washeng.net", + ".watch8x.com", + "||watchmygf.net", + "||wav.tv", + ".wdf5.com", + ".wearehairy.com", + ".wearn.com", + "||wearn.com", + "|http://hkcoc.weather.com.hk", + "||hudatoriq.web.id", + "||web2project.net", + "webbang.net", + ".webevader.org", + ".webfreer.com", + "weblagu.com", + ".webjb.org", + ".webrush.net", + "webs-tv.net", + ".websitepulse.com/help/testtools.china-test", + "|http://www.websnapr.com", + ".webwarper.net", + "|http://webwarper.net", + "webworkerdaily.com", + ".weekmag.info", + "||wefightcensorship.org", + ".wefong.com", + "weiboleak.com", + ".weihuo.org", + "weijingsheng.org", + ".weiming.info", + "||weiming.info", + "weiquanwang.org", + "|http://weisuo.ws", + ".welovecock.com", + ".wemigrate.org", + "|http://wemigrate.org", + "wengewang.com", + "||wengewang.org", + ".wenhui.ch", + "|http://trans.wenweipo.com/gb/", + ".wenxuecity.com", + "||wenxuecity.com", + ".wenyunchao.com", + "||wenyunchao.com", + ".westca.com", + "||westca.com", + "||westernwolves.com", + ".westkit.net", + "||westpoint.edu", + ".westernshugdensociety.org", + "wetpussygames.com", + ".wetplace.com", + "wexiaobo.org", + "||wexiaobo.org", + "wezhiyong.org", + "||wezone.net", + ".wforum.com", + "||wforum.com/", + ".whatblocked.com", + "||whatblocked.com", + ".wheatseeds.org", + "||wheelockslatin.com", + ".whippedass.com", + ".whoer.net", + "||whoer.net", + "whotalking.com", + "whylover.com", + "||whyx.org", + "|http://zh.ecdm.wikia.com", + "|http://evchk.wikia.com", + "fq.wikia.com", + "zh.pttpedia.wikia.com/wiki/%E7%BF%92%E5%8C%85%E5%AD%90%E4%B9%8B%E4%BA%82", + "cn.uncyclopedia.wikia.com", + "zh.uncyclopedia.wikia.com", + "||wikileaks.ch", + "||wikileaks.com", + "||wikileaks.de", + "||wikileaks.eu", + "||wikileaks.lu", + ".wikileaks.org", + "||wikileaks.org", + "||wikileaks.pl", + ".wikileaks-forum.com", + "wildammo.com", + ".williamhill.com", + "||collateralmurder.com", + "||collateralmurder.org", + "wikilivres.info/wiki/%E9%9B%B6%E5%85%AB%E5%AE%AA%E7%AB%A0", + "||wikimapia.org", + "|http://zh.wikisource.org", + "||zh.wikinews.org", + "||ja.wikipedia.org", + "||wikipedia.org", + "||wikiwiki.jp", + "||casino.williamhill.com", + "||sports.williamhill.com", + "||vegas.williamhill.com", + "||willw.net", + "||windowsphoneme.com", + ".windscribe.com", + "||windscribe.com", + "||community.windy.com", + "||wingy.site", + "winning11.com", + "winwhispers.info", + "||wiredbytes.com", + "||wiredpen.com", + ".wisdompubs.org", + ".wisevid.com", + "||wisevid.com", + ".witnessleeteaching.com", + ".witopia.net", + ".wjbk.org", + "||wjbk.org", + "|http://wn.com", + ".wnacg.com", + ".wnacg.org", + ".wo.tc", + "||woeser.com", + "|http://woesermiddle-way.net/", + ".wokar.org", + "|http://wokar.org", + "wolfax.com", + "||wolfax.com", + "||woolyss.com", + "woopie.jp", + "||woopie.jp", + "woopie.tv", + "||woopie.tv", + "||workatruna.com", + ".workerdemo.org.hk", + ".workerempowerment.org", + "||workersthebig.net", + ".worldcat.org", + "worldjournal.com", + ".worldvpn.net", + "||worldvpn.net", + "||videopress.com", + ".wordpress.com", + "|http://*.wordpress.com", + "||chenshan20042005.wordpress.com", + "||chinaview.wordpress.com", + "||cnbbnews.wordpress.com", + "||freedominfonetweb.wordpress.com", + "||hka8964.wordpress.com", + "||hkanews.wordpress.com", + "||hqsbnet.wordpress.com", + "||hqsbonline.wordpress.com", + "||investigating.wordpress.com", + "||jobnewera.wordpress.com", + "||minghuiyw.wordpress.com", + "||wo3ttt.wordpress.com", + "||sujiatun.wordpress.com", + "||xijie.wordpress.com", + "||wp.com", + ".wow.com", + ".wow-life.net", + "||wowlegacy.ml", + "||wowporn.com", + "||wowgirls.com", + ".wowrk.com", + "woxinghuiguo.com", + ".woyaolian.org", + "|http://woyaolian.org", + ".wpoforum.com", + "||wpoforum.com", + ".wqyd.org", + "||wqyd.org", + "wrchina.org", + "wretch.cc", + ".wsj.com", + "||wsj.com", + ".wsj.net", + "||wsj.net", + ".wsjhk.com", + ".wtbn.org", + ".wtfpeople.com", + "wuerkaixi.com", + "||wufafangwen.com", + "wufi.org.tw", + "||wuguoguang.com", + "wujie.net", + "wujieliulan.com", + "||wujieliulan.com", + "wukangrui.net", + "||wuw.red", + "||wuyanblog.com", + ".wwitv.com", + "||wwitv.com", + "wzyboy.im/post/160", + ".x-berry.com", + "||x-berry.com", + "||x-art.com", + "||x-wall.org", + "x1949x.com", + "x365x.com", + "xanga.com", + "||xbabe.com", + ".xbookcn.com", + "||xbookcn.com", + "||xcafe.in", + "||xcity.jp", + ".xcritic.com", + "|http://cdn*.xda-developers.com", + ".xerotica.com", + "destiny.xfiles.to/ubbthreads", + ".xfm.pp.ru", + ".xgmyd.com", + "||xgmyd.com", + "xhamster.com", + "||xhamster.com", + ".xianba.net", + ".xianchawang.net", + ".xianjian.tw", + "|http://xianjian.tw", + ".xianqiao.net", + ".xiaobaiwu.com", + ".xiaochuncnjp.com", + ".xiaod.in", + ".xiaohexie.com", + "||xiaolan.me", + "||xiaoma.org", + "||xiaohexie.com", + "xiezhua.com", + ".xihua.es", + "forum.xinbao.de/forum", + ".xing.com", + "|http://xing.com", + ".xinmiao.com.hk", + "||xinmiao.com.hk", + "xinsheng.net", + "xinshijue.com", + "xinhuanet.org", + "|http://xinyubbs.net", + ".xiongpian.com", + ".xiuren.org", + "xizang-zhiye.org", + "xjp.cc", + "||xjp.cc", + "||xjtravelguide.com", + "xlfmtalk.com", + "||xlfmwz.info", + "||xml-training-guide.com", + "xmovies.com", + "||xnxx.com", + "xpdo.net", + "||xpud.org", + ".xrentdvd.com", + ".xskywalker.net", + "||xtube.com", + "blog.xuite.net", + "vlog.xuite.net", + "xuzhiyong.net", + "||xuchao.org", + "xuchao.net", + "||xuchao.net", + "xvideo.cc", + ".xvideos.com", + "||xvideos.com", + "||xvideos.es", + ".xkiwi.tk/", + ".xxbbx.com", + ".xxlmovies.com", + "||xxx.com", + ".xxx.xxx", + "|http://xxx.xxx", + ".xxxfuckmom.com", + "||xxxx.com.au", + ".xxxymovies.com", + "|http://xxxymovies.com", + "xys.org", + "xysblogs.org", + "xyy69.com", + "xyy69.info", + "||yakbutterblues.com", + "||yam.com", + "||yam.org.tw", + ".yanghengjun.com", + "yangjianli.com", + ".yasni.co.uk", + "||yasni.co.uk", + ".yayabay.com/forum", + ".ydy.com", + ".yeahteentube.com", + "||yeahteentube.com", + "||yecl.net", + "||yeelou.com", + "yeeyi.com", + "yegle.net", + "||yegle.net", + ".yes.xxx", + "||yes123.com.tw", + "||yesasia.com", + "||yesasia.com.hk", + ".yes-news.com", + "|http://yes-news.com", + ".yespornplease.com", + "||yespornplease.com", + "|http://yeyeclub.com", + "||yhcw.net", + ".yibada.com", + ".yibaochina.com", + ".yidio.com", + "||yidio.com", + "yilubbs.com", + "xa.yimg.com", + ".yingsuoss.com", + ".yipub.com", + "||yipub.com", + "yinlei.org/mt", + ".yizhihongxing.com", + ".yobt.com", + ".yobt.tv", + "||yobt.tv", + ".yogichen.org", + "||yogichen.org", + ".yolasite.com", + ".yomiuri.co.jp", + "yong.hu", + ".yorkbbs.ca", + "||youxu.info", + ".youjizz.com", + "||youjizz.com", + ".youmaker.com", + "||youmaker.com", + ".youngpornvideos.com", + "youngspiration.hk", + ".youpai.org", + "||youpai.org", + ".your-freedom.net", + "||yourepeat.com", + ".yourprivatevpn.com", + "||yourprivatevpn.com", + ".yousendit.com", + "||yousendit.com", + ".youthnetradio.org/tmit/forum", + "blog.youthwant.com.tw", + "me.youthwant.com.tw", + "share.youthwant.com.tw", + "topic.youthwant.com.tw", + ".youporn.com", + "||youporn.com", + ".youporngay.com", + "||youporngay.com", + ".yourlisten.com", + "|http://yourlisten.com", + ".yourlust.com", + "|http://yourlust.com", + "youshun12.com", + ".youtubecn.com", + "youversion.com", + "||youversion.com", + "blog.youxu.info/2010/03/14/west-chamber", + "ytht.net", + "yuanming.net", + ".yuanzhengtang.org", + ".yulghun.com", + "||yunchao.net", + "||yuntipub.com", + ".yuvutu.com", + "||yvesgeleyn.com", + ".ywpw.com/forums/history/post/A0/p0/html/227", + "yx51.net", + ".yyii.org", + "||yyii.org", + ".yzzk.com", + "|http://yzzk.com", + "zacebook.com", + ".zalmos.com", + "||zalmos.com", + "||zannel.com", + ".zaobao.com", + "||zaobao.com", + "|http://zaobao.com.sg", + "||zaobao.com.sg", + ".zaozon.com", + "||zdnet.com.tw", + ".zello.com", + "||zello.com", + ".zengjinyan.org", + ".zenmate.com", + "||zenmate.com", + "||zenmate.com.ru", + "||zeronet.io", + "||zeutch.com", + ".zfreet.com", + ".zgsddh.com", + "zgzcjj.net", + ".zhanbin.net", + "||zhanbin.net", + ".zhangboli.net", + "||zhangtianliang.com", + "||zhanlve.org", + "zhenghui.org", + ".zhengjian.org", + "||zhengjian.org", + "zhengwunet.org", + "zhenlibu.info", + "||zhenlibu.info", + ".zhenlibu1984.com", + "||zhenlibu1984.com", + "|http://zhenxiang.biz", + ".zhinengluyou.com", + "zhongguo.ca", + "|http://zhongguorenquan.org", + "zhongguotese.net", + "||zhongguotese.net", + "||zhongmeng.org", + ".zhoushuguang.com", + "||zhreader.com", + ".zhuangbi.me", + "||zhuangbi.me", + ".zhuanxing.cn", + "||zhuatieba.com", + "zhuichaguoji.org", + "||zhuichaguoji.org", + "|http://book.zi5.me", + ".ziddu.com/download", + "||zillionk.com", + ".zinio.com", + "||zinio.com", + ".ziporn.com", + ".zippyshare.com", + ".zkaip.com", + "||zkaip.com", + "realforum.zkiz.com", + "||zmw.cn", + ".zodgame.us", + "zomobo.net", + ".zonaeuropa.com", + "||zonaeuropa.com", + "||zonghexinwen.com", + ".zonghexinwen.net", + "||zoogvpn.com", + "||zootool.com", + ".zoozle.net", + "writer.zoho.com", + "||zorrovpn.com", + "||zpn.im", + "||zspeeder.me", + ".zsrhao.com", + ".zuo.la", + "||zuo.la", + "||zuobiao.me", + ".zuola.com", + "||zuola.com", + "||zvereff.com", + ".zynaima.com", + "zyzc9.com", + ".zzcartoon.com", + "64memo", + "aHR0cHM6Ly95ZWNsLm5ldA", + "freenet", + ".google.*/falun", + "phobos.apple.com*/video", + "q=freedom", + "q%3Dfreedom", + "remembering_tiananmen_20_years", + "search*safeweb", + "q=triangle", + "q%3DTriangle", + "ultrareach", + "ultrasurf", + "@@||aliyun.com", + "@@||baidu.com", + "@@||chinaso.com", + "@@||chinaz.com", + "@@|http://nrch.culture.tw/", + "@@||adservice.google.com", + "@@||dl.google.com", + "@@||kh.google.com", + "@@||khm.google.com", + "@@||khm0.google.com", + "@@||khm1.google.com", + "@@||khm2.google.com", + "@@||khm3.google.com", + "@@||khmdb.google.com", + "@@||tools.google.com", + "@@||clientservices.googleapis.com", + "@@||fonts.googleapis.com", + "@@||khm.googleapis.com", + "@@||khm0.googleapis.com", + "@@||khm1.googleapis.com", + "@@||khm2.googleapis.com", + "@@||khm3.googleapis.com", + "@@||khmdb.googleapis.com", + "@@||storage.googleapis.com", + "@@||translate.googleapis.com", + "@@||update.googleapis.com", + "@@||safebrowsing.googleapis.com", + "@@||cn.gravatar.com", + "@@||connectivitycheck.gstatic.com", + "@@||csi.gstatic.com", + "@@||fonts.gstatic.com", + "@@||ssl.gstatic.com", + "@@||haosou.com", + "@@||ip.cn", + "@@||jike.com", + "@@|http://translate.google.cn", + "@@|http://www.google.cn/maps", + "@@||http2.golang.org", + "@@||gov.cn", + "@@||qq.com", + "@@||sina.cn", + "@@||sina.com.cn", + "@@||sogou.com", + "@@||so.com", + "@@||soso.com", + "@@||uluai.com.cn", + "@@||weibo.com", + "@@||yahoo.cn", + "@@||youdao.com", + "@@||zhongsou.com", + "@@|http://ime.baidu.jp" +]; + +/* +* This file is part of Adblock Plus , +* Copyright (C) 2006-2014 Eyeo GmbH +* +* Adblock Plus is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License version 3 as +* published by the Free Software Foundation. +* +* Adblock Plus is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with Adblock Plus. If not, see . +*/ + +function createDict() +{ + var result = {}; + result.__proto__ = null; + return result; +} + +function getOwnPropertyDescriptor(obj, key) +{ + if (obj.hasOwnProperty(key)) + { + return obj[key]; + } + return null; +} + +function extend(subclass, superclass, definition) +{ + if (Object.__proto__) + { + definition.__proto__ = superclass.prototype; + subclass.prototype = definition; + } + else + { + var tmpclass = function(){}, ret; + tmpclass.prototype = superclass.prototype; + subclass.prototype = new tmpclass(); + subclass.prototype.constructor = superclass; + for (var i in definition) + { + if (definition.hasOwnProperty(i)) + { + subclass.prototype[i] = definition[i]; + } + } + } +} + +function Filter(text) +{ + this.text = text; + this.subscriptions = []; +} +Filter.prototype = { + text: null, + subscriptions: null, + toString: function() + { + return this.text; + } +}; +Filter.knownFilters = createDict(); +Filter.elemhideRegExp = /^([^\/\*\|\@"!]*?)#(\@)?(?:([\w\-]+|\*)((?:\([\w\-]+(?:[$^*]?=[^\(\)"]*)?\))*)|#([^{}]+))$/; +Filter.regexpRegExp = /^(@@)?\/.*\/(?:\$~?[\w\-]+(?:=[^,\s]+)?(?:,~?[\w\-]+(?:=[^,\s]+)?)*)?$/; +Filter.optionsRegExp = /\$(~?[\w\-]+(?:=[^,\s]+)?(?:,~?[\w\-]+(?:=[^,\s]+)?)*)$/; +Filter.fromText = function(text) +{ + if (text in Filter.knownFilters) + { + return Filter.knownFilters[text]; + } + var ret; + if (text.charAt(0) == "!") + { + ret = new CommentFilter(text); + } + else + { + ret = RegExpFilter.fromText(text); + } + Filter.knownFilters[ret.text] = ret; + return ret; +}; + +function InvalidFilter(text, reason) +{ + Filter.call(this, text); + this.reason = reason; +} +extend(InvalidFilter, Filter, { + reason: null +}); + +function CommentFilter(text) +{ + Filter.call(this, text); +} +extend(CommentFilter, Filter, { +}); + +function ActiveFilter(text, domains) +{ + Filter.call(this, text); + this.domainSource = domains; +} +extend(ActiveFilter, Filter, { + domainSource: null, + domainSeparator: null, + ignoreTrailingDot: true, + domainSourceIsUpperCase: false, + getDomains: function() + { + var prop = getOwnPropertyDescriptor(this, "domains"); + if (prop) + { + return prop; + } + var domains = null; + if (this.domainSource) + { + var source = this.domainSource; + if (!this.domainSourceIsUpperCase) + { + source = source.toUpperCase(); + } + var list = source.split(this.domainSeparator); + if (list.length == 1 && (list[0]).charAt(0) != "~") + { + domains = createDict(); + domains[""] = false; + if (this.ignoreTrailingDot) + { + list[0] = list[0].replace(/\.+$/, ""); + } + domains[list[0]] = true; + } + else + { + var hasIncludes = false; + for (var i = 0; i < list.length; i++) + { + var domain = list[i]; + if (this.ignoreTrailingDot) + { + domain = domain.replace(/\.+$/, ""); + } + if (domain == "") + { + continue; + } + var include; + if (domain.charAt(0) == "~") + { + include = false; + domain = domain.substr(1); + } + else + { + include = true; + hasIncludes = true; + } + if (!domains) + { + domains = createDict(); + } + domains[domain] = include; + } + domains[""] = !hasIncludes; + } + this.domainSource = null; + } + return this.domains; + }, + sitekeys: null, + isActiveOnDomain: function(docDomain, sitekey) + { + if (this.getSitekeys() && (!sitekey || this.getSitekeys().indexOf(sitekey.toUpperCase()) < 0)) + { + return false; + } + if (!this.getDomains()) + { + return true; + } + if (!docDomain) + { + return this.getDomains()[""]; + } + if (this.ignoreTrailingDot) + { + docDomain = docDomain.replace(/\.+$/, ""); + } + docDomain = docDomain.toUpperCase(); + while (true) + { + if (docDomain in this.getDomains()) + { + return this.domains[docDomain]; + } + var nextDot = docDomain.indexOf("."); + if (nextDot < 0) + { + break; + } + docDomain = docDomain.substr(nextDot + 1); + } + return this.domains[""]; + }, + isActiveOnlyOnDomain: function(docDomain) + { + if (!docDomain || !this.getDomains() || this.getDomains()[""]) + { + return false; + } + if (this.ignoreTrailingDot) + { + docDomain = docDomain.replace(/\.+$/, ""); + } + docDomain = docDomain.toUpperCase(); + for (var domain in this.getDomains()) + { + if (this.domains[domain] && domain != docDomain && (domain.length <= docDomain.length || domain.indexOf("." + docDomain) != domain.length - docDomain.length - 1)) + { + return false; + } + } + return true; + } +}); + +function RegExpFilter(text, regexpSource, contentType, matchCase, domains, thirdParty, sitekeys) +{ + ActiveFilter.call(this, text, domains, sitekeys); + if (contentType != null) + { + this.contentType = contentType; + } + if (matchCase) + { + this.matchCase = matchCase; + } + if (thirdParty != null) + { + this.thirdParty = thirdParty; + } + if (sitekeys != null) + { + this.sitekeySource = sitekeys; + } + if (regexpSource.length >= 2 && regexpSource.charAt(0) == "/" && regexpSource.charAt(regexpSource.length - 1) == "/") + { + var regexp = new RegExp(regexpSource.substr(1, regexpSource.length - 2), this.matchCase ? "" : "i"); + this.regexp = regexp; + } + else + { + this.regexpSource = regexpSource; + } +} +extend(RegExpFilter, ActiveFilter, { + domainSourceIsUpperCase: true, + length: 1, + domainSeparator: "|", + regexpSource: null, + getRegexp: function() + { + var prop = getOwnPropertyDescriptor(this, "regexp"); + if (prop) + { + return prop; + } + var source = this.regexpSource.replace(/\*+/g, "*").replace(/\^\|$/, "^").replace(/\W/g, "\\$&").replace(/\\\*/g, ".*").replace(/\\\^/g, "(?:[\\x00-\\x24\\x26-\\x2C\\x2F\\x3A-\\x40\\x5B-\\x5E\\x60\\x7B-\\x7F]|$)").replace(/^\\\|\\\|/, "^[\\w\\-]+:\\/+(?!\\/)(?:[^\\/]+\\.)?").replace(/^\\\|/, "^").replace(/\\\|$/, "$").replace(/^(\.\*)/, "").replace(/(\.\*)$/, ""); + var regexp = new RegExp(source, this.matchCase ? "" : "i"); + this.regexp = regexp; + return regexp; + }, + contentType: 2147483647, + matchCase: false, + thirdParty: null, + sitekeySource: null, + getSitekeys: function() + { + var prop = getOwnPropertyDescriptor(this, "sitekeys"); + if (prop) + { + return prop; + } + var sitekeys = null; + if (this.sitekeySource) + { + sitekeys = this.sitekeySource.split("|"); + this.sitekeySource = null; + } + this.sitekeys = sitekeys; + return this.sitekeys; + }, + matches: function(location, contentType, docDomain, thirdParty, sitekey) + { + if (this.getRegexp().test(location) && this.isActiveOnDomain(docDomain, sitekey)) + { + return true; + } + return false; + } +}); +RegExpFilter.prototype["0"] = "#this"; +RegExpFilter.fromText = function(text) +{ + var blocking = true; + var origText = text; + if (text.indexOf("@@") == 0) + { + blocking = false; + text = text.substr(2); + } + var contentType = null; + var matchCase = null; + var domains = null; + var sitekeys = null; + var thirdParty = null; + var collapse = null; + var options; + var match = text.indexOf("$") >= 0 ? Filter.optionsRegExp.exec(text) : null; + if (match) + { + options = match[1].toUpperCase().split(","); + text = match.input.substr(0, match.index); + for (var _loopIndex6 = 0; _loopIndex6 < options.length; ++_loopIndex6) + { + var option = options[_loopIndex6]; + var value = null; + var separatorIndex = option.indexOf("="); + if (separatorIndex >= 0) + { + value = option.substr(separatorIndex + 1); + option = option.substr(0, separatorIndex); + } + option = option.replace(/-/, "_"); + if (option in RegExpFilter.typeMap) + { + if (contentType == null) + { + contentType = 0; + } + contentType |= RegExpFilter.typeMap[option]; + } + else if (option.charAt(0) == "~" && option.substr(1) in RegExpFilter.typeMap) + { + if (contentType == null) + { + contentType = RegExpFilter.prototype.contentType; + } + contentType &= ~RegExpFilter.typeMap[option.substr(1)]; + } + else if (option == "MATCH_CASE") + { + matchCase = true; + } + else if (option == "~MATCH_CASE") + { + matchCase = false; + } + else if (option == "DOMAIN" && typeof value != "undefined") + { + domains = value; + } + else if (option == "THIRD_PARTY") + { + thirdParty = true; + } + else if (option == "~THIRD_PARTY") + { + thirdParty = false; + } + else if (option == "COLLAPSE") + { + collapse = true; + } + else if (option == "~COLLAPSE") + { + collapse = false; + } + else if (option == "SITEKEY" && typeof value != "undefined") + { + sitekeys = value; + } + else + { + return new InvalidFilter(origText, "Unknown option " + option.toLowerCase()); + } + } + } + if (!blocking && (contentType == null || contentType & RegExpFilter.typeMap.DOCUMENT) && (!options || options.indexOf("DOCUMENT") < 0) && !/^\|?[\w\-]+:/.test(text)) + { + if (contentType == null) + { + contentType = RegExpFilter.prototype.contentType; + } + contentType &= ~RegExpFilter.typeMap.DOCUMENT; + } + try + { + if (blocking) + { + return new BlockingFilter(origText, text, contentType, matchCase, domains, thirdParty, sitekeys, collapse); + } + else + { + return new WhitelistFilter(origText, text, contentType, matchCase, domains, thirdParty, sitekeys); + } + } + catch (e) + { + return new InvalidFilter(origText, e); + } +}; +RegExpFilter.typeMap = { + OTHER: 1, + SCRIPT: 2, + IMAGE: 4, + STYLESHEET: 8, + OBJECT: 16, + SUBDOCUMENT: 32, + DOCUMENT: 64, + XBL: 1, + PING: 1, + XMLHTTPREQUEST: 2048, + OBJECT_SUBREQUEST: 4096, + DTD: 1, + MEDIA: 16384, + FONT: 32768, + BACKGROUND: 4, + POPUP: 268435456, + ELEMHIDE: 1073741824 +}; +RegExpFilter.prototype.contentType &= ~ (RegExpFilter.typeMap.ELEMHIDE | RegExpFilter.typeMap.POPUP); + +function BlockingFilter(text, regexpSource, contentType, matchCase, domains, thirdParty, sitekeys, collapse) +{ + RegExpFilter.call(this, text, regexpSource, contentType, matchCase, domains, thirdParty, sitekeys); + this.collapse = collapse; +} +extend(BlockingFilter, RegExpFilter, { + collapse: null +}); + +function WhitelistFilter(text, regexpSource, contentType, matchCase, domains, thirdParty, sitekeys) +{ + RegExpFilter.call(this, text, regexpSource, contentType, matchCase, domains, thirdParty, sitekeys); +} +extend(WhitelistFilter, RegExpFilter, { +}); + +function Matcher() +{ + this.clear(); +} +Matcher.prototype = { + filterByKeyword: null, + keywordByFilter: null, + clear: function() + { + this.filterByKeyword = createDict(); + this.keywordByFilter = createDict(); + }, + add: function(filter) + { + if (filter.text in this.keywordByFilter) + { + return; + } + var keyword = this.findKeyword(filter); + var oldEntry = this.filterByKeyword[keyword]; + if (typeof oldEntry == "undefined") + { + this.filterByKeyword[keyword] = filter; + } + else if (oldEntry.length == 1) + { + this.filterByKeyword[keyword] = [oldEntry, filter]; + } + else + { + oldEntry.push(filter); + } + this.keywordByFilter[filter.text] = keyword; + }, + remove: function(filter) + { + if (!(filter.text in this.keywordByFilter)) + { + return; + } + var keyword = this.keywordByFilter[filter.text]; + var list = this.filterByKeyword[keyword]; + if (list.length <= 1) + { + delete this.filterByKeyword[keyword]; + } + else + { + var index = list.indexOf(filter); + if (index >= 0) + { + list.splice(index, 1); + if (list.length == 1) + { + this.filterByKeyword[keyword] = list[0]; + } + } + } + delete this.keywordByFilter[filter.text]; + }, + findKeyword: function(filter) + { + var result = ""; + var text = filter.text; + if (Filter.regexpRegExp.test(text)) + { + return result; + } + var match = Filter.optionsRegExp.exec(text); + if (match) + { + text = match.input.substr(0, match.index); + } + if (text.substr(0, 2) == "@@") + { + text = text.substr(2); + } + var candidates = text.toLowerCase().match(/[^a-z0-9%*][a-z0-9%]{3,}(?=[^a-z0-9%*])/g); + if (!candidates) + { + return result; + } + var hash = this.filterByKeyword; + var resultCount = 16777215; + var resultLength = 0; + for (var i = 0, l = candidates.length; i < l; i++) + { + var candidate = candidates[i].substr(1); + var count = candidate in hash ? hash[candidate].length : 0; + if (count < resultCount || count == resultCount && candidate.length > resultLength) + { + result = candidate; + resultCount = count; + resultLength = candidate.length; + } + } + return result; + }, + hasFilter: function(filter) + { + return filter.text in this.keywordByFilter; + }, + getKeywordForFilter: function(filter) + { + if (filter.text in this.keywordByFilter) + { + return this.keywordByFilter[filter.text]; + } + else + { + return null; + } + }, + _checkEntryMatch: function(keyword, location, contentType, docDomain, thirdParty, sitekey) + { + var list = this.filterByKeyword[keyword]; + for (var i = 0; i < list.length; i++) + { + var filter = list[i]; + if (filter == "#this") + { + filter = list; + } + if (filter.matches(location, contentType, docDomain, thirdParty, sitekey)) + { + return filter; + } + } + return null; + }, + matchesAny: function(location, contentType, docDomain, thirdParty, sitekey) + { + var candidates = location.toLowerCase().match(/[a-z0-9%]{3,}/g); + if (candidates === null) + { + candidates = []; + } + candidates.push(""); + for (var i = 0, l = candidates.length; i < l; i++) + { + var substr = candidates[i]; + if (substr in this.filterByKeyword) + { + var result = this._checkEntryMatch(substr, location, contentType, docDomain, thirdParty, sitekey); + if (result) + { + return result; + } + } + } + return null; + } +}; + +function CombinedMatcher() +{ + this.blacklist = new Matcher(); + this.whitelist = new Matcher(); + this.resultCache = createDict(); +} +CombinedMatcher.maxCacheEntries = 1000; +CombinedMatcher.prototype = { + blacklist: null, + whitelist: null, + resultCache: null, + cacheEntries: 0, + clear: function() + { + this.blacklist.clear(); + this.whitelist.clear(); + this.resultCache = createDict(); + this.cacheEntries = 0; + }, + add: function(filter) + { + if (filter instanceof WhitelistFilter) + { + this.whitelist.add(filter); + } + else + { + this.blacklist.add(filter); + } + if (this.cacheEntries > 0) + { + this.resultCache = createDict(); + this.cacheEntries = 0; + } + }, + remove: function(filter) + { + if (filter instanceof WhitelistFilter) + { + this.whitelist.remove(filter); + } + else + { + this.blacklist.remove(filter); + } + if (this.cacheEntries > 0) + { + this.resultCache = createDict(); + this.cacheEntries = 0; + } + }, + findKeyword: function(filter) + { + if (filter instanceof WhitelistFilter) + { + return this.whitelist.findKeyword(filter); + } + else + { + return this.blacklist.findKeyword(filter); + } + }, + hasFilter: function(filter) + { + if (filter instanceof WhitelistFilter) + { + return this.whitelist.hasFilter(filter); + } + else + { + return this.blacklist.hasFilter(filter); + } + }, + getKeywordForFilter: function(filter) + { + if (filter instanceof WhitelistFilter) + { + return this.whitelist.getKeywordForFilter(filter); + } + else + { + return this.blacklist.getKeywordForFilter(filter); + } + }, + isSlowFilter: function(filter) + { + var matcher = filter instanceof WhitelistFilter ? this.whitelist : this.blacklist; + if (matcher.hasFilter(filter)) + { + return !matcher.getKeywordForFilter(filter); + } + else + { + return !matcher.findKeyword(filter); + } + }, + matchesAnyInternal: function(location, contentType, docDomain, thirdParty, sitekey) + { + var candidates = location.toLowerCase().match(/[a-z0-9%]{3,}/g); + if (candidates === null) + { + candidates = []; + } + candidates.push(""); + var blacklistHit = null; + for (var i = 0, l = candidates.length; i < l; i++) + { + var substr = candidates[i]; + if (substr in this.whitelist.filterByKeyword) + { + var result = this.whitelist._checkEntryMatch(substr, location, contentType, docDomain, thirdParty, sitekey); + if (result) + { + return result; + } + } + if (substr in this.blacklist.filterByKeyword && blacklistHit === null) + { + blacklistHit = this.blacklist._checkEntryMatch(substr, location, contentType, docDomain, thirdParty, sitekey); + } + } + return blacklistHit; + }, + matchesAny: function(location, docDomain) + { + var key = location + " " + docDomain + " "; + if (key in this.resultCache) + { + return this.resultCache[key]; + } + var result = this.matchesAnyInternal(location, 0, docDomain, null, null); + if (this.cacheEntries >= CombinedMatcher.maxCacheEntries) + { + this.resultCache = createDict(); + this.cacheEntries = 0; + } + this.resultCache[key] = result; + this.cacheEntries++; + return result; + } +}; +var defaultMatcher = new CombinedMatcher(); + +var direct = 'DIRECT;'; + +for (var i = 0; i < rules.length; i++) { + defaultMatcher.add(Filter.fromText(rules[i])); +} + +function FindProxyForURL(url, host) { + if (defaultMatcher.matchesAny(url, host) instanceof BlockingFilter) { + return proxy; + } + return direct; +} diff --git a/v2rayN/v2rayN/Resources/pac.txt.gz b/v2rayN/v2rayN/Resources/pac.txt.gz new file mode 100644 index 0000000000000000000000000000000000000000..4020d6a664dc9f4102166c3e26f07fd9b6b4bca4 GIT binary patch literal 46619 zcmV)8K*qlxiwFqTr$1c;0B~VrE_8Tw0F+(ZuJbw(zDMF65E2rn=I=3SL5Q=E5E2M( zK%C?xZsOIPcAT`URmF>O!6Wese0I_}h*%zGXr-+locs62-TwnnyzNZ{=mozxfR?r%hAIAAR|fh$d}AFDmmdQC8k= zqKNNbMuETijc1K`tU>s~gvOFlg2w#}q0Op0QQV>kH4k zn2!l%#=Npl3{Qc(Hs8x#I#bhtW5V5*O%<77HxyVMy4P8{k5#{6jfwU4d`Q&~5-jLJG@Ri!9%Fj{I1r-pABp(0PbIFkZB?xXr*xbwqqJqj;VhJwd=dLQ+_ zpZ)Cl5+N4dM3W;;#B8N{yWPBwmVZGa3Cl;tEv{ue9xU-St{AO2&SfJ!&J8f_4Iclj z_@yD?3}l#^oHe!hBz*JenO!a|snj#ZM}>Y>w+6zXmSxwd1}jwNnwx0s;dIVK6_%`y zEfkz3g$mR`$jLipXp74o%}K$}0?C&3g?7+nh32B-GT}{gH{)lFw^dfMm}Got_?q3k zZvJQ`ucNYPFp71%q8BGM%Nz9E%a=#W%8`)5fH``+9U=FM(`3udenXMA^l}~xHXtc$ z8=gUaDZVKh#RVbUcv5;PuW3T6@71d)mY(8Ig_3UgN9o(IVMz09EKmh3gVdWrY3524 zfmdZ?q2(2#onmd)P5_b53}MNm7KKV%*<`$)VdyCl>m|T+ELt2U&3jmjc*P2q-KC%z zL~VTE6Dt|z6_vpm3X_#Z(v)1zOPri1O!txRqwk!(w8^utW%{U+B}{w)S5@>(X3EIK zm3E2d=83Pwoz6}l?21nQYIy@CMCJg>L|C)>P6EG!qly;=w?L6gnoN6XKgv~lHMf^QRVI6fDu;v`s=UFAISJ-+=mBmfO{7n-VVWh{Q z8geESFITy!S(MSjqE0anep2k5ePTe*V&EqjCh-ZMEGKMNWYbwG z_S{rJ;gU^V=JTkYR_945_Qj$!%3MiVJ{j6YCBt$8HgSUy@Gz?G#w*&GKOU5=m1?9{ z7T8`n&2yO-A{fh!val6Q%<(nRJ%0AHR~^C3NW6h=f>f-C%X-}Ly&f8OIM`$tSX!4m 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 literal 0 HcmV?d00001 diff --git a/v2rayN/v2rayN/Resources/privoxy.exe.gz b/v2rayN/v2rayN/Resources/privoxy.exe.gz new file mode 100644 index 0000000000000000000000000000000000000000..f42c68d7fe29b56198e6093cd27e5ddbaab6bf29 GIT binary patch literal 156872 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