From 6d5869931731e4b7348590abcaf1adeeeeaf4c75 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Tue, 5 Aug 2008 23:05:00 +0000 Subject: [PATCH] Merged revisions 638786-638802,638805-638811,638813-638814,638816-639230,639233-639241,639243-639253,639255-639486,639488-639601,639603-639835,639837-639917,639919-640056,640058-640710,640712-641156,641158-641184,641186-641795,641797-641798,641800-641933,641935-641963,641965-641966,641968-641995,641997-642230,642232-642562,642564-642565,642568-642570,642572-642573,642576-642736,642739-642877,642879,642881-642890,642892-642903,642905-642945,642947-643624,643626-643653,643655-643669,643671,643673-643830,643832-643833,643835-644342,644344-644472,644474-644508,644510-645347,645349-645351,645353-645559,645561-645565,645568-645951,645953-646193,646195-646311,646313-646404,646406-646665,646667-646853,646855-646869,646871-647151,647153-647185,647187-647277,647279-647566,647568-647573,647575,647578-647711,647714-647737,647739-647823,647825-648155,648157-648202,648204-648273,648275,648277-648302,648304-648333,648335-648588,648590-648622,648625-648673,648675-649141,649144,649146-649556,649558-649795,649799,649801-649910,649912-649913,649915-650128,650131-650132,650134-650137,650140-650914,650916-651991,651993-652284,652286-652287,652289,652291,652293-652297,652299-652328,652330-652425,652427-652445,652447-652560,652562-652933,652935,652937-652993,652995-653116,653118-653124,653126-653483,653487-653519,653522-653550,653552-653607,653609-653667,653669-653674,653676-653814,653817-653830,653832-653891,653893-653944,653946-654055,654057-654355,654357-654365,654367-654648,654651-655215,655217-655277,655279-655281,655283-655911,655913-656212,656214,656216-656251,656253-656698,656700-656756,656758-656892,656894-657135,657137-657165,657168-657179,657181-657354,657356-657357,657359-657701,657703-657874,657876-658032,658034-658284,658286,658288-658301,658303-658307,658309-658321,658323-658335,658337-658348,658351,658353-658832,658834-658983,658985,658987-659066,659068-659402,659404-659428,659430-659451,659453-659454,659456-659461,659463-659477,659479-659524,659526-659571,659574,659576-660255,660257-660262,660264-660279,660281-660343,660345-660473,660475-660827,660829-660833,660835-660888,660890-663321,663323-663435,663437-663764,663766-663854,663856-664219,664221-664489,664494-664514,664516-668013,668015-668142,668144-668152,668154,668156-668256,668258,668260-669139,669141-669455,669457-669657,669659-669808,669810-670189,670191-671321,671323-672229,672231-672549,672551-672552,672554-672561,672563-672566,672568,672571-673049,673051-673852,673854-673862,673864-673986,673988-673996,673998-674347,674349-674890,674892-674910,674912-674936,674938-674952,674954-675078,675080-675085,675087-675217,675219-675660,675662-675670,675672-675716,675718-675726,675728-675733,675735-675775,675777-675782,675784,675786-675791,675794-675852,675854-676200,676202,676204,676206-676220,676222-676309,676311-676456,676458-676994,676996-677027,677030-677040,677042-677056,677058-677375,677377-677968,677970-677971,677973,677975-677994,677996-678286,678288-678538,678540-680393,680395-680469,680471-680529,680531-680852,680854-681529,681531-681571,681573-682224,682226,682228,682231-682281,682283-682335,682337-682507,682509,682512-682517,682519-682532,682534-682619,682622-682777,682779-683020 via svnmerge from https://svn.apache.org/repos/asf/poi/trunk ........ r682999 | nick | 2008-08-05 23:29:20 +0100 (Tue, 05 Aug 2008) | 1 line More tests for bug #45365, but still not able to reproduce it ........ r683020 | nick | 2008-08-05 23:49:24 +0100 (Tue, 05 Aug 2008) | 1 line With help from Yegor, fix bug #45537 - Include headers and footers (of slides and notes) in the extracted text from HSLF ........ git-svn-id: https://svn.apache.org/repos/asf/poi/branches/ooxml@683024 13f79535-47bb-0310-9956-ffa450edef68 --- src/documentation/content/xdocs/changes.xml | 1 + src/documentation/content/xdocs/status.xml | 1 + .../FormatTrackingHSSFListener.java | 12 ++-- .../hslf/extractor/PowerPointExtractor.java | 21 ++++++- .../apache/poi/hslf/model/HeadersFooters.java | 2 + .../poi/hslf/extractor/TextExtractor.java | 24 +++++--- .../org/apache/poi/hssf/data/45365-2.xls | Bin 0 -> 167424 bytes .../TestFormatTrackingHSSFListener.java | 52 +++++++++++------- 8 files changed, 80 insertions(+), 33 deletions(-) create mode 100644 src/testcases/org/apache/poi/hssf/data/45365-2.xls diff --git a/src/documentation/content/xdocs/changes.xml b/src/documentation/content/xdocs/changes.xml index 0317cd9d27..85e9d58f85 100644 --- a/src/documentation/content/xdocs/changes.xml +++ b/src/documentation/content/xdocs/changes.xml @@ -54,6 +54,7 @@ Created a common interface for handling Excel files, irrespective of if they are .xls or .xlsx + 45537 - Include headers and footers (of slides and notes) in the extracted text from HSLF 45472 - Fixed incorrect default row height in OpenOffice 2.3 44692 - HSSFPicture.resize() stretched image when there was a text next to it 45543 - Optionally extract comment text with PowerPointExtractor, and initial hslf model support for comments diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index ce1869e2c0..09f91c20fe 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -51,6 +51,7 @@ Created a common interface for handling Excel files, irrespective of if they are .xls or .xlsx + 45537 - Include headers and footers (of slides and notes) in the extracted text from HSLF 45472 - Fixed incorrect default row height in OpenOffice 2.3 44692 - HSSFPicture.resize() stretched image when there was a text next to it 45543 - Optionally extract comment text with PowerPointExtractor, and initial hslf model support for comments diff --git a/src/java/org/apache/poi/hssf/eventusermodel/FormatTrackingHSSFListener.java b/src/java/org/apache/poi/hssf/eventusermodel/FormatTrackingHSSFListener.java index 355a9b71f0..ff34958e6e 100644 --- a/src/java/org/apache/poi/hssf/eventusermodel/FormatTrackingHSSFListener.java +++ b/src/java/org/apache/poi/hssf/eventusermodel/FormatTrackingHSSFListener.java @@ -16,11 +16,7 @@ ==================================================================== */ package org.apache.poi.hssf.eventusermodel; -import java.text.DateFormat; -import java.text.DecimalFormat; -import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Date; import java.util.Hashtable; import java.util.List; import java.util.Map; @@ -33,7 +29,6 @@ import org.apache.poi.hssf.record.NumberRecord; import org.apache.poi.hssf.record.Record; import org.apache.poi.hssf.usermodel.HSSFDataFormat; import org.apache.poi.hssf.usermodel.HSSFDataFormatter; -import org.apache.poi.hssf.usermodel.HSSFDateUtil; /** * A proxy HSSFListener that keeps track of the document @@ -50,6 +45,13 @@ public class FormatTrackingHSSFListener implements HSSFListener { this.childListener = childListener; } + protected int getNumberOfCustomFormats() { + return customFormatRecords.size(); + } + protected int getNumberOfExtendedFormats() { + return xfRecords.size(); + } + /** * Process this record ourselves, and then * pass it on to our child listener diff --git a/src/scratchpad/src/org/apache/poi/hslf/extractor/PowerPointExtractor.java b/src/scratchpad/src/org/apache/poi/hslf/extractor/PowerPointExtractor.java index 95900a45ef..865471eefe 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/extractor/PowerPointExtractor.java +++ b/src/scratchpad/src/org/apache/poi/hslf/extractor/PowerPointExtractor.java @@ -176,11 +176,13 @@ public class PowerPointExtractor extends POIOLE2TextExtractor for(int i=0; i<_slides.length; i++) { Slide slide = _slides[i]; + // Slide header, if set HeadersFooters hf = slide.getHeadersFooters(); - if(hf != null && hf.getHeaderText() != null) { + if(hf != null && hf.isHeaderVisible() && hf.getHeaderText() != null) { ret.append(hf.getHeaderText() + "\n"); } + // Slide text TextRun[] runs = slide.getTextRuns(); for(int j=0; j 0) { for(int j=0; j4At59nih5Oic15rYiUsSl zV*^X9Sg<||HpJfhv%Dvo|M{LXn>%-Rc5j0Ed-?x9zrdV3d!~KooHJ+2-QD}ri!HWa zedpfqE6-m))kytO(@Zrn_>Cx@;$AmbY9L+U`j48L8kaqtA|Fy9*8lta|A7R4CyWj$ z5xPyI(3k>r-jqT*g=Q3Xp|C53-6-r%VGjy>QXmshEhx04uos0^6k1bgL!m8&b`;uE z*qg#W6gp7Ym%@G&I#P&G=tQA2g)S8Kr*Hs;11WT+(2c@D6uMLBL7^vwUKDy$IG92P zg-i-r6tXGgP{^f_N1+ded zu$02F6qZpqj>7R2mQy%^!if}4q7b7nmTD@ak`e0pLi()W5|mKKzcyqsu9>G&nMgXQ zQq@dZloBKQ-H@TT-1F7bDT7kzqLHwVq}D5_cheaMdRf1}mMS$Rjf%J!>QWjAi;feV zjY)G=B-I6^3G{t9Nns{q0;iJXU&itds<#`p?{)_mg7SI!PisbFvbr*|0AMI(4b%@$ zKDF=my{_#;UV{Oe{+gxJC~neN-PG~)7|{_V56hqb8+BIp4WV zJ2TybXo|Xz%e=*$O!7?cQ2una64FUkSxr+0krm9R+NP6r%pq^naB|E}Ng)sSAcRnh zbb-cM%t(7$awPU8EoqK-NJidP66=7(S|pWNtE4#&O`4-$k{l`I)f466MVdl$M0gI& zBH`Lkp*b;G9lIo{BbDaIWUZtpZKYXA9eXQyn3|Kg6`CR&rwm{VhBar>%=|RzwXL*3 zsc9+0$otHvnIn^CTcqt;o3?w(Nb->p3dQ7~7IUnW>zb)^r_##6Z6|r|G+HMhH~r5F z&n+lh*CH`dc2?g}4b5xQn$`B8l)ZKdq1`X79nDU(GUuJ%joLau@qGiDA?Eu1ZvWJ+t5X=uEAgpo|^ zC0OE@I<<4J&XhK-S9Dsh{nC2U@`n~e(|X0T9c{$HPso25Es@COnGF#DPg}x?H`l*^ zyuln=XVJ>4wn4YFZr?4+&6?$QSJz>+C_?T_l4-8iW68)2D%H1d#&%vFD)m!MgbdUD ztB!zArXc)(*NqRK$Mtyf2k}v>E&u<`{1h6fwSTE1XDsen4jXhz+EpxnKmXPM{>=gW z+XDDk1n_SU;Qup#zczq>b^t#JPf-1Lb3NF+B+BQ?0KVYy=NCMF{&fNM+!?^%5Ws&p zfPYp1|A7F0eevAG_0Wj+$VcpCPnUmTix!vcddaRT?PAW4%^}P4!kIH4>G()Tm3ANV z+mgHZsiw11A5jMWbM3Q-C>pX6^Jz~4K7k4?GA*_FSHFIw8W zc#0@W`*5ir8~Mck-opLD#+~`}DSwi`)<3Li(W1?+ZAibDbAB8Ixb2F5MemJiiNt)5 z9`|9rN0jo&p^00Mhu_NOze=;Y>Q^iO4m7(Y*pIe197J%to_f%)M;k?mx_{EIHna~K`!`e#c;WK)C#3gMCnWHZA(ak9TJc^Ma~MygG&$};%Z^lk z0c5FH0nBIhDu7LOy$WC}Sg!&wg?bf$ZtGP5gRWi$pp<$Qz%Z>>0r-b{6@a6xR{@O3 zdKJKsuU7$#)p`|xQ?FNnp7kxztG)$#*S7$zW$V|6{`D;|AfW)ppXmfrPDmf%@ftX+ zY*gztyaiIzwL8JU#3mp@fBs6c>rzQg|L{t3>QYHoc48%7Czwl>#I3~F9Y1s&*h>H5 z-N>)km;y`1?hpx2efvU9aR0j{RI)}ju~$;FIjj;K3CEGFDGfkU^W_=?$ps#D;(WO& zs}rdE_g@l#WXol>l{D2|Jn5v9YM@^HLG7r(I-dqMT1ye6prc2Gb3 z@PiLj|Ni}bpiG_%3OtR8z8?_qCeIJ*paf9=Jt08cHc+Ni{+y(|qY+;X#BIO_%5AJB zmQpJzf6uzt_6+uqKdVWvU%$S#64wSy(YlS9yt<3qJ1_?m3>lcPE7Db>4fuP3Z$`vu z&}zInNAIIcX=`zZ7#Pnm5Tdqy6`L6tt8lQVL=|R#D@+tZlp?Qn&|u<6sy^! zm24RiUP*_9O6bDY9k28Ej-D=csYJe043-HtiAlRtIui@e;7Z!orIIZp!YkP~p%S{V z%Ot##{p(VRe8(Ex9c*OkAQP;ugDauK&E%DA84+Fy9d8*kxi?vO2XT zeW^j4yR3`@BE2F5N=ix>R%WhBAE{PBbowtPZNHk`>9&Uqx?Lhdw?stfHii=VCto1T z3Oj|qlxdn)I`i$1zprVGIA$AK1ss602{hBf+f0_fna&~2$VP^nXCBI}e`Rl`mA9E(e>1&9 zn!$Fd5iPDrAL*outtjXl)IGX=z(Vyz$Y4_Ga39o3U70 zkC0|eOWQJHOZ8j!X7=_rW3jY@Lz*!yZOe#z-~G(q%s$>`ES8oX(u`?oTSn}7ZG*j; z4rnGX+|nY{OkN!P(whRXcAE@XVY0)-(;AE9s`blOM8I+9h5oS(LZZ zPM%6lE26Jl3P;*2-9KI_*^jr<13ZUJs@5wS&O&QgFKa*7NS&a#x?dz z4~$nzw&AU`m#0$G9_Yr&e?Dcev}?RlvIK9XnVw2b?JM=m#Y1eBrqeB>vK0a!%R8Rp}=u zR+!qRW>>mv6!+8M?!EaGi{CBSl&5%9isLM|0UR%J15M}_S|s8;BZb6ZUZp2oHA}c! zow_I8NTO0HZ~a^<3uD=a2^U~msAn_snHVPr({^wRl@SJP2$&sd|HRq2sLfQ=hb z(}U=yN4e>e5GdsB6>CCyyLs|9p$D`k4e(x}XVo-%1Q=~SkQZc(b> z6>*8ar4_9l9BWD?dV5MVt=Y|2BC)O3)Gi&~ILDUHFJ4$&Syr(uGQRZK%2nw@6RS$i zt!Yko(jH59Ou`}-vQ^*?*JY%M@dW2svJxC=xi$e4&_>scZl|I{o1tZ8WWIe9>rL6a zCXMb%#=W|U28?rZw=QbTt!oe39nijFSZVQ$ISXe+Xb0f|+Ne267B_uiM9d+evk0K< z9M~{u7Z|sZA!?*J+4mOgYLFADkqQVt-OV$a`B1*mDlvYv3eVI1eNEQm6K=m zR^HN5xp>Eb%4NZj%9ZDum6M0`xQRx4St^H@6pb}C#j-lJIjvX7O$?heYxaB!m60s) z`XutQ!OKtN<*ZKKg>Fr!lceDb%d5zYsuITanAjj$ttIp<6@WB)AI4*A0Kt zp){wv;wcgG3XE-!(LPFn-Zoa2E zc~ogtWkoSLERU;C=|HZ26jh9#R**fyRmmQSJv4p&;`Vn9eMh4Q3z=g~(NNA##G0b0 z$x$>)D)^3WRHZeSLecp4cXxUifHu^l$|@EV&ySD=Cpr;D_f)4R)Dz*S4B&Q}(K7_p z`lzzX(pBlx6Pr)ng@!4bucZFq;1fGN?ggEiyZ#j?-f^!lSFV4RE7!lu)#}t;>5&CG zVH;gl$;PtO(`aj|dNhmAZ!YHi19zQZE?~rw$d!vku3RK?1rORk)|kY;eOR3!*{OgQmVb3dNd`S0zK*SNs8K`B9S|Z zdlUtlS)4^xbIKRc$rl;@u(GO(X&G)L(~V@gk!&}T<3@7bNS+(%<3{q`NC7z{t~oQK zHkMf%%c_lK*T!;cW4X1lyxLfw+E{*VthSA;+BULk+sLYIBP*L^>-FS07b`* z9LG_TL$1>+ljBq;att0ZiVpP$4vS1In^RI6aVlsrGHY>UW?4mqq)Xp{P}1Py%3^N{ ztz3pIoe>!~Xjo+6{IZgHiz5fn@EbIER3uY>X6est{h6abbM@S) zfF-3B#j{GGyWyiEg`*>xxkfyX#?632u(L8FV+W0kCuL>Eld?QXS@EQ7Pf~U~DaVtP z6Hm&Gj2qV{ewmke*(c#L+XE~+4lLUPEISS?+XE~+4lLUPEISS?J2w$?c5W@m>^x6W zTy)ueJW27cW#@a6@@p&1@$@Sv-me@_zjEUJ%JK9oC*H3dPrq{F{mSw5D<|Hs98bS; z;{D3;^eZRcuN+Uma^n5U_4F$@-mhFwzjEXK%JuXsH{P#YPrq{G{mS+9D>vS+Tu;Ap zLxIw3z@d-G>|$|s=9isYKfG)Vh+uJaSF zvmy!A)5uMzp00B|`4j8UiWJa&a<$#3{FxbEMy8jMmB7gM79mDr5n}j?WP9sK#F>*Q zhrH}WInZ@}OTj&)7nbs_Sz`j{8_ zd(nfYR^(ugF*EERc_55Sb28+Dz|12 ztURZFm0Pn1R-RkG%B|T0E6=N6<<{(hmG`M%<<{(hmFL&5a%=W{dO+W`a9N#3x?!a} zZsg)fRr#!n;u&<{v2;%5>`38|?1Kjl$&S$8ba7}-b^K8sMHfBCKIKeq)1dV-0nqlE( zl3$U0qXvzSp!a@GmM>4XkCWr$s-H8P`!ik*u@l9z$&CV6iDnsrvylYCXOFEethjw z!1$q&%CETCElOKjBe<$$JsxJsn?L0kx1RYKqzN~g7H<+gAv8BZ&l@Xec=_cpG z;*xo#m65@77MB!P(8{n|IqiN%PG448dJr92Cd-hOEJJp(3^~a%OXdowv26B>UASa0ia*}9(PGUnPn3F^UIY~5-6A9NqP7)1}e8M$A8NxL{``^$W z(l$6rdbk(LO`?I^BpS#~qJi8b8putef!rh-$W5XFl25n>C_}ge^O9&FFNp^7l8gcR z3LsR2c}X;omqY`3Ni>j`L<4zN4IE1M2&njaB`=8@NJ!yopbX(^C`h7)f+T7vNTP;< zBx)!~qK1MbYA8sehJqw&D6py_u7QFi8X)Zq9*}y{ zSYcQ?+-X=k26I?C7Ik6in9#z~v8W46$AlG@jzwEoI$KF-2CS*}!bNmN7v3^!s~R|mHs>*}!da1F@1I;?#7 zAdq!+So!clAnWR|^5Ghgb#++zBpT4`>fjn=T^*Jlu0dH>hm{W>1G26TD<3`vWL+Ir zK70(wx;m_UxSP`J>aYrui~(6!2Uj5L>ag_iF(B*eu=3$!K-Se^<-^B-tgFMyhmQeS zSBI5PG6wXzI=BW|SBIsCj{#X%hm{W>1G26TD<3`vWL+IrK70(wx;m_U_!!Vj>aYru zi~(6v2Uj3V>ag_iF(6Cou=3$!K$g^D<-^B-EUClFhmQeSQiqjKG6t}uruR8G697M{{iOT(sGoF~udSat(cVv;Xz!;^wD(gd+WV;!Yx{}2 zBQeVK?RRuvzIkbW=hWJhG^n_|xMWV{GS5&PUl_@z`;%?`rQ1M|Xh*FR?WlEPEoxhv zcJ1hrcJ1iIf)KQM8DWWby-Kz8-G8tU=vLQ|#4rivg-IwcOhS2K63Vkni0;fFmF3wb zB#C|O64Hrw3F$<;gmj`^LORhdA)RQKkWREqNGIAQq!Ys=)F(_rbW5F0*-~wOn1twt zjgXRI63VwrD3|q_ZdAcHRUVEx*OQ&HRnoiahnoj6L)B7Yz&rgzG z5S~sGTxk3B{7-l~-4YpwpJux7^d$15`7XSC68X`r7hXP4e&U~L?h7a{=`{U?rw7VU zmk*SmP7joyPNxsM{B?Su{B(Mt{B(Mt{B(K}`O(Z6ijOA8@bo0|qbV}Hd=mN5L>W+C zrU{xW!_x!hr^^S*Pp1dUPp1dUPts}X48>OvC_i03P<}c+P<}c+iTr3L4ab*6el(wk zmro);npMNfV`2?RCtxzShNlP0PnQprpH2^ypH2^ypH8O_`}o)Cf%4Pof%4Pof%21d zns!6mr!nTDs@M$@x7^UI27c#Ds&m@|vs zw6kz>dQqR-vvod_-ZD0Mb{UPhmL(PNIg(8E(J=<{d# zET?Bgmli1XJ$*(FQR;GfdjCRtkHa3j(yzT9rquZad?S70iPald(bb$ zMwL2?p5eJ-0Of5#zal$Gsnh6jq>Ber8cAx;AxfP|q8U1rexQYJ+8r^B-uzFG%#0eY z)YEjNGWu|(o*_kzIYO!DNGW4SP`{wokxD&JHa20DQZJG*O&qP%OJtNs7E=3U9mkAO zY6Hn_+E}ITA$biRN4QBogU8b+$z|vSrPh)>hEG)LDw4x+68crt|05s7xlMo5&c3d^|yvTCp1^; zm16o8Tk7}5>C|89_cbM?OZq%(hEm)2BAu2}KS>T#W-4_D$zk9udOHTmq5Ev5VkC#I zbLbaaNe*4-(kIEG>pc1-Idq**pCpH_3+R*N&~+hwk{r60(I?3vublKta>!mJzbIRh z-bR&Bf80N6g8x$0lJwgt;C<9ll9T=;N#Q+e34hcJdVz@l4I*x)##G6tXUxb&EhJHX z14!?lZYuR*@F7S0UO&>iWbqQolG24fDfqH<@^LPv_mW&}bY|ekDe4O1U19Km;vC|g zWAM-r=}`aVY4e1iJl!>wG@}15qwY^8SZ|z9Msb5uH$6r_pZl3ouTh`owM$Xi87b}Ke^(>ktv3E$|AUP9)%4~>)JSi2p?_%#QkB2${o|i& z=tW6u;xKfM_yFrq(ui;OXvZn$M=-T6V4e+OVDCFhAj=emf^zvY{ULFv8dE^~@JP5>_kGzJD z2kZ0ZBX8p4L1x~3xoS&S(7jx>qbq0~SCFJbGFR#$bunE*x`l0ii8|_z zi@qZodF(ULA3g%j`jDvl;uE4p&md3!Gid`Hb!p`;M7I|2N%ZOEEr_0zx);%I=d~ib zr4V$(9c_tDx~v`1U!MY6L$ol$@$M)U>-lw5aKic= zg>eC#c$1!^s@I_Y$ab_FZ37Ik13pH)1oB)r>{FuZ7}PVYtTFXEJ+>>+uckI9x^7@g zq9fjbOjaz1d}ic<-hT(AH|)ChL}$MOy8Lv|f8GK)KiH4yOUS9FLjLXU+k#{bJXX#e#=nx0moEXQ`LUqiEd^c2@s&cCfuoKCE#i0~(`ruL&NRxL z?OZm4>Gn#E6JE|y@Uth@fgO%J`}AK%=$heI`@DC?H{k`?Nyi4hBzlye(~(AWo}z- ziF3>;<2nx8c9SmEjyTRwuUAiOHnTtcGUgxh8AM_Cc+Vf?**^+;DAPlj<{Okbu_!pP z!OS1V^l+v}Fn`kET2e7;~NFSr?qK`pXlm2?u*ImglY(dHxMJ>!SCV z*pjPvtaBW-zs9*+f;{`OBu)Di%!Yj`hw~WrSr>WM1*gY8u>y1Gms&)gyC>ij`!wb0 z!ztq^Hk8rwIQpA#Vr@tsQsdmig42|zSgCM$ya&ls$(a4?#yeK6j_Rs$?rFhk%G1Cp zekllN>`(h8k9}f2O)F516Fb(h@gAUeRcHH@k-ii5iIu)XFT5A~Y>@<~Po921|2Nqu z_8<2g-R)@bAOE!dtFEM);QZ}oLNSlK~j|#MV@(_UnJm{s`y(|Zl*n$79w$x zs??LKabg$lsDm}mwi>6%sxI=Bol>||Mb1I8HTkAY66J~W0opHWobBo)PpM60E@NLL zDRL7kGBIUndVna)-x%+f(IhqGX?f!0!cmzTXM2rPcBGxTHdD4{T=MuOY05`zLpU<- zgi0SxYNnc{x@nv^J)^yh#<_RBqVaX)f=abEJ0fr z%qAXx-0ZK^=E@T%7j$l*ady-=>*D9d#=_^#AirdeDH$~;m03VWCH&GG^kW5hW_f<< zF)24H<6q*HnPQFOo0bUm)O(7L-L{w4*}}sv(wh%EHZKpmBQFm-5ibv`elHIzY%dS1 zSuYPOM=!63g@+Z9Hy>6XULIz8FAuY-mxme5%foEp<-s$1dGLZ>9z2ehhtcijVI+BZ zuv#xK-@+@f@D8!?`dWC0T6l+9c>OHA{vICAp(4bibAF;&Pe=54lhH1o)TH8bO%E$$ zTYQkY{`1HE^R79MnyKzgfL({X{==AX=!ZE3XD5wQM!SsspxVTD$owj6HSq#6s?Cwl zalInpIW;CT>%b_Gm>h}AEGzZo>-hlV)S;jK5uBYh&dyvzkW_=@X|Ae8K4u>!?w?tO zZ&E2MQaw=Pgzs?Zw}S*{7md@Dq+f%=k(#r)N9L- z4O4Cb>p#<06IOm=)ly2N+DGdhe&3;AJQAD-*26wKv&MtQyV*O5i){V!G%eGVzsS?I zPs~M*g2#ei>Z);?`NQqgzuyzP@>{82+G3?5f4_aop4_!h%#ZX85R% zlB};hr5<-ZjXB$)UxpHS9<-D4l)n2VX^vmhZvErkl&Wi)@UE^rv5uhcS2WJ<3G(a^ zMb029-aza#T%M+cgRIfCXIGMF-JOrHwsF)TjkAZwX^wO$<)_l3cm~-;2T4`rBeFFm zY1*e>o{9bw>n(@YtD^Uw8mGHAsGmGdYm}avJ7npRj60JGU#OX1~kD-xW<_kD9;W%B~Q~UnoptFt zegzadu|u`K?r>Dpc~A_G$VqQk9v`Y-*bwUN`BWq zu}5{(NR2aB<1}-ct($Stoyb%A?zc&iq-mcbPxF*SELNzQKT)38H#_tzp5j0AEb8Sm0-zdTKjDH)MZqCBy4choqI zvu}cZ`pb%Jr5%N{BEA`u_U!IBn6FYZDP1HF1 zCCIZb_9-iW^SsWKp4f)S(42i_^qDh}8JAL0k2@b>=kD<1R@lGy*EmH!=DN$&muZ<| zMIsGzu8G2O5?1WS8C`53Qq>@)9G4S3O}VU++6rjBgmZj62sA&{IK#J|)Q6|z96w6! zde45b+xGIXv-R?@i}doaWApORH!lx65ibv`elHIzY%dS1SuYPOM=uYnG%pV;A}J`Z##=POFZg|{$?43a#lH@a@oahr8LKi%O&T0qCU6eaIK_L4#7r5Qanr+^^MqfLrab-qHKl4wTk3KBEPRKfU}3;H$RbbEQ=6@b zJY|j-pI8@pif>-I z=MalLO&OYTQ=WBMU72z-rE2nn<%zk-QSexh=TM7%nszSr_~j|%T_nKL(=uTh>i9rN zRm;$4pB4`wS~yh86Z0cIAE0p#(>Uup-c6hITcg=Kb0h}EO&fE^JLYUh6>FTsHBPZQ zu~M-^u~n1GI+91aDLt_?Q*K&TgCS43pEo9Va}Qw&Ghg4ADsh&!w&%mNJh6^&)O3yW zaEm-UbN#006plI4O&OZfGwo2MXZF+|_uH5&PpoYmRibeoVZmu4G~;3$K`UuNYf{1N zN9)(VP48H5(X(M1=ZHX@=17;gDOD4#-&Rd&`z360%(#?t_fc2_I;vFT92tnyl%&K( zo~HKw2u*pK_F&4;#3pgcDYdycu`YGgOpS9?0!~39auaHzHF28$(?8dn@-&hA5t=xq zlxv?@D?4hI#yL6xryrXir-@K%4oBs;&!EvHJ#ukk{Z3CRYMg~TiBojsmzAks!6RPI zq$W-?zx3DDJN6Wgnxk=!(Kto^l2b4UHFYYeq!sgAFZ|rZ+`G#BB^;qLugNYq@!SOa z97oO7ILB(7GNRi>;hBS|@HDm4T3(A{o4xT&YX9b_% zLvxxCXZeuMIj6kaLUZs`_rbqBGbZ+QN6kqm&ZGOha$|L~?wW(A5Qk^Hwq?qyOwHMa zI2X2l{I!&IIhuo~5Ys-W`u&uX^E78S;!J+$q#1{F$k!Y^h1h@G?MJ2M9ilmV5NGPO zA4m7RtUz<{6yhaE-ge*f<%elbbK+cZ(#+-^NA%a67Q|V#Ker=61!x229hXNXXCY%frr0_KxMUyox7tJ5QR-m zV4N?f=iPSFFQR$84}+ecZaMR~Ik2*|!^rUN&D9)O+4`%>m(2UPkLJM2R(1To$LmLn1x=v$3DElu zp8xcnueXVwC(t_u9QFRRv~w@(;BsJP=Ph~XyG?V%UMA4H1srwH`aOO)?v$vm8CG_E z*Ph?U?sYk^vST+adSc44E(cb2Ro_Sd_%f}ZE(I&gIwaEUw-3bbCeZr^9QDqt(H{%; z604s;?;N1EvPUeqX|vl4SlK@&cAeGjSs7sy6s+vCkxut>dL6`8hBFpNEhGvno7iBj z4Cg+MD$_WRY_K?S%HybVjdN0i#feiMM=jDgCpTD}IOTCv1yOjHDU9=)uP@!$qle64 zQ`oyaQ*h_$Kc6gf*cA3I+d6(bp+|{$mnjO~rD^&npMAece908{E?b=CU1vTdbJ!I2 zE@db6-aBiXc%UilU2b~hnBqsj7Ed;Xo&~4ptzUS&*@&8hcwA1Qr>@CIU-;7%XRehI zHibMl$+hDHxt|{+bJ!GmO9}bM$kh2$wD+GvZz`etP*?u+>KFUS3^9eh%Tw(iU$btE zjOHoqU8Zf=yzA#Li3gfOZ!Mv3zl!H~dinvG!=|uzx#j2^cg$-n{$>ijy@b5Nk2~gE z`fEMBO%hKwg}uuiHy?B24G*~p z;ax_5de+#1m&zPAh2Co7sBM!seLe6~nZu^AcPU6RxuAy)(h3hD+r*J)m8z|gJ;U)?F3L7bGqVOPvhbTNu;Smbe6dtAU7=_0v zJVD_}3QtkkOyOw?&ro=l!gCb1P|wAJgY26h5W!8HLX&d_mz$3SUw9n!+~} zzNPRTh3_f+K;cIU|EBO0g`X+>Lg7~m|Do_-3cpdAbZb){TfO9J2tkO8AHdvg;FwP|!=P?Zy=QPH-RO6i1AaUZG(8u$H$JXxJn#vYIR6)m-a8b}M^*hpgs`cr{mi{nyhb7t0>6h*xvB@4xJ} zZ=1+}IG2dlY)U79z}{y|oAMf9Epde_De`+t6UGg%cD@oH|@SEqlM z@sO_#A@!vp3Mr!o$vMnt2sJDdFsD!$!e~MS98lxY}e_~Yh*PC zPvI!o6SP;%+FNz;vv0TfV_%kfF>CM6_xAd7{4!aK7qj*zXJ9}??{CkZ znkJelX6^kDopHf|SBmzES$lKm4bIr(8#fPj`YqeWhJ5~tXs?*H_f)${o4?;jv{%g9 zi>w*F?=5GD_KI11_gueh^FdmB#jL%eTi?p<^o;bon6>x$p3fipz*!=jV%A=(Pj9^T z!w*Dz#jL%{H{7&wXcL!%wRpy`|86*|rD(61wRdgPeocC`6I~Uv_PYFI->0tY<#M3C zE1T@Ls$YAT1MLmk@6mHFY%JOeXJ zP3N(9>%yPb{QJa+t_M4*AG)0QnQkWXs?8|*LVBI=|e6R&soCSD|%)^&l7)?u~)*{TfThYl5K574<$VI zmX3J$qN(ddS0${y@@Ccj*FP)!;1bqet7E%fwO?Nuu_dg%gQBgrTzZXIN(qm>cUBx< zy6qL&2bZw+_&saqN)Jj{d%gd-x9hNT#B-Lg_GXnF@X6$>#cE4fdy}u-@0yo$#j;CS zdmlX#Z64_(x+-Dqy}4m*`bQUw{7P7R$Isd@VfadsdI@Xqk`G&-apidNiY2VQ86RKr zXuA_!4z#!Hz-1kWc6B+>-uj>JOWS^==&FRZcXFp&jymi&w{@JdO}lhN>vJA<5kh+h zP8`zZs?}~UpuN+&3|qfdpXHXY_BLI9Xld@dGWM`eq7!nW*k8AC8VZ$t5Y}!E zy{lNPtdw!~Xgz-X@0W|_OWDfyIc@*DkNc$^kK|IevTHwWv$5sXVr8XlWiOn)*R-!^ zi;pN}D|_U-!&iN}Q9OJpTiKdzPyV*(H?gu(wz3Bsw`|q_O7Rh;Y-M~#UMfDKl&x%^ z9}oFpZ}PLE`BJvBPd|LCF!MI?@TF{JBl?^pt8#4 zz{)z0>z6j+NS6aEyY~4-3-@|KthJP_EPe5&OMW|4?5>o3#L$T+wm;`;7a^=HGkQ(4 zR!_RUfR(*?<#Vs@|B;NaQns>f`>lvA*FFNPY|O4fIb-Ffr^N%! zW$$uM>)cEKF-APuT=p(iE8jSE_(8IMoXg(jl=CLubKNB}!sfDf;nn~3GKbA&?{d}i zH^2DWUE=-cvUi!$|Lpa{vSfys%id+qj>mcoPZeJ>m%Ym&tMexOa=(o4x$Ir`|6%Ik zQ~x1eVJ>@@bFN-9`^eTZKh0(Dvf_x%Yi4b5Iq)uh3YNceX1>dTcRBsn(|aA3CB9@X zdzY1`(${UH#JA05@3QUIo-a?n%S8z9GNJX}XOv#$_5$7|_n3{tcl$!tk8|0(d~w@X zr#yO^%wgDHJA7P-1sk9J_+`_+7B5)NUhvEp*A~@0DPFLgy;+G{=C0zA-;4h!XD_&Q z_z9EWx=DOYIeWn~9=LAqrWWFd%GnFfTybC1PTj;Wma`Xp^ofqn+C{R)DrYZv;+RwZ z7^rv1;msmw3~1_JZ9u_TI7m zCAW2~c;x8Gis;`SZimt&!L|6Sq*aoXqb zmqXCrBG%qNB25q2(n_?qh_#o!5 zdGz&hS4j^RvG(r!`uJC;y(rpS#M;Yv^VmC{d{+9sh_$yaxBnln=ow-WYcJOA(#*zh zi>?;2_Ab8og5ySiFY;T&+WYRk2lKxlBidWU+UweTbC2eYMKg<7dsVC3rA_STa-hA& z3o3rS?iZQE7V!xdzoL5&(cU7~-WN-LzNqPGqP;~thaLF-!2KR=;kJ%BEc>@Zhb()= z?FF>A>)_GPUiXL0VT*VUTl)qrFo&33fA5!`_?o* zCDNYvHx;bCO)qa=9<3JbRj~Fl_Pp$ePM6BKs$lKi+2*R$q7I_Z3fA7I6{lXk$CskL z3fA7XNrmk$yda`$#u>;TL$4on!z|g~RIv75yn43@nZ;Q;557(Q@zDGG&O2T9Hx;bC zf*FlIpMJaS3@TWAX}4e8H@j41Q^DHfJ4((F`Bkv??#$ZzKM&q3`mA8>6}Ne-;Q22^ zdljs`)1SO?-q%Nnt}0l2dlgOkWBF+=2ip5?+nADpQ(O+l-omSUw7BtE(Ov~>@6D!@ z+l-hYYmy4q-l^9gFmXszw{>Xm^v7SRKL2937tr1}%lqdZqy0_=Ywv=MYft$2KXL|w z6Lg2aki`mQvG(wCH=W#Z*D8t~b#sFXNAh%MzTAJ9%ke%;;-`_@L9gFB*{oTAzva<9w5eRpMV95F7fom&siNw-|__&sku-b|N*m6i0E zJ!Sf7Vw;t0WjhxA_VH>*EV`0?#Ehz2KD};eD_sirEYvjl`nAnJx*XiIaQ-b9Or3L6 z8=VJtM3p^sebdH{c)Ciqva`#&Ex-3+HxJH9_o!|%_>3cDJXNxljXM7D7tVZlZ(R@W zS(v}ej3sTp-bZs_W$%CU&v%!k?5jDjvY&b_-q>@Zn+NwSO#R^LMi-ps)&md!LE82I z+PJ&h7OZU9q#JXeKi)+ME8D)N#rlU@xc!2MZ!>1E6Z#$AoKM>D{fon2_d|PCti7cx z{&h;*6GVGeti5+;tFn`y5UE$OkNA4e3*Y|v1kqj<`-t7k2i)89D$!LH`-pujo1MPx zF_#1Fy}oEi;he#4J<#5i7P&8fTCxlGyNW&h7il>y^8P8>t77eC#J;fsp9#$^!+dAP5q*S?gjgZ z9cMoKk6bqov^V9oRp(X2+Gfk7a_EF`O)W`T=kCI zcWCdlr4O9(ZJKBg-;~ikczWzDVeOs!)#1+#TPxaI!rE)GXmR)U+ePY2SbHOAoAuS% zqP-=oy_)Cg2uqK>C9J*MUcEbV;eDdLCG6qzKHYxVOZ&U^KzsWw=x}G78X0>_SbM#W zefh|h7mN0mu=Z*$`23~MCrb~Ou=ZAz&i`!YXwlUY*52wvQbw-$-Q_@gsaI|&pFBY{ zvxK$xM3?V>s2nA-S;E@;=8iMB99`|^f%dL#@~@2LGemn!SbHlj?=+#+w<7f=ti8^o z$K(H_3jBrl`2x0JQ_^Ec=Ja`Q!^y``+Z ztj|`wG~f-9`cl^3)**+!`TRMey``+Z*hy=KZW4`}TzW$kr1=&1d_e#*@Q?M<9f8ErXJB)XKf zH}R(*`i}fWq`p+Nx8v+}nIDQ~ma_JCKj*=Jp81n#Zz*f9bAIm+uOH&(f%Xo}8Q$}t z)7^TYy}LA+m+%cHS*ymm zjBzSDZN=Kbq!~VrnQA`AV8*k#lyD>-PR+6s&y31xJie==HGsx>oW?0Dopf$RG5xMT zkP8)#ta>_gsyr>x+ZUJK36*xuHPIoQzYkO4n^ffBJ~xbSr5wHy4!=@#yvErf`VgH( zAJ1ctGH^{Mx&xVGwr|QThf{?L3PHpxF#U|2JfUGyS;OUVS@-Q__|}DXbwpv6%Qd

