From 74c61ca76a3c032760c0b08190a6599b68ed4127 Mon Sep 17 00:00:00 2001 From: Gang Zhuo Date: Thu, 8 Jan 2015 00:24:34 -0500 Subject: [PATCH] remove unuse code and resources --- .../Controller/GfwListUpdater.cs | 174 ------------------ shadowsocks-csharp/Data/builtin.txt.gz | Bin 104 -> 0 bytes shadowsocks-csharp/Data/tld.txt.gz | Bin 26403 -> 0 bytes .../Properties/Resources.Designer.cs | 20 -- shadowsocks-csharp/Properties/Resources.resx | 6 - shadowsocks-csharp/shadowsocks-csharp.csproj | 14 +- 6 files changed, 6 insertions(+), 208 deletions(-) delete mode 100644 shadowsocks-csharp/Data/builtin.txt.gz delete mode 100644 shadowsocks-csharp/Data/tld.txt.gz diff --git a/shadowsocks-csharp/Controller/GfwListUpdater.cs b/shadowsocks-csharp/Controller/GfwListUpdater.cs index c377efd2..2bebdcbf 100644 --- a/shadowsocks-csharp/Controller/GfwListUpdater.cs +++ b/shadowsocks-csharp/Controller/GfwListUpdater.cs @@ -90,180 +90,6 @@ namespace Shadowsocks.Controller return valid_lines.ToArray(); } - /* refer https://github.com/clowwindy/gfwlist2pac/blob/master/gfwlist2pac/main.py */ - public string[] GetDomains() - { - List lines = new List(GetValidLines()); - lines.AddRange(GetBuildIn()); - List domains = new List(lines.Count); - for (int i = 0; i < lines.Count; i++) - { - string line = lines[i]; - if (line.IndexOf(".*") >= 0) - continue; - if (line.StartsWith("http://")) - line = line.Substring(7); - else if (line.StartsWith("https://")) - line = line.Substring(8); - if (line.IndexOf("*") >= 0) - line = line.Replace("*", "/"); - if (line.StartsWith("||")) - while (line.StartsWith("||")) - line = line.Substring(2); - else if (line.StartsWith("|")) - line = line.TrimStart('|'); - else if (line.StartsWith(".")) - line = line.TrimStart('.'); - if (line.StartsWith("!")) - continue; - else if (line.StartsWith("[")) - continue; - else if (line.StartsWith("@")) - continue; /*ignore white list*/ - int pos = line.IndexOfAny(new char[] { '/' }); - if (pos >= 0) - line = line.Substring(0, pos); - if (line.Length > 0) - domains.Add(line); - } - return RemoveDuplicate(domains.ToArray()); - } - - /* refer https://github.com/clowwindy/gfwlist2pac/blob/master/gfwlist2pac/main.py */ - public string[] GetReducedDomains() - { - string[] domains = GetDomains(); - List new_domains = new List(domains.Length); - TldIndex tldIndex = GetTldIndex(); - - foreach (string domain in domains) - { - string last_root_domain = null; - int pos; - pos = domain.LastIndexOf('.'); - last_root_domain = domain.Substring(pos + 1); - if (!tldIndex.Contains(last_root_domain)) - continue; - while (pos > 0) - { - pos = domain.LastIndexOf('.', pos - 1); - last_root_domain = domain.Substring(pos + 1); - if (tldIndex.Contains(last_root_domain)) - continue; - else - break; - } - if (last_root_domain != null) - new_domains.Add(last_root_domain); - } - - return RemoveDuplicate(new_domains.ToArray()); - } - - private string[] RemoveDuplicate(string[] src) - { - List list = new List(src.Length); - Dictionary dic = new Dictionary(src.Length); - foreach (string s in src) - { - if (!dic.ContainsKey(s)) - { - dic.Add(s, s); - list.Add(s); - } - } - return list.ToArray(); - } - - private string[] GetTlds() - { - string[] tlds = null; - byte[] pacGZ = Resources.tld_txt; - byte[] buffer = new byte[1024]; - int n; - using (MemoryStream sb = new MemoryStream()) - { - using (GZipStream input = new GZipStream(new MemoryStream(pacGZ), - CompressionMode.Decompress, false)) - { - while ((n = input.Read(buffer, 0, buffer.Length)) > 0) - { - sb.Write(buffer, 0, n); - } - } - tlds = System.Text.Encoding.UTF8.GetString(sb.ToArray()) - .Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); - } - return tlds; - } - - private TldIndex GetTldIndex() - { - string[] tlds = GetTlds(); - TldIndex index = new TldIndex(); - foreach (string tld in tlds) - { - index.Add(tld); - } - return index; - } - - private string[] GetBuildIn() - { - string[] buildin = null; - byte[] builtinGZ = Resources.builtin_txt; - byte[] buffer = new byte[1024]; - int n; - using (MemoryStream sb = new MemoryStream()) - { - using (GZipStream input = new GZipStream(new MemoryStream(builtinGZ), - CompressionMode.Decompress, false)) - { - while ((n = input.Read(buffer, 0, buffer.Length)) > 0) - { - sb.Write(buffer, 0, n); - } - } - buildin = System.Text.Encoding.UTF8.GetString(sb.ToArray()) - .Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); - } - return buildin; - } - - public class TldIndex - { - List patterns = new List(); - IDictionary dic = new Dictionary(); - - public void Add(string tld) - { - if (string.IsNullOrEmpty(tld)) - return; - if (tld.IndexOfAny(new char[] { '*', '?' }) >= 0) - { - patterns.Add("^" + Regex.Escape(tld).Replace("\\*", ".*").Replace("\\?", ".") + "$"); - } - else if (!dic.ContainsKey(tld)) - { - dic.Add(tld, tld); - } - } - - public bool Contains(string tld) - { - if (dic.ContainsKey(tld)) - return true; - foreach (string pattern in patterns) - { - if (Regex.IsMatch(tld, pattern)) - return true; - } - return false; - } - - } - - } } diff --git a/shadowsocks-csharp/Data/builtin.txt.gz b/shadowsocks-csharp/Data/builtin.txt.gz deleted file mode 100644 index c846e6448a7ec005ee03576b0d40e751c51f85f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 104 zcmV-u0GIzCiwFp_d973c17dY)Y;2Z^2uw|s`?Jy! zbT$SQ)V{IPa`w~Jro}t6_%OX3%jRgWz`X#ZLdAL)>tU^Ssfl5|*0qyS8!hm`>4o-I;NQlsZ3enz(Fz`l}zzwVcjw zNi3?h(QXTYoYrA6c_k|E!|s-^*!XF;u6@1J{x9g-Smc2iOZ%AynHs3T>mGi7gEId!TF zp!Uk5y>irES!%EBZ7Vl7vCZvd-cIHr!b1%8kbQiJg&tzIhnVf5mU*1!nJ8~H+8K)3 z4{`zom47f8ZVRA(0n`P6`UOy1z&c^tjFl(EMlu}y=fbv>&DYD7}v|yk1*saOYLKddT|*W4NCCJ-koG}N0NgBBtl%6PbU<)raFIcD@l{}9SOP)C#0!sL z$~ZOzwdZE_a#r~hYbdi7Va`M zygasi#I+TOtejIV!0UQV+%rW$E=33@NCP)Xk!R0glhAUVMdqYQ+4C>eiPO0RNbZOUF>z2 zZtjSuL@V)lm3X{Ld|V|yt`f&bRS;gP7tpFEIx;^AZJ7>C6Vrw1N)&kl=xm9;a@*7s zy)$*JsVQdR)zTNV4}bBmKm6TqiTm+C|Nh7Ce#zXw|K`VU{)sr#5v?xV=PS{cdDk#aOdm|&h<1i) z#ndwOOnIzsB6?x|!fh|yYGD1uQ=VA!%Ht+pOX9JTXt-wLIt$O_O(@Ud&ZQ65bUiOJ zaLt?8ggh076{lE>Qv|d=vdCr%61i&ejqaheBi9Hej@1M!vW-d0pvKX zd`YqLvBk>A7KVyzV!l##vR10d_Y*+$z9$@fMZld}8Q-FBPhjxexAGMR(0WT?<-Gvl z4gu>#!2LQI(@7p?cox63 zQlNIL{S3Vry(XFK016N_TT-;%Mjz%91Vv5sp6LP%Z8lz8y&^Ji2VDlihc+`%bph z$wxE*Z4zL;=-M{a3?O@iSKse$whf`v(%hLIiqi+>_BcfON&{K1JJ#~)Y3w-D<_GH zlVrq6LPUV$Cvo0MoOcVKM*t;B0A8a+eJ4>L@ae_DXWdTj&SsMk58zsNcx6@qs7nBi z2Jp=_f9nKLUjPkF;Qsd?{_+3*>^H*wZRURQUq5{NORo2)fBpM!za{SXzx@~Ge*E>% zGlyXI9oN$UN8ERR{^NiAB9|i6X{mB3{qElaCkBHd31?{-Bdh0CZwyK3+2X4>6eDa2xsL)=|j3u_D@jFx+plZwzc%;5vB5hv=8^NR1_KUCcvzyZXk8EgHIs zp!CcIz(SynMcDR~AQGjmCb$!&?ExUTgVKk30L4Op7k2~r^x_A+Hn{7N`;@2*ARi$L z?n&Y^U><7KFRVr;59%jwJ;`zLa{9cSMSz1>1khcjGWd1Rp2f?d1&|l@;#s^LTCU%6 z=7T`TrNyfhzsj($GKtrd=M2bm2IR%30DMD~tBAV+u$|)R`(ORf z-+cdX-~Z}&e<{-M{%V)JJV(4lNiPA>%X7p_umn)LMj+1-FJ~TLD(uJd6T9sYBp9|pfV#=$%?dfBMKyNqkL_YlU6 zm5I%+B}uk#SnF*kMiVpEc#<$1hKxRmYWB7n105j|h}V*F5?o!zJnzI^6ErsODG5H0 zo#@&L`eE1kL8iGFQ7s{5#Jp7(DW96c*_`q8clJs7k#1PRhjpR&_i~7u(o|d%I-pRhMW0f%&qCnP?WM<$ZMkw?3B?i>QtRV^z<9CDhCC; zJMd=7=6KrC<4&4Mp$>W(q~#eGe6R~V_Y!fv%Mw;>bVR1zr_a zKWG&VEzxd~CDm{$=NT`Tsni@4i_S#6jkzlDkAp$uj>3@C8knokOksp`VbsG~OFcSX zbH~`P>$W?UjmW&hPehRYt8^HTR@z?nu+oWW(=deW^T0n$9w0pQXlUH6kZ06+CU}@N zKIsS=V#NxTxc)lFRC2PqVno{oE5h@1+2Zgx`vyavDfbIU-BA@P&VfaYRe)vA-r+cU z4e?p~tVC*S&LbL|Qd24t{aCL2vc((bABgiJi6^M7Lb8)NBkdi0p(x}|!CO5fwSp!d zV%l0e4`XJ~%|pkJ3KYY#DlB2rDd+;l>h(HV?LzENzfhk889(6|ZK|V2H`q?ve=AY0 zwF*(E1&(YcyqvDqE5M09wEhs}k0Mx**xm-`a&kb%Ig6oo#U>-25N!U!sLnxt?IQSaf9q0utg@L^S`>zp3d^k*AcfM>X79w+^*$9~rw6^qTRobyqp zI%=LpH}Sk(%w6}aN-3{(^a_LeJ?6BYYE%kMJ`p(R4@3vpK3@XSAS99#dtb71?~3eu z4R>--%jS+^Qk}$PX8O#fY|t&ysng+8OHHdnP!|!LLV3l)P*GU3^v6cKqLib8N4(Ne zf~K!Vp~-s*cFo+dUC)_5pDB0MV>inN&W(Vkz&5V=I?j0i#&BL^m1C7?j*2?3cGjfX zE8w(cE6zS`%o1|=MWh?&tTg{xPu zmGUbC+c;$vuBDEW%r!fGjk3wxO%Y9<*RLTl1xgc?mn{SlyRh9C( z&b+U)I#ydk0->hVG7I^DTvg+%K%YWrt!C3aDfU}?_1HJf0k5(zS6TN}F5p!bec``f zy~r2!i+pCk(C4qqc)G|(rHlM2#Ut z^Agd9C=Em(yooyI5zs*gM-)cC(06dI?~z(D(|eo*Vvs{cR-vR~mF@hi4>B`4bQqjj)a=cT>-rmf)`!w)qwfxr9jUXfXg$&O4hI>EqQ6iTV+T3JyWE*r z7WZ<6cf}2B#qlfK@Y7|N$hj=#`e^vn@gGwbDvIK}Vlmy5+?(SpIrt%ExH#+zRUMejypbCU<6LZDkyU5sn4njQ}2ozE4X_GL?~#9wV<-LZo$>1gfj;trbrT^$WqyABC(F_cg1ScpBRBxQYQ!g1uDCVNzH zo>R(cUCXKUcq$%N)Z-vUiod%iaA4Tw^@0rb(Cz(b=8=YJ3QLa2QOgDz+6tM>ScO!! z3Dv=fe4rnP^-_izpJjVLbWNEj9ldZ+(OuqUc#K^Nm)*(Rum z-ZU8QZps65CvP{J(x9xm7mX;kdXY*UUB1fD-6#(S!Yqwnlr%d*+kdc?;@ok z|KHfVG|Q44=YjkB7u?e9Tr+WG`ae;XQCU&>i0q8as#~=p9wIQHI5f@hVI)8eThrZW zVF;ib6v+#KXe{n%-{il>?^JPmp}kL?W^8pIA)Jf(5;8-PnULlEgYVKn+VRbKpEMN6jl zS%pZ7N+%oL2c?oVR0bEA{)+P|$*}f1<#)ZBI@>oA=f%_svh)&GSMs>jx|5~idQ}Zn z73(@njVH5RE`|)nwyt;-%tJ)f+O;o#Qjt&xTbMwVYc&h&FSFU2EC~9HRsk631;s-> z+=Pz<$o-m<76BCH+WH6R^a!0FAyGeD^dXA1^3#wxjhYMn=?USB1vbSH*`^yb8H(kSi3mMl2h{8u6P@NYgBKgZS2Mkaej1 zh;-G+4QgZ(118Fy<3#^WT$7&TIrl>+ZkBK#afV(YJ$K*H9 zhjkO^*lu`VODN`a6iZ5Io0&kZ1$$#E4948LMc7j3F;Mk@m9<8E(isU@t2$iJeUQAk z8r-I9d8i8NzkJPeUs6HTgVsex;(e+@S?lz#VXb(`PM!Rlsb%n%X3{i95ENo^`4h1tL}nQ)`uq6?|t8iNhIjaq9V z1dM z%Mbpx73!CVtOaT_?L)n>RlE&O?BW;v`Ul8AM6)X8Tqc5zij_$JMFD*(_L54CVxAJcBe3F`4xS{T6ETV5o9TNs$knZtR&vY2o# z3~QyK1j1wYpq{%%Kjd~@sw6#dd+9ea&vs$rI%qBOz{BDKj!rRQ`!qyFSCFfrjv}*e zkvaMV46w2^g8{Mv7R&(__P(;EkOArlRb<@HhqcO+=iWGR(6}eqBN?z=&1~}fSZE6@ za;Mn10#Sf@RgZnA84NBmdo`n9wOHg8i~@LFm^Z8mB*u)$?yJ1U#G|)H0hp@v+DDWF zL=m7A@&mH!c%)Q-MMl0E=nz}Q)=w9i&D78peNN$dsiCkmh~}InU@%r@Z3<#BD^ggQ zjZi$>YYLG?EUCSMQBq+%DP$Zla4f*eokQk5cRGsK;d$*71L0L19O8d`<8y+sqRu`h&6h8DNIT_PCivo zppLzUMCEB{@Ak%R5W5AA7+lxTLv+XzPuXgaN_d*q$K)O`*b277*uK|*eSFUjFJPnF z6p@`t|I`R}3U7dIaUYYxwE?36Q=>Dtjv87YYV~CH+hRJ=i2fm`C$_f6$GpLU*%W=E<-Pg7mA|)D+K0!!WGTbsR0VzYQ42Ya7tZ#PBx3tBhQ0Y{5lmHO7mh8W~s? z?FM57v;iGYYSz&BazY-_)i zCNi+hHsEpE3f^dL50FJNYsgUvZL4v_Tu=?L&EltN6R#&7^g@pjEj|tTy?dx^|De=- zXE)OKLaZJGfDN)$4}=`o?g4X;GV9l21Kj;4Rg>GkL{;7Stys)i;SQc!*dzEDAW6oiR2lORAr6LTgtzEcWw7b~ z&~k!ojv4(62^g_aZ3|M_Z%qb9AJa9v2gMm)P?0aH=f!Lr0gofrE%ewE0Hk4OU2=<+ zes$yZh14wmG;Dog;ceKchedWR)X;7FCQtHjAkTBrTX5UsQ@UPA9L78Cwr#I*0KdW3 z&C3sF!5Rm(bz-h$uRe6eS6G~zhDv!`H@4W#yKRjd2f;|YKussMS>e56hO{@cKr*{g z_+VQ7M&L!V!eceDux#N~@AJ-54WNY%Dg-P!>LBtaiGn0)&4BddiS4jTTY2DFCN`fn z(rx@;kE3R>e5Lqn8tNoysPZA*>L&mEM%>U*gV(B5Fo4cX;9ZZJ#f+We;}V@hZu)gu zgQ<8wVpUB;LBFx`Uf#^hJgDY7Q*+n}vc+n_5GA1bVPCx<3*`l%7U*@5Hy&RVE}BXi zs6G3-G9eFYzq4%rQ2>@eyar@J)>fVx!)G4~z&rCe84AQc#zP%?gm_&32#YklfG-uA zNDYl&L#fyDjBVqGS7w3X&XvNemw5Eo!TC4bh1_U*~)I2Y6 zXk=SzBd-Y5W#f4jPy^iFH89Awa0ShnHV>O3m2CnwKv~)b$2~WXEVrNx`fGHSF@y&F zCcG6>tO}6*39YL!HtBg!m4^K$$<&*{`m2y}!_Tg%kpRnJQ+XWOzJk`YX-#90x+?W) zV^0OeiRKEsZi2e4b#?HzxjXLICFLV9>pR;?D0HyviQV3X}m` zg~>!O>a_w#vq4~6)W9g6at&?*VzNfoO+mmQF`I3dyKn$G<00C44lt@ z$i8EgPC|GWBR80gkeMly*BV0amHE8IbA#|QNWre#aD>S0nMPJ;^%%?B+$$+$w5dTC zY+eUb0oRJvZuZDX+%}^4`&yS8R2n*`42+xd;C+Re^Vm+hs1Q9) zaTHEkY5`{1BNUgGGt4GM#on=zsVXsOZ2iu{iy0MCRppIT(%xvEw>V^;%n(+T<>XMA zKdW)HoRJDzA=CgMO$r*YVYuS4L2IxYavJfQp^W+Xm_7@FR-^7V&5$--J^u{}N>IxAZsE@Yss;;Y{8}__wTd_Boj9>yXId30rLmk<0s*p6$ z(IBb1>ozd&Hf*R%CGg&xhx}sr`;ZSdS?cg^+-EK30bJ^6c%$*Qpk-^tCg!^|1_khp zXeBFfKH-p2!t1zBfqvxy%K zPn9XYlLcXgjM!4TPFMoHz{%X>YPXq_GqCbu4K5 zv@M$G3z4QFT7@~;7+hg~`(mOsIK+`*% zp;%!?#hh6#Zl$U%3`q^>$E@QDhcddAO5H>Xf~R0=WUTTaP^%&tV5ZM1QyR!<=el(+6yVWjnHV8n!e=2?Y_1(Kjp2SI9A7uYs`Y^f<`iMl>PSDDtz ze9YEZL06;8U8a`e(RatuB_?DNHObYH`74FP=v^LK8VrIf+@h@FEAJyU?y=Xfc`|H0Sr_ zbwy1+2W2x&Wi>8YzH}=8Zyl z6sGuS)F@<=6|B-JHrN45OaVBZRV5>wWEP)Bwp9jrs5oqV`t|{e$65;p^XKdH=lM6lVycpY)U&ED(A{Xx#P`z;7j`dlS&)`AT(A{%f`M5fIDVT8ynxrV zC9Z8ZwJieUvoo~T)-e5j$@T*YjeR+Yb28&Q8Y>?x9HH6s_-VV8i?@5R<=w~_6 zSE0Od4C@^=h}i8W`PdTUH?QM5kUDO9)9uX`8Xs~fGqCge07ji&gAch8LsBEWDp0OH zF|Cy;2L&OYip7+GV!3BgJO=+n79^fE>((ts6;&bCTNs=UI$%tv?o9>E73*-eQvnWJ zzctHKiyGiALj%}VtpVP=q(%4nz@)U%jWX+a6W*T1%cS#Du<;a+p zs37bgDS*tz*NG^z9}2_u7!}Xs>N-LJxud+}AxdJhAq0%XQqAxmADo)voG z<>YnEcN-7uhCS(w@_J9Glfl;E_>g#XV`o=Kzj<-J*8&f%(z*@6);AA7T$AF!rOu2r9fE3db8W_;Qm99HXX8JlmKxAA7BYU}a1iR6?$%=3?hj0NLM> z5kKEbsje^#&gvAn^CqMtQ@;X&-sB4o!-C!Toqf=<26o#Zo%HH@e>e($~%*j7p~ zFQaaSi(OX%Ab6t&$nKM)W*Q@tNp2}o;Mw!8E`{*CO2yBv4k+HBvJFc5>(%qPuEH0- z2TemO_f{I1qXa4pbJ7}!(Lj^P_D1p#fRu zKuK#Xu*_@7?Hyl)p|N$q=df#Nj`P+EB%5TD{vj4;L16b*yu%2o0w`P)F9ED>rW8^^ zn3BOdvWBRW-xgTZ$`#^k-k+<0Wq=y$U>3HyDkNUCqM$2!Car4+JQd7*~8 zMci1k3$<-b9c(}z0HJkM8G`JcMYa_-x^`0*(my-|jP7+`1vp~wWW}FM&A*fkLP_h4 zH6&71fV{+_Z&7VsozO&TXsk<&jf->j7AqJ(Y_QqX1q0=tTBQQXD1FG#;>S&eqeVk8 zYGkd$zZqOqtO4HqH`WkOT(4VfEB1HUs-Y0G$Klm{?JRGHyBRrAYc#$pU$Mp$iy0T! zVEQUUCtOhHbjT;!=397aG`@}}9kgH5Nzm<+y#A^l%rYIAk+k8i06ZO2Sl(t*vpf*0 zp>7kRKb9W|S3*hE_%9`M`MQZ$>e=T$XyP zbiK1&$(J}x<~2|_31~4kDJ&oLL;+@i&6319J}{EFPNv$d0!B9Q3(s3|6fXu%=F?3R z8aUO!O{b>wGFzMZn+#DCFIGmCW3L{^S*FacnqxOJdC4RpxNSi(bMed9TO=lq!dhKU zCLV54H*JgZQ^0{2c=oHt;ym*MLRDX3JQ1jn6K?~of!kUGye*?bFvGPCC+>OCnC!%< z5LTNnWk4?!J_N*_N(0x}ToeWg6kWRkx8==y^r5XP43p7&TVt}WyoI8q zRN&bSn>g-u_@MkIPR}-3UCt!cqsUN!wi#XHC8Y`zmAr;JWdl#A*2p&Jm}-&D1~urn zVfpz%0MM5#zJ7H~cMfTcDy9N_yGfVdzT$ZE!&!Dj_zqYQfkj2-n5jWCobI$WZyi!o1atUM7s~IP~SbKz_ zu&jJPtZ>PA!z%^j&7PU> zxLgZ|j$X0YL8#b8g`Tdq$-rP_WLx6jh72%6qRpNXV zIrUdMar12@J1Vn_$=#-gqAtvkpA9BWG!jqZXN0ep&77>3aLDqdhnTm-wkeSbK<1mu zOROZGB&_i+mVrXtP{sD}64sJN-&LN5*iUJM=Y2HdQZ5q`_d@4FOSnJPVPTN+g0F6U zNLwNm1S!5%<+EUcYOLN{$0(BthzCw9g!c+nh%D;ss+mQ|@|QRaAK26gpZnedRx(^+ zscI@PZal7Gz74&?NG2?{z-jDMnvTM7pgYP>L9@72u#?&=Jns*yknJ0|9Us#L6-okR z+im9fQmkR?k?P5k0rG%u;=%UM#}IwkRK~!Pd)gKP7l7Eq8kNmro0!r?gB9j+u9poD zg|cvOU&j>g1|nP6K19xuY-A$D{k>bvKl&580@vWjy83Qr8(Quov;c>Am|cBSW{-BP z_|xXOY=LqWbTz!ERzaPSE9$PMMtPdMLS_@qQjPK#0IFojR^A$dp{sf1s^S;hRtX)U zdpCSYmso1tb#+vu%-AipFJFf)ThJ;X?#$HKHm~vO^a>fP$U{7!+1U+>qcQqxKzwh` zeN*O%)DWKuR{$nLS0rhs_(t@;cRPmfecyc)g67Rh9F`>1<(H6CCT zzIu}I)^6}epRxgMgNd14gKN7%^1hJ`I zGs~ve*>3>M!YX8tR*?930#9zh-ogW4(?2}=kK5iAJZ`wg*8IunXdN%16n2SU$jC?+ z#jaB?b7)T<>EIlP{Hw5Nrm{ToZ`Xf0+<=X ztv?OO2saarwtnv`KyForR;o~$maL)KKLjWBRUubHidiGk8mJ+hn;thQE?cB3RAy*v zC>o?S7`GW!APlP-xIY39*}|m$V_54;B^8gZ)DVxLH8hH{i97Z5lOUJlY@pdZgi4Zk zb{m9uf@>(#)kh*%H1`_Wq(Yi^-a;80FVh-KpK!AkilxK~h&Nr-5NeU5tKoQieGR6a zZyM$6fJFi;SekSNrEX1w$c@_|-Amp^((VAd>;~z!l@ZeTyaHtx#|FY7oNnupudCFM?C03TvRLe{tPuZ@Z=N;vn;0^^1^MRC z3iNTXQ-L(ruK--X#C-b3DPK=hBXYH9jlue@5dL=NxbcSbQ!>R;!O&A1NM`J7EZPPY z#@ZrYGqQQWo5m`P%u{SnuQ4C*jNYKUv%bRC{pQu%x=A!!{apCzqp*!nEi6OF)gIUG z0X!G+e?Z&#^`?i1X_BIPfSn4DVa2;>D=b~I7IkU$tTUS=cBzULf;&sL(AwG>lL6(E z>8J4U!0$H!$ldFQZJ~*Awt;53f~7|JQ*GPgP4f{U>4p3x?mw+DnWnBVxm>-17GCup zwkTR@4dEhmHc=~77~ER-68<1Izx%4QyRPLgSd)V(?yO0?<;;}@(a{S#W$sZ+oqoiS! z@_KYuk z)9=Le%)fyH+VkyH2$57zyI;FZll+5j42>uwakifQ(%81WMv^+@_RJpI8$C`z2!mTn z5*@>HMvuYzm9w$-F^MD_*Ijp$g1SjT-K6wxQeHPH>f5fn3vd_D zcfs%S&Rq)VF0bBqy`fYsugHNf=18*0#k=I-C2}S^!@*1BAb4{6y#Rahycf@V3286B z_PhQdz7B$e!!JKQ$eRaw^RVmPuJ45D_$%+^@LQdvvXh`XdApOh$qR`AUhoGvSG$MP zFAW@$=n-x^PjF6tu{}SYC9GKjnI+a)LY^hodDjO{ZV)(7pyF@Y_3N&`NDvnZ;v$bO z;`hP@O^$2u%i&!pHRCIOZ9Ky5r3!ngyI$&*oT)#+;b3o45I3|$I2`(ogCz`g@@kOU z8>G4hsUUKwz0fbWWe~#wnt*<}m6JO(6etH^B>*dLT8^0<1YjjlyQ6U|oN0E<4x-w~ zfzBC3nUMpXL(ak&ha(DZ5akE%1YkEvZ4OeKgVgjOl{$zN45;@bKf@Mta)(}C>cv|x zs)k*5IE-FG?2{TJ>UUoaq{~F}45Ehy(MseDUIO*Xh*$pBt z1N4l%8pLxDJV-zyHslP8_*%r*B99k&ypU-wk5|E0!B+`u&v#J00Lto?#dR3ymFifmVd%87h$_~cVzLsz(AZ)e4ytl z?wyrX^%kF(0tMmSjZhTLKgRq?8P%rx+98XH_YD(qm#MU~{dP;crLOY(3qi}U)O*7UudRm4ls zG(~fm%~62?+v!wNLZJVc^U~oG5}e}v!EHP&xFJx9)6(N&kIb%NaiivD(>wJT_ggOR zQVQp?iQu)%N#2{roc+D9?Wr+MVNYYBd#mV$Mh~+B=7a5h5xhOl;8F2uUNOr_rC_yl ziN%`rwJzwrwS8m9*7mC_>9SNYm$gK1=a#}zY-f9WQ+)4K6e>EmSGjWi-gw281UqUN zrCy0$PE&76L)??aQ0TCD#gRB_iOxVvI>2uIy#SVMPz!8sS2x-V1XJU|mGEar@oRP= z8-Bwce7_F+A~gHio8~~0SAca?6-EPw@W2MezebG|V0C@t#UQtygT{%tb5`A0B{O zd=8iton~{;Nj!O~eC&VD00hRFF`$+*N+z-!p}7=dOD}bB^P$w@!ChRBp|H|2g54jn zt0^Va<6?>Oxc7(L#TaWzS9rblp zX6YFYLQg1{qDHojM0k~JKMX6HavhHXw_X>O-eFp`tVI5V#ye|o9N63MzWqBTbe_a) zm?+KKXTh{c`|(0TS=b5E*D4wDGhV8*FwfTc@MNFJMz_By4Ks~3l^BuM!wPC<*KwI| zHY{4y0G1S2eJ61vX(3X|lG8cV&uD-W?}&8#H_E*$(t z86^!#dPxZ;^p+yA%{nVpW6_9?u=_N^Z7Ty?D<}h{;B9-Gpf56ydsnrkV0+!TY)=A6 z%Bl3GmQ=XM`JS8!YSlMt{F7~pqM|;(S0*UcGMP2n4z%M1S1AulycI-(fh#uVOP!s` z^>zv+4C=>T7e))KT~1>i-)pM`&AvXlz0+YI4GpGlg_{RW+jmws>9jI92hEZJUTm+U zBg3aKEm=vW^&K5lm9qK>DAAFoRw^K}>fKQn>=BGkNbh;EF0pSDF-$C622~Berq7fc2KSV3sBn<=jNK9bs-l7<0e~r zll0)^i4PkT6E_dY*4HMen?D9js}||Ur`mK4b5xnZ?SiBaN~mOL@Yqb3E0tVpxe`<< zxUo^{R5-I?X>eTzZGxdgu}i^7AM~!(2?oa2Ul|L!*}PL|m9WrTe;i6O&RE+h&(HRF zBqgB%EF$!FD8SYBr4Wf#!w%t;QaT@VQ#w-%rtZas5)>}lFTE78H)@?)X`NTw)OC1X zT^?WXK{Ts4tYDNrv{TKg^L7u5=rSs#FU&fY&XJj5hM`}}(1yWvJK@mdTZ@`m6?djC z+Z2{mBi2BzLYk5<;tKutJ;j(gsQTzp!qfrvMS+rWO(yH8*n6QbYIr8xrWKGaZu$po zY*dsU7pzz{?(6+}Q5o?!RBJB3em#)BDvxQoOoPZQJ|6cioa<=Wd5`&Q*R*2G@4P`3+&yEFX^Dc>i&JO z*bc5=42G<}rlboieQjy3*gVG5M8$w2VIbvNDsNB|8aT&Ux_si4G!Qr1;LC&)dVJSg z&1wT+@QtoDKd2{T>70le{93vZ;wiDDv%E&g=r4)%Wb0lFM`Z>xu_R=*sQ6Lyl@zRf zrJ`vVLkhic!4~x?PCb?ohl<^fuGIy!hEmGo#yU>?kyY$kF?!(*FG z^Q%z-H_u|16)MdbDcxX0%tbKc-5# z5k@_SvRMci>}yx%VhNxD>7v*$nW@wY0XJWUQlqm|>G4KCAAR2`wg}ufXIUCyIAPMT z05iVktAJan;ai!4^9Sm^J=tK>sfd6E-zk%l)DTX&VEov-qWVbCNw4HAV^FRZ2>fi@ zqP&D7JEBbSQQIt&L;f`xRaqZRWbz(M(k4S~le(g@0D9VzIO`QNglQ&04+R?4%EUxz zR*!;Q5|VgXhrSh_hA1==CfB@#(RjJW$$U{Sduns96}w3J79XznWk@r*W#Ji}T-g)p zLc3He4inF!Yio>=ptyTU5=l-Gb8uSgGvDJjq=JxX@I+qHl*tQ|Kv)FZ4oHEyriemZ zBTS4x+e3+C-S?_$*L|7gC9&Jv{0Opw30=*r!3>gtMHI!8O3>>{B%6&rWAk`f>27Tv5AKjw!^wFg6nD47ODcq+q@n2TvhhSiJ=VRx-`u-4*i5qjczP>Ih@`@?*QA3@Fv{z86 zG2*V)m2}lZjmT22H(fw^K!X4bFSbwWF02B>27Mw$p=B|`FUPojIY`f$#%d7`)nI=254ls%t7yV4br(SWL4hrr#@bp7^>Ks^*`V@yG4tVyIOZ zri=!~I6Lc!#;~0INqMFwd-A<{VZxkNH5pE$nPq8J!w%GNixCybt0kp&Qj2?p&80^V z7k9r~)dsItw}M-vjKW2&DKCeduEicUlW)+fooLmrDgZpF>u<5I%R~e*i?UsplQpV& zXiFb-XYHg6y=Ake4YO(Vg@PajKr+dM14hFHe52n>8owLa+1(0jqH;Jui+n z*Tv+rTrZ`Ut5-TN(B3&HWZF2bfiAcssx2Iivx}vDaWh%*B_+f!Yw6>eEo+>Y-tfF= z$=QVrOFMQb{RCZ&iu{UU>FCtMxsbe%9%l*;1>+CbH`SsSgKS3BFn7G8W{(tg0jM>q zj9*>f^se-BFRgi9ssGR;!YkR-;pC^pYa9E<&y*F9gJ*+V6t4z$cfXw(6(rZ*&y4_$l<))Vh(QDL3Q8#4)k8b zpA)##6UqK)I78&HUvi_(F=8hgejEN>1Ad3s_&wl?S$du61Adnaey`%k?;St!@;gXS zZHi+z#!YM^b`>HQyYVRgj+`fQFm@wnCi|2eYzicYRS3B>OlH55{v!=-PU0Qf!Ez|F zU2T*-Y~)DZWFzk=d*8^x6z?c|-$vQz28WZ64ZWk=js0#<4|^IF?v5vl-R~|fJI5Qf z?0~%>%%PnpCe|-eu9?YP0mU2d@XWCn=uNndo#03>WkFI_$OtEbbQXS3_}#A@35R*& z08UJkx&1Vl8!qXkplAG!{CMQh{gHne@uBx{XNmtPso>uWOpKW$T{zfD*vTR_3dHY6jotvp|vOxrpS{(I+OwXR*|l|IC6yk=6of9NAjA@*FjCpA4Yp(T zQqXHRi!z06DsE~7L{fn56UopPdHbe7WJ=`(U<93-7X%|Fhp3ny?0Uo^UepNKD3a=& z7*YIts*ShrE)fg4{`cl|IGD@om#B5#zPka;uotm}&f`ki+d?@r$B53Ps^%C(p^Yo3 zYu>&qG{%$BjREl{4%z9nbD!G0(6P-UF3i20I;U7lWaM3{;Jwl=`!flE6cdxFoX&P8 z^(!U0Kd-Gs&A0QjD=HA%O`GN%i{t%<{x|2h?=!nL_AK(e_no{BaZ7D4D(6ZuGjnTG z-R^H)E>6(|`?nt?%D;lil*D&W>8W_6b8d1-oLt2_D#0aDsj~ebEron1$}Fn>-@d=p z(y$c<#W(&U0^Q7J7^LQiq}<0!Xl_wDiHKQm_|9PvC=aHrYoe1QCORak08I@dk*OV6 zr#dlg*olQkl}^2!baSYOm=wE6e+f51mn0ydu*W&kZ{Ph-^e?h!`@{`&9;5H0DV-;^ z#*V{1uB2T%A4wNFF_~<0mdB#-k1ojrs8}RNx16O>9M7h=k+PD_V{dZrOZ1Xu>)6|_ zv$@2G%_WBJ+r$^d5pg9ev5$E_QXdrMgu3mNF=`CrdT9$pBxxcthor;y{9OBuhJ7-lNz&Jm0a3ViUd3Ib^>Q)|HZe1WJ>`*-vc-Y+ITIpRC$k?!Ku&Mp&7_$I zm%vP-&CW+FhAcQkoQbte9*2SSvqEs|cO+tyB`RBnCdA@0-RS$(cgYy&{?i{S9{Y<~ zxKsDchbk5sdypZKO^XxiEfXP9AvN9;cYN5-kJdT+A(RJbR|ARI3y-*vijF*`PE$c{ zk;Zd6^OmYBhM}0uQqZuZA~TP<=Q^P{1YVQ& zI;~M|PnV=2PB+XV<_tX};m?>^nuDq``M2dr-p#FmoRy<~B6|(h_|T zQQno#k)Npiz0UIa^CM$jI86dfrLKzrEQ<iOnS2yiw0D*XnIT1DFd9wTrM`qmkW7#SVnOeE9Nv% z&l!DmNon=ih8wA>BOM_SF8aA^@E_$?_)aQaRnTo@b-VfqT zQ!JU&G;!BVMtdfsw2(W-Sk~AyiHLQK?R@d!ZET~cfRw^@mv)UspPprliJC$tJx<2N z`XI3_jK>L%Xr1*?xrOsfej!o=nd))8ZlXL6l;fDxVZ~*ziHfy5n502?>);%zF{hV8 z;(CoSWHm%o@?rba8X^^AwS9_|8cYh7TG;!E_SDBompphHOD3A^&sge2F4V!mE=lot zHRsTXx*mMr#85&Wjtp_0gxp*lG;;4Ru|Nuq(HganX>juB-HIR0fMI`ZCh}2t@Dxm*jtN$p^g2>6+?q&IpU|4@g9T*7LSKs8ElZ|JCZ0_0 zK$$&a^JrqcdZNhANSDC6q(mOsk^u5b`ApI#tdm}8Hi;nh7Ls>1M%GJ?YAM-Gw%bT8 zF3Kf6Uu=fofQe7&H4f5udD`JkCP`t$2w<|N=|rZ}e4?Mb#o2AOzF6jgd;)R6H-LP%#lLra)U`@rI~CG zQEo5>O)@NI!(TQd!j>6JqQ^Mj#bi{KLZ?WwxrohA$v0alPIMJ-ib}eTERiUZF8G8{ zWisVOJz$YnW?bf5+e#R`L>E)__5;QElx^w_Qj*Bfj`Biiq5Uk%h`>bo5a&+cM8e;? z6w8}T`dd;qKr?Mbqmr@~BA7D26&$wocM(oHDWqAiP-eXXD^qzol-W}B(e|ZbMSSqW zs6w9LPy&swn~Y>@BTfS+Qpzoq3Cv*TDeS!nL@=u~Zz8fW7e{~rhm;~AvkD+mEH3r# z!S!boOCza28YHiJ3R*}Poisb`rsWbRraKxRUt&_3PKhPov&_p2Db_dniKX71sS_2- z$GHz2kx7aH19ZjU_(6oK9$&w15O{7>HY5yGP>DJiPW&;oJBUNlbY-CANNaTo86Go=&BQ10F!uYO>;rRK< z<_U4IO(qJKOTd%SQ_SWvz7#5fH%ZGHbD8awWWkV|ivp(^5`D4GMpJIF*lmiuNiR!+wG<4#&%G-6=9osZ@Nwh4} zoXJSd3w1a<*O+mo=$t(D@l_IMh8c@sj$oCC~ej$2RqJguW@v#Wrf6IW^UYN zVTo>H=@GwZ5hu@4gA#R-IWJITFG(Scd8odSpk-#IQP-F|LE+G1g^R+yF2Tu+&&4!S zRv@IP4(4>Qd3ovo`XkJM7ye?p)C=&YA0Z@sa&wcRBsV@05-?G1D{==JY}?o`UF<^UxY0wd?HT3Hr%^6@8s)O5 zQSO5Rx8mhHsc7s!@p4C+m;2MaT&?E$Obt7-QNs@$h?jfVJnx~7+-~BFm?pz}aVFW$ zGRbxpasuUOlIyl6xyEV2z8HRH_8tzR!ZUeqlG~XkE8$teEpH2%n%<#VF+o#f$3e4oV6i8D$Ldp+?TThmEmIqe*NCb__AlAD_*xw&bQ>zv3r z8h(ZfnB-QjNp5vwCvu%Qqd1c|0S?y~xl_M0G(3jWQlY|K26k{gBDoxaTnjbHwNT`= zxWtf&z_5hY;}bkRyN>6?LGi&UhWH8RrN;q}c|DvwP6IgxBz(?Xznc#H>#xqRcix;s zE)EjKEse}^kT~oO2m9RMV$zZc5ej4GWDJSta_)EQ^;M#VOtqP!^d}m-f~nD6eFh3OCu+*rWD>=KK?OW>iBNNh z1!&fGC6njMRb=+gJhfQT0%w~$^-N5W1=`%C7EMp3Y40X+H&|D~@Mh#lhWp`e;yb>F z!lbu2?)|MH*`de6EK*?yymI5{4tENuxkoZ^GMj#FJ?Hr{1 z@vZr5xZ6mRq)WrZ*_K2}+J>3>G%5JeP7`;_wn2lSxXLNkS*gwePq^Pfp5kij_P0=42!^B6~xFTcP_dSKvfC zX1*5^gECPmp7c-lHLuVUSE27DbhDKHM5BW%mlGy31|hEIiOP@Z+a8A(K#|DbB>;SZ zr4!9`7LlWbHNC_Xa1)#m>l7(Z!?ToQoF|}?eoFE}qH{>$;**ss(cpOo3-o$5eaG4@ zTwRmoh-eb8q!5T3{d&e>57CU&P7m=B(YGj>IKfclcxk-|3O0^&dY9YbbQ5*7NS#sK zd$fX+F!SIdJcoOfkgMT5TrG7oLXots9QU>NhdvYLDzRLVZ0H|hNc1J8*O@(myi;j# zr3wS1h=~}(J*fi__ax=5$Q(JN6o1>?MwdD(sSjM_!urW&JusUj9{xU>oDzw!^OKRD zVIt#1?m;An44g@>L7e1L#7S;!B?m{#NYbQV6&q<1i)j)wY7#Sw925dv7(J7iTvIf; z@Fq6S!gE-nrz2e0M9kqD!&h+kG%A35n1nyC!gE>9UNS%Po)C5?xpZ-oOBcxrD8E1! zgNMTjmn#@2xsVahf<#D$OI?L=J{G>Om`oU334YtfiYVtS?Vw)nA6eCB~D(j|A& zu*mdG9jk=vXkh6tp2_>kUIfJkA~>FMV&*4kS7OOf7;c?QG(K#_)PQT=y2#9YCl8Z% zNlbS*acG?#>>T5wvZ5yDV|2uIhR;hfb79BLUI-k7ZG{?~xajBx@jaV>&lb!vq;(%7 zrA%i^p7n0BG1s`WzLCfLf#>KxNzsF(W(A6docjh+MPb^rvzQBCWGaljLJ3^CeJqBo`ioEt@7Cdn7HLvT z%GDBZXGFNk!-%aSL<@;5yBEt+vD{Yd^&@I+hUlzwY!kTa^=WOmE-qv*yUtult};7F zi(>lX*+>WLsm-;R?H0zP7h`h9cMMKU&m8CFmLwM+s*JJX?(|*=8i(}eA`F>ae6x6} zuiJV*js7W>c+><#61Tl^odk0ju5gYx@EsOuUonPm2<$xZ%>_|}QLLhFy7j)t%}64$ zql;-BZi@>dcHPN00*>8Xj%g>hjX~n3a1f z!d9vrx*rv0B@eS41e)dC&n%~dW%N0r_Z{TA?;zKGlN02+?;v-22f6h-$bH{I?)xSuG~%m~ z$BjI0|Wrs z_~8c*Km3UF9d3(?n5T zi;f)5gP3_i>^nAOakJ=TK?ma(SacxSv;jfQQI7frIpP;CJV_Pg%pN&2Wb(2LuO*(> z)O^LG7w(z^0+4q?ZZgTL_nd2n~Nh7EA@_T^;l|T*>NDkYRa4n-WAcKRHk;4jy zTuj@6?RJaQ`hv+RiG=4z7n$;0WCC=NFHkHpO}fa}CKj1HC1(-wAP2X|l5<4nWHdsK zqejNg(!-^e#ExZ$V;MyaEJ>1xNRwm>%Utw4k8^Z`I4hh1H&d}sT$LWZ^6jqppy9~l z$5FzRbjscDiwNf;!nw%3@QWP8BWJ<4K9+g+J6wWsikT^ywA(E#$cqT_A|knnfRe+N zx5RucJce3iAi{6Z=z-j`-v_vSvXI<39SB4wpo!vRs|c6tRhq*hEd_5}c8hcui}WFj z^bL!28;kTPi<~4S$2IJw<-q7gPA2*7scRtj%fJ88fBlCaGWB;~|MJIw0_yWW{ev&w z|30XN<$Ph8U+ye~_xR}rA|$K#9YU7xQNZDx;bRr}g@E7jnGX7;UVwgA>9|(ul~(Do zRz5@} z+M95bDmr>b+!nzk0m%uIBb&w`C(g=|e=#_C;;SlMe5pIhFAabswM_a*%Kdmu4z?$I zC3Nmq_#5#z&Q<5EyaFplnMT+SGVjFPr~jd|$B*F}5} zjM2!2hB1PS4z#4eH}Y$PNrX^S&%fAYePLjB7m^4N{xW(dIE1k0UrUx6UzZ@^m3afwMF*vbM~k|HdyhpcUtf@!K+vf{?y`l}>)e5#zO^ADC!F z{La1?N3L6c>fN3%YX){k6Crm%X30%AgC$Q-`5qO1Y9%C=Rk(d%mrNI&>Bns<#I6A% z{)(I<^^W9VS)Cld>X6(qjBrfHzdirX{L7DNP(i;3eg#>l-vz(TfqyLr%x|^qr(N-T z;s_lhPGV(0j^pY$?6lMvj36&k0<^;^Y6gF z7yji~JU{iEN6)#NIL3+Tnd1r^X5cUvj(2&D-<4y$u%C<2{O(nL8NYH|SB|Uu7r*yP zN|UKRQ*)+5rtXQ75@yP0YDtuoHd8iH#~gB--<8q_LwK(>zk=QQ*)+5rtXQ7N@vPvYDtvTJ5x4M#~gB--<7%tC6y1# z<)>2pOyze)06=v)Rb9?UpWht{l|vbFT813kki#2tK876fkaINV9E~}=F^4Dez|=WY zL#8g7$|?2v4WG;2=MtZC>Zgp&In5!bCFHa$IUgb&pw^uFOMdrKupGy=P}!fz#zfwW zIz610S+Uezdom3Qu*$%6m9Z;1E!p#{3|dzi!mcuCC1+&=ewB~Kt@0tcRR*u*T*xMp z$)1bM@?2z==OR---ipaFN|C7ummZk;xNs zFc>B0(o&DfVaW#&$q`*D-sM|~zYi$NJV@j`NTKb*>^wtnEt-E zd;Z{Wowo#$pX~nI2Y>O!n;-6;-~0aad!IbN_tEov@9jSO@c;RQ!={iw`u_7rpFDr`(ep>| zJ%9X1yXWtH|M`2LJb&+_=kL9@d;akI&mVsB{NYE>9}@Gy_c;w8J%2#V55DpIgAbp7 z_(#t_c<=cKKY#wg51)VV2_@t|{~M(ESAT#seXEdP=h%Ko%>VbN-}!(4?)$s{``e#> z^yxqBp8x)5&wu~b=fD5U=YRNP3G+wKKllp{_D`RG_)UJ5vhx#q`NQ3(|M=-ApZ<)p zN7%PM`&;_^?(VZ6qm(GzUwwrl`Py zpx>`P|KKB{ch5im`tzGVe}41tcb|RlSKs{AAAI(=yU+jlqc6Ymf57?T z$Di!}>oislzz z0r88k?mqjEpMChNuTeU`c=P6qZ~pP_*Z=sHU%&ZFe3Hn{1|P3kaLE^Gg!Y6Ts=Gix zy$#q;hzSiM{LQq~!q$1knN=M9BH>IQh9H^mZ2SlXRu~rVcb|Xf!!LjGbBN>@fA)

