From 168d3f06e69f04e03be3d78c62e60a16c308c483 Mon Sep 17 00:00:00 2001 From: "Taro L. Saito" Date: Wed, 30 Mar 2011 22:54:21 +0900 Subject: [PATCH] add isValidCompressedBuffer() --- src/main/java/org/xerial/snappy/Snappy.java | 29 +++++++++++++----- .../java/org/xerial/snappy/SnappyNative.cpp | 8 +++++ .../java/org/xerial/snappy/SnappyNative.h | 8 +++++ .../java/org/xerial/snappy/SnappyNative.java | 2 ++ .../snappy/native/Windows/amd64/snappy.dll | Bin 643072 -> 643072 bytes .../java/org/xerial/snappy/SnappyTest.java | 3 ++ 6 files changed, 42 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/xerial/snappy/Snappy.java b/src/main/java/org/xerial/snappy/Snappy.java index 113feb3..8cd4cd7 100755 --- a/src/main/java/org/xerial/snappy/Snappy.java +++ b/src/main/java/org/xerial/snappy/Snappy.java @@ -40,12 +40,14 @@ public class Snappy } /** - * Compress the content of the given input buffer + * Compress the content in the given input buffer. After the compression, + * you can retrieve the compressed data from the output buffer [pos() ... + * limit()) (compressed data size = limit() - pos() = remaining()) * * @param uncompressed - * input is at buffer[pos() ... limit()) + * buffer[pos() ... limit()) containing the input data * @param compressed - * output compressed data to buffer[pos()..] + * output of the compressed data. Uses range [pos()..]. * @return byte size of the compressed data. * * @throws SnappyError @@ -72,13 +74,13 @@ public class Snappy } /** - * Uncompress the content of the input buffer. The result is dumped to the + * Uncompress the content in the input buffer. The result is dumped to the * specified output buffer * * @param compressed - * input is at buffer[pos() ... limit()) + * buffer[pos() ... limit()) containing the input data * @param uncompressed - * output the uncompressed data to buffer[pot()) + * output of the the uncompressed data. It uses buffer[pot()..] * @return uncompressed data size * * @throws SnappyException @@ -106,7 +108,7 @@ public class Snappy } /** - * Get the uncompressed size of the given compressed input + * Get the uncompressed byte size of the given compressed input. * * @param compressed * input data [pos() ... limit()) @@ -124,7 +126,8 @@ public class Snappy } /** - * Get the maximum size of the compressed data of a given byte size + * Get the maximum byte size needed for compressing a data of the given byte + * size. * * @param byteSize * byte size of the data to compress @@ -134,4 +137,14 @@ public class Snappy return SnappyNative.maxCompressedLength(byteSize); } + /** + * Returns true iff the contents of compressed buffer [pos() ... limit()) + * can be uncompressed successfully. Does not return the uncompressed data. + * Takes time proportional to compressed_length, but is usually at least a + * factor of four faster than actual decompression. + */ + public static boolean isValidCompressedBuffer(ByteBuffer compressed) { + return SnappyNative.isValidCompressedBuffer(compressed, compressed.position(), compressed.remaining()); + } + } diff --git a/src/main/java/org/xerial/snappy/SnappyNative.cpp b/src/main/java/org/xerial/snappy/SnappyNative.cpp index 34b004d..a871c53 100755 --- a/src/main/java/org/xerial/snappy/SnappyNative.cpp +++ b/src/main/java/org/xerial/snappy/SnappyNative.cpp @@ -102,4 +102,12 @@ JNIEXPORT jint JNICALL Java_org_xerial_snappy_SnappyNative_uncompressedLength return (jint) result; } +JNIEXPORT jboolean JNICALL Java_org_xerial_snappy_SnappyNative_isValidCompressedBuffer + (JNIEnv * env, jclass self, jobject compressed, jint cpos, jint clen) +{ + char* compressedBuffer = (char*) env->GetDirectBufferAddress(compressed) + cpos; + bool ret = snappy::IsValidCompressedBuffer(compressedBuffer, (size_t) clen); + return ret; +} + diff --git a/src/main/java/org/xerial/snappy/SnappyNative.h b/src/main/java/org/xerial/snappy/SnappyNative.h index 96ba375..7044c80 100755 --- a/src/main/java/org/xerial/snappy/SnappyNative.h +++ b/src/main/java/org/xerial/snappy/SnappyNative.h @@ -47,6 +47,14 @@ JNIEXPORT jint JNICALL Java_org_xerial_snappy_SnappyNative_maxCompressedLength JNIEXPORT jint JNICALL Java_org_xerial_snappy_SnappyNative_uncompressedLength (JNIEnv *, jclass, jobject, jint, jint); +/* + * Class: org_xerial_snappy_SnappyNative + * Method: isValidCompressedBuffer + * Signature: (Ljava/nio/ByteBuffer;II)Z + */ +JNIEXPORT jboolean JNICALL Java_org_xerial_snappy_SnappyNative_isValidCompressedBuffer + (JNIEnv *, jclass, jobject, jint, jint); + #ifdef __cplusplus } #endif diff --git a/src/main/java/org/xerial/snappy/SnappyNative.java b/src/main/java/org/xerial/snappy/SnappyNative.java index 95b0821..ee8a565 100755 --- a/src/main/java/org/xerial/snappy/SnappyNative.java +++ b/src/main/java/org/xerial/snappy/SnappyNative.java @@ -56,6 +56,8 @@ public class SnappyNative // This operation takes O(1) time. public native static int uncompressedLength(ByteBuffer compressed, int offset, int len) throws SnappyException; + public native static boolean isValidCompressedBuffer(ByteBuffer compressed, int offset, int len); + public static void throw_error(int errorCode) throws SnappyException { throw new SnappyException(errorCode); } diff --git a/src/main/resources/org/xerial/snappy/native/Windows/amd64/snappy.dll b/src/main/resources/org/xerial/snappy/native/Windows/amd64/snappy.dll index b79c774eb3df1c8dc4eb11b440307b24525094e6..310be6cd9aa2d85ea73f3f66ba0bc9970196b0f3 100755 GIT binary patch delta 46810 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 z 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 z zhzjyJ`9<3lT=9`&Jyi@fQ1YFw8jL|d#?&$}B$iHJ*~XVeY?c&ilUr)53^*MKCn>Yx z-=2zk+7FFYuAgpLq9iQuN{HA1`FOOa; zMKAcElS;JLvxjB7iS9ro=TBRBP+_V-nI>1 zHjd~viT`B>Ed*w2YIe}5pUd>qml_E4?D$F}Ay@?$ol4(#wInLq=7=7~92*!h z$wyK0m^-@c_@KyY*I}hl^+>vS{TvE-epv4my_@cAAR(>C1KIpBc`h5uM@5+T&MEJ2 zq{13{(#?N$`tSSUQDw%@l;pc1=t}y=yHNu0g^nw`pVWbk_V*_Z1@9+H zgQukgy`T(#dS3`aN;_*A^jG?HYluhErI++%IXmdm3toQF%268qh*k#tgs<1+)@$@p z8lDFho7CP!jow_tPic5rt#s#QQjTCrjgb?GhPT(s2U=+hu&m~=mR2^`_|rAKiVfGw zg+Jk^m|RkJP(zJji>&KUf;L54fTJ|N&9SXKqB*{)mCv;D$aCHz>$S3$R_>)`5;RpI z&EUeH6nKQ$LG3k#guJ1Ff_LU<)unldF|gi92ks2{zQq_L_jru+6}BjXzs?m|ZR@XgfTi>A?l= z-;1qi6MUhds{)%)KCqS-bn8&I37hApp@QxSn`NiElP@LkWjk$5rMGx0`^!SSwEf4&Zbi&9!6Xc3dz%B3&6OqaNE-ZV@*Dd6KILxs}XinAtgQ6WY)1 zwzA=|YKDMB9WtrMBy<<~ud7VE)&925)K!MG)&8I}Oyrmz`JuJsu^xp-kNinG>xSeY zz2_(X=Pr)c7I163NrE#9M<%k$8El^*$0@de{Ns$`j3?kEIM$3&G5UyswYeMg=_=AL z59*%OaSb#U?PS=SSyvoj$&&IL#6RI!8Vv8>`N}&Iq^yqyv*f&-f~%~eP=Y7qgfHcc z8VZZO{kHQ=pf&&tIj`hy9fMSbjX|Bjn!tMXC(Xb*fg#pagJdUCEiWqAY)=En2D{Pe zrz$$~kJ{RjmC&Fg9r;-cNcX&`25LuEyEg$kqIxz@Nc22_K&@_HHWDgcE0~U-z z{n6(FoQXpB{Dcqq3Ge?C-smSh67c6!Z3}%ft_65fRy?f!GzU~5tGgX9K=GD#+(_{{ zcKqW&z{}h5`xFlZoYtQX_7ohvg7r;4Xy8Tfp+`O*Wj#3)U>NS7bR^h-0#HlRz<^E) zg_aW!7gXBVAd;oU3g295@mOu^f(jtCT5x#Q9C?=?EkG008SZEV z5}YH*09RB}E$x9CAv9YZZA2KM8DxSd8i4MQ*Pf^fN+u->qCrA|>SR$tl#DhLUoW7x zAnm-9>4KK+3 za8ys@Hoge-dE?8LB(9rW3syj+KCd$z?vuueIgrc zqGIS9f#r88q>^tnp|2W~m}pc(z|q7MjjFo`RRwG87W)s>CVT0y8#fi!M{?xW_UbW@mXhpusrLkJB~-I}2jSP1kdH(MhM>aVV7 zgVIFMs@(xyL_)s8#PfGF3Ho)>?`S6aNJ@1?TTngncSm#vT~XI|LO0#eD3UxF4HZXN zWzuhy;HP>GL46ULPLhWLl{}Hjy&pO+)omC$gwXEqxMcfvL4+cgU2HOqzoOe zOxA1|-91x#(v!-P@UM`t5SnwWjT;YKJ{1^7+i0DE1~M&dcpS$o+3=bi_qX9?I9|bq z`vD#V1`IZW8y9f3;Z7XSuTv|GL(K(`)!{H>TuSgy!5bE_vj!7hK^Bcih0zpM9goVw zp}qQS0_uj)UA0Lv3KAhD-3fPIga&d|j>CAy3pl=c7rYAQT{> zi_t8>^#M7w82JcA9;kN~qw5IOQ`Mztk+WE6o7OuCYf&?UP_d7CVkcVYEaq9L(I+3G z^x)>|^)skY9&yw}jc&Y#CJ3mfN^YR%&f>EKjlB9HY8WC!tyJIU6&mCf-Vp*onA!(U z;qsyb>fivOWL{zR1Wr8}CdB3y3JzBbMhXdeQJQM5BP6*BejQYomcle6nx~RJ!XJVl z*H(-77hv2ESJi<+VV%C@M#;%K*N{z4uM#5Eyu*b3g0T7_={rj3tdRCykE;n2P5<7p8LTN%-_4x$Q zMs?H@lZ3(|+O5`|Dm>E(QD@bN8NvsIuByfV5I*TpW7SU)-seM~RgW}bgdieSVku4_ z#q*I@YlIr=+ZDnkgc_*FRtcgg9^aNrKm`FT2;K?mhjqemLG<60i^;VwZWJyHsF(WZ z7NMCA%~e083wM!Fp^tiFr!Y{5>Z&n&g-*`sxVrYJkm3n=`J2K~S;UbN8GK79r-nTc zjtF|watWp@<4E=2M?!bx?2*P$IZf^UMA#!Z$3o44U2TaPoF!~4j1H^Ub>bkMbFC4K zUUq~U=Pa%loae?fd|Eu|Xb=mkh4P72k#p@~j96}%3d8{jZBx&MKqgW5Y#TqdHr zL?0rqLATYdAtH?WlVos7u`qh8&L}C?$OjLpGZn>FNGR1rEmm1PgU}}RO(e((T^f=h zAgG?HO2sCq`C>o}9aXzF5W}1WpA+h==HfwkgodikT8cUuT_vqMh>>V9N$ntZhoSSK zgSZ6?`mf~AF5(Y#LS5Ze{DK6ZUF!1gpocE1oqLK{7BZtrn+{@Sc<81L0KG&N52Sit zS!CBR&`VW!#*0LU?x~GOiWWiiDu+o(f1!dJJ4Wmz!W6bKNgRrvslMaIdjc}=N)~VF z1l}9xGcg}v{^La-Qf;YtQYh}G%FD!c2z^txrHOis z>Z^NKi*pb>xSOsK%RoDhUn5o)#ecS8GVrC&U%jY!z4~OkI31z=WXKM&G@79<-yv246RR{6-&AU128rAQCgx^x6Jz&?e~aiJ z((ZtGUI@%2B@c>WkdJK-inT}Q-bbNV z2dM{-iZv0;irL4+t4OGLK)seJ!U515waf`|144Dkt&`$Q)LK1tN*s>RKoWfhT5B&E zc1Dav14zahv64{X0r?Ci8mC5_6~7CH6Y1E=+9wjOGMEkfN!1HtFIc**ydYK-eA3C^ z7sOL&ruyeaF%`p;tkN|x#@J;ert9tA@GQ=@x|L;$jmeyA;#_#_mb@-DLjB0_>ta1L zSUqrE^g^hOdi935Qb6fs)GcuuiYMZ2v8fQaMs0ap+=+x@7f9Z_;#BmAD0juCXbyRJ zSA2wekQ4XBCW7ZV)$6{f3i)qOz_1c%8R!>diuQtox*p`-L$OKzq8%u?rZvXofq*J^ zAT=I|6`S5|4`kED7*j1bddrSoNJ>8J79+-3LFy#qBD!gyFZ!$_ts)qi5x5l)Sd&le z2Fmd6mKJaa(u`r(^GK`$kMQhAqEW2e9@1-`T+Z%6Jw6dSvF zwxjf%(6ULrCt`&6?Y7h^iwv%4+G9FPQlE%L-KTT`w%K@|7R>h&lJP{WA~b9}@3H71 zR%^?B3lqkX2q37@PsJZXMPn=K%IHZ8Q*Ed+_1aPd06%NVSkGx;618~XpbtlmCJE2P zvieQHiA}+q$(Cng!9wFWmc+!NMQd7PO*+~JXVrVp#1ezOHoSxmhZUJ$j0LWd&<0~W zy#2(#gRTLpMf!Enee`Pa;(rQtCnJB;)uxN_-*m*i^K%d~orXPyAFpbC((`v+n8BaY z*#gbzqF2*?*NtqF|LbC#LFUb42`RZz7b8@GWx__?OSkkz4(u~z$R_afiR|2@OLD)r z@FzdLNWIPAXE~*FKjE+n*{o};7d(!To4a%eVFWBtb>S#MJ)!Dqil_r|-luym==YP4 z`*d;AlXoI)Ny)1tVsSETzpjAvCna1Wp-07PUTf~mj*7Y-45#Du{K<- zm_hOS>d3>oSqMgS-lMvg$fABes)GUioisnLD}&aPYjlfs01#YeKS`4NJ(E6S`hPg)OApNnJ%Su<)erG|Uh^PwCt++C@g3*TonQ zuhr3^+LjH~3z1B56S;g|H%IVVOZr~WHA1J!t_!+)LYX`2j|(~vBow->dR)>?7LY;~ zUe--TA4tFzT~kVCNbw{T|be!GQJwvle;d{E*XoZ^hKBX=pZV!OEoqTlV}sTs#676G!BB@mTjm5W1_OPjn*ffHF^Y&jk0bq=;4bN(ktp z=F0-Q;M1Apf2PY4%61~(p6MRI8uIRQ-2w!e{6ZHj)L2B8zt9!eAKOmz&#;MHc%iEz ztQeHr%}ZXBS6WS8^P0TjHF>Mm;`J%dwXnVE&oR1x z27j|S2G@O(C~D>?z1|AgRE~LZY$C_}I5w7JAsidVu`(R%!?DU7>%_5|9LvYC7>?EF zSR7!Dz+n_e+j3?(j&IP|K1I3}#skoAksx zT}Cw)!J84B#2xd&&EdqOU{Sml!9Fj;7dM5wlf*3me-%(CVkm~22`(i_=VI6&naRXr zc)L(Jgj5W~VS;lA=@E#Bqiy6?AZ{$IEY78Bk;Xw-g|j*wjOkfj`CuH1UXU)q;2)0j zC=rhHf-yVJ<0Ain2#Jf!>F7FAh3mxK3}fx;Vrf8BDGehYGhP9{`Om5e&7= z^^T!kZRGIQU|p0WKdYALz&EMgLvU-jw5#q5#UJvZGwQZV7*5Tv5zpHAEE-83)y6dh zREY%D!86cTvb_$T2OynXRj1X(uyA@nPS?XGh^SS4+*}Bf)phl8G(tzn^BA0r zI+8&Ra1}w!M>aIT17Yn_s3D#tgzHFJLmUamdp8^6{-`IZ-v|@*irj64t5BI(++PTG zR;R^cvkr|=J)7Yoc~L{P+;3RPD+CuHCwk%2un(Wp8`nV1$mQPHj2e-yeIPjK+ddG6 z@v$1&mqxdZjOmA`2_esj)E_s4Eq&YmxHdww$l?Kbq7Z(c_zh%nv>%8Ep>E{VKs*Wk zAWa8B94pE6K@dm9C*;#0JP#ctGY10|WClaXu%H@(&m#}Iz|{5_6WHiZ!4Us2+$4YO z8Oq7oWmGsrMh?SegaT*ChGE#dffKOlPr>MB2Y!tMo1J>?1W>@1(^PLpAe%>0jQ1F- znK9!Vf77+1G2j*yY#Z{17~=68w1)hM$3DWWHzaN}E=bBJU~i93r>Lctfn{P+qG8(s zKM^prBwZ5l2V?8koCEW#3l$8_qV{&3Rju4KX;8AY{u4B|6Td}A| zFtwbhQ*&E^mnql5sM&al7A)#C^7{yQzO*87i4b*-mptkziP+m{u<+P&MJ-rJ={Y!r z+)BiIjh-(!KUeHxCh0dEH*q~qIXR)PCi+njdh&7dbvP~*15C%rcQt2`S7KT@k;mmW zV#W=wfK9V;HZ54>oyn3>Sb@EA#AxgT>D_cRjxdHE<1yum+5Z@eSv@cs7uQ#N!+LR2 zUo$fgXq^-~6%6s8$tih&hhD&r<+cmZ`2@tcGj(hb}s?AO|RAN4dt zGbFI;rWi|6D&J_kF#%(KMu~=vCT)+F2mt(eFV!_Zp#{{%)>3AChTNZoCsb;9fimbO z9)4H{JK)OJ6W@^C8!QGv(;DC7M>gHMv#OX4#(QMJWW1=j{7=ath2_n!>S8Qh1C0@rNR(`;hN zcJ(N6iO0UgG6P>ly~t8C43_-Y`Cz#WKL|DYZm0GfhPcOeK3GcrfzK4YdX@A2>;qlg z<`DMYtyCgs(5xhVXF}Mftvu}EWXntlJBkVAjFHy4bvb^hPzR8GjAxs}Yg^a0?Sjfu2iA=f*=LvEwsVM3LSswV()`cSy^J!n8t!B8&!fBXyk#)BACN}NuwR=6Y5%K!8z`06FO>-x zXEBOn{d#a#PsYk!zkHeG$TB<({YxsQVL#*MWl)W6UmdE^mGn!4!R@x0R9_B*do`K1 z90vD!wc`q0YjA<`)xp2RsaZpk?k+Vz7sz*a>1%;o)qdu`BY8cf+Vr)xhcwsyO;s9y zt^>1c15MLZ2SnRLZ0nQ)*KL z+ACTQCt-sNV{g^cPdbP61wR2J1zX9I0a9}~wRtl@s-)la5Qt{uIZ}F{^cGH2{0B)s zaJEuokmL(Rr$N#a=UyL}UgZm9=>Vx2dP&j-OO>3z-(!kJ?~{9jrT4~`PdX2h3X+mTrG0wKJ7!@%c{x<-EYvtlCQOz5$>3pXbh z#z{pC6OZL6k}Rs|ODc|$#tD8`$h=WfpjW_^{~5&J8okzRg8o#N}{>;$Q$kaCc`9UzrC>Q*fgn`Bn&>v zn|UZ}t6%!M5fNrWGruG?XF^}sAzfxdUsv1)mUz21y2{&i$xP_$5}A~qyIqUFqjLqG zww3qw(5*R&Q?Ky8?wJaG9e0=o;obZ&<^K{yse`20EU6kgOFGYj&JNrHQonSzC#CYB zN?qnb9hfDxE9}YgD|b*Ha2^0bC2VFvs)6 zu1F8^zq~;G+FyEHA#dhLac(mJILd0FjuWwDxF4i$>3!$V~>~F+|I3(UoM??!^^1XVr>s-_(5D( zNJYVD_zLNoehnS@DfkmHtdxF(U25NzlAnG$O)N9sKxVI$#{0foOhx8s`kEcO0c-|u z*$lTx#44#E>aI3eCFPaivQ?|~QjqtNwV-24Wh>L<483h0t-6XR>mjY-3defMFTi6S zwfyq}MWR%m){BVy25F?=zn+*kKnrx9%k#J4+#HF!JK`(`Jg|@ zOz2#A!NK~rXu5R7xsI7>Ki)>#ZIimAyQIkuNRTqL8_hL^Fs*+w3GUl=t_d3G*;+LN8K;9jISrlHl9E4f)GHG^DGUm&iNR9F* zCK-BA8i}IGi-VGv;5U&sa2~tBG7^4>cC5nPY-dgXiyN4%Gx%hk0d9_wE*aov*Z3Sa zjmX3d=*a4G$(s!5NT2cCk8GD%Od<|Thu}2t?O}M{eIezJKtJ{&$BsxU8bZb#l^Tm; zszACF!+wHrn7leFeHZAJ!edgbsQkeh@Y3q{K$j_n`!AsVm+K&{#6c&AgR+sN zWu`O&>V75@tQRnAMlO*ki}V9sB-Ks;d1Z=5?n*YD0Nd9|tCL`R9qrg$w!IHH+J?)z zC#CK162HwUDcF4w%!7OA%Ww9I+>EnLr0E&SsIEFC4TXyZbBNa&DX91scueM&sxghW zp8&szhvof_KzF=6oVe74k17x1T_oB@fb4VFhXY6f$Hv ziM7(i8OX^(*~R3bRr(Va|2?uGRPO<~tV5Wep##~qW_GvNjG?+&kbd_`=rgb~tiNV_ zC|U9hj1M7;p95L!rx_O%;_^cJQ>fgR?0NyQJNI?8?tI$OdKS^Wl#ZZ3iRGo_SE_Cw zkcJ%MZ!V%f!ql#1M^0~RtlO&lD+%uFWRf+nL9s_K2SrbqW&T6)J9+n7dIyz%{DxM( zr(<}gbB^JCCgtBkcvs24Z^27K4+k$#X8fm@vudq(G`x@G+Ivu(+s#2yg30(l!h1;q z{(FDt z@M%)_Cda9R$bpUyK2LFU;60ESKT2Wc^EeowGm4{wXI*j!Kpl7uB*Q_|KkKLTYVebX zljPV(DZJcX2Lr!4Sm?l~4o;Auf1w8#{A7Q@WXBqeB=I0tuAzheul7qi@Tq;c6%C33 zC4RD>1-~`SJv^KTkf2XeDcAuu`y>^BIladx30}IWb3REgMf99Z{07hD;p)?GQa&W0 zsp^OCu!xfjwHKT+qy2~>j~qzGW=nPD_3d&|US>=6h05*bR+KxU>pSPla27) zFux=S@=C#DBPk@xb76P4Rg`-R9ves@oxC2dSRB{MlZ5~yiN$g;^imy+WnY9QtErM) z3(0$%cYZCsxFWG0|^TosJeXeJp@&3 zPhUs_@8%(n4f?^1)r+BIqlUKMTmdrPkB~ZTn2(HRL}>T(!%OJ_>fwTNH)z)g66{TD7VV%qzu$kVCXvD35a3!;w-5w4 zvZiBzpD#ED*pAF81OfIYbqhl?$W+=M;Cz_C{v*I7HMKBpKX~#L0mU}e9TcrFuKq*u zJgMme;k6~kqB4xLD97+hTyYG~Ig0cs3LWefN<4j`8PsYHeol1yPd{7K&b~B2$P_;vvQB@v@1fjM%shSM0p5d^jy1b0;MXH0N%06Ux4LaSZS8Blc z7d{OjX_aIz(j;2mF9ZxA`D%eXGfArj4!~V)c`RIjyHpzt>?1?#$o+(-eYwKFb>u~8 zAyMjr&)%xBo(#8|kEqG@V z7}r)ZnPPj$4!{I2cXG86n{#xrfQGn};8;LEt1V;Y7CMwb*2c*`=&70+Cws%4k{;xK zGkJ{=m`|PFTn<9;Vt;E38GbDIND53?d=i18tZchURCu>)geXYZc4MF5_Tlr0JYkG-+e$K_v z7$B<^K3WD(?#Ts!S|`OPk{y;ACX%o1S#u6ZSLyYV(-G~f$A#1@6L4y7PSlSV+>j6K=QB?0$+(_!!K9}k46HO2Sp7I_&SFM7K;LVc@ve6WK1DJK zXfy)wKLJ1%ipkJ^Ar&#yriIB^4GQ}97`LDXEV#2Kn2Ebk2q+zGsutXVgRLpKt)1LT z12b`J3T5IrUQDBf1>ae~!+`q$i7XpT&A>1mwa})8gxd>zsEtDU_L2)H)&I=0FphR0 zbki709w2KLz}}`H7z6)0nq>Mc(qIZ7n~A+OS}S3Bv8bOgx8znfMQ0Orr$|Br^d9j<hz_gwXD zxf*8MJJv9TKoFYl=sngjMc!)-12ejVrv56OJc(I%p zi z)+TRRPCo_FTp4HumIXh_ku_ce5ZW~rY*-636~jNT80i2sTl8*f(t>va%#2&`_5}!X zia9bYq74ks7;3|UmjlKa7QECBQW=dp-ww{TgR|}6OglKk4w~%X6b8~8uaLfW@_0Kq z)((!cgCp!|mT7Y-|S`+QIsE zu#O#!<{-=|7F^v+rbKUu&f;{Z3jc`Unz2%Z`Gf#%1HI z_88$o(ghgcKhI{6#a#A}6(CCr43s^R5l(XGI}@sdVrX#Sj$7Qt~HRB_S=8s}_4 zSfwm@CV;GIO@>4!Vz@XPBu&PfP_QR_f+mrPhf@f;d6-Sdf(P5d0dr9$ZpwoDYUG|U zTQCrSt_;Y;H)v_WgTOwE!Gt@L+XLaLScf_`8x0VA&LhZ)S0eHq>zPZudi}Q0N}L3Q z8!+spbgezDXJ6PG3~GFbtEyZzj;U_WQN_yuv@WD7NoHe#x72W#<=ik00=}$38>1nR ztO;~UYVWm*K!b1(K~KQzY1akGJ_I&UMoCR*dMYUXo2d7L& zFeu%ltza@{LBX0Ieip%6H4|eBK|}t4iI)NYG5|W{4Fg!;ytISQ?BG*7_{a|4*FX!t z3lN(@Gx04-%*0oDae)`7cyWvu2YIoZ7u$JpgccSY3~|%&ph*e>NSj0tsCD{ihf(-- z7HgVgu*kEuT9UQkbJlDZc*c$dgV1aNwq_duII|4tMSU?Rh89f9aE9758LvRWS}jhK z$i&Sk1g+MPQ2?mT0BE&pnhb!E0J8c6T+vQ0X9vsJ!7vT9;8Gfti9;xqi3501gcqK? zaN|WDUg&u7gD?dbidnEb#O(|aZ8mWh`8q@{RP|{pYofH=E3$`Ktc9w<8Vu%wgqcht z9Huf0?hgpJVECQH4TbSEflIaLQU#b)vm7a03qb2wX3#kNDYaxs0+Q|Vs@moWQ|#b0J2=@6PPBtbc5sXx z97$(n7PJMvT$ck5vx9@}-~c<=*ADiwgWc_57dzO|4tB7EZ8b0n8mN_>+}sW}wS%#C zuz?+{X9sKB!J2k3$_`esgO%)HdBwIOvfv0iIouAGvV$RZFvt!D*g;=ASVRLeu@8l; zZi^hob+nnKkLqB;J|)it229C`FsoPce(*1Hu zP0)dFc38(~!f+?pF#cEJ1H^5(?CqiaL7h67xj>?TlQe~e1*Ucl<_C039 zB~ogHToW$t_a6Z#(?8@nWEBHZ&ny#>nOUvrd6#u9vh8;Qs~5{fglv(T$a7qj`jkg=5HRCt0Rl z+>+}IsLpoiXIDf!62qIVv2tk9!fEW;6hqV0x>SHhH`{*8Y%G^eN{^ER={epw2x=pl zFis9L-Z{YxSITX86gfIhj&ciyjUdfN`m3Q7L(wwCElGal9s~0&J@B$Ng^ydqbr`S3 zL>e!bL+?qI@$!6q`z64xiffabkh}F2g&(Ka0vK` ze3%4>fbf!HGVtKd{$!B6LcFE`_L6j-0+M%#>r^>N@VZ7SPL-peG2^EKa~9b@6+}Of zw$tQfP`ovbDJGiaOu^+UsX1M~BZOZeekt-DIB?8Pkr$)4Wbq6TYDFrWLFFRZZf5^w-=lZ@g<-2gun@x+&nT9@$rU5OYU5|LH?N~hnFkqV1Onk9Lwc$kjH^f9eg6KX4BUoKiTi|%+Wsl z@Cd}peW7CiM+I&=@Tq;cETMq?1wYx}11o^s@sA`eL9E<*2mN2;pYFh?_7llYPz-4B zlYQr(?3Xx4@En*qdXu0z^tIDDwbdLMzVl-tABnt8h`LYK&6h{QnSZeba^0jl`=Od< z!{d<%R#&Yj!&rnB(lWrTd+EN&jEivr9gu)?JP|l)oa4+n4LK(-)tSOMgE(jFD5f(6 z3TuDPX~j8Lxegf#YY1y|&Z^2;MYz&!YOXSHVD(y=&Jgeg=B9K?ilg&>jWKi`%@g;iP6$fb@uyZgWz{sX)32B>47olbrZ!j>~aWVG@mR4dWSlv$$>X z6`J(9EAVD;JsMz%u{nA_l39TN0tFcJ>C<^1eHg=Uk--R%!c0I~%SmrJsqAzh&E=#! zoKz!4t-nYv0Y_hGb)AUX^FVgpUahX4ZQjg4Z# zFYVwnJNQ%st?%x!lv|YaCtYx70hxQo3jw4b$AfDs8St}Ne2TKzdco+*qj@uwM^h6V zZUtD2W|Ivx8Rt<6SW??4u%xzwOYGpnq1wvM+JlAzPwSd644hd=1jMwEVgQ5<(F982 zE0=SOLjRX3Gaj{*IhzV3Es{w#(1Zt2K?@#bqge0=I~Wh3ZKpIuBU^9XrI9ex#__Q9 zgYKU-k+xAUkl+Csy#R#f=?u-&7(i=Vx|=o|C&2aw0&30*LkG|T*CEL~u1s8lLQs!d zlmWkq2hB{JWMote&acUVii;i0YX|i<(1brvV2^W{AYfF!fHzSPYb&8c794g(bEo2P*J?^Dq?vOWDB?8)(A$ zxoHf0jp<|G+UYY9EBjLr_?0;hKI$pmk}*^ zmnH@(>2`3d9o%FCO?W97pn=dA1=fotS>tR6wsmJ7);M<{y`Y!2u)>fuA6Q_v$9P_a zOx%+~5C{zo0x81+Y0iii+(Z)tjYf7b#tzoCfhJrL4A4N>Zz>zGKyWQ!PcV4V_VQ!x zm86Y$yp7I2CVYfeKLrn?Hx}p`oJ|8h=`<8W$01atPGB5(FA6aI1F*0SG#PbN0&>Yl zfn2hKdF`NH1Fi3qZn1fw$Vx;H7N`i|CcGbNO-DhTHVeD}9L63z5R9|7vtZn*1O(F- z{9PK96U=!VXfo~w5SYhp6gaoHgNHPb?kx9fu(cNrhOgOi3LIuZM0_I8^wYb=733<)dRgk;P>?42B{=DWQ1)$Lq0C@~;X6$% z3qAz`^bbNgNkKT-Fc}|Ep4pgpAPt3$HIUqmpcG3qjHv#iN?SqiVyW8qY?V1vl1)4TKfTK!~abXhBq02hgY@DHTE~uL%MeVF$zQ zU@04D!bQLU4Fw!KS$%mZWq@r>hv2~SH`tiN{D;p%32o;IEHL{}GXSAHU?7C@m4_0` zLOD;VAb3g>1khp!kJ-V)HqeCW1Vlrj>k;eRGSodj2s+{D5M@@F_%E)C1uZ zTt?4c*B4F3J4e9cAnU}x+1a~6)QSFw3@d?@wH+vLlJPvoUIz%>$d3mJ7($73Z1x5( z3od}oT$^5F;z3$lT!L1~!z>8u3 zaOhqOhc7_8Sod+b`&fWGje+0U!kd4nrL_fzL&uQj>*ZA?D(YBc7fit$_p|j`a)!=i zOaqwh>T}xt58}H)z6Lir|J@*ODipJbwjukrLyB>%GF@k=&?!OD(H8T z%uVt|*x1eA412c(lDGwmxuoq@D0Y&{+vF#3TiJIzV6RB_cKH+iaMR~>*ci4V*LN_D z-8-4a{9PcrnIx%zoggzanCS9)SdzddqE z@!B%Pzo`hHP_l?0)*=#iM^~84-7DXO>-K~9$xj928q#jR{7MY^Q)BixAm0?iR+H$1 z;I=LaIRr&V;+i2Z(CaKvz4^n@Qfoa-kwiGHG+bH-Xsg={*-% zC#|Q6Z;U0;hvg^Y>gAe;x<|l0{JQ+8{1iUpsXr#a7OyPTc*f(vyG`C42i^yAJyU)n zxGW|a7I}8Lo2>O6@44pQmhN@n({0^aGWi5-8%I(`t|OMn9gf>Z_&hF%m7DIM|LeA~ zuLGajZ%Zniq_@|8vTuTqp6A|{IxixVPs(BCt2h|=)j=T#K6Rj9M4o`A|BZ!?HMp_e z(F2@RoPrvhqGJEY#(KR2pE{UN=7OSspP%fP_{n|)^5_&?%Yxf$r|G_Tp<3azoGhSK z>YlT5gg|cxotIAt^m6IA99S^ALXF`Yr3>|;8XiCBVWa(Nu|f3^Q?QttXu z``5`8YJVMNbP;{T#Q z&9VQyC;h+Pt_8k{DtjlP&^v`n3e-|wbTiW3lFXO5YpAipKZ4!EZkv`))ns?|9Rbv8!+#-gq+B zYRcvO%agH{xT^EnDcr_5l`l9Q+uPK6wSU)XaaSRlzsL32C;9zna0lK5zUoZuP_{Ke zi@1rOJrmoUZN-@s@i+0tXJeb+SihwhJ@LNF1*ePO6dx7_E*+m~$4l%!^xu3o_H2{v zdmY+!&1Ne_;YrWSPwI}7*bB48ifBV$TK`)<(!}mg+%Z-&p0+#6_%8l|iS0-{)mKw( z_yVU&Jii0?tjDtPG$Tt4J7TiF%xhwp)ws!@U!TR}>7l%516F{CDnHaf zh(26ILBw%uoCU#`4623K?sQ3!xWY5xEaJr+?dGR*T2$7i#xs=Wr7~JOG`gbWE0{{x#RpbY0TaLw~Y>N z#d3_M#2@&~Y}P8FTEYC4CT>Hy*0*3!`Ez%1XIo~$({tx#vliyOI8A#$X>pN1n>CNy zDt_oIE|w3}tP<{%R@akN&4@KQ%)*^HEG>Zod=M+cZyLcJxvaVJ0|j`MPsu?ysZF$Q zrjylZ{(KHg#}CtlG9g|nTaog*5!~7aA%3I~jd)oO%ZfXQ`b(_9+rzo7HG228W@+Zv z#D-g%xQKL<`ID^?cM{*y8lBFO%Fd*0!M_s96it~hNGgxlmr*|+COWlnZyQ8SmAW;g zo6B8o;5eJFYlEoYo3$?ck+L2CL@0ALWx`IWtca0O|2dRfFxcGF79&+EbuW=_`B3h~ zDB>BrE81cZo|RfWV@g}gUPF0UXnRO4`8FW!nLD{T7jfOWERBz8%NVOC-JauPa*+)t zHj8N8wg(#yh))ib5AxuldG&mc>4SE4GUz{6Icy zAGi7>ZAzo~mVA~Hw^?d)3`X9?io-}>UTkGqd~ZIB#cyI(Tj6s4J91ger&w7E&$B{T z%+Cwmi@L6d(6uz-G2|l(uoDmGO9~KXPytLg@~s6hP1Jjy%~uq#6m}MS5c2BJ6Wc@k zz8)w=XjAcIe4#Aok3fmidt-Y-&2>@qdhv#spg$KpyTtrxC2b{I>`Jx zh#d8fk$(pq(vZ4n9QVi);{jyN9GKgpMNWSM+WN11y^*lyLcL+%|B0!ep5 z^8~#)g`X46NEgkfPT%oAcS3~tPBLF%`fd5;d^@oeWi$3ftYA(R@7x(_uja*_#Tp6^ z40~sI^wm9(c4wKkXg+^}0wHZQn^=U8=z<7%JV_VK_F3$Uh>J1r0^{MjG4k$$sT;>4U#V8Coq(yq_oyyB+i3YeYy?h_OB=M9a4&W^(vsT@Y*$jryLQD53LEJsm2cAoJ z_b)pd+rKOn)4z2Yikl`2@j@ef9>ueh@lide@xpZZvG!@cU^2@}{06^mM8Z9zyK(z> zPG!roJ<;)Wji}p_`bqc_1HUm?=)f-l5U`SGO+oiJAJn>k=B=o;{3jnXh27cra9C5V z%7_|D{&#eofp<-MJlbI4H7YY@JMJl9nWmQA`Asue>+I$T*Sc)G$fxW(<+DI~{o`22 z1wA)+))LB<39aNMGguaWVz^}nYl@%dy+4C3QQ9wt3Fh_!A2E}OI|~-f#BmqDCYs6K zRGQ#dmO}YCpZ*w>U-I>jv9;nMC9|+6y~)SVV(E#oxa@-UbG#mv-+KP^EcQ%?3%In1 zfo{Cet%Zrt7Dvg_M4zWp`^FGispT#2tW@!R{72#{WJx?8Mn9XiNc;dB1!6Yd5*2ek ze`Yo-R$5ELCaZa)Ihf>8ykHJ%8ejQ3wxab$EyhQD$Q-t!-+fOM-uy&;ue?k zSpyJj-YyR^(cT4B5}&+^*Pn|4eqfK*SzvQiXLyvwO>)-zBD*D!Y8(s>~YZ(tOW;xw`4IeK?Uj}a@ z$xh-xyp*jZ2gxq1>l^y-T*BHJjcz_~DNDksNh7;Prmn5{vJ%XDE550O-N*}U%u-a@A)a2s((q)1!V>hiQIba^(~M01_oXbuG)&r> zx)P^IPBmoW3*Bdujm%KbSl?u*ha;A8j$w{ial3n zE0E47KdHBkPv_5F5;~^yk9ENqBb`oL_~_;AdeeRjZ?^)gP2vWPFNxErd6b3sTFzRS zdXSuH;r~R}y4R0s{5o`COp`HprSV=-;;J+)FE@Wy$=LQr3t!Ud5X5PODf`6UqV7T&3LGl(mdVzS7{S|Q*xy^*y2y; z5MP(Aq^-zf+?K60Z||sBti=eQmyC0k_7|33s-s7#Op*EuPvgt7l@^MdWGCN}tz<`K zb`;UC$jp*+mCW!mYwb_x%bB@hu7oVhw4S|uU5=8*%LggVMb;sqbN)%{4BXfny1*dC zf={3de!Z5a*rMt6_WDj3~ zFa_2mDVm9$w@cYg>{uY>@O;TZZXBRwck_0aTeOqh?8Jsa6pr}n?l@y9g-Uk9)wO(g zq4Ec#l^5Nt^iHrYle_07=38!7(p>JAvLAZ}aj&IvJGV&=^(FaM$I?Pi&=xEn%s5lI-Xr?d&8QNDh%4Ab&l9 z01{{}1T!7rLzFNWAa?M=Tb2AFwzIO?LTrAJ=88DVXhlvBk9=)CHLSV7|jdJvogCA-pI|vZ#Ta;VZwUZv$EOH0Lr9ugzLIS9O11e#-E0fY3PMMvIzW7> zBBToO>cwQThla-fHT6Pl;Dtl6V}`zy%|7C~Wt8=})Z2;8RA%XARG7*w2bEP}(uYn+ zKliti1LUvo76F--%Mdw1r_A3=Iz(z^@+GO*kw4Z>tl_n7?OmSqCs(`P^06DR>2@qfF+y79CG2I9Ys z5(rSop8qrfe(qkJam^#;K!*O~FhfS+vWUeY!x)G|RN?>D%HMFS9B#`vickDMtNbmL zfYl=tFca4Y6nhMD6Tsdhgt z`N|4s3e1W;&q}p}*uv;6)rQBo6(Z;(x61od&mDFa(IrpHK&TsRLpwIqDr)r~|WCb`YWt z9K6VZ>$mPVX_km}HwU@7caom?%6e*_1KULCU1=5|zOtT5C_+8u{7{SW)Ky2ZKXdY%iDy=QV`jlA)&{^aZtv0c)w~;xTr+)S=sZKY6MHt2Ay^o8 z43S}w41C1aI^R2(Nw$Djq&Mf@S6Pg|>jb4ZCUrx8jrs*p4pagStu<;3pa7WS-#Jkk zYAje#dO@`;zo41{10dx4>mUgEJ>VR$fEWH=dA{IMT zE_JGR{%ctz5bYxph?Y;+k>7%>56YM^{PoGo9T_QA)#{JHCSV_s1M~-qffC?Egl9aY ztjwEqxLO?r zg%0Q2Z~_tqc2=u3z#*U%cq0lK&|d=DGYDgg9-cUE%)`^BPMrKe_wEy>7Ck({5YxFz zo!F^LjRBf>s8aiY*LAB>4+7`AxvJFE?p5kS2yf+7sp-I5*;VRCSyk#q@ZGsp>T=*U z-~iAA$ZFSS;Qg4PmrqC3Kc0%HM@~l6$cc!W3w-}$M9nxKQ44{IfDf4ZWkfAH6j3*P z5mCzyMARSmN7SufN7R#m!j47M0$>I&oT}XD8vS@gEnXB+KUy47*Di^urTFE%jv-4U z>Q8_!3x07~ZCSJpE{UiyPejz0foR(?r7~_cIJ!M*d7L`U1LcZ{dTwPz^*j|(yRV8e zMthX8ww${w<7AE9T7Di@cAR^q-_y( z$$JrXCvXIa*%eW52gbdE?fGSFdw<4L9bQ8FixJiGdPE%#OmpGiTHqLv^h0wB~pE^_dA;$H`?G@_3>Oizb!}Ml_Dj@9i<)35WzvCK+isPykP&kRe!to727>YK* zdN4gPJt3jH7Id3vA3br|=8_$V#*sTJ)UI_f1F~qpjZjzrOJw1HO*_{$l>gR=e1wfi z?3%%^qN^J>p|0~tp6XUwx&rT1sJ{elVRtP!-;+8+phC3*!p`?@h3cf`x_)8kM4#S3 zg-Z>Rk)aIEz$(BDgSt+_p>CTl+hPApAna?~xoQX1mF{Z<+`p?rRd@b+%)geO>lX$q zL;wTu+WWHeN#J)e?AJ=>`6%5GEb9q;f)$fBiDlBnX%nXM9`hCEvV2^jKDM_)y+|yU zbp&Zyx6#`LTVa2Ce}(G$RAPVB@>^Km5GCt2b@_??*a#+*q5T&))C~}O6`zBjT~4a5 z{graV%f>JI2Q5$z8(m4?RjA2FBsOCC(Nh&_`_tg>ahyQ=1#r^w3Y7y%Coo#jT>v(Fn!% zuPW5fjThAQz>~l%pdl|@q}=M-9(zH3tigW|T@i0L(4SpUqnCF>{t3uc&^=HI%!s>i z!xf!Z#>r%M_|q3F$1;b%c4Flq@!92`kYd1H<_7WP41pZTJpemku;Y&FJ8)YOU>l4l zGeDkz_Gf{EK!c--p(|iO1aZ4^3?KKZV)cLWs#0L&_I0e^woQuF-00HXptvhk+$Flp lxGkVCQ`6n+gX_OoA6j3&KD@qiy