From bfd4832b7d4aa18079a36a09e5b43d943a61f4a2 Mon Sep 17 00:00:00 2001 From: Okechi Onyeje Date: Wed, 25 Jan 2017 18:45:03 -0500 Subject: [PATCH] Error Messages Set Up - for ebay service getting items and authentication --- .DS_Store | Bin 10244 -> 10244 bytes .../UserInterfaceState.xcuserstate | Bin 47015 -> 52886 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 358 +++++++++++++++++- Vendoo/.DS_Store | Bin 10244 -> 10244 bytes Vendoo/EbayWebServiceManager.swift | 52 ++- Vendoo/EtsyRESTAPIManager.swift | 2 +- Vendoo/HomeViewController.swift | 1 + Vendoo/ListingPreviewViewController.swift | 35 +- Vendoo/NetworksTableViewController.swift | 38 +- Vendoo/ServiceNotificationManager.swift | 87 ++++- 10 files changed, 521 insertions(+), 52 deletions(-) diff --git a/.DS_Store b/.DS_Store index d1356d2c5cf33232ce297b7463309a38720ecdb9..e10655d6db6ca6094c7c3d22bc8b4c5ce7149a12 100644 GIT binary patch delta 388 zcmZn(XbG6$I9U^hRb(qtZiW=7G;69o1$icR(tJj-EZYO14PWM)2DSty=y-{fW? zB~DRMF>wh=DQT(6>xAw|M`R}F=LKh0rN#^J7iZ*`djh!uMX6<(spXTG3aiO*2rw!; zs4##*NM3$kDyOnT0EEjq`Gc^cr2wN6qc)=nqb;L7qX(lWqc>v+VaS2H&X=&NX>xAw|#|!WmXXKZACgTiir_IGsr<{D8-n&*-_*(<7N@@&m0pQu5M;m_{FmMn}{7qYyH~c}*;|a*>){pd05vLAQ3M1;!E!m^P!u@iz!Ej?r1!*BlTQ)_ z(HK)q@0#Ab>AjoYd;h)Jy*=*aP|V+a^Uvp#0K2nq-n@Bz%ByUws|`0hoi8$o!3@iA zjEOPZC)gbeMyv`pg=<3%3r2)0mj|nw!{s9aO;yWk;c@AR=1^l#2A#5XcMt9k#==;c zUQBPM4>Oh-$BbttFb*b}naDU97vpB8GZ{=Klf`5+Im{fUgehezm?ey#sb!WkE0{Va z#56Ihn6=D$Mr8Zc}ncJ8LmEM0SEF6%8nheTita)WpeN9i=vnk4dI`OZ-bL@B_t6LFWAron4fn!*@c?`j z9)gGAk$4OqkCU+rr{GjP2_J)}<1Czu^Kd>c#Km|XF2}WaIbMP5a6N9oA>4#l;p6b} z_#}KXJ`JCR&t`|SquDX+1lGa2SU2lqQ`yPv6m~kB!RD~J>@0RRTgVo%rR+SmoULG& zuzt3Rt!9_8wQN1xz&5dAb~U?(UC(Y{33~#23VSMhCVLip9=nOXh`pG-jQt~8jE_7?UI_D*&WyO(`{eUN>WeT;pIeVToq-N(MnzQVr2zRAAJzQ=yV z?q@$^KWD#YzhQr1e`J4Ue`Eh*|K?bZhioAOO_Oa-PwQ;}(|sn}Fv@|%t|1x%Hu22;q? zXj*C7U^?Ek(WIJ)=>*e>rjtzPnKqfuH(hDkV%lnIHMNlM~3t-Gw(Sg*BSXT8&Um-TMzqt?f)k6T}|zHEKP`hoRB>qpl8 z)~~GJS--dbZ2g7jcoT2tExeUicpGo$kLHK)N&HZL7(bjJ!H?ue@yGB}`Dy%gK7-HX zv-oU2htK6_@H6>5eilEQ&*$gx1$-f2#LwmD@d3V)ui~ruAYaQb=NtKz{6=2o34a2A zB7YKpGJgtxD!+x_%D3`u{5HOw-_Gygui|&|SM$60YxryV>-g*W-TV#wjr>jg&HOF= z9sFMY0scY$CH`gp75-KJHU4$}4gO93UH(1(BYr>sG5+EB_n+m%s@o z!7L0E1_?(AgN37oAwrTcR2U`<7e)vpg;Bz2VT_P0xCM_eS(qXmBTN;h33xJFI&BA@cL&C$tE5fV7Yr^Zo8^W8yTf*DIJHiLT@4_F#pTb|l-y$O-5sR$Ii6(Kd zc(gb~OcIBR!^Gj@2yvu1N*paZ#AMMUP8O$#$B0wKY2plVrkE!dibZ0XIA08im131x zEiMy}6W59B#SP-|;zm&wiFkr|j(Dzkp14W;pLn_0F76Vq5qFC>i?@h(hlcgzArj#XROEaZBX_how%9o0yQfZ##m#U-|X_a(> zbc%GUbeeRIbh&hebft8gbh~tibfVJt;jay(GOXy(zsby(hgd?Uz22zLLI{zLCC_ew2Qdev|%^1zD6OS(X)fpgc%E zN**j9Esu~#%H!n;vP({vC&`oLEIC`wk>|+s<;8MPu9fTMm2!)`Rz6NXUOrJiRX$Tb zSH4KTOm366$?fvB@^$k4@&odN@}xT@;mao@_X|8@<;NY z@?Y}b3ZozeE3CpPCdI5+6j@P}-pW8FNg1V#RXj?H;#GXgbR|Q{RC1L(Wv(($S*$Ek z0!odtT&Y(Yl_q7ivPL;aIafJP*`%DWT%cU2T%=sAT%v4N{-<22v?}e&Rm$zk9m<`` zUCP}`k#djnnDV&tgz}{Fl=8Ilyz-9nuJWGpzVfm1iSmW=o$|f%oAQ_Pw~bW_Y@E$% zlWek0vDs{cZAaUN*ph5RZNqG1Y-4RMo7?8GrPwCfrrHW@g|;HwTwAfN#8z&ruvOZs zY}K|pTfJ?A?ReWpn`$GrGi_(tF0@@_+hW^lYqecvyT*2{?IznDw!OB8Y){ypv%P71 z%l5YI9oxIM{kD&7pWD8$eP{d0_J|^X>?c?m@=Z$D+ zsjGW|;TeGu8HuqmJ?9scB(Dgr4OhU=h__ZYqN*+s4!1Efqo`PA+Za331MDO_Le2Es zd*@~6%nvoK2sZ|*g4v;}mik~rv)?`@W%xIMDSmPO(N`2btE8_*%S<{XbjahG>0>)nrl}DnuFDT`@rmA zO`xT&Ij6d|In-3r3{S(kp{9Ao`Qb%cvtUWpvS57>0O)@fw=`r2!_Bn~foAYu{r16e z0CJlG^}&+b4!p~E8T_J*5*9y-{}KsZ>f0j_OcTO4c*H36Y) z2F>QzHdKdJhyC{c#lb50Mn}?kOL4Rs^ztz2%$V&=3gcybOe&M6+ElyRL+z>d+RjX3 zCNoo*W0jy)Q`8iq zK6^<^BgOZ?@8a6{?V}FXM@guqsVbNSNJP7cAd}b79Birq{>f~qt*Z_;9oS0=%+}h< zP@oCsaLmEF$Owmn%~^rwKwW65L9ARRj~Ua(%wT4!eboMK%q(WMI#3;@j(mYB0In}& zikP`fG3EP8n4g94vnf~y^SvslGHO4yuiw6~rnW9PY2w6*^TIHr6GJP45WGw@W+ptb zwlF->?JQ~v0H;+2Czb_aB14fM{>sYu2NO$zO{<_;I9ZFA_A&FAGG;!rphB0j24JZL z`me$8yn+&#_cnN4zM!C_Pz#=7v0kiUIKXdTa(EcdZVJ@}4Ggr&t z8MBQEFqKS|I!HZA9lVVRGBwOn^=LIo9YMM5XqZxeQGQ-YsXr$>ue7k(Uy_rblU15m zSm2+XQ=X_n&Vr(hf|6*1q)rgZ@=EeD^K*&;427{z(^mCN!&Y^OPQFHFCCpz&Q&V7V z8`H={T7;RFR;F1Ust(t`Sk0{2st(h?IF4Djq@ZL@OLL&IE~tIDjX6&Ll+MQn=J-X? z*CoN`ZSZ6xQx5Y1fB5Zv)~$0+NOEqNkhIR_OiP`Rl#-sdVS^6&1m;A)y;t<(>{?)o zP(z?;?Kb8F<|L*Z;C4JS2zv^11|{sN%xTQ&>S%S0I(8d#CUX{ZwmMFopicZhCF})E zLo0KkI$j;(xAz6AHa3G&c~;>rC0O!5IB^W+#=<9n4j#OZBudS2Md*uev5)LU(Jt?)KZu4v*Il zE{(}+s8VbM9TzKCw`hH(`0eFKrmvz9yhZ)n(+`-(*+{N6j`qWf4 zO-*lS_Aq;ydzt&xNouY-LtRZdK-YYRLe`aaa#&NU`Jla%!=O-_SJehr`|T6r^s?Tx zs42LrHq;U>4KytcMs$4^HSCF-mjvrT?FXw3HJ2Z%(u^Q9cO-!B*Pm$$9ApGc=F+g< zuQAJyGLJK3TA9bx$*s&2>J&Pn9@%B3B^2v2z&fuvSRd9o>ltQE8}lsloO+C!r4BOy zyuiH7^lW2ZWL{FIs?*w-SD07T>1u|WxfsCYRfEZ_t*H$*`R#W2n?jruSlUqA+(PZm z&<;Aqb=dLQ@ae(n4E;wJ(XZOq?@K}aoB zi`2R5$TEF`%XE(N+lO^I{21oxnnqZO*brRqGjOr5VT*n#?>zNjDkuMZlima7%&V)$RVx`gssEMnl#GzOcR*A{@G&8`KR z39Ox?xg-M&j!)8&V77mLUg=DKNohtwc1CfwKR++CIHNc(r$l3VGyyrlA&uIu5)H~Wc$};`Ao|~S zkPuMs$i=MLZSRNN$b(Xl7x_>sN<-;r5}J&rpkvTfG!0Eh87LEFp=^|ca?uPlQ}wII zssXi9tx~Jipjx9YRhOx?>T-33TBp{l4QfbjR9C7^YFKSnTRH}nPlwVEWzei~GpMDO zreJve`jYI~#f62X#>fk4qoe~H6&B=|`!m1+Da-L^6lcveS{KvSgAQz6mXV*At+fM^ z=mecd8xBX*Z%rzx1&u;!SyWs|y^_L$yn-2i_#-zjKgalB0sUYA$__Txh1Sw&X#M)U z0w8&QzP~7=G>X7N+H6Ezvy#%{ydr<3aZWY`oINiqI>045Cb57^Gm2;AltR<&oU**E z9Di=coV3KYgka4 zmz$SUYz(oHe$qeDCj}XEqEiy4twy7gAYFGzDhf0&1NORXC>zn7Y`X zQB;(d1>SosJx|bZD_LDz(;N$_6K*B*^Kwi5g_*Om{F%jh*)yoL=tDMeJDEaqcY+i@ zQ#zOk>EkEqH2VDj8kjjCHm_|6Rj%Gy95|3511F`%xHNI zZP_nDOI_7Kbb!u7n;;dSYjIHXG(0}gOWKCcM;9;Jp?0(#?NHaN8&sm6pth^qsR`60 z^LXbm;rOKHqPQ+X=0=_FA5toOq@LN~e0_qxK7{l2ZN&Nd5uC2GBF@*@#zg+o z5f-A~so&5S{ek{Of1$rIgAvA<#T+(aGqzwW=COc9EMXZd*oN)6hkA~Bu6mxjNj+b^ zK)q1CNWECSMBS`js$Qo4PrY2dLcLPmqHa}N)i!lo)MvnbG(kSlz{mRxxWA@8;*4+t zTa5>GZdNk8!&FCf2R@oMI~7Cl?aOPwb`D45hJcYJ9lxu;f(N-f+nZCtAb8f&f(5M8?%Pg9+I)GZ4^oyjpFCs0# z^~)^;BM!q`V9Z?(ZGCj2*3_7ml$Vs|%rV-|q-}lOa~TQ>DFe&_!=9O6m^IsQJMe4@ zV?rkw`GJO|ErF#$-QUnrj5p=DfPOit)0dEUXlx2W!ZWN9C#N6-a(NJf6z2hHG}mBG z$&8Ymf^1_Hb19te*lJu#TXtouBN`N!;rVgK23Oz!=rX(zFT#uQ670vvsyo!H)Sc?p z>Mr$~9k>!#;c6VjHF&9dt$Lk$y}DbyLA`~l+K92!0>oIu22o&DT?isJ8dZj82iLlj zoiN8K9#4ihJ=g0@%gsv5$<9j6@p)3xeC`Z)rpK3>nhs6UQnS)i;ays8s>_p>>C4T? z$oBZsvQjggnJGDLSYS!Y^tsYf+@6%I9B*cNYPK&sBRf0Om*#PKb9||p-ZW^Envt84 znw^#7b9z!!b26PC$ggGPW~Jo#+*!Gv)GV<7D`KL~Skz0ZAQ@a&M3+hcZ%zN>My6$} zI@};&7&pfga5Y{N|6mSMOUPE1kO5@pJI2 z%$VKwJbW%b4{yTf;|uVG_#%8Uz65W^m*UIt|M2Db3VbErg16#U+=jQ|cDx<$z*pg& z_-echUxTm3*Wv5&ZhQm25#NMw#<$>G@oo5ad#UB@2elG`_)g>&(tr}uhehU@6;dEpVVK} z-_$?UzX)Oo!US;ynF+EIBoHJKq!45$s3$?a3F=Ewe}V=QbQD2H6O=^IFoH%9G>V`x z1dStT0zt_HISFzTltPe?pfrLe5j2IMsRT_YD3hRUf^sP-U&F8CH}ISIE&Miq2fvHo z!|&q{@Q3&#ydQszKf#~k&+zB?3;ZSi3V)5i!QbNV@b~x!{3HGe|BQdZzvAEU@Awb= zC;kin%`z-vG0UOd)L@-CNm0%me0|*{W@KAzB5 z7ZO}Ta2dhn1TP}kPjDr{H3TmwxSrrfg2QnMaCVfIl)l|>uRk*GXCyHmS&k|Q(d?<7 z;++#{08QVN9H#MIOkSKFuc2_~VXrqGJO@7!Ohz_jKbJywt8<@DtCe%a z0SYL#i%D7+_xkP4hu1~-R`zn5!)uL5fhNkcLJiH-3M88IX&NT?`|S{2AHh}7nW6gN zp}Nl2x_;1aUwTBlE(kWSh7Aj)bm>n+Ay`+}neXzn&L8&M8;)$}F>)3@6afk}93J)C zK{Ssb?YlemC0h57`|Zab(e4jH_yt<8Px|dw9+_UXFgrIB0>7+KQxNt(Ozip(Z6iWM zpl)J>NA#vMngWf>ii0a#U|D8PusKi-Ike>ZSaH=C;-5a!LPF)VI0sV4MR{H7<+{{}J;*WHaG&c;ilqx0&lSoL>9KW;~GQO-b>3Je_cI zyM3-Q_oUPK$K~sUQcb{D?XF2rOOG?-s)o`VetYBL&DSBknT|!e4n=nm`+Bm5 z#an)R%i&?sJr<5|4J`T_#_k}foS~ue4)D$4q0$vWG|gL>(bBw3%kNK2`0E_lk5}6m zXll-;TD6nQd9H@jdw%<>!^5e2wjlz?BT;qt)|cL{WVq2e|*^T(!H*`>y&KMu=w<_C!u>-bk8^3sp0VXKUZd{&VVO9rL%&K zQD!b@swds$PD!N9f+?*G_iHHqc*GX0B9jqOnw@p^BU*ny|4TeLC)m(Z6le(69ZF30o4_0&J7 zb@=;Xd!b!1eYfmpR$VP@E$KW7FKNj9>9?;xJpTXxgv`v+(xOO!)ET4KHH`lD+xrC}}+}>a(J>p97Iw9xm zc6-x&POm4`o90UIWZ2WaZl}kU5(vgB5>C>Q>UE^^F5PwWxE?wJeg38V^kJ+?aD8=D z`W?359719bD>UQ==~xUn(le3^hoUM&p%q#R@*rtIE=fmV&=HrF?k^Q^BXt}G|5I71 zak*2ym0(dj%Su`bq@LUo*(^;wxqy$pEkS6WK!M>D~G+1VI zdA+W54}|YNcV`BMuWLNPKxMqL&(d)kd!$uMcjGB;rjEe)e?hEM)15AFdTP2W#SPnE zTt1Jtvk9bP?QyyxTN2|-b8~d0;Jm_NuFrMPQ|Z?72Un~kG4V);Hpco#!b}4j* z*zS4vhTe@uCvK6Bg6Cga>*#)RZi%WB*(%k{B1p5Oh zZ@Q~%TyeZvqvMqNk8uj5I%_;tKG#8TN>7KK3!c>U&bq!Pkd~I>^udT?2 z_8%<@9mF;RVZ0!^PS9?ilmz&=oOJEQ8&9J~9iPenf>HsO+6|lQJa8!21v8fhq)Ol` zc&e%c&h)qdoomsNI>v8bc6dS9A$-a1MPJ-;diT@(c5Oe%5j$}XdwcvH+1o_fOKzjy zb;iG>Q@XL+gF8t_A?qJ=M71y76|AYO>?AcVug90-13rL!j?)MGCOw`6qFn8*sq&#G={iz5|HktAyv9R0jpyjS&p7N^IRrn(ZuUyZ7}{|YZW9ORPujWjxeK@pxr+$O zBWM;uvkA&?=PuzkGf5n5rJF-gfhrSJNH=-*FKVi-hqLa+iI!61C@XA{KHybZZMYWJ zB(s(U=)DQSCT*|h;+c@t%c!f%3x{E|1?*Wr;3MORX8c!ha&>^W?*ofBEL!JsrKC+r za(R8u4HfGkSq?|dU8%-FbFQ7cy2}CW;;vzm@KS>25>yN~i@<(gfIBFETB+YE`j~X{RAWZg`gloHFTs)^=Z%f`KGTj7XmxE0U8)DI#`b{ zcCde$*sh?OIFpGys|CJ#Yt2|A9Tbp)+%H+fAyoj*1Zbo_rUetRD6pYrG1^U0P0nQ0bR0WNUVg#=wh;a>b- zPQc#e<*V+gSh;8&gd3WDbEm<0JZZi-I-P8STVxXJU(=bUvvjH0OwgrKt(iW0(_4Re zG&%Etk~28-0@G$nmI^knzi+gE^`rg}lmyTOb^f!%DngOW9o z8)UlEbQiG6Jp^qhaOM`+XcvWhjRrTpe*eC0&n^Z{pYEda;&Zt*r^iPb!R_kMEzg@?rUXc+>t8Xw z3b0=%=sJR~r?7WZ*n8e+EuNb9AV^{=l^Bo5MI|N`xGkka65lm_)FsOMO&GJcG=l?3`oJ>NzaSL`e>pphzUgaImv-9pqY3P^3GDQ(1l>k~ z->v~4?Aw}m(N`emzBI58kV^7^TJreP0qfKbtp74oQ=O2V&72ubHFf*$BR| zpFjG8E(Dn0<9$T zP#w~}1l<>fH1P)6p0_L3Es031d5qaXVI^XCbFz7&4(kDe9yDO>dGtB?(WYAxF}&Gl zo(#YeI=AL2=3{hV4-@o=0c>yjupa(Jmc{Gb&U9BgomN+r`sQpi+`pDse9W`Vvvp{X z5%hQz+MvwVq~VzdY9({A84mJwL9Yeoawf?P?kb4PQ!j>3P-NqB5-mYpuVF)ePc_H*V<=-I)haUz|ocF zOQoKx3xag`D?LhzUFO|gg1*6gqfXTK2zuWj>Yg|Dz2N!cDWHVcN3~gMhiWw6VctXO znn<0S_nPn3fqh8e{JRkZ_LXm+Ue{COM_-4LF+XB{5&)SWH9uy4+zhA1J|^fBfbzTrE8e#an(V)`2-~4%(wEe>Tr4H>|g1$4L?d>~c(X6HvaH+P0qh6! zuav$&ntw9?YzEc;13^C$^bdr=fD2f^xf+n&A$GAk4_?NFV90O`(nPQshKw!xkTWaPL6JOt<6! zSWAW_(~@O@^OHQm0>L7|QoAMBGDAlaAS(YgFYI|`%cj0JKc(ke+^(p%XDPNUfIC|) zC6-dlJWH8nKEZZ^dl1}{;9dmx-fk(kQ~-6riW1z1;J%bT{Rmu8F|wRqtCJh5tA>PF zml64anX_)C+q#=zi=522)WCWB9;kkukOco!B^^V5B#qJj(teHnM}KcTse^V|Gji)f zf#%6^O`G7wFi6;>P}7{UVOadzFuZkjJlZfJ?pq4{FuS1{g#UwX(ja^|bT`^y#_Ge< z=|FvBZ+e>BpaUJhbF#1jV&oB*Z;^&Rzi?eDHIi;OIHO>Fed)33D9Z{WlRGD0i?jyc#~Hyosiiu7@ojTCeugK1GM z1VEoi@X-Vhp`epA&;y*~ZfyZ*DZX@SeqnJ4{PMJPHw7IHGcBiE&goKDoNGA`0H06r zFoK6uz;L@P_#t0qo`2l)cqbvRn%=6WV&qb(ZUO{WFf>@rIJzqdt4(i#*Ys z2Dh^VxmzuFb&1^FmU{rXy#zZ5PNv9B)RCKU^{1iPd7y|OiPYHF%(vmmJxo$Y;=R{&CC-n2i?I3;so z#QH(vJra{x-nD4KVnV*zZ-HRZ@+rZo1gFuVrfYmNI6ZenMlLuiaJvPaUod|a;Ao^m zs0hCrfWNkM87NwQv_PN;@f@B^-~t!JgB#$x?1Norg2nQsJ83|d4vb?!`_qc)fD@r< zWvv{OWHl2!mB2+WfaY`^P0x;#hI|fax;5QJgF0YCuv{@yVwJ2kP)x`&)}B^9P{f%8 zXBk)m%Ut3p9KC3r*XgC&050(`khBi8(pb?t$a<7@uoYx2hu~a-XAnHI-I`<_3P=to zIFI026v^5DX{st!xM-UHMM@kGbq^uV2cI5nJMe2v9Bp-2-7unrj;GaQP0=TD4uM-` zB9pl1tAfk|)JNwtSdWj=X0mlUoxnuykTt`a3A6!+p@`tQls3iM1g0;lIPJ<_5m1nj zSg_7Rv+y1Co@Fhhlb6W%v=&+C>e!VMJkP*xuXliBiSQa#($oNWJMu@?1=htBR-!n; zy2R?&VSzuez<{+!y>;%8FGeQv*R3_y6_jj=0)1?7Idb$qiSb_sFfHwcO_&XpMO^d^^ zm#92i&$C`cN0=xgv0iMw1g7&+f~yFwrqdbJHDspgk3}QFy#?{6?k$K8=nXg+>Wj_y zTDMr+yM(;mx&t8ZBvf@QqmXNL$aB`bv*~ATys(81_{5zOYZt87TW#h30 zR}frh4190;vi&b#{V+AOTB6Ynv2;WeS?{slPw`6>ms=mOKBxn0AUI?I+w)q#Uta4w zT;pR%YIHz)!ul*lE1^z%&icF#X(ho;2Bf|Hg9~2!yFH@B-5rAPs?Kz?lf46ggOeqsgnzlPxB+N_^jzaV%$!Q0|) zJh6VOEq~*+e*2;$x*cOqptb?7$TeyT#B7tX{-k%g&Tp?eye_-9x2jXm+CsbaS1a7K z+;08N`n&ZH>z@Q~AozHKHxjJ2GePU0JmRqmN?#?I5PTBV?$OJN=fFKE!KRLDtRY6| zp|6s|5plSjauqD7!>^D;Y%D8N0wE!rKr@%sPt-7>B`;<-gjP2cwlvql1)LP<{Mzc~Wy7a8zRS>mjPHB!{U8M5d-A>b z-h3avFTp1hda;aYmMeomlq__S{{+!>%Jbq3Ru!3S}`?gDSJcf;^$&*?9<>$3RKOv7$_Z+;9v zmLJED=O^$EKAE4$J9!uH<~@80@8x}bDxb!u^OJb+OU@zqT!POdcoV_k;a))Sg#=$j z@WljQLhxpSLBU-{@c#(DoZu@6zLMZA1aBp{RUJ}Mkuu8>$aK^edMb)DypF0CM|jza z3TOQc$Ld-~S$1JXbzPmqGsBTLH^0JHI^PkfbIhH+v?4Xr=_tx@G%v5Na8}nkLPd_M z8FMRUwYVHJe2(-`O~ulhxsGzTW6sKD6`AD~4o{k++1XT4Rg~p$7dSlC%@xbCvK%v( zJ6h7#R@8ZpbL3_@;4ZR?+%@@*>M}<|YH`JkIbMf%fn(OHtcv>i*^YXbqh@YN#mbU0 zN7-@*9I~#c%uaKZHahBRJQYPNaviQ&4sS+9Mc(RVj&Oq`;GAplNikm%cbynt#xDf< z;OFxT_;MbMTRXwq3En~QRqgyDzJg!E!|h3+yRRa67s1#5p9_f21~qVNCJ*N0YM7<) z+A2q0u_M1AI;a(VJr$lhg0Jb0@EEjc;@41_3G>Z-3%`nAP4IODUr+FEf^Q)B#_jxC z{y2Uezn%x3aTCEe6MPH7Q1#`>|3qdYVzFqQ18gwJiyM--2MEh)R9O1(r}Jmixy9mCU;Cl$( zL-1aL?oSub?4k^iNQ*0x#FQ6Ym4*68kc z{*Ur_!2&Z(W^b9 z3q&94Kym~1wRPZw_K5{RD>VQ&(b6IZ^awLn)dbbQ07`A+vQR@XTwC7)^`t^g>B$~A zS30$NRdcn5o#TM_lbp`X3{Pr`$Kg%M^f*#7)6*T9aNmw24G#anT@We0oD_H2nlzu^ zmr_<+L}8cfKT;>S4RVha#sfD9;|Tt_RhU5VuW`~YxOD&am;Zw+{502AND)%uE^fgq z_z3=u;NRPXG$EbfKM4L)&78NI`iW)Bg0)MRH4mSDy6#jBpMG+q_M0)L=|VQ#fh}YR znL-x9e-oA=EZQdI2)V)x!eYW6P1qrn>z%-e@%7arwb;O?D`}~xJ5zNYEeS5Ag&BY? z`gi&yaveVPh7W{RTH9O~)I>>`!>rjZ6bOYvkuX;%CM*=e6$q;kwkKixM(-*Y<_WMP zYMW3d%oi3A7Ha012y5OZR0s=&MTE5w)=F5OqCToqXK|RqK3J&x(F|-j{@@KW;WosQ zAl#=zInHk%d+^o~iKQhSbkGZ;}gQ#gwjcB2=z752b^O0DD?l&D6Sn^M^Vr3Il_qNK9rB`sA|!64}37kcy*di5QU zpu}QZ?>;K0n%esHhmwc9DwY+LLQKh*^hizlVbrhPL z;1H50Isu3IwCD~2Y-8gaRtuWy!2rj96RY5Lz!xw zW^I$kC48>cpn=PXsoB-bgg<}G)Y7Igtx)oNJ98Bj6uSXRCfv_F#yrow%Ft3y`W9T1SW8Y_$y@oyU{|o#|hORGcqd3Rh8sdbm)yNLV0TB5c-_L_fmz2R%X9 z0fZg6L#RM~gv*61pt4aP&>3nuVFwX*Fx<0WPBq7{gNu0S+D5QNhiC*iL8H+JheR8d zG_R#r_7E-UwtubVK4Aw);Z?#;%Ja0Y6fv65rik*rfmW7NRF+=$52c8NTbMPw;QHn};d7PZM?|VMh^mG-1aOb}V7X5qA7l!n4A2j3VrV zR^THMb^>7?Dj1$*+KM_!>c}N9g?b@T?V?+_l^-4yHbD+3SRJj>3P(OV{7SHa6X-`q z30M8=j`#B#YT@F`jsz2UFtN?!VENNLp4=Q~PPQW@E!*cvNq6Nq;D}YKBi9WFJ#*7C zvNBw7zGnyk(9Co&+G{)*`vBU7Ru8o_6soHXH041`N;@y2TkOcYKxJm!tG-&5!4$Vv zm=W$Tgk6A;35LRqlu6!&@LYHTNENMWA$%x6Rf}E1N5X#LW8o9wQ{gk=bKwi&OW`ZR zP9&_8ur9*73F{$j3Sqs3^$|9euxY!5Z-kzxpYXl#gYcv9lh9N6MfjDl;MaVsE+*{n zgu{f}NjQkcza?-ygoE9R)JfK>qfqx6*c|>YSr%Gd5Li_UHy=}D-4|je2tNWw?bmRA zU~Q-cl3Wf-4r7AiNHwpy7Ru+Xr68kq?R3~txO#VSa~uZ(3f#h7pK%Zt(HvfOu(D+- zTm#*Ks@@q?AER6bFmmBiT3SnKq5fw+oLn}F35#YCR=;+M7SSs5q9BT*B+8;9+C;GP zlL$MRuu}+o3}L4db{b))6E=genS{;SCH5410YQPhsGrzh93T!9LEB{$wvZB&5}1;B z17Tk#>??%*f~vqC2CgwQpx&EKZ>_3Y36Ql~DBL^pSEQAO0`0#7O3=YH zmo^3A3TRCyh-1WY;Khp|_&KfOc*5rDqfA&WQJe@>azv*HtP0+6e$@9AQ$*@|i(V19 zb|zu-+Qc+5ov^bAJG&b-6U(FY8$SJnnVN+&u$wMs9RN66%pvR?!WPhq&^B$1I`h!+ z4WGV9H;~5nv&4Kly4i#+Y8BxtC?yCxQFMYvSiUO~8X)G1kRogq!SOC`6-xCslPOKLj#E{rX zSTO1pgauq7ECA$|5Y~T{*d&IP6C~7!gf#`@)Lw#jgN%3dXm$g=UcJL2EHvIh znMx>V)!0%AnHBv;E{C2}FlOaM@ieAq;?*+obny%(Nj!_Nm4vN=c%Q9SGc|8v{|nsT z2ifudl6by&0V9eRiWi9&i!6Sd z;MlF!irJQ4+V-94Qj=71K(Khip3a;DjVU4fZxa4)GO4 z;=8cWE50qhL)ha9yRl7tPkf)SDq#uuLz=BNR@}O)|A$RG`iHX&b@GY$IfefzH3KJr zC1?}B5WghsiG*#3U6UDg+HG^qQKR~;_#?Fm--+LgKM?jL!k$dnQ?`je0pI;X*i$Lr zwf$e%guftq5h06pTGUiaSQ5Y{NUX$3Cdn*WB&);|_H@FYLD(}13tI7P!k$CebHOG^ zk|axtWRvVt56vc=N7xGqdnIAF5OynJTmS!N6C%?k4U&?m_D{4aK^iIzW0Is1gxy5g z^Qrc~K-2z%r(Qn)oB^-}jBXB3O{Y79;TW#A^DRd2OXH;R;%24@LEL;fVJ`wT4IH~z zV^_(^G_*-B3B34=343YO3`<@q6+8$De4|TRr8L5BrcOxD2F)9fm_>hsW)}xj6A20} zQZ1s>1=^a+CLJS9qwv6=y{uINfA)W{09PAbj_}(jM=S3N(OHfvd7%J*OHp4Cs=B zQ|6!O8YxHDHCO19Hy1=j0_onSLJfI6x^vRt&f{{^^>{DrkTbN6R3=p<5N~NA>L-C@ zZ>Qq@qME70Jr;DB1isXc4t}VX>bfa{QoYn5g``GlrPL&a340Y`cM|qd!ah&fCkeZc zurE+v8dnvnPY%%Xt;t$hiI_?EBzJ7aNM4YaX-LRwX+20t!hImp2I+WdqXfDW?B_Lv zy_T@o8KXIojt2DEE?Df$Y+33!uEw!!K`tzfd~$><2_jqXmD&IFc?+s|RVI#+^C zSO?vzAzdPEmM)bp(^9Y36LvRYZy@X=bmWKHFd=Qx)_|q0QmfP^ZIjxi?a~hEDru*5 zwX{pRM!HtIPP$&&E!`m9DBUF8EZsub8wq<8VQ(fZ{C+E8ZzJsOguR2XcM=v7J9iWI z9>VS+>|Vm&OW6Aedp}_xAS~qL9wO|+K$e*0)x^6HVisLv)^(S4?0JY;I*wV_jaej) zSvro{KoPS)B4!miW|6qEV=*^op*m(sI%eTFW)(SRWw>J%*_gejq^I>oyI3XpobhW z$!>{wgovSDAC!{^>0F-hSw!`HuB*Q1BC79S-4Ip*yMaK}C1o}@`0c4tPoJvl10^|G z54engAx5ra94P5?U8y~%E1#dJxc*Goml8WrF)HnMDSq))`dj8;BaF<*NX9Z`{$3?4 zcw#UEZ?wxM*^K(gR>HnX*!QTD4$I>U@`E+aG?`OgOqbZ`Zxwokt(Thb1KwyfXA(_F zMA%5S$-QZBcDaY#Q-;-*w+Q<-VZoVux1C8s{g|N86LOA=>DIJwsoW1L3pCYIJE`p- zqbZeeabR^BU0s6g$iVowk?^^sDn#?sNpUYJo+TkD2@woeHPtpkatyxj8`ngGPD5S; z*&*^!P-b!xVc%~>{QxVfh(PCsLv=w2k-_THAsekn$#CeYRUS>)4_oE2g#Acs4z-x0 z)S%{2UpAK=kYJIMWylEbC+w$DuT6H#-uOI-?2}Uo`!QiZQ8S~YA3lAfzAeV+dx|{m zfX}AOkp23Mu%E-Sc66eKPY>(gy(s6(Gvt|!DCaRn@@yG`?4EQnM4w2SHY(5-qWdk? z@=!WQQf(hx)2zSg->6^9)9Dpqe^wd7g46ul%W{ES2z?aEbLC>_Cr_S-hRJ0JBHd-+ zsWb%}%3xIyQdtYDDCmY}ePJP~8a7DKwbZWSn1!%zX(YgCU%>dk685VY%_J|7%k{9G zus;#@Ya`0mq(xo=F|+KKkCg**rCdeWZwUJ>VZS5n_k{f+s&Vv~*$9!1a5FAsH6F%C zs>ai}$Tad$)&gicG>&-kMj+ojG!Yz9U>UgB8Ahx!`e;r9*_USn#nmBNP$-`! zpRO;bL~{nZmTjYN{F(ZWpghp-@@ZI7O3E zuq@aGfJ{i+u4tq?Y>kau@)Pnt@Q>vu<)`GQ%z*2`3RwCY(Yz8{zDP>p{4l zS20O6e-BGkA2C7sH3;UkygjuM*1YlS& zZ5Uvn=!#BG%(knD_4t5Uv$aD2_RHVGx`_O-{E7Uj{F(f@{Du6b{FVH*{0-sy5Uwxb z`Vp=_;RXFen9gD&o zDhn|S$en>05&~H(EoVjD2D)(7xh3Sv>L7^j++*+9<`gO2Obw2G9Hj+)uRB6NTS{QNL}c$HePuu=Tr%M%*g%6%~$HlK48=-xh;%CbBhm}edtZYOP zJWyn|Db-4lqS$qlgqw6;RF*O#K1Eq3-ic2|!_Y7wprKQM5%Yr$OPiNL*=~(NS12P0 zmkMlX@L)(?R1~T7t*j(mx{hjC0ebg{qN?ctDAce`X;D^D6g$6)DgNCJgJ%fXS_QU} zU9B9atW(x281*9n@YH8gqu#d48mm+E{ky4S2Ib<$;v6psqpi3 z1(vFmv%s=(IfTn4+zk5bOv2^SpR=g$rP~T~nwmmQdguWQia8B5GODIa=aH=paDzM@ zE3*^f!M&z z#&)l3v$(829F?VKZ(WgH6w0LxEe)?Zv&!W$zi-j3oc_Em=J|H*cZ2Xd6}ZS{hjO*D zOSwk57RY}+;qnPLhj0aiE7WLTv_rW;xe=nvB;^*^(=$D;2BdYePmjUl|%}-~FQkFUa#VrjD zFjbj#p{f<|5j7gdD=qK`w+dcIJ~zg+M|l9EWM!{%uX3MqKjBIUS4y~fgez-T9#kF@ zdMb|)Za(1_P(O&%wro)cK4(p^s)Zgl%4t|t+Z582O-41uSz)lqP0)>IlIb*SBZ{&E z4NLuY7d)RCSQX4`fCEc`y1KQ-`>djQTKlCG(MaGHSq`Sol=e<5cNl5`YZOPNCC)Xp zUUr(drjiyC(C6|Q*tkw@lseoP?>^;KrssBTyf49sUol2pp$&TBcI7qYb?W{pZxL=0 z;TA{SKh95$;Yb6Aj5=^JtJhNUHo!VnL2z|ZfNr#p;Ci&t&Tt8$Jg&v%2~qukX=zhF zM4r6(I*!m+zKFa z)H{yrJvq_T=_|i_KR+-H?aGhJPs-2AFNCWiT##_f2v-}8R+ZniwN9>D3oQNi+0LXK zI5^O`Ko3ORV4=qplq{H&50(XfpO91&YH6sBUVs};nv|sT%h)8x)TA+EBeAQEu^~vo zaW#Zn3aPaPrOPP2lU$M4iSlkXUdL*A1gn8ls;Mj`frm_G3_5N~(rG%i*T%o~e-h{l zxGv7f$=mF4|UDJIg4 zrJlZxpd@P!72%cyQ$d3;-3%G&($3RG_YNhRl2Th4r3h%%6IyMcOiw)6lq|F@p;NNR z24T@jggd#-=C>V7xKjvssyZ^V>!6g@PK&5CThIm7uss2OwJoQ=a;K>y zi;PwcwiZh1W5ru-D{W1-u&r5Z4IF(s;m#o3nS?tFUfWi~zsK5+v#rx0oUQ#AK%Gmt zO_bJsK-W=*hNW+6O-gj>0?Q3MwrQ~Z*%NH1z&?2K2HQz6 zD7KDp=RgnJv_4^w&=LK=I&z*SGzRWx+s>mSJcrWZJa|t>7-XpmQIK=-yTXzeQAq8Gji4w%OV{=50ISF6!XqowloWPVOuWa7}xM zFkENb-2vhT!foyVakK4K2#0K7Wln0fL89l3+>PZ`{skDl#AjjCMk*?#_^R}14 z1F-G0ykgpb5bmmu z>G<9T_p)r=+Ci9~ZE%BIB+G95jc`{-(u1}?nKj#Nf7$-FGlbhkxa$aaLo`KVXYJM00$>=<~4OR!xI6V%)Q2PjwH2X07aKha}xLez(FQofGbmj+X zUOaU+BT)dAJN-a9xOGFKZ)5z;xE6I2=Ybaxo)}sYguMJjLz9Ll))t17is)7PaPDnl z_jaZmd$_vX+t8h@W(f{!*puxO=V^|dc3xuuGmII}c$rDeH2!A(PB{7b4F4McF8>k# zG5;z575@zn=Mv#yphuVvXQ@iy%+!3L91ch=7W_g$XcC%*Rl-_fy|7U@0nYlICY&L( z3VUIn{QDw?&8;)UO0i086xWFx#El{mPZUoU&x1XI7s779OU27!yWL~3y=J@=l+Kf` zfaT_PSZclo7MOR#;__bU5ow?FqV%%#DlFYhlV`~#a=E-jUMe@stK>EEaq=6Gr~6v| zR{mc8QT{{ze>HvgUlIz`es$Z!frzGv6L91&-a&e{(^JP=Q+=Fp7Y&dhQlm}*$z;LOb51u zz@h3VFqQlSg`EyshdzgX2ZO_y!?=U_CxF@SaMak?2TvlsFDK9&$Y8c-Ha!&kpk3@txym$FGk6{j81oP79nCIRTyA zoR&IyIz>4pJFRxgbjotdb3! zZE$UO?Qzw*?sYxtdd>BY>l4>!u5UpBAQ&hR6bxDh3Ij!eqChdASkMYkJSYK_1WEy= zfmVYuL0O<2P%bDRgaj3U&>%913aSG&gJd8xXftRF=sf5;X!?J*s&0$j0^K6rqTL8? zC2kD2PB*Qa&TYTjakrCh58Yn6y>fSP2fIVuSGlit&vdVFuXV3;*SZ_shulxNUv&R# zsmoIEQpnP*rKqKaOM8|YmKv8nT>5h9D~~XbIFFSc6&|%7bsoJQgB~W2{T|0XPI^4_ zc#6h9dk%PR^gQDE z9_$Z}07rtOz%k%d@M>@-I2*hcoChuf6TxIK6A6ct7|!_!RgI_#F5y_&)d{_!0PtSB6)<7tw2-7u}2L#q#2L@x7|NgkH5? z8@+aV9q~Hrb;0YB*JZE!Ua!2~c)j&{@Ac8^v)5P1e8@t`Vu%C82?BrsAs~o1#0TOB z34stGBnSmUgRFzlAxsDh!hw`QDj<~*0i+sI0}(;QkPQ$Cq!H2#kwID^?T~JW1~LWt z9kLVh7vvV?4&4cApbI7k&QndFAuT=ZmkeZ?Nw&UxY8tm*BhJSLWO5yWjV? z?@8a!ezW{$`=$Ej_~rU>{i^+H{M3F%zd^qtzhS>ket-Dw_1o`v(C<&bBYwyH{_?xx zcg^pH-%Y>Ues}%u`#bqZ`xp7w`ET?;;(ylvoc{&?+x~a_@A}{Of93z$|Be6KfEfWZ z17-!x4sZ?t27m&V26zT|1*{1`29N`&0jz+k08xN6KpxNsT?P$UzkG#`qD7C_O^A}9_@fRdmTC=I#}N{2F`EGP$B2CaZrLIu!j zXbrRux&hh%ZHBf$+o7FMCA1r=h4w)Qphl<(ItrbDTA_C6uh1>f?a-ajKcM@d2cd_d z$Dk*nXQ1bym!Mam*P%C|ccAxSwJw)#c^e_W#5H<`OgPCDA z*c5CtY%A<{*e=)}*nZd{*b&%q*eTdq*ag^Mu&b~euv@UZum`Y5u&1yWuvf5uVees| zU|(V1;WOd0;q%}N;Y;97a2GfTz7!6Id&B+UPS$2O)zB zg3v*yg02PK2)Y?`J2*4AFc=ez4aNum8GJtYV(?$VS3=f=phJp6a3O?{qal|ARm3V| z-^R^|n-w=ZZf;y_oF=X}t}m`X?!$^-R?Jy3Z^eQY^(*8n6f2Y~)GPj3@pZ+2D}Jn; zxpMu=_LcILij~UvCGj5d;CM*9PkeK{D!w~j6R%qZTIIhAx(dE3c-6jDr&gU=b#B$g zgw%xm1Y|-%0w!Ts!qJ4|2`3ZIBt|7BC#EK*CuSz@Ogxf!Eb&C*>7>l0!X!)*Hi?jQ zGU;m4^`z;f+sV}AvgC^7%H*o#yU8z;UnRdue)p5f6{Uz%Hl#G9yh-_YP+T zYC~#Msx-AV^+Vb(X>-!%r7cYBOw*?gq-{(aN(ZESr~9V+r^C`G(zm8>Pv4Qgdv)aM zq}3^_(|)eGcCJ3M`q=6dt50X-X5cf38RQIF#+i&888B8o3kV5aL&=3<2k3+#;#3Yo3VDy+MKn&t=+fwz}iD=kL1SW zrsk&SX5?n&p2)qDdoA}y?ybBvdFZ^NJX{_z?_}Q9yt{c1@*d?q&3lpeKJQcB*S!Do zXXMYy_sUGA{)zn4`DgRb=U>d9&i_0A-~6xn z-w`trvk~(UP6!tS2;q+KK!6c(2nwPMp+y)GX2dqcUc>>!pNOM~6Nrn5%ZO`;8;Dzo zJBTNUH;6CDc}ORu3lfA}iUcE}$UtNWG87q(j6}vGS0hnK0+NiRAxn@rffvDxEWK=E+gTkSRC<>|=#X*&$Dp3NI5LJt6M0KJ1Q4^?NQCm>kQ9Dt8 zpbn#sp-!Ssqt2l&pk5TX6!;co7Zel_3+M&>0&zioL1TfmptV3%&{NP`&{xo3U?}*# z;8wx&LYG2tVNhXgVRB(wVMbwA;o3rUA-0fENGhZj78h!qAldUPXNif%!-qvdD~+Jv^D zcc2fT|3n`}pFp2RUq)X;Por<4@1pOc|HA}eqA&zZ38oSw#BnrujAJaA zNz4@HSIlpi-IzZy=P}nYH!*iG_c4EC{=vM#yu*CJe8PMwaxF?I$|({QtuK-lbr%g3 z8H-FsqeT-%zZPvN+FrDyXjjo6MTd(n6x}X*T=cByWzp-Rw?*HIeqd)|XJhAK7hnNc zZ)^}Y7MqMs!)9Q!uxqhsEEY?^lCV^4F_wcBVOy|0SOaztJB%H}nz5U)Td}`mcVhp* z?!_L(Uc}zSKE?iveUJTw{fhmLn}=J7TY_`M0dPQ^7cK<15|@cX;0kaU91cgs(Q&0X z4z3Kx!|`!qTpO+jH-xj`CUKi^zu~sw_TmoU{=^-@9mAc#UBunNy}-T4eZqakeaFwl zFT^jwJK+I%ARdJG#s}eJ@yYl!dP{pYV|Ii138)hVY%ZhzKOQ5j}`rL?2=haTzh37)gvKE+-}tvxpcXg;-3a z6HAF4VimE5SVvq>ln@(<9Yh^*g!n6QC-D#BKH@>*Vd5F$dEzDFW#TpB4dMghKg3U@ zIV1;?GYLp?BYBYgNib3nDTEY8iXg2dtsxbXXe2hNjKm`eNJ5f?)I^ezT1o9BIY~n@ zk)}w$lXj8zkoJ=fkxr4$k}i-gkuH<2lJ1h8l0J}rkY|zSkmr*Zk%444vIiMVhLC;8 ztH|rfm1I46n7oPn2l+7h82Kdm4Ea3yI{7B~4*4GW0r_w8Kjd$e1rz|qmEunEq(CTe zN-!mq5>APvL{kzd*_0v*m9mb)ps*-hN;RdHBBpGhNGOdI1LY9qJmnL0CUp_jo$5;s zpu(xa)KF?HbtN@{nnX>drc-mNIO;kok1C?Br%I?zR2j94s-|kFz0^KxKXrteHgnEIOfowkSuq`A>NXkIiQS`cj+Eu0ofi=oBRl4)yc z7}`1-msUaJ)2eB;v__hg)=F!q$!Q9jnRb?Tvv_v#l47^wfa37tsN&_tD~eYYClzNG z=N2Q1QN`$DY%#vLq*zj{DBfB;UHq{4Q3x$@p{LU`>DlyL zI);v;6X|3+jlPb~rPtD%=t_DYeSmJHo9Lr-JN;Ms7Wy{&4*D+oA^K_hW%_;kbNWB@ zH}rS(kBk|NUl?;4^BD^niy5vA2qT0M!-!+VGZGmojBG|O1HnKs(2ODm^(RdzWHd86 z8A?VsL(Ax6m>8ps35JDXW7rwn8T%Qh8J8K?7}Jc~jC+h{jF*hpjDH#L7#|ovm}%31tQ{LzpqlIA%OEftk!qW#%xk%ymp2Q^Z`)lrWo^GG-T3&D1b^nSIQD<_L2$ zb1(BK^91uW^BnUcbDDXZd5`&k`H1<1`G)zubbhI8DWuf5G@uk-8eAG(8e6)ubX93$ zX>w^+DW-H?DYvwulwVq1T3gy!DlKg-Z7=OC?JBjDo-4h@n!|End9vWF7*--Hg_X|A zWM#7oSQr+LMPQLw6jmvV&yuj(SaMbuOU=@-HnN6TBdjr&nPp{dVeMfZVO?ZRvu?BQ zu^zG>vtF~_vOcgrvA(drvFEUz*$_6I9n218N3f&W3G8Hc8hbT6lbyvzu__PSrNX zn>kxKzjJnR_Hd4Hj&n|N&T!6iE^?+h4>>P6U%0<;=W-Wt7jqrC?p#kUgzLlg;|6d; zx$)dJTqL)UTg1h4Nn8e(#pQC#xjZhPE9T0$-P{4Lk!#|PawoXIa<_1|b9ZoeasS{R z=APwFb02aabDwcva$j>lbH8zal+7%gT{gGOvCO^9w=AqIx-7PAWm!^LYT4?t%(B8V zOc}O}P`0b=XxZ_ylVxYhqsvo%e%#J2N0b+oW6CMzwDOX2W;wf@Ti#Y~C_h+!qx^CC zv+|eaugl+-zprqv@Th=SL{%)WSW&U6BB>&^BDVrjQBZ-Yz*P_{$Q7)L>WZ!kbH&+; zs};{H-c|g^3*?3H!g!Iq7+xGNo|ni=;idC3dD*;N9)efE!|-rCB9Fo==Fxdf9-p^? z*T(DN8F?1oR^C3|3Ep44JG^JS_mwj$7gd5PeJht$##N?OA}W!UsLH}hS|z)(tddtL zs1#O8Dw`^0m2H*sN=2oma!=*`%CG#{{CWI^{Kb4XegGfN59WvRBluDLd_IxS&uG7xEkVQhqDHgRkJL_}%=Cd<*{|e_Ak0ut?x8@D&6LumXaBET9QW1WW;2Q1(+K zAP@)zBEforM9?IV3EBj5L6<-+&Yk{zs9i!ToYOoQ4?JgTeGqzp(eQ|ttO+Us0Lp{s-e^r*U)Q9 zYdAIKHN2X-8d;68W?RjPn%gxWY8`6>YN55v+Va}!T1jnZt+KYeR$JRw+h03TYpJ!> zPKg{uo+2NSzX&D@5rv5&MbV;_q7+fKs6a#&F-2@qnTRK<5!Hz{h#EvqqHUscq9>v^ zqHm%fb+hW`)XlG3RJWwgqt3T3pblOaTo+jvQx{hkUzbqFsMFN#uRC6MuI@_RgSuyR zFY8{{y{-FF_n&x%_!sdUv4hx23=;c`gTB7$;_k%fvjf zKr9q*5I2aM#Vz7Cu~OV89;%;RKd;`Y9#RjjUsk`eKC?c%KDQoGUr>*!$JI0HS@oRy z^7_hpL49?7O}(N1K>afbP~s(lO2QXXBa1^Np7puQXn7yxDlC@qXjq zjZYe%H_iBY%{jMee$%2RhbHGHV3S*uN0V2RcT;FnN)x`RqiJK)sitd9&zrt9&uw;T z4r~r-4r`8Vj%ki-j&DwEPH9eW&TJ+&Q<{sL>CL6h>}GCrMKiy-y1BNwuDPpuqIp;I zvF6*&Po*=Y{?e7w)l!rcEyYR+QnHjPt&(n#Hc4gDHfe`cCpAb1rNhz*sa0y1Zj$bi zo|9ge-j}|TzLS2Gev$r=&63TL&66#a`N_g%QL^Q-6|z;bL>WUSkO^fX*?O5o)+lR{ z^~m~V8)ZYX5t&tHmu-^$Cfh2zBm3Cm*y7&e*#c?tX$fsfXi08KYsqNIYFXQo--2qP zwUo3lTi7jSExZ;%i?F4(Mb@HjnQYnLGTrjIbxx~iYhY_+YfNigYkX^BYi4V9Yi?_P zE2_1ymDI{;RTc5XiwZYmV+hW?{+Tz<1+fv%n+7NAo zHd5ZYrfBPJ+t#+L?ONO4ZBN>swY_Zn(EdyN-1Y_Si`zZg!RFuTM?Dl)@&pKvw%<1s#2)hXYsq>X$iDIb&rU+L=DV8f%C{`&}E7mA-6uAn70;M1*7z&<3 zrf5^h6X>wkQ=!m9j_KtK6s@QVuJ}loQHd zm0OhCl{=J&m6w!Pl-HFvm3Nf)m47RrC_gH{DF0KQ1#% z-L2ND`_u#KjcT)ci+Zp6xcZX%w)(01o%%=j!fw}YpYD+E*zVNs+-_|5y6*CBQMa^P z-QC^Y)2;2ccH6su?cUP8y?aOZ)9!z}KX-rY{?Rk5XLgTs53t9r$D?OiPgu{Yp2VKy zp0plB52~lIr>Li-huOpK;r5*DxvX*2fHe?}kH%lKOcSn&(!^-iYH%97hM*y7*cyRG zs1a$_Yb2UBja<{EQE7TKT8&X-)@;$7)Lhlv)jZHV(md6?(7e}t)O^-_)qK~^&_cAU zv=nWvR;F#!%C%ium9|?uuHB;DuHC8qL%UCVK>L^WmiE5(Z|xK9Gwnz1H|>w!S-tam z7xpgcb?kNT_3aJojqZ)@UD=z|o7%g&H?tSni|^(1HuU!QZtLCAyQ_Ck@BZFvz4v;b z^uE)%>HKw2U7#*R7p6 zMf9!gE9qnP_4FC~4)z`Gd(ro~?_1vw{Ve?){XD&s-c|3e_tbmogZ1J1DE)GMygpH% zqEFMO>vQ#ZJw;!vr|a4JGCfbv*NgRSdcEGDAJh-)$Mj~sO+TgItUstftUsndsXwDX zufL?fqQ9=6)_?7X^hfm<^z-{w{agC4_CM@@+y9~ebN{#g9|N-n<_ydqa2r@U03Prj z@EZsifDHr>HRK_+bDTJPlw2#1LXgF{B$Z4cUfV1Hw>Xz!-1_qJd(l zGSnDEhV_PeL!&`zXfd=IGia^nhPyfM+3VoWn4j0Hxt5o;tENk+D@%vfRM8>@^$W3#c-s5csngT`T_&1g3s zFrG2~WxQ&||2g!r9!IDAFVEv$c zuxGG$P(L_4XdT=%xPS2E;FZBAgU<$E489tCGx%i)IOI7LHk3S+IfNK08ln!Z8)6Kx zhU$k}hq{J(h73bHhV~8J7amSu<71Yw$+4-iLt}@>j*XohJ2Q5EeD?T~anShEaqzhJ zxZildc;tA@c3X0Ex+TyEx>H<&xj3bV@GW9~KU%?7i@ zJZau!-fZ4t-frG$-fg~MnPKs^q+2kSbryz&W#L*XER~jKi^`(4^jQWhLzWTCxW#PQ zWZ7ytU^!wrZaHN+Z@FZ-V!39yZh2&RYx!XLZ24ySVVz~2V+B}Ut?pJ&E5zz+4Y0zj zN!9`@)=IOMTdS?LR5%%Gzrkv6`(m>y&kib-Q(^b+`4f^@8=9b=rE{ zde8dA`rP`D^^NtdZH8@$&BNwp^RfBcV75Tpa$Bq|&bHEqw2^HzTZxTnW81hkk!`(A zVr#O=Y^^qpO=s)3ZL|&9hHaZ{zuC6gcGz~?_SjC?PTS7eF4`{JuG${j9^0PTUfN#U z{oIkl}(qYnh5;*BK=`-m!37rg_44zD#WKW7F<&%Ar1Cz!{)8y#n_~ees!;?oQ zk4_$+yfgV?^3~+OlkX=#O@6V@v(L9LurIQ^+db_NyRSXK4zq{bW9=*L3HD@rsy*Lc zXfLwk?G$^loo;8^>+H>Tm0fG^vk%yZ>?8JZyV<_ozR!Nje%^k`e#Jg*ziq!~e_;P$ z|1q_A%6SSnBWUWv7V$%l|)a0{ssW C5DpzP)!y`uoHG`+5cD?d;6X&W^0kT7a*3giSRiWaYAoX%?=i>$IRAnkXaz zNkr0+e53#=M2e77q#UV6>X1gH1!+Y_AY+gT$d||zWGXTrS%54=79op~<;V(TEwTmK zihP4?L$)K|BKwg2$N}UaauoRiIg6Y_t|8Zv8^}%M7IGW8hdf9AMqVHa0P#qwc6D+6(nT{m=pEU^Ea7LBr7~G!{)jlhIT(1IEkmo& zI`j*4BsvNmjgCjBpfk|<=u&hUx)uEf-G**Qcc9;*JJDU}KJ*ZJ3_XMXfSyM$qd%h8 z&|By|^gj9v`V@VJ{)zsDzQkyZ!yGYf6>6tR!!ofPEDtNhO0b`?U$F<+AJ`-88TKdk z0(*)5i@m`y9LGtV!a1DB4RIs98*YYM;nuhvZjU?SPIz~`2kwD;;=S=cxF6mRAA}Fa zgYaNH9FM?b@K`(%Pr_62G&~E>#`ExeycjRR%kc`l2Cu~%HTW>R6>q~exPXtsN8{u1 z3HW4u3a-Ux;B)Y~_yT+(-ia^4SKur0wfNWgMtl?g4ZaQEiGPRh!S~_^@k97A{5XCZ zKZBpgFW^7oKjGK$8~7dkF8&MtEB+Aw1AmG?!~e!#;IHw236#JHDM1n}!4Y!8kkFVC z-3TS2A{+=u!ijJuTnJa9JK;n0C47lsB7_Jf!iXdynHWN(5cxy_QApGfwL~3JPiP2% z0K^x>WMT?2m6%3MC$z*2VkXf+bP`L5rNlB~IkAG+Ol%>x65kNpi0#A<;#=YnahNzl z93?Ig7l}*6Westc_?fsz+$Vk^ekC3d&xyZ@7ZO4ukw_(^#8_e?F_qX$loFN1LEk|jeVd6IldfuveeBdL`PmyD2TBwtD zO6EzvlFXN^l&q4hmV6`GCfP1IAUP;GBsnb6oRgfFT##Ip+?L#t+?70*Jdr$=ypg<> zB2rX}NpUG5l}in!Mp7H8t<+BHCUuwglzK?}O9w~?N+YC^(kN-PG)5dCx0P-B_EK#k-w7<$v-FwC8bD; zqG*btSc;=~N=6w_a>|f0qKqjM%9QFxnNjAH1*M==lr!Z*^`rVz1E_)2AZjq>PX$mR zR45fmMN!dIJe5MFQkhg1m7}55Q~^~+4W-H{4JA;3`hprsjiN?VW2mvzIBGmKf%=k~ zNKL0^QM0K<)MBcG>ZF!XUsLO-_0$GxJGGD6PaU8RQirI+)Dh||b&fhuU7&7IH>q3H zZR&UGA@zj%iUU8`4I!F>OXW&>9!om3F6l(*AS+9Y_b!!E^{6N{7+m zbTnN^7tzIZ30+E;(L?ESx`M8xtLSQaEIp1MPfwt~q$kpo=*jdHdMZ7Qo=Ja2&!;=- zCG^+yI(j|5f!;zNq7TzY=%e&8`Z#@pK1rXVf1==8-nQ>v(2IMJy=iHi}hxG*a7T7 zHi!*l!`TQnhD~6HuqkXRo5p6bxojR=$yTw|Yz4rfQO8dhKdJC+^CPG+aDGuZj; z0(K$0oL#}LWH+$ivU}Jg>dh{>w=?DMxY!oSbvu z962Y>nRDS>x$ayK&W#(y4d(p004|UV;)1ylE}YBd^0<7ifGgyRxMHq^E9J_#pZX!2}o6XJP=5kB8rQ9-Z6}Oh#!fogFaC^A}+)?f%cZNI1UEqG=u5g+s z+*9ru_b2xk_niBid%?ZrUUC0$Z+Mg^c#>y$OWumN<`ujRx0$!)d+=_&JKvM{;63@? zd>|jh2lF9(Bp=1c@k96&KAX?u^Z82f0@6@-{SA{zwy8GPx%-88yO*E zWOA9cOd+$8*~;u>PBLd%51E_HTjnDhAPba5%A#b^vSis1S&A%2rk3T(N@ZoTp+g+1 z8Y?Q!AvD4uEW#lMh*4^6QqS_DmimlX?HSshz?KL;+P~!5rL_gnE*yka0J8&FBrILXzP1iWTsn|2!L$R35X=SDIV2jgk3nLQI3!-Xi)$s5 zkYr>ClA;~VTlX1)q^89t#pMqzDrk5wN;;B_xGX_3kW3^?un;T-t0hPdqDFEBYr#fP z!e+7!$~DDE$znlq7SVAlLxw`p1M2GXS~}rJ>RGW%6-ZSFQYqL9_WJJ{q;|1jr>Ce# z8ggQjVj3Ir@+*o&!X-$(o>a$h7}AvW0i9ITumqMgBdJ4Tli-J1ZrawS@pQBE9PVb< z=H=A=hu|i-FGXe}bC9{nJfWx1Pv|d{L)EGc_ZoH} zOLSw{DR^`sO9f9@>SbizUuZ%q0b^08R?C8|>{XNxAWY>SFb|ZTPU%?Mj{cYrCbqFcxKn@E71jTve z7;+pr0S)LRatb+(oY4+4wr2(lgM@*?P_;Z&d&@OiyVcm*{ycJ7XEPU&i^wIxUkDHa zmmohPKOt9yAR$-?fn9iNoEeSW(Q&>jgbIrHlH5oBKwOq1zaYON50KxG-;swxm=G>R z2$4dR5WO6Eggi!`z~3X}Pa#H#6%ybtMo5GV=bBuxL*5{@9mrcDPG?svilI14q(djF zZ>TG)DiPwfv&?#EpaM`SN~+}sAB-YN#4mxxl;{BZZ#kSpLtjK$q;|dB4CPQBm7xZx z95qCZP-D~tHATCjW~e!8fm)(gs5PoUZBSd(4z)*>LXway3=vX> zas;)#kSpW~`9gtEC=?0BLWxi+lzo)f2}-H%W<%;^cZKk%Zq6d?2H{QJlp^c_;Va#` zi?BC@IWs#E?gL?|Z4VLlg|M%!zD|D#&oXlt%LhUDn3@XdBv&4o63z z8dMN!gj%6d7$%Gn#zGUCZ`DKlx0Rdrpp~cQJ-0FF*#EMhfKGhxjp!tyPEhHMWGZw= zbQ(Hcs23VOxFb3fo%0{Z`rwZ5*)KpB|EI!x&qIB*sIhhM`)bS4uXTM|fv!YXp{vm~ z=vtvkXck(8R-sL3UyiOr*P|QIjp!zHvoKs3A!r0a0K#ZNrIz>5E>@XoUn@@~q2D1@ ziv|1lJa?me{@b(t=z;$h97d1)x8OK>680TEA$-w+o)Shvl_?y0Xi%N6(daoCNfYy` zN{WK28>&@1`|^*X%{!vlIl z7}q86ptsRG=w0ND@TD+87_SRD8SkR1OdG5)vi}u*_%86Ezl(uq;u7=^^bz`4m?TUV zrUq8Gl!jLoVUFezq&HymxT{?pi1LJiO zqZ=l}3@|xnh#6tVm#H{3)HKxF9Fk8$Hv&WQ}N?T~7>b6u^CM*|L z2rECt1I!sZz`J;Wb%*dfU&q`be8Wa`7|avG@BAL?1>tvokNH5j%vSVQ%n!l~ZAG8P z20-`+TPK}^VS^$3##W30SRjPo#RDt^!dZ4=Jix*s{4O?NQ4n7Ht~?gP?_vX%0O415 zV(h_^A?#)^#w{!r!Ws6CVp|yy9%DaHgtH-h%)XZh=R%lJ28eJ0gx@(oR;;UIX{nv6 zq>@Xq<%r9A`9Q1;8;X@<6<8%!g;irUSS?nE)ng43Mq;C|(byPlEH(}sk4?b7#3o{su*uqa4m~+xwXjxLCu|Tl30t&ojsgxF(H?Wi z*I<{iAF-dXE7(=+8g?DKf!)MzVYjh60CfPUJ3u`F+8dz00PPRZ!2k^cXcRyb0h$5O z9DwEnv<#pX0IdONJwV$4ssZRofQ|*|1b|Kg=v07e0XiF?^8mU4pdA2R2GErNT?5cf z0Nn~o(d_{J4xqaMx*wp&0D2yvmjQYepf>>ug}4vU2LSy8picn$7eHSC^ff@=0t|Lo z0x$|-EWiu^W(=@y0J8v?^?xQW*e~L&WQ|&0sRiz_+Gu}!lMfR^?4gMKS}o6k89he( zZh3vIhVYBwS>(Gy6I4YKIRm-bH zvNbWB*1LyUmkLs`!Zx+MOqA2Vx1tM@6_GpC@?4SH)vZf|xLic;)W*3j`6vc%Dwci^ z#faA)3A5~iu@o`8wIkdsx|G_ArF*rxA@SO%p0-^YcMviA)$)36fLErr*rO{mR}pzo zJI!Nc7iK-h(!<(Cf$>_(%drclmxwv4&2jP5=6FVQ!T5@p<66|uOS{{ryLN7HmyyB; zirABC`3M*W%e8&IO}j`KC?Zd*<-?$a$=cKY4qcF8BJzj#n%^_d-nh%G6^|Ct=d@M5 z>$?b(AeLSb#q7~1q6@ne5pzi`uhmZTNz>l!W7UN$Q$+r#tqt?iZt%C&>a63x`pOk+ zT+vSUDd|F2B$i$in;YD>YjZdUpMeHNBJYVdMVxUX-)dl8@*k?LF)+u83 zAY~WQ4iWhmv_e0vI>=J%HQ2KYcDacCTU#@!@;^hrMl62`8*J!OdxKc|kLUdlA;Sb`{}U5&2eoDI>}KNcU*7vpOAaP6%@Fu??Q zbRjyb$4W#Oy6H>k+@TBllpak&i}BSGA(35B=kzEVcA&aT@nwB63k4k6MT%?sVqWJS zI^Q|vZrz3GwjOH$Z39MyFq1B*`+AfiG>|X46#uR-HWp1eDk7pwQ&03LQ?5I@(~FcXzHKGL%b@jrT$g<4)Jjz2Vxk5~dOV09|CQp*cP?7S$8k8BBv z9;<*xnX2vC-Leac(W7i(i+)-V-9?XtfgWWK<7BedE5^JFm5Cmu`e5a2Vw}Cq2y3|3 zCCmv6!jiB8s3Sm~0O|}-Sg0Uu2wTDqpsoPz4$vL|b%S%t9}-%%?Xe~rDx=NI*Bh?p zz4{J+H$x*nQnXO zhlF`v#4O?~9ocMR4l$R2bD3y>#sD-Hpm9ry`NRT!&*A|JwIYrPq-xW4OS1GPRuXVg zvy@mxtR~hFYXO=B&}4uP0cgrnVjZy_HnsQ^tA8%&1{<|TD_6FUjGZuyKs?Ird> zvI79k1Zb8>mJP{zB|CW&$B5IPB|Ag>0Ljh)R1MHvkt`3AO-Oe3B7P*U>&Sj0t`Jv= zYXB_(Xdyt009w41xIx_1cdrDXr60T3s@dhSW5tgXr=;m@u9xpellzT${8?sCh^KmH zLjhX;jv2IGj|8>WDoy0n$Gg`D<9$iI`D}0Ann)1BR)PVv5}?pRpj%bL?$D_&o|J^w zk$q~gBr=JCUVvJF*1hk|&J-K3ZW1d5S_edNllMEmRW5+efxU5*?D{R^&Fnj*4N9Ymz$lB*L$r=!X(i;c|H}3 zBr%d$$Qc?cHwvJmMb=}WK(%SEo+*+{9oeUBK$0cN)@yAXK*vKWUC`0yrdxYS3MFMa zs!!^AsH9v^^(8=|SLvzNrYkg(I!V)K+iI4y=&2?Hbjmv_orξpLf{n;Lmk&M-|n+DM7dUnxbzzpoLQw9F7@k%C3w4ar1hGZsG9$d`K0O(A} z3ZS!~8m479dr1~ZIzOw1C6c9j3FZKF?t3--k^$AQMzZ0va&MGu(o=l}(D@(Lpcq_F zKKWH2=RJG*eo(;<$u1qMPa5HF$sQ>8K7cL+=ps>WxRIm^&|b|{c}tE+PJWi~l;kud z`~jey09_&yE`=TT%w3|b19Zjv4o}E}9sXJJ;Ike6P4c^*Y860N zf9!BKew%-VkvL91A47xWndAlJB>7YFm*lzRZ-Bzc`ZYk;0d)OR$xF#AJ*N!-g~3&{ zJGILcx|7vg(>?)oT%M{N7^w;=paB30rc=vX_7QqFUApo9(^ZxKBu_wr_=-qL32aGm_03U$&EQVnDT!{-HnUKH6}f;{L#7jNlUDcs%s z%=k}|PKIPt0s13Ae-g>AK(hQoCvWL2sW=Jvq}j}u!byM>dKb)|*F~}$kZebx%1gRT zx*E3jNmG@sk*?J%>lQ$7LozY2azz&2(#_KCpOtZk^jp~2cL2Q$(4WP|?!m@Vir~oX zlOBd-pB|Yb(xdvuegWvO?;BfNWa%wEBfX$&?2~%DD7^$5gWC8FpudZaJ%o(~6uWpy zZ%FTcmh5NgJ$+-30Q&fSV{?mbyrmDNPd`ibO!_Bm>^VT60`!^K*q^YmUy7Z*q_0W1 zbNOjCk{F5W8-tWE80ghFxJ02L8PY)4*ryzZl#_;pEoltUmjHbwHujI0W<9oT_we14 z)#l~hOXo1YUVVnAxApGj<)u4)dpAcXEl3+3<4+j_X-nGa#bN&i=$rTQ?x9A2*A*HRH}gQg{=v;zdLH5WSI0L`;h%~t$r%qlKsg6dU70K#7FYOr;TUd z*6PSLWDp4tN8ue4|Vk>tH}D#k~NTxkgN${a)23%WJZwe z>`XFsf%e#*coMn0Ye8{rom*i9(w@+nR zavC{Z&&>>A=I^*^Ys)RY$hqV~9o472i(Eu5)>Bym46YmXmbzb4ng z4sQUM0$?^`hizepr4>pS@*5JyjSg}f!0bE79RO4PXGfIWC9YmErFM6Hymsew1K;=d zyq7!#nP#PG5LgiNy6xlYf&h$d}|R z@*naw`7il~d`lq|N?{Z<{yqTn0a#yv`2x%jVEq8rA7BFjHV|Ng05%w4{s0RASRlZH z02U0e5P*dOEDXRS07XVd?@0H&K=-n^UKxo2ecTHgwawK(_)(S=Tpn~efTL_EJJ@B) z7GO~wls&*={-bBgNw4QRHg7OamSSrBM0hR%QE6002L)Ts0hl_Wr~aNnGnL(`yOf~a-Pp~M%BAxD%e{~)MvOYBB7hZiP$d8> zgoo>|8m-f)3aSw?T1iz>Ra7-qL)B7sR6W%IuwsD0YS7`!05%k0(^v}HFQu@0XFQv z!!c7o9E~40`^{~rIn-D1SdyAc%>!5yz?wU$`4qfq(gLtn$hudvlMA(!S_x0usAbf0 zY6ZaB0X7_9BbHFBsMXXOfN22s6~N}h0Rhbwanwenb{Vya+DvVswo=~!OaRzefPD$D zDFD-cI4-4jP~Yo#eoO77z5^J5M>hZ)xrEw9?WXnsY!tvo15CFl8_?3Bp^j2;dj9{d ze2O|vodMW5fQ<*(1emq_5&eG&c0&Ri%PI=rc_wv{`sq{jSE#GhHGoY7*d%~W*3rxL z^ojlKQc{Yl3ahJi9Qwm^KI#s2{}U|8o7At=1JP@tx~B=M0>sV{L+s8{e?Xc?)Z@*w zTdUyN)O68ssHfDk><>2)g7X^kmcXJvk<=7;F$I3T7xy{!FFc-vx_Lppq`ss6pf*AxBGE-?6WvV=nSkp~GIb4@BekpH8Jz~}gnZ}0)45^T zMB1KK3hw&^I0v;B;Ea+J&I$*F#{gRdunwJ7eApGHo%L3_xa%><$Bj$0dzO)}Aqx;jnbRGsU zXvJ#<7&E_ywL}*aRGUX@EKv;|0nd(U7>!qaI6S6f=rqJ-H62UG(eZQwok%Cq$@CC9 zg@z$&9l+KDYy-eH0&Ek&HUn%6z_tPm`oXr3XVO`8Hl0JOA)JRi0oZofAhrYG zO#mMO2unaX!UDnto;j;BJ>VcF=jBJ|WcEza(C?_V4-aUqqY9P3boa$J?u4l)zr{!I+<(fI=Y^2pd0C7bQ9f7x6rKs`xan3 z0S2A$dw}f%*lvJ92iyy=eE{3Pnr^3uBX;lyZ{pBj&?D(lG<3`Z06PdH53f5I2N*QJ zR{&1}c&X0t?1GDm^BOA};*09)%j&iAk*3-yUu3x$1{dWwmXs9LCDl}vHKddkHL2w$ zALNgLm#NfYMO9^uTIEPrM|wI9Hz2ws8hREz2Szq}Hoy*b&~pKH7>0&{qddas1@s~v zVj;kebkK_dc2rO$$K;h&z4Ik{DZLUgT0$?Qm($PyjsfgAz)mcoSHbSUQ9r4Z{~?TX zhbQFa(;Ibz4TtU2$HCr8!!Wgi{)XO0Z>M+A-_kp2sHxKcgK_5vfSm={Ie?u9*o77J zE_ye;hu#Z+`>{rVT?E)Afc*rp>*D{v3;UqRUw%1RD;c9mqfgW45u;Df$mk37Mg45( zGQi-9LpK}p5j}Oqk9Ueb?A2VLuhG|`x80y`(zoc_^d0&x@23vfGTn6H?NcZ{ zr8#4vbr|nPFqW`y$>ZI%#*>|c!~n-Apq(%_0Q*BwKqGF`Uu=OF62%jYK7D+Kzh56Q zO2z?NC!+$`;||6VU{9b8co|vvFs|?p5!0RN0kEe4`};#$WO_1QFdH)-j3>aJ0qoCC z#+!lR=P!UghgQ07Wd9tdA2aZOstjTV1MCIBUJ5>N8Uvl`y|3xQg37<>rkK^)h%s^sG)MiAe@H0&sgl z1;c+sQC(GDL(zMVX-pRMF(#eKU@`%Y0vrQ4zJ$p}o-k^F6L6?-TfL7JFhwv~FvS3u zeC%@>Qwx2J8OoG16-*^l#Z)sj0G9%s1ULn78sH4TS%7oU$C!GifoWuhF-=Uf&c|>b z;D!LV0=PB66#%ypoouEz^93_j=U|^&ZZPAR@q{h&CBS6>H_%O}-~|F7ZNfy`#E(A3 zOk<|gci`RGCjhqqxDoUxn0ONO1~3~b>15_Ga{+D)@NOTX1v8(4Yn%>d0l-Zu4 zSt}+x+*04{cAf5Es<0F6wCc%r8s>Xu@23>M4=Vluz?C}1CkQ@z;=?+lJpypmM{$oc zaKZBbqit z?lM0!_n7+tcLKNzz+C~}{k?n-bn^WMaA!fG9X-V@m3hp-9g_bpr`{XfbLRE`WkJQf zVcxRvu9|LYhQk4N1GqcDgP@GmRAp~gs#{E%vLs8v`4GdhEXVS!j5T28tRZW}8nY&> zDcg-TW6fC$){=$h)l+*?u(1QUAHe$oyg$GP0DK_82LXIA!2JOp0PsL4`TVJWxU;?3 z-ump-B}TJ-Szr1N+fQdt(Ex|O2m2Z##%Ev6Af#joJDBxnA(t?KM*=+RLr`Wevmr2I z>a+~K6vki!U3!D}T&wF^@~iXe3gzUx*a|P*!muj@i=pw8W%@YDChF}C&KO~wRLirp z`|4xhGB`!^!SL8bz2U`(w!>z_v0-xnp7`m2=lLPvvH5HXTtKr0Y$033LN|v|V+g=g z0G_&(EoIA)M{GI3(*T|g=c~9{P^Co|6^pZh^u)3fZHLy=gRNtA$0BS!+rT!m!vLNR z@C<;%z>)<|5a2u{2d;!*QcQq%(s_8vZ^j5?_6v3tG!=Fvz;il~C%UPVcG?Up6LviN zrLKGez;ip;i2%=o2wnJPbyqmqY3y`>=L5XxLnvZrvbsy0UBWLrmz@Xj0)XolaRxIj z0@+1u=l@h$!Y&0k>}!eOqw7Vf*dLXD{TVUro@ZCFtJyUO%dSOY*>&uC?a-Og%6fR; z94`a-u#4l>n~-cs0OlKA4m~&wohk@3a4ZvbI>LLD>IE*zf8x z|4GsB3fUjU+>F|?cDrK@5To!3&`*pLh-7oF@AT}`oA z^Rf6{Kw+P;e|I~%-`wzfd0N(!5P~LFpf31MSI2_=u0B;j~;#K~_ zj}n`Ir0ur@A3$iMXufj5uS?gfr#3ab}!3X8~{xzy*K< zfPVpSXzZf^J{sU-R&rLHHK*WgI9tw+v*(lm9}DoQ0RINy+W>wT;J*U=DS+2G;PhOP zR-nB(=S?2x&cQ>J6xN%MG( zs9-Ksyi5CT9JmNB8Lm^fNG^(t=3=;5E{==m61YSTt}dnl9Qvyk;4=U|6X3G|J{#b3 z06rJs^Hy_1kSAO!{FBaQh*x**I2f}r-U09p0PlSFjDh=7 zcdcH#Zh?ghH;J1D^E)@0o5I22Tmol#k!r`Y9#eM_cgZ;60ApJxsBW= zZnJjx!k#?7R*vcGZ{@zxzFKJ2o!iQ76Za8flj8I0@=EIRYD$wDS}Kapb33?ixt);3 zcii{fE^fDW@FE9a96I}YwcMy@Kut|WkzU*(5us38J==ZUez-rO`|jlS>7E-wkLM0@ zhqSvES(8h+!`u-#Ti>`H?+Wm906(wuuM3dMb;*KEKfmIF{6f!y-ky3% zz2MfY&Yy($?-KYve1F7fnaI``GKLc?J>!ca?@P=00sKJS?gQ@+@XG-I5yl+I{|dBt z)zVn?|MCw-syg{F^c_BlPuArg zxLW@W;MV|tUwdY$UmrddDOt*=@#%a952qkE0DcSLcLDzMhh)m<=(FBUG3%-2UY>Ar z?qQWx)DTfw;-YtWdsjR6L3S>#?-C_nz!&PKbhiNxm*6+kl1t$_tu4BE$655)A;GU78)K5*UtbBd;Ax` zVRnUv_xEysHa|xc@hg5lz+V7D`c6=S0t5|N#Vj||{;=Xp4ZoCM{;^pY#^5sdo%8Xl z`LE$Zm0!cJ1^6p~|I^8@)#V>;kW4s)-y07!WHj52=Y*z ze*ykRP{qHm^*z5It}hrABKLUkdwIAO2FDy$dJ6~y5a=@g07U72M*x9|7>N8A5CoLl zX_Z@XT2fKnu(E=p5AB}f&%*6vNN|SM2?q!qZjb1`;qL=IoDRnpH8fS%m4Bf7k%u=- zbV6PcsU$k^9RZyCt~Sx|xB0stwevF|$dB6jh5uDQENXc-ahJl&(?@(b=?71A`+D~J zFm2}_@{c|;c?<~VBa>&mZfeA@feP;6p96yZknZ@G{689qgSy1-b?~nN!F|NNm7zKm zT!7u}kYRw}KcHk183|EP57_Mv860fcM-(gLbtt&|c)dgH=SP&GtQ)j+nUTy`W+F2M zgd7ltfUq(Ggz-`t3|=w|8QeTI(HRk81_*OF65ZF7n8@s9D%drd5)h^xG6z6(duOyV z7n$ojqdl_5Mk8~Vd3>zr2?&c1Dv-Iw-*o96@R!SMNh5ZwJvq0`{Tb`G5fAMcmINBb3Uqj)iVkbi)_ z3*Xec!Y!u|CXvZz)Jz_HGhf7%Fm-SnXBg8AU(Sz!Z{}Ascj5Xw3@-gN8r@#(Hw_0S?VYS5Sq}4^MJ61ni{bBXe>WwvREw@%!+gRIL+go?HcDMGh_OcGN z4z>=p4!4f9USYk#`g`jG)`zT*SRb?g!TOx_1?x-JKU%+0SSp+qo{C|)DDgLrCurar>wDGYSY!hIUZBuMh zYBR-Vj?FxqJvK*ej@$fY^Trmjb+Prb?PWW}Hpe#Cc9iWTTg?>P&9>j!?y|jNd)M}! z9d5_j$?SUA^|te|OR&qZ%d#73H_>jg-A21_?Y^_SW_Qo-7khjA?)Gl>nf8VD#r8|= z*V?bMKWTr_{<8g3`?tz=#fbx*?i1L{7gz}W~jPk7V zg7UKRit@Vhmh!IhzVd{ZZIIePB<7DcjbaHTV za&mE+>a@UVk;bXRX^FFmv%Ry*+0ohAS?j#mxzl;6^Kuv3rJIYni=~UT%l9tFTu!*0 zayjGb>l)%3<{IG|<+{~%pX&kFL#{`<_vs$kJ-B;l_weq!x*zX;vis@oKlDiKq3)5_ zqo7AokIOxN?s31zuRVTqD|c&lYjtaP8{ziCUE)r<)9$SMM0d?x_pjU+xG(By-qW$C zb5GZvJ$laXxvJ-yo?rJ|?_uZR?&0C#<=uftyFy)JrP_WH@YuXnI_sCT$`r1whit=`+bcX;pY)u&fr zui##xy~2AP?sdM`#a@?t{iNwVpm#*?sNONX<9eU&eYN-X-Zy*S?lY{<$UdX{jO{bN z&kG-k59veuus$_D!+kV9z-Oe-UwyH@L|{T%$J`7QKY?APhHw4X^o`+ll^j{Thbt?ak8-?o059sR!R z@6mri|3Urz`v>*k-~UYiv;EKazce6nK0ht4G23#NT+kl4y9u0UpP(83>VAa5y zf%OCb9E1+S2T2A|gIWfS88mLtgh7)AJsR|S(3`=?V0`e%!BYoMA3S65Y=1L<2Y)Aj z7ylmqEBv?kf8)R1e`mmefQW#ofS7>zfSmzHGy%r~P6V6|^a%_K3<(Sij11fncqs5l z;IY7yL9s!ZLD@m-p!}c{K|cmv3Az?^GdM0dE4V1QG`KvtD!4YdHF$Wi5Iiz?Oz^ni zCBesnFNYu@bV#=lvk+y7M~H7o|Byi;0U^O5F(L6GNg*jAX(1UQ1tFCotsx^r#)OOy znHZv(5;7;`tB{2u9U)6YmWQkl*&ebtI> z8ibmMI)?TP^$P7B+BdXcXi#WqXhdjqXl!VFXnJUIXnkmVs3!D_(9xmeLZ^k!2%Q}| zFLXiZqR^G0TSIq;o(R1VdO7q;==IQBp$|eIhCU8`rU`u>`XUSslZ9D^Ifr?M^$PO| z^9vgg77`X778Mp7mJpT{RuwigY)RPhu=8Qp!tRAV3ws^*HXI9=gj3;$;U?i`;g;dn z;WpuZ;kn^e;j_XQg|7|Y5xy_{VEB>nd5VpHzR+Id>Z*S zii%>RWKo7uCQ*tgyC_wZQuvqjI83qJ~CQM%6^sM>R%` zi25>WW>ja?ny7VA8>6;FZHw9ywLj`m)X}KpQ75A=M%{^e9Q88lb=2EvELsvRi#Cil zi8hP2jJA&M8=Vtf5j`V%LGhx zUd)1+MKLR5w#Mv>?=Es<;F*jmv$NU!aN6eF$KVzQ9yog0(`B=+XRjgC2Yph$W zN33sb|JXsX0kJ``A+fQsnX#p@wXqGcO|h-9!(+$9j*p!fJ4F*aEmj*lKX!HOw%9$f z`(qEq9*sQ_dm;96?3LK-u{UFH$Nm=kXB-;G#PMFILA1bxE^utaXxWD zaWQcjaRqV3ab`?nK<_ zxF6!q#a)fN7xyggbzH*Rcr0ELPsJO?o5Y*NTgEHmZR1_yd&LiokBm=>Pl->D&x%*a zm&TXJSH;)HH^dK%*TheXpBukCetrC=_^t8V<9Eg%h(8>EEdFHt>G&Vwf6~ggn`*2Q z6bZHoE(u-`1tk@F3yuL?V$-lqVV| zc1yHKR3sr+CS`xhiImeRXHzbuTu!-_ayR9E%7c`LDUVWKq)Jld zsftvmRM%9uRF72e)c&c1QUg+hQ^QgtQWH~iQcF`CQ%9tN)KRHpQzxWqQ)i{lO`V^* zD77PXb?TPX?^BPZo=d%$`eW+V)ElY4r2eK!{Uh~B>a*0pQs1PJX(nlkG`loanp2u< zns-{CG~cxTX@k=I(<0JR($r}cX^m;kX>DmE(m>jTv`J}G)3j+b(`KhFPFtO}Ep1QQ z{2~R=bfAvax(g&o6 zq-&DWbJNSxE7Gge>(U$3N2G)FQR!pTC!|kIpPAm7zBYYF`o8po=||F!r=Lo{l>Srt zwe*|mx6|*YKTLm>L1xG^j5E4rSY%jdIA*wH^vLL$;g!)VV?ahkMp8y@Mp;HhMs-GA zMq|c^43IG@V{FFwj4v~0WGu{Bld&aZTgJB;-)l1VWE{;nk#RcXY{vPFiy1dEe$RNB ziDgPMsZ2IgmT8u0nW@OM%T#7MWV&be%M8nm&rHfp$xP48$}Gw(%`DHX%B;z(%WTUW zl{qbQUgm<##hFVomuIfe+?2UBb9?5uncrm|%={tqdglGi2bm8uA7?(xe4Y6=3(JyZ zQCUou#yHD9%Pq?f@NDthkt0=1~t0_y!nv^vwYi`#3tVLO! zS!=S^Wo^vblJ!m2_N={Gr?ReO-Oak6^&snE*5j;~S+BF+W@Fhzwlv!y+alX3+audM zyHB=ncK__)?6B;}?3nDh?1b!$?85BY?AGkz*@7l}WcHZsDcRGrXJ*gI{wjMx_VVoY z+1s-ZW*^Buo_#9&hwO9NH?wbN-_5?C6PlBhla-^+$Raju>NmM$t~|GY?x5U&+~C}>+{oOR-1yw2+?3q(+^k%6Zhmf2ZfS0LZdGn= zZbNQUZcFZ{+$p*9a+l?9$laNHDEEiltGV}cpXUCXN97sk+2pzA_0Aid7nwICFF&s! zuQ0DTuRd>BUQ1qko+c0EP0pK|H$87=-k%U=1jr$f}abX7UG4{Lb{MEG$=GGG%YkQv?_Ef^eFTy>|NNmuwUW8LjS_R!r;Q# z!t}zr!tsR*3pW=YFT7j$vZ!BCKv6i{3so287Znwi7L~)@)7GN)q7g-)=yuVgqCboN zE_zk;wiqjx6qCh#u}QI_*r~Wzalhh$#s0-Xn&QafnBw^2q~amP@7J^ za=7GF$qyyxOD>iCSaQ4MZpnj^zf0bfqNPMBSt=_vEHx=LE43(9mO7TYmHL(Xmj;!F zmPV9n;!BfCQ%ciIGfVSJ%S-ErULJa7=-r`DhrTRF%K383az(jaxvJc$+_l`T+^>8< z`JnQE^5F8&^6>J=^6K&#<-5v%DSuM_vI47+RLCk!D=aJAD?BRvDgrA)D#9uvDiSM7 zD#|L#E2=7LD(Wj5E1D`=D%vYF6`*2r#ng)Fnu?i~29?&8HkEdjs>=D5t17ow?yTHZ zxwrB_<>AU>l_x8&R^F(*U3s_ie&vJ8-zy(gKB+>g9IBG4W>kGsb++nZwY1ux+Nj#J z+N|24+OK**_2BBj>X7R2>Zt12>V)d#>Qs1$Rb5?M-B8_B-C8}oTB!b_dUW;J>haYx zt5;TQzNx-f{j$cTrcX_HO=?X|&Gec@HCt-7)qGp?ea)Vl{WXVbj@F#0IbCzM=6=nC znuj%yYM#_QtNE+uMa@4oZ)(w6yw<69aBX63Zf#TT7qzo$zpmY1d#d(I?bX_AwKr;i zuYFYewDzys7qzeIlyx3;-gSNIeCztx4Xg{Si>phiOV`w8)v4=>>&oiN>#FK%>gLyN zsXI}3q3&|smAY$n59(gly{>y(kJU@+sd~0vRegi5*Xdcx(ws~^%v}SGd ztmZk*2b!-o|Jkhhw*_gzTO=(;E%q%AEzT|7TijbbTY9zlw1l*Tw?wtXwj{J9x1_dY zv}CoEwKTR&ZCTo~r{#LfgO|R=3u^tpTkmt?8{< zt?Jgi)`HfG*4oyF)~42$)-kQ)TPL)ZCX-D&6AE!wTx743HIuI+B^9_?Q3k?pDNIqiAvh3zHnRqeIy_3gvj zo7+MAsP?h#^zQg+uA2d8*c<}Jh;c>(NPYvh()72#6T)#$aj&>#~I(1e~cf<598rzK7}90Pv9r=seBqglTYVo^BMd?eg(gd z$9%|t%x~tm@jLheemB3DFX2o1gZv@Bp8rWm6kZXg3aLVxFjGhuW(irsI^l0Zj<7+1 z0xtx@2f`=9R$;r4FBA)7cS*L``7G;;RN7<*8DrL$MrCh00s+EgMozkFOR<0;b z$~EP>azC0FofcgcRigRP)6omji_yC1_2@%2PVJ`lPaWxUb)cH8j#0;| zzf~uw6V=J;6m^=Ks-~&0s}QK0)l+JV)<>JHWokK^tL@dwwMy+P?WA@_JEt{i9ok*( z2koBr0C&Oh_$k~Q_rv{h0{#sihKJ*k_$53VPr|R^IXDx~$BXa^yb1%1v5Ny7;*B^D zZ^579d|ZHwa0Nbzui$okU+<~+(SND`8tMb|r}by`q560|RZrJv>vQx)`f@#6=k%!V z>s$3t^&NVFUZ@xAXY?AqRljd^HR6rF#z5m4V~{b#7;j85(u{N?(^zk8FhZliIABy7 zXN+@3ozY-48m&f~antz0xMy}X`kn3jwbqiYP1aUxo3-8AY5mJ8vJO}WtwYu^ z>$vr`Rb_o+)mTkdhjrKbkM)!F(2lda*}d(4c7Hp;9%w&f53&c_lk9o+Uv0}Sg!X>> z3%kNTZlADE+ZXIQyTQI}U$vW^UQUv;z=4kGP$%Z(Iv+Us&TeO~v)?)B9Cp5NPB~|t zDyQ1H;M6(wZg+R6JJy}#PIXh=>Fx~oE%zOFnY-Lw=>j+6imvRcuI`q(mF^k$yj$&F zbT7FL?zb*%cW=Ajc}ZT1H_n^jP4rT|3~#QN>CN|6dfDD;Z>?u~)cedU@s4_5ddIx4 zy;EL|SL@Y#m%XcAv;V07yr1Gv^=J7R{#*Xr{z8AT|DF&1h|l|?AM>~QyZk-=KEKp2 z^N;xD{#n1uukmaBdjGP2)o+IWgJ483Blt@o1Xkb%K@bKTgH6GXpfK1O6b1W&(x5Cj z98?A;f{Q^z&=@oYH-fg{R?rdLA&-#9$&;iv=|}pL0b~eCBE!i@l1#>svE&W1lw^|} z5+NdyiArqZ5keT*NH&wt$!@Zj>?el^JW9SKm86O^k|xqZTFFgvi##9?X%`wt2hgGP z1^Oa=iM~uz=&N)ZeT~kbZ_qdCLi!F}Mwio7G@Ito4HQy=N>rgfr8Gu2(T`{zEu=eX z5iO=Aw3HsBXK59!p|!N0UZXc?8@)yE(7Rzg49A31!a3p6Fe_XcW`}FSwV@c=p%c2H zALfU}VM%x(JQN-c%fqwbx$u1WO?V}24zGvbhV9|)@E(g}-B=ISlf|kW0d8x4_O}D#&)n*3s@mL%#O2aR>vAxBfG|~ kvsTs?dp!1HOpE2lK8|hspMcjTF79VOvF2y~e`DMK3wBYZF8}}l diff --git a/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist index 01efc02..9193f2d 100644 --- a/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ b/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -280,7 +280,7 @@ moduleName = "Vendoo" usesParentBreakpointCondition = "Yes" urlString = "file:///Users/okechi/Documents/iOs%20Practice/Kroleo/Vendoo/Vendoo_bb/Vendoo/Vendoo/ExternalWebViewController.swift" - timestampString = "506444138.580552" + timestampString = "507078870.598666" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "32" @@ -295,7 +295,7 @@ moduleName = "Vendoo" usesParentBreakpointCondition = "Yes" urlString = "file:///Users/okechi/Documents/iOs%20Practice/Kroleo/Vendoo/Vendoo_bb/Vendoo/Vendoo/ExternalWebViewController.swift" - timestampString = "506444138.580651" + timestampString = "507078870.59876" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "32" @@ -310,7 +310,7 @@ moduleName = "Vendoo" usesParentBreakpointCondition = "Yes" urlString = "file:///Users/okechi/Documents/iOs%20Practice/Kroleo/Vendoo/Vendoo_bb/Vendoo/Vendoo/ExternalWebViewController.swift" - timestampString = "506444138.580732" + timestampString = "507078870.598847" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "32" @@ -325,7 +325,7 @@ moduleName = "Vendoo" usesParentBreakpointCondition = "Yes" urlString = "file:///Users/okechi/Documents/iOs%20Practice/Kroleo/Vendoo/Vendoo_bb/Vendoo/Vendoo/ExternalWebViewController.swift" - timestampString = "506444138.580811" + timestampString = "507078870.598953" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "32" @@ -610,15 +610,15 @@ @@ -630,11 +630,11 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "Vendoo/EbayWebServiceManager.swift" - timestampString = "506415773.009495" + timestampString = "507078869.180288" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "245" - endingLineNumber = "245" + startingLineNumber = "246" + endingLineNumber = "246" landmarkName = "listItem(_:imageUrls:completion:)" landmarkType = "5"> @@ -646,11 +646,11 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "Vendoo/EbayWebServiceManager.swift" - timestampString = "506416123.471754" + timestampString = "507078869.180288" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "296" - endingLineNumber = "296" + startingLineNumber = "297" + endingLineNumber = "297" landmarkName = "listItem(_:imageUrls:completion:)" landmarkType = "5"> @@ -658,15 +658,15 @@ @@ -914,7 +914,7 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Vendoo/.DS_Store b/Vendoo/.DS_Store index c2e74234620290fc8522d80a696119fdb5c8a32e..1640ede5bcb86f11035fd4153b1ca7df276b1778 100644 GIT binary patch delta 147 zcmZn(XbG6$&uF|cU^hRb@njx>95x092L1p4Co2f5Y+fX=n3V;{*PZMsmM$*O;L1?J zP{NSPP{feOkjRk35DsJ~P41U9V`Fe*U|?Rcd8ybwc8~_W&FOMZjGNgN?AS=u&&UV> Dvq~a{ delta 80 zcmZn(XbG6$&uFwUU^hRb(PSQh9Jc>pFj+xRW%D9|#jGqK?qpA~^v!(Yo7us<%}3>& S7$-KwZDv=nV?&k?VFUoqVI-gc diff --git a/Vendoo/EbayWebServiceManager.swift b/Vendoo/EbayWebServiceManager.swift index 5ea221c..117053d 100644 --- a/Vendoo/EbayWebServiceManager.swift +++ b/Vendoo/EbayWebServiceManager.swift @@ -45,10 +45,16 @@ class EbayWebServiceManager: NSObject { private var completion: ServiceResponse! private var isGettingSubCategories: Bool = false private var isRevisingListing: Bool = false + private var isErrorHandling: Bool = false + private var currErrorCodeKey: String = "" + private var currErrorMessage: String = "" + private var errorCount = 0 + var errorInfo: [[String:String]] = [] private var requestGroup: dispatch_group_t = dispatch_group_create() var isGettingNotification: Bool = false private var qtySold: Int! private var currItemQuantity: Int! + private var currViewController: UIViewController! //---------------------------------------------// @@ -307,7 +313,7 @@ extension EbayWebServiceManager { } //after getting a sessionID get a unique oauth token - func fetchToken() { + func fetchToken(onComplete: ServiceResponse?) { let soapMessage = "" + "\(self.xmlResponseDictionary["SessionID"] as! String!)" @@ -315,6 +321,7 @@ extension EbayWebServiceManager { let theRequest = NSMutableURLRequest(URL: url!) theRequest.addValue("FetchToken", forHTTPHeaderField: "X-EBAY-API-CALL-NAME") //dispatch_group_enter(self.requestGroup) + self.completion = onComplete self.requestMaker(soapMessage, theRequest: theRequest) } @@ -382,6 +389,7 @@ extension EbayWebServiceManager: NSURLConnectionDelegate { print(response) var response_fixed = response!.stringByReplacingOccurrencesOfString("&", withString: "and") + response_fixed = response_fixed.stringByReplacingOccurrencesOfString("'", withString: "'") let data_fixed = response_fixed.dataUsingEncoding(NSUTF8StringEncoding) print(response_fixed) let xmlParser = NSXMLParser(data: data_fixed!) @@ -417,6 +425,45 @@ extension EbayWebServiceManager: NSXMLParserDelegate { self.isRevisingListing = false } } + else if(string == "Failure") { + self.isErrorHandling = true + } + break + case "Errors": + if(self.isErrorHandling) { + + } + case "ShortMessage": + if(self.isErrorHandling) { + self.errorInfo.append(Dictionary()) + self.errorInfo[self.errorCount]["short_message"] = string + } + break + case "LongMessage": + if(self.isErrorHandling) { + self.errorInfo[self.errorCount]["long_message"] = string + } + break + case "ErrorCode": + if(self.isErrorHandling) { + self.errorInfo[self.errorCount]["error_code"] = string + } + break + case "SeverityCode": + if(self.isErrorHandling) { + self.errorInfo[self.errorCount]["severity_code"] = string + } + break + case "ErrorClassification": + if(self.isErrorHandling) { + self.errorInfo[self.errorCount]["error_classification"] = string + self.errorCount+=1 + } + break + case "Build": + if(self.isErrorHandling){ + self.completion(self.errorInfo, true) + } break /* Used to authorize user to allow posting new listings to ebay sites and fetches all necessary information when posting to Ebay @@ -439,7 +486,7 @@ extension EbayWebServiceManager: NSXMLParserDelegate { print("account credentials saved") NSUserDefaults.standardUserDefaults().setBool(true, forKey: "ebayAuthorized") self.isAuthorized = true - //self.completion(nil, nil) + self.completion(nil, nil) //Test authentication let soapmessage = "" + @@ -595,3 +642,4 @@ extension EbayWebServiceManager: NSXMLParserDelegate { } } + diff --git a/Vendoo/EtsyRESTAPIManager.swift b/Vendoo/EtsyRESTAPIManager.swift index fcf0221..385e903 100644 --- a/Vendoo/EtsyRESTAPIManager.swift +++ b/Vendoo/EtsyRESTAPIManager.swift @@ -14,7 +14,7 @@ import OAuthSwift import Locksmith -typealias ServiceResponse = (AnyObject?, NSError?) -> Void +typealias ServiceResponse = (AnyObject?, AnyObject?) -> Void class EtsyRESTAPIManager: NSObject { diff --git a/Vendoo/HomeViewController.swift b/Vendoo/HomeViewController.swift index 9c4974e..8810557 100644 --- a/Vendoo/HomeViewController.swift +++ b/Vendoo/HomeViewController.swift @@ -216,6 +216,7 @@ class HomeViewController: UITabBarController { self.soldListings.sortInPlace({$0.title.lowercaseString < $1.title.lowercaseString}) NSNotificationCenter.defaultCenter().postNotificationName("finished_fetching_listings", object: nil) self.notificationsManager.setListings(self.userListings) + self.notificationsManager.setVC(self.selectedViewController!) self.notificationsManager.startServicePolling() } diff --git a/Vendoo/ListingPreviewViewController.swift b/Vendoo/ListingPreviewViewController.swift index 82e8a7b..6123700 100644 --- a/Vendoo/ListingPreviewViewController.swift +++ b/Vendoo/ListingPreviewViewController.swift @@ -652,14 +652,35 @@ extension ListingPreviewViewController { "category_id":self.itemListingDictionary["ebaySubCategoryID"] as! String ] let listingCompletion: ServiceResponse = { - (listingID, error) -> Void in - if((self.newInProgressListing["networkIDs"] == nil)){ - self.newInProgressListing["networkIDs"] = Dictionary() + (listingData, error) -> Void in + + //checks if there is an error from the xml response + if((error as? Bool) != nil && (error as! Bool) && listingData as? [[String : String]] != nil){ + var listOfErrors = "" + for errorData in listingData as! [[String:String]] { + if(errorData["severity_code"] == "Error") { + listOfErrors += "Error Code: " + errorData["error_code"]! + "\n" + listOfErrors += "Message: " + errorData["long_message"]! + "\n\n" + } + } + + let alert = UIAlertController(title: "A Problem Occurred With Ebay", message: "The following is the list of errors when trying to post to ebay.\n\n\(listOfErrors)", preferredStyle: .Alert) + + alert.addAction(UIAlertAction(title: "OK", style: .Default, handler:{(action: UIAlertAction!) in + alert.dismissViewControllerAnimated(true, completion: { + dispatch_group_leave(postingGroup) + }) + })) + }else{ + if((self.newInProgressListing["networkIDs"] == nil)){ + self.newInProgressListing["networkIDs"] = Dictionary() + } + var networkIDs = (self.newInProgressListing["networkIDs"] as! Dictionary) + networkIDs["ebay"] = listingData as! String + self.newInProgressListing["networkIDs"] = networkIDs + dispatch_group_leave(postingGroup) } - var networkIDs = (self.newInProgressListing["networkIDs"] as! Dictionary) - networkIDs["ebay"] = listingID as! String - self.newInProgressListing["networkIDs"] = networkIDs - dispatch_group_leave(postingGroup) + } self.ebayManager.listItem(body, imageUrls: imageURLs, completion: listingCompletion) diff --git a/Vendoo/NetworksTableViewController.swift b/Vendoo/NetworksTableViewController.swift index 3836d1f..cab8348 100644 --- a/Vendoo/NetworksTableViewController.swift +++ b/Vendoo/NetworksTableViewController.swift @@ -64,6 +64,7 @@ class NetworksTableViewController: UIViewController { override func viewDidAppear(animated: Bool) { if (!self.networkToggleOrSelect) { (menuButton.target as! SWRevealViewController).delegate = self + self.tableView.reloadData() } } @@ -269,11 +270,14 @@ extension NetworksTableViewController: UITableViewDataSource { if(((self.tabBarController as? HomeViewController)?.ebayGraphManager.isAuthorized)!){ dispatch_async(dispatch_get_main_queue(), { (cell as! EbayTableViewCell).authorizeBtn.setTitle("Logout", forState: UIControlState.Normal) + (cell as! EbayTableViewCell).settingsBtn.enabled = true + (cell as! EbayTableViewCell).settingsBtn.hidden = false }) }else{ (cell as! EbayTableViewCell).settingsBtn.enabled = false (cell as! EbayTableViewCell).settingsBtn.hidden = true + (cell as! EbayTableViewCell).authorizeBtn.setTitle("Login", forState: UIControlState.Normal) } break @@ -289,12 +293,14 @@ extension NetworksTableViewController: UITableViewDataSource { if(((tabBar as? HomeViewController)?.etsyManager.isAuthorized)!){ dispatch_async(dispatch_get_main_queue(), { (cell as! EtsyTableViewCell).authorizeBtn.setTitle("Logout", forState: UIControlState.Normal) - + (cell as! EtsyTableViewCell).settingsBtn.enabled = true + (cell as! EtsyTableViewCell).settingsBtn.hidden = false }) }else{ (cell as! EtsyTableViewCell).settingsBtn.enabled = false (cell as! EtsyTableViewCell).settingsBtn.hidden = true + (cell as! EtsyTableViewCell).authorizeBtn.setTitle("Login", forState: UIControlState.Normal) } break default: @@ -304,12 +310,15 @@ extension NetworksTableViewController: UITableViewDataSource { let tabBar = self.tabBarController if(((tabBar as? HomeViewController)?.fbGraphManager.isAuthorized)!){ dispatch_async(dispatch_get_main_queue(), { + (cell as! FBTableViewCell).settingsBtn.enabled = true + (cell as! FBTableViewCell).settingsBtn.hidden = false (cell as! FBTableViewCell).authorizeBtn.setTitle("Logout", forState: UIControlState.Normal) }) }else{ dispatch_async(dispatch_get_main_queue(), { (cell as! FBTableViewCell).settingsBtn.enabled = false (cell as! FBTableViewCell).settingsBtn.hidden = true + (cell as! FBTableViewCell).authorizeBtn.setTitle("Login", forState: UIControlState.Normal) }) } @@ -624,7 +633,32 @@ extension NetworksTableViewController: UIWebViewDelegate { var responseString : NSString? = webView.stringByEvaluatingJavaScriptFromString("document.documentElement.outerHTML")! if((responseString!.containsString("Authorization successfully completed"))){ NSLog("Oauth successful") - ((self.tabBarController as? HomeViewController)?.ebayGraphManager)!.fetchToken() + ((self.tabBarController as? HomeViewController)?.ebayGraphManager)!.fetchToken({ + (loginResponse, error) in + + if((error as? Bool) != nil && (error as! Bool) && loginResponse as? [[String : String]] != nil){ + var listOfErrors = "" + for errorData in loginResponse as! [[String:String]] { + if(errorData["severity_code"] == "Error") { + listOfErrors += "Error Code: " + errorData["error_code"]! + "\n" + if errorData["error_code"] == "931" { + listOfErrors += "Message: Must relogin into your account to reauthorize your Ebay account for Vendoo." + }else{ + listOfErrors += "Message: " + errorData["long_message"]! + "\n\n" + } + } + } + + let alert = UIAlertController(title: "A Problem With Ebay Login", message: "The following is the list of errors when logging in to ebay.\n\n\(listOfErrors).\n\nAn easy fix to this would be to deauthorize vendoo from your account manually on the Ebay official site and relogin with the Vendoo application.", preferredStyle: .Alert) + + alert.addAction(UIAlertAction(title: "OK", style: .Default, handler:{(action: UIAlertAction!) in + alert.dismissViewControllerAnimated(true, completion: { + + }) + })) + self.presentViewController(alert, animated: true, completion: nil) + } + }) } } diff --git a/Vendoo/ServiceNotificationManager.swift b/Vendoo/ServiceNotificationManager.swift index 0788150..72412de 100644 --- a/Vendoo/ServiceNotificationManager.swift +++ b/Vendoo/ServiceNotificationManager.swift @@ -7,6 +7,8 @@ // import Foundation +import UIKit +import Locksmith protocol ServiceNotificationManagerDelegate { func listingHasEnded(fbInfo: AnyObject?, ebayInfo: AnyObject?, amazonInfo: AnyObject?, etsyInfo: AnyObject?) @@ -24,6 +26,7 @@ class ServiceNotificationManager: NSObject { var ebayGraphManager: EbayWebServiceManager! var userListings: [Listing] = [] var timer: NSTimer! + var vc: UIViewController! static var delegate: ServiceNotificationManagerDelegate? override init() { @@ -43,6 +46,10 @@ class ServiceNotificationManager: NSObject { timer.invalidate() } + func setVC(vc: UIViewController){ + self.vc = vc + } + func setManagers(fbManager: FacebookGraphAPIManager, fireManager: FirebaseManager, ebayManager: EbayWebServiceManager, etsyManager: EtsyRESTAPIManager){ self.fbGraphManager = fbManager self.firebaseManager = fireManager @@ -76,37 +83,75 @@ class ServiceNotificationManager: NSObject { self.ebayGraphManager.getListingInfo(ebayID!, onComplete: { (listingNotificationInfo, error) -> Void in - let info = (listingNotificationInfo as! [String : AnyObject]) - if(info["status"] as! String == "Ended") { - if((info["quantitySold"] as! Int) > 0) { - - //checks if listing is sold out - if (((info["itemQuantity"] as! Int) - (info["quantitySold"] as! Int)) == 0) { + + //checks if there is an error from the xml response + if((error as? Bool) != nil && (error as! Bool) && listingNotificationInfo as? [[String : String]] != nil){ + var listOfErrors = "" + for errorData in listingNotificationInfo as! [[String:String]] { + if(errorData["severity_code"] == "Error") { + listOfErrors += "Error Code: " + errorData["error_code"]! + "\n" + if errorData["error_code"] == "931" { + listOfErrors += "Message: Must relogin into your account to reauthorize your Ebay account for Vendoo." + }else{ + listOfErrors += "Message: " + errorData["long_message"]! + "\n\n" + } + } + } + + let alert = UIAlertController(title: "A Problem Occurred With Ebay", message: "The following is the list of errors when trying to to retrieve notifications from ebay.\n\n\(listOfErrors)", preferredStyle: .Alert) + + alert.addAction(UIAlertAction(title: "OK", style: .Default, handler:{(action: UIAlertAction!) in + alert.dismissViewControllerAnimated(true, completion: { - ServiceNotificationManager.delegate?.listingHasNewNotifications( + }) + })) + self.vc.presentViewController(alert, animated: true, completion: { + do { + try Locksmith.deleteDataForUserAccount((NSUserDefaults.standardUserDefaults().objectForKey("email") as? String)!, inService: "vendoo_oauth_ebay") + NSUserDefaults.standardUserDefaults().setBool(false, forKey: "ebayAuthorized") + self.ebayGraphManager.isAuthorized = false + }catch { + (error) + print(error) + } + }) + }else{ + let info = (listingNotificationInfo as! [String : AnyObject]) + if(info["status"] as! String == "Ended") { + if((info["quantitySold"] as! Int) > 0) { + + //checks if listing is sold out + if (((info["itemQuantity"] as! Int) - (info["quantitySold"] as! Int)) == 0) { + + ServiceNotificationManager.delegate?.listingHasNewNotifications( + nil, + ebayInfo: [ + "type": "Sold", + "notification": "Your listing \"\(listingDict!["listingTitle"] as! String)\" has sold out on ebay.", + "listingKey": listing.key], + amazonInfo: nil, + etsyInfo: nil + ) + } + }else{ + ServiceNotificationManager.delegate?.listingHasEnded( nil, ebayInfo: [ - "type": "Sold", - "notification": "Your listing \"\(listingDict!["listingTitle"] as! String)\" has sold out on ebay.", + "type": "Ended", + "notification": "Your listing \"\(listingDict!["listingTitle"] as! String)\" has ended on ebay.", "listingKey": listing.key], amazonInfo: nil, etsyInfo: nil ) } - }else{ - ServiceNotificationManager.delegate?.listingHasEnded( - nil, - ebayInfo: [ - "type": "Ended", - "notification": "Your listing \"\(listingDict!["listingTitle"] as! String)\" has ended on ebay.", - "listingKey": listing.key], - amazonInfo: nil, - etsyInfo: nil - ) + + } - - } + + + + }) }