O#HUfBW_yeE#i! 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 - /// Looks up a localized resource of type System.Byte[]. - /// - internal static byte[] builtin_txt { - get { - object obj = ResourceManager.GetObject("builtin_txt", resourceCulture); - return ((byte[])(obj)); - } - } - ///

/// Looks up a localized string similar to Shadowsocks=Shadowsocks ///Enable=启用代理 @@ -205,15 +195,5 @@ namespace Shadowsocks.Properties { return ((System.Drawing.Bitmap)(obj)); } } - - /// - /// Looks up a localized resource of type System.Byte[]. - /// - internal static byte[] tld_txt { - get { - object obj = ResourceManager.GetObject("tld_txt", resourceCulture); - return ((byte[])(obj)); - } - } } } diff --git a/shadowsocks-csharp/Properties/Resources.resx b/shadowsocks-csharp/Properties/Resources.resx index 24d1b168..ee5f98ea 100755 --- a/shadowsocks-csharp/Properties/Resources.resx +++ b/shadowsocks-csharp/Properties/Resources.resx @@ -121,9 +121,6 @@ ..\Data\abp.js.gz;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - ..\Data\builtin.txt.gz;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - ..\data\cn.txt;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8 @@ -151,7 +148,4 @@ ..\Resources\ssw128.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Data\tld.txt.gz;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - \ No newline at end of file diff --git a/shadowsocks-csharp/shadowsocks-csharp.csproj b/shadowsocks-csharp/shadowsocks-csharp.csproj index 314ea6a3..1848edd9 100755 --- a/shadowsocks-csharp/shadowsocks-csharp.csproj +++ b/shadowsocks-csharp/shadowsocks-csharp.csproj @@ -102,6 +102,11 @@ + + True + True + Resources.resx + Form @@ -128,14 +133,9 @@ ResXFileCodeGenerator - Resources.Designer.cs Designer + Resources.Designer.cs - - True - Resources.resx - True - QRCodeForm.cs @@ -144,13 +144,11 @@ Designer - -