From 3f114eb4a2f3994b980aa607f2d4afc58e5aaa1d Mon Sep 17 00:00:00 2001 From: "Andrzej J.R. Hunt" Date: Tue, 10 Sep 2013 08:35:51 +0100 Subject: [PATCH] Implement firebird integer loading test. This is mainly in order to determine whether the firebird ODS is safely portable -- if testIntegerDatabase fails on non x64 / non Linux / non LE platforms then this isn't the case. Change-Id: I44eb7a774650cec27748b2058e9bb153f32742dc --- .../qa/unit/data/firebird_integer_x64le.odb | Bin 0 -> 43990 bytes dbaccess/qa/unit/firebird.cxx | 59 +++++++++++++++++- 2 files changed, 56 insertions(+), 3 deletions(-) create mode 100644 dbaccess/qa/unit/data/firebird_integer_x64le.odb diff --git a/dbaccess/qa/unit/data/firebird_integer_x64le.odb b/dbaccess/qa/unit/data/firebird_integer_x64le.odb new file mode 100644 index 0000000000000000000000000000000000000000..da2ec1499198dea4c437bb6400bf9e2586eef02e GIT binary patch literal 43990 zcmZ5{1ymeMmoNki1SbS{3r=u{B)A55x8UwF1REd(cN>BRcXxMp7~FMmhxvK??|v`4 z=k%PeGkx8vy6e_ASvdIjFfeanU}OatzTSb*Zs}lPVE*~N{sm)eX=~=<>0oB$;9z5E zV&r0JZ^!CpXUbx4E z7#P&oyR(^#i=~}~GmD3&TELEAUK zc_aVKAm}YYeT7CBfYY_saX*h1aXwh3nKL+kFT7ZIe|Wj&Tdh&BHT>gnNe2mc@wf9w zA~#B$u0d7F5KKI)eXM~B3(;vl#7a>MU?rj~p}AHAmP%dm5l4%Sflky~@B=nq;M^8( z{+6|jZ%(~u<`LhokLY>_54HJ2p+=3*b?15a!?nXza*A3#OhzYZwfUl~Tw+%Ayl92K5SG^}tU~pe=rbaGC{}_qY+|tR+ z*wV?A#oW~RxD_p)Xf|X2zT8S$O*x@xM!CLeWksE*XN4k6z@&Nhr9-Ado1q@JnC5rv z68EQpxU;Ge!Bw3b=11;F?&fKKSU5yfd^SU2b_(Q_Xk_W+FpCgrkLKgW7H1F0_VJ)6 zkT0r!W7O0mh}STHq9RJ}X0G6HOI=!iQz88c;J{paxC(7`J(_F1g|-`@9xwC+2F6#g z8~V)(Q}u{nw`=aUx4bEgCrrz zFO2+cz<*x@o-zUZ(2=EN!hfOR@6oV~_8;1>bzGQn0{?>LqX^l8{s;B#g@9uGKJ>-+ z(XE^D;-e3!phIkDln2RAg0lI07S@f_JBv!NhVKmlwKCLjf7 z+2qFT$8k>u`9pBr!^wjCLj~m848)25%K#9Z-4Ry*dlW}T$Qz;@UGJ`z55IN2pO_7i zKDL9%+xzL;8GGardQ`Z}CpYP_cnC1(X;8D^VcI2m{`zo=y*Y;z^w{vv(4~XhZ2Pmv)2arUYEq&Zu>bgLBU> z_@HHD{hZ)sIbCjYFzr7$WSBg}n5Q}aKx%Dc3sdf#7(Hv99^lY`@5rL&7|Fcob`|7RrRXe`=* z{0|_n;}_9}PydYgH?d(iB>s_zs;3vO%j};~ch5QOM##wPh+wn9-@)=9IC95Ie+T;4 zQM#NiCwaQ*D-T(0Jmj}@sjqUuZz8_wqWK5GadW}nq2-lXBvmBxTRe_e`NdbWfdn41 zm*t~Si%txaGMMj5WfcF0l9S&?1~keV_TM1fc8|(Bhr$|uetcHmOzkPOPGkB{IK%T5 zJhh#;m;ZtaXiQgjbeL^lCQ|uqkfd}T!2Cs1A7|3l$My-}@01V>>&x81?#NT_IP@0_ z-OESr^%D~4e9a5vz@7`u^SS%>T0L0wKOoU-T$D|bWP&ebleQF(Va;a0R6_pEhrQIb zdMta}Cy?_K$q(3ubf1^Uz2c=ikxTo5+Z?jiI};02MD!zJbrw&AJ%oSJ2JC4BCy%*S zGAKZ)!sV6^sgbXWOxN7Qi%}>DyW`XY8&DiUx@K8ft!38288NndC^T{hG~MTn`_cz!}HJ`+KqR2R=wfl0?c(&m76cI5x51Mr{y zj>0+?w&4V79Rc$0^TJ%d`Z{an2Y0Vh%OdxFku!K#DFxn}=k5K=jAi$}L<={kP%^4i zs4!dKQ|&brDNEob>R*Wl?tkPTSw9HckHNjwhGKLm0sgK%PhW|kQM@m^{=wrZYp=-A zw0n|%DAs?xx&8D5R(6?3IB*Wi(QyO<)Nv1f`Hu%Mw~06PpyN2BP*B?1_yFfH%>Pub zR|)st&Dp%HpFN%8m@=0LV-4+U66HEP*B66+&9QtR=9!rzg z)NlR<+CKK=hq(9VUx)!uIFrc7+f}GYqXhlm#?j6B1(hTQ(ESJo*!s=SL80Tj?!-{Z z|7aV1iS+7P+h-BD*q8hLCF*zo>K5%B>J9~jeSZOb|1V71si40YmjBe>f>yoUFD%i# z{TnC9{mFnf6y-zSH=}c}&j5_s_WCcQF4F z9D}2b1i&(7h;x2Ir|<8*>%^2{uOY00s{>L1c+k#z7NLlkQ&=f9NtiL&Zc;$r3cGjM{ zw$>^1cW}A~tY1UFKI}bPrxE|F?&mSsr8~gP`7LI}ndN0O_X{BH{uy-);jhwh8B&J5 zX8jC3OU*_4SK(;qDEDV58`~M(?ybAS`2V(GBy@TnYH>ZzT51&jugvg#Jm0sVpZeFd z@ckKI)p~#ujY7%?n82of0ObE&Sa6k`(?MJ!1eevf56~FrOzyuVo*Jj16G|CRQ_H8X=lCW5D7pL<{fnEsjL**KKB%P^mhn6QEc9S;CvB* zIeMLpcpY!C-Pg3K(f{Q#7y8|vwOz%dAIkNL&C_nZ1%<}FMtVx``CtCMXYN;CZ8mv+ zjok5!BkI4xwo2mFzgYcie1;nauNCqf3Z4AF61*A$7zO2ED+JWdQ!4$(ux|s>Rcc;m z$^NxCvCDRSXr0rb0PpVKiNg1q1w%BQN6>;fPOiW41X{MBDjgkI{}_-YEBIe+Ft_W8 z<}TgiucM%nMsR}68tc(M^k+^)3evI;2{Zl_g$M<)NWT+Wuk-5K$Gh5u@cod;4X@1!|;h6b8FkZ4O!!YSt@2+1tKc-5FO2HxYgk zc$;nOK`CP@L3F0S&F&#sg}O6Mw$6voDjbP^y(bVaalBkoQ#r0+aZ6_SP$k@GRj8@9>hdnJIpBKO0(J0f z(>6uwHWo;C%Q5`~;%MeFNZ^&qQFrW=H>;#GDr0+&O4C_3+_X@`!Yz+wy%$)-6x%<= z9=A0J*0P*hMZR^_vy(|m%O0w|{4A7J7f;jbFm=)C zs+Gjh{#mzSq$)cxH6i3CWXiOO<%pd|C{I~)l|@Z8K`i5S(EAKB&KiEscysE`lG`7 z;2;(bte13MdovMMTiqnW0x1%w;TrvcHhoR~q#>2*)RV-*m0q{nS;*y{ON#E@WxeUm z^^-|c55D-ORQ-y!RgI3!qTKePeptjIWloJ4`n@TOYAd9bH4IBnKZw>ogC^>(JpNbT zwAAo&t1@4fEXn>PBJXx={M1m}Jdh=QHn@7jZ0*moRc~H&mA&q)8GDmlKIpbkBxQ{} z*6%opTLOY%`P)yJ<`AJ|fq~_{+D?JWA~`^)YGJZ2erZ(ZNVGtex#%!W|K2hcM9OC~ z4=3Mys*rJxlITksAxK*a!wfvIg^|xMzWvA z+7Wigb%91vO=_|zVW1fj&nMMrXG#+z%UT5Mc@W<;6yY*7Gp%gR%KTA2TyB0A*P|mg z?*OWwCWh?4o2WjTR>2xz3G_UzRVUQQ0RB>P&t32OTyaS zch|px3iu>Ains3ki8rrQvp=-o^{-Rf%(|7y6U-veR_=pDj$z$JMO`K7Qae6YJ85tAfHFl=$Qkp`n!KIj? zmMj%uVm($vPcFUiSC@m|a;KsiWKBcW%~B8aT|Wq4c$75IFd`N^)@LV5Z}*Wzd(Znx-N%-zQDo93 z-aZLI{>Y42yuRQ@ToR;uS|L=*s)*WEip4Ves~zn}O;gFqX1@q>WU{F@hH5J=H5tce zAGy81l1prw)QJkOuBvQ1L(ZGY#$|_OjNkj6na_dKC41b)*8~J{p)j{ltJ!T} zgcUnUV4jz4cWjj^9Z7MWj5cN|Yug)WBqu3ACfoTv~*#3s>wf4`J^js*o z{A4}@|b7uZIP$E5YrzLLwu;lE#81l?{VkZo6iw z)o)pE0}KpX;F@8`-qo3QPk8=#@pA~&-xDG&x9hq*FbH~#0=6xlR@V`- ze2Yyf0W8#?ZDLoNQnp`^dq)@N09AUI#K9qAMF^A$f5}WuQIx;*dh{e}inru(5h{nG zURB`iKKDKQ`f%O(HE;C)Ix~r#1X|C@$~3O1@}p6Hm!^oFafi!wfe2ZyJSKZmks2A@ zwvD}|BpNT)Hket~zOG%*b>I4>eIA+0DrjvUpuDt9QQj&OZWsJsU@I6ZP!s_x+ZRe< z!fWLg?Jhu*ehn7o5i|)NPbDC5cCR4$vU*L^9fQ#=ac0x=`_}cOz#hQ@Nbnq;axLM} z%=+E@c?}ll5rM7RUJD!1(sCdf(n>+K-&)WQ;;xQDYPPIgX5n}o5%alYw)(+2&Gvn_ z8-|xCoJM@M2zur-(OodY!fml@qQ=-&@Kqn4Bi$y5NFIM6?|=RBO>k-|g1#b4l48<0Ex_BUe%1I94Kb*oyh7>`D(b z3{L1qkvVinhK_{0d-cW_R-RAy2%OC`EaFx4wklTZ^<6VF4L)7+p*88NUGk+6)J+bt zW$U;gxU6}1Vt?Rz=hyeVN)(d1?nPx69F>f~T?j0n8A^yX{-CMNJBGruJ_L`gu(2V*k4>d#mlh{>cGg(zd|O+KLd7vvpqJrQA2F zEBGuI91!9|ke(=v(4RYOm{bEVB17uGHAwT3dijj15>2uPu0k4&!HUAn%XAzlAArJ2 zo9e(@iJFGZ(1K~-U3)G<{cCH-Ask9gOnoYJ>crdWOIYVj;z8lYSJJb@hI`aeJvqEF zv=6(U0}AS=0);qjJ9(I```5!$yuB#?LKHRjtyuA}!(}1*x3^rj41>7*i7%C?;0h<} z(ZxYGu(Qt23$>FLvcA#d@2Kbn4-1zy$P=0~h)$@HEo;yVLj}J$`*rGs%oL5t{8(70 zb(9D9G0P(D!uyzOKiMg&S#?MREtG1>QQa~nQ2ElFk0|J(eEump-V)e<@1NHQ%A)`xL^913r+ls zV@TM&4hX8b<^B{Gk9UQzHedf3_QF>sLsj;_>ta zW|wQ{#=keNpHDWEX4l8W!#^(fMH3Dz_RTQl5^Bq9z0DAax!C?>c?$j_e%q^WGV%FZ z9z;{p?$sw1sr2L9A>7`M+B~aeYMXqyc^5l(g?!!+hMn?bYT9PWx4>!W%kCdu4h~JX zZ;9U509zJ+ZYb38KJHthz*%Gs9%)kQw}hKct?XM6by+$X2@>kPfn15Mb{^-T-9Q|P z^W4rfvk}}w))^y4!cB|b_4Ay+qz9uz{M_u06!5levm7R~!J?tn0Zrov@~N^1ts8FSVorDD*B&QoqZy5aQ`y zwisylqh>J}<6ADDjYl6Ctve*Cj+sAlBQt)@V7yJkpM+jhxHsaxdR@Rn!_3=NNe%aj z1ivjk?cn1M_FcvLN<_MYCwbpds<|^0O>^n{w-v**Csp~g`Q;C$Wo{I}@yNpVFE2H1 zWN;reeb_NCD|WnS}io}3HT_CzH%B414+H!VRPovyV> z8(r-zvc({@jRe#-amLo zDgvvy60?^z&9g!8cOGm5jeLRevb$eu3BF}EB?U5``(GDQn83yd7j+K54V>qnG&!>f z@}~H$0iDmk7T5-41S%EItAYLd=O+|!FdJ{jJ*W~ z;dHSdV-Y%VPX_geF2^lkl=onCR^It7yl*FN8+Tu?_93FZQ|xlqB`Vtu%~TWyg`EHc z#crc|md-q`P!>p^sXRV8VXB9wh3mqOqZ41?GQ)rV2wze@law%-KZ8(Oi)t0LZ~Xm$VzmSDOBWevaXA%DOWYovmG_68(@fG`pH-)RxhWlU=rY%+#<+F=L)vPNpH|e9_ONc{ zTKm;RrAQG;5~X)-R9q^nwv<)dzQ_T`5+hAPFx}k`=>>E% ze%iU6%&|HX;;|0xxCMvow|UKAe6AykI=khP?nt8R6Cg{Z6S4} znWuABv#r*f|Bju$#gX5WyQf{QuH`cHSScG{tnK=q0g`im2*qOCg@WSCgXAyBx^Huf z*Q2ipFllfz73wy=DI*9sqAG@ifx)RQEdf3yYRI}u+pcrziB z4Ilm9X43IPxq9;MhBquv+5b3!epFYQX@)&BHiYg&$0b<s9 zx(k0iuhRV@55?<$+6|dof34nCeCkIAgMa3+o02rV)imqCR=#V8JBS*(ZbILI0A?wx zsjZXelNB6tAFepPgOeYo8r8d2<7zx8S9L#G=GXiY_9|D#_-|=EyIFa6Zl|G|&E7om zJkL|poCZG{1s6|<7OV|2w(KEV&u{jI7S1PNgc3^Z(&SJ=mKa#L^mBS+uRIP4*~)WP zezxItEOXv>!|Fc*K8$rFT%^@VO>qLA<2{pBi!eCv)bWw_>y30uTrXEwQMPJlr7@J= z2kf;x22IcIVVY66jI}BHM8AN6tLtFP?OzooS}VDmr+!+A=~+ICUOv}#ID=(1^JxWe z)ZVY}YC{eCOmrfrl7f9rdqu*L;Uh`nT0IxO$%*w+)DB(~=5Xhnh7^;iQ9zVt7_73}joepngzqAXxu zWagQOCB9jmv>mkTRF!oS+1hxyMm^ozg~Yd%J0i+(U)jc>Et+`Fny4DZDF)ouqesx1 zmLD0u(;m>D|A7^J;!QHAiFiu3JPs3AurHvmS^h$XQ2qiXXprHDC)Y!WqQU4aGey#W zFM4XG&?0OVV0KI{W~|XMJ&C9*osO>;Qb38cVVH{`=op3JGo-S9b4W;$~J{vbC$t9wuwV9(TN#0G9gskTyHz$B;0A4T0Rl; z8?&_~>OE2v+Wj8z!Bm+x6tUiIrm;#mW_8ugA?*V%YkX$GOxSPVlj0R$!d#}O5mvwG z%|hT5&tZ~n#7xT$UVG}Vy011OZB-SiW;sVs2V7o5hs%Bk6cG3F#^iXPN$*hx8UrtJ zoSJl_P;8)?z0;85{c{kDZC1+`x{k_#z-mrnPMOG*z*?mI*}ir3mwCMA`5R9D>y>6{ zGKhunWZ-*|)~i^o`eWnjyz$7&D;MAu>Z}GULU5bk5Tk%0np$WicFih1ucBWqm!f`S zvDWSTEE5c(6}Ppq5LKGyB)c8ncOBSyKp`T0`H;ir@oOEmix;=llOkit-o~PC3=d&? z(Z$v(PEw0^VTpvDfptJ)cI7F-V zX?^OwDF`i$(t+h`@@Uje3)-W)l-w%N4t`(D5tu1xB1sxPk%| zWa!zaQBN#Jx1A@ne8ZsHi zKd(GLEHR7w_G6xcxxA?-tT9%mBPG|UN}5?@WJzf>D(o{%2aO|(~KUbf^y2OOXB8bLw|?2$wo0Y7{BwIKK6*1%T`%iVOF#f z70l^;@osY-^F2(gnXpwu_TVly5QPyMlh2XBaq`mc5Wp{@o3J(f;q_%fD|V*wBSp*v zT`s)6fZ;ri9#MO%$4N#-=$|8S01s8x2@zPf$^CMjeAq*jgp^YF4>!i@TW*IF7bzw` zflrFt(~Qemt-fD-9&gf6wZBM~zxzsE?o@@?N(!L?aJ43Pw5n=6(+17f$De;PsVRV- zf9l`=MrO@Myk%uBB1D}};T1|+Ynz4EvL|$3vaxD4Ukr85I)F}}#e@ByFZ^IOGh>Dv ze%0X7QscHIsctNp;?Tx!yPu;pXqR-xYX(D*A2+JIuyv_9*O9_xje;8rdvMQmpI~%x zq12)0foGiUsKC1qXHR|}vCXJA&hpqB?1ET2A?guNq>u1|IHg?)lV(!lY98Fmf!0*s zuMtEbDDv%G*b@G8z{H-M)t);+PFoe^BO4^zVSw}#RbojQ%yj%d-ZBaMw2#d}CBvF7 zqa`TrhCw`gRV-EGE0Fw`Um}aFC5!d+SH_)r`Zw2lI|E$S8jT(Dvmx}idi2l;N@d6g zFQ4G!()?haafxaB<6rcXzBAfG6#=}y_(a{&HOlqDpLTII@1-_HPH^cp7ylS=)&)>Z zeWx2*9`6zS7(y$(=AdPn8XLevT76kDqZ$#J%58JSQ7(7*^pG{$Z<8V~4wxdTRbsj~ zL%i~*rcCfU{;I(;X(`pbxHw;exzb|L_(M_{|Jj_XRou4J^}55_cL+80-uMRjYOhsM zi7+GlhD}Q3LcZM4Br&94F^X%_P56)ZQmK=#L20!r>*M7-_-1;CrX~thxudUr63^IM zq->S(doO7E>-TcM0WEcbcPFnk?-uwX+~|9?KOCj)WWCfE5-E;jujIVYUPPJ8YCm6a z&2S)!!0 zo=oZLRV$s>Wwsu7)0j{iUew4Y-9sWlmHl2;@kn99@O#k6Y0OsN&O~CLpSik+bt@N5 z#%X@ST-U^&SS|^3xGyQ4Yn5jOq6K8JDAB5Xg2w4)hcq>{HQ%K2)iud15fFU{;KiRl zw}^>xmS^8d#Sb8KqF3W;-068}JNU35I}@)$4;*y$@B$odj0UP|w159-D%7H~TXb`g zGp6SfuG>pVAwX7}HCB7gsRYZ1$3C`6EU0sB{)S@fi|}hn7dSK+-i}+e#*KSj@++Xv z+&}@^WumgD9a;xY9=b)HEC(1HoRiN{wB`QtgK%fDnn0>ecANJYU9w+rBT<+aKDw-X zhbeZdg$@6pYl6m|4`<;TgxrR-fM?_6Yrkz&b?lzkvMdOyqh0K%fSJd)dt! zR=#BZh=O>FNE(ufVW(?B7D$P$G{m1VSyx_a?X*r*8M%UII963gcFLr6K#gnG1P1l( zTi@q=lnYPv9W164imlaHg-YY)8{a%e>o@ih3V^^_p9(uNb2E@q-`f`FveRIoj%q%3 z&Q*ThlWiUY^7NGyBD+2!pU4i4xf~Aer^r~*P1!3(w-hX@FrjpsecYLOuJHu}4)LT? z;>a}p-VEoekk`r~CXtjg57CWVgrlen+B}1c;qHSFtz|x&(G9Td;K=jH1~0XA4dtnD z*6J$D#I_UX2{wLlag>opsq$GEZ(XpP6*$pud?A!K7A0d|*o|=)QQdH6+{qTP)!E3^7KDz`WB{zf7e z(|D-;vEuYt#QM=@`YF*zM(zFgg;BS)lRPikgZ=K(C58q+pm@M&^9p;5rVYz?H)`Ab zK;uNC_9wM@_nM0xJXvP_A3up~(+UBZ@dhpnK}FHkKGUm$5bKD7sHU-a4W^_t*zs?y zR{HirMNM`>lgw15{GN$5mDLec0cGuHOJk&a)5pZm5tog{H6LGF#Q1x9J2j!upcb;5 zVJ`gG;j@yNAnROyIcYQxVNZG=7A>HU6Gn^F6%_Xz#)kaV(}+x077Xt=PIJ>e8)k-2 z2`bn`%EEcx zrA+ArdCnXS+$i5}_T9f&U3UTk$DAq))k;M&!|SDHSEkhETlsNktpZ9}n@gTBJi7a@ z&$QQ*o`38axTWxuodwPIBk{jW=#?qG4i|BGF-!V<32U(ADI|#e6!p^K{EC#+=5pkl z7TF{=qfNQ4*6z>D+H5nhTGOx4dZ+k}9vUdJzMCZf^IRj;dj+&6a?ILpf4+N(@i?%j zGPA-9+ws><7Z8N;?jN<-qO zKJ^N7ksO8)wu)Tt)tOKD1#;t3m_9iLQG#kBcB*~D(GN?OpGoag*A7)2%AMnNzrG*$A(l#9MdH>BI+hP^|Zf z%I5oQ-6sA;3TN(sBfxMDbH^Se6R%ds zGU4XqT+5$tVXb2*HD-j>TVq!g?E5jz5G}yeGuWBzQiNoDoC=}=Xsdw_5n1-He7}|) zv3xvZk`ZQ-UaneRmt-Y!4Db0o(nW~w9i{n-IraitUenzDE zL8WIh#sY!~TvyX*HJunIjq-3dLm5%$39Cqcns`yV+^#K&|XoF{aTux5Nx zx>E)_I-AYijf@3u4;G21p55QL%jhbVg6WaF8>%ko=#o5Nxtdlqf?gY&#`q2ZO}lvQ zE(-fo=s{41!bt!uoD%Jg!7uKD$~Pj8K%%FD@t2FFzFcN+En4KhmjKm8sMMR%4!}ik zLSoSr2zA>PhvQHjcjst3{ftq5 z`?_WR$}kCXXnCC3`ZYi{a+{_{!E zE)yeY$8$~w(L9btRaGs%JHXORrS1%`(zsUQ9-;9gn@)BkM)m<3nq7~skM;j0{ zgEk3xj%F1rmn|U&aL+dcCogG^iC*O|GYu>CdA1!3fMu!$+se9RjwcrJVq4BRE9`NO zABW{DERFL9Arfr+$T_90`w0-L%onBGZ=f?`m!rUy)B?`}S zhHUIy@Ns|&;>qZnH;Zz#SZ~Q?_M?qN72qax+lczxD1JB>XY-k;FOu8|KTm z9!T24#?Dd56P&;6;}y}`cRA|)?)Hb3y%cDk+)@6BW6>OHjNbna*iO1C58 zUmUhf1Ate)V0v9jywHWN0!rh70h|~uoJebmcESCz02p8_SscMn$& zGaG{)5HIW$8pMV)|8|*z^%zDeIfRTRe}iB%631O_^XoVA|L(84Kj~}D47-9tMM}pT zugyw9gWq$E8P5Q5_7KF!jQVF8BR@dd{b;+*b*;)0^_(ccnRR((>l;8vzwWX7_Y3#q zcBAIrL}}}=qSxpVeqJ!wTzquaua2x0N9DblRfjx7u>H7GI@W}9#BA#DoY2XhNUo*HSW??XM0-Jx^YPwyyFd-C#^^3Leg zGkVWAnMu`cI%0n{%7JqZ4w)xhuIMkub?jlBS7b2@XRU`s6dHZR$JiL5iIk!k)yBZd zE5K_Dpfu$(g6FR8%A3F2AK&aAvx?Y+U964Gtw<^ZhI!@gH(c9PbZ9F>_hkDzlKP6 zN8%8=hLU!takKMzd5RrL=d55`(2`i6%h9dT|jD)a)>C8 z6>NT)d%bdOF1`x{3`a5zdDvl}fkZ5AJ2xY}VK;af|gvjpkKsZ%YG1<1@m(Jy>%o5`-9mU&Ib1QtKRR?Et{bT{&!y_lJo!-Rh)}IwTBfHbB2A}Mc zZ-)JEO*=p0NV|*^uBUt-@}5BL7Q1t*RMY)fBopCNKPDH-fi>w#iz)fymYIY_5!)<@ zh7nynMkVs&M~#W^L}s{*el#2oW{mD^BR|R~E&7ua7Xx8eA+arWmEY_W@_N|W0gGfG z)!uU<#RRR~6f%h!KTs(HDOg;Z9%bmrxkc?b5Ol?sO@YAga^*~F$k{FTEQRc$VG5Ov z3v>47p;C2gR<8ckOCDmoeHB(g14Z%gT}i|?XCI6um&qj&Ld9wmSPt=}+h<+=Y(>8( z)_IB$6|-Y#&Zs8}#J5C~hBt!b2Ja%IFr<2u?N{|tN ziaso06y@`2@-Y0YL^Y^;O5vkyGfXbKU=mZu#&&;JwCcLhIktyPNyn@)0So1+0>P7~CLKc|zXj)^(eM*FE{2fN(o5ilwVMrgu$j?zJsqS?q9u6$Wf_p2N~z z(EaA-^gYKJE!zm-jV+k;Fw*RB=* zKy%1^eSr9#siw)FIr3n$8r@$JEqtU~b*60uv2cC_&Y#)esB9!v_GUUy)DE^`z2N(@ zKbf)J(Y6@zq-<%CQb88g1}6HR;7s8yf;9TvILL<3)1HZ*lO%1?VVHf|cZ_~=8T634 zs~dm_4X+C(6os;W9ToU)jps5Yvp>juU6uRlp1ygl77WS>#-Nv8J<}OEyV1O1*jkf& z*B*YyGnx4rx>3sqb7fJ1La;pQ_QP*GfIdu{@~NsW1+sH0qxQ~^pQ(Z8Se>!t)04~6 z$DymxR-?Vq+ey3S2&3QCDsXVV{U8j>w1<+TlTU8r_;ZUDNSg^*s|w{snP8iQ@zd`s zhePwU&XHk4f9#@QUj%E$l2)AD(z)|}wTx%xy}&@ar<>_ja{=lGy5qWOiRlB94?fno z>~)!S`5;~(-`7+j#k>3I%w2}#Qz4_v0=RHD&E}JsPk0}5pcV}~HGByY7!Pr0Nc+gm zi#{)IQ5&_!Dt!f6`8EI=~vRs1bp4@p3I*$P?T za9q(CO0=Vn^x$;J`6490gQ6y*Ex~?MeB(Sh?|**=f~!71>hQUuH{|w(OCDW=Hy^I| zPw^&9elmdJfF^a=Jae-xE5KGim-{cC&v)oP@pK&fASQRMy}7J}z+9d~-Z&4MpjIDU zqBdU?psGB*x%Wvo`p_mN+}^{M#~L?IhoAq1d*YtS$Lab#+)4J|&gcto+2|MO7OX8^ zr$sgl84z*!%cix>d&`%;{cud9iW4c9A7Ooz2*J8Zi>ofLXn$B>vKR_aR`%4CPxi__5~NYY5U>(J3morOHX}J z%G(iB1?5RAyvNloUVT+}ZmeA{h6Pe#pzyOsx66 zl=*pN9Hk|*(zsJhC^sp8erY1TI-}WE7$)*oN2RS9i5Q>lLh=&~=HAG3cK%#b>3<(< z83P1dK^600vKrX%R6^$y(R~1B9*fNgXDz) zi{vioqhwuKoU5~_&#EnYLmQiih0)oMDMJQG#k<_gd_8|q{qY;VZk96#7Gd2AdAM6V z_{4K9BvO45m*wM$mFm|m0dz-0O%%J#QTB*o&9gu8O@7?2^EM2htUt>4n@``4=LcIx zovfD~jI2zjJmzz3))CL}ncaWZYU5yB10~oK$CM8bVr*|8S!_#k57mzk-Hr{_@9qd(T!faSF!VX= zsr0&&7e+S9OA@wU|-ZXm>W$0toJ|?&H^n8D$x26==XFy}W$+zzreB>&9Q0{fMjsIh z*lkWrN=()N%0)^po85}JPWe21=7_y5Ah9hs|K#Z8`{2OhYr>MjeL{{A=<*oKN$*}t zfuShNx5yqU$jeM;+D&^Ao!(+e?di+nY0U3wFMOYLznz$KIh7-jcWznm+thf8J6>); zkEjD~I`GJ>TOB)2UT4tPDS*T=P1cTtKz9&r^^<_d+VOfv=kvFSAr;kv z(Me98^@RvFD({ZiY9qE?Rfhd7t*|VNvz_bn&wrW2W-ffkm%zSEb=~=$k)C`+s7cAe z0yn%}V{SMoPt^Fb-p4t@Ys)l08qsHgYMDdIF+A!M?x>?}2Y-*K)uxdM!yMf_+6M}Ll2em zCO@B}J-1`G+-B2ak5F)rM`z6{ST|PE!V)okuw~kxYJ>CFwOClF?Xtt zW=}~$CZ5S;tTOgWN_umbD{f5Yb3-dRG3#4NnJ#9Ujj`A>2Wi7yA-7Ddq>Mdb1wa2d zvhD4-bf2Ik`@Nm++>7`f6RmqObw6@Ok>mujp`rSS0iK=hW#@~qbRScRHdhHhmmD7# zbzxz~wZtUI$ngC5Fwe*^aBoM_ZK(dk_A<)FWPo72Gk(nJ5S@LxqHqg`XG3&LbF@!I zH1QZhO2QQ1XvvkK@bfoeUv`imFQ~07x~($0tuVT+Fq}!YO}}KFt+B1FiK~Atamzk+BWm}4c@TQ}6qe!BWf6t#>ODh( zDT00uY`jwvZeu4xTI5!w@mLmgjY?0|K3YZnul4dXW-b&YXZ-*j!_PT_GEuip%tB`e zCYG_52-EIb?2|fl_I8$ccXBQ-PA)IPGA`f*c97hMFizqXPvgl}3tbaPSLn;%n`Tc5 zaO1R;ldl*=E4iQ+*#^R^eDYveBQ6mz%Dao7b0{XqTHCp67j@=lP!JyPoF*E%>aiw;x+- zsaMspqY`_TWj9G^9DN5{%{Hj=W^(doWcXb5_*{MYXp+DJ_@s<^rwneqE^*O{o=C zsTEx*68c=b*NZvVjxjg#gK|Bda-pEDY)|vWLG$H-_r<~1{Z;EdC(qFe#rc5EL*n99 zY4yRf`Lv|Pbp3cfBw2oqFKtZW(M_QR;Kj>zv>UL47&Pk}wiQi3pHNEGLo)CylVjk1$O zHd+5otdqI@@mDeY4v)wcFnSPc)Q3_B@m$MVR`@Vz#1&&J$FLo%(Jf z=XZjRoV(EYHXIZhKGA{WaYD?jyZawaH~h57wOd+Gw$P{syQv0=BsonwN2vy1&z$H; z#D-z*=||W9GL4EfwI>@~{S@2kOzrLDd$V!9C^=_ArUx3`OFJ*CUr%?> zR!)NKLE#sN_zCytNS>jh>%BQw$5RATD}47%w5!9QH;!E&S&m*fB)h)A%o}9#%!8m% z&RrB)w?s725`qjVK87qWJ1)SC)7^p7-R@~&*Ybfgau4Aiy8sXS<%-kYthu?dXuFMQ zyN_tQz9<(D=_Uv1CJX5%4=F)foXy8CE6ye(ZUAR_D-p>C-`i~eWHh<}$rj(+X#b=D zPfXQBtR{n?%g5y*WOcT`p@4lVW{ZWJi{o;=@9ye!f_FY`e?HB#gqe7KU0sKqye1`q zePp!X;ZBs(Jt4DGU6wE|p=D%L^YFmh;jT2ZQ(Jb6g#0=&Vfdhs;c^Rfck*y@IbYx^ z9lOQJ>tW@A?qEkD2{GjnwN1lh2Vlr!9IK|B$)mK8^cj zBFpOtJI7skjEBm2ptCOY=o0Wk0C>p)yp&#SOW#Afp9s2BWI6V1Js&6xJC=Dmmi1OP zwH$4#-)2|3@lbDNU|f$!Jev-pso(lnzUZlVQBY@3L}*Rb0gmD}W@y_;$c(Le-96cS z#MpdH*?eg5DY)6r zd9-4-)nc}lVz#wnh$x3kmfFkyCr{f4(d-p0M%e>j*^IOUVR!|u0q(7+?cD!ac{e4t zdZmKR$br@$UlvGxb40$={h|+|L~izh3bNjY)_-deSh+3vvvS9B`-U}et&7^TP39wq z(&H=g4r0B1V;{I?9=P5{?a}oc*l-QozDDhdW$a6yX71a_VfqDvk759GkXix1lUlu@ zl3Ib8NH5&*Q32%G`tz#T`u8~~J-R=AdZyq2B^>%7yv*9ijLh0g&CFV0W^k0 z9Mtt}zk#P30fS*=tX+v3x3U$UT6YU;=8q79|4roef%=%8=-4$l^W+_h0mSzJHY7%U z^gZ7sM!oc1w?_`&>jCm1_gJre3cKnFKLKTgU-bl^fE^;|CA9!Qk$;$%%VFF6`{+wBcQCQ3+8|4`Y~w_O7`equUDoC`B6H(inX~P1x?!}fq<-{W*M1aW>o{7qJwevOn=t_GV~d~QZ{XtuXFYyAyfg6L!eI}h=deG=64(HVAiGLe+57w_ zt#||={s%-vA{!tl;0o%gJOxKaG|M-3!{js^|B>%+0Xqji9~iZR2zUga z3v?46K(=7)FpRJVc%h9bTDqhCo06~rL8ygbIb?QdU&LY%J=A3o=eO?;&q}mFo?QwK zB&W!Po~ZlnCd*HN@fCsJZ@)Ao5CP3F{%!kz7uJr@ z{_VdC$ee~g1vBo|*CMv>gYo5WlLn`briHA=7c|IF{=;&AbWvo$rk|>#|BC3HffX%N zfBa*Cd?ulz!In{d_%FjBDbF<4|M>2AkDD{FE(^cz4}Q^I>zH7s%32yD5Y#x`q9xwS z$C3ZHjzXHn)gyn|s4kW@rO#swBPwGM(o*u8(iN@0jT2vZ?ooIJ>K3W$i+H8JYFau| z(cFHHa`B&~V_1VJUQ$?2A`5Neg~l=Vt>~x0%D@N-lgC!3la8>c5T~P|WGybL50)rf zq*=mlQnO%OBZJ!WGSQBvrK4nN`{mz}yIJ0lrQjW|UEV0oPY4HNpRY~b;LL4(b^h*U z)zy3txo+d6l>9@K(JLwPM{#g|c@(;VVv#}97?sR2twj$bfwI)})^5O`%RgFox@jw; zGS`%B>Zn?BY$!VnI;Wft_94Z`e!Tpy1vh`BP(83je_-28m)JIW~O;v z8Jkrs%F|6o68NiCjpAK-sVP*CF_PuU$y9MtQU}(n6&k3QQlHuiyNHazMJVx_7Kcn4 zqG3N4x=n(ACZ({WOX+xhubpr?YohY}OT;FReZOJfJRp}cqDbjFqN%v1X}V4;Wu-_N zr=Y}UjFeJ1%2c5=s!iqMv8f{(jupJQZMM835={3~rt=T3sc*?>yi+*~eVT%Ww~TVS z6*X}>%J+ia=8Wp$gC{2O&eBQ;b8!}-0jUh@lO_cLVMA^J;sMZ-vQRB~Tn05uvPx{o zRq`BHG;*(pqm7w0&l(R6-EDK~0lVx*!dRpOH|@AYylF*?>@jVP*p{wHAnNL%{;~WQ zTvlqVwt$0!dc`pm8f;|Y!Nm{<{paMjm4#ko3OFy5b?f8XZstu!6owCrcAOw zpV`F5hr?#ux040GWnWzv_i2DML6=8l+i_cB+nc#i`a%)CdA96N#rmOx9~SJ zZyi+PW3zsQnXJyf(tL}aZ5}dc?5YztmpCqZJb2VlDTgE!H339665^JXtysw0%2&k% z5DJ{zFlxv}l$D|AWUgt;uUM=`)Rg^sV^9#IV_2-Gnsy-K&3)YGLaf45U+c%r&{!5W z*Z3qso-oUm7PT~L)aVlKq)EUlcZdBi=i$+%s`%LW*}-d>zJ(}k!)fNCa#5t*v@BeV zr(T-G6nZ zT;O601H7BVcUbj!letN?Qa0_joSY=FNjJkQBXm|3?Vd7~?0yO$*vMBD5wM^t2FrMtB#*!2>b_<+%ga#gh@YzG|UG=Qc)r z`7)GSkt%z6u~x=z1!~pQ`22ci!~FZl5$jCZ_6T(9Shy+nsO`V&#w`4Vi?4lWsXWPf zjrpWgsxnhCVohGkVh2j?TaECnl;02d7H{#{3!H5&$~&?auPcS-B-bF6uUQZD7>Yc$ z!WqM&sSm%JS4fN!^X`c}A5zFwWPfqkaEo^1pDDF`G*T^$3(e$4GHpZrvAh~Go8B7X zcW)mxX(B4oqc3RwT2poWGWuCQUP;+@S_07A(CdNEN!K82EJ2{)(22VwB7ekR+BC>I zH+h;k+CUu_V3dmGrJT&u8nY256t=&|Va`!rSRiBZ+m%noj8?Mj#O=D0ElrEqHn@jr z?_ebr(5E?BLYmLPZ;q9W{v*`P8`j+@b8AD+Bw?S#7I&NW*|4pwup+FmwNB8QS>B}Q ziH{cdE}!I*{Wm;p0&e7~vp?1G(42={(>yWn=;2q&2jNq~gLopd1@$Hab)L$S!x#?H zs>CnY=81{H3L?%6&_{@e0qp{TKhPwA@|7MMUX&DQ%eIMZ$Qa>HC|0Y%g}5o?k4zFBCj=G3{WFT0X%(e4sElhDXM zt6WP`DNbYbaqQ&l$U`A>`=bNXJXQT<@_Gu5<9Yd@h=;Ec4fjTs>M*BG=a$mS*mv{A zk8^k)XHk_HB-*&_$d>Nt(f%omtQ?Huk9-<}p zwHLj-=$;$N{&3%|R0H}jx!Y7)4_;Ag^=nxPSA1Rpx_qrVu8T=%goK+EZ?ANtc1x3L zXT{gmj^AApbFL{nt((o2oyAVUcj@wPemCcn!yS!a!?pKoBu;luS`cLEn*GTTPl~9T z@!+K-X|2bz5UzC*xcJH^qo_rUAzOvN;b&TG$SgIe627@VW$arcgTKpHXx45Ky$~qoJHaWpb!Bu{fRjgEvhhgNLYq>tPHR)_g!=fs2Q4eEO`VL|I*S zP#4k7@rz>}j-^#!*&#qTfWkd(t?ILU88_9sjvb)+I>yZCtr2T!)7Zg2Xe`p zHR%#^Uy8O5?Y#_50vq124r~n!J=PuxVTLmIi!+jplZ^oR`!4TDq)h$3xz&iPaeZY@ znB_w&vGfh(B^@E(j;|RKaH{H}U8Ej$$7MV%l#U1MqKRCn5hkR$RLPTI;ttKaGX+1J z%$+az>4f8wV+A^h68y9sF0u}OSmpLaZ&p*;z(k1weg5+;oElJk9de8#>tIt#X%hV4Z`~BS4^^5W_@4RvO*JVO7`s(m~cEltA;ZQ z!Qbp2nY1&!)QGHFAyY3YldwbjgK%iLZ!wBnabzOiJufVlC{IVpxvu?74ih)pi+wU+xJ4s<2+UsClIM$&EawuyrHb zAg${9d|~BjE?|!VC0$6rVIve*GQ8@dI&np|Zt?qb!wef4{~H-Y5vNTc+jhc%Krn5Y zzYu1^(w|_CaqC=k(u-f9g%x5RMGzvpLfr=9m)ir~2`y>@zkRsK+CG^FOM4a{1g(d7%Q??h>+5m?O*Lhc|M8oHmArKb0R-l;U{m%+yE;3A}FxMJ$By?C4C@0 zvt_EaT>lE#HRHhJV!XqAwyY8NRa;EL^kj!!w3wyi2RN}Vv3^ue8?B~`6`u-gs+870 zm#r0oJvGn+#mSM2Up3i|Be;%}Q|Tii(&V=nQ13MiMDgJXnXy0g%AYpp!eSR`F(+B> z-9gHD#1H^G@io(3>h?EY3Qw^MZyjuFrA^k&Srq%q2?SS6asO(wNk79f995H0aYVz7 zwEbtZw4|o|vlmJQljSn0wX>WE^*S!PJK>M8{L! zx9Kpk@37u3Nal23uhPnzqzL{4(usS%^-Y1L(vHEGefQvhJA#l8I?1HLMC^}XjD>#| zPwONz1A)OJ8_@5TqVr%p8nY5e%teKw?+nP=r8F)_^9Tcy(FA}ta8H*jWI{pfm6+V4 zH2=|Rh4*<=x*nWSLI$YR zY!YGMA92xEfAx@wYw-<*?&3VXuf-eyzPn)U<3KQCcw4hoWGJGnT~xkjdAn(`X|bn? z>)-Dy$K;DHa*v!PvdUTI)r#7SSvv4EwOS+P5RzoJ(Lc$T1&JBbGPRHd%^kG*i4^zy zhXo0}(GNz41+&kF;nDhaVcZY!usuH=9Iy)#c3>Uck_%*W^c|SP5E~`Vd5-lL^egfr zEVQM?mF*tf2uW*%F-g$Hl8K4-iyLVG%F1p}??yGXisx@Y5rbiQ5?!nuLM#PBz`Li7AI|78!bC&799DGxPs6WE zg!8BtPWmB{#jK26_z+=<4klbVjAISS7{bka7wAH)^vsT=1^fNFdSfHn(m1?hi3eC| zOfKw-L)ZFa16|T-UVkVR!yB|lp+ETx5F^9>t9dC3%>noL#o_I`20*OOfKC5`M8}lL zA^X~y;c8_K1uJ+G&gQ8TAc5`qNd(7kr2DG#J-AB)(EcG;u4Kwng-aFE*_0(!#%VB# z(p2oMjMYNF*(43F1a{|Pw2^-!Sei#oe-8^|#b&fTV#vpnfT!eH)zejncVLJf{!=W8 zHcD8?9Ql4H`sP3{dQguOgIwS^p5E>LKkc8tCT{eR42|EWk-{e}I4v^tuwN_Z?z57v(e*_8T>j{ZSmw z8P_^=Ed2SBGpzSb0meu{UDVrcB^3Yqu`qR1sz!|f8{7ztl6Ct ztVr@$n-x7~K^%1oCgI@RC8mg#nq^vL;=Bo`afrWpQd$B-{8aj(I&*|kumcx{KBReb zZMP&(u4;+OXXhpj``DAYUp0iKpqP`X#K6WX@3Y2Oea`;;nd1&J5^vfHEB#E<9=^e%3xt-jUx@FIk=-pbq_q~LCBaX@?fXZ z7DD*uX$uPpmKiOYxaC9a7DTAzQl)vSwi?Rl>id=+tfI`}!JmsCSfWz~Wwpo-aw?Cx z-#o{cwpcxk=gQX?833Isl#_VX#>E&cR@@petbQ(ef*gL$C=j&2Gd9l_%NsPeXA;DxC?(=BT^db&LrJ-I2rGiR!fhmT^slRc9I#xyj~LWj6EG&@UZ%{f@d{@ zKKzQl;8n(c=-?#bSx4^D&Hy;JP)o;PE5cmcVb7(a_kUOIte&%BS&fX|$ z*C~F8AdFhatIy2R_n|Dmu~ngH|&1VUT7;PDcDjzI4dvSf61=C zumLdi%DxD2JrLKX8M=AFs=ey-@O`4WHy$#H-3Ju>J?f4aCij~p(x1z#fn?^79j0e! zKBnU#G`8A}bnA?*y8ya%X4DOO-nh{lwqYA8fM%egXn98prDF6igrq(0^oQuYp?%4x zECkX1YlHajY2JM6dw%nU1cAV6e{aE@MNY8bdLaaKM#NkmcdXJi`QIH^Fip?nx!-(5 z6sOye7ADCBc%SKtZFtMej<*ZS)(K}82#_q!ZWv_<+{G2euHnl@JJPs79E#+G3X31o z!1@?gPQX=N&K$dU%cv~lixEq%#OfGZJq5zZ_7zk-?k+SBC0tqnh~2yx%dp1o-{PgW zAB&4~JGqK$w_?TWE-hYobIqNf?P?)y1ByCB&Yc73mIc zGci1dt1_C(xopOc`64FqM~wNRB=uk=^$;a>eMtg-rg~#lI?+)&IWL{jE}hvd{p(#i zQsDMZMs??|v_q(LFz)vLoeUohjz0{JKPsGXSeU3^SWYkhE7|LhFyWqna1aLBtBCYN zhCQo0J=s%kxvbT1W%H*QAO(mK9Sj`-{uBX3jZhX;VCj8>xbq=!?+NOZBfd_Fd&a)| zW>#)Q_%%q$d^)cqPDm(*uJ@MMfhPuE%!$>VNWm7p4B_i*ZtnH3H67Uw0G{}>dtnFB zX$bVDh9Eh7JF7T5#YuO#ldfR8On^yNt~|61`ZiR$$AQJ^{Y68!CL}|)$W(g0iGJ+)SjOXsRI!_72+$gp55e(*v_kW( z?mp11Stt{6XSJ3?Gt!iF&x$uYI-+4<)xzmNy5#0t?&2#L`w~q4->T)mIA<5@)8)Ib zD2V^x8t0??+QSaazk>osMA*DBx61~LL4FUOm^fPX(q~j|1VMcFg^iOFI$#h6!G8Y= zeOR=RsSl(JvI(BK7Cd<-d7y-a9KyO&?|-$1^~V2|<2OT2^1zLJ_8Arfu|iFH(kOcR z*NF=(kTD1Z{VTj7!~H+Xju_cTV&@oa`{@eoTX^>lhJ|>u)+74z1gDn+{iN#$q^s5R z2NKq9e{sR9<%f6*{mX}V!B9I5@kUd-?hj$nIe{Q1YPmb zH^u1_=K-0@G=&pdv+YTbj{*2&rVVBJ;j=k`FCMU>%tP^U6#Nx~aQ~r_ zesvIy2z9_mX~Il-@w}xaqB46J40guTarskD!S8{%Eb}3cDaZg`%u}I|qF;R0Mv^f7 zuV`VeLNp3GeVKH)Je$*{fjP=w43QV$hbp;CAR^9;?pjDNgUuGaAD>ruN>=nB3}l=6 z;CORF2$MzyyTyM6>!lbMO2IU=YRQ@^CL62$4UjjQQm5qB#ifYgWDli!$HGLc6)){H zQ^VBtASp;Z{Mo-2CYeN28B-L{wmgCBc1oWcTBqk#W3Ht_haKZVWV+c^ZiyqhXQfH_ z55iB8XB_FX!YWV45k_oz4m)CM3&k2e7#L>Y+TZLB?gv+&K|zjb-GMd@n?1eoaIApS zYYWMfeVF$rgPfq1YXKVjhr>xf9r90~fQx8ZJWGziLl>u>q8AjsMI6o`s(=z6OO^WIXkO@FFosJMAM9Bd-g63OYT(eFN~&KafkjX|Rbo@7DES(^P#>h(}oz`~j|m>n5VC$3lOOQ?5? z^X(xEb~sh=r*5pQ6<{zejP%wJXppWL*>8VK>tx|gmJVewq*$AntXfppYx}dA>z^!v zp~y@*-iq{T2;yitm2xs^a-;I45|XTv39}D%NB%sN6J{<6e7GyHIn}l_%~qHt9%7sjiqzK zgB4T6kV5mm$bigOy}E?xf5AyH2_;85K8|;(u11)PghLwmL@bFaCv=8oDb^%yEID#$ zPodjyC?eb>IzP|ClBGIVe#LTt6*fJsa<-tJSe5m&LM{g*Cboe-b&t1&g_p;h_?;9~ z-Yh**P&^Vs&=4UmY%~!Otc;g4F$+KyDzA*3Eu>hVnAmYHZW_sav;gYtgcr)<4g~3Z zvEs)C8u8=0{b&JAkj`g#c#EeD$#U)o^lw73CwT{Xc{kqeY_H+|Gr;!b_f7v9RVV8U zMX00^#cJ@ z#*MIV4p<3F$J~S&O0Zh#tWc%)lu4(be}668$ka!)u$mD!u3hA=>c|{Vd3J!gYlD zA(J}}ycNpZ74h*43v@xMqT}puzZ4M*`?3n%uNr6t{X)3#%iWZy1}KZ8oJHJM}%NS7AYk=`+MNvUYxw#V6`X4b+jkW7HCV}MQV?&Y-*3a@M?d+ zU+uAjK;W3tGIBa6xtEzZfxDYHfwz&k3?Y%iFd>1$FcF>tc{f*~Y&Nz+N$O@n6&CN> zpOaZsQ^1n+|JcBe{yAW9ECTUY&9nwE(eQz{7tpu8m%rIZ?EG!qZ95C^?ep8F?ls<; z8o)_6=M3~jIFHBQ`3%>kxpZlJ4Xh?Sy{vh=(ed?4SbK=>+FtTlDqWnu@K%XNEPc#b zePedM=_wENt^P)ciyif>%Gd1L+H=edrBJhIB zg|#CD$n}QYq0=P@M0^x|Bzw$F=g0t%{nKttf%BOLcQ8Ek>)gJBKMU5XP~ob`@6p%C zBfL*K01N_dQ?3|KB4{xtM3Sj!$X5dDGC49h|9heShY&O0K4|dV57TrEe)sl!M}*jz z7325)Vb9j|;~#(If1^U&|4@7OI=Kyl4T0EQ6x)CKihVIpuE(666A{~g`vScYFl>E$ zzeVW`_a6;xhxz+CGqua39prx_1vfh3MSi<4+RpBE`Zr+;#Iv!oAQjF5rsUgFnJU7J zRz;2KS}IKZvW*LB&|4u2L#yPsk*p54y(Gsioa-dGoN^dZapj&}SZ+PC4Zk~06Wi8}*JJ*T!GC!`=ArvXCm z!S?Uo_CrXhke@He|E}n=-|~94|0G&?Ih%1_*{$GxCTbi!m=`TpVi=Pu`(-gpfeUk9 z0*C2_nEHVK^;HLtGok8GoFcSJcq*vDC$F9Eug6c6KNk~~LB8)r!UH<7e-0&bECx3g zm8ZF%6!O;}JAJnr8Gwh&R7u2Hq9|aa$lW(EFdOXJyEOI;M&K4q6CzwbV zZ3dom7p(gowvb#0$n!VB6>`2Cw({IYuj}~}UMJE@NDYJ(59~$e!0JNgKZF9hPjdDQ z0QUHQVfXhp-_Vi&YbR>%_12-+mJI?(i;=;eApV>~# z4WSxVuCLh+RR>9?_jbmHBTQe@3{%#E*-knmAaIRETHj5v3nE*gWJkprH+cc>WN^P> z?5CZYgrJIqPz}>J`jG;=Se|doV;y?Z*#Yc<3D@H8s2|=6l9kc<-20T`1Jft$Q-ikF zPNUBBumFTb_TG2mTeLs8+)}pP*wFg6RF)}EbEy(g0`pFjPXqNhuW5G|(R6S*IY zaPKD;tkavC#0gH&Nq@a9`>Xe1d_RHRncVL)KUdxPXI;OQ{N&@>Fa3e-n~3eFm#-#% zSeXc1%=pEZaadCZ2-jWp7&!?P$U>m06=`@`D}OkFDU%IRmd1$Sf1isK zw7y9VRs;au`yt>$XFKw}=9Tm)Z8640NsMtSq~_U-`b{30jEK59aO=e#8FLs-Q{<{- zxBbNDO|-MR8Cgu?=zN`L%kRg8+XEKqYxYPbBSk&Z!u0i|@3x1bLMRrZGCI;byO*dQ~IM+h?ny;yU@KQOicTtLG!d zer2Rcj}(Om^0?*u2}LO12I+GrYx@*inY^DZ2bxkB(q1S#I#M6W3!3m`EuJ>Rgh~V- zE*7E%KZiN=b3g6HAOD%ipocyuNuZxJLe%wqEL~=pFu5<=D?ej}PDxfsTU@O8yy|6R z!^(sEgtz3?UCXt(hiIKY3qC$Z!44sRjNDQ2MvZu-`0?-~^Vc@m&Fky8K{0(kKDe$E zurD_oqL@KKEm3TSVaM*^$)Ft#*Qb`;ZT?s>S`QQ+jM2Z=Ct!M!VtpYa1RVsqUf{{I zE()7I1J4)wAhI2^lV7d4{cH#&jhi=xPkbDemwwcZS+&Y|p;(J7`0~tl!R>f#6m$HZ$}i zui+s=9xv>elGVyxPKBGpeiX$RB%THxb`{2{J)Ytu*Y1%>P%gI6mt4IJ8D_bZuN&954=&#BazfDRwDVN2b!$FRrP}}n z#)O^;6QF%Qe53&;@1(;|kTKZa4+{)ovfams{z~!_esgEcxJKe5SOu8+IH=HUwiM~+ z%?c0@8ab{vneq%Wz7M8)iq7WDsk1P)i+&*43aVYae3ZzI1F=9)N-udfPMCigh|H$0 zaivq`U1b+m+z~1k_Guo}O6T_-CzHSDwV+RH_D146*VnQsl-j#o?)DBsqHoqAwJhY` z5pix9(xTezJ1zs4HedSI2rb)x3w=L<#)=*+@`4P#JLxg0W9igV)#b#SNwSJ>P-2)t ze#YI>_OGdAXfEn9$y1Xw)|~#yaw8%lTLoV z2a-SM+~@MS8qiH=?aFl1CEVJ(gzfQ^Vn%BA*a~jCDSEx&>~CM)&cCf$0q)aMPInYA z_4EUtc75LEC-fh`9bBe2A1pJps5{z|U0==t_zKhl%S^1{H3yj^IGk3|pq{9Yx=LKU z-7seI64R_zQxH9d@?P2Al}|>=C2Li@$avqgdxQlyh6ji(4yScn`{{M^uhpS^cu0_C zpQzkg`>$;aeGW?ukdoMvRn(_>bBT$rWdVMrH1(?1Ezux;-$h+$m%f$>+{JLkyjS zL)*KNyGJ*{weV1SZeM{wO-3W3`I+Eh(F!Qk>E0+#Rl?^S-^at~zieu?bBDL#yK$J))0!t;@O1xmfR#|O z#EpQ()rm%MqqB1pQKuMN2G06lW(X!3`O~ z)~@n>h#oYPyQPJ}+VZniFSpgbtW)2*^?i(UU&qi9!DUd3)J=?>b6|>W1(j$BK7Ff?M0NJ2{tup0+XmSro8m`TIV>ZI0q0 z(Rr9}?pV%6SWnLw{~C&~?xYXb4$|%MW9OvPLXWUj$8~8}Fz2-zxwm3sM`Y1M_T9~i zohci2VAF6T*P$v2Y|-9@61g{N&R@#I2`4_oL{r*vTTu64s%$`F65HgrAt$eLs#tpw z@FPQaX9-E__%V+u2Tu;%Et6zPebp6_439hw9^>=?5x??z(JUD0U?5IO3 zyW!hsz+e}zuUApJu&M*Dy(T=_QI`(yz7Laz9kbvb2wCBhe=WVRs~~cJ%lD2Ql?UK4 zX$J{z8*(tKkNGR}5kJpZEgQN{TIAeqT5$d+SHh2Qog-)^T(1&^jPgh{| zXPt@E$_;M2fjS*fHp(tSyvGJ>A*XZ1a=@|xgB5aJXuO+uz|NqIh~UR|d^r?uklCEI zebORV<&%kB7JXmLb$h&h#=&S3i)IZZ=br81n##P82Dh-uMz8KGX@bLLA8KM8$+_mi zRnZBCPaLaDzMW{miv5e*sRv)n{fAUu*_KBl%`Onh!SQsC1HlU@EmA#YeA|>U zbrVxZ25*;c?o_ex1+TG~BcJVZIoxLNIVP?mf(a>6tF3QGKl_{IG(<}p1KSMO$uA45 zm4=BfgH#*5XD<~ACT|ORoGEo@9o*|0I6)9{8E3Fw)Eo9t;>FN4OJD2I7Z!Qz%!oZIflE~b{zu4k%kkf0$=|>M?pE>^65lj#iv9|(8Y9g0D9W+=hzWC4PgeQ<1t?X*o6iMqe6+GlIcM-!M z$-Mv){=Lop*F<=G_}6i=8N*l`2Pp zO|nC`D4taxAwy<1v<5ZHyYB>()*=_I+?hQEZAD>SPa*fNEc|G7%iDIKm?MtwPq_F~ z+p|1^13IDo0PedM(kBi4DgKQ#BKEzP^{kc4+WvKko`uUBmwFS6=>GN5_7XbN7`?}C znH8N_#q7)rBb)C=_bv=Q$j!?OdOqChq|NiYmquBt6T6p%NZY%Kj^u#NtDEX>pZ%wF zT+b=HA8lu*7au(2Xi88eQ(AqDb86LnUsd%bV)fkrqEpV5N!KGg>-pPKpsX>M!BFI?#)w{5mM`)g^VVgrvL&DLXp0KMT7$`Z`D(J0CkcS|2|Ih~2F3 z#>@3B*6`&=2u+9%!n7FKE@(uy6-EfN|1&~KANTI)&D#zGVa;ELC`bk#v^6*}h7CV` zRWoQ7glP*>JLvu6KNP- z1y)K$C7HG{>*(X!A{G52FOhOK+?1ofXSO}oG{-8{2Vu%=;;aV)2qFZNKZ8BY62*CdQ5NslgxAv=2^l$1O{p}v$gZnk($WjEa@!TDFOsw$C4GYSnX-CXfX76W2Xwh%Q z75dzt5dpcaAiDd__{)W&OK++Jp%Z0BMnuNH+!9PnTD$FHg_90rUg|XT2mxO&)PHA5 zk)ydquDIa_@LOKJlIYOyhf)wj>@Dq)>}>OTC1P2;lMkA(+b_F8W1GI1qY0e^Gjn7& zkDclQtKHa9e8uoPYO=|O%(Y14=7~My{HL6AXcKRHMu3!wD<8?6ah~d0FVzKH9Xn1* zRq$YY2K%X4NFEI-(KTt~s>=qGUaBjb%&kRtKE#SBaD{nQ-F*H1Sg~x!$h2dTeRjf- z`yWPH(D$axcSnS&4#&z(Qmkf)HM)i(1NY(^?OP4AxHIo97AXzFoxY7RIj@_ez?lN9HVX!^lsS+Y zxA4-Zw>PtYU(3cylSxVIt*6_;27UQeQ<}q5I9}-RE$cvH`R4_DLQkfY@LpX?P=rn) zGA0wjF(k&r_Xw`j-1pSEENBx?_D12C3 zu-3t*zmEHO^X_+$37_-8{FrN>G)}y4KJo-*&5nDm*F5$4v#@HaH?pWo*GLkIQSagJV7UDuUpsqDr%3XjB1}MkzJJ`3g)ewe^>A zmh~h31HGF*Bz~W89{LH}zvLVNC>uU|;C9ZVDOI-dJZLwXP)jv$zbP9o7~e8MMN1@` z&uk|d6}?tCZGOr0{KF|}wv>X@*8T~5(fvw?uE>WXp3qW0o5vb7vMjrvFqiZcCcZAF zqgv!M*JFXiuZwymG*=PR$GUb6cT6%moWW<HmP&*OrKeuJ3mSfv^F3(yl^viP%~Ls;pAEbtqPEyJb&cUoDIf7sqYN4xMy%wM4Rdq zt}N1d>I~walx|Z~s~xu#!&}E|IUk9vOct{;+s5+#>$1)HO)wPk6XZ~_ z%@gE_@^$Pkzarx}6Z8J_F<^?mRV9shv(5UH3}!RA*$FMc#!<7~Uhp})*~u{ADzn*1 zLXdrDy@yo0%JR zO02%>yH?mxOaJJK=Z?e!@Oofh@Bxr=(~1%6XFpw#CyeL zf7Oh>Y@p%@_4p!qF#h{&;Tru_`&|3ASLb?;p0BBS6VQHgbz4Tz&rRkMC6i-K=ugO3 z?fT@Alw}%T^VN3z<{7Hovwx=IhAhyAF@=~dNO_?9`+$kYOJEYB5yeuZbj!R>DJ;)V z=we=&@^6=sTB+>eRRvvjl{&*|m|QAs`FU#eOv{~%i4-|XkpR)U{Yov#RY#%}H~Elq zr@gi+av5cnJS~dVdO91*3SuMoIgZEk3q_&wQ_SgvtW9%q)V=1;`#%mbhMK+K)VxV`aRXLAf2Z zw41HD9l0tI`<6h_Hrux`=)8hASrILrL% z()tAm(tNllskjb;Ce;0~cF}I(UW~jDlJ^S!{M{}wAiZ(3BHzH3`h_yhJ{+>UXjV^o z{-0xko0xzu58QUZ+nkBQY4Dta`&MHFpzqESF1SbUlZPBsWCvS>bH|Z+dvA8hX~@Qx zE#JdXJ_n(_9e?VY?yFbJnw~R58FQywmIxR}n<+X@(iV#n`1dOb%q8IpTaAjx54DhePm`hvfzpt&l=uH$>?4DvB(eSHN~Tfw$Alopp3ikDO<8eEH0iWGOZ;tlQ) zEKsDyTihvL+=G?iP~6?!9fFgW-uu7X-v7S$X06FOCui@Ob7uDJJ+i-7_&z6CMMCZpN9~3K749;FE`1o-|%FfJb087<&2Z~r~Hxqp8=Mi3kXt)QUv(! zS*`JTAkK@C>yQm}8u_+fmwn_^n#jF@yX#Vd?lgwUQ-FGt$t?tzut7#MEMgNFVr+e)1uG z+JsZE_^AI-?AM{#)S=izR`-rj>CQs*1dX~SexWR*VyVm0Ix$AgKGG@m*&XVEstSSX z?wzMagl2&nbf8hK<&Ym^w`P16(AxqVz_)XLuzsmI$YWD|_Id^TgJ*wVwyVLpsG;EN zBs0d!j~m&XGi6dyQN3f7NrgS~`uf^&Z*mm1k7e0s)u_4^)YTzQ*qT&zoO))qT&Xxg z7-J=jMtrQf)j*y`Pf?qX76Qq}f=QXqot2!;J^1eMM>BxohZjkmX6pr10Tg?$`ec=@ z;@{+H8%bvcL2DCZ%%+lFxY28+n0s_Gkd^PZBvhVl!{v*zmiIW6VO-N6OypE0(zfHS z_Lp#zQr67$hS66;jtN6})EYNa>35XF*qa!`@8$})28bg{J)a`IS$AN zH|pC5e(tLAMw+AxvQHy1l#C?er|1UonrYvZDsCPQtq@e=yDPy##$%k{J@wjzK_jX^ znd@k41(xO^`NHoKSqw<^fmA)t)%zkeOhGKA##=hn<)^iQ_RJD3P)2`lAG0Nz1_etu zCAA=gl8g;N+GW+I!83=NVfambvfV7Ru0O*t{L7qv#lZjvV?pV32ndn#U_|ce?8hF5 zwdW`Pfm0B;?`JY%UMr>(pt?s}8_mqK@wJT5nRmM75*RED_?E^yg0nv3NWN>R->-yS zF-f_fu~zY!a0;#@COhN~5!9ND&{OHy^PB8RK^;8jZ}l65_O@yD3L;PFj2cV9=!nJW z==T2vZdR+b8IglU+1JNuyMa9;wG0M#csvf()faqFdG*O?V4V=BlcThk2WxgzWC5!*zcb{EBElv0A5PQWxE_5s@r1I$(BVKEsP&N(fyuJ zb%7Q2de=(ojtmDP#@5Cg9Og5R<;xw))14{{C6@MSo5>rjhU3_4K7Q#b=xeUtD8;4p zJ{x@z&r0iPZ%06td(WT^pV%_ zIWY(VjrnU_U}lf&o{q1if@}s@-I6Q}8M-M*HF$Zck_rc8Yt`L0Xy%j`P6+{K{@VdR zCCU43%xm?N^TST=8#DS-9IF#m6_WYJOZtln*guw#Z%yY?syP{suE57KBX%h&vaes0 zpA}mSmJESZfY!<_Yq0N&Axe8-MrWOpgwII;7MVILY-ctR$3!&~jAGnS_^TJAp2 zqZJh@$W8Z^q2WaVPoMT@%ZKMl4<5%8o%38&G&J7Uwz#r7ZiByNZA!d2tz-P?p)>Y) zSk7@A3LkXq5|^Loq9NO=q1&3s@ya$Kl8=H9?xOlS=vKrw`2}l9m0rQfHCZP z9{A?06Y?u9gt>LS-0B6zEZS@);vuUzyt(BUH`_Dmw$UAo2Q>wtHzk5Ny!7N`I0sP% zcwDw>$cb$PXjo8z%)0~P7k1_!r2XyXq!#2C`7Xh-*5V>LZdKj+qon!NjeaK>5nkFU z0Cu6exe#vBj>BqS)<(^}DZCyrv&{YMy#DHyQEBothy7)gEOoJkv&o6xV9*+P4Bz5P z8F?Iru03F{)|eui$0^@=cy2bqnZ`rvG>TR#7lgQf5M=ZFaSNaS+p>?Nj4W z!9nyRR+jcdyew^5=GDBU;SYy6=_-=QZn}xbEg+5CTl`FJb573Y9Ul!EJ_Du#y&hsJ zX%~lBGw{F?EUeA6D@dQc75A#181n9iQ}%kjq47)sXrri{>#L*zYWPTYF~$?8tK-{w-7WqW~TMwxLEWqfbVD(LK@Fv3ReA z^*|fJHp0fI6Yf@0m)_*G;d37`eW5w{`E>uF1mN~C5`?>WQ@A;ng9r%ryw3&G_;zuk z9$Ujs#6@krUNt-E^YSRqoM#mF1Sm?ag%NtuY76Dce6y$VPvDFyvfl-rA+E43?q4on zZDslKQsdau-?Hk*N*VYr1s9T_p5wu{Lktp;)2;6#bj+~DU zmzC^MBOcuY;20!J8r#o}~p=M(!m56Dp3;}JlTES8OU$$d7^rMK?f$B<|8Gv$(F>pIZ7?YwE0x%X77 z^{~<*n-xH8ov6m%5x;Y?e$$XzG9eT_Lq=_`qREve69Gj6GUYGo3`Z)+LCQR_Ewdu` zQE_Jg*qnwK`xKo*Rf7H9pqU{f|EaJl)Oupr5Aj>`1tp? z_I!-K7BV6{qX$GTHYxl06~Mb%43m(LBgbtlR3b=^L8Cl9&6BTL*K+w#>^kIcuJ|1% z4evH~k9S4AaG@>NP5q6=`62};oJtc0TV2}~umc_BcV~cLg+;a--4^(rChd)%UUD^M z6z|=O@K0n40y}RZym6bQbzb3yPRLl9&WW)zDO{aYcYHLsrd~t_Yi`@MOzA#OLb1%w z??Y4>fCc9kJ`*dpgN0njSN1=zN8~qTF`C}Cp}MABn(C;=G%6T9I!~}xj*Rs@T;!fu zO|RboAjT3sZ%2KZpdok08mlaa+^)t2N}%|5`_qtw+}HKw5j46A+66wnL+~#%gJiPk zxe2n#=!Pd1Cp0`j2ifHKEWCjF`Fst5tj>=XijN>GeWmdF67!xPZ||VF8@u;7{$l$* z&UqL7f_Cxq`K!5^PbtaT0N`_aB7&alz0b3zO;`1Xa3CeYY(k9X1#0*qV)F(q^Rcgq z2OurDvDr4Xp9}uVReYKXDTsNnM#Q&ch@j0+$o!p|`wL9{n%D zf;y0fjjt?63F4M1C;5UErOAt@N7J*V>2lBoB7?;K`^_1D&C)|ev0uNvSo&ux7b55m z$XytQfp7Awoph;x>RHMcv!xe7%UTo$VF!K!Sx#k7x!;Bkv_^m9t9=>eFK&tjqe}Ci zZN)*(C{Mnlog?aLg$)6=T31zdNNk5UK4|Isl8y`6f3_4OiS%8rHEtazLz&i-v2ICw|S+g&rnT z`J%*;RzNQAczud)Gtiy`pVwX`CF3uQNhU-xHSCFa?BAcn-u8-5QZYThox;Q5|2EEQ zE#|fK1+w_V>&|68(!gnncUQvO{1N!sriX(zFQ67$FfL^~g}C=GoRIy=E4ntUZ!oD3 zIjWD;^W10L5AEF{_NX(PcVF^9cf_xW^@mn#Y@N02+6mhCt52#sUoV|MuPbTULcA#_ z)OOYOF4NJV>XDh~x%0QHp6g=t&SGsOM4LJ@L$VlOseDENO}YC$hHtSF4ly%u4TBmirB^d}ved9k7~gl}T2y~?^;EVWsa=5Mx;Y=B6fq^d19`1RalOO=kg+sru?YwoN( z*()?JBRknN42H)cSsRwdiRw_(uu)&wPE|GSN?}zXJ#f}L#oev-Q*-{(XILAX&%Nfl z`Nqz2o*Udl5%A*Z0qh`mv6e&^5&OJF_qNMDw))_Km+2!x)A^|qtCN^&NiJPCz;57e z3-*b5at5v0gm(cG0U4EQ(i&!VSHJ~QC? zDCHtAy{++f5nlkBu!+-Bn^)30^(5fULnOc|8UGoRA^6S(gJ90KLP9~>L#yxu^$e3&pT2~ zC8mFJHV+hxYO4$olm)IC6>eOSvxP%??-p-QIVSxKoT#?cyPPNv9(YH zQW_OHKIIa$#rKlJM(1g*$vIsHfCT2kmLKb(Cr{gr=QGqn9*!*_F7eCW<-MJ3uaOT4 zQfJCFuRyxBav+|qPPq|%R_dc{jv0N?y=UlG4v`kW$_ZmnW;6>mVWlAxn15X}6+8z) ze_0Sxb~=zw78FJ=K)VqC1(J}6^)}sW`QYts;<}xY3G2xet?};e1}3RN+gX1Q6El()FzL_`U+}Pn5g5Vrk2UyX*VmS> zy-x2wkWuD;ar+|684DZ^kqpf>ORTFakSxcRT^Cc&a;I4jGs?lqbsNx-`yX+ve59^@^Q^R*+s9nswSwn#cITz3U2**Q&DUIB^F=t_?jDF(zgX(9y7OXSWPcn9WfrSoH!fl~9=S2N zvtypQM8{1Q+{=N!t3ht^Hn*0^QXmv_clSwV!#mm8?XFSEtDx0}^?dR5W4KCQ*63Qn z#LD%DfSUz9!>nZ;NLVV&Y`l~Fn@rPMy-IQ3M;cJ!m-P?C{Z->i7}TTTu^fBabRwW( zY(<0m4p|6!( zhno zS}Q)n)~eohmzH9V*+MEMGn((xzC<%%If4aN(THWGDkUcE>#T_=6D3vZ>Xf<6A+_wr z+2tS}im{K;Z^IoBO#^Od4T@l$=YBWm^7fp7%Ihn(FI|(XhkkUc)b^gYUbPP*8<6V* zU7IGGZRJxuwajn;@-LI})4wnlK2MZ3S<879-?gFrN=L=Xpr&wxOfnu^8@zwkPW?_e zu=7EfUv`=Av$LFk6k+Qat)HQhqENNWWZoA1vJB4>^ zHc_)jzJpIne>QqVYMkTW3!VY;cbFTIcT*mSADoE>_YhuOOaubyvw8)ioMdM$Rc^}yLAFxVFE|CT4vh|t#%M2{+ z|G1bZ%2=W9D*a3*N5>KajVE!<#m zX*O|fHYrZ&D&51r+OzB}Ar3X1E>6iCLyeq9ja=^~5=9t-K6tCzMg8t<{jpK{xaUFF z7YKbkI3Rw~-^->Mg9}R-`*Su*kv8d9lGD2Wkp;Dun9KHbHFGPwuU9Fb+TC2Fy*LBf zFI<9caOAWphb~7jg6$qgU!rq$i`KzA()5pj&^Nmy*4ir#(`1P5%MB`XCJH`{s#mK! z9=D*%;KF=k_KuO$Q1o8nV(y0POxu&@5}14W*B*9YEDHy$7YfmIrZR}WG}qD<<&W*J zsOZRHYIiFxTqVe(_Fu0PGhk#^AK^ST3w;^P9b-Uh$VGBmRHnzm4pXnjF~OFkFyX+* z+Y5mwle5ZKI~$IrR`4&7_GBN$90GB3Zp6l&d2(+kMuypQg;N)Tyt-yNT zb1H%pd9gin)Syv0mi3gZYCeH>h!~}bOn1+K&l|gCVRK1tyfNDLll4JW>-sx&S2RT` zVX^K-0p$@}9z8A~mxkmYOh(&$FexG`uL2jy z@tqdOi6+<%HRck^-TkybXXcf;Y#rC?Y_JxedV&d!K&ZY+Ph6s!2dYhlwM-%-cccj! z?;sKhTAbs_1Y-x1Bf&5PEzPbrg@NQ2JaloaYQtelExP;nW`iVpcw42B4necF8{u55hDl~#SmImTw=AUb^!Jws5X7;L|M@~J82DN?zRU`nfmZMpPx3?snqMNDukEqCwtjg z(8IdhTvzA|ms$3HeIlvIOo}g>iyQJR$0AkX{AdgC7T3>7oj=C?hXxIRA9)}kBJYo4 zd|u9F4mMKrKl#(}{f+1>`(-UpYX4j5WTz-1Gys*FVAidody<%rjy*n=>CFUAwdVM zKPM1YFIuRsF_uZZ_XRSE{<033O=TbKQqU7cyeEBjBGNvy+*G{T9NZ-bynFn#{1(}x zI-X=xTgf8x5XZ&zL5D_)VBUs8P#s_jx9f+93mwFu1E%ZJ;^`9M+ZRI9$?k=T|Bic8 z5DhX%Ah&mVk=3M_viLpS4IcaIZ`~>K(zI+by6f&^=i=(%8ghri)0@1EUDZLKXG?M6 z1U|0&be(=JwWoVj4_#uRBtF;`@|xeeUnplqr(b!?6-SgPq}>L+Zj)WnY|b$(biRiu z$)Y`cih_cPf+8!x_zvZ-fQ7u4mr#4lEUh5P`oEJQIZ+(V?Cl(#o&H6Ii6V_mjE&DW zaqb}siWVUX3J#LW#Lm{)%+{I3-Nt%ctKW8&=P~Sp0hd{)3PTba{eY4i{))l12IqCC z#0p6xF_(0=ID-le142-7FUXhJ(5%q-HX%>@B6;owTy4stJ|@D&ef!d+yo zHHG-VslvWP5W%_UmT%+VdGlF+X3PY0Uvi`IPiV?iXYdEwzxA#iJ-%eb8+_v7L;@S0 z~VTRpB;fvcro^Db57UTsd?Zj|a@K z!_nSLSPk%$^3R`naqH&+p1KWHVn;jduQ@mlXjTXKehA?!m@?Tsq~;Xv-1&Vf;9ow98TfOvI{rqNrOsa{`A4Qs`n~Zc)*R4 z!JF~C<21i&!ml4|zH94Ol8U<=RRiN?aCwgg7x#hBra#(zE^Xu)qh~D_jr9!)%;&J# zkJG#E)nW^$XRUp-ogGV}GahRQy#q>)xqvAY7UPGWR(VI&2R?Ku`T+5a-CT8`pQ6uj z8tXnpB<(kg1{VfN(;M{^AG%mES;FrK7K!0`+PYD-1?>moHJ4n%@eNfqZrq=8G8^DV zO~rk7TNT?c3npF*zVnTGLi*A%bCt9If$Q4Ey>$*b6Lt`bbmt2W8S=pG%;_krod@V< z8Q3gRNB)#*MkYKms%)p4cx+@wd?d7EW|2+>d|?=-3DwO-4sm@0S{j+uSXFLx&UQgR ztkd-9{F?wM8&l%B1{A$ER2)Os=-;W+h(sckpGxkL7`!->v6Erbo+2jv8Q@ao{Y{ze zk*?pxU(HFofHL-2sG2g3P??u11VwKqri zZCyx@RT!NQMZ;IE2rHvI(OtdQyw@Y6w2=FC_;EnXb|{|DK1w>k_VBO?I=pE695EW2 z=a4&+_UuBoFT;+CUu6cQ1sX&IZXh1~@2V0VsRYgK9Buw6%Ky~5kC8O*>}<_J7A}rP z&LBHmCyxK8RxvR#|3gO;BdPzTqiu|ALFQ&o|4^{SQSz2;Y>y=`_yUI)RFc)7Kr89b z9`>V}f>Q9OsI$le*WlF;idAL42OXSoUN4Nk?_cH!A15a?$<`3srBg?}BKxXP%nxfC zXWbdvPwIYx-)!83KJFNC={Zx7@=LPoSKQn~>yFtsXn|X&4`0JA8j*+AXco7iMJTZb zZtE0VfuHS8cS{w9>BQ4vZduk13^DQ!QhU&a!uV8&cprHyPBfY*nd5}LH3gyUN?fCA zF1^aNw!_9(&>Ln)qupYEBouIuYNT5c`FgzqVRK6XYF1UK!9Tq(9c)ev2^sit=Pl;P zyD@3EBaEsfi-Cz@->tBNEQ&7=P*9X)Q6D@-`D4;9)A26okk5X{-?r-CgAK^W%o%KN z_J`}AwrkKzsA?QZN`g!g_up9Lk#|mJ&dwlP3#Z?v?EmMag<}XAXCR4&uu* #include #include +#include #include #include +#include +#include +#include using namespace ::com::sun::star; using namespace ::com::sun::star::frame; @@ -31,16 +35,17 @@ public: virtual void setUp(); virtual void tearDown(); - /** - * Test that we connect to the database with an "empty" .odb file. - */ void testEmptyDBConnection(); + void testIntegerDatabase(); CPPUNIT_TEST_SUITE(FirebirdTest); CPPUNIT_TEST(testEmptyDBConnection); + CPPUNIT_TEST(testIntegerDatabase); CPPUNIT_TEST_SUITE_END(); }; +// TODO: refactor the load file -> get Connection stuff into a separate class + /** * Test the loading of an "empty" file, i.e. the embedded database has not yet * been initialised (as occurs when a new .odb is created and opened by base). @@ -63,6 +68,54 @@ void FirebirdTest::testEmptyDBConnection() CPPUNIT_ASSERT(xConnection.is()); } +/** + * Test reading of integers from a known .odb to verify that the data + * can still be read on all systems. + */ +void FirebirdTest::testIntegerDatabase() +{ + const OUString sFileName("/dbaccess/qa/unit/data/firebird_integer_x64le.odb"); + + uno::Reference< lang::XComponent > xComponent = loadFromDesktop( + getSrcRootURL() + sFileName); + CPPUNIT_ASSERT(xComponent.is()); + + uno::Reference< XOfficeDatabaseDocument > xDocument(xComponent, UNO_QUERY); + CPPUNIT_ASSERT(xDocument.is()); + + uno::Reference< XDataSource > xDataSource = xDocument->getDataSource(); + CPPUNIT_ASSERT(xDataSource.is()); + + uno::Reference< XConnection > xConnection = xDataSource->getConnection("",""); + CPPUNIT_ASSERT(xConnection.is()); + + uno::Reference< XStatement > xStatement = xConnection->createStatement(); + CPPUNIT_ASSERT(xStatement.is()); + + uno::Reference< XResultSet > xResultSet = xStatement->executeQuery( + "SELECT * FROM TESTTABLE"); + CPPUNIT_ASSERT(xResultSet.is()); + CPPUNIT_ASSERT(xResultSet->next()); + + uno::Reference< XRow > xRow(xResultSet, UNO_QUERY); + CPPUNIT_ASSERT(xRow.is()); + uno::Reference< XColumnLocate > xColumnLocate(xRow, UNO_QUERY); + CPPUNIT_ASSERT(xColumnLocate.is()); + + CPPUNIT_ASSERT(sal_Int16(-30000) == + xRow->getShort(xColumnLocate->findColumn("_SMALLINT"))); + CPPUNIT_ASSERT(sal_Int32(-2100000000) == + xRow->getInt(xColumnLocate->findColumn("_INT"))); + CPPUNIT_ASSERT(sal_Int64(-9000000000000000000) == + xRow->getLong(xColumnLocate->findColumn("_BIGINT"))); + CPPUNIT_ASSERT(OUString("5") == + xRow->getString(xColumnLocate->findColumn("_CHAR"))); + CPPUNIT_ASSERT(OUString("5") == + xRow->getString(xColumnLocate->findColumn("_VARCHAR"))); + + CPPUNIT_ASSERT(!xResultSet->next()); // Should only be one row +} + void FirebirdTest::setUp() { ::test::BootstrapFixture::setUp();