From cf1558116f1ff1f30d668be70a99ab68e072e957 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Mon, 22 Dec 2014 11:11:34 +0000 Subject: [PATCH] Bug 56644: Fix adding cells if MissingCellPolicy is set to NULL_FOR_BLANK and the last column in a row is empty git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1647291 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/xssf/usermodel/XSSFCell.java | 3 +- .../poi/xssf/usermodel/TestXSSFCell.java | 36 ++++++++++++++++++ test-data/spreadsheet/56644.xlsx | Bin 0 -> 34412 bytes 3 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 test-data/spreadsheet/56644.xlsx diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java index 04a91b6240..df8cbf2d2c 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java @@ -37,6 +37,7 @@ import org.apache.poi.ss.usermodel.DateUtil; import org.apache.poi.ss.usermodel.FormulaError; import org.apache.poi.ss.usermodel.Hyperlink; import org.apache.poi.ss.usermodel.RichTextString; +import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.ss.util.CellReference; import org.apache.poi.util.Internal; @@ -107,7 +108,7 @@ public final class XSSFCell implements Cell { } else { int prevNum = row.getLastCellNum(); if(prevNum != -1){ - _cellNum = row.getCell(prevNum-1).getColumnIndex() + 1; + _cellNum = row.getCell(prevNum-1, Row.RETURN_NULL_AND_BLANK).getColumnIndex() + 1; } } _sharedStringSource = row.getSheet().getWorkbook().getSharedStringSource(); diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCell.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCell.java index 4dcaf63bf8..e48f7705e8 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCell.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCell.java @@ -407,4 +407,40 @@ public final class TestXSSFCell extends BaseTestCell { XSSFTestDataSamples.writeOutAndReadBack(wb); } + + public void testBug56644ReturnNull() throws IOException { + Workbook wb = XSSFTestDataSamples.openSampleWorkbook("56644.xlsx"); + try { + wb.setMissingCellPolicy(Row.RETURN_BLANK_AS_NULL); + Sheet sheet = wb.getSheet("samplelist"); + Row row = sheet.getRow(20); + row.createCell(2); + } finally { + wb.close(); + } + } + + public void testBug56644ReturnBlank() throws IOException { + Workbook wb = XSSFTestDataSamples.openSampleWorkbook("56644.xlsx"); + try { + wb.setMissingCellPolicy(Row.RETURN_NULL_AND_BLANK); + Sheet sheet = wb.getSheet("samplelist"); + Row row = sheet.getRow(20); + row.createCell(2); + } finally { + wb.close(); + } + } + + public void testBug56644CreateBlank() throws IOException { + Workbook wb = XSSFTestDataSamples.openSampleWorkbook("56644.xlsx"); + try { + wb.setMissingCellPolicy(Row.CREATE_NULL_AS_BLANK); + Sheet sheet = wb.getSheet("samplelist"); + Row row = sheet.getRow(20); + row.createCell(2); + } finally { + wb.close(); + } + } } diff --git a/test-data/spreadsheet/56644.xlsx b/test-data/spreadsheet/56644.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..f82be1792908f68e869d74b7dd0c2c27c4ff680b GIT binary patch literal 34412 zcmeFX1yo(zvMq`QNPyrTB)Gc;K{ibSa2gEYLu=!hZ9hvBlEK<$&&l z%MY;UuzxlG2&AB6_THICZ*p@b!WvuIhd?kAsOjeYtxF_bfB(`%lL;{TC+M*H!rsr` znb{RtpSm(;d&gmA-WO`ch5%z!fFLXJJ_p_IpyjyQ5!4cH6tcO7V z($LR0+{cM@VAf%gT7v&Zf5#C!d;^8ps`FO&flm=9wN&ST`T6}EMnSql9`V*K%jQIX zMB4Lg;P3`Y#K`m^TS7UjxEhFEE?gS29es2H9{eW*CF5&n+9mV8%Vm z6eU+2K4vL#-eVn;x|yGivJ!2wMz6VoE}(oI%kJWj?C&UhjkCwdCUA7L19cQeL?Soh z$(l)dU-;n>3JB==85BtR4|QLoK!bk?0JAuttf2sPuW7AsWP=w9Y!80^Q>ct3ur>(TKY^Ld$6PuzldtXo)5`xhf z`+%>*fF*?lb$Vc(8$}~CplviBgI=J&7`w&c--azs$v)j~0tw*)QN(%2ep^|`AYtK1 zz3rxxAQ{S?j>tA>zr|+&RXDm(kjy(M;)8siItkx@kEaWoPBi~f>f*VU#R^X>XiRwZ zoP8zOhI@bCiz>sY@TO&ieLdfIO+xQRyS*D$UK8N>KUT?;@t)EfKzAGh1p>kVf&_Ln zqyDK-94xF&bu27QU;5)OMFR|Il7MUf?|wDMNQrgPz;z#cue={x$}4RQG;4$q_*Pto zgPSv%XObd$fbEL~xzU6`gI#^e z3wNe$s??!Ci`!e>%BjMwN72TWzjjxIA64iLg^dR_A$mw!Uf1>a^}MsJ$#=cdgBmH> zWis2wjZtfL5J<%7I+|pV_h%Sg+TV50R+d|fFnl7Go9({ei2H8#`Hf2lV5qdSxQD19 z@bIJ?_RZ?uoU93>L>Y#Q;IW#Y5hfmFXrrXemAuxqHN`G5UtAm_pk%aeA_7yv`r^6< zN9}14iRkot+du&gd*0D;y`IQQDDa$M(cuSe$FjkuST>*in^NbJ zrmwb*7+m;pVyg%#w$W*-YhnhD#2lR;oNB;PK7WxlGOX}L1g|gT^q9XIX?wCeii7up zA*`mg#~k5X`V6mq^r2ebIF%U>;lc&`LjMU`7!Dp4PXC~GclBL^x?`N_ih(H-%O!4|8r~{6K6o$CUX8~6{U#1w&*oE|j zjZOgnKI}8B2Qg}p{vF<>zlaT|@d!kJRd|=6N^C!Cq2yT8)u4efenRyR`HhYVs@+8aC*KBHIa{0q7ZrXNgV0YVuuxYYZK#r@5}&oxJ^^siLb3|NsR>hvajKfHpedaXD6?X4Rkw(rH$WxdbA7Te<@)Kc((_y3FGUJ71>Yv&K@2DG)ca2) z=wG}SmPj^0oVC{(qa{e8eCla``$X--;{Sm*r6j24wdDsH5DU6Jv(aYV!?t>2Jnu0fxtnSetpzBu# z?3Yk&!#q+KA!wi8hOZuTOonjrUHZR5SG+$!`Apj)@j&SWB*TuUoU7%_gpVN)FCwrQ zg!1Z@zco3GuaAuaGQ%sixK!0I_H5Ti9R;>=-SlE^8d?wJ%}8&lj7F-;S|LW0Lw9mnCV{fE$SnLWNO_4~{xpcpN2~4-S9@yiu+lX7JZKG$1s~udvr+Lk z$f?MQV)@H=@%?w5icv|^%W6xQr5V99WUqkT<0V!ICqzoWDBe3-fYri%A$uXl~-R8M}xkskxp)WYZsqlTrz7C z`f@^%wZx&3`GY^KCf`DA@DWgrYuf5?w}iX&YrLg&Ke9km@Jw8&lLbSb5?G?3HrpGEuLv6Tk|z>t1p2=OcFpEBBEk{-InFOfu_;UR@Gh%inp5+9XGwV}VS%%e5d zyET4#=!(wH#tjz`^4SC$Z+Mq8mc-EbP*5Pw>I1K(^*O$s1tTWq{RR#cqwE*sRpG#q z^jGRi)9^MZmdnsSguOJ5HXlIT92XtGMS2rM5LUotmd+)gwV=|TZ^!0G^u+mau$#L| z+(vaz##)#jXfMFjjPK4B+2BmurN7J3vZ04gKhAWmeRn~6HB?vxjA|+=!@2O8Bw#k1 zub{F%iRccm*bodAvxc*S3nh%={4>9TUE1NPaHn8qNB2>?(dPA+EnMbW&TrX81rfH2 z5jn`%*ghR#3#XcREa0!&IyedBPFHqrvs)dR?l~mVOQ^^f1QFCFkeMalwG0I3cC6id*>LYLSc zL&&b^TZNj@q+o^G)P^I+l_Y&rRWds9DNKzJ0RcbH$H;msZth&gby-e{OvvD=@~Z=n=x%gR=V#RCgpRT4Io-41Tjd9Aev10L#+2?d zvZe``0Y0>+KYXRvH3viO3c89J2hGXH!-O=Kn~!$NPdQM7#v1VA_dN*SSHl#}r?)Yh z=^Rd{-Mww@=ifkAP#mTGuZ_hC8YRNVI3wDb`9e)u(F4y#F7U;%Ucd7)kJt+jez$r^ zYQXt1q<(V=ag5#d>wXMGcxj8UIMU^iD}6B5D%DO&w_k#1igOu4=c5SSl@t|`{vu~j zKx@MSixuxeQqCCTd5&$pg-{o*O~e}i8m&km?;REwZr8?=n<$osgE2|{CcfX1+*HSu zm`KLkRQ}}GOPRD?`g`Z-yoZ)mF0eH$=T0qrZ`BEqzzncA?tNJqGD@M1@fBOY@E$8`T)Kl z_?B?*Q-J$Imd~?mfQI}a>PmuPDOzLoa^$y`+Bv6QDCTAS0c9x(^ajG=Wwj0vhJ%jG zc=`ZI*>_zNknVe;{;%IHDr@2UfGOcfBVXdBcC@x&7!m3w6=I9UTEE^Apg)){J^ga6 zbXBb~y92ktN}$-}Y7{VgVd=g|GKE&$vn`$?Rh@@S!8SJ^Cr)~EMHHh@BO^Ad$e5Ru z_kBpQzJ!!%$2zmw5(XTKN!!pziwlgRyt6`63T6jus89ObTsJnLn}4nRwaj*n9YF`5 z4&Nqp!ncy-Z(F1cI~n$)+kLm+D3n1bMwmKsy4N36qBlRbhw8zxt4mOj&Z3Bo$3VLprYV681m}XMywTC&U`yv zB`rgFrE~@VsNSJw>8x#~dMIeRL1ikkDP|&`vbBy5q-uB11;*i8r>(1*lF8WPYUq)0-FQKk{rEe3qH-1} z=Es~b?d)+wpexO_m^&lK!DTlg*14%Y&-6+c)k=ks+5NGOQO5PT1K)ad3M{3}gr zFO=gb>^X9N8%H_*5)s$LUB>T zo30)&*MHLi&zC$Tw0+usKqW#czBjw9Ium5q#2*a*j#{NIOIiNL@YIx{vT%9KS080{ zLe-RQCbhTta*-u)y}6f0`M^-N9)kA{NBOw`GU-tx3w4TfC15#t_1tF*mPb)@LLG)q zm|6JV6zCqC%_v5sxN^#X4QE)jRax^yuqN>uX>Pt!f89;8GDISlEln;2Rm8sMOJ@z1 znlK~(m2FVR7ztNE;@3o2^(_k-*ApO+7SOsUM1wZTex!79tQ?mPy;)D#{5dJ2LvPb6 z$qa3VXu^9v-|r_ZTpmc`-w-M_h0iD}c}!{3jQm!UkH=Qu7&uazC=K#DUYf1(b__vN zHo-BWnsB~4aicI@yfcDuT+l0>ZLGJ>Q$8~!QR{Hz(qE1lt&E-XSvLi}1dlD;n3apC zeYH7EjP1IHgch#BG3lW_UXf%jYrp?8&Hu*^diFk0lLD~!vPA?0g!WSheOU;wG1Aw! zwW0p;M)%T2V^tTT=LO;1q!gaKCgjc{{bu~sfXm|als?9>6qcm1oAOYQf#OBm&!&`1 zjee)2FO5gnFw=^Vyxt{8sB*qOw0+l-BapPUQv>RNXc(JbcT2^_RhmYf!Sz7rAgCXg z>d;Tim2bL3Ntx!5g5#mwvfVv<7MV8ZbOks@I|8hcMqpND*ZwG z`T4Q5==J^ct%OhRjkw*q_CrO?B732d3tPSUHW~yGLQ{`04|)sMgUlRvag%Chyk5Pib2e7W#tes2cMHFJx-w3Rs1VpL)mn;$<2N-`=CLyZ3Yiz!Ywe1Nep(@4 zH>w|(fpJgAjrAIY@U?hL1KxzIJOi)Ip|?CXu|lN^^6fq(If5H0bx?tY@>@~vl~-39 zp0nX~mVzW@U5RaG2F0f#nHIS3L6cG<1HHaZb#*}-2+|yzhC<5izzBZ9$H?xG%yS75 z2kyDSZxcMQ>!L%+f+48{?pEUVe=9RIvx}hhxik0HgyuV6ew+>-l=!07g`N?+KX{3v z3k*mohV8SKAQ@RTumDr$&6~cl_o~w$P(eOk+oBpm3X3qJ$rY0ssW`xcP6TV{tb_Zo z%Jh6hX5j0-KtTo(S8znc%Ld-1+vYdv(gKl9w(_A>Ac@QZaqxDd0;|sl2@D3;E5J<* zYzHG7vZF%Nm8+}L4}{YcD1j37biqTi;>f{>r0P(&?b-L%q2U&zHz<*K4DXZnT4>ks z1G<(UlUeYzMYbvOZU=(r7dH{Es9qpRRlYn)HF6)E5=7#Rw*@*2 zcvpkU*;tz!n6#r_pDvDsOfE<{=}JW#g~Bn1g4am85h=qF-73>_%4E?SnlxEUE?7C` zN;a9$RNBSl3-ha$3L+oG0E1sSBsd8 zUMv&_eKHU@kaHm&x_XsiYYRDqmw`wOxB<5bqq&TrqWpJgQY!C*Tww+k^3`JBL1}+V zQHy(4bQ^dGkOY9IpKVFy1oTD6>mH{ytQtNY$9M)%iY8Rzo`$nXXNu;Rm80a41Aih+ zksVuxQGx%ip%@67wUB8`3M``D<&}9I`B`9BwK~r1#XwDoFI8QyizFRxVx)ht8rf2R z;k^9uY0>T-d zo6XXuB_pyz`tqf%w`7yEA2e>3ULg$RTk2`w=S1SY1sj9nI)~9N%1K^4%*LTBFlQVb ztAfHeb;i%}-Dr)A1Ndivh#}JDZ=evS2RKloLkxaPtD!7hvc%wYNp#&`h9yk4?eo4H z^3tOFQroOHqewE|#W{pzr~XJWfJK5KMFGCBhAPTn#Z4a2)0#EXfO zpTP)u=^e}0<;9)SZvY(Vq`F^Mu_CVNCU{R)8RiZSmRYGcuY^C}!)YV6H7>ADi)#r1 zo|2ze9_D87W#V`%Du+M>L|TRJvbfzuHv_%I3qwfa0UfUXjsCn6-((LbJ%i6OkQO(M zj0)Xhah5UQlH~MYv+Op|pp35+&C;{*{8za0Ual>2EWp5@tA^lXG}$@M&@Clyh=uUROItAQmiRuDe7A>&WL}}m7!0U*WgQf=s zXsAfD;2s)a@8vVXY`R$TkTa@=p+Tdx3$8xhzPe*tl1lSDAM#IEh@*ClMJTsRd?Fdo zVFCAGY%NqeF^iyJ(`EE;r-Md0G?~IinjSBd+MO~~7-%lQF3J(z-{7qXU}iY$gLTK= z+EFKpcf^VLSLEGtbTMpZm2T-uhbjKo z?@QCEv&F1MLIMuB7{dGeL!e>b^mnS8?s#*eiYR8a==*D+;5eN1jg|>(oYp7b$zx|> zI6zD>0d{r&L}5&`uyLFKl!ZEAs{#KX6vj{cS3h*dkLmi4-K&!5c2Q7TIR9hsW4LYe z%0gVc;VW5RjT%nwp^+nhbE5Y_)2%IXV0L2NVirla{meL>6iPVS2rfh2LUft>pdkI- zBa>RI`uC1Du%G3{($esN;p92xCpb~de|Sh99v>7sc{z>3X-69(vl5T zJAF0b9yrd6KX|j(+_N5yaZgiP<+g)0%HLS7A;Z-W|L`;@qB%jTFNJ(gKQo|l4wI(0 zmosxVJt-qQ9RB$c?9T!QpIF?#00`6=V1MRs1NK9h{S>gM;g`Kp&mViEY$6MwyhgiJ zMiXT;*ti7dnByO04uD-;Ibn&1{&AH#-BH@LhXuvi# zK}b`Cd#4~~`61Go-7lmJ(~n5*!Aa3p6(Q+B#R$7I_&@rF=%&%h9zqvVNSde$#-w>T z;3t5;8t2Xe5P^S`tJDLG{Go{y!Z_j5jBZ_`dx7**J2ZP`cX};%t)gst>2Px} zyT%>!r;N0CLggpnD+HB!oHx)FO>B|DI|kgQp$8z3o7p4lz&o#T+*4j2g8Ie%HvorU zUhjb*Aa3E%0h>H8KR>T`ebU!6)}}W8q;05AOJ!+p7$hwz1oH;tL}k2c|rY;cftLz&5f%yg+3m?{)zvuPudDY=D3eY+rtWmkn?nfqVO;d7T7XAymIBMiu*|TW8hrSyq)p83Yigz$G9j)l zXZ#g?(4thyM+P;oXj(Ankz}!1WrFHtzpt&Ap@XDX!NmOwz38)Q&Q^5C%*=JORiuF| z=da}sp*yaed+bV5;i``V(fVqK6%FrBYHO3}mw}7kN9V9(d%d3Mbf^{)3&+>CR}zt+j_~PevVzRcLgGn~|gS>17h-749kp z4#+KC54#JP;hDY8VWvu&4$h-usi=?Zw?#%>j?pQv$`3_~JEVJ8&CaM0R3XA#3YZe7 z?VtJA;^B>K{CBPE)^t+4NhIQ8D(+}B)F6*%b`Ea88KzS-%96*AzL^4b5%f{Q6l?g{ zFz6|&1uI1tTw$@80fuM)er(ytw!!BV9ITlGvQ*=#6@K9nhM*8`8M`a$RG3;~?fOZB zgALC_m(#r+on?@-q_SJPY+tA0|`xx_(r@1@|&Oeb31w*1{F(9K3}4D)S1pX+legbE))?V5Mx7d zQt1JF+lYqDb9)lIf();a2mv|tL&%e`?z5{Xam0G#=Sh~BMu`4kc92*eR7v0NGO1}n zo9;JMx_fNrpi7G=M!0pk5{;}eQemq@Lm^`4RB5whx7!R%zWdt;eT5}qH6fTEaC^gU zSwhlS4}zwLlNvlVD~p(~SzO>2adHQeC>*TO6K0(RXsOe8#g%N6w;$pk+nQTBC?D3jP9 z*buROaq|sEx&*frw9n3oIG9Zgxsf9iFb6I4OjVGUx%I1&A15p+klRE`KB?-~a*l`u zb+GguNzMAM_is6A+TlmAA^D1^=0+(k_1NLlq!Pl&su)QnB^qPi9J2P$C(D26pz))H zPlK&1WzAX?69_{eAKw{j$4x=KXFJ((foHWdn`eL-*-0Ab)8#OIqnixQkRhp9dyY+K zEjQQzh;vaH=|=KEQeF&E<_-q~9|7I>Z_G?wF^n)qBi-W-5gH`v=ip)yRe3ad#+J6Y zI-QRUVNL92o(E@e>HYz54qdG9K7kVa!Mb}+Q~}4)U>{622yfpT1p%=PGLwD%88BIE zB7NwGIaUcI@OEP-1bF-83I{wt6-B7imCi_``O|jit|a-A6MH zVW*OhF*ENtB4fU?M_es1F|xx8j9qe@4}Bd|?>|TFDQ*@P85rG=HR}{-d6SyyPh5a8 z4>{kRH9rsX0jQXi&P0lrny}P(50I*8uQmOz0YxpKO&eBK({4p!LbxNj23LZ{U*wpgPdd9h%V@kl0(-o7a z`8Q2Vdp=nVQZIVTcvvr2biU4*NO~j3i6}s=e;CMw=odlNsDLnhFNgk9BC@|oz1`YK3tY`bv5=)X2 zSYVvqkd8IuA3LX#3~8W~rr&Nhrhct=;qal@Ipdiep4&pl2acdOTRCRs1lZ%Bp(mWp z5-4_!9_3)mU?6|-VRqHX(K}+m3W-OgqKWKNiJ{VaE^O4)FkJ@)F-v>ovkj~EITm}R z8ejh%vd!KN_a|yqTT|Ud2-PD2AdK`D$I(FlOEd6b7dOwUmlN<2gUtF_Aeq3K~RahbVe+`?^EuXyadV!ya`Axwj`9w3wuVwW$c#N zzOQ@o+BB!p|w2>K~3 zMCnrbZcD_ZsR#MI;7nBo1_JzZs8jl@?=|BaEof`vGm#CT_Gvqic(Z~LdcsWO$I4Ue zWebHV>1me~%R7NvjqU=U@0kFVSd?VKMKMl_i9jX#s_T^~RqmDmF?m(i9O|xKz2*+< z_sdmdM-xmq6~3V*FZ|iH+Ab8v1nL|wTglnniZ_SMwz6c|LzFiyu?&YoGgWzVXcPiK zsg!;WK{l4PU^BUr?Q^n@2`mBrhObM+(s(x1x>#A%UQSlc zNSnn{sn-rhn3WR%A>Bn7xw2og8wV8o03SwrwptDSB86eoZDOI}yNQ#jE}C%RZ4tDk zQfe8Ph@@*Im60X51`p2snW{jFohP`Q!4o9IUFZ8y-%%6CbT8gA4POR!MmI5u_!uZ} z+c|#*cA;|dB}u0iqAHPq!8F7kXM02YgT-HH=hr@E)aGteW5fAT$p9K=RMd9%rpLJ! zd^S#_eeUH1+|blgebB)?M6uYy=QOTJ4DESMRJr8wg?}i zPn#RV^K!uJY4WDB(vX`adKPM%pHq`^%kAMXb|Q$&Zl}DcxQ=PDcMdoJk;s=BaeQQH za}0H|R1ITo#zZ`I<;B2u+Q_)Zw*r=u0O41edFWEp=AhsFuvO-@7QY{fa8e+&!a^Re zin_%lR72;6aC&N$yhNvpS#^Cba_dv&YUcf?6|FjoKQfzzsu${}%NhM!Z~uvx4~!k_ znMGOg%gJG2RhR@g^Ufe5E?&RIk?P#YAiSH$)RDxl6vn%4bdnME_g-?0OR7t^!xHW1 zD`)Xmf4^>?@o6_rj(V?w-825ZG^UTI%V@H4eie!7MpPL^PNK(Kj~?f3WhwXxet+IB zA{Md?!|iFo27Z|}S!-yO;ejL>#I?SC{Xn|0b8fCV{BkDIS^4?`?^Cm+M;vo$oHw_roWHPa~TZ=q=mr zWs-(dP5k-n+E#hOlhKpXa>EuRD{ezzpV*H@5$r8j%MpilM{nS;H6l~}J2^Luk1NcM zc}6y~h}yr9Q+0e~#i2I_r!k)G0nR5+?!&lGM5hOzl3l*&I$f!w&?c5;oeOeh*!k%N}I?1)gkUd1efN;w*lXn{o~lS zD_n-wlNb;$>XE0*45T^0asU|3=vkN#*7*=cb3sq1&sL>V&otWRWptfx`sFs53l6Yu zIu>Zg(*+;rUO&$#S9|WlB9uoFxO3Bn(M_TW|74a= zTTQKMmU(a|GxV3hp3m$WiRYmrlrlYrK|%NydK}rL9nVAta+q%r`Pjcs>)#6^vaur3 zFq(D_rWk@Yop=$|3=uUte_f1LA3GN>Q>ck5o1wppamO1*_FinZy{9QLw9B{B)HKIW zdEXS8vaB^$5Jtiu6tZM-A!b1^`uOx3(dr4pZ&^vUu5miL^9=m;3HZ4?@rrZKm2yR+BjK>)_QNGH zu%dzDG^%b$o`&Lb1fqc6R)kT(U=!EVbsJ~1$Hi#CsOGZU-Ob(Ubc|sH4u`Aj`R-v; zgonqYW7W~~>|k$1t82^i&DGOmegtee&h!1+;KuXQ?(q%Gtw-y_-O0&iRLRNd z;67mI`tfc7Rw~2Y>3qL4;GSBF^YQ9L=4qHZgVUq_ne2Igr;Y3JY+)zhzHV3mXPK+T z{pz55688F-lasUbq;tnYWn+@Mt=Z*V+THm)0u~mhEgj|d;pFM5c=0(wbLH_$KTg7FWxuplra?9<*?qI%VE2q=>Zs+7=X~m$DlqR8@yQ7bv zD${=FmRE zCS$^<6^@4|!n++I&Ew}9S}v$?HgHzjTxF}gA9l&Lz&x4-(~b?I?r>~T%Q%X(!#yek1!SLi zP@^tdn_C*gT^%6w7C;y78q7iKuHi(Z7m($qCLygD3dF{zO!nH zb`5KTd_K=NzT?g@lPiIWVM%Ls|1^z9)*7b;~%| z&J15M(Llf3$2Pt=c^mlXBvW8n&X1TW9F6Q&nh|s&ngIaS9y>`xN z{_AP$@lptyxtzP+BhAK&?T&+y=Icp+zvS;D^JR_quq)5ScchO>S0xQJEj6YVT#NI& zLfo#V#Ky}G6O=_bsUEwWl2RXUCsdWotB4)y+>r)6H||+Pl26q<5OS^+xul;bTGG|?~^XO*5=EyNq zOVnl|h1~r%=4+{MH-ZoM=+;qO@q@*d(@@VM<*}_Xj*7{-WThRj47cd0Fc+!dlCWEP z#ODwORrL@4Uyo`b@pKEGpEREzGYKw1L_DjD$`y=L<{%VRyP0A#pjMU*q%;ioHwEit zUzxa{NBXXPaO&9)aP8DAPKK%~@0|`gkWuw3+KC1pJi7Gg+p>F%tT`@ReDgFgd*&Cm ze3rbg$yMf|rk!CI$5p2q^5CC*ittwkMr z-lVJ&7lv=#CaJ*f+qAm97`{4LYi{v@m23^Nx}oM}Mh%JkyN`y2-jyOJ@_M28Q1f1 zP4r~yiihZ?xs;sF1&W5IiW_ng^V&2QwnH+dR*%$HSE$f)XuQehQkQx6!;4WqA( zMU$hpb6y#Xs7B4?z!;0oM_uKB?g~ejtDq$vOZMWSCB34e3sKTT$?KzFi&Bxt5NrE% ziAwRbc16rJD7n&`vW-eN?AT;IHPH;lhMW^UB^SIb9vh7V0>DmiJF@~z&A>AmjqI6J zN$k3`=2pgyO+jP0M^2__c$%bIdt3N4Dp3=~D8ugQqL6A!@Pl2aL*oKPsx%Lo2nXRx zaBFm%)LUUbLJ#NASl3d~eoZBhw*(&FL%u5)vX(%>hR8)!#;7vtPlqxPQwobs1XmM% z5>}fCuO`M47K&!4_=0@)C3E*{Hf0RXV98`uuic09Z?@lw#c)v0sBW-yK9)!8)vC2& z=F3Nl%1ZTT&ngA$zKeIjFj087A-!d)po-jkBTtA~0*n<}+Kfgsv_+fA#q5%yXh>rWWEP8aS0XtTw7wBX3I znSkJ&eZP!juL7NrCJnc`;nyslC}Qc!FCysia+Qv;)UGatFd zggv`Eq&u0FK@nE*aJb6WRj)x9LR(Pq93715`!IZx1YX|YS~fx%pyBc&_*17Z;xn*H=_xG-^_ z(a3LA<7AOGxUE6~Coy?Be-@)0$^7m{$~@4B>;l9H2_fv15q2i5yZ#BZ9YcGMU1N$i z#!*c&;a7z}#VD7hXALpU9{?j3d4O@nZdy(SLfW@Ty=V+DrUGgl_`@Pl6VcUpr6QOU z@zwZ;A`lZ%1hhShwm)uhm7o2~J!*N*(2Ya)&%JNz&OIo5^5p_}Jk`R1eTb2xUnKSUGsXm>t{QT;%bdh8!j zWo6xGdlz`V61M*wu6gG1sm<|__l@xD-NKtFBhCJJ?1CGjw{Z`R@P)Ex3lA#&vluZ% ze^nd^?}!dDiC*W;RcC)lanNHr?K9g9%QY??l|0D0Png7z)S{48zdeqed_ajrn2D(Bo7boQQaDp68?+Q$U(*=GR~c=c0=8A8vKyrC~t^wK_Ox4 z#&7MU+Q}0lP(=P5r;$GMQFQ7;p54xkP|Z1W9p>lJ2Tx*{56ohi#!dP%5Dp95On6rl zlnR?p_*WAi3cE~r*%FATR%k~ns*dY0S**;3OR&>nI_Vm#?#Dz9PGXG6QOGXcJ%bZE zF_YjD=H#yz?vu|=fFfI17HrOj3CGE%&RC|j&L|hB{$+F~f?;B+C(PzsL(a_f(e)-zzIEYEmp)f*P?R>r7VH)}?%j#jUT}9~z9YM}!#>V_VipIrr3mY%)5}s>6O`8DDMz+p~6YX05M`na9KHd<_>pb-Ed!my?_cHk{uxGsZBi=~Z_f}XVj2Fl zVvW1~?aXFcb+J_;JGMq=EJd}W_69syA|Jt_eh&=r-+*yC@XvwqGvu&R9QBya zdL|4_-QK=H&e&g|NbQ-6Rm@}M4e5IhWGVF@Wa8+tXVdPztGX{s4&f{{|q8f8}LPwf%EH0PjnZ0(gJnmTCSwmaBYUEED{#Wg*i4j^+PcH2%l(uhMyDOUnJyvyg$mV|IM!Y zLvH27*)g309%ud`UjD6t{#6VB1jdURF#f@yM#x3_$hAP8k{VFKGwv$a`h0|Zs zCt$2_R@0O7S6X?`R<&e72Ozh;g%7jQ{Va*9-2pYtma5P5YZsAGwMwO%!uweW>68M> z-zI{q#c@{?KsU79b8kw2Eey0;o>pDz zv*dpHn;G9f?@oU@8*4+M8 z;s4jw0FD3s)qp?ffPX`vf0Ous&;d#RDWbcl`;X}W{eN9>{iXv5O3PaZRTQg4t>a() ziVP=Jh2~$xmW*ngYbmYqU(L@xq@nD;G%4m<-ShAvBJ8AJ7cY>1H;K$8DP@sFH;MXr zs$KzDFmrwWyA`v2+n05mCK6-7g4Pcy6g_k2y0*^jrSzZeeD`Gkv9u}tJJa?D`BwZN zlW$7@F&--acgnXv^3c|QjE4sPb;AFRhjK3W<{VguK2XM_8brO371={~y1FyKR>ill zHQG)HS1q9n@iyJw4^uOn(3wO@srlC2jY3&#R-q75s%AE+vw*Tt^R2b}Ev3C#g=9WV z)2HvOC#6S@2zVD1{NJ^WXhLkd>$4u~OFwvYz z5{}f%uS3VMK!~ls8=8$_=_DAT38EK&`P1KhED5I{ms@R`KYhplT_kX<3N9-ktDR!x z6299Z(1v9uP&BnG~1qS0KCoPRYQkY?P*zFSS!f_}xxwPFQMAP->1Jw@B(aU62j# zvHW_d7$Lw9n=b?-%2NN#mtUOy@?nHOh<@B=HM@9YNOY7}p42LwyozNu;N8mmk+l+n za2v@9LCFbz$qC*}f)S^rF4jl~GOM247e82)5e!R+|CukpIIE0h__-?ykgV}(D}!9a z_eHTRy>Tk3`*M-Ta66WX2)(St#`wg>c*MrJX# z9+>Indc4^l-n9PX!zk%Dn$dsUzqDzD zZVQiS8WL&z>41*4O-c|+Ac>*Up3whNOSP{#m_Dh0!)U&!FFEn^k(o2tEZ)eUWcxaX z%BRLo<@v*LDphCs^E#DH^v?${Qyp;*$k`qj=n1y7C`({%E9h@b1`o#}@s`9L*sq#`dQJ zon)7eI)+MyNWCLxQ0tTWjK`}ns{Q&06`f8^^uHVrz|`;wV8|(Yf8$jfP3ok+V|(D= z#0J$L5I$-&s{~e&pAWBSs&l$s1c2+}jnFfI2zOXYCak@}KcXYv{rQld(AOYR|193< zE0WMY-&mrFHnL0CtktEyP4M#pF4{OWm?IV|l0dUdr>vH63DwD}?vEN;KbV^H^T92W z;FM$=1h^HEI=JcX*$4OQTmK9K3Aei=P_i;^!a_qNhamC*O8sn<;-Q~zlDK6D@W$XZ zV1#5p#_}H+$bO}}HcS5Ci8uV;q=*_CkVOrezsru_8X!ARg8yGQ8TQ%igTTUj+upN8Af0{{fKy|MB+UgT;Ri0ZR4d)Z3%Usr+Nk%=I_&(awTa z3H8?BWSLAV21)>>>9-cDvh0f*`gct5e+WSS-wGLk*!~%gat9aaSKN~CE|wtVKYEGE zj*=W9D7{r15TsO00&p~d&1eS~0EIb>0H7I#A5{KddHin~?>VEPY2TQhEt}>+$;j6^ z-pbRr93e-m6KJ?vM(D5s0$Q22)|5>mPvP0+__6ZL;P~=@WDX+Ens+{>yVvi%vjIZ~ z$+XFUElo9voz|wP6bVPxg|BR(^c}Q*Viq(^uBt@RTYr??x1k?*U*{6Xrc09{i)Lg& z)5m6I$rqDOwvTKKa_O1e`&23ww1zNngmI_iRR@@=D zOK~e&JXrCd1qu|G(&A8{#id9a+>6`6X>c#WEyzoI&OP+xoO@>Ooi}gpd-Ia~Gs$Gu zm$i4+UVE*b$@l$|u>RCaZKJ6xF;Q5K`Kq^^)Yy;YsmVUUKk2)l zPaYr_5*)-79DxM^CCgMRqAqqDu))J4-1 zqk47|?vs4*@H56%YzwRZ3!~S_3(AuEfO=2+$CUkHa1XnKI;QidU)QL}wx-2MbEF+J zX@}I*74?=p{Pr36{ad1-=|QC?n=~UQlsEog`Q87`=>IOTr93A*V6L#eBP{FM+rx}` z`y$KTJ4vq-CpB{okAK8ytC{C})O+460Eu%bF3K&ttFZ>-%t2k$l*Z z;hmb|DyTbg{t+8cbU2_{6JL$!~lY@7#45(H_-;(8H!`_;0 zlEThiOTIUKV?yXe#=&1+jn^5@)Md;R2fEC)3Rh0o{l67N3f(GglcXt)?`xj&vFVXG`;Hfcg7awAJx!oyYOU9fdHa z(iElb&kXMbJe+D92Y?v@6VtQ8Gv045%?^J#xSY2won}c|w=TjpqG^~|ba&ipoPY=m zY(zCfNK*P1c9~0kl3xKCgw}tF$k?ly0zFT-%*h6$8yA$;amJn$`K8&3u+$_iE}I{2 z9zbeOQ=H1*?!D7nlmuPa@uWjafF8o||9mBs4sL8zKNbZoMQj67(^(vVY+#k;gXqQ1 z<&3XxY;2!jw{9=L_dc!JUIvRFcN#0-F#ft_uG-K#x#a7!53}OFOEnX)EU%#wqml!XLNPISFihMECSr8!W+@qys+)y^_aZqHM8QZ z`|P4!Q=^P11r-iW=Lo+FcZVQU!fi3!<2_MPZ69O!3Z zkgGHA@tS43&tHY6DF!SfqMr$IK}UG!#?DN3cWoNZ%T6sSjP^5+c73Y!iYiVHtn+D8 z@G5t4ub{gp+g$ZMhqToYJ19*)DVQOMbswY66nwdA6>ZORc*W|@Fo|9Ugdg$dI{{=1luW$b# z5V_V@a-#OloQ_ zJOz6W+rPgq93A$i9dxZxxuT-`84_ zlvzlWsp$}}ZYFL6@9WjhI7Sap>&?e0>Y#meMByc~(P%q!YZ*c|DZIs!D_w1CR-31} zP?Brl6xCBTU$Pg%|6pII>jw8?nN%}-^o+c1g2a)QMT;9VOU>gs9@+M9SK5!qI%JgW=K>#4bXq+a>J*HlEKPXMpsgfUg||^_5AXrn%Z)_G^iA`YX}x zg7OI+-XF;BX$`BsnAI2{fOhxEqIIYj6&M!M^jKx7hs4HLKN7NYb$d2mA@9X@thIhk{?TCFH-(+#`N?Q|0I; z?0poqRpQ_=9Wgia!x!9m^aZEHk5ndDJhgHv`c85f`{;XbnM>Lkh|}LMcp0ZfQa)Z8 z)oFQLrudOS-#ki!9yVW^_P_t4{RyrI4tU0#g7I_CKe@<){-gZx$aM? z9gVw(#F={Y(oW0Y@KHsQ;o{HcYsH9vox@U~NN}?BK$Im76uZwk8P3AW@J8{b;YQ?} z`vQxhiu{e2!#W!^EQgl&ZZ~iC?51xpY!hhSO{ff9W#MA0*;RgjA_v9ccT{_mdr#eZ zi#@7`E5iNRz59_$b*{;et27h`R&*ZW9ww|iH>Cc^s{b#>ag^u2qMe%=gxN5#*$? z=Ee%F?tUJ%0k%C7NNjJf?`4p;!_H@^HEHgj;YpK*@}&$olx?czS@wKT$*L#b^R=xd zm4Ho4u6%gUS5--E&NQwrx8GL7sU+o_lIXRk(*_PRMCbKbeQEbjJxuGfjsPvs&OJr} zyj?>25vE!iXrwPLqh2e00KeeWG^oQ$0!iaS*3|(p(fe7;X%ESzq{rMCb7F@+W?=q` zb@WqzyHgN0e$5!M_1#dBcZBY!Excig^R;yZfzn-f6GO-Fp+Qcb87|msR#nL@@2m6` z@#@}GUmEQS2E(o>9ThGO{DLR1%E6bRJU9yGYP*m_ai1hhZ-#`2wi)FxVCG@)cC=^3 zFH-gF5}o&7;H5=l1r_qr6MURVK8dhyS5Y!)iJlu`c)7o!Q6z7IGnGEo7k-sXtKHj9 zXIEA4-lU#XYUel7LB}O1@N$d{`4+73{EYh4g5_gTLsaReZqSXVA?!6smB@3;YoC#B zJZYW7p5u3=>v?@ASx)8y4ZhpC zP)Dnz!Ne6L-0~KWT%*Jv(X*&SD;E{>vB$3&trkFeT!E4HI(uR>V8K%+9F@&S1q)-} zjOJ*Cd%rjd^G0}Sq^ZKArNt!Em=?M`Q+y&9w3281cIfiF{8XQ*>2NRBgkR3y=9sU% z%}s@iW=z>E#*(+N!WFt@N_fNf!vz@fxJmq&h03j1rnhy+@X^rwNNI&s4k{dMW6IW1 zbaOa04N<={w)%cMd-|b&`8Wrj2Cpe}^ns6;TS-u9HEw9U;VcW>tfgl(9 z{ls8*U4WKBX^!yVJdy2i#iHN%rhiX4zdiZEyYNoaFgis5AJnLR6}0S50#HP;l1mJJ zSMagMQ1ct!PM~g4V5Hq@PQkWcqZw+-Y&D){&j>q>Wq+#6!c0Rwwy=Pc{fjvCC6G4Q+u?QCnf{jI=fD=(Kae+!Ng*5GY8xPE+bM*tG`kz{ zhLYPEE5CRcwQ{E*qeZ&%@kg37c6xK_w`wk9$x$x)N(>&`otK%@O)uK?qkGdezrcJM zHkGa0C{5h+n#uxt`nij>TAvse`clq@I6NRd!^QWpo3@v%e9`e`Kda}|rMO?8GuNE!V!MZ}b!>$CQucF?g4O~o zlfWJ%=QUe7Q(B{S>W5Bq!^$+nbdReTMClQo zc&Bb-epvu#D$0_pR!m}mUpWNgOad9Rte;3P`)zN&T#;!tF&@*-(di{0%Glz6smGk7 z=dDplm+H^zhLK5tRWCdgc8E@&&V+|U29|g+sJ2i>Vd#gV6`=OAc%^#VU;@R(g(f@$ zPpD7ZGA+IjvqdERN)rdOJ4(xwlePH9NF^0g_AObSNy;4HQ-5>nQbN4GdlKA4O(4}) zU8-U&+lnTmx38uq+zoKL(3|+?4gnKbnC?bMmAwxf@}4NWH>$B2Kge|KK9?_iWe#)A z820bj6t>dTY~EHKehPZYBUe?>T@g-FEHK1n@R`GpEfHY#gzas6v9zdgQhoY;p_6B0 zyHdJqEH1(2U7K&4ohvUY81t4``vY4AX3-AB;_pnyaNSXJdtHpxXZ75pez-p79I7p` zitk-@%&FSfD#b8#CGRbzrW$bv5AJ3hTXaTSn@h?fd?^s)gir*K2%%O|E)-s?} zwUdbbeC(W6+u8ImV=zPi_%CzA>CCyX1bjF%@QdNsVL8IPQdbLS4GUM-9~_?uuQ^yv ztsP7=@!2cb%Vv?^5}Y>##D)dLn~>CC$=pP}hbjs{yL~$*>Z$3CxF~FTqN$*wG=gsA zAw@Cl#e0RwXF{`{a^sr#N}_1VFoNzjF{ zXd!+yipN7jCt(^aD~6fXFtWXhSRT9OQ&_js2|Dv=m+@)4SwRSO7c^;a{j3vRg;d@{%53JrLyn* zkT<*7g;7IN9zU%W<^Y^Ua#;}Iqr8>B-DWSP>hbJO651zs;w1d>8(d^qVi*X9x?zM+Yvm8eC|%JqC1=IZMc>JESj3CPl2z!_Noe7q8APhVUGkE&+) z4u=mH=rjkKsX7B4UD!+<9ltM3xR&kz%W}dOU8;uCckSkSxOVf7D{$#!Gdo&%c=qgI zt4LsneRL50NI9HLTyjkIXp>=5VXLU!|C{ulTC|EvLhTGU&*q)XU5ECS%2bQFk8F|C zB@>|C^)1w%m;~m;LtHI8ye`(|X``lO|qK5kQh+xibi{tehxn`{Bx*xJ(RyA z3J-NPc%~%yIn>R7&KCb4>+m4|?dB7wrqIex6bwPX0(|jKX^UK!m=5Spr^3`Cf=D>m zpr>%%A9A?*`Z294h;He@aVl&!USaPS@$oObe5Di`cis{t_!C4vvDD5Sw@Le&)rR44 zzmyUcT_8}VaPRCPX;N56bEPdyZDtcgthvzbYB3l-OY200u+?_u8oSyIkMcf#sYB=^ z(hMJrlaLtnG5p%4fJNNoso0mwvP{zNE}Wm^#h?IiC=_>+Es3r?QTe{H@f>uwebD5a zI?2z&~f(iY*4Q|p??F`m(c8(|*81#WA z+NgoVT`;pzw$XQMi@5kPa@b8FwT<1=Tl3|5ITh0;@<~jFPhON=`ncX3I0K6T#4~PO zDZJa~l31^}Tl1=a!iS&k5+!72H6!!ut=1NQ}93jPyGXha-D3E*oaD|q1p$N5`QqM)<=NQNa%p08z5&8o-JCcgO!EV1$T*C`)jSGD3%l@|Pk7h=7Q+{nvnK z_x=X(n#3Ow5RvQt8t~5jAAr9%&cFKibNl>572sFEf6g9%4M_Xo2OuJsJfcU4q>0x6 z)|`k#yq0u8L_z!w>Kf&#^$(Ok{UU{kfOu|sjo<*64S+}A?=ypNiirq>cp7mHG!Li5 z{~74#$wfp#Y{#xq=-q#y{GmBRv_|ZDuB|VAwMOW9*brX-=z$PH5qp?x&=+uefB3-6 ze(q=xt^ZiYUfUueHF_Z-Ar`fW)_<%FezqPu7=i^7h YS5-iVA21;y5yS7L@cJbmZi<{9 literal 0 HcmV?d00001