From 0bd3a6df26df3ccd4b6c008012a0219d732d690a Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Thu, 22 Jan 2015 12:15:59 +0000 Subject: [PATCH] 57482 Handle XSLX files with no shared strings table in read-only mode git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1653825 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xssf/usermodel/XSSFWorkbook.java | 14 ++++++-- .../poi/xssf/usermodel/TestXSSFBugs.java | 31 ++++++++++++++++-- test-data/spreadsheet/57482-OnlyNumeric.xlsx | Bin 8601 -> 10474 bytes 3 files changed, 41 insertions(+), 4 deletions(-) diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java index ec23f209be..ae09af141d 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java @@ -44,6 +44,7 @@ import org.apache.poi.POIXMLProperties; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.openxml4j.exceptions.OpenXML4JException; import org.apache.poi.openxml4j.opc.OPCPackage; +import org.apache.poi.openxml4j.opc.PackageAccess; import org.apache.poi.openxml4j.opc.PackagePart; import org.apache.poi.openxml4j.opc.PackagePartName; import org.apache.poi.openxml4j.opc.PackageRelationship; @@ -343,16 +344,25 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable1ycPF=D z&Rk}gocqm>?^fNaGrOvLSJ&$G?6u$ZyuK7=;o$KBhyY{&06+<76X8d;g8=}-5C8x? z05Yt$DA>-))Xqs?#m(N-QTMT{tqnywJS=@002ccHf3E*v3G~Ev+cg8R#gF68u%aqe zjnb4=RpAM}n6xv8u~kyW z?+(Ra3wNeIYd#jpX8B$x6&XAH#T}_i11@Cu+nE)&E>dGaKG|wI6)Kjpk&^I7;64m# zQLMmN$O&toiDH{huMnnt9j~UVwFWT`jR3+C zNX5wz4kvtbv5r(?w<$Vsc(tCS95Fw|0)+aCy(v zV_knjDyE2F>znb8g6GUt6xL!Y+@zk55B0|$EF|CZ3SS~n4GzEL>R756d1Q`cz}A6o zKIf>V0p%+bgRcc0-e>$#k_s;KO+pZ}3d;e>iPE=O8DJ>Ge*T05DE>)JKdAyA9zsXt zpjwCqRa1QjQyWK?$JgKgsONvMPX6K5!=n2^EkN}4ZK+z(5HMoU<~mG)0x;6 z{-A~jip+eYO;*TA9!PltXMCrnmF)6hSC&;Tqj*r5P%0j8xATgq8Cq`t^oJyoZfSpl z{gh#xu5&75xK!FH9fgCR72MCMWP=B!=J)x&hBykXulqfIXOVkS*T=V*6R;p}a$?xj zhNYtaOD(DK6PwzBj!41*03-lp7*`vX-xS3K>|kvK23uddv)`2l2I|wGj_*JFs*Uco zY5`&gYzNl*Pk7W;48OspT2n@?dUF61P5AqhA4>{gun!(E)px8?-8Ox70S z7lcvWZxCC8_f3{EoehDwrWOOqdnP2!eDdV17l*!!J@t$%JsLu+Dk;e^&VQE?B3hIhCD81ieA`8SC4=^M?pC~(x z@IFw!xa3%(sfhO;rVAeCDFXEW(D#Hg;;&W}UjHGz6_f-1P^*dsB?6Q$e`HFSvaUii z5Z{YySCHK+J`RJB(uP_hy!IY0LF&4D2T8TFB`@O7xf)#BAfk8ff*^%{p6^C(1q3|4 zFNVH_y_O8a9SFox-hOg+czU)Y6}+#5Ru~o(mfARI>g`kcEo|23ei@xqnyv)ncCs6O zRXQZ8CdyK1DVx1w^?`OxsE)B8nmWvhmN=`irHW(j_e4XxpDl)8lnHliLMjk9`>6@> zkLkavmOf|Kk5z73-FUT=?Y748Lx4dB-{neN3X3Y^nT4`PLFs#dN&udIe#h9|J9 z0$!7U;!_-wUJCG$418>@>J=V_{#=V2U+_|S!}QCtsDUc|qTW7;Xba3E3crbFp2%?rV|ojoB`BFBd>p_XbADV>%*eV$ zY&Wn=K(Y=)7X4Y6PTisa$q9D^fm?>*GXt>p3Ym&F#*z=?Rrk*>AE?m(x-DOlyGAn* z0f3VG*D>kMwm4as+M2T5e6wCF@rI@X_`W!P!^2%N2@kL>oimB#i@b@F`xe6zCE6oP zuKaUv&793S*g!wDN2PQaC@E1FVHewBVB)lbWlx^KhonheqShu(>Tb7MN0;Lue;{a^ zOZ-~xHEiE>wGJayxE~m{8xQSei@A@F zef3&n(0fK1j0`y}(P?33QDM-`SINX`(a>8(2{yFr5f32X3rTx|djj|-QBbP#u~3Cd z&KRqW8@9Bv!}tf@!Ej5*j*I8X!tTQ0?n3;WdwX`buX;h|gPp{0*0imf*2NihNfMp8 z8$iD!R%^G$=dDY5E&P1fJ3vIz^A3)T}AsvqkDr?j8&i358Q z$J`HB<9bu-VSpSF>&`WA?U-}S0Tai<&lqK+%<3w&tj*ccD9#;IopYu>jOlv%UG1gx z^g7qfT4a}Mq$8U6jIHhDkH(#~NBeV8go1k();GgJ=50;)Bio947Ch9G7+(;9g(x$2 z=Sa19%g1GN*CJWXwX=3qeT&qdouDHOMoPw;v96YA;alU>_lsizNIHwtS(S$a!b-4q zXPO2T6$^;xIUs0k&Ykg&qDe&2^=ZLYZrgPC9E>HlM+Ym5UZ=iSmsE%#=NI%oXxUv@ z*v;5xW;S0SeC@y39Ix+l(LsbYxZPjxe!4vDP|LLFbGo(LFX*j|8GxQ7eXv-T(;(n; zwzwbReZDG<;wd_Bh$E1O6ZMUdN2rDmb~emVr>jdb1>8o_I-=<(nx-pKoiBpqY8|3U zTqv)zG)th!_r-Ud?wCyT{CxtwR`aREJ)TC}KF#D%Ww@DvT2#UZa*JsxRSEddYwm5w z?{3XcJhyd;78>n=43&7%QNK>$MejgGqNYXt&QmWb73_RW|6-$B-m8g*oY5&FoijU& zmU!Sjo>ZB*Hal#CT(=XVI&Z~fedtt5oMoN#kuEhgyctb17P4cHE7Z@v{vw5G-x`A0 z5Ui>}YvRLjK~=~|;QEvzEMx1HlxD?h1;7gp)Zq7CFRt1vS^go>Bm7y$3^zPSJu$nz zI?$_(O!VoT=Nhf`bjK88tWyhl==Hs`=!5<9NTe)I$GS44F7Nb^w+0$Md7nSyY;RQ|rvDDgdTnu`Zknw0VfszWbm{CKrvVOsk!jS+3K5T=r>J%G@htU^`(;>FEN3Gp^roHW2AkVG2aF8mfIPJt_Szp-r92LW=jIb(~%&Ij8-}lAlR7M8h$%D*{gLx#eYBbCu zoBrvHL)@p}-YQbL)OdRJzond{ns+ z<#YQ2dBk+4B~Nl*jkO^93-G2IeS)pbraecT>08XCsyTyoPCTA#mDPmruZ150Wj_oJ z?dmde8rVw;&kB0!nNnWMN*cFd9_u@vWk<`3How}X-W+t9+htSgx!P-%osbOA@%ggY z`Q5XLT)5y!E4=Q3prAwKag#<*E}7jIR$FZz)TZNRH{x#`DvpCK9#EU`}P6_|iS zi9>sz6)9gb#0HFPqgas2ZTedHG3q4*r9q~x_L)2DuPS)VEfdOvVlt<)U~ut|9ulC6 zIHxfse&Y?)V4kgEl755x1Vk^5)MDBb=eP1H9%Rj z+JM~f6^A(YnwmA^SW3HWxE%M+Vr@GxflCZUhnn&d>qwBnQ$p_EI>w7em-iJ^u0HRB zg(rkm^h?8$h7g7@G2cHg_2*1re`GyX{$fb2n{yp)%gM2xF6<)>Z)iimyb%F^8hz*=e>>u7qhl_O;1;H(mIqP3|cv9Jh`1b8G~={&uOtJ zPMIakoGul9>C@6FIws{qf0%(IxAI5%RPR z)(Ur}Q7vJoiBsrWRo$1&d4OV5%`E#3Z)t9i#&CYNtjkm~s5 zF5n{co3I{s8*S%#JQu_objranq5F>VL2IU=%Z^EVAzO*CcMc_|qq9t}%EGO3#VD4x0=gNZc~Rvq+BBk{>Wg|- zfy-^inl|}(xG{%J?%_m|<(nao_Kz^efBteSd2OG_HbF;3pxgQIFI)Lr!f~^qH<8Ls zx)Bi36atMT#gE~xL|r{%#sbkrpK(!rR$YTLI-5eAj*mRXzw{_0HEmp3vF~5uOg`t! zy>EsY#WYe48@OytWKq21F~!^ zd;I~@Jdp+h=~6tM;+uQEM#AeZN2%6cnDE)QJ>C09D8CBO@LHMhn*WXjZYce`1g;Ye zvF*SMXre*Q`%*E4Mqh?~{SQ3-xTY-wAGz~rsZ|MNS!p?!3UfJW|(0Hvy9y7I35gS9oE^xbj!t=v|XA*fP za;AsM#))!A3)2b~&hlkkD@AZKZ=aDNqOAbS(?H`o@$YJex!ZlWA6*n&i=c}p+JGlr zioa8JvpWDP0?DHUmork7u=SoG=zcR@d6IDD@Q=Nc*nbDLr)0Gg4tMP zC<_)wY`HcWK_IK(js#8B8y1j<8wxINXyk;cbVYvI$ZW@zbH3VwO%fgEOWvD?nQhK3 ztP6D5JWjKV(24))l4JPlL4TJIlm#6(B5)Ipa*xcPio0e3hxQuXB@T+*cv9Q`7SgX+ z@Hb4_&CCB|(*Dnzv{A}+tfx@VBn#~V{2T9dW6WY>^}*8=_-$Y5HhC%LtQRlVjV24H zBu4jumRc2cc%HTy6OF#qy#kko&tuqgX=%XrVf|QJ{E-5+6&RC{7s~lz?SsC!iXueH zs>GLv`zu>$G<}Y$I}(hY-yV>9bqe~(xJ(u5V$7pFrH>z+@`wShieWIjL~*9=$mZI1 z^Mh>LQc4;_cb-ibFBkw#nd3u_FoWybMdP#Zf#XKQkiEL#z#xyAhWxDONR?_j#^Vk( za|yifwfzYhC#4#&vSZ7sG*x7@>#cTXigpu1{aq3~i@{mNQ{RUqEjrG^z4`XTdhb15 zv83FE*PRRwe3B9Ie2+bgNkP=hTXv$##dz`53Izih3!x%7y6}SW<4@UjD{RF94v z?P0ZjztN|XatW-ZuH}yMLN+%#gIpF~#Vq{1>UlQ!(JO2hewq(7NmxlUHR2 z06TEt-UtK)5&7zcE9?;)IH4Kf12WKrirVQ;(Sh{{Kuq6Vgf#V~7*E8;*Sh-Y(g3-~ zfI5taGA?i2sI-{1;bSNUs(4`YRwoCf7vHQt>4zIK0oYl2K;!F+{LJiCu$RB%CM|H*;o#L+TED& zZX#YGwfs&riD!a<58?fq62FR{7vq>&+Y>8|vnI9f+cmER=*7Pukfd>WjePoAIuE`NP}bX46Xj{>rr^_Acg z5G@^pek&^D{r)F+7e$EhVIMJfUh2-9FMgpH@wK+@aHqs;ybw1@64525Q3ph&k;%1g z)YvGXajHPT)#sWKlgS7~UL**oAxVE+pJDd+M+e>ALiW}2VhVq=mFCNjdGoyLW6glf z=Y3MS)C&fP>v(TrR!m~|*|?6up-2<*ekROj&8f>MLHCzi^^+B)%-#7Kq>P(2A0fmI z$mKD2&lH#xXV&}3!=O9wpKd6C!jcyCiG}*!4w2*6Q@)zfpgGyv&#BSpvS+QPw$Nj< zOFVe=_CqqBZz7jAvFNz?`eQrB9a^*xiNlbQnN%FNDICD()J zYh-TCj6?O#mgw8<6ZWpwPU<$2S2pXiJAKW=;5AYU|B!Vm*fO`k;jd7l{*}tFMQzY| zppl>wl+HNNnzISmSkVD&@5o{db}+rBGqgYRPpKIyy4dJ$Xnz9QK9sr;UG`e!wtW;5 ztpYnj5En@gTT-@RX^kUja)0QGzb}I_uG)~tv8aEBxJrY}l0eI79;&23aOTAB^Lr4&oH500jEJ7fCwSlfrpLesVmqajEvVe^Dzo0 zLF?O!=rhGBe$H60LH>Cr`R!tO1)f9v%EpN>F?I@``%$aYV`RQ;=p0gtbB58_7i)(G zSv6;A&uBr9F1iBV27P|UXbYjDnQ7x`3a z>S>r~#Y2|4O24xpQpBGxx%EM>%!S^a@8PL5{E~0XlO6&h(2*JFhYtFI)~xLvETKJn zhi9fvPL_7&j(2~vJ~pznGcrg+2bKbhXJAO0E*kuzqWoeE2`f<~QQ;oK@ruIZJ%q!H zG(p@WC6=QvL(I36NTbKYUI!3Ua6W}T;}^8QUWPDqmj~bCz`5b7J*K(Zq`magG31zT9(C-V{u_8wt93#jSqL~Z3e4xSWrH?(%eqeAvCRDi! zVYw!?U!;ugc-B0!Wmxzr$P&Swqv_b1<<_miz%m2=-N~Te_we`oFU|=m%KjPP&u12X zpLl)Gfhx)$PB7e^_~$n6A1C%gyF&lIse2daZhP+*=@NSQ=}xon?&P~osN2c0sK0DU z-37Rt9^V33;QaT~|5E?Ei*mQvbc@0UZH@iw9sY&#%hJ+y(sig5xE;3wZP9H&Ay`?xwW2%R+=^xPKPhZME($%H2fe7R8z5 z2IV$wxjXgGf#K~$06>@w0QgIocz60;KYt5QLVok)zvK0P1^P#?eGAG>@pnLPeE8o7 vt^Zq~H!k@u=%0P+?K%MfG0Hzk?_VBPQ5FGe8Lk6x96&8Rw1z=_{p-H~M7LK* literal 8601 zcmeHM1ys~+mnVh>3F+=0x&)-V1tcY;W5^*y1ZkvOkx)`WIz+k!qy&*18YHEq8QcNC zU6Aj6-S6z4vuDqqy>ll1XXd$c|M&i$d!PHe8p?<=iF zR9ze2t+gc019D8zJ5qe4p8n90=DlMV9~4#$L0wKiKB7E3#K8Hl;^W5dx8!aml`nD3(dC4_6S@_64oZ*S&X5mbX> zfK3P-ZR_PvR9OY1KKy7t;L(g_o2x(@z~F&!l5`#wm{SZw5Mz<0Npg{N494!NA z;Hi5Jt}KP)b{x$dW-2lZxq=y>3)lw**c!?xsB2%b@t0sXuZ{o*r}4M$xefb;p|q2u zo28?hiME%sCD@4Lkprkt+ep2Y3*Tp1m)(co5dOA#WFU$-WfI^FKDWUf%Lr0Q6!dg! zL*h0LRyciQp?!bNa+-JDzDKp4N>vcf`wE720;A{tNouwtY~wwP+)Y;cG7pou`lUV< znzuG~cY-Hv8&7 z4K0_o_3J28B+b^BGtx9Ts?c(MdDG2~=PKB=mKNWY&6PheA|W+0`-wzc%uLG~!#S^6 zo~HFEXz|&{XPTT~J@gr@Dl|2#DNR%6selP~ExZmLF<=YzM&}M%FhPJK%?7?I^*BSc z(wUQuo#n^nt>tyvMHdfad;>-Qxx_O$MeBw>uG$BR1Cdp#gaKC6uhUxjV@MocfEa^A zB5-dt5Vuxvbf10t_|@{tjy!N6^eIrFyEL zaA7DM@`^{TrB818B2SZfEJ%`%em0*m|FJ&4r+yL2`i?#CC|D>(5&slQ-0PtoP+E9ika^+W781E&&YV3@T5S&KjK&xpbrF|jl`UC(Lj98IT;!fC{ z!oE$76avqeOw0vjKJS;?7Csy2y1%qYlXr(d+MHWQi$hgrrw2N@VA=UnvJSFAezy)pe4)kIDSK*zO0G;S@utx&+Y*^vxY0si4G|UQ#&59a-={7nm>VB~IGtT>VcE-7%hJuw*3lY#^O~E(%+}G| zGy{{XoU3#a{!8yqGGY=EArdQ>ROcKnE}l|e87^)fE_g*N>d$d4K~mnO6Iksk5`}H3 z53><@4bT57Yk2>Mtik^kDX`5$S4#^mH(0=|!55hSle&iCe$@sPAJTZ+n*>EpKa54!5ypU`+h-XIk?YX|Fh$-=k9JgzdCWxRL`H zjWi^C{aNz?>cy4RgxW@cH(wJiIwA^s=0BcyUx0|ex-eVz!ENz$EI3%65fM(jT46*sS&7QU?&mYc* z4(?EMcPQ8$Tv2aUOEkg-5{hg{fDOBsWKSbHndU)@YRsqJS61cdBI zyexvX7eXHpQK8*K!km}H`JBN`t~JstnQ;?)FqpB&SZM6d0H|3+S2*ycF>jsW&Kvr9 zz7Nh46=riD1>Mbeih|)4vLfT86k914Ph{BOKuUMSJ;6T(X4;Cu^laR>5BMUu>#232 z20=jvgKdu(!ceV)@wE*OPuP`>$h0)_x6ISq%6pc_U#mo}otf~C#R}$s-*GDJin<@U zCH}Pbr+XcPL}b>HA9mSN%9Mgq^G3fb zjSJYZy{>_5^6#nJds~4jvXv@`p9;OKCs$RsdT2eCjwu2qavLDQVjSwvcq;l*%{tq0 z?CyE>UX17*k*%*tb(Qf`kdVx3)tJEXUJ1%aZ+AO2 z2!`Jtq(7yHi*ptXzHT;_4wk=Oxi5CWhQ7KJnJj)2-42DEx6`QoR;`-$+i;4yU;&53 zYT3KdqYG2{)}A`N3ptJVquO)v@Uo~ms2$01H1d=33ykHMmV% z#74H&d=@JceLL|(Om2a0J=Mid!~vl{)&=P6}zcQz{*S*^ZcXIo7-Zyy?q%C-}aRT#wGZE z3Ip-_A8^|nP`fl^KVEDs$7$1Sks5kuLDe%|4f-6GY#>=M=w6{Nsf&XtHyo)3fZoX* zav$Yz=sVU0pZ8R&y&c*V0{fD{or>wLu|J%0Y_siqWS4Q~^3t0}2#r0x+9T{WtL``*CT!|D|TY77n?J~_MiSegU)(T;m28foaw>i~PU z<3!FEZ#4B4P68O;+4>}#c10mAej7aGjCqyyLSFq1_G?wDbH2NxX<}!C5|6Mt{nd`< zA?iO**5FU}Rs}gJpE`CZQ~ZQr$M`~zd3iNfo0m;QkD=oU%O<|Not`mR+p7Mj!u9fW zw1cXyejZ+cDiT0!qY#-aXM3fLzqACY9|gg4KS8GCm(D;ixE>~$Q*#`k$ zfgCDUfsr=T%S<$)g!4+(60_e)(2B*fSSK-D5X{n4q^L1Q{AJKyIMc<=K2J{^EB*lz|wo<_Y zfES0FUsZ|;eh0EW5N0%9G1;H|ioI;^mr0tg7GcnKO!U4qCiFRGXuB?(6=9oMR15*G z_uMSp{%szSIDObygb z!cjJ{ep?$4m7VJLT9oBL9p=D_&CpoYW=0*q7o1*Vx}?3o=iZT*#|w71jDLFgN$g<* zpZ9t`ln~u|ILBEgM1+zLl4u0YIHlTrGD(pB`O`*=RIK-NcnAjh#XLAKo56o z40z<6Cwd90{9#VGHG?>A=qygk%dmH-b~vXw@d}Cw z|KvN;YRAk)G3ZYHG~5d-1Z8A@DhAlUih-w-tG$_%ll?^@h>E>;(QpUPsGeb~&RAw6 z(gsDf=fx38)6Rp9w)CW7iLi5a##@&sZ4l-41lZ&8!BpLYbXM7D({w)J+=Y88Xe*Pb z`G+h%Gh#DSTJxf#0c_bcxz^5ZNmJA8hUVC>JIGN9ZC-r&a{3romV+~M-qFHt;3$`? zYMwH8O1`+NIhYOpNiHp6XGPw;=8$q*>-pO@{NUcX!9`W12@@rD=1tt0q;d~FLqg4# zO&;7icW5`;q8N)3zUR530yb@~R^pprst|{@P&rooJ$fs??qX?2_7)v%5A$zv%hr?l z3<&7c%uTXm=TBEE(9A0~9S$9tGTmqR)9K%0=Lg$r2}ih$FB?ah)7u0d#kRg!q2D_m z_J*(Fyc^#aUu_?Qy#Fv4s_2${SX4)6u{}Zy2MKPEFp6*)-Dc}UwiQsQ5Fh$PosRiM zF=IW>wb=E6u_xf!CyVYkG=p38rwA930hrJ+8^QXCz(3LQxPeXl5;HqSsWdqM+JBsjKKKA&keT=tQI+z77O_l9gglA;FpW-tWUC z#-+KQ9zfe8nZY|34ohu?*#e?oMN{aEAf1Lv*d2{?f5Q2REXxLMwW7Y(mG6a**Q`ZyClh zJSH_kIPcsjc*lRV*ykM+{Zk=!1|jw~|2H>PuhW!ax4yLle$P=-HQK~B;Zr)Sub-Zs z+5>iSrBe)l%BKG)kw2G{uPh-S(oGRJ$E31bjNz;?dUEMJg&-ZqeVA(|{@B+NU%?t| zV`=FI=Dd8nJm@4Ps>V!k;Ye&HolvpQyoi;s35zfEAS&w4)Vx129mT82J|8oI>~Xp- z;^Ig9T&ag;A#87Y?3GZ{(>RK8e|M>ZfR1c#hK%asAUpJvz0SQUYo#>ncV_828Uwn{ zKN`=DXlCr|T!4N|3L3>3MTd+Lw4H{ry-}6$!A^D#40}SAs*90GI>9j(L<|c%?C~nh z!ZG zR&6>@aqcAU(1~D9&*skRh!~yX&ff}dG};qQkyl{dQ<_CTabO}`3lM7`Ux<{mq+B}3 zEA_PI-T^fP+^P;mj|q$SJsmZ0I(eb25*4@78uY4byDX4tr8Yop4s<9Y#3du?mi4Mr z9s(XqcY3a^QQ@%Mv<@Z0QC+_$LXumJ1f8!~bBB*!z|DA!|MqPwQEvs$hsWxmydjbi zLHRU>pQq)$UgC!|9X7fhUX^X-M>MC8y3Up5yTs7q4FQT03`7AmWK5$-35I|Kzmx~4 zAt2Ejj^t_DWaO_uq_`{=R^25ZM^IzsU0(dCHT4LD6A{g@BFbAS^i+u;iXtL6EFJ0Q zlx{NjCK+kgwIa(TU(L9+sGc~MDJcE@JsNJYS5d?0u8`dh6#x>mEn!~-b#b08Zg#@r z?)5VY6F;i^%rdBB3Y{}!$r~IoWE4H&@h2F!YhQYXaj{E>Y1XmnU^`U#kB4cx ze*)UC4SNN*%k3H!BXX;i3rFTOt#yJ@BvS(QV~(Uk<&#^cX{u&%g+OmfXYU76GLm;l z`-W0$z0|TFnX2?BgeX0yjxBVe*eB&!hMHl~mSv7azS2PSvZ<2wX&-ccmD3VT&l4CQ z;(rH}sN~W7iGCGP(@~g;sqIdOF_O8{8~OL_JxSrOF_R@fW)9L~RLMyDV?`NX=7eg2nPc`HhWE5rP+PnC5dMuY%pA^dAY3 zzu9j*m-QrG(h0(a8N7vfLIs$zXRxmW%B7h}Xt0OEw@qvocU1!0@sPsxQ=lhd%xEivh6} z>O|p6@uYgAD3i4uR6Gy?scb4Z-;_h~*&}kM7iCN#yUdYGd!U1lfc0!KT)Pug#JYYF zy=(}|vnK&KkW%9M)gj;M@50~TtNT!9-=nj}*OfUg zGUrC@m7-h70BKWKZivy38b}&7d7m}pr^)+9^HUy>$6TmDk_Rs3YZM{tu715MmH(k4 zL#iJoR6NW(lOUcb=38l$nu5wmMQ=faP?oBp%F7Qk&ihms(afUm9D4?fWX~T<&mTd3 z8PnfD?XC9EAtqgeI%xjyLH+JOK&?r51!`BsD^Rb=y59hG(qDs`HT?ZGP^0}5sJ$3U zqIYKrwyDTw-23PIA*Vs@;yFuCG{!Z3d`gI%F5IwA@5c9E1~u>hgZlp*s4rvs4^X$D zUu5bnU)ixb#rrt8TAZ{$-t8lr)j9-jFwz&S%%o-$VpE1bq;&E)T^4$V(y=INtJj49 zh~JOOR%^=@>ldWPBeUzBMdObR^|=E{cjiiC%J-xR>&?i?w7zAS8^7Vgr+DI*m^#uq z=p0?9)iRd4ssW5JE1G9QWYoCFPii*IF7cJoql+|0n?~3y(%Pawz&1s9ca0g_82)G3 zj>9@TWqm`8!kM&PH%bz4c=XWq;Bt7=Ig*od1!{N%e7LJIx|+B?R_O(|IqLsB>2sx*Za@kkrRskmjvWZ1=ri8i#GL25@A4s`T2TNbaV0b zHsPX^x)Kh&%f)}wSKZWe{SfZos(7F%+