From 41debf9cb612a1c1f4a80d44d8dfde5e798c3be6 Mon Sep 17 00:00:00 2001 From: "Taro L. Saito" Date: Thu, 31 Mar 2011 17:06:33 +0900 Subject: [PATCH] Fixes issue 4 --- .../java/org/xerial/snappy/LoadSnappy.java | 16 +-- src/main/java/org/xerial/snappy/Snappy.java | 96 +++++++++++++++++- .../java/org/xerial/snappy/SnappyNative.cpp | 41 +++++--- .../java/org/xerial/snappy/SnappyNative.java | 9 +- .../snappy/native/Windows/amd64/snappy.dll | Bin 644608 -> 644608 bytes .../java/org/xerial/snappy/SnappyTest.java | 54 +++++++--- 6 files changed, 175 insertions(+), 41 deletions(-) diff --git a/src/main/java/org/xerial/snappy/LoadSnappy.java b/src/main/java/org/xerial/snappy/LoadSnappy.java index c17fd23..aff7436 100755 --- a/src/main/java/org/xerial/snappy/LoadSnappy.java +++ b/src/main/java/org/xerial/snappy/LoadSnappy.java @@ -45,12 +45,12 @@ import java.util.Properties; */ public class LoadSnappy { - private static boolean extracted = false; + private static boolean isLoaded = false; - public static boolean initialize() { - if (!extracted) + public static boolean load() { + if (!isLoaded) loadSnappyNativeLibrary(); - return extracted; + return isLoaded; } /** @@ -164,7 +164,7 @@ public class LoadSnappy } private static void loadSnappyNativeLibrary() { - if (extracted) + if (isLoaded) return; // Try loading library from org.sqlite.lib.path library path */ @@ -177,7 +177,7 @@ public class LoadSnappy if (snappyNativeLibraryPath != null) { if (loadNativeLibrary(snappyNativeLibraryPath, snappyNativeLibraryName)) { - extracted = true; + isLoaded = true; return; } } @@ -194,11 +194,11 @@ public class LoadSnappy String tempFolder = new File(System.getProperty("java.io.tmpdir")).getAbsolutePath(); // Try extracting the library from jar if (extractAndLoadLibraryFile(snappyNativeLibraryPath, snappyNativeLibraryName, tempFolder)) { - extracted = true; + isLoaded = true; return; } - extracted = false; + isLoaded = false; return; } diff --git a/src/main/java/org/xerial/snappy/Snappy.java b/src/main/java/org/xerial/snappy/Snappy.java index 8cd4cd7..f39262b 100755 --- a/src/main/java/org/xerial/snappy/Snappy.java +++ b/src/main/java/org/xerial/snappy/Snappy.java @@ -27,7 +27,7 @@ package org.xerial.snappy; import java.nio.ByteBuffer; /** - * Snappy API + * Snappy API for data compression/decompression * * @author leo * @@ -35,6 +35,11 @@ import java.nio.ByteBuffer; public class Snappy { + /** + * Get the native library version of the snappy + * + * @return native library version + */ public static String getNativeLibraryVersion() { return SnappyNative.nativeLibraryVersion(); } @@ -53,7 +58,7 @@ public class Snappy * @throws SnappyError * when the input is not a direct buffer */ - public static int compress(ByteBuffer uncompressed, ByteBuffer compressed) { + public static int compress(ByteBuffer uncompressed, ByteBuffer compressed) throws SnappyException { if (!uncompressed.isDirect()) throw new SnappyError(SnappyErrorCode.NOT_A_DIRECT_BUFFER, "input is not a direct buffer"); @@ -73,9 +78,37 @@ public class Snappy return compressedSize; } + /** + * Compress the input buffer content in [inputOffset, + * ...inputOffset+inputLength) then output to the specified output buffer. + * + * @param input + * @param inputOffset + * @param inputLength + * @param output + * @param outputOffset + * @return byte size of the compressed data + * @throws SnappyException + * when failed to access the input/output buffer + */ + public static int compress(byte[] input, int inputOffset, int inputLength, byte[] output, int outputOffset) + throws SnappyException { + if (input == null || output == null) + throw new NullPointerException("input or output is null"); + + int compressedSize = SnappyNative.rawCompress(input, inputOffset, inputLength, output, outputOffset); + return compressedSize; + } + /** * Uncompress the content in the input buffer. The result is dumped to the - * specified output buffer + * specified output buffer. + * + * Note that if you pass the wrong data or the range [pos(), limit()) that + * cannot be uncompressed, your JVM might crash due to the access violation + * exception issued in the native code written in C++. To avoid this type of + * crash, use {@link #isValidCompressedBuffer(ByteBuffer)} first. + * * * @param compressed * buffer[pos() ... limit()) containing the input data @@ -107,6 +140,32 @@ public class Snappy return decompressedSize; } + /** + * Uncompress the content in the input buffer. The uncompressed data is + * written to the output buffer. + * + * Note that if you pass the wrong data or the range [inputOffset, + * inputOffset + inputLength) that cannot be uncompressed, your JVM might + * crash due to the access violation exception issued in the native code + * written in C++. To avoid this type of crash, use + * {@link #isValidCompressedBuffer(byte[], int, int)} first. + * + * @param input + * @param inputOffset + * @param inputLength + * @param output + * @param outputOffset + * @return + * @throws SnappyException + */ + public static int uncompress(byte[] input, int inputOffset, int inputLength, byte[] output, int outputOffset) + throws SnappyException { + if (input == null || output == null) + throw new NullPointerException("input or output is null"); + + return SnappyNative.rawUncompress(input, inputOffset, inputLength, output, outputOffset); + } + /** * Get the uncompressed byte size of the given compressed input. * @@ -125,6 +184,21 @@ public class Snappy return SnappyNative.uncompressedLength(compressed, compressed.position(), compressed.remaining()); } + /** + * Get the uncompressed byte size of the given compressed input + * + * @param input + * @param offset + * @param length + * @return umcompressed byte size of the the given input data + * @throws SnappyException + */ + public static int uncompressedLength(byte[] input, int offset, int length) throws SnappyException { + if (input == null) + throw new NullPointerException("input is null"); + return SnappyNative.uncompressedLength(input, offset, length); + } + /** * Get the maximum byte size needed for compressing a data of the given byte * size. @@ -140,11 +214,23 @@ public class Snappy /** * 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 + * Takes time proportional to the input length, but is usually at least a * factor of four faster than actual decompression. */ - public static boolean isValidCompressedBuffer(ByteBuffer compressed) { + public static boolean isValidCompressedBuffer(ByteBuffer compressed) throws SnappyException { return SnappyNative.isValidCompressedBuffer(compressed, compressed.position(), compressed.remaining()); } + /** + * Returns true iff the contents of compressed buffer [offset, + * offset+length) can be uncompressed successfully. Does not return the + * uncompressed data. Takes time proportional to the input length, but is + * usually at least a factor of four faster than actual decompression. + */ + public static boolean isValidCompressedBuffer(byte[] input, int offset, int length) throws SnappyException { + if (input == null) + throw new NullPointerException("input is null"); + return SnappyNative.isValidCompressedBuffer(input, offset, length); + } + } diff --git a/src/main/java/org/xerial/snappy/SnappyNative.cpp b/src/main/java/org/xerial/snappy/SnappyNative.cpp index 5ab24ef..cbf5638 100755 --- a/src/main/java/org/xerial/snappy/SnappyNative.cpp +++ b/src/main/java/org/xerial/snappy/SnappyNative.cpp @@ -42,11 +42,15 @@ JNIEXPORT jstring JNICALL Java_org_xerial_snappy_SnappyNative_nativeLibraryVersi JNIEXPORT jint JNICALL Java_org_xerial_snappy_SnappyNative_rawCompress__Ljava_nio_ByteBuffer_2IILjava_nio_ByteBuffer_2I (JNIEnv* env, jclass self, jobject uncompressed, jint upos, jint ulen, jobject compressed, jint cpos) { - char* uncompressedBuffer = (char*) env->GetDirectBufferAddress(uncompressed) + upos; - char* compressedBuffer = (char*) env->GetDirectBufferAddress(compressed) + cpos; - size_t compressedLength; + char* uncompressedBuffer = (char*) env->GetDirectBufferAddress(uncompressed); + char* compressedBuffer = (char*) env->GetDirectBufferAddress(compressed); + if(uncompressedBuffer == 0 || compressedBuffer == 0) { + throw_exception(env, self, 3); + return (jint) 0; + } - snappy::RawCompress(uncompressedBuffer, (size_t) ulen, compressedBuffer, &compressedLength); + size_t compressedLength; + snappy::RawCompress(uncompressedBuffer + upos, (size_t) ulen, compressedBuffer + cpos, &compressedLength); return (jint) compressedLength; } @@ -85,12 +89,16 @@ JNIEXPORT jint JNICALL Java_org_xerial_snappy_SnappyNative_rawCompress___3BII_3B JNIEXPORT jint JNICALL Java_org_xerial_snappy_SnappyNative_rawUncompress__Ljava_nio_ByteBuffer_2IILjava_nio_ByteBuffer_2I (JNIEnv * env, jclass self, jobject compressed, jint cpos, jint clen, jobject decompressed, jint dpos) { - char* compressedBuffer = (char*) env->GetDirectBufferAddress(compressed) + cpos; - char* decompressedBuffer = (char*) env->GetDirectBufferAddress(decompressed) + dpos; + char* compressedBuffer = (char*) env->GetDirectBufferAddress(compressed); + char* decompressedBuffer = (char*) env->GetDirectBufferAddress(decompressed); + if(compressedBuffer == 0 || decompressedBuffer == 0) { + throw_exception(env, self, 3); + return (jint) 0; + } size_t decompressedLength; - snappy::GetUncompressedLength(compressedBuffer, (size_t) clen, &decompressedLength); - bool ret = snappy::RawUncompress(compressedBuffer, (size_t) clen, decompressedBuffer); + snappy::GetUncompressedLength(compressedBuffer + cpos, (size_t) clen, &decompressedLength); + bool ret = snappy::RawUncompress(compressedBuffer + cpos, (size_t) clen, decompressedBuffer + dpos); if(!ret) { throw_exception(env, self, 2); return 0; @@ -147,9 +155,14 @@ JNIEXPORT jint JNICALL Java_org_xerial_snappy_SnappyNative_maxCompressedLength JNIEXPORT jint JNICALL Java_org_xerial_snappy_SnappyNative_uncompressedLength__Ljava_nio_ByteBuffer_2II (JNIEnv * env, jclass self, jobject compressed, jint cpos, jint clen) { - char* compressedBuffer = (char*) env->GetDirectBufferAddress(compressed) + cpos; + char* compressedBuffer = (char*) env->GetDirectBufferAddress(compressed); + if(compressedBuffer == 0) { + throw_exception(env, self, 3); + return (jint) 0; + } + size_t result; - bool ret = snappy::GetUncompressedLength(compressedBuffer, (size_t) clen, &result); + bool ret = snappy::GetUncompressedLength(compressedBuffer + cpos, (size_t) clen, &result); if(!ret) { throw_exception(env, self, 2); return 0; @@ -177,8 +190,12 @@ JNIEXPORT jint JNICALL Java_org_xerial_snappy_SnappyNative_uncompressedLength___ JNIEXPORT jboolean JNICALL Java_org_xerial_snappy_SnappyNative_isValidCompressedBuffer__Ljava_nio_ByteBuffer_2II (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); + char* compressedBuffer = (char*) env->GetDirectBufferAddress(compressed); + if(compressedBuffer == 0) { + throw_exception(env, self, 3); + return (jint) 0; + } + bool ret = snappy::IsValidCompressedBuffer(compressedBuffer + cpos, (size_t) clen); return ret; } diff --git a/src/main/java/org/xerial/snappy/SnappyNative.java b/src/main/java/org/xerial/snappy/SnappyNative.java index 6f73125..7b63851 100755 --- a/src/main/java/org/xerial/snappy/SnappyNative.java +++ b/src/main/java/org/xerial/snappy/SnappyNative.java @@ -35,7 +35,7 @@ import java.nio.ByteBuffer; public class SnappyNative { static { - LoadSnappy.initialize(); + LoadSnappy.load(); } public native static String nativeLibraryVersion(); @@ -44,7 +44,7 @@ public class SnappyNative // Generic compression/decompression routines. // ------------------------------------------------------------------------ public native static int rawCompress(ByteBuffer input, int inputOffset, int inputLength, ByteBuffer compressed, - int outputOffset); + int outputOffset) throws SnappyException; public native static int rawCompress(byte[] input, int inputOffset, int inputLength, byte[] output, int outputOffset) throws SnappyException; @@ -64,9 +64,10 @@ public class SnappyNative public native static int uncompressedLength(byte[] input, int offset, int len) throws SnappyException; - public native static boolean isValidCompressedBuffer(ByteBuffer compressed, int offset, int len); + public native static boolean isValidCompressedBuffer(ByteBuffer compressed, int offset, int len) + throws SnappyException; - public native static boolean isValidCompressedBuffer(byte[] input, int offset, int len); + public native static boolean isValidCompressedBuffer(byte[] input, int offset, int len) throws SnappyException; 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 4e0116654fa95c8d83aa30fc4dfaa8f64d05a358..2da27c97e94fd74aaf62c201c10d46aceab8e9a8 100755 GIT binary patch delta 48484 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 T&DJ&kH3!xNeAN%g7i0ei9Hbl! delta 48561 zcmaGpcR&=m*Cewu!>TJFEP_fE6a-YT92P7Hx+p02-n(ZPRBWhVS=YToM-8^K>)8wH z*u}=$yPkUL*+lEAuIvD@Y1yD6DGq4yly-QB^fw=fhkusbg@sNBvm6}aj8@|< zgYlEK!EWi0(5y^vprw654V~s4PhM*6D}%-bc__nblBM!u{W?v7V9d$wm!F>x)Y$Y# zPU$TH1})*2sg`lOm`VjX__YwnSz0Pai+6TAI9SK-%X%UPAw20H$yr-1bZ=irhm1TS zgZ&I<{!>$ESlV+(gAp0hjyvWqEX0?pX!WSC6sz^|qEy?DiJNt8Pt%%EB~&`1O~W7e zN{x&8c>b|hL#b6eAIpe0N28fB0lsm;7p>WQrAfv5cW7_tLNq;3G21~_Un0`zuK%8& z4|RibFK&WpQm4#1fyscCv&%(?yka&VGBVnN^NuNwv~ylhmZFN+#*Yt6DaGR}J?#Y^ zKtKM~Pvc-c`VM01Xscx~#RvFWVge$O14O2z^mp;vL~&d9?$8pNhNcYvA(*I9CG^9Q6awW3dE~<(owfSeB!8->*fb-Dz0x+GC>uHr2;|H5Pc|? zc1w%(qj6q;$<@6w-rrwp1cj-;G|GL0)35CneKWwAbx^JpTDpgmuS)Zvv@cd^ap^Ot zg4Ew*94ae4@Th|G`be&xwQ>8WQVY+rcy1qQu;)CdO>GoKt2;oY8BZjqGM!L)X;7I= zrwy$Y&Pq^go%UFADf_``O)G`Av>nhUKa$+b9dWwWQlXt|3$$$yr6=WjI`vg)T`8@> z!>o2*F$fit7JHY&vE8M;-Zha-O(oSWUpzKiT zl3z&Qdk-OPluA6MUbN#Zld|nNNBP?ThkO}W5^_nY22=;@r_a=f^ng8p7>wxwCus?Z zvmA_C>q%6!=q&D$W6%HqP1Zy^hk) zcao}>uiS8wU0kH(p>|xLcsD!lNb%-&yg0?{Nz2OXwKIFLxn%tS>0tR*IANXS5|C7~ zVpAp5KF|+VEJ*=9QKa-fU_gZyaSEde^o6z3pAHWFGUy}{39Xq4I@#zR-$AacGV61AL#d6GA*40#qb=n`dVgBUVOh~8BAW0t_ zhC-!A!BuhY3Mo1GD1N^}s#U3@+pX1wr%WoF*-=_sDHN~lDP64;f!i(5at!%|tK~I- zfTc|c80(N!j9Itdq!j3!e*({7_Blk1Cy<#@AE$qoRS|?xNJ7su5L_PFJmhIO%iM zcKB?R)GE9JUL7Tk3vb}!f0f0|YHN2X=}fpEa*$qxm&OB@NRkOZLO*4-tJxpn3n#M<|5O<{9j>8xF4qFj7g?mQk&*ahj8wB$i0AmTtShVk!;G9% zY&cktKa|GRs#Rg{eCPvFy=>7g7~2#AIpuja$f*-DpVdmbS*tOMl6-3q#lOvwGHOTR zW%Hy9wa4OVbEUXCLHarqHE_KV^X}$ps4A*wk3pJVCludJly=sMz@vZ7ves#c5SLXc zY6A|+{1vRKO9Lw0A%+>f$c)Zok$`L7Z}HOC`puADGBnuh7-9m4rX0UWR%8k8l25}1 zFpc$S7>|6V%?(5GTa)x>!*INOv{W+MyVR@htjRY|s#p2t$x^-Ows`M(X?}F&4u*K+ zQG>BdKvjb=DIn5dJYz6U2xwq1p%~+Z{EVtFvJJ)@gNZYk+60U>7;mby-b(@|Q~!Fm z2^enZeZgQZQ8FGb!9nq6jfeFFtcj$%4L!Ny85vUlM$549RdS5!>y-a3KR-M>?^vFe zg;*Ng#K$|vcrM=9Cm<0l8hXDl7_Wmrstt49An8@KzDDm&%vQWPCLjpbUvb9c2IDj9 zNlSiyeDCyt4C;pQ88BLyH5%*dclr70*-8G=-6jF9bo3gGZ@_J9ZN>IEX;ADU&l@>P z-EF{+H|EA0-!wOC1S@(cc{Lu1bzh}9jmx3Gr7exiphwcF##MtM7>a9#-ubo&(3YD^ zL^8LmM^7-b-n7|%tlJyzDP+CH7uNDi_Lg_V6;DW(CXHJy`^;G9R2Gd4tidAHZh;0T z1yqfJZt0yA(1Qi(Pg{6Oc+j?)xz0^+ZuTUlS?Cuwl+1ZjNBme?~vI^VJ{I+azuRS-gF zv%0oU(4foG#`eSUlpc~-hq~yY)Tu)QJhgk)k`BQLlWvlwV}0~N5)Fu>6D7` zg05L7yL{nsRK2Vdy}U8@sGIe;Pa4AMwX+8GbHV6H)`S6v1avv8&ahPohlfk|hL_X3 zhie`7(m6BU`10-ABv*quN(j$#8F3k7R5k1Is3l0dKa6e%q7H^hvyw+>8!A|%FiA6d z7dD4x?H^qa;aVZmmoe2b3X#IcZp1?>Nq5JFIa(^QisvQQlruOzIO|@@cI0@iA|u|G z7LFgO9i$*bDoSn>lC@aDJSs|aCya4iUV#bjlIBc^kQz;F>=>mG>M_ExiH)`80+@tv zfK+PI7{}ksGi<%&GATkjHmR{=xI&0#ghr{29bdtc6dLkLnv*)#af*WcD$N1$Mw1&m zmR1OUK&X~=eDd#{<8v=2|3*qmPj;NBATy;A(;}qu(;92bdNXbr@2rv2)?mCQO!A!B z#OqWUSoWF&PeS38-U2SU26K%qfEdhSo6ATOXD-y1VG?2bGLnyRf;Q8WX<6u*wc1!4 zIsRRmq5nuvW{uKjD#-fMQZLgOZMcHfDJ?xPjdASg&IAWbJx$f5d9!03H44F5x^JqM z_`Hg%NY4xf$m$S1POLoMoKWL&uzV z)k)g#~q7nAlyvM z`e}(4&s=j^|(w6-~(LnbvS@$+*wCH2j z<1BX#dM$mGeRUTDVXxkd2GOKDD+TYV6+DYl^g!9`$mVT+3MGU#rE~ZVWphg}K>E{? zY0r>qS%RYjPAX>M*HHi}qhxA>$nrm$C#jniHvmoP;=qfmZQD_D%yItGTW13tjRN^`-?2|fpQ3UelBf17}|Obg2~!M&o`31@-G@p z{5(o9CpsET4dCEFKaHZ(vXdX0_y`!0AXX7#=|cx6tOCngcn<*SFJC{kHV`d*zEtUu z4|*UqJv12q*T0U0TsHNg;2{8wC)Cnne37re4HPQpYs@j` z=j*>o9@&+(0;mA*o%TpAvg^8ShsmckTv~_c>laXIlNZrT%d%rqJJMMRw%fkezoKb6 z@(sYP@KXk3jl;mP@OnrBt;Qi6T2YV=yc>WZ8YWW{vDpAdDB#I_y$5qf*Ydjv?QaA~ zzP|5IT8Dj92@9(TH0$U3%J!vHEOaJ+j!lgW?B$k~bmRs?ucU-ywH@_OVX4Y*^pt)* zR@S8y?OdaEZ&jL;X0J34Y5%c_Vmd@LU;jj^f4npnJf#lD>-gt-P!d<2wNpcVo%Ux^ z9fK+ABqP;usV?n09#K-yFuH;;>x>@K`{RDNv4`YwqJ5YS6c~Rp7`r>>>;0;+w)z7J z6TU70@9Yox-!BJAFGJQ+GX3V?A*4^~WNZmgCa>6M^Dr zMtUXba>{$eGdKs>c~=dlL}v&QWOujHk|C!`o5#?$w2vtHG3faOu!X+>f0e98w8~l4 zj)~s~3>XCN7Jd^zG~3uDKxczvFf`4&y+F>_myeLnE_#SO4NELo8-u*F$fLVyeb8rYMA=H3T<6}l7IMR;}Ij@9+JTN05;jvvYqB- zJMGRk@@^ks^-f!muMY>|yvMe%raccb=>_1z0E$kF`Ww!m9Fi-r7Qb>j!ao8$EgK~l z%c~xKDqlYh>YDg7K!garOp7`|#Z$_=*&Ar#*HRk%m^o_~815E+!F$Q^^rliLE7P$T zrG+97`lp7otCVwkZ0T;W1D=*Wwhp+PK8j8c#y2KiN-3%BnQGYWoiyuA4YxaQ!GBXY zNHvD!@Q1owDe1}?|7w50Wj|j(C5$D_<$V3&P|$svT`#RBSgf1)X;3w9GaSJ}6k&Xg zek%o?4Jw&VmkY)k6ImgU`-!MbtZmC?3TsNqCa*f6EdPqpV$99g{{^tYc*6K8U%#4x zm6@Bq%>HShfM2T(##>}gj>bc}cD7WzU2jB(+>X#5I$ijh_%(nVOrFq&2$0noj9zD) zK_|;{sA$sd1T32SDbwP*#aux2&BHW)4W`kyLEP8S-xHhBepRRX^to70|mF!42C zNdqpF$8jYk^M%?Kc~D?5wt-C;oy_v}FM@2UB&t+V)gf4V2~|vgORg8o<9>fjkr#dN zM4i;}Vq9<~xGd%C%N0~RN+G4%3;^>otv5c>wp^CZTx{<$?j`H|cF>9n(27+hq-vMS zR~ub|>KFj)XQdS-?K-XiG4D{p{@PlWDbv4{jF;NG9eAO{C0&UN><9V#(z{E|%griI z6;6N^xABh&5Pjp@)S3)rglulgnbDa(g z2*`JlO-Vt=K<8QM)0N=TD`B~Ad~Jj=WdI3Pn=VkQb=AwQ!oTWt36KU|tp@wS->!P0 zQ__K}4e;^+>HF1Dcw>2K)HMUTBptX`5#5v?T`P}aMXJ3%2mAX=ORlHcRfbno&X~E5=IKVgS!Oac`ozANBXC>s_{=6fMK{ied zX~$67gu9yjq`+ErZ@@aD&iSmg+vkyg-Z@8yhI{B<3ewYhB7jXO)8KFelJ*z}GvRq@ z)ZGl+=v)^6*9VQ`x07%YGxN_R?oklBmKFLa3Zb`IgB~|U*zu;c`^jz`SxOrEv^TEf zB3*gf9}jYo>RLnad>3h;bv*WP$$DZPgYedpQuk+Y-=(B9{n-%gSyFocEE=7VBJ*PK zfH%^lyg2OnMmm)jf*ngrAM)@N`aQB0@5>PjWvW>jii}>-# z-8Ffi=ny;Yapkc+P*#st#1_E*;NdhWWW*0PydASJy@WPIhi#*ycw-nJE4jU)QvBl9{ zW~lqJ%;qtp|I$bALMgy3Pt4i{=om#v#7p>s=hrj zYk`#Y(QuY(S518FZ4^p&hu-y}oN*&zMR&k<)(zA+ z&`@yC_x5o}JlFxm!1=RT_i_i#r*`^m13BP?O8f6^TQqJr;b_|yHdx^E3)_+! z&d8_d4`K^{5bIc!f2=?S1!%$-<>z+%p}uEZlI)DCrJfw`=wLhrCrdMxlO=n@_+`L? z@#lCf4>Og-0z7YqZS8O7qXAFNO@g(cYJdvl_Oaux6mMh4^%Re> z;~&NWUfqu0r+5J1ECzIQ!B^PA`jHOq#re>CAC9qJ{}o^u=pUWQS{LMx+gQnI7jzPr z*-Yk@LRIu}u`G#J`V>l{$MTI*$Q9ug4doZEXd=S?4dlUkq(Qh`eKOJ=EyPpm$-2^L zG{V{_0wR^+gG#gQrj%#o_{gh1v<6*9E~bL8&|)RFomq#|{sK3QCmI`R|o4FX3N zRs=@|1TjYr22n?9lEh%@NE9&zGe=%fbozV}R0)-HKN-fN<_EK4!O-jDE_bQ~GI(Jv zGCvfx#Vdo!^H5X~d)6ZQFu?tT$>1;)gfk<_f-o4?10&@VVdxi(JJuv^tAaqU3S?7N z1WQwLwJK_d9*~f56pTC6Ann3IJh%p#77nw3m8=PeSzvD=DWsZoT zb3`CXjzCFH5zxI3PSfc2I)@L8B_AVDC#RJ;knJ#5tHLprS@)dutcDspCQzbTcY$oJ zhFWMpoM2eR0Yt2hT5A_6X!!x8cXc$rraPeVWYEUFjX-eRKk8Mu=jzM+NM-m!~%A>C&F&2ejIe|=! zMNM%+0y!0n>R~>CXd9z?r2?CPLOMX%JZ$Epn#dg+qiq^=g%oRstmupUwi&9TL4V8T z6VdM&*Jw!2wLCJT)qoh#zDViyuvY$gI_ibcU-J1GD3HT@tCRP$;L4a;U3NDiKa5V0NHgGT2Fo4INRRL@Kg+{^ zK_z*-1(C@T3cxdwyjDW%Idq345>yG@mB$klq`}$%vSu*~qM8?@st7lKvtTKR2fdLi zEJf)Y#y(`zau~QyFG>9s$P1TyDR*0eZXn!vwj8+%Ez)vj4yrx%eiLe`!!?s-!#+wc zwpOL{$0@x+H@U+lRHhg=?iZCl|4%dp<9;n=kGtrZmU}iur3YG3(;ytRRUYAttdQd(aC~uGda6vKaB^|D+bfrh!;_q_Z-4oh4tS;> zF8~8Wu^D5rg}iP!{uSfV@p9xSTt?$qX^-Gwov+I$&DP^^*)#?pfZIlYlV_7~4|)AK zdMMt=?=3t^WA2Qhi`LR2Q4B2Z>$Z z$)eRb0=kgaj=3*yn2F19c+V<1$Aoh=IO?XnJp;c-=(@aaF8-*&376#+1ivYPKFRY| z<1v^+#{`!31hT#a8M+DAmq)C_ml2MeF2}CNnBz_yEF>X=1dp-j6ghbd9*sG_y@i-c z^_JW5RgC+Omn-hXi5fhAyPUEI-$l4avfObW9;(5y8|71na5pVFAqSnrCU+dWN8WW8 z9~C)1Rv@qL;cD{cC-^AV8aE3tzv)vp%VTqKZ=`kG#Bgzw{OB3pi?#6(0^rwOFRy)p zx0gjnT3+PL)j`@usf<`HRR-b^gtvRh z39j5CJ$f%&gScfJj_pN^q1;+@N3I&i!Gv(CKM8NZm6c0W;p&&bE5hZ3I$RrsLpsT; z>T+ih-uzr1QI9)>aL;z+b!Dy$-u_HZXu#Dgfv5P&=6H}r$K(eIT$mPnU6ozhQ&DZC ze5nJc5z%#Wy*pP6FX>KPdT_n*%+vDd9^4ilJBp-2Kkhp^DF^oFJ|paPRQ4MPHPI#c z-XM+_aZUpHqdOOgXD1N9kx+B&9(npmTGQh_sX3PWjx$QjHB-0+8gx%SH<7bo&Z9n0 zejko&$Y&>W-8tN~6bVb`MxbZ%vUKhq#^zP>lo{Ng8muWMcbm-})PSjSbGUGX{vgfg za^BccBM+U+tw2~uWS4o|O$~1TO@5xq9oFEU7v#-LIT-3q{vm(;#(Ckyf8_7KaUmR+ z`jRJ=(>Wi~Y$ex{D*@Pwbk2($SjnBj70bypR&nbQ`YMO7;T(C~oBkq;wsBtEoxgZ8Y%W(`zO#)>L+G~La|fs4 z(ObEn%*{ghfI!~t;VR?Vg6zMSs|jkhscI%1plW7cCi@P8n)#PiHQx?$e{$#@xp{=U zfCDa*4M({!NY)!ixo8dtpC{#VI4fMlc?;JI$9^OOEnJi!eAK`~oRm1Csf&7%TnpC* z5Bo>1f0C<@aOP=w@+s~b!ZlCH?ay#<()3E+c9z?Sa7+&AdY*fZ+ntb`UEq=t9(s%% zy$DU-_maH3$Th=5UXq5FxSF`eOOkSl`w34vD(|?&eZ?hD9_Aga1L5%-xF8%jOb%S- z`r$T*Nx(I(2KG8kI$z^X<6jTS6|Zx!$@@U$KRJVY&pkZd3k-lud%o2?++!{QyWf&CA9FG;b;r!Z3ZqScuff>R z15OJ2_9s29T!M>te@bs)H5lCxkj4Jwu$8Ns_*Xw58!s7*(a!WyQ}*y(+7V|1XRw0Q zDaJ)~YeR2MT2rhXD488VA2@*x#?)a@8E!e#0v-T{jmt0+n+qeXaX&ISmviGH`#}mW z5 z9|CN%{sJwS`K3ch!#ptGw2xxGZXebBlv&ign|ve>#%fJ{Pijo>P77lrXg9Unh68|q z)`PL~Xkmnhg_uWh(#Y4ELEgXQBD9-<6K~?T^dMFL=G@CnQqWW;4{>c^jW=p&B+kh_ z{^o**dv5#$2>=T|Uju!ZjfRbFM-O}=E4yn9INF^&@2+|8*%}i2e~9(@NIv(_MAKbB zPYrSH@efGBGc<6TuQa%c8+qDO6RPv04EDsczNDM%+e?$u+~v#fHkHhx+j_EL8(6G; zg1pfbpb5jtL*=*wn))2>e2UCEta*kVPmo@h>Mn&GbRNz2oknmF)1G1AiMkbLB{W)m*Cem^`$x1j-K zuvxcsKN){c(+}6!PadAr)C3)6&TG!#Vf*B#=QU0|-knE2UePphKeAIp2XhBDm@n31 zbvN%MZLex1?6H$PyQ*o1&XAhdG>vi9XY!$gz?IYTbKAkOzSdi0c3xUcDhdznagj`t*0 z4~Zh#bYJrwPaPv~dZ6JDo;aFpf2hgDbCb!EN1B&-Ws*GmF=Z?rMdmyK#*UF>!c)xy zbe?p#YF4;(*;>?2L*jBD8VH7R!O+yS!iI9e5FRdXdItI+n%nZA<4X-COP+%r{~_}1 z7u1f|U^3?=*opX=O!!;#05=~*dc4wP;y&xh=U19QTz?($d#$OcJ${JhrfzdB((<*Y z7G62Nu%*|uNdx3fZ&;K1lkIP5llqY*?`V_y%Cq0ICiNk6KF}uhCKLWqn)Fe#5cgT8 zT3V)B+O1d$CoMmLrK6(?Tlz%X)KlK{S#8r7+NSPg$yeH@Zu0DJtW90XobR+vUC4xd z+NRF)d+?d5eKP3?qBnsPJz$RNrl2rv6X71UzJr3o!-|QKfHqao1^`AYAnXtI)f6xh zz$yyZ0l*Li>;Yg!1sniifC3H&usj7*jfrCc_G9FX$!xmTmr<~p3Z_>u_S~UaUtGa5 z6&_Nsp>4_dUBO-`m~siwKU6Sw-7xEKDpF9%)LYs98bjbKii?P%sY#o2p>G z3N}%}f)s3&f>l+pfeIF>VBHn0fr6D#FoS|MQLse7nt{P61?`|Pt0`Cy1q)WN0Se}$ zV8azmuV7;ptT-X{Io=yP^_O8>PsTW*oqV6?%fR!7ZRKwQ{|4cx*5tJ#{~brQl3!~n z$FHTVD^59KEeO)_-*DyTyG!!k2$xJCzE1p&)HbtnR}3&PEDIvooH8YIe3}WLtKsn3|o6OBrf*wp1k5>};lB z%as&}RWLO>>noU=owXE9&CY5HX3Nen1y!@Nih`-xsfw!E8Lsf|DF#(ZH9Lb9o|>J3 z3Z`bKpMt5`sbaS5tf(;6>{QjL*{QmwW~XXi&CU>|o|>JiK{Y#l6rP%$GmLE9s@Yjw z;nD1D3LU{KsG6Pmil~~MpA<~Z&bJDtX6Fk9Q?v6asaJ~k!BslQ-AmEr9MVL-??zLw zWn=l9o~B^e81lL_Bxlz~@@o&uX&5c*%1};11A@vyayGBO+lwY=<$AKOH(vqa3Q@%1 z!_RigtV{i;%blt*CjK;e=)(_j@4|>2oO!_mC~(Nz8WvlIx}={kABH{a%JY5sEeH+@ zWBmD6c={i5ra!+9!S1p_0N(=62Ck4f75L8>{Y=ai`Ifk34RWs{?}yEU2p7a}$C1^^ z?jTU4txg^X@uTtf9;9n9ACFg6Q{3vA9#irJg*+gFR0suftq9UK6e8Lof{X?{ zI+$)C3f*Gq*a#K5Rj@v;C_guvE5bL%$&W+%w(#t;Tqm4=UksgWio-s0K@8hP%0tR|$MA*!Pl<=KN4Bl_rau1HG~{@omAwIdXFz&XHU2-Ecp5a*JQ*r0o!XHg4uc9uDEBV8ch!Zz#B=e=YAF%16T)!w2$h7(W9CeIV0^^DW`1;l^;j z5yErc5wDR@q4Eo|d?a5BPDpQ!Z;rE{x)9lekgfsYeocTJsGVo5U}` zhn^AVWN2IO*Q8l8|1({lCG!`Mo-SY2z04FgHJEtm23b6YPjHF9L0JXcnHo39r!jn0 z?0SQQjO9J!9Dq$mVbrUT_>q2d^tSlE4i4;mnJ(?cu#%z>r_=6c%I(W5Vkk)j*YI(b+R>+4#iui74jY4kzu}fnaJb;#-0yLpc&GAneUmP74pz&s@A>q0AG~%#@A=vK&&+rGKpRz69|}@G^o8F=)*d-( zGGEa#>J{tg^nh%7g@L}Ba+D>MS(i^4@GMkSuwIrXmC*o8$_&O$%k}{3=Idm|Og;`r z-yzRu@;>c6E!5U*RTXBjFzG`mRoVGFGXcE|qcpVbei7aMKF*7NtNS^VOt<=3e4|Ix;+ zl%clq41<4cW7n(X^(;OPy&-i>yl?wc$El_toA@WCDoxC00{SD2QnZQl71jdAD%`{g z&&UoFKMIStNX6N_kN)m4Xi9kRB2BqWI?v`WVc*N7GUNo_b%Ugs`KxgB-uxH-1}a_Q z3H6H|ZrFxY>uk<}RQ3=IdKyoCF+dB#YU1CLMHzfBzIm7>C(0pzW$+&1=EF+!)Jb41 zLklK>!xw;S);rRaVySrj0{LYu??al*;jiQVhltNy7)~yal;PB7E(|B1LsVgrsle@! zGMqNd<1P$s$vp79^nNmIK6rlQp5poH`Mjswg?)-=g(iaIZP z;F|SgX~BGMd`j{84+6PTdk=}v1fL(>QGA|~2|mA(slp=BekyOt5lla+m(!`f>7N*L!EkUIZ!oG+scwUPT7 z{Np%JI6$VXf^q(UoLL3qeBq}5)y9pKs%L_pv}8N|N`t*6y)KdGtNDxAc^^5n24cP@n`qaA+dPGY5}Ge?ePSng{$I#}eu4oToQTk0cvJkqCmZJ$;Rb+qp(HU35GJ_3`bZgt zw2#q|KL!Y)y6u#qsIRA!od*h|1w8!?nK?|DUFPF!TcxTdy{QF7AZ!gC;ehUy5AP{A z87`bhj-@r=pozD_N=j&jm)<2KMhZ0@H~$UdX8n1xb)@hb_qjt}uM*1P=66W;D8U;y z$K>89;jy+qVs#^L6Yr5iOZ0;HCJR4lzddJly7%gJcN4OzDN=UXgy~1AK+4jwZv%0|gal z+*gv}$vjAg#B+*MtF3{ zH8Ommkmxd7rsRV4Lb6OQEfgx_wlYDBU}mT<6Q4zbSE(B(K@3)nr>HqPkp3pk7YVhw z1G_PqlFPZ`ExXC`MS>@m{v`Vs37bkizE#xRxm{$$LZO9A`mQ4OhU_9Y7YjjUT2u1> zxPR1W7b&|0?BC7-zF8k=p<>kjTheq1*w5an+TXELu}^Nw@)E&=t2u2uHKdZnqU*_dDhW`x(n`;a19o>Mm9J1^ zyyI3fX{FE=Z{I@htQ5SoN3(%!)=Sx>?`{|$0jq>Fc>ZS6QWm_>W-?3`N~6nU>sp~S zskd6NXe(Y~TE=ctwD@fzL)L(nh(k;ZcSzB)bB%Duh2Ka;m#EuM-S-XT)n36H!J|)W zh3k&%=oDe%KN9mgp$lHMp5(0)e6+J@l9~C9`-$uCLaNW3->J|%RfVdG?mk<>{Y2eu zvi*0VH12awKK;8;On}GOu5A$lJ&*2$O2!Pf;7!YRv`xcxwh`B@kmT^h%T`Eox0O`& zk0Vc@R3*t5=MZVDFc$mmCc154rpF4F&Lx_zC=mIJG~XsHz}t3^>sy2X&mBAdr{Rz- zr2KX^x_WE}!aoz!jyDn1DrOg1wu5XvCd|j%mZ|;BI^tiZnk^=2$H5d# z?Z?5?adQ7SnA$zNz*MvCggXHpTW~G zekNHt(7gkfkywkc8;>|gzFCBLj#~m(t%|%a#^=b;lfpNQ&XOUgfFUhX8FSB&yQhS; z^nmfSP}zSW?bAZ1f5Gq>Ci-A2`$3PSEF{-X3!`zv<0Rn>=y6@B=z$5~;2GgNxS5vJTGjACma4aFH{H`2GiwU`Wygz zTENWbv!2HAkptK%>{LJ46V)t74!j_Yfafrllgx`kV5zNe-7Q?L{ygGzLC~Y)^5cs_ zErhrHMtm;|cj2yM{$=4W^iuxo3QS?xeF^z^RR|0k1{b5k)qOH(_x#K1J~{Rpwc2hG z*>jy*-BYw$_g@sNdu09(unN}d-=Nlr&rRVkT#_ufC8YUjO+^C|Jiq8^Yc5%RO9*u@ zN5$arfWl|cjwbTtmJo(+%5HxOJ_7ngs^1q{;PvTb+I^up?wC%l(NddE0v`Zya&xA0)Pvifs@BL!CK6r%onJ@#pY#?3pAYszRtC_KKJvpBT8M)$ja_%|Jq;V=E z;&)Q-g|HSIQpl4RV8An_kO6S^6Wl*h6Ouh44()y^j6wIwrk9X;qsFRgMlL7be}n!J z%ZS%2(9exg8F(4_8 z_k)E~B<71yxx~Ig3dr|QfSam_dH+QSBS$|A4N32>g0Fw@ z4>fY(CCR@&F{l*Fuma zCu6ZI63g_%4mk~diMga0K)!Kethk|XA<7Vq*aS!RCA&3ZH*`bR^CG-rkiM5x62#MZ z&mQtY5LaTiJ!Fw6&c_pF67DGW$8IuN065 zOi8gGJja+;Qp`uRbQbR;?AU?yDludj3yO4M4ym# z>^#3J#EZe7&0Wg#P$B1h&p7@m!ufWq%@5_jl z{ZF+h>hh_x-`MLXwmE!#3lduvT-;NSd?*Ws+EaPEAp@k{e;BHgA~!52_J;UIk+oh> zbzMS{s+nW{vuf%X^4d$hf`5-EIo=T0l=z}fe!5uH$&T?v?*mQ_s6%pmz>-Mi?M`OG zbo3uirVf)`e5sRrYLU@?&;{+A7O855QTiWMFOY0M@ha{RM;7>lkHK+8eGI-<)JJU` zdF&59dccb!<-teUP{h#5pa0X))}Q73<*APYYLdo*;3EvV!p-v-^q*DpNk$;}=-8O_ zt3We6wy2LCZx;1&Z>+qlf(Q@p*UBd+Ld4y8;6Qm|sCWY54fRM&W$`y$tR8t(SzL|> zM3L!L#BR{H@{=lJ0uPt;>NP|e@9i$Xs6i`qs-aZaSDmzpgbE(j$%ja&u&0{bu9i3g z!5bqdYl}y4`E+8cBTD#}G~!!V%%ZQ!)D?fmL#C33QQ{7~cM5qQB~HL~rjSwf!2aUN z#I?RS84t{p=hqkEp={hj)-)8iAUv)T*%>YVMt3KT#1%L)n0#o&=A^bUVt0f;rcnJJ z}laQ9f|;>E2n3-~C8Ka7+9k57DLqm2#X;U=Ek!@cR};n78k{_m1h*B-p{H`=wxTCI zEi;1jY$vY60UmO(_F^EyLx#!W9Yh_1m1q5qVmwUTdSdPbb8A~SQmeDr3im8U%$>#U zxVbB7&_#q-F_N z4!M`%Qx_7Lmg=w9;R9&jB( z`D9B^F&ZD}O5XH@*gAKWf9oZFL)fJ=S=vWT#e;)o@4h0uE7LYeZrM-l0FOy_ARGIO z!5sbv;Rh;3Z>8u;i;6jXdj)N&6wQ<(RwezP-M2hVUZ~V zk`TLN&sk*353`<;6*!l&JLcogBCk@Tm>!sQ5DMJ4^t?I->Vc^O0iif)+xmbrC7WHxlz&i z3c83E7JlGra&xHYt&LsHn(uvJ!7xbbxgtyIFDn^wXEsgLH-JDDnpqD4v^IaulKLr# z7D_=Yuq^zO0$KeZ076_dK!>#~tD<}NnUM}c*c$GkDlPmjfSGa&zhe!8q+*72i)n!2 z@_91UuN&4mPoaF?O(_ z0>Y$X;p^GSb?jiI9jsvoBkW)mI~ZyQgY6(4G-`j9w}ZZR&}&U zA}RcA8Q8b*)&gPuO#ne|E-0~fWp#8FfTX+#UAG}9w7aBJWCbc4uE>sqp{B?tTJ1i9 zb3K6pdW!+m$}6(JYynv!jTGHdlK}*-_W|JEd_g_cwfcvV7O$WMpN{CoVJ;x7Q5ODJ z09j~_y0J_|cj-5fH0p0b!7lR2szeSynnKXcqil67{BS!sWCe;;R9W~zD!Cub77PTS z7Xxzmo3ym>!$3dt!N~XcjdU9YQ%DT8Y}V_*`+|#*gVKsx-`QgAveLev_tR*f0z}cE z+ehhYK&|JV+am@|zN=J~m8yxX>Xw44{4xNoi)fWpv)=U^Rorv4qL?}XpUR-oXbL22 zGF`3OyR9bBz}>^p74)hNSb^8gs6Mmq5iBu5A`J2n9J&5Py+HT@&K$S!-fFVKrBkFs z7%JVPQ84OrpsUiy6_iW>UJdRG(3Q4GI>uL{%b( zZ%HADT2n>=pb-NgYIRi^0BZr*m}#`|HSOeTcCe})3{yc1AEH7zd=Q0lc>mRi{F5YB zb}LD73ttNSp{_zSxTR$LXt7M)r%PDNmls}YJ zwv$KM!Qpmrh#eec2m9N>K6bFD9qeWYJKMnyDwqlZYHKIAvV$$`V7wiSvxAN8U?V%& zzz#;)!P<84Cp%bunQf_K;lu6Z%62fs4hGr5Ks)Gf2Yu{dITg&|y(naLUR-3nHeASZ z^7D4&5Nr*6%F^|>FKkjClgU_B+1_L*AhdsALhGJMeocXN<=_EX$m%YNn4XEXE)e5m z0JI){!ZiL)Y?r<7^+1PxuKg7lFq4jj>B1^eS-AJAY+Q9obgO7;1z%8yXE3bSi+u(r zec9BkUqpR24s<(WQ)Dp3ff#)z3BH>L+ga;+CJoH$=w{f|0P4U8 zQLGbGVR#T(H~HVf2e*+q<3tZPX%V$rM9)QXaGdCwI-U7bgwv>y1%vgymO9^tei}uW z@^1?j3JE7#PpZO+Abj@U!k&eMJ6IQkFg$_KCIH@0g4uv{A1~G}RlXD~VtTv5A&c@c zZQW(EalF_7wC5 z(@z2s-6ZiKdLW;fBpyH&`@%5}yR`zRJ@8$7{xQ8?!iU1>cf^8@Sx3_>G4U73mdS9E zM-&8TgyX+=*^)b+dwf=@7_-5OS-TG?9$=0c2 z06o+Lm3UKKg45vC= zpDh0s%I5dTYuqI_=ZYur&^u(g1k%6UCX?qu zx#dsNW4<`IdZ#}jT0h+HGfcZ|zu#AcPj93J{Yfe;5aFKkE!K(fT#oWjzC2;2Quw~u zO_H=gtX!>95d}13;XJO8fnr7Y)WAn_4J!Jd`a%D|XGQg|zeNIx7*_2wmHU5MaH|NP z8i2%0Np#8x@@GUYe zliszuMb?5mu60YkmMJdhkcEt10!PbHFG%oGF$Hg!Lsl;pV^U*ILQ~DU$I}q3tJ=+h zF$#;QWq?`t(JhggFRut_fCQWq>A+d8aI^}islq8v>r7WT!xYZ8>8#EOD6E4OPFsa@ zU8zH+r2?y!!m6XN$|;rZP<4^Ofpu#nojKsM*`4WZl}IlP^=HzRmNT7D+N6AfPg^x+ zJY9dN+;9(F3Bw?@)?%y>rCJZD7Br)vniufk;+6UVNWhWjfw^KepdP%}Og%8`;vpE; zf2uRmD}~f@E|4B6q&o_!n*^jwK!WdecPj9&!K?y9HPWen>ljZrfcb6nuT1)j4B6b@0XpXH3Mf%{Cg8}Fef4-yh77*mFS;3r5)VMH?Jls-ZTJ%+W=O**=z%i z`UO-17Tq=qEV}LBQaiY4lDhV@_NDH?)w}@=11)ojfSBr%0YKOaO`#NJX>*=Y=)a;f z^W%;%V>5uHdXjDfjrDN<9ZUj{?GZs@gi5yF{)>9TRO=_h;t;xj&M!1Z z{Xs%;NbdolAuYQHgeL(&YX`cIHtVOr4hS4-#R^?#s0E6HepUR+;e#mz?TDrf_!I!t z%;8h@jB4RsR5_?p(he54gN`=P$bT}k%lufX+4>yrPl1#3VH{X5!nf%_^};OX$RJke z#sdem8X(2!FNcq#5IE8c7^xthH-UOmgHd4-uF64`%62fs4hGpkBk!W9E(rzw(FA6< z3py%3l>td>l;TrA#iySXpB#V#2F{t(e9Ym`Q?20CQ>qf)C}KYCV?+zTo0jl{Dp_`L zn;qP21C9J|pny6;ZxUE9RiXjW?EtoQS1}6f??QS(FKuOoE;SQaptkR9#X=6>k3!%` zDrK1URhc8L7}3HvSH+-4GdpOogRwTy$kzk~)DiYFXdH8dj|TP>od=DVFN;^II^y~5 zboMdwM``onoi+Nz16`!EX~63+bw$^0A{B{&e@F%AECACVfMso=f%hRsKtQ&HMWB==tXB{vD4VPSfq*QgK4fvDpt6Y?QJ|;~i%MybcE10e zdj`@9F7Nq${C2P4+>#$4RSLPT$Y(<1sGBrqy# zcwP%6@|sqneTvdpazLwVBZ{b3*6Ya}qnj%pF}|Xg95JrAopc)6?X+Y!G%Bzoz;S>EN?(rd%eLgLe zxf(>4@QHQA_#PDaKZJ6OCvop1C;9^C@V<}(~^j42&@p*sTX)ut#~Oy z$sk1})9)lx?LD1}M1wnj9dM z3tAGP{31f>riF5xmqPJ9Qbh8|o#dfA$vi!oW8^0w9tvNN6fCv!>Wv3MPjyBv;hknd zNsh4@@5UTsCn)C{t<|-k?CVT7?wXFp!Ih&oR28$zVBnw7cpXJocA%tix^bCCzkv+j z>ARqTLufodHiw~><>%ouWKSGD{ypAWV`JW=95cJH$<&}`1FbA_8CGaKO1R+DV%98H zce5#O@U>%_MFbY4-!b&tS0Y~(>&EY9A%8;THhGXXb;lbp8s~&&p*mM+f1kMOy@YSY0Lec*YkeVUTBdU zJ+U&+g#L{kdvv=gQ`(!ymTu<{wB@l*J4`2}zJ3<_CiZd9zs-UimmXwicLH}EV0(9& zF5*GvRl806L1w4VRLoy!^}-&oecxh_?d4W`S*y3W)gBhR&va4R>RYzo#GkePa=&T0 zwDTOBZ~!+qvY%nE9Kg+vde5)}2TbviJ+zIE_Nt=J=h*iLOpPm?-V`QYVTl(@9jS1A zXBgXZA-ooge%o{okLnk`ZMrN)zsb(}O;;;4*g@pQJkvQTWjo7z$8<^R=w)yG3lTiA zjkynD?;rj#+Miqdzz~-HuBnAIW(fP|yLfzO>q$2ET~lnGS5ETo!RwKs4nTHT_WG z(~U$fJ%+G9XO8zwm$CWo|32cYyn$tXfPL~gZIH@77aO{beX9)5H-Q`0vx*;L6ZisW zLT=Qw+F5p+`Ph2a7kU|U%6RzoHuIllcwR&Q^=vn

eqya`5i@(2cCJo*6$frBrGi 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