From d1ade9a977e59ed41d4ba4ceb10f6bf99bd586d4 Mon Sep 17 00:00:00 2001 From: Davide De Rosa Date: Fri, 15 May 2020 13:31:48 +0200 Subject: [PATCH] Add TorGuard provider --- CHANGELOG.md | 6 +++++ Passepartout-iOS/Global/SwiftGen+Assets.swift | 2 ++ .../Global/SwiftGen+Strings.swift | 4 ++++ .../torguard.imageset/Contents.json | 22 ++++++++++++++++++ .../torguard.imageset/torguard@2x.png | Bin 0 -> 4448 bytes .../torguard.imageset/torguard@3x.png | Bin 0 -> 7471 bytes README.md | 2 ++ Submodules/API | 2 +- Submodules/Core | 2 +- fastlane/metadata/de-DE/description.txt | 1 + fastlane/metadata/el/description.txt | 1 + fastlane/metadata/en-US/description.txt | 1 + fastlane/metadata/es-MX/description.txt | 1 + fastlane/metadata/fr-FR/description.txt | 1 + fastlane/metadata/it/description.txt | 1 + fastlane/metadata/nl-NL/description.txt | 1 + fastlane/metadata/pl/description.txt | 1 + fastlane/metadata/pt-BR/description.txt | 1 + fastlane/metadata/ru/description.txt | 1 + fastlane/metadata/sv/description.txt | 1 + 20 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 Passepartout-iOS/Providers.xcassets/torguard.imageset/Contents.json create mode 100644 Passepartout-iOS/Providers.xcassets/torguard.imageset/torguard@2x.png create mode 100644 Passepartout-iOS/Providers.xcassets/torguard.imageset/torguard@3x.png mode change 100755 => 100644 fastlane/metadata/fr-FR/description.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index 36d0aec7..14e14396 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Added + +- TorGuard provider (Jorrit Visser). [api-source#5](https://github.com/passepartoutvpn/api-source/issues/5) + ## 1.11.2 (2020-05-12) ### Changed diff --git a/Passepartout-iOS/Global/SwiftGen+Assets.swift b/Passepartout-iOS/Global/SwiftGen+Assets.swift index 5f14a848..ff3155d8 100644 --- a/Passepartout-iOS/Global/SwiftGen+Assets.swift +++ b/Passepartout-iOS/Global/SwiftGen+Assets.swift @@ -281,11 +281,13 @@ internal enum Asset { internal static let zw = ImageAsset(name: "zw") } internal enum Providers { + internal static let hideme = ImageAsset(name: "hideme") internal static let mullvad = ImageAsset(name: "mullvad") internal static let nordvpn = ImageAsset(name: "nordvpn") internal static let pia = ImageAsset(name: "pia") internal static let placeholder = ImageAsset(name: "placeholder") internal static let protonvpn = ImageAsset(name: "protonvpn") + internal static let torguard = ImageAsset(name: "torguard") internal static let tunnelbear = ImageAsset(name: "tunnelbear") internal static let vyprvpn = ImageAsset(name: "vyprvpn") internal static let windscribe = ImageAsset(name: "windscribe") diff --git a/Passepartout-iOS/Global/SwiftGen+Strings.swift b/Passepartout-iOS/Global/SwiftGen+Strings.swift index 77b48324..abd61913 100644 --- a/Passepartout-iOS/Global/SwiftGen+Strings.swift +++ b/Passepartout-iOS/Global/SwiftGen+Strings.swift @@ -299,6 +299,10 @@ internal enum L10n { internal static func protonvpn(_ p1: String) -> String { return L10n.tr("Core", "account.sections.guidance.footer.infrastructure.protonvpn", p1) } + /// Use your %@ service credentials, which may differ from website credentials. + internal static func torguard(_ p1: String) -> String { + return L10n.tr("Core", "account.sections.guidance.footer.infrastructure.torguard", p1) + } /// Use your %@ website credentials. Your username is usually your e-mail. internal static func tunnelbear(_ p1: String) -> String { return L10n.tr("Core", "account.sections.guidance.footer.infrastructure.tunnelbear", p1) diff --git a/Passepartout-iOS/Providers.xcassets/torguard.imageset/Contents.json b/Passepartout-iOS/Providers.xcassets/torguard.imageset/Contents.json new file mode 100644 index 00000000..69d95d66 --- /dev/null +++ b/Passepartout-iOS/Providers.xcassets/torguard.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "torguard@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "torguard@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Passepartout-iOS/Providers.xcassets/torguard.imageset/torguard@2x.png b/Passepartout-iOS/Providers.xcassets/torguard.imageset/torguard@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..32710a2d7e55a9bbceab654d0b2ba069e6cdf1d6 GIT binary patch literal 4448 zcmV-m5ufgfP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 zVoOIv0RI600RN!9r;`8x00(qQO+^Rf1rG}zGqy(EIsgC=WJyFpRA}D4n|YAj)p5r^ z{eCmEyR-LdwbJU^l>`!pqWb_t1SU=#LqR|UY%YUC;!3$3m&>tZg8>@^!Va_j~Vk zf4lqj>(_5q_z>yQH$(n63rO)!0_eoA^ZHru>jSHkADWEi*j5H~XO)j4cUA%1YLMwb z8!#849cTb*{GKsj2v%UChVJ`CXJ1^Ce&RRtC^fIAIg1#lU#7IZPt0@MRl z6HFBchJkayd%zB08}K$bXEUbG08jk?0^YczIx|oKBkCwD0j>xA1n?(5z$tLac*-!a z59EJz7(a8gT80H=Z@7fqqYfJ0@igQ53~->j{r7rarNZMsp!` zp&5jNHK;1_WR&6LX@)q+aA*%>)rYWV4AciM6$d>9o&mlHoJ9q!;lV40$8`)$Agwot zN-gNaAh&A;VAGLVMG-ed{pbp2rmm%2gf+X6A60Gp5Vm5 z7W%4x$!PUK53E+KUjc3h27#{v(TS8bZpKIc(Bv@_5!8MWc${>GRFc1DJ{`A_wviiI z+;B7PGdhSyhw1O{CmM~CN?A~UI}sre3{YQR$Mm)~f`JgnPVeVX;yEI9o3SSDyLrVF z2ksNm@2QHa3J(=nId8Uyf8R_nXi0hb%%1~42HGbEH~zVkYG!uyZkD!hAQ%eLb>alk z=qRX?WQ4f%lagUjA*c;h(Mo_?#0ZT|4a}K6m&iar?+iRmZ~cp&iwo#q9alo1U70CEqAP$Y5+;=LlzKgM$OKPMc1R+d(Ax9?3ut`J023 zYjZ&&ShgaK%3@Q|BilCa?AP}FyJm&^N!5U7VJ`D;H z^A-0UMCd zV$2fH3$g|?01v;`>bZ^U2r74?(m4)j?u3O3u+T8JnwbrY>Fw=7Ekx;}ukL5qPz0<2 zTd1V`hC0~VUe1JHU`+c-B$7lTXPH&IhH!i_nmL0Om!U}OMCDFZ&ley5eRCGDraOsV zh{{d*19Lo}Xah;r(rVU_N?BsD7?u?0LVqMx)$LieLLo&1Bx{e;?`%bYp`jr{PAyHT zRbT@p6_!<;FSCLwH=%N&roAH#STYp~xfW#MI2S1?Cp&V% z;o;X>31AI47T^+;72|ih(xfUF8zz;sSnHkCk|u&m3MrN;l}lb!P?IES1`r^bOyY>a zm@uj`K_XI6Ps``K0=NX&28Mtb>nA?48fdAkq?n$Vj8)?CII7-QE8aevpB88~78KP( zE?>ox^yab_H<3g_PLAbD>#TrUfYrb@#A4JMuqKGg<*3Ny+%LP1Rr5Kig0&V^#SkQD zY6(aUV6fIjt<7`Mae*fXfvRSnj}KH71gvpQP`O-Hf>0j4Vou{q<~FUNHN24OU^7-z49CyVGkk#K1Ka3}9>lc?L`*)XqU%UXxO9nO9$gAF zEA$3@VOxOK?A($wiI$vQ3&4tj#qH}^bkV)cZd^gg2^Sqc9Pj0WzRm3D`XOhA_ajma zu;xF@1f*PrcAU9QYp4rNCpbEf_&}Kc{(eT|V|i)qL^SSA_KZ>GV#EvVKI;~`BD+zw6L6Vu z`B@($>7X?Pxa6I(i<>-sE6^P7U{2F=7PekRef9K`ia9X)G+W8m4t&WjKur=y?eZICa{&80qh5@Uc9^7U~#>9|EMaVKpm^+ zeTvncx6xADQNq1EIuQFIzuNX=KGyynF6qpIRZ<*|{ffi=+gMQhF&4CZ1jm$K7PX;P zriB+U8Xv&gB!bDy8A?#h$C$BjH!y&ASzW|RfGPnK=9)!c;gM zz3=hn@n?&yY03NWv7O5StOFo>fi*=ftV%dIoz)$;;+UddpGTG?Zw~(phqhThf6eCz z1dVUm0bcF?3P*Qa?zsHhd04E`ra40sQMl{I_G7S zuzm1x-hTaku3z#9EiGBFJ*l0%^8VK_kq)ky_4%@3(^L~`Vs*#u1f6iHyuqr<4prm2 zu7fd>N+;$!QRyi<(0bcK(5WgbgeAp+=+kt+UB~*>H)Nh4O}@-)+n?pKX5k#rCCjv(pWvqJDzIM#Hq)}hH+esX0wxnDBCBh6S=Ni z(S81qJm-qb>GY0>ftCrtNnSfuE zLV-G}1C8j!wX^LWHUTS`M{j=5E2FB!P zyN18R{;g-ZZsnIVN|*}u4IO51^bCSiEZ5(!uvya>DY$u1H78W%SyZ&Jl9;rkY(4m& zjKt1O$ULc0dSeH$kv7_AdMRR`-Oj;x-(_*@CunH&4hP-t7XGmJ87{8+TNW%_FlDeQ zH_ltfUScdUQp}YVE*0gJfA>Fh^L0JV_`08x`ocpdAK&ouzQNpvmw^a`8#IJoJKMgr=rtJ4$$7ABkVfz z0{c$>f}|Vw_~%bC20V$%QO~S42SpBj{lAu^3vvy>kAMxum|E-NNHtC2+0<9JV*E{C zMX}Ze^=|hSMb*VxaGZdj^jTb+!Vth1GbykDaW_h2w2N3Gf{5hT!ZM^U0-r$`Le%$Q z@-3WIfr2$dz$Uz(6D}(3VkCf)3g)gS;DUHkU9s)im=rij7DCV(G?$7HwZui^r zLJ#Y2o|1aJyceFP+!S5C>v&-1I;>AF*iCWX)P$4{zdTv}ovkAwUNh(+MBPvwIx z3OEp)nW}!+ZXqHu0afQV}z6o zqj?Te1kMJ<)OF+uwqinikPg#|hrTc%fvf#eQEJOJk@KpEm}) z4EimM?#Ug#>CWAgoT?n~r&ndgRO$rT0DM8cOJ|c?Xvluo@=Pj|!h*gH{2RiHpqZZx zZ@TO4iZM*uCine#Ri^qYD5#mEa5Hclu$-JbszL>%Pc6k1lS}!}H4f}Xcn)|0>`Bt8 zq`;=T-kOyBQ*uIp`=81$e<{oau14hs;0j0My*2}KGxEwB~QpDFxKjOP8SZquiC zO-b%40|vP7sUkH$YeI-F09N7^1()GnRW<{)z7o>AgX@Ef0ukU8qI-ayz+0#s!PtbP zRhkBS_te0iH{cBLAFVC*y3PmNiuVUwwPa6WV?NkkpdW}3X&#{^d**h?{?*c^dv>0; ztRD*CNr116QUM60K$OQn1dzG(zgpV5UJ+$|f&c&jC3HntbYx+4WjbSWWnpw>05UK# zFfA}OEipAzF)=zbFgi0eD=;uRFfhs`i>m+t03~!qSaf7zbY(hiZ)9m^c>ppnGB7PL mH7zkUR539+GcY004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 zVoOIv0RI600RN!9r;`8x00(qQO+^Rf1rG}zF4aJ>;{X60Gf6~2RCwCWoq2p*N0slt z=iXk_T3eDOOY$1oj-A9y_6-tZk^n;pkPT)6OvsygFu?oFXW-57fou@laTu8Oy?HQi z9>Y2e5GJgNL&B29iAfyWiGwZg`zG1iyIZYZ?mh31d%M-GzP+d=JDks_q`rOYR-N;! zQ>RXys#`7m0n)my{%Jk`z-6g7TZ96VH=BWVTS|bcKobzb2bh52{s*uC8?X@4Xz6<1 zZ1B%H(Cc0eIJN5J+6AzKK&zX&fNq3N_jAZiHSPoBK-^6yfm6Ui_wxWSfK8&9gb!SP zZh=2%K(Bi>h@*f8WYo{Z#AY_I7<3hI6>uTY1~dY7OlWX9Ni38YFbbSO=mB0q*$(Un z`fz%IO9~h~aC!2a$bZ&>Ubi`zhpnr*t-vL~%?LLDi-0g?K`mn+3dsV7fdjyEz^{PU zAUFW|0H1BZ&l=F{HrHUIh-)Vd14ET1z1>LO6E9Mg%|?0QV^R$H4iLV;Ty^!gIoPL4#PpUf>77w^5FOWQURmuADirXAEcu zD;D3dkQB$BOEwkfO?VT0Oa9qtFOsvhjB!C3pdIxuXo4G?X{F%$m-=qwA= zIq}}7-AJcU{ss6N$WX>`KX_HVDsHM0dF`fp_h|*_LRbTOH_puM>;iRe8z~O*pTI*n zGfsf2z@9SOlR#b!tjBTPjLK@PLeo%kZEimEl6N%;sA)c_NeFzk8^4I-|GsFK2#IF=d3mV}Fk zRE_2YdB`9r@D$45AoQS49a90jVy@P_*np7&JD>oIMEED*mKl)De*~LV$|E z_Em_2%YcM|hf%$Af~6cmDm0T5;%Bs238cDcj^0F5;wsvk7BctzxwN!8p^$hy&RA@W z(Z~pCD~%xd{60dV5FK6ZEI4l-=~SBD-qV~oaUp|eu3@C^IY#PU!ZIVEMkOHT@LjZV z1SgCz0(=%2&X|#k+OHI?+1Qk+-3NRI;R`@*x#vovoqJym>f@Kv7I`o2waZzwcoE^| zCWeNF=snfT@bEB+L;_XsvP{z?6bjMW+Dd0!3482AUAStSo%8?7GbH7|r+dj|-&fc_g!5WY%ACxLAH2}f5md+fcOH}^u$ z>t4v<&>)8o9cFZN6jepUKt$XqV4*Qk6jd8l#WYQ3&6-8`qHYW^*u85HCnMWA9sWMC zU{4Msnlo8(zmX{$nUlcB6nRo`9E6A75-FOwr0GZlKBo~c03HIV4rH`YxoscKk(=pE z+{Ut{D`;tLrl+Te)2B~6aEM@tiKS^0)(GSDlafKw!~wylbp*AQ8eWd4HrEMIXEq5UC@z97Bf?+~lmku?n&3z40|=dkECtylM{oQCdFcu3%&BD)wV zjX=>xeE9ih#PI}bak|LIDB0+qZjpCRRT`t$F*p7pE?Ra8HK8E8dUg?u#V`y5K}g#P zB6^S!|LeqS_F?(^QF9y&%K^nUk#q<%(N6971+>_gQg6<4y%NQ?ZQ9z}IDhH+965Z9 zgT1eCs^#m%{f8*-@=w7tndo5uhVmI;41|Z?I_jC-b4BCf=UQ@G`&Qs{BIWF|RFo8@ zCccEu*xfAczLZcX$c`O5NQ@^i3$L`+2t5EBfag#;34 zXn^sWy$l;W7*ECt+8y|fT0|fgixC-((7ot9tauH{(I8{N9@p>o&;pShw@{qxlJX!R z-5|SwT_CK!H^{T!ER6Vh0=@d9nVGb7A@V55g=H!%z}!oj6~#!`(?0q^y4$Xyy?quv zJv}6oNkjxyW!UbaxBfB4!>=KMxNDmYkGh;|K`=}~f@8#k`xs3fCzzT;&>c{}q#f6Lx3=`85y$sSN0cpKW#P7XkSM$i0pZ6{}|o+N?@L z^cv>MyIIt|i2eKbGd4EnR0Ry_4o)}zh;+kYci}*aR9cuEz`?5NV>ES)P-+1|qdBYD zKA(@aw%J7bOvVDcNt+`%BVc9xmr$~~ApMB331IcTA)ftaex$F^SgG56Z0QE>2K+?@ z)Jl`1&qgXtbK)(`>6%afKtCfRBQD6osC9@lbw9_dI{|8-DrFJ{3BWWB?B)X;4?M=W z)$cTbVQ}L32@F$cYg|m@*tMYM6l9<<F70-ZjsMOKG&>JY@OiqH-7N1{R98W|7`d z&;SBffQIA>TEnv$92_K-%*4}`VRkTHw-Y227@D$>1G*fECjbG+!GPBh^Sf-PG2G z7#tkTnv9ekB@*0@`eV*ic`7}qWG^zHc7#FWRqPzC9vmE`siB$L~tuSpjkr2x8cd_cj@5RlpWhr5=@AL24`ZGRky0Rq&@~Q}1slnM!263<1VCMKXAl z?2Mt3o>NILQo%5UvEW|D?V+r#jz**S{eD9B91OdzEbo;mSeEBnRBlD3KC3j7fd>v%)1by3(FAxlyPfBVFKD!aa zFc=@7aC>aENE-d9kuKX<#d}g2&GRKm7-uFrfGY9$7(NMMT6Nj!ch%!hVd_BT?SvxE zdTK7vUwozmRIq%ZFvtx!^RFU8l-Kad4TCKh1hFlfbUK~2&x(a*#2no&(n!yVGRADBYdCx^=n1BxB1}v26?6wm=OG{22HV%AqI(#OA0}xl6x{3>DzlTMw*AouSC*Z5| z1kkdRM3V!Y9C?jhr#G;F;915}XOOI|^$=K#gIw6#sxlMBFqq?D>H__Rr{-odHRHU_ zP`sjI=Czm{c~_IPLT&2n8d$yflPq0$84bbNWo0pq08KTWG}UynWY&!w9e$O~N58?o zfnQr{eWi+Ly%pLRDF?Z~-e;te~c*rn0h1P{`lJThIF>jWwM-vv)0# z#3=;9XVl;~YccQ<^w)vqj0GZ+jelnc^QnS5nX)5f9@T)%%Ut+S0~H%l$!ymzEVy7? zD_o2At~~#TEEYp0v)nqx_>JdyOIvX~8AYfpEGbi!P+Lw!*zPC1~6lDR%t>LBB$uGjZxeHhw_!vLmd4R}xuj8>) zDzIl3PxBcBF;MWigMsGaQVzh1YZu3jYpUsD`NGv69#CbZq&b#+j%@?qCz$Bsl9qd! z-LPzuCQhBsZ@-aiqJPe>_kI~wYbpR%CO_`PQo-krb~ebk_vl%TmyxMPQCnHqaxJr) z&aVoLG3{k*^nbJG*fv(x{x?>2y>A9>ys&D{9qj6RnxjKo5KIq4ISu(?+=&^uUWRPP zLg}A)qKZ^7-*PJJIwzlv@-=Fcu8#}q7{%^Tr!CfUmPS_(Hi@nTf z@_5B{)Cb#H+Wrm%(~VtJxPCY(CSN49+rR(un=Mov)1fN`AX3C1tgr>$FsB=33Hlmn z3U$&NTEc?X%ccmiayb1Y&m6y>*p3Ui^WrZvZ|=OJxsy7=p|NKh~T*E!r{UdYcb`;5*=6LD_UhDq>{$v{$w|t0> z`U`Ugw#ulfrjw9A%vf@`NRX;3C&2=;dwG2m?wcG`h@l?w4$rD5kj{Ks(0moEm;NOS zXI)v9sQ@^b{0UDV{|qO7vy%UQ)87>Zc}!2SE%H_No_w8^p^vh%^F0It!K&&E`Wk4h z?It?jPcj_?fr9tJa>96Lx<~l$Gk`Bp0m89hNbKn!>J=Q`sNTc zn+ooS{7t-f#d=Oh_i^CN3+(EBnxV1d*(J9k5R{{cgDD`2`N9u|c-seC0SO}9j^_$X z@j=j5o36%{yzk;inAI>f+n7ru)RJ8C*Y`P&{b~^( zzv)rB=6bIm_gXLUY~MPf$C|l${+C$TaY5B#3V_C%*<9QGXPg|~Ng@@=3+@-6Fe@&G zTfxYN0Em?zJ$PElvrVjdV3%RJ|m?f#gp(GPH@48y9iwJ3oM7sdBWqbY#Z?VlW5HRbh3xul{B5t2yf9m@j*le-5>5o`;LH;y7 zVGpw4|Kn#pe}nbL&D?p}qqMcPRmwtHs_{24zvVJ# z=2-E{yKHx{#Bg^j831c<-8ocbyKFI>(CZvAt7{`|TWi=D}@vtjrBB(}Vh53PQfmez`<0aK#Zy7`zA zD80R6Vh2+KcnXym2y5PVU;=0W%9L! zVuVP48=}W%y2HntmE|An>hA5Eb6$L_Sw1J zUD=cTE=NxE5Z`$j@4ESxg6B`BUS!ko{p{Y*#BG1E)3@eSNqT4Ol%y(nmP8!^g^tF2yt_ z%)+p>k3*^dV)wIf#gaRiGq*GE*_eHj&EsF-wcnoL(uU7)^)*+XHIP9$6FG=w=kIte z;v__XClyJ8$=ciY6#_kpo=17nV>Hc6h5>s{KF`2tKH=jT{f`Qw6< z_6XzJPjnC(>sqO;n}}EUrC((<*2ln}CRVMyB=5Pt^kxnxe!=cv1$g^aAEYVVaMnQX z9p1-=*B<5c$o}l=ivy^qMn_Qj7Aj`|*4?qEpuFOz8#o0&0sIX3a4Dt?!z6B><`-Mn zb9`V2S1-Mb_U7|24e#Pr()f)=%<&H9&sj_`8%I_m93wr{L5sPRC5xBjJ$KT2kIQG%`s?3zRsfDCM%i<6BOCYpJAI?O@)r?`PrHAH@I=0?FpDn{SPeh&0*;`q?(B<+~HkI#E!U5-5a zfR6yLkoJK;#k#w8RR%P`{oh}a`Dmi@S>TI6ppuioY_+j1#S}lL5%ApEop9eiz*3c~ zK!OFcMHj?UKzlV##hY}Bo(NMC>FSer(WAhlAm7HcEu=iiQ0cjM8IV+xIJUY0=Zxt5 zr4`rIl+z)d^xwh5d*5+hZ&9yCBJZl$#{SZr6uVvUU=;XgM8C@9Ut=gk6$O(w{v?*Ga`tI7ma*(hbqL2iSn$9FD8LB0y|C1A+KfJg5BeZ?G4 zX?bMhk9)c9wyq2dao|;lC%M$I+0&)7Wv8drNTUeRJio2@lzVBW-abe@bIp6;Q zkjp2^t-`gcilZ5K;S^yDunu$s?)jqt>p%Q@RRvBb(Mv?k-0uqa*jF+A9|fKV zz6m@HI+mMf{YSRV7&bGm9{`{K_T_XBv~s9*z}>GcVPG}z0r$V>8}`M3%Z)uvXuoS1vK8$UcoujJ;aOnV$=wPJu>MbH4&Y+4%_!aXtt%!A+yGn&ybF~Zacp?#ECqfh zo20nFZbW~h@JoTsppiTc{?n~z4U4l1bcR0f0-hzyG%@UXI7gS=g!7Y6^Qq{^BPUBx zw2?AD8hI4h2K*X$*|3dcYFd_)K`{^>y=Ti=$Kad*4KCQW;hY7RAFT1?EG#SrE(R{g zIccE_rw26ROz{m07n5x_C2{O+1ZR?Q4A_F`>o`AydKxE2~jM0IR!eG zKL5>qtC7%&JN!O`FWU<|`f6x$x~=to~Y=Q6)3 zKu@MJz)zbVy?67QE#e;r&|Xw6_