SQ@A`uZt}dYSb|AK!eXJW-tqkcJ@Y{nR(VpbJYkh5X{$7)XzE;$noseFT>aFP zvGmN8v>BJ2tw@TvqwA~#a7Wj}De}*L#}>Hw=YG2Pa$TwK?ZO>hG3uZ9E+Bjp;N_iS z;hk#X;oQ_)_B0C*=YigQID7N*aL(oBooV5nW#OG|;bB+ht?yh54=X@#KCCOeJj_;J z9%cqF4_?^ITW#UN&v^4)WZ_}_c=N$ly}U~;yvr=S%PqVsEW9-q-dYRqN(=8Q4-a>A z#fV4qGEw{jT}+QM89yqT%409aD>BSb57DY1#w%wkz@A5Zg^VI>9ABUrf{U(agBtubHW4Txx5sKMauX^!MI)jkSMTs@4&R0koGTLaZpugGW=c=` zBA(rkQ_z~Nn>HzyDbz$Or39zc>^`vxPfO3HX}zD8AWxB=iPnt&9XNyK3GYvLvT2m?NK&u~m7JoTM0sLHq9^Gz&eJtc*M_lTF|nC($s=e@ zdluw=D((7d=O|h+sg#vE-8B_vN!qgzg?*l(ahiC{F>c2FIHi8GMKdna_EQtNnLiOH zW^RWcT>;KB>n%^I%|vLnYoZcu22sgrmX$hPd15u;@Z&YWdDdSbPZP5#9}|N=ZswF4 z66J{%4xQ0xy`Qadf``9`KxHS2RhOf#BMNz*lORtSBYLi6%$7McfG?J8&a*0tUJKu} zf03Jv_Z-e6bE|ONH-BR#NcZ$SDzl=&(*XWUO()GNF)hRs% zOcZ;Q^B8AJyOn%edLEx~U49w?j<5gbz4Z3eLzZ&STD69FNQfzq$xC%6Xy-5SL%mF04S@{3Yv2 zCo|`G&~?XxRv!nN&-`I$BK{roW1MH@5^xHcN}lbrwLG!Qp>NHJ0_O#SGvzVl-*gvf zyBk2uuLM1ZHFw^1h_85%Xsq+IM62(56|~>$M57-e9_z#Lhu;9_zfAkSjrc9^5sh5+ zKGCAbKScZp#MPwjM5CFYv5%3by7OCzKlhTxiJh0jk3s_HD#jT*|2fK|hE;=3y&rVt zji6iCgRZ-mXzU#zjJ@?5=pX2v3wkGcoXWhw+;l~dUU-1#q?cF{l zS~LLh>QUfV_Xmxf!SO<%jV*XX`xojF&q#;=4;2Aq5YM;`bQs&}IsZhwd=t^wq%EM|L;KZRS>uy{xw;SJ zsm4H(DhmA3zKpyJ%kxuUD4GI1>I>F;b4WPWg{3+c@$J7Ozq;DhJ9hH)HVZA!iy3FM z1Upn)fNfn@w6g9J!yTY&Ayt+31kujra;4Ws7+{9>MgK=Q$@VDta;G5S<0j z5PcJz>Sw^Ip2_@eY;|{_2DQ0bwD^GPd)%&UuVv<_pA+Zp8SCE@BLWx!o+*(R%h^*RY+eWnDByJT?h_Oyz*aZspWA zoPWn=jT5IZ4nKws`@BqWu4aud=kb2-ov5J+W9xlA;uVZ`F;Zjm8CxpqujY1D8y@w8 zVFR%*VVP<+==L`;zKSNXeXfW0i|&GE*KGx-sD^1N+v=mBkvTjbD__$%af;yZqvF7M zx!7k4B%pqO40ID~w&X6vH?pqP2E-SjFVPQJcR#SVY{6q^KcFhwj8@it0?UlH1>N2r ztrt!I1o5NTCJ)1SS0@5(v^{9#640Vtq^iw89&Pom#);D^haYDL&MQQoE7<>RzXthZ zt3e|xL06s$I-lb!u15SM#{2`z_AB^@*na3;?A*sepL-H{Za`dR!9rrcp?9(Eu-Mo| zu#nh8>|1VP&KkC#@0mWx7IoQ!8YfQB9Dd{;IM)cy>v%*jWa-_^8b6USce|2mRx3FE zJln%sU{jkI&#f3u%HjHt=h5^&T31hUJcp5Ng&$Klvc-N63smi20$mCkd;3Mu7eLjK zOxHc3apDw#-UmYzIM)i!aStP>%$iNx&I9qdE{45}Uwt{Seqm^)Ikwbpwy4ADLdr9(Xslq7KNf7Cx(S;uOK*R~G>1 zm5eiXD$C^hjmX)DE%ULP5dVnjY0SBn?Y0f;NbH%%b#xe8Y>esiJeE5%%>;(n6Y#Xv zm%);w*YJFLJvgzWG49lV5m&=t;jv#i|EaHNoH#{r`1K0Fd6mfXe3sJ4dr+z$%X1}L zV{evc8j$O!h6?;Rm8inX(Mk9gJri5XR1bpQx$;s_L(q zp3MlK09BhQT=lYPK;A}Qyo#@yr#k8 zgzs?pwKc$b?M~vXi>_6attgb*>JfRupE>%~Iv1=d;&g&C!21!!* zCR$UTeyN(WHKk|9O)c2uiMfd0OsM5~L%r=&(3-R^cIfIf%wpX-#Xd1V(t1JTys_T$ zG^J`H^h-EM&Ote)w(t52PR!Z#W>AguroRAZP`h>KoBefhVjbb|E3;sqH`hb&u3o}) zXSNuQ)6D5g5;eOxv9@vewO+t^OFeL+9RBJ`&3*;NZMBKsvEFj{)nmZ<&%Y6;4MSb} zC^)eOq-TJL0_Uw7XSXP7=*%?2w1bcC&m76gr@i{_!Yt+sm2WYG<}%-;c?QRfOP(A~ zb?+a;y42xUxB=&F8mF`?NCctjpM@g`1;Zg+=V46ygUb1MY#_%6Fdf9H4$~pb5jvRT zLOD-Naz;6)`zxJTD?9v}IpDlqjTa^>w#0GD%uzM`|VKBitP#JLk&D^A*!#zF>y-S480D)K8NlI*Ydne;}nex68~yJ zIGwqE(Y_!QJf`^PbrKfu|L2jQZpqedBk6d#>FVJm~ry35wv=sL!K2U3cqSG|i@dJT678?w*M6oiz4Vs)}mWVyM z!!J~YC2kC{#Et($lsNNo_?53fxhVwYrvD*IoI<%MThi`a?9d(0qU#6$7JPN{I@pIh z{L);^E)Tgr}E*a?q=$x zbOLfCeY>=dKCdT=G@Qy;Q-8fDzSui^d5>9mk6U<8Sa?rbcu!e)n=L%7m%Uh?vGA}C z^yYic!o&K;o9}rG5A(P;A7)K2?&4!;~9IG=2=IN|r{7bUdbpK7o;F&8=f zBLk4<<_3!s^CSIghL-2k4HhTnY=?iW0rGsN!Q#X^g6=oc@_e?z;>6m9-f5z7KG$Gz zV!cIgQPDWJG+3Ni13KzMjq`bpb8^%nPQ#$GkHWgt;U77{IC`PM$`fm4M}4g2`C@~` ziS@g~KNJIbzSLm#jy;9LKV}1*FE?0uVxL3rJ<)o9rNQFF-pk=11%f>P)nN6G{h-4? zTm+o2HduLLkLvJ`D*@+g4HhSMn)DlwM1k}52CH}MK*4W^yVQg&$k+^JaIPU@QOGm&yBG= z^zyJ1^YXCk@$x>h@UWWq=KI9L`_#h2iqKp3a|`ba3-3z{4>P#8zOOAj%uL>V-&%O^ zxZZry#HEwzgc)YEWF<>ygw|w8V?WW z1-*6!QGc#mSQ4yGfOKFP7Z(Bvhm-sdC?=NLcO_l6$V?em{{+XRcGI?!jn%?29ael6G3I;zFRC3Rl#KkJ4b-#s3PO%3Qp;(Kgn)YM%SMEl0 z-_?T^1j#o=Tq0(!qSz2-X3+>2#r-DTILM6XY!611|zSJhN6~0-6d%qx7 zHS`V>jq^*5Q*sJ6#rksZH3BL#E_tM1X8qE7H!drD6Q{_^Of_4SI^EGEddEtO-WIKK zex-3rzeJLPQ>ZCtv+p7$so%t7@+EFyjtw+=A*p76-L?cLR)6#>mKx{R2{=V2QiHT^ z>dTCq^$S|Re1tDl>dZHAir)Pr%YDZkR-}$f(>T9Luus7$7|byx2!$_HIA$K? zBFF`yS%Z|4oRY_E(X~&klIfQUyN3@TP?=Ja!PDwi^?TIb~YP3!XK zai34Y%AJ14K;!&Q<23V2Tc+GZ8fG4|T?;<|r$48kN3f#4LPUS;2`t zCjF+0#`$YK^e(d1^-~@A3)6K_s_=uU;KXT%qxRG||Fe@g{b++wNluf7=XCuNPGB6> zT;u$2J#b1}L8HLmx?js??{qvG*ND{M;>1qVQ7tsi-|B(WttYPWaE^&ea{4*88bt3n zsiNO%*Eo0lEjWYl1o0Em3Qp`a9krLn`FkKvQ@@Gzc;#ufZpNjQ$&t9pvDGX%vD0)^ zD~)sd1X`&4-EAPiSF5v|Knj~++ zanI}%KXHOj9rT?JV|VC1F~&~J%fqh6%fk-C%fo8k%frgq%fl+w%fpJ$%fsr+%fm{? z%fqU|%fk%rjW7T!J3oq&c-{5GqL74DnAC36I9CNyWG%3H&h(v>r-?!0T0Y#a zVDRVhbNsz_-`|8e+fkSSAkSv?mnW5WN3n^}#Go)ik6Fr%%Q(V1!ch^8bC-I{ z)5H+emYK(G-9Fa*$X)xy+Qw0xG|pWUxQT-ttVWGu|(MyM9jHdL%fp26R*xjdS+|oEihAawKe1-+Q54if6_m&1+mH)Rtd$*gfX2CJ0?r^A24OQ> z43FFJpkKC9f)nd^`W;D)v-wWy-By24yK%mt^_MmIuK&cI!cko{&K3zc!{up8)t}RB z-JerZ!%ImX_j^$6a~#!8<7`L87CFAGjt707pE zCY5jU{HS#6(YStt^3;tl_KE$Vqq=LHt#(rH{uV_V8Z)(EA0yzK*66RtU58+g>Zl$X zXX_+5&2|Mz5FUT34Fls0=!NzP^tKP|H?h-nR8NhwO%j}D>j?;>@fO4L_|eL`&PC;w zygR>Rr%AtNt8unXz-f_Q03J(Dsx?^Gezd_HktcSVj_R#(woAb2myDld)^E;SCco}+ zo2?2?>@*#9u*TWmg41l>#A(in!mkS+Gp8AsvS$5mTySEiNxvVgaqexw>E^dvpoz_& z(@gcp&HNf?)N3uSePXBSs7#G>AB|I&q7?kasqB3HEhfm8+tTC07dOj>=W%U7^_J_pP_yP2>{SEmE!ScsJ#i zfZ537qKfOztw(TTr|GC1jdQ=9#A&wf*6(f6P&kwf&H@}?Y|5bP5W5?<}BkpA3VJGIzhh2}ChaHBOht<57hn2IJ zhgGVVhZUihht-#thn0?(hgF4_hZ)?3)WSQ=!s}<@_4n|wu7dqJ3cbPkPQ)_a%(3M6 zL_vPX9WCq~0!E#gCpa#C0b{~ZkT7s|(l}+z*M*w?!pv{>&WxLRBp!@VJfPsjICT`X z4xF7W^7Pl7z%gWHwrj@yI8Ba;Gofa}g+IXw-{B}&B5-!G;1r2P7?0VyS*O`nc)TvY zH8GFiggMh9^2pP+ZM*Cr}69*)XP_1m_Y8XOm#@Uf1ctR5Fg>#Qf+ecw6A?rg8eq`sHSFBPfEdG zU8$f7!ff*Wb(%d&v{=E3bp-tuk;d6Q0cTLV{#L><1m!nNnK%>k3r?(U95q1W>=B4F zv25Jlg4#0M^~dXD$$}H>Ek_O1ID01GG%*C>^kXnNems7TXgN{WaXGl>P*?*xYLLd+ z%YxI7ur8bgwA4cFo{HmALr@;!yFC(lVqNN}!5U}pzYM2|ME5HiN9#vu<~LJad19^X zC`aQwSmV?^;=Y@4-J*}5SaTeY$i&pC#9dj%a|YGm;>7yhQA0G&42wL2YlycZ?bfID zcv-U-wzfp?*i$%asK%M;;*7@Y5gAGiraUDst(e~po8K0je1Bg|j>JuAyQzW``y59N z(>SwSoW!e-hxgo|fFdoM=~*Eq8i?9ARWVjEhuFj>N-Dx%mYr_JfW( zT;t5K;0#2_GIwi>+sR+caldE69@SAtXq>r!nchvb(o>ToalZuoe0RKKr|GB>8fV^L zhBF*P5N6>gdH~TocAAbFsd4s6(7Uwd?_&ans8{2DtMhYAoXJuJCw7{S8l`dO*IS-u zi$U>lBxWheY36tB6FW^ujn+5|667g0BuJ0)di<47o@Tq@aq$BtD#>qpUDrOb({xm! z#(7A+QMXtwL`Mg2K~6FW^ujng;}tB2mrUYPN^^vjP{N}2Vzalwh5rlZDd zoc-#7GaQeZ>bB_fVAQg^ehxzJo-bji>8J@BXa5Afn{5TfE%is)ConZV_RiYFUwe*^ z9jo_@cz}h6otQTtc0FDmb{JkBR`XsSR?c1?R;gYdR)k(2R$pEoRytlDRux_zW^gYL zv!$1ZnaRt;Ea2tA<9d1UZeAWdiI;~_>*ZmDczLi!FK?oSccg_k$-y$!YkT7r#&^Y~g>cY{x zAgV8Mtxy-_X8nnh5kHG@>L_R(I0stfY1UwgN8_jx>yPs-rHsCqrTjf|{VaS({JHx< z^^m7oe>jq$R6i8v-orOgM)F3+)PU4+&dgK5>BCp>P-Dm-UUY9dbf{rGeDL;fL|G#nrKbg`fG4=iaarA$Dg|&zLPl37V8rCqY5r1II)h1KX-q4BF-q}6I7?$ z-*}!s&oS4FZf$}SYn%9U_eW@)@;!=KDyYA1ZGRE*BW;__J;KZ3n{CVZce>=`#JVDkgIB^aWe_nY?gT;xnq4@L4NBspj{n`}H&Qg&l z&a2|jD?A?O7DVd!2bQOd^3I#_1AkwTx{V@xA00Vycrf=sf9Pw z!kcB`&9?C7Sa@?Sym=Phd<$=Zg}2bcE3@#*Exbh*UWJ9X*utx{@Tx4lB^KUN3-4G9 zZ<&R6oP~G1g}2@WV@eNnx~n>kMWe!)zwZ``d-`~t>A{JHz$ zdgF9!i;sWd2r4sG$D{F_;mF;xf)nF3{@nfaKZVn+IgTWV6VwYoa`*fZz9atJeaZjV z-uu9LHEn<6yCj2TXe1sD#u|x*-`PNfIR?_6@q2on=bP7AR`0XV-tWEE+H3E#XP>6Z zc#>hXUB^&abr&VwcLT_0@$c^YS20g=&@#$=S9j@mB4^OV%(qm{VDw8p(7}s~T?z1rMiTN@9-TfdBPv5f@ z*=JYnmVb6v<;fFscKo~hE2@BJv|nVhD?a76_YqOUmwX6YvuTN_d^{|U-@`#9)>a8)qIla`e#?k z$|U0CiS>K@yZgf3=9yS$W!dh|Q{;(viuiZ;*Zhfo_jo~C-t~M+o_NoRe|LZFpTcub z8L}7TiFdE~clX1pfG2%QZk6%xu1b<8-Us8~D-Yjoo|*|;)a@qI^-~q=VgAHBYW#cU z>-LbRX1KdLc_x2~_QZR0{CnjQRlsvs?Uo-qyDCqfc$bfVul$$Y=9%0M<@vB=)XPzv zCr|nBQPhu-C-xWO-z$&&6M04%YD?<7nt2$X*z<^guYCRguRO^oDmDL*C-!0D-z(qn zhj?n6=(aQ-Wkp1n(a(lFu{RX|Uirp9#4{NOjYs(;L&B#RpV+U8f3G~M%6MvUZZZ?TLN8`1i`A6M4q|cq^zu+qNRQ||0~JyX6+vUuB5ylVIHi=@Bh_wjG>V7Gd(+dSA94|cl;8|%UD@L=OS z*qt71ya&6>gH7;YcYCmj9_$_uHpzqC>%s2xV3R%A6c2X42b=1_9`In(JlKOC>>&^K zum_v&!5;Bok9x4j%3;{YNBqUVyD!@7##=aVVNAroyT4@*c_wBYf6j`QsZ1^ld19Q# zzq`M64|!Iu#qyc1a!)bOB6q~UyT7dpcr@9O(9`W<;c{@wl9-L_}Ny{L-2<$&zq`My3V0@ZO=rSA)5#O-t@wBM6RLoxw(TG1 z9F8Nb0ps7@-@V&BwU3-0i`y;AnMmdNhdi+^jemDPakqJDCR(qUNo7igW$1UTmE+&t z-%|xVHN&v2xP|rIiuLeW^2GW*{@wkg-R8-*Sf|#*R=`l}mEoq#gnq|6Mf|(_dv}|s z=8#OU4F6=$hCK0}6aVi1zAEFHXcNCxlXKJM>36()#lO3s?0D|31$24MFshSVvhtdF z_$+zieK7vL@{}sDXEF|9yK!4-B)LwWct?$YuY7+M@YFV`3Y|Rh-W>m4dFo!v6YuhY z!6|ZlSN#BamRuYY@5K5+nhUIcj+H$iODNBUo_>i%dP5pM)yL{qmh^=lyU0qbvwWF- z%3KP($m*1_{`Og0PgwzUVM2Rie<3h9MGl_RoIN|+@*S)^#md0SldWtGS=7nuwq(&6 z(8-_uDzbfv**+HK+w!)jCFj|v&W4QjvUqokP?JFnJbPo-ykq))}L%P6JQgEuyb!AL~=o z6L*~?PfC`tY#E0I)}Avg^Af9@xRxj%Bcw)aQFgQgHp3|K@ZTu9`vy8)B z%b|^xCqWihok*Dn)8J1Y2#FiI7 za=c?-FR-U?!Shkav$^Hd#L9+NW<(@$mT9WWQ*ULF7D}>C-i?-_r&yjPDKi~U>@^1F z5@*lH9M49!eo8VVDSRluHDs!O@u^0_vntQy&yb#$-^YL4gZkJ-da%EFuvs4L?;dQn2Yb?kJ(Y-w-{hBk8uvEu>oB?M%5}J0_2fE2t|R3-O0N2H9W7S_ zxsH)5U9My0%8=_gxf;rKyj+dsYAjb1xlWL)sa(zEYA)A_at1M{)RVI%Pt37_ zx!m#mo8!r+D79_buCBSAjbyHlDD@kS*6k|SQ1VTOl4V$rMp&|qi%-n^ff?j@&T>3y zdGe&)Xi4fi+I27JU#@A%nFu*V`Do^vzsB1+o>+?n<_gF2?~W&#kQHN6ds#=R#%XOG zUD0@B8I5b5?dtl&yoB{pV6JpLXFHy>p3Xu#JL$ZtdqECFG@oRV$ujJz_KWscLuXH{ z*#dKwYvmzd~D$7K&T%}+jdLZXMrc)yXy#E}#|H0G>K;+olJ$r4Cf0y~8R~dGoxn3J36Il~ zTC#e(-!tn08=4$L)<=QEBcpQ6n+pyblIugyXp&!Jbh* z(Rx_FWyp%UTWpb1=M5q{ zT9Wl8IV}7kYTIb+Tgpx=ymv87#WGX3pU%lzEA(Qh@qEGY)O^TROV*&HG}^A7t*A3Xbd(a&J)*8< znCGz%6PQts=ZlUf{l(U!lJ#gWGoo}{(VKiHqBn`?Xrxa6@>v}TVQsW0_J#s;ljHf4 z<4F#*19|E`5=l08H2)}vXvDHSSyAUxp-0FQ`&EG%?RYNo*fS%BF{r&vgi>3ZHESkp zoj6;k#fVetv7@ccyW!6ru!k0yn;p-W9Z%NGIHV2YcOvE%9Lg@?c9n z*c%>fnFo8*gT3X!{_Vk*d$6}X*a{E!jt49CVDEac_dMA99&Dut`@n;(@?al&u+<*y zBM-L5gMIA5)_Sl{JlHx9_Gvi`?|X>9z}zYld7;FOH~ogM-`R@J zqlmiBcf_MvJ6c0Ho;e?2Oa$gO$MaRkQ@5yB0IZ*gZY!)4z0f*Y5s7lvt?1f_GgpS| zRE*QWjBz|)b3B>9bc=k72s4Y${>+aRXU}jRLSI-zGz&A^5~mE;f5;tyx!v)6J;9!2 zMeC83?lt>Di)qemOSedd(V2;e?jyNz<;}h{b@LYTSzyLGo=Y6hFc+imG8%6Xe*y+~IisE5Yv>v3R^uk0Ru+d!g;DTV&t0$8~>0 z>!C&cRJd<~ydRixj^|R3-^q<0*M4VIuue+ahb=~RmeF@LAL8@{?H|_6@s7DDFn2nh zZ#bTM1X0(Pq{Xxcwcm;BDAf@dja4#a4LYjBI>{6BV_?QRp39QPC)rYxiT0Yd74@h+ ziLiAYv6>sp=o-TK#GDeOKF-%yq2lzEG#sJ=JA&RD_nHJ+Y1m z%ml~tEyq)PO?yP!LBI3xeM$eUC_9D`5k-hs<}S-*xx9q6Ok8+5zWxsUqq6nV~d1Ad4n2C<(a>tW?p$GLiVhm6cXBkG6_AHU;T_RetWVD8` z4E>HZU|{ZXJl}RaS%!RcH0rsYWyqGTP}gkr-RKzMQ;bPH>gmUjIeB7T8kk9r=L*M@ zF{vXw%8E5J23T_x(R)uiPN>tftbw{l!ssGTtd#?EujBcS<4J~^8?CAl>e?EtnUX!# zS%^4CpXSWSkIJw%^2GW*F!wp0rH&_A)r(=wQtCA)bsYoLb%fC4j2s;g8qqp?O+@42 zx(@FYftl=hzUz2u4rCSONmjZfb+Tf+^a~?X$0zSnhH)65*>xX7o_Nm*%oNA-J;#&r zrbh(pWDVLrY=s=OucPsxV}SKj(!caO5v_;s`FQsV%>9n%`;I4DAqQ2>;8uEiT$cTz8fIVwT>sb={Tg$xnAS+9r;t|v)XsGIVJn3$0K!)$LLdGUcw$) zU>B)zuFGG z%aZgL^NG$sTu1p|W{Lehte>~Xd9&Eh_`@(~5@L*qhu#Fz zda%tN>^l#(#e;qC!G7>yKYFmO9_+s!Y?}xB$%Ae8U_X1XUp&~a9_%*{_PYn$;lXy6 z!?2H!_zTQmMItYhx$%~5vz1=uaD;Ho>(Rn8EdS?7&RZB0fqBC5{LJwLhCh3QBu|Xf zz|3?!|KoTvb1{?Z49+aiOii3wjOBH%)H-dhGn)1keH3O@SccDrIg~t+I|B1J$MbW? zlMLx!>YAHosAmNo51J=+=6$kCHV5drB-F_h`7AKA9MAQRC+!xUO}PTdh@sb%+QPa= zdd?uO*EH0189l$U&ah_kM2-#2-yP2{98Yr4Jh?I;PvUHah^|@pg01Tw>5|Fr5@*S9 zy@I?SnAwi!hJ^U!oJT(4Q?MlKp-mV?dS0iOb&P3`vpjvOB_o#W29{y#;W_|wQDB~Q zJikofNrvv<#_70v?VoXZB@-m+gZnkwmCTv z(dG5(ifqH5FJc`Lm^sd#Upt<5M&ppy(;Rd(>e!$jmZaaY-U`fI$8(e8$;`uClokUMtrKCH z411SSBkU1z#o_MX&73`= z4Bw-$E)C2)XV1-!Cw)!-vIdSCwxTUVobk`6D5E2nIDM+i=&`SLmI;6UjkR)Mo^?FG zb37Sud2(7XL)*G zBec2pCUxyi?GbGO+Jus2LcimkA~64SJikxMlT0*cBIHSKTIz8`TyxVU$&-lI!!ood z-g5%8!14Scfu|lp73-{1mkC>e$MxMPo(u_VBTu}01?D-&^GC;1k7BKBAL%h$c|Gd= ziji==g!jR~EOb1#I-b!!hP{J*v>q*4)d=m0chtZa>WQ%7m#^=Mmv452--Hx!tc9nW7K&)uzA$8$108ohdcO!icGZVdZX zft(xX{?c!bXVpd5ACFtw6MJZZdBySk-SN~bkjm(l8F9N?CTy2Hv9A}{)3;bB@9@ND zM$A8&^f*fHH9V_5&XSe!co=)+iM__ayz1<^GpXOB)?jR~7Zs1PutjjDUU7Ne4ee94 z`}n4MbRWN(2dnPE_VHjfJlMV-tfmLs&x56Su>C#Q0Uqo?4_3>A9pu4kd$5B&SgHp* z#Dg8`!RmOhG!J%|2dnGB4)_`uGln1Nt!H)J|4LsN}1C z__weyDx#ySVnpZVaGdzFNwT}T2Cav`&k189FgQgHp4A*r)~3rR(^)dvI8T-lqImLr z!Tg1B8W@}+2hZw`XPAp&lmFd1c_McN2B*lub03f2Y01j?Jz6H27c|bNG?J*3C-PZf zaEcr}YdD^XC1KTy5qf`jCF|roFWI$ zgB;Ift!tji%2XcDh;gLESw)eMC)TBb!6|a^tnGN}(NVFU81rZ`id6iTRq@?${}F5D zz~B@)cpmI{vR{?4jJ7~Bz2cr$d^bElj`e$BaEcr}Q^|AX{qRV`$&mT?LKaT4h?Qkl zX4|`?rU9?@s4Y1IGWIy+Oe-7y75eE`PPFn-D_7gQ^{t$3pITyNYm2;P_4>BXwGX=a z2=5eu!6|a^JjB_P*@i#&qD)1L?)N=WC(ejXw|6rla#yxOozbU=u+DIujQ5>wgYj1s5`;jG6o!{|37#N%) z2hX$wzejl*#b2`u>-5KlWXEn~d(Z2W) z+7o*ofx#(q@I1otOyVs9ugI7JSgM}YOeNF=PEe#d@QAm_%(vwi~4s3rB7 z(!HP_)(pQV+Qc6Tx{PM4YYXj(J+#2!6glj9bOKM^u6~yMiD-+l-O5Nlr6Yk)5!W_P zbMq1Q^#XhP7Caj`p4yV+LxlF!GFi!F{nF*B>yp&9ol_i7>@^1FGiT3Z9M6iaq-$fz zj2JviNo&wn8mCS?YDw({))^vIyN{nP{VjhU|5y)};lYmcU=2Ok@gA&^2W#xXns~4i zJXli?*35%7_h2V_uofPyr3cIOV68k@YY*1OgSGWw?L1hP2Rq4wWqYubJy?4Wc8Ukf z@nENVuv`z;p&W*Ne8gX1{^Q15x*KmC579BqjG)J}*7Z0HM+?TG9=(+rX}Wxvzc3~O zgHzozNwu+w(=U3#jz~B@)cs6uASu^X= z)}XHIryVGDi&2JAi|J>heF?2fdm_gM2B*lu^Y{dwY%3XC&6#C%Tbi@RsYe+`Js7r5 zp2+)w!6|a^Y?Kh6+LAgxHLh(-UCWBuh89DNu_TeiI>{4rQ6T5W$+NNJsoT=5qPi{_ zS|A?V$*iZDXok99VQu7z`7tm!MGkv5Nw8;FGTz@PLMB>jpR#+wd-VVqF>-oFWI$7LF(RXr9UZu00sm93Ls#s#@3m(s;CY;dsYd zIWRay4xTL&{7$w}h8l_T)EuI^&tm8oam_hIXiu!)1A|lK;F;-ohGpV4L|Y`HdD3@L zsaxk=+AUfqOKPiz_QX3yU~q~YJXm|JB z1O}(b!LzmF$(j?(!?vtbOKlUD=d)4HQH14*N9!RH^2EDWU~q~YJli;)CI(i2L~38K z9_>;*71zCQW?%+&FEt?og8+>O0H zo^vv8QC7O7j-sd@z8~SeIWRay4xU*ao@_<`UgwH!8|A=A(|A-*^mW`L#_dDlT|O{4 zMGl@Pd3chcW?M1OWOt+7G(w(wG=;sR-?6_C7@Q&p&+LTw)HY1UR<~6dUH5|JiD;cj zXkqfio=0GCiX1#oc06_Os3()jxFu^{mk%u#_j1TBj)Z>4K1^V6iX1%Kd;HE8qxRGm z(5-7-x2tDM@*ft(Kanww`WLbFNrt4Z2@pdHNmuRe_uv zC(oRO_>4ZKd1^hZGwv@UQTu3wI&I6jNz2gY5v1i$N;)SR`>*26l>+f$cJRwl|{*BOo@>@@~*-j+N&B=FR& zRIEoi=(eJFcL%B3ef*g8wERB)X&&r!57yCxb@E_=2kY#?&hTJ)9_&mH*2ROJ<-xjo zux=i#y9YblgXMd$b3E9&9_&01*29CH@4_ zR}RBIKH@KsbK@LuG0%9bICF6va{TBK9vxB95y)qwxPCUw3m6lDoEs<4(<;SNGmqvA zwxaoKM3>ims7E=6JTXoKIX6z8r#qg>YSyi2U6-#+>(Me%B&?tF0dhwm=f=siV^W^c zdUW487ltz;W(Cfa70;c~yF~O`Yxw?*d=|*Laq{fscxnz|zsk=^WX_V6k-8VUyk@Hz zhGl3^^HgC#q{iTU)mq)rnAsOke@(zVhUWydTK9aq{e(z%yEpwxQ;! zTZu9uqMy}o_|f-#-HXugn2Q2AH%^{sIG)=66-OFN?yh8=88KLrGTrKwtS!`OPt1>j zoEs<4JdZuKPiZ$IQF}&9YCr1!YMX0adoZ*rd1B5EUK3=v94R!C6nPSlgJZmn?TNuljm8Er?y_jx^9=c z_P*A2$&f>Qr0Zw39=`8ky%os0aq{e%l&5YnnfEmlt!q|M8)_u#uW-C$4H(F|aq{fu zcxqPEquhv-k8UfO9xWL~G*8wO?muE(8pyeE^6Z`vpV}rB>tUVc=PW+O);Ut5O!%xW zqsLUp6Kmx_&W)4j*_P*$oWoBGOsB3#iQIDbp(0D??kjTIQK>+_`zz1e z+tgTO+V~?x&ipw8^7-RL_Mco=iFp+8X@YJ$uU|7`nXpxKGX)Gnze|@CrGjD|jX1;;G z$7a+PSz|JuTHXCvk^R@hG83+AE^@uwfJ{TewXLM14S=8!CJUK^rBb6q3*d2rKY*h9xrn7l13tDoD3$DE%n4kK7~gLUw}U3`lj;Kgt_oYb{mx3@Oul#6Yn`<1;_JT%X4FG zuqu3SXG}cR<$aMw!w9>l>qT{)-|_Ah z$hmRa^E}JbJijp}+&_dRW8bY4eeFeH(ko*>k>f6g4GUl2U*xD`V9AE{(D&>OuuSuf z&<8z(XB*xCq_jC&99|OmDbv;3qt_ z_~&NMo_HUWa*k&Y%X7p(@YJKTn}{6I26Dz(u-lF{Cy2gwAB=(?t20Huc>Q^TtZR`c zvdas7MfSY=CXwq~pCor59nwqmRoiY9x#6iRM6T;}j>vichTTS8h+b^H3}dsn8Eii4 z81(M9YKZW(7ZIzQTV^<(ct;K7+&JxdzU8@XT5G{JR)-Dy|BSvjIS1C;c)imxP=0MJklV?xM^MGxzL)njr=fT6!ZqYHn!~}W! zTamG`)lkD^^kUE|)RvNiOfqB*M!}F_7)_nCT8Ny!4eieE-b!TqJotBIA$q-PYo_Sw z*B}y>HfksO+!qi7+dqbnX1)SDkL!cp)%>!#vnSr=135QNo)=i2h56vt+>U}7xrn!v zLPTcXN&AY-{tZ@LJ*I}pEsLxTx1r{-7oI3J)jSVYnzaG;+4Nvb!E2v$mgw7x;PELf zvIOb7*yblqo(|f zcy2Hc`sP$va#d^O-c@HDD{_5jSU6=3dQ|h%PJ*mn21{o3>>zsg?6VwC?0E!oZk+b) zZFx?AyM>gjdqalY=~)9~aL5?s!yenfB=cifFYQ$5+n2T#x$TX7xx4r$*t76^#N_Dl zcy{#&@UJo4`mq%K+FA#CgKyyLkqzMGIcGrDe*@fx_r8V1 z*c%Gu+&Jxdk>z>i17`|WT7dZPF${9tnr0%qe+XYpzZ;xK9D|XPc{}E~Re!xw^oa*{ z7n$+^GE!!^9l_ZDPfDMsa*rWc58@oYDdbGzk=EV>1KDftOA!rK2pws;BlY1^l@ z=o9*4lodRZ;l?}mtHcwIXCKRRZk=ldn{X5CQ2ZL?ytjUei9OR1rTJ_BD{|Vcuuth6 z*l^%vjGA#aGqgR>#`d*{ibgjeV{do@US2WrWRW$m=`3<#1LVDJlW}+WBgmW^ssS0* z4(pj0|Jz0Mb;n@l>Xmn-UCB;|W# zlCqtcce1Vp=N^|M$8PC{7--lZ<8jnd`?a70DVFOhG@rd=fR!pjgjJ=(TG$yJyKH#9igjU((e26En(_UvbQK6>I8 zk@8y(z?xy%c049z2=&Cs#HRp_i?-sv;oWJcdcyqxDSZ2d5 z&7qefo|{~4`}H)e`smfLN$gvU^c_b+pOcNTF!3bh+Xibgg=ba%`}hUY)AIZHmw2#C zJ=kR)tiJ~v;K2rZu**HzAP;th2fNaPUFE?Bd$6lL*bomk)PogzuxmWnwH|Dk2OI9e zuJd3cJlJ16*hmj{y$8F&gWc%CMtQKCJlJRtc5^ul`}l~zK+cVGycO8-miss|__$Az zk$e4)43)m$7cr6TeiYg3FBmO#n_!jp)P9$UtktuLtiFeU;y zH%^|HSe`#D9Vgh8Ly=9oUXGD$8e=`NImc%3`pAr#pCg}+{s737Pcf=TkB^Do`4Qx! z;)juEC!|9*x*7SR(ZyIfE!!8I>mGzGw)kB1sKF}C!8;DZN~OVnv5u)d(9RaWLhpL( zu`bVIoJ#g}JTIj^55Nk(v^z4?_8ZYwuRP??vi?}1&fboBx^pYcg<0LeVf9qB-fKQG z>Grvp8|FQOTtB5LkcE$ef0J`g5PkFTK=gUfAjcIq!s>s+VC3<^_Svk)VBU5}hTx^^ z;mvtpHgY_XI|4a3PJ3Qvd2VTqnV|bWVVS(QF_#oRi@d)j3$yIVd$7)!msV3`epBeZ zMuAnMZs}6K^kq8-e1)}U*7CCjS+xfCiQNrWtDeRxcI~^c|MV=Z-qxOtnRs1mtT2|| z2HEIUtQaOfiyp1`Smru|_(VRFdyZ#+%X944$mXlE5GRGhG24x}%0}Id@KI(SB6iDm z%uiXpk>%%Ygsrx0g?#jKtVf3|M`j;02sW8Jqpj%Mb^uxY31+N@jerk&5jB*YjVLM} zh8bn)U9fHOX7qZ)Bt(0QK201?y<#Rt-|Wfo?C3iY zf!znhM6PN5h{)WpvEI!**INEP-0j;YT&E)MOY}IN11-;ACSnwiy%mw)yaUEy=|ADA z)WZ-1v44YG*>c3;B!j**{28l+MxVk{3zi^e1{J^y+o~aNr01Z9PFulk^$^lR`L{sg$yy#7AX^R}ES`l{(zT^;aqKW9(OMS+|fXMA36d2YHLb@ph76>Z4} z7(oRScf`aa=fbvy?;}d{JHR{XN5g~DYr|Hv9!HA>X?SYPo5(^7%YZET9DQ7MLPybC zJO-rav5?Dppv;c(XNo?yAG|#ED%iH}A&AoPqmZ?F{m{gXBg~J1oEs<4L6+y--lqxH z;}OKn)I+gCGPAH=nOcTAd)f+2CcAEV%`J95WmlwV(+iB=u^nkjB1_yK76r^)%+}z%+9_ zudqDRPC?GBy8~k`jPa&v z$i2DmAcx=3{T7k4f3y~UCP(xU8?pW#lx=(WPgrl^6^P6skL8J6cL&~$?o73wZmv_P=>Kne>&`DHlTM) zzC^ZZTMORL9t4XA zY>~(v=j1t_Sla}0Zk&F<%JR(r4pBX_4kB=N2P1OXorqG?^ZS^1>Wos6vAN%gEWHzK z=e`IZEouXc)wm4|2iy0|6;EL`vPR_~W;*={=1XfLx&~d}O7uS8LB3e? zd_h*tx>V%Xwc(4=z0Y$zvEGvSc031Lo^=ObE?Di{n?&aByh`Mv?wL|gp`AfSe2K_x zurJoT1zipjytoh}W#OclAhTK`qt+dVoH^z?*mLl=81LEdK<_*S9-ots^}yKkk@z-i9tN{Z#H%@zAZFx?8A9g4xMm{e*5^Im*)8X;r zV}TU4f+bh42e$>+U=(DZ4PSSe+D)F?V&7`6?1D(UaB`8zhS#9QA>S8@o?4tG`Y(1b zuU>0-t!y$P%It?(so1`E4LS^Xj@=QM^-C+q6YEmRt&Zmq%d_=!4+xff5yol%xu|FL zJh0ky4=gk84P^476X4%QM;$9=1`S4D9or4@HsT~$yJ^PhA{*R?k=64@>@0lU5^=a< z#T6pcUWIp>PDJ+D&=eV<(<|UPy%^cG$x`%sNl)a)9S5{=Jh4^|$Y0Ty?4F3Fv5#PUrCtK7 zKJ;mK=Xbp4NWODCueCf2JE4{O7hyh{{TNy)`eLK7nzRvYo1B7Nw0#|B_IdvX=hW*V z3({ewu1A7NdOP@c!e@tyz9R$kRMC;ha*KM~yD8u>Y6NZ~Wca6YpMuoExV-hgqJc4DmMM5tKAf{7dw_-mq9nZDh`Zuh)wl^b{-^tB#VX zb-{4tv+#IoeIR)U!E5Fh8yn|9FSr|hH>;tKoP|A<=4ZjG!+XQd^Ug#@8f`GLW^F;< z=#<`4kQDjZ75$F)L0LySp2IEAMjf&8G|#>f6Zy;%kwr~kgPaT9jD1#Q{!hr9GnUp8 zS^6q$o6-eV%^m@pZ(0sZ&buEmkeUfrt81Ybg_D4nWy41$r{SrB*67RZJAmZRg%?Wh zz_=*OhLxtT4)>w(jvC0haoY1b%X95v$P9CT!c3P{_f(NjWg*W@v-`*sb1)XU@Zjhek^= zJB*l>DKa)6v5|Lpb!Sh!H%q;a=LpL)zbpJ`9$OO=`49NL=>4UT!(In6Yo*B2C$J|~ z*ap^{@w@e`U7x27IZlwWOTjSz?-=hTi!mOHe?`{q`8SN~+`r>Zq{noWT>U-lR+a^x z>t`G*a?$zlLVvrfxN_Rjjwjyb135QNd;Z1pENX@i0kws}>Te9Cr(9c9hiamr` zKGlw|dATUL{b*RJYZkN;qe-?Jz-UimLR~vnAemRiR+P07H!eaI31Bo?; z_d5^4N+89)BP{w5wRLKLl;es01^KCk<2lmu+-QGRI`Lz8Vf2}eMb0TiA7d*v$HaOC zKZ(r01idId8mqhQQ!q|@e1vhjx-YV~xeC@Bau-JWx_r!2=|>>H)f|gFVM}h0PZPHfwzY&TCHvzU){lgRChXCrP0b%Z{qIo<)AiO!9C@^uv_tV@SOLM9cwnjx3F`~ znDKTjuYvvN3~VT}$z5PL{rPMbUa5{o_W*3ZO(jHprrQ4 z!lY=@TO!RjuZfKP_%7reM1FdE@UOQRC3~KVc+M-t2&(lg^401)(BJJZBOCOxqoY$1 zJexYyX4DTMm!u<}3#X!EL+YWO+7u2hoyp2TGbO z8;uXVD6GuFry*}cUNS8)_RID`PA;7RyXAk1_0n&bz_Z2gquu<`kn>XD-<0XFQqfwJ zOk0IA%Z9;*^}a$347U*;dkE{g{w-kVfVMnpupQB6Gp_E

    C`UpZ&zmjJvQvkIJCv^U|M*c#luVMJ%CV|9DX$Xk0HFY=*N1_`pNOAnE;$tMYt zS+kwU!q#m>=F~!&f#+ks>w7h3rL<343(}%5X7&{=hKsym)(s+Kw>A@dR^>i^k@U3u zKK?Bp>{btUn+F@?!EX0pV?Ed%9&DTkyVHY>_h5HN0jt8;G{k%6&B$cq0%V9q`ydl6cp2{{i=F`9wF&ZZVMic2-=T&DA7d5M z;GN^8{vExs%DyrWtJihKeMRQg$7mQc6&!LeZ0X(!5Ql;3=y={@c}{POJi6p$n|1EP zm>zu$=A0(^7=K$H-WHRrGZ~q0<1l2wCi5^Nw=994m4ZE(rOU1m+4H}>MK)b^hRE?d z&Jnrp39KszpK^kfZ2lv9G~rgrIUl2yCf_s@Ir`R1q)gphl)o^z*zv^JkhP8Dd8_4F z>&B*1KJ9DNmfHeriqfl~cmDvZlKM4anWEdVE?#~&a?;`9*WePs1d8W(3 z7_X9D9M9V<&-rU#5Uh5eCq<6g)=A1|rH&H4W*6+T9GZ5g$Qv$tP~^4g(7XTjHj!P9 zhYcr=8!B>B?#c30`&W>+<~BN8FR%#=LoGkjPf3y)f=R#!JrRTPS{t9AX ziao#gTb;(DPkRlqI(sZ;u#zE|8Fq{~K}yz~eh(Bv$>I=VAuSS&rFb z?&~o@eme{`jOqxy{;$Z&HC{W+*%Ns!FlRWPw_Bd|XTh^uR$|sFocyE6*vR!F=dHww zwX8Z;1ht<}H=-N(z3nI;NNyKSS`*%3{UBX)mCn8 z%+CX_Yb$a`F-BI6ad@`xY}kKlHQY@p!v5v(pE0K)FCqU2=1j-)4$ISg{%cI;{FR@J zELnn#lsW>VAp1M40?NMs9(Olk)X(_@tAo57EyI1mEp{3*&m{YHSiIhjosW>OT0DNd zk)D1Gi?w|c5!JsjB4^A*c%koE$bq9rz(@Tzp`OB_sJZau0~}AxNiqf;&vBM#=^U({ zYV||3)PEQpN{&Uw%YO?Tmc?MD!oQ&P{7Y?y+zL5rEXMN29njl;f|Y4uS7eFI0btej zVB8)3L58%puorUX;(MX5s0OPp9DbI_E}tQim#l){r)@>P>T*^mH;yn*2Iefs^G@3H zcZ>q_1=g5_pCHed$UB7OqQj7jQad7Z_8N#XYmY*FZW)LkqqG0grm{NUN^w|1$Ce|x(-kEwfn)_U&XFupB!ZPCd*JhcVxQbiMd;P>v)d0 zJo^vLmNFZ9Ap-m7Ad^g7eu3z)%=rkmq=m*rX4Og=C$m-efhB5joptSNg)^WNWAJay&UHH7o3$3;$opnIDst(=E%z5&9g%i`JUeN$$a6Qh5c%Fdi$r$6`E$A3{r;uE&v-{< z#>M}Y7Vo>|`&yEjr`>pvWa;UJg3RAG=m3r*ta0QS$8!SxZc<|6cVn#7Uy3EuS@Mra zwiuP+w_{j$1?Fs#`&6%O?sh!Qyop;rK8;9qxi5bdvQGr55kdBiAT=Y%ei0-kg6tnb z4u~KJMvz(&K~f{gAra)z2vR44q(zX!B1qi`a(D!(rx0XotdJ#}xhR_$ zdXJ^{3dzxcReNC0aXjzYYkA^LLdLk`IccxuiMN};oacDnyVvr>8<*@3I-d9KwLI|_ z7?|@N&&hi&PrRARdz0fiWv}Ilx8=ZG;CSA@*Yd<0ysVcTMYPwXlLrnlqyz+TG} zI~}stay+N)l{`N*S?1b0M*e;A*(TY4i@o=9s~>6>*0c*a2>FAR(OoI2a@oH+ak@F$ z9BlUC->S*~cJ4GsJzXu`?4OZp4z=(h@+(`04m~_LU3&Z_zv~RnN#z zhWbQEwYY59h|5zBH11RH@;`s}b_>AI2nR&a4)Gg&k2u*+E_ii+ zxqu(&{tw^&&!7K$EU;szjQ48g5`y>|aZz^rV?X?S_Mp^%+?!&WHU8&EnSxD|3$cOw zF}Z5Ul_wWsrH5R|UVFxa+b7CpS;$xX|u#pJ&EyvKIv%zOa$>`z7gul~W?A53p?RO;jhr2ox- zo{RpcNyjlJ(Eoh74wkEzT!+imUoMQ3!E&Jw!{tK1N6A%JF4zI~m>?JIvr;ZtUfVL!O;wl4e~b>dI?|2L3E@H}iD$<3ybpp7GN<6{Nt=cbl^oLXv0J@5tmfHp1|dhJ!i z1`QZ6e3+$zuHqJ`cfaK70sYg@y=2Jc1L8LY-{U{kB)jY*69q<8dJ1}DOo^4IGkOq@ zgR=(?yyCI}42SgAnVD_U|398KW1W7*z=7GOwmf4arp0;aL5pm&_2l{2u)_b5Q43Tv z9nDa4wR{A4wz 5); + assertTrue(listener.getNumberOfExtendedFormats() > 5); - if(cvr != null) { - // Should always give us a string - String s = listener.formatNumberDateCell(cvr); - assertNotNull(s); - assertTrue(s.length() > 0); + // Now check we can turn all the numeric + // cells into strings without error + for(int i=0; i 0); + } } + + // TODO - test some specific format strings } - - // TODO - test some specific format strings } private static final class MockHSSFListener implements HSSFListener { -- 2.39.5