1suDAh&?XX`+Eh4bLO$_d)7K^GI!oC-# z)7z=#)C!%_6(kAi)dI4JDl(Ez0VwH7DZ~(QbiM!JuL{`vl0kPWNR&B9K8Y_BtD}A}4Bb?oR0)j$9BgVugOh`)0$}7-L zs+w$QXl|WinKomN*vkuwA=(aoXJa``na1fErnb(l0|pKntSx9azyMID7^fOr+B?V; z?M)t47Qt7&p=CyKN;XIi`?tid&PFmU>a4X ^bUPn9~2`K4<9WWwkYKb zB?TpMbRt=gglP6;(@piAb$YWwiF;jK-EKa?S~p0}1CsOf0+8RZ64k|B9UblFPHz}1 zMoX`+pZ`r~v*6`W$R=>eHd5+Qr9_yvSbBq1qi;HeMNPSof_g~L0MA|+kT)OC(-GoD z4&MS5?2U?!x%r5}P7pC}cz67DJFj=_xbZig-fe$7Kzb90lO{+U1rwXS=MqikPE)I~ zH#sHsrW0H6@@hyd9TM~O%E&CUC2@^JvvYF)4~gCbiRKR{&`RtrEGoX~n2R(Ph*>hc zr?l+4jRoK$qXJYI?_6W2-T=B?Z+S)K&F8^B4|!A%>8a7(AP?Wv>H5}=7Nd84yV<+1 zh5HS;UVUxd&F4CdpujkUjF0+as6cO{sp+O;FL?P?h}{A$3f EL_}k+af>v)Z;gCifH}2XUS6dTYl^}@wN`@U){GuS(ZE9XB8JPA2=2n4Mt;Y zGRO_9> P;z!43@KEMnSUMLo410z(2 z8*vj}fEVF=@J{>)Fg(xV &}->+ z^uxfs9Hrl;zodTzuH{c=1QW-M2PS1Qa3^iRn@nS7Gb?~8+0H!3>;ZP<81p7`4mgpo znD1GJ9nQM5KCB-b#3lg4QOr(aYk=99&8}eYWw)~rvyZTk1AlRpeVIMQz6+ei$Lx8z zQTyiomGXD{Cr8Wk{%UFsEZjizX_1#+`CXkYrZyv4Ovv0LnTTy_?G|b+bqBTJro-!$ zwK{EQdU9!aH0W5D@_+?GMD(Svmt{#bPfLs~J6&n9E;9U5IP2_Q46CQMhD*Ao&aP{$ zqwXfU#$94)H?>~W{6}5mUO);EtvA*+!txyu-(T0@_`(0ZuCduZAQtur19}vSz5&rQ zaL{GrVBtY)H+2u`1r^=#3bkVk= %HbAj3sDd4-Eki%uE0-h zr|zeAP&=sys0XQCVx%}mj1r^87%^6i+fMC<#c}|(mwJSH6!?jFSSTlmW5qNv-A+%~ z*n=Wi7RpROakHtT!)UNpQr6i445{+k1N3ar_lxTqjjhJ3-w`qepri-o&0tmgv}PkL zW=37U3M;m1iTU;Q7Gr0U5$2Ff>A>Vl61VA%a$HY%lBNf3=z8TDafxDxh=~aCj){z$ zGe@wu&>`wD0qk?)xNhosaXbMm$-}xXuq0YY9`>L|sh22KH+4*$&`rH8P9)1#cY6o- z*C=(?rm@F+9aasnj6V(wh+bGioDvhoBr#b`5mU)S+kbdy{~ule>tTDsmm^1~90vJZ zQe3UMRHgvMkl4{dz5pid@oegd{PglBh>QvGj))GsM6!HDebUzgpNbh`puOB=jicJU zSq!&7_!<^Gsx8zvAkV)Ov&3vMXA5u; -kouFlK>bDi4HFH85W m;(RaYA z#;SzF%y=0nWikPzH4OiLVXZ<{r*wj__7Py6M&%VXgeFu(s@dFbzIxb@SACiGk3~is zj7$K<)zRGH9pSo?+gq(mYNG*!cU`lUXtWUGk-W4d&5)S}Qd--CqApk*5i)WZJnPHY z+U}NKLb<|9*LSm6VHHNm9|e@;6&D*jdyqf1Kz=_81#K3q Dz)meF z5di**Q5qcwqttI=$3&~>vvo8m4v{bfQG}@PMq|WU(jh)w7NfbqY^*n$%|=5qtTP*c zaZ8;J _+26V>cB9lp&<(W^IN1ww4(-$w#JPTQ}LG zC8IP-)dNfXRIx#9>>=o}A_by5_C?Pz>YIU$X=$%(hW_=MRMhu|kh-MH% gV-fb6Q_$a#F^qOajke>LP(q;Ax!G%Z5N`KXvbn;yE-$;vbq2k*gB<3 z7QO^Ldb7#W-bR3@D}mOwHH#e8`V@9bWj+;Jyts2li?QPJm)^E7T`ip^SQl6`DlnT` zfy~I!&uH%gx#ia(f43LMx+!bu&pJTU+Fu*>) $CwZ+f*6()6n$F%ii{&8PtNyA5`Xd7~3-23R+-mK}o@Ivo%MKvA$E=USw)$ z?0f^wMe~pdMUc>Zv;f@#%JM>V8(Kt&0^4pxPP dhiD?|Q7L6y;LGWVd3L}R{T7<)-J!B|=+E`YHE z8DDcAwujt`wn4~S#f2o~jdVTQ9%Cn31Thwgi$zJ+5tZ2f>S1fPOXX~@!&J%D4MC6f z5b=2yJ%RS2C(%>rX=uRx=o$1ZI)DzML$HSGg#U-p^XLWmIZ|n`0i~oU2dZQNe!CM| z2LyXpYg=AdYc1KT7-noUT=meQu2FB+!*+nVNZ;0A1jqyIK%QB7v(z?V2q6kQlH=yU zl0{CgoJ=2(PiqGxY|rn~YZypZB-~ynE>|j)p5h8+l1L4|X#1yA>goZt@fwYW2p)?D zif(Gwq!=yDV6LIbodJL#1{)f)jptKa49#j&yG3K;AT&fxuxRXB(dF8dtcS}@dJMe; zQ!^}&w8rV3_90*&R$I`^z~2IVt``6V5JbH)8c?a|HS{_ |oPP|LJTU>u1`V4&zOZ(5zd6+Km5jTi0 z!RMDSal(w`Aj@`n&(bQ`p;_f;86dr3PKSpukygvk$g~q4Il7VvpKMc`!Ma`K0TXOj zi-AnD1+YI{WSj!KQJpY@5klCar0vE08T}55Ecyi~hTp`E;=SUgEx URq@fEEZB`z;=nL&i=&OG8m&(-Ix};#bs||4)a*R3Th}G zfCu71Xe%CqhhimmKzHEb7#5K(_TkyD>GQ0+!9E23WDl0;XrUIXRO{b$Py`rYoyJRR zK+s^?tg|s_p`_qfhIi=qmgLi4K)Bh =BQFXx=Fv?KeH)k=V&L zJynYLi(727#x%K2JkY8w*b{qUZ*i-*O}y`t?7vKo+NI%Tg3|T~kG2ZP?Kc#VC(#oy z>YhOdaX5NGTrTbqVaWv>D|if!y7nmT!O;Zy*BZblaV&IN9C`sKpo7G`pjK}&!t@;q z!UhE3RHI0V4~Wa<494RLpag?}?ZM-%33hbVwwUT&54k7@;C{VcUeF$gX!<;moQRtO>LlxfuQ!e=4+BvaywYa z=^H>p^15c2%(khrg#qYdSEtfq)$#hk1Y!KHPQ|+Dw+{QzcI(prS}DmJNOCB`k6o`y zWHsJyhK#PRF-%#;wDuNx-nzQArom1 oNi_di9PVrg7C%C2 z5BA{Mc#e2Td`=9kv5!Sr+pHwDwn`qO#bNMoa-kNWRhz|SeiH?mB~pgiQ(c6Yl2jMt zCE^kB#U4Bd&xSM)iGd~c&;ph#($*=}eYzbn9*_%cpVdMOj178Am*rB=$+%yG*Mdp` z^M)M!GI`m9tt{m=-^m4E2lEHMOMDp?iufKFY8&uISO(X1!9uRB^Q!d3SHv%_Els;| zk6oHt< {k@FG5nkKvc_%lH-iDt-;Wj*p9{#W%z=;+x`I;#u)+@g4D9@x7h6*CrI+z-REA zAQaAmP -CCHn;b-g_sKRSqH z;}4rXf%GWxd+`VHNAahvz~EKlIWQIyU?4sx 7uSIu4)7%XURtBW?mMhM>ddANP)cEr8QCw0HFct_*~=M8M*+b^j}d?A2K~~i zTRH&!V`*=(@!F)a_Q3J cFC;o2Li$S&Tqa&<(s8x8 zTq6^yQ4`%PAx1*{r8>3I=Bx6wK%QL^Vo9c)7+BtiQNM|%$^EjQNzc71_B<+pmLwz) zOH75G^0#w8ggo+_Sar~vN-w>T8cN?rFCzLM*)Pv`VD?_Q6*cO=^(S~=sT34sce&39 z%*h!nN8CN!y}W(Ewj;nVusW~!GV@R UEnasqV$I{Ub?1&lk*<@lQD=#;ceW}U=(E_ind|s~J z(o9UKF3S{nvvgw{u~oAwm#`Zpm#2?&%1n`qly2^@mVqph4AX%Mmcz+Rfrvy} fhjN35pFmGZsN^C~q zPx2)y!uq8I${8Qqu8aha3nLgIwu9G&0e;T_3(+p{xM+l@ZSdO!7G8Sm?{@g^?LC6> zzA8pKgsO)yB%~Qq(L!9}wGj%R)8u!sS_J&{)myF}Y~m0BX4juCnem e#f%utaFNq=?9{N-(^Qf^D(bnAkbJiAl*R*D^qZ zPP;t+p5)X%1GH1=84;OTe%Zh*dD**GF6HGhY{t!={X+l>uRxJY{{V7RS|eL+eg{LN zUfL+Q%wqV8=hg}lOJb-|L17={ Nu8&DMZ>|HW(*n!o-=vC*vou9Ve895A*=>Ez835N z>%kImE|9m~Xge(Z1Hjv5Jgoh4@g(qU(SuEc5&T+A;MKAeZw6&{E4~kuzqi0+ JAvC1l{&&r@w{%-%IKb6oxdAeUh zF9nHWv)3fN!WMc7y^LA_l7f7*&qK@UyTI@oY$jIHtLW8`+gkb#`c8VCga%7!h=hhp zNGTx)2@R9ba0!i&kRw=N)9dMb=neEn`d)eyy_xPN!g-{GZ rk1>Td; zN7m^fv#q`zg4=1JzTnRC7MxsWdt#)>_6FTW?*Yb%eu& lemeq9^I6$t?Vogj~Dn{StDA zecnri2YrZ;8xnHUDI=z `iFG$Fvn|@J3o}`K{_SUo4#m=+JYi{~wP_OA%B;+M7J59(O z`gQaKeVjglUZ4)phv?IUZnl~bXrXUpJxsO+C3_nZ@)aoo$}J&p*t>y|F%&&Sze)CP zz?sjwawfqD)+OWv`!v@1{cU t8UdS!<2lP3j7GLN6b*LoD z>ZwA1M1MjW cau>W*uT-w%Z(nOQx^Sy(%!_(PeVRJt$o)4G`YP~zM+30Q2dtu zj{aUkqa+k0q2MiG5A_rMvxHO )pyqp4*RlGP3>J4t=`;V zv@Pka>IPUZT_bg!{Ot13vTFDz!Ndg#jTV=kqAvo$2Q(i;F^E3T(B*v$mxR<33XxEN zgd+UFR<|%UR-I|9Hp4Lr*s*1J2G9{IAx#f6fEg&EFbRc=;iYozO68nkQoXt$z*>>^ zRNJ=_uCVy9?KfDZEHjK5ZugO}56vqZYzvs4IT9Snt`ye`c5OIavw-%BIx{Z)^liqS z387TGl|va1#*^`4ycr+Hm+@o#nE)n`8N~!K!Hf!n6pxlrtc2nvG*&|6B{We&NfJtt zP@04?B$Oqg90}z~s6gCF5>qpwjD`tg!kGvrk{QE9G0{v66ASiq@eHWdMG|V1&>RV^ zl+acQ?UT@J68cC&ze{+qguNvkCE*+iPnLisyIk-v6Xh`wqf>VLmt(-*Ltyi*v4YKb zX#>b+7Sp#OWcx1Dw3o?0CRHv*oK89GpD0E@Ygi3g0=8H*$?afwVYYg|v|L@HEV)Dp zI%VfSQ6kv_`sRv~FBb(A)0zK7QLfoI`DDOFSiL%~ZX2y!pb0wV)PJBr_FY4J Udn(0bsUt|fUi;L^ zWlGg4)Bejc**AAVAd?g>AGeKi;^{hN)Bk7Ub}`al&}#@ka%nMlb?>*z1<3qopm;^^ z|EH!l%Y^~om+AjyYuH=in!@y&-CqnU^>xrVO)gHZPHFxJiqkht?Paz O%LU2* zXQaD5U%R}>Hv`dPe|Vjyk>nB;{xdyg&)i<3Ynt-g6^L7y6|fV*+{!FuZetcPiBng#Es6s-O5~|wCtd#d8n6=CusFDg`?xH}qtd=(= zB&3s&5eQIF4(k8im-yfBOEC9=lFV$EP>pS4g4qch6Tm@O|3kye|Ciajc@OglY)mkF zB{aF4fmNvf=C&r7eazEje_ ka;Kbwhf%`Gap#N`4Iu9#STs&lV{4{ob@j_{{e7*Pr&(uggWiu z{P~99yukcT!1 b34Fa5|theh1{O z3b4wzuFu&atb-Mhtdan7HUN_4t=OJ%Rdjn4Cl-!?*vUGxF03o-1`a|VtS9Tmdb2(f znk%7s5)vf@n+@|Nv_L|)Na$7xEtJr0J6S&&knAWKknCsz$VGNQF6jg0@_zyOzXv26 z2Y_T@vAfs?NOs(f0LiAXX#hwzRYFU<*>njlyGcN1vw2o&$>tJidHc;EO3RkXAS@*y zTyZl|s@X;Y!Wve`PG TB%y5*x=%u&pWH8@9TM6pA>fxEl+Z2-J+za3*oMPLZ8+RV zaJbu!!##aCeEeS={sTBXLU8z^gdVoz@TD8#@C193;ILOhd%M|F5_;q&arh?twv5BG z1c#3jM7?Xp;bT|haOiV(P<_aPgBqBzu^$s0K5?U1_9*AsUkDDrV!vj;VZUX+W4~vA zV1HzPVu9g)QbJEj=xGUoVgQQkvl2QWAt=rv2|c%y{nduUKW#X?NN{-Ajzef7+Y;uL ze{uM~$00WuaL5gj(DODNat?q)ZWuS5{7C2p2>}Agr?^ZxOzCLrZqAi+2Rw3a5<1$= zc}VEk&Eb*r;ry+5 OO^gteV*0sZU0So{aDcrU@?CJB9O$6^n`;ug;OBcbmk^u7EEXylY`_U?Xw z+ePpQde)EK9B5%b-6S6Oa*xS)e3anvXM(IJta$w8YCIylV-2^TJ0RonS%SykZWPO2 zz!$jV1dm6!7rCR{G43VqW$qR3Rqizo 7CpO z8y-)~Q#JP%;1M%6JYvp1RpWvG;_)BA<7WhqpG%mv Ldubg)B&N2>pcX^8Dy$KGT z?KpI`P0`r%Ul{)HVaSI940(-&U2HJqBd#+=+xt0=PXHkD@e+3H=Eq9d{pNtkPvnyU zQhXvXi`WC0MXrr7iyr_MuL7byt4uyeMqxHVp%+2n_2zVYlp?;Gps<+N@+EvJU&c@3 z%lQhvlCP4mkA!_C>?dJ=2?t0xP{N}m3{VS}Fhr@bp|Dn-o%wo#!qIjVhT3Om9QiK{ z{{a|w5*T(#IK&Ra>DJj9Rr0flruZFbidYT%3(J(ey{kojJ^`X6VNEx`K*C`+3B=p@ zB?O3z2oS>oi2PCjB96Eg5FO~5_S{zSRtjh_zlLCO3}BH58VTfR#C74jp5I2Wcn`mU z-^ky~Z{j!e-Fy$fh2JXSXbHziI99@O5{99aAYm9v<0L#@!V`A#_t~(x6BqLjQUUx! z1d9{xSWFQQOE?qu0ddy9So{aDxSwG083`xav3L-$$RFaL;}2o2gp(wk44>dNx=b0M z^tJ=!82>VX<4Y1w?dD&RaN146@i+h);CO<-F`dBi6oF&LHR0& C5A*8B^||2-fD4ge|e5}srOq%hz{ zs-oZ^3 )}usEkpwjg%Ck4gbErVOb8bugh*kG5G7%~gli=XFg8foDB*euH%Pcq z!X^nf?G$2U9102YBrQxJIBd4#5caI)B{aAXTTddo+CRC^*7aJx&BV*`UvF;Wur8bP zhW7X77IFy=K}xjPaaedm98MA{2oB37+}15rO1S+dai|k&38H2Sda`8cAc!(p5jEv1 zL^&Y)l0`5HRsv|T&`fY>xlt@Tbj`vXf ^PL{OO{*zh2cLS4%ZSG-XUSp4#T?u zhF6~|VDIHkLN|foW(m*l7J4MS;3i>spRhxQ;r#@Lw*a7^|6#QP{{PpWUxnSmURf0G zArM@66EXG)Pm!`cDd9!k!qXC73=XE?H$j{U?fz+=c5A%;c9d$H4X3@92L(_+b_$1t z=Y+$;^TG?l5#dGQsBlaGg=DFOmr3|`2``uM3JI^2@G1$fmhc)0uiYuUBD_k_EF2e3 z2))8d;S|9#H1C}R&JtcH;kzV!w}jVAnCxo@mctoB;EZ5B5qyOFHyj&os)K{h^__6s zWNU@VlG =|-s|o?;r{D}o4lEmP>S%0-(<)4@T~PRTb9hu} z1bDh!@$_0x#v7(~8m!e;UlBS!CN3f=a!hKRIwmnJNj)YyCRv>r2VYaeB2%KH62~Mb z#)X$okB!zvk0~`3ko?O`V2K+SVm~NS_(J#we6xiwh4aE!!q*bsDB*i0yh*~Fw+i11 z-wEFfKS;P+!hq&265dLjO^7>9f43}~qboW4u>Xrva-JJG&*bV?`5nX=6?!M^s#rFU zFnC?u)k=<@lL1<6Y_J{ hLesX zhd8;oUBlzH+gW6~UBTOUI5 B)wuEZJWG~(=5s_oS6?iaQasxg^;ABnGBjxIg2Zt1Z54V;)Pcy=m8fGIL#YxV0 zvs@Mg9Ejy0C7C4_ILW8)Rqx0l@ngFaz`J$?$$NaFThD}v EfPD{K+_%ZN`fgOub5-f@}Idg~M|% zAQ}xqLy-fx4m-j%e34eSVJ#Ty>X07QAtN{oH^aqy?Pv;|^tcnffL=ncz*%y~(HS@z z{T;YU?;ISi_6hn7F3 % zKXM-~MoNWBF&eHwQNl@7)e?SG!jHrG9@Rwh`QBJW$>+}ghd|(}2@@STA^HX~lmxP# zQ}7={YT;l)Ysg;37;2~@N)b)O0y(abcnlVedh+ax5`N6;#;1r?!~s%B+C7R`YC(+_ zE<~B(t?%@X2#XJou}%?+v7pRR4j^&tcGZfBiX`yyB+t4PK(st*JKjQ(2B#faL&CAR zaD=WR3&}_1lD}bPvJDRhS3DIs b;EsfN8t9jxA}MZ_xW>hgWM;;vU~vy%inN= z9ERKDI6)8w2!n(naEIJ5AwY )2|y?q9n zz v(-pTWmMc~&Rx8#j?o@12bSt(fwkftNb|?-iPAR?~APjIE z;5@)}fX4u@0X_r94tj9VV}lM3IyUHyL2nQGc+kbcg9Z;B>@ax5;E{u!2S*MbJGgvs z<>2ZOTSx2~@y3XE9XZEl$LWr<9OpQSj`JOFaops1zvByzFFGC@d1~alBYzzEhZFBK z(#hG$)ydt-)5+V(*U8^0(kaR*#wpGz!D*b+1gAu&WTzshPN$Vl+nr80edNqIyE(f% z2Rny2hdPHlM> g5{i8t*#Rb-e3D z*Cf{z*EH7**DTi@*F4t(*CN+?*SW5%T_1FP(e*>uzui3CLfj_0mAKWo>D=^gO>P}- zU2b#T=DA63OWf{u+w69~+fKJbZZEl=aXahwj@$cg=iEMW=iQa=4(`L<-Q9!TL)=5% z!`&m@quh(#C%YTn8{AFqZSEcJX7^6_W$q8TKkeS@e#-p~_cz_oy1(Q8p8E&xAG&|+ z{;B)t?iW3f2kpUn@E!_}fgXcBhI$P17~$dM;o>pY!{jl`W1+_mkJmju^Z3it+f(D2 z>{;Mx@SNs3!*iDBEuJeq@9^yQ+~v93^LfvAJ-_q3=;h?4@=Ei{@XGSa@yhcm@GA1U z#p`yjyS&zWZScC+YqM96*H*7RUi-bC^LpOvh}TiC54=9~I`2Ked#HD)cY^mg?+M 2r(E-9Ec~cKht{dBo>2pC^2t^m)$L-&gIM?wjY^=sVZ 4@vHEw^Q-r3^lS2)=68$VLcc|ROZ=AkE%#gLx6yBtU$@^Dzioco z{dV|0;CI09wBJX5-}(>rckuW05AYx5AM8KcKf-^Ef3$zBf4qObf31I~{~UkOf4=`M z{@eTy`G4a7Yk*@wa6nW*aX?8xSwML}Wk7X+E =K`J&I1+F&;B>&5fVTpE2)G!C0_i|Da7dtkU~u4s zz??vB;N-yCKto`CV0&O!;LO04fg1z&20j}2c;LRkrvmo}J{x#2@VUU}1CIp09r$kG z`+?^IKMMRL@Uy@#0?!A29r$hF_oIf4QjaPeWf`?@)H9>b1yMm>L1TkbgEE4$f^vdN zf@*>$2h|1{g6e}BgPMX`f@TEG4w@Sz1uY1=HK-?OchI9jj|c4wdM4;V(4nBiLA^om z1)U4}GU$BJ*FnDo{T9py4+tI K7IHkK zH{?{vM MC`cdY1YY^+NR`^%C_m^&RSU z>buqVs5h!Nsqa_sRX?LXt^QDbUj4QDTlM$qAJrGse}__`IFt$HLj6M%Lk*#GLYIWz z9=alQb?DmAJ41JdJ`ws<=>E_Hp@%{bhn@-jAoP>a&qBWlJs B`VNHavE z)C|*%(D=gnyh)mD%_NOZqu11FjG7iro2El!(R69%YL;r2X>Ql7&}`6b(sXOKYPM^3 zX!dHJ&^)DiMsq;(isq!|wC0TFEzJj-k2IfXKG%Gy`APFv*nlvHu;F2jVNPM5VLoAg zVS!;mVew(fVL4&ir~y%fqee#gM~#k(h?)>p6jc&6DXKE6CQ2V=h-!#xifWA#qvl85 z8nq~DY1HzlRZ(lB) MZAbMr=y6E-M8>2Tx-xs|j z`oZYk(R-rbj&Y3fjR}YeiWwaf8WR>XE@nbZVoXZRjF^Qni({6>tcY11vo_}8m?vZQ z#~g?`6!S*R7coD^{1Wq9% &OiPgkL#3saQV=H4jW0%CPi(MbP zF?Mt8me_5vdt)DseLVKbxFK N|b#N8A3eB7&X$Ky`M zosRo7?z^}j<9> 6SgPpNO(M9U&2!f&x{QlJ8tZRv58|-#y&Up z^|2?$o*etexZH6S BaD`|Jqo}@>UHOXU>3zN0UWyuxE)yb2S>yqn}P020E?a8+! z- z&nds9 z{E
Ws0StqhiW__6TZ8nq5XAj68oUP0ro;@<#CEGpQE890aCObZRZ1(u !E9ae@_j5kX`8XHl4#^#!>zM1D>yhi7>z5mlJ0>?KHzhYSH#;{kw>Y;nw>-Bp zw<&j8?y}q!xvO*U$h|A~p4@wLyK}eZZqMDBdm#6@+~;$T @=xZ!k^gr7d-><`Kg$0h|6;+2 z0;dAk0*?ak0>6U5g5ZLX0!=|gL3%+}K~6zlK|w)rL21FHf{KFb0$qW=U~a+2f_qjw& 1d)PnNz>`ey05(l1NDF8!|b$I@R)e=Gf?^g@}UY*5+IvSDS8Wlm*d$`Z@c$}-Bb z%L>Yh%Sy{8l{J(#l}#&~T{gE&DqC2#xNKS3^0JL(JIfA~Jy-TZ+0n9>%U&xxQFf~A zOxfA8cgub#`?>7bvfs=8Ec<&BnnX`xCkc}VOd2#Pcv8lsmPyMe?Va@IqzmP4-cZ z<&(?n%InJ;%cqpjET3II7cQEaUw%vZs`9nv>&n-cZ!F(bzQ6of`D^9J%TJcSS^jqU zd*vULe_Q@T`NayRf~!ze45@Ia7*R2@BA_CoBE2H3BDbQTqPU{8qP(K2LRV2+VXT;0 zF{ff)g;cSiVqwLiiX|1xDppjis#sI;aK-BtKUO+c##QPn7gY9C9;$q=^0Ue>E5EM% zw(_?sRK-+rRf?*CRfDTst30Z_tNf}0tAeUhtBR`1sw%3gs`OQcs)j04)%2=ctCmzP zt6EXDwrX9~`l=084^-`|dbR3!)yb+is@|%4r|SKx534?@`n>9VHC0Vlv( Bn$DW3HS=l~)hw;Ky=G<2 z>YBARch+pFxvyqN&4V?&YxdN 7CI!5Q98>w^Fx#_%h ze!4(ikS<1-qAS-`>2$hUol)1QYu2^trsz6#({#&pD|D-LYjk($?$WK-ZPabj_2{ Y~4lipSDq4(1J=>7Bo`UriL zK31QgAFrRNuhuu|+X*YHpP`?vpQo4fEA?yicj$Zc+x0v259;^mAJsphe^P%`e_H>g z{%ier`XBYb=zrH=&|j>@wQQ|W>rv}n>s#wz8(14$8&Vru8&(@x8&w-qtF5)vuB&~r z_T4(VZd6@bow06y-O{?{b*t*u)NQESR=2%wN8JN;yXtn=?XNpf_gvizbw}%7s{5?& zr@G(kF4X;PpbeZsVHjv|HFy|Q28|)yFvbvP7;BhdNHi1}stsmCmtneLmSL_zGTdUg z&9KC9yJ4kao8f-LPQ!zShYWiRj~X5~>@z%Vc*bzR@Q&e6qn9z!Xf!T0?l!(={JMTX z{qXvc^)B^p_5SthdQE+JePn%9eN25yeR_RXeQte0eNlaT{p@ D>sQsU zsqd-ZR=>CYiTWq&_tzh)f4=_3`eXHP)_+p}NBv(7R0G|>H7FVeH4JSS*5KIS+@Nj< zYlvtV(-7Sd*O1UKu3 pK{D%7)jy8PNIIJ Gkt9O z-E_fpu?aQNO!PzO8vl^X<(mo7XgNXx`M^)4Z+u{^p&{hnwGP{=FrnC88y+C7~syCA%fB zrLaZYQrc42($v!0($QjRnb|U@MQmBna%;;&E$_4ntq!fjTfJLHwW?axtzoS(t?{kn zS|_$9wPv>#wN_4voDw}Hc}l^Q;whz5%BNIK(M_qH(mrL%6w8#UQ)Wz=HD%6}c~iDd zIX2}-vxhm*9BPg+$D5PQS>}9mjk&?xWNtCHnP-{jnnm*h^Fs3?^D6UN^PT3q%-!Z5 h^H%dN^FH%a=4Z?Y&4 ) -> Void) { + public func redeemInstruction(by id: Int, completionHandler: @escaping (Result ) -> Void) { NetworkManager.shared.dataTask(serviceURL: "/redeem-instructions/\(id)", httpMethod: .get, parameters: nil, proxyConfigurator: ReloadlyAuthentication.shared.proxyConfiguration) { result in switch result { case .success(let data): From 61cf864982a766bae149ca2367048fc32177face Mon Sep 17 00:00:00 2001 From: DEV <4taras4@gmail.com> Date: Wed, 19 Jan 2022 18:36:22 +0200 Subject: [PATCH 3/3] Updated requests Updated requests --- Example/Pods/Pods.xcodeproj/project.pbxproj | 4 +++ .../Models/RecipientPhoneDetailsModel.swift | 4 +++ .../ReloadlyGiftcard/ReloadlyGiftcard.swift | 28 +++++++++++++++---- 3 files changed, 31 insertions(+), 5 deletions(-) create mode 100644 ReloadlySDK/Classes/ReloadlyGiftcard/Models/RecipientPhoneDetailsModel.swift diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj index a0fef57..60fbf7b 100644 --- a/Example/Pods/Pods.xcodeproj/project.pbxproj +++ b/Example/Pods/Pods.xcodeproj/project.pbxproj @@ -39,6 +39,7 @@ D24AB5E778196E2BD8B6D9E376596715 /* Pods-ReloadlyAuthentication_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 6827B24491E1DAA988C17129B8123E55 /* Pods-ReloadlyAuthentication_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; EA87991AE9CC00F0A64D467E852AFDC1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */; }; F331A5FD2790A35B00C3B416 /* SortModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F331A5FC2790A35B00C3B416 /* SortModel.swift */; }; + F34FC6C22798739200B2CF05 /* RecipientPhoneDetailsModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F34FC6C12798739100B2CF05 /* RecipientPhoneDetailsModel.swift */; }; F3B7BE29274AD7990084A3BC /* ReloadlyGiftcard.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3B7BE28274AD7990084A3BC /* ReloadlyGiftcard.swift */; }; F3BDE029274BF552006983AB /* ProductsModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3BDE028274BF552006983AB /* ProductsModel.swift */; }; F3BDE02D274BFE0E006983AB /* OrderGiftcardModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3BDE02C274BFE0E006983AB /* OrderGiftcardModel.swift */; }; @@ -116,6 +117,7 @@ EBE6EFD91CA2F531C1552AFA036FE598 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = " "; }; EC41314C2A07D306BFC79E3E21C06C11 /* ReloadlySDK-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ReloadlySDK-umbrella.h"; sourceTree = " "; }; F331A5FC2790A35B00C3B416 /* SortModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SortModel.swift; sourceTree = " "; }; + F34FC6C12798739100B2CF05 /* RecipientPhoneDetailsModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecipientPhoneDetailsModel.swift; sourceTree = " "; }; F3B7BE28274AD7990084A3BC /* ReloadlyGiftcard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReloadlyGiftcard.swift; sourceTree = " "; }; F3BDE028274BF552006983AB /* ProductsModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProductsModel.swift; sourceTree = " "; }; F3BDE02C274BFE0E006983AB /* OrderGiftcardModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OrderGiftcardModel.swift; sourceTree = " "; }; @@ -364,6 +366,7 @@ F3BDE028274BF552006983AB /* ProductsModel.swift */, F3BDE02C274BFE0E006983AB /* OrderGiftcardModel.swift */, F3BDE02E274BFF2D006983AB /* RedeemCodeModel.swift */, + F34FC6C12798739100B2CF05 /* RecipientPhoneDetailsModel.swift */, ); path = Models; sourceTree = " "; @@ -542,6 +545,7 @@ F331A5FD2790A35B00C3B416 /* SortModel.swift in Sources */, 1A7743E326033FC700D34144 /* ReloadlyAirtime+Promotions.swift in Sources */, 1A7743DD26033FC700D34144 /* CountryModel.swift in Sources */, + F34FC6C22798739200B2CF05 /* RecipientPhoneDetailsModel.swift in Sources */, 1A7743E026033FC700D34144 /* PromotionModel.swift in Sources */, 1A7743EE26033FC800D34144 /* NetworkManager.swift in Sources */, 1A7743F326033FC800D34144 /* ProxyConfigurator.swift in Sources */, diff --git a/ReloadlySDK/Classes/ReloadlyGiftcard/Models/RecipientPhoneDetailsModel.swift b/ReloadlySDK/Classes/ReloadlyGiftcard/Models/RecipientPhoneDetailsModel.swift new file mode 100644 index 0000000..baa8be4 --- /dev/null +++ b/ReloadlySDK/Classes/ReloadlyGiftcard/Models/RecipientPhoneDetailsModel.swift @@ -0,0 +1,4 @@ +public struct RecipientPhoneDetailsModel: Codable { + var countryCode:String? + var phoneNumber: String? +} diff --git a/ReloadlySDK/Classes/ReloadlyGiftcard/ReloadlyGiftcard.swift b/ReloadlySDK/Classes/ReloadlyGiftcard/ReloadlyGiftcard.swift index 5acdc74..9262b6f 100644 --- a/ReloadlySDK/Classes/ReloadlyGiftcard/ReloadlyGiftcard.swift +++ b/ReloadlySDK/Classes/ReloadlyGiftcard/ReloadlyGiftcard.swift @@ -60,7 +60,7 @@ public class ReloadlyGiftcard { } public func redeemInstruction(by id: Int, completionHandler: @escaping (Result ) -> Void) { - NetworkManager.shared.dataTask(serviceURL: "/redeem-instructions/\(id)", httpMethod: .get, parameters: nil, proxyConfigurator: ReloadlyAuthentication.shared.proxyConfiguration) { result in + NetworkManager.shared.dataTask(serviceURL: "/brands/\(id)/redeem-instructions", httpMethod: .get, parameters: nil, proxyConfigurator: ReloadlyAuthentication.shared.proxyConfiguration) { result in switch result { case .success(let data): let result: Result = self.processSuccess(data: data) @@ -126,15 +126,33 @@ public class ReloadlyGiftcard { unitPrice: Double, customIdentifier: String, senderName: String, - recipientEmail: String, completionHandler: @escaping (Result ) -> Void) { - let parameters: [String: Any] = [ + recipientEmail: String? = nil, + recipientPhoneDetails: RecipientPhoneDetailsModel? = nil, + completionHandler: @escaping (Result ) -> Void) { + var parameters: [String: Any] = [ "productId": productId, "countryCode": countryCode, "quantity": quantity, "unitPrice": unitPrice, "customIdentifier": customIdentifier, - "senderName": senderName, - "recipientEmail": recipientEmail] + "senderName": senderName] + if let recipientEmail = recipientEmail { + parameters.updateValue(recipientEmail, forKey: "recipientEmail") + } + + if let recipientPhoneDetails = recipientPhoneDetails, + let countryCode = recipientPhoneDetails.countryCode, + let phone = recipientPhoneDetails.phoneNumber { + let value = ["countryCode": countryCode, + "phoneNumber": phone + ] + parameters.updateValue(value, forKey: "recipientPhoneDetails") + } + + if recipientEmail == nil && recipientPhoneDetails == nil { + completionHandler(.failure(ServiceError.unableToProcesRequest(message: "recipientPhoneDetails or recipientEmail should be filled"))) + return + } NetworkManager.shared.dataTask(serviceURL: "/orders", httpMethod: .post, parameters: parameters, proxyConfigurator: ReloadlyAuthentication.shared.proxyConfiguration) { result in switch result {