From 53f7f3badd90155ecd723375100b8a5c6af87697 Mon Sep 17 00:00:00 2001 From: Tom St Denis Date: Sun, 25 Jan 2004 17:40:34 +0000 Subject: [PATCH] added libtomcrypt-0.93 --- aes.c | 11 + aes_tab.c | 10 + base64.c | 10 + bits.c | 53 +---- blowfish.c | 22 ++ cast5.c | 10 + cbc.c | 10 + cfb.c | 10 + changes | 19 ++ config.pl | 4 +- crypt.c | 56 ++++- crypt.out | 3 + crypt.pdf | Bin 456096 -> 471391 bytes crypt.tex | 170 +++++++++++++- ctr.c | 30 ++- demos/test.c | 12 +- demos/timer.asm | 47 ---- demos/timer.c | 7 - demos/timer.h | 51 ---- demos/tv_gen.c | 134 ++++++++++- des.c | 10 + dh.c | 49 +--- dh_sys.c | 10 + dsa.c | 79 +++---- eax.c | 451 +++++++++++++++++++++++++++++++++++ ecb.c | 10 + ecc.c | 49 +--- ecc_sys.c | 10 + gf.c | 10 + hash.c | 10 + hmac.c | 10 + keyring.c | 10 + makefile | 4 +- makefile.cygwin_dll | 2 +- makefile.msvc | 2 +- makefile.out | 2 +- md2.c | 10 + md4.c | 10 + md5.c | 13 + mem.c | 10 + mpi.c | 140 +++++++---- mycrypt.h | 4 +- mycrypt_cipher.h | 4 +- mycrypt_custom.h | 2 + mycrypt_hash.h | 92 ++++++++ mycrypt_pk.h | 42 ++++ noekeon.c | 86 +++---- notes/cipher_tv.txt | 100 ++++---- notes/eax_tv.txt | 407 ++++++++++++++++++++++++++++++++ notes/ocb_tv.txt | 407 ++++++++++++++++++++++++++++++++ notes/omac_tv.txt | 66 +++--- notes/tech0003.txt | 2 +- ocb.c | 561 ++++++++++++++++++++++++++++++++++++++++++++ ofb.c | 10 + omac.c | 106 ++++++--- packet.c | 10 + prime.c | 10 + rc2.c | 18 +- rc4.c | 10 + rc5.c | 13 + rc6.c | 12 + rmd128.c | 11 + rmd160.c | 11 + rsa.c | 56 ++--- rsa_sys.c | 11 + safer+.c | 11 + safer.c | 11 + safer_tab.c | 11 + sha1.c | 12 + sha224.c | 11 + sha256.c | 14 ++ sha384.c | 11 + sha512.c | 13 + skipjack.c | 13 +- sprng.c | 11 + strings.c | 11 + tiger.c | 11 + tommath.h | 5 +- twofish.c | 47 ++-- twofish_tab.c | 11 + xtea.c | 11 + yarrow.c | 11 + 82 files changed, 3281 insertions(+), 565 deletions(-) delete mode 100644 demos/timer.asm delete mode 100644 demos/timer.c delete mode 100644 demos/timer.h create mode 100644 eax.c create mode 100644 notes/eax_tv.txt create mode 100644 notes/ocb_tv.txt create mode 100644 ocb.c diff --git a/aes.c b/aes.c index 42ccf85..f78ea45 100644 --- a/aes.c +++ b/aes.c @@ -1,3 +1,14 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ + /* AES implementation by Tom St Denis * * Derived from the Public Domain source code by diff --git a/aes_tab.c b/aes_tab.c index 03a81ef..4541515 100644 --- a/aes_tab.c +++ b/aes_tab.c @@ -1,3 +1,13 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ /* The precomputed tables for AES */ /* Te0[x] = S [x].[02, 01, 01, 03]; diff --git a/base64.c b/base64.c index a772b80..f613ac2 100644 --- a/base64.c +++ b/base64.c @@ -1,3 +1,13 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ /* compliant base64 code donated by Wayne Scott (wscott@bitmover.com) */ #include "mycrypt.h" diff --git a/bits.c b/bits.c index 60e3a43..b3e14fd 100644 --- a/bits.c +++ b/bits.c @@ -1,3 +1,13 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ /* portable way to get secure random bits to feed a PRNG */ #include "mycrypt.h" @@ -35,45 +45,8 @@ static unsigned long rng_nix(unsigned char *buf, unsigned long len, #endif /* DEVRANDOM */ -#ifdef SONY_PS2 -#include -#include -#define min(a,b) ((a) < (b) ? (a) : (b)) -// Very simple/stupid MD5-based RNG that samples "entropy" from various PS2 control registers -static unsigned long rng_ps2(unsigned char *buf, unsigned long len, - void (*callback)(void)) -{ - static unsigned long lastx[2] = { 0xaab7cb4b2fd3b2b9, 0xcec58aff72afe49f }; // md5sum of bits.c - unsigned long j; - unsigned int samples[10]; // number of sample data sources - int l; - hash_state md; - - for (j = 0; j < len; j += sizeof(lastx)) { - md5_init(&md); - samples[0] = *T2_COUNT; - samples[1] = *T3_COUNT; - samples[2] = *IPU_TOP; - samples[3] = *GIF_TAG0; - samples[4] = *GIF_TAG1; - samples[5] = *GIF_TAG2; - samples[6] = *VIF1_CODE; - samples[7] = *VIF0_CODE; - samples[8] = *D0_MADR; - samples[9] = *D1_MADR; - md5_process(&md, (unsigned char *)(&samples[0]), sizeof(samples)); - // include previous round - md5_process(&md, (unsigned char *)(&lastx[0]), sizeof(lastx)); - md5_done(&md, (unsigned char *)(&lastx[0])); - l = min(sizeof(lastx), len-j); - memcpy(buf+j, &lastx[0], l); //min(sizeof(lastx), len-j)); - } - return len; -} -#endif /* SONY_PS2 */ - /* on ANSI C platforms with 100 < CLOCKS_PER_SEC < 10000 */ -#if !defined(SONY_PS2) && defined(CLOCKS_PER_SEC) +#if defined(CLOCKS_PER_SEC) #define ANSI_RNG @@ -143,9 +116,7 @@ unsigned long rng_get_bytes(unsigned char *buf, unsigned long len, _ARGCHK(buf != NULL); -#ifdef SONY_PS2 - x = rng_ps2(buf, len, callback); if (x != 0) { return x; } -#elif defined(DEVRANDOM) +#if defined(DEVRANDOM) x = rng_nix(buf, len, callback); if (x != 0) { return x; } #endif #ifdef WIN32 diff --git a/blowfish.c b/blowfish.c index 80284b8..3a07b97 100644 --- a/blowfish.c +++ b/blowfish.c @@ -1,3 +1,13 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ #include "mycrypt.h" #ifdef BLOWFISH @@ -350,7 +360,11 @@ int blowfish_setup(const unsigned char *key, int keylen, int num_rounds, return CRYPT_OK; } +#ifndef __GNUC__ #define F(x) ((S1[byte(x,3)] + S2[byte(x,2)]) ^ S3[byte(x,1)]) + S4[byte(x,0)] +#else +#define F(x) ((key->blowfish.S[0][byte(x,3)] + key->blowfish.S[1][byte(x,2)]) ^ key->blowfish.S[2][byte(x,1)]) + key->blowfish.S[3][byte(x,0)] +#endif #ifdef CLEAN_STACK static void _blowfish_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key) @@ -360,16 +374,20 @@ void blowfish_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_ { ulong32 L, R; int r; +#ifndef __GNUC__ ulong32 *S1, *S2, *S3, *S4; +#endif _ARGCHK(pt != NULL); _ARGCHK(ct != NULL); _ARGCHK(key != NULL); +#ifndef __GNUC__ S1 = key->blowfish.S[0]; S2 = key->blowfish.S[1]; S3 = key->blowfish.S[2]; S4 = key->blowfish.S[3]; +#endif /* load it */ LOAD32H(L, &pt[0]); @@ -408,16 +426,20 @@ void blowfish_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_ { ulong32 L, R; int r; +#ifndef __GNUC__ ulong32 *S1, *S2, *S3, *S4; +#endif _ARGCHK(pt != NULL); _ARGCHK(ct != NULL); _ARGCHK(key != NULL); +#ifndef __GNUC__ S1 = key->blowfish.S[0]; S2 = key->blowfish.S[1]; S3 = key->blowfish.S[2]; S4 = key->blowfish.S[3]; +#endif /* load it */ LOAD32H(R, &ct[0]); diff --git a/cast5.c b/cast5.c index ab2ccc5..60dbc3b 100644 --- a/cast5.c +++ b/cast5.c @@ -1,3 +1,13 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ /* Implementation of CAST5 (RFC 2144) by Tom St Denis */ #include "mycrypt.h" diff --git a/cbc.c b/cbc.c index bd08bee..5f72f0f 100644 --- a/cbc.c +++ b/cbc.c @@ -1,3 +1,13 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ #include "mycrypt.h" #ifdef CBC diff --git a/cfb.c b/cfb.c index 39c9105..398fd38 100644 --- a/cfb.c +++ b/cfb.c @@ -1,3 +1,13 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ #include "mycrypt.h" #ifdef CFB diff --git a/changes b/changes index 291c8d8..6260e99 100644 --- a/changes +++ b/changes @@ -1,3 +1,22 @@ +Jan 25th, 2004 +v0.93 -- [note: deleted v0.93 changes by accident... recreating from memory...] + -- Fix to RC2 to not deference pointer before ARGCHK + -- Fix to NOEKEON to match published test vectors as well as cleaned up the code a bit + -- Optimized Twofish [down to 28 cycles/byte on my box] and Blowfish + -- Fix to OMAC to test cipher block size first [prevents wasting any time] + -- Added more OMAC test vectors + -- Added EAX Encrypt+Authenticate support + -- Fix to DSA to check return of a few LTM functions I forgot [mp_to_unsigned_bin] + -- Added common headers to all C files + -- CTR mode supports big and little [default] endian counters now. + -- fix to find_cipher_any() so that it can handle a fragmented cipher_descriptor table. + -- added find_hash_any() akin to find_cipher_any(). + -- Added EAX code to demos/tv_gen.c Hazaa! + -- Removed SONY defines and files from codebase. + -- Added OCB support [patents be damned] and to demos/tv_gen.c + -- Merge all of the INPUT/OUTPUT BIGNUM macros (less toc) into mycrypt_pk.h + -- Made appropriate changes to the debug string in crypt.c + Dec 24th, 2003 v0.92 -- Updated the config.pl script so the options have more details. -- Updated demos/tv_gen to include RIPEMD hashes diff --git a/config.pl b/config.pl index 3fefaaf..ba59670 100644 --- a/config.pl +++ b/config.pl @@ -62,6 +62,8 @@ "RIPEMD160,Include RIPEMD-160 one-way hash,y", "HMAC,Include Hash based Message Authentication Support,y", "OMAC,Include OMAC1 Message Authentication Support,y", + "EAX_MODE,Include EAX Encrypt-and-Authenticate Support,y", + "OCB_MODE,Include OCB Encrypt-and-Authenticate Support,y", "BASE64,Include Base64 encoding support,y", @@ -151,7 +153,7 @@ for (@settings) { # output objects print OUT "\ndefault: library\n\n"; -print OUT "OBJECTS = keyring.o gf.o mem.o sprng.o ecc.o base64.o dh.o rsa.o bits.o yarrow.o cfb.o ofb.o ecb.o ctr.o cbc.o hash.o tiger.o sha1.o md5.o md4.o md2.o sha256.o sha512.o xtea.o aes.o des.o safer_tab.o safer.o safer+.o rc4.o rc2.o rc6.o rc5.o cast5.o noekeon.o blowfish.o crypt.o mpi.o prime.o twofish.o packet.o hmac.o strings.o rmd128.o rmd160.o skipjack.o omac.o dsa.o\n\n"; +print OUT "OBJECTS = keyring.o gf.o mem.o sprng.o ecc.o base64.o dh.o rsa.o bits.o yarrow.o cfb.o ofb.o ecb.o ctr.o cbc.o hash.o tiger.o sha1.o md5.o md4.o md2.o sha256.o sha512.o xtea.o aes.o des.o safer_tab.o safer.o safer+.o rc4.o rc2.o rc6.o rc5.o cast5.o noekeon.o blowfish.o crypt.o mpi.o prime.o twofish.o packet.o hmac.o strings.o rmd128.o rmd160.o skipjack.o omac.o dsa.o eax.o ocb.o \n\n"; # some depends print OUT "rsa.o: rsa_sys.c\ndh.o: dh_sys.c\necc.o: ecc_sys.c\naes.o: aes.c aes_tab.c\ntwofish.o: twofish.c twofish_tab.c\nsha512.o: sha384.c sha512.c\nsha256.o: sha256.c sha224.c\n\n"; diff --git a/crypt.c b/crypt.c index a64248f..4440336 100644 --- a/crypt.c +++ b/crypt.c @@ -1,3 +1,13 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ #include "mycrypt.h" #include @@ -109,13 +119,8 @@ struct _prng_descriptor prng_descriptor[TAB_SIZE] = { #if (ARGTYPE == 0) void crypt_argchk(char *v, char *s, int d) { -#ifdef SONY_PS2 - printf("_ARGCHK '%s' failure on line %d of file %s\n", - v, d, s); -#else fprintf(stderr, "_ARGCHK '%s' failure on line %d of file %s\n", v, d, s); -#endif (void)raise(SIGABRT); } #endif @@ -189,7 +194,10 @@ int find_cipher_any(const char *name, int blocklen, int keylen) x = find_cipher(name); if (x != -1) return x; - for (x = 0; cipher_descriptor[x].name != NULL && x < TAB_SIZE; x++) { + for (x = 0; x < TAB_SIZE; x++) { + if (cipher_descriptor[x].name == NULL) { + continue; + } if (blocklen <= (int)cipher_descriptor[x].block_length && keylen <= (int)cipher_descriptor[x].max_key_length) { return x; } @@ -197,6 +205,30 @@ int find_cipher_any(const char *name, int blocklen, int keylen) return -1; } +/* return first hash with at least [amount over] digestlen bytes of output */ +int find_hash_any(const char *name, int digestlen) +{ + int x, y, z; + _ARGCHK(name != NULL); + + x = find_hash(name); + if (x != -1) return x; + + y = MAXBLOCKSIZE+1; + z = -1; + for (x = 0; x < TAB_SIZE; x++) { + if (hash_descriptor[x].name == NULL) { + continue; + } + if ((int)hash_descriptor[x].hashsize >= digestlen && (int)hash_descriptor[x].hashsize < y) { + z = x; + y = hash_descriptor[x].hashsize; + } + } + return z; +} + + int register_cipher(const struct _cipher_descriptor *cipher) { int x; @@ -494,6 +526,9 @@ const char *crypt_build_settings = #if defined(MECC) " ECC\n" #endif +#if defined(MDSA) + " DSA\n" +#endif #if defined(KR) " KR\n" #endif @@ -528,6 +563,15 @@ const char *crypt_build_settings = #if defined(HMAC) " HMAC " #endif +#if defined(OMAC) + " OMAC " +#endif +#if defined(EAX_MODE) + " EAX_MODE " +#endif +#if defined(OCB_MODE) + " OCB_MODE " +#endif #if defined(TRY_UNRANDOM_FIRST) " TRY_UNRANDOM_FIRST " #endif diff --git a/crypt.out b/crypt.out index ffd5f0e..5a788ec 100644 --- a/crypt.out +++ b/crypt.out @@ -24,6 +24,9 @@ \BOOKMARK [2][-]{subsection.3.4.1}{Background}{section.3.4} \BOOKMARK [2][-]{subsection.3.4.2}{Choice of Mode}{section.3.4} \BOOKMARK [2][-]{subsection.3.4.3}{Implementation}{section.3.4} +\BOOKMARK [1][-]{section.3.5}{Encrypt and Authenticate Modes}{chapter.3} +\BOOKMARK [2][-]{subsection.3.5.1}{EAX Mode}{section.3.5} +\BOOKMARK [2][-]{subsection.3.5.2}{OCB Mode}{section.3.5} \BOOKMARK [0][-]{chapter.4}{One-Way Cryptographic Hash Functions}{} \BOOKMARK [1][-]{section.4.1}{Core Functions}{chapter.4} \BOOKMARK [1][-]{section.4.2}{Hash Descriptors}{chapter.4} diff --git a/crypt.pdf b/crypt.pdf index 304e47803511d9e8a8b00e602ffb633e7d394ab6..173331000e55772283b4b8268c0045602bf49839 100644 GIT binary patch delta 249832 zcma&OcOcd8`#!o1k0c~@A}up+IVq$vQ-mmyD6(ZV6s2X9 zQK)FB-+hjHz4Cg!-k;z1uk#$&x$o<~)_q-%>prJoT5{}_)Kvj?fI+fp;n74Dl%5`k zZ>Ue$jzA797Kg&1XjjU{p*th?g-4>chx(ul_D1^qhDHYL+#czRvJCU_1&-|NLAVBo z0{lK2yLJT9Un3Z}tP+>8EBr-_TSJV){3fF?e4Id?LjZ{<0eucJ5XC7A_Hpnb2^f&f zK?a?i65u2!E6_D%12Y_KNCE+T=2!3vVe1(Y#^75 z14OfkBC$lUon1WBOz1Dk5lH|6M-k*!1o~Wje5AitW*oCUBs>@daVyXy4pO-IkR$@g z=aK_$+_GTIoDKC`_$2agX*l@%qU?Ql?v3z8*;#D?96Sn{W?bN)1>0ZKY2ko5w;J%{ zp)(Gs+&oAv5-8zb2O4Nu>N~&Z5(|mtbDYwMZiWr4xrDw9&G1Zm0g7m8%X12Mc{xMn>1+VQvi>7 zxfyYo)v@LIC27j0ZY*M9<^J2Ua2PV!#3u`O^GiS#@q!b4JV-1Kr6sQrF1y5+V1TYP!V-t}B7-1eHi464Nn;jzJ zaGC7jna|&1)xu?HNrP$;dGJt}k7g{BkWg4u9E6Lp1HN4>03*VNBxAq^5oK^<^|8WQ z-pGXC_GuZgXQyv)@b*yOu)W}e=z6+O>G{D4X=9MVqzD=~i;07NKYp-Dlnn_jYOAO| zs1lQaw!sNdVoYoO8K+GGcSNXqcAB&1OXgk7G-kB6EUDlN(@1yW^^M283|-p zRee)|=#;@l;a=_euM+?-vDo=sN*?c7KQjzpAR1MRO|sx~?jt5X*+>22SJH|4E_ zJe5+Dd1LwMV!fyl->u1Nez~K$XWtet*ruh-ISmH;BS>9m}0;PHeh% zdt}!w@5&XMWk*%HFHsGlBd7F{f`h3sY*nSbt}3Fsi=jhB(ww)pUkp2^hJGRZD1?29 z?^IJ}Z*#63@AdBS3X0jt?%RF%&FrtQX`JV9xFPW4yDrbOkhVPc6SaoLWjw9PuN1wQC_Nq6)<|#w5!iGa>ih@fTLCjyCTD50d;KQu<`WFr3 zRAT0vzAQ>uX==Kmqq+We_m5$ZUrqU{)t1U}$*_?H>Q@ zlfD#qPo&)g9zzu#PYyl3-&-*rdUb#fz>ru0lez;qi8lmi)t!I}K^JIf>;QM@pR8a| z!yUL24M8~C34A2d-mwC9O?Qw?G6W@>jzB@n5NyIYfm`r%7=AjDbwPn98;HOsl0l@@EMz|!9p|OEZ z$4qnt-A+7UV;C6}5bY5Js(~v~5R$6EA>AM;flj(jiw)c-InbibcAO5_rsV+yjW)th zHh>^IfNCQ>fYx9EIb=7m)p#SoXnTNH@RPQher-1pXR>-7y1^Z2ptTE)VZN)aY{pdlmF5;v@9}hYo!?i-O5lXHAVs!PuD(@Or-KB zB2*}|XUxMSw{W$;{~@%Yg6GVfZuHWWa#SWu6{EW`=e3Q>3-?4W96P^-e`$!iIC?^T z&_v=|nv~epLjI!L*_$Fda$KLQy-Z({=#x0VzgXztoh~9#g{~h5m*sifD-#^Usk*E*dFASr*tQGT{{t^Sch}1Wjr*s)`)26+Nq`dGGAo zhyfW>dy&hV`p5HG9}<54+92;0D0gLaSt<=t7EM6uASmg01sqD!uwXw)@yOUU66g;>d6epb)<9*^|ApJ9H z?8}P5`d)kUbCuRt!aose`q+H4_hoD|DOD7}fk2HkaqsP{zzSF2EgmY;%{IH6{8?{*mb6d#1_Sk>itM&< z=GM7Tt?ucE%b#~`sJeJ5W~0~0zJas3Pwxkdg5C#@ZWiU~JtiRw12{Sl$-<5X%AI!1337ai{Ws>@7K^T=910`ueYm$ifjW`g`4#oTSnK2moIID; zoRtbDrqC^MOKF?7yCb)nn)J(}4g2d7Nvw7@n??sHabrVKkqoI<@SCfA)3R9Fpj?7) zxOHhWrmOA%OA&K-V`iPCDk#EjI!illt@A$SN+e#ZqkanFUw-f*`PEEun5Wjy-4aLC zF7AsoQBLnMWa2f`m~Vb4z zwngf^H}{G=gs{D)rh`s$estCIn%ecj=uc_p%W7G17NUjc_K6l6b(*2q9nbA!OU>Q( zD#GqUhGAJzN6SMySq-%%F}C8(u>*Y}HLJjzuh}|5`A#bqLxFG*v$G{O| zC9s(}a`(&mb^e|%!G4u@zRK6)1;33cz7i6tR=cf7G+EcvBQCvp=S+%CO3uzxCRn>b zcKM2Ij1wjIlx3^f{wD*LlCi~)w%6p@Up^`-a)qDO`O5_*|ASCEnv12I_j}uE%-?-D z$aN{`MXCI4hcC(r=&d^wn&wB|h4l2L?`&Aea{QF2*b$ye$mwHS55AZ^R2DbW$an$; z+G`eYdcm@2zIUc=yz0HDX7*Ji6UACID%wPuaiyGc@PT69*4eko^Q{#jdYO- z*r(17L%E?UMA(yxx9=5a?|Sg5StxL^3a$5q5{i4a{N>?zti|4|6};R&k?ia^{2l#? ziicB_qzs2-6niaGb;aol9|rNIl&Htam%gLt_?I6U9S-xqkjHOESgbM;RVZ|myLqv$ zCrozF8ZT&=87b*Qn1pw*}|Y`5IWN|a3}O( z#E`?y{)ao?MSQx5-v7q!5cLe}<`Vp7L#5L<`VA=e`?l5!ZMflfhRdN-ReY=7`RDZbt-s!Z|7^brWsbi$-om9^2esAuFxJ_M>SYawlOfIZ~enRbWWtrWzwbqD* z;%vU?Rpyd2s2EiSslqO=9i4GH3aT|>O4itvHKC)^7J~TQmH1V;p}vjVAvOlr-t_*dVhX&HEQh2 z_5;U}Q~vwbpWj3Lip>jJxwz-kHKLHxk7nt_9DWI6ORF*W%>&k#ib`7^4ki{H^1mT| z``|=g&_`y=t1ye)rAM4%(JRYldlh)1KjN3`zJ&1=iXT!3*B^wbjR|*3;kO`{`s9O zZBMjM7o0HPy56;|{uyf9h0&3-#sEiIlrfFGnErQ`2(E0Agoza&tea?C@Sj;6fodCq z)a3tHS_MK4b7Tnk)y$B9r=b%tg~IXIbIMM9Gacob0!gC=6JKo+OY2*D!|Z(#v!jM#+<+Gtv4h{NL07$O-( zB$Cmvw2BW{PXlzA=`a%zv$UiQFG9p?p|ONjVmzLRA`(dOOKXU6pxV*`yfh#MYDK;wwoD1sINtp)h~G{A)|f}n*)LByg-WGFoh zlo|ofNW!5B^o7!(BwbTM;BKo6m&qzZz+=%k0uhDNCZO>II2Hkeh9DKc9~2-&(;k}g zgRizUjX+YYHX4H^{k2pAP76)O(&r7?DhP7yHqxa`z>v^dFkhq1t))#w5wJuwNgEsr z#(-H)4xnsr3dz`nwQ*N0t6vwOVxu|*&X{WpumAm1W(4Gq2bWftECNB ztc^uup?(dvqCpxL3$Qfj1U?Q%qIhT>7;Q2fj)*2eGr(&>Rx#RiIyrj*@Y6w;J}D7$ zOoGFap(0>@i6_xmrB51XAq-AC(q$qHZ39ivCZMoz6fIc1;0XjMz4`*2epoaHi;wB>>Mr|!nQOQ3a9Co2T0jK#B&?09H5+W zL?}QSkG~d!BVo{RFxhYoP+=no?))ahLy16d{Jj($feh`7PG)KgjcWU(jF$QxV- z0T0O`19%defPF;qSo}>40U10&3vvfN4VIJ;i$i0z>BJz>P8g)@_{AbL z5eyLyMuJL&mWrc!CW$Ual)WHWzmrDBE&_drjDtoBeF+PzH!SouExZ=p*KR_xCP)VD zUKk5iPo#;B2m^-}P1jmzJUA492KEm8z{!U;7>5w_F9=@!77CUGL2LY9ZZz#62tLpW zVHkoQ3GMT@T(EFdn&ZMSL~}TO0XC58$O)2s={yQSpVNY|4NIo26pO+_pCf^JM+0gg zKQlK_H^YE%do~d5q~q$p>m&m8WeBX)J~)X1i7h-Ju7z9juNoN&ngHduS|<@` zMH6+qFrykZXq<_MdN~cjRzq<{AP^5hyo(#<+UwoQSrLJr%DxX08O%BouxvscE>-Pc zZ{8djWmB=f!rVAzYneVjC&P9Z%7dNP>PIF*RxXs0 zVkv_{l%4PO)Ki{o>`NO^X0M*~iqBNQ2lD&6XXYX6D z#{S1Ya7#y;D#PqLWq3DFrs}rzDY9d}I=oQ0ea)dY+Wnort+6oT__p#R1uU)G_SM~T z8I}kL3{={&5M*DuE7o9#oR}taz4fic0+rLll>4!7oetTYU=Wa#k==OF;W(3^q`ZQ# zyml?x6c>0f)xM%!K`NnD$bw}$#;cxrlNcZhW6I6pA6!y2f19r zrIjcThD}l8nrttcrN5CW{@H^J7rthtG&@>!A$mF_DB+4%&Q}IQ zIY*V?fq*Wa<{O`x9%-}HKN8+f9k812z2-J75?&o)dA`%Qbo7jEX@$1=iMdk`!c7D3 zD@x)`+seisI?0xNk@Ca2hY?*oZ!_vu3LNDcps-3V9A_|_^ZyuY(s^=8@!naSYwnu| zJ32}pZhn=(X4ArW^I7ZOo1Uk?7B+b;A4c}Rz05w3y`mKwG?;ymvwWB1Yjk6oX3ERL z`76gHV!Z*U&c)FB=DIY;k>m2aktbEdF}qS z+hpHyJf(qa19jcm&_1V=6NSa2H_E5g-iI5NR^X!ZMRw+SMGCN~el_?Z)%cSw*?i?e zB?}+l`sDjxYtdF&s@aTOSq?v*?FiRf*634BA-?0T(@{&=`}5A!71xJor;mGnzS?Yd zy(o4?>(iUf-tG)$g>3h?bI6rgWZ>FL}glW^#p7=+;q7z4xpf zQSlMG%u~mGY_H#YsONRB?%POd3LaS`uH3sR<}o z9kJ09xL}JDXgrac_{R2tm4?Y?x8AUZL=@^cTh{lwAm=Ne-jv8XwbUy*KKh!*opLov za?iMZi1jDS5MPfmm;2=nyqxPCo(OqlOp2yvevd`>Qa->%91N&!=2cO9_l3Xxy(h7} zVdkBak<6$}R70I#^xU1Hw%`zrr(Xu+cn*4_ellmDi(cnMFuU{ai}ixSf}~yxp8kw`n&0U6e>&!Ho=M9^$+o88SlQKEmcb%WptJ9EmS~o zoNzCUOZ^&I!(OsO8XdiPn`$~^>(%cq$G_B1o`8|5DxVkM3L}$?Td$J2dgMxnEyKM# z@%oQHT7TzHb@d13m!>tz2S#&nWJPPd#QK2GQtHN(%v~lLgQK=O{kylZAPRpNftzWs zJA{_i7KJ|qk3_DR=qznw+9!CBLEwJa$xJ@#g4b>20QKO(@+z5)Mo8s{(gT92nFFsa zgFh-z%um`U4*)05dWJoR*w|eTP^+)09h4AQ?A_b&P3$-u%4lg`Q+vmPVQTEo*$|=- zvgN^*5=x#|Z}Vv6`I+;rZK4NJ!cGGkIakfTg+}M<+)=$Ka#!_=$epf2Hd#ZLj6D3L z{QiY79$}B91+1Vo+1k8VXN0ZyBt7A zm?8MK%NdkJaD!Y8n3F+#Hrvk$EbJBp1=<*(>F)s~c5{Ot>Lk$T?+yYXT^?SOK2~sm z0|H{#w6yP#p9o+IbON3GX!t7@3$|prgNeWCc$`ogpr51R}#6s0HT` zXz+m`0=UAR1Yv5mHq{{FX;>`;hi!|HqSUL=NG9T6=>-jjUDW}^<7uhJZ+wLdu0Rqff+L36*-!^heoaeU?Gf1F?K?JgV&iLKW20uR(XLDp1R!1K50j0@yTR0fyi^%?KrIAMLRQAljCnr0Dq}44LpZsBYnZ3h}bhA~XEh&g#MPR8dMo3xVU%t0S^jLad>p!fP2)l7>oP`M6 z)-!J7I8~+!Vrf^@^M~P!@iI|C z98HF67ES`ZmsACD|5P%Z$l{VJ;Jiw2_|WD(K_mM|9YcG5?~*EYUnkRFbd2Sy)b?9{ z-|LsFf~^%acjA%!KWu>}GV19AOhPr!%NG&wSjK>ttOyZ8H~(;PA`FIzSo9x`MLkr{ zB+Lvwi-@Bd7%{2}5%K?AC62u6W}z*s`i0oTqY70)JZ+=;QyTEOV5KVPty^6UytRS1 zpPTuS@G`Yhl{(zPM0djfj8a5cs?j@{sH-f@5D<_JXAuFIQZCph``0S))ZLD-`3X@S z>LpVqX*&DxnG*~{Piy&+u+*jbm`EM{Ql(A>4%e~^AquzRzdLIGJ9-l!C`QvLEik~$ zfJmUqb|BS|@Dt065UP1qm&*=)mo8ygg8x&(1e%03SZRn8d>^<-fgz&cd>{41?#~=M-B55@P`7`l=c?S*YdEDg= zI0mIbL#+%5?dAuPgIplF8$)fZ4E6R`=Nqm9 z;-J4?z{5?%UkMoOzH7r9h;pD*kwh|;UxQJwrl;o~6DXPF22x!jf~y(Vn&1I`?$i8B zRXPi+0Z{AL7GpBVkAwh*>!2zKfJ4CDL+Zb^v$}h%hAlEwv=&mR=Ih`JE0TtA!3~3c z_Gisj3;Cn<{^=GhdX-U{wzUz-cxwD8G~vr5dTJ~Gm5i&$0*I?A;~EK&>8_;x%Uu6dv-YZx ziK__;ib&5r>`-ge4s$$OW|lwh2__d-^DC_h54fw-GPL^>o*?MkYA_&c(YI~tSsuh{ z5P=WQb3wk+C&dII%(&Jme!uLcz5GW?MqGWVN@Xc!FY-(}>o1 z!2gRyF%q>Q5(qPaCsPO5sN!M>ZmLE&3kN+wLCp1^K|q@(RZWG}6BB=&jUdv`So|3@ zAtfzraV)@e28x8X)nFDxVRi@umW1nny2cuQ*JLhh63;)^3n8?>V;U9(&%ss6t1*%= zaC4&_9{Iiy&q^&-L-0_0@CXrMh`#<~K_m=;+LDSuum9JINEli)_+v#R43R3^12Z4m zAZwok<8SM!q9`~`?>K@38si`N^BUal&p5qChkvJL)a?a~LN#B$Rq?}9ebi<=LQWWF z+W%sk{J+?y=R<4Q)21Z{RBs*x9~6u>HG&7B0x!t4H0-}a6f7404!!?d4{KykR|@rI z7(xw+g_!Xv!RyAnh;?k#XjKFccz#7#m_$cA*8~d^mKH2DSyp9Fom53g1O7@n07~5e zzen9zh2SRscW7F};~G)Yt%!bBiG*F#q`rDD{e2SMlMvHnjJU*n(uX8U*e{|}+lWsAU3 zTP`Dou1Cot_}Hjg1UMHoY*8Wl2KZ~BfTNvsMyz#^H)TK01}6# zTB*Vt6bY^k-XyCc)To}THz59;Aazs~Axh2p^_E2qlFkOR&_f{!k{hZal&QxI5q~{6 zs0P1prVjZ;4YDIY6TOF~D z6^Vz=jYr4|!QRI|9S9~)u&_}i{mKIVt_exM5BmPD0!VmzO-MC0M8ML9dW?X8DdIn} z9Y{lMB_PxU>3z^Yy$`-X5}}lojeZFQKG;M==+JnJqrGr8LkPfO>*2K^Jv;lyw?ETg z{8MM}+jtV~8~@m0XpDrD5GvGKE2uzta~V=0@${O@|Nq}2{|`;93AF!HE%X4lYO1SQ z<@Fpb1V6{Gw377iw30;7q8qC6ztS-hkzU!Y*_Yun+P+MU*o^QJfJYnG`sHdWO64+y zh77R=lp&NunD;Na!w0l|nHpw@5IZ%1l<@d(TU_ILYaH}{n%{rqYO8^e_{$hK8X+z) z)6#6ZG18%!wV{XjKaG)|^!{lPuptMdIU@<;H!yxH{ijOTu>JSWf+P`XiN4@<5p#qR zBXtQ%hN?Hs$U;5oh2R(ZSHe#su4+c%-!Ag|cMN~I2$5a{K(4fC74iS*TKyH6sTzI= zVI+kVzjtRFjVj-6lEKcb3&*K?9 zM$!Az47G|^rjj?ip0+Q`%n`kWO4+i*cx$QMCXuS+D#E>@`IB4vLTUqf8q$_6<&-KP z;ch6NJaB#Bq3#DtZkl47YWtS%&(hLSff5aUZaYVl5({R^)RXj|V0d{ zv`v*LmNLNp^F-2XpE@!9B(s=Whs8^SM>Fb%MSP!k9CT(BRl%e<=4Mu1abw?d9eWfd z6PFJ>v|II#w+rXRovX^ejx=^y>3KVBCmiIbVdJSW#wy~~?K6gZAyKyj-H}s`$^Gy_ z#4OaUncrYjABvK3?uJ!E+4d}}T|qCi65U<*27u@#VdTY4OI zl6}M?u&r`{GUI9-8+lZ(e8=^w4TuqE7apmoiE&nKH3QSb6q)z>Qn_Ot0gsl}{m_l_ z*F% zer|5g7H2nX_@tY1h+l5~!g}&lw`^gz9ZyFf>hr?sn$*6>H|q)glBU=1$LdifZR`%?r}59aq_ZY>v_L?29*7?nZStc*@V< z&)na`9$Tuw?aljn{3zZqwlG!y0`7f8PIydzba|@D@P2<4>^_R3beU2ImsGB*_i*Bn zeD}zsQEZ~G1v=bah~ zXN}Q|Mfn}~Un}#M-o)oVC~9V3yyNqu(0#+?e0&xoBkF_8x{r2;{hQ{%E4R8mjOX@b z>qWLbI)n_r&r+TrOF3EPY+>&pc9v`4)5I~atHB$2cb;bV?l>hMzb%0vWm2er`i%8y zU6fPn?EU(L?GdGlp9~{XMsrz##aRKj)1MGXt(ZZJ{+*}Inl00`KZU;*{IcT>mkIcs zZ#MJn@pP47$@`frpD{Oi#})jP6pZWkx{5VR)L$E!ojg!*HQ1Yra+s`hGxMq(*S)g4 z>jl%JFbTUQcs4F`Y>W0qpE#CEwObAIz5aHB*e2clm1a4&y~Bb`=cS(b-&?GI z7N+4Av&%K@4ny}*_BUdb>N`a}NcYhTd6kgTr@&APDy^jzau!D zW`2Eip|FZjkj$^Xbjmgcp0DS78`2>y7dR97W5HYC((8t-dm(=Nx6J%FoL%8FeD2We zsfi?EaV6F6;v|oUjzOp;M|WLE8^LoU1>1LAK1UR2eW+bpeKZa8^)hb}rJ|zm#^~dd zrGbyG{*aUt?iv=vd24pEWEOOMmE2%=f?xK*x}UmlH;VG-D9gReF)Pz#{bUWM-gtQ> zh2hu*LSH>emXf?RIdCKFFdNgv1I2G!U|C>53CP*swIgU;$D~bfWbBzHvKf(mL$LY$ zK6Qz-HAsinRr%gF=Z&uKJ|=`Q_IOI*^ua6LZnl*7A>+j@yWRo7g-1V{$2SV&$!5Zpnpp zY*+=OuVS5#4X1|Ac-7m<#!4R+CImMDfNcI{$Kx|!AH*D7UZBsDb_ixGde5fpFaINHuKGQ%N1 znm+Uy;brYV8!V$Z^ zeE%^xOyqWWXT=?KrhLVwa(L3X?C?Ox!(JPUGug>$#ymq~)A*vSHyihTly*FLpo@R< zs?*xtX)jLcun*=NZWsENg3-8?mSlAh=hGP+uw}jLlW&b#8I`BJ zyxyp8T5P)XQKF^EDc1EQ7&J%jC~Yc`Y^qAXR9RVO9F^yQ^_e55Doz~y)N@Hv7;V#$ z^VC>ir}vGNTHm%s!EsyZn2Aj?b3M)(%9H8I-jry+Amo>qcN`6}`|<;3D1)8Bb+0y&jvO{*^_k%L3_tQ^M^_hj@E^axfdDb@X48!ql za(5=nAArrv7fHO`(Pm9!wv_yunhQ}Mhg!b`#CKbTGv`1h;ro?HReCVkxdRY^Gx0gCo0j{dTKW;-xfo zHUx&r9FIqJNF5z|N8G>fL{iP-gxhix$By@-yZBgC=P{BYKX{#eA4*fZLJ=|l26ajB zh#aka{1e?Hk!U}8S%-%Q@i0V)y5itzRCpK^p2wpd8Y2?m0WO?2HDfaZO|^1D@KYVa z5Yp8B1qc*17v3Ua!AxrmQlG#Z37FKIO&lG-58S-c4@$cOJcX|9j$`EzxW*MXq6{0a}lp?W_wAX}>x4dn8 z?UU*h(`G$dhcHja`|gCU*H_=1Ll|OtT3G11>uBZVXl|h;r`naTHs6+)mq#@R7Wodw z<_DZI4qbOF!)!3pYsT+o9HWwV&$Vsp%)Z)pzQhr~eRSM#-$CT;mv=97y8>5&w%ut9 zE3e#i!1vjqV)={J3XIjqDZ7`(XL-x1oYIZ1>Zw)nw#mMk3N0hvP2YG5G@ZkmZoUTh zZyz|Y#ErHLUwX*vJ(zdh^x)@+hl>HJ_Ejf-+6$%QGuob9W={5tj$&s>Dt1xqWSyE04_W-&wBlK_-4d z=8(dGhKTveO9_tluWh9ohwf#w^`7h7TM2BmL7%5kd26QI&oe7u-O1jExtsEjbospf z&j0BApet$YzTByzoSCSa>opV^R>^&C-TYO1C_^V~(Pm$lY!a(YY6?_BU9#E(SsSFo zriAK_r5$vys80!nYjSW7#3jdVAR(wX*+seK9yi^2oj3g!gCrK#Tc4Edw70%EI6|sSOk2 zm9vY+SxooiV$xGsH+ol-C-%G6`Yfi#AiG5JO^?L671Ss-9$*Z#3SqchtjKgbA?P7L z_QH#o8-w3nD3_>5iaecH9h07qx~tkY@XEpZQF(R9$3HT$dJ>CukhWaZI_?as ztRwR23DvtZGyV0oA1MoTqIQQH#l%by8Maj-*gH91RA1(-=E!%>`~H{_ad67x@V00U zW@+tlkJ!v-%`do>mU1s#b2SS15aVMb6L)%kkHe2MkNtWiwx$1MRXRF7(@J4j&pw=i z80DyaR) z@MdUHOh9#r{nev8GT*&?8i>N&zv~2(-;wNV5V~R z{Anx6O0uFJx7OU&&=amfo;LQQFE3pTJXY>y8Wf^gXyTwJ!@NGU{gceni%TEJg1&q_ zol_!uWS$+?xP5xX~$#V^l%?4N#7j5b%?q7xxpa?9R1E3BMS+RDMA_rdgy*rCt4 zZu?ZztRM3!xgee{oDW{yU-+{pn^O2_mjN-CA!xLbv-bStNT$kyc*FVr*8H2VInrkEMt@GSGGl04UX@**H^fRL!a_tD$q0YR7|bVB!9Ta zeRoT5#R)@>iMl7e(JpEUJ!#a`*k>mxBOSK~rZ(rrh%MQT7H$|j_|aHrth_w_^Ue47 z(OKdZvs==hr820M-M-2ccC9wDEVkozQ0MDgPB(_$F7$GrE12a>$^Bs#AF;C42jj71 zr*rbysHoF0*Da1<4hNYx(lfXQyLG1?1k{+TP`{NN+x39tIK?NXGATVfjybXIPFFSM z&EY#fiTgDybh{#LLf=IY*6)cKwvB0J_t3qP>bw&v^!_5kw^54kIJ3d-^>W|$3>`my zC7sP>uWv);yIeo@G0Qs%Epert_B!{P&mL z?jY|Rt+^YdA{vqI!+tCyv^Ahr*mOgFcc$LvV^6syT8$4+G zVT0!M*>a5^Ns_1fmk4|f+@I>Ew=1X@pY%9-en3hfc0l{`?y(OPSDCTvcgMRp5AD04 zV@XlL?b$n$Ur3gjC1;3iJ9m+ie@(9!-`ye>C?Ck?|r?{0a3QRuInkcZAt@YhMfHFnjSm;of%PZeYt90 zgK^&So#ghF;;)ByRW*+8KC|V;N`>sV{hCHDl$Y)Wck8kmZh;q!A@wi27z0?PnfVL9 zJ$U=+ySKx!Sqv(dk~WkxxFIh{OwS|h!006Te61A!*|@Z1xuUy;lyp7)kMA_%Or4LV zo$(T9FR)iXz*weHC(s`H%Iy_rj{VUwy(Q(Hsb+*ZlVd-Toer6zYmWvp!@qEWxesjc z3z1;L^G`^enxTx;T>l@4IK3KBBdh(!Fs=6Wz`3Yb`uhx~TJtM23428zo|@FP1b|WE03)OXZw_fP;Aeh z9MckGnhSnaGB-9!ssD-j`7)HH>dUS0=M;r`t)+8{xBJEp{3LCZGO;+7s1ndV>Cfiz z>^^I%p{C-&kCqo>bL`6nwgjCr9_YBN%NQr#vFZnLGI;kFMvorACD>gWGNhy-Y8}O`j&y5WEdvx9dkKS{3Zj zcyv!Gs!+9Gh>JDjf}WnVpZ;N={sLb+->BsZ(~QQub$yfv>2XDdH&dU#zUJxfV4M@C zz;x53X`h;{eI#zIMQ3Bxj+%woSAH`Ba-XKxx$w%jYUK4?I$iW?ac^n$$>0GY#2MaW z_QeN9ZWyb1KRtE3*em#RIK`Qeo%p2qZL336ggr+|4QU~9Cg&srkEYI3tA@*=cz^pj z*(u&=tB(oqM=AF=YaMgBjw8BA-!Z5F4-3SEHt`&l8eL}8eYroFttmo?6yrAUMHWff zGSxNO7o6Do{NnqT?b%HUI>@~Gr5XxHfK(9S!0^+nQdY%=`+>Xp^32=Pk^@Ifc#C8U z*$nTm3`CB(9?|OY3;W=&xpRUGkNt30 z6Lz>K8c!9mF1IPPEA7@|mDV?IzI()d)WKDqPx($j12_6i<}qi$uDQw7TUF0+>YFQx#c7lIGsov$1)*<}yHD4Kcn5c0lY4*i(6*-SA37?1)lPeV zy)ARcKppD+=9dm#VfkK$N)2br2m3s!O9Wd^p9?5exCD6emqq>*GJ9O)2n~e+P+UT z<|b=E(l-SBf&Xm%j=McI@&7 zRe6jr*VzPr53PvCUGvEB zBR;Mh!(8iSjkhxFE1ejt9m~4-Ok=`Y{?Zpa&2fexam9`3YWV+LZ$Lz%xR{;1q=!y% zx_jv9V9Hp2XL-qHN@&VC&obSH4&DcMhpluv8aYGwIOX1(&btIH%_?xOPYSqrY{yL_ zx!{x=9)u3_mu5>2++jHq1-)Ui;k?DgWtOrjPW6rc3eDjg+TLgvPU+~x9qZ!>(Kb{I zLnm_1=ABFO94*>)xv2>dIO(LVozLUt|RH_xVfA zy&W7Hv`a@`eta%GMoGA}ZE8s^6sIp=>G2(0tVGAffPcQ9j*0_vgYr_vpKVn*FM#EAr|qyJYpaKPA6<^TB|3+lZ?p z%D9WGZGW83EuF(IZMIQ!ejD%4p9(+N@O9kzzH4S{gPJw7>$@3>|BOnWuhrh7!$wDZ zihH`tt(_@4E4S=fb1oD}g+5x!HTB(^bk=fn(aLFudB=C_U!UuWoahhIjpyq$x+ZhN zzy7=R(Vd!6lrwxHs^UM@D+L4B?TNgr^SxUseoKHMUo7MKo&#Y=!Yn&CrPC>4o znhVLHe<>UMY_wjKL3G$G|k*Y+_f{?%}4UXCL9KsDH zLei59cepmq@*k-4Wppa0=&Te{d zGlvn9@O-|e3?BYumHxwF+7A)o5h?heQ}Ab{@cbeP{x}ex3#DUBpYkEbbRreOO*>CX z(xQeJz=H(;JmX7(|Lqpvttv?W^~ImLm==!OG)gWCy4?xa+|IWgaBy^Xd_2E*w2blRXxZ+N*I$O3=VvfU#htreSvlAJHPi5xG$V^PS-m!HgJ3- zo?{)MsAyk@$Yb^yWsLo%2T^aB3*WsWmB0Mne|@e-w>_ioOe87#3PYiCVc}9PGM+`Gn%qu!RShJopB9p`^uDl+lx!eR zo+{3Ie}!!WS3BEX{-w@SPqbt=YhLB>JMO90`Qf>&*p{K=a?(Wgt(0)L7q`CNi#>CF zsl*}igrOHH^2GJ5ZC7)zERU41S%mTmO2;UBpOo5oO}Dp zCMx*x>9@OHJyFErx|N*4rf)0*U1xX`rM1|Y`3tf}@}gY=`;p6g=B*<&`}coyEmXJ4 zub)h;<7s3R)eM)pviEAO!&$B~Cq}bh+wVP+>U-vzrQhw4m@7dln6zZddfuy~cE_{E z)u!8(kh?AF=eUw4ee zwZ68=H#}|qrsX^r)a#iaS5XcX?&JCqeob4hvwMd|Yrg@9o{_-@;KfB zKL5U+=J!End^R_o-+DUD6}sMi$}x>+;k>S!Whc_}wA~ZK#B9LIVG}28PqFXmR~(h| zw5w3@SV%Bz6)Y$l{QpRM>!`T0?F*N}-7UDgLvVM3dvJGm2!X;0?i3!}H4r>#a0wDD zI0Schc$M_MzwW-b?|5&F_gCtSkQ)2csj%l>YtC=A^doZ9E5@@-?Yx#Gv*cQf1(?j` zXj1t=>V%DI%oQ}YN;we56n0Ask%+QqR@a*#BErG4l{>&TfBJAiq}Q07C@beLLo&BG z&5vReH>%-TR>&VMSgPUeOkn&)mnLy;1w$(!G>?b4uG>Wb2;C*QSYC)5x&hitj7KKB z5;|d-){GX5=XrXC?uqy14Mi5ArCUEPA{zwX>W6%W^$>_t3Nf=F89p@Kt2p$qphW?w zchU3HoQ9{BaUwkd@FVJ}JqFFg!u-`FS{j?59h5^fiBc)z^I_)?8rH?^RCJ=%v*M)AEV9N~_|^-D5q@FKrv1idy}Mbys{@uTJOM zX?RyEmroJ<%4s#O`8?)Q0_VrAo!BbsT{r~FZHpZ&Z=Ug2Kq!C;n12=pbZ=VT{%jF0;L`m%ofb#9g=6QLnP-Cai5I4(;1`ajBp`6~=;wgzgB1q5G}+FB#Iqgw*$2<} zc_z1HZ-mPbcf?$=QCx~`fQ>;G40z37>!|PW(vM}RiO@be^Wr(%RJyULPK7V%!Z+K6 zIm65V-tub^!V@-j@_w#45$hjemDpDh0o}88d8@s#C27QubMu$42}%5FKEcqf4H2pQ zNuPdd>bCKGw1w0yB`n0lg?s*yuqmgx^iK)%uPi87PyF@}|93_J3_STQW2pZnWBy`+ z{B6Vko5=W`9AJP1^ECdqzw6I>4-_{zE%3{L-DIr{sDq&_bHnbP+cdZ2-2+;8IDh)@ zMS>FozrAt)9Vp=b9VlQW_;0QCuT-J|=spJ^2ZGW9$b;fO0x&WE!&VO_rGQ*=!5uf4 zU;xIy;s@C5zfGloy+iO%9fJMpp!r;|9h38SkM6I@1hM~}O!%X}_;-ro|5Q?QVPFg5 zkv2dGD0Nc|@*s@2aF}+qZk_GbZ4k@V`NXV{sxRkgiTrRv8Aq$*FQ;yN3b%|DCnGE) zT-buu6(@jT6)~ZN50Bed$El|XX$27YM!WRpR_iP2&?8rNmPk}~2z8!&@r4BQ^kFb# ziWjG!&$Gf_c3N~ACW5t8;7CQ(+;jywZ=&3>gAMo=QtFP@kZ$Q z&CS$>Dkh$xa?Qui7H<^V8bkf5g^H*q-l8E+{O9L=*GO7J{m!5TJuZuLcmCVLLd!hl z&fP{0b|kFzTMEdBzPH=5+^9PF$(skVb#FtUBz1{RzDJQkS17DjXTD2qIvNm#Tdn>y z0L-Zg_57CVqch8^b!@PlypX=UMg)C_736sdp`QQ<;;iu9@0+SZXpaMERu;ggiqWN|wf6&cqIMkJ%M>mY7 z+DH`0Tont%)Yq8Nn0CNjeuDT(_4R-VVv%f|6S_*`aX+&0I1 zzSyZL#3BTQgcn}sgUOhjza7ohV6gm?Ybkr(QNpRYyMkX=oU#&y7#XB>P6HUlD{7Cg?qozTOqg<^5$87N>om?BgJqzkfFUZ+V`Cz=9IA0! zino}wo?1#PO8$fxSuNJ2*osLdjn%#wwCFsD#busq2vauu1vgkeJ5 z>{#kNOGK~W^U4b#r69{4942$sKHDTdVEHz=#ofIi^jKr=zx>s^QU zBW?U96y0h#qB&ID%DTul%*&8wic#u$%ZZYab;U<4k*{Uncw2^XVM*ZBWs1h~!!Jce zHePg2&$Kr9z(xKTR+)JR(!X}xG`6J`0&egY#SN8x34_EvagMx#SGr+pcSC}Es^h1zyvf>x`ANPu?W5bH6 z>Tmoye~f1wwVI8PD&M{~UtwS_cbUzOe+s{)34>){Se$pV71h4}`Sr|q@fA}H@9lbR z+xK|`iVtn5So`O2BrC}Gd6RP9=9eEuC=$3&YR$UyhG2jMVO0q{CsDs7bTTLnZh9K+a(l)eCWrzjcSN+KI>Kv z2P~};**1}#qsqN{*JYC`?&<3fh?891;!+)tx|cC=$bHpn;g}M^xCeax4uovB-mz$x z4Uj$Vr6+z78lskRV>W`d03Zu05iAS-lWeh;NS%JnAq}S28^wH_)hW&5NePqbH&(Pi zdU`mNegHAD`{zwwBvso2mc=9Fte(lmN=zYt1|)f7vgd{L<`oAhzEn6Jc-&E1g!^T} z=emxp^G`Q+n`H(WlM*8JzEV9por7GqKYVFpI(gwHSo)L$jColSvL!cVQl>%oHlHS6 zd_%4C)rI@VBU-uJNzjc$nknkX6W55{j0)vfD&%M~$ z3ijc-VD_D0gH?jnTSo}fW%6y3Su}?MFB9Zu;@0|c&X21Xm7%#N9_kKBmbQ1*PX79R zSNmoR`-O>_uuKAS)VvQJ(n42=O;vO8 zhG8(X;*#}VIDGm^0!@^(KxLsrIR}PE%x*Xp@nl-E6ybLl4Ooyju))bl3fxiTqGLun zgT9IFFdM@9+WEhV(FX|wWAa?e&{l}xEduCFOiLgAEwA`n z+MI8fD1^lVQT7>;n6=_)t;gvd zKT0%0-{M*1_PWGg12LFbOB}6N6aeJqRQ*eAGamEUG2`Ea^LJ5orHr%65YR~kH%C=- zT>AMJU8+JSln@ACIb4!i7UOppA!2fXiPy|i#s$x|duwD~6c+?2b9?sUb=fdW`jri> zZz|0O36UogwS;-2qXen#R9~^d;jCJXO7~TS^ycPb;A{}90FCzRUeCMStV%=~^;xqg zm$`qFQ;UsFe#lU3H%gB=BpO+vtVbwPJXy-qeBT9(bd zt%!JZvpiC>^2$n)(uL;R9%IA>QTmF~fx84x4H?w4%*dOIwY2>sXgQ zu0C7%^n%(>G(gnK(0-Ir;!LT8x}0WDZ0UQ(kNOJFhac;;l4nNLzAcbh8L$Qx3=S!J+DRqntJkiGLN*^;oPCq@8@X zPWLGBR4%8Y3Fyzaw@xfWri*WuX;2ILx-Y#k=0kE)g9zNtXic`iC6m|0RjDQk-)-15 zo=QZ_aTy(Z6TEq#Z(XG0YshNMo=-5D0#BDE9C~$Pvum=yVFB?vKHzPeo)L_n*Ij^{ zT2V1|cG9qo4njW1Y^8uW*@87LRx$%6i{MvaGLqY{oISidxwF;a!-RfHG6D<&^nCN< zRfp!jFgCDlOP5a9`69*jZMfo6|A8V)&e10WFMY$cAO3?Mzh|M;MvhHPcL#H3qGZ(L z1~op>MNzF5-;X`|_<=OMGW!jmrY!tV!r$Rzgr&INq8@kqJFsSyf$CPhclkP2EYnL_ z^5ok1_ghJ&E=HPYfnRQ)miL_Sc3!d!#$<+j>P&zfUuMFcc6_7rS@N7PW^KY<$$RnT z>@pkPFj=6?w4e0-AQ=q<-n7<YEC7Y2!35v2N6ywEgJCw4!-`G?b^dW$EX?gp4{t=B>{_HP(deAoqSkgZ-ioeste-8@r{SHk2!-?%b!^GTtzxghZ z+gZ-hK6fbG{51Z?oq z024q;rZoLA0R{^A_4bBO4t7erVfF;QG2$`R(a;e(Z&#UDwKV>6Y@}g0d+{t|IkKJa5hh2@{^Fg|Hiu^qAOD+H8P-nzbW&iSR zYh)~6qiUn$ozK&5Nlhp4`L=Dbq*H(F{r(r=J_J5Bg68JgX<%#a=iG4o_GX_KufgSqv<>x;qgCq_1-)mFCe|!sgTe1qX%X2sa|8dK-?a9jwR*7KgA|5yxscXs>BggNTdj>pO z1t70nIf9NN&xLRsw9vjpDK;*1e|Cy;%{1hCm3w(HUa5G%NfwU%&g%VCmq^FmUEkyJ zo!83(=U~l+d}}GLQR#L`_zJHdZ`64;kl`2=N4N68X=F5_33(3ozUcCDs(Tb(Dk6X{ zO_~b9+ki_3Z>_MELB#{t*Xcq?p~g;-p&f-w?89Mh2g|U+>y@svPb@E#%6T!Ii1|zz z;_lr3HRxncsHqFwy^wS-8{TTMnBw%A93<$&EyA><-^M1w@%JStO1oNDX<3cHm3!>{ z97V{UB=39N9}r1Y)5{@n$%7%USDTU+hvJ@?YEbX7O(`TOwG6N!Qf+5u&hZ(xsgy)@ zQ{kIQk8;UMC+N?V= z_(9e&2BMOPE+&?;%iKCzG#t1`0k8~mfZz&355O=rfXH~m1K913227;sK&^?^uDnQh z^FP=%@N)iG1(ekr!5|=1j11ZWF_P$h(q3C_(~6?)_q^ang5Mw#AHvcfk}Jg#aw7N@ zR4#ixY*(ncALMAF2gbw)_6w{om@4qUcX7rbB$oEZ*g!U4yQQf12fp#XKbnbA#=2k> zjoa>dv~*-+ITaTm)9%(Y@)1WiB!j~5Ej~8OS{1(&nk_q{N9X}CR-71=&OEGCYVADa z;Bm4(8`SbYgrWuC2`TiK_)i2Xn~+ckB4?(*U?@CYjVi~?o?sZfUF|`uBn_1F2x2?= zh$&BjsXjU5mvw`a3akmt&JYRMnN;DecrbvUZChn}yW<~&j}(3FC3bMAElh?`RM49S z%{J0a2N1=s)ve4dVLd%@nF9%C`|#0KiZo7R$NS&|a}Zj9)e& z)Ho9&o1A7XS@+;akk+rk=1$0cceODL-U za+KUpE{Ca8;o(Og(|?knkH6Z(7(~tMJm+(y#@BeB&`@zd9~$@d8;PC$GG(nE0e!^| z_%rlfskG7B@rg<6yZF5(IID5dHx)aSVm;f`d-qefoN-}4doFMdt9D)+wrQjZu4?d| zy^piFY?mJ1_rbHh%HgS)@iC;dJZneNwd$NoU}w57ow*>VtXzoo^0RsLkdbg*_d%+e zy&$MD7zV|A0*HakB^U3JYqmawj(W4*Lup|rP(eZ=>Iap7G34B}8o0JRsfR6Vpe@rH0`D4$ zCd%TK()di@35+JRW4eO>eapZ}vxU zUq7SJf9H*95B0bE{7PoFHgkJk<<=9FsoPU-;7DiGQi|R&UopmiB_+iykuj53=(*sl99>gt5qrT*H_6*XtysgN2C3GTuc=vj>K^@pdh@bgt`W z1HA^?Z<;>33@7ohJ#IZMBl4~Id85^TD;(8FJgX2T@-;&= zhm>h|Cd0(7av&)-TLEP&;CaTP?=T5MJo|#pBxN-aGhsNmb>{?#n%>w3D@XEtIj^C76EOFq$@Nd!`iE1N6veVL&|$-etN+e zkAH^G8a`{hr^!UnE7YBwj77<<0GcG zjvf9qW06?`Kcd%3kNHErXi1iL9i5y{a>u|IN@-s}`W$DeNo(r}eAC)TI&phwL8i*1 z)7+Z0H1fSXiZIF|z!n#MJp~jyDeTGX?{JcNIp$P{*GdtXDf8@NVww2QqY)t=Pn_`f z!{!ito$!Ez<>^qLw*_xRVO}SPj~~FZaF2Jg%(`a#VgiE z+?_><)L-G{WCVm%nfw%*XEQY)j#NoL7>i-Uxc;+&F;1%zhUSeSKkV|!8+~9AYki2xX;nG%f$?`;Ph8uoV&vCU{!u=&qPHKCuuJR>MFihn^zi7h9QFZ%Ln#E!hryw1M z8?qDto`xy=;h)?(8egtWx3;E^`l3mQHdf)AMsB7lFl%x*Hz=K!9MUn(l87+XteWLD zOF`T)=M1()A=;om z7y`ce)}O>BB6a>nmHi35Px8T0;nF<}!w8q`Yz4^Bt&Cmx6+E;dn(a?aSWD3PQNz*U z-}SY21^FsP4+u$fo2SmTs{>4lN`7`EFM|~P0rh&CwrpQ0qU6~O5B2O;qXjR>2 zdnnB6w-;%nX)Ilf`}D&zyk+xJm*SXXySH?UCAlBXU4XI3w~} z=h+MxE=3lg&SiFbC1mPEc%<@l7*w}?Zoel)4XYz*JO&T(S@8Z* z#)?{+ASNW(Wmm_PQ|kVxHh3*Yk%FXEkQ&puS?vu=dtybIwrecrZ5Am4Qh`oa&oV8E zrzUY|qKAeqTE~dM8(p9zpd`~yLovJtlSoLbq}Y}=?p{u>$vNmX zqLPecP_@9VL^}M8|IoCANtEA~U2v=!q(5=VvtOwBpLp@xRB&ycs)@_q5ClWK%XYg=L}NkT3ovG34S6U-y$hanZeRappTa^GTLA%ppk ztKPfXXr68KT zX@Zk-a`q4F3M z9FANZi*vQLLy*BVNXw2dF=o^PX@;uBlM#OkrOQU8n!75>U1M+7+hix~3%uhUDm*ve zSeI;-yftldnG_UsxuoOmJjBCgzszE6FR&Xk5_x8VrP;2lPd==y&EFGTKPKcxdOp0H zi#-Dbaurf;?s*QlXBqmqK2vlPuhzJxYWo&nfWE46tqgSOZJuyoxp1ri-7n`os~Xxb z8@2V@`KAa}_!D;m3||pT>pU8Wf*&mEF7Xic1gX7tk5KGe5wG|g?1N6YKGImiYDgb! z2JaK)r$?evWemS}So!Zr!lifS{I9qZ5Y$8KhqhlJQnW6R{*+h$s*&*gW{>?_FM-A+ zA#t&P6UP2l;NfBW1^s0GC%N?>#33G#7$X>|3Z4}JqG$$Sfy5aBm>~LKz$=h(Gx*i- zOUqyYJ`@j_^a?KW|1XTzue|HOJJ^473I55Af#Uf!S0V))gdPHT2B0>fg#ygs@t{ox zSpNGi*+BpiNDA!V5VHTgv)@owo&6Gk_;#SDvDEa=zr0R-cRF& zd3PR8;G2V$qK@;^StSzAB0XLXlPdRJj-~sLF`jxlRk?X>&$%YS=WW>65G@JOQVG~! zc`ZJ4QisVBkf#V5Kd|aqeS-M#W1@~smM}rqOU@amXOx0oY)VK$xQn+v+eT_GCEdAW z(b1%^2enj4?Pw@F5U5ZTGR`&B{=z1K!2pHvH65mmjzgk}5gb;{m10mg)uQd`a(cDP z>#F~aLX&D;9z`vaID1)PftpuD|R0z29j}g z<*bW7+q;OC00$kTY;mjhNHuutc=5wcIs(m;%o33f2L6s0d#$ZVmlB)1 zkMF}xLa-tOT}6#-I{Z85?S}@wEDEv>jE_`Zt3AoByaqmZ9VfhGYcy06y*K~l27!wx znuq*@iGEF-3D=MmGA%)wl<9YD zDdmapb<$XdkkenY);g{76dahL%$w*zo!ky)>^RmO@rsSE@KJVif+Rd9mD*3Qm(_}4 zB!>g*K?Xnp-f;r~E@kHX;OiNSldr;1{e!3XM02gZm%SKlRTa3L7mHX+5s%$(kX{jb zDx>ITVxQ~U2KzvVF|D3X?dU-Ag$DjePVV`dp>j&LJnIN>9pz{LkQO_*B5^NfN?xZA z^)*jF&J}yFWn4B!LO(uFJv@%sZJ*1G&Qp5^NcIM3igV0KT)>)I$)bk3MGBLs&=BBS zHLXDv$#CSPE%Jm3#|U3|Qe&DICFmXK!ep)roykZY+3s9_HS@Sn`XK6-pC7@5*bpIa zo`{%)yXlgAJ5zgE%%c~D_hug)jU%LcHADxZvYr#mAqBlD9aO2GDb(6ef*;D&%CMf>7Wll0b#odhTErKL|6;hxhBOBbmTDk2lc8mCF8~4``n$zX&U28k;)v&{ ze||zWA5OB}wwUo1)WK*@wo;MLk*O*#GQ&Q0hp@KmKP`C&`IW>cZiJWR8Q^FG6BC_m z6sm`{BHz5FqvT?@=rv-CFX$fV+Sz(Y9i0bcFVKiZkvs<$eD6Iz8=>=fmH$}AfZL)# zB>DQ#4h7+tL}4iS$;n2IcZd4|)r$M6+7V7zCEj0~FSqp{&LbWi8)6qn_j<|k2ulG3ViIjoQo{IktPaaXW(eK==wq zqrc^gD8*+Ywe!WP9TJviehGczlmO<}Cko3q$l*?WFejr+wCT(rm5}3K=_jEX1K&MF zS0Rf4Wh-J|%EEu>$X?NnC7zyS6AR#+GLz}P_dYAsv}q~MZ#*IxyF&XQH;t)mh}L{q zCH2Otr7E1fk3zVCW0xW=$)hLJd26O#^|9w?;5_k7ZJ_M+l>L#?wRa&Q=LYgMF+(8{qjGSwU*-$@MZ3+~xML_$T8p8_bzgtLPl5?R3-d zq27a51m4N*lBEg7{Er_9_pSncYa@DI>a=6(H)~J|{E%IsL?|nYc#d}761*5|S=xsV zQCX<<^SiTS4y88_qn-gG88b0o`&x9s34fK_MI*!fT2s3aWOdeV78_Q9e+(otL8M)D zb=K{oRyUTAudQKqq0rdwG&9D8aze(ry2R3AnqrrG9$l~WfHe15dxV}DADGwRYmYsn zkBs`Mq~A?T$-=AXYbbP&9Uz}Y#O(Hv7-*(~qK@Fj8H6>40rfAxoM`}WaC$I}zbh0dw( zh^YHwT*mt~M`E#kMbMGHDh6d^5BO8G6(_Z0BEC&=Wh%)rgqX}eUz0*=>y^kay%U?G@6-rh9u0=?`w;1ko^bf zcQ>)o!?(TOf2T@E-f6ay`I-@NX@bbTvOJC_tB|W;yF0!TM7EZH;(@Orp%}vTIMR0a z+UZLl#tlh4P#R7Zz$(f!x7V?D9NU9YRj?ef-cT#=LXVp#+f8_GPd63*T_cCmwm^!; zg`4~t?WHZ8>rY7onivKb=#E~%VU*t}(!c8}FnIJ=g^u@M6}msiAM^aCx~q}#{HD17 z`tx@U?{6d&@XvsGiUOdD9Kaip!4d%T7vC5p{t=)E!V!hU1nn*Xe!-8)LE|3*aacTH zTjSq|i{Qvf;35M^star>;RRLaf_aO@6JYovn7euazQE?;_)pae{u^*wg#kQ?I@g&1 z_`i#T{|G|;D+dJ(zWfuf|M&LaUnSY!fR=xAWr9a^q4R(zy#1!P`~|TMD&7E-XBBuL z5kNxufGo%kf~LiM05u%y4X4ZYUmi-rCitPCh=67MZ?62`9}34G6A1n-G5wbRB{9L_ znO`HYLFG&Te>vJE4pQ}r-%gmm5g4iHs`g&mE0>rjuq%bw=b<`& zaF zLWvv=G53IYf$YM|xyX@9!qqd#V#gB`rSG z{eTzrwc(-*BF2vXMyE0eGA7eKe?*7ss!`Au4w?G&W4#c_U^&Fa$jQ<-;OfNy(?NC8 z0ENbQC|~@u;JT)3=x%K8!28{m3*+5Fz^mQ(^;z?fi)v;8ahS9@#8C|OCj{OP4O!>5 z!_9}=EcLj{@}Ey5wGd1c94sd^%u$@Nlz0W+Mt3Fymb_BpnW10BfvCP!a05?Z-avG> zF$m&4tX~)b$&zdNcNWJDhl0iRVcE=ynybM5A{uHaC@mawohl4*y>i%*6poxE*OE6( z4`StEeB_Vn1y7r!MVfLs<5{POM5GnFtXz&86r=O5o!@i(zpGroggfB7E*ZMn5@c}n zgb;6i))lnpHHqwK$2`5CXrjs?Zq|MN z*?&H|{dp!L+XnXp-qis3fp#Tw{c4}F!y0Xa(ZvWgupb+r67}R_YAf)|&cbxzAhz`cvPO?LR-3~2)9N_b5?`_{? zdWolLhZz#R7$c(K)74Mc_x#w~*48c6Rt&z@Fk;4rhTSWB2Ud8ebz!)t%HuX?h+Fy> zk5?76C6vVO<9xNvE)jBvq?0iOz;sw}7Ap}ADzDcu!*TdN1J4$jkI0vqKtJU1#8!%J3 za3+(p0Zf0;grLaNSqPv?(&wV5Pz=!I?w&bFO032Tep4Ya=l{^UH37EJ*?O2Gux?%L zcVLLsADE_$MPe^$s-^qrjHbQ2*dFsp=^yfy;ahv|m^UZURuE#EyP~8ynMy9{qeRpb zC85#~<=MB;9Ie*&hz6d<3ok)rZZw0WV@VS=efyh$LW)KCE=~>w?f)`t+XfW~62!#(vk)dCuL?40H+gCRe`dfaMG=h_@oM zm0<}5JrJ-=uqd|6Dz&;)8}Btat}s$c=*=JmeA6WZ^Xr<|Jy`3Tb?h9f7F?1FRs6HV z6vIxrU`I0ciodo3&g~6r(EWGt|`F&oGf44YBBwV(x5IGbjk>QZYf2DY_aPS-FL0S z*rQz+aY}(OkjDe1gmBdoGHM@vVy&MBgf{BAU2TS%NQTI_=_KMS%Ys8hx}}QkBDdI3 zr_d;>5UM_6P0ghG=i?f;jlQx~+raK2cGRI5;$7kp0I?V38tb}RTm|<}7rJ>`rwY7_ zlxZq%{;vLb$ytcq%Bg&kwYG$*Oc&Pv3a=W|p*R2-eJ63;q*-U*&+i(E43dv6-c~Hv z-Qt?VQRy*36_L3WR?p{bOIg#w)z(~mb^9FgzS*q7z0sHxT8EftNaD#Jql@8yB#VeP z1!>0L&BXFvEfk$CXzLiW`Yv`1wOwXCg>reD*~_2(xbsTf`<5G0zd6Yx@lKPqIrh+iwOJZE_)(aV=8k_7 zt@I=AqTFYL+3QD;1doDh{XAqbCF-QIMd}3E(a3XO9QUmSCFV`Xg0tUy>mRFUmhC#q zs|Y*2XMWE`nwrT~A?^;R0GL=34$@I=U9M^1YPd`|wo-Z-D{}bd`RupH1@R#eVRZN~ zL8!kyN#6Uu-0xnx_j|iXTetTcTd{6v3g~0lS3=D{e2`F+XUvL$Z@=JGhi~1ksfPO+ zfYwm6az2yrj1%#6inv#@&jU%}I{-+eaFrchNbetjYkg?3c2x=aStUNz7CaUyw2CT* z;?^7T&G|h}q1RM$)i*uj@O8mAY|qLN6|9hzP6R!zvYx(hf!CcV))T?gRu3nL^#YNX zhac9O=w1=uPX`^ec#=8Km^?#mT#Fg}_eKq#+Vg9Sf#?nZ1@pfKbb!<2V5=R?zqabX z_UnJ6*Z(aS!9jB#FnIm97Tx@%*ufV%UEuf=xXFs~>mn6=0jAP}XLaC$4SoN^g7 z`8R&>?;89!2mbfO8Xhp*96YiBq|yzT1`?8YABMMyVIPFop5&x7mZX0;I6TY$%23hU z5>*))9PhX|C$&%wyvTmp=T_DZ@0)@dA310(@9eI->ag|)L-%Sr2ppE1X8fjmCQ))i ziarGe_IIx4UtSb>GAM|$RB3Jy8C=mG-G1^sd)KiM^;rbqOg_9wVV#CpS66XxOD;lELZ$Km zd;v>^K`=y+N<3^PMjx_n{7@@$6R$rJ$iPHjJHWimw!0h?ckxb~8fM^Qu~I?%o2Qep ztxzIQOQHLG#1%W-YR31jXcud(1hQP$E^B%89yrfomNMkz)n!ymC$?Ij&xlNLt#!@D zwWB%1&&sXgBnCGWvHAQ&X(uMilkkYI>{DeXycPYLcIbaRL!*$)?M4VQ+zRn@wOVfk zyxC!NKK9}?N~g*Z>7Li-m)maB$xY-DW6~`BT)mrXlGqPzr)@d`;dB?pQ*2D_c#+0_=-bJ#Oh?yY2$ZDw%~tFX ziC%zL=E)$dcNDM+)Ov>A=OUfi#^_!8rsR10Z>gnkR0CWbH_(?dfI#)Qn;oC2Cn_X=bTU+`5P}sMcFg(PFpi`MMW*Lias_3S z_^#o~HdhD%=;(6ntv+~V$nGDDj_e3bWR!#_xL8PrR2uTk#d;StYxJ~4tKz3Wl6YSA z3PXsBb2qKMx0pHaX$9`j_x}h6HK}fBG7C;(1@NomGQXh4kH0l=C8$$E%Z=6WRl-!9 zObl}`dTfk?LdofbIPCb85c&zWy^n@f(sTPW5qqYnKtK*k@Vao&wLY7{l-+VKUoFxG z*0lI~*B<9JYSg@U^keVoaenM6@KLc${|fgd?`}k4D-%nfZH9EIZLsgsvKv8xx~ffE@O7*FlZDP&+ zpk$5bevzy9^j!mnYQ!d~GEVV>^w=!c1D4R?E+@Wp`$Q z*HG_69DJa<|A=|@;aWHUSWf8^vi!%n=oBx9@|FhWDhbkIqjFp>fW1 zmJy5GMnBJ@6yTi#7X^gA{y@1G{mcg7hu2I$9j}n5W-})NV!7FOl2cU`eG-rBj=VIA znm1+AK1`Kxkw*pUi+mGJP#6Aw7KoY>dpW`pf2tdsrpTcJ-C@$R-odVwM+|6%a_-Z^ zzK%)Z$dC`r_;A<)D_Si+i2G3@IA_j{0GeAZk5l`#@kq&TZAFK6d~8TB?}2T)x-u6R z`2(YaI1wWf&|qd~qGsnR%b#X4p5oHui8ldyH*QjgBB8@L(&q#H?s@<9Sng;JqIk1- zYZ!TW*KDJAm$vfcLJc)d*nYPjnRqk4JQZIQQH3fV9QT@@P4YSUokrjQ1~Gl@`MYdO zz8Ybb*YQahQ{=2emXjoL!&^PL5LC)ug2FO3;Ba0#(2}gtDnij^qz~UBnuviRD0rCSc*FqBGiYyphNZ^;O!#lW~38ht^v(ekxN8pdIfLw7(f zQ6=j%-d9zWF=N4I*`~C4QWP~IJ(KA9sh)6dycS$Wo(T~U77*PF9jWImcf$dVr8PoX zgAgDF+#_l$?TmT!_sFXa7hgmZiBjm<=S!z3-N)ofl}m)WjEN#UtJS+GGJ^`vNrgy$ zf;wq~a)MLY(d<^Q#i&YDJCK^U4v2y1OEDokzE`8BQCx}VjaD|5@4TqKFddEQK z*t`%tEE!&6#91i*l~tG=&kq`Fw&}76UfTx)*qgVwIm|xc?B%SxgukzD8|;#~|9WY7 zq*8dIgzlKmxNMc+)JCEEi+bsuFH)kxyGT07m^Eg7cu(NE89dlexbTzDly^Vu;C?3_ zTWA=KzP_Lis&dzgM7R6F$o#Z*|5t>9~Wy|XV(lr_SQV|HbQoN z?L}toV85(QTXi+m`J43seuYkGRVLMP4U+es;V^E?K$(26BRiEhdpN9#59*u@R}e3P z?xo1oBx!P{VF`jqg(wLfwAg0b!wMmUBuBdS4DoH@o{voH3HTY9>`{YKOXLZ3l zxk4~P`bN3L_SmWux-Rm&cVaQn#`z`gW>XGZs(bmN4s|7lmj5>5!#6VTuke2IqiCB( zC!L*lEQ=Mz5e%PS9l_{2paxdl-1I)%r%iZ2&QN-%*K?X%$$U_+;7B?(Rc1aa)tSV_ zBCL#X96{jbr~Cvx=?fXeh^~30!>Pd8-MWkSb-#%r`3l&I8tSDMO>gw^pgVz2H*b8(JQNxPH*cG9aPufZd@ zGfi@l_AyTyQol(d#+=HkVdlONZUzNpyXKOo)cATaYB<=1??s~)P?eEeYQi67&DE73 z%FC!B?_u;PgI@R3Y$df^0q>yYDQ0_;=vCRal0LJ^sPe768}jtCg^hCu3df}Js+-tL zyI?aA?t}x}aCw#7UCBmVuof@6TqtV$ijT{EPznZUP*W9!@XD)p&@M0u{k@m2EN-Zy zd(9U1@~uPPT{QdLOApR{XO^GR0QQm$RZVg8o$tx3x6r@c8B30S0lroExF-?Z-OKO% z@%~6>TX9N1JzmL4++uKX;*OI@O>sT1&)bv}%bqdqeFR!0dYT`t`(}RP9xcZ9tsOO$ zg}LT65~Ai5&q1ukkjfWjh|@(#QqG^0VOCN`D&iI`c@v8@m(<@IkKQ#7nZv8&OS!g+ z8*gi!2m8~<(F}h1Q3uQ}r;EdIY^bvQ(tWpv3;%vH;ma$CwJq2k`u%h$L}LA@c|-BT z*DksawFX`9UyTkNw1KhGb0eRe97Uexz3mK}WvaQ3%G=@_?WE~SeaphA_d@zMB_rcBS_Bcbm<)4ZA`Y7D#TDNkQ+eJrPUZf2ft;=X^{Fn@|^nuD*Q_4fa3O zVL{>+&T6rpmTN=`qfI(qkN66XWuNhe_RHk041Kez-hovrd4V1K!bZ9fsI*#qaUjQ% zT|>tWOUE1z91oe#lGpd9_C*XpKzvw#1w&X2LmDEQSJR9`<~m|&^AWD*{<@oLT#Ee~ zcFf+Br>X+>0o1dH7kjGpp%1aHNt}oYv847?owtw2Eh{mw0|byPfp_k1{mvou2CCQ~ zm&{B;%U;44^__bw)%bN$q$F!7ld`9eW(%8rXdC7MP<{@szd(aUbyiic8(NA%qCu$3 z8cS8Z;`2eC6YxGT^>Mv@I#x4_kTxV>fFiVO6}{yXJe*pnFf>O>uzr#n61KFAR=M#Y zQ?ZalpR{nZ{w#2RD~d7=GI%PJ55hl<5jk!G3rhK|w>6;+iz_n822rmR)DX_MMM-Qf8LX zvtB+{XrGC$nN-TuGI}JECt3J-3Fl1X=yq!tYSKLx3;cFnsxfvpmbR_2BS!VEJa({V zA%LUeYx$2xY|DzLt~vW>sX@wlNCqL9Eap#$q@|=)ZreByp$5AeylFQxnF-TIEm~$80m;^H zsq8XeK|j4*DA~kLD)j(;%J-pq)WKQY?9Dy4LN31*GcPbM_t3V6h^@38)QaGhL1g` zojIf`@oicd28rES)#Z!sH0j2)W7)_IZ1jIKeWX)|Y}vDiID2=gz+AAp0+AHXk`RN6 zzO_|YpGTi~xQEoX6!=WVYX0*Gwb=lTLG;WBxo-EM&lC^d>Qmj?XEh!IJDW+XZv$vf zv?EW>71Dojvx$~pJHQj&eK)+!+7>_TAn1FS*eEmp{dLaKmH5un1R;Y&IkRRz|e>eckBoeT59UI_>n!R zJ>Fz+#m4OJPM)?iCbx-D)8V8DWh;{>KFXGAJpDvvNp0WjW|bTu-kx4HJcLOZ#P}6a zvHSy%kw&RBEY=`Lf$G8Iuc?Jkvwh8u$$xx#>yn1NTcJOMr18F;2|$u0O%J;QyfpF$n&en*B}qD0m-<%qaBt zM*K3&bMFTJDzrE z=7II571sfj07R(GIzZ8oLegp<-)XywxWC%5>8$Ea0&A13QAsH&LK(+lpgQvE?Gh^2 z$aI7$ji$y+hoiA#OBuE1Pu=orZ(IcLqNNp{jW}n#z^q>_pt~q6e@nO)ir~M$e*qZNGr)~`#WUyy9_;6U-pQ=KV4}S9yk`tt#2pr+i zp1TV%#xRNT>a3OC`Ex^IJnns=cW*%YyV^krHgNs3(EFF|{6~he5bUq~JXb&=*nVyR zh+qWvKe^?CWo6`x5TbkO{@R1G^j>7fR^A-i!<1#m~O!) z&;MN5eRK7<=L{QChq;8|3;iQdRR|WEexLTkMFhl!odSRWY@|H*1Qy1ScrXkv0vJ+4Q)A=&~hc=8K8%C^OBN($#Q@ zZpInN5E)%aP-D|VCoVo*Sv_x!g8eft%Q^B6GTX?A4`*QcriKQDuaWlM@2S$1$Wofu zdT2NuMbnzJCOX{#GHV6KJRx33V%09RH6EWPC+K-d%{is<;e_we1RUOL1<|tcX6%av}5j||SRe*&2gl043=0=*D`z=zP2%jTvPP*slZ z=I<}*V2)Glx=OazW76G`F}dir_SZ}rO`X!Fp3pzLq>v&JlAH$O39nnd^VmmptkG`nuxE)AFS5k^oHw6Xq`Gnzx}a>*R42D`a3(OwM~C0y z97vvS9_Z`TOshPBAXFC~ux&~tXrM~+T5>(pDkqVM5|@A7?eZn_rzE#yZ})0uAxPy^ znCslEd)`{k^ zib-OkVN7A5%#0?}XqK0XWfDfjn_b7~&i(j()5K@*Xx~k3vHHI$yHi>7DM&qza`skI z>N={id9VPb_kml;)eU!+qFQfK@r2Z(n7s|>o5u^LdUEp;MMT{3V#3ZD?742Cmmm_C z)Mz2)^pLC;2_GZe*v$)Bgq=T($K5WRG#LQ$TgfLN-}c$u)Ix~Jj2usRII6I^XYs~8 zdA>J{MrzH!6eR!Q?P0;4I}?T@bJT~2(-blWIvq-HSbnUUCXBAd-`q0GnRr8t1QwZ1 zkuzt8`@5A}0$(ya4|Z!7(?wRuiK^ca$fGotzI6bUQzE`{{os@G(O(G8tZwW2HSR%L zB)OLe2s9nyJCiC9srKqR3Rk`Uy;O$X`C=eJQSemm75Ho{ybKsxqdDx$B@_M0N0JDv z`nh~H$Ifb0kXaryh8Sd0-#!nK&*4-<^qsF>8Z3dKoZ8yXtM||XIZvdL%Ki8Ui>tX- zqKY{N5lshJFKN6*FPSXrl$w@%;Ppp}DeE%_9k$WZZaQ~fV>a<@H`Fv^Xy3XhBM4A= zY%8*SrA%(#*rm;%K@vdJnvu9_mL?!&P*hZHnI-GYb@L+_Qc&$A8O365W`X8*4HqEAx3!=$-XNcZlQJxGD= zEb2>zOYO&;o2s=yZ$WiP_hB}7eqekr&dKZ%dPAQP_DPCTW!`#>&5p9UvdIgwEbj3f z7cx=d9T&9cYhD(vflQQu-CD79KZF4kFGwrbd$GcO9A)|e#8{Kltf{~dGT-;~L{WhA zrw<~#h%l#V026?^TdZE?Z`aMcST&_G(+fWqC!Wc@4Pu5!&1j22q_KVwS0`P5!BJ+C z&p$@l-+NHY2$zF`keS+|JmkgFCpF(j@IP-mQ76CIp5=J=tZtdsE_aCBMA3{>5b zLJnu2Y4Oh}twuTPih2gNbgXk(Z6+Gc864e;7gR$o4#bE*Ee|!Jx^=F-WWnzDrTd4~=B- za)z=hnUXfm8h_`e_6}w;$no8@o3JY8>yH_8n&WVMOavMqiS5qvwuDGI03c2s7DD?D zEl_GO`xuy-^c)FTN5m`2RxH$p zsTLU5(TAuQ25D59634mv(4n#uM6c|IbM6H4|IEv!i%+ecYyZxqh|Wy65yNnOkzRO- z@uC-@-HV^HYw#0{4Cn-H-dTm6Dr&O0>*TJdI&w(fGM0zSecpF9?y+a>p}sMPeH`6GtCDpxsD2o}|;bZ)D3v zdPCrfEL8##03-z%7EX7Yo!J-B@D&m01}Bo^)#a`xNpf+=Z8q+z1jkTi3DEoPm_#c3 z%+xK-kK1P$_Hl5k1u`0VT(+Y=e>Lpu19RuUd_iH#c=$0H5ROuOCafj zoJtW5@@bphmsx^U#&_6!jWwqww8~Ng*!tP=!O}k%;#pECMGNCk2TB|~2Vb{eGBHDv z*bgsZR;Y2R`((w=sA?tFP@HNsG>R-J9vzmEYG9#N!MF$5)IVoDrSy%IX`tl_8rp92 z#4Rrw4-d)nb0EZUxRp2}=euN^vx%E4focNidbt`#&W4=69ZwBry(AEm7nmc3r0ZEspYeH#sq z47$T?3Mi`WH->9{tCcWqO+w}=W?O~NKI|?@e5eP@b-bYTbuNU=TWj38k z{xLPFzW8Lb!!|ul(FZz0GUk1(CrX^jVQZxJVq9Mp&=E8PfbBX^SA`nJcQ}QRCyU8$ z<AoYDD(xR+Q>sS3f@#!8nvZw2a6XyT`J9Agb6d})cu4pOj_G}(9IPXc zR~xFEA(8H9G9y`PuwdLbApj0jcDNXQ*fCQ{_z>hgK`Bb9d1!Hnk?p+URrb_~jbyC# z$?K%n$gb9>D&~j!fsJGCtJvS+A-0Q$eZ~UW+9H$lgSXeur*XR=h~ROHb8de0VA8Ikf}-biTo^_c=|OkfvxZ@@ zEA)A!+&+8p0hBwW`07T_g3**FRp(+u?FY7$6;$i@ng;2o9v5ave6Pp-(-Ilx+q@zL z;QY5b9{dmUtd%BS1;DiZcW15N>lSWmej%Q}tDE0= zjbF>2-`J1er1`&e-h||USkPDiPzn;pO&mX%T#%$)ji)d+?o;)IlN~jwhyj2E*P7cV z5r7GY_heS7?A_|{8Gn=Co5RFcaz}5it5E4IY+MSu>D6pXyN&qgyFQwHO)+Ihu;S_R zX>Rem&GM*WA2#PRbS(eCKK%gE#kT8`Rw-$DLaeScqftG?i)!i9qsmOK*s4y*R-<}o z``!DSBX}U}dz-5ra%&_q%HJ3ETulmvehWmq&}#BMWR^K1;9PB1{G+V54YK?oFlo@5 zv&yW*!rZH5&ef1`@3PB|xXjb1yXL{v+pmNV0f_6AW(RxrqNWEiyM)mgA?zt=d|Oe@ z`W~^TEo{1?G*h*gTn~HoCHm4KXl=6Uw?3{cF_U2~XvpItlZA zj?(fvA2?4+MP`!dq!=TBSwaZ1l0Tov8VQNf`imcS`qXVI%}>Q`Ek9prId-4NUwnVm zm+WW%4RvMutdD>0N+1I`ZxG&Ie*+{OKd_^_ zCBr*LtqbGjG3s)x`)6$@;TFc^_fVhpJl?YgC1O%!a&A1G3F&^;+CfNEJy?TaszjJd zbIK~N;qFS8|EZvG%k>B;q?DtHZ>CMl6sATIb3(<og{x9xnjKOeb$Q7u?v{v| z4E}MKLS0KlXRgigl6g{ak2Fc|^)Ug}4`E&BGojOA#G!M1BQUW6G}b+Mi)s%zy&iGy z`j8_bfJ9S-`A1wX4Ju@}r06JHR1-tC8$3qr$gj!JD|Y6k$PTy?>4zeP9#rKoHw46K zzJ6O&`C@>L+?oh4Cxn1@XC<-;zM4~6QY6++tebjvmA25^t7PC@qth1NlrpU0J3u+} zRqi7W%Znhq8Um%V5O{4l(V=O@oB|zu2JuH2e$63c1FJaa^!$)x&J)iZ?6Tg1>l#dA zp&sj$6)7#;Cppjg3_go-2#IC0T)cKpjOOK;TZ!%>$jLFFyL$W8$^Y!h*K>?TEy)uT z@AZEF@a>1yh><>vgj1N(PjS^$H{~6A4OhsE=J7m=_+m7gP8o@r(%=pAL)teUu8u~{ z=5-2IZ|m<3N7-9K7S9OIZII&Nd1TZNSo+@|@F?@zMpJ&v4pn4R6;^c5`+i(JL)IE; z`pAPCQ>;2wdmxl&D>tv3183#w*uY|i+ZHfsT_+4L2(Q-1!s5)()C#W%CQjXj_>&geOF>3WgC0&G#)e!M9K|mYjMewKEe1NKPZpZ8cYT+x0BeP ziJSuW6#KS;mMH`KQ$owJRxWiKjkdmOnURFmgL6yZN(d2+>_xdyufw;C=VA2gjkRe+GD+* z)dC7ML!=ZgiplLLPCW~Dz1043Cb~JF#ity;y(nJeQcBlbnw(dl{bw_8 zMfY8}eJhyB>y4HazBtwmq8*uhktP%2IQiH%rPUWs>h5C^9#EQ0KBmy`csFnTbw+32 zWRCN#Ih-a0_h?XMlU#gq4DR)rFBiY>t-hm&ZyyT_5151_cI16^R{j(I5c9E+(Ab==(jk# ziw)_shY0IfqUS#;dgQ6u*rXg&LYrBb7;B5L*lE6#hfafW=PHl;D z?(5R{h3#xHvCbxgw3Jp!a@2l59_p_PX`?J$f?lV+VWIyKs)b_O`a(L;OJtNawo3HgF?<89{l~%$N~Q;@&?~Gau|gEb_D;WkpupRqbdw5x;%y%s;aR7 zae-hVXaPEq6*j5~Yvhng{9kCOe(hcT?hf*|$Eq;2BLy}G>3{*ug5=LuoKhLL2%0G{ zPRJ_a0}Kl;e!S*d`e-sz;Pv3NPSBX%IuO*qc-stppJQg!yZBJ@==8>MQ{@m7uU)1- zS@-m@M7|8}&UOjf96hb_)TA!YK;9LQ2o%c~mXl)qmI>xrR_<5N))*5nrP?f1k{i?ppPMmGZW6W+@~>QjB&s?OGrq`c@E` zRwI!05wmovY5=Nv7!3s^(ap!f(I<-DwBzkdx<^A2m9hF>-0uBp6 za6;lM*)A?$K$2++vr{~9g=|69G*A*VPN#t8w&!4}J@f$j1#+mV2Flm3MzkJ97Grht zzQmQ|unp)2v4Hn#iY8rH&C^xYfbnT387+t2m*UnIhkFQ|*iUE`Lf%{{Cdps{(jVIR zJcyD@k^MxQv*w{DNe7SHYfVjUT~GeKHtl(on#i!svUQQ=j$)#$-?A0{2jjF+7^|N4 zDjy~Do5Tz2M2LV~qfOHk?&I?qM}W8@uF}qJMEdBXAg7_Jw5hNfoJB8`7f3#j(rD+o zL?g27yM2TFAIS25gv_t%G(f8HuhYkyK zP^T(y%8lHk!PdLRx^yEh1G{}1k5W%Lrt>Lu!*4jT{+W<)=dA|s-J~&;W+lJZN?9ef zrRv%e7h{dVlZZyevZV3^c(mN6?)?4Kl0;I=gw61UdDZsD>#yf{oSOFH)*=Nt)%`=T z!1^oJeN=+q%gfZo?t*4W}o01pK(KdQ6O;#pJ& zb{N=d25Cbos4nIYO!|pG1KF}7XaPDG0wiS$eyE|sNqk3uHwbKbB>@4wi`Ar4LrnZKB(c23^{r{n42esnnI@f2ikIO z_}KA8`j_JqzhUN-DQF4++USd~sIY|ax0SIhSW;|n zjZH#Mn#%2f8r`u13|!fEB9i#>(cpmWmu@ZPX!feiDP(;M51qEW9xUEscYU2&`ZSM$ z`H}k8Z|Y@Ib$lbMzjThGS9MS6%vn8}`UWAF)sszBVT<4yAaz09I35Va+Zofr_08t) zL>}?XE72MB=J_%^&^4!MkK=XKjN?0SDB2bz?7880e!C%No#|7uFI~@yCN^@VnzF6| zx;BQ@{Vc`uooX|WOmg&b;i?zd^~Sq-(cEHopI3zBMWdZy$%uVvH8>*}TMQAA7&Y>R z?&gL>VXB=x`c|pnS4=5_*Y(M&YG3OPZL(*ax9lPH?435!VhRa1qr7Rl*+X0=gqouv zh&ZZ49b?A_R+)B(r`M%P?Zi!3gwl6t=V(_Ca1}N)BwN=u&R@n!wMORt^t(JSk*5x3^NoJPp9{V*kjc^Ks8{!vDZ90I9dJzmj!UHZ#EUl<0hTl-`*5II^ zl!mdOdkF1H`@QLk7yRY`Rhnh2>B*WhtsZ(6c)Igl5$;LO)38v^2-7Z(A)EOV2_nqf zCrzAsQV+wZ?N)Hu>*Q^0Y@m{mj1rQbia~o_>Id=z$2q!VMS_B+3+3;Z_W6dLoFORR zzNi2{M0GkBe@oE$J_Tq-dPQsNrlvPCT+@0WY}y>qs;9$b>EI_ZW5+B*RiCBN8boHV zOZ@uT!cLSZKZOScSvf`htRe$D1CCOlt?FCxZ}O5KbCq1@2w7#0M$XkW{PcPwHJ9Y_ z%Rc38B3FG=tQERhVV__BjhzeiDDF+V~nN` zs>T)Se5vL}-Etv6c*MKx!_CqAuVVNbA{mD6s$OBO)#w4I4aWFm^YZrp$;3Hajh z5`VzCa9wINd4g}63nFa{GasQ~iu_Jkx{0V_bW(N~Vyc9LV9MhBJtX|?xSKgd7Vqr~ zed&RotNHPo4cMd3D%_$cQc9`a%4KOHahpwFz>8beIcc>N;(s*u2DwdIYS$_f-t2Wt zy*`P^he?d%M~zFa?FCi+YY4I3RuRd=zN9ht z&}~V?L}_GV8>-aHFMc`I84-Bv^2A%#c1vUmUr z^o9u73XpDSA_m$b!0Y?zLxVJ76LFogFsC%(`gl7YSVditNX-FVg0BU9cWJ!AmM1Y#J0$qUPwhdFPKtdoyahd&85Or+^ zuSk1RQwiv9pVlKsLQD!Abkc3VAscxdB=GsK^})*`6PZm+9E zSx=TCBXFfT9a&DJv~Nctb+#h{*uu!6&#s=*C_t^irZsfAp~WTmVk})fmRx#ird;$b zeAZz^$CCDouV1?%!#x9_GLYF&zBnL~a$<#IIT{dHXzRvce^gT9VGyy=R+Bp*jlSF& z!pY|clNCw4;&2DOagpk>jQY$oS^^HqARp@oH z6_A_>Ug(gR0%_{n@(pD>LbV*O)0mVXmW^C>p``ln3)ZT>)gv)0u?6~-9(d{swv62Z zeDv{5n>}LJRh@g@&BJ?L2&5E#4Xl{YHN!Mi3pAzNlYj+PPiPyzprXm+WbaWcsY}{CG(2o@PQbCjvdB!W zDLKd|=MAbHTG-bBQJBSojHk(H-M*uE%29z00>2Ll!}0T1h_A3(W&IHX8;EYWQMRvw zMU7&x5RAEC+z@6t{mZ$yuaO!9p|p&M)cG&JieK>dFPl}qU@7lGu!^IHNC^06Yr*BC z!*zjALl0}HpC}Sja-<9J*hsx+$OSh7p5q6NO>Od_JPHUbioX!qZ??W|q;gOUCV+HR zIlVtf6F;G56`wYH^%g%%ly|1C0#ecDVk4fjUCRdQgxHigeai7&`93TI|J|}f9+Rw% zjp+OC(oR+DCaE8OoF^^;mLcocF?5^B?IP}ad|4!FeG2BDuRdL!eC5o^Cb(xlq#? zj?)(Oo`f{l%!KQft|9BjH}EtyIHm5Z^)4Jg=|mI*H`{BY4qomep1sPhc$+ zWgoSE`8;IsgvrcJ^-H8N?n}JuiNRxFL2?V)j{WSdOA0?BIGh-o&y6kNj?ggnW-0Qt zMSh3-(=(vDqHy-ZB8-P%+3AUbn&NEkR-LLX2Ua2q9Obt@1pX~sW>5X{YhReg(1Krb z96F#uvg3+rV^4d7c8qr+XP<=zKst9N zG}I1pB2ev)D9+lut?{-mUiA;~b1#E?J41&ueX7^ZntW#z_U6K|Iafsn>050V$`3C^ zyU5%}yOpFqDkkIp&RkoXfCW#F8Vzvg9a&*zUFvhAqy0zf5liJhLcW z*I3j8k0~9a9W)*i{ujPaKxjB~j_jkuxc#RSjM=Y9WT?(8sF0#dYft z_S$)0>RZ~5XtLPytnOs zv3*_5#}Vz3OHzGGqVV+W+*lLCv2>AAQPt#&D&AaKlElg@%-b+Dn*qt8r3+~qJXg(I ze;QtF4@;ZZELMGTB)vN-qM0Qn>j}D$PARdEF=y#wuWuMMzsg%7U>BCQ?DR0&kLu-V z=LgI$5>3{&Y=AkSYEder>rnGg1qA9V4Tf=u#cox}{IM~_0?2@p^N<;7!wu*P{ZUBc zvqut>Pxxq3dx}vfysx@av|5W0?{Y?_Fm*4v@oR@Mw~$D;Izd-!;mjF7EJ+_jWZ5O8 z&KpBOoWz{;b6{5|m6Zhp#l8^i?$wSIhN3P(2Fz=sWX?&nzi%n`t%EU<)$|5wzI$#g<0+QXm0ljF zzu^s=Tsbskd51}n&)Oftp89@6Z;i-+SFL$|WhS?H>pK(=Z-(fOR6rN(J`=}Ki~hV| zkS5_O^m&28^%Gh3+01Fg<9rL`uXpFYnj}`mt$Kp%d?}xNQ#nDBUSj;8d3v~fJ=NM=zrbt%h&-7M7M-74 zM4I!U!^F63Y7_II^0%XVD-OELT|LzAg(d%!(O2~8n z(ZAwoFb{t+z?Xv=eD9c9}7D00H}`0 z%R((70rhtT-diVwVOGdIpMk9SzgbJetUZ3d;Ux)V!3W>_1^$YHd7!O7&6a<{&U3fCa!v+Xh}~*oZChYJDB!f4A#D$A|Z? zN)F8XM+SLKLTQG9tWaccm^K?$dyxP8iMgLtNY1Ti zg9q~pL1*NE6F>^>hIjJ7dH@!nbNLtbJM>cs>}kT>x(Nwkzxor;|MoaxtM&wPG5q~B ze_h!>N;NRAVDic_8{ocB`~PxEn~jGZ_)H}r+I@`x{iFnRfq0&neea%z3c3$y5$a(+ zNnGwNJ@u-IQCc=qd()@K^*GrMMy(G`L!lKe0V3&0i)^6Vvx!ezPA>+%AFSSZ1;R(R ztGTbXQV*UAEp>MxMpGCKBi+73ePo%(lrS>^${OoigZoGn@sXu_rbJf39YsUri2pVi zD;TS_)IY1U79y4U)j)&4-q>h`@65Usgq-MQL@4P7!LI2TO02bbDlGV|e}Y=m%u;Ez zqV%~2ZAFhS#j&z9S97{*Cz1f!>cgAlZ^C%fwGGQ&YIr^e)cXCcmbCpFX?8DK%ELzd z9-P$>q0Wyq6`4L|aUDuR#>TgNl)LSyr}WYX^^Bns#T$}OuCB@NAB+5oI@P&(M?gl6 zw-!xbniIf2R$k3$!c7LuQgw=sXY!)=7)s7twc)}&K9S&l9F=|S_?e%Sb3o->e?G~x ztF83%IoGCTC{`I}6Vbsgj&)yza{t<>fz=HO;LPr<9~sgDS9{BSlB$$^3?CanSg_+Q zKF+G9l@3YG-y7o+~z^>rzdzJrWE^cF8R&1BAy zzeeLF+lnG?i^LiWKk|M0LwdrjgW)<3pbeq}am!&lQm4Iz>N$IajG0GkNC@n?+AvTBa~S z%tv9%U<_G672h3s`()WD6@R=)-ph@t-6u-lN9pqMM86R#LJP;`A$NM`!eF?6!@4$# zAJPsXVh}}ne!Gbi=A6ayBp;KG5OFT9M*&w~@hujI6nm|L{#&Nbd}6|FDj+XWX@a+! zZO4N>^I)Wl@7v=5dwSVxWpsHPHeQuHsya9afn*wccr|U!ZOfY`C7#DPEex|pYU3!U zkC$6BC|=2hwntV4s}i#8MZP{)J3_*L{e2`GGCgV5mp(kEIe@dz) z1lksHMvp>!`G{P~{B=)kDgx4BYI@8b4IniM*h~84K>)C^EgX&UmUsQDEtOpPi)CS4 zNFluY{AvX#>oe8SO-mWoM`v3v5=a|sTIs~V_j5_LUKuGDuipM=%}pPAwH%`zW*dh( zBMqxEdI)4l#h<46b#{Gd=>WPPY6d4cx6Dp~JSH$nU$G*wYGHlbc1{>XnO#2`Uq-YM zvRcd@ByOWet5G3%jMqD)`{a3RhGb{z2!sg-bm;uj>-7hOX=WF30v6J)UinNk2WH!d z@X|duW4jaHy$D($5!RZb5vpQhoaD58h#Sd1U6sd%TmT~T@PNnYl*r;cxn?=+6Q3Hn zA+NWCMI2f7Szegb-Hq~3zI?s0ogkVzd7nlbYW^W?ZZQS1G)&abl$xGn?@f-^Gy(+a zTa?=lzt&uz$@&wl1B;JS$)GpkEx^(RFRH^64&ND2DWIDAt5Zq6-s48^RsZmFwerV0 zk`T}6qOvgwFff|8e@K|l54lg5XVSKOifY5eNo1MwLNFlZ*3C4~bCvNh!~U}B0L4Q# z5m4<;I@l#ps2rzQq=vXyh`PiAN`7d}74f6Qmo*REWqCZXn9C!>x_dYh z&D6=}lXU0S)(o+XZ7o_M*`)ru+4{B%j$3I2A;)f8#+^)yCBjcnU>u|=TRwG+e;G)JgT^$vp4oWmJ$4EgT8yG_F@bIPe z^hYxqQ<4^8-Uh3G14Kfq+FQV1+w(@d~PYEn$BSg!DD=@|om;%CsEs7dA zkd#-ZOG6A%o>JzDV|nd3unn5$3_tH+PUP#q0{Y&zJxvgA3$7nYtFC0u6hpy8NsX^m zUw!{A>H@uYzO0<5tyh)6cQEJd3)5&wI3Z~CI{9|`9u3ft+QAkELq(|Ua!%}7aZk(c!cCjz?c@oz@mEXPmHKhLm*eLH%GNlszv z#kTaKAY(J58@G?zCRArwxU0(uL@1-xT9C^tBL1yvTrYnW&gSFh(ouz!;eYW5lsgRe z1#c7rfPKOLY2*vOH}d5|`s)iGs+a(z0RG3r*TWpf7Q-$KwP1jw#vImPhh4n-w2Z~TU+{$!Q!Nkb^=3m6`V)CTqg;u;?60Na4XJs8|C{(BGq!BBiq z(-0V?{HKE}Oa%(#N&nAnh`#uF8~iXp!U}zna6iR{_3xPEenn840U$f{_5}>dy&HsO zd&9;W`H{0sI#J*We4)?vfaH)KT8`(f>ur-WQAvhdN0;#kZH4MF>-00SGsEn(tRdam ze(+%9_P0Gli6k-)T^=D6+6=oD5Aq9yHkH;_U+*gG)t|6iGFAV1&z zbZ&!*0Z0_~%FS|BY(-|3tO?_o$Wu%>P%B@C$Z?>1Thhiuj@2 zu%0fI$_sX^_<56qhghJ7Ua-T*&kOA{hn+W(OduXCXawE@_Df!ge@!K-{V)FdSJ?jB zf&0CT`k4!JU&_JwYXKpsh7^z!2pdo2!G?`LPFnzTAxc~AT#z5%v*M8*icub6XeF*( z-Fi_$h1^K}UvZ_3OR;Xo&?|*xU{eKNp{#HC(}cb*chN$ezWc!s)k3;!tXg`#S&SwD zdGg~_A?4^x|M_c|=F*J9X~R-I5-Ve|S8M5+YD|2^;p5iMP2e%wI1Co-!9i*urWFD5 zG=#iW&%j<4{jZ4+=E{ZP`pI-X!1nv{?Mj7iv=t9|bnr|Q zci7`oQMyT1F4uOam%3+>DsL`X30PHZ9&%%a4@0VFzp~=#znZN$*)`E^KhqP{j|r~S z7S-YQ}kp8-YX$86rFiD8aFYxBNVWm7-EQIM89A= zyb7Jq41z;%?yr?%H*&nH?s-^{Zl72~FVt^tqJY9Ei1Fv;8L z6GPyQyI4NsN4l|lzsTF&tYpMG`F2HgHsnNgy5?jC`kJx3QXlT-Udm~c)}VMD(I5B) zA0M}vpD>-DE>nzL@mb7+Q>UvD%CR2BeL4d=N7g$Do-4UL*)&<|Nfeekc&Z$9nd(k} z|JOy+*FwV@%e`UFNH1MuKmC$7=FECuC`2Km08Zfu(Fv2?XO()dH zA%u`+J5{m9bR(0zPZK3*j~k8l0I8UwXaLLIemZx|V2sgvF5Lq74Yi8(v)ics&<$j- z$?nASVdWIOu;oQ%S2%%~6oWyuW)nLliASfEMf(MAfg~1?o*4%w zR22s4h!3iJs$o}b_-UziBq$m5>=e=5e1Q+bK5Rv3e~HCoy?wA_ZPi+o!6VIJ@ujTJ z)S!d;HlnJf|3dF_6%Mnp{K?0#666~j2b67HLHtEOr`ivrCP}MvR&_N>)$C8BA+@Ll zd6?)&!l1rJV!r+O&noK`v%knk6ehf8^PgU+?&J=nd6xjd?NV7?&9TT%1iwP5Q6 zC~x*d;LD>o1B9aF)+|(daI7)PKlYR4ypYJK(kIikaHF7xcA?N zM_W1zYlP_GY9L!{si#J;RVi2Ol^kTclC&aSVa99d+^r$V$z5Ud=eO`b`dTYRqO0`I zgFDWqPM<+aMp~LmO8`!_{-`C-APl7tyR!Dxo)O4AGPr&3N|LmAh&+DYD5mx0aEKRT zHU;R&*6XD2ah1bsHJAD?bC77OS0d~t-GVXAAnrn_hF_-8p46+yIKUF(LC3BLJeM_d zwC*}e@9^`=w;^Jid46HV-1=7{=i5G9O_5gVdSvFQPLA{bU)C+1ZHeiIz6kXaM#P$lZZ8!Hvw!jxZjGU}!TaPBTzcy}Ibhr~`<%D?9`^gmAODZG^ zJZ=$H7k^TRdphbsN44oZ?8)|NhJ&cfAns+A`i#&Ma`V(LYNxIavafn-20DxwcK1%I z?~ls*1{lA1EU?`rIR=@HUF0L`XtZ6PJojtXjC3{Nh>2j+THC8(S`($Um!>35Ur&dbczRvQtc zt%dr<4}3sVhP+vvC|!zwz#VdEzeETKKT3TrI>8Ux0yV$#O~BEbNWNfVR%3mr#zd$* zNUW-0f1uXyaihbk(eCBI9K2|r+AA$L+xXx+ z^Shk!j*8B86ZmhQ&;A9DC65`?5P|Qlkbfug`0t_Mzo9XKe`KEg^k|TUCA#5<{zPEl zpYWdr08SkPlKl^@$p41;e<7})L@7If?*A~lr1nBiNK$HDeNO* zd@0gjm>1en_&1R)05h)nN!v~r{6*XTEAWQ$zy>%QKKKDWk!V=CuumRbR6M*QmQi27 z{qsQ!{;gyY{6op|Q+Ux2OIZ99cEd>F-(fej69fa)L+05MlO40MZQE#LH@0mx_KxkO z*>M`PF&o=xY};xZ=cfJ6z2|%f&vXA}?lm*lT$=O67~}mbPA=8;=3U7X0$@OL!GJt) z@urJlfF2xnY_{(I)i5%$gMYiuKdBb3zx=#^sG2YjnUI+>U`lkmJr^t}0b|Lx*_ zdl~;4DF<~EymE5@&*+Deas^cfP?xclK$@_po8k){tvV< z2tb1T{o4K2|LXTx-2eXF{B?{e{;j`F_uu;4y#0pyN2cdL$1jP0yRRQc{?>o@Pyc^^ zwf`EQG~sRhk3)a!umAQN>L1;j{~SN#cYlV)zur5&|DG=R-=5LmvLkq&nZdHc+*69HquLU<_q^|e-{Lz;m5yE#ERBtA$EQ+VsW@`G>{LUXoH2bYbB1GyOV z^!_W-J)>u)Y-2k=I>b`(vtcn=ZQ2~slwHSkf>P^{7;VgI{~+g!xLI1jP>I79HQuR8AX!(nd{t~3Za8(8U0DBeboy^16fK(+|k$*Ajn zGKn((X->SzH`5Nt+rw$iM&R)(tL-iKFC-Xi_AazL6wtAeVfG>r{IcmdC0sSxMvKwR zj&@o-iExg=w!cIOz3tp^69hB1tPyb5=v;>b4ZK`lk$mtKX~I=NnnMMa*|Dm={Cu2& zh<0#1Bhs76j^#Q8e@F8Cunyi}UcUSxiUl#4>v7{=D~aVh7PlYI#DXaK!pz>1OT!QJ zRjEwN4pc9KOI4Nr$y4AgE6FymY~iwAFe*zGI=;8ND-(;{WyY|vO(2%9#_W%!N|tv8 zroaZM7^07e_>N}dNeHa#!3c2$NSyl|SrJ?Lo;UZ9oV4ln!TFzm);bom1fzV*m(V(U z$HVLBet#q@U1O}@d3M={T1aFaUCkKd<1{}}FxO_D>QNdBF>*!qEpMp~Z6J>~Qy^7N zlqD)*?lfkDEC~EgXDZGW@&}8HT4IpK_f_EGoaM2aQ4i^SH}jd{e!qvDNxq8}m{)eW z;;-0d!ZmW7OPpa7o`)6K=>Zb{P+*1!J>Gr@m?q@|rshy6TI!SZ>_xb!N_<@7uga>FZ_(AJ1 zxg6bt_dgR)S!s|$V?GyH?7FhyfIq6%@j>I4FMVYW)$zGEJa{H|=+#j5!g~lI84alV z<^mie!n}7P7yFZ!3vdWN~b`iKzyR@lh(x z#H}%JQ<1~_WO!LpNA#v&^B9yb*xbj$U@L%)9jNJnEYzm*m=bjR<3Qaj-zKaK8ctLA_sWob>L#?uy`%9Oyi}^BqtXXh$fBA@5S>sZsJ^S|>eZFt?fwEuo^)#7HkmTkQ9c z602AD8h)u$OM@(Tr3J&hPV&tVus_<2#P#KTlEDdI=QS;*LCgF*|LDgG#nBKkqBKM1 z&_JrPP%Kg~jd4aKyski?FweRl&mG{$vPo`J!G#gy&E{At^koukH!WYQGVxBCO}~4O z;f(Sc5@d^Yc*r(#*Fh7<@v%v%Ku^@gj)Hv}Je=?65N&eb`G*3Q6x~8iEOs-0s@K3>F!ig=LYL zR>d}esTzmAIG@y|t9^YMXCM1AHebQ8=L&4SXUdISE?wMYI<5+6b@|@YP+qE=dpEDB zm_X^WS+pG)ft_G!IZjh+bCIHm(*vKX((#ARSQm|e6Pn8O>U7CYbxOzPm(ko3uzU!Z zD>k@WU$=O8lA{zL(bEkv=&*!DZMTb6j7a!%4%x16$Nh7hWdnrA(>-)ElxZKfr6id9 z{qYgB<~NxZjg8f{r_o1`$!}cQY!3)QuNr|o$ZAws!gXH_u52$}+p!$WxK9Y$ZtRh9 zrNWZ40UJ>Fu6_QU(VOm-p?6KM9E^`Yofb4((gF8Z0<;uBWcj@Sb~Oz=xn0C}VlxAG zj+Zz=M(oaH25EUAyYjJLyfGj~z~usyPb$no*KHoU6Rvl>kP{D_rS=%@DMy;ycyaEf z6PZU*rO2V3dT6+HsL^<1wMR_Tib?Vx&TKn-P)-r9HW3Ee+VDOadTaZ%rL1<1{L<+7 zDGFDxyKUit@aSGSl=Fl@zfq0}3LbrfX1wtOUq%6pNzp6BAkh3<&H;Z6fRYq7N({mC zmIy%^1K@+cX97sxbR_<2AZGzcK$sP8CNS|B;H}Qk@22b+0Q-+byXAlNCH`(o{ZI5X z2P+BB|0}EgzwN4j5tk5O0ANC}{&sIPXhGW9Z-|M!wzwqjNrTcu5-Pw}xm$5ed-OkhD-q%ET9>pizgU98G-CN-#wF8;E=bes2B3f@lWoX?s)G?J49{Ukgnii8u zST}&|sa`gP0wr?38MoBBw7c{)UI1hle}s>N8J z1d!{>kvGUku5{6E6e@eX^(-_Mg#or((cf7~Ouj*{j@BGy7R;yoK8id3qsRC*d>Sck zNXCIg7ICRp0KJC_lmq{{W-NKAsw~^u@FyTF`qPYt8`1^5zOrN5jFDl2`!NYZL#9>O?V}p}brPUmID~3MXr~ zHULA)Zly=LxY$jF>A0QFI~hlOR}4B4rMbIp>}QZ zMgpI#BYB__gN-9+phjB5{fGV?JOSW6idc7}L~^czQpxHO+eY>5jW^u%fQ6s^BenhBuh=70BoT&UqR%c zi6Tjy6I{ee7%F+q$vjj>=P+5(*)oLOj+T#xh06=E0_+RkfFJC)@s!RWsuTBMBWp%FZj^QZe&OeGAI; zQH;=B(cWJ+Nv;I=E+q46vD!d|7dU!mHVt0=&OvcgfjvS#y=!t?mzvsm3e(MEvT4SL zv#Me(oU*QWX8R>zC?JYd?N{V=AYvwN!B&Rw<|u=!n-EOL5Ss;Od`Du0zFJUNcTN}w z=eN)lwh@(;FN)G1G?%-MK)8@H+=hxs)8KX2Ef_&v&4A0DsA#G$moDNeg9sy74TvrrwepH6iZ2>XI^ zOeMAIb+FbF{o$ZI;)H?-zVstwD_(DP+5^^gpE(h>iYN%dZ0J_ zX!4sAtjW<&OZ|8+itd-t8KJ_*3{OB^&DT;*BfXwr-`de(o?Da8&x)Wr)0|@`iQS4( zVILPz1{a606SwF_MX33Yw%Ql@QTh`H&NkvRi<(<F+l&M4GC;C z5x0_K7t&N1D@^buDc5+UyBxpBL$h2E#rQIh*-l_}sd5t^F3_7d*wv_jRs|VL=~@r0 ze9a~owU38>M^MY@63TL&p(cfXD;m8uvAKsT+;)!lX)Jm#>2{Q-V&Vh z76Xey;#)2$MOK$v2N&xGnOD2~njc=DuC}kk6iO}*pR75?(s|_Mu0O71jm2I?WSbhQ ziNrqTy!2BQT=7qhQj6NZup4&V_yXxa&>`(H`@0rboLX^Qta~_`&@;?)IpJ@fn(__&VyF;kB6DK%rgoQh;RcjS zu6=6x*ho@FbbN1*4uL0mpT3!Av(e#gkd^Ex;tSe`yS4Mbwk2WlA*&@uZRKV%^xLwg zl)X#jg|~y}w021?$g}~{0X_sPs=rk>^-QMfZoO_Pug3Uj9mGv6v~O%7$`mJ8C#^9v z<}XT1rWRzyqY72HLyQ9*VbBfWX3@hQPuxgJRc|I8o6g2qPlRcTOO1Dyx589Z+YylP zS~?S>9tHEAj+mnwGe9FG+}H9W;mfnxr(GE^LGsTGl+A+m$`b(wm2V*!LOiJrZle!R zNrF--&4JCn{tUTKO-cmT9$t#A5G`bUH>Se^V2fvuJrUKO0Ey9aJb<{{!=<~^bv5MZ z)a}Bf@p<=zMdUqs@mNqYDd9WnvVa^M=Vn`?FS|2epe_yx%Fv+rv2e5%SV+4OAzATR z*h7_fQGQ4hS>yn<@7%z_TnJxAQ?z$^L62cM@T6ITaq z573Do*Nsf6yP(%UO?Z_ZYqx3%JM6%DGkoH)Y`MI>2kmp*q0@Kbs9a?YPkFSlQA z)7(^+__^hboJ~^0|I%j{X(CqSE^xX8rp#K^AvQ8`?>!cSNt*&;Zx*4%7wun@3TgQL zrHF))l-w_N)^EK z0B>6$V#ZGw+LT(hu%XJOT=LQ(3j#ucMmntT%=0)(+PBtc%5ySXr?y{sm(9nUBgp zg0VwwzkNhlF>l9RuOvjZK@NX{&JTPg*wlsh{;b;>?(A6`#sfkZmb7z8>T0zImYaV{ zbtZfPcPya2Re|V=Q-=9rK+e1MadT?@p?T6M??<9KC_KI)l5E5CL#-D5XI(5p5EfQW z!^v`Y)j&4XeoXcn%IB@ZsHUe|^6<0}qHfOxU%Rqgy21&Z!CKauD6`I1$}*wr#^RE5 z_)e&dB}=_SuH^|^X&s>sNFD@sAi+~05ZyLH>rzhRTlRU4jYrw$pj!@&cVioIX?#1k zj(Tz#o<(l>ogBkkU4<#cvFdXOdq`cS(|D^30}gtB0&|@%ZuL!TId6CNvAa))`j7sf0MJZ@+@G zHvoA4GkL`e`d#2PY10z{ljp7Y>c4Xi-h}Gaz?oopc>bi5ct8ZVnDF{;w2f4o;GP7Et?p)rSA1vj0B+Zw%OPK-llRA3cEgjdfk| z2AX^$ZqtG6n*hZ?9I~EMuer#=HL#!0b&2$Z5hUt2h1dYCsyOzZALLsPL{FjGV)|3o zM<)p>SWr--k>)kGf*YPC_A?v5%;tQYeBECiALEHWiSk$de5VoYM00GbQ-J?4GHNVa zp3xLNg(@4@H2x_^KX?8{5pEI!MvB&WgWEQ&VE&i1c)7+NF!$&a#Hc*0ScL$ikn+7n zuaT9OhfJSxEXSzZ0jCZ~d`*saDT(3a4vF9_(6|OxxAx%py&i+>F2CUz)ZI9E2kg|u z8hAbJ{6}>xNGaB6KNu1+34hqpqN14?%A0C`MhqMUfo(Vr8D|Cm0+Nc1rrUN&JW8Vb zL_0$(ODJ|P>OA4ySK;MBEc~y{I$aNjmqwrBg!Xo6 zD2L@WB}jEKXp9c z;KO4Mroz8wKR;yfZwM_vu{eX{j1wE3!NaYzrcrOx0QakWe%_p3v}2fRj}oyaX#}Z; zF|x#qr?DivbdWaGruQ);IK^pgC@CHhedK|O7UZpdk8>h6H-y=t>`eG5V)NWqBx8vw zZ!=PmBB-rO<*h6puWvLu9)3HT@vG=1AaWzd3E~)3Wn3A6vPsTah^D+u#;dL%(x0eU zsxR_E7I;z-$OaosT#_59dhuElzd5}Swdk(CK>pDe&L~e46;?gQ6}4`r@4Xixsk>pB zs1AhT2`hUkq7E@Iw0)s|znLox05j8-46$g%G8k(&E=3KHd{A67iG!f_pmOZWPyaT# z03$DXQrcw{?W|7NYyj2sLtjja%2i#e)HwI~4T}YQtp0X?GTzy>z2G1z|4wf!^gTbJ z@2NP`ym``6Ggl$~(v`-vvD_VFv>0St&Ish*16d&1546VW`UyPI7S`FEO|l#$c4362 z3Bi0e8k!;vQ$TWmh#0;qujRZReHWa~6ff#!>K@qel_>w`Gv{GwaH4v|9+^XnoYVm^ zUSL1QM`jL$)5Nw3k2>0W>?CCD#yIIDPqolOZ~Evb<)}Ncr#UiZ;o-QSkInIjGcGm}&yUmc=lPDc@AC>LjV$ zCyU>4=8!mASpjJD(hZl~DL0}&0V$j6)L5-c za(U@7&tcWAE6uKJOxv>kCS>#8gbP>2c=GzY6IoHTXNt^qTUEh@VE|`BBr)zDBoi?` zeOLi&N#9aQt^+bnS$%L0*2!_W)zoESXd9T!R|a|xI!s+FNk$tk=g%~0I>tbZ(s!-( z+26M7v!@(mN?T}Gsda(l&mjQ}<|9bd^wD4IC?;Q$oW6c&Y|qE#1{|93el4rFSk*tN zafN!0OipKFORf{Y1f_t>et%HShxjg|z*+WKZ!DNpHq%n|suy83c3K2L{n5UypZpUd zIlu!%bh0*VyM1*&P4fDa1LVDgRx^P8+5iWFe1q}qP0EylhbO)Cb`_B@s?u8XkR zDceAUWp*G68tbI`i~6noT6eB68bf4Z`w+Y=zTY{Pf?f%$KcPH>K7a=N7N@>`cO)h4 z!`QTQK87E)!xv9%wM#@&`E8o8YF#Ngo~~V?)ml4rbd~^0IUiZ%E&X1VTS; zH^;}W0UA+QnvRHv>@;9$Zz`$L$0>C&ig;E%%lG}X3Rv6UU6Q>Yqz(_9<&j`$uEa-k6}_%{JnW0j@AkIHo{p>mNgk{8=| zEZL$E3SvaNsq|aF=&6;88ctF1$Me8-`^=`UMKcubGDcV@lWBgiO|yP=o~B(ur@Mrn zj&YW=>R_?4klh)birLrVUrA5-yemLO@1qkA-S0;5rOX#DznmM)aJRO}^KN=g5&VQJ z%TBHak*KqX9NEkY_!0Zk&e~YUX{(MRu|b8PP` z`fjy6^>&T{jnsuYUG3IDD&tr0d=q=3n5Jjcse=5NOE~n#D%km88LjW~uhLyf+kJ|Z z&tS%*ot7oXTkknlwUWR06OCLlPJ-{d#nnDr&%kppZVcsP0a&%Cq#v7jLw~f*Tj`b%K@!wHR|2>+-0ATq?@h1On zKn^ex#vt?}cD>pVDIb+wA0t3ZtnJ}`*V=>Y%g-NOSH9*dAjC|X$kXz7#h`<#`b)sA z1##8nMrXUQcYB=?KF$pU+QZiRBK}zZCd5yg2a;PU0wv50n&SX;j{reXK0i~xDQ9}& z+-V(t^XR=LvhdYsXaa_Vum=vNsFBrgjC4R&Mh|n0I#s-C8e~=^dg<_YVmuhSFu6|m z$tRoGy*#VXI?4U2IViQ814%ZSkZWzoWqe;r3B4*t>y_lF&4ced_B@ELObAzFz!vVi za=D1GaN-pNTSLR92`r@Gvwcy#YkcEAL_5Lp4PS_PB7~KJ3$wL}Wa#EATOmV3MIr*B zW-DU|$24S>8Had#=%D0__r0JO`c*S3IomkEH;fcD75pnO-ZIh@MinZNwVP9s(X8G) z=s1-ZE6Sb^@W1RsW=oG%g~EcP0KqD2^?aPZ6RrfGW04_q^hQjR48J0A>?*ZR0Vo*e ztj^dfnkzuZ#c$lVJY{S4>u`Kex_sak$xk&_u#_vPs+fe9Z4cq~&R*i4@L%%khLk;#bGidS<@X+}KDCB6d=*3^8M zOzl($b`(@Lpf!b_Q5hY!a|Q2!vN1NBT2U+UYwwkDA*!z3dSSW?iGs9AKMf5wzyM!nN)ci@VpmsIhia?h^s+5^ zz_H97eHLphR$RM01VN|-f1=T^E3L|i6k0J#g;2AU+o!y;FSVrm2A1AIR@DIm92@(t7KkKf7*0@@ zxuoq5Q6DWo`@pw3^J>cw-qgV>T;^2_#O254=)*H`a4`V(r!Q|`dMVjltca-dhO`HL z_nPD6V;&y%O?~hSTi{Th(zicHV>4=ZTTT=uusI zQN`<`?<8%0O$z$Jdf(c1$;}mr_nA+EAE$TQi)FRZ`_pe__n83 z7^zS45%gCu%xd%1AKgNp3*^6la(ysm$^soo&DfAPf5Xw!%XxKU6VRz*arS~vIK%r1 zVfzUO1Rh@&9s0NFm;%v!vUpm}dc^9ntH4YxS(UzX}O2<7jk`ajeS zcv=3a8&LhXrTX8Hg}f|p<>Xl3V6+R*Z@|a#J#cvX|LLLrZKeKaEItMi0vSZe2mu2! z8UoaUw}3E)0fxxq0R|KQoHD2q0RkVii4K8^{u_??H|#7gOQIJO4DVlp6(B}Th(DqV zyezy)H4U^7yl<7e-w?6?ofh}cNjwt2P2!KnTf+!|1K8e4X2Q0cZu6cA*UrjDtzecX zoQIb0{#8SzLR)M%WoJDMBw930f&iOaJyr@B@^iHs^ukMdf8T8@nE;1M9ZJ zs@h<@a@y68P|@9ssUZ$E{X!zskYAD#^?n|3Pf{=+nhzk22>T`x5<$MTv(qL&fQ3;V6$jrh7o>D^2_CG(_wdiV^7hvo5E7o3^-aY089<7` z`X9n-Z{m4>gw_6Wcm8$L{Ud7eFF4BIqx^Z2UPussG#CCIy!%HBul@IZ5_|^^3&F9)5cf8m(l8vpu+ z{%;_||0dY|4xuE~kiSJx*pf&-V}NuP0E|GbxSau1zlAE2{RsHbcHj85aY)ZaB)2o1 z>Ld@dyKXK-ne8zYtYO^5^rfpR1vO#;G3$Iy8-{9YuJZD4=T$rmUoPXIXvt|60Mfil z+Ayt7;z8aXH*=A^kwXb$C zQ&x*d0)3u;Ze;wj!Sd^j4GtF_2p8;GbQJ3kb~=;y`O%FQO;Hyt#kBgEVhK3<80FtNX{u$G#wDY;iVSx{s+hC;?*tyU5wD2wi==bY| zJX@!I;}$v^YE@}ya#^!4eJB|QRf7Z=9cN`;kB1SpLn70~g;#O(oY2P}=7H9B>8y9U zpwyFe`EtJSbIX4qP)*4-&W*pde}gB}*8V#hQ1r8q2PBhBl4*qAP1q9SD$~jZv#I+^ z4lb8FwqA<>(TfZ2RBDJyGsbL@3Q8zZSpt-`n>_x-CsRgGu`)NPl zA|U-lsoSWaK`lkrH~dIyH~mHTQ{wTgAfY<3#w)Jza$O{}elce#b+qG18;9z5an{u2 zrJ-*%UdgF3gQ8(0f<%|E1fQ+WfGg+SY2b2^GQ^wDHfnFsz>2_S^J=T+!d%volQs@< z25C4Ar|nk-_65tlWM(`qsBY4d#(}eAb01C#(Kc&t26_tlaoA=&CHnhLmzV9-23{`-p zq#g#NZuMGRf3Q0O;A1gr0%v*fthU>NO3OFUsLG5u_(ukgKh z%*vJ%Sl}$h*GA2vnjf&N5!78OzIi?L86}#;wx-=S__dekN1E=wzE#yCE-5`Ag~5lT zfl9l~o;+p|p_N@Tbye@lq8bcpf^_^K`7n9@LvUm}g7OO7#m0VW?>4rxA&$bY(ls?W zKvdPqs%RPhQ8S>e=6*Y8)*AFAU9j>IgsW8m6Jyx{<&p!4$FH^i{+x~DdDaE^jqt+V*`Qr7@#_4w zr&EY6zNzy)mw4J_)(=VH3ONF|kbVUF^vruC?k_*&mZ5;>yE$%DyhMZ*fs8Z4mv?E~ z<;rNHtQa+9%5Q-O!Ya!?TXi2!>Q6mho-@eG^U%4mc)X41L5cQuA%`}#4X^@}h>dmC z@OF-;*KTlwMadLC%SrC+7eW&!eOo1+%v~(-NmRdhZ1~-osI_BZe(1O0(lfy+5Sq0F z9~cW>8Z83Va$jxRt~Gs=>c|l=QFH?Q6LdfMQOa>uvhkMKK zFgw!@p42rN-w}$+*@t`&C_N^NOury*#1CSm9@nQ3N_UqWYb$Gjblt0njX9ZMYE59r zqGsGw;h91rhul(Dpc^(ZK{eD6$Y64}c{D?6@AL%HYA=`~afF@ax^L^@JF_mn5H?*G zyB=u z!JH;wUlbl853_e#j<~7~Xt0d&ynHolQ4lPYy}a{u<(v!-hu#?%f{K^^%Nd^J^oiF{ z`QE;ioW}bJwuJPK_kisDQwp8S$W${$K9q5gEOM+42BD>++9ST7{cAk6Tb>G#%<`%ln)M$F0)M19n==l# zJo+0gxVui`o}A%jLIh)dowWS2nsQ66l^JVRH zlSSr+w0EyH`x7u8eeRGmFfajlR!X&Y@Y#Gm~8)PP_zAIQ2#gc=HCr! zwm$|nJt&PH0`ZSQ{Z=>P-)k%XBbW2PZI^#$c|h+NAuyX7HUYuV?=*p5OJ14#T8e<+ z&%NXkpn4Vv4*)A0h=~<~5yU_LhWf;KdBfHyutFgIMvHw34D+CqD~-B*J@I!*dyt+ zcwkgcc6*v&4$Z~F@GQ;=?U_Q+CjxH`kOMQy%kf;@!X)qoN!=k~?(n_>G@L#aCwH4; z%%2W3L^v?7;38)H*|Yt4o&ap>pLH#NKeQNx-vr0|t6jO!M{EVNOerZiq2rrvaVDtlQ~ zN-;7I`lBdeVnxC;*fGcGlP?N%RM9%xgjcJVPQ|ega5y>2b^iMJlhTK+Ia2YZS$eHK zp@472^BP=yEM4uo-Bu8dmU--%3GmH91;_Ys2Obp_4x3ntuE$IqC<_632%n+#JD}re z6s;SfHx3m&HCoXKW3laI0-@G3QV5!aNFt_Yqnj(Jq4Ob(Z9g}SZDOL0=?KI(xXXoM zK_0$I5^r>Eqd}SR!U!Xy=3@47k4mCxg;yow1_~#;4}K9>Nf6UnU&l&?RkuOp9B`oG zGqRpQe(IpxCn%r8+=tHTRt(dtNfqjY2Z`L7w|zwkxmR-QhyFmeShQy=I;xl#VI`lB zFM{89M8La37Za-{I%TIrq9++_xsQ>jlq}pP3;dKdpf4dE+3>LQ~s6t>W%tj&X$exspHJ@~#&7x`}PY2hlo5gXO>Ljv7 z6HypPTdOsZaHKnQSfjvx^dO-uwFw=L1ahr1VeuZ8R5fbTdyStITZr72ZC3>uve1K6 z4%m)Cg)?RG)L;skd8myRiWp;M5gkB()7B>Xc<+LB9UVFD-_8D$JH8hNVkvc2hhKVl zBd~B9$$-WKW;epUyen|Da z;b9n_HT()w9u^fA35@7Qy)0NXD1F2lvXFA7R>J^-2RVv}KnKxLqg< zrBqs{>L0IL&Txc04HTn>N4A+s>33=P+RtV#A__8Rd32Ln-ftPfgI5myLPDUD&b{e> zhld4S|JI0w#C*vs!QMj-BRK8a0IItql+9dyq4X-50%$skIZ|s zg#GuKky0vb@i1_E%ah9X);QmW8+G@sBNgl;Y^&G z6f24hvma6l6mH^6i0&}S76IS0W0Kq*+HQoQ461BN7SL#0#P4p6DCRcrSGfq{l+|*T zU&~wPc|eR7H9Uf#Ik${9Hk|!~M~5e45Y>8h*j}X8c+SJ1A5;ip8>F{zi#}8l!&e>o zFG+vkU}dlaZb+l9@&0hu!0p}qRu!023lHrgSNUk2Gp|{H8f3lU{}b4;d>}mZy}NC6 zySzs^_m6u0e9yai-Hi&odGz`~S<^bZ?wYv^kFLGXO|s(&4k2Xau%gNoWw?NNWC_o3 z$s0v*r}t&`^gE(M(4IDr6x0qjX%PI@6mL5Fj@!slr6FSD&zrKS>hyC@LTqgOu6RN` z_Z1^MaA5~3(y`I z{(7WLvzc4FjzG7`n9~d2Nc={(i$a|2^xw@%C`0!T+s1q*0!|FU_Lc}q;C+jMy|rLKxmRyw+EHEzod0bb{4Ln_H~8%zt09Sm zgdWr=`W7}}_zVl+<^~xtfYX9puK`Oyc38)&2RBn?Nx0Jti#?PRISNk!1T}ce&+pg+ zIMc$T10Bl5ixQR0B@|5eh2pEnf2!1I+bv_(-qbc{hDoGt?)4yXaZGiOQaasRn5z`C z(~8?8lEtL94OJrxk$i!CN+6MdlkEIzxQsz4^8?isbi8SuJt&MYTHhQX9EVQ@w7kIC z%#Z$I?oG#zS={qhlHP^Pi85i(fZ6YXH~p&+(Fa{IvWdDSqJe~X&-W|3mYWNUTE16X z+ZQmNyt=tz(J^Bd@>aBReEQ)8>f-|H-IsxIF9!k(!dpDT@=@Y?Khd3G&C_ueky%mizkfwM?}LW~hL*w7Sf@@n;3+n@Fo4MKTz2rX zmf|50FOGJBfnFno&PR=k6#0*%*tuabeQMR_pc3iC3cN-0YDUkJ=X8zV3G zZ)1IL%xLO&oFpx@PWgfCrfxP_4AW-zLGt!k-mXPA2e_IRN_P2|?R(Ef)6?C|5rE-Z3 z%9Firi}klH`F1Ui*zzEGmd>ck_Ceyp>hhsbB(@6Sv$!PiY6NNM#ZXn& z(YR=N8!R3AgjJX5JR`*7>s*J4)6gm&q8eOW-Dof(M|l^^p*mIq)IvO_!)dz-`Y82y zr%<(0gx=C?|7BgwtovIKC?3byY1irQO zo-1<8Gn@p@nqIx;bO(8m1sJA*72@Z|;ckOx1tDTMSAA>SEzfG$Y5q_!7GLmra*wTM zB1A5cdBhATu;|;CHU{#d4&?-Z>01seb>TJJap(es3G@D-tz``6HWci9jsd6INt~iMknPDZ7S2Q7aN^v-C}!KC`BfiXzIuN;D3LkR6@AQ^FfcbT zKpEtC_%M-81_GO+T(N4PgKiC6z@W%l|H0&##xBRen40>CT2YT8G|$1H)<|AQ2Lw%I zA}~G84JDi%*Jt{>J(juqW(VMlMN`13=Vu>pmn0yt1b3`0G7(C4<`xiWLSJZmZzbSw zkFZ;DUBM~4hAu8AiMNEk1sN@ zSr&4Swono)^(=&_fy)Idyun|<8QC|TpiC-?r{|PK$Cjzy_BOf%FU92zs67zX8lVaQ_I7yTyyhrz zF$gQxpHVEXFFH5#Gyc;*I*{d zk_-cbRhM(v)X9K~r16t?xElPN&&ILnZ0| zVeGGi;@Z0He;8=o-QC^Y3GVLh?k=HmcXtgEf@w!V8DqoIny>$cxXE-v>{;fzc{-2$hkKl(Nc`Y4N*A%wllR>M1^vBW%&I~j z7P8s6RrvF!=Q)wKx;p$4&g+at{GaxYjZHklE18W9{Bx?K2ZtyVQ@)uHm+DK(W>Nj5 zRC3HZ4LkX@g0I9_!GU!V#A+Yvc>Qs$e+|CEbrzFXcTvCK(sW*9z46etmDzF@*e9jw z;M3Cgly@TZtLYFg}j^Jo{ z00R8)GGSVo*<>m8d*J*zWif z!|MBy{lam7;%Al1@p4i*A#}bUKs$X-B2^-|?#Z`f$tIV84hteV8riH0Y$~e~R%k^I z(-K?*wlUF4?q2{9XkSqo7UD*>_oK$jL&spb@j zX`LNt$O00CfZz%i_(euQ0Cm;*sX|5nUQmw8Ex#G0D=P`VQRzaE=F`Zz)>nw9zJxyJ zaUyX~GqT5DU8~7X6Rx_X{0W2Q&)s=VAuPBo5EwCl#@0_Q-`9>_W#A-iyG?S~Ha&T3 z5<+T6DpH19Qt{Tvki8B`fQ`-Kuf!)teX#_4GGC-w$pa-5;SpA1rCf;bC#Or?lMuGr zKDk&Lk{pbM^7u5LER9Jc+y>XiQe3tq|+HQ76s-?5lGeS{kcK1aKh=w`cfmbYnzO zd5LMO$8Jo`gowz9iB;*t*2}vrFzo%8cw}LJe=&oHu6TGO&rPYQcJce=wzp^;dh!^f z8lE^)wE53c1~h(%`Bp}|o;kO{&*a5t(4>;1tWb4R=QX_ElqEI%Vq(xuCb+Q7Zb%y+ z1-Y>&?WS&Hh#*4h6M#u%0+<#%HC-Jaamli=jT`_&%CKSMyIYNw+(qfSlxP5|*ryLJj@lPTLo+n>@SRHu+kU`1 zh1ng=$C0jCY5kjDa(7N|I!q5Vrer9k25Kk?I~BAZnDqH@v%qg~5sZ`Uncej)QGFrf z>wv9tG?60K4a$$mwJQ*+>Vmfg(ApW#KM1u|MXlbMeWQn8#d`Xczz#Eq2I+vpbMR{F zKCIVh?Lbn(>t^({x?O0LhR*Gs`SK06i9LOsdq)%90kJyw$Etd%dt8%=CSPfhEgN|; z?$$V=|C^he6$G$-cW3ehGZ>Cz41$=7p8#Dkt$w`BTIGyap&z@Xc%D`u%@Abh&c}W@Dqgz`)so4cxh60e-EY%x&FV=AVpsZpmMB5D;3=R%dBkPhLs&p=Hl6!_DIbx&*^TeZWn~Ev(p?j-3)4Fp|pNJ^iQ(-C;6g z2fv!&O79QUcH|C-QieixEId|ivz4Rs9NV<194B{7(1>7{u}=|p%dS>#l56%%-LuV7 zySC8wejZ0UmhU>_2#}a{)r&jNtF7^RhUY`^Va}>QA_jXP5_c*~qSeYPhc)`j6a~R( zOXgrm7Ve)3n??a|)yVn<EP8;BkO5?KJOxiWcsi-ULIaH9- zvq~L~&K)99Yj31^Q7aNelt+KO-|@lUlkq>x?*mFsYh|W=kverHHzy_VqfD0Fn-y5K zn#2NTtsb*csA>6DriI!_Zz;zoZ#vDM@y5sD4~X8p#Vu#m3J;HdHL2+au1=(K35dJv`33Y;5b#1wGdC7EqNOr1>=X~K!?0AxGM zJT8W8;dUR zNT~{enS}O$D1c%tz0=^^Qwt(B|1z{f$Idko40v6}GoyrkT7w$Ch|R^BAX0if4Yj7} zq|o|$tT8Z_IyTnkW?vFBM=*DzAD5mhDq8?DQ( zT144TIY&K2z9+%nw%-LcG46aswdf6aKA39($F?2BPUW&(B>sN>Blhf9u#A(qZ?ch_ z!L0dxn>yx?FKweb?_|HfmKwiZe#0PKCBEq_AEHLBdfZm321BsPk|B8Zn^MjHd_Vi; z!%idvg^Pizpf=^w2v?4ZG>awh%hUTLo{f=neQ`WXCrHLFXk7SYE_$G=_!gWC@W*pS zIXE?xXI*TYuQuN;rAK~Oq}*0QbKQ60q`ZLZtCcR%%mFFMNJXx`?^UVc8Q^UXo5U@P zZ851m0E-V;jTe!PYiUF|>P_yv2T6^#w5n12=8OgA*Mn&RGUT`2o+BNn%%k{KC4FiY zaD&1U<7(&5u4cnlvpEAe!yW{ez=!!2l;%j`a|wSiZSQGR(sh(unKwFd+`a-1NEkN@ zSeXqxbuj*~_gtc53k}~@y+jD$-ddKVZiKS$Q_tVF`3rDz>A!=xqn-^GcXO*xALm*vNGRrSc ziL)&i-XhV_^Sl3ef|$=C=b^dnCVUTXJ;v?px8JD;HuXKC4iaO|r^0tJE= zgxWFKDVi<@(lt|ScOAnPDTJ8sH9dMjiTxWd$M{BF$HWZEZJ0OxC~WXY>2Dq(FRr$0 z575ajr8ATt&s(iEP)!7hPJ!ZLn@K{;k?gMbHrkMG`x|8jRv#GNF=%BGtqZoHJHuFL z%4@sYkJm>Qlv+oOw-*|Hm&VlrC!&2U7M*V*I6gNqMWr*9iYszvtaS*JJwFe8K>pRE z6=Q2)VtVy>QPIV%&fkgY@L6!!$fb)Cg{R^Y=gzDqKEycS_I#0}B@)O71owb3XTjQ! z2xpI9$L4*vy{YiN%p&rXVsWXb_4)aQQ&}__e5La|^@o(WD>PmlH+~G~-QAB77X~NJ zZZv}?aQ2%F@p%`PV86M3(r}SCj}k$A^#czT&H41?Cuf#$v}q+mkv7{wE7hpM{yQ@o z!n_V_3f(U;dK^(U-^PLHD9dskIX0C(2~CdNOHy{JyRArahA>}6ACp$lY11MYQ4!4# zXdvbw{o{e};Kx6xq@26*wG~R!CQ0WE8zJ)N44D>KUEC<(ijfsJ!^JNRqO8!5j>wOb z)N00sgb!qKbRF9(b!i*SWy22eSmj|s2NHA%3-0!Fq~QWXitdb(3Y`zycTgk*+f!J^ zZ2FyQNWD9DzD(F=%q0>&4(@jyG42cLV<2zeT}ug%I!&_~mys>jmv+HGLA!oxP&7x< zxZx#mc!g2Tl-Bt7Nc=x(`F#IQ%jf$mEuZ#3yM(`Sv-m)V8GoNpH2k|qkux<|Rw(la z0ziS1<2N$vAHDyR8_5Ss(f{pV#Q2j4`gg-1s8NgvV90ck_{-R6``L0O@AfqA|&mTU(Z@(cQsNnf+nS|g2T@FxIWNRW4fEb$Wz?eZV z(7$Kthsd&1ljwiBc7ItU{~c}1_gAzn%>Qh#OjH2Gf1HqCh(S9m&cBS1&?J9;&YZ^t z&}EAMr$E61`E%i=07&Uu5b%Fy_elSk-T$5i0Qk86?2aHnkT>$2h>L7#cYmJ|0rICA9SdTOrc(_8l4A zSZq~dFK9`bxfnAJ9uk!{& z<8>SN%uQoZxufGjz_qA9dkfB+DMM>#yG0$5IhHu8z08rUM91p_^H{p4 z!Hww<-nRDRSE$S-^w2B+^|-*%zX;<#|*5#HQnVyH)6 zqq!}^IgU%Vzwzi1 z8p(M|v0roME!tRxnE4D)6@|YA+Kb$B;530pwxP1w)YWX!A#`Y#W7@c*KIytnyYM7|PKzG9#ay<@D0a9}j!-4hkp(}RzCjSgU1vRo zZZU&3V%%_@G*@4~cn7?VTIHtFTv-eq_I}viFvb?_803invWV~&V+uLfrxEzw*v@8Q zR4B8sI)BxtKi&{xHyPf}_x-e?59fW^L*Y@(O~T=#TD>Aj_6$s-=y)KC$*D7zO}xYY z6^Xo7>P}guhU*y9|FgJw3O0rGat(^AdXcJHqftPZLL#^&+`3LQ4b$}MVl`IQTfZlK z&CW;e2c2jjutSsx%JVKRMye~jAJ#by`I3&m8Bz6B)r7L=(023mB!u1a-XZTRM|q5d z@oXn7xpe3pK7{9-Szf@fISpEuIK2R}Q%jYw)O>x-{vAv;u&wXQ*cn=OsT^BUz0Q(x zn|_|@8GAwZQc{_TCU%boxO*?!x!4qClLxG{tyGT;kkaUdFtXywKtUG55i_ zC(V)(D=}*xai!7vtq!#BDjk`-RXe-ET+mHeRELmF^2g*rM?-8~TH)Oc%MzVl#=W7D zo}N`?;05@^0*vO1@zm#$qqVCE4w^ZdDiz%=0CH@OyES~fy5UZch%K5>{sS)fcu$R1 z+_gP?n85T_Yf}R{{qDed!6dpP&U3=#_pa?s;Q}!aImdql4V;@mkPp@hcAfKmS2I@V3Nta5ieKW~ z3W0*s0j0`td`C=g=EWd_Eg7b&kA`vU!zd5Rvv_PZo}Eo+vtLX!kUMMRsQe1e0Z^4RlhA^gTZiyclJqyk=V zRhfuNQlWvWY(_?^O{v6Ap#~x;fKp87n6%1h+}p0To_%(%^r_J|W+(wCupJu3cRHx>Y@@K#nkO?qA3Q(-`rx?BXQeiFB z(4JOVkvzVmLk&g9L}t&C0Od>f!Yq<}p{4Dv1Zj$?(LKIM>a5K`GX za>D5~wd2#k897985MXVZ-IK50#v1htqitJ}OP5J~ELjQRbs9LHsM-<4lCa5((s=V7 znvt-}%X))CKl;%zX4my|d?_7GmzjEoR|3|O= zKe`bg=)LSelF0eE*fY`SK_-Hr-?9T#Y!ZWHhaw~BO)sdxCjk|!ynhwizY8qBzlyZq zg|smM2^thU{`*7bNI+Wcqsm`e&H8^;*gwK9{vo{n?QZxB!O9}_4@virkV+0x?!RoB zAg#tt%E$Fv1A+7XiKfr&A_YtXYwG)_A|)ZoKSua@qA|3lWSKc}?qN&|+vIj=A6ORiZq9IlXeT+JK1*I)!!kzo;qA%9&omQy5R26*0p_+YJKeJL?I7~I ztCgfKOQ+Y>_9krJE-QDVu&AgaYu=Q@wCz{nUsmO_A3~T_JWaS8A-FJfWmnP)zZOx> zV~U5;F~NO_RufFk=&Q%X1uhece5##6<)T_t{=gy5`JJ}vUH{_BnzHY(&wM$wET02? ze5}40y;Gu#Eu-8`7Sz`)>D+kf{8(v~yx>TAL3%03TPx>g#T#Ck@qTlB?SpGroa+T( z$|&Pl4^raSqf!-#AfDWVIaIhyMK}b>K&Wy9YF|Ri!yUGGh8y0UMqquyIc29|DRk-{QY;xoMX6V=s8d)WKP2(9DeJ#n z=OWQB703Y^)!Nid9gPVw7=H7|0+SK9JFXre*<) zRY(Y8b25F)F=Iz*J_p`c&(l}dF|*M*N~Zl_NG_soHz$f7@3+9$nK{744PBa#qD<8- zGHmruhrYkkFtk7q)E&+rpsY!W1$`be^+F$cDus!HEi6r{f>m%vs_Y07!% zsZV-CxJHJ`Ze+WTc|w2H&28K|YOgry+wAD2$}OvT88G885_r{f8(vud^XzbEJLh|6 zzN@;h_!E_I^$XAW5t`icC(_H=i;Uu#+N)<|GoX4ca@Ot1v$p5Tl9HV0qBq)FedAY$ zBqH2)%Jj53vfWBz)IqCT_FQ?oi6vk`-m_Qh8remyt+$G?vq8>8hDcGf$VQOL<1|q7 zsgPAAK-KbT2Z+#mw~w64xq177*u-g_jf8B^QSn~M!8@ZaXjpgTto&B(;nQ}Z>KQTS zF4eedL@7D`5i)M&b?wpV1~<|wCBQFyog!eVpbzh>t@)YclyqYrTl^^QQ)-Tixe>?w z)>z0M&bg64D;|B(T%|d_zO;F)@p~t)MB&WEC2t)DpW97XRH8D&N>Koa{cph}q<_oB#$3{e5+*HSelJ#qOh!?KoEvAro>VqCbd zmNxjy&Sa8G-DI;ebYwZ73C#9D^8;L9O6co5DYcANUh$r|#^fN& z^LengG+-E=J7P|qCC1G8yJ9AUYDngfe+}u zp%d{cX!|Bh2x&>m7GFi<8g~{@hbKE3d=@oiZvcc1OO{~sO_tF4hI?ntA3%osg=s3D*aVov{v<1L5 z`oseZQZ}TRP;bn*crjPSXt~BLfcA2GRMm>wqpDgNhyxC34Z@!NJnkP&kQ28#5f?62 z(0!^7jb(m1A(>!nSJ`%CC7A226;GEBM+B$qf@)`G2$qc;l_rUfARILPvAM+)4;TKp z>9R?|DZ-2Q$)$Y;u^@Ynt;S1Q8zE zXmRBWx)hq;7w0^x2(11+NowT9m{ZS0t)ae4q=x`a9djq`iQ{hh`Jw@F(%6p$En9gX zVMC;+B-ws^Z>c68?*PjzbtDcJ>V{vWp)PlZ{E5r$NhH%piH0@9o@KNg-rojHqm}5| z-|Z3(4KmNc50mg7aV!uE+HNu_t22~&ozX&iBA27lwEy1LhiRZ+GEm~*=~epyA-i@d z(BDJSVZVE(ABW#r`zm04?X7D_&^n&joIP}5CIVbH;WUYu2Bvkezc3z#-xH2p&kNZk z)V3lRPG^Lvnq0bXdI4ijr)dX>um7o=-(EBC{DG%mucn<2CuIgP3r#8qZCpWL z%pwk8&&@-Nh>MO11m9|{u^-QCrQNto=aQ2{!`vG7s^jakZnyts7)=`QNg=+)$6#bE@eC(H|q*w{Wb_yXdObyaw z@3y{OpZT+rm5#6fGF_U2gwf|0vMiF}YuLT{EHIpoDM;^xc{MA({Dfn?=;Ixo*om!- zPX`qnFKxVvgH2S#vV8`;{OXvqd27m*7kg>%@wK??tFYs{CmL^yc8`IL3br4~X_@kQ zxT|8k`*+(OcNL|#T0@H+s}aPKT%L&2YtX@R2^dpX$JfJmn_G^*<{VHiZIWT)W!MOR z3UR-5%$a_Tts5D;@I6+lZh&5I?hLIH5M*iiReXyN%#O)pf>c7h9|-9o z4+;@o*NWy?CAAku_u_U93xT6B2Ua#(-Zo#35_8VM)v*6+8#rDSz$Dbez4Re?|dd*=|s$#PQF@373&pj)X3-yC$=u?Rs`}HKbo7 z_12;KhJ_YpuZBqTu7U zrjSax(xxCc(1m01y_1}E&FRjzFC{dm9C+w; z7CWDb9u9CQ@%G0f1LUGhra#08{#iX{QLDINYsiEfk-u!On?laB(YyF&UV7gz6DC^f-NZ(I>p|P zy#p`TBU#tupQ@M$cu)m}mf3CHx8)qy?*qNvke1IUa`_<0+1^}#VqI%z@>oBN1$wls zhT}=gCP|%&aNx1NCCjA@_dDdM6;&~l2DwnnEv0va((cn@;9!>q^oxA^sV2Bk^@6B^ z7u~Z6^r6O47U;u%=d6hI#=yd~%U<@(bO; zyd!_2XUH5<4XT>I8cU-uGf6*1MTw=n3M}6$FSzQOM5ydBY2c=jLGu&YF6H!4iG|jh zv|H1N41?R^oj?oXK;TV^1});C6YEe&O&Wj@XuOyFKB?P^qv4F}8=0rAH?B7-H*EWe z3r{y_$V79@T>Y7VSLP6ElTlOCv+JV9Kci)Vu~RyP+27p03X2yZN_|9(c(ks{%Nh2Q zDtIw(_$Vh1R3<`QyEy>;Ye7xffJ$LLyi25kN&N2XM~U$DH&*xN`?B5dv;Ac8q+`4; zKp~$|84c%=%VNl^d?0Bz!)=g(*VIF3h@)Sc04zSim2br%zQJg*$}{ibXy}2aUs=x9^*azD;LbfN)9Blvea@Y#cUX{7D*a@lIRCQpwL(6#MO;|y(ifLNdV zo)l!rRbe~cg=zk1>18lb|H=5J%tfCO-$OUoxHwKIasUoyudZeC)XJF`ali#tlWU&u zhK}2PG^0jq7`BEOX6epn$d#aHX3ED4ygwFCio4i=_^Lu%GR4`J)1g~;Xy4|!#(ld| z5U#{F@I)SGST$)b(#zr*fn)po3Fd#fiT@Lw@NWhe-ya4SNag%xX!`r;f&2eJxIp(b z2*L&61>sr#JXOf(Kr!6Cya2q+j}id1Oi;-HddU3V2>;_D^Jf_! z9{?}4g9H`yZ1_`qfoe3K--xw;uWbVLGKF>ku&EU;s6?O#&Ob&6|FhBlUw{K61P>R; zWrYdOooT8EK?lm!hRk&32aOWSmEW>no-gO6^tsEToy}w!d8dJXZ?0ahRUw@V4Isl6 zw;&OXEPCGdmVr`TV0Z48f$0!rQz3I$TS38Qcdvk=;&&1mk@l=RJ3Wl>hUngQjG0>^ z{b+Q8a(*kx^*xX3kV}v1eZ~{JpY*>dQ;R${Su8c-mNGsa$9Ub*BhCONj+h{u*^TO8 zLZXT(A}q-~w%D!bJdCO5!k|y~vGopb%c%jnjv?C_oI`Sax{h;vrb+@#h2r0GLbNN3 zca1Cfsn{%J*k^R+MoOc25b0RGnPJqc3k2$Wx|8NU=jwARZo=}7 z9$1PMQu@$Gd%n;DO0a>I{*{SLVjE4)v*ai`Wx80gv+WBzl`^*Z5z%wiKcE;?&9r*T z4F`4vExjYg-=*pmu<2tX)tJ%9Ci(A8Na$MQIMwM8XZNIgscZOZGkyRU*wwGbX*P(q z%w|H8;~R??smM@bPAJ_$??LEXl_k`$T+ti|=Ih2pgC8yaoCgkEqZno z?8QuP$5x9d^Qi)=#%T??T#<0mVmiXL2t1#vRuV;Ebz9hhn-elQ%CMTJ(lWE z=vzD4J|f=siv!Kihg;2{G{B*`QZ`#mdU|~BguzJ(XGFhbE@D^#SbsUhamp9J`i-gK zx~9&D72yqYexYv)3}E|~x^nR!rX-SE!D*upX>8ftfJM%ik?*5%Eu{0RlDh5N$My72Zdnb5^l8s5?b|orQx`Z1Ez>6r^U*Ws|aKAwWpvbWc zjfpe~6Y9O5)A-DMa%PJLIZ_M%4s(U6UEs|byh;e={($NesH+H-Ms$#b^k2A`)g8lR7iS& z6KKqlpxJ*s(HV=7lm^U1zw&62KRvyb(bv|ua3FkK>Lw_5&aWdJwlQ~3yCil|NMX%H zz^dU)dkpGoD)6@497OLsl1Y}ui%9CK`mUZxwkOP3%_WxDceP%7!CPTUW*_RtM3~T> ztQEfuvNRqXPZK)|`wQdMX}<$c*yBU}0c`P%Tu;t(F+u&*xK%>9cyI*{vp1q&oeJU7 zI|a5g(;($+pE6MPU^_cUf;s0%!_#4)Vi95iU##hi0-XFxyC`L43fnHEJgtJe-#y=Y zyS9fsD0F}yN%PP+nQYGfxl_c0^<`WAi=7Lx)#An7<4psptYaSJy*(-y!CUrQDUdZs z)`c6jE3x!ya>JXF)|^H#{&Mf>y8#WEZLzKGr=|6s_9%Q53!*-E4miiWy9u%W(Y>N1T6s;r zU)E{ps@odl)WvL_a+?T^={D3XeL#eG!5P$JrAoI^!G|Gi0a6;4o?Os8oZ8-sv}}cr}W6+z0vcFeca~0Ms|zR_zsl}>zoeZ1=u+5Cp3A3 zP2pINt(C_OZ$~^%ecLt64#;vcqbDQH2^ig+56h?}F>Ys!t-cn;^?y|%D^tM52)Pkd zId>aRuw4a?W&rveMy9)<#uRXYR^t#tHNeZPls2*EZqwnukDe+h$@eArFme zkF1lmJlySa*S?ljXnnRBt)ml_DU^|n!vT*LRo>nVslTL#8Q)%F0}9T(XCa9yoGS8A z?gPKjD4-Q+Mh`n~Q$;kFdyZle z4>OQ}Rm3azboa>g^D==%?J@~RooG@p!AwMkXhh#_spjAtL3cNUMu^s|H>Pk!XeK)6 zDqtC66#q0uLXT$<%KEgn=Zs|{kv*tuVKzM>f0#5qDNc90*VY2;vj}+s*=Nbp3Ad{9kbgYW)1u z_$?d%uH--sZb<+g2JipfbAlRfk^p)Lo*EGkMPl$ zYjKF2rKrFXjV-r#<9^OaJ&%5bYosk+sSPS!Kc8S>*+xuF&v4rF!0%+cJzY}*sRyrjLw=oR?0iA%V}qN&L|7* zxLJ5E3BRzz;JQIMC-ir7>|UXiYliQ8Zr>AI76`HVgqrlFx1OQbX(6sVj-s&hN$5>e ze1O^u<$qyCyy2y`O|*o9^swrpBG*pvYB*dNEC3={^c-57dP?{~)oLNN0iE)Ww=BhH zietFLR(7Ty8A+X#Xs0jxI9H%9UrFKcx;ELu;2gZ}q9302K1$>Zv8^>gmO!G~j=FKx zj1ksPJvl*SsS;YW^N!hqm_-=XL&NBy$j@aPb&i{TrvkjJBTpTkXV;1DQR5KZXG3Ve z8f=zZBA>opPDJ`cW36Lh0H3{lDyLCwuA0&(cuq<$3|_-nnGDhEd`|~r@_Ed!48cbG ziodwAqAm8y}>C7pM4KM9N?aUnW&kr1mSN$(8>hQIqysJc|}`t5{TG6^ORY_~pP}Q1v2T z%L$w6vI-+KN>-mts4!#ZL#~;=%SHZC_I+QCJBB!ay?)PLIw^)tf?~Fwm9K> zL#7C=+XVJ71xb*`0Q@}v-MErW-00wVEv}_>MAKb^L$yhZTl?-dQ!&^%_3|{%_bwL% z^!KgF=Z0$`v@la&zX8wkp27g5h6{ua9OQoxx`Z)J5FCEdVE*AE9n1RtWlDJl{t3a$-O;8fimGL)JO z4sGC~2{;$9LCoIhU+gyb9_Ym@14KXcz~aoOD@kV-vXwMYUsw_dp!j&FJtpCpdZptC zTS?q@HheQYuJXkb2AI(5Lbty_V}cv7`)s;g1%F1K>5d$FQv14@%2N=B%j=Qm7!i(@zwB@qB=QKPXT@s5$)#7G>ql#AiVGi<4YHu zN-~nx)0$TXZxj!ysTDB}6b+6a-*GX-B^ILLrNtH=f>bT!(pW&?41)J80q0O_k*Dzw zKb;!jlt#8l2~xDP1Bh**UmSIM!D(gajD$UBdac!H6|HeGXdkTC`w{A{1=uP&W%2xK8W47E_j4M7sSQ8t-CZ~Gtb1z(vEoTP*sb2tdOW$`J{UN~ zENekTH&oxxb~eJJ)65nF{Vckc(^V*dn+&fB08CX9nHqJ+z4LGACe*W{(yo}49|J*- z7QMj4Ray+OBL$C*?uQaXHFW3i6O!^}$F>@lFIqTaYFTMdj4NdUo(Z;F(SDEN8CM?P zT06;=;koeIz94AD1qJt#xJa5}hHlUk+H5*y-og2%7l?PZx39n?u$K20JpVifHr$3q z7W$5E`pCnyWpZ-wmx8;_hg0`Yp-4h)~{jOu2q18Bqjrd^z%J?b-mM519|#5zXIWNtpMVkSq8c1ZW;{Eena68KViX16tw^(vFXH$68w9eX?3+pNK=e&Z7QMQ=+IZ zXK9a6T2aq&;o-hc6uyBK<5;Q|=~SCLU9#|X#`ev3+W7dZeT_)Z!-GHY>Y?`GDei~Y z&#VPr8`>dJv|_&DkUg+ApGF6;7^v(E1x|Lieo__KQdlC)cgSGFTU+oZqQ#F8Z$Lr^ z2f{He35q_bcvN#%9s^hh4>n!Wui%`*pouRkxS*IR@6agMDk;i$v9GL@nEGIx#3&|A z3K9^EwCDpRqzO>T@4$Ik^NUv0Blfb3Ir zQwgJi=2gL+n@1S-4s~I9L(n&l;Q&eq7T}B-Cyl!QQpY(M6uj>JMJw`-GK{qk<4_d$ zhH8oAm&FvuULW~ureQhiLB9k3z@Zq}Pj$Eii@rHjYaB+4NPsCR3%XvlIP9@JhL1}u zHsi}PUT|P=F1E5q!)Jsrv|T6Hp-~!;;*5{TVsBK(z%ACWes=}r|=oI>Mt67Tg%j!BH2B#jHqG? z{LISK>yBGpI+h^p`@67M9t2?GcMjyx>pn7Cd@~FZ?~)59X_Nrt0u9`&oQF!8xwM_h z^a|hfO~=l=&&>k)eG|^B%&hPA@L4G)j6U*L^H%$xcz+w)*Np5Yz%xe|)6*J#cF`Df z@lq)B>RWeEzE%l){os-2(bVQHS^U&`VC1r> z{4h=Q`7?rv#ce<;hCGkXdBb8OWcX<1m-ms2>`E->_8B82GFr8(i?`4<=pSbe=!}0k z18R?Zajqx3Mf#$$HTQY_ z=_Jswy=S^OE(8_Lxy6BUAoMP@*gwA0PjTklYii+@t&xGKhebhcC1vl1he5WD1Qp{F z+IF*p$2(KXH!se2zbK^%HsP`?hOa6+M3c@>7v#{pvM9{R4PAK`CWWU z-@%9#hVIlL$CH!*fB!@EuUBI)qmw`lZR(r5>EU0;bSzkv&6WK~rk}d#xky$VX1Yrah~f68)95bb11|xp+*iK@+8|UHn&>Nm;osLhDAvc{4WCY3_Ti zy(!c;aR?)vW<&$YK$?rq+w5cj^aGNCNd#fe6YYDt=TSzLh*F z4OO+5`*rM>9_NHeiJ@gv`1?&dz)Xx!`W)%&y&q4zW;}iT41|2Kk~Uo1EPRI5qi5ie z<9Z=c$c$^o#0$X}e-7Q7x`gYwifqlP71#x`D9ucNFdEORt2Hg+jK7n&0X6~4Cu;Qa zon(bEIeGZ(Ylu-%4l0yJn#;m@iMXs+E*IF9=C2l%m(uR&e1xHi{Cl;7wIo6gcz~TG$GaO4P@zzJliY{s;C#_uYNI1K+AFi%yPx&e&_P z$gJfXNram}-7X(z67yIpt#;zBkq~a*cZ^I-iChTa{WQd>3!lR)(qCS`yh!#6nEmCa z)uVq9-IQx!#5>LWM8-W&+2pN|cV!Xqb2ss*^+4aY2`F%e|CA}ywxZcszIL@?SDX0R zL}_ql#k>O#{rE$VqCIr(GKU78!eAFOdKR-|tvteM0{!*rl>n|@;L-K$DYcJXB@*z51@>mr3L@>x$-2%QEn` zr%N#!g*frp=9zmy0nbi!qpkNnnq{XvB=d(1<1UdYYN7^C`b+E7y+Lzh@~Hm5^39_Q z@4jFmmy@IgGya<6sdFs%?~LeaoV~HrtO3XKc>7G~HVfs=SO%viOQXCLGk@wK)-N%q zAl?Lgx7Ae?O^-?RW*749MPaK-Nsdn>u)5_z2ahXjv9V<7O!Up8;dYZoKve{oi1qmZ z;zA~5Iw^L|puy_!G|VsiMsg36jHC9-Eu}+F|GGvX++g^9^xAB+&v49|lQ3Cw2(tF5 z29i)6F`ub4uBUuuuJRjFSQq9s!x!)zu0Y<*|w!#^?b`K`rFx6nf`KhJbSo zDNpA42YFvt&noS!ANLA3Anx@W`eQGu$t@`=Mo9pwfXp*ZZz6rwzZFg<+c|&(f|oDz z!Vo}*%l9XL0iNZZsk^0=vy%rYi+BMbVYTMbu~rUVBK0lA@vsuxJJN{BmiFkQ^{I zad9Hn8!s3Y9WYk~jL@Ya6H*|25cB3>p_r?eDMU<%+_sDkm^2g~CVDb-7J4=_X?m#` zc?ZCUKN^DlMH4))Q^4hZ9hqf^@dS!JK(vt_G8%FW6CJ|^GM|nU_BoeEJO_iQFOVg* zTj<<@>__4)g(UE-`7flQ_Y_O;&rZ{rlz_BRxu!3KW zDtz!%o<$p>!e!mS^P(<|cD#r_Bm+GLzBsSL5L$aE&1~$Akw|xLHj}E^D98g*P(`1I zw?@W#S!pPthf(S!E6IVVGRVodukDR*rdh)A5;W>I(_rwW$f$UTB_fdh$?r^A!4Tk7 zY%FF`z+QM0cB?q~Q=6c6C@~;;=kSu8k7FdkTtc18u3+K%l;04@lJUVdya`@k0G=Kv zfs9yOkVPQ_F3{vEXJFW&u)n%G`CT_Oz_ z;i){Zzk(@YJ9Cxz1BbbKe%N`{zYZD~UTWN=w7)&d*(>^7zwB2nh>uDN;8}jlDB7S& zc0tn~=h*cpiFe<%pqY%apkuDj4v&m{h~Y$tp(~@=`*|d@;DytsuaY#bV~=(3&EFT;7FNtqPG*KLAi!A8US|{dDZpG z@1FCTG(GKr)++zp<(sjrzc9IAjnCc(Rb>(VEDy6#_l2TyxyWXOewrls<#smPxdP4 zM;9=6#6>qvW8ztl(Rm=}GI2?s+SFqx1WIfu{~??AKs*eOS^nLqVOf&LfhC5-gnsWA_A4rFg48 z!$g;{Lb4KwVHh`zT8}aLzQ4Wv+EDFQ`4Z<`D$Z%hri7EHG0^l_{UvJ{t_~|2*`jLUmY4}GP-U@HND4v-(5uV1k$8WQ$j7F8 zshd|^reO({nTzTf>mhJwXM3*#>q^C{4E@L1|B;!>9=2p#PGhYW~D@-+fo<4 z5a`C5nJ!NHxU5-2$1wg!v8=%-r8ti-sQWhuQJ6-$Xq!n2jr<61TwW!xWDJH*g5j-u zcWd(g6w9Oa3~Bny#nn$Qvmf46j7C(?@ERj};LUTc6ykENB zDBZx)K*@`1>zFWXwk4I9Ru8=(HvYu$yZom(X3US}_K>%2vuWa~C(^t=8Mj}w zkD=Hx2I#u4-IVZx*-2pg{?HInUU(cF>(SnBE?$Vp(8eyb-$A;wk`*1ul;XS*V zQyY4mBOqIq^pt8tlWdG#Y-6$jn$Iy)4UtBzBcRb=!)C>PoNTw6T*O)-nVGqlpQ)WL z5i_FlyaZ~0g_GQrUashxP}{$XVd>Ci_1X)awZvVjF3)};LeMscP$(X8zwI3#L=8bN zxd*R-WW6$(*8{WrxUp8 z&hXw5X}u*XbZ@VO$euX0J(wP z>>tl@s&avk@-EbJdVcO(GpbZ@_-fm3SYouR-NqzCFgqD7na>Vfo*Vi;eV`*(OR-{` z-m0s`Db-f#VvC_+$vihf{~eva78lStydJcs`V%orbA|y;gO5TzO@Kg;dnYPR5Bouv zA^F~JQ}DD_%p9wSpLcmHU<+7}gt-TgrZXfmg4*#jkshmxT^5%?SH?fLh{`DF%RN$L ze;kF*_cj)2)qs&+!;egZGVE4GC&%0uGs@>xCOvGG*%4aj-lDdXq zUPJDrfaLl3X#?Ang?W%Dc^weqwDHR0Jyl$E^}K3OY%@F#A50D>=Qli{a9yO4|$yDVl>r#-lcWJE$JVQCaXoDAYpdG?!M_+=XtJx7nPg zeGS&C3ZpZJa`sO<8!khgP-G4KOp(o|HFZ?0sqF&MSF`?;=>%QIZx(>E%onYGML+~Z z#lt%;bw+Cq11b{#jEh`$)W#r}JO z2L{rDV*o4JAt}JVoSHuE!GBPeEVL<$57AZ9SSt1Dts#8RZC3b8_&)RAq+s#!$7{-G!)1~u z{Fpw*6q3df=SROA8NB&Gpddaq@&NKz&6g2W5;d7($e^PhjBtJ+2qMf@prk62A%DQO zAU53IHI6KixFlOdVI#9H_^-xT(87EOIP_9bm19N7c%=Z<0wT?5)KvVLiEAagDjEq^ zB2=IWl~kS8cjD?27}+9x zE2^l>_*BPxFmL`4>pU;%e5p`mXo%j?o20R7AWjo}!!}ud-(DYgG8E)AZwQX4CT@AW zaiK24uZZD*$?a14x>`27C0&zPO#t#OP2l`t&Lbo67fEXD&-}a3#4NL^p{pK~6$~&L za3^HEAj5RY9*6D+T1(9Gq+K}K5-?o>Kmam?FcXn>)afDg!vM$}^)zch@eG>FGIwU7 zOu&Yu`Lu*MqdC9?1cI}}f_NCo0~zM3@tsyXVt>4-Chc$>98{NTS0HkR8$kOvA}kz4 zAOafNc5gDznN%p3+xbG%60k8S{nH&yY)+AD_kxK2Q%rvL6^OWG5vG2h)u7pIaW*irtml|d-%OzH74W3|InLBGwCcdus&9a=v#xgictKfGq))6=pbl^{m`4FR z*A?)N2pxbDAH1#)4%4@NT|B>>FeYgJj$0?G0 z>JFuj4}bL=y_8m0M4hkU4?tLj8`{gVw*C5FwUZHZHuJ|6g3a#Pu9j2R84`-N9Rx7fo%w(#Pz&zn`T||Q zU&2a#&K>y69Dm^Fz5uE*39GJHyGVKOns$#w!doKFid(})(anz8w7tN$^e1@GVh9%u zzj(%!Kk;ciupU1gw+&^x4`1Ma`}uUnPqAm8tK}W+&KX1k7pmkZ>YkMC;4~ZjqVLo- z4g~L*Z~dC93Z&8)fN?q%?3cc^eR(I!zJPSb(G(Rf3Z?q|3xFE5oJoiM0>}5F56frk zGH+iUp(hGE5l`m@(Hy_;c}*#0u{S)U7{7uA zJ9M+{UlBR%a#~VecJBlVNY~mNRr1g>tdx~aZgV!?OZyE+hQpdua zbdF9>9{P2!zkhUy`KeJ8w72^>pYTn+Bb2!hXungHTn)SKhLDn>CJ&~qdQe(g>t^$h z+c0}YSJlAoJ}%WRG214>)Z;T4SU83FVYF{I5fauPU)j} zj~G{in>J&RePFyHNWY?-kP4rZX;_Ph>wX-V&C2 ze7bGjBry-}HeAIOH)kfx+z$qiOa>Ypa!oR`X=uoj#z*SQu^A?b*aJIODYUifhP^%h zYFj9|oumwS#oZYhG-B!vX5|A#5y-xL;w5S&;J}mYpvl$g{_xQr0erE)U{wlcl#NO_ zz7>=Bf$0PEBr+-bzo`0k^~J=&adLh+0JB3ffqk_g#q|WI{?7FesrO|&_+Mz16V{X# zR-} z**U&C82#q~xV~;2SO-oEjPn8~1xjguRpAVKfm;AVm{`6At6a304Yy);l;=FZhvf`^ z+vQ-+(5XkogK8M9>bFm~gXNN6EYqB)&|9mooQ#r;8u}5r-gn$oWAe#+SaZwWbC`4Z z>@P5N=p~SI7`|lol*Zk=rZ|{9-X|*sk%-`!Kf_BU$V`sv**htqvATm5M>ZHaTpu;Ty#xJ^SFP0mEINP^9SjnI1;f>^$7Uk}9E zC>4L$6-W#`Det8Dv5;wSOjs|KfV0aIceQh-WwlucK`usA=y*=pTAaXvAu^o+ zvQ&uPof}7+8fg-=K&>@xgvUc3PHyL2`BWWH6=ty=D|;h^N~*ySz!Ie6v?c$}_BSfg z@?M$)GHf&GFcRW$O#6GV|mJKrC1!DwOEa^U6r?$_H*~xW9CnJ zv;nj_Mt4;Vn*d9q7Uep}-b=#k$XIgWaC+WB+dCq(kBz@PZ}I)}hd#m^UJXA0$Elsu z$=uYkx+!Ts2eut&gJjXr237NI-asY7m^4HM|Sox7#DeL7dkSUj&C6VEO?7M zB!iV1DmN|}0i2Ja&FPQvOC9i|3X7c5#m?hnijM}WIDpIjU*!wQ1s>}@ON|2yt{1K8 z)bwe!HbxY~62%+1XPD{4?0q>17>$?SB@CHE*Z0GAYhOLI|wbqQaK= zeUJGw*%f)I&$aVer!CZ0SCd`=W=+fT3ytmh#H9}iCXFAR=Z=0?vQb8(7tOXDmrzX{ zbCBs`tW_bPJ?)memY=hsL5O>i`Jm~D(&M-bBTzM`$qYsEy3%-w`ZI0-DMuvjzy+NS zzjsE@AM2;ls47J&1#-mn zrdp)T?~LrnMyR-~t+PIN!Ty(CtSq6mX_+ZisXfN-Lr8br>DKY?cj*QfBC4 zM;x+Y?t?hs?Y%>Q5yFo;o|00jS2Yde=#n@gxmD@oB<})Tx|v7rWVPsg*I!QZJ)tF{ zX1L#%%J%4S&aOVg^3hKorR63Em^kT94#`bozNM8{+W5YPrX)%4UQC1^8Qkx#0`!tM zbh7q|d2g`fW=NAoQukwl+VVjQ&#{@;oREUF8rc~Q9sO^B`RDdC_tUh$Dj0K*1bsg3 z{n;|>0RQ`A9j%r`e4pqY&x1Mqum=R~ef?y{j)xO}+mhz`t0uL#?4LJRDSJoWDOBC7 z-nDa@t}5TiaZaH^e#V6E-VK(O>ttuub>XLKmk6*ae4aK#O~~-1HJu=!4b?C?tLq;m z4e{Kr^BG|Q7%U^BZxOB){7AleWS{!GEi2mFxE~6{4l*Q9SXzy4@N9~!Na1G+Z=a3H zI^5&rv=cS0iXYGR)XK2FY}k3-+Eq6x8R|o$TfXVIi%|3J@K&fuoG*3e7s2+q%#92M z3n%yE-VygTaD_Qt3OYXvsY^O2S{DmHoQ-W^V14HW1Y@GCxUn%hX;T^8{iRFR9Q7yJ zuQoK$DZa!Q@ruLhj;gBcnt}fvMG-=%gZTj*{|1YWo znT)~y8!IOUg42j_{YPf~UqDwBQWBNd{#O{x2FLIZ{UvJVV&ZJ&=<481#L4)N#`=Ge zo0AdPmj_7(j6;FM`}V)z{dWXy8U!v+%gOk!BDep83Hy%<2u_FND_s8{yaxuk=u9OTu&oeRF(aHjfp5o#dXBwq21XWyQvxd8lARnw=tSa7)QF0-+`F|$ zAiX%p{V;63O5ViO@*e`S?<%^0Ip`R6$HBMwPbbOG6!*d0Y0yuVfC0}Jxs6kbh`uu%ZUM!{v3dDSb#npyfzHd0_x5V4+$?bd4u0Y*X$ENp92(>cL;;xJ9E$M~3HFhedkYN#jGRUB&Y#bw zk8%3Anh=vXp+#rGnY>#OBRo)y%9z2z&VtDJf<{>hA0V?iJ6JzLhft_$Kz@P3iv`QhE|4xsBvKq!Ap{qI~Ck-7b!sys<(3_~JzR!+7_|Z2vLMNr*&WzZyLI+Ex zDEywhs4`E_yNd363hqKmm~fGI5+v9X;Z897Fpqobqxr}&Z{5ZKZdhwIjT^q;-^GF6 z#a99m^G87%8l7YmG?nf$v&&is#|Mz_4_;jbr`32pi*KF-r~1FA`#Ng|e6_b&^ed`Z z-vhW5@@lqeDjBSyS~T`c5jN%BvBe8fIlh zG9=c^krO~O0+c%eQTF5Fa!-M%QW6y210rh$*w*Bmb~`7&@@EGudt~^_DiVE8+h{Cv z4k88sD}YI=Y6Ja%ngUr8gi#clGxW2PNEh38nO&5LkDU2Iv_}z{I*lb&=Ms&ZnARP< zuOA89a;Fzzq%%}p6V+J(fwfOz`g2oWaS1G}!kF#lu4oW|L9d(Xd{tYU; zIMedtQZhvQmvARgk6bqR*l_FbKuOF6nN?w-vk&3Kp~ z;W<+2Sg3CJ4_gE-cu|Nv`#NXqe0jkuqtj`t8S@fQk(IFC3vJg%eagjw{a-9sz>JqBQ1+p!hop&)Yi*nuJ~1Sm>SrUvrMaZqD+6;by+MlJ3x!NDV8pQqkTl zB5LA#&uA?gbl!U4@?rZ}2f8-5!A*dS#p=~BMaDv~qg?OfLgTb{avz_48}Ui;4_ZF9 zz>=edPP2-tLJ2Ks>*|vH>%R3vgzsU-yI_0yQdnBz&sh>Gwset)tk*9odZf{N*nMGu zgM%e=Rg4VRv*pu{HuJl+E~1$w)Tzz=<&~a280EQ12q)p}jqdUX?%H3sxN&@>spo$i z2mC%*7pHB!aN^+6YqsE2GdNP8-5cJJzFLKFBZ^9HSFT9L5yYyj{-mb#%aRW%p`O5r z-Ya6JuHSlo3XxfPz_`=y$QZ7nxi=^W;5<;L3UJaa(_g4w>DT;#|fUAPx zQkTEPr9GaKh9b7|&wXwvgEJtoF%h@22bF(bu?+8nf9x}klgXSS|FVUtDM*OFh2B6< z^fTl2`@-vSF;9)d_`*QB3`BD zl)9**BW>Sz?DoWKacn$+TN^0|VEYStu^=ce!^h43?sji{5Om@~SKh(ApYadKT$l@! z)x}SEh)mQy!aF6~C#{7UymVIJUyb`9CdoEfUFwNWwhFfu_}h>I`Z%v{(Y4c_RWAu7 zD=j`@X3T^tz#K*-YU0u?v9LjDkemakHD~GFJojOuWSgB8LK*F6}mkjoV;>?S{snNqn9? zy`k9{>#)lvecMv|CYmLd#`dkNqjA1OY>XRT6|Av8M&2tit27Uua7leJbYahzEifg% zm^T!g{Mx%Kg&HMtrRX=h(ZrQcVHos3sM+mKQYbGiOPg)~&haB#0{jgAO7h|sS`3?g zpX0+Fy>1-QeXnwpjHaC6?#|s?FLySVnC;CohAU0K~DB^ zdV&JrbQ}Oj>v&hvPM(2m(;-BzH-|Fm!0Xx8%#X@Vr)%9KtRj(P2~S|A@c85Uj4BAa zdcJtIBtjBy8ZhHqk~i7;1JRoQ$()VY_I+Qnppn|%DIW4$-8g)4S<&tA+R)0@*xU)e zb00*ERX-7aWyM!3JH0=%T7$G?9b#R}yWRK;?u`;hogRGjBIEbgF)Eh)w~b?TVOkIT zXQ3$jaQ;_@O5;azwnLKM35U?Z5wuvie+A*WF@OgpkARvH4cZdula5=(mSi0Yx$&}? zYJR`y3H+(Y_9mS$Mxq)Em^wR*6?6QfeNnC9IXz+x-3K`8iVBU?^B!FE%fW5n7+-w96t2MKyM52fQPB$3 znYZjmCg7G#eY8(ig`ZX4YkToFRWxB3)45%&a==krc)w&_TzP}zQ=T#(?7Gowk$j6<1i*vG0%HT$UJ4%@*LU3Uf0?NNh~lR>(qo`<+Q9CD9dCje|AL zNGG=H&VRWibP;Z@+S~z)4u3=I&9X5)-(}je4*S>x#942H)U1>C0P{^9%C*SbBd|XQ z6JU@&eQ$?{-_@WrQCB{pS&?qIX3VIUe$Fd1lDA?4ncH0dkwH%FQRO_+bx#E z6LG1os!U-a4p(QeZun-33#~0j7rl%59J&O6XO$6Ij9<fs@R<3qbwK?CXUj`d z(sy2p{9|{!C^V?F_mPSvt%{=jrmifUV+V@0#(D2I@%up+J;vJ|uk92d?9U&^t3M&} z*Vu8RZ*hopqJx%@+w|v*XJFFGpK7yQ$R|9_?MZKa5>e9fN(6-r!FLB&lHkBLTbDVI zGH7zXb3sWxdwP#a7I@PxTmg8i%-!wa6(W)}(2rqPF+vt~(&;cGM?-h2O|}-PIp6() z8E~;G>9gp?S%`oUJ{CdxMb1BmVMu=^)^_rxJIOfJrw6kEUnw^25dSBlP)YgkZZ^c71Ze916_yO3E&^a$ynwOll z?`B6K`#uP8+#fJm4t%Z)aWqfl|+9|bao_nqJEU{78W#7@%7@4Pur?4V`o3s!ea`mW@QN57YPDJ-mC}T<=8oGWGapw6&g2jkod%(LSB6WoKa6 zJ0ZjHC)}F^4AHct1TSc~)1VLI2mGF|L&tw}A^#y5IFkAl(SVMD|CIQ!13Q5K$OrzN z;`kqqLsddvUP&DI4g|-7=V1PK#^g)>3lv-h#Q=T_0{@cjwnNZB{b!k7DtH>kSJvYH zN|bPMaRBksz$d}DIR8ayv|y!!%Rm8X*+3EgE&cV#1*Zo6@>$3Q{{gU3MAN`V;15fG zqEhraYScBP5|*sTL+dXvB#wXz4GZTLr5?XPu$6NE@-T#mnvUWmicnXofPq9IRHH$J zse%J*o~@HdkXUDswKMggQR4G?_L$`|^(7QuS{K71g`qf7#THlL z2K^!W9>_~Vp#-H!+z)W`0J0#@C9q;d9p?%NzP~9VS1N#)q7yL#m`)flT-F0K7jbcz z>GYs6NBQW;a9|b%!v>k)L=D?rOO4nZWf6=mGefuwkRd9*bS3qqXrcqMqozW_qhd;e z@vVr3{j7;QQM6&`zoMY(BiZwo_`~aolE%`(;5C!71DYhKe*sotU`ltQNUR=cN4cLl zWaTiC<|-BvQin+#V2{bM=i;q*b0D+}7EX!4Ni4yb=S{77Gp{f~VU=sre*SPxO&<&{ zV`YN?Qza3_l%@n>X8Fk~C@ghy<(k_+pXS(!L~UG;!QSOWnm?-eTwk>P7FiZ+BK@<_ zwN9K4Vif+yGX~II`u8XHEJz|UaZoO8g5K1px&pTiQ|KIoR1s+1Jhb7rV4OA>8uAor zAw)RIr~oJsgi51?_)*Q$AYWmUozu z0v^E1HhszlV@w`I7<{m;ivkyk%F|&avOm}c>++nNRgZO7=`g{-r)r9fwPsxowT)@^ zHx-ao@7%Dd%}FI(WLRv(kvDfO*2?im46PJFSsl-s=9`sX|ADVn#nlKl^ltmkc|-O! z9~8!Sn;n3=dL_ryqk~!X#SiD(i|q=1^+S`4JKV05DivCESgHeiUJuL@ZjXC9vAjmL@Z`*9?%+|lrE%$EWxTG9atNXw0m!4-t=>JW`)l3nCC zQsMq)O6@p`3pG&JbRGnY0;@ z$P{_x86v#?_~9rsdGxJ?v!V?)w8gKT`=#_OJuj+3WpaN#rb_m2({NkCx;at(*+lOz zKbs1`lT0=J{yEhLJ_9X*>nAniB0Vi-#cM1TK*A$%x6x$lslp<~QFQ>6`S$Kjt)-#6 zZqwg@3MX@B-t?qw-&XvBH(?)>%6V6PFZS$#XZmSqxMUG{vw;rOxC+_f1i%+>E-t*$eMp58VvCUQLX{H@u$ZkNz#M=MK@Xr{fqnAz`yQSK>Nq3w^ zff1|8>T}v-;*!Vea`791<7Qc9qQQwUy~p))RiBg5jE;u90DBHH>p@V#`?%*s!HW)c zB3f$2Ax<5NAaBfYjn~>M{ef-X?W{6%%B;@Vj*I4m9 zpZ>V$P8poUb73zu<)PGLRXu|>xOSA6PP8iBq-a<;f8&ci9JSABb)KUXq5LkYrheBu z34Te>AM-X4_uA775C+i@`8hL#`*UpT1N16?W#<3+hyQ9){vQsT6DU*+PKC|&pO$d{ zO?k_UipWSx0|Se{!=0!^`0xQ!}TxfF%Ql9~u+2keI$ zW*aQnf*8us5Yarj;6#9nb8)+bMG_DF;6u*iYk_w)FBH%YEZ9fDv2&r!nf<_^3SZU=Ohb|q4g$x83 zJ(+I2!JlIfKgkF8feQndnLCMF@W6X^ zN;QV~_A&W`7-ab4nW?dr~Bqt}`!Xk{j=h-X`o^zD>@d==mkd|JlFCHgk@ zel~ycvGkBFZU2`oRsfJvJbCY@g@rv2RfCnS(9&8tuiJx5W3R z>-WWb&uwY?^!(|9XbSNgh}|6$8`@uCBcDAN&*A7KdreD}SD%R$YkQapstqg8K6Ppq zcgO|S;KkS{@bQtVYbH?XbY^i6SUzVq;YKp?)!0K7d!tX!1_M^!5-H*ypc79BRs9Jq zt1}pjpy*arRffBR+7_(w3eDRKL&&{9buVJ#+S=ZoZa2r%nP+VjE=u!{ezaF){&0S_ zM(@gSzp#)WUB~xy$N=XynE!EzwlrvCaGpFOeq~>KzHyKQKR4ihcYujLBaXM>l3KryvxmcEtHWS0hn{3o~Hs-UU! zq|_vr%fm;UhfJ`XuThx=R^PRzy!CpI0$-`LL>SrVKCTnAS4GYm&|o`{DB+DF7$W_}kY z0GpP1{( za49{XN`||rgzc+hupL>mmRO!!ofDdkNBU*?DBqY4p8p=C?FvldbF%Ae2tB?MS=*cI zE2IGocNbwvJ~sbd_`Ym)w4CrfNj`=tck89ZXm>eVQa0JvRo-$=?egPcR77T@qrlSfV#@`ocj_U@Rdh`9HxFAp{d6BjZ1Ci%-e~$DmT2mi^fmTx z>Gl7FR#MtBs!G7u8gQI1n48UJ}4=9aIIwctsw`~Ql!U{TrGnc)~@&Fn2)Et$Wb zjfI^V*yjg<1;NDfh4|YlP*i|sHOL`d#nH0(%Qa( zz>>S^gW$m!b9 zA@|M@nJt8jOu$ohGTOjog;Ev`(H8-Cqk(kzAiSUK868|7apT|j&cIM0bAuxap#{m( zc>>NmK@N!E(bdhMB>{BEqGO+g`5!!OjTu>4^^xxa$HXizo1GL7i|+cLHJg1KGZPql z-xQr0p}B%Tc~tT49IT{?Tx>XAKOcU#r7vq`LnmOFE!UM^sNHcbH9ROKrBs?+sjKLJuN3THj3=SU*vySC@B z)8O?Wfwu92qmKZ8oHq?>>e{s6Ha2W${MJ@bipfa|eX4jDP-6N3B)nc+Tf`fP0A6Bm zEv;U}>Uar|_=G1=TKr6<4=oBjo`8k^7sAz^1hgOk6Ld({8osX3L9zR%{@$l2CousF zw2x1c046<11t1w%fC2M1GKgU47IL=Q_ZAlk-Fsqev15Ec(hqNV55>jv#&iX$`Mo#y zlMxHK_vGYyWNHY?h{j^t0Oiwld+XqBr1x4u=K>%mxYsTy{z4c=1^&)};3O0hSoKLi z{;Ck}jtE%U4s)e?2q&T*{6yY!iWGqGQolhG!cBZZ0$dBOBz%Y<7dZo9NK`(Mgifg6 zh$Z=k1R%;v?!t*MR6j&IJVgO{=d3}wX)#`!J1)n+){rWO!_}>M0foumlAd760m@UPd= zgyx;+U=G&8r)2+pVx4qQ-ar4yi1*(4rTV_Mm%c~gaoC|xZwR092fdMrP}0W}n1xcz zS;eh4cL2!xutn*GQNT@SC+_-FN-%;mqaVNEqz- zXEUWsJ~f^{jI|V|?C#e7K6hgXNV|!8j=^K>!k^Q~bho9S@wNkP@-fFzW|d{{j$_H( z1S;wh?N`A{ceGMEfb~vXuHUQc48erzH#&ovD&HVL$&XYF*orbOk3($12% zxz<3VbHXxk6qqpxY+9#oK&qLpSok}PZ_IJ5=Upb_Xh<$zHESN%dcS-=9=IjxgNuH~ z#z_?p*ezaRz4bK38tK{xiCmE=uTUJ>?KUqJJEBrBXodf7h*QtrKfYz@n;mZ6#Uv zl-QhzIVH^h2C)0VKX&3mpOMmXWdsVW<+B~07R*$G`5QG-TZ!6G!Xe(d0TYKf=}n#0 z&7hr`%HJI49z;*Up^{nCzP?Big}vlSK@1226SS!3Nglv*IqvaUg>bD5V=8WhILWv| zg9A;*w8m|#kxa>&Otihf&7HymhMxb8DU$2Cy6TTQ1Pnq?j~>m0b7CjDy`b_+{;J@uw z6A4Ic-@VDWquTsrXi|D&@F+@~40u{Ml3_UU5T1K{lCN{@QG9(}41=^KY4^M60@poQ zp-naP1B{@czlQ5^cpozPXOA62E-#=`40A^R>X(a`t@9R8_M#M6o22%w!R&W>6T7)k zc?>qD#fhQ3m+3_OS(1da($1LKRH?az{HYc$p%c#%e8_%#5jmU+k03`q?{h51RnaBp z>~rxw&&OIxPa2Ck=bWBNe!TdAvQM2ot}_%e9I!{^Utz6!r=zVjk&`D-JA;xD6dfVZ z$}w52!lOm6d&i+5A~V!f+1#=%paGe_5`i^<2#jz|o=}ocuoKubXM>n8Uplm~Mop>r zjt{MxJlKgm?9!uFULu}FA}fl73uyn?{@b$9h7R1D;32G?`$O)My)(S6|5>jn*oV8@ z2Z#{+2$5janF&b%yKvXKob=-G)d1gYWTODZVk7Qpr+O#ZSmyk&+AJ21Di!3^ogjl1 z;eZ83NDm`>98IVP7`MgY$54EHOx1br5co|0elOgN)TcXL&0w{INU>naoKUtMcz{wZ zvXy;%*f))}xrqDGRjdu2L=7E8h2@1R^RsCNke=55^&aB+8$LK#pOo#NkReq1qjQe6sA@t565F34=j(j7<` z4Deg#1H$zx*JSo(fr%fEtfT1F#@> z)D)8GTuOrlSt}Je$I4$Gu1%xoA^dKlz~!NVq8=AEuHGB?MPP{}r<3tkr{E>N)rFLJ zHWp%{1;Ky0a}-5?-yjuZU@w%zb|0Nj;)Ic*-X8Eo^Wg5_ePID>K=(YRb;NX0Ck(lf z3&Gda4}JGDqJpLKxDPfAZ^@XCAMhSk%!vGRTC;=fNQUuY+upk{>8E6LN?05fKS`zo zv5*n6dQtxnC4PHi@@{jS=Fe6q%|l|s^|l4m!;aPoVI>JM{~7QsD>g^%uAguHwkkGb zqb1yeu^cl`rN&s7ijbk+1lsAftM0p}Yv&(!q-kM#8IV;ppNd!THjx2JQve#bZK2@7 z{N0#`Z{t50w8xZ>gs@%uM9%Vq&#N+MbTj??BD0qs(f$PHx@nZycNl6t_h*woY(vp& zq>)|&J6pVrIEjwuSM> zm~}g;VuyJXm#QC7m4 zdg!|wpqDA`toE8y4qWFSQV^eII)vjP5Lm(6xC}a@DWcF0|DyHaz75^lF2Hrjke+yf z2A`y(66+Y=>lxQlAG&!Uo*D?T1F)EL>Q1h{oU;dA(QB~FwwP8x8_W*X$3bYgRFsz- zuNd*Zcatx+UQ7&jQFGI6!d3K<%|i8|B$5}2GY4%7~+vz4=P{C4-@;5@*p z$Trg&-qycqAdd*5C6->sqfn`C)ppW{*j-CErJmMG7fCo+`U8-ZSMdL_b%=3D^Z?Y;+ z2D>=CTqfOIP1A8=>~AJ3%c$TEk-a2pqX;Ovzq5J=yS-QP{+ys9LRzxzu+}QrzT!sZ zT_68sSq@=3H?G{z4_d6L9>)rfjbr`jXpHre`dr=sVUI2b3(D@2n5p@EwTCiFVT-TR zVC(z&99naG0r?OiT;-Da4ao9}{;)f#j37N;=w%O>LS61s5X-A;sA;UVMQX83ou~7P zTRXVD^j_=F-_kzdZ1Eo9FcQd1J22!ZT*s}-Hk)h8@ezrZi~JGr$wh)pPC?I+BqDep zR=Mtds7xKQZAgNwPH$nZC5-;eO{rR;{QxxpRXX}E4Ou#a|8a^>WDp-(>wk{Abxk)~yDkG<`Osdz z-5hx{%`nTkf*Yyh)Aq=Ozs-vloY)JZ<=Hcpwc%zA7&a6ikBY!`ux{`>(+ue{5TQ}5 z*k)DP2XO~;;uZpg0Gi&uL?48s4}G$c+~+Rc8P!6_QA0};znHcf^OBbxOiBis?a8+k z)eMQER=Nif)Ou2%>YMBnWb~xBxeXSF4xTcvjsv^}3%dBi)oC__?=Q(wqi(9N#Etrp zRFpRSUO|THg>l>y8}(#AU0zjx zAEX{G)jnz|1H7Ips*FpLC$c?=^lkZsPwbRJDdgj%PS>AV;6Nk^{&7cSAZ8-tU zYZsH@I~9U(Kjp)hIeLQKL^Omo84BMH8wm4*!{bxI@^?voqK>Pcl~07>jAa%UZ#LSi z06&d)`f~SW{<;hb&*))bP1lAS71IvGQ*Ci$8Ls=10xDqD*(Qbk7@&xe!whPD)hV62 zW(yw}ValQivf80;Vl21zT)l@SEzLHP@w>u^QSTlmJg+Zx!)Z6U)~WvE0^HRINLCW2 zog|*SSRL?Fi7E;9km8o)b!+QwRH(Y4$7#=jcB+*8)0M>V5V13GNkh5VYGv%K2= zVWGeB9g-reaHsepr1xyjt5uvBVA{%kIEA`Mr z_a|HS`YhHLYP*RR{?<%WB@aKUY~5KL1a$>&=?&{%3VDCx9k4XD)NgAi#PD$mT5+D1 z)^8BAy9Z#l=V49;MNy8~-be)s&>?1g@U`P#fEc*cAAnnTL^-f|!wzxOk!G*hENAZ@ z0`1vyXj2`;B!t-o6HN*i;5gqUNFmPSXL`W*?ikLlJ$EIo$?iD|}m zlSu0IV}r6CXQ$XgbGyW&`2aWN5b(f)pT294xeG`lRHaT=re$)MMU!f6IST^P57BfX ziB^?Wu(jXB>8!0V-B)aZSK85TK_B;IKt6mhu`k58@#s;I+Oz&xy)kTtT|^pO(l8P| zvitMS)OqtTMX2Tn+a7HSPZt`-JpM?&;|ji$+jsPFt{wI1U$b;HtEBRz?@*Y!C5}xq zp^&?O2CBg8;qFB|b|)~!64!>oTco1KlJ6!A{05BUfPe;u2MH$ORoJmuayDVZEz;Gl@I+N&P<{UnLJ?Ea zcd7Piav8#Gs`J?2=jYn3<(rbMe7DDKEWzg)cyT_OqYoGc!m=_Uk?R(3M9p|Gvs3BA zLen5@Vg-e2X+$bA2yP3Z|-s#V^tAj~WLqnDxFk?mJt3e}trC zAR`yBG;pGM*Zc%jLi1RaGOgKG-3P>(p%DoUHLG7Z9YwVr{_foIzq*!F*gw6k0jhB7M|aIOWm%n7u(8-^FGmeg3t-^ zlQ2V808bNk=NgqZxxJeR)18 zzMZsPd`aq>h_A@*kg(K4Y~HYSt|cG>n=VAIoJ&rVE*@up-8V@r2g$8Uu-w_P*Uk=w z447zid*4n0$|76s#ka6Se-dbx$F#ro`Qt?)rzjqBsK`<@{3#Tg$zr|Eh^rN`*b$8g zlx6_<&pNo(!Fq4*6xhsRv7067YQiMLTgXeS{a=5SVZDl{hr-{il62s^X2qh=K+CgiJP&5R9nZ!RG)6DVOzB;nu>TjL+7S*?S zd{1-rU@G0Bw8nuR~p?h-u>gT|HVaTt2KK&wcicemQi+$?q!}0n&&JJGkE=~+U`bfADfN)*na)F*jm$ljbg5{ z(^80wyh;Vc*;5xH#?9Vzp$(Jx!y&>|^%+A8vVEAn{%Q3%AU1Lw4hU|(d*Del!JsO`D{fWU&3dXNlq9Z>H|H^IlapZkV>{fG|| zp%T*;+|*lq7mED+NNPHMa7nMxd!#O-uS!ikobf8?!9-}b+lu;m^mb9|MQ%SWdOV~X zsI~LRluiYk^|F{X+s@X>YdK+Sm9Skoy7z5k!NIJ~*`iSQ2mv)vK|HzZGna=l!;mWn za288@0k8TO)~->3gf>fpchp_$GM7o#2!up7-J<5ClbLs$c%t85$iA!@G2y|f{ZoO8 z8QaOIjA>;ErQFwxp?8#M7?7^03k&PxyQW+%Mi*GW%C){%Vz0zu9pbM;Fr}-frI=e! ziC^k53Q=JXcfhb}dD*?n8Yt?Y23 z)%xzSdg?)m#%v2w{d}4BdLZ1STx+F`%9SYT8<|TJ*Ox!^V(8zmRP&;MqZm1$7HM@IaspHRDso~C)>j@u=*ns@cZ@>Q0?NIw<|2zjf9<$LI_Rz&I%q7d|S zo8j8>LVSCLNl@wszx`Pp9AUHoC|gl;0V)k6SIL2iLTtDqVxhHoj zl0r^(o=nb!(<1Pd92vXkbxyP6G;?1_cAPLM+Yj^TS%J^I$1k+tjZVEUu@W5LU8YF# zb%w+Rzn&VjXBYAum6WNE68-MqAYQ^-$#KpDnhD6Nx`6$U>K#$Fb)1_t2Sd_`Z)7|0 z1FJ6%9@>J+#n>#GVqW{e=B*oTeO@SN#fJB$zzB#bqHtHqhq{=i2=xJcg_#s*+=+Xw@yo!~}3{LA4+*KzLH%?uvvJ!H1iOHbbz1Iw_ zicIQOD`i|`&QIBie@{yS_34LB(+a#xR)R8?)MB!A=oA zDdTLh82yz8c#3VrNo6~U`M9nM28O;MvS(`I#oxqN_FcbhqZNqE>Kg6LU*hg*fo-)> zWHM zhOfIR`nl4szfUF+m-%dYa%}@WuaY7G#n#oz6;y2HMNj znzT~DlzWJ>VK*$A*?v8IpaIM##`ik>)(CWm_Y#Yoeum2HHRP9~8R4pLf*&Ncsb!Xq zm9Jf)GiGU3X`r8_#XZlTEnPgHV65>NG0*$WOQyg33--S}L!?gNiZD)%UW-qd?Qo<| zZ?^2j8|Fk@J;=Y?Dq^wQ-CS*x2FWg|_*d)$N~s*A;M!sTDER9a@3ZZtQ5xyE=7!(>7N%e3HUK3 zb!Gp8u6-XJOceg04H-1zRLD9NM(t@@&ytlB#V9Ve&bv`{Je!D4$Q1MNE{i7gCP6m= z_>ZM-_u^6&!j{1nw$s>wOIXaaa5Eaf#q1X-DPv!ARvc@mbQSPY%0NOb;Z-eDD8PX44k5xj?IBpic6F_!g9$i7evbGzfCH163&dMwl`Zq`qjis zf%DMS+;*6N2N!#M@ni7Xczj9p=&-P}q9U0%H@LxAS8L^714o}}-5Qp^x=Jeu!f~~! zH#t+ot&hmskJG7FB)01Ord9)g7lE%)SXlVyA^PiI%Vqpe`=TA*rbPqSdop-8^UeJD@@oF_g=qZ!Q=Y!o zF>PFJ(;FO}K;r(HP_}RQucZThd0J7VisTHR1V~{V!yLhjUcpGWvhHj^#>s{}61lnd zRiU!~{J)_U z@{Kz6I`H-x)$x!heR`R(MBA)RdY7!V5y>3ns*Ly#;g)Ki6Ch34${ZWq?AcC5XaiDo zQe)k2HUhp=__r-s=1K)|_N{SS<7_Y3I^C zwQTlG^(-o1>cB9RfxA@BUnC(`452XyXz@G9Gi0Y@xs@e2+edOiLU0~?u$Sl9X_SQ? zB?3@Xqv6Wkc#{+W-S5(-ZRYdn5T>i1ze}$yNEO9JbwBPV@Y*Boomu#*Oh7C>Z7tTZ z>JQ>s7`-b%Y6}FItNvp3d%p<6(;)jY|2`7MU7-DFiWv$e_Ws5$+Z(!8NmFSYKYCn9 zTWb0W{S~WhbHZa7a%P}!F`_#M_WiG#(6}#HX?1@ZP0IZYK#QHAKv%K$WB8%EwC_C_ zZ0YU_Nw%T=pJSrEwxhtp)lc{fN3%0Ux}mri5#mm9j=(3bY%k4DGY?OUbRCzsem^b3 z>Pt*dtZiJce@&F!|8O9w=_D|YYs?HKB`RIclJk_~*?}@2RaI`fiikNS2AgMGEV#kq zkeQRZ!N_(IU?;0E{da*OYeO$@uyp&ixYS}~RI{?_R(B1(_xpK<2Vhj^b|Ke7no+B3 zpmVJGJj(GI%MJ$7Y_xIzB+=JMGZrPyuX(V;BAkPH%tE#tkWlSr;z=sSN<}Z|)ZIF~)&=H#X%?SR$xKF~YdV0!0uy-S3CFr>< z-d;zPt%1AZrDoS1`7V(-HYl>7sp;`R0xC`;;6P)N;YD64E>w?4ja>#Ri3`A#F?q#+}|NTWiw&R?Ym zvBHD9$;jYWUG5$YF2*ZeMGTKsN~&PZQz`VxY{8V-P}yEN)5HqSL!p|0z{QgqNGL<4 zO#56v6C;X>@hDt$=sF4iq;N}3o_x}iKa1T71R{`^`Cr9260Tyv1*4C}Q}4Tq{cF%X zco4rC^dkB@XY=Gu&p{C8<+#}XtA`_o@bEVAy9!qDR9toi;UyQY(?c&!pg?%KlECxR zxzQ~$*YZi0#r|qs7hc?t`=W#ye5eDa$$W>5v%^)oJvp@=&r^3eNGnnj#e7k`fWpoU zz?77~_s6Qiat$s%{HPViS;?PgbpENywo8RI;SJ3VC!R9IKP>ChVe{g?ZY6@|So8Z*jAVg{YWc3?B(H{jn)4$?%p~q<_1J}$X#=_O z-1vQ4)d!mLNG*Kf@rQK!{Gf?(UCUCvfL=qs@F=JoL|@uzIApdiLvR)cT99Ow(>|zV}*8w+?$a zt@@EAkd8DN{Pa{eF4y9UEJpYSY)#~NtyQWgjlYg2T=8CqViplzoKjblyl5L00s2s) zAX^@qjyj>^Tsou|aX%H#;SE$Bo;`o4?@=@lby^{ZCS5F$aDjA?=*Q9&_M5e}3vObG z8#k2tWyp#zly%C1Ti$XrUGgR=LY(7<%-US(0@1Kjd8SZlVBH?iF5+F!RuKMo2c|bs z9C`aIvWH!p81eD_>2#*m&RLj^00kv{XR9UF8DPx%>)GDepxGJwMYG`Pq73>itb@73 zs*u}9xf6}(pG%(kbn%I47pBIu!sLm8c69hFq}LP*Gn4UWa$XU~NyGWE6-@m`cA-g= zOcR)E?M-NK7SV9k7=?wJ2K z>9WGG0kpQi;jN+@R8&Ud&(TKa6sNQH9&Wq3tsz{umz?LCWt~TC>y8|#C)=}s=4!qd z{#+4TK2*(kx!4~m>3_|4@qC0-f{vHuug7^>7x9e9I0c%DiL#*&&w7r!S^Y0U;g!c? zokp<=E^TJGTd(iUtzfZrfj9H0#wETS8JLeg*Q9@GP^IYZtW;=_{4Qla;P0eZ`OyHHQ80OD-_5XKp3##@!m^EZGNXM*m*K`Al+-$$ zxSlNf-hu_8X21HHIjn3T1LS~(=AeJL!CF%BYsx!9o{Vm)%BVz#dLcC(V9ruQ56 z#&VUReIcAH5YHCu+BUNACpsu;oOIjgH*tNWc-GohLOb>k{&iG`1R0ORXpgyLd&HaZ zm}f;Owy>ss1NAABr(4O2|D7{afct*8(BEbMqniLPR5 zc8}fwQwiRFK=m*bhALux93>WYO0{85ohtndMxjcd5@S`VTJc=Z?t;k4v#11~PhROd z$`VuzKwm+%+XZNmq3oi}+;XKJuek%#hYdY^`9=ZOjkVXpi6s7+2p}?X#$jJ9ki-K_`OU`KnvS&lz>~iD;_#VDxbJ72Plq^Tf#-fQ7 zoFLj{sm{K#*|YPp_XgJ&VdNM=qKppW-DdtE`>Fvz(_VJQ_N`DcWG5V?h``O-r*}~o%iv>|Bu3U)0z{6e`tu2KWPgz_2j+* z&`Z4RnKr~lJk-EY(sF-=D`Uk&Rsv%;-mF@ETxS&&Zw*$B931P4e&ZngMeSNwb!L-r zfLl?@Thd4PgfsRAE6jGBnmDB_?h5iD_lw0m& zWgtcKpK6Wb-`M1!^Lmvl-vef3ARI}6tq-gbWy{J`oJs_99~qT`NToRvA=ZA@95RiY+Ex`=Dcw=hfH({dnp-ts2L*z#=eu2?{(xm76 zxTLt@kmMqs!gn7PM8$fxf1h?Qd2MP`21?Iqz3Y*g$^MOtxlF4bzY65GZONnuw$~Ix zPBj%vt9DFqu)AEs!ixWTn#^?L)9BDTfxr*ET+s z4ZJ>*=tCgPZ6@0{6M=hJ%ym1Is|-ahP0O%m-N(INH#LrnV*eBm+~q_ts(qr_e=bPl z#+m0>cANNzXd2Gag(@k+<2e|*c)tWh} z+ZK{a?5oT9zY_ZXn{85%(hyNo{L**S^jU>>1!ql)DN5={{Pr5Dd#Ko zCMh%-94|>>3!Ey+G8YmhNiG1KC#i}Y0vS_?L6|{=L6kv^L7YK~L7L$wgA9W#gM8A` z7Ptxp$Nx>i{?{q~&!%m*|CzJH`Q^`6vNQBoRW5vGKGUC+#m<4%a8M9zUD~9^c<@`KKPA`L+&k-@Va|nI>@x z-9{m&Lxl^ih**)Kd|Nu==zXUHM9|R2ONbKXvZLvMYNu%s!J|`B5amFIY)ELNR;bk% zD0{kKFatSQVT9TW9@=;T;IYS18Z@CS`nLdhME?P}5P6hBg5r$Pz?X)-Xm zHV$)NR7voX9wI$dKS2;Tut)?Q5N}vx7;BEG?<+xINAKdh*nhf`{Di0@aN!gV0#!hp zk+0DJ<`~#*Awrn(KfULWzvJFGguN|n2Z&JctMhd|FTy{R24Z1E4+Kupl!*Khlt4Y< z2=ZgQ;xnOuFjK@G*l)8*s<_;VlHDn>-XTOFpAjU}b(ZA#;x!ySNerO+bUo96S$+92zdY)fxRpzUJv^3sY~Fn z)7(UAQ1J?a*%d#!6(mu5fSGu`W1ED`9u^d7*o_elM5M*tFx40?!xM5lk__)EM}fF4 zsw5Aw`-ic8(t4jHCrDn9!bdj@{X?D~pkxlpNC@Zu0-ZBK4$}iD9f2_7aD32zoazAM z<3DneSewVnat3Sy1&^%2JtW zYk2c=0 zJ+a5Pd9_%N!fYzf9Cr%DJnMhVP`Vb`1GTtNLaj9V83{$g6(MJ;f>SO5`n%+jq_9t&x*HC2N{q{$j&~g zC3|SB;{#UKYHGD>h%uh8-6qY%l<~I6NdsAC_1xjb{JN0rq#@=KU^;)bW@Y34Z#GN7 zJ>|WECigbu@Yalup>OYZ)UkoE=Z<_s#jWdGv%lgp60*77PP@5IlzCbl9(G5`Z6v@| z>@GT|^U8S+UdC>I@*I&4PX)-JPOdB>ckDq{goL%a{E=EbuquFoAF*v=rbGK~2^BJo zp?6Fm@e6^==Oh{5zdRxblWzv4%NjiZ(FsfU4GUO~;n2~$S^mSt!~@zr5HeL|&<7J# zN=(0sEk94|Em|5)`Qm9q9}tfJd4}KaZ%6eJWFd$Aj{7S;eI(FAI|Xn}bkGtUHUDdH zV4vIvX0t^ZKP@>@x?3vqx=N@1M<%RMLOrZs>R4DD&($3{DQHpDV|Qat`wx_^l%hl% z{2ZJ*Y1u>9Za%*bkg4LdZI<~>6FoIdMQG9dDl@WB@KW3Z7f-0t8>BXC@?pTkx|8r7{_tv+tJEm06 z5lLy6agZoDseMS4gE_OnxwV>?ZhyCpLmZ6Rqn;2co(%&^ZXLisiG0Nn9tlV*cXE&`1KCpGUIFOj_-8lEJQ4N^L)eY)=-@#@ThXH7l!tb z5LrVD`2gA8&l=BlMZ3MYRJOX)mpY+oF~#qF5_*$v`3`KkyZSejXrJs=t08VJNhSXn zve~s={BzQGK;xaX#@AoSG4bw+X^D0Z^fc_5!9aPaNm9YhS77DLui$*Ub``Om8j{{Q zr@b0~MR^0o=6(}%y*y0w!RJ=W*oi_z2G)Ho@lZ4Ibl;BR;2t>M=qashk~ zT`PtC9RN$EQ@$A8|TPSho!CaO>LR?%* z%ur3&DWd0Mx4<%$V~1W^1!s%iy1~oGBu_JO;G$Mwd4b^)A}F^y#6PRE;5Vm zYyb>b>%|{cjY<2I<&2%=u`_9G6u8z1m>5iQl-}Re{vAR08~(uF@TWuR+tIqfaVGQB zOd`)lCEf>(sV^)^(4Ke0Bs>8hDpnI~zMGep>`2`^8+Knx4wWn6EZX;)VR?|4sN|a* zSehWmz6d`==gDmxM70bkxtU1V7e8M6z723S9T-YI5^6-ZoMR?&a|*LpDLo49AK1i+ zmOG|*URa;_!WxT@!tBGC}*!Dc^ZUnc(AY$J(T*NI3hkzhSZzURKaqKw9BsyHDcx>|MZP;s`sOI^|(I_li-3 z?0kwLG=x5i*vUltzPX^)tm0X=uqvS5C;z?OI;ot#tg(_<&cIcYd;`E? zM5+GQQN%5*O^De3pFr)e%K5(%wZ9zsOiV=ozeN`=ZhaOv>EI09>>D}K`Uchd#)hA# zJ#3QZIXE$(oR7*{%LEdu zM@J^WPmUsBJUl?=Y`y$!eY~8}IG~rk(e}ZVqA)TbzE=fs-XTJ(2U||VKG8;%KIKUT zEBEF4c25V3Zu4ydB+~XSz%MZ|01kNX{i6W74N?ubLSfDHF)|_Jq+oNS;DE@Cmm6Yz zpu|?QHxlnXxh@ZnJOHWbpbrRwRKn8PWaz{SGsA@^Tb%pW|)2Sla^aE!4mj;yTYPW7%}Z#3Vk*e1+7cRdh6h z54OghtJt}`S*#?;Io7)3J{F$!$L}V)M`}16$>)vp&5Vt~Tp&K)r#Q|(OUW&5%zqi1 zeqTqlJ_~qxczCg8?2Z5>V;4rG5N5F=^`!xbyU~xv1nq2gVcuYg?WNmcB5ckKKeS{q zFodBD>Iym+^sj*+4Or~6bZb0Naj3*gA$DOXD@q#wF13yR7rt?!VFUPT4hRjN&LK`% z?7IqIMQHEs@i+Ya7x_iNF8C9+ju{N~Xbrra4s;L@P5D55ubLe19!CHQ?5o`n!2k&Z ztK+>Z0+1KnRSnJKE(zb8LfghdUsngU2OuPEr5(2xY-q=z2>kQvMRgbUW$bDA;OikUL(txkQ6>L%Y zGp*V8o^=zJQw!YFTLj*BSHOh_bGi=%>*MfX*XX(JQ9vFPQ(+L+t@0fIo6Xr42PEbz zfUqp!2!43*PGk?N`+XDk$nuGUi3!Xk;-kCkVU+M`N&Ex+j|&ArWZx?DDVUwRLI|V6 z@(KP&4g(-k7`*`yA+$R5#bsm!X-)-@%uQ~g!78l3w)@gm!OYt~f&amY{MxSX7!ksf z^Yf43_as+{&c<(*|Cu}gnrr_2^QqYi&_klKtO323r_WtoxWdBhl>|;_0Z!xHWhvj? zc556RJl^ZlY8$Yx+@ym+stCo!y}f3MZB`pbfvx|iUI;LjLK zq=-gY(OdFzOO~$8P1O>gSx1M;BL!YVnTkb|uJ+EW@2~#Emz6YBc7>JWhL|0Q`}WT8 zun%Atk4qZ4zl#C>blWefk^*8#)VVhzoQr2!C8%eHptl5mIb2r?O0CCXa92>ij%dK6R?Mq-HU7NG z_v0C5$hz;O_>GlftD$T$zM)MpWJX3*$K>B`bmC|mM9Xk|hQJ}tILGA>sGS|5P zEmq->aehNDM zpG+R)=pWx4m$t*g5=~C_7L`+yNhj$8Jb}*oM<)CnqMEUR)NNbDRBfq;fd{t;9|cHc zrG;T4^1M1Iy4hWY@T7-H!VAl!nPgk2TkdAL17fPt7|P<%y=|tozxC^e5c}qL3l`_J z7BW_bxh}8@vg;SDzY0-t!l(WMDTk|;X>v?buW093m$W~H>odq0G+aZiZXxYGehvJ! zG4A1nxcO&Rd=5)i#x5};AjmcQuQ zD_f)bF@&pJc&n}~w&_0y&moYbiC(Tsj?sIIc27L2g~^{}uDPL3f-L1Xm{-QLu=IX> z8k1Hh)GBYm^#)1+Ir0E(B+ym`ScVWcNErJQB6b3S}+Ee?naKB>e`(+1rDhoSxlSF+zhn zRYCWAV0DVX4~5j1g}Tz|qB1CkMjJcsu_7x4`D}~1U(0ZoKv5OY-Fq<)h@DZ&r$>pp`Bg%Ti-%Pq7sgg8YM4aa`%rOjSTQ-3=KM{M7 z#6%S_yK124VGjd%)vr5+$QRw!C+i4|TC^gEiwzRU%qs;=0sOzaT-rTL&#v7|hIh^AJBwI9qenr#j~TzDjv#l0Y<;O5NcSg-Vu9IS^&G4gf^)lOFE+T_%2cJnWb8k zXLmY*^OeuhQ`9<<<=nam{4g{%BUi2Vc^gc-eHnmRt9`0B?9Q@tp#J+0%WCRQY8>(> zn;v&T#9CKQElY~WZxkFosh{6++o)L?@8)hJn~2Kkvj6=Y&xJnuCP(Ucts7xGVHT3$ z_6Tw1bB6}%qux^B!SSq8WzYUTJZj#ZVDs#&1mX7pVwvM>B?vrjVAR<5$vVO!}ZM^#{cJ z`CVN53<2i9*T2Kx*H_n3+7L2^M`S(oueghTrcvTEcx&{-9ttKuT4{Ni;<>*KAP%@o znu?47)WOl6Y~o)Tca~{4%dlR9&J48~QL35n`iyn%2|Df7gj}2H7T|g2XQhyTh9#N9-jE@#k4pKPVJdK+BF|P{}E=x!EzyEc}gk0-WWFJ*@_Ai}!#OwTPiL1$8#>JHX|2pNJx%D2q*J&s|OtnOfiBV?dgH$nRVzl!_3L){Pjl{j3|1A zO<%ZMM^8K(vLxA%+XnfRw@_si&cuzvP7)7A_<^emgEdCifG0qF+~aYTQ?7ZcQH+lb zFf1x&kfF;w=$~ncNNT=c#Bca1KzS7zubQoxC34zuy(!=LUS9MAOf?%f9fM!74$5%j z7yLNqo~Q%Lt91Q>sYPN5yQiz{ATY`1*Kqz7FzH9o7p2+fNFXA>a)BNRzhSWV0W+nu zd4N6ag;qskmqso=?LjYaQklDNnaeE#aCMlwlxczrVtY5RDWEkg%9Tt`=b&PSDOf0|>^Bj=ve_4! zVyII_$(shfQbH9WMTb|*=f(jR{-7!+jrxG;ET5(S#-+TRm1t3UToKFM9SLp(7&eP( z-i=gXwp~CSRywMxi_cg%Xo@TD;M!6YXBTgqTVVFJ>}i1|B8B%PC8|XhEUkEln&Wm` z2DgQF}@GptN(|P-8zk2@e#TX4j(1IjuO>;G>6q7X;)+``4TcqIjJ!hKwPfp6Dw_Exs~poef0dVSNsrrX!*2F>ikkc*G8ApXx63zQs*}<_3c6 zP7e2sLhgge3>0nsxV1G*L`C&r{j*&!R@OA2Ojx;704FVj&`iIuWR(*_BbdmzQcur z#oX2xfSnT+cGC(<%6k{}*3*{@XQYok^aX9b$NRw4`F76X`Q7*dRaGsSs%>(KO$O%m_Jy-d{XLihHy=o_rZ-3fUR;<0-vSZoh& zID5hHn(9&dprzOt8N}(Yp&9I&KV6P)?jkp8(W%3W^0r1ww>-yDRiilBily4es8f-q zwBN9wDTaP>(}j!!b1vt8skFT0{onjxhf(a*Neo;>*!B_T)*P1TZIYT}Qdtcls%*7? zpW~jxkDw#MkJBc)$2F(Qr5&r@p}x7CTR$r94gGsGBDk0I+w9H=HR5@l$;4?jZ>5&i zfoK?WsIVG?l6`KjRmn^Z2(!X9JLvfCiIabyO6HnXTZ!Nc%+2J>S!?!s_d@DK95; z(Qzo=aUuo@kSyz2Lt-Vg8sIfAu?{+t^a%smSu{NI+HS#)@iJWJgqNrwt3-9Tx+F&O zJfVb03&9d}t{&BGBKNxju0j6oc?y!frgeV$6!Se6&h}cs;nI zs5|*gg)X|`W{0372VYXE`kuO_940_by~U`NUKP;|C|o*#3b2$`4M&~F)BJh;QXjG9|c5G7dT##gj%rwd#LLrBYs*4c<$+f%f|6F--h_e{8visb75-fCFzST_hl60WZaSTo429; z1MWbB9TQS-)|HYBmYWb;W(YKzhfvA8D&aQ~Z!|P)uN%m$<8SEF#$Oyb&@$r#M&~TH%rhfziK0VdW z(9&fUn^aPOlQyGVIC_5|9#UOD0;hOa;H{i6mdG#LvL)OA>OV#V0w1sycl^9Cf~ScgHm3u@%YSi0WHdB0)wFj z5Ft~dfn)9S55YDJG8fPfNH*4=!)#q`!x~VWD^>GJhzLWcK=k2$Tb~{N-r%He|Kmtf zrxW&Yl(K6vF5JpVD_P_3S=>}~di~+f!BThyk z=O(k%KfWU$^P=u>sp0lb|My}(nEp44P#5C%-tbG+#b4=k zeYMX^d5YUFljB7U7bpIvN}+_dTY6=+6@8^K;L&g(Y(;}V9Nyj79vXF~gv~|?0Bs^S za-*yJ+!Lm!6U7!MLzxoqk$pEx{a9}3J;rz$$Y)IDi6EgL^vXtMJ{Chqbb94x^wzyH zw2&MkUEEOcAFG$*=4)859-k@Ek2A};V~x(dL}b7Z7RqO@z%=*3&F>h`VI*lWAKf(a z8mLM0h^(*}BBmqrKBm8h(_Zwnf!wAN%~1Zdt-%j=yxMEuDxY*YrX-uj=geX2g$_>DLiAChJ*e<*a$SMQI1!j)`2 znpmPIKS(ERhUcqOZ7v`n#9uT1;Os8I#K|QMt>8qWC$i>I=f~m z0C?TsN36P10{?@pcZ|*?>e?`4cWm42*tTtSY+Fy9bc{}(*iOezI<{@wwkPkrGxL2j zYyQ+at7=#MsyeIgsb!Yaxe6-jLHxZg$K&#sWZmNxAw*&xiKMRg`8M)$btu zsV!aZEF{V%??3wkb+h@pl!%GUu0e;mq}pw-LRQoV{Vav5R6axl*y^}9n4hD7utoDc zxJoqkkp(Aqjn4as^w0$!QsU-hjO!KF%C6n0=q)D~X3ASSvoM}R68Pe`7>+p%ew4r&snBSK_L6a06jAAgMaCg)x!lV zrLi+^w<14lcnJBAfJu|FiCA_?qS-I;#iUN4@{sO(zm>+syBVeS{cvF{quiAK&|DQ86Kb-?*o7o3%>#3avQ_$vwlCyqCA%ra;9~JFr0S&Z_~gqg>6)xWUBaB{vr}3?0+U;lv301`C%p z_K5ri8mf9H$jnbb18=hX>fJer{WNXqtU`JaBnrl)l1q#Yk33D*@YQX?@{Dgn`v9KG zcHyj6GEYKJx`unUgFw|?-gaBjL(^)*@thy%FPh6hI!T#kRt za2BCaxGe8~ouw>@{^0hh{8h8-^0GtBgg3#v(VElF^~f~%fBEW$IFIYO{s1$#x+#V|1irm z!&)e(FGIrqliYL%{Z3C$l2h12H3m>W5!sDeLAW}KQZ_A~XAx`t1~QbCS+C`G%`IA< zN>m%u!Mb(>5M=>+I0#Uaf=5%<(+#57H2*kPLkz`SKMn&ax>Yv28mp_Uq_OdrXkNp| z+DA0!iVDE8>ftFD;iTdAJY^c-KXZXdVu2nqTwYMfJx3J$1KV8O{|Di6Tt7;=w|hr8 zY+weWN>jf{OBvv?(58*tLbWi*2j`{|f*G^>Fb${xL?h^52^<(C{&-m!jeXSt!BP$p zBX;H{!};S0!=L?GhbFr*CW zmb!*>7*cAcI6xJM!-JO?>fF@an$hFlBT zdUh(VV=OG}I23dreJ}a_Q8m6w!&)`<%izP>%|ON&o%6P54g8b+wb;y3NWR;tZ~K z&IctLv#vhHxVHYH>Kd|-l)S3wxZ@-Ye_mTXr$^K}nQIbXbKvYHHTowvs7AsW2<&rx zg0GR{&?+-{TwgvCVwcBX>o*u!wycY2YWu3j?&_%=ZW9+UUR>};wI4crIsG4wXSV49 zmTa)6*%1=1rqVPqWy;A^1MoYvuWKR!x(L z9U@3J9&h7nmelI)LGO4~k&38ZZ;deNCTyz026gn-rN!KWLkzflN_Dt|zYq=tpgb$bUjU7LO^uuRZex z!^~S$%i+n4COp-q#NkyFwd^|7#q!t70>W~!C2S@%WwmbaTu}|Iqg!00Q1WU4yl{*j zpfy;tlJ^|IlL9mju!?^Ug2@uG>OkChL-XNpQbd3x+C7y3Z!uaf0>71Fy=;Om{&8{p zHKjZRTIpG|lhx~IbgoQtv{rq_!4xG{#mMM1iz@Me6A9)TTrWO;SGcyry+aZoCEUZ*QN34tDfETRxoOHAg7Mh}43<=O;QPc%x)Yj8njqrYkb(> zH}=rR0)oCcW_azdPQwpTSGs1_>em*iMY7h^N3Dc{*0BUxj%{Zs+lz32B}NNCVfjA1lB-1p_ryey zru_c?a3rw$am*$nH-k3vA+p+Sc0C+TR*~XC{w~@DW{2H#KDTMLq0_*hNB~02^7Br1 z0x@_rwtNz8PNO~+Ah2XB&j{7OjIcgGTH3_i9`Va6qdGbHbXr1GFNrm0SI$UgMhDf@ z-)OxX(`$Nv|BU(JQGK~AyIc?2+~`^ffp$gG>p(iWVykhjj~CA#aq6gWfT*l(27!#M){ty<>5FwYw$@0~7d08&os>OT_7)OkiUr(tPm)T~38z`5mW2t5G4NsSZ_JHtdP`>8lObshHg1Dp zD11;Vsu_E+GpS3~Ik!I#ZrqD8vj1-pd~ms3=cE2uSQt7p!r_1{RRZ&Kp6Z74IS#T< zU9-7#WXkmtK$mFcUg6zXdHNl)YPP*ZCl_hy7U7E==hs6gMQP{wSUjp9Zldoiboc!D zpTo0yZHdY=%zY<>>>z0jGnmSg1&Y?al^ur^Eb#Du?$k){wcSl-oE348x%qPiUFo0T z6PLBp;mITG^@V+e;+q+WI>Hx;Bs}f z#_!4lFhl}>qb8~k`$vr;v>D#C&*aJ$mVnPII&h{q%d4*!5VK$j(v>A`koVos65oeD zWR#Sl7tNi6IjuvJHU zP)vugLBs#DRDBUpLEImHE>?G&33U}}l&FTb~w|Caup^>f+iZ_=|BM75yM zoS!2!f1+h|m)CsY(a056BQrhrEVdfp5pXRltmf_FaXN=42Y$Od{kn=)jfh8rTOQev z$6v2BpNB+X367QIy@Ce{Q@TU{T9a>y)PZ11q9-*Q1TSn(PK)$k8XaIAH=|)(q!*ul z0=Syd_=G|^*DIAl1FhU!4tU_+@DFI)#}eXH_OtJanf2S1FV86#;^?Yob>&7RKU(sd zcLs)#S$^taoZ>&zSJfLIfNrk-c}%%m6CT~)QMvM1`59{{E}M;#sOzGC1O7PTom>Tf zNzGNnbaJ3njf74hk})B|fbH?R!pAHo}I*n0Jz zOWukP_l9}z*75#cdH*zZgJqTX*kA5exSEei0f%T$-P*2rnkTixu;PR&TQ>kX>cuyo zpW@`?sSsWC@4%*A&H7TdFyr^j$9PFJRO_Dp&tQdW2?DWP z{6PLG)jQ2QfY>F?{;~1|r_KsCE=fW>MFX4sY0}D&!#@kOvNUpCC)u5*ul2l3h>prT zzgM(UODPxQjf{-+d0gjY!VZQ!Sinw`eJm)EX4gcd!LT_kqr_M&%1y(eFH|dVpF;F* zlj%LWzsGTDN-i^`ZVL*6+I~U)I}cqn88i&ou&oQqpg>vzZsL_SJ|bS+sFi=k@8WgD zUR-Pr)2BR$r&Bb4TfCAcEq}v$*6Vcn@Tbm_6{F1;ABk$0Lne&pYs&sy0@NN^cO$8! zGD7nV>!qs&ti^klIbfpGPECIzA-4*L&2VX0$H7!d`}qe~Xr51e(zLRntCLN3d-rDvIml2eID}**yKfB0}jZzWPpJdTYN+`}bwO;tRvNFv;CJ`TQLv|ebVEo+OSoD>q2=EnhjygzD|UIn3_bAw~itrm|D}aNA{)*emp@0mYV9nu=!7Dv)qp z9t-$={`z0ES$5A=66R`i@nRZWQNQln+J=bK)67x8_Fi0-vV-P)YC(8)dMxwvFR_D~8K;8Z97R1cB zV?<}cx5!ZrS_gaw9;F!hGf?s>(^;h%0LXq2+R!uelz$@~EGBZY8O2y)w-Ed8TKCkO zP^o2jlTFQx__(=tK&KcXQE1I?-`PznLJ@|Bi2f0YFU0FU1L(@l`#Y0u^CxtXGS@Mi zY^`##@qu61{*@UEk<0upwtZe&Si*YYee&)~meL_~+2wvmWMxvpK zhzcf^_|S*90}{qzN?<0A6`*uNr}J&ya=OixznxSppODI5gAkx`KkG`RTu7zk=DTW4 zzgvW7H03RLnE2u%YY=H$kVjKL4)SjpJ!U;Fia6LBx&MBJEkSt4-~w&CFqs9cfQ_J zg7xBx7cA+b+td)I5Y3>|d{QRAWifln;ENqi?UCnQ2Mft>qdJaFe=C0@6k}qq@Hx@V z0+I1aDq=2uFEXBO*SBCJ6<1hEh35t~cS9dh&xY{BGjxv;%HjhTnIhKO6Cn{t2A+X| zAZKX`pyUfa)wHDvz_j)2+wOX`8|qSUr{BjtBG-zEtCpkH#$K(C*B`Y=*GGQ&;hMqZ ze^a8BPQWox;7sI3sD077DPi$IDmEERa~8OC!!*_*qAZu{0}dCyV3~T-+U;n6K{ok! z_~TE^3fYGK9N} zC_lj@r3mQ7g3U6ST-UN+E%tx8KGWnY)sCaFb8R_73})93#NLkoRcN->Gz&&OBd;xq6n-KC zz$5(~CY350EL6%gjJFSy1N%83{f6=}il7RNGI)bYo8b zO4k|juOvt~INKvl+*+Xqd#)xOekxHNAhC5FlHux9gBz@w^iuqhOIuRIYKkkN9`!=RKZtAZc_x5~YY`E?Z+ zEXg|zHqyzhXl`-}SLkSwaZSiVygs>g9seRPT zY2C_DE@5uiq1Sl_=hUyn`~J}4Yf1daK`^XP!{RoYl`{Pzq&V{HVaF&dzD8B#N7-Ew zHvDlxNM8#kc5`cazY9`Gi8xQ1FRG;xkPGg_nlTa! z{w#%4!dU=GDze05J(V4=$ds%xZq4SA09TnmN!V*Q^ZjW0@gxiB9{+V~a}r!6QzDzVYoyzi{p%UuObe79UjY&YmFbHj>JmfldIC20$NTda?iGmZ|V~>V9G>qZu&)Ae~Q{d$_ti%KF1qSP{OIe+@pslDPB5L9T*hL)f{-F!y+fD zVG8nDvaEJil(`=z@=E{M8u(?`p>iHg%KL_v^}CWGG6>(j4n?NfElrgc{sJlIIOT-! zr_%QthfvN##cUhAO`AHen_KI2oI1kdy=M+1LRRgPa?imPfYw80b7{c#dBIBGDl-IQ zR)aM}{Nn8J8kR0X2(m7OWi8}Sf=t{YO5R@``ELrFCY@LmLZh<#66+h&oeZZ_qr2E6W3&9}A$!-pI;yV!1{J3?xw1 z4nuy=#ACjH0KnvK$zx)4o#QY^iNIi|yZw2{^k)w)rx4S74)sYUetL~6DbH>7z~6+6 zIuzom$7(1uY0Qt@T=uItQKI@TUCX1E+ZXLo3-I>->Wm;XL~fc(oS6?fLl+!Bp3%o4 zxzcrJ{X!5YJTS7$DODl3a5y;OSYX71nz{;MD6(fa1`N;p%8v}&Fx#g?Zb?yu7%zse zMP`eU&#NtU1?lI+f)f%P*RSTJePi?$$eV^h{ZX-DupZU*#UVC z6cP=X0%qfIiU(S-L8Mk>G{7;7AnTP)?4+%MN$s=Hn4L}V3@pp-?`LgRV9ln1ltJiy zkBVb0>w(h2no^QDwL8--@Fbc3kD?fH4~gS@wQ1xmt{W6gdmp+-5LWB>xn&!o7W7ey zZCi}9Mr0<$*~eofI&^#vIwtG~GRrjlQu;32fP@rwm)0_3fl<3H#?@0O-E9|c72&)Q zI?C>FUt}Y;i0;{1&&=9|itJy1JPNA_JQ~%4GA7G{KKa<{KUBR^vgFz(%$?66CHp@Q zlB+PFfRD;BLsc8W7Mh*QRt_N%$Zn&5+n{v{Qj!6&3|5AH4$jOzdU}@Q$2-T z0!)~797s7U_<0KRVo~;;^WCM$FV8s`cf?m95O%bq2OpEpbP~RzC`ebn1kBfkp3_3wDNFhd<{_2!RRf?+e9{JYI~2i0@p*5mex-EL+t6N$0C{ww5? zMsh^lh5EK=($~*JFr?IiF`z$z2H<_)66zB=EQjOB~sHaXwdLbK4>;Y-+hm%+U2RB>&wp`lPaj9-t zec^IGa1NsrI#e_pcgk9mate0p5*6okM(7>It9WB5Dc6+;wb}+cNHC&HfX;GRNjJjx zL(3_OmV@Iir43;QtjH>r<}kSlD+bz5I;F2aWRYN^4?aiFE(a`~p>ibFu5>&N_Rt<+ zm)QhA4@GY>k)M=4RU|4In~eBpgyn}r{Uz2#-JmO!am}q}m*g6!kV7geA2?uNHr_A5 z-{Dp82guajGl&@^poVtY0UPv19h=#`EQtIrJAUe#@0Q-%%JH@KKhs}V6s6OB*X$J- z=AecWMPE%y-bUpdR#*?R1lli-gCVUct-H41ve(nw+liRRHMqe3{t!N$Wv%sS7B-Gs z8OKDd4TIIH@yQmyWB z-veo;`jZmlUiTZIUfm?<$G5mV%YlYJD^$(o3Ry@$i{t*CjZ6oae@P`sb-A>^n)s6d{@%qR9H?7EBjDA{utRK0K>T(;>H zS`H{**QInNfz)j*0xUT3785FC0wZE|?(Z&|8>e3IiLYBSymg=^dWraT`i7Va$<0)S z1v_Kx1Jj+m6qradD*Xw{Lw7#F#@fRk@Jopl@}7K5O^*9QQb+rG3u~O$hPG)q4_^*Lxmr;dz8 ziHi~2Wl9GB5u4wNqbjJ_80%{vZ7TD@*iLO7p(fAy--*~FMIN?-lj?G_XslEdh0!p) za@}QMOgBq)8+9oyqF7vwi+Z&zw@}pdD5*D#U&Xv)nuN%x8gG%$NnrL!P52v#j_}(E zb6R275+W?e0w@BkZVwxwRHb1OKV0iQGwkyWTSw(5;_|O-_AmusNDr?78z=1HDJNM= zrR?SGyc)8S;XYeBKglx4!X8e62^w^1H8ltvlF>&CA7mvo=H32TxRbG~O+|-dX5rQ! zoY&`?jGWWEuIwdYS`mBkD^>bCpq-1d)P%-Wd{3a)fJs4r%}I@wW0fabbOcAY#(@Ws zqcsm~dOV^(gLZv@k5|tHX=eaACkAQeZlgHDBrqs59*$VcB`Wl|J9_H{g<-F!l3{19 z04fYRlYBKj;)^--mTt(ur7UQ0XVLuP)nQiX-Ofrzm9r7pOf_L zp3_=pqbieSL~letkD52lKk_8YuHmoN(bEa+O%90Fe=XdqET+%>`bXjd+PbudH*A}p zer`zbs4i>R?$mqN`-}d(A!%jW%JJ%Sv9GcJ1u!Mge_!A{-X<|+rVR!N)_1|0X%rB; ze&GLnv_|nwY7EZ99}sob>QN1tj(C^$Ut=9;&Y0cwM3ChBdK>FA2y_VNEeyRf!I1vA z(YPij%kn47xW{;S6|ttjl9BkJgXIZQO#^#o%+Z(Vk7=Z~NokZdNy;54|7$%HK|8VQ z1|Vk5=_|O2Fu}D8h25H#B_xuDv=TziR!7M)V1vJWQ1b%OLW9P_Oc^r%_*o*L|F6Je zQz7rK-M!@^nFUNifj+FxRp!Pz@Z8P!skHtI5@?3jz<+39@Q&PofY~zWPQ!XGNUl8X z+!M2+gv~9u2>l!-N5OG4tZkgnvUVyj2gn}#Mw}K*h^!~9k;fW%FqW}EW)!q`YK>n1 zIplLT@G>Dsj-pd6cB($=e|9yqgGUUdCMoyQJlGHQcn*!(z-}2I?>~xQ%C}6wX_2SG z-d``sj~>elkP&^}!(%M7anYlPN&KU4!)=)>@2;>;FqN7eO50FHcC_EnTTBtG12`E= z?|%T`@Fz@zL1fp%vDP#;l_%@&ioapWKQccr6by_UC$|)jo@|&zvh8`;T7@q#?4CG>|dOzxLbq#*^ zh4wC(&^?Ws>u_ahQsm$Ode;SVBJu3~|I?@UO?2RZWciPeTLtw*kaQ)xrz@)3y|1E6)Z&C9&+2He6s^)mN(Bdzjuu!eqeStj zODLn*;n-Y2opKH2TvRJOeXd;b9%cJnzEl-tvGp!wQUlAz2Gf?yEy zNlF?*8PiLv`eVcMgP!gLf;q_Z2@QZGct(n414v<~P@ZRL8AJ!EYK)4jlM={5H)V$7 zxg-LSqvZo+6u^hjiGv2Ehpi#Ib@M=W1_`W@5f|d6!$JbW^8<*TF#CHv6L(=_!oX;_ ze~^pXi4=IlQ;14Tq=B(=Cn*Hff2-R?;9;nbU`4Gi>4&+$&Fw$1kfy28^HOK29S~0V z0obaEa2JLUI%Tsp@t`DZpg7iCZZ!C}m|(Cf1^BU0b*Vx99c7-75LKn^AWmpVpoKgE za-kuAOm85FhtRFLmc!9m*5QDgxhQ#Y^z>ZAYhIS+!KvtEG#n}wK_Fg|gnwr|*nudb z#X$!VAi_$q!)K=u#ju$~6KkR;UK14cjoqi!z)DRvGE1&cIq zWeAX!fZk{8V?|WoM+~t}ltna&?lzj5_yNOB!DD6_GWhuRba#`dy42D}(!C(c2c28` zW=otPHd#9(UxtEjBO)g?~(l;>ky?K z+(gXD)`Xy^?_QPjil(8rA0xUjfy0{JpmD%+ZD_pG{hODBig~&+7#% zE)_Z&l5a|K*2}|V6nl<)7md#Di0NYPRl)S!GBx~(V@nI4x={t% zHgkqHM^K=O$j2+LStWb@r_9kJ7A@bg?a#~jB_69g2jKPzT;*bJgJmQtI%YpT4_f+N zsoILe1g5}`GuO}fYKJktgLvQ3uOEpy$GJXPwdmUF35*@bDOO8Ha|_8pfX1KO!F-xw zjWVn`$;#rUBN?^F*=~0KC%wy6jR%K?vq#-*Er5WP$}dyDEY)l7Yf{pspR~1`737l} zE9(*~f3+|y+o|@v=u=niSltZ|P3C?a=<6z^yxaQKm2=s;a<~|BdEIkIA!ZEdy5)uJ zQ6pJoEUua%9-A>m1~63}h26o!>0K{|SOdSnnnRi8sN;!MM4A1dI^W z|C#RpOBMQG)4hn6qO6QC(0~yF8`!-GP6_NP2B(MmzxGZtLIeQmw!u;Uqk-iB8Z$xA zfw6P_*V3NP1VIaA$p)hVJ}^OGv4p3ME?_78JYF2nWR)|Y#JLMnE{qr)E6z_(2(b(; z#NyZqv!^Dfh-n|Nb1TXtZ_@|zGeh72Oir-2g`iL{8*l;#5V_bUF|PAx{z(VCMhxWJ z+WrecRvi~Nf>T9k1>-^;fqho!1;@VuSzJku@Ss3d<_N$djfZRfwPS1)47|V}!6CjQ zApuT=fa0p+Bi=0F+EOCH2rcVL(Tjtd5+Ysaw3C3nlc11C2MMvkg@X$*>LSzta+w*U zd&jkJ!?8=LgJ8y!z=->WfBB+3ut{AUbp1NBxtTyE zoC1#IB;~-LBH2;qj3s?01zba-vXDbq!oa}pe6xmgr#3B-hm)_nF1@4D_!u(~!f%MX zK_!JuU~|s&X3XsoAYPpY&K&~)efz(2Uw9yb4SAJ^IIqC_uGbXq@|XP#&V8riMnVU8 z3&CKzKNYfvTDEF=NJ%)MV0!XvwKCI7{kt;V0qjw5^(gW1;h?c%Q~@;TKZ~gU>Wn5x zK|Jn(Fd~SsfS?y}L<{#tX!$`ZL8C!CB9mC#SBPPOkSQ@ifgYXSQDl+6cnr2~S=l=(5wWq>VCBHZBmgGJ1$sWVcuP(*O0Z z0sl!fCz#(Ar`xtWAEC$%fZ9iXi>VlfPJe$qslK8`A1DqrRZabaX8l-5_9y)%9F^X>0>^gl>s&3zbCE#2^HZZZ?) zHGDAJ%)#FbLMI)~$Lv!Y2J`Cp zjlI_osE93_OZx5OBXJzLcnf+b-sN{ogkVj8B%oYPPWkn?U7}AK;JuE~K>MU8r(iH+ z?2gXwc`9xDk)nNs^Gjd)aLJ{Ca=9ts={V2a ze!)A#Qv5kV(rAz*fm+h>o_x@{TD^tCSz=1MX9{64R~G{P|5b2wg2qSIjb5;-?tcNJk5I zP@JK0cDLXz-sSEzS9P@;>FfLxy{QPvbbdA8a8HyP{BMQ!tk}|l>Eb| zr@;a20`C$TP;eh)w$X2`8rDw!XXF>pj+=KB8kH|E9)A_bYUUEj%6Iq2-ap-pMn#X2 zKuGn!z3nTvXMLKh5Da+&&4UeZ?8pXxZ?sm_&Nm^vZOW%?r;zI1SDL!0iFBzf*R2u$ znwcGuK8vzOy=ha@wE7rq5(^@70I9cID0%DIV-;}P02E*kJ^R_AO+>fVpJJJ$7Ot1F6c)>zpDKWn*)r#>Rw?)goJ z7B-txToX$+ZFU-$$f=McL@TrBii^D?VOFL#2}_`vln24gpopA8=vN$$~BVa`O+9#*gwulohY+yjagf)cg-53m2YdC$Wr8Wb!`39;UFK zB2Qp*P8Ml{?dxTYuxVv+rtE(ufI3h!Mz%IvfNLa30k;s}xW#a_W3hbxJY|+9|7rh+ zQ98mxoUbuW*QBVuS&Kl{8j7v}_3$zK3B#}BBHi(LS*>h!NB@QnSG5PqQa;c4{RjGt z%+{p%W-t9QLq~#k8w*c2yMm8<+zt6pJUqFf^TIjpbUc>~n!qaz^GN>nq!7^)=|(Fo zfSM*LHNzvs+&GMcBGU6wd4ZgEu}sr+dLu>>)aJ}^ukDXxTOQQ(hqA5>KJf(D>S888 zsR);@m(0(wpGio0Q#Zpu*gi@*4+Cv(6~;B1CkG`a_19p)3}T<_b8J(EF3pAv)XU&ucJmT ziwk6n2p+CXswuJf$WQqQkj#6NolQo{BcO`+N5ZQL`p{#L&sU4e#+GP0yyQ~ ztwOu}xB^;<=-MP8J~`D1V_p)Quw@1MMzLGgm8NFnds|xF>(cKz^ZA!{Ecx0Nji^Bv zw0s;wSIdb0_DZvx*Chiw*5pYlTw=DkCV#Y8Hr?#j)msWH!~VWB2w%c8nl9=@dVG>~ z6c6>WQKaf`f2%wKsMZb_|4E;7V!hdK<&5p%TnDV%HeM&rg1!+6lzzd#E5g)xA*)hL zJj?xpI3*%);4%N7FqyP9h5`J`0Z9qQ&608eK?Ga{g2NGgzaVh_pJDNTy<2E2Da(tB zePdqarGd)i5a_7?t@xjy$j%Pz$%7;Z#-TvsLH)NHc*+IgiSaF@XC_vG`=84HTpsAo z4Ur1=ea?Tdg+MYM2ou0^T}&FwVqRTQd=~DR)i^>JOCNpe_#b2%6q6EC-7@m_kOWd$ zTG{+W3fb=>Q*PC)qo*^zshp#CH-jUeuRA}(B{x9T)LEN7MMMYMJcQ)qpl-Z08?^{p zAlSIA+zb?m2pXb_%Flvr7B;Xn)7ZQnWsu%(5YW_VKTrm)0Kl|3iJP(x4>3h|G=6_B zvhRmwKxEqK6e)iT7!oWR_IJ0L15?FYZD>Axj_x>0TGyaG9$^3`oxZ4AdLDH+-Hd%Scb`>&@eN1yPd?=Y!Htj=to=~@o&-Vh`t3L6T7GEA%uoB8~n9yk?=z6CD5)q^Idx-KhC zL33+0WT)z=NVTPXJX&@w_#NJKvc5;;Uxj+dfOLe1Uhv{R)u<_pU?z)u2f47!%yAxd zs$hfRx?ge-Bh_LPFiVhJY5*h=X#l@a6tV? ze$;1he6y#bF4A``$F7?^J=c@#h|5 z)JgRegZ+aAHjiA2q3dHp1`1yvS+mKUhv5ByYvE9~9o%hEo+66?KNWvy$N@HCxkRks_s2Y?R?u-mdTuUb(DySew7>A~U z@c6L%v{Hkt{L*t(*t*5xc)%tL|E~j|`L9QN%g{#2yY42WtZVEAHvh$ilNocWzqtHg zAG05f&V~|C>kkio#+qESBKO3q0P-)Om)nV5TMlms7vCO2|jC+M<< zvA)2ugKO{#{kn>?*A5raS&#A|F0lHT3Pq^LaUAUi;(tiwDXu7873EZ;*x|7IkK*J! z=mJt(nNwrTD+D2di%k|YfI){L2An$x9^b#=0zKKj7AF8dnnoug`yDQ=)B0bX(xy67 zZ>`x0QvRo@Kk>dV2nEeNr`SE=Eni zwBhR4o#ARZ5nd&1OM)edD(&cGOBHJPL4*96S2H)P>-|7)3=nF;0VEkoP;uzT9gR^3 z;Wj@GJTi~d|6F$Xg{!aE^o?&mQ#0MhdypvOYdQf7f<{}*ali7p?Z1Y3yVChF2BgzV z^+r4}TV)xl=@7ne>=#0wmcdvLv$v6k+A$9VC9Ru-tYVLl=<&g&Ih){j+1M2Ru9w<> zg!OH2Dkdcp_7)W>fW<2jP|HpfFW^IcCX%)qrjK&RCSiUB&1$v8zreaqDsR`%=mg|% ze#GK)N>=Dfx%?8bP1!!WHQTwBJSOL;|^{Oh2- z`CIymH691b?yv(!7AL+tlVLY9AL|{_!+V${`DDED6RXrx01m?moR)f&7xZjswGaiC^qWYRLYb3mo6^m_V(KYxAaj$GbL9@7DRuwO0t~&j&a_Qyxm& zjnu~hg_$GI7%wa1N$;KRUh8mB@{c6rp8UY9Ktxl%Tg1}awD+}Zyt()x8?Ee+&0%uo zy!e=CzV4DHfc)K!m;H!Pg4}veBPU!{mX}@$iH9;*fOYw-mAX3J#zYRo^7PUAw@bN(E z+zD0ZYUR;wX;&FPl{TM+vPafr(7dY#S%EtK>V3Dkb!Y6=`kNg)8Y8T(?JGf0me2WX4XaGuF_Y=tCvTg-a`{-q2jpIl zOc75fdWOA%q)Q$rA+s~Mp5@#N^tFren6G<#I$c}BWUWLja$So}iM_034`@ptcL_0@ zZKhZphJC6xG>DIg3??@LIwI)C4Q<{MUp-_2j)XA?WAFZ^7;oHDdxWjl&iQ$afG4Bz z?hlxxftkscCmUs_ea1M3(QTc)iV73rUOZ(TUKpfROOtF6dK&7Unjw;FWYrktxiA$-A9bGSH30_t^Le5L_N9;{2_|o@0+$IL;v>} zAWBuy874BxdzVFT>I2K=n`nbn0e5j_fHoE<_5j#wAyAh;VUbalAt$nuxdo3ju01K; z-NE)!>)%B5{8(xF-H*3b6nmh1oz{<&XRQbP{c|dYdz@5EbDE}2V@H+p0d{D8P-V5y zvF`<)N5IKGsU=$e(Cc9UWo62_Aq~C?0A7x9DB*n7d^Z#)INls{O|zs-)Pnm12W!+2 z0Wpg7_{2>=Y2)DslytFSN}0=yoAndE_cAfIP^?U89ADGl=_of*HW}R8m9M&zJ}zq8t)p+Vid;p zRbP>bsdY>W>b-M~++F5%Y?Qv#fYw&t2G@#Ak;x*osAr)W*do!(!g!;IVN-4`mgFoi zrBMT++5PugzZHFB)Ivp#7u+#*8)hJGrp)u|KLe8=Ga-w^jHT#xPbe!X)xW~yse}6%zXB7XevJ)hNPPE-SXpP^g0~C>zzMA#I zR(pIh-tf!?P5BfCO-!~p9||fPEX~U}Bg%>X=;OmE)`a8TLLlEsd1+AcCqa_E61cs% zwIzbV=*pLG9z$=Cm2?oODYQeNTdL}wzcT%Oq*GD91kB4B)n$`^DE&&+-0ua8MQcWd1}+rw&4gWulYQdTDT{skG=j z1RZMc{rE`qAn@R7ii=Y_ditbx?H7dOEEVx4|TFzci2L;EC2<@+yp!{lwcgN25Y_!OR z-jn{GvC1?M|`ta5r~EQ>LHjN@)k z+^!|kR%{`)j>DZ%0xb0n#7EsZN!EE~=d#jHIl&^^iRuP5K>Plk z9vw3jlbqHyPVOiqDiuvCU7qY!N!&t{S-W zCKcl@5&bECfT((o6t&s|ok;gq^)r4#TxkI*C_GADGSwHJi8*EGs}Je^3+#&uqDG7_ zOoR;Dm>M+q3qpb!KJ|YRaH~sAxz5TNkQO2{W81sxqDIWSZKE30cGtGzpl5%8`UmZXw*f+Y4J^%YsaD;{!SkOEeQ zdIxS41F*W!kBx2|4k1?By*_b{AiUbO+qK@4Z>F3HHuOIsmcO*Sh756t^);2Qz9s;~ z+M4ijU3$WP=1tE;G237V5uYT}Ez3k;45IHyfhoi{;X_d(TVKcQmm8=gT7FKBXoSWF$XL#*)X8rD73cU~u!rzF$!gwdX=+=pgfi z1Fs>c%lsEHkq}Y5XD2G4MZ)c+Oio%Kf|tsa{!`$ZSz!3qifX!ZQssKngVg8QHE4FF z&e3NSwu-HpTR9`V5Oo5EA;s0RkoPsn9 znsq&G+n%;(nl0sP;y({_2aA@OvttT6$a=$wvY5U&WeL+;Zvoz2FkX@H_xTKf<>@D2y z+bbu%zx2&%##{R(XTa?K@(afvNboKR90zojS2M;P!#rR9G+@r3Dw5*V5XFns@W898*c($GTlAZq}o zW=PgglOCs&>4#tv!z}sE7l4nw9QE3*6ix^xH2H3G#)7iH51e1Axv+1vlmBTdM{QI zP2(3zsokNV@5b{nOl580N);53%v=xu3#q*{?btiWj^=b00ZNM%Pti34& z5bNiYkc)v)AsInM;~?BG`#Uz60l7n2dq@c?!YP019 ze+D9R>P`X>J3V5X!;poq4u^~Bk8a_tz<$(yW(b}Hw&Okdn2oJ|sUiLT2zx&(54}dP9{(4mcag~=_Bq-LSZa^9;>JCk zcWNfu1^dhUd}SM7e}!68^?7&Y{PZbxQ&O3>u8#XG&hRw%kOB=CZGh_*3K-wQJ6sh} za%(=Oh21iv+W0SF>?hZOQp%QUg(*=EK*ec|q4SwKac9u6e&-0%BFVAW+oV`Ij=+59 zQAOEcN5_o)otPF;_~Cq3)`^+V(5`^Jvsi46^XK&El7VqRSu+uujH|-U^sBB)8G1by z#QVQTJ|t`yM($*xuhIHlyX)CtkA(oCgu|7aXRD`}c9p5Y4?<(B(dtmwm~R$gz|r7# z!yASjM0GnaPqp-BerTy`&p8GK6V&hM#}OJI9-{eGtnEsSSr69`G&fqZ9Fv~fNkWMwZh4~q0CgUrBK#=;PG#x&c9;qWRyKd;;ZD}n@8nxeMir@`J)=?Eu ziSS~IRJOSF-YdWsM~_ya)-zEg>vj|Z*yt5u$%lxXLNaF*{w&3B?z4l4gBdiiQ=MJe>mc2b6_3#zEd zCr{y{I}jrlsIV|#f8c|_vi?!^)!uSg&ZMUg99-lO!%#2mi`L&Bpu~F@2cTp-ehVp0FR`&Vy1hwBL=F&W)y1BM$GM)X+DtTXFZkKJUUEln-O2d z?p1pxj&0Isc(rP?*|!*xnfjI_i)s9LF4)E|j%uBFuw>})t>|5(Gc9;}bwjcHMRzH6 zwx-pk_Kikdfyo#qh{Q4P(@0W+ypmT3-fXOtsR&3MM?e*yz0}7GfRZi1`r$;s_X{{= zivg00@gTtkVh-Usi1~6Q^zX7gMsX_8?-r*Jv@9a z_p+YCI69@XhHJfQm10v^vm;sn5%ibKgg|w(t#{qpVWm>BE5WGq8!}znK|kuqF*DWm$GsD?{!%(1^b;!@~UVkmR<~$|zgzoxmyexA8fFQq-D# zVs7x(oRL&{0bB(SB)N^=krNUOCjtlaLmdy#&bcxgszZMqfX`T`oQu&jo!Nbqs2AT7 znila<+5N&5>|z+IWtqdcdT>qjq7pEdKoGYBS)$WWB{|U{UPd@4NxFNBvC41HJi&0v z^yuqLQF0>7(Y}A;V@+?~CO<({bJ64pADHfP;fvx~CJ-y!>iU6q{r5?u|- zF$&~RLaDU>@5OkASCw1-{xq?dE`s4p8h=uM4O$5Dv)}rJH8{WQrrf2SFjnEfyo=v6 zQ}zY_F~uVx)(8i-QRgJB7W*==#?t*m%?zBKyeRfD-o}YRlcSY#D_UaK|9I(IQz|ub zXQ5k!^;21mO=u@)EqPqwcW>K#;YBju4b1_=RYXt*Ac*6EHoyqte(d3VcS1cUYtg_} z#{A$cMjEI-=|x=mldSF907~@kGf5Y7%HoXUS6MOZ;vxwLZT5B55;(D-Gw5w%dW1G= zrGk0cr>|_YhkjXrNc_bbl5!0w@>USk7@rM0)76Z6M-oCyP`I=pCVLxPX`pJl1DjN# zs4!~}K&1r#@-rm<<1gG7HbXRiO8*%`#SnS?{aer9FuW0x8{xURw@p}BTBLiHGd<~K zJ=VXe4vr7&yOA2Ht0AyQ053~_r=zMk%V!nmNcVOHPtDz<7M($fuZXIgP)Ci*(BK*@ z^s=PIo#F%EPp%d96f=s#7$Q?6LGTOCrq;F>fC_|=GjbgMXL@9?<%gDLx0x8(!m0J4GfvoX5qMa0uCOk@`IS>r8B`bO`2qxtO8a^fW?W%`Sb?fN!uKC8`$ejY+Gdar8 z{p~()lRNy~1vHAHv#cwcr(N#MZEU1E0HiiCt!*4hf+R?o3jb88pFxxc=U`7YH>`t( zwvcnd{UELrajbFm4KCErqlCM)Bl{pPNMwZ7c_PnynR9tIM zmrHI*nZh$9=>0Ock&pe^e-Cw^D@Vl#_7eMma|F7A{w?bVWMO$dU7IXT}OQz-|Q z>&8W{4gP^$Lou?CCNfEjli`gM(KiZ}RKGBT|DD2AqznsI^B(#6siaY1572Cu%W)%c ztPEDlboL)^cl{=^(e-Y4ghs!n1H%rPo#1SUs%kI+fmQXTQXM7_`4t*cRWqSOlVeeN zY<7(U!ZMnn`JVpDc+nO;`|XAUpY`;x7nEbI6;&5c_$%>TW;u;PI0Dxmw4^*od=U}& zeI6=`YnO8ycz@kcTNrL>1CY-08`l^2Cqb-y>BiQU@&SyIyss#QKu+gyn)sjpX{d(m zR;6DQRW|cufuX46D+o|Mu|7`iuAz2LeAWdV4^URmo#{R?SP2!J}BNS zvvq3D8=fI>fzO7!#8?gjLHpvk)5svxdOBr#sTY=xA*F%~>0Pim?ZS!@lm1 z(_Wd`xfXpR1YclKbY?oAe(RF+S7o2qS(~v;ltg$?z>5JCrk7$GVCy*{nD=hD@R8hK#8v;i8nMJ%5lTvo2oRNcA4l;gp`~w&Ke?@70ehW?wzjpsnFK#j%&@0WO*!H zQ17i+4oWBsHURUD$$(@XNIOA3lV`V{Jz|LnwTEIiGyR1B)V9243ILIi@Hje+>I8@m zNTV0``jGgj#`u`(Z#^&nyl`2wfY3jhy$~Dt)5wCxC!|F*PJKD%{aI0yda@e*J}yV` zgywO7nk6euR+KO=!Uvd`7&aJ9M40ohYa}eu-}J!?2DsWh-xkxWkB7($G1TaLdUbUs zH>V8)qrC9QKH(uEYMI2ukT(%T_TB(E)=)8zg3ENNRyZl&iV_<>{_Jv9xmmgiQqZDL z{*~&}HWexq{uTe5>MUw1PO8iPixPY&N1sll<6#uVsFN8(O<{(=IJ3j$LZr2$%@Xt z<0~#?8l$=NdzrCc2^Y%Y?d{09HnA=2PDZ%bN<-@+e$(6DRlya{)HX(Y?&6YdVG-2V z_s-Dkkhxu8et&JD6osTDY}shc%ti6XLq@d*9dO)V8_D%;p10(xkfn)IDp}6SzvX8q zYhsp2D?3!lXLpKoUz*|sj08DWa1>xK$)DD*`qW|<39M{!PW}1Hk^f-3jQ}l z4B+iOFs#lntC~4k?qj?c_PUVe62tCcTU?HV7g}`MBC(lUsNOfzM_@KjTEwvi~39ZpNjWSsFb7hBCz-&?AMyn~6T^Lm{oA1J(!G6>x2WQJ}JSQHiR z0G%N$isetnB>56YN2@NACfn@^Eo?+P2khEPwmMH9IQGfm*meuv-G}fcvBvJ1jtiAX z#u;in>Zq6;jL6lcL37TeQ*FYL)?pf<8AtQ%R?OiYk3$N>+jA44UuGat1^TD96;4nI z&e+{`a54CcLKV%Wy7pOA3KwvAC~wy|Xu`Z3MtNwDc=7Ar^rEq3meFOeoxz#AZZRZY~*esxSmh``pS1Q zahxICPXr2hldW>=TSqu27FKoY`b9?2m>+&hQ-oY{E=NO%iAaD-t1M!7BkrGYk%jp# z@Ba~(6yfFGx{0t8Y{{cyZZOu+3V7H<9eFII&-ybi9Cqm`l$}<``#%JpZwLJYA+N^3DYMpI!<{6f8&KDSNxm%ctOQw8vsmll{)>j z*iNtx~0}tBOM5eS(3WshRpH{QYf)!PW zEzQ_qW&k?`<&y?{A6{{X=l;4Uy`XC zY2WO~8ihc%O>fXzB(uu&^SK=HiJzCjQyhYq-NX^ojw1@UKX&?KFUQ{R)>&Jr+%DaT z3umA&teb|6Q@?EtL_quTs-&I0Xv5CfN)&GOqa7~Dt;49iT+LOg!e4W(Atiz%CVIG& zb{oXU30z?l%we6%W9YIZvbYRP=$=H~nnUf#4T>C~$X04_NksM5+5^F|b)OVnF zScu1PJa-saqIvjMAkxgy*16`D$20=(Kyih%`~_lm^^ zmvlPGQ(Bg-x!0jF4w|xG&z7*x11PW{uc(`J3K=xrIBgE&qy^jUP_9SUr@ld^JGHT2rN_zD}ts%9ogJC2s0@U2uE zDpwXCdgPee$UJA!TKk`!hwoFkyH#-DvilC!Xh78n0p0?XK#NMQbs~=bj8$-=8dQ+9 zG%L%S6mAa$=J&EPQm#X}16(IIK)71Te6-mCY=s@)l}f*eUDK&>>Dt#C5+eraDxs-C z*w&)TQcd||+L8wYftp}3x+!EWIptdq^o?HW7{6d9CJCjX?G>1XWj@?NXxPg#bfdG6 zncM%e0-g$w;!-UaF;3}`{S{OuCt6c|WryEXP?;@9X=8_=DfzO!W)a6W8kG69{*tui zJ0nZ&cBidU!TA&stgpxJ4u@ zh*x)K**D(5F6@xCtTg;V6&14RN?@K4jwrZY0DzbEIQcu+H~ORnN#EX$sODu_(Uvqw zr+9nO5xkQOmljW(e0JHHbk;K-e=#$vYekhC&6?cSa9Qtvqz?O>-D9Rlq*QRgfQ^4# zR9|J)VaO_J9o39QP3CqENm@lkTyQY^Qxp)BGCS`sgbIjMgSJBGp*PxSG-x^{U@0Nk z0A3*ZtE_Zgy*ak6KOHQQ`EWLInM+!-)?{WdL}Q6RDVFO8rjJY9klN0z;3xZ$pEeWl+u~*_xk+hU2-<67t(9E}xA;40tij(92{n=wIZi%R_I! z2C;j!GU!urG({{-kD@X6dE|HghN+8=1FG9mNJs;@R1EhQLQQh9h|W~P>po7?_#Dg7 zD4fh1QeY36XN5(02j}bJ?>x0J*M3LkchWgF@i0zz4_**ec`iDs9FML2&SE&7N6PxB z+Rl&iopZeVc@6;tKZE{88s}9=~B80}0Gn32XQ@vxc_YGMwCqc1PM{(t=SOq5@W28RE`lcGnmN z{SH%AMJNhtae^zUnAbVlpVU%y0nn%!SBEdOU*PMReb0HN_otD*$|&y8v~wggX^%*Z?7X22?IV(Y{7X& z7_#HAt(fb$aI?OA&MqHa#P=c1*t3wEkP$JxL*$5lQhZ)Ly|YYO95z381{4KyHY*-> z@D0G?cr(n`lr$3Q1xNGq?A{iDGLd!NuwlG{&6!0NsWK(hUFj$qiwV(zkx@?i?rY?1 zey;xf8Kt|Ey5c^BG#of^tGvyt>>49o{ypd+n`8a61L+bsg}BO(L?rB5i)8e1SfQ4L z4!=1?u~&73Gey1UG)q>x2?*T&^vGa?i64I;zvLGdm`)iX66pGLG#w0k#4lxG+J3~` zk_b9H1iA3Q583{Vxv0CV^!m6Q<;)WGNvk`tYCiX4Q<*rfqc%A6RbDJ%9(RzM(J2mP zFkxOx&?^!(b*5o!v5|y#*^?Xf;=&W6cj@wEFDOyKI>k`V0Phxn0Bm6Ufl9oWVIN#2 zG+JQ5&u`f|4{HNk@H`y&CQ{~mn>!uAckxvTH>@dvV0({O@1i%`!NC~Uqq4nJ^x z;ReJBkF4)ojohg<0YS(?orFW)aML?*#_iRWa&3bcLrDy6#?2imtr;^}5$P z9}(t%-i??>w=vLs1Gr~9J~Q+$ff~S7Q8JUQB zG%lM4b($z9%8)pF_xOGB*s|{;**0)urQ>&QioX_;7u{%7ODM|aSWGztQ{l=8+qk~C zXdEaXh}%xtn~}EXQ=`+s2oQ&u4erq#3heqkW&d+VGM;QC1;7^fum3wZOJpS}`~kky zh+P^Y)^e1t!d^dys4)88`w#EXp$A7+vPVfmTx}1eTOBpAg5DJ$a3d#C2mG(ZbH?fX zlH(EIKTD26_P1nNUUEJ+WjNST3ASIbvF`DZi9w%J;q8oxHLxzf&iAhdWrzLslu0M3wcb2bwPs$4sW6@_QM}s#8fNT|f@76TLifOCT^es=;A~Hub znbLR7#$xf&Rw8L78YxcOKQ9>MGjq){5b?b$IkpLoSmn8JY?AR$dCVF2Ba5PV1o>7{ zuDdX;UvVnZY}7qsqZ2CT+xxPxICCol^1mW&v4TG}b_<%nuu%~*5zn|TeK2f0bV$hE zy0wUX0JNu-*-G9QS;M@jxhiLR_Iehjvy%z_<2f{cNR{n!E~-6cmUc}K&=q`!>+eWP zd=&TH3LacBrky3+oo($5Z?z?MLhT^5x88NzLETvcvXSu5{?@J(93RhoF`+*me8ZWv z1{hOu6uYQ7;mbxjqEZSGZ&IQ=h_-gw zokek`ylmTJQuQ6c!(0c|jK%)0O(f!AFjp;#^N=c>dy7Z<{q0|hog!%j8|=j3Q^r+! zcSXnb^Ov{-@Y|Et-%KFdrh>oapf_17)Is4Jq8jQsXlZ8qZmSD3^h(bU7{}q0o&;1S z2`~|Dg|JZv=UZgG$p^o+)=rv`76%8NbkS@|SgptyfgIBb8U%-$daY@ijj|g0jV;vB3T^ z(rb<)he#95P&K@DUw0U{cE$SF(>b zV>FZPEqhsGez9k=1}@8f7)yZDL~1a|#(R&cH@J?mMJQt3Kh>S=^V8IDVJ8ez0L*!w zoMmIwfy>;~t(lIxMFe+0?a^J*4elutz&d&Z2}Ej~i{c(ZMULE3=%rRZ$BaSI-A)L$ z&4tT?`>)fZaS0Q=sZ}kgdkNbDowt$Sx$G|;wK^69<8Oq79c(YrGnU|P{;zoJw`S>7$k}yg`z3pY8GOvhQc4B zkMFZ$Sy6j}v6C^5T@f60E}ih8dmCLKVGv$PNrbVvs5R%PY9QZE92Yd@I5{o&tD;FQ z&{HUg@{4zpx9)HHy$}0cn_J>tzwS+SgOvD0z-EfwFH@@s{5qxg+Pav90>B7mteWk$ zKATYXt4>Ild;%4?kp`a^>K=;Wi`6vEFSf~<+x9XV1ay!Cg- z%pf|!5$W_O;Z9EZx{-}a%*((tZTp~B+~|o6LEGdWG{7aerhL&RmGuiXuQ^g=IXfBg z@QXK@N3)Q005VG4h#x)JG`xU1I*POVUHRCs_BK&t^C%4|J}*Wm8$iEkTjI)iwT;+a zS855_om&8}olRlBpSUaDK!-aA!S7tTY(HaK+j7fmSvyJgT%9G!n2E6RkPzZxn(EYI z){!zwhU9;q+Te=^L2_;jsTIijG{Fennm@{YVyF#8zK#hSZN-X*XlU*$KLREBhSyzG z^Dx3h)Ug(MN01C231FLk&SS!7Z9&_YqDZS7*~$;mNj+k55T9hZG|3$cEHj-!I=Ync zn!Ya@3uG7%6IIsl4>mWbEl8TG_g?K?G(_LOdJx($?N-fg$MUaI^hkUnk|>mzmRqS~ z!<$7-Wf+b_vbZWE$LAJtRtp_MlCl1ka-p2N^aSJhb-}1#2B;s}e|vGOTP4r)vFftc@AQr+8 z>8*}^_QU&HkU(7H-S0T3^Vs(ofls9d$C-($b}bRuA3;_z(^$YC7tjON%0Q$n^sPU} zRdQ?8I~SUy2ILTD=iIB*(vT2jV~L7KQxCm*q;LgfMl$Gc>}k-OW%;hx>gq*a(?wQ#jUG2elPnAfSiZ>ofHjcT08C@nwa;2r6Dlr9m|l#i(r~`j zz7_)|u$o$Qo1);8dwv8a1yEciaVc9*^Njqq6Q=6%3qoFTyKzB1#C(7w2#x<(^s1M} zyJz8FoinfqJ+(=ps?TGz%Z;i|=T_bpxg>x)m#)2H^ z{Pv2(cbPdbuxq-aimK3X?$VfA^Id4D(o!^st=BO1k9S+h1SW@Quqq0dh`x)zdE;8H z0Fm-Wx2r?WW~7@Z_DgGL5B%z^o(b-x)DXXu=81610pL@j zv(dTL@26Kh?J9|m5F#|?uifn=N7qd{2QD}ASbC5U)F{<8@1iBLHx15kUdQ8uJAY!w zW_!hXP6msKchy5iU#ceR^Ic!EvS1K#Jz`%(1bvahgbNq*!kTuJYkYZKLSA%ygj~c8 z$Lsh*IYZFb{@SCbS}zFbv61UW1B@e9BoeEpgSXS*X{)(2`3r{~5=&sZ{HB<7mHq?~ z2qxE4fZ|iUI&;@%mPQ1@(T6S?Wl8Ea08vpRvdldT+fI+QJn7Vya@>Cvx0x>eg~S{S zO|1kD8DmOVs8qWg;7#=k=3|4UJGp;-e`jj@g{w2#uY}$M(P!Ek6m{1B1Q^q?Q@Mo& zJInI8(dkjq*>JN~3j^D(k-^=+@Xos_;9+03$zoH_*)t0H9K2{P~;my4}v>lKHs>LGr!H7n6 zMLszqp0Ph$Ydmj&ffsmc1Yn5rVL98z0x+-FJT}oy#2H*kF3%l}Q(d+a;wC#Ny0W_e z>$RSRgRh;AysA%U+w98wrKPkB?5rBCf?s%$9UYtNQ*4y;mkpuN0LqHS?}~8tCul=! zQTqJjQp9>MY6c}N{v4Vdagc5PvOxJc|C%X}ZVdn5}s+=h*yl^jplsr8%>cuT*=w8hGQ4O1A>J zkXQys8e&CuGHM_S0#MDlGY@i&W<6JgC0VT-8KnGduJupoK*+>=+R^OjWH9Fuz|2*) z5dIgXmpWFcO}6`5ydKcEVzbrzyK;_7HsVn%!UV>mlDPnrOoPW8d&jY~b@KMioSqUf zR@v0&$5gV}=lQs%t*}x#o-*--Ni>h*BP9{CgQ4H{IB_cL8PHc{b0Lo}6lX#?MJXb< zR%#-<3vLR5@Z-G)?_GJz?2@~#pE{V)8F zJ8?x@t*zS!wj}S?g5z)3f<7-LNp0d2Q*x0a+Xl*l6cmMHdWPf|24)8?hr>*Ntf#y1 zEPsl%tU$UhIzWFY_<3QZM*jrWxvwD?ZPM3oP9-w7fCwrwaYljTY399*BHiLuL1hp2 z#Y{r0K;OIM25SlAHt-*)BY}d$5GQg6>(a(uS30aSk!a_ROe0Z6{M6TJeKpI3GFHc? zeN!!~>4VA+s=Zr(%81ooeB|d1i0oCQ1f-bW4@a=_d;rX|ojL3le<+2xB8~W*30R*s z44E*U{HPqvb6^8#>s?6tG|5DBLR-4^J}-eW%PlCW4+he>6hEgRsyfkBbD6I}%lX4J z=23EQGZ}V&))t}foRGPEY=1YvFh*n`IM@qr9}Hv2{P3fnvk_kvD$(-0l?T~mS{D2t zP#(7O5>S7;lOC=xF1>h)G(ckM;49A0aJo)SsdH2Rseazm&LSx}85(zTD5jMbg9Q@W zyq7SM+rgOP0&*lnt0{7h0>V7ID2=9CbqzZ(PW_BSziy6kux69)HvQGMc)&ZDGuVoK zvk(WmwT$V037i-8SgbcHSN$L%iaqyL4XZ8J42UROJ>m0!I&9%t6dNRx?yL^BJQ$Y_n_f0Nqp4ju*Q_b3OYPas zUqXiovOFkEaij~&I@ZSN7baYXsN3S(CuVYI7?$ z0bZ^uUxG5WeCvP|_d58ZgwYMn5LFEEb@7=xsgck=t#hsze}_dA>rc>&X_r(EzA(NaT_uNACfB~hjcy|bNWNIr0_^C9RNxdA&vEU5ktfjCq)>>@xy35N zi^Ui#Y*wY5get!&4SFDu?RFwdx1r3g0GHd8b*+X&(lLEq#hI?N**8*}2->=KwcSPI zRd)GFnmFZ(7w_@8YM@VF2q{8@nmyJ&{wfRvjJ2)X~qAZnr8eTBKVX55PoRk|6A5a0?N|t1&Rzrz{>Rh75|?P{6~MU z#mb&4m=40xV(tyf2$Y(u1di5H?E~5m1o)f(D082Qc?F<9@4-HLl&Qi^(zf~LJ?HQG z8IrbxrHjojgAqtX($*uh7rWj0`JDgOOAJ>Bs)CcLiUOLnzWn9G&F!N`a{CN~g43G~ zrEh5h=?LVf-P;fQsJaZlEA?wP!yP!P@+$6ILjfKA7f9=x(9V7CXAhC;ufVE;CIHCj zZ0|m;F$jY?rzZAi!~L+T9V3KaAGk3Ds0L@JN!BlLA1Qmw8U(tjpTf$h-JEyV-_$U1 zb6R?;#Xqt?Rt2Bjrr-z$2)bNKUJosZm6k?(=0E6uBL2%MDerbrA3e^}RX-UR*5-D3 zc6RqEeqWmcuFG~n7=C^0(2sVeAb<)kj-I9le^NZ@O98;suMaE@?)5G(eRg7{k{(aL zt;;^CS3B^P8T>;~Pij2(HcWvZhZSpm73zf^5ssfWL70mky8U-EOsRz*>9xLo^xq#X z`0FhGE6M-1+XwD2??hT1>Xjuhhj)C9h4|(Dml@OV;Ab;m zo95^GD;EJALme=M^eMfu22ypk%?AByZsP6*-P)@PZU@>7{GFMG*{2!uA94K={im7H zPq041K@XxfSz-?&jnO+s0F22qMnLxDk5FyWkRD{SC%0o-ZwYbW(!aR=8>UZ{4M4a$ z{!9<5we}VK!(;KE)!x4q=XbC^bx9AR_0ea@BtV}!^*`ai?W#7v`+szqX91P;D9jsx z5j&VSKo2b_Se4G^nL3d3r2!w)qW*Si0V zY$%{Bx9=wJ$ADPrRtg5x5eO(A{iM>L=i3y@#XopQ#E~pQpI;Cfdqr$q*-g5I=mS72 zEU0;iAhGVNS)u4fAv-L(;lK5E`uW)REfyL2S$bL)Yh%2BIT4e%EnBa30MQg_Y_Vd4 zGq2V2=kd5by@Hrce66f$uV4LXbGxyjdw_=1(x6D^6%9E|R;DCl8WrFQ&pKxebM)7b zN)jCzEJ}EzUw`?pidodEdD@ag&kev-5E8C&;$)dNMje3@GM$mW9q~n=HMe^*;0)&J zz_e3v%=tB|LbHGPr6O+~^jFyVrz<#gU{d{bVSO&MjB4ami_{egPJ~Qyb~PfiTxJ+} zuIQcHM^Wh>dF!Q0>|UgZ0-8R2o5;CTA>-s#p48VMFlIW8aP_U>o04&?U?ad6yA4XY z$C6=7H=JbTGt7$d9Qbyhd|le-BKp^W-f{>pn?vXkK%#|K?AojIS;5QoZiE(!D?AI%m&9&er)VR+F~ zLfs5qz;Q+v!th%z&m}<$hA$NEf`}eCLVmH?s^#(vCH;cI6uizjLAC01o37 z=q&EB1?U@SlhyM4>12IGmQqlL^XqPu-OnzD8fdc0$Ub?EXsRs6stEubYG#DzqU~NF z^N*{>Xj53;h+|xdgc})(Y7*6ly2IQ|XACm5CBKr*-Ev&)P>EOZm^dH?#L^cwF`@VX zyOsp*{+h0SO^SxLZ4cAga9Vuw{>Z%CR&J4xFtQ86nlX_slz&RLU~ik9as1oyC|}R+ zY;}~}wRGBZ|9B|SlOG^Qx4)$qv|bW@bIW)$#MP)13v3Z2DO`_7XduqSv_wBMN=GNY zr>;2SLM%Tcfv!e=OY=oIK)Jh*eg5GW(jX+yirwohBdUpJr8UM@g!tK5bNk|07pA=pX(}uqqyBwq?#%t< z?W z{fPuKLMQo-%MXr4c-d~C(VIR07M%y1FP z9yOavzlqbzfxwM8hCjT6pq2)n5&Bq3`n_CZu{ZQ;mI0vq$6gI7EnmD5mJWL)KP{yO z0iQwrEJ}1K7`~H`U$5Y!h=qTAg9$A$M~p8yDF0=lojuFO~P+1NH19?pRVFTJ+FImeHn?k_+&;>)Ocn4kM|;vi31c2>pS z3TS1o(*b}|2G5u=^3sHGFiOQH1Uf+249rxwn^ zKh!b+(_~?odP#26l8AU(Jq1GwVy7{r$Ou6ZK)|Q$hDyd#hzf5q`{Z&v7ccOn8y3gBiZgyRTa73-fvBle!{;CvmGeBpGM>b)LPsJ# zxD@xYHG^`4da&F0l`Ft(6ImkgFv5tcscwaYEj-R==Moga(3-Ce^-Nm2z{4e;MFkkMhEe$W3qJMNwezbO%lhENWO`F~C7Mxn|QQ zQ~QvwTMh1gJ}byO&xs6=5Rhme^KY#9F9Wfc_ltZ#T@n&meJ=y0GtZ?0pMQvmEXW66 zqW{&~tBe2b^6>)rgwLFwJpss^o-l|sRqED@SSjkCUe>O)2uSr0Yx-1RlRgPz6F=!G><^SRe%Kw z!3cJ_Kr8RYj7Y6EHh9@eud@F6SY*#jA&`VRNnsc-N=oosX_SWDI(ps*CcThEi(G}O zvaTPG3-hN3fEA~$tQJT(rIk<_;dTwg-pqg877UjV35QcvNb*;cmJH^FN%_-4QR69Gg&$;FvBX&QjNE{2+42v&x$Z>n(Yd;W#l^t1Onc?=p8#CJu&a5X6Y?YAi&RU7 zGn-t8F>VQ3OoLTYtRCBQIYNAU_+Gw<&1Fe`Db?Dh=qBq*zGUBs5+MlKkFVbQlPmA{ zK=Neic8THq)SdyXsU&_^=FyUPY!4I2R6(ZQ32y4`27<~HUIvwD9A@eI|#gp?tA&tV#}>V@q@-UyR{C>*2f};to&o( zxxy19O@!il&(Bdx#VwPs?8$ z+$lZAPSa|pq~;CZ(BG{4Gk6+bl*Lar>rm1}{Tt@yniT-fAJU}Zt&_aXl{lM-iIizJ zK+HPY%&h;>^{+Ds&sF_Y_H3=(X7)nyNMxC>q;B}qbrK{7I##)t>KRCPzpfRcg|~9o z`8f;(@BGa)D?-yIQHkQN8;HlKTH-E0W`Hc}QgucorwWjtTCN5w>c4(Fqq}HFm*}qF ziDy?y{Q+#{H?L3-(5|bwNiqtG5k~TYKdLpI`!K~}8p}gg%FP;fC$F^KW3@1zpyMvs zrL-TzWnVrpYc}Tv8#VQYIKQB^KHUPl$wj?Q0A>F%J=rab4wT8QD@j z1XR~KfyjLG`;^wvST6?n=6qCG9*(sZm(1RpdTwx`Z?KC>5f~=kc+7Wh5uaw( zCy2RYGwhDavP!8&JEwuN#s7Ujqvz|ci~;O<$;A|myC?Vx*D=%=HFTFeJmG=(Vjo_@ z>aW$$=^ysv4YGCGpSEO=vnmI?n-OY1F3-? zu{jDodZvv=CDc-c$T>$lZR!ZHZk&_DLGHiCP34fW>+<##do_q8#rp7`jUP57)BzB# zlar*%P6h$e4z@l8brQA&a~VEy@id_yVpIiM2{l z*e;z+?$!00W1kG`!atlToLjdGIRpfk`$VLKPy};TW9C^am%Dtwh7Xk5|ubsvF?yGd`o5Qq^yTzoo<82gV$tZ~PAcHD4m_~Es zJh$hY0oWf|e9l{`ypM7$Fn;uY^_Qgb-;~|aMIr%#5EqFaDPgV!Ue?Rnd;EJ5Awc!>#h*a27@4fPG&q+Tv}tH=43>8~1oEWD=7+UPbjEu8L*Iak zdy8mZtM!cQKK~3M$RA|C|uiY1CC<4tH@u36NQ^s(2t2`xL67j zIfO&K@G#xUQSJjY*2>3TI`=_gsri$~Xl;ps^y{@OFM>`mrRtE@)wnhAW z?IAfdvB{_mN`Ot)t}(LXf;6WtA4zW}flq8WZO2<8QXhurhM3H=b8zA?#a!-C1~1B^+_{;>bwBrY z2`a@e>M+p*s>e7t%C5Vwrk5?Ll@zavITg4rUkInsF{85x=gX_D)(f^#Ev<^5!iUU| z;F)-`xhP*ESx#PD&>z03rJ9kk+?R_AgqaZ73uFS8u4YU$f#bK*uS4z+;WhRyDiy!e zrkaU7p$^VQkI zan<|dUmCp2LDg6*eZHYsD2Kd9 zGL7T@^b}d?9a5X)4E7mByP-+NympN*VdW8#q||q<&P856-1%Q)7UWY4I5z#z%2@qg z7YRW(&LvH8+cbz28%IlshBLv&{A_zwcI-t!Kp!6cU1g&2p*y3Hc2z1*#&FiMcQbnh zW^~@y?Uyd}u{R=fc*Dy^%h_gfgkXo2PAp<8IBJm4x`y@|Se+Zb08xH@s<~6Dx*&PL zXqgHqyaJfsM7QYnXV&Yn+hKwB&dR)mZx8vg%oehYBZM- z0(Ic~|7aOUn|XI@zt)|Zeymfsj}Z@<1mzN1fw&MoEa}r>)2*b+@3IX?ytIiC~mg)4LdYCnnoYh?{sFE|Vd@H<4 z;s$(vKTgggtR3yGME4eS(J5-i9bv5`fz4yWj=mSh-Kn+U3v5CcbIN3Isu?DZ$bjzW zj1LxRFmjO&gnM)hs2h$sLRd%*=U2Zk3sKCItH>oY6VN_{5jdy>il*)C<`x6X{T)$7r!BLR^vH;|5O2u_K5 zq@ffU7d#ZPqp8KpX6b049pz7v5v`mdY3FPa(Ks(;#_jB&ivamGhvq6HT9 zL@&->-6ygR$n{XQOeM9x^Bs71zdn;a3u;nSLY8xZ&)6L76jo&5;N~S#d)T5$k&@y! zI9dPDnp4e@9TLH4?)LI9+qcQ^9wq3J7JfJ++@Z$!hK_`_} z?S*h>Y#0ocmt&%4oq|l&B6ca`t@6gwK4EMSr)tR~xnD52osJ-YfXTGmgjS zLx<+c5%(ORu^g`cu3`j4^}J~jx@>l!ruxU#I}TNmd}@B-nF=&7D$JTc3mAhS>``x#llRn)%zEYU!H0T@CY zM1LpQLj@EpEOyBNbT->znV7WdMCQAcS=Eow4jQf=!+Xl#f?-YFfLwKoofQ*>UUQN0 z2Y%!u>eThl5f<);zc?UKyN-fE2B!c~o*+thB;gR6V;+`l0GFGYi znyH?J9Htp?8kc7u)X{w)S@oD~mrz)#>j5~IDxQJ%j(C;hhUHkbfLak0#gHcbVM62ngvz-)< zEm-ED_|Zo&L&NKu+qPq5`eBUT@ciViRiP{}LW;u|2r~Exwl5kSKN@RnJ6y!1r~>#g z?8XTahAle8tML`pyD>*@uaBe4%cfHM#GyE^5{tSNPCX&TrVIMkRtN35B2=q0r+}e# zPW(a%#3UbuyC^J)n!Z4N-b3TVH#jBh(5V-Iq!D-LEqhADqE!Zm;p8~mDDR)Z8V}$% z`8&MLU!}%x-GE4oedzkv?bYJ(wH>%*Ble?BqXGQyJK@=tKut*xh z8z8J+yG}&X-2Wkaw&})8c!aXm_ujnsHTb1`0o#9pV+4BbfR#m$-CG1w?_QBb{CW27 zx#G5w_}RWj|9nr%Kk`2NE3}4me3_f^kY0Z>&n}|h?%%-N`A;z#=WOSr;b|Z_fJE74 zjQ*R*RP73WbLl=tsG(od9t|!^*+tQTs-R{B;W`$ZG8Ei5jj9nwG%+nLKX#Jg8X0W+ zCHk9hZp6y8tC5@=8I-9ArV_E>brM`ZbrEKsv!&yqyXuq)_kVQ(O;f3$^wr(q1W1gb zwXS?gh)fCXy{JEELf_gp^Tq+Ry!#gahUw!EhNllyxf~eZVhzKcsPvPWA34?3V5+!* zcNzR@qqiomR-lJwm9@yY;2vBU582B4%{i*G1ALn8$%iw_GEw`vZd%A~g zzeNMA9}|9~_q2^i){!;5`y7`GSDa3}4U3aWBcjprvPQDyQ-`~uF1eDQ^VwK$=4B&j zz~svFs&r;#1#654R~4i{K!29HzlR;7#DGD_Tm5UZiOkFdQBN`Q3LUS22Bjd@NLhV18Vd5F=C zd-#vD|C(eo%1w87j%dg8b38i!dXt0%aZlvD;%uk4Yr1Jz?;c2AHGAX}a^4Xe$4Krh zT1+F)p1XCox}Wnir~K1_A8%zp7sG}s1XrYm)lU)%&6R89BhbFlVW zbK*H;vr#cH7XvWGy4pW3n1u+5k$Fy0iJwu%bbhqboLsYP5o^`uB#h&2q$P(X8b~5W z+z)>gDD|!c4y`;IkB9c>JPz^OOZi{&%*G3OX-s`Ux>prHM&%rxH?vg!YJeAqy#V$#W7J3z~NoBA`aDFfsgqNkL@Z4gL=cQvxEpCTXQ zaDdKgG{#(8LI{^UcpI-xLxcG4ctzk@ zA7zA?>jv85ut6Tbgw6i>8Qx+K4VGT7tHoJNxBN0oGD(^k-sv<$*sRWXUkM!|u z@`628!@Y^xdS;YG6LJ<~{&&SfCN9)stB$q1*>i*Itz=Ky=d!>GNI1nvS*haM$p z#O8*o_{+YERA;003nN6m_7fZ_>^^6w0?3YfeL${tE~{@Wwm~=Dd+vaSPf}5~3$2%J zgBn)-h#H{DpS_k1p^A0fH|RJH``efC2>9*Sns`ql>0zSj&X>FC!88tS32?&CsN_#O z%8O|1x4)cZpmm%Q$<&x4tQF&Qb~P|=5no5Jo#Y+*xsRrZrEuiiG~v^s(Iuw}NmB&& z0R;FR0mmsL(0J5twaguxF>283siNuYYRu$x2NXsH;!g`pBpvrM%_R{i--hLt!O;|g zb=RO$vO7SKM-md+7;`qcDnFf*BCqpmaIkIP)P%SFYbKD%+_uIQk=;K^;Ecj&G}JCs7olWm`e73;l@>4zfTHTT9Vbc`QmI6d^fee6MKXyVd+y3}*o?6=YYy zyL??n%gW!v-^*y{yVKU_Cx#fH@Xi}S^{t?W$W$Apel3jp#|wjFlGng%2a@8S-$t$C zid$7qy}*A{G`zTn^vRA<9fageH_KH&TH^Ux(N^%b>{!N9-5!qz>1lw)9&)9A&0tSq zH5W!z77F|UJGv5iX)M_hr#uq#lQ6FmG6w!C-;~Fx9^A%BUFOQIXeRBVT9uKle-`gF z@Eu)g)l|^D{FQ{=H4rUN1Y#p_=Zv8v%gw=)>zJMW1{ALJR>b%lg@>mNT0?Wf7#-Z7 z6|zTcX3WYSoglPSHsD+pJigRP-0w{0t*O3gg()(5-p(Y(K)l!JK1Yrh($?HMbr49H zs0X~}3A2y{tZ_mnJUii<74u=8%=>OQmX}eYvi;U~>ZxHdYtWn{1HRoEW&76y3;lS!bTl;eO1ZU8wt{-PB;3qveW~lXIzJr<8UD(IkxFshnZJ zf6F#k9*6B4(;M(WZ&bPP2fHeno^*LL{+$a3{pTIQDcMz=uTk%?U83YF%$)UY&hSR- zinVMEY%H->09L^75g=NZc}XW4cG>(8{jL-}?6OcnQALr;lnX#Ehxavh9j*z-v+}Y4&Bywy^nR2#e4SDRFo8>j|Ne={7h?0V|Shr3WtXl70za9lWX~ zuJMksDd5u5j9g|}r%4m93j*Rwpk6r50g+ELnKG?OwH72q@Em6+-__F9j+OeO>qQ<8a2)@LdBCZM`EvXU8E|y=iCiuFATi0wyd^BWn zv2XH>7mA2t|6?n5%vttLE!SkBT z<~I-0-ewT=mt$(xU?9M}!M4xKOMyfQt+`jeoO{13&{fdc7=xHIhUn`Sa^RdUBpO!Pz>duX<-8KCH z9-5u)ifhMoVcn*CFYjmQ%66GW?9B{Oi1mx3;MsZf=iEl!7Kyd;oy8t3r+2;6RM zQNNrt)VP=fT2Z%bU^UaE`J%Gtz*jN!g*At6_grHj#_1_SgRIC>L!KZFXoVs#IcCAm z>lk~R+#KZQr)$&u_gL*^lEbuXTZc*egPmlI+`>@IuUJbhNWFhJd=e>iNieS~RC8a> z6lM?fXGA=?JU2eL8~;!BsGuZw#x4R54{g?pt}$K+8>+ zL0cM;K$$x`B)Mb`MS=AI=))u9K8a^8j-10f3>VJ&5`v!2DDBi0qa0V_x`UQYNqfHE zmD<1Xqo2>!bmsfnoRsAgR}C5U7LLRFyL@oyTfO!d@hhZsy-qW@FSKTz3PMe&#b;c& zdgG?eEVE0i*TO$o$|1o>;VRzv=kBL*Veh!q%ZE&a+-N{$&n-KFg7auOmjwMMjRy6h z+TEB%ws^$cB&_}`i4?Y9Bac9vYAu15GS=T$USN13+W$*&zbcZEhZBL}L09U2>^)(! zoyVm}oYGQ8hO}Z&Tt;`PR9YL4Gdyf1(p|bTm~fM;9cmXEg|-c^1y#}t*=VQPFZ7$+ zaeUxDaH+_I$;b`lF|!#yO0MBBhl?2rxbUVb92r_KT&bo5Ey|X)OCikC3lIP6^7iD1;0scK*4;P zN_NRXW%HgL>uNJxnM{Qh4r8Qt7NpmIq)M2U(rnv*u8ChS(R` zB)&Ww)i+?Ls~~fSuE~!?g_&3!w{^>C;;VY{h36Yrm=8^tKxov?Ow}YReS4#y3#e3& zTHGfGC;J{fRl~>aI}VOS8k80kLTQpsda2RKcez{si9oJ)1|i++E5;byFO$obTLFT4 z7LqS97#%f4n1-gv(6YuIG`Y90oOJEQg$vvksArL9!jM4EsMj4k8;*tNfn^5+<_Aco% z!utUGFq;f#R^ir|Cry}un?^v(Xo3F1@``)R2DefWgM}{C_QgD+W4PQs#@}DmbqU7c ze8~Mlk!{SCw+#E3>F5x~Q?km|-=eADk|f2*xbO;ofuXAHpO+?+Yu);dyRyRYJ8mG& zWt9@xJvHtRZ!0>=ne8isehl2PJpUUki9`ipI}88ePv9xgx9Q!w-c~VCWH#zFa>TJS zbw*Q=qdsf8^7kq^5XCH(s8C&G3;*;)5mC6=88Dn}(H?ZX_44{4guqu1Ren8 zEJ_P`>1oFKGzEK6kZCOmE|Pr7p5##d!dcT{-vbfKtne9AVqFZIGT98-Agh1iF^d|_ zbEEvOR|46;kA4|BnV-;x^(bR6q*^&>epC7l&cER5?_KSfsy*naFY}UIVlEoNO8yBOPyzV?H*tQIqGBm7wj`9SWh?!m*dq__XI*7J?^-YCG-G{$o zSNXizV&I0DS7GW52BJS#f4Y}wpfft=h@V|1$%GsgR}Kh^pB089x`zlIPx z;GMuIwYMCGv#O!%JgNOj&Op*LQ?U{mj#Z2*?=bG5Czncrb7e~TUiX3RQDs38s9@r3 z<(M%gqfFfCs>O>T(OWtt?WM`&rlX?zlBw!(&RO_n1KK81kri_ebUUfnhK8E;;Ny3O z?z8iTg!ul`xy`w$i4e}@t1SZQ#R_wb6qkD5UJm=)`rT<5##{i0JKVuXGMLR`6&Yrd7= z@ev+_V&q$Fai-qGGO`PZRh>1dtp##iQVQB}Fg39LQgd-8AtniuB=L9KD(jfK=&XOz zY?zhK9C-{Rib(jeuzd%@5Hm-xops{SCZ<`KMes zAzkC$!aFh2lgb1@R=4i-2#> zRc4ybZemYp4k-OZ&9x=3&b?}lw0#|frKN|+{Q&)KCs9%VqYt-M3{HD#rV5(ibwpne zZwzDMM_6R_P^ULF>kL5>uU(A0v;lY9{4X&1CAj3_twN;<9$^8^cgH+ zw7{2ukE$Y#jf~ycOc<=z@{04HOG%XPo=g)gk|D3vRaMhTg6Ugi*QCWh&_inkWHhbG zcN}C4Miqg-dVnT;Zw*CJSQ#P*UGwd#9ug(Fkghy{rBOAZXQZ21LRZ;U2p91zUr{4o z*rinD7px)%L(SxOHn)S(;j|J^yp92fc$$)EeR>#DhLxD@o>1f8RQkz+dLx|ZRl&72 zkw_1ghI9fC*so=UVnB35QaSYYru=mjoMpv+PD0PMq%M9bEe+p-S;N!MTsn!i7N3V2bPHjpZv^6~|$L#y0-^mJ4OGPC5 zEaXkfw@phZyl_6Y`AonGH};~VoQ}59aQ9(CR*m)fdx5haRxY-sB4lxdct9~bFpsL2 z&_P|>P>$JusT(7rFM!E?C+o^x%A$nO>t_>SJRn*<`XgVCOXf2djSacBR8D$qZY8#x z;lk^VvxrNCFMx6rUrzn<9jW#7ZI1TtmEm4>cj}uTg&obh9usmTJqkCeHL z{ritS2)zUvX-m8=cNAE2h7@;&Xv3#%!idD|#_CW(KEH#9y>=1AB4F0V*Y_gZE$$OQ zp-Mcjz^wh4xCK?FnAqlbO{6D$08urMcow+PL<-x+KB>7xCsgKGVNWgVdt;Xy!GCP6 zwp21X)>}f?$E}mOh^eekuK94PfgV|nX`CD6`fl4vP_%Pw78pq4kg6M=I?*}hq%ILb zaBMt@NP7t*EL5WHj`kzg_{FkLzhM{n9jZn6eZ=0Y-Q%pMpV;mU!(U1!FpmBW5P=j2Wu)zu^X zxUGj5x?-4-X-)z|NlYLl|ElAqgac^`t~$yu>C9jBhdv8d0NY0R1)ZBgT~KdK_*Hz{ z{_~2QHYUd|iyY1lm7;$2>B5dDyX`E2EaMwlkv+xL@%sa>5F@ajplAu8Kt|6xN~YgT z;?k`qYn}%oZaKl@Jofis|LLc*$wib1MCzB#XX+G+Rw3OLcF0J(KL|R!peY_R{QWuD zne;%n78I(O<7k zlVBC!E$!gF(CA7|mi`5Z-#59@+wLvHsCQr@dot@+`z{grNQ*}Zg3X0IOw_6%*4AyI zxNq}{yc=7ge%*R&y?h#)v?BgBx9VL}x|9D~C-UT%(4~J~a~|<7NPGg@g$o18Ef{n; z#3GK{79_4$p^-`$@&9!3Wljx1?N=vC%RO~7N?Gj*N+?9Sw=JMa?oKa*~!*#cgjBX@ngo8hL6gpT} z(rFv?guCd-G$J3q5mNee_etSq4{$_X(=fKvDt>~Gd@P?#^)*whH<7{}v3p?_dib4= zwfNvGS6}~ycMAgGyQuQ$I_-S*d}((4);!i_?VETrddhkdS#nfNHh!QvYGGHNP#;Wm z3-P`Wmy_4IQXac2pEz2Bz`H0Zj1I#?`LU!P7DW_4SKbbmj5pD zlQ-n2@Z8}yI54iLM3KLHcasRN`Rvu2d;l+kZ-1d){tkltgp2Ra32H9x&f%K>3rd9- zB>i7C*|aAPaKy9-25|WQ@d~r2{cZ=R#$je+X8Nx>>;Edps;P)ei%X>aZ3o9jW&Ka1 z_J3P~|Jk7gIUvx|1UkTJA^&@2t3wC)6ev3D|20YdXYW?UE^s%{G;9fQgtRJUNa(bU z-{3S!0qQh>nz@SdDF!+^%P{)h>8|0J?orEB&Q2_aZK<5WKGde38JQOQlek^ z(19cvXxL(C=tWdg$O@2_B)^0FfBqc*#Tw!+h`-G#u>JnHJn@-ifBkvcxWaW@<9cXH zZ>s{0RzhnrXi}%@V3CdJFgrO+5C-93L8qkmMFd9%)Du$-_zyz5f@HU_BN91mfMi4Z z51p48xw76!cJj-hC)vj_3-}*rHPa=2r?;Q;~tOb{m)bUE%`e=+pGK*u8BAp|Ab+t-9C&+__=zTP5g{%@ zglRw=01?L4tb1Df9w1e6oRNZ}^~h|}&M7HiO0Xf23? zbsz{$Qiu)#Ek^GwG31Chwl1gx$S`UydXf+%wga5txPCMZ-QnzNJf+SXZ3#@JCEj%p zpltz)#WF~;&}({@#Z1uauZK4pCh`sYCiBA-PW)HE))o^~?V!FDoz8TMC`k}&{P-7# z#wFZ`XJ7ZO1ByDzIj(=ub)!Ub3ZFLQUoH}ogfRpK#U)6UCbr$wU588%f?DJU_k8+q zcYFR6kp7SuQA{;#bA07jN>u#|(w<7YA8hp^p17h{o}x?o*W9vi zvvDpZZ(Ux+CTtQ^mRM)^DZhL+Y#eJw6L@G)yYHhvOfqC~o_)#Wxqr3KqXtxb$GlPA zg3_uI#u!7I;5nBP)_X842#SF-1!P*)yA+-E<0}+c9=ff#z?ss^@a@=x6fMxeSfr2`60a>Z$v%qmqQevXTi4Y4L)%+5&X01woG?P zktr=jC*2bhZ}Um{3nE09tFtX(mv+OH)UFYElFyEFeIIKj!lsYBk%sJ;22#B%12y-Y0m%!pF@_2wwqn*2emNzs7T#m3#yy;Ks$* z(zDa@TYVVxwxe0UfNX!>09XzEanYt*Haj0$^X{aC{O>pgCzO|kdiZCs0q_pwN=)5McuvGu!O{rArNBqRC zX=uY;P^x;<_TIbN9QWpjF|;sH^jqjdH4S?4Eq^~Ml-fIr+^R6?FM#BdHAcH~Ziks9 zIm_#C7|<4F=Alc`ul~DX+y1s>Ex|x{-DaRHR)qQDMo;$^t90khPC1LPi8XGMa=O$0 z^pA~~yR=$0c)ykjHC5?bQ*NhkY1c)E#B<43yqn#PP2dDLp)s0XjK}Srj?VEtUYz6U z?{nC|(8feIQ~V)Qgq~Wqc>q{5JASp%^#stz3Wz<;`wLOR%v>^>^^C{`D12r{ePIC z<8;TGA-B@u;f+hIdr45IVLVU7&SiKk6OQCvoQ6xb>$J<*3?QAqUmPQzu%VhDm7D&k z4Ua`g2kQv2%GE}r_3c0<8xriqa%08&nX`}RxBi9jTWv1#k2Vv~yAQ4vanE&oDoUl; zX>``&zb%rKr6$!+RX;Jfos=vpUR9$T%5^`!xeRUe`}mghFL&UIG4N*@Kg!$}$kd;& zJ&)_pSO0*dI0WEgOHy6(q~EK{!e3kL0M z;s!L{vrSx6N6T`vF9vCD%kEN-LIkQ3g~OIS@MHe{Wu86nLpEq3;WvTP=W4}43UuH3 zc^vluc5Vnd+a%9K{g$9vfvs2QEIdc%p_QB4c0uYz2f*?@zGoyi5Nl0?PIxJ)!`gbG zkh3v~uM!W>Th1EmHhgV!g_pO1kos>Iw0Zow@*bytO6kGy6%-udmeKC{GbLORG(g18D*Mzm8H1wFD^m*>mcI zN2YTVyMc+vBn66vKWDAic%G?qJ0HquUe0!9tUvS4yy?l=P;;ov%}E|7ryl+RO*9`x z9(VHBTXWI>7^7vWf1e^uu3WX;?dZ5Nx=Ja7$3~}q9zcfbLRtV2A=mM^DCVkPyDmc% z^Iu?!ZNprwb0v6)m}2DjwVaOq=ycwi=I8_=7y%@ut4-fOQS0M*F-O<2>LSA==9L$Z zDCR1oov`ee)kn^pQDa{(wKh)NOug`Cdfz9p0j-> z34!S!78V?{Nblw0cCOuUWQYxBS3-a@D$C3M6p=Ts%})@(t%%*cPvHf6B?W7T{D4p; zCtz(oex!U0a|5~LvqwD!={7bcrJP-2w-Q^q*y~zNwKC!ti%(3|Hw2qSZh$idON<^z zU)y&@Ly|V#hV;8G0_AgWno}7_&&0|Z>WtHf743@dn?nE zJ&z7ooN&)CM_A)L40azSXo-&nwd*bI(?%G4~wX#%EvJug2*HU+z zjd(Bk;vnZRk&29kR4wuy9CMslkHukJCSbTdu`b_uar-eNNq1_gw)ztC%qHFPts0Gg zXBG9ZLrtPiQh`-OAtl~_u{^CadtXnwbNcE6Gq-sCv?wISgrHX2d5v01Cs>+|AMmw! zzcpFIo_veP%9Y+}n|n61ns0yKs{V9^bDT3ILA|$JT5r>LuFNjjX3K0f zum4M8gTYXs&ek5FNYB*AK`V}q+2qx7P(cK2TR$fLIyvsn_HMr*%- zVBbOGk&}n({-kOBv$C;$c_*_=5`bEHJ(gd;a77-|mXFS5;58?&lF*8mWXu#_IS37v z*VM>X>b0YHvA^Cbev_VmdBUcbnpg60z3ZYfLT5!^o1PtmlpY3w9?|R+4th0gej#Pjbo*!3@U5 znI>5B4KIy)3>^MH`T4)uG5;$+D=LVn$tk7Djr}J-|986n|I*Zd`Pp$E0yV9tj5gDVy!%|#eI;MgXg=oW}V z1{qE=iD8q8}No6pPd5MTMrzP-IX2{G|I0q2Y;g7zjVGJuW1~7;olY~F7q_$(Xb$!)dP6? zh(L%HVGMr__UtLhBa|@?_93MKQ{dKoHdRS%|M2%E10+OX2nZ`810|sWlF)#kB98)O zqzFi!H-sJBARx$L0t#qEV6WeX{t0n`9aa4kLXV~K$M0P%VDH~dK}qa@!jlxFkMCV5 zLLUJ}>V&sYdZ%6=0Vp8I2ZSD`1NYy%8g?K5eS7y-oAIuKfcHO_5P}; zfYt|yeoDxoyrhLw{nSEvIRJpvjJ|vVJtTTIe=-FzEgi87_r)!^h~Qqu9-y-_>CxUT zSPx$edJxk{o}D?gF73OkWEBkXuEOVC7BA78#KtAiRLfOGqp9cNE0${p{^~c2*556S zFLnt=-|=dtTq-iyr|1-0E=InS)Dt1G%K1nM%N;O@hMH*m?s_f`4(MX%RIAvXt{z6L zM_pY*v{JVFO?h#krkvJ9N|`g;ilKCWa=UduFS6AEc7eQO0oJGJ8M0zQSJL6H<2Ewa zW1$ozxXcObLk2l_QBOvJ<*r_&hIl)}tIR*3=?P-M$YmBEFZ-C|zyY`SqMe^mA^Ep4up&kc7Lloud850Be} z23M9@oWxBIS7>)9(W`{YCc2_Rk`|`()c%nTjJD7@g8Yz20TdPCy=O$4r`d=V2PIcH z(XHxAd3$S^Tl6Y3DvB4&`A$UzB-*piqRds7YgPc`XT@TM9s+E|wbU#6f&oU%kVP}-E#g13_VIzxzcc>PqBQ?wEfw<` zn5IODk&7f`WmCAMv5wqbz~Qjmzp=>+X7R|U>_#=ktTx(=)RGtSV28ROINn%Dv(ly0 z%J-oFWD^_iR~w+YcRDksu`vp@+;azYA@H{cK;mt!AFO21&uOp z7+?Egx%es+@My`9=S>!_sJ&qnKbrOdwP8CV9pCwwGF7OzQdT{Q3~6woJ(QQeL^ibb zUrbXH2u{`DQiV1*A{y)3+_FR4DnFuPuzP}NW;Z1`_3S6xI6^rXEf?SfcC5XopHtc{ zgB}!aw58MRcA052o^po7_G`11I!ZxG(LQ+DeYSz#IZgMR+ zH75}7K=02|`g07?csuir1i%8R<@j3LaCt8k>DTM+l z4_5nWjh|3{gr`<{s`#{?`Q4pTIZwyHJY$R($QhXTa;xq}mFb)nw|&ov=Z=eNP2^CQ zN1)wHJn-03paY|$-n1qGHT`M>Ja#R!ZrX3j_e49Jy#q${#ScHwr@MLgH^9lIl12`3 zS{ZzaB=ZHZ|Ljo1tt3p?)3|RO$BJq$v_ujl-O&DFpMJRZYyN}Met2{1@q0`C?^CN+ z7u3Q;t-QBRT;9BPd_`u`q}oqvL5MZtXv`p@h!It5J7=4b33+|QXMDmE;DzVfGzrPq zH-T&W-dUNiJOgZ47n`Vu zUHOF}blS5AWC0jorDu1txui&`Z>*Tc7_{X}NqIa>DKob%J;hsA39(;}-flOIGIC_^ zCFCy-JKmjjV(#nZyE$KQz(w!{GQl&>yryQH%Z?xZ-r*d4xZnZK8|$r!P^!WYL$(@e zj`GLG$c4shuhFonTqj7W|@jA0NKtz0!R+neM%4L?_ zOno3&ZUqTjNb5z~hMrQ1W;3I#Ii}q)fw}XWZuCBo!>l$%fg*l+T`r_;9`C*PUw@<; z0j`|1@K57VZcH}?=`3`70v>+gjTzqlvokhfY5@8g+=VwaQ#S*>LY1acX-@5)@;)KK zkcnd8WTo9Ogx+=ofDL*^zp%Lz31Dlp|5W8EU%#j=W%8*?>Ub{agAPVLix7oGitdqG z+YTd@=R}o>g~ICe5YxC--k^!r2j85t`Q0-+J$9H$ai4(n53m;dYAQx(H~dE|_G|-Y zURfPwrosZhgV5bNXV5o!e5h4r41V=&VZ#xA_ zxMuv^QIk3xAEKJX^|8fPq1si9O_x{)Uom|DZ1qB`Z>XdthSm8Y z-K}EE7_xd(qtet@>N!SgEtL%2)XmnjrdgVwJ$*PK8~4e`Y=q-?%l3R225V|)8b+mK zT`HMTLU%r0VAe=S*&NrW+ek$T)V%)S^@gMj-{=v}?NejMJ5Kz#IfK#Nt#XI=s*=Ug z{K1oXj4D{+xmqbh_7pK8WnwkR#H86a)o*8Y@Tk!~h@LW_p7|2)N-+wm7gs(OQ!4D< zsruTDk%~|=1!7&K5~!xFpuZj^F_WoO6eG9A>H<#(nt`KhYx%zIf6V(D3SCvJcWAkd z+*WB&MHyxd83Fbu@AD6;itEKE_OkUF*(Ea<#~zoa0Z0l;Q9bgKfrk)iS`}f|rfYGV z(Y|>{1u2RH%u2K6|%AA5KDJq^{#;W4&d zxlA3$h#w)HO8To)AI>>V>66)g`S-EvD;q;(UBRFhC>r}~V0xhePAvZ4qLlY(bLb;{ z3XwJ1zNAfrfWVL_|GYaP9vxn6;w_O$rjo)lP_^0$Sv_^QuqtgPQ`j4s6&}wu%{vT9 zfbn9uv(Aa_a#kWKNlG&rhsEp&h4Ss~Qw@lW79R)QmxFzGIW*i)6k0tDmogho<~<>q zOR#t7h%F7MejFZs*&E4Xr1x{7ip~q!|7kQZ*eeb;-|LWy6=P^F4TH-wnN&k))DoJq zXy*JF#J-wzG_iu#^$(lOVpd;Oib&U%!vYnUC-|rikMNRMIMNt_dI67GKuMQ5N|43_^Zf5(TuYXU6Yb0K06=me5y)P{_Utpq# zQPKRK{?s%kehd9D>$M5F&TLh*##HCLs@>&?b5*@dE6LZR0Df_4B&(FCP1atwEMyka zevKzvTUww?^l5Tw;j*W@!Ol;e>Ik9b{!$~r+ZQHhO+s?%1KhJsI z^`5hS{ps#q)q7u6t3Fik`vOnp4KFF3_;PI!5_J(_`D%nUa2WSRw02K#qIr2_M4Iv= zPAKx*g{=z$*=0+YAE95jqZfJ^^H<$(o2*>x(ntGG;t0F@-zZU%`ZlWD2?^kpG+KP0 z%GCHyIf|fY(%B%j@)S#?l66=B_XJFtMKkHM539L0ju;Z%v&w2*|TOuEQJpNNz zLJI>VIRp)OBoB-`yA^H@{Fk!R$`D+=o)$&lUVD*aQJNEs>)1TDl(EtmLC7*nY|}n| z3mw3@XIhTkFItsVBK;LBZtw*J@S{AItgk8_*;622uLC{)mu1Hn%F?N(X_T*{dM0@S zi1o{>%f}zPUCZ!RnJ6uQBxCiE-eANotH3tOy?{8|ZTp1+^sv;s?NB82-U09YO->wb zw{E;d8wMrzj-OA^PtWSXdfN>ngbw<#J;0_x=M%?f<$Z7YK1%^Mq~n@#W2*>|N^qCV zqY>`t4W0<)mNsxjk*V0cBc+tMQ3t++0{s$7s5O^7Bx)R*XlTL6VG9 zF+N6$#70=LD;W>mBz7^>*<3V$PjUq{3N1P_!|jR9%r4^%QA8rD(#!^5YkYOKk)~Q> z+{Afdi}b)s`28VE%Q;ScMFUox&aW^pC#Ug8`%$I#Ap zfQ_%;ggVYd!z5Gvii8W~6E2nV`^KnrVbs8f)$C1YlaNT7a0?G!&jis@XSOO>(N1>i zfU}31{mD|BP>zKA@}#&4_KvV1}6kk+|ZCF0=}V#Q+)p0Kst?Ba7cBdADy2e?Iq>b4CuQv#vl`V~d->;kY#~FK;{`raH zuc0XyGuW8!KEUWaw}wKrn3MvDm2Vdwj7pgUKrN4`KO)}JAN7a*RwB}1z8_(?GKEl8KRV!kX`M&ZhwFkHuWr%KMt)TS zdZWJ@bpl7sWRT>&ar{|GLJ7I~8)Xn=GNEc7AQvm0Dz+U>4#P1(h$1zn?F-Hzp1_ft z+nhJ_z2lHr&N-@C8SG?OdM;HQg6cUxZTHB#ka9r5TwP4!*-7_%_7oa}GwZKz;i*f; zV)G=Tq+hk!I_vqEd{bl+p5pVkZp5t)VzSQR)T;P5%&7Hv;a+BkD=^K z6B6yobx%$MrlEFL#z2mN{*4MF7fO7!Sm4TEb*+bZrSP<@WCjgoV%8iv#iX>Ur>S3| zEuOBGaHazDf0~Z6zPw%n`$S|uFyee%0Kd86@UWbpbUTrwhdbpE9Z`*me(Wc?nv(eZ z{)9ffE^Wzf?p-pMZ5dD595EGoo?Q_K_GJ!~=#%%UaSpiUUCC-s#!2hzn&y~!>3p&k z@~|XnUl*Z@#Uy==*X@z5 zB045KkD6sZcO~3*jcIg#QMs2QA8IVPMOz=u)k~--Pp$VEgI#x&4dr#?Sjdy)wKSQD0Ooh?l37|#lx+R4o{RchRJ6=Ug9&yuPLd|ed`O_g1CGNy5!Dlu|!dS0yhgDEw$z7R?8r)4ucN`SZM>!-k%dlmT0 z&CXhmY`gV+h-yW7gx>EyHdo|j_8o7vmU=xj)cR?aiA{XebHLi$%}B^GPf;Z7G+t4S zdlbY&&3}?GqG}u z_4b;}t~`i)-EwWe=$4tk;un32YEM6(Zd~9xkVFhlK`|!7V&kUzq-)?8O$K{e8QIJkkQf=g%z}8_yTl$nPq2ZY(()S`Qxdpf9jn54y#JRK?o0@bTmrZ zh&(-nB}^%$&1_uvx@KWO%=A+&=jJIO9v_je>UfF$zzbe;(L8=}$JqJW6@C2fpYYH2 z;6nhDC_=F_%q3oQ18G#2-~HFBKR(J9C)wT~ln{iIG3gMDQtZ3U@vou&|8!846t!gK zq`&R?WhL2R=*8@8okdKXj2tcOo$VY6S=j!y^Z##8<$ELteI?h1lAW%ZVjLOAqfWE%ykSl1Pl=n(Uup-)C_S7RzZ%C(z?_9Kft@J z|9{~B2^RRL_wz41>VJ^SNGQw7$tUw8fn!0ivHioHiubp|O5QvNWrq0wj@2N6AE2?Z z{~un}Ka(|=AcKnmgD|rF+wB2E1*b|j&;p@MR!0TLgM*ffAtY*ngvS0A;Fau$3T^_} zY89xk(eFu~n*g9eg9sw%V}u5$k|->~nS#3dJ=HMOLs|;b66&vTBM^>k;g`HDV^j&q z)=;ku;#rRZ?;JsB3DM{aIMuKYAoaW?lZc8_Qz%>$7)Y}hf6285>ipU*@}u7+OZB%8 zPf`$na}$uRLGx3Fhgk;c&wSrzc*q7!9&TLxU7W!EwETKX_*CDT05<%(%tljyBxlE5 z0WX1R1Z(H`G%Lk_COA^*P5Qwe@-;!#H*rCPPAG2W#So(t8YsU*U=Ui4JAh(c3hb}B z0#rG1q06{HW^s*d36FoP@Aa@jy95Q`B@t>-< zTru+5&FE$$^6z}s#7FcNTIS^FkYZ%hul1hX4tPv`Zb#;Z@oO&qjQa6He4 zL!9sbW7lYx?C^}27}ns>q?x9uA(}1WKJ_Q8Jvui@hagOy0Vup!^(y?#HI3d?Ukl?t zfSF9F|1^NJ1Php~CD%Wx%@8ET5u${UFvCy;>(a!5#rNtWsa1XfS8qa&QVE^Yse6Dx z2c?|<+X^7InieNKP8`s3&y-mr>7Ab7yIM(CLJ?{iOMB&8*utV64wJq=n^dRHr`c@1 z4n2VN1Fq^S=h}=f)hIy^#q`cQvp&#)eSW7jm(&TnGM&D$=8VZ>870xeqFxOdd9jeP z)qiqRUFtc1IJq&Z+6FPL^Eb}KA3aRp!9MCoBa6_w_>j{a92Wqra$Grxv_U$5W!*ZN zNdZW<_539x@~%>4LvZ1I2kCph3JD|^`j%q`g(ep4x!hR>=JYXTj05>K`;7T^#eq?VbEh0IiR?bq2Gbj!T#^|-I=DT#5GWgrBD6(EdQOBaR z4`G8+sSA>=LU;g{`*3eHUWXRuT_QxBFD}hdYhF~>bsHUX1sERtXBoaKHGVonQ59OD zs2B7+kdm}rLLm^%V(_K8xY%iiMKLImsO(7yjXo+1sSVs}$lK_T&2LX(F7^7rcFnSa znWUi$sH-uW64LM?Na?gL@aECn-rg4$!QH7)YdW7qcRxT|F=7)fWTjh-ywK2|37KY$ z;d&D+5x|!5rZXIOq;g)t8tD)-Z$iDp2&p$EShpJ9tQQWnjXUHq4HV`GMo^@PFfJdBhx6j45Y75_wvn*NP!>n_VSeyOQ4&I{ zonlRFzGo%k8DV>WqCVSjIYhXdX^3I-W&L6eRoyw7q~rH5ZfP8`c*_Va6v76*5B6Gx zI^Mdn@I7N+Kk6i$vxKapPp2cr9@TIZza#+c2qgGqOp;W+J|@L;G%-xr?Mztlo=eF- zB~j-+cps5Qb~$zqcfYG!);^}?J@7~M76`0rE0Gt-est5uv8=+zw=GBbL zEuOC#H4N#0K`^jqNv`5sDO2Di-eX^Gm;z%mtWBin#iJ&UkiT%RClLa>jO@pLL+}Ci zL^#{DP>=FddPbK!gt$~J(j2Ux z(qojrrQ6gv=5CVp8<2vhjXYR^dOLCOtT=Wjcf-`BK2a5v**et|4dE{r$EqH(QbsVn z4t7y!t1rylGAQoFD%9I=<0}u0cS`_oO`A@Pmj!#ZZkUR}IhZ-u-a$5>PBT`D^2Qg(N^9{7*3GSc>urNPII3!@mRwOh#9`htJbX{KV{6A=tZ`DToiL`M zWS|<|-udkd@7h%D^^i~?v=+M=yCke8L4$4$8pkiZglFg+{pzz{Z|BO(L+k+jG?Wnm z6VK+&fOnuf;3aSH!Tl%nfHe4s=seOy3<(&uN>iOyg~p0pTlvQwJ-o+Gm305#H14!4 zr#KAs=>*}vpG&@kmB-^PbS4a|p@sI?e-f>rSIj^ktO~9)RHLQUVyRhRU-UFiKMVm( zs5g$CO3@zAx&G9i`No78wsC-!pJEypBllY-kuw&$EpeMC?5NvyMi!JN(`M`RG%#kq zcg4>aK+AuP9=w392&{7Fad$B=8sXUw{yK9}2^+@X)g{d3Ki8U|=wGDfU8WRZ4}cck z6vx`1X3Sck%CzO_dj&^Gq^dJrV4pXUacy1BK1Cij=F{;#42wGz5GVu8Sg)v@6O1e# z%vs3ZXS^S$M!Sg=hIOD%|3c0IBL|p1cEc=$(t7UuX6@ei#wICO%%X>)6!4-G8-wGkIsZaxoy5r-(!h3zcU7t%GLX|e5UcBVF~es9&Tu{liN6lDD}Tse|= zg>IZq}^t$|JpcKpNgEQcCM5< z>t9XG6co8XRi&_)v>#nA^mVg7^stTICL>>gz)#8FCbML5Fv11UKfxzs#ZEkhZ+ZuD z-W!>iTC$2^Zg!hPLu-}TME%8PeNR&9LZHacVD81f{AfKeOH!$(lC^HyJ7TOw@_~Ss zc}TN`A^s%{&l{zgBwi#N`9Qos<6b-=xD(rNRd|%h@%e6e2%1FlF{rdkDlcMuROTc;J#r1;-y-sHm?gXrEO+ypMt7y?-$^5CI#KVgt=s;uQn6BO^s_m+|q za?I%4yvF{EI0v3s$PlJG13Yg>J-QYw`V#qJ?geI+irH5HD7R+APlrYBd>4PMH)L2P zoU={sWT^dIb6Lh-yc{{~&dac5AhnD%NLoneFGYG6O3ETT4yqcP^D8}w{($CeKqfCk zrdXl*z70cXk3c_KJd`uch!W&bz95!^@q}S1C=Bs$xA1)k5-n3#gdAe$GDobJ)RFm;TfrhT%be!3qQ5gEHj zC)XG-jN%_^y}xUBC~E6{X9i!7|IXO{zMZEPu$&|hS1ODUD_Sp<+#aui9D0M>amX$- zOOs&v3EGAYPm3ZVd+GeLZ;3prpyTzq4%wYPDN2x@{n(K?j@IWa4O=EDQdlvWT^;#@ zY*cy{@J=I0lylJLhls3vu2lAiDH?i-$!t*F$e`qm>bRQNYjxEdT0MwSI9cq?z+!J1 z+*cI?*lO#7>6K#+@C_&I9ttmw7M{Q>N5v$haubl;d;ONX z(~fzLvtg*3ddH5Jr8GEblpEZ;YFE3$Bu$$ttG8@Jmv413<#V`B#x5(hE?GAk*DnJ_ zpuXGtEH<9CX=jcJ%Sc9rla{{)y{Pu*!fkL3B#j20f`^*|kY#(|z3f$s5E`W|nlktk zP>BS=%lz#JE8BQq-%!piH*pm{d*u~IW$30xIRBEs5`q~uUA~oI^i)7z|Kl9>eS6eQ2=BrjLUm_yq)7+k@O+W(sp9O zH|<1%_c&SHhOiLAhSs5K+mk{I(p;%B_(n$R9&Kfsn~A^jTW9yXZ7VBMOqQz_(co>y zo*l$XMn$JYCB`ZpIf&%xF`gb9XFVkR8h^7AGs^#GAdMDJ<4Y=Z`}~h4%RHQAK$0W& zhVRS!XXn(TYIzzi2xy6cu(JJz|O^ZlH%_zr2Z zfh+|n@=l6|3|My#Y?;pF5|wsM2g^>By>nfzvThQav~a@xCs-)_WY|)7>#I4^i_@F# z!dKQ=Zk1apI7+sY8LiImR93J^z~`#lUXQp0pH@Sx@iW5Fx*|NUnM2>0n6#`Z3-5I@ zmYI*xH!{sIkLc+3`{Ncj7<2L{?|0*DB;orr!v|UW=JH2;I6DhtR+Cnn3zI+fB&F*B zhlPx!W4C3Kc*E|d>O*44+6hpf>%%ej?@+Sh--3fV3;Zxx?%UjAGBOr0OP17x!n}J^d20m{k#c?e=pb z+ri{4TVz(9QkD#~tyO5#muDl0nilxD(u|qp^y2<0SBcB0+1v%dUgQcD1y+pWh3Qd} zZ~^=Cgw?a&ZzRx$VB6D}p`>1A^&XytvsHBxqE4;khN0RoCr{}sc|+Cr}e0MaBm1T#QpbA$}}lR<~m z_dw0U8_?+Hx)pFCc+@YIvGVo+n*Jn*0u!0UhaUu~*`rxu%CKYE9}R^q~e+ZkU4( zj{B|QPTi&lP%>AtvO1hl#KbPmqr=rz|B!DAM+bZgghMS^Yzr!s(mWNmAr|G~;rSuq zx;RM&v4)oG>F>qkA!JBX%P267{u~!P$!}!pk^lfrvL?II*SZfpT{hFzy2wX@H-GjT zvSjKs4hzPu%;NvCt2=aCw(LA>-LTnYRk82LPv6T1P>$dzOQGdZZG?JR`}U8$)Tjbk zuL}xDTWNS614S*izEY3{_?J+pI(Cqbrdzr*BmI;_GN)f=l|+Vym)Z7-5kWgkjo9wg zjh8K=qsA(law`@RKT~-|`#XTK-|`gC98bc9wKz;X(nM#{i2`vOsci)ATCjU4hE-G$ zf8?tVSmbgpPmt7xb1%aFI(dBoT7INUGaX}p-Hhlh_ zp7%4dCfKwnZPxAe&*G(UE{WY!K#+15A+pAMHRx7t6~aU8e#V@$tMbH+ zz%h8D;K1(nid{D_?C(7tJipDj8l&wI#B@@pmaY2P^sH6<%Ve)xz^!0y=ya(qU2%9k z^a6>r2FZrR2-aR){hi)2WpRZ=W?5-s*x<)yon~`_Q`0KuZE(fpJzj%Qeyx7`A)5g^ zfb5Kt@5t__^&I$6>tQh1dBxOzByYE+Q}o5qSVD4VE`yFC36c3Y<=<}d3mN)f{YX8> zlEuGnZVhp;;Hs2t$ft2?6$)3k*a}ct4wk?wf4N|qPhoR5BC$K2GN5!%+_?(eay$RX zQTdE}`l&<25VbhoCb8$Zy7~HnLDEF#0|>jxNQOLzQ7-##5@Cu8+3A^}y(9T-*yt#7@PWtZHUNRTJ4XefRR302ns$yOI>i8YDGcZT!CIfm+r zb{|n{QE0lzp~g~7% zpLH%QxW3Ik{Hi9-tCuJXI3OhdQQvWsv+NI~|I4i(5*p;L!403w?No5>GKr=6G3c3` zDoDd<0LU}0QjZ8F9x#zQW|K_L@J?@HX9E@zomU23QAsLAS#;aHdWQ8wnw|$nidp}! zQat|Qgug)3BRG7k)eCyWr>v?s9$?Mt)o{4fFdA|$R<*%EJ0wFwHKA?2))L(t8AK49 zS0<0EE}MWdWrh|WUMZ7JB394-lo*E`aLJrP@|b&{wG+iFVEPovAIj0HBhHq2AH%Ls zeUs@n&Vty1;2@to`vl-lz~<(v&?&!q;Qqc)f*XZxOo#B0r>g4C#l~hb*3!oe>RZ!fqyYCHo8x2VZT|hzUS~ygBN(O zA~coiDc*K5)){SWQC`>;;R|<=q5ftIouxI3K?Pk^y?6$9F7INbg&kueM8ock0||#8 z8qFBD0vlqU2cIKc2!w#wx`%!qB(sOt7V`ComqQI1$T=|GtG7_j2244MsVX*a+5ehy z24XeLxMimq-@q6NRYM{ z;n5nGEN?f8q>J$Y)HAFDw+o9y z-utn>sOc!`xBr4))vTkWYBc z!ige6f4nDgx1%IgFhVIqjSE;??<};?-gbnoI!x5KZ>q-1rzQ2@phqZ(b!hL({Hz68y4lRt zOJ7>`>`*k3wxX9?^lFe!+Pu4RELEi~{{{DswJRiZ0QEdUdv&>8Q~jJR+Y{dfVTR1r z7^dczkXYO-V@+uZ;2>|bg_!8(gnEGi<1a`)zZ20i9Ph@3GCUs~a(th}Vc8p*`E2U? zd)To&sbE%>M8IbYulcF!QSUK^rqrI>rcOX&r+q`=U$W5VbF#PA67^ZhXFl-RASfL`+RC@Yot^3fRO z9Lr6xUvcZmLdE}C0496-;sotjo+v5aFKv@~>iKvkJ4<^s_#KD4e%mYI;LfuhpQ2fz zk*T06p1v&dt$ax|A^RL}*l5lC6WzfIP+6Z+6Eg9x5Jn*fME;g9?x(B8L`>4nxc}$N zLGIxCrXh5piT`y#bWl)-t>^tOI$xdEn~juLKnE7%QBKI{`zGZU5Ibk@Tm#VzBJ_D@ z<4@+WoS)%{MHtHIgz|;Hg$};ed(h}EyQ;?#f9%eFA_=RMzktmq$jq5#Ru3W!1M+fV z6)|+4A>{6~!1L%Iq}44+c;dWHwO#nKPmGC<@PIWA_wOHH4iZ_fxduuUtS8kg<1zWI z^mRu?FFzwZ&5$eXfeyXGk#^jkuX{&Id2>jXieeg3NyF7f^{TpK>)b1!j9kjx%4iLZ zY^BWTIGgEW3`V52MU(_98SP}&0q_@`3^*MWv%x z$84%QE-8}bfAb4Y&0PX%7tQsBAHpL26&|f?WNgtPk0Ah@`+)>t+p!;=1k_*7SbMz` zEHFdY_~5lmFa%9 z)mWn!dD3l61oLke8`Y*f z6k%9~6M~#`gnO`ryYbCNfD#!(AM}m@3ST7B&Gck-M}jj_Fy8h0;wIe2SR$RSqtP!8 zgO4|ZhWsgYm;GP#Go8vD8Ygup((<~6>=*)P1Hz=FN^6%qjE`y z@U=|s>Bco!KuK}A>$Wr!v~2b*r55lS^;DxrGTY;BaVPsPFyGOM07k^7$?;GNb9jvG z=(MTYryowVV|>`0L-`GNTR{mSPurz`ZOM)8e}m7LM7vZ5k?}g4-QxeuT^3_vV`%9P zSCQN_xasUKphp+qSDxPr!w#h$5PUQaYrNP^pUg^hgj72!f^e3O2Hebe>n6WG)`KM} z>FDRhuFa@CUl7tj02&TjAHrtI9di2@0}?q+1SYLVXWdvE(b1J_4^pTKd*k*dH6@H z+8{hq28p1j%zeAi1#(~|9;wxPpdIAPyy!R@m51};Mln+)4e{Mzew_!6$%~8L^eWLj zs6@CBQHlV+Qe&bqBx!jNJ+#*vKxBZ<7T(L6=Ze9dbzPcRlEf2c~T9S0oyBPIvo)Zgtxum;_PF@EtouJ zLSWx6H;4RWSup}ZB{kd#>2cB>Pno?j6@gZFr~){&#b*6uB4gHW6u{2GE5A3;S9k9h z3Ovn4uPGfvNnmO?-cC0VPn+-Fe_0vdm7Sp_3=1RsKjK^lFh&LjrsP_42s|oI1{ivE z3u9+u*{A4<+M!={l zhQ|0GQU}a`$tV9zo}9=5J`BRa`XAm#vm+;X7ck`fk2o|m<;IyT zzhe3imxSP7ygjzyl=$EC{0rcJKxzuhiHWOxgA_`t0Y!ym=J?NL#J4kICBp@PVkU1( zfZ@RZ_aqI*Z=J9%C`NOv9XKj58pr>=pnsNVZnXz@1_t5yS5b`2&hdSlWK3+$oXwdC z85tSB?_RGD7zP*&Sle^huM*=>CyFD)T3QL^q1D6i;n7(*10W(!~yEb3w-5+An}qK!o2_lA-jNr zmH^ra91s&jud)Kvn*TknOl4)zJ+8n85FrM}kDe=YIDJzPpw(7Qjn-9w#x5mLz!F=P zYthiR@Yqr?4G_lx^qxe>tqjUb?bnbM2t9)Qt6yLmBuC#yAI8z%1n62@1L)xEC5Tr5 z-x#sZ2?UF&2h<-(SQ!-3k8fmU0VeB)KzvV4YzZjp3krv8?R_~8Wn>E98b$z~O%fDH zo28+t&K?{yAYup0q@ov~MOYL6#V_+Qy+<5{j?Uzn^p)_nobb8amQ`39d=4=E&S&G` z^1A?`E30;c~O9aGvFS_(U&FtyOz1EybK zW`Ovrj%#f4%unk#{74TPu?;rRHCjIVd3^W2oR^VRni!Z@KG_Wz|BU~jhxjzOcD|6& z0m7DnlaUdyCw_kF{+xRyFzi!7+U5$~Np8pS$%cH};L1wcrR`DKXCu+F8$?FaWj`?;_9xeP;% z;x{WcjbLm7%=8MNhIyYp`I0aNWk_pTOYy7t3|i?;-I>(4c_tr#)^`S7)%=3C2gaxM*KL zG;~f8{TCDeDGt92)qje=+XI8|X3ZbXHsD>Hm=E9U1bq^KBr`nM`=|EcVSWY!c7Ovu z`v8x_dQi5b&-7qV#96PJ4F0kyU%~nq=m4UX--iTX0X7;R!TLB$|9qX)gIa2Q zgZ)~K0}#2VA^bD6uLsq%dyf%d!|^3}tsO9XNDsDd{{h>}w(%MK^#+3SqsG;t7?Oa% z)AX7V6hyP7M>}HluA7_+pqUyF?ceg_*_esZ!H@lxUlCNC`x<=bx|$v0+3}s8jR{<@ zkT3>z1jyH6YR!+lhbEVQoKvE0`b#{Y5ygDSN3*g&;hB zHuf>+F*Gy#=C80ePgmrhjF&Yr@~N&%&eO}E?W}v{x@6MrmuoRwfENNH_T|Z61oeVr za+UBHgQbU$MVU`{CZme5l$ZS#F#^t(9E;9HU^Px9e@L|{z#-KX>taUoN!QSWYapt* z@&^XJHSnIEm|%a~4hQ9I37#ccbV zLYY~BuK8L~T`QCU16ZhOfs;?oZOe0-k)isIc%@30oK^+I1P_{g{Cw330G(xNC}m9+ zfzD%U%b4@(@MUcu6j9eXN-`%ki|P?ky02s#h&(pVH^ru`E5(a>j)jv5a|%+C%M=p+ zBsfm^SY7a1^u+QnQQg2uj8%9)Bg}SfiK_eYKk6+5dsY{2z`9Nq1R02Gh3#XDP zVODS*mobe`0gcAQNMN~W!=0Kp*U8-qTy8_0qX}h?5W2;BJuqEe!c!W0L7@yn8=?}a z({v5emcT_glW%!D>{NEbu%?9r2m@Zbe^*Qyh&sx!GpA`So-B>_W966oGY%Cd+`}C) z@eANo@~CUKBhdB>?Y(|(3bA~QTQFG`f+>lAK1vG8MDjT6?;~Fl zjO_BtV`%~g-mVK)w*%ZfE8-@I{9#b-V4QBnS58cTcyt&&*v^evJk9!j{TnOY9vAoU zat2-3AFMS$7P>ur3J{{iw0XIy<^gM%1p`aj1c)dXfGzvAMTCN(NwFn*_za9ayFgS_4axzdw057wwY>Cwun0w?Ph7 zGs+T8SV5ZSh@ICI&zyINA0z3v;2K;Vv=)N=q+W=RI3}Lm!`hyjnO^7JT9QLlj0>lW zG$1ogcj?AwDIWaF3ty=pPKp6Re03HpL$0{0t~qsds`vqRu~l1sDr!;?YivqU@wM+2 zZJ@y9hSbxf5qsWxL68`fJ#~yg9cQ~}?xZ{1XHeHkoN1@&u^jieO5qbf(??UwhiVV5 z7mskQE!PG{W<^GWi4uj(qAg{!xQfP~N`TMKTq8w;*i$oWAxoe1#tJsYS zjO1;76@zkd>zwbrIM?GD3|TF?mA(4#3b~tAL+IFT&f&9b9imgKA-(*0bHOgTFUv!X zV;MOyIC()%$vrq~&Zh31vU?k;K7f>n&lbKum0|+68!d>$^bMavDE?Y`{;V#CU0QXr zTFO0$-B=!NP_a?Knw~hguHaZzC6y0tkX}sns5k@E{2t+oog1xMM?`%3S7OGHG&DjC zG0@PqfH}NpeSKK5&372tHrYdGi}X0Cf}}>v#mas9D~fM+mbH#;5p+u$`Gj9SW77PrSXB#M1(l1 z)5lwJ;JgrG#+3pae7rOIkha}#(Y(p*KW6ocC`7sG=t^zGWmva4;zMy$&Z$;7jtn)x znbg{*uR{H|X3MF{X7s}-i-4E*5i21AWcpbukBB+orQnH)-c+;H*JMw3mGJ1&CR+Jp zK}^|2bGKx^%J#)_nJWpSIN7bQ+ZYsfC^nnOsK$?-Z=wiN>+@pcYBG$}?vNOT-CG@c zUtV5s9vXD4|A2asYdTgJv6>Y7>|&XOkqW;=>)#&$UBhC94cQ}gD}a&2uWFTA^~$A3 zdJ*=ju%_r{XOXy>+7{OQOO!YBY1CMPVbAV+>;<=)SR~?k5nC7!5k;xTin*!}U6QzK zO@S~9wnbgLhjG`@UcwGs0*`R=OzTk80H5ZxakEB5W&d4|@@)1q76%?U!MDUCSoGu_A|B(j@DV2EPM%iAoxYr9%5Ci<-p;*xj&1&z|c`Y?uPQ))X^gQIWB zDcNlz6f60#-}%UD3Y295kCyO`9GPPN$A6OUF>m7wpWP+k+H2!$hPxt^~Hup@X+_ z0w`s*T(~69p{j+j$uqx5u6Z}Ysoq4mqVEU|KcSE~hkc%p7Ibh5KXyHN1b>tfAtr0F zY%AxqGm!h1+3fPV$SD7I(!t2fR3D;}v%(*X5sNyJ9l@{i&K!l>t=EJWIIvE9o#M9( zyz26^130lf#3~B78Qg9WT&lr3lY~N{-G20en?nbGjl!Q|6Zm5G55IT%@4ZosZD!+B zR~0M5pHmXjt0o^zn=@$Us`IbeHQ5UB$BY{Vt61Yf__}doh%x5+gt*A39b3LQ9Lf5o z#7RzNavo;JdT7W%qHIx^^Dh|Cm9$DL`$rki0h~U+(?khj;I%fZ!XDgH@*+}B`~Xcx z%F|>8L}+h3oU*iZE`QyG_UFuDc5@F0%yKRJ(F|&-X_B2d)CTI;xzS&nnE04{Tx*JeY%LM$*)xznX%<)F* z02pVP9&WwE?XQ#jnCXh{+jv0d)w~HE%IRy^WHcxy={vq;qPVZ&3m2VF)UT{t@Ij(K zjLXBzyBY+#S?9LiLS_<4XQlCO#0s~DQrkW~o8)(|-b@7Sy^p!H9GcZU8;{8kKP9Q! z4p)QSo=Vox)|t`7f({M(4@@VoAU0Nv08$*=cz;9gnVxLjVGXW?_&A}*O-xima#*og z*H|G57+3W23EYFl802YCX=Rp8G^BBEAC4r3?TwgbBX;lpsJ7|v=3!`JqMES>Lx+pA zhfJ_>Nxy1uW1F>>G3dQYk>?3uj7KLTiD|tHDqr>El=*X@+IVJ#;v4&0R`T?N0%{Ox zLt|Ly^eA73t60$Cb1JSCWU1J2t%|?74Odh4AV#wiRUY5~m0o-52WR({=!WCA3esJp zAJ}7F&)U$0{)EHrv~)wkKVi4pKk{<$9!1q92^YATmdpibyh1RtU;Bg>Zbdz_=n$U- z#k8g0!86Czt6V0<*GE@vE(n)4PrV2^QF4*gtQ znyr1Q#szw!w`*fuv5(ZY6b6|es==!k!}+yO%3khR$?q>!%N}KE0!0*5Z7cn2WU3eg z{GTC%xyeV6hw6V}vdG&Hj-gGo7^SXeGYizX#eHXKKGu5oZ6M8cl<6&R03hJCtxoc` zqk@IKvT6;Ihdl6%qQW`daZ^oyl*=?*bkx!rA2hW+geoG}tDbc$W^^jglD~1W9DEpq zHwG%vaFr@YdROrY#|_rUDUq!CD|b)?JoB2&Xokx4X3O@IYtzzwp}#U^Bzv>&IiPd! zC5p~X^l8~Wlr^m6A}r)k1A@btoKYlAPavzl+M?kP1e;S^c0$m1_1j$i#gCb#P+I<~ z1F=pqt>h&cbWQdFeqrVn6rtYBPavWyP z>L)n`$MUT5_PQR>Yvau=p?r!!>>4#h3LzR)67y=y#jgUyjg2IZ0oA&TCv(Lp3j*l0ACL4pS1jrBTlrxRs=7jcRRlHB<1*%woy?S1c> zAL2h$sHiGIF*@7p0B=lHfbYbusE&m?Y(D%_y`EPIe2e31F+KUnnrR2%any(q*e}gUCsn1Bfc%kk_ z$$-`O&sANt6dPQ3%^dHbE2}2W1!~kvw=X-`RW9&_5bX}7xCgemU*`Nrh;1XO-U)6r znGE|U6GdBmfcVJaDU69ZSRaEB;VErN?JOGGYX&S`VPHt&joh>A$|tkqD5Io2|-$Pg?^ zkOQrw0v7)u@2uk*Q7o-S9F|IScLw)`r4Z{;&|k76NP{W%BH)n7e}N7qCgG?CxLBxx z{B%tPRZ|VIh4%EQF$tpoNd)qD%xaBjkS~DAg5Gi`WGUR$WFz{NEG&_xmpML_+B~k7 z7-j+F71EMs>-kC&l6}T8+jWR2q9}UnHjR!024Ih78dz}Q4Mi3{qqHT5HOoinCd++D`>pA;fDp^Ub zl}al4ChNLBB|0+B9^!`4=l3CoIjJy{)Hxrh=5Zc)3R;p35qsNMEy#?;}g8D*1`gPb)a^(E~{$c-iZq~`JNTzap<-13qb6VjWT#(1l()Zwo<<>x>CG|od7|V+% z1VrSxk%(tok*V%XFUqd+G2d3b>(2y z3ISx;1coSPgM#2LrdcuFh%Rr)qOhqL_tN})$1&S;9EEkNjXt3hz5P9|y(F<~dr+PO zW6u9xoo a!X5Vfx8@4Cluhp7cO?b^W>!JLsUcY*a^bv%XFh8zui*hZx@Mg!mQ{C zqJCf1)!*;Q1GS6$^%YgkE09{|Mm2^5w~Y&ylo{MBarHtI}F@H+{lcEw;7 z{5VuU>Jj^Hy;&CY*_wY*#-c}lwNZw&rYh^%i7E=JdvW?4hV-H*ZZI!>cdHD<0^<_) zEwN#`VJWoIYRbfG8KJMywa8ujYa2q(^px)wN`7=b&n#xA*nMf^eQI&P9g0HJz5rNH z*tJ(dv?ZrWqbLpOA|#p~Y1U4Mi(RjQt;aiRY^BH2A$QshH+iR_xmGOPL}5hsID5u9 zMlhh5Yi;0*!a87S3-(ptF6GR^8!jwviaJb$DE;1o6Qowp5nmiqH(V<2hfll< zjdE4-1WM@pXs(VcwmZ$@VfMy8Hr__~5|>7E2-Z8^@zinTL0cuwE?C#F{KPlDvDbsU z*PH|B5jL2ZSD3BXAc6KpgL(v9KAfL5={s;1&~@X~_&;7=eSp1)OtRXEF^2-kjwNlH zA!2hP7+|W%wVhPakM)J7xd0V*6jxWz(UcoZa?LP0n}6>W2MtBHVr8#E% zE_l2PoUF6=1U}9WWs|(F-MqsVg(oa%=DPtG+Gnon=E>PiOyJlDEJ@ySk!609`98CUk3asD~(v^ zw;EX(y9yjIN8|ULEM@ym%S%URv@*o*xtJvUj4KE+7XgRnx()!8UkWL5rJjW^9E|`I zA3D67V|Un&U}y}K#+;me{Cr<;Itq7r2xd(0MK%Q7DezTbiNptUW3)ADbUpZOMHc+# zu-ZbGtyfc?<`Rzj5>u(tr3!}ZQniJgaafafnS}`Ui#0Jh>G!horh@Y@%$gq_w@zTO zqQ@rr9bvBWax;LJ`23_*2;3uH%0(RwI?mVn8kro7R4y7mCrs)C$qKfIQ~$_6F>?L; zbu9jEX%|6yx3!m#@{GmMbV5Ig{}}p_aIB{AGQk<)UbdXc>jNJaaeUtTjMu-tWJ_l8 zUaLj*!-d_}7f_>pmN*#l|9-*lc9jYFUQ&^pf$3{noOuDn>!5+jrk|;$Y!qZVMX>#W zXV%DMP?r1xnH9HpS0~|IG6iy6alMYqtuFK2Y#Y`6FyBm-v7iYpGpo|82V2kQaT!52T@W4LUfqjKW>5HaJFA6=Ta`r-z1TP%F~$CitW5&T_6n%#tjx*;En21n z=?z@ySz8-`?Yap=x>(9!n0u$GZ@EINMAlF_t z5TdjWGeJfP?ro0Z zyk)nwBBJW!37oxLbC+(5JR?lkv*jzxZryUDrCqJ&^DJ8sjF|;L%1P&DyYu~R0bu+o z5V^^t8d;)37WOg#6HWLm-It~dcV0$^0AHm6i>_`pLXx>77=FbtHPJoYJ<=*CDuKC+ zk!2pBI)gbmU0Gh{9$h2z@hm-V%(Hmc+50tg)GxK*dB6+z$*}=%kAERiJHQlBpS_D3 zKN-OMtu@|#pa>d=t7g<4`14N799I+)er%{Q+_?kpxQmv1}7`kl9}{SYe3-q&&HS7LJt5BT$Hv=SNmPf|7B$Q#0tIrCv5AXXI5Tr}q2a2OidEWzt6GL_*TdOw7(T@tlcGfEgE@d_ zfyxuj*BB3+Wkx_Cz6{Jc0VTuJ^{-DBrAgjK1Bu0u9r?WW=oALsiWanE!q_$joh5}? zS>!@qZ(OB*WZfhN4w9xcXi`fH3r7_I8{!1Cg_!*`iDvH^>h_;?Rh6{pTkD_PDYTxMi|xMbrA zg?(gDcA&8s&S;n%ooeeiav{xAl8UiF~dSwL^)x_?Sk33ZL`oL(HxMFDbQCY2^n@E zu#2uzd7PVO2$1K8Csin35Y{2f0?vSk-#Q_Lgjd@8WZX>gfp2$Ex8pHjD1v5Tg^TAX zB&fV3xHfrR-652MK2_nJ`}s1YnbyeANpL7d_u3}6JcSAman*J(^Ns@OjZ@Z&yZoHZrrS z6G<8Yis0mS`@?Hh+MXPXI*7SrXNSTfT2cT)RlYr^KmXgNT!>?S{X%4sfYU8`Tzagd zeMlv{Q9YYM2$F$pw%fgO1G;zP-N%E!#06OEl5LZSzPE10U{(bnsIKblYn|>cK-&57 zaYU{K2gB$<*88e8~qH; zPUGFj(pNwoBEoZIxrkU1&+dDw<}NjK76zQYexl4*1e4-kYIc!VO;77OO2?*|Z@O=Y z)6UO-c3B;?03!qTktt(WD_!1`_yZv^l+Lh37V2w-@(xO|vJP8*?UGCz)#-DIogVIM zt&xG6ZhA8hRr9&_wHqY&Ro2?=F!8?;Lmx=>i+2KN1Blp&0-8C0waLs1n zI{=z5!U4sC3R z*bL!DYi1j*o&?^=5lV(lcUh{7@Sc%JTu+o)x|cydc*Uv7`mQi@V5)GKVIOz}{L4ur z)YG9w&+7p15k4m)$tb1-(0#>DD1bhs`-ESj7G^Y~3pL4yc|6&(#b>9eFmMWnnfNtU zOi^(2zz+z^yf7(`Lx0C$i9gedD)9l68fCF-6#*e*vCJl~;AVIglSP*&d%H`-=rK?& zd^n*M@~1X-d?IwyI!?G*(1I2z)U!{E+c4PXVG#fvA^i|Vj5~(l{+Zw%u~MZ!Wnd=+ zo_SA$h$CVA`0vqn3bt|eI$>L}ELrqsNW-fEmOTb^)ebWU$56Th{K(h^Ulm+ z<0#EX=R|+fH1S=O${&LQH&^DJCE{>Q{)z4t8C9f(h)vK`n|9}*ixASI)mBYrWyV9e zD858Dy}n&gf#+~@3xqyeH=f+nOVPk(Lpy9<@enKx1%ZtuS!w7OG#B6u)BHS*~@_8g2hYN zu@Rbt&&=yg9wO~%bwkZ!C>6d&k>vsQIruy2qlo=zzP1$kh8gI{zL)*S+x$AvF(`nQ zT*UE>E6rdRsv8;cKh7g@Joa8EpIE+4D_ zkRYN!P6D+2iAB^Z|FAvEm&0}Uy*$7$>TGqw?&)$cA)WYo3&&r*`B%fDOJe$6yZ2tf z`yhF2JP_nx9u@1^TNzdrYUHcU!kj0OX#V*8lTi+WU{Y5E0(y_HR5&bqS5-=4Lr3Ix za&#!&E@8f~Z9$Do0H6na^hJ#sF|h=;5=K08xyP+i##sXy}DgEK|+oD0UvH~FQ=})GmK8QfPoQhyIa+gn%YBHQ;+zdq+g`^7IZii=EYL4 zI0N5Z?xfY~gehlMq)J><(gAixcIW4qKG|R%YeZAonv@sAqmS5^v2yOKfts>1{eu)- z6eSp)!uu=BY9V96$=;Q;+ZIr^d1C$K(8t4zPbG+&<}}R((dsJw;hU-j2W9;F3_qZv z84`S4e}Pad`?kD(`&btF8z{xF`qk`&{e)%VnQ;HJZcOgjCzA5{u#gnnzc17RO|_^2 zsft6ZH$le6CujiH=qGC^I}^RUlD48J>_SEQEyxW7Ev%>>^D?9Gr4vBnnNeKt>|Toa z<1B0d<1;@JuDuPnH92c#f?<_N1)toevVCtksum+eFpv|sj3|wv<^5u?Rq3@s50`3G z4rB7tn6F!}4m^>mq(15?*I}B)K3PjzN)lX`9x=P*q36l@Jo%6^?-Xrq2d>0uBb~E~ zgtOTl{(CxUBf%SUs}tZEIVS0*Vi;_`@07!w&ZUj{n>vD1B!Gh5@{z5+?gWx>yuZ~= zgDgSou{L(x^P@P8I39kZ^o?6zI&+_wQwt_bi?B75CgE)E;DlcPBvzUlUVdO zMep8BtAlP$(7u3vW9rFJnNzA$qMCDrdc=(xGMOWn zo!Hs0LD@4=om)UiUKosT(y)!AzD2wEX!xozuJazD+TX}qp2I8jVOhE#=h^&3v>U^x z%q4J?kMt$?8DTPhI1jAn7gd7CXO5Hb$Yapfh0V`?I}(~O0p12`D0KSsGnP^Kc26D| zsM5;z%?5smKTWS>)yW#t1J7p0tk1V<3E(Gt`+hXrclZD%XawWzRsOz*IifuK-xm=1 zK2I@1+|IS2pz871Brn)AVoa3aCVpic8);0u#st-Je3uI`Vav%u#bF6!vU}0$d3G=xke*6S?A|?bs7L|OsP?_ehFf{LG!iZoWfg{z0ExV| zT(@V?2a^DmM-9?rc0XSIX`pzPMl4M@$uZySI|kIB$zG6{CWCI5e_t%P&T2J}E1F$V z0l)|^awV&X_w}K1##=oy_axvYv>-3Jg1cRcW8EHyc4U&Jk=v{7TUqGK{2+&TFMh&> z-u44H61u`yknaVT^1xI4l@;0+$4#3#4GdHvHA(uF)abrI0eab@gR`NT1{j&al|Ul) zT#$5qkF9Luy^~(5+E+txwSO(f!|n_JP4U%Yqb&4PuYHd3D5Rv?BYrBJG8t)Sq4=zC z;wbLH@i|6YPGPKm(1R~_$M3A3_Y>-W~d-jq+fq&pN>yy>D)Hl4=DDYz1q8S6QGhd z1WOW}9*t!S`zgA8%`wAPI1_gVSL^`_eTyf4sML4DKzN1kYgS=_W(~m%cXbgsm1)%p zgNCEkw>6iXoe!@-KN_Ctm2&Vn-|%uy8LJf(m=8+PH+b>a@xNSbjgIyG9GT^Y@fyvN zlgrkkIL>R=;>VlJctg2uC)^E=r}XvzKq})F^@k1cRv9|#DsW0sT;slR@lplc9AS2y z1?da+r|%pzVd7OwFi89)Hye#Pl+C}*xjzV<{$mOm-h|dpt|v_chP_?bRJVCOds#Al zLBcWtr|M?{vy5hw;?|%JXU?E1DFLlA2wD5C?#o+-;Zl$V)m3g9+)YK|Qr3Ky^Yb!c zu5RAxT)5Ykmeel72(&A0wB8thfU+hRtCC`RP z`8|crKz^7IBW5rS-5AbN#^DS`p-VZdX3#MN^8{qp*$5gbb&1)ubKV+ojHp(Er0mKw zW+=3okVCfR*8F1YzxD$q6CVSXTP*WSz z#FQC;9;dVIWVdKpb*4kh8{S5rX5*D6AKHA_{chv)33aJi(s3q37eZeSS8nYzPT0@+sGUuj3K-0)4`y3mna29zucEe^1hP2rhY(yo=m6yX zghy`Tpw(#G?4=X>gYf>1tJw(R0NriesV7%@5V-bXb=tS59shH? z*i?A%VP%rj>C98=nKwJm+XF0gM(P@Z$&>6IKP#58IU0PQiJKV3;JZy|Hm8m6Pl{eJ z8|8a(Vpu%DAhsJ&iYDI9s_eMd)wj;6x*eKYpjliP)UVuFt1&viX&imKX6*+eRwjoY z5KSi`znP9OO3mbonvOf#z3QUuNB1KN6`de>Bq~pQs9`+kXKv!JU?3w`6J@Nb4?nYr z%jdF@;*M+uc3Vc_H{O&^lS$aj&%EH~FE^d6zSWk};+k;)Bh!g65WXlDiW5fPuZ?af zKjxTwuyBF_jv#q!6jfa4UZWj_Oxnh4YK@nx1)Sx-L&_UuS9$>{^QNVKGFh<++m*^f z702J;7Np`^ZECp;5xe{I0wg`i0nj6k3_VQD z&lpa4e;Nbm2}L}gY#Im$-4%EIJ(#;;Ckuw%eIK#oYLV zjv6%+KO&pU_h0wvmcwJVaaU-W$|^TKDe_q@d(jeD*188DJf1jrsT#nt@>(JV2FZlI z9AqI)M00R!sei>|DIwQvprd3SwgxWx6zrJyRYa12h2+8KBs}P_DGmEh4m!EsrU4gG zzTvQw-v#x?voU`HJ_5c0;9s?r1_r?Mjm~u~i;c{`zWFi5dHwz`Sn%IC1TzQIf8Y@R z-~|MK=l=f}x$qx&fufLvqLSu6c!5SLqap+v8vFm>tjWy&uUV7iU(x{fKilUiLSUtm z7J%=9YA|S~?(Kj|VlZ?3FP=@dRO3SM+ke;yFC>U_-Rxx-D2naj# ze?b%ZW#B`=kolAp#k92pt+o~5(iC8!ei3u2o_63O|L*pWbdw-;Jrxw@pTTha3v2wx zU?jzar2l0lR3!feI#RLi!8uZ6k->4`|6|i%LgHU9=<+=HTxzicIPyP-=4kC)02lh7 zm^IW?lqGO#V2;%MJWy(YB~Oy?23vt?6%|##DV6r5QCi$(u!+9VPcwQrq zi33TCb07?PwJxW7WzK*O8(8S_Q-v@80fJvC>O$fV^g$8wGB@%b#KFvieu2w&>i?o&vSSSZ7!2;Dt>M6I6FB(O{N95y zBYOCJxaen4KSQo3#myPjfh02p63#aO$(!spASNS(0^SYhm?Z%EO!qYWD~?R|1T$zk zMA?-p5a>lj1&1`){sALF>R+>XGcS*EXa9V1`&A$hQYR26^e0mR*npJy6;sWqL-F%# zIXR6_#U17q5DP;J{@iCQ2 z!K10)n3U%I%{#zHa{i(^dZOi8=UMu7;^3s?^xcZ3f0DlV`$Wi%rkou3rhAB;p5ay{ z`K6kkT2Mwmw)uoKXU0xS-%78|p1j(cwezIUsw2@P2pCmFi*{ObsUZ+x$43zTjR4CsgJWxrH88P4NbnIXAe?)pq9gz zo8>rTIR{`wC^KhF@@C^XUCKe{^x&BOwk8r`5fvH5hLsX`p<{{32`{K)^`ILbFqQ{z zH57A>HENQPS_6v-AugV^7_*AMo1FdrXbWc!Fu17q)KH=3-dC8e+}UG;yj%DpQ=~ze zrwNJAMXZ#+kzYt6Hpf0*w%4NC%b)L-FIViEuBO$&MrC+J$oextxUl;7i{9-bMuI z0DUN;W2Ck>bLVp!l{>Fe$BPtcjU8`Az0~R@{6(Yoghfy_ zc`&$mqpU%aoy({Ygk?wNY~%Gv;Y|_-uAI zGaln0k;lO$CZZBf2etP1j43%^F2lO}wd@0n@2pd&B|IG^}%{*eWa>$LedAgx>VbYfwLrdmE0g zEv6NkZ%M?PcP!h)Sg}{mRA&0&a!e_+tY#nMekgi6cgHSSP)=93Pppu9k(au~IJj+J zYvPRt??vAZALcu?4D_4Jtkt8V-PE3~6gg$tpdU6KY#@;JbXLgJ!HA^}0Z28Gl%gsz zlOd&-`D@S-50J`J4%U9Xtmw}8a>fG_;dgn?GOxEC^Z|d%=_Zy7imuHFyBo2t8_pgRieCN00eYh!nOH-KFA|a)}=2 z(sYR8tky`qe;io-0JpPhRj6qcP-W;FOevN(iq2ME!L}UB@C7rG2{7~s&5rzqJ%zs8 z%K~#Pd}N1(p9CX$Y0RTUQ7=|Ym6tCXXID3ci*;H+&^)@*^Fg72el)7_3 zvLhVt!m26H{3)&(0x0jV9I7v5IWm$~AN%A|?C>jj1P4#-WTo+4xpKDT1qnzZ@Wd{j#^Hbk|M66c0kZ0$(jn7c z?Q_+cg8)cAsG?V`jvyx9N!A&T`3>GQF_MX6)oJ}fGAhiI0Dwc;wr;8PdT)%_F2&sF zx;OzFXw|L0Q@hV2t!J z>@i!yB>Lu1Mo4GxN=;!AqnX=wz10l+%!E;nwDy zMIQWa3%urD2h30R!jU0vuH62(n!Bkt;k6Dw+D_-*vd|oa#Hd816CwXXq&7@(Hh0 zgzSonS^#r&F%LiC+Y{6uw>HIK~HgX|Xq8!v+GmcU@Da5YdxO_M`u@^D*$Zu%C5_fr-W}w6 z^c+*_178t`f<{ygebKvOw%eabJ_`d16-plyK& zF^Y35YQq_7voUS4PItgf%;x%twucH+-D3gCIXd5%n%?8QeN%??x%K?n1#@;*NJtyx zGKC9b?-oov#c@;7t8mOU+H<5TGMVNL*a;0E6D;#ZU4eu&*~S8RevSjp=fOp`-m5uD z6yUxryN&zTNbD-~v-mZEl<}rmCP}B^NO;<7;kk8Xm3#FFI@4ILvVB}4M%8PS^PFtI zf^FswC~5W$JuQTVnjW6vB2v_q>}sq|1pOcbvb$Hq&CG>nBYT#vd2KcP!n5QW3?9B( z8Uia~qp{4_@|pIA*#l`e7kX`Y>o$xyyQK5dEV2P)J9LXNZ=>bD zMpcP3thYudyeIbPvV?WL3aH^pUOdODXJ^htAony07*@TH3~q-9R;&-oNLF?KXaN%L z*;&D@CrXsJs*N`FDAq)oOSn74OcV@<6ASC73uc00g8on;a*ftD6r+5q&FKV*c7owq z+uNLGw@;?9*p3qPNk4aWflUPDJL^RkVk^mZ-AA@cO#6wuV|lT_HED3&6quNKRJ}hd zJ*75c^c7c?OrFQeGcgG5OzE%S;{h&VVT`{O^5L#_$))NG81Q?$DO~(J<<+`LX{<=x zP~Y>dl^RP-?a@Dx1d)8uEaC*Wa1ZCm5HbOYz8sCFVEMN9p~~@=(hnG}7c|tEn<vw6T8Wa@RtL}~{y-P0e_!188 zwfY#hx*Yj^#s7HzfmAEf3=d-=(fR-f!72E`IQP<`L}Craa7EC-jZctGGPk+%)Z^ zUgbZVyz1PONxACsvRE@ zf08R;j;E(aYWMjz1_(^hR;6idi^=Uak`w%!fN%Dj{gvO)pUnRUO!8q!zK75^_+pH- z!he?2iJdf9|HM`NH>v-RSwMk}^*_x5|5Y;oMJXFk9-KBp6z&#SwTXFho@mIW>i3E7b|OkMIu* zyJPhK9K^qh1ZK9s74840NVuhj_(wVL^S>(g|LDDtqN<3j#6P|Nw~B^j{_hlvZm$1I zv4H!(4gSYA&`Sf+0Q|otTKr^e4WWa`2L@r~{I|$QW?}w&>i)+zz|P6S@sDf(1B`=% z>2Ke*fT>dB7$Bg?$_1&;aL@2NgwL+&u?#HC{PU$dM9v`M6Xebkl2Wb}kdP$LLQ{V; zKwtwrO7f@f`eDp~02#E#k3=Qpe zVcl^E5i#Sm1%lNjf+Goj10{uWdUvj`t#$yX7i)e=p@8)`1h%bf2IdQ>)@9NSLMslS zTtY2|YOV`zc5wzU;Nk^n0j~T(n+YAlDj@-b5vaeX;F}s6T|l)2Y%cSFX7xkS@|PL& zcKHoy+)uvs?)}^PkxTq1p%Q5Yf<P&CVDZ*bq zs=xJyKJusZ$+^XBf71XTA6{NVID%L7R}t3Ce#Fq>__uqGVWxj=_F|42)8-j@G!Fqv^F3(|} zAqedt0$&4qHU+rL&yM0$K!R!ZXJ!2cgnWnJ zf(o{5Pq!eQ-oybR9Y%3*q%GaV5h8)PgALdM#Do0_3BqVD-35L?1qu><|K!I+Iy`>! z&d$Z@YpIFj|LNgRXr0!1aRbCaY;bZX4$)7K%ajhl+Plm({$MA5R2Pn^+qnjSBYFSs zMFm6p?0%IE15xUQo=bkT7fMQaO9ewVP4Yu6h`6^GQc--94I5tiCLi zvGg+&35M$%Wxv_qFE@g*KXS-kh*INAdQ%4qx{@D>Nn?~C45|JN6q&jOKv;m>$&ZwO z@Cr#BoaINtE(G=G?~(z45KzE=@^{0$YV_}AnJ3Af)5 zB{xIeYSuRT36F@zkQUJcPif#-yN3nbWNtX8aOuqUoqNWe@mtFhMviHPr)`&#Zm6{( zTiZ0gtpjnjTpc`m$)B{R6JJlB?CL?9VkeNp_kSf?#<3kWlM29spzUztTVZutV%z3g z9+vcE@jl2jIUbVGfLOI*A&^TF#>~}}7z5jDu$8y88`K+FIe;7=JNa}5GGmBedU|8F zt5XwrZ;YbBL1Fk9AaiZg$y+xbJOTH_)*wncNG{TxED+oz^AyD_bb0jiyaALWD7ADT zbf?ne-eK7e-E<&zY!R;0-!rm09W(24#EWLutGOE^i14rh0KV*==17%w_{>qyR$o zowc%o$KVYIz*iJRksyuMGxP2UsZ2qN$;BJV=ogQ1A)IBsTQ#>JpHE)BLG4k+txfYv zcBC``4i4!HX5TO_fq3M$<#}~sJV!3&_}enqq1nq;43@awRce9&dIx+qS7#BaM9<%P zf9HK&0_5slXS5f60j}Z2L_furA3(4(E9&Jzbb{trUKgngE$192BCo|7sX=S3L^-o4 zY`V7N#j&S~vMg_SSpQH)49WBKqmd3!$Zd5IlaXB|>w9)l(MGTHHHeI9C`$d-idHjU zZoLl1z|k@zkBUObHdSh1of1K4uS7WobU4h)0hD=VUF2waAH~Lx$0ihrdVu+#TRkg& z*D$&_f9^BUD}gUUfXmkctES$FBdiCn*J~lI1oCAxm|x!)nYKFw_v#wOEHIfom2QtF92)@^GcMdC}(7oMDuJ@|Z+=Ga?h%U*mOG$FDl`%*AR zGF}R?7>jx3M!gTMm_owHj2B~_82QujUWnA{`eViG>!J=A9{SIA507LiT!Uw)=){ac znEjXzf^61IbA!xYk2C*Jr4Vz}j6X~B2hiM@5q!7)X1!5BI`@+-=zH_%O;i!5(X7=^ zxv8Isok3Uvi%=;U=?toOL9=!eq{X$3T1Pk!C-7<+!xgh*F_yI?cM*odnc1TzH^rt2 z*NO`5(P;kDYUI1z#I1(M-LzSH@?3Re9dB+qm+9jenOtL^uo_l_qnG)6z%@7>7!abV z&BeuNf&k}=;5pfFh#WL8cV|SYpX8PcbM{vW8sbD`D9s$=8)ZYW(TR}HD!IXN_OeGX zoCmzO;=Nr7Q@Ubbt9Lrg6C^dt;-&6o-n}=t)nQSn5#3(NVTUL6=NVd(-W2p2C%T42 zEGZ(Go~2JDVzZ}ih0+R-U!+Nw2LLOq%_cn-QL4%slBN>!*-&FIRD(nGqfA ztYJbjIiKyhh^^<$Rx#SX#DS(nJ`O^`RbPHOs{WoX;o)>YoaT^BhW zq33cU9X#E_jUHE*OFP0^5#6N{{itkh2%+|>C$m0H*hgQqQy&iP900n{3nok!=j4wRIthphGw zlPLpfkaG1~Vykigo6g$kSHRT9`Nhh%2M3xUfivVG<{dH z{Zn9nd5MmRo;{m*?$4wLu{!}kQKT2;UQJD~1bij88|T8g8|7tldYa0#eMwtYZ?`PX zNXj0(8!Vt`iU{{KmK*c{NiU?n49dSK47cc{*4{beIu`23!(+6j6yQ=!Kf)&qEueL3 z$M>FCXV(LXl3@nm&v&uz(Kx86kTS3gaIPY~?5R3$ZlL530nrf9$NZ>c6B)E#q&_hG z!|A~>6wh3FEY;_;6e`!d=ckhK8pPT1Xhe5~^U(dY2nr1KB3B}7PuZHQzHZg)c7|>8 z`E~VI@%}?6aM(cH1yCcK(36gZrJV8io9LU%yNvLaaMHRVr)LH13d$OAM2bQ@Ogf`2#y2Tj?Qkvi~5%jUR+eSh7{P2zUQm4l|>ap;M|3jCaMB%=MIX z%Y!p2e9(ub^*m*1?gaH6{@h(~V{a6Y2ekPRWCY}u%au}6xz@0Aw)C|Ld{U)rKVYwtzu= z1K_J>LIQp%NOTFS@Zi8M!=)$E90cmOb?dkl3)l|(jCfPA z$>H*4i3DieV!!#w@=H$@Ono0ce4fuG%~zh>Abz^yya8k+rtdrNL!Kw%uhEppEkzYJ zGof+&rr?yfnq`D4t}-BGOl^(tM-+)XrhJMUW$%WCvYFnk-a#{?DWzj{ivF7F9!va z1O!tDcsw3BL&rWxm{7KsI>}1*qL%BUaYMY2XMtU5yUFO0skm~qWDsCz%ymh{AcZ%i zcM#rMlK9>*ap=&;F!@RSmDo*lr;Te~@T1+Y#0h>T7u)$9IQLW7A?_4W zgKE64I6w1`_hJN{v#hV$i})l|ltQ+c!S4{~*b+`%9-0|TXfY4*E6=n@a=ji$A^#Z3 zZAOmg6k0KN7+_;?q276DymEoJKd|8syPL3XDel}RESI5)oM4{8&#s{t{*5|#d0(=! zVFFk%717u}nZS_3k(%FL%91MF-*pqnQPc6(N~IukWvjS+XF+OPvGNbS>D@&oXW@aE>=eM+ zQ-l>S>>u)ZDy!648c9@gg2Y!H{Wx>pbj2|;S-6&b+X%Bd~`1#jHuxG`w=HMN8ZT1k_!QY6r)F4%Ap^=i@6x=y`wNr)YYVy{0g`T;+q6)j!*8D z(mBp3;L@o7l?{Euc7o$eo~j^5I*pnB+<964ENy`o*_l|3o}sz2Xk<8nWW|oh;X{Ac zJMDOFai^1?!xC=dP0HbIt(D7&iZ(rJhe7lC!YBPY${8mWb<&7>F2!o>AE1uAP@jJH zZ>{Yk;J+=Eivqx&=}0Cfq+w>Q963?f?Mk=VXa+W2EDh3* z=_C_j;bu+0VnWYt*p+1l66Pv;K1>Od7(p*!i?=>G)8Pw$xYevH`OHcTVwfh7JA`C$ z-%O)B@u_(mEx8!zY3Ru)Eg+$7iO|~iH;Af8`s4RVtV|Hk`1>)awtxbRa>8BsB6pAi z@LAleEA~Lktn|ViJvtEHdD4ag+wj=icl>Qk8q#ou1c`s;gA-iK!#WQ#k6ndoD8UTe z;Q@C8Z*uOrTD4j_W569dxV0D0y9}vU;AxmUqP^6!=uZ|+MCg_d%#AeiO`ZC=*K*a! z!6%%kH~mJ&Y+X$65wizS)8q{OjRdK|X&d(9LY8duBPXaX<6ydi*pkA;`vdzo z&vz!irV#a=vs>Thaa69RrWSj{S57Rh>yFh?jZ5Z7JMOnY2r&l!UN$lf-D2~4 zrj@Z#h2%{&;+65V^4bExgVU+m;0aR%xmEtMi^)cm zR~5j+wG_S5tJF{j%At-2xQQ<<+`jltW!a!ECe&#VPUTMo?8r}u%=tuXff98G+JExv zwr$?4w^$AQpr%M88&mc0T>L$0#ISu6Q-161xj&0qO71lxBq-Ann$e(I2TrBflj54( zIXM@HiUbl6uy&4ce$ASh`g|aRVN9dYtlPUUwCp}AMyhIF2#Gr}>BI|MSOQamPVP?B zq_9EVNRO{bw@7uZjuSM5E5i`{_`}o(n_f$tZQCbJq2geyy(cLCmjI`|6t<-Fap1;V zS`eNaBH2m!TNfQik(28i9n+JQ*vMEf)CNu)$HyeVip@~pkVY2&mVicgvf#o# zHF?E+Uu6>lM!H6i53j_c+}(RwrnE>&EEX9uL04eRH|z^1JC{(-)S3{o>lCKzEfJ?Zr2DOEc+9Ak|@B_ zW-!@$oLnrg8yv_-8`v)1MA|vl(#*+hH~aZYIie)JQYRO-<^Nx(oz2wWA?bA<0g_ZOfSEPiL3!n~?$MtIy$_M{7VNIfa_26}C zna#7RT@Y#vQ+4eIqg?_cKa|Fsf`pB_+=P6lcdWuz?*9wPqBc zjW9HP2x3!5e{~7d*fhj50^UiZduWKutp>%L*B#>{Df#CJSetMyV?pqIeE;Ydcx)_F zFdRvg0z!uAr+pdRgw~CZuhDp;5lfB_fNo1zg_i}B1O3tZ8hYp_2mDhFY7ynm;(dml zD=A-Pt5h)q-}-1t@ngN&>uO@Rt;#jvXODx`RqU^4fv+FzOLnG(%}esq%Sp6rm`pE( zS}iq{l2kRNa`BF(XM*7wO{wVeAva@{4S1zd7E?RTB&Oiwjcq8QsRa2Oj-!E1y~~UR zF1^P3*!h;(>01A%uICQK^83EX6RD7t%4#WucaKO!LunA2lu!|A5D8C_v=!Bp*+AMu zL%SqxNmDBAG(HUt+WpRb2Jd^H@9*=+_nY&ad+t5wo_p?D&+}%--kfpm-A*%7HyLA{zy0v_gp=-H zi)IyVpH)~sJ1^(k&C)Nvl^u5IZ1~&Tz^STY>+n1B5f{9~yBdz`B~SI7I48x>aO~b^ z$DFEWkWw_^_*}TH|Gl;k##^VKy68K_|L3A3AA6kp(J%T?-sxUG zM zUV&C(ai7%{qw=di2A9>k_v+qj_1Psmrzd4g?={mJ|De9FPLR{5^ZC+AaZXa1L4%I8 zrPdzb<7;Ye8ur*}Rr#MXmUQi2B#j>zcp}KR@3qt`8=~jjJ92u9vcIMA3FjWet4vO1 z^*kInHtS@HXfz?NDF2goe$&6OYgNn3c2!Sr*$}&FfX0k{zbh>7mzrwrI;6kIPmxQj`elD*LxKN{aG`7(b2#! zMOniiYZx{R4vu~`dS88J!|%dd5i!orlQ)(GKRoBx>$%?D<<^qg76t8PuR=DTw(J$(1tx> z^O77cc>e58cAxd+;e(cc-}LBI+i$?=ilwQ)ot_m-n|Wq#?iqNZg+c$1*Csm)W<|%? zE~cIvyd9Ef>sQ=hKX9v^&L464^{qyFvt|W0)Lh(td-Ji>7waZ!>LyNz^itgYlc8JE z?pt6+O~9?i^Nfql7wj;#n)UF+&fKW65%y&_vmX^L|GCbhVR|l^C+K$gRJ{42?~eDw zH{aTC;T{&g`ubH@ymrobRyFdNj@hWWqR)M^n{^rhhA(CkyTqFGHUqu}kE~sts)nde2Dl%{g=GQg))#$g$g!$#>6N z){p&balGg8vn#za_b>F@xWq1hUB9 z5cU0Ri{V}R|F~LS{Q0z2No1K*%A@?V>BsZFPC4yUwbj$DDm}FCjJw_HzkNU6R(Ygi zW~_o*cj0z^qHoQfBjVp}S%BI>I`FZ0Z|tlTz}AGr+jw`;MkgWm7OrjMWQ zGG5g6bKK+RnWYW&dv1i-N5zk7ma+QyZQ@Sfwy!hBBxK(&p5%V6clEnkokLG8`z01U z-!nD5;MssSWA0z7b&L%kQPc1va{BjB#M$ z3YOeiaiho1B+<;7(=(vz7>ryYE~ zG^@;`sCih&|2kGYk|b3$oZn0?>bAq~udDU1%utuDr8^fZwQOZs(zvW4PN}QiV)|>Z`S-;8tzLPMRoaLl31voRqXxK-t&A?rT}K`b zFBtpna^U#3J-aR|I-TOVzNfyQX4T*Ul4R>m8jhjvL&HxNcHSvj`0?`f;LqA~yoL)d z-`RR1Fm`fml!v=$|C!x&`H4e9`xcfjzj@Uu>qL4$=i0qiyk~ z%fs%CjaxURoxwQoE4Tk%8D2N5t>2w}Qg5GL5#*gAM<=G9wOGDES|fe9GOZn9nGoA7 z^~JjeV!?ypj&5r&*_d6M-r=mg{R*EKnLT~Fwr+r*uf6u)dK2A9llH^An}@duOX_2` zc8Ol+S$AI?_$;#;nZ3zz&9f8U52GEUBFCS|U!CAFW6g_>1D}%TFPA=dv-BN3Gki+! z{gsmLR!ZCRWFG}Fdz#Bj->OoJrN8dpw;a=~)rMP3Hxz|O5k-^Q7%9K@dplXu@6W@X z$%kU4`mv`^@2UCiQ+(;P!O30X-0KZqrOp314}0(+y<9J5d3@b}Zl==;R*fGvMe${A z?>D{w+!(Sy+cb1dm1b_#Ot~xh@9F5{rk`8BdC(`~%j&dwQKwguGoMyOCq2JEW%Lir zw+r4EUk!1JIFnbfYTH|{P<=PakN*~4uHVu2WBHro%c&!)NA&+NEd9lmTL(VZT#HUN z6m{BGd?V3fUe6viZ7S|*5#AjahpxJE(`Zn%#C3k_G3Rqi_b#r}Zoh75wfjts$8#rG z7$w~;s2=L{a2(;DyvIK7d#AbNw9SKxhPqrRyfC-VmWI_|7dm%Hr>E;HgXBNg+c32Q>qqR`4$GZHL?h{HM4X__D`OWt9 zr*kKyh94T@G_s|V{Cw!MQEuJS1OKjcD65P=w%LQ+eIoQ|l_Dy7&8N!mIa@av6~_v; z58r)l!!1jjxgAm;rQJvv)77xST4z&H%E03FaV0^uUGipm9K6-t#@leG?X`?56PNo( za)WbpC-kPCy_tLCSy7zi(GG)huf&2Lxl@jA>nrxm_uGDVhhBB>>?8g!6AaoouD6}L z+tsCd=%6yADddOl*1kRN%wAP+t*pPp^?jc^m(906lwrT-Y1={OKl7rqR#hJ?HkGzB zd9`L+>fTSEcb!`|d#CUCOC6UL-+mdQJE6pSn3iAVE2Fhj{4Xv0c=1Q@NZXXH^S)G^ zZh73Mrg~cN<-!rGJmQb|-Yn>NvSGr8%ky(rJZ@vJt*1QNq2T(qd1<87W2$wCPTw&3 z4_WdBn=y|L#=8D`aV&Y#gorMKs^aF?zl$vpKd`$ramL7pFJG0+d3yQX#kHPa?5s`3 z>~~LEclE#hHTM_Uzl~a)f39uk%loz~%?qdP)2RyI(Pr$ce%Xh!o|_Yu-`g)FtXsa! zbxB<`H+AT!UQ04>>nwRwn|AwZ_hY1!?Y_`^>-Kq{=%9=)-D=_ar!1q`!*a;nh^XnV zHeYiNJ`4+b^>Jk9L1$;)O87dd>xLO84m7W=Jz`(CEFkCjim@I}?RMNA&@be0_|T8q z`F0Q5Kh_#|tCo~^^7M4Qk}zen!R{f2y=(Hov9djhHPphznmW|J zo-GJU=0zAZA4(1KB3z85_}e*XGAhf9=tG_HBH)ER_?M;>ez!woG?Akrm7$&+BYlam zspUo@Qwr#o8x5(1@+@g?O}?js$KIY%eBn)7&(7;z^5?!DbbQ!&edEasO9F@`TZRo- zqwm(aM~{NhokMioL-gH_pK!hYI^pr2X=ltUenjpSe+f=#7+*2IVfVB@`(`Xz<}!gA zcA@i39pA;JYbH9++-&ST;<<2?akCe%dQP5_=DN^jh_;EP-hjliX3n0T7S0#S$PQ;O z>Nab&tZv29IvssM^A}H6n`tlIW7_Vl^~HLzyRpUdW`mq}I|~*P+956HIp5i@;nMv0 zEE{d(HzjS>EE>=}mCT(*I1&y?274#Zn5ki*Ke^3;0UCWuj_4aVuNdiSE$E_f{%(K2 zx~%ST*D-=~oq}7PT`syzIFCEDq;#`cvl-<6HqBElP44Kfob&liz}rn_Mt++|4PR4Q z@wtD>SMz{1nl0Ye?Q3x~DNncE%4XBg?kUl(>OZy8}wfOg-4?>cSkjsIUL^|UOuDz z%7(R;=gwZ99yxvHzD&bk6O$_k27ES6Gy2acw%Dd`?fyX#ISFNcWZ}JKfnkCw+LNga$|&oECMb5(dyFCy|-{Muy7 z;7cjIB>3F4`M~?KdgG~~GSf-QK6c~`i$zvhdv4}eY0mkz+}>;DHY~ZZ+MwwM&1wPpEhI!=sHtgNWs4XHF|@n3y}}aK>jXv$ijGXdOLc zGmI>sU|+e@KKP;2^~?qXqxnBK4%l&Ov!IBWP^RT;K0kld&YjP4{_WpBa*juHv&(O6 z+Run6+IQKMGLEj!E11(V;FG84dZA+a%9m~OL_yCNd4Lh#9RC&l`T;yJ|w5uG`g9+3p$7 z%6BJ-Og2^v4C=MruDJhKF5Z-|_WP4T=3g!wr%%xcd2*dHNIUo0)#LZCRYA&gR>fWN z%`Y0ZA zFjTtz9FtL+wf0W%o{GFP)TSSwR+UPZ7^gHWyZ>nMXWJ3?C%n!nyCiV?{`0+^?W9*d zj$Y3BDW2~3viQ&@r@<#m1=eq0MP7-`Ir871(q2D@hhMroY{#7NaMIz`0@LYR{GE0$ z>?au5-)r!ir*5|+@`}dl3%}(mH$>}1SB|Rhy7X0e*4zv)_=PmGX7YpZb)5TW?EsdIZ#iaFu2tEc^55qsvMXK&Ak{Y)$Z@6Ueo{L1|k z^%qIGf5&1&k4p#d?R&B|)FEe9uQz3tKUyr0{p<1I-}=Yt)Ay_{4@_+R;e7h+Ut_Ea zue@qIXWYh7|3#P98Fjj1{Udtd%PYQPPQErhbj7IEM6=|fKUau=j8HMi!jUDhoB zo}?@)r_@dJ?K%zlvE(hM#;41SH}Bo?ILyqn;Mv3zro+j+F*@t^SYAkd=-I~Eq58^} zQGTn7itG$iJ5SJE_bwsl?$(`F`{jpzx^CJZ`aFEZl@1pl#uFtu9A=PdA-rG9elRezHm}^^%c)$GJ3BTeWZsB9YoA?mHpXf4 z>pdf-mbC$g{5o%P-hA)IC*$JypRLx%o^2Wax4FxZ!Kn*A9K4ol;Nti)pv#BFo##w> zdH3O_1Cx{$ueG!LFB;MIl*cjaJ33uET%7Y~^P4iOO`o5nWCtZ5-f1$w-^cqT_38cR zn=M{x8E$R1{841~MzbeYIU7zzdOy5Zo0<2}&ijb>*zM+hVo#6j_vmEIfd2@4+YeX5 z=NM)xs*XK2@NT{Q_AqZ|M`AQhDUf zhD}-Xiv)*T{5%x!;nh#aHD19Nf}WcCgxHa<)<-=wJpcJb%!3{CQ`4?j36mo(%4hZ~A@ z+q8eD_?%f1`i=;<_OKY%cH+E8#>XleoM!CJ?e+MdiC?Efb(atSr*%&}&nqS3?Xcg* zyN|i~-6Mk|?-jytlXUGP+SUJLhhE;DO%iPb7M@DV+q?3CWncSv>+nc#_*R8daq&ZI zEt}f7OU*asyQ68t7c6@{T9)~!sATx;$LZ&y>sz1hNw!QXFSwK$bNy#^|Hw59 zcJ*!JTl%g~&jTk0OgA(e@wEEhg!>uo?4~<<4U=j*cIn%0%GCLnto8;*Ki)2u8jZ-9 zw0F||4?B(IeFvR-Z>tE)eX;$}`NPvCGQUBhpcVc$-4{*LpV~6u!u%iZySM7>OsiIS z71Zp~*svi_8E?EYiAoCact@~bgQ0vUl2|;n6>X7!{*-)uOkfui%K@XF22DF2`6+Gp^*TxTIKQ2KBj)X$ z8fuW+YRdbppW}kBE+23-rQ??6PsgVW${KIBXV91KEg#n1vb^aftbVEcxjb$4Lee}k zYS8;fN>QgPR&87zE=&|2Z2eiwc5dpKS4+uU+c8;tt0%@ZJT;q}kyiD_aAbC6h4Ie$ zuC~WJy&&$@wkum);eX)+Fp$N3KYG%+ioy;)u4fJ3b>zfZg<2>E7?#l zZ+rOl3*+-E?yns$h(FiQwG@7n#?$q}%hCO_7G%3=JvrC!klm3}FTVHEJv}M3-K=dv z;_nB3E%nOR-d;M0Ui~rE zW#jUa{K8`lC#%dzl$0X{%?W* zzo%U@QaZYf4Ou<(`fl@1ZQF>PCpmWbw0Py^vVrqvPB$$2LY#Q$(c{9b&R6!{ju#Gb zSQRWXx9b`Ief19Ut6I_UpdsB{=e@6Adgs2;W}Dhx!VRM<+b8~wy}H77T|kFG>ft80 zJqN0cG^^V=Piixy0<8E(I|9QcJjC7FFrUP8Tj-6OwN^}y(|%sF zd)X_~{2sl%oUfOhZ_}~-)cTm+I?l^Iq)Qxvo%CA!>sy8G zIY(%dw~p`SCB)U;jEd%elji=kse4JYVDZg6@N*rHQV&y%Bf1XQIAJ$z;K&ZMM) z(!7Mb%Qlf~)@^Cs-Mcu-@8ph#YZ1ld{oykVSN+YgbFN%aNL`nEo~Y05s^!vm*njWR zLsLql=YB~&?dj)IkoEQ9rgp{S*JPI6KKX8#tykA7{Z(URPdZoFE$gBzbQr#L-SfNI z*6YXZkN#kD`^EC9owi?ic*5ORb6oLIVw!8(Ys&Y}#GDU3`;q4hzbg``Be9Fm`Xtrg zir%r=`A6cuaay&@Vl%AueBSlAJZ5n8pQ7BhQ_s)(mT!8@bo_ox9h*(#?fRQmT1@lK z>F{D{Y3aFkmeyIq$4mZAKY4q+$ELgvsl&VqFP@p?mf0zNWRSaw{Z#+Lt}SZ>ZpfGT`hx*(d*J&4xO?wiOLuInZvNIIq%c>SNMv;AHnV z87Be<)mY657w_q#QQ2eEt!b)q4`z^&N#QSFKFUnVDw zcRL)P7rVf&A#sWL?E4pOQgpNaU3~H3UUJ5Hj%8thO}aX1!i#GW*Sf?p7Di`Pdr|6y42zD|5O%Ze#gjt5vOscT@-*l(h#3 zXuHoQJz7Q%u|1Qbw2rTMG-cMl3&t^hCXPwpb>isQtEWfjE>mtTgiheGrgL*Ue8?R? zAt~dULB-H>n&Zbe7p!-D()--TRR3O^W`#@+dZrumxcAe{fSm1n!m^V`?o!0{e_Nkf zc04`h%;+oQ)~?v{s&e)1fh+zle)Rf_W4kFeo|#iWUz;CG_IzO0>g(-7t-i?*5*4Z}{ZaZui{R*Mvn%`tSD4_qPzAkLem*-nakQ0Vh|a=9NCJl>Ycp z8PxAhnoopR-JSE>tH%21w%L5Ga$Uj^o0G@(Oly18CNAQf))`&nPevnjeTr98|4ona zGMe49A8d2|EFrA-m-qfLagnNI{9Bcnfzn(jbU;BLfj;~#5=xwU-cmex9=V$ znJ~SZ%cwWAx;+{YGyFoBlf%tpB~`sg)@#3c_^++)iCT{Vb2bsb9E0r3_qi{7uO@#cVy5xY+dhwK?1(}8E*4qrUK?{IbISVFYYtwCOV1!pe;rRrlf;{BdwsKNRofANpLXvYws2tQ ze;QvOUHD#Y-fh*s*FN=QpAWlxv8vPY%hPiD=M?T$PPf@HP0Q0N^lQnvb#DiMa#HNv z^*+i{Kf1)J*HIJKy$7B;OvwTa1mCBt7^L zzqC!KMeA>nXLDbNU5gUAPn=ZJ;=IP1n1%9PC4o2JELz&Cd`8EsZ<;w|X+ALV+^+Sw z%;b5=*LO>s-@THdIr@65I}Tn3hllB!DkMQqV+Q!F%z5}dx&8YtVyl&pQyz4@mEC*% z?4;S{8SB?|PxPp1x!J~T^t|iq+xF}7a*cgI*OLPmzIs}pdhAFxS!?*-Xyn#G^2$Qp z-!&(HTh`B_uGR;g>0Xo&D{PgWpp>8)a9}9Gw zYkwa5=v7i-TJa#qe$lhdO(%M-@A}QY>f_+IVMez@M{n!dAv^Wbv@NqMkDYOwW;`O; zTiVKh*NzPxUrP^P472}awOLs6H@|1|yj7!D%vZEao4vVJSLLOb`W5TsZ?$(6epo@K zgtzPD5H>OM#u?*HT^bS(PW$*}`@FkjQf)e|c-yad>oMJ3lj}n3cbP()Yx#{*vA%W1 z98(9&jW;{DZ++2viJfWZxG%$6N!#qP@R@tkrt6=A5r-#y`CDcbZ2IxZ{gt=2w`m(P zO?!AkMC((Fy1WTm7P>;`rEPU=oBrt<9a_hm^>HLOW!yg{8MfLn@X3YIhrcXMPBMHG zY_{+Fi5-_7r9Z36I@U|MHX<}{(t?`UN~-^@*9*3%x4ofjKXtu`Pu9{((jRhEQ@d^@{9v`Yxb8GRcPy1dnm8i8*VH!Zua{a4 zf~>9xPa(Uy4|em0AM_pWCHx;Rl}hm+dKOFRU#=EXqe6%_tyKpzua+(hA;PpGr_Tuv zrrw1R5+f=9N3BI7N*qd9Yf9kVP5)5hgoaE=Et*Z3QO>i7R>NV9VrGrQLW1U6Ob|=y z7fCI|G8$|lmeUk1Btn`M3yGA0OO!O8pUUrNOO#aCS%j4vPEw+zf9%>qqNLN_7E%H8 zw^YbXC1t*6Wg!*ODRr78WzoBZ5p{hgVd{aClZuhRy)2{>8r?!FW63e!yt0rgm=#JD zG@j}TWt7V}jgFLH24To2t7OQ^1oR$Q$OO!4WkQCWOvpZG$^zDr$A(Js8mC2g;2K7R}f-aNOq8x$qE|arESYBl;uQCO@SS7nyh8fjG$^{bj zZKoI0%AVPFxqvQqSjYv;cFWnlku$%yZXstr(`6wS^R^wn`-Qe0tyP^Q%f4L9tW7Rq z)+U!Qf|N_yDH)wrTdPdkv{s}~>V##C-pFMvAvsG(&g`6=6^@({4o#SvJw(I2apTp= zF?wPlS2D7dD;W_e1k5xFR$UcBdK%SrD$>__7;XqBI`+rcs9=5q-a^4x0Qi5FC?h`$ z1uGndnBIFTG+U!Ht?o#R)Rw1^Fw0V~TBMM&e=}mUP_WWaFvmb`c?x=G5J|?au$!%r zGbcyEYK?-`8U=d|F z6V&KJ6)W-orOTdpB`XSe-JG@nN>&s~Rs>4E2$b^1_3F5YTiK5am=ioR(gK%=k~xAF zN;xfi3#Eb|p{HbQ4MvYD zanqo;Uq_?_c{0`m$%bAd{DWC6{DWSl`snnMQHB&XmoOb8W);#kA_{GXMCBS0)Aj+Z zpoODjD|>I~oeH)PGdteO-Ua^24rSR9bEHPi37$vkgb-aR|2Tqh5=+=)goe<2(0iO^%lokSYelF414g^3G0$f;^g_u!; zR`!EJ=FEjzxH&xn&|ea2)^egVWfn;Y^f^Rkm{3WDMH289JAHCEVxWm9A_*rWF$ZSm zXJ(|NQAA(I#tB(Etk4)lF)I&tF`Ng$EJh@!W-fwHLZ(I$!scSCB#JQ9VPylWsfZ$+ zb!k4C#Zay15u=P6XJhCymXg{w4;F$6Lc|zlPTJh&u`3a%)=PMz6VZ+xr|u8*o9Jq=MxV4+!JQeav_yAANEeffoYM6n7fPW982`& zEs?o6InvyM*(EZUA9MyFO#(8^5))&AZ;6;X6iWV!K^7wBCgvt! zx)Z331%!i{Iv#U28u6smiv>h~N*G6sXorgfRCMwJqKk$^PQ}CjQ!`c*tu+8xxdt}k zTpZCwpVK-8; zgu&wYV};2PXM`zMQZ9*b5|$+p_6Cgune_^#)IA`NgP~``m?S)mM4Tcq*ony(8|u#)P;mVPxY9?L{z~-qQ9fM zDH1ZO#?j`a#z>%XVnzaR;6VbNsTPX}`}W*8W`)e*qv9434y{$6P=^=6rZrB&AagoP zvn*tXj!YyRn#-xWB%(dFDG^KswoWx|YZO1bPL3kIP9dC3SZ5bXJBhFdlHN%~e_L)i zvjQfZ;Y27@J2mhZ)psedc`%8v>n>CusCG7l%%P=h788!T+@*p}RnTI>wY@qjdyJkf zCLGWy$X!Bo(PQH~=CFbag(Dj^ESa!(z5(`1>Fj~pcL9B?G5QxPAHlz?ykSHm@f`A7p8)2~!Sih9fQw|3$opB5~h!R0m zNu%`$m{@}$BLXgD%#mRSiGT|k?P`+T>>?N@W4u%j3D{6Drh|h38wxh)U`YcT3g)9? z91d`ykTcFWivwIJ*l3r902d0zQ75@!z=lGux*14_Y!-tVB?dMWoVwEcB?dMW%%Nh* zh=B_Qx8n>B;zB`N4-N-$!GuZ{y-5ZMvB72~n90zFu>m0iK>Nk1IXwpL78}Gc7-+MY zGz&Wsa4BUYX$Av$lrk2|qIcl*fLW2jbF{6I)`=A&s%kya)0b0W_Nko^9*Wq&mm6Xy z1SUls1C5x#r&z%1K_d{@5QC#WdIO=D$}NR^2pkEy6UxDWDIq6f4hDP)xx>l9fHe_L z54aOaL{!}dqC+R<%CP7iJUc2NG9+TAofxqx15;!{p+m>&hstAEzKlB|Dqvth#$+4R zh{4)rY{b_zhXT!^;BWHlxErkdQ%%8Kc7tLjvY>l7S%EikUnBI}F&6sj(^oHe_rnhs6Od zWNb!*g#Z^a?!KTYBMqf>85tc0g4p1U1p`59!f7A_L2RfAQHFF1T6v5a?ZLlIKYNnO`|2ihFrp=q}a(27ivl_L0qu;S{4U!!DeoI z&mz&$0Ll{Xn9_4e5gVK>XCR0T&L}ew#0HZLVkIU;T&Qi26mg-pJyOJlii(pkJ7R;g zDhz4FhLXLv7znVT;7l3=0X7tDvX@~D$Vk`}C<_2C6x_W*50U{F3N{bU;E*z4L&4qa z3=*)R;G7-?0&FO_9b+KChC*$_WH7ygvqKCHaG_w5IIMtVhzqsTBO?(ToI6GjgHaMT zgUc*Yj@VG!LOEiiaSPE7$`Kc821ky#V15RJon4N&P&*lNsTBzz)#D>aY^WI=IV?!2 zb~5C^hEmPq$bk!`n#BPWDVv35xKIEWO0|=r04|iI+R;z|8%oC6Wf!dgHk6zLMaxG4 zY$!QTh=IUnDAg>o0=Q7BiC%%YP!qiZaUms{bRWA$#Dgdxf8QsWSqQ^w}Uo9MulGH&-8 zF=2CLY%aJ76DE{#d)SBxTO{WWM4!fnsEzg{re6FG_+K5^})?H|mFK;F&$yLbNBjGl_D9{JRgz)JM#$N=1S^7 z9%0xD^pIYdQbC#J6P=rj7!*N1(SjNU|DyqeeDjF~JwX|0$v4U%Y6?djJwoD#FBqTA zhl~I?`vwJsVfsg1ElnZ3Wkvtt+#3C%K!0@7kPE0j1%$Dgs8Q3KsKEx%D}qlePbnaj zK9D>>#)m6wG}cXM8=+n$p{2_qx&_aToQvvJOaY+jbu*zrETrBQ5Ei}QAzRQH85J28 zGBcRQXOk);0>bIP#RAHH8{wq^Mf#*|#1Kekh(*-(ZN#E(5`hpBz+#C&Ah1#?!^F%9 zp4v(PGmFL4tU`h`23-J}=s$~@7Ol|#OC%DwwWyZc35Bspj240ZQ+Wz52Q>ygmBQ~> z@t#6vges(;N|2|9jfHAC)qtKtzze)%Pa!El4c>vC(#1;bsRVY0LQmn`K_HAh6)PlE zE&Y^^aImK$&>{Iw7z-T_{IMdTh)Q9eq97L=3-*M%M?a+#?ATL*R7~~S1(f9yttKfkrl< zrx5A$GzTsT88vt>@C%IzC`W`17D%KNwU=Hrik;P;ij=VETIMNV?L-PlDa!W&X@vmJ zI&ZLC3Ol?HNJB-JCl5FR66zj2C6#o005-7{87x(p01BhH+z<@;jB0oa@GN*|KqNs~ zZZ$lpucC-Wpadv)(14%>c|mH3N;uNkV2MNohn%{&pRgoRa#|fc<8E>k6sy8ufdbThr3ypz zP%wnS6v(JH!AJq@y@2jRXaXXG2K5h23P4bSTu)UzfGKh1K=km5fgT+U;A5pEE`EU+ z_*0(*lv9eL1l7TaAoBQCVFDP7+zT9rTmn^?P$ZF}TLk?_a^eSqkiS(&1cJQ7j$kON zLjQ4N5kchosltGs6a~JjFc=G%YA}#L0CDXG^C?650oB1kkZv_og~3?(PaO}zaQ#5^ zP|U457SR(5Np&C$rt=W0hzN#XOF|K}vS88zBr$GA&{$kD0Hbr;^c*Cs{orcSVW;ZE zKu`oiMxaJfqroUUi^1p~HC31p`UU@o5&~F#EXW^z4gwPm!03dHIzea$!SG;#Z~)W^ zqOm9iqB<7AaNPo# z^TZ0W#*UK^DjO*LQ(X)!5K1Xj@e!h@CMx^Zz9hPn60m0&Bd|abs`#jmMKF9`IK*@% zN)-?00K32&D@O6DDjv|IGpzI;a}pGSTB2m2Dk2aR;fe`^!3L}2AsDV(LI`$o-2!^B z?#8hs?W4kADK0?-LsdZ4#Rwq@&i9T40{$V9$UrgF#sWP$sjE(psSIC)bS_nO zFc756hN>{I(_ntoCkA>7oDnpZHWf(zocIAqcOv2haU%r;<+!hg#-f^&>R5pB{BEeC zgOzH+qxT;O%5XD}2BRntCx}Z%CkPO~_~{e~z$wN~9l%K5-XVhcVqk&1TNVZj z@p}ltP)1C3(cqE%FM49e9s&PN;)jA4PlQmw!ngy1Ql1kIkpa(Lgwu{|KP-@L2Wwm) zl0OiXp)_J65dHxii}>bS$_p!iARJKju|m00ib8da9?wRhu_RwJp=BF0TtbCd$a8$f zpj%Dnm_5c)SfTpFFbQ2GQe6!AOmzMPU`;-zL<}9S*u*fHuIQ)^MljquLf(aLXH~@m zdUR8;Dh$TT)$IbU|5CZ?kw60wLHsHQf^s~{K?G3_5}SlhzpKK)!<6AJA<&aaNWQq} z8no(Qm_*6jV=w_IgRP1O1f{rS&{+O4hH4wDGmSnbXdCa60D}L+&cj8?vkOq0!_GFM z$4$bWFrWt+47Eig`GY%&4Ms5Bnu)+<;%6HO(q&myDZp3}Dof)qT&YC@=pk2NJ|++Z zUxhbVjIx&)LAb}%VIl!!QutdUz|#n@KuO~b$oZHEi26iSClLw7bceqx44ewOQlJWh zu~OU#Mld}0f#~5cLaU@ z8ci@H8Nh8)mjV!^J6%*Kfx-X7@08Ik4XSuR4;%&_J-X|J!E5v}WxO~OCZX#jI6+jH zR)xU=d7h6z04WikF_VMARUa!Ng<#Au8vq397kX4D0fPU-enY+on?wXjX53Z)JrQbn z$LS#$Er0HO!X%LJQAdQvP5~+}styK%LX;I(g`u(k1183gBBG}f3NZd35QMm#M-Zmr z!FYiV5adNph#o%y0^5W!0{4$x!e%>~ln|09_(cTHGF`I6IHp@9a2W2q2q0ikzjV+D zD4HUhg5<9ve!7mNP7qEQwk0r_pQ#1I$~!sG;Ea!zKz#-kOu0Ge{g;TqpTtB1PMr+j zJHV6T;kyJPSl2&WrY8t@i)ZaSo&aqS0sV840v6zZu2 zB!9^7;3gAbLOhxU7+oz@-(ygJOfrDSOOOGKej^AQs}z#h9t(t!#lWo|6f^MzI^aPr z2j>oQhkSZ;Gm-kl5(SrbZuI|vV53vWoe0oiA%5(@trOw_DQFf%!Hj1S=Pg9~u- zdFdjEDDmSd5W-c$DSD&-2Q7!V2?j*EU0HoG@WvO9V<;%$9D^yt(z&4IKoJ{D0uWN3 zn7ANgk7v#S5Awb|Jo*(%wFQaUnaMumg2H;+3JlyZ3sge(Dm zwo%;zKM^9}1UEi#mYOUp=l_A7;Z;XOsN#xqjIz}{m;%2k;hl0`{0PATuXraQVGf>V zLYbDopZ_C8BZ4D_8y}IBpUM$ID8Q4TlumMasP7%TN6q678eTYU<;p=KXr|^#23`kt zxe84)bhjQxmhP=mg~18uC03ww7j9N{;R2ojw{uWdpkD!1qbGtlnCWGLMsex{h>(s` zCkVFTf2agBFJcn|o|tFZ!T;fF1eA4E=b$wjTw&hT50w=DPDAS+Z(``nH^kU%Z;VoK0zdMf}H|hd7^_&OU zbfZJ=hNsm~LE{-yI5<2{4l0g3p9s8g-W3HfY%IuM0tr`K3Xss``J_-8#?L#9h5QY+ zO<-*B@)qEUd2S`Nx`?FsjSfJb(m<&K51fIZtm#@{D^CF9-DSWW?`VU&(wOUNywPC} zTnS+k1!_1{+dD`e;28i^`rzFF5NF|zIp9IytWJ+aK%Tb33V9_U3G__kRveWycrYp5 z=&8PFxXLg*=q*BdPul)9Y9>0y_~i(QGTcbPiRInikSKt&qs|@R(QW0bi-Ds}e-46y zaW^`Az=Y>YK({VmtRO7RR-jS^UepKIAH<-(7?Bc=38v^`sAx!Vn+{f#Zi!Z1HCSLM zsNw`6!H-V@AAG=Xc`)<5tUr<;a!qLYbA|yBA)vq}fh;l3F*J=Td8Qgl6+G<+RpmKe zKux6*K$+Ykv`K!p1fl`dF03X3Xzjx9Sh$`c^y1;cjgP?~@Wqb z%3Zv;67CzGuLdxcTp?3q0_pRdSs8@-YUdEiALcUgSUiu#~5IZ$GFi6 zkVDN1v%kO{{nm)85+WF$iGyqyJ>4 z!&qnx#9(0G@TMwQAe5SUc#x#ToB%)s7oUg7H#ER8zVC3Cf;*3og`k8F1I^^{I41yJ zp5m_>Wt=!f*3nbI*=`)%2%}%sQ&Kp4wwBLh3FL^?y?KimxnKz@%ARGE2cAGk`myr9Zhek%t|f^QR8GVr|{ zrOLMT028Rlv z&s+fvyP`qZH zBRr_b@=hcwX5n5S45q&up(cLFZ}LP9$q03hfnk*HW4Ea>!h?x59ui64SFJk1N=O@UifjUEZB0f$x{h{AeUjT$0?L2Vg>p|%SAI)Zb92VXFj{@Lk6ZXakf==@cCvpOX)UKCAPbjnD3IL%Vo_2*hlGk`8f($qAy+H#4uPqhuz)8Uu z1ubc`G*qn>=q#T5hlwG&-?P{Y6jUO05TCVPO1@aP-bgn30vzyozvI}u>5Al|}DB>;m; zyBZ?k!L5Q@Fi7I?oM+UPib)1KouIsl(*r{;#`009C5q=^fKK!5F8I@U#sI-Zs*Z^4|v!Qwx9Qc6=>!EfWez= zja$Ozqu}W9N@)2HZi=l z#*0PaTRAGnoykYRU}*5?59Wn>=mO;9N%@O`3N~&lU@UH=Bw}c@QE>kc`Wtu!F-Sr1Of|rG z(JJH-)pHtMVE+M;{+SHbqX;kwHTx5U^YlmP)F1Iv*pPJKb({eS-fQ-N2d}eWLIa=U zf52F4uPPu2k#J8MUgY4t{t7T&lLY#}3EsH~?islC*kaJj?y3g}DJXh(0>66z#%qIz ziTMf-M-4x@kfTv=_C|9+#t64_FozO8k%g@gGDf(e1OI^cW;@srUUMHz%vT-A@8Dqq z(BqOHO%5{X9WR6fn=8Vz!O$Javr9k_+%}vMh%qqx1!J*$5abV&2ym+lF!1Yfg0Lez z7~CnU`$>x$f-l@wLHh!JRiMrj5&j+?0`fXBAg6@8fgn}hdpQWkGdHMeja@0|7UURd zbdV8HO*0WE@FENzErTDz%eo+#%B4qVh#@ZJy;g}}*!2N@z^J_%H)>FC!4Sb5A|rrp z31lAe(goDZd3|aC0}*0lAvq)A6>R0GPZL7~x$yQF3YvIi4?D-_7+eIkE=`aswD>@7 zf}MkNkRieVUtfJ<_yz{g%Yt52`eR%`r_r)QuPX1oTgZ*^{1v!Y=`R?ojwPW@ikGrM zZ`a|;ER?sxuL^i`g_qia_ySVN>Wn}-3K~!_7`$)?sUl?mnm9qdb$A#LFexq>fYF~k z#m361{ZG(?2NsuG%wXn92N>LN9Iz2ae+^A-5*Ujc8W<~4P(!~FCT5VNgr7a} qg71E#Ph-I(7GACF-DggXK!1v;Mc)X+){sS#2wU~+IdJ5lR{sa6G>BgS delta 235846 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%0D&2d7RQRSSdyaV@i z;`bk+?&ndhCb9_Kps!%(TqWoJ)&wpNRc*%~Dbe@&;%yrf%%s$@GQJkIwCp4EIIY@F z4OQ$%PK$a;j?X=4Vz!2e&~Fz(^5;+^P!ijIt)OZ%0K^+7Tj*tu2pSnRM&WUNpkWgP zDhVdlehI`|uNLUKXTPjPyqV6(x-7>{HX;j-XJC9+6x2acP9_lyU7Y!vYIm*9gO^40 zt+b&ID!kF;B~rH~FanX-aPO5N3$n#KB)gfa!9ToK)?u=|}UZuZvAab}T&Vd{;;-GZN)5yx}l* zG_!>{(e8g&f?h@Z819c{VO0WCq2?Z9c!c&IjbYmud3)JB$$j#rbAF3&ByXe>{cI@_ zU}p`-$w zkTB!5%q(j%FBN%)5^xIHpF4oHUCenvDlv?3Ay+GIPqVD=8CfZ`#?6KtB3_MGz7BZ* ziBb@nvg=s|`g@~GAVv&Z#~k*X5rG~7Ydbj%#*c002@`Q}IM)7vXQ+H9VoI*FMyU2E zm84o(ZT~&(BkV~^WLZk%6T-wEO0f8yb+v~*b-z4>(#kc49XQ-H^0GJ_=`p)-No1ig zZHeu&n3G8DJE?XDG`!_nROLFT!42Scour{tXGA`-tG6J_eLDS2Rs~5{!>+NTbhON_ zC{^`K^{?ya=nQqh+ZUvCK4O)Ab9e9Wv{=kth*;E4ZCtZ_Y|q+iEnB3`lDMPq1IWE^ z*&DzRn3)?oIh|e16FFTo)Hkfk9m&`KuXJbT_;Efb<}^U1Zs|dgfpW63r6NH<5TwQ; zg27;Mvi}FT^IHV6zL{7p(nTP*ax6Zuvn#_6j}4N0b+35b1@zXmWa-~>(> zo1cTsnt-jOLT@5{JoEQ7ey^Ais|i>OD^nW-G2?Ix>`cq;ph0)~_6|Zgn1iHgVFl;_ z5n|LbfOaJ}fxaLEwUXxmkyvvV0o0O$!Fz%1nrB-+D86gL(0UCnEUo}ROf0n?uxmhY zYB4Dg-<6$pOWKpb2DQLzz(1O9dn}4Sf;-4r>lcC2_xx1UB(0_0c%$PWCJ)Q0$!9$a z-|Lj$G3kB6tAVN0i`yTxU=`~c9P2&c28wx2#l>IR{a^HW$`?Jy;5h5rryH4_WCr}~ zaoLaBz2FA5%^;tdYrTMS_-Xqq8v{v56z*Al-d;bk#?ttMJ<>G5ZnpoeCbIPlYk2;FU)im;7JT%pis{n8IIgPj zYvZjhFgp61Q%1mk{?dTLpB>~KsvBul^fbDcxZfTu1@V>L@ehCk! zFTegXb9(ui#r!NZentm|9&xA!9(~%0)$G(M*0z`Nz2JHZ1JvUz^`} zp8{4#Q9tHE{B;BbiiS9?31fRSg>((}+~c#tiC5+00)`*snU?Stsz&_)u!?c$ufhq< zxy$8?_z{V9b8ZIid|dp#wcm65MEt+K&W&->Io|6JidqscmtO?0h&9(;H$onkuMxZ2 z?2gaFekr+G*|svM@wTvERbDel$7pF-V)zAv6(}$KEnyzY%@&qrSrg)<%!^0}76B%i zYi3AewOGO;VZ%0a-MsDqXd()MUfs31Mv^QG!wZ>BM$!%PBK|9-Z!mZh`fSCrS75^9 zJ1I}8z5TQ*V*>^%;Ofct?3yoiUk4<13=&V>squxnW{g+`$Q82#S*pR7X;CL0 zW8~l0ifRYyd~38{voz;MWqW?uBl1XhEKl@AGHfV-sw1pDt9XS}L;W{=}^(Vb|G zPU~L+jZFNF)lA&H1znZ#J;vMhJLg9CBT= zt0RTD`WnI$^&Jw})P0r{`|P$a!uvY(rAE66BxI?8KsV=SfzGnAy2~PWSL6IGkxN*5 zXtWe}N0RvYF!@e)X5YFk2=D}yyWa5%>%r2e9OyqK(fOx@kMalW)m!@gRV~{<_Hd z4~h{$x(rGQf3fG9MO2&sp~+uAn)7|=;!P(@Vk)oY^%(Mbuw3MWAb0PzgODv9D?K%V zRe))uB*#%c3&pQ&DOEA~5KE1mlTQMD5OfdU*XopZ-z7ixqQXrD))upD1&TXO=VR`} zloR04f;Ldkk3N{h-iFyPR?2XDr}L%v)11N*yEp-=aWVr*`NM)a!@POPCyvtQ* zc+Z?8E_$reRIqgId|_c+X>syP%4~{Vahg+tWTWr2s@oa(?>i65WE2;)O|4#64*N}j zNV#y-u_JE{nnFX#Akh=>U0{)#&S5P9vClbn!=l=XA;P$d-xm1%8lsJ`&Tf7Nq1amE zt<)n*OU7szbIQ@sd>?z2;o0iXL24*MGVahDiqHFaMzF5~*K_fL9Q(+Ab3=ibp_~m{ z^w0wPTtn^azSO1QkX`;lb;(DwFX%a-`dH%~v=YYmUriKQhwY5BBGUFMFblGqlQdidW>`08mdWAPIdQA(=;)o2Cn)y&nG5;?8E{v zd-3}BBXG%l^O!*t&X|=G0YGm>|9rm3vxc+e79*`}j}5cyF>4vNdQKyf2gNPivZEe~ zvJ|$fo0dc5Jxnnxv$0P#`{4*Tl(hBw$pxBcT>Fr>pJI9g*0Dy29)I+)3{vo{j*8Vo zOPvt27C6%mVq=eAu{o^d6dMT;Q*&z?E70(13v$_LP(Pe}X7r29X{=$8(Vz6gOtptC z&<^+A+M)eri0k5(N$HvJv3k!)+k^gWI*VMI&D0=iqTHKdf=EsMv-?)ByRz9S*zU1Q z5pO2WAH3bk+1<}ARb%$dB(|eW>;*9`(+KKIZnCUXl1mz(ty9_N;&`z{1b zER0-Nx1HEoqzdDH8|wk<<*5V%X4MH0utNjW)+zr&kU3u_t_PQxGrgNNXqB%fy(ztGz~V`AXV=ch~9 z+4S1j=cM1bv4s6|$okI(5377n()qgrjYo=s+v?v3=(x^5%_#gI#zfuW+Ad@DBKz*- ze7O39?XNMIy-31KCof!vSr|p-z7rnZ3{fT48>pj1wiSc;8qT=9@uthh*sGPKUIRFkYwP33!OI{R5bRkEd#< z@9Cpxm&W;z>lhW4U7m_BdW(c(Fs4b4kOxX}->6IzzqAWoc7({O#+D_MVXSR#4&})) z!&w&#Sve8itNe?qgEv%`3 z&5if{aR1iO8z$O@=z~|_ddBG>-gXDgw#;@`20JxsItt|xir2(GqXTeQvcl=+X5XR^ zpiLpkKGK*J$QL*l_V9Ss2fwcVAsC%H4c#})^uMyflC4wpD-PyLdy+eGvYGtaq&GX# z^-w*|VxMmWsE$iHiwEOSSKCwtqDSeM^5s!w?lcsuK`fgj)|(ZQR1^Bf`#jDI+i$NO zW8Q4`TF7ND}V?$Pt0MQT8z{)&Vz3HLWtYz_%S_ zAEv-LUMR`txHp!@$+wQ=5Cqx&Cd(_PPE8k0e@e;?=NC!X3xwe1%jLLl>h=Ljl04op z*`JBXF_Fx`~%;l)wl?B7#9B%t=ju=O`4b6XIr&fN(?N;0KRp@ zrUe%axT_1jxm%?Eka9vrH8#eb?TUZN(T^NXbn8bDEV{z0u1mZu4BC6-X06H|fIPY* zg3NVs8AmR940n4maU9jU8ZO>6ogq`Nl{wx5f0|VkD&*rsd?C75HN$&XlAB~NZ-Y2a zu^pF^-)F;gzeHs8GNC$&g?8Dryn-3+@9>TW^u-$5qU);{w@i~hkctf+uiZ%es=tC; z^}GK0GT1Lg<4?w?t9YK=7TG3^X1N%*=~>a4mH6YC{4sy+K%T>0sSr7Ut+&Geng>iD z2Iqn#ZHIgTma}3Y9<@Y;ui}&zq^N7%KAN~hpwiG}E%>+A+pm41y;?M(=F1-Ikv?A<~!{&EsHiCg3JusSeUptyw3|94*TY-&bEzjFVVnOTWc z&pn^*?2fJhYwP)vTJIhgZ{Hcd0xq)~aD++Ib9_eKIw1wWUh2_VTF8@bcmN*2D!#2LXe8NFxI~v_RC!aqIH8ejhjJ!Uq{ND7`CG^olV?LQ{Elt-& z-{Grh_#9X6A;h2pi}Xx~4^~4`+JmpJ4#uP4YasyZ^;b^KPhCx^TjS8kOdw<(z>1c$ zawU{oQbKP6!X3XH3&C4ES>4w%`rny(R1^mtB2k>EcVY(ZzYw7NI4L2 z9QDdm392M`dxWqxmwvGf(jfS2vWgEFR^A_7I4D4Vm&>oXtUkw3W*oZO%q&6my= z<20l}L{N6}q5Ax<>~rMxpAQwaj0On#8(FOl>%WSyf0t@kvMQL;n_aE+R`fe+zZ$mr zN|T6=rY!oGdVzagRTJXaJ}iU;)pC!J$t`Hp=WZkUtr|%V^AWfd)oDnm1Hzu5$BI#y z_w>nMiK~SrH8)1JHg#@?;(TsA}HM!Qh7uC7VxGG=%?%?A7veqT|Nu?^{$i7 zvz&Tm+@)c&&xZ$tSItfZuMp?zFqbeZGFzHl=rUD487id{vv9)-TlAo4f*ip4wOqAK zxruq@1u|E(yd-kbCD0git@IF$RD1>1QzrFtkKAX(8<-3 zH_TUxp!;l!@QE@7vJ0C>;|-kzh_E-dj3;!RARm|tPl_aLE8p|A$EHO~#muqgy;tPz z_?)i`x#x31QbP@qZIH50@1Rz8v}T~rh*t#H3z3{okUyG80_c?Lqtw;t;p$I53`^W9 zTAYBJjYSk3P~q^AR0&_`7(D;3#M|2qNOL=Xqgx9*auA*jMfGff`p{oLS2o&ON6{{9 zk7){tz;8ZglF8lcH|NB!EU{BPV#l|L3CcNbw+|WM_9^E}L08LhP<-=AX8dV9|mb+W-qh&mk z(OmMrD@96%$g_ESmd{QeD&B=>3vZ|n5~^*E8S_{AomgO$iORhLry9 zI7blRp&C1pwK8ug@0y1YyJPpvCA=V3#{lK3VGghfb$egd&kYb*yG=nQx~5P{^;_j3 zB<4ahDF6-yM|#jEi*igV0`$$X_>QsBgx!~k$W8F}lVT#T?p_h2)Pwo$c@V$!!dDiO zRS^Q|>v8mGa~65>IsC%5N2P%NFgDA&Ju2zxdgLXPqTeDpbFp@Ez^sbd#_la>Jqi<< z94s+xMajDX*uU*WaHj7j2zopSB@O2~+|;3|V?c+JBU$i8Z3@U@`7eC?FB(@yY%$Fp z5h325^k+wytwGZ^hq8S?Xh#K*_@xF26@B$M(Rb|YJbJsa<7e*&QI$E1j6=l~3(ItV ziX8qqHsA}j_$7!d7RQn{weImrT+gToucoE@KiVmw|THr>k|Bje;v%m2U;lC}4kb@x;;~ z{<)GYJ$Mj6?vZ6mL7^Ns>td*x;4sUWyjC_=R79TBhmzkd9&f<~4qmbqy_qv@=XTDj z!(})^epFsZLvp$1+q_LO2i4{(4Xo%}J%Dv0OHo3*#A9A>&nLZdM~~ zzWz#+^a$r%Ed}8#+=|ab55?y`<(Zcdrj`4}*Dx=awbfw>b|xLFw}+m9WDx3A0MlKe z{uEc6otF$U@aSe{@bQ4GWzfUY#v}LoYybe5W2;)NqCicFHJt0qayQ{CBT3|Jo2ObP~&wgau&VfNUr3zLH#Lf@#!f99pzRyXoBhe)Y6hy*9YK(=s60x~I#N}TBxL%n3Iv+; zXQkeL&i&i$t4+7<6#b=%MQO)goTDrFa}k_w!#G|7|H+}n@EProcf64f~vjV zif=?ZoC0{#Ay72l6YR^~@dn4%9|cV$*1`z&;8YyjPB%Sc{yI^Z5Gus#36_J)vm8&J z%#^Cul7HY(Orp&XPTw^>@}t`E&L%0BYkvaIpPN)3iJY53c$${&;UI)GiZ-@=Vyj!T zC&O>0!%me(c0ejRf?CY_6rd_CNgdcXsdXjVq2MI;EH;d+?8w5Zv1<5>W!_EB7f&0prH+#vZHsLt-Ln!*%`8VnIHfi zZ#Uo*JOun9`w$ucysXom%da&D-rixS zv}OK*TH&AJ7yM&0c<+&4KBa27XdQv>iNUlmg14uP27}LW8i~3505!TSYfl>5!cO_3ZZ`RO; zAU@Z#yH#1(_l8>pDtMS1=d36$)Y04wf-|Qm7lixDDGNfm;=u3r%7WN)OvYtBa;T-Z ze!u^2jvSCz$CE82|42hxzgwwW`g$l7NVuT`0M2#JxxeABz9di%n9fi>waRRpZX#`M z4FXJcEge`lcp3!t|293{rC&1g^s?iOu{v_C4$@aK!zZz*%#dc2RYhrmgys8Mz+Xm+ zQ#rLHKbx(NT^+crVTZ)R>g+6`rkU#A_%^~PrAe(>F!9S+|BmGjEP9ju^ySo{y}#8x z0oa@iRd${;3M_HavV#16sI|U`dUuF(PBVT6BrZYqqp$Q@175*dH}Y~rCLW+5nX z7MG(jc}w#qX6{WySl(1FQ&dT{nzmp4khGsAs=Cfqwl2=ZjtW<&J;MZq8hwh~ zbGLF1L-6lz%dsUsBW2uJI<_L?4VrPrSndmMx5}qE58!E)ZoAIW-f@W|{X=(D0ALFx z#U?3Jnq`2moilwG(Avu-4edvyTCK4iNjPOdcwTZ4(&+U>;TT#jd`AIu1Sfm zrMrTRxw70qsg>%>8;s-H9>%zu4CMTovMn=0|1Hr7C1^g<20C z@~?;`Jtfy;J7*!kwk<#9BqI^OvxM#%Cq&P%9=%!OJ*8U`?KScBP1DDpNsYu1f9s$E zYDXGiU3vsbo--0lCsI#m$Clib9e~lU8KX~sDdEV(OmB3H%uW;c?fGgw=D=2 z$uk+115#q1TRpmbTE2dE0PkO6fY&-^YK0`mM?9yk>ipDoDL(AceI(pR2_pI3*`*7% zFo`M#K%!R*-b`p)ko%2aRV#npH)=-!Lq~{4FE{S6nKT3gmB3~8xtT=Io8NX5UW*B! z+HKX#${kl+{5bAOR$Co2z%*|ZRo7_(Nb&x{ zRs8C#HP|q1r>J#21nf6Am8YtL+WrWe*wkWQKM?xGEo^XnN=j~YSRJ+Uu(m7g#~$G5?~r7cm?%=d)^adQV{yf#Ssq5YXaK_QvvA;dVk2l$USS_nIcdb z6S|whsEB+%yXR6Sz|cu2ZC>R)XHO*WcaXBVkUo_f<_j_T+r5mrb%elDNS;qgESeLK zX110<+uFJH;P9Mv`gQjR%KM@-l*azziuHSKGjpwRgZJQt>91U|)*oyj1MrU1hRFg$ z%hm;5H5?Owf4-jeI{FKU%DXd!|u)%RyGy8H8m?#NpdQD*!AKStDZ7 zxW+fl1Hl_D;CpotDW`O_3VZ^tBcorirl!p9GzEuZ8Ip=2*MvZ>C;!o{^WAmr-&wbg zCRfMU;LX|dl0wG>%wiE5jClTTH!a^1Mp6=n2saiThR2Lzb*W#_j;>Z)@U_^hf|t@4 zDNa3nq&f6x!V7 zBYWMaQC|}Q{MGN{lA%h4OKQqiiHhakZFIkM@GY$u-bh@yvCe?z7M=BQIiH~&{k{fe z9`^M~cVY}}!s)orDm`M0WX-p&SO=TpD~EKoMF4K%?q)u^z%^Mo#l)jMpz5 zwAJ)EKroU$9lv+f4_$Cj?oDL0ON41GX=(xXFD)&3m7$AYAGA%P>G*&vkUqHz+6Mr^cY1p+4zZD=2=p1v?z(l6mB{$^mka8{0P#?} zUC$#%5b=mD>nJ<-LbU#7Q>5c&RT*g5w(zvm_)nLnuzx(tRh9*Ve{L60fx%G?Q=bIM zO6dd!3mdjm*L2w)IH>P4Op!t)R9yl-{K+Diwx`NW03!r%={rMQL`<*(A5N;J=;NGz zv9qlh^i#+CEjm0>A|J>hrd!0QfKlVTq0rM<^){hV8`F6WmvHSp<{9=a9-h7E7Q4l2 zwA#d&B!@d{H_9t+oaU@;evJOISh%u!Q=jAa1$Uq@-Z;>8Yb3v)+yos+%M{4K;m zqZ>yyWB0X^%bIn=(pHBz0Qp4Zzi%gE51`{$*5RD;jd-EzW;oF=hvu*z0%YPFbF<&> z2F8NB0nque7^ZV63Tz~Mgj#{|ZbulZyl01y@e;2S-Q~9OKIr_c1v0&salcT-y}Mb5 z%*xzDJHN{woh(Fa;>ENOVFI8zD|w!>n}kjQP9Qz0Z0$K`0Ce<&uCTK z@dazbX})v~9h8}1JPk{otCX#Mu|sp$BYwxydSsADeYD->VWj*q_KYe1b{1n6yE@%J zKb3F()5eYTRY~L^`sT{d|M!u~zx2B2!SiEZmh zsVIl}0wf4=XegE!0gU&>9xwxp&ar^WY$mgI7?L_xn&M|Jv4KC}wcY2ryQcVZ|s6c+~U^{;(V}e5X`FRYjH3oYoilExfb3$*@sw65~+`HDKB& z3xnw8KTb(Jbv|`UDIL&W@fv!JSB1FVj1Z4&vb2~h^N-s*=eL*~P6hvT+~Ys9FG#Ak zWH6)%I^pGT6*UI)MB88b$B0PMbxH6wwW)~UlBtzh^8i<+DJo7p;ROAn9yKNJCB=g zT+=&*s6I-v=;uzR`e#OaEr5}hh$Hfuq=P;oh%_yUqqtge%bMik?PpxL6Zc%2#mGL# z+)*kjhN!&NSDObv3b=RNtHNm-=#`V4kZ8_IKmvj`lPqmdB9B9QA9TG9%M+;Z&2E|o z+$CidWj9AjNg2vEOq+2)TJSfLsFFDPvy{kdR*fpr-ln>Jo`ro z>{xJfKI73bbsa-Xz-_X6wD8c{SHHqyfSJq z%wKrMW*&Z-UDK0_AAh3{gMwvT)N3R;W=8h1&-zTOrvvI z1nB5icV+mnx#c3MbN|RBPwe+^ev)?-Y~_C7K*+ThsV)v{tpr_4Rboqm4wH}EI?HAb zsw7>P3M+{=&{7OqX}r7p=T<6WMk)LK+(q(^G0n_pLp!_yN9G zS=wjTPN@Oe%nt7#%&=A-aC4cOX@knaT1}y*#$6fW9c&Mg@#gJ*%h;$g@X23AUqWR| zBk~Mq{z=2d)Xy)OX>x=yXK2nyUsPBk4+xwC#b86P2Y#yj(cx zqh_X4*1wCa9jfX2WG-&9N9N+6Kmp_}3}?l8^y_yBmgvH5MRNX4P}_LB9T~gg^UKbM z_CE}oJkk|ckDz;yc!N&a4fs8hMNVt65r&b*Vt5w}S)t9&^(eS2+`EWN{3;c;u<)4w z^l^P*#9g*?#WhU|UO9u(q>F`yHGH&Cm7F3;ji~=i7~LTD+Rf>o`Q*wraS3QSa>UG4 zf*It2LgP+4vXE(48h^nFh337ao@Z%uYGR$-gWbwta@ex;GG1XAyY`vg%&4^fegyWf z+vmGn@q;M3?^Nsp9@P@sxa1jI&YT%lquq7~Y59OU2t#vQy>pKm3GQtvd|i<&c%OR- zTmHSeyBK?H?&JTa&tx!w)(jA>f+2DmX)Pij{O#QwI6>;k5mnesSGahN8j2f~_=1DU zcNxd8{BAF6E#(d;VwbT3y7N5QtD?{W=1%b!+Td_sa;Ys~k}EO522P9NZcrY&q(-#z z(d3rK)%?%zO4hV>W?OW=WDcEJt2%x$m*9;q>NF%d{CFvmq$q32!vsKzp@{2dNdU{r zDn1rZn>ppN8tiUOMyr{m(7)yNJ>)zfuVY7_fbfUMjQPfSK7Jj3C{%i-Nj8-Vx%Yd@ zlUfI}0^Y4pnom6O2}I{-jk_+w)y%!@*Q$3rp4^=Pt4XYuTU8=zIP=fej2xJNMCRW@ z8EK<^Yq*=F*=Dx|z4n0M+d8J)A}(Fr7{*lC_e~5Xh3za6yNKU+(eH{Fj@Va49y@_5 z)d0wY&vvxbMu+Il#Y9rK)yS0x&H@JdT(OC&Z4TGaa-~!~uM+qU^v0|*BF*tRW?lH3 z!Uj$36Uz!V;vSiD|K8Dn@^1Nu&ijx6pJ`Pq#`L&sDS-vA^=iN=S0Re-VJdIRrRuG< z2Z`&iqQDcb%dLAF1;{ zc)YVYNobr_x@~g z7VW<1d!tScMNR|EWn|NQnYn8mGxPi=5Ei{qrs#v9kwE{h&f>`0%22xZe^K)b0y)*i`UNFgH`l6_}dR65|N0Rt0 zn9NXUC-VU~YRbqtV5@SWRAolzhO1gu>jBivU(*89M7c26v3tZX%+&WH(*G(6bpOoP zEE#|Qii!4sji3R1bcaC9ANel}4xEwV9RFRt4OH%&sW*_Tj#OCbc$Yp1;n(c2{fHH> zj0)>f1W8R64xp(jAUdbv2u|z^`w6j9myS6#VGDVd1iF`H z@%A--HROl%nRI?ExFi>fA3$j`CF=>g5B7UiU3N8;<SGlCUEt zy=a)Stl0=xCA&et;AQnB*!m?mgr?)BE2-CD=07lYpdlJccNggjY9iuBw-)Yz=is^m z3%UdF5Ne5R$KGED=eioo#Z$|ptv_99e0YR81HxupCa9&tk2O=5oH%UN}gb$@G>kV3Zd80B7SL@7m!jlb<$7L6J zIQ|=&`FYuT>#mZOxb~s~^j+II>H8xr*$)Er|0~0Gf(?`$a*xET;cE^CLt&>;J5dZF z$8a(oH0q(YFMBzU4n)#o9S750uz0#A4hzr5NsDZMhH0zjV?fXsCKA5*J@5M3vP3|1 zsU`JrQG`9y2(b;KSfYikHD2vz?N{c1Vp7#9B=iK7 zM=d^393N?vMU=f1^cCBZ>M9|a>W%r|%$D5m1sZ^sYmG=3ljvernaOHI3tqs9%fzQO z#)#NgqV~SRD$Up*wD3pzsx+X(|%S!uAAa zzh)4#)@P!17jd)Q=nh|OKH)keR=WbyBQIU~?_vnk6*b>6w~?6{b&#q74$S-eJVt&H z)VY3{Lt=Ya7vLCm21CBq-`P}ZL()1Y@%VF%p<+EH@1+yH4LTB|@pd0D;cuz?7RHAa z;qIVMlSC=6-na;9D|-EAZmyeIZkmk+Pn;M*TGLGY_0RuA5A-@}k2VJ!0xSWQZh?C@ zdWVq-t&jN-Y-%gG_iBLf$kFSD^Cn_qv9m#xET*i~#NzM}@3k>L8UO@7bw(&5>ROhT zjv4cU%BWp7dMr5djpcoU9(oiWhALXO8QM12bQ!-k5MBJa*}+?G&E`@?e*T)h_(=6$ z>o0jjLxN}lv&L++xe@0wG**BamC8e;WXDPl{^rZG$8+b#pzrN)Rm0JAmkO`n1eS?6 zzDqu1n%sk0)Xs8HbUroOKEBM}V%8KhJn6zddp%FgW zL~=Ho21_G5BfY=A5$kP#GcL)U#`MnA76>PQF%S+bH7q>(9=p}c*eKuzgAa%POxXOZ zHCXebpkn|nq;aN9XowcF8J1V$+cmBU$}jY?bm76rdbu9pD+g!^T7jRC|4C%Hur zPo8fEHW}n+?C4T?;diy6WX7-s6k>fXv2~Z)63VAHllB5zywv$IRko6@;+Ru#I&Jmu zxRar3Av4p}DT2X9vLk3kzA?ykFUxJRyIN?_*%4l1hRijai@9p~0IzQ)c?V|g#AoOJ zFt%8B$o90<1abh-lK_*Z?CWP_4@AZ9%dZ6;bELoe-DxUWRdty?nN4V&_P0DR!Qd{m zF#gtI5|kjesstxO+Hfkx(Ro?F1{)=m?a=_drIXUX454P{D6SBPR0*$n2aVkRP7V-~ zKAz}LT`whnL|1SzP(U35sLDBtPnOLlkNbo53wFN*`^*3&Tj0NbqYY|ENc$xUjD^Np-;|LMU@HH?tPY9DMNr@>dVl=UtUZw|wR4pGgnJK$h}a(Q2vu#0al%9W=L zr-_Yi;@<K?=Le)bKI*u6CkzVXPu9yQ8TwIESKON*mavb#OHdIA)ipzgkJA=^ z{0fguD-m9n} z2J_XzoIvmu<2x^#BPhHy`Q7jSyzss+lyUB1et7Mzq&{*MAvN;@QRI!IfJLsZ(&^Gt zC}#g5@Xhr?*HV5XO1^x$OIWh22GD@jV^A?Blh=y zd_{Tqs~3$cVMAVL2lb~*AK{@Ir+q$)7m%LVR2VA65^#2T(8YtE5wPg$6L6Pq8TSCd zA`aWnhp4}ue0r0{?poxtO(r0D1(r1TKM{P;2lw0|+O55ZMi!@ys)Ln;GAZSp$53Fd4se7`h`x)I1Y*-wpg*U1psb1RB^YWmwOfd?M?(7;i(Ub~C zUNIX6q`dp%;?9=whN2EI{je`nZ9D)q`O6~%x0!l$Id3%%5*spcUU+_gFo#r@(-zz< zm|D$V`pw_PS!jwuu^+7|aR{g)7IMqi7z7D0ve(p5-IG?4aFH-ELoh1R`#!LY=iu`H z_~Ex26V6-&4w5fGAQT-g8klNd)=K1Mi_#Zomsw>{itczIAe9P!web7>b^iizOw3zA zm=Ux6>FA^SmzUJKUY1#AX9MQSJIvbe{VwNfI1?awR|D5aM5#5vYFzwBfd_$oAPe0P zMiUQt#HTnN{$2jw>@O8K3Icej6W=)q5iGTaV1_Q-FUF`K5}X5xL#Lj_T*WdzsB?V8^J>7^A!X^LVb6d2 zkCYddV+S52l;+i>Cxb`|hCYnK`{U{C@ZYO!;rHIT;Gy#?goPZ0_=N)zO0Ci={ z;1)Z=+*jIq5a1&R-4B4dRyFXQj$PZF^s&HC6W^szdcD$q;kECl0M!n1Ef(M}H*4Ts zH#rCKZ#O>m_p&)`iwDx&T3qdOhApQmxM>d=`(Hu3&+S2dBZV=5jYxdSGB+`oS=|!R zv%S@)-&KVowDVA9v`SMkcf>DM1Gg-2`}~&jlqQ zg{O{eBL=#R_eOS`=rcxVf>fmLayT?0BeypfbA3yH&wE?|T{D!e&IEMci*apB$)Gl8 z(GBgz6A)A&F0rsLV+u`Y`fbL6KjCGUV+wH;%%+CNd;3&P^SroWf@Eguxo-Wg8aa4Q z)MU@f%p-W9&(Xo$Qi_8EIW-b-Y`HJgSl=jrdFe(%0|GMbs zR;e?ZVEC!f+Fa>8e&2oE}$87BFlN9F~F5MhhK21A&~h#dFjE z3LPd!Lxryu03hQSF~LdNC}8xSo$dmGjDYr9f@pMBW2>p7#Hs+nGjxG!#D!AetU3!g zY6d|%79##053gWcpB!i>CAA3@gp>?!o(a}*H+0mO?Kuo{8>fGEXd!jkL21|@#5 z3;EjHP3F(hNIaOnC)0ffQp^!)^Kli_DpeA)t)b*4Sak2gz%xt-)foZ9;Tbvjq|TuMK^k=K zX);oo!~wS;7JUqr^(nze|MDCt?lID;%^1G@1at(m{UH*jVfv+0(v5Wh40k%<{~^H= z2V66z-|PT}eR=`wd?WQyJlub@sY%Kt0s8k65V+LSn~QOY15e>dQP&O3@xm7=qPf;! zdXq~+jGVqHpvsCTpehb)hXr2>zI&U|2f$coBqV^hu!6EMs?)G-nqek!)}U$SroM*Y z0esb%{|2jpgK`pNs_#mcT!!UM(Lwy;o}uiz4Ph|b(s`_kcN0k$M!F^zfo@*vw4pue zo5qyAn2G%>;K`fHBeKj*G2Kov)Dre(`j+uB^-)%l4(~{mQGCj#t$y#6%_`xfzbNHxI5a}pk4A>VGE&CC zM3ZW_+LKO9m0FWT+;xvjdG#b7b)1KbRnO(6_4-MnLEydfrWN@pO(Ub?qTPARlb5nZx@(%Z!po9-sjQR%ndKo1H+I-N)sG!K6J^C}cc zo@1J$NZ+!~DbMV}G zU}i~8*x@D5?QASmv$b!$uvz4i@;7BMWzhlRManS`GF}9o4K&N;Y@z|AqsUXONJ-<6 zol)}8-{buuiN&|%)tvhRR?60BR{TC9EgbsL8UktH4QBV7i)!(f2<6d{e?-Ou8R- zAz8XviZW((oG!-ESt1$I63Wr37l^A`-(5rQveG?8Cv2=Itz$%%Luet7mNI9boX(YE zv@s7>Rxww55mIFx()W!bNKTRDvqdSK_(q@7Vpi&_INeA&8WDD!*~$h0ngEQ^?xY|o zR#Pv_CQJ3MaK84tJY!I-4SKxlznjTd z&h$yA;yVL(DO`9KIJ5tqBhKhH+7HEhxcn`BJ=V){GVwVp;<-gTbI-@(=VuGcl*Lh+ zV1LJ3VRdT-<8#F<*QTXIe)h==y$ z;|8}B<2Vk|SIk4X>pncasxR-43!iSgHMT_Kzp<^mixpe!Cx^+^3#sTMf`8;;Iz3-_ zeW`+g-F)msvSIttqhV{U zku~Ynb{W1iVSEJG7oE6LS-2H@i`u+JfI-m#vuVkq!$_`-UfozmU(d!NQA9>{Z7fKj zLb+dT-aV6!U@w6i^$m>`R;V9J0QXLd2mE`Yrag5EmOTSKKalaX=8nIIj< zoquBMSnxiE)v^G{GkR`Wy4>Ylb>kJDNN;nLKKp>UL+vcj$ncc6z_|%9585z_T}ZT!Q?QZtsAPFyPtmU39+i^n|H_J=F>8 zLu1}{SrXw*>BYrgzjCY@!&uVz67m>5ia1VwF>_N-VPXT=gOjR`I5iDLrvD)@<7odE zvyVXs6AyZP^{Ou+JvBf+ww5j>@W}WU@7+;nQ)hF$9eEZljmIR#ppH025L3NraMIOw zGA~E}o_YiL;gf1-14?lU@VLbMFp~UbN%2~2* zsP5)XtwHip7r1w<*lK3aA}H-)Qk{pNw7_bCCl8C@p%)mIIYuS#Ww>iIwq=Zgjky5= zlVy^T5g4*b&flL8urG11KPGdxZ;2{)PuS}>IamUR>C@2IT}Qmgrr_O6Q7AW)Y;4#~ z5<6onSJd}gRb|SUf+lZ2)*!G~%UnO~n7J~vxNEn_YQWDobLMi0SFvrl(tHrh^C&fV z{+_ibfJ;g|Rd_ks|s`PLk zFs|KEXjKQaCx$rkcrkAh#9Mbzk2aSWRuGz$pM4!|Bi^)#ddUS(7zJgOP-b)V&Rt~P zi1zr~jefc%*;J=v>t#7M*iTR;W5FWRFYE*Jz1HH&7R5|w!h2TzMdUvyHe5>BlU@fl zvr4CSFTL9zmnH^8i$`(Ci&bq=eCSG?L%r7wXJW^`ACDx;Yx~zxIOZKf)~=1gJa0Ud zs0;tB!`^!@XKKV6lt;Jj-qP>>u-JP>kP=D!tJWE^IOdNj3JGh5-wfT2waR2Oi+xfBkSi6l?oQr<8UsAiWAS0jbYxk0d^`(2lBvt=`LdFl zVI|U;nEi0tkzCo+3Vl%mm6+)Zbxcw;8G|`o4$mD~W@}_D(lZ{;*z`*qU_aW*6t6M? znn&c$>n4>NNr7Px9b*(=`dU~@#^I-y^jUDza3EwU4eE|rTL`|R*z(u)pZD(GuRzfE zNNK~`R40_NZ!ZkCwIxIU|I`^~j{oJWGABpRgX2;&F)_n2s9P92nL844aj^a0a$7@9 zSxa8=U%9QU`9I}0IvewUH2+<0vn9XHgYzT&mzIe!`NjYOCmHqwq8W|(|Ay84+oyTq z0|E{djEyaM=M%z~PO#C4JYVE0PYf!+V4P75n^YtdnOQ4O+-b)1UL;Zu zLa>2SQ8?NA3j!a&O!uqJsRQr(o)_ht4Ct1C;@vw#9adaw&dMDz;{4OAU6 zpRf)D85>*DHwhD-kQxd^YE&vjm#;tv1gQ@%GLV}qAEbk@t2?X!^s&F< zBvNxZ{^KvK9xMaIpqyzT5ECr;U-wHt{^i(&P(Yj@*dq}G=*Xa)KQ9zPctTLowVfTznVEZ zGhoReo=QL1cTPoagRc1$pNZhJjv?usT;LPJe@}m@Rvl^_^_Fs-~-E#2x4%#Bo`+ zmoK*EEiQ0Iv?yl5c43g7?r@-fWXr2jRHB5T2aXZ~B1{KeZ{tgE8IXy{7=1f#qoLdQeHyn_2CC1s0h2QPfQF#1-l*prD+QH$HPsKRTUKFrv(+0 z#mttXCj%)8nE1!%MU~uQ_X@IyGZqn&e#k#76K9_u{XAJM`}>7*T2 zQq8F`S8k*xSDE5|I}s|(8NCTs;Wwb+__3T|m8|c36v`cZ#mt!nmoYlLc4l|i(GR?@N3`K;t}Bc_=1ex^QrcjGSP0whi0msqX9V1o zY*J~5Z4Dn$%lMg+I~2nvZp=B?x>COpF_}Y`InCntysi{u^K@+cOmg`o_bedS^CP@@ z95>N?lJk$17Is6Q-DUmmA9bNYyPzj$G9CI`q|Uy*_4HubkY?j;EwFd?&^qEThb?60 z3yJ2QGdE!czLFIa9Q|gW?uXwpGP#YIp6PqfAH7ki5WbC+CX0?{JGPdsTW1&5Kt4S-{NYH6CP|g)H6bj|v^?cow zCJ!vYQQT@*#M+Yu8F%u_5M<++47Y^ta#?iAalQ%UHNy%BS>UMC?3B#FFEf~2xq5*r zCp_f@3qm~`f+CQ2{g4E>S991TDu#O_bpk4 zu6n~uUJ=`1<*G-nuc>V<%qf=-a2F2Nif+rT9h|kVu*UUl@{t*0!MfzA67_O%`Z@&p zD%t{JiTUgz!u~C>aQ2WF$U7<~c0CN?9h8Zr;V~=y>~J4;bvXLD{wR1?{oB> z=do32E3QexEJX{p4|6>|kgg?#sZnK(>L%wLb2rfnO-Azj43r%W6^QoJ{)9zotzM~& z<=4SWK5hiO)fsr##-pP?8O>l`QXM-^+kKuqMbq*NRq9H4wde+`71OdYKRl{4B_8sj zhvTRR+fduT56BvWf!dbwWQDk&!FE=#&y%fK4#t(Ia@AsDEXgV$J0}B8Ob5;iplv_k z2G62?JPg_$k$qhEAwI`t-C48QybGV3vmKNE;203`dnAxIRJ~g2g}{$Af4Vd0G~@{Nr3)MML>cd&uF}r>ts_(aUSv< zZn*_eeI}+(cHp}7#w^&}+pQe9XjBdeYa!LF;@Fo4k%oI(mH3$|K(A*$MDFEdm})+1 z^Wn37lgy+Eywp!kEd#zNg(JHTk*i5tsKwJ+5&w=SLBGciIg)uU9f$HNO4mf9Lfz4= z(@mjWx|gkBx9p$oI%c-ZU7vn~Z}z7qE)@fvRm1WYbP_7#AxG3XXgOe&NUz~UG0%Ia z&du&gdx^yi;;+$&%I}#^b)m4`9V0r&A1}gmr9rquqUcNKo&F>iPS2)BZ49Sd7ZzGH z0`wmEukmC*+LwH=N8Y2LuR4COzZZ|rmZ6)xmSnf!hkByh-zWI*5-tq33|d-F%ohW4 zG6#+w7uBV%T7`MtTbVyzNi$JLU;9zKIG-zpB|3{g=C?O{AYGIWVWJ)JPAUqdnV)m; zZ*I*oL@2!Qywlv6sf2T4YcQ571BDw3>=QXuSCa!xrT6X`BWbL-ROzsSXNW2nxndHW2oDmeNzwq zJf_u=Ke=O8*W^-5X5rta`_5%E5l}-(I#22gHzz(#g{LWFvf%OjuZswd9vp#Gtk_`m z)w>JN(YbDVI)xHlwS2vjL&XC;?0#cK-|;frVaUzpI&8?(s_FIp5CB`7-L2e4s(4Ue z-Dh8e$N9=g90`VE`A0Z>3;PYV1watRYaq|ak6&BF+6>Z>1E@tyJj&oAA(O*r`{nqv}ox^2#NS3Q1`?8IHV{hAg zfi^{&l6dv5L|}PetBC(4GW)F0FGbXX&c$Oxc_}U za`@QukH$*6aK6=#HM5iijNV87M-&3|6I>=p9-74S>Q)|w#r zP0>i$$4M9KDP}PpXS;6EKj)U1?Q*a$@Evw(PE_{QnJp>zs63bq-Hu$k>WRUhn^3L$ z7e|zH=Tl3Ae)_9}Y4Z)kb{8eGvuHLZYP2AX(r*h#PP>dSiGZp;y)Tb1H8(R#me`wqZ5-HLvYzs2$YpfCUl{QF)Z^#9~^&nHUXem*s||KlHB0cO1n|h zntwjom%iZ@YGh43TlD)n{f4VOojC7=zrUs9R*gXCsb!WpY8fkG?T;W#ysnA8EL59gSy{K53Z-hrv&w!jcpLoAX8 zy3hXdo|6BIx(V;AU;%p43}y%qN@SJhGk!z1%YQK3Hyd#9=fTy%CfW>)U<}Sr6Ev+p zC0MV*_^#>tOKN|6<&v7~l&ek+mf_q~Rim{`&Ai}7vJhSh9h=276xIF1<~O0}D#?Mb z4@Ho3(QS=|CjYsE3Kxs9)_14a;}I5C<*9{{Srj2ztGvCCx9t^AGYRb%!KY zIkk7BL`H*c6%N3ss~P_VLz6=5eG8@Tv?)lEz<}v0=YQg(cy$izR zb>Feh@#yMEphYj`mgjj%iey!L`MGbJn@s*4t7F7;VK$VlDlF*Ly%B6F?{mNMdl106 z$)biY#8dyyRVCkKQO%d~iARBp`@O+&;} zanCqWO+#1f35>z(rp4sI7S)*wS{279rU#4q=sx6;b&r0iH7?VVS3zvAdt(+3Cmj} ztoUy{E26b~dlSveCn8pr7t=#f-p=va*r6s{K79#&yOqQ-%4ojol1%)ntXePac8Gxp zv-2X5>$DS419=L}p2;})vi;mAi zu21DKfku#RVjeBu_ey5B0C{np+fE-z6lvIt_oNdhtL(D9AJNQ%UB@F$L>4VgcNo5f zA3oZr6~s@P^%GMXo%DX=*uVT@ZAO9olQi*4Tz5hx%%ZgC($L)KqK3cpi6zG5_0Iva zXA0nTk>Z^#%WEb2DHPMK${}SM5ci!)Mg{m#ym6}NPamJ-V4^vw715T5_^Asi<1K@{ z`IVo0izq7t^v8`PeD&D^@)%D987tB-8&#JoS^9@eKt%C_@2&Msz?X47C z-f7Ld3{Oj{4IwsJo`-T7h+~6S?zbU-f%T_g!AwW6;kxlvn3n4u4mt%ycO8Yec^=4hFL<{@pB32Fh{v;|eB3c3DEu#EFQ)=gb$BXLqx zf1C+Yk>#7AKicgo*9c^pI2Pv~to#0XoM{o=e_IqnjMLCpZHw~o57L(R8jSB9xvDe7 z4^fNae~Yt5@pSv(KnskOsmHf=qPf7Hyv1~#zk+o!(S!*I)rHg8+uGQ!;L~TGwjYoC ztu45=NS_T@Wrl}r;nzOGS1`cGy;}NVH>H{;r`c@u^Zk*+6mY#&s-kfDQgZU@?nH_` zM4}f5XLJs6CisOBJo;uv&ZLutj@#B)si#bcWYLc#rw`Os=otcmPHRx){O_*jXk{ICnF5f|EuN_-R>0HwI zO6eJ`wR!)WB6f^x=J&?-9L&Mk9f#_YP~~xx*P_K43oJH6MAgDGtLHzHDs{_Tsq{hnChRU*p>s-Yx!B^%FbwtGEJPjC7n;L2Gx^ro zRHi#j{vA-L?LN5jn9!4q%W3DXA4TH!94L4jnoI+WV9#|-pTUS>Ugj3yktQ=s`YOn4 z&_e{3s-U#_O5@9vHvo&!iOSZM^Q%CmUv9{XE&)|qQ=glKb}QM(r+rJuJFIfN!Y}yx zA(&FEokQo@t;#I2Y|374id}#dv@6znDUXC>fgezF5xHb=WEyfL(J_s@69*TfWF2U?QMkXw|rt-t7^KC`+D*IrhqgB4vrj^LnjU&fTP^If^v?wfCi%s*JY+J>!TJ(TT_Cd*&HR0)Llq9*i^9t zrvd8I+8y7`xCY~3v(J1(%N6I@6hQ=<)77`ntNrhAs7wgip-&6Pmov_$)9b*46fOP} zH{VEX_DLFLaRSS?QI>mo%5?d`fDYLt^56ctujk|#M*fIm{I}O@*nzt~mcoVcXjeUt z8QvMwXp7#jy;Zi}V6X?JvK2P*rGa(lw18-}HD2Mfi8f14&=u==<_B0vqk9hVAa5h!As~VVgixP{3Wi72yQCnXM`%yLNw(&&V1Ix$;OU-w=cV1L>;@y1>BPp zu<%yB!mJF^5c4?xA{3=e98+LauVWRosTcYI9vQDN03X2eI`^mKtbDIH@tYzPlWXZ3 z=v$u4cY=aZL~rQvS27x}iu&d-BYxtzm)2$(0dwd85#CBKcVSCO zZ6D(E!N2Hl)((*}^(b$}I@awr?f_MM+4U0MqM_$cTmp4SD>^&Z&0Q%^x1n9PId6y} z1tTRL&85%@g`!8z^6`0@I8=snQvQi+y1GR}XIk^QUFzQgRVMfyBE=`k0%mziEe5KS zwhxyc#QyFhhFesGgrRfF`e*@q;UllK-TZ zp-sT3a=o0TLDtCcPJ5Eds8mGXxhZ`x*QR0ZY9^CJk_VESZF%$$G)8b1)XHYtm>w1C zaQUA>xo7(P^)$DP&U4OH3N1$-VNVs zd?WVD|NbND^HT@)_G9OPDE)it@zZY&b&GEJ7wdDhDq#Ah!p^Llo6IA0a`CI- zsy`NS$z6sAI*Uif=LA={rCgpP?bAZ~hS)gdbX*$D5XGz?SNU*P4$x}y8c)d|Z_Guz z-{@T2*Y0;g;u$Zmm$$-HcEruQ4~fqRf7ZCH<=Vh2vns5JskY0Xs?Yi<%$@biP~$1i z!RYX@vA0##=P`mk{;{kk>oZU6UN2qSH#%i|L%c#rQ4Nvw@uu;i6FJb}Bmk2xG!|u2 zXskvy5k07<$HF(A2yo<%XgRNZCAAJ+y1k{t=pV{?B;@Z97_ggE&iF09Bms1`< zK-FauK*7LFKNzB{{V_L;YG>V4jb9O_<4PeVIijHaBzWGp}JqjVVr@v ztLyvq2lM31_WDZ%+!G5TLWF3&M?!t}3rs1${N#UIDhU5fOaGR(hL&)wZ0!H(sr>6^ zP-8(-{R{8^PsiiGY)cZ#5*n(K$<|nqSWs;LV`_>&*TPPYfP!Ly`rmgOSdbb2uOVXP z0FITMfDPFJ_Rq-luRDU)Y>ERp1PWD`R}zr~-^`2)SwR88iLzZ9FJnmdAHUSUul^ey z@SoKG|Jq$%R!~AsBH2m=5*v+;>Hj#NSlO8VgAVv#)rJV<{y$gM|50&qa5OK9LW+Tc zF|z*8UnMh(LsBQ(AAwRO2Z=-C!9NiS3fUo|u(m+J$|YBcLz(~`I)sbtjN8%{huvWi zeuU69-v;`|kxMM0>OpyWJT+2Qz#DTgkQm3q!C~r}p)Efjf@l;_&*5C`p|u@AT3Y>* zkiKC}<60ruL)d*DNX*Q@!J)m2FV9Y#bSq!}!c=de+LmsSG$mZmBb%Su{ALc@1ZGzz zxTE!}CI0J2(Pur-nvvewnU>nGfAN(y`}H@S>*smrrzWVgokM`1u5X!wbWQjkkaX(z zWgv%c1#9p4JXJwFK8|k)>d?>x4Zae@`3&)i9Nh9(kheDp2Pq{8Vfyd*Ci=T8?z#C( zw%B(6+Zt4HTkz%&KBO}N*N3ZuVC(_pqKg9vCjF#MotitVlj#}A&8?W7i$Vr;XcG0cwT-}$YG z52sGF%qcLS#mJ{#>pgkw@t8?m4$V0-aWv!)PZ-qK*A%E#A6pA&rBCT0lfDAmMK3z4gr>&i)R=D}k?KJPPj-WuP;w#xsKd$@HY{3SxOPYd86ZNc2 z+A;w=y{UY8BQl6-`WglWC|57SRZ9@0=?hbCzfQ1U$0c+GFOtY0~d{6!2D}%R= zsZNICs(JGZD5qI2j^%^6W%?6q+3;pq)Yc^8IE5$AD!eJxck{nXN4qx{^n2N3d_|UeNMGCWIbR z(S>okO)z(Gi4s1UrupTWKB6U#yXCp_A*NE==^MUnwx(C?ven&fjp3L5xMjEVrg%Y) z4+XZLYLXbvzqTK}@HlWjZyKwO&0UxPXB1&kphmQD(ArMwEFT_mu0KpaQa{;#0537L z!9Gf}P0`IHTSDYAEVR8kH%XTu)D;FKyjb<$K#ofrfs29%=Dj})yHfv&KUWJjD0xe+ zUs97HSc(Hw2_a#Ip~#O*6Gv8`tMjB*`PqM&l9F_47+j9s0|dILzd2j^ZWF6%2*Q)Z zftGvr%o16T^bGrdb#w`3h-ECvl}}*{tM(tb^u3v+I(2@{W~(*WK5Qg-i{l)aU;L>? z3Hqp}cV3z80rnhs6UxGphpb}FKP?RwOm3?vxW{HqD_L3Fq?H}O)7z^fuEnDXe)H+C z;j@|{a0H@vQ|^WZshSRfM?0|=Av+St^8UISrh7np{p_b-1 z>0)<_0q9b(?@qKG2X2aW4j7A>v(VZQ2r6}Jy@%P%kORr}-s(< zw&mkt7djSYe)mV?$R()rRh*7#U@|7Sq!4yacKABhnfQKbS{^5)jpIn{T~?PHM~ibs zXYq=$PW}f9`e+U^h=;_n%^KnL@ zu9@ehs9>NtGp6ML=8Dw}l{MIm04MR}E%cf;#J&m4@Y@2VN*0x;;T$DOh$xz`b<`@IU#EgHa1Wx)kjFDJe9v6F zPhKPQmD*wAD%oNv`iFKKMA3w+`(hAYbX+{tjkcajPt~>G<@@dv3OZKlX0dw;(a~(; zplFq`1%{8U6=PQV!F>CT88D-U#vInKcP(60p(?{SgZ<=ZBOz5syBPpQ zjPg*)UlGahjKfM0*xZ_7wY*^7lTx4?4rQJ1BrD63+;P->nr{lXtCvpc%2no+2|L3E zxA|4sCMdu*gJVuQFw4rem(!P#(96NU<-aw$yAM8Of@fE(_VX&e1epI|BTOFa0ny89 zJM@@9-oo)y;*G|OIQN1*G|5s>+@Z`~eE#J(ZTdY~V)@r*2x-EGr}6K-;wX>(RLZL3 zoaBK|*5Xx}2~ z*6731BDb{!@RiJE}vm3S=oMLXo!05Tar7qbF`@z2B}?BRd2Yh2D(a7}f7F3GGk zUdRc0WARMS&~z&b^*6zMKu6r_(MZ1pkcgmEzUglN-YY`I4*P%vira*Z=YpknO z{Zy)}uW=I5-T)w@dHvRtIM^6Jpq+;l7Sdhv7JQ!U_@JAG>D zugiee+y&qGBOdwRoUqfrA6oM_FzfkkJGo|#ljN8g_A+sPS(HXzp&)1IydM*jnCb4$ z-XSmwes8v~6U_bWl;@b?gO}X_@%&(D=c<`!KHlf6&%j?{M=Sk*NGWWzc_1YgF!MoZnv~-1+FE(#~#P`N+Khd)Bw%fcb+$nxt z{HAkCqj}%WyIezX=gExv8-r#1hqm#Y(!gp30?W0igonHo>c-dN-GWqy+sp|EGQNs( zS&xWB=`i_w`%r6TXjHT3y|;<`MM=2)$IcAy$uKalS*cza<$zm>A2}2#kao4n^`Z`O z`b7CJwfB@_;Nd z)U`v3Rjt_Fo&g8jf1I@mt)CpL6hm*5|p?L-yO}-_F>V#9UQTZ_f5QmXHwsPB^kk zJo=Bi`Kzc(-l>b5wS9=S9&pF|Gm%Pin+jm>plgSjB<{s0G`*Vfk59(9Oy&?w{+k&c zk>Iz+iCW!!+itSNYVa|tBbl0DPk{aWb;#r9~Hc9QsBI^SvMnpMDg9ydGUD1TAN%$dxYd zCFi5`s1A(%oM|~BTqzpjwwP+SVA>7UO=4Sr;;yaL%fC9602BQKVoy=8!6rqQIg8?S zTfvmSBS8N04w7RJ^5Mkok4I53n-%~lP=q&;R(Y63&@24bHx#rK?({rEG2n%-q+%}s zpO?&E;=4iV2~&Q{Iq=12JguZB8@xvshitO`__+J!Hu8AKP!C-+SAu5Uu_eR6IBhpb z>Yo8tzu*UJt{{esUC(*i(^mpVqw^xn4F!oWdH2nRI-oLu#H@Ui|7AbQ039Ip$b&3; zg6`ujSAls0TsyuY#~biD>H<6@W-VOY??FQ2Gc~F$2DF?~ z=M@BAwVxI|73sOVPTykG-e&S-sOn=+Tr6gylY88>GAEtwUuf8Q1VCJB_hWd>LQX$4BkLjLQ{ zf%&$Cvb=GlyvA|O(FG08vbMkftW;ir02IDn_Gd>z^&(68PLy(9Ef+=Y^@@%sF z&e9aMwjqyLbN4YjFQa|T3j~G?US~u*65bf-Yy&Ft@KhAnXWRY|^z8^UOEpSv62o2bk3|m}W78&RJ8D7Laal z+Z%ZA!usfHE+KX?BV*3AwQwxidG2`K2<@?R;$w;|=8m0=OSs77n6&zNuQs^A;ZKDW z>027q6|Y+crClbpy;zP5tKYzoeTndrECTXWp=I=!O8<^PW@6xSRq^9R+*1FEJAfqFUX=EOr7@eFTWRX!KoL`8u<5MWLL^YXIRH03cS-xVt+^O&~KkItr06wZJCN=8*Y7xZF zNax4#pP`}0PvSgrSDGZFU!#QS81mLWrhS*J36;UeLqKDpKUA}RR}N5J@4aA}&s*Yl zm+LlUOdLiOT=CiX(%3wLYg#<6t>Np{}aAFpj%$px`JUR+d!r!+Ha%4U?}v1Jk8-G?-@W9q$C)eJZH`sqKo zE;GSaLrDk(RwxD(I$t@xQP(d{JE8lvaWrK$ZGL#B#$`~RKI-E(7NbLMJa82(S6?`v z`F5AoYsXH2M@D9vDhAkd)=E6>%1QsB?~aFj0;{K5dKUdpaes5d(_p9q9_vhBVku z#FFw&t`N*WZHsXBAiDyy*uy8Oy6M!(?HPC1poBbTg%n@A{fx+FFgeQxrBT;{H6xLq zE7TP7*$ArU86mE8y(T%mxPQ_`;xdZK0GQv6T&AW>jZr)|JxmfV;CLSY{ha*=8N4yb z<|Jk)saILO$15RiMV%zKQ!6>59}B^dCY`=>W{-xlS@%>18pA-W%XCf66ctY`LnQ2d zw8@E={B4JTJMw<_;-1r@Wvrrm3d3xl*~a;zYh_sOY%krZ21Kl&g>!qsWpi?F3h-(j zkey_{v9$)pccwOZ|KzmQ9rsw-`|kNWPEjbEt#N3Bwu-RC`iHXnegBYyT;sbB=my2f z;29KoJeg3w_=Ie^l2iNk)j)~Hpiyp<<**^l%M(A(P=kgW)4Oc|sf}U*U%vLijS8WL z{qV(5z}PXiL<<5GOzE#zOj|1peV_)cNpc8oklgw(4vLIXm&<2g^|u$$=<2fRe=c}9 zCY3S&cEFcDC5H<4XE~$?#{*OT{fwI1edFilsK1ICq#nom-UoTUZ*%;Z%$tN7b+~Hz zCq{9Br}NCa3yiCn(cwpEKdM9;e50B2pBZyZnumMAg#^kOPDqu zyQ*67Sa57zYx`ZY?IzAK2nZ;r2oxod|5R;2{#t$yPP{WHM_O(Q@J;%(9vuV4Ep~hm zlz{+ORA+v0lZ@k-xHcu$iX$G;tNI;B3Wt+W`$iZ_J7_J1~s;xk|i``F~bLCb(yAn7Qju-6PzFu)`21s7q z({K5#CRH1*k0WH!c{Z>*_TDu17bqcN!p8m{Bo*dLokW&RJ>s8?!^QeZg_K5$IdPegkJwoXWbDvP|P-r{NASKS6n;m2c zmomKIi)sdVzfiQpXv7E2X6uTQ=)bdY6gsRFKlRrD6Q-b zBfaby;BHvDCyP=h!$&M2DL3zL`rfKoM)}Ze#76r}3gOS{ks|V7EFhr3n5&J0Q@~{% zL)^VRE6OhSGH=ExelC5&(u?QnJARpLhve?i9%aRSLS);ccFJ*;WPnhp=NTs?~b zLq1+U>FUqJPQI@&=MaVc!qN|dHaq=#={+*%JW+? ze8FzAl<*(qV$BhPN?^w7wR@P;m7jkbXeq~hRgCYY;Aq*g7#!)VkrR4kFhv5UL2y{j zXDGHY(|g#gU_TCoxfM}x!sC*Irix?%Z|*T{UD*wfetWJt(D@K&>gDmpn(HoIz5K#@ z1(P9z2FiqcvNqk^mNYHZ@lV{K>S&<@FEYBskKylVP+Yc|?8SqH9)oB!={fbi7V69M zrti88nx1}>MH_QB3r^oxT!F%Y=AEX9+(Cxk=A__)7FtxOGSvTMlF3I#PT{@%_DFv~q-$Q$^=m zmi%kX*AH$LmiAYPR@UZ0r(-O@Bk6Y<9z;%Xvsv;FFU4W3%AD>G;j&J!o~o^e>`N)R zW6#iXd05-npQG_$^cvftkZF0>-dv?{BvSBOYKOFp%3Z*i*7G1z!ZzG<98WC38xa zpXaK;tlESyPuCUGp;wfqq180r+^Mx~J60BHl(|zKhF{e4iPIT17){sDXPpMDI}Jyv zD}DE1;7O=vM@PxNV=gWESWtU~y+DRS;C_|U2%f~84ulD#{i($EiS69HrmHB=;%1p_SW`Iga zZKg$~kotlFQ9%(2-uK?HN)7K(Ps^y4jlVF>La$Timv?kafoBi%fp){-kCHO&VYW7n z(AWvR5xXJpJo;fJfmG*l_uA?kmF42eH;ID2POofi{W2te1S?mKh!WxsDYz%R`(2E09qLgooQ}r-^7B<7Q5bQpwiYt!uD1kC_7#Q*E|iNcWeq{hGzhbStA__1xbC=}gr4oNW8l#?JyY4jSzfa5^3*Gps@Nccm z&`f3v(Ng#|wwq!MV{Z%rYM5a82U1{MeKrE)F0G) z{(6I`w5NIHli29p4bsHH$7*-5c~q(U^4$7TxImO>KSmxy+ciSQVI!QV{%LaMyr@UP z{cQ887x&Dl*th^#&EMg(i@Q;p-`mb1in+^a)mjuRKC?X?ap9{U*cT=!d3GQNp5e&H z!1MLyNGV?p$z)MTBRpxi+Ms@JcWj$m<&%+fnQIxHgOQDt89iAwe~7_|wzi0pU?meE z1FRvOb20v?qnrss+L+V3%gFe~Hw@!i_gXw1h4iO!%~+GKrvzH#@F*Fb;bx&u3ptQL z(kHX%n?$?)j&xV8dOlq{92MlRgQmE4a57l|Gd5(3nlr4Xx}&lpc>&Mppw!Yuuy)a0 zAA})nQXT0KO(SEAjwz&{pt&E&0QYzU92c;N3D*;(Cgo!d8O2RelV^oUKO|5S7GjNQsELi zX_`mSm4|tG5*AKB(bK4m6H&`ic;T-lhLr4{%HA1MjNJxnv~I}4EyIIIPt03$U=(2d z;9Q??fU3|;JhU@CN9UBhzwz>m1p)3-q1O&g23Q+{r6P)cWEG+Unh+<7UqCu)3LAJVi?jE^3}P3}%x<@^4Blu0#+A zFn0(&>jpF*uO|-2rCPzuZ)d^U3x@?f&H1b4J>Mk3q)YiJMd;YDI!<)QSEjpzO%hi$GtCTM9Nd3Mg&F;` zTDb8&;yo7?yc^^LDa7eUaX;+ZO~0O6Zao7g+VhYD5|YP9iTyIt_DBOKWVhQ-9E)NZ z9Ld|oFI<@fkm|~&9!>2L9`N34PWIZVfZ%=sFkMiDOR|jKR{OyYmJQ-V6|iVV>b$q} zO%O+R(vdn~l75gs>%8-DQ~|-42i;tWJj`$XpP&akK0mQ$gQrw;p$h3-R5=>*N}Yw* ziLCHJY|+819Q#+w)^Hil3V7BClWXQrL*`MTa^%5lG<))&DMnJ{19XLACLr6DfW+sH z>(PjPE=86pNR-muZVI;4d@O_BsIhGLh3 z(;APXO@wu*CgnkIIg)hq2^w99$?j8HDg$Xim@jPK{4_k2J>)D-Jcz(nTkGt2ac&$j zH7(Lmi8-nRABD3ib*>ICgi>h4sdnuhN`3lPgn)z72NA#j*Vgt|1Qgbz0W0>mh2Dul zq-%XFVZW>Y^V}v8bK(6zKpT!!U{sYPRKSwS%Cs*pQHRN#W z?{!G5mO>lIZcu3SR5Ud;^_Lb)J4k+3h-~NEkJM2}C{b{34vzoRju3Ej{)db6UqeaC zh^wor{ToU+RdEv>Bh>~9iYvtj0uS!L9&~SlfIv{qxeN9bdOib)N5nNdJ!@5_UdS#cZ^)%r| zDn!!U_ffcs3&Qefn|ql-nGvEXd7{dhVWF8pQ9!`KDM{q!HH2hU{mx^J4+~Dq$Vd}i z8H^4Ni3m;$3i}lUgk>QH1d1+9ZT8RhO{}K{ODDhPkjtYP;^h{E)aB7fbmld1&p@g6 zugs*24ojCZebvZR3rbMNQ=`$uOIe}Ci=p#qTO*^P=Td_K1%U*T@GwrdUtwimnmT=h zYg)ZChdH-j>2qK0b{58l7dJULZXAycQ-Ts`o;>Ke1s7kkiy)t2+^9TfU*E|tY%FXI z>1?dc5XlW+mDlVP=>c#;H27|_HOatk(cKsaFwvgoh3CXnV_+}@nC2nr8vE@9qj_j26Mb@0C+ zetw-yKhz*7O33G~er5bs$-v+^Ildu5=#& zqY8-aBL~ogf08H`7y&Q~MbAAE=nDk{L}0E|FJXckQXeGouqOf#%BdeB#I9}sQ+)j^ zLjDzB@AkW3Wwf6p@!7XTU?*koBs2JGUnr8g7svq%i~m#XAqU(ye#))W0gq=r^k~PL zy%x`5f+;bdD5b$SIloN7JULzfcp)$hSHn;2z_sTyCZ+({pC2K_ z*h>J(Na!Sy3Dj!s2fPr+`KNF^;#&_&;n_3xXG1VRV&OOSKON)xF!ejH*nu{!A3`(U z0ka>B5UbbE|6btz3i*0V_)cncbSZ}XgXx|wH)wETVhmA>h9c)H8z?oi2G#PhWS-G9 zG1`Twy8M@9fh{qU;QqPH19s2#&dAXO!p9pR=$^~mH;lx@sO^7dGeboY$j~LjuAp0HEUBE9S!>v$*~OHKCBul z>?GS3B7OPfmJs@}5I_#-QRGQKvR7E`6_~b*{pCAPgFn&!enYE}AT9eqdHzaSt4FXr zv>8o|Brg}?V%;>e?IpeRFJrz8$<)v$56{kG3oVzU7_3Jtw6AHdT6fj8-GCSK&jCfZ zZvb1GBBw_@pTeWy=Dc4d9`L91Zk{$~#d-9X!hB?z7xSDZB`{^ORM#Cl_8WSAhWo5o z&HZnU`m{N=m4IJpzwtlZMe2@dbGXG7&3hq~I<|($3D07E!j`37Zk2-qn_jJ?1q1EN zCdT2Yck>2U7~1@%NMfYukZi;od{HP(Q2M)Ws2YdIcQ@vr?@i^ioG~NR)kp^;%K4=f z6Zbs0Wuz~CLI6zHz1jTj$#RDpd1*Xf+=Oh;s zew}kaQ4AR*BaDdY>Q9YIZk8btqxh-QHqIW2=62L47Ya<@d%-b>=QEY7blW^bSc4_o zb#3Wjma{u(ruZp$54HWe7d)tG~M(^4?}U{P1-3P-yC5%PweeXPeYwgQ|22HGvry?4S_`C zfFJD0%_LA#In#QNcCB>1DUxRW5;8HsAC9Tpemg)h82X^q-jZ!gpGNPH9h+To$^-UP zH1iFhxchCaO&iJ`GSE`kuWoC#(^uD?%FnkNk~uRUuo?+U>%}=8kpk|YqD#d*6gXG+ z#`*`?Wx)^Wty=|6;#)}#k6!$HK-t8nv@87NZVVK<>W7d^EU7$8WCkgDch^J+t&~y8 z3k3=wG&DPge)qJ2u|Tdp1`eQG1`lJ-GA7iUUWlZXc_1LE52EbXQ}3V@@im4dnHIYn z=)5w)Xet5$2U-k)+yr*K%&;4Y^fYI}FPild`YzDO+krg4bH)zd$XpXIi*#~S^|(IW zZlGo7m=a_!s^#KW3OYVP%_;6yQ9aG(a@7rH>XMvpt+!kD^2$KGy~DdCvN`t-8ngC& ze3+@(c7UFJ#c?P06y#MWSryH9|0QCMAlhaAiS7!~Y|MQRgO?)G(th>BffV%BM?H5^ zTge!xN?Q4&(7-Wy>yYChArqI3(JNlx3&80o@(I0ii7EYy&Vqe(yJFN*)p?SLn8AQT zqfIG{3r!qBf+pumhT8ofg>=1q>IKj#uPf==os6aMJLy@6ezM7tx_MM$|GZGiRxdH9g z7&|T`d!64pQf)tY-G8MgU08S@wcVV-NJag0je4WglsMA{dw$<6nA*Y5+I1TiKL03q z4i*C{r^{6laVdiubzk(p=cK45Z42-7k&VStEGknc&zE`erbIu5d7+h4^Pw+bVyu|m zqWXC>-yBI=THL_9>jru$lRHma^8%T6W;YJw{Tp&rnAZlEEdfd8a0e*7mC2 zNMQT3*C+QY+bU{(SJ!AAebJ=DXe=_H-jIK5yUzTEdZlZ)K~u`X;igPGbtq|B0lK$= zg6icS6IpD|GUlQmks@v1JEHZbvx#z0h&0XQ&H6#L6}qL>lP79Od}e$-`+>{s^F2LD zjV$x|fCiMl-L*aZbYGXpzQ>&6MYT^ST!~$I+pr2yVjQ4K+VI2DxY^H405PU~FrV3C zU9o$Ymd|3dhmZ>lA^bE{_HA3k>bOkg>22*u-Z-Ex-2Nw(y80J*Dkie@cg?2RH}3LTRHP-QeP?#jKhj%azzKn4r0U*Ro%?9mnzX%NrkXnPdGH0HzvG@&H>Y^J zL8M@o=Ee*5r7e&2B*bUuNPXNp|91HH7xN5fmuA@Fg~r4c_`_>j4N$6>iVgo~DXfd^ z7wGNqV4z%OgiIGNSt!;E!r*sFxZLZkAfW|iJ3|%*-Dc}U@ww;*)?v`k(CKhTqJxYE zIjRRtCw9<(7`TRGmPakh$_D&7md-FJObIys zl5`6S+*?ssGcSDWA^?&%Qf2n%f$x5e4DZ;s$1F_K_NP|sZKRpLMAXM!wcJ06Zay!q z-Su8nTbSVH?c(H$|KDo|xhBTs>T}H zWxRc%5hv)iG>k5%GE5IrhbUWmNF@Xvi^p$QfFtsUV!l~HlyE(s+Ps?Q4_Yl zFEf2*GnMl{cm9NmP6nT05q%WVJ+zwl&xZ=$zO)oK;J(r3TzvldG}v0C3MG1wg<=+= zOfivq@gLm4Gp}tIB@@hjJdUkmx@Mnam z0b?>7RyUC7w7?lPvvZD|X9aJ&NGDS5-xa=|VMvGMNwTUTgv;=jJ01h`z}U3>LsgM; zM&%BIwYRP+rIC!}gC1IL!6e?0O2;oE;UFr{V3Bc-$d4@3h71-b7bq2DB{4&!!ysC% z`Ig4fY*TJ~a@0Pr6ngxJ7Ue6Px4;r)lHrCAZ5V(FxcYfvwEW3O;80aNfH?p@6BlGP z4g%c{yE5g><{j42cOE>--=E(Ql}t`kEPlZHSj42p6da>IFK(lEfhqDfL=PK~6BSQB(i$)_GT$(_i?#!&bPq zwZQuEHxTr6N=KIjGO3*D;g9^baB`3|W8STGC&Ug{lgYV7u#8e*L#FrGHjd;9>A}Si zsu#5X?kb!%DM&*ZRO#8CcU`?9HU#$Jx(>*GvhW81`}lbxOD5IevuRxHrVBfy-DRBI z=ZY+a->U!p%_}r({Ai<}v6$nVIfIMEW=)@{z9MCw`E>BW{iM3%9r7%toBjTtA;G+u z$%H;yA-)bRtis9owwRq*{Vm*n(!97wV|&r{T6jogP5m zT7;*kSDCgt;&U9k{$fS+%~SmFcrI`BXN8|-S-Sj6317i?`2jG#7T=?Af=n2Naz84A zD_u3h`HPXVmXxfte6f?H)i)Qr zUM0!B8f?p>FX7#FZi2ag!W|Oc@!ElUC5o(ig4gCXr=f2Q0(LM&#T%|ZrrY$KrtR4I z)zKhtwI_aIP}dV;yJWqs>ixu5EKMKTHS>nJ+|Wk|2s9*mq2MyU363oiKC;YX5Pvn6 z2bl%d1nyZY^bQk(ONZOXW4WmxCJHju}Y7fBYb|8U$TCvNT z>AkgNFOv?!XAzY)p3t1CZg)=(kndhod`q0bAKmxMC**y3cT2dMwo2t1#h!*ed2}!D ziPYeAmR~vzstb$bxLy)jRMv9*>c5c+n8mUy1JJq@aD(+Ie-q41;=o!kJQrc9mzm>- z8sYrZ&UVNTHY|=;yA3wzbZ7>e9dtE%&Vf*p)FR6Gwca8c;<3diE0ZKL0-a!1s*uw) zDdgwgoTZ_#?|&?~;=RJmh6)JYBby(Y%hcqv7Rf~pnE^r_I7ZqC4r(yAJMcF$4@eGZ#i$5crEd;WcydPVHyLj|1vBHa`vyu zRkl>8+hSbgIZH_XMVLbGHqXlAStVdD-PL$rFomj_TsI*u_26dedGCBHB1kgE!&Uv4 zCj4TP-x{-0gwjf`1Z0i9{Z@&3O*TGe7@bQB;Jd{d`N_5MORbvAb&Y{o@mXGX$0e@N zh(0HNNh`{7Z+iHJB(xDIi~$Qq$sUo<7nM$bYP`te&q7sd&4dnGv;cD|!zh~$gecnj zE2WrW_@^fErxMk*udmq)n%NBx2{em<1H!n9y7sLreOgkGTy3==F5;&mi&oNKlpwDb z!@(S~fzuxiyMyt#E`jw3nP%JGe}Gb+gp z+%vg}b45Lc9V#*ol9^OtnuiI^L;&zX?T$R13_y#$OH(}$h<9r<|$DwqS*hGb(iuSwSXzkM$k+I}0 zg(HD=`)m+0NOF8F=zF?Ntgmr&g7D!X^A@_$A0maD8Kyo(WR+>i(S&LD#W)k$IwN2-Ks565w&Ub3D>65N2NSZttlFzH2 zbcuuTJXm8y+v_=A*fCZSj*Hgtcq1nbS9ya(fjYqpN(tjcgSAO7=fYH=ayX{;E*g7> zO;&)^H}dk91!zVZ-Gc+%bW>q`A2=e8* zR^%Nku5ZPaQCS%%z>J~v$avf`C|sYwx#1O9h|@!LMHb{BJsatrHfb|(-;`igKIw^Y zP_n{?W9CA=uj4qlYP4pYBd&|C)l~*RnLx-tDLeRO(cH^0tofuBCIBgSs(EYuXA>Aa z_cME?xWjZSOGw;)V>jNN6g!BRp32a-sC^*?Jh>2m_pGf5cz?%(V+6&m%uEaYk>aLk zOi1HKC?h#}1dmQf6zFhSF!VQ+AlTa%NA(~r%8xVSqbOZn#6U@L!*gLlqfJZ`rAQnYBT9j~}gITNwMj#GS`3~DiEBuD`#h{=Fx417xM{=U;VW4~gd_D2)(A_l)7395>q zbfl`YKK3I@J#h$n0gr>_3q7D?E34Xa1auDCtNTC60FHYCT@y4^c#dH5AmC$TEva2;`Lv^a_oLBw}CpL2HyTF zH}`{7Q0YDI3EaeBF3U3Hw}c0}oE_-2u4AoA(0zr|COG9==T{eD10%2x+g3X33j2kM zkk8i)ccof1UpxZNuH@adB-9caA|KI%n)qZgSYR_u-M(G&T{uaj*l&`#VlwH&<|5C~ z{<>kCL&5moiP1twN!qA>4RY4Lf+7DS;ez_nX4?99k6K$O4f3CE5e2RvmF~4Qrkz#{ z7n5}>x1J0{36FM7H88+cWWw;CekOC|nol3BeNok6#(v5RmCaRMI#fLR8;C~cKn3F` zzMZs)FxeixI*$Qo%;)BJw1cNMT!WhBhP*F9B?-7^&Y5Xw@;^~`#PqonWCD@HaeTGc#&{oA(YLMyZcnbdx4Sc%*w2{s}S^-|2V@Hr*?)$G1D4%V)~OlYhGB|^cPv2 zb_`ho+Rp&)Btc8*`57X6%8s4fuWrgY*-|&U~Ym!#_k9L0rHMNR-g!=xgh@oQTJCOXRef7rdEk|+N z@g6C3xec1hvry*1;&u_^>W;T1xe#+h>6Wc!y9;vk#ERRr|4aD3ueX%jM!5Qc=!In0 zu8h$DMZ-gIt&g3+0b`mv^b0nI2_D^UdgJhys$QgUF(&}+B)nW^m7+mz>H+T-ljZ}B zxWgPq>iL4lk#zK{>$GWEoD7;X*@k-qMAyju&B>0GSRI6P^UO%0g|XusnnY89e{StW z9S{~T=Fi`lwqBXjQB3yUtq^`+3`hCG%E{ZA9N`TMdTR(`38Fo}cxP@&mn_0JA?6 zXZ+we^Qq}3%dBeoIJ{+cYV)r0%qe&YvfKXN=XC&+jE*UG8%t2dgT+9gw~CV^%huU; z>a{%9D{ZgtyU9(J;rJd~u_j6fxY?<@xsXD_t6X`l0lRvBU3ZlEK3#Kuw4BUu<&yQ* z{(6HgDaQs*Bjq9JEc027oxc=*T39E-LYdwq$1aanT)}wkY&qO%y9M{}3H>m^9-o_< zzf%Fu0^3?+J1-n}UJyet=h4~VeuRfG!#9iP(Djbz7#6jKkdg56umIcY#ZO% zsOM8m21~!ibYeq`8Z@G$AC6oUoz>=xZ7h@Xr@R&AKqXvPb4^;aLvw(I_RwOtc(1vW zWcXHGB_j3&8)k<8sDbrxW>F-^Rg8vxUdaZckq0$)N`j349-~w;oSGJBSZB<@qWyyj zXqmI;J5Rq(^{tmC%sf%1mu1<1og%6UX(}`iO1<1bkik`=;+G7t;gz?=S$~J^G*^MI z@hm2MXy$*UEUfNyZGDMJs!y%nJXgOIQGlgWZ67o>SmAKd^->ovs67{phvx<) z?+H=yS7)-ZbzbG34<9Nja-kk>BM*yKZ>d`79E(t_=L8l9d$|bt66?WQYJR3-mq)t;1VP^je`;7A&?3CmI#3) zuu<&#ONETgs!>}%nlL#y6y8^7KPCs*-M}503+>50PCQJXim}skoIf`0ot>sWw7>-a z!ffuhFLms;G9~ip(Tt@y#10c4V4~VjJ3s>npR8vdGRshEI!{)|y!O_=ui%~= zr1s{vHjvFr%VMRzLO8no^s6xA2KTO&7w$4t0KwA>IV~8vV=0>BR8IrZ{daY8(Xeq{ zwDpwJUSWEI^o%%0_-zO?A(~~;_eyj2`LCqzFK^l5cgKAlv;-vOUNM56gKNH3qIR?s zW@g^7dY@emZ_z0{HqA|GS2FWawHd>1hGqZ!Xd>cpeVGqG2^ep@zkb(4y;Si%9-+At z!lYK+Xe1f3-G`&px@O~Zfl`xzENEd-I_y7A$r7(9M`rjVI;KykgJmbXs^<@41I0Ip zxE*gH_)cl2CK8{I(w(psiB8!{gpUvpc)z~5nNlr+5cl@Y80b6fOEy$=;Veu<;%)rh zaY^a$i)xcXZ>yFt#wFFEd&5R8#plCaC$k9eWAf3|EUJ9dicPwQ05m2ba=dgQW5%&S z9K`i}w(;VYf1@SP{tR=C?zg(P#iPZh?DEk)0|+!P*zIH*-6wO~Q;p)}3_Z`-8UpD@ zfZ+iHTUmia>p>=z?RmAYd&Q=Y2XjRb%C74~e_A}frM~pUJHlJt1ie7GM4CQjYZJpo zSeM-|4VU`WgIY0@mwGY4=8B7NSUhGq70>W4>ct(Gw>+_zteS6Y=TbLkSI;E3OIOgw ztxjF|>ZqC5@8XB}r&yj=5|QP*_i^=9R)MK@)|V3(lFEbK;UN{?LrPW9((wK0`(!N1 z(SY7j?D|lGJ=S&I1<2)1^Ej5y&+GiInL!QatD*sQs?1l7AH@Q|tw=B0Y;%hQ5IAf z>o>SfmCmw$yLUMTeyLW-LH7hc@T+;(w6M$XDq5Gt@M;|w{{WM|o?&*YDwbzDlI%)52U$!y!`CfqC{Z5glD@S$e}Ui;F#2pxNjZcD4t+l>CA1~4 zvmxjbpRKbt^EiZ(=&ytVkOt9L#cB96G+_MQXg5xjNQtU~tF1-E(X1Xf)fS zaaT|Zp;zEr1$ZZy-Q7p^+RLTWSg+j2rEZcHOC3)x0|=Ns1QwuDICpu!g)KI_`;X^w zQFO<*tiw|J>Ys<^qWVv73)tbs^+8E+*y4R6s`;vINDLvYPwMv=Onn4+mYqy`EOv3-rx<Y(lvBu)_dyU$AM`fB!XEB7$@JYBiDMG%nm&t*<8m$%a0VaA= zRT%!~-?MCJLDNv1NB&wBUUjXj3F?-(yF_M&F^n7If;(ffwk z02NDr@62_$Ub%?JXg(~}OF{!Ucz1&oD-;A2>DxUnB&1n0UW3!WqmCeh z#Th2DXG5O)hYhV-!Uz`TuZRjIWVFV>KQJ6hPlNd)mJdSBY~51M*>;3da}6=S=(kBP zC6iVU3SO$U`v`NsgAETg&AtKNa}+-@AkebfWAv&75qZG<-LESupqs`xyb9@nU0?+9 z+qq#q_+?}r{3N@Qk;e~Z&UKqSlPX4yt|7}z-QVEg!hzXc(!2i%wsYVcOzmtX9=YAi zg7?Gt4nu)5-ZKK_))nBw38$mJAsfTMakHZ+ZE<(nvAKP8aZn3eS~JIZA>lCuP$=9x z)dRFwr3-A3@fxMojw*o4r93rr z>AiKuZ$kTwIV_`wn^+XpR#bTbLjJ(0Y`fg@)1QYG+})iNZn!L-sv?%ThOQ1fcF1Lw zl^{>H)zP9SARi(dGEL@iR8y4(aa;O()31l7e0QKDH5n?1c?-$KW=w1-2`?s97lxY63psjC~|gceCR%< z-47^-M$)xGq+BC{&EW_E3ZxC~2PdjL6C$nq=G$QPQ;W(Q!|Hrlga#r_R=R@|6%(zn z>EKZ((SfKktdD;JbNN+L=^{f72}h-aC&q0V#KF-e-yRK&1=$|8jTW9T*JUZxj5Os~ z2xQW*6ULZWofed%2r<5B@uH&P(s_7_rmekO(i9iU_@h}a$+ypW^~3LcR;%)?U+ zmx{MldOp_sVzO7;4z$wOF!v}-7-%>4PfKB(Sa7B&A>6)p6z+gvfq7J_fCUq#wHBkx zNLK*2G0)2fYc|ZXINc^E&*zVky6g(>m_w{iHNSdZT1q93ZrWpgsu2zsj?PH^4lce{ zcAVW-O#Ds7X?7Iof=8=|IY4sY9pG;UZ5N4XO#zm21`n=?Z`UP+A#{8fG6o@C zn|^Y<;q{j&(X2VWS?+jQe}>|jK@*>jX|HSa19Rd`U>OfM#GOms#U27{j+;&_fe@E(mvw5o4%Z7OTxU?8e1u{y4_PC5^V z)o^lb*qga}dDNu-gJ%%k2;pDVwI#J+ zIDZtk_h*(pLGtjs#%rZANdgfp3==h>VJC0ZSn7aERguV6OkfM&w(?&ces#`6m{YTO0^{yvM7*s(ba zeSR23r8-p*t#E|MxxI(J$|4R*_C5B@x&(X?cLi!d+D4=FZqb}+Pet|JDb(-|nI*Iz#isY){Rgd-grTH|^iEI0pYHw#NznCTuwE^C5aSkHJ}R<;8*#gIk!$8ak6B2PBo(kT z^y}fHE=7}YPA2ZJxTKtkVHYke-T%r3xTi*q6~5b2T4GbnOO-zzs%j%_=@XS1rHlYk zkaZ4$iyi7j=lct9P1i~*u%Ay!OYGb!!xzQ10(4Qct9p#|Ub$lssI-+DBYS*tf9t5ZyW(OAhJ z%ds^Wh({ieeW!Ha@}&ZUa~EaVZIA;xD0$DiG0luh)9tG!-1TM+L!RQQ&ozGSa?-XU zePZ#RP+GIqoQV_t_ zoME@zAlQDxpekf?O9VUPdv#gQx|OG`u^3OZ6!0qN$Ma?1yz|Rs8CPQ@=EwnXM2Q~_ zj=Vc8HmId5#cR6A!4>$smd_6#xUJ%O*&68R#jCvqxFfGV&>LZXwQsWTOU1IPm3YkI z3AEDp_2Q`)w5g9}7V$P;k zi&&&IUe~nkS@3Nv9L!9B&>jV%*jIGTvFFD63J(ifl^Bn}MxMBe%W}Zeo>v+1Nc46B zUB~`ZC_%$+39lGulYJndFcF8uMySY`s1ctdg`zrWA)2bDo;CprSN5#B98YZD zp)bT;#>BOey_sA+#a^j;WA8-#Qcvpx6{!skRwTMD<&`2N7kySt3@lA7vFTIe9OCTFq^F{eOQm%z)hGyPdOE5 zIi)2bE6YE<_pPse&Opu_XymGt*i)!1=4wg*^cl9@te`i)q?}Jd@BeJRZoWAxFl=A|QFsbGp^&7lkwlUHQEQ+;2<$x|?z@8iUB}%^{ zzjC`(A8tVA1tYeWulCJ)SXUV$=-PBJT@}2@{RIKYlIJ3@`WZ9bB$*I;AHJ@|Pf4OekTHDTnNY%S^kZ6G@ zEOUTGtZwAsbnPoqdpYrJFHMyFTaUWY4j&pugN_hsRHz7%2ddM@X-bO4Yu(Je&0+TF z`R*ivucpEq=;0f8Xt-<6@6`ltuq~h873aBPQ*L2%b@GJ(cHLN+`)FO~}|uC%jp%$NbN1p~|tymulpB*Q#fJ=TYm+Lp;}`;q5& zeTm*6#hfxgka_QOze+S4eOm33x2eXuwyMLhp}11 z5_9uKez5jdCDcGjPRJGVKLpFAq}Vs+8gjBOjB^96JP&J9>B|;19vtEG5rHpVvfTg-N$@fWlXdEoc%J%~<0(}~zu~=*cAE<}@|X{$tMaCQZ1g6Ve~e2RM`N%`A`(rVmbOh7 z_ZR@k5t|hv=cZ@0oT0-@(;N?vA7*+llLPigiR8jHL|eAjw($(}l$G3SJ!I;()D}I6 zw(F8wjmnu0J~K1BIyE#i3%BzH zf%2ZZ4+(B`yB9;$BKoT3sSFa}g2;j^jTp$A8-X zR0A9+%>MyKe)}KwJ(T2snh=*DKT{ExA!VRA{?|^Bn(O>eqyH~n?=)3^1u_Vnn~OQM zwgj9mWgC2@<#ZLY8Vrns`9D<2>UGFLP-v2xvI@$QKP_IHkTR6mhqaMs|6g;1zWGJ4J8Z;%KpFZfmBjhC>l_Xq&zn&;6mAwH~9mXBj2==n!3-J zT6@Cicl>#X1djSY&{v1aWu>!WpeZKJBE_G zn@oix_w1u_XWiwGp3i0HttV7wRvAxv{85|*O4PDj7|39nTw|jEC=@t{;{>uF7$_ox zN#X6^XiDLT0aaBLf2>JN!9LL7`ttlp8Z=Nou;cj7cWMs}P8#AWvb!!AL<`SA3|=e| z2w5go&Y7f>fI$=x88j?pq_`rmsa)D@m=ND- zV@Veh(BmAo*u#ggeQ@Q@v^)??Gf5nO98?KXw0BT^;210R1{C z^jQJ!sw(aY+|kT~W(m=u7p1e8h*xsp12=HBnF!SY%IwE$Xvu+}>|K~iXfJx1`llX{ z?pN~x1fT+jX7*Gb0)GgrLBhy>hfF-h)!g;y6iEyuI(U#e6C@{tB7_9qgt0sYMkMfPL`GV&MCG8d4D_fV3<2$Ovc-2(0Gxza{Y_ z{Q(n%J7E-t^iK%i&iNT}BL46pqha)_xIwiIY|+GnOoWIQyo*t>z;;e=(I|pUWW3w~ zMy4Q8pE3yF*+9s4zuct{N$lz3Yd5VKkA+)P`?6nuO~u4galCF3C<}E7fILcQ^m}n&rIEpYR83v zM%|pDZ0a&!-APBwZHnOQ?ILDPx5gDWGEP&XC$_i7(kl&;s|q!tLxR_wzL7d9->qWb z%wiR=Y}i$XlHbogcWC-OY||>5OC9yO5X`>pYbjX{3>D0_b(WvmX^qv36V;qXbgqy5 z3a6K%R0XyVDlkhL4A?|!7!BKUq~;PpUUl^IEyX}xjEgRuTTgw5j-5w@s@UG&k@YOX zuSvtEchiH7n&8l)Hn4pbtIdI6pZ7!#d*G-GpUldO+WfE4_nnpsU%i{37d`p%p z+_SO|-P}047F^ur7nPlI%5zu{!{<04Gqp_tl#ZI^Kgh_= z9Uo_SMHXZ!8$CGnhc>G_?z}NiRoJA<6+%NcZ4-rbJxh;%Dqnt`N;Ls~fjSBMH`)@2 z1AnJ3C@uUKkFwiTqV^+I9yR%}m_#ET(U5%`*s<31$K_lj?P%fLqPU1WST-_0_At!Q zh~`{J^M+Jbb2;SLRcXY)F7;AVfNg&C78AX+bI@A$>` zWr@Y8T<+dXPm-c5@=6_&6lMjr^@7tDwvSk2FZ}x0Omy~%qpyk!C%XG7UBKwZ=PPM- z8ql5cZ(TEQrN#CIJwA1SrIP(^VTXPPkW^94|0rTh`rb$JS2qFhtKM&DfS_m`5G`;P zoZSw$7YhqGPm3le8!6qoEzbzz7Fp~|#b0&n_@r61kS!76LuYkJ&vVGvo7Xk^dGOGr zr(V$ebGcZa=&2Pib8WRxvyI2xg?KM?xgR$XYJ3F=E{DZ*I7OwiyIA+vm|LS#{B)!> zU;OoBBug(1j4m#aWg#TVQLUv&NTv5ytHl;9Qus60lwe)koBn9f<417o*N|Tv)!yUV z+xrg}ISObDQvt-y*jbApJ~_LZB%^=feIA_;n$EPxlm4HnNK=F)#KeY2Jk(cGi*WGx zx?*I_Zap$w*Mxe^>)crkY?h|CQNwEhH z%0LrNw)gqeWk~AxaSyC+^-qN|slmfavtI)-o_Hme-Lt=-8iIW^``aCqq6PEdZG_cq z8JkHnzdja|3#%lQ?h?810M6=K*oRQNxIvASKk z{kE@Cc#{kDCkN2z-|xOp^$d%329cgv)f1Y%BD2B+%E20uM&cG@Vkr!X-mavszH%pb za1`$4sopiK2Q%%E5cG0t7~1o9TEfb>>7ccvpN__#I%&LWx6QrveahMH=24-b1)?o` zf9=H;uczIXcJ`uS|>v<{k%@$qRu9Y97J{b-9b)dwvgJ{Ff5V@v$ybB@OlWVId${ zw}@f%e>V^ikeRnE&L`=yC60Ot-cGSQ z7)W%#Fp3C1TN6fSvy%%jww^H`jCwiJC1lx_q$Tz2T}iWcn4@OqG!`ClgMD|4{x}R< z&Ceb2|3%kaQj$W8qVYFU`hpXmeQW~oCdzBJQ{dI|mV04Ynb8hAjrGfB-M0x~q;DkZ ztLUjPs0=Sn5fJ&?&^?{yI+ElEW;YL2*&^<0KG@3okK5YdUX!e&cNHaWWx>DXgHn!~ zm3phVg4#UTY%~+Z(6L5@#|W+ATen>6=j`a{WIhM=l5o4{7sV=WRB!d}#v5Z8pB{dgP5 zm-+-kc`|uGlIvlXv*qzF8(?6QL6NzSC(EClgg`^X8b_Ug%u$d@*y@t5s-M?68zeoTAHvcF-J{^qBxY^}n z(7yJ~YIg{~wt1T_MzNAD8*|iN@ldi=WVmb0A)`R_hJiwzEX05k>h8wBaIQknXNaS$ zLD_%9Ol#*dSL$f4blP-PVyrpc_BlwPqcsg?n$KZi>dV zW4NuPyBdI(p5>)6cP@ND+p%i=aU8PD^v3%VZ*CjK{pPPg#$A}*^(g)?3%Pl6_@OB< zZd=)NvF0v$%xLS{@@8&w_yC&qivIWTqB`6QkvpRa!CS0LyM z7Mu=rK(Ulu0bvmQ6*-AOhUUNbQKYU2p6h>I^Kk#Yo+^rn zOUeFQPn9|07{%@FTtrQsjh!qVTq8;ZR= z;?$qs0m{+!4X6HUT0KI1rnuh>ly`K)wzv;5b8(_M=rtiB45P_@f+3Htb3p%kVP!)9bzqTfmYO=r{D<`qgR*kzvw`N!79i%bq-$3d%2@R@Gz7yL zpQ|dB@iLt7v+0oBkbH2^+3IOF4BQR`9W5L%tscGVxoCc~2Rap5tSsZ7$~ngF^=S8z zK7q;|Vnr@r&T0ZV*4GKrC#DFMYoZj`sRe!Glae?UM(9qVsc8vLK2ayrR3i(T$S0(y z$*x+ENPSG|dntTA=bW=|1$jLi2vke>m6M7zh&&y{JVhaK-q)O(%FM^NA|F~amcypz zOL&6JdE?RG@+A2wqMtWzP}N*INe^ly-M3O>a|j~{I-o0Bb=zCy6%Uf8wK`Q33~44& zFfLH8iS;IQM^k%x#ZwZ!CsCB#sy3gKf12STB|YzJvM+Qn@O-}!(nRw8=T0>(wODo> zJM}$Z#7D{r%7adWOHJ}41zheDI+z0!!wmw-x|$WIROkuLC7qK21`oFse*V6}euLCk zw&@JnmNezVp}iEc-f#Ow1ifIRK3K%e){M-7>1X2FF?O_SRrbNe}!#@+VR*^)Xh zf@q>$BBDpB=X*D*(Z&aX(U7wtA0F50F)0~P5V+hU-I_>r06jTRxc`WN`5WZ~vF~O) z1@YGSNvd8(f?IqK2|WFz_stpwxrqoK(TIt~SARS>f1Xf*)Xa$V z?x~$6I4|}1IhwMXhn66oqn>S9nv;xxd+a&d*noiG_tJi)m{5=f>Afb7GfD*UvL8S1 z-6NQ$3}&gX4uPz6rtPtYZ?;xLCyI^1z3g3!C%^{ME7fF%3ggIkuXJ~{QuQ?sB2c&9 zes@&*^?6$>wZrXzm(0NIK{Z+5<61{r5W#6QUCXQPYCrS?%9_!enDc4!ds+e{OV#HD zd?P;W5bH%g-hC)Q^MfNu-+7Z*FSKS~;l;C6jv!i>t&mlQt`u14{y-u+nY zW9BSRM!(M?VpO+6 ze-ZlqsSBCtxb#M)1xqWlIBM|nmNG{9P8X#Cga$fwS0Mv2z-Ai1HLTfH|5T%Jt(2fv zH{b=+d$Egp(JL{*K2+rGCTkCN?C#Qs4t>%IwVC@Q|NbqDqWA*S_u;UmTv;6#wbnDs zvXx#|QfTk+;jc(*SKC;-udmo&#>z6K+YoF<2J_`5wQmF$X@++9z}@ zvhDe#X2L_geDscgT7rSXr^b-`9#Z&3h0OOVDcezoP%)brRYCoN1GL10zAX;V$upn5OtBPPPrkMX-{3(KA zoe$WQrWJgh-6Z_+d)`@If1Mn&We2_=65nrI@T*ZMO+nOit)>T7YNu|>mn(;um|W3M z9Qp7R9mF7bGg^wY+mRkcHr#Lg+U+*Wwex zRkH1I#oM4u+pFUxSB+m+(4bR{Sa0%m-VfF+y{?FMJf%8#v+eoy#QVX%msT2zk%f7g zs&S+>r7sN&z#h*`EUGF=8VZJ2goB#q2;7Y9C2AgRr{0Ho)~|g2q-LYvUHOBCaQ-3!Y_rezm0RSZ*{yzy_8WElZVHHasJOZ&;$ zSEF)*<|Hl3zT_qEo0-82W?`)6t#KIR_i-=6Z&EmyE7r{=^kl#vy8I4b_0zc!!i9uB z;Ze&WzMCFypB}-pPdAD*&MeX_no*G>9slJ%eFaUUa?ubul_1x?7I$iYU#2)eXL@7h zqYVv>#^ZAjXfDZ#?a!>==k0NgE-Ome+IslHK8R zezQd<9i4Cat++jN$x}MTut4wn2a6fb*9m3oYk817f}Mn_yvz6d?~QjzYN|IZTiG!M zDdjzIVDR+jVHiN z_OL&gnNg&#m*HgdK~|x7+T(+~zN!~ z(;rF~5k)WH{%zf7A?q{cq&|Xo!I_k=KQM#&HMwM)_B^)**V3w=@%*4%3rmzCVc6=| z^XH#eRrEf;SJw-3_~6*C+awoxds~HIELLU7Uh-aFQUZO-e$jHn5uKcRgD1NiA-4lU|U87Tp8Xy&7x^0SgI zN`aTx^iHTdbWxwCEjrM6;+(OqlFZh8>*m^4Q4ex~ZJ!FfmTnR}Ti6g}>2GO&@_9*q zY~<*vOXz{Jm>BIOO!~Ys|@%O9aMwa(dX`6#d%(%1co)8$vdw>+x@=Z&V5P2t+Rk+6e)bE^dq!TcUrYOrLU z8|2-v=^>X*wxXW@A~#tzIC?gB&^%O8&%VqLZTK*PG4S^*I*+?+S{tHbedo*wTZ`1cs7=``7VEXuA(B*}?EuGos zDLZZS)9TuO=6d#|?Xr*l-zQ}+vE1N_ysSSx1eK5eMrE9>RgGrK&H`rw(ukZ(dbI9nij-`kn|0uwpW5%WqCE8dWd7OP^N ze9|Iunfuz8TaSY6LLkTl(r>Txz3l1OvTi-Z^!ia zeMb9$3b)2~jo{j{tN-{R-US&vPq06;oock!cuGuT| zu7*`+joiCfS41E!=XVH{Wye)H_-!BrggH6F0Mb z{DsyM9*~unZ@MdFmrA)h$zW?KH8rE5>1l4{JgVj&w4C(h1hFV(li~*f%FrY zNp@b7xk3n|4R42gkTkEgAdM1yA?9WNg;CV#MPkgF!}Z(Y3H~q2nXf_bu(=oP{LqZh zy-2|Ec#$bXY*q{I@zH6GKRV(H51Z$A!;MC<&ejj5Ly>-P)`?E`0=qJ>%uA$`;_Hfw zI@~{5UG}bq4eZ1$I+fI374b1Sj}i60p%eF|ew^}Bcu)p{nQc?gLL1&?Ok3mu^GVbBYBPkd?d-V?v{oW4XbJajBj(mF-|Z-4DDP zZ}n2tg+=VG`<%svUOYEcu9ubnX8K~LmQFiBgx~hfQrtPmvQ>M2WZ}?hO;=f^je3oY zcP3B<7gN8`7>8>dd6D9jH~Ru#Klt)8H2o`jS^At$9z-U^ab$Mc&12P;_S3fk!4(-^ z-2>k!_JP8@DyLh&JRM6%qC(D;j2Mi5c{0r3sx=xI{WIzvpNkm%TGumw?7nUmA9~qk>}NJIRTVXKeD0Dhf5|_qSpL*) zH;nN$$;AwBVvosii4KnOC$}9@p9focr-TJ{_9Ems61*>$wS9Y>?aJUY*HGV>o_|{B zLEb0x=Lu@)7uP~LcoLW;*=|V`w2$}$$7rrSGA-857MeE~cv? zRz|z!@?2sUHR*n^WTJ>rtq6*mub9t0<9++{@70xv*awl|hydkfTBI4P5+?4grQxRz z9vjzQk_Yg<1@koR9oQn(>cyWFFFLEKH7rvoAN#02;Hj3T&${E-E0wePO`JU41N2GV z3`KrAL!4ag^oNgfcS6cMGcAQU7TFv)Y@!3udv0|BYP21!LkE_1_SBW1STEg98*B8G zkq*#yw+P_;$@A_GV_~P1NRPH(Y@6Bay;r3Ard4h(H6Js%Su)Hx;|oMS$CP z4IOX)?P1Yqx>G*AT|?1JiS*gqDkkW`by}3@^J@rhTb^@ittzs#pSm7%yMJ|uyt(L= zZ|%1wyR7Uf(N$F`-{1F+n#HG8yxzsFs!!!vZF2XEmA)8c2$EMh_THB#O4HhsBJ-lw zC3R}EpLwFM{(6$xVsEM>n`o_=T$AaYxR#I3*ewiYXyw0~U)5?Cks|yBoUO@2K{sgp zWpG3rmEmM$bKvZtS0v;;5z#M|l`Q*PYn>ZZaXlC@pf%&VygyG;Og) zKNP1}g!i+Ko6zx@_k{fpTZ+47>erf=errlyn#H{&+-QCVKIV9n`bPG+(|DQ1^%IuJ z3&Kp*oYxxa&3`k+Y~9_Wcu~E+pQr!MN(i09%4xLAmbumdZZf&ac$4g4tm__U2HLTY z-?#ZKH0(-k*8^C2PG(cDrRlTtcXhR*=+W+pi?z!V!fmQxAh?PW_OkseI+p&ETWpUeLvYV(m7O=V>C&=nqXM>z6tb zLnos28SUOT>bEY_tTj%+2#N~7B*wMlg~i>_4xUFdPl>Thz?{CiTHeW8d z#cZ!lJPSdK6?{nlF{K`0Qc=EiVko#18C_M$(pF)cAye-wIi+AHFCup>q)42tdjzfO zbynSGhSK_7+u-!Qz7RfvV%-J9JI0=@UW4bathn4>9OQ&={qlFXvJ*rCo0vp=UD^EA zBPiUbL_9eiw<7yUsp<*5%ehhF4#zuGuKL-x4dk_o*?zYX;q}xcb|+Y2z#A}?d)=0 zvZbyE)fYds0bcFaq(!Wt^5Qo)8?^AGl$Tv-fgSjOH!3(oQ<)`J1R>)Juetb z&bil{fgjh@C0#C@?Gt?W{ZcY%G#x#!|#A_?VbQUEP3)zs?!Ju$t7`!kD21Jp zbR`+O0P5?yxtc0I2n$QO3Wgi|5LC$Z$*|l>%}6}sv6U5(3eElAb)H@49tZtJs7ApY z@4z-CQVQl)6;r?J-_QTrIsa{!b@PH#8BNs3sf#`anZNC9?5#oJnU(ln8};m8>vsK*MLah7bcZ= zkW78~o|#U|WTbLUwe|g^7YCP<6`BMhx#g|DH2{@;C7xaS?1XSwyAA0=KJ&Jw#jaX% zvNj}yP2{Q!Z~f(AXLxa|-aY2;Fx#|OkD3{PBf&fBmy=G#+rLq{JfD|~a{12F?7$)N zvqC05P}HF`XvuTMqlg67@r2zI9BxM!{CUg$p1I8W_)6zc0>d2jQy#AoPA7C)x*|_4 z<4#eb@{s3`XV<^G=1&@5fK$S>ggq#3=FK(k@$@rglHQrO;0h_BDHREd_o1_I_4APwIY@?6}3i;-m<@IyT?*XA!y8Vxx;X=Vh zy6N(KxPr;T`%82U0h3Ctk*#J7=;6Pw_=oCfvaQC1n<*dE?_KZ7!ktBWLFp@KOm$vaAxzqWJv>C#cXq%G@hA*!zT ze7?`tr%gGrSf83Q98*NJ@)(~)yT_TAE|M}wF!{`l3f#YElJ?-mqEybaR>OGZf<5g? zlJN>t+9Z{?BSu+0w3!deHa|bE5~?>Ad@27UmhePZ;Y_pYTY~GUe6jvTTB2H;ESR7# zDryt~GDc^uZ*6xpe3mlzj+}@pMGMoSEj^8?Eor(p&QS;w7vKTzukYCz>s}VIUrmHqW?Je!T-mxCPc*}t2;&bI9y&pzl%bL0M z3oUC7W8#s>aE==NYzFYT0+`8HL-$9I7|sOQmuYrn-Ha(~7|#3d`I9VtCMiRdd3Dso z6~QFL8{%y>xmQYjsYDPwupM*hbUH1ldW4xeVeH8V3l#c& zn-!AA)EwPtux$EKY*?iCHd^P^=Z&O}MN!)5=5E>FO)bs`30W6JsaNjrPZ44draALSyaE{=7YPIy9L7 zi%0h*kK0s5A%^{u??Uo9zY_MXXf*_V7HBt5-Q9Z{Sd{bO<}mdJdpA-ZEiXZD&`Zyi zr}lwm$vX>pnd3<7k{ah{U7KO|-~nsdn?~r8=MNL>P>2EZ$03i|OC++ihA#O|iKHN{ zv!jwk1Eb!QuUs-2cja!<8le-GGD-7CW$Sy1we}THXVXS-8Pt~5Xwa5b!V<3!=rHGp zEr*)idOF$cs-!i-|12x%8fN_g6bHK^`qJ#+QK_p(Zs3c@!ibDT-N zggZtrEYF)O8lnQW=@^Rk93it3OZ75&+8cYA9ofzWc$fcBi;2bx;V;#Qy^&<$a*r>nI8|1s=-5B3K(%N_VqvS^!4fQ5dgo%{3tZ%-{$f^ae zE!lc!qpp~b0aGeFGqd|f)g#Soye)5k5hR!07^-rmH@cJ}COFn>cRoDj+^5qF-U^1~ zvUcn@e%ks6aM|UVx@FgRY31f8tb$%Rcf6I_YWwvJ6(I~>56<2cMf1~6-!)s8X86)6 zdaV+YK6J5j?bW5$Q)p+jDpQVo%HthFtH(D)+n=>`pLWkDaUaK2hFWEJ)4`_iEoznM zw@`2QfAMD866}O1Ow0^IwWEi^S%Ig4&rOok8>-()d8&5J&XWIe&AX0ql+cW7ixMH% zw_BGlY3H1yQgELcv%QbD&irnGiBgzV%KzE7iCp0itg04?a^x>eEEBTaAVJhzjl1Lfm|&tE`@4H|(}^zSZQ<+vFY@G_Gl zPjO=8=3RD*%*&rBBG_t6#F)EHLN~q}4>6C3x6a9!+nP1-n>r1gM1RdzernmF^jLGL zlm_IYKLl;0Ii<_|TWr{Kw@-$<10B}VpIOPn``qu^nF7$IuR-DV7uSsxT;qy8DIDlF zt6ZYL#yCHjRoi}E`dr}hl(6;i;;w)N<+kK}cN5{NeK=Rd)qEl+xbB^0g74np zZtNl%`SJn4;-Y^3)iAoAs-S>2bw#o#HbyFL#4w+cyDx={h1tVvC}l)ngzja)Nc{5> zX)3R;oMy#?=I6ytZ=8Dh_?CuO}Y2_OYj-;G@ z^*V7%Em>7euG;6Sw6j$*W#P1E@b^0%)9eiMkB3a=S@Q>mY8v-*Y2tcRNA(>-N%pDa zHxH_74(Lc~I;fwQlYS(bTJSqCyGc1Q_P>vRz%bpWAn?%*3}yjGkAJ}bJqn_2d_mLT z@J0xI%)34kdU_b*sKsATf4~q&Pk&JSX$gj4YDb8fFyetAR~A=04{<9y8(TN=n~t{~ z9mLJu#1+Mr#FfR*W9kAyiXhn0!!H;oAK=soM-Ye)qZI@?iO~rHK?o%>$ew_3r`x#i|#vyRy^vmdscsr&q;OpqrPFEHDPa*lZa&h~xie4Ii7mJjUdYI#GowyCRY>gRyi#(OlTR2e3=;5^ zBAiI@efi>zU&tHO%Lr0kmGUhMYVD3IzGjAF7b0NsKTkDs##7VBlh#VrU0;UBQ=hx> zD1dwHiW!ZCQA>-^$Axvlalmz)eHPpHyV+8k<;sq4tDeT^z?e_gW3TgZN zYm`eI)j;fcYOL`!J;4&Axh;JU6WX_yO;B;$)=L~U(tHq*hGraCI?uhvl`Y?Lz}$oO z~hI`?= zk)M2^K2pqnR5wJ0xP^oQbn4{~_V4X*RQBrW!YCeo6!%M_C#b!_S@mMGy(aS9m^g@2 zSE7W9V56256dd1mWtWCPK2o8ECiLB|bLUwhk04OnLXOv^SF5p% zDr_({kDY$G&*#;)%QRk0{(I=9$cTTPIBi`g<%t90Wi}dgya<8IUZ{mfU8+1ansJZx z$)wp9RsFS(yAL;8*wLIL6N_8H!IPR>`}GGV%nS?#Vbve}PH>7md;3!43Yzvgs1>xo zAp@oVI82xQKHzOyYHC5|ln%pOaP27l`V7;P(NE}n9-`_}rxL2O8e7g3r=zH67A+S1t;vrA`=N;?4S`zPYh)j1zLL7>7M8A2WDAt=D|>!JJBuiu)qn<*=6x1c^SO z;_nv7(h^ginyx<$+cV9(>L8EqU%l=$DN~cxU6IcAQ$qkGCqJdR;#9r?M;dRsstikszkip~P{yNJjO?J{s< zvRx{Ml~AN(3A#kjWX*Xl@`l&Sywe<0KY3&r3X>D}WkoluIsV7WTQ?4l%f&-MlkOu7 zKm4|)Uf3{ZR!Gzf#L3*j}-Lo)i3=y+t z6O{vxvP2!p?@L@-7S;8l$U-*3e@AI_T}yA;SNIS$th~S-9^z5GnydW#GreQqV_nM1 z&4m7EkEw|sJfkso+#udxG$toZc}T_He9_NYSiR&yM z+&1~PV)fF`ZM|2!8ZcSVhq#4)y%#^dnKf(Bk+k;_mdVG}T{BW!asEd9gNPZ6vNzGP z+pjzQpa{R?+%+PLddmizALgOX>3VYTYB zX}oVGYwdbYE{blL%TsbxN(A$ftcC7_w zhXvHnwNw7?vTIxXp*iYyvPsqgfgep$_@!-q zdbVEb=g{U;DrspgOrDK$%7`41?1Z=4aE8)Xm95?%zn)$jNPYU=Y3Jhy&~)OVR;R-Y&xYt zm6ERKL&ESx4psN}=SvC3r|oJRa$YV~y1q4ZgEIE2&g2YOj&--1MC6NZdp!T-t5nFR zW!tO9mHEDXJ^OL1Y@(N0T(qDkOKM~v{pd?}PjUuL2?IXymwZB3MRb+fUHNj|i83&y zi_>Smgq~5oJS1bZ&UVgbp`d!M9L;b+P1IL^+V-snT6bRs-ejBMjCtC+G!;>^$rK^_ ztK3amu~lzt*ox}cgWUP$J&}|z93n1CW)eeoPsMmlXHE7JR2yHepY(Wc`c*E{dBJIU z?5nvrazlOGH0sXPQY(*23+MWI8k@!8tStXKqMxXu{G<4SdFIm>wLdLZ7FeN0t4a*> zYP`&)=!Sk>nR^*V7w(5S`Go(OZQ0bPh4F8Szr)3BpT2}?nofU~O$X($4^*}!mXGl=oxi}@LhUNsuaWA@{{GKP-yp-^ zuq7tHGZ^|Fq#|CYL39b(FGb#X8*QQC>@K(Hp5}jJprNNWbM4I*DFxdJqwQeg>pM&p z5oa=Us05jZ^IjT>%{bmvlbA0ncS}r65@vBpS5{~_pGwoI>gvM50-b$6nbpQ#_^ceA z)TH}Xdo!tJTMI1AC!Uyu1x+E(N~eP#=-naQg1 zSbe*7kll<o|#L#0+kevzMqomJWK_rMhqp?Db%g zYNlM;zyrZrJH_4PKJ_l`UBO`Nuh+djKDWy}_k%m?JXxz|Ix%dg2@p!rw~(w=K06OW zR+XC`n2sm^NF>{YgoeDz;GM2Vo47;a zNakEQwPv2zYwr*3RX5|Zeut*gI4YVtB4Y(AI-ZdI8a@l}cI``&(lyf6Z9xBKj5_|N*T z`O0%3YsHw>w-`%0RJU~{jL^89&7L(lfw=9*R-o7R&k^w-t|eQ#?Sb$21)qf_#nJV8 zyiOyuEn@0_F;mi1=Rx&l=86_o>yiZ0k88fhHLPQ%j7N3zZ@kn=EoXj&Nf>F>Vh7h5~o8r>s+Vu(6 zPkX<;qUmDEr}-v*=ZEK$XuIyN)3yen-UI7rH#VjNIZ6i~Ro|;vDQQmrqR@{%-y57k zas7O61MBbTMi5_HbWdN1d{ek)RkG=-`f7(^#&l_mXJ}61wTltbXMX+ar1SQ8?(y@q6T{#2I;>Skx4x@?JWCd`to3tniLH99 z_l3}_8j}5C#Of{L2wKZ*Qx{dsr(nYbqJs~h_8~{dz0M1=HNQvVDL3YRU5#Zy|BSw0 z1gY}9ektLdwS03C(dsjwO^FNJ#+%nIcdwF$b`;D*w|CC#+doZHw!coV)E%Ys@~!aY z^VzRh-XwT@zPOUo@B6SKo;Lg(2qdp)l9>_tcrA|1^YJtHtNk4!FH=~y{2oFB3;Z@t zd&cK&Jh_nq`C?*5vlv2^bhq>D{gxaw%=9JAklldjzEB0C>b&iom4TczSH>r&uvd!Z zcY2aU7FND!AJlvr@TBWpy`ZIQ@7dvxsS0(m|JiTOCok{wO;^%KFiOS0x_$6Vm-cvE zO55;>wwba(_Kei*l#k@}R?IOE(yu&^G7`PA67{P5JEXkC$L_?;0KtIIp3vhI8uWhm z=mzO6VXGAHIL55G-=WgQ-eC;9`@P-hWX%f|Mr&iA#}u1hV!oUv9Y8Yc@J)tZn0fSd zoGE9n%fm#UxyggAw=AAsT%|m!U$*|v#J7a}xRUOKAr|v%vA{)jRTFEp-=fQz-<=8i zb|qc)cctP`@!QBr&ViiP_?Sz)YIjbd`)G72oI0)33pK^dousO~I*iTL6*ec|FaHd? z^F>2)@4npq4>HhC0%tZS88R~|o8M4$j*Zc%i+%c)znkPpHPdmmPw*~uH8h9uqE^yc zmfl5Ur5|R7CfUE(Izvwur9r6Y3=>laZ43y}mQ>Esr5P^YtE=rS$Q+GY)i-k`jjUSCL_1@JMy>@!|@(le$&T$H8rv>Gr+C zt=!00S<=DOvk{;Ri);6D>>_Tv9JHc&y^NlbrLS&Zb@Xyb*XTM|-CRsrhv+_6@U^IQ z$lZrbFluMMVr1F!bBVT0WR1x4s}jz^gEbrEnfdwjJbX~Z)7 zNt-BSxXaTz6(D!sR>X|c)@jYT0FADAZzkVu3j5yOr>7XeA8ZU?5=571WJm3wzy2iq zJZ-BGcs)(^nud;sb$(7e)CxcW%dipGlSdy7usH6(V?k0YM0E1X@`Pb0eEzcNd{ z;C*^O7fEPl>}T%d9vq~_D?H^?$uL{#TY8$T`+`|}SRkDWANafx20J`#JFR{q^ zxop-N+kp5SuZ3H&TnM>v9{zVGXynI7J&dH`pHpmaZ)|jw9_XhT z5EOiKlfusJ_9+ZmGTE({g(o}E8e`-)=PJa@_kU{)=IgGQHdY#cXqUKt7acgMNg_9) zxyHlN&H3v~x}+jQOm}U1ln{;SIyzX%vG{|a4uUaT?CvAe*^MVx8cobQugrf=VOS)U z6^~mN3(eb-kU_`361qY(S&{c6PbR|1mAUlBIh#|1x4 zw(;(ydOPwPo5ylyN9yQO8BD`&s9R)RFQK-wAx4zzD}r^rV7rCqR=d|^KiCPKR3dHU z8sB&`y#W5&WFReIYOQ5IVdFLt^LI((2Ij}51;U>;;)d_Bh@C$3cCnZ$A%(R0E18{1 zWp-tc)O$BOt_N11LsDYaAGqjcy&sHWj=ov_MP30TQvgdb+J}uEVH0~8F{0!{1qAZS};Y|4vy3B=E=3Ceq z3d?N!_~Yeu$Yx>L&&Z%nlWm%akJ0DqM#hUcYUw)PpD*{jd*5VZduZU4(iuPBjc~aXXUDLO^6>jp`J53E~ zaEgab#eL#R0l1W!5jwh@S2)&h;4CX%O&U0&rkMQWVCllv0m;4&y)XATH3cKbuT!-p zy8BF@dqXz=pRHCnX6ffO~ia#U)YLjnuzR+8L@EU%Gtw3LAa!{~Qv;?4*OZ zj$gq`iOG2jI!*C67k1lq^eyN%MlT)&rHB2`y}T#{CMF(umyHCbAs#p*2#e(EW5hTm zg6QNWQP@+6;+l4ruAJAP(4#|!z~RKBm*a3k5l6B(VG>8L)!~HUzK0=?wv4Ywra5w8 zd=o%STK@=wVK4OMgkg^s0)LM#_~nF29x-ylC9oa9!AFNCum5$h5Do=nx)VVH|B3{5 zd=EFFIpNSF7EU+}D-w>=5srNm5homZ)b5x_6zWK%+&@~vv2PUOgiB)K!6mV9;gVQ0 zASAF|A|#I7hRGEpWWjt(1hHNGM-T#x)dhjm4FSb{hGBI@VE4N@5%B+ki$Fv^yo>e5 zzlagoBchxL1Wpaaks6!`BvxGn600r(d8F>&h!K*&J~?1SKvC?mQJjMjIK&8?9}tpQ zMUmJmpE;2dNAbXk1Rwe5Z;?pwe_^Bfk5nWW>s2HK>s2HK_Zf=&48?yw>g|}+$lA+v zMtTT{stQC-OtQC;hS3PkevHr(!FcPs~e$^75I*M$-mdB;xq63M< zabw?q#fijbBqtIV0!VBK{H-EN0vnM3+7gM25){sMD4gw3V637jFt#fcnY zbXwQk#md2rQxe-bUS~<11tf76ki=z`B(C~MVt1?x*Dr%RL_daa~ckSVc)<14t6fdrYTDu=r8hoaRGG;xXci5@1ej#^B6)#D@t9 zC1%A0ri0k1Ax9dY5?6M-3)mhE!{lUuq!^%hvaXAjJ0}!t4h&x=NSgilH&|s(iECSV zxB>0p80Soo{C`4mR4}F{6C@`lDS1=?0HB9LA^1zuGGlWn~ zZV`wM1IYrhV$5fLMs3U`dQu1LzFq{0EQ(HU6S|Y)`DzI>22%|CVk2Jo-~5GxT} z5|au1#f0X8PGb`D0iCc>g%1bd;QvxSNS@+vDn_&bq{{>Oo5Tshj;1)5LU6wwHx&S( z`A@r}TK8W&D2A>OB#*gK2-24RM@4)bV2uOE@nM4mf*q}JK>~qeJR1O;ek%k?5CJjw zumA{7t|E{m4+Jj+>lu8cVMXH7{e2NgisRpg$Fu~(WT^;n4A2N8Uktjaaa>a{-ose2 zc)U1GvEwdYQ+z&Q6I&F9i7y685d#u1;9@}OCE$}7Ufhw+V0;i@g<~WAuc;Uq1I_^$ zBT7JQRDUNjSQ3t@DgnvUAL9pO=MtC;r66hPmMazfkajhHZ#984e0w z_7N1E3izT8KtWZ2WH65^KnfgqDOi=TGk1J}00TKFQ3>SW*K!~SCn`YV+{c?AOD!-q z5il1kLDKa2Z?IyqlMqZd@C`No8?4$u7N4yG$&2FUVyXYAfn~=9Di~ln@^MfVNL=Qh zc*i>wD+X^$oK5gOV{HP|pu-UZ(_96F%G(;yNoK6BxIFmtvHBiHxn}IL6Ye33;I7i|W3D+xr{KNJNBy4**P!ODIK;B2Sv9tPU)Y_>5o&B%C z;Zv}fzZRrOSnU20R7iN#SiBx|Mi`F~D<5C`kHq7X;XeUx^`NdJ)?&2=P#5u$kh3iy zMc_XWjCl))0}aDYHwDzJ9Ua{q9NnzMz=E7`ICl2#)!6pNYS|I^j}Tkg21E-yPEimiU6p%#pPdABtXTcF6UoV6hM{y zA8?WY3f#m{K;6yi&LLVD8s82}0g%EaaB5;HhbF;;#8M6cVjaPWlXD0TH)qFDV22bO z1}qnV3J%6juW)SuL~t#^Y@FfR0Q$gilSyn72!H|s z`MWO&fC6z0I|SfDKqWZQhbvPyhxB zc2slmZ4Oc3=F&JhhbVCCXdLAb1$K34fnx*Oz;H`iY@0)WN&F4;&|MNoBMy$`&{?>Z z3zh{y3CAtvumk`kTmprm=>X9YAtf+;9U$Jz*!LlE3f#0ccXG3G5d#C5Ah`AUA0hw? zf?Ig~Ap*!CxYgz#BA_@Fc%0mf|${3irJ0>&+G{-Xh4 zApgn(@Iasv82L^RBO14C5wLQ;Ywl*}=pY6?%qIkPTZZ#*@?oUm*7<*v0W=7Fiu@%6 zz=Ocn&0|6UCyI2QJ<*8K2dlzoy={HN*EL$5Lf~bMleZSE@CMF6CAhp7Qj*f z9pQK#u@pc(IBq$KYXfKo#|OF-`lzqNAi)PnOlml8rH5;DXlmS!8;){lWqcT8B_A4C0#_Wc zlq1{XatKQSP$2$;dWaMPpg{a>RW&2%>>De`ALMFp&6>$ISfPuu99W3P# z1#S-lYial)ioe3%N(>MKLn3kG))5!t5XP}QKmagM$MOIHz(5^y7y^KSI_5A0fC2@^ zm3*vZ00jy^Xk#fr_o&1DD6F7hE`-ApjVtW6l7WV5q-y4hf(@ z9m@>lA&O&}fjmTko!O#sl97inurq!<AAtc;>tH2-XAuQ~#Dx7~&523*%F?>{}l`u17n=Og6M9* z5BmlG6AxnW!*0R&l8o;Nai}^NUvd9X4<+EM?jP!*1SAYYJp?HAuWgY>lJF^v=Rt}= zFkC|*22+3)@~>Tyhd3brn)PTZ2Km<_s3Z6P6Eb3`Lr@T4)>?C@(!X|+Jck6dFFtDy?7zWv%0z7(TAVAm3VbB?_|2n>Ff$s%y;F0IBy+?v6 z=`l;gAmDV$2#Ay&jQe3w!1WIUVB8}HNfhS%2uKnwd9-+Qw7A77BlF*mJa)`GwsU_Z z3f~NPA*`D#Cze(Jubnr^qxy_*WpLlgic?(K+|B&9qs`&31~yiQOh>VON?hlz+ig1s zh9eSw+sgdT(MK5O%qU2o2#Unq83m~UTLuVB=_u$S7ZePEz`!uzcTWkyzk2m>v9dlT z0Z2w-OvXTHX7JHVY9)YwoDQ6)4*$ZS5^xy&|Jpj6Rc($Ujw6N>c^4wSki?b75JWeb z?~jE62?}u|Nv!f*`p8HJ>hG2#G>)z4iZJbkQR!i-7ZcK_r1oSR2Jy!+l0 zgm8Gr(x9RHb05+jD8imH>FoXoxXm4)_zn zob)G!y}$WU>{cdP0h@X%KfR2VU05yo{MxINbJ1+afodW-$$PIqypaI z=@0OTi9_XSnuwCtG$4gfeth?E>jROf9xbGyefU;a3k%+OlfKZx+phUx3`|nwr&A;M zKmY6QyIVMyRUf*9Gg;CG@=#&qOB!>SBCW5qKw>Hyr!r!hk_NveqJ4e1i) zHiVY(N=a**X$qrX(qNbg){;iw%)l$H*4(XW+P2GziLxOK?d%0ZlW@~z7P{;UzquX+ z`-n4i&*Ii40LDxNsGSW9w;s1-;xHu410pM9pZ;!R{4|- zVc3SRsx-AME&fNi5oJ60brBMkH28H9{1!Ci4>5wCg2#jLs2WC@mbrk_Mc}Zqzg;$bqYA@T*mP z|LZ4rcUwXNH9zL!3m$b`_$`4rmVJX}`#7}Y#duZg9WIw>A%y50ewQ%JNU@}auM!bl zNn^o%q`gZT{IY7IrVULs>CokN;GBz8Vc13RsGZf+VD|L0wyKHk$ZhW|nnh?~rS{MGj`kK9O*vq2Q0p~xBblbU9UOYK^+AguR`_*p&_*tb zY**e11CC?e8HR)EV>^;FkwKW?91u)7Fnve27egk+Ztd7d7@9QltXZOUq6r{1QGBewlU(T5%_g!#(?n zyJWLoRMcqb$?#^HM&bnPyGAmrm`t1_Abn{V3{^1^VHfdb(V1UITp_1Ld0^QNe%#45 z4SsFkZ#5Bytr5oSYe$bT^=Skam<#SD$!*34=4Q_9}~`Rt3h83U{=*AI*KTo+>&n#604UD%NpE9QcmpR z&%|@Z4@gwKB=}|0r)hp#&57yP0%D$-^b&@nDjW<+^?%NKmZ(lFo5La@*pkM@u&Bj` z1$M;yYGBzk)I1;hd8p?)T_cm?;)P-3>zSG;4k#xBLkmH~ja02}J6OMQPP zSre3s6guL2)vBTEi8Q}NXbD8hocfD9b=x0USm*4MYB`2d4A7 zzwjjvk_OEb>2br?t>KUeayj*e_{@WOQjMbF@Vh$pH%){eAw`by{5f?PwhCATP4Apw zs5kV`b?g4O|J^-&foQ9qJ1p#81^jKVqC1C&MJB9djku9Kux0vP(+Qv z%gm^>JA8)1jR!?AVuIe@KtRe=F< z(rPJ;AV5mv5US4fL=Sq^!>=DV5f{WPIV!~kE#Kl1TD}@0w6(I{@etitcMe+Ce#hg} zjgJFi{#o0NdTr2djtofr9JUc!=7einj|tXx)U(&Rh5T`*4R$~>=1sT26V=`^97oJ7 zIzG1|$3)zYkG6!!i@NcI=4veHoMnsk>hNYw3f!@x3k?}ASJoN7?<$$YjYr}9Y}2{I z4wwOTO^crQo|hriZqx1_onhyWfv?xv*5GNYVStvUCH0DDUmXWgff2l^%of&tsSY$< z0MUxtLuok0n@K`j)S5BK8j0h&9ngSSLj0(FA41vCmq@^7)&~y;(dNbc!7lEF2Hs6KLW=5f{dg(AMDy;n4%$HY-MB0xP6Fubqbs#keKlx;fG zZA6c9Bxu;%neE1Wb+i^CVV>X*^v!ZrX_qrUe~+TrA>E^uKLw6DdiB1^OX?vY1{!xik{(LE|bjhz}l@-iAEke6WsIzCRL2@PwL z2MB2#!ic1fSy-TPvsKtWMd2fRF!LJPl;}^!lcAmam4aZWAOOZ04T# z7E6XHT<%7-OYD_htZd*i*|9(hNz6FCIiUt;4AvBlOaU2%eF^#E(XM0Df~laQJq* zO?W?1yc{R?yh}(L0iKCBMnhjQ0jysA9r+g%HLi&ru}IK~e&Fh4wf=Q77jFzEjmv0$DxU#K z6CC%?dB1b786XYjVMc|o0N8y1u3~X~!hAx$JyO|)ls_nYMGP)8i9oUa4aFjctN=+m zjRotL;P9GM)avy}P^3keWpx_t`vHy={@*;|DvGEvw|0)9 znQJ!lsT$REXyzxzT&i{<|9P!b5Gj7XI8q#wAaT7c=e>OeGpJ_F?}^0YQ;(pTJI@DO zG*QL4&9d2wc_YF0jyDk00l^pb6?3J^4H!9u!`Hh_kZW80KR~FKHN--0D_OdH?L=sH z^)kq8lLkD{%pib*rY?~`x@xWz0g-9&g0rX6;;S=ScmuF)B?uIif*X#t zwsV8Tz=mf=-7gQ+$W0LEtecAR-E&<-9G7vdHF}>nwx7OYSTL&nu?l1-s^|ygcO&=C6~4e?$T`Hn&K zMDT}aym~HdI_K)-1M?KU`};?36iP1m3Dx_8lTh7$}ggn z*`%;h)M=syoYg24TejMYS+D5_c}sN|8JNNfnKZA-2PmBKKfFT{oPea-5JyB66D-e6 zD}C)MBxJvd`VxgQMt*+qx}6sg0HOiF&?j|NZ5T~GCNrtDvSGI4bgTHO-Ek>^)mu9(u8%>{mNmS`5hfV7 zD}JWfM)woFwA-9=Z$;Xo*5>L7+#`D%R;OnEf6NVI!ON2HURlE zu$2wb83e)@T750;41|P6g2DRwElr#}vwr4UC?Q{3(R4Zt^J5&+uFm)KkOU1_qVgkl z(k&*AJMOVtga)9bN`nUDYSs*+j!XSa9RJnaLac{^R-AR-lC1agdFZxqB^WW*O#Y@_K?|N9YU}s77dfYuRRvqiBvWld*v*givV_c7an@D`wJUMGm** zjL^uQ_^dr&gz%A#GUQzj-Q!5K+Q6#;qI~#_axv>nLR|Mf@E=iDvV{4Gs!}njAd@48 z3xJ7}$UL|Kk4uCGv9F6-qcgzYA+EE6o!Uk@V!=?0<}eFZ@rA>cU*o?_`bg7a7xd02 z-UdUiMGZeZW~HJ1-i}mS-42B_Q{4fRdS(O2$c`A*8=AHucV(4%Q8TB-)_nNR3K!_x zM+Beu|8WBbQg2eAv{!*blocklen = cipher_descriptor[cipher].block_length; ctr->cipher = cipher; ctr->padlen = 0; + ctr->mode = 0; for (x = 0; x < ctr->blocklen; x++) { ctr->ctr[x] = count[x]; } @@ -54,10 +65,21 @@ int ctr_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, s /* is the pad empty? */ if (ctr->padlen == ctr->blocklen) { /* increment counter */ - for (x = 0; x < ctr->blocklen; x++) { - ctr->ctr[x] = (ctr->ctr[x] + (unsigned char)1) & (unsigned char)255; - if (ctr->ctr[x] != (unsigned char)0) { - break; + if (ctr->mode == 0) { + /* little-endian */ + for (x = 0; x < ctr->blocklen; x++) { + ctr->ctr[x] = (ctr->ctr[x] + (unsigned char)1) & (unsigned char)255; + if (ctr->ctr[x] != (unsigned char)0) { + break; + } + } + } else { + /* big-endian */ + for (x = ctr->blocklen-1; x >= 0; x--) { + ctr->ctr[x] = (ctr->ctr[x] + (unsigned char)1) & (unsigned char)255; + if (ctr->ctr[x] != (unsigned char)0) { + break; + } } } diff --git a/demos/test.c b/demos/test.c index 750600c..f3698ca 100644 --- a/demos/test.c +++ b/demos/test.c @@ -1837,11 +1837,21 @@ main (void) if (hmac_test() != CRYPT_OK) exit(EXIT_FAILURE); #endif -#ifdef HMAC +#ifdef OMAC printf ("OMAC: %s\n", omac_test () == CRYPT_OK ? "passed" : "failed"); if (omac_test() != CRYPT_OK) exit(EXIT_FAILURE); #endif +#ifdef EAX_MODE + printf ("EAX : %s\n", eax_test () == CRYPT_OK ? "passed" : "failed"); + if (eax_test() != CRYPT_OK) exit(EXIT_FAILURE); +#endif + +#ifdef OCB_MODE + printf ("OCB : %s\n", ocb_test () == CRYPT_OK ? "passed" : "failed"); + if (ocb_test() != CRYPT_OK) exit(EXIT_FAILURE); +#endif + store_tests (); cipher_tests (); hash_tests (); diff --git a/demos/timer.asm b/demos/timer.asm deleted file mode 100644 index e589e42..0000000 --- a/demos/timer.asm +++ /dev/null @@ -1,47 +0,0 @@ -; x86 timer in NASM -; -; Tom St Denis, tomstdenis@iahu.ca -[bits 32] -[section .data] -time dd 0, 0 - -[section .text] - -%ifdef USE_ELF -[global t_start] -t_start: -%else -[global _t_start] -_t_start: -%endif - push eax - push ebx - push ecx - push edx - cpuid - rdtsc - mov [time+0],edx - mov [time+4],eax - pop edx - pop ecx - pop ebx - pop eax - ret - -%ifdef USE_ELF -[global t_read] -t_read: -%else -[global _t_read] -_t_read: -%endif - push ebx - push ecx - cpuid - rdtsc - sub eax,[time+4] - sbb edx,[time+0] - pop ecx - pop ebx - ret - \ No newline at end of file diff --git a/demos/timer.c b/demos/timer.c deleted file mode 100644 index 2b2939b..0000000 --- a/demos/timer.c +++ /dev/null @@ -1,7 +0,0 @@ -/* - * The working version of this file can be found - * at the PlayStation(r)2 Developer Network website - * under the libtomcrypt project. - */ - -#error Please download the implemented version of this file from the PlayStation(r)2 Developer Network website diff --git a/demos/timer.h b/demos/timer.h deleted file mode 100644 index 4368dbf..0000000 --- a/demos/timer.h +++ /dev/null @@ -1,51 +0,0 @@ -#ifndef __TIMER_H__ -#define __TIMER_H__ -/**************************************************************************** -* -* Copyright (c) 2000, Sony Computer Entertainment of America Inc. -* All rights reserved -* SCEA Confidential -* -* Document: TIMER.H -* Author: Ben Wiggins -* Date: 7/15/2002 -* Header: Timer stuff -* -****************************************************************************/ -/*============================================================================ -= INTERFACE REQUIRED HEADERS -============================================================================*/ -/*============================================================================ -= INTERFACE DEFINITIONS / ENUMERATIONS / SIMPLE TYPEDEFS -============================================================================*/ -/*============================================================================ -= INTERFACE STRUCTURES / UTILITY CLASSES -============================================================================*/ -/*============================================================================ -= INTERFACE DATA DECLARATIONS -============================================================================*/ -/*============================================================================ -= INTERFACE FUNCTION PROTOTYPES -============================================================================*/ -void TIMER_Init(void); -void TIMER_Shutdown(void); -double TIMER_GetTime(void); - -#include -#ifdef CLOCKS_PER_SEC -#undef CLOCKS_PER_SEC -#endif -#define CLOCKS_PER_SEC 576000 -extern clock_t TIMER_clock(void); - -/*============================================================================ -= INTERFACE TRAILING HEADERS -============================================================================*/ - -/**************************************************************************** -* -* END HEADER TIMER.H -* -****************************************************************************/ -#endif // __TIMER_H__ - diff --git a/demos/tv_gen.c b/demos/tv_gen.c index 9a2f6ff..4f2102b 100644 --- a/demos/tv_gen.c +++ b/demos/tv_gen.c @@ -269,14 +269,138 @@ void omac_gen(void) fclose(out); } +void eax_gen(void) +{ + int err, kl, x, y1, z; + FILE *out; + unsigned char key[MAXBLOCKSIZE], nonce[MAXBLOCKSIZE*2], header[MAXBLOCKSIZE*2], + plaintext[MAXBLOCKSIZE*2], tag[MAXBLOCKSIZE]; + unsigned long len; + + out = fopen("eax_tv.txt", "w"); + fprintf(out, "EAX Test Vectors. Uses the 00010203...NN-1 pattern for header/nonce/plaintext/key. The outputs\n" + "are of the form ciphertext,tag for a given NN. The key for step N>1 is the tag of the previous\n" + "step repeated sufficiently.\n\n"); + + for (x = 0; cipher_descriptor[x].name != NULL; x++) { + kl = cipher_descriptor[x].block_length; + + /* skip ciphers which do not have 64 or 128 bit block sizes */ + if (kl != 8 && kl != 16) continue; + + if (cipher_descriptor[x].keysize(&kl) != CRYPT_OK) { + kl = cipher_descriptor[x].max_key_length; + } + fprintf(out, "EAX-%s (%d byte key)\n", cipher_descriptor[x].name, kl); + + /* the key */ + for (z = 0; z < kl; z++) { + key[z] = (z & 255); + } + + for (y1 = 0; y1 <= (int)(cipher_descriptor[x].block_length*2); y1++){ + for (z = 0; z < y1; z++) { + plaintext[z] = (unsigned char)(z & 255); + nonce[z] = (unsigned char)(z & 255); + header[z] = (unsigned char)(z & 255); + } + len = sizeof(tag); + if ((err = eax_encrypt_authenticate_memory(x, key, kl, nonce, y1, header, y1, plaintext, y1, plaintext, tag, &len)) != CRYPT_OK) { + printf("Error EAX'ing: %s\n", error_to_string(err)); + exit(EXIT_FAILURE); + } + fprintf(out, "%3d: ", y1); + for (z = 0; z < y1; z++) { + fprintf(out, "%02X", plaintext[z]); + } + fprintf(out, ", "); + for (z = 0; z <(int)len; z++) { + fprintf(out, "%02X", tag[z]); + } + fprintf(out, "\n"); + + /* forward the key */ + for (z = 0; z < kl; z++) { + key[z] = tag[z % len]; + } + } + fprintf(out, "\n"); + } + fclose(out); +} + +void ocb_gen(void) +{ + int err, kl, x, y1, z; + FILE *out; + unsigned char key[MAXBLOCKSIZE], nonce[MAXBLOCKSIZE*2], + plaintext[MAXBLOCKSIZE*2], tag[MAXBLOCKSIZE]; + unsigned long len; + + out = fopen("ocb_tv.txt", "w"); + fprintf(out, "OCB Test Vectors. Uses the 00010203...NN-1 pattern for nonce/plaintext/key. The outputs\n" + "are of the form ciphertext,tag for a given NN. The key for step N>1 is the tag of the previous\n" + "step repeated sufficiently. The nonce is fixed throughout.\n\n"); + + for (x = 0; cipher_descriptor[x].name != NULL; x++) { + kl = cipher_descriptor[x].block_length; + + /* skip ciphers which do not have 64 or 128 bit block sizes */ + if (kl != 8 && kl != 16) continue; + + if (cipher_descriptor[x].keysize(&kl) != CRYPT_OK) { + kl = cipher_descriptor[x].max_key_length; + } + fprintf(out, "OCB-%s (%d byte key)\n", cipher_descriptor[x].name, kl); + + /* the key */ + for (z = 0; z < kl; z++) { + key[z] = (z & 255); + } + + /* fixed nonce */ + for (z = 0; z < cipher_descriptor[x].block_length; z++) { + nonce[z] = z; + } + + for (y1 = 0; y1 <= (int)(cipher_descriptor[x].block_length*2); y1++){ + for (z = 0; z < y1; z++) { + plaintext[z] = (unsigned char)(z & 255); + } + len = sizeof(tag); + if ((err = ocb_encrypt_authenticate_memory(x, key, kl, nonce, plaintext, y1, plaintext, tag, &len)) != CRYPT_OK) { + printf("Error OCB'ing: %s\n", error_to_string(err)); + exit(EXIT_FAILURE); + } + fprintf(out, "%3d: ", y1); + for (z = 0; z < y1; z++) { + fprintf(out, "%02X", plaintext[z]); + } + fprintf(out, ", "); + for (z = 0; z <(int)len; z++) { + fprintf(out, "%02X", tag[z]); + } + fprintf(out, "\n"); + + /* forward the key */ + for (z = 0; z < kl; z++) { + key[z] = tag[z % len]; + } + } + fprintf(out, "\n"); + } + fclose(out); +} + int main(void) { reg_algs(); - hash_gen(); - cipher_gen(); - hmac_gen(); - omac_gen(); - + printf("Generating hash vectors..."); fflush(stdout); hash_gen(); printf("done\n"); + printf("Generating cipher vectors..."); fflush(stdout); cipher_gen(); printf("done\n"); + printf("Generating HMAC vectors..."); fflush(stdout); hmac_gen(); printf("done\n"); + printf("Generating OMAC vectors..."); fflush(stdout); omac_gen(); printf("done\n"); + printf("Generating EAX vectors..."); fflush(stdout); eax_gen(); printf("done\n"); + printf("Generating OCB vectors..."); fflush(stdout); ocb_gen(); printf("done\n"); return 0; } diff --git a/des.c b/des.c index 2cbc5e0..13059a2 100644 --- a/des.c +++ b/des.c @@ -1,3 +1,13 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ /* DES code submitted by Dobes Vandermeer */ #include "mycrypt.h" diff --git a/dh.c b/dh.c index 78b9948..df45416 100644 --- a/dh.c +++ b/dh.c @@ -1,3 +1,13 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ #include "mycrypt.h" #ifdef MDH @@ -279,45 +289,6 @@ void dh_free(dh_key *key) mp_clear_multi(&key->x, &key->y, NULL); } -#define OUTPUT_BIGNUM(num, buf2, y, z) \ -{ \ - z = (unsigned long)mp_unsigned_bin_size(num); \ - STORE32L(z, buf2+y); \ - y += 4; \ - if ((err = mp_to_unsigned_bin(num, buf2+y)) != MP_OKAY) { return mpi_to_ltc_error(err); } \ - y += z; \ -} - - -#define INPUT_BIGNUM(num, in, x, y) \ -{ \ - /* load value */ \ - if (y + 4 > inlen) { \ - err = CRYPT_INVALID_PACKET; \ - goto error; \ - } \ - LOAD32L(x, in+y); \ - y += 4; \ - \ - /* sanity check... */ \ - if (x+y > inlen) { \ - err = CRYPT_INVALID_PACKET; \ - goto error; \ - } \ - \ - /* load it */ \ - if ((err = mp_read_unsigned_bin(num, (unsigned char *)in+y, (int)x)) != MP_OKAY) {\ - err = mpi_to_ltc_error(err); \ - goto error; \ - } \ - y += x; \ - if ((err = mp_shrink(num)) != MP_OKAY) { \ - err = mpi_to_ltc_error(err); \ - goto error; \ - } \ -} - - int dh_export(unsigned char *out, unsigned long *outlen, int type, dh_key *key) { unsigned char buf2[1536]; diff --git a/dh_sys.c b/dh_sys.c index fb10a7e..9e73026 100644 --- a/dh_sys.c +++ b/dh_sys.c @@ -1,3 +1,13 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ int dh_encrypt_key(const unsigned char *inkey, unsigned long keylen, unsigned char *out, unsigned long *len, prng_state *prng, int wprng, int hash, diff --git a/dsa.c b/dsa.c index d896405..63038f4 100644 --- a/dsa.c +++ b/dsa.c @@ -1,9 +1,17 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ #include "mycrypt.h" #ifdef MDSA -#define DRAW(x) { char __buf[1000]; mp_toradix(x, __buf, 16); printf("\n%s == %s\n", #x, __buf); } - int dsa_make_key(prng_state *prng, int wprng, int group_size, int modulus_size, dsa_key *key) { mp_int tmp, tmp2; @@ -80,7 +88,7 @@ int dsa_make_key(prng_state *prng, int wprng, int group_size, int modulus_size, err = CRYPT_ERROR_READPRNG; goto error2; } - if ((err = mp_read_unsigned_bin(&key->x, buf, group_size)) != MP_OKAY) { goto error; } + if ((err = mp_read_unsigned_bin(&key->x, buf, group_size)) != MP_OKAY) { goto error; } } while (mp_cmp_d(&key->x, 1) != MP_GT); if ((err = mp_exptmod(&key->g, &key->x, &key->p, &key->y)) != MP_OKAY) { goto error; } @@ -146,14 +154,23 @@ int dsa_sign_hash(const unsigned char *in, unsigned long inlen, if ((err = mp_init_multi(&k, &kinv, &r, &s, &tmp, NULL)) != MP_OKAY) { goto error; } retry: - /* gen random k */ - if (prng_descriptor[wprng].read(buf, key->qord, prng) != (unsigned long)key->qord) { - err = CRYPT_ERROR_READPRNG; - goto done; - } - /* read k */ - if ((err = mp_read_unsigned_bin(&k, buf, key->qord)) != MP_OKAY) { goto error; } + do { + /* gen random k */ + if (prng_descriptor[wprng].read(buf, key->qord, prng) != (unsigned long)key->qord) { + err = CRYPT_ERROR_READPRNG; + goto done; + } + + /* read k */ + if ((err = mp_read_unsigned_bin(&k, buf, key->qord)) != MP_OKAY) { goto error; } + + /* k > 1 ? */ + if (mp_cmp_d(&k, 1) != MP_GT) { goto retry; } + + /* test gcd */ + if ((err = mp_gcd(&k, &key->q, &tmp)) != MP_OKAY) { goto error; } + } while (mp_cmp_d(&tmp, 1) != MP_EQ); /* now find 1/k mod q */ if ((err = mp_invmod(&k, &key->q, &kinv)) != MP_OKAY) { goto error; } @@ -190,7 +207,7 @@ retry: out[y++] = (len & 255); /* store r */ - mp_to_unsigned_bin(&r, out+y); + if ((err = mp_to_unsigned_bin(&r, out+y)) != MP_OKAY) { goto error; } y += len; /* store length of s */ @@ -199,7 +216,7 @@ retry: out[y++] = (len & 255); /* store s */ - mp_to_unsigned_bin(&s, out+y); + if ((err = mp_to_unsigned_bin(&s, out+y)) != MP_OKAY) { goto error; } y += len; /* reset size */ @@ -297,19 +314,11 @@ done : mp_clear_multi(&r, &s, &w, &v, &u1, &u2, NULL); return err; } -#define OUTPUT_BIGNUM(num, buf2, y, z) \ -{ \ - z = (unsigned long)mp_unsigned_bin_size(num); \ - if ((y + 4 + z) > *outlen) { return CRYPT_BUFFER_OVERFLOW; } \ - STORE32L(z, out+y); \ - y += 4; \ - if (mp_to_unsigned_bin(num, out+y) != MP_OKAY) { return CRYPT_MEM; } \ - y += z; \ -} int dsa_export(unsigned char *out, unsigned long *outlen, int type, dsa_key *key) { unsigned long y, z; + int err; _ARGCHK(out != NULL); _ARGCHK(outlen != NULL); @@ -352,34 +361,6 @@ int dsa_export(unsigned char *out, unsigned long *outlen, int type, dsa_key *key return CRYPT_OK; } -#define INPUT_BIGNUM(num, in, x, y) \ -{ \ - /* load value */ \ - if (y+4 > inlen) { \ - err = CRYPT_INVALID_PACKET; \ - goto error; \ - } \ - LOAD32L(x, in+y); \ - y += 4; \ - \ - /* sanity check... */ \ - if (y+x > inlen) { \ - err = CRYPT_INVALID_PACKET; \ - goto error; \ - } \ - \ - /* load it */ \ - if (mp_read_unsigned_bin(num, (unsigned char *)in+y, (int)x) != MP_OKAY) {\ - err = CRYPT_MEM; \ - goto error; \ - } \ - y += x; \ - if (mp_shrink(num) != MP_OKAY) { \ - err = CRYPT_MEM; \ - goto error; \ - } \ -} - int dsa_import(const unsigned char *in, unsigned long inlen, dsa_key *key) { unsigned long x, y; diff --git a/eax.c b/eax.c new file mode 100644 index 0000000..64def97 --- /dev/null +++ b/eax.c @@ -0,0 +1,451 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ +#include "mycrypt.h" + +#ifdef EAX_MODE + +int eax_init(eax_state *eax, int cipher, const unsigned char *key, unsigned long keylen, + const unsigned char *nonce, unsigned long noncelen, + const unsigned char *header, unsigned long headerlen) +{ + unsigned char buf[MAXBLOCKSIZE]; + int err, blklen; + omac_state omac; + unsigned long len; + + + _ARGCHK(eax != NULL); + _ARGCHK(key != NULL); + _ARGCHK(nonce != NULL); + if (headerlen > 0) { + _ARGCHK(header != NULL); + } + + if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { + return err; + } + blklen = cipher_descriptor[cipher].block_length; + + /* N = OMAC_0K(nonce) */ + zeromem(buf, sizeof(buf)); + if ((err = omac_init(&omac, cipher, key, keylen)) != CRYPT_OK) { + return err; + } + + /* omac the [0]_n */ + if ((err = omac_process(&omac, buf, blklen)) != CRYPT_OK) { + return err; + } + /* omac the nonce */ + if ((err = omac_process(&omac, nonce, noncelen)) != CRYPT_OK) { + return err; + } + /* store result */ + len = sizeof(eax->N); + if ((err = omac_done(&omac, eax->N, &len)) != CRYPT_OK) { + return err; + } + + /* H = OMAC_1K(header) */ + zeromem(buf, sizeof(buf)); + buf[blklen - 1] = 1; + + if ((err = omac_init(&eax->headeromac, cipher, key, keylen)) != CRYPT_OK) { + return err; + } + + /* omac the [1]_n */ + if ((err = omac_process(&eax->headeromac, buf, blklen)) != CRYPT_OK) { + return err; + } + /* omac the header */ + if (headerlen != 0) { + if ((err = omac_process(&eax->headeromac, header, headerlen)) != CRYPT_OK) { + return err; + } + } + + /* note we don't finish the headeromac, this allows us to add more header later */ + + /* setup the CTR mode */ + if ((err = ctr_start(cipher, eax->N, key, keylen, 0, &eax->ctr)) != CRYPT_OK) { + return err; + } + /* use big-endian counter */ + eax->ctr.mode = 1; + + /* setup the OMAC for the ciphertext */ + if ((err = omac_init(&eax->ctomac, cipher, key, keylen)) != CRYPT_OK) { + return err; + } + + /* omac [2]_n */ + zeromem(buf, sizeof(buf)); + buf[blklen-1] = 2; + if ((err = omac_process(&eax->ctomac, buf, blklen)) != CRYPT_OK) { + return err; + } + +#ifdef CLEAN_STACK + zeromem(buf, sizeof(buf)); + zeromem(&omac, sizeof(omac)); +#endif + return CRYPT_OK; +} + +int eax_encrypt(eax_state *eax, const unsigned char *pt, unsigned char *ct, unsigned long length) +{ + int err; + + _ARGCHK(eax != NULL); + _ARGCHK(pt != NULL); + _ARGCHK(ct != NULL); + + /* encrypt */ + if ((err = ctr_encrypt(pt, ct, length, &eax->ctr)) != CRYPT_OK) { + return err; + } + + /* omac ciphertext */ + return omac_process(&eax->ctomac, ct, length); +} + +int eax_decrypt(eax_state *eax, const unsigned char *ct, unsigned char *pt, unsigned long length) +{ + int err; + + _ARGCHK(eax != NULL); + _ARGCHK(pt != NULL); + _ARGCHK(ct != NULL); + + /* omac ciphertext */ + if ((err = omac_process(&eax->ctomac, ct, length)) != CRYPT_OK) { + return err; + } + + /* decrypt */ + return ctr_decrypt(ct, pt, length, &eax->ctr); +} + +/* add header (metadata) to the stream */ +int eax_addheader(eax_state *eax, const unsigned char *header, unsigned long length) +{ + _ARGCHK(eax != NULL); + _ARGCHK(header != NULL); + return omac_process(&eax->headeromac, header, length); +} + +int eax_done(eax_state *eax, unsigned char *tag, unsigned long *taglen) +{ + int err; + unsigned char headermac[MAXBLOCKSIZE], ctmac[MAXBLOCKSIZE]; + unsigned long x, len; + + _ARGCHK(eax != NULL); + _ARGCHK(tag != NULL); + _ARGCHK(taglen != NULL); + + /* finish ctomac */ + len = sizeof(ctmac); + if ((err = omac_done(&eax->ctomac, ctmac, &len)) != CRYPT_OK) { + return err; + } + + /* finish headeromac */ + + /* note we specifically don't reset len so the two lens are minimal */ + + if ((err = omac_done(&eax->headeromac, headermac, &len)) != CRYPT_OK) { + return err; + } + + /* compute N xor H xor C */ + for (x = 0; x < len && x < *taglen; x++) { + tag[x] = eax->N[x] ^ headermac[x] ^ ctmac[x]; + } + *taglen = x; + +#ifdef CLEAN_STACK + zeromem(ctmac, sizeof(ctmac)); + zeromem(headermac, sizeof(headermac)); +#endif + + return CRYPT_OK; +} + +int eax_encrypt_authenticate_memory(int cipher, + const unsigned char *key, unsigned long keylen, + const unsigned char *nonce, unsigned long noncelen, + const unsigned char *header, unsigned long headerlen, + const unsigned char *pt, unsigned long ptlen, + unsigned char *ct, + unsigned char *tag, unsigned long *taglen) +{ + int err; + eax_state eax; + + if ((err = eax_init(&eax, cipher, key, keylen, nonce, noncelen, header, headerlen)) != CRYPT_OK) { + return err; + } + + if ((err = eax_encrypt(&eax, pt, ct, ptlen)) != CRYPT_OK) { + return err; + } + + if ((err = eax_done(&eax, tag, taglen)) != CRYPT_OK) { + return err; + } + +#ifdef CLEAN_STACK + zeromem(&eax, sizeof(eax)); +#endif + return CRYPT_OK; +} + +int eax_decrypt_verify_memory(int cipher, + const unsigned char *key, unsigned long keylen, + const unsigned char *nonce, unsigned long noncelen, + const unsigned char *header, unsigned long headerlen, + const unsigned char *ct, unsigned long ctlen, + unsigned char *pt, + unsigned char *tag, unsigned long taglen, + int *res) +{ + int err; + eax_state eax; + unsigned char buf[MAXBLOCKSIZE]; + unsigned long buflen; + + _ARGCHK(res != NULL); + + /* default to zero */ + *res = 0; + + if ((err = eax_init(&eax, cipher, key, keylen, nonce, noncelen, header, headerlen)) != CRYPT_OK) { + return err; + } + + if ((err = eax_decrypt(&eax, ct, pt, ctlen)) != CRYPT_OK) { + return err; + } + + buflen = MIN(sizeof(buf), taglen); + if ((err = eax_done(&eax, buf, &buflen)) != CRYPT_OK) { + return err; + } + + /* compare tags */ + if (buflen >= taglen && memcmp(buf, tag, taglen) == 0) { + *res = 1; + } + +#ifdef CLEAN_STACK + zeromem(&eax, sizeof(eax)); + zeromem(buf, sizeof(buf)); +#endif + return CRYPT_OK; +} + +int eax_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + static const struct { + int keylen, + noncelen, + headerlen, + msglen; + + unsigned char key[MAXBLOCKSIZE], + nonce[MAXBLOCKSIZE], + header[MAXBLOCKSIZE], + plaintext[MAXBLOCKSIZE], + ciphertext[MAXBLOCKSIZE], + tag[MAXBLOCKSIZE]; + } tests[] = { + +/* NULL message */ +{ + 16, 0, 0, 0, + /* key */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* nonce */ + { 0 }, + /* header */ + { 0 }, + /* plaintext */ + { 0 }, + /* ciphertext */ + { 0 }, + /* tag */ + { 0x9a, 0xd0, 0x7e, 0x7d, 0xbf, 0xf3, 0x01, 0xf5, + 0x05, 0xde, 0x59, 0x6b, 0x96, 0x15, 0xdf, 0xff } +}, + +/* test with nonce */ +{ + 16, 16, 0, 0, + /* key */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* nonce */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* header */ + { 0 }, + /* plaintext */ + { 0 }, + /* ciphertext */ + { 0 }, + /* tag */ + { 0x1c, 0xe1, 0x0d, 0x3e, 0xff, 0xd4, 0xca, 0xdb, + 0xe2, 0xe4, 0x4b, 0x58, 0xd6, 0x0a, 0xb9, 0xec } +}, + +/* test with header [no nonce] */ +{ + 16, 0, 16, 0, + /* key */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* nonce */ + { 0 }, + /* header */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* plaintext */ + { 0 }, + /* ciphertext */ + { 0 }, + /* tag */ + { 0x3a, 0x69, 0x8f, 0x7a, 0x27, 0x0e, 0x51, 0xb0, + 0xf6, 0x5b, 0x3d, 0x3e, 0x47, 0x19, 0x3c, 0xff } +}, + +/* test with header + nonce + plaintext */ +{ + 16, 16, 16, 32, + /* key */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* nonce */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* header */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* plaintext */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }, + /* ciphertext */ + { 0x29, 0xd8, 0x78, 0xd1, 0xa3, 0xbe, 0x85, 0x7b, + 0x6f, 0xb8, 0xc8, 0xea, 0x59, 0x50, 0xa7, 0x78, + 0x33, 0x1f, 0xbf, 0x2c, 0xcf, 0x33, 0x98, 0x6f, + 0x35, 0xe8, 0xcf, 0x12, 0x1d, 0xcb, 0x30, 0xbc }, + /* tag */ + { 0x4f, 0xbe, 0x03, 0x38, 0xbe, 0x1c, 0x8c, 0x7e, + 0x1d, 0x7a, 0xe7, 0xe4, 0x5b, 0x92, 0xc5, 0x87 } +}, + +/* test with header + nonce + plaintext [not even sizes!] */ +{ + 16, 15, 14, 29, + /* key */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* nonce */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e }, + /* header */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d }, + /* plaintext */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c }, + /* ciphertext */ + { 0xdd, 0x25, 0xc7, 0x54, 0xc5, 0xb1, 0x7c, 0x59, + 0x28, 0xb6, 0x9b, 0x73, 0x15, 0x5f, 0x7b, 0xb8, + 0x88, 0x8f, 0xaf, 0x37, 0x09, 0x1a, 0xd9, 0x2c, + 0x8a, 0x24, 0xdb, 0x86, 0x8b }, + /* tag */ + { 0x0d, 0x1a, 0x14, 0xe5, 0x22, 0x24, 0xff, 0xd2, + 0x3a, 0x05, 0xfa, 0x02, 0xcd, 0xef, 0x52, 0xda } +}, +}; + int err, x, idx, res; + unsigned long len; + unsigned char outct[MAXBLOCKSIZE], outtag[MAXBLOCKSIZE]; + + /* AES can be under rijndael or aes... try to find it */ + if ((idx = find_cipher("aes")) == -1) { + if ((idx = find_cipher("rijndael")) == -1) { + return CRYPT_NOP; + } + } + + for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { + len = sizeof(outtag); + if ((err = eax_encrypt_authenticate_memory(idx, tests[x].key, tests[x].keylen, + tests[x].nonce, tests[x].noncelen, tests[x].header, tests[x].headerlen, + tests[x].plaintext, tests[x].msglen, outct, outtag, &len)) != CRYPT_OK) { + return err; + } + if (memcmp(outct, tests[x].ciphertext, tests[x].msglen) || memcmp(outtag, tests[x].tag, len)) { +#if 0 + unsigned long y; + printf("\n\nFailure: \nCT:\n"); + for (y = 0; y < (unsigned long)tests[x].msglen; ) { + printf("0x%02x", outct[y]); + if (y < (unsigned long)(tests[x].msglen-1)) printf(", "); + if (!(++y % 8)) printf("\n"); + } + printf("\nTAG:\n"); + for (y = 0; y < len; ) { + printf("0x%02x", outtag[y]); + if (y < len-1) printf(", "); + if (!(++y % 8)) printf("\n"); + } +#endif + return CRYPT_FAIL_TESTVECTOR; + } + + /* test decrypt */ + if ((err = eax_decrypt_verify_memory(idx, tests[x].key, tests[x].keylen, + tests[x].nonce, tests[x].noncelen, tests[x].header, tests[x].headerlen, + outct, tests[x].msglen, outct, outtag, len, &res)) != CRYPT_OK) { + return err; + } + if (res != 1 || memcmp(outct, tests[x].plaintext, tests[x].msglen)) { +#if 0 + unsigned long y; + printf("\n\nFailure (res == %d): \nPT:\n", res); + for (y = 0; y < (unsigned long)tests[x].msglen; ) { + printf("0x%02x", outct[y]); + if (y < (unsigned long)(tests[x].msglen-1)) printf(", "); + if (!(++y % 8)) printf("\n"); + } + printf("\n\n"); +#endif + return CRYPT_FAIL_TESTVECTOR; + } + + } + return CRYPT_OK; +#endif /* LTC_TEST */ +} + +#endif /* EAX_MODE */ diff --git a/ecb.c b/ecb.c index 0c04881..d4bced4 100644 --- a/ecb.c +++ b/ecb.c @@ -1,3 +1,13 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ #include "mycrypt.h" #ifdef ECB diff --git a/ecc.c b/ecc.c index 13c23da..fad0928 100644 --- a/ecc.c +++ b/ecc.c @@ -1,3 +1,14 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ + /* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b * * All curves taken from NIST recommendation paper of July 1999 @@ -743,44 +754,6 @@ done: return res; } -#define OUTPUT_BIGNUM(num, buf2, y, z) \ -{ \ - z = (unsigned long)mp_unsigned_bin_size(num); \ - STORE32L(z, buf2+y); \ - y += 4; \ - if (mp_to_unsigned_bin(num, buf2+y) != MP_OKAY) { return CRYPT_MEM; } \ - y += z; \ -} - - -#define INPUT_BIGNUM(num, in, x, y) \ -{ \ - /* load value */ \ - if (y+4 > inlen) { \ - err = CRYPT_INVALID_PACKET; \ - goto error; \ - } \ - LOAD32L(x, in+y); \ - y += 4; \ - \ - /* sanity check... */ \ - if (y+x > inlen) { \ - err = CRYPT_INVALID_PACKET; \ - goto error; \ - } \ - \ - /* load it */ \ - if (mp_read_unsigned_bin(num, (unsigned char *)in+y, (int)x) != MP_OKAY) {\ - err = CRYPT_MEM; \ - goto error; \ - } \ - y += x; \ - if (mp_shrink(num) != MP_OKAY) { \ - err = CRYPT_MEM; \ - goto error; \ - } \ -} - int ecc_export(unsigned char *out, unsigned long *outlen, int type, ecc_key *key) { unsigned long y, z; diff --git a/ecc_sys.c b/ecc_sys.c index cae3614..5452d65 100644 --- a/ecc_sys.c +++ b/ecc_sys.c @@ -1,3 +1,13 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ int ecc_encrypt_key(const unsigned char *inkey, unsigned long keylen, unsigned char *out, unsigned long *len, prng_state *prng, int wprng, int hash, diff --git a/gf.c b/gf.c index 47f9255..35a6ffc 100644 --- a/gf.c +++ b/gf.c @@ -1,3 +1,13 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ /* polynomial basis GF(2^w) routines */ #include "mycrypt.h" diff --git a/hash.c b/hash.c index 9ebb2d6..9d0b681 100644 --- a/hash.c +++ b/hash.c @@ -1,3 +1,13 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ #include "mycrypt.h" int hash_memory(int hash, const unsigned char *data, unsigned long len, unsigned char *dst, unsigned long *outlen) diff --git a/hmac.c b/hmac.c index 236e5cf..7003ab0 100644 --- a/hmac.c +++ b/hmac.c @@ -1,3 +1,13 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ /* Submited by Dobes Vandermeer (dobes@smartt.com) */ #include "mycrypt.h" diff --git a/keyring.c b/keyring.c index 01df75e..565d4ec 100644 --- a/keyring.c +++ b/keyring.c @@ -1,3 +1,13 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ /* Provides keyring functionality for libtomcrypt, Tom St Denis */ #include diff --git a/makefile b/makefile index db830d7..3ddeec6 100644 --- a/makefile +++ b/makefile @@ -9,7 +9,7 @@ # a build. This is easy to remedy though, for those that have problems. # The version -VERSION=0.92 +VERSION=0.93 #ch1-01-1 # Compiler and Linker Names @@ -66,7 +66,7 @@ OBJECTS=keyring.o gf.o mem.o sprng.o ecc.o base64.o dh.o rsa.o \ bits.o yarrow.o cfb.o ofb.o ecb.o ctr.o cbc.o hash.o tiger.o sha1.o \ md5.o md4.o md2.o sha256.o sha512.o xtea.o aes.o des.o \ safer_tab.o safer.o safer+.o rc4.o rc2.o rc6.o rc5.o cast5.o noekeon.o blowfish.o crypt.o \ -prime.o twofish.o packet.o hmac.o strings.o rmd128.o rmd160.o skipjack.o omac.o dsa.o $(MPIOBJECT) +prime.o twofish.o packet.o hmac.o strings.o rmd128.o rmd160.o skipjack.o omac.o dsa.o eax.o ocb.o $(MPIOBJECT) TESTOBJECTS=demos/test.o HASHOBJECTS=demos/hashsum.o diff --git a/makefile.cygwin_dll b/makefile.cygwin_dll index 39bbbdd..01b50e6 100644 --- a/makefile.cygwin_dll +++ b/makefile.cygwin_dll @@ -22,7 +22,7 @@ OBJECTS=keyring.o gf.o mem.o sprng.o ecc.o base64.o dh.o rsa.o \ bits.o yarrow.o cfb.o ofb.o ecb.o ctr.o cbc.o hash.o tiger.o sha1.o \ md5.o md4.o md2.o sha256.o sha512.o xtea.o aes.o des.o \ safer_tab.o safer.o safer+.o rc4.o rc2.o rc6.o rc5.o cast5.o noekeon.o blowfish.o crypt.o \ -prime.o twofish.o packet.o hmac.o strings.o rmd128.o rmd160.o skipjack.o omac.o dsa.o $(MPIOBJECT) +prime.o twofish.o packet.o hmac.o strings.o rmd128.o rmd160.o skipjack.o omac.o dsa.o eax.o ocb.o $(MPIOBJECT) ltc_dll: $(OBJECTS) $(MPIOBJECT) gcc -mno-cygwin -mdll -o libtomcrypt.dll -Wl,--out-implib=libtomcrypt.dll.a -Wl,--export-all-symbols *.o -ladvapi32 diff --git a/makefile.msvc b/makefile.msvc index 327d23d..5233b2d 100644 --- a/makefile.msvc +++ b/makefile.msvc @@ -11,7 +11,7 @@ bits.obj yarrow.obj cfb.obj ofb.obj ecb.obj ctr.obj cbc.obj hash.obj tiger.obj s md5.obj md4.obj md2.obj sha256.obj sha512.obj xtea.obj aes.obj des.obj \ safer_tab.obj safer.obj safer+.obj rc4.obj rc2.obj rc6.obj rc5.obj cast5.obj noekeon.obj \ blowfish.obj crypt.obj mpi.obj prime.obj twofish.obj packet.obj hmac.obj strings.obj rmd128.obj rmd160.obj \ -skipjack.obj omac.obj dsa.obj +skipjack.obj omac.obj dsa.obj eax.obj ocb.obj library: $(OBJECTS) lib /out:tomcrypt.lib $(OBJECTS) diff --git a/makefile.out b/makefile.out index 5aff811..7eaca41 100644 --- a/makefile.out +++ b/makefile.out @@ -9,7 +9,7 @@ CFLAGS += -Os -Wall -Wsign-compare -W -Wno-unused -Werror -I./ default: library -OBJECTS = keyring.o gf.o mem.o sprng.o ecc.o base64.o dh.o rsa.o bits.o yarrow.o cfb.o ofb.o ecb.o ctr.o cbc.o hash.o tiger.o sha1.o md5.o md4.o md2.o sha256.o sha512.o xtea.o aes.o des.o safer_tab.o safer.o safer+.o rc4.o rc2.o rc6.o rc5.o cast5.o noekeon.o blowfish.o crypt.o mpi.o prime.o twofish.o packet.o hmac.o strings.o rmd128.o rmd160.o skipjack.o omac.o dsa.o +OBJECTS = keyring.o gf.o mem.o sprng.o ecc.o base64.o dh.o rsa.o bits.o yarrow.o cfb.o ofb.o ecb.o ctr.o cbc.o hash.o tiger.o sha1.o md5.o md4.o md2.o sha256.o sha512.o xtea.o aes.o des.o safer_tab.o safer.o safer+.o rc4.o rc2.o rc6.o rc5.o cast5.o noekeon.o blowfish.o crypt.o mpi.o prime.o twofish.o packet.o hmac.o strings.o rmd128.o rmd160.o skipjack.o omac.o dsa.o eax.o ocb.o rsa.o: rsa_sys.c dh.o: dh_sys.c diff --git a/md2.c b/md2.c index 90e1395..96cea65 100644 --- a/md2.c +++ b/md2.c @@ -1,3 +1,13 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ /* MD2 (RFC 1319) hash function implementation by Tom St Denis */ #include "mycrypt.h" diff --git a/md4.c b/md4.c index 6a2afad..788e46f 100644 --- a/md4.c +++ b/md4.c @@ -1,3 +1,13 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ /* Submitted by Dobes Vandermeer (dobes@smartt.com) */ #include "mycrypt.h" diff --git a/md5.c b/md5.c index b387de1..a3eddd6 100644 --- a/md5.c +++ b/md5.c @@ -1,3 +1,16 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ + +/* MD5 hash function by Tom St Denis */ + #include "mycrypt.h" #ifdef MD5 diff --git a/mem.c b/mem.c index 41a1c12..7dc6ee6 100644 --- a/mem.c +++ b/mem.c @@ -1,3 +1,13 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ #include "mycrypt.h" void zeromem(void *dst, size_t len) diff --git a/mpi.c b/mpi.c index 88ada33..52288a9 100644 --- a/mpi.c +++ b/mpi.c @@ -1902,7 +1902,7 @@ mp_div_3 (mp_int * a, mp_int *c, mp_digit * d) t = (w * ((mp_word)b)) >> ((mp_word)DIGIT_BIT); /* now subtract 3 * [w/3] from w, to get the remainder */ - w -= (t << ((mp_word)1)) + t; + w -= t+t+t; /* fixup the remainder as required since * the optimization is not exact. @@ -1966,8 +1966,7 @@ static int s_is_power_of_two(mp_digit b, int *p) } /* single digit division (based on routine from MPI) */ -int -mp_div_d (mp_int * a, mp_digit b, mp_int * c, mp_digit * d) +int mp_div_d (mp_int * a, mp_digit b, mp_int * c, mp_digit * d) { mp_int q; mp_word w; @@ -2665,6 +2664,79 @@ __M: /* End: bn_mp_exptmod_fast.c */ +/* Start: bn_mp_exteuclid.c */ +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ +#include + +/* Extended euclidean algorithm of (a, b) produces + a*u1 + b*u2 = u3 + */ +int mp_exteuclid(mp_int *a, mp_int *b, mp_int *U1, mp_int *U2, mp_int *U3) +{ + mp_int u1,u2,u3,v1,v2,v3,t1,t2,t3,q,tmp; + int err; + + if ((err = mp_init_multi(&u1, &u2, &u3, &v1, &v2, &v3, &t1, &t2, &t3, &q, &tmp, NULL)) != MP_OKAY) { + return err; + } + + /* initialize, (u1,u2,u3) = (1,0,a) */ + mp_set(&u1, 1); + if ((err = mp_copy(a, &u3)) != MP_OKAY) { goto _ERR; } + + /* initialize, (v1,v2,v3) = (0,1,b) */ + mp_set(&v2, 1); + if ((err = mp_copy(b, &v3)) != MP_OKAY) { goto _ERR; } + + /* loop while v3 != 0 */ + while (mp_iszero(&v3) == MP_NO) { + /* q = u3/v3 */ + if ((err = mp_div(&u3, &v3, &q, NULL)) != MP_OKAY) { goto _ERR; } + + /* (t1,t2,t3) = (u1,u2,u3) - (v1,v2,v3)q */ + if ((err = mp_mul(&v1, &q, &tmp)) != MP_OKAY) { goto _ERR; } + if ((err = mp_sub(&u1, &tmp, &t1)) != MP_OKAY) { goto _ERR; } + if ((err = mp_mul(&v2, &q, &tmp)) != MP_OKAY) { goto _ERR; } + if ((err = mp_sub(&u2, &tmp, &t2)) != MP_OKAY) { goto _ERR; } + if ((err = mp_mul(&v3, &q, &tmp)) != MP_OKAY) { goto _ERR; } + if ((err = mp_sub(&u3, &tmp, &t3)) != MP_OKAY) { goto _ERR; } + + /* (u1,u2,u3) = (v1,v2,v3) */ + if ((err = mp_copy(&v1, &u1)) != MP_OKAY) { goto _ERR; } + if ((err = mp_copy(&v2, &u2)) != MP_OKAY) { goto _ERR; } + if ((err = mp_copy(&v3, &u3)) != MP_OKAY) { goto _ERR; } + + /* (v1,v2,v3) = (t1,t2,t3) */ + if ((err = mp_copy(&t1, &v1)) != MP_OKAY) { goto _ERR; } + if ((err = mp_copy(&t2, &v2)) != MP_OKAY) { goto _ERR; } + if ((err = mp_copy(&t3, &v3)) != MP_OKAY) { goto _ERR; } + } + + /* copy result out */ + if (U1 != NULL) { mp_exch(U1, &u1); } + if (U2 != NULL) { mp_exch(U2, &u2); } + if (U3 != NULL) { mp_exch(U3, &u3); } + + err = MP_OKAY; +_ERR: mp_clear_multi(&u1, &u2, &u3, &v1, &v2, &v3, &t1, &t2, &t3, &q, &tmp, NULL); + return err; +} + +/* End: bn_mp_exteuclid.c */ + /* Start: bn_mp_fread.c */ /* LibTomMath, multiple-precision integer library -- Tom St Denis * @@ -2752,11 +2824,10 @@ int mp_fwrite(mp_int *a, int radix, FILE *stream) char *buf; int err, len, x; - len = mp_radix_size(a, radix); - if (len == 0) { - return MP_VAL; + if ((err = mp_radix_size(a, radix, &len)) != MP_OKAY) { + return err; } - + buf = XMALLOC (len); if (buf == NULL) { return MP_MEM; @@ -4201,7 +4272,6 @@ int mp_mul (mp_int * a, mp_int * b, mp_int * c) } else { res = s_mp_mul (a, b, c); } - } c->sign = neg; return res; @@ -5251,26 +5321,28 @@ error: #include /* returns size of ASCII reprensentation */ -int -mp_radix_size (mp_int * a, int radix) +int mp_radix_size (mp_int * a, int radix, int *size) { int res, digs; mp_int t; mp_digit d; + *size = 0; + /* special case for binary */ if (radix == 2) { - return mp_count_bits (a) + (a->sign == MP_NEG ? 1 : 0) + 1; + *size = mp_count_bits (a) + (a->sign == MP_NEG ? 1 : 0) + 1; + return MP_OKAY; } /* make sure the radix is in range */ if (radix < 2 || radix > 64) { - return 0; + return MP_VAL; } /* init a copy of the input */ if ((res = mp_init_copy (&t, a)) != MP_OKAY) { - return 0; + return res; } /* digs is the digit count */ @@ -5293,7 +5365,8 @@ mp_radix_size (mp_int * a, int radix) mp_clear (&t); /* return digs + 1, the 1 is for the NULL byte that would be required. */ - return digs + 1; + *size = digs + 1; + return MP_OKAY; } @@ -5392,8 +5465,7 @@ mp_rand (mp_int * a, int digits) #include /* read a string [ASCII] in a given radix */ -int -mp_read_radix (mp_int * a, char *str, int radix) +int mp_read_radix (mp_int * a, char *str, int radix) { int y, res, neg; char ch; @@ -5989,7 +6061,7 @@ int mp_set_int (mp_int * a, unsigned long b) int mp_shrink (mp_int * a) { mp_digit *tmp; - if (a->alloc != a->used) { + if (a->alloc != a->used && a->used > 0) { if ((tmp = OPT_CAST XREALLOC (a->dp, sizeof (mp_digit) * a->used)) == NULL) { return MP_MEM; } @@ -6019,8 +6091,7 @@ int mp_shrink (mp_int * a) #include /* get the size for an signed equivalent */ -int -mp_signed_bin_size (mp_int * a) +int mp_signed_bin_size (mp_int * a) { return 1 + mp_unsigned_bin_size (a); } @@ -6049,6 +6120,7 @@ int mp_sqr (mp_int * a, mp_int * b) { int res; + /* use Toom-Cook? */ if (a->used >= TOOM_SQR_CUTOFF) { res = mp_toom_sqr(a, b); @@ -6892,8 +6964,7 @@ ERR: #include /* stores a bignum as a ASCII string in a given radix (2..64) */ -int -mp_toradix (mp_int * a, char *str, int radix) +int mp_toradix (mp_int * a, char *str, int radix) { int res, digs; mp_int t; @@ -7086,25 +7157,7 @@ static const struct { { 1408, 3 }, { 1536, 3 }, { 1664, 3 }, -{ 1792, 2 }, -{ 1920, 2 }, -{ 2048, 2 }, -{ 2176, 2 }, -{ 2304, 2 }, -{ 2432, 2 }, -{ 2560, 2 }, -{ 2688, 2 }, -{ 2816, 2 }, -{ 2944, 2 }, -{ 3072, 2 }, -{ 3200, 2 }, -{ 3328, 2 }, -{ 3456, 2 }, -{ 3584, 2 }, -{ 3712, 2 }, -{ 3840, 1 }, -{ 3968, 1 }, -{ 4096, 1 } }; +{ 1792, 2 } }; /* returns # of RM trials required for a given bit size */ int mp_prime_rabin_miller_trials(int size) @@ -7351,8 +7404,7 @@ s_mp_add (mp_int * a, mp_int * b, mp_int * c) #define TAB_SIZE 256 #endif -int -s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) +int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) { mp_int M[TAB_SIZE], res, mu; mp_digit buf; @@ -7516,10 +7568,10 @@ s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) /* then multiply */ if ((err = mp_mul (&res, &M[bitbuf], &res)) != MP_OKAY) { - goto __MU; + goto __RES; } if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) { - goto __MU; + goto __RES; } /* empty window and reset */ diff --git a/mycrypt.h b/mycrypt.h index bed0896..59b380a 100644 --- a/mycrypt.h +++ b/mycrypt.h @@ -16,8 +16,8 @@ extern "C" { #endif /* version */ -#define CRYPT 0x0092 -#define SCRYPT "0.92" +#define CRYPT 0x0093 +#define SCRYPT "0.93" /* max size of either a cipher/hash block or symmetric key [largest of the two] */ #define MAXBLOCKSIZE 128 diff --git a/mycrypt_cipher.h b/mycrypt_cipher.h index 25d1953..a694044 100644 --- a/mycrypt_cipher.h +++ b/mycrypt_cipher.h @@ -173,7 +173,7 @@ typedef struct Symmetric_CBC { /* A block cipher CTR structure */ typedef struct Symmetric_CTR { - int cipher, blocklen, padlen; + int cipher, blocklen, padlen, mode; unsigned char ctr[MAXBLOCKSIZE], pad[MAXBLOCKSIZE]; symmetric_key key; } symmetric_CTR; @@ -364,6 +364,8 @@ extern int ctr_start(int cipher, const unsigned char *IV, const unsigned char *k extern int ctr_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_CTR *ctr); extern int ctr_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_CTR *ctr); #endif + + extern int find_cipher(const char *name); extern int find_cipher_any(const char *name, int blocklen, int keylen); diff --git a/mycrypt_custom.h b/mycrypt_custom.h index 6a926d7..91e4a68 100644 --- a/mycrypt_custom.h +++ b/mycrypt_custom.h @@ -49,6 +49,8 @@ #define RIPEMD160 #define HMAC #define OMAC +#define EAX_MODE +#define OCB_MODE #define BASE64 #define YARROW #define SPRNG diff --git a/mycrypt_hash.h b/mycrypt_hash.h index 40a4fc7..435567a 100644 --- a/mycrypt_hash.h +++ b/mycrypt_hash.h @@ -208,6 +208,7 @@ extern const struct _hash_descriptor rmd160_desc; extern int find_hash(const char *name); extern int find_hash_id(unsigned char ID); +extern int find_hash_any(const char *name, int digestlen); extern int register_hash(const struct _hash_descriptor *hash); extern int unregister_hash(const struct _hash_descriptor *hash); extern int hash_is_valid(int idx); @@ -291,3 +292,94 @@ extern int omac_file(int cipher, const unsigned char *key, unsigned long keylen, extern int omac_test(void); #endif +#ifdef EAX_MODE + +#if !(defined(OMAC) && defined(CTR)) + #error EAX_MODE requires OMAC and CTR +#endif + +typedef struct { + unsigned char N[MAXBLOCKSIZE]; + symmetric_CTR ctr; + omac_state headeromac, ctomac; +} eax_state; + +extern int eax_init(eax_state *eax, int cipher, const unsigned char *key, unsigned long keylen, + const unsigned char *nonce, unsigned long noncelen, + const unsigned char *header, unsigned long headerlen); + +extern int eax_encrypt(eax_state *eax, const unsigned char *pt, unsigned char *ct, unsigned long length); +extern int eax_decrypt(eax_state *eax, const unsigned char *ct, unsigned char *pt, unsigned long length); +extern int eax_addheader(eax_state *eax, const unsigned char *header, unsigned long length); +extern int eax_done(eax_state *eax, unsigned char *tag, unsigned long *taglen); + +extern int eax_encrypt_authenticate_memory(int cipher, + const unsigned char *key, unsigned long keylen, + const unsigned char *nonce, unsigned long noncelen, + const unsigned char *header, unsigned long headerlen, + const unsigned char *pt, unsigned long ptlen, + unsigned char *ct, + unsigned char *tag, unsigned long *taglen); + +extern int eax_decrypt_verify_memory(int cipher, + const unsigned char *key, unsigned long keylen, + const unsigned char *nonce, unsigned long noncelen, + const unsigned char *header, unsigned long headerlen, + const unsigned char *ct, unsigned long ctlen, + unsigned char *pt, + unsigned char *tag, unsigned long taglen, + int *res); + +extern int eax_test(void); +#endif /* EAX MODE */ + +#ifdef OCB_MODE +typedef struct { + unsigned char L[MAXBLOCKSIZE], /* L value */ + Ls[32][MAXBLOCKSIZE], /* L shifted by i bits to the left */ + Li[MAXBLOCKSIZE], /* value of Li [current value, we calc from previous recall] */ + Lr[MAXBLOCKSIZE], /* L * x^-1 */ + R[MAXBLOCKSIZE], /* R value */ + checksum[MAXBLOCKSIZE]; /* current checksum */ + + symmetric_key key; /* scheduled key for cipher */ + unsigned long block_index; /* index # for current block */ + int cipher, /* cipher idx */ + block_len, /* length of block */ + poly; /* which set of polys to use */ +} ocb_state; + +extern int ocb_init(ocb_state *ocb, int cipher, + const unsigned char *key, unsigned long keylen, const unsigned char *nonce); + +extern int ocb_encrypt(ocb_state *ocb, const unsigned char *pt, unsigned char *ct); +extern int ocb_decrypt(ocb_state *ocb, const unsigned char *ct, unsigned char *pt); + +extern int ocb_done_encrypt(ocb_state *ocb, + const unsigned char *pt, unsigned long ptlen, + unsigned char *ct, + unsigned char *tag, unsigned long *taglen); + +extern int ocb_done_decrypt(ocb_state *ocb, + const unsigned char *ct, unsigned long ctlen, + unsigned char *pt, + const unsigned char *tag, unsigned long taglen, int *res); + +extern int ocb_encrypt_authenticate_memory(int cipher, + const unsigned char *key, unsigned long keylen, + const unsigned char *nonce, + const unsigned char *pt, unsigned long ptlen, + unsigned char *ct, + unsigned char *tag, unsigned long *taglen); + +extern int ocb_decrypt_verify_memory(int cipher, + const unsigned char *key, unsigned long keylen, + const unsigned char *nonce, + const unsigned char *ct, unsigned long ctlen, + unsigned char *pt, + const unsigned char *tag, unsigned long taglen, + int *res); + +extern int ocb_test(void); + +#endif /* OCB_MODE */ diff --git a/mycrypt_pk.h b/mycrypt_pk.h index 0945243..aaec8d1 100644 --- a/mycrypt_pk.h +++ b/mycrypt_pk.h @@ -3,6 +3,48 @@ #include "tommath.h" + +/* in/out macros */ + +#define OUTPUT_BIGNUM(num, buf2, y, z) \ +{ \ + z = (unsigned long)mp_unsigned_bin_size(num); \ + STORE32L(z, buf2+y); \ + y += 4; \ + if ((err = mp_to_unsigned_bin(num, buf2+y)) != MP_OKAY) { return mpi_to_ltc_error(err); } \ + y += z; \ +} + + +#define INPUT_BIGNUM(num, in, x, y) \ +{ \ + /* load value */ \ + if (y + 4 > inlen) { \ + err = CRYPT_INVALID_PACKET; \ + goto error; \ + } \ + LOAD32L(x, in+y); \ + y += 4; \ + \ + /* sanity check... */ \ + if (x+y > inlen) { \ + err = CRYPT_INVALID_PACKET; \ + goto error; \ + } \ + \ + /* load it */ \ + if ((err = mp_read_unsigned_bin(num, (unsigned char *)in+y, (int)x)) != MP_OKAY) {\ + err = mpi_to_ltc_error(err); \ + goto error; \ + } \ + y += x; \ + if ((err = mp_shrink(num)) != MP_OKAY) { \ + err = mpi_to_ltc_error(err); \ + goto error; \ + } \ +} + + extern int is_prime(mp_int *, int *); extern int rand_prime(mp_int *N, long len, prng_state *prng, int wprng); extern mp_err mp_init_multi(mp_int* mp, ...); diff --git a/noekeon.c b/noekeon.c index d2c8156..9f5320c 100644 --- a/noekeon.c +++ b/noekeon.c @@ -1,3 +1,13 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ /* Implementation of the Noekeon block cipher by Tom St Denis */ #include "mycrypt.h" @@ -65,15 +75,15 @@ int noekeon_setup(const unsigned char *key, int keylen, int num_rounds, symmetri return CRYPT_INVALID_ROUNDS; } - LOAD32L(skey->noekeon.K[0],&key[0]); - LOAD32L(skey->noekeon.K[1],&key[4]); - LOAD32L(skey->noekeon.K[2],&key[8]); - LOAD32L(skey->noekeon.K[3],&key[12]); + LOAD32H(skey->noekeon.K[0],&key[0]); + LOAD32H(skey->noekeon.K[1],&key[4]); + LOAD32H(skey->noekeon.K[2],&key[8]); + LOAD32H(skey->noekeon.K[3],&key[12]); - LOAD32L(skey->noekeon.dK[0],&key[0]); - LOAD32L(skey->noekeon.dK[1],&key[4]); - LOAD32L(skey->noekeon.dK[2],&key[8]); - LOAD32L(skey->noekeon.dK[3],&key[12]); + LOAD32H(skey->noekeon.dK[0],&key[0]); + LOAD32H(skey->noekeon.dK[1],&key[4]); + LOAD32H(skey->noekeon.dK[2],&key[8]); + LOAD32H(skey->noekeon.dK[3],&key[12]); kTHETA(skey->noekeon.dK[0], skey->noekeon.dK[1], skey->noekeon.dK[2], skey->noekeon.dK[3]); @@ -95,23 +105,9 @@ void noekeon_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_k _ARGCHK(pt != NULL); _ARGCHK(ct != NULL); - LOAD32L(a,&pt[0]); LOAD32L(b,&pt[4]); - LOAD32L(c,&pt[8]); LOAD32L(d,&pt[12]); + LOAD32H(a,&pt[0]); LOAD32H(b,&pt[4]); + LOAD32H(c,&pt[8]); LOAD32H(d,&pt[12]); - -#ifdef SMALL_CODE -#define ROUND \ - a ^= RC[r]; \ - THETA(key->noekeon.K, a,b,c,d); \ - PI1(a,b,c,d); \ - GAMMA(a,b,c,d); \ - PI2(a,b,c,d); - - for (r = 0; r < 16; ++r) { - ROUND; - } -#else - #define ROUND(i) \ a ^= RC[i]; \ THETA(key->noekeon.K, a,b,c,d); \ @@ -119,6 +115,11 @@ void noekeon_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_k GAMMA(a,b,c,d); \ PI2(a,b,c,d); +#ifdef SMALL_CODE + for (r = 0; r < 16; ++r) { + ROUND(r); + } +#else ROUND( 0); ROUND( 1); ROUND( 2); ROUND( 3); ROUND( 4); ROUND( 5); ROUND( 6); ROUND( 7); ROUND( 8); ROUND( 9); ROUND(10); ROUND(11); @@ -130,8 +131,8 @@ void noekeon_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_k a ^= RC[16]; THETA(key->noekeon.K, a, b, c, d); - STORE32L(a,&ct[0]); STORE32L(b,&ct[4]); - STORE32L(c,&ct[8]); STORE32L(d,&ct[12]); + STORE32H(a,&ct[0]); STORE32H(b,&ct[4]); + STORE32H(c,&ct[8]); STORE32H(d,&ct[12]); } #ifdef CLEAN_STACK @@ -157,25 +158,10 @@ void noekeon_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_k _ARGCHK(pt != NULL); _ARGCHK(ct != NULL); - LOAD32L(a,&ct[0]); LOAD32L(b,&ct[4]); - LOAD32L(c,&ct[8]); LOAD32L(d,&ct[12]); + LOAD32H(a,&ct[0]); LOAD32H(b,&ct[4]); + LOAD32H(c,&ct[8]); LOAD32H(d,&ct[12]); -#ifdef SMALL_CODE - -#define ROUND \ - THETA(key->noekeon.dK, a,b,c,d); \ - a ^= RC[r]; \ - PI1(a,b,c,d); \ - GAMMA(a,b,c,d); \ - PI2(a,b,c,d); - - for (r = 16; r > 0; --r) { - ROUND; - } - -#else - #define ROUND(i) \ THETA(key->noekeon.dK, a,b,c,d); \ a ^= RC[i]; \ @@ -183,19 +169,23 @@ void noekeon_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_k GAMMA(a,b,c,d); \ PI2(a,b,c,d); +#ifdef SMALL_CODE + for (r = 16; r > 0; --r) { + ROUND(r); + } +#else ROUND(16); ROUND(15); ROUND(14); ROUND(13); ROUND(12); ROUND(11); ROUND(10); ROUND( 9); ROUND( 8); ROUND( 7); ROUND( 6); ROUND( 5); ROUND( 4); ROUND( 3); ROUND( 2); ROUND( 1); - #endif #undef ROUND THETA(key->noekeon.dK, a,b,c,d); a ^= RC[0]; - STORE32L(a,&pt[0]); STORE32L(b, &pt[4]); - STORE32L(c,&pt[8]); STORE32L(d, &pt[12]); + STORE32H(a,&pt[0]); STORE32H(b, &pt[4]); + STORE32H(c,&pt[8]); STORE32H(d, &pt[12]); } #ifdef CLEAN_STACK @@ -219,8 +209,8 @@ int noekeon_test(void) 16, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }, - { 0x57, 0x9a, 0x6c, 0xe8, 0x91, 0x16, 0x52, 0x53, - 0x32, 0x00, 0xca, 0x0a, 0x17, 0x5d, 0x28, 0x0e } + { 0x18, 0xa6, 0xec, 0xe5, 0x28, 0xaa, 0x79, 0x73, + 0x28, 0xb2, 0xc0, 0x91, 0xa0, 0x2f, 0x54, 0xc5} } }; symmetric_key key; diff --git a/notes/cipher_tv.txt b/notes/cipher_tv.txt index 0da1315..6dafa6c 100644 --- a/notes/cipher_tv.txt +++ b/notes/cipher_tv.txt @@ -1647,56 +1647,56 @@ Key Size: 16 bytes Cipher: noekeon Key Size: 16 bytes - 0: 579A6CE8911652533200CA0A175D280E - 1: 63912A26125657DEA632A0AE4111D4EE - 2: 0F25F642860261CDC4474D6CFC6F3D90 - 3: 5747B5798279426E91FD69C6F471B608 - 4: 298B7486227A423729EEB0BFD653DCD1 - 5: 47FFD11C5F6B5638F846FE55F9BCF192 - 6: BF7F5610C79727BFF3A0E2318F35F92C - 7: 418713351CA5800DEFD0976872B6BD5F - 8: 46B0BFA8FFCF1B90294AD630CEF353F7 - 9: 933E10C381138CFA2419D56BFF3DBF24 -10: F47B4FD4B400E3A5CAE5C2E2732AF77D -11: 7BEAFF8299E5C530A9F0928195798D5D -12: A254293BCC71E208698AFAA1C5630C29 -13: 6374FEF1DFC16151F31E71BFE476DD2B -14: 578ADFFE69E5072E5AC617E99C2A890C -15: DB8EABA030B5B7425A279E397260D385 -16: B886B5150FABE45F81C111317AA8E1FA -17: 0156DE757EC43054CA2B8BD300B3A43A -18: FB423A1AD74955E5E937DEFEBC130A96 -19: 4358F88BCA4649A5C12A2E438F7A416F -20: B8A8B6A336B7A750EC5C8A635A1DE2C4 -21: 2397C77016C8D1FAA5913390EB66B9D1 -22: F458C608E1A35743726EDA8E94F236F6 -23: D91DCCAF1419704CF7C39DD486C48BB0 -24: 551C9932FF89212454061D77E9E58897 -25: 5FB1F24CA23AB487ACC825F900B43DEA -26: 76DFFAFB4A7F79B5748795BBB687BA11 -27: 70D34BC18EC3DA47F5E7AF716F5E767A -28: 4E8410F31F869487956CCA4922E4A787 -29: 68519971FD65F6076FBFDE99AE5F5878 -30: 8C1C64C7E1650F5A09822597A3E25E9B -31: 82EE58A56C050612BC9AD23AB83B2D5F -32: 741B22347DC979154DC4FF81ACCEB0A1 -33: 79D8A56ACA0EB5A0FD6ABB34DF4EC2AE -34: CAA1D93E89FFEC73689B642628297342 -35: 529BC07FB15CA79BBD93F63E14899898 -36: 7027D39A8CF02F8FB14D87940ED4EA15 -37: 4CF18E695D534EF04B8C15974FA31A53 -38: 113C632737E908F45DF5238904A88B95 -39: 723A9D4DFCEE39D6A2C1D90C1AFF9FE8 -40: BEA1D634560BF4F2DB05A40B79C13413 -41: D3B75F2568C0F57E13C8A19E4AC192B6 -42: 27CCAFC6BCDFB20344102D2021879828 -43: FE94A00B65DAF91DF1E99FA2784F930D -44: 24626085EC4C2F85968E4C60CD591E3F -45: 2612AE4CE03A5E1066AAAEDEF388E8CE -46: 4B8E6E59642E19874DF38BB66F65F0A5 -47: 47C145C37C2C048E73E7E85F28B2662C -48: 79D71CD15255964407198165F32C26F4 -49: 8F02BA60E7E3FC32223CDFD308D4C6FC + 0: 18A6ECE528AA797328B2C091A02F54C5 + 1: 2A570E89CD8B7EEEE2C0249C8B68682E + 2: 828F4F6E3F3CB82EEEF26F37B26AEA78 + 3: A3CA71833499F244BF26F487620266A4 + 4: 333ACCE84B0A9DE91A22D1407F9DA83C + 5: 224285F3DB3D0D184D53F8FFDC8008D0 + 6: DE39E2973025FE9EC1ACDE8F06985F91 + 7: 2F00F45A01B1B0AA979E164DC5CCFE10 + 8: 43775F3CBEE629EF6A9BA77CA36171D9 + 9: 1E6A67ABF1B6ACF59FB484866AC15A86 +10: 70490989E2CD2145730921CCC37F0A17 +11: 67B0DD0EA903486B1CB56591FCF42678 +12: 774AAB71FF28E49A30E1E718D98114E8 +13: DF4797990E1C65C9F6735BD967164D45 +14: DE2779DF26FC1B99F576ED4CFBAE76CB +15: A13AD17440641B3460A01175E3274AB9 +16: 1166499165F2A1196CA2DB831F264E77 +17: 35D24A385416CF2A44AB97A4AEC45E14 +18: D3D0E0DC962B1AD1AED92F57129088B2 +19: 00EF3E246B32634ABAF8BEE31D5C592A +20: 79BBF3F807675B9F264BABC67DF4C2AB +21: F391F2D58F0998F24BC9E5FA75DB9E99 +22: 066EF13C2617E97E6015B86BA1E059B2 +23: 5B0E2D7AE1E2734B9D5734C87F7BE272 +24: CDF7020212B7CF21F4817829386A6F8E +25: 24873E1A0EF4908DF85114ED9BDB0168 +26: 99904360C843472F71AB86B26DC78A00 +27: BEE70B3735A67268578FF107C328940B +28: 97DBB283536BC8AE8DBF56F3474C7740 +29: 2F4C903975EF709E004D24DC132A8A51 +30: 3EF0859A281782F905198C607FBE5C43 +31: 2D9CD48BC6A99E86468CBDD2A55C7D5F +32: 5518D3ED18D5E5A62752CDF0846D0C77 +33: F751E9CAF107BAD8A1F1F9C374277A6A +34: C5BA4DE907C41221FBABC5EC43710D0C +35: 5CA48836330870365A10E7B676695C9D +36: 937A964E0EA4D246E97293375B167EFD +37: C0A876CB6957717541A90CCCB034BFB8 +38: A57C93A09F9160A28D3D4DEDC987746C +39: 1FFA1E0B5EE0F0A18425F62717254419 +40: 8411C87262AE482CFC43C3092BEAFD90 +41: 0B9BB379FB3587A9ACEEED4771D8DC20 +42: 3B32EDBF9557E1DFBCEEC269B51FA494 +43: D1104E2888679A9EF6A13AE00ED7E1FB +44: 0EC9849BAD58A279B42B5BA629B0045B +45: CF206E8D3399918E75DE4765DD743060 +46: 55CCEB28E27D4DC7CE2546454FFD2C33 +47: 6E2339281583420B76E1750D35296C12 +48: 7800EC3D8C344BE7F2D2812F5AFF3DA4 +49: B80F4B0BDAA54A04D5A26BCA185F4EA2 Cipher: skipjack diff --git a/notes/eax_tv.txt b/notes/eax_tv.txt new file mode 100644 index 0000000..07b07d2 --- /dev/null +++ b/notes/eax_tv.txt @@ -0,0 +1,407 @@ +EAX Test Vectors. Uses the 00010203...NN-1 pattern for header/nonce/plaintext/key. The outputs +are of the form ciphertext,tag for a given NN. The key for step N>1 is the tag of the previous +step repeated sufficiently. + +EAX-aes (16 byte key) + 0: , 9AD07E7DBFF301F505DE596B9615DFFF + 1: 47, 57C4AC75A42D05260AFA093ACD4499ED + 2: C4E2, 26C5AB00325306772E6F6E4C8093F3D2 + 3: 16177B, 852260F91F27898D4FC176E311F6E1D1 + 4: F09F68BE, 700766CA231643B5D60C3B91B1B700C1 + 5: 8472705EDF, AC4C3359326EEA4CF71FC03E0E0292F2 + 6: 14C25EB5FD0D, 8DBD749CA79CCF11C1B370F8C975858C + 7: F6A37F60670A85, AFBD1D5921557187504ADE61014C9622 + 8: 1AACFEAE8FBAD833, 82F477325D6F76BB81940AE25F9801C2 + 9: 069414324EC293697C, B980E21C09CA129B69E9032D980A9DC5 + 10: D8174DE9A2FC92B7DA9C, 1E42CC58BA2C8BFD83806444EA29DB61 + 11: 2C087DEA30F8B7EE510990, 83DB400A080C4D43CAA6EC3F1085A923 + 12: F36B93C272A703D3422C6A11, 1370C3AF2F3392916364BBBCC2C62EC1 + 13: A0F33477BAE2E28E6747AA3193, B626DC719528CAC65DB0EF94E35422CE + 14: FCF5193506052E8BFA095C1A5205, F5BD02E0B3C91CC7D6FAAA8A9A76CE6A + 15: 3797D7F8599B8EEAB39C56241880DC, 0B70003E77146B903F06EF294FECD517 + 16: C4BAD0E0356FFD369110C048D45D81BE, DE7C2B1D83BE2CC8EA402ABE1038BB79 + 17: AF5C358BD31CDCAC2F0EA5252F1C3BE1E4, 2D700986F93B22DFE6695C2A243B4E42 + 18: 7DEF9056FBDAF491D7206B26B19DEF617AA1, E71A7D00BE972D85C77931D7591B2151 + 19: 6E9B2C0A90BF9D38A6EA3B5D2B9B2D97F938EB, 5B483D7F15C39602C2918181E57DA341 + 20: 7C5F68DEE9BBA3B04F11D5FC7C9C7FE6E8B5025C, 0AE6A12D37A9C10BB1A494E16705DC05 + 21: AF0A886BF673BC72045FC074F06A0176C96105E2E6, 06B2DC9A2868C23F86D710E01E37E07B + 22: 5F228A986DFE4301EDBAF07A02E114F1B30932995CD1, 74EBF68627C78B1FD024A59B56B2A8FA + 23: 911322F60555118CBECD8DD82F186AC19514316E8D48BA, B6A8BAF2F175CD0C71B63B1EF37E185E + 24: E7F52730CFB808EFDB376A5D5DF31A7EF8292DC5FC37E9BC, BA2AD158A2D2E5CE01296402B592E1DB + 25: B3F8D7CA47D8D86E94D670AFBAFA3B8D9E186C97DC029D4705, 709D2D2B9975D4729C19D4EAC430E65E + 26: 7178FEC027AFADDC2C03518E75CF34D207CAC2EB1537A0DBA520, A315F034CE5E66601444402520F55DE2 + 27: FC230B2B8522F53459D0B968421469BBA7E683ACB0190393B2870F, 48679A78E470E175CF3D3E9B46CEDFCE + 28: 35A641127C78C721ECDC50866C21637FDC9515E41CE60F09015EA713, 0062987222F6412B7AAF8A9ABF6FBF98 + 29: 3D42D6C113421743C08A6F682CFA0E517D5531BB66241C02EC4DCC26F7, B1AAFE11FA2D6E0C870177DDD7F98FF0 + 30: DAD065B4669B7C59C8392D8E7BD7E64BC01CEFFF27E335B25A328D356F0E, 8973B9B9ECF26DAB58CCF0787EE928E5 + 31: EBE626F9E241FD233D9781C359430C982667AA26921B62E98FAEC502C01B0B, 2AC0D7052A2CDCCE8E26FEA7595198AA + 32: 64D842B66796A797C2B4C6905742FDF2148FFC445E192F9E03B53810C082F788, 9778B345EC12D222DCC6DBABD2651750 + +EAX-blowfish (8 byte key) + 0: , D8C4C23A6AC0B7B7 + 1: 2A, 5E0E4BDDB60772FB + 2: 7695, 7581B16CCC9C45F1 + 3: EB14C8, 6223A121CFA216C7 + 4: 5A5C809C, 4A47658796337D6A + 5: 8BC2041181, E1FBA8DBA00571FC + 6: 89C666F015FA, 2B4A76A0E699FCFE + 7: 86C1FA92484AF6, 31B3B738A261D6F5 + 8: D1F401C145C9328B, 4C4A045EB489F59C + 9: 70C9C7753698324A73, AB298B5B20567EB4 + 10: A50D9D88DC101B6DC8D2, 529DFCBFD13B8E6C + 11: 7CC2885C2BE79C44F28FF2, 566255022B40C81C + 12: 6902D58347C29250EE07981C, 34619AF18E14C690 + 13: AB6C3C4AD3EC45143392B642DA, E6D2DD323DA175BB + 14: 7065B28BA8AB67B2FB7B6D5E3FAF, AEDCAA54F4B0772F + 15: CBBA14A74AD4ADC0EF036EDAE42D51, F2BFFA4D81BAC034 + 16: 60A315193F58144F5701D547C79FEEED, 912FDBDB05467DF5 + +EAX-xtea (16 byte key) + 0: , 86881D824E3BC561 + 1: EE, 4C3505F04611D9C2 + 2: 80C8, 6A3428BEEAD60738 + 3: BF88E7, 04F1E99E9F5906C2 + 4: E06574B7, 33B0153AAEF9776F + 5: 42D950AF63, 4A0F415640322FDF + 6: C30F6AD46EC9, 9646FE909D2B95CB + 7: A0049FCA856A14, A0257289C6BBF278 + 8: 2814B0C1358440E0, C4B0A2354925E887 + 9: BF4F062B52C1E489CF, B56442A3CA57A041 + 10: 63DF433956831B8780FC, ADF9ED0B46DCA19E + 11: C317FD079817F50E0E8A16, 2EA0EC993FC603AE + 12: 2BD12FDDD81EB11660346D2A, FBC6F69125BBA88D + 13: 85D356536FE2843C6BBE60EDBC, BB2FEFD04F230E79 + 14: 22493009DB01B4746F4927A8C4FB, 64CC08471D93C9AC + 15: C0F3C0DB08DC93FBA725D1E02DE084, 77B762213DDCCFFE + 16: 568B66D3112556BD98FF9339E9C002E5, C8355F508219FE0C + +EAX-rc5 (8 byte key) + 0: , 169C7954341EF44D + 1: 22, DABFDA9A0B0BA067 + 2: 2E54, 6A3D6D9AA5877C5A + 3: 2A6ECF, 2A34A3AF5DE8919E + 4: 9CC5F84F, D3F673EDAF75E3B5 + 5: FF5611756C, CC647FAAC8D49BF1 + 6: 74C939BEB31C, C335999CCFE8F5FA + 7: 7976B6F7709B5F, 2A7969C5FD063A88 + 8: 421EEC5022276174, 2C9BFB1EAC3C54A2 + 9: 6A4761CD266B1C0ECB, 3EA3CCEBC85FAC4E + 10: 7C09201098E764239A2E, 8043ABA9BF4D5AEE + 11: 8CE26277562F646DE33C88, D72AED48895E3B40 + 12: 52150F44D37D121560DA87F6, 58E865E22B485906 + 13: BA0A73B45F93ECFBFC3AB3D8D0, 683D52FA47FB1A52 + 14: 96546CBE01054AD24CC95DB54724, D80D0D530E5D1DDE + 15: 61E654BB18CD26FC36C09F874DC2C7, C65884CB9D9FEC1E + 16: 1D77B8BF02CDEAB4A707C07628826D5B, F18D1730C3D64701 + +EAX-rc6 (16 byte key) + 0: , 1DF8B0B92A3F0C951C425AF4830E63FD + 1: 1A, 8A2959EBBE90180999994DEB7036DB85 + 2: 435D, 7EF00CB57DB7B4155DB530D75CE6B025 + 3: 08A6CF, 2ED6AF0F2D5BAB05F623D389480A01F2 + 4: A86E54D3, FC69547C8BD922A5BF2F7B26C4D20F98 + 5: ED0822E439, 0007A3C6DEFC6C912C0E5B853B520368 + 6: 7BEFC7FD4054, D32C43A4D1086D57C5BCFAEE04EBC600 + 7: 5235E58E79287C, A27E9C781327C0FC7C55410EB0C828A9 + 8: CEB5EE99BE521F4D, 547F46383987F2A3582A81A3BCF9B280 + 9: 0358B063D5F99C3770, C0A73730512CDA6AD49599775D59EDA1 + 10: 434B9AEE07DFADD0A332, 499BD88881E558E09A8E822BE27D2496 + 11: D47849E650F350BB622D74, 638E37A84E7FAAF8F5D77F1B061773DC + 12: 814592F568284085E79A024B, 9EB1405E8422FE50BC0D88D837A2C650 + 13: 6F2B55EC91B591082053AF692E, C48F91EF01AA43A1EE3B36D233DDD48B + 14: 506CBDD2901838EE2F178B6953DA, 03778957F536509BFCA577B23A18F726 + 15: 446EE435D3D1848B51BB8C5F7BE4A1, 1129EAEAADE534940546D43242A4C839 + 16: FB9D2B150C42465B1685D8F069CC06DB, 41E2940F5DC63CB4E2FBEC25ED8A31E6 + 17: 9684F683260107BE8FEBBEE1D3EEDAA7BD, BAE7C116F7FF96631F4ACEE95C65CEF3 + 18: 5082B1FE48CD3AB58F63C2DCFDD4069AC736, 19AC7B8EE315CBB7131A283851B32266 + 19: 8C72AE495B6F003A3C784D144E84E88885F78E, FA4CEC023740A8D670E351FBCF62C1CB + 20: 815D6361C7AE34C9D796ADF9C71ABC46AEF88BC9, 9A1F7288C61A6623B9A82748137ED7CC + 21: 904A853E2E96BD2B85AAB3F5DFB900E9B3642EE667, 9AA90DBDD461CAD20495DCFBCB513DD2 + 22: 79D738A462F727B3D3C529ED999B6FDCCD991D1C5A4D, BF0987BEDDE650D73CAE7D380FED3431 + 23: B2DEFDB7D503A84E83155A04B8DE8C8DBB68C2FC475007, B7CE900CF43CD518024123C76F6DA328 + 24: 9E723E15439E12F6C46DF8A309AE1E97B6FD18436259CFB0, DF8B6E1E23512CC4CF5FF531A1908F69 + 25: A7F0AD03CEBCC9202718AA164886E1026975306A664C5AC7A9, 4A771BF8B9A4325705C85E5499FD98E9 + 26: A53A92AD1C6835F28E04EF591E783D36F3D76E489B31B87BEB7A, AA263B52A6E6A043DE4D7029D4DC73F5 + 27: 79BE3C38291A7F77E932C8A9DEAC08DE6442EA9B3895B101A14E7B, 33B84DE06342E675E019CD0237292ED0 + 28: FA108123C5A69571CFDFE8C3D00535121FDE3096DDC0D700F8F26A5A, 764025D7CA1A3F2C54D28956423B0C77 + 29: 36EC2D67FD977BD2B73DB6D8EB756B3EADA13690E1B6DFC12A4781B34B, 4BC6B38DE3B02283D92F4DF19A5C48C5 + 30: 96D3243C945905C9732B5927E46F00886D511463B38C86002FC26B65AB8C, 5B5511CDEC35687AB8425AB22D58B4F1 + 31: 9CF83B87BEA3374AF7722E999863E3DABB858B0383383EAC7757F5B80FD44B, 1E0CBC961940FDA93B73A92DACFD67F3 + 32: CE3BC3C9FA5EF4AFE5272B3EDD24B1B003FED2C2E501528CFF44D3FABFF52CB4, DC94FDDC78AAB2B7CAA1E1EF149AC355 + +EAX-safer+ (16 byte key) + 0: , B120C7B37450C46189712E4DFD1F0C44 + 1: CA, 82BA1869C5FF1EF2A4F6ADC1E7DC1F1D + 2: DD20, 6BD5601B16C9943A84AC1F99A176E6D1 + 3: C1C09F, 0911DC63AA414C004E2BD825BECDC93B + 4: 27E43F59, BD858F084B082F76814DC385E1FB20D1 + 5: 2A9A92F246, 5ADC4A32491934AC0BD00FCE686B26F1 + 6: 52C78C0CD6F4, F35886F46C03EDCA10B3D01CF07B1E0A + 7: 23E0D3CED3795F, FE33D96FC98B78A30C0A412C60E93992 + 8: CD3FC9961559F239, 9982364A61609FC41068260267231EE9 + 9: 6EA46CB7AD7505C1BC, BB15053EF0F78B9091B3064118F3E9BF + 10: 05D9BA230A56CCA0703A, 1338E68E3DC992B6EB2685C668E75869 + 11: 7AAD6049DFDCA6771AE42B, 35267E431051E1812495615324C4CBE6 + 12: 8695091532B83B23C296F620, 7B2EEA861E9A91E6B6A911E10FC3FDD1 + 13: D909DA4BC7372ACAEA78E6A0EE, EA6C1CD16180DF0B07F4E204A4B4FACB + 14: 7DEC8443600D0563AEFE87A2064F, DA454728069B3B409889664783588189 + 15: C042FE656742CD2FE5D9C212D18C6C, 5929E4AECC2CA047BAE948E7023FE4D0 + 16: 0B84D3CF59EEF7319633F4A397D47CF8, 31F892FFDB7535DF5D9143456E404163 + 17: 8C9E57AAFA7969B142742B63AB73286600, C418231C44F96660DDBA8C26B3BB3681 + 18: E9EED66D370A3A6A39C7E0E570D96F807EAC, A4AFE8D1D3C31B956A3BDBD043E7A665 + 19: 1A5D47992DA5597D1449B4C8DD47B7404C7657, F3ECEE5182014FC3365FDBC4C33CC06A + 20: E7C7945FD1AFD3F5DCE666D8A5A2E8A3C11A7A5F, 86D78B2FBA7597B8806BED505B52BDF6 + 21: 9E2165B47B29CBC4ACD50660E011D691F061209969, E9B1E860BD02085177E1A94E1EE6F3F0 + 22: 48EA2945C8DD3FE09407BAC8973A861DB15B788C8FFD, 502926712EDB1B3DD13806052C6C75D7 + 23: F37D46B35B60819EA52B00457D79155C04B55972D0DFA9, BB2B7D210BF0570F422640BF81F39B9E + 24: 12E85C0C78227205CC682360C79E35BF58EC6551CF8FE2D0, 042990D7A58D458C570A15DD375DB4E7 + 25: 4F6C15109DE980DD14A7F4C27F48671E4787C53A564232F427, B097A5990D8067DD89C21473150C070F + 26: AAC472E49DB101B564A8A01E2C80C0C6AE9065D332C2DE79FAB6, ACDD587A7DB86542E195DF73AF1C1CBC + 27: B9912CE18019C31692A1F7E11D9CCB20297ACCB9DC62C47C01D2C2, B0ACBF028CA5B15E0035D2EB8CA916BE + 28: B4F2B1FE14A1ECDC9C8EA1A0120395E6ED1E69D3FC85DD0F3F90F350, 9A561EBC769369B95B9CB74FC6AC27D3 + 29: 3FE397C8AD02689B7437A37861F0907AF1F6014A293B46419348771C5A, 6B7BEB9BD5018FECD71BE5081C7C2544 + 30: 5019089142199F7207E1B7731B8B247A18A685B231499DF12A73F5D67D37, 307E93446777005BA1B088F178A0DB6E + 31: EAE8F9F02F8DB3D70B78B08CFB0949D99F1A86C958A8E3823736BCEAB86BE1, 6C94F48591C18BF9C450515B73379973 + 32: B9C795F7A87305B4AD36DBA10B3B1C70B329D29E49C8C6A932D96A74334AEE4A, D18E6E233FEFD6E5C7148BDC1504299C + +EAX-twofish (16 byte key) + 0: , DB0C02CB069E3773296D3BD4A87A381B + 1: 99, 7D21D19E9C440F68E99F1F2EA2668694 + 2: 0696, EA590EC417C88E23FD23917F9ECFB0C6 + 3: B9B082, 82D4C9B68DDB02C906496413E13A2D68 + 4: D6B29D74, 5BCE5CA4F662E883BF7FCAAE5FB2CE01 + 5: A59C9CB009, CBFB04226D1029A7EC9D64A48A6729BE + 6: F4924FE3E355, 3D85B3900DECA0528C815F1447A1F209 + 7: 679C88D52FB519, 931C7A863C3701D8015FDBD8696C6C30 + 8: 26DA41C0D115375E, 7627E23E791A4DCB0FA5ED71B1ED2288 + 9: 8FEC6EB7016AD2B178, F65ED0286A724F0CB2EA317D5022B0D8 + 10: B5F22415B1334133C531, 87C4F3A8991BBB85984BC4D3305A5CF1 + 11: 23E1D0ED2E820AFE7DA2FE, 100499F1093FAB2ECF73B643594E98E3 + 12: 79519ABA91F46B8DAD6D5335, FBDCD1FCDB20AB99135F28A714C6992F + 13: 5968D0B4198A0AAD3D0395018F, 781F22E2DA98F83398FCF911B2010057 + 14: 4E55B14432B601E3EF2EF567CB15, 8BF6E53D7657E56EA3DA1BFD9C9EC06E + 15: 6ED89651CE19B3DD1EE5C8780B5015, 131CFD657D32D4E1B35140ADDCA0E13A + 16: 2295A968B4D072D12757756247554850, F35FAC95C2AA4155450EAAA6E2E789B5 + 17: F9B2AA2AA502EA79BBA0C5EAD932B8E1EE, 0ED81AA40B9BF39A9AAEDDDB7A04BEA6 + 18: 385055F1C1C26C0472A504B4CD225DCA55FE, 24831680B56368231AC54227D737F582 + 19: 771529585C741A3F8B1C973709892F255A99EE, 2A132B4BF96FD5109DB04459103F5E84 + 20: E7A2197D9FAA8AB8B303B5EC71AE34AD5EC5DD66, CCAB6518371EC8E0A9E9EE4F7CA5878B + 21: 279E54F755EAC6B57375B9EC4406E43DB3139D740C, 7B6F26F2C0ECC9F2DF4EDD7513E6E0B7 + 22: 27816AA94CBA2BF98E49E595AF5B3FAD12BF1D6F1AC6, D04876C5492D275F15C834E3CF794F0E + 23: B5658DC148855F68B282211D879F688F3C142FE555CF81, 4539CDA8A65DB9047AAD76B421B81120 + 24: 72F0BD4F939C2C9B4FA734DCB0AE4FB9BD342BC8459ED2FE, CEA8469BC0457EBF3418C1114288C904 + 25: 70568245E6E6BD5D11AD0C74030D7AE08BA05057DEA0FBF4AD, 71554FDE6B87477A51EE4499D78783D2 + 26: 8702D35BE07D7ADF70684046CC6C72FBBBF821E0BBCCBC973601, 33CC6FBFDA15E306919E0C3BB2E22BB6 + 27: 0BA23F4A6174165D4A8BA80B7C875340B0F8B2A6967D34E106BC22, 00E6679496714236EECEC84B9AF3072E + 28: B9E25ABA84C6BD95B5149E7616FE2E1D6FAACEAAD77A636C60279176, 8D8AD0B9D4C709E1DA370EE01611482A + 29: 74759711F6D542581F9F83498FB616638D092732BA07109BF4B5BE045C, 71A40DC777BD09F75362F7B20E0B7576 + 30: ADBF7E98926484BA2C7F6CD7CD9734FC19265F68AF3BFCAEB025F6296E37, 8DF15B5F69B67F7DABE44E3666B55047 + 31: 2DC26D449379997D110309B2A0DC2760FCE8CADB4B14ED580F86C70F69C9BA, EFCB60EB2B25737E256BC76700B198EF + 32: 2B1890EB9FC0B8293E45D42D2126F4072754AA54E220C853C5F20FBA86BE0795, 1A1B15BBC287372FB9AF035FB124B6A1 + +EAX-safer-k64 (8 byte key) + 0: , 9065118C8F6F7842 + 1: A1, 1926B3F5112C33BA + 2: 2E9A, 5FA6078A0AA7B7C8 + 3: 56FCE2, 984E385F9441FEC8 + 4: C33ACE8A, 24AC1CBBCCD0D00A + 5: 24307E196B, DD2D52EFCA571B68 + 6: 31471EAA5155, EB41C2B36FAAA774 + 7: 03D397F6CFFF62, 7DFBC8485C8B169B + 8: 8FA39E282C21B5B2, 2C7EC769966B36D7 + 9: FEA5402D9A8BE34946, A058E165B5FFB556 + 10: 6CDEF76554CA845193F0, FED516001FFE039A + 11: DC50D19E98463543D94820, 8F9CCF32394498A1 + 12: 42D8DC34F1974FB4EB2535D7, 77F648526BCBB5AF + 13: B75F1299EF6211A6318F6A8EAA, C5086AEA1BE7640B + 14: 1E28D68373330829DD1FFC5D083E, 33EDA06A7B5929A2 + 15: 85529CF87C4706751B0D47CC89CEA6, D031905D6141CBED + 16: FE5CB61BAF93B30ED3C296EE85F51864, CC484888F0ABD922 + +EAX-safer-sk64 (8 byte key) + 0: , 5254AB3079CDCB78 + 1: 75, 798DCF14FEF8F4D1 + 2: 0300, D5FCA75DAC97849C + 3: 520F98, 10E357957CE20898 + 4: 80E2764D, 5C7F46656C6A46EA + 5: C48960CDAA, 3CCF44BD41F01CA8 + 6: E0E60BD9AA2C, EBB493983FCEE79D + 7: D13D8804906A1B, 6EDDCA919978F0B6 + 8: B7AE14C37A343BFB, 2369E38A9B686747 + 9: 5DE326BBCC7D0D35E9, 041E5EE8568E941C + 10: 13494F5B0635BA3D6E53, EAEEA8AFA55141DD + 11: A9BB35B14C831FDA0D83F7, 4002A696F1363987 + 12: E242043A1C355409819FABFC, 63A085B8886C5FDC + 13: 204598B889272C6FE694BDBB4D, 194A1530138EFECE + 14: EE3F39E0823A82615679C664DEBF, 1EFF8134C8BEFB3A + 15: 8579D87FD3B5E2780BC229665F1D1B, A832CD3E1C1C2289 + 16: 74D7290D72DA67C4A9EAD434AE3A0A85, 96BAA615A5253CB5 + +EAX-safer-k128 (16 byte key) + 0: , 7E32E3F943777EE7 + 1: D1, BA00336F561731A7 + 2: F6D7, 8E3862846CD1F482 + 3: 5323B5, BD1B8C27B061969B + 4: A3EC3416, 170BBB9CE17D1D62 + 5: 0C74D66716, 7BD024B890C5CE01 + 6: 6158A630EB37, B5C5BD0652ACB712 + 7: 17F2D0E019947D, F9FF81E2638EC21C + 8: 68E135CC154509C8, AA9EAEF8426886AA + 9: EDB1ABE0B486749C21, 355C99E4651C0400 + 10: DB0C30E9367A72E8F5B2, 631B5671B8A1DB9A + 11: D4E5453D9A4C9DB5170FCE, 75A2DF0042E14D82 + 12: 3F429CC9A550CBDA44107AA7, 2C2977EA13FEBD45 + 13: A7CA22A97C2361171B415E7083, BFE81185F31727A8 + 14: 170F79D8B0E3F77299C44208C5B1, D5ED9F9459DF9C22 + 15: 2E24312D2AE5D5F09D5410900A4BBA, 2FC865CA96EA5A7E + 16: 8F3C49A316BA27067FF2C6D99EC8C846, 9D840F40CDB62E4B + +EAX-safer-sk128 (16 byte key) + 0: , 22D90A75BBA5F298 + 1: 3F, 98C31AB2DE61DE82 + 2: 584D, F4701D4A1A09928C + 3: B9DEAD, 6E221A98505153DA + 4: 06D4A6EB, 0E57C51B96BA13B6 + 5: 7B58B441CA, E28CCF271F5D0A29 + 6: 7950E0D1EC24, 2ACDDE6E38180C07 + 7: 65A4F4E098D7C6, 7DC1C9E9602BACF2 + 8: FEBE4E72BAA0848F, C4607EA3F138BAD9 + 9: 9B7BD6D6D655985AA3, 8B2C58A9530EA6AC + 10: 60C92F925D1478470203, 51E6F5F6DC996F84 + 11: 7B40769370E651F64AA654, 74F1F8A8D3F4B9AF + 12: 7215832C2FB9C54DF7A9C686, 9BF9AEF14F9151D1 + 13: AD0F9C79008572AB8AE2466EFF, F375D0583D921B69 + 14: C05076E2C330A0D25D7CEC80597F, 843C12F84B00A8E0 + 15: D18F0563AB0278140B0CD9A9B07B34, 262B1688E16A171E + 16: 650747091F5C532EE37D2D78EE1EC605, 1BAC36144F9A0E8D + +EAX-rc2 (8 byte key) + 0: , D6CC8632EEE0F46B + 1: 4C, EA19572CB8970CB4 + 2: 5537, 3EDD3253F6D0C1A8 + 3: 206FA6, 20FA88F03F240D31 + 4: 17EE8B40, 702E8194F1FCBFDE + 5: 2A89287136, 31C5534786E15FB3 + 6: 3A6AEDC7066B, 3C663A4081E1D243 + 7: 8BC5203947A644, 6AAC806C92BFBD6E + 8: 2E0274BBE14D21A3, CEB0E0CB73C3664C + 9: 9C4B292B0CF17E3A29, F23CD535559023EC + 10: 8E322734308F85662877, 46363D7EFC322821 + 11: C413C405767FF5F98E3667, E7BA35D8F3678E7E + 12: D77806B7A218098B1569EADC, BA67C306E5C0181B + 13: 4BE5EF74F9E9799A4D636FEA9F, 4C511C44ADBA4030 + 14: 7E19969170C2C8D8AEBA8C7FBC2C, 54CC6D466A2DF6DA + 15: 2EF1CEDC1DD3403CF440FC5561BE33, 61C6FB277E93701F + 16: DE052719153EBACE9D7B19F52AC4282F, 4AC2A96F2FA8634C + +EAX-des (8 byte key) + 0: , 44048B7F240B6F5F + 1: 0A, 37009B7D4E09953A + 2: 03BA, BFD2FD7758961728 + 3: 37EE10, 16A6AF96DE888A19 + 4: 07F44290, 100CA84AA0EDAA1D + 5: 389EF0023B, 9614FB800A533268 + 6: 3F4DBA8AA01C, EFA6B55B7ED5E40F + 7: 8C7B837896EAE7, C113CE8F664CE3D4 + 8: 7011D993D8EDB0C7, B4C370A919F60497 + 9: 0DEB30A31351B13D7B, 00ABC82DC5F3A1AF + 10: 8D3897B2CBE323D6EE1C, 7A2D15627CA1441B + 11: DBC002C817DEBFB419F94B, D8EB87F86D6ACDEF + 12: 17048E2976FA85AA849E9A80, 229FCD1C9D1E3B9C + 13: 30B989EF646544885A478AC198, C1B7EB4F799105C8 + 14: 5C2E12A7F118A08D6FD585F9C839, C358679FEE6FE7D7 + 15: 8D1A1E888BBB8648E638C4E74E11B8, 685E006C441448B8 + 16: 93AE906B8BE4EAC8ED6D8F48F04A7AFF, 71DD7AF752FE28FB + +EAX-3des (24 byte key) + 0: , 8914311BB990B725 + 1: D8, 2094EDC5D03E54B1 + 2: FEE5, 781CFB0EBE3895CA + 3: DECF5E, 59918E8A5C4B459B + 4: BD583AAD, 2013BEEBEEA795A1 + 5: 2BC01C6C78, 0B1134DBBEAB5D3F + 6: 4D5EAF01A895, AB4D17516ECBA50A + 7: AF229F90614480, D3113C0A9D133CD4 + 8: BCA6F375DF4568E0, 8E9EAEC8E77786BC + 9: 575F34219E6DD8DB4C, B40C75139E5D1860 + 10: A199B8AC433B615EC96F, 774AF803698ADE3D + 11: 718A2975DD9A872A68AE10, 3B9460F849CBA7FB + 12: AB38E148180F6E2FFBB96F91, E3EE3B8FC50DADBC + 13: EB10E0233507459D4A6C29EE80, 8D90B46BB1EAB27E + 14: EB48559C320DFB056C37458E19B5, 9315F0C4AF8500EB + 15: 9E8C73EADA105749B5D8D97392EDC3, 2E749EE66C1E6A16 + 16: 600FA4149AF252C87B828C780AEFF8BC, 33D7D11DCDC19936 + +EAX-cast5 (8 byte key) + 0: , 382FB8F7E9F69FDC + 1: 99, 20DA959849B3F7AB + 2: C54B, D05547C6AFA3484A + 3: 579836, AAA92B2321FC50C5 + 4: FEB7AE55, 639EDF01C4FB965D + 5: EA8A6023FA, 01274B3ED5CE102C + 6: B7C4E995121F, 712BFE27CAFF6DDE + 7: F44236660B0004, FAC51D1DF8EC7093 + 8: 01CD7E3D0BF29E8A, 049C47A45D868D0B + 9: DAB170493DFD6E0365, 6F3AEDD9A3ECF4FD + 10: 82C9EEC4803D9CD11FA8, 32683C0A9128C6EA + 11: 324AC59E87B244ECE0F32F, F6B095AAB49353CF + 12: DBDDAB11D02C9CA5843C406E, EA728FC46DDD3B04 + 13: D67376C2A4AD92E7DD80E39303, CAF72B7E7C237EB3 + 14: F2B9BBEF08036C2982C6DDD06918, 70A29D780C22752C + 15: 96E3D9141F8EBF520540C2BC9A9C23, CEFC86A1CD48203D + 16: 70CABBA983179106AE7FCD5F1F31D5C3, BF7F9168F4F82F56 + +EAX-noekeon (16 byte key) + 0: , 556805EEA595CFB9A30FAD196103D7FD + 1: F5, 0A7DAEDFB656526CEF4DDBA8087A227A + 2: 7B8C, 249895D79962D5B4D18FE07366281B72 + 3: ACFF15, DCC489D24832EB106F576AE6B6EB957A + 4: 08ADE7DB, 0D3215999E9960EDAB29B78744C7F139 + 5: 66139213F6, 505E1E7141D043E903C26EE0959EEECD + 6: 078B79F880A8, 35B7EB326A55E50332866EEDB682EC20 + 7: 2809E34D9667D4, FFDEC555F68524A09A6ABACA372077D9 + 8: 93D267DE1EC635D3, 4FF3561990A56E4B374618722EF850FF + 9: F377A4D93FF32F4A51, 91D4070423A90FC54D305169C03F49ED + 10: 6244B717E082993EB7A1, 2E3A8A354AFA9473667ED7FDD46BE9FC + 11: E917559625D25E6E5F2EDA, 19295C37A70314CC9A1D11FDE8D23C92 + 12: 1E6DF2EE112A893AB14DFA92, 12C4A89D4CD65F8116A03A135AFD3701 + 13: 47B18CD762E011770E203CF605, 434909A97E118B20D3AEDC79AFE33A9E + 14: 72D9A1A7DA6F33D5E0B927F9F32C, 779C23714FCAA2B2321EC7FB5B03E222 + 15: DA8B830FFCB3DB274807F780D33240, EDC2F1C8A401F328A53392597730B007 + 16: B53DD2BB840AD933D36A7B5FFDCCFBBB, 4EC0E6D1F916BF633869239B672B37A1 + 17: 42936BB9A936C30408660855F4F47F3314, F0DAA6DDA15585E1697ABBB4790B15B5 + 18: 00372E47F5BA016F1B2A1E680B76AB02052A, CDBF3D241BF7FF96D3DFBEDDB872E901 + 19: 8AA236B0C8BEF6F67A97C2DF90628F6E5838FF, 731DCD61F7F26004C03519F9500EA824 + 20: 55338647812FC9D86CBDDCED7120268A4D43F8BA, 0E61B3C835CAD95FD49FEF002C014E72 + 21: 435820B28E52154B47A04D5E635D8FE37FA47FC985, F6A96DCE4917E8D7C610923627E80970 + 22: 0D30C15B6FEB4A48B14DD15D41A4B25D442AA677B25C, 28E15CCB74AE992C68BDDC8D87802050 + 23: D9D701F9AD6B0E13D2CDDA15A5194E7CE8BD2C02137391, 2DB9A15884E9C996C3D6B5BDA44B9598 + 24: E2390AC5CE10CCFBC72106A52C7F180CB477E3C193CBACA8, 22D3F7DCD6947EA4E78DF57A8E1A9A59 + 25: ADEFB7D9500658D34996AF6BE6336CD78891064EA1DB8E9785, F239D67D039A15C620A7CD4BE4796B3F + 26: 89964C90ABF54A6DF9F13C3681E70C702D80A17BE79F8160F30E, 6336F729ECE1ED7368669D75B7E2DCBA + 27: 576B2813CECDA4F905BD5D58349EF070FF41B7EB6BB2B01B061B0B, 125324CBF2ACF1011A44A99A11EC8AFC + 28: 430B957481748519A60494F0B5F698F34B1A8235B00AC0D1F0A4442E, 1E80A7FCEBBB8E1E12D6831906154485 + 29: E781BFE5FCDE0BFC056CC86C4A0B9DD3B815BE8CA678204CF47289B5B5, 190D5AAA9EC1CB4CC86FACE53BF1201B + 30: 78BFAC07A9B7B2AE9329BF9F9BF18A1A49DD9587001EFCA00E9AD9752764, 4FB5ECBEEB0995C150EBC66508FA19C1 + 31: 7D6C20694109DE21F7955855A8FF832347518DD496C2A114DF142C68ACDEAA, B25D4BB34056DC091A7A3950D46C32EC + 32: 3E1E4395DEC1AFEA9212B95F37E679B6E2D14DF23C5DE49018C2C8038CC4AD45, 9A6DE7BD41A21918AD504490EF4E581D + +EAX-skipjack (10 byte key) + 0: , 85F74B6AFFB10ACD + 1: 3F, 604DF8BDD98A0B3F + 2: EA87, 792374FE07588BF9 + 3: 0169CA, 489AB8AF69DA3306 + 4: A7AC3EB1, 428DAF508E24B583 + 5: AA9028D5B3, C0A44EDA71FB2C86 + 6: DA97BA88A061, DA2EC34077F42585 + 7: 7E25FAA41CEBC8, 36D4987551E06D5B + 8: F662DA6C9001CBFE, B7DEF76680C316A9 + 9: 6D3F73EC716E1DA897, 5F0F83BAE4D3513B + 10: 2A300F585BEE9C889743, F4756C24DEB72A9C + 11: 80518B010DD77C82D19106, 50FF5CAA365F4A70 + 12: 6E579A2173C861B6F37B4CD3, 81E3E5ABBA8F0292 + 13: 5B04829880A72C38871C7021F3, 6B26F463708A3294 + 14: 934177878E9A9A9FB4DEB3895922, EBC1C32F0A2A3E96 + 15: 07AF486D1C458AAB2DBF13C3243FAD, 87288E41A9E64089 + 16: 84059283DF9A2A8563E7AF69235F26DF, 351652A0DBCE9D6E + diff --git a/notes/ocb_tv.txt b/notes/ocb_tv.txt new file mode 100644 index 0000000..6f2bed7 --- /dev/null +++ b/notes/ocb_tv.txt @@ -0,0 +1,407 @@ +OCB Test Vectors. Uses the 00010203...NN-1 pattern for nonce/plaintext/key. The outputs +are of the form ciphertext,tag for a given NN. The key for step N>1 is the tag of the previous +step repeated sufficiently. The nonce is fixed throughout. + +OCB-aes (16 byte key) + 0: , 04ADA45E947BC5B6E00F4C8B8053902D + 1: 40, 2FD20C96473DC80B70AF13AFA11D9B4E + 2: 133A, 2CCFC6DC16D5587FF3CB3F91C533622D + 3: 12E5E1, C93F3E09B9029E15185FEA44B3F6BF02 + 4: 3865E0A7, 7410F5F5886E2C5EF4A699A58C498C41 + 5: F0DAFA15D2, 44FE6EE9B2C980684FEDEC658802A63D + 6: 432E308C6BA1, F7174691EDCF8D7152AFF61F20AC6B8F + 7: B353379859776A, B087536DAD5C6E38E7C58C4A70074222 + 8: 0C78BEF929856517, 6499752674000993174D1D1B210FD727 + 9: A447088E4FDAA6FC94, B9C1AD71C969357FA2409D71AD334C26 + 10: 962F7E06CD4CBFE64D60, 41E9C22DAB0E6EFE5869D5C1CA016869 + 11: E420A8485EFF0BE6E59FA3, 8B555F3331ECBCFBCE60284DF0CE1D29 + 12: 60AF8E70FE864404C77323BB, 479C3E8E93EE0C20E9E4CA8455149F99 + 13: 6BE58932CBBA39ADDA999B35EC, 8DAC0E379861AA327DFA52DF712E771A + 14: 3404A18D1A5F40EC3EBF3701BB67, B915A619EC2B25453B8195806C538872 + 15: 2F527E106EB32D5EA6CC2071706FDE, 172559FC20A29D0E1BAF61750951BC66 + 16: A4F288797EF24DD1209E76322006405A, 0F91836E1769B6F329AF0A7FC69AB07D + 17: 8A3B6F2B48E2F6DE3E02D6A166E1E15595, 17BB024582DBEFAE6893BC8903418042 + 18: 5D7D954BFE815CE208AD04214F6AC62C0A54, 4CA6796851083AD43733E8E4D964FC23 + 19: A37B487B9D3B05287378108BEBD44B9A7B785D, A4402359F7E4F4BF70B3DF6600061C6E + 20: 39341E78E5BDF7BE950B00423E186B91314B7BEF, 49B7E1545C20B0E86D0CDA4F90CC6ABA + 21: 3D4E872C6103DB1064AD853D2978E8C5AB12FB69E1, 3551930A00FD2B663B094E6CBAD5BADC + 22: 62C36316C5C5BF07296D9210E12BBD9542ADD2384193, 72F4B05BE37D61D2F4EBE778426BD170 + 23: E3A1EEFB5A1EC7857E6E419C18C1BA3F08AE2DB82220CC, 19F59932FD089F936B56E26768A9F2D5 + 24: 7AB0FECF7E6DCC1A7328496873DA608C2F90F6F539F76CC6, 067252CA3D59354F70C6EE6C201679B9 + 25: E811F085FD5460D3AFA4A2A389CFDDE8ACCCB9B16D75D55860, 94403E24AEB19FCEF4A7D600E5B39199 + 26: 92F42E16B838E63E4A826029126D74782DD8FCB6C8443F355732, E7F3B2F1F537D8A7DFC9FB766EE90687 + 27: 21E99ED0E5550487CD1966F1845FF302ADB6AA97781875090538A3, 4C8299570BC6BA9AB83B9B14D39D0395 + 28: 9E8A5A8BFB43D79EDC027DA82C035CA9CABBC41DB66D6256D4A30456, 3D055A9F6D6F0DADEA447157A03B06A6 + 29: F46CDF2B8E55840F27BEFC0136826912BECD86AEF88CD9B97E597C69FA, 75AB6940C71DF2041F9B1B11F33EC1B5 + 30: ED8DB3940AFEC7F990736E58CBFFD703317E79022FE951B07717EED12653, AEBD2F849E019AE82162F8A2494C3715 + 31: CD44A4CE400373FFCBEE37A79A650F73FF767F9D1EBB13F9AC7DF90A013667, 3DBEB69ADFBC8B0547A823237EF4FA68 + 32: 1BFC4EF0E39A9624C74B72329F525296C75FE9B6371700F9430FAD11016FCE6F, 8C341B4333EEA104A2D813AF71E603E6 + +OCB-blowfish (8 byte key) + 0: , 07B7752047F9E0AE + 1: 72, DC5AEC862D059BF4 + 2: AA44, 3C9F6D8E6A88B5BC + 3: D58CDC, 5305AE3B67CA99D7 + 4: 40AAF438, 306EBBE817191E72 + 5: 83C6195BBC, 03EFAF8AB3F3A797 + 6: 4CA887041A55, 45685403FADBD62F + 7: AAEFC9AFC97E1B, 9658D436EBE2B562 + 8: 298ADEC7EE78361E, B90F2F68A2512CCF + 9: 12D0BF9A2091678026, DA2AA0CEAA665CCE + 10: 6E6FBED771FC0F458878, FB74D5C5E3801106 + 11: C7ED5B6E6306306E9492C7, 7B9EDE455D6FB117 + 12: A2E9E854EC2F47E367285401, 4E8610D388D8590A + 13: 358787DE6F716BDBDD1ABF35C5, 026140FE56B18F40 + 14: 927A4E1EAAD8F9A7A1976353840B, 3FFCB2659DCECCFA + 15: F02A0044174580B388CD92C92A640A, E4FAA7636675F470 + 16: FAC9731332BDF622E4070F35DA928DFF, B0FDD13E2BFF9971 + +OCB-xtea (16 byte key) + 0: , 56722ECFE6ED1300 + 1: 42, 1B8DC606F46D0C70 + 2: 5AFE, C37DA08565D490AF + 3: 2210D8, C1F685A65A5D96C2 + 4: 3760B566, A3820E4369714716 + 5: DE9A8858D3, ED81EB4158EB9D32 + 6: 4822F1279F1A, 152823C615E44F93 + 7: B83B447A71F943, F9D4243069C2D675 + 8: 968ABEA6B6C65A78, 012DED12CE8E6898 + 9: B1A37D0FFB6A6FC8A2, F749AB7C40152D6E + 10: 4D48A2868E751C5CBE21, F8CB1C58475FAFA7 + 11: 0C81558633A9130A6CC9AE, B5D2075CD13D9AFD + 12: C76717CB2F62C3AEC139906C, B9518A5031D84B19 + 13: 11F7EA02488D7BB84209CDB03C, B4009DC8D6EF5C4F + 14: 4E621DDE6BD1B7944285A1CBD396, 95C178682BBB014F + 15: 98C771287305A8DD1F0EA001AB3FB0, DBBF192B778BB9AD + 16: 13AE423AB94556C3594C15F745BB6887, 4785C52B73DE0864 + +OCB-rc5 (8 byte key) + 0: , E7462C3C0C95A73E + 1: 7B, 4A2E2F035C687741 + 2: 5D18, 67AFF1894807B8CD + 3: 2D22D8, 0C5FF43CA669E036 + 4: 341397B9, 96B16C84B8507879 + 5: 78DD453CE9, AE90A02A9A427B82 + 6: 607F75BEB5AF, E11F4897573F6672 + 7: 09A273F40C1F2E, 47038024E2F82A75 + 8: 0519985EF3CE9A54, BA78310DB98100D4 + 9: 66F8D6AF3B453E175A, 8E8A6032D7BA4D8E + 10: 8EA2CCD6592C9AA13B1F, 8E169657A578DA1D + 11: 6046093C8B4C5668182A86, 1E263CA9C35E06C0 + 12: 7D41AAD34685C2E6A050B860, 96AE4FDBF038AAAB + 13: F5E6D3B7773BADDEAABA140123, 7FEE0722FCC229A1 + 14: 44FA523DD21E9A57685B154113A3, 5F4F727124C9A45F + 15: 373B75BADE72A31B61D7FAAA2DFF1A, 526D5C55FBB13C70 + 16: B245D9B51E69EFF0D0F33463886B22F0, 5A575D73F0E1DD6C + +OCB-rc6 (16 byte key) + 0: , 27B9E3F544B8F567EEBF98ED5FD55C76 + 1: 50, 19639C6FB84C516252045735CBFEB2B1 + 2: F537, 645D0FC41CCD140DB055F7E0C63F58E8 + 3: 2F980F, 317F9D3CD0DAB3C309D17432FD7A802E + 4: D868693F, E48D64588DFB9AE80C5F0B471A133B96 + 5: C171238B7D, E9027C03EA694306AE9AF3AE4C4E418B + 6: 2BBB09C1C87D, 6491FB907923B31B3904DAF44E155DB8 + 7: 344E1A1B4CF7AE, A13A7BDB91291914B33A814FF5D3FB3E + 8: F21AF3A1D17299FD, 367371D31EF18B597348AEC1F2415111 + 9: CEBDDD6DC10BF92082, 8C9EB873E39EEC6D123DC69350178DDB + 10: 7932B646E83EB855C568, B147A3F6D63EBA4B79300B1BAFE72F6B + 11: 1100687B3E8BAAEA85A8C7, 6AA2C7009E9BCC19D51E18F472260C65 + 12: 2C7BECF92891FC7B95FE6142, A83FE40AB2A5E176AC7835005E43CDD5 + 13: 29467982D6361D53357F314332, 93EF8D80A786EAFF9F59CD3365AE62B7 + 14: CDC2FB60BB5AAB6E6028032DD04F, 6FBD59FFAAF6DB2E0A0CC08AD16FD36A + 15: 8BA02FAB113254ED8EC51337605315, DB4C8651CA878CC6FAE2FDC361C1E2AA + 16: F36A825E7903BA24D8EF48E49DC2EE12, FF9BCF7D6904CF072FBAAE5EA7637DCB + 17: F22042261E247A450CCFDB90D54D42EF36, B3E2972C2B6EB9F80B9E9D5BF395B771 + 18: B1F0C3216D75C7D5F5C6834F352FEBAE4E26, 5BDDDEB129C08A9D918238B74A436AE7 + 19: 308F653B63C08990E34655FD0E556AD14ADBD2, 7132EF067DFEC0B16F2E4EE6FD7111DF + 20: 65CFEFB0F8258FA5F77AF744A97398CA768169C1, 18EA953A7C3A764DEA9A0A67A12FCA32 + 21: DA01CBB6F33C91A50B49C6A6FEB95BDDEF0905F7F9, 8F29E4BA14C1707C32F3EAD642D6020F + 22: BC35EE861788C672AE10348080346442955D6AD9CA23, D11F8A6E94E663FBFAB79FC124781A2A + 23: 02B52941575D7EDE96D336EC26290EC32D2558CC1EB2EE, 84656D07A6502A48E99E760E911531BF + 24: 0CB126C57FD06737F728090D945D7A3154316BE109A26D82, 7B242FDC18DD934F9A3486CB5B242F1D + 25: D80B8743F79DAAAA6D531E90C72EEE91721B0DBF7D7C3A7BB8, ABDDED12108723E86D4B72E2E88DAF1F + 26: 7C94C0174515FC33D8E9265AC8288E8019F6975626F7FF92AAE0, 113140E6C100BF737B5BA7411B35E3C5 + 27: 0B26D5C8F433E566096D7659ABDEE87183E3AF942859B1FA92CC86, 0BE6A8E265B619D83058C90B758D963E + 28: 61FBC6C671AC58DD515024C9E9ABB774DE2F013EAB00226F00E944B9, 0D095AB152C2FE6ACFF2527E89938A82 + 29: 0D8116EB2BA5C1DA6EB9070B00F819C3CE817085AE3D8BE8028B9F28F0, AA0A1670057C9F7A291BDD45730AF3D1 + 30: D40E8399579309A395093DD35889A558D8602D2A7C5C4CADC4E5C0195232, E534C6F04E12D2E6D97ACCFAD57C22E2 + 31: 25037C853CFF6296747B5310F1959ED0628847D8996E10414B1979E340F43F, 8DFB20AFE1B20A702AAACE1C3B9A3E3F + 32: E1C2DA2341C0DF0515F11C7AA2EFC88BECEC0228BE220615A5A26F0D9CE164DC, 5AAC9903CB8E340D031688ACDF5D203B + +OCB-safer+ (16 byte key) + 0: , 88618DEF98FE588E23107E9A5D89C26B + 1: 68, 78C82478DC13012FBC3F600C7A27A208 + 2: 49E0, 6C2823D624ECAD05081E558DBA873883 + 3: 0DACDA, D977DA0446DB3FE2E31EF6423C84D3D1 + 4: 9C81B7EC, 96ED39E22316D48B0652851F3F2EF14C + 5: BCE204E7C7, 2F2A2556CF50BC372E8D5EB0B196E072 + 6: 51D55B2149F9, 29E5DC8856E0ADD3FF50FD3611C336B5 + 7: 92C82E4C3DCFE1, AD9091779ED4426389E4FD148CECBC36 + 8: 6B7A7E80C71CFEC8, DE0EB38592298B6C98D79DBAF4388062 + 9: 8578B7FF0338C7261A, 8F5B1C5055E789E0D062403099F5B736 + 10: 31D3E598CF921C73AAD5, 0AC8BC98F0C0822FF677F1873BA246EF + 11: 350F10E54E34F1E132B51F, 2F22E4D9FE1E9D5B6FA2DB02CD2112D6 + 12: A41B0CEEA3B156043A9B3289, 78B8DBBE1259DA24797A65A0A6F21813 + 13: 97AA05B4EFDA98212538D90826, C49EB0F9110C6A8F64D68CA1AA05D317 + 14: E7CC0F8CEB35EB63BB5CE067302B, 2318A68066C4692BB7DAD31269E80EB0 + 15: 9530B10F9D82F2F01220E507C45DBF, F66FC64518F87E40141E273968644EA0 + 16: 8FA4B27A1F279E426403D0A4960666F3, E297DDC3038C6754B09972C9A81FA346 + 17: F2DA0B5E70287E504F1606AAE4A60DCD43, DBB1D3FCED2731757271C451FA89BAC2 + 18: 9F39E37F53A7EB41B471CD9B09C89E2640E9, 5B7139A288009BF029D8BC11610BE58A + 19: E07FD02F121F0D497339A3F604CBCCE91AD43F, 7970D40B8C4A728A351F6055B87E451C + 20: 344D288DE671675A2539720EC6C36A7C75627F76, 8C14F47BBE0F60117FEC9B3055F122CB + 21: 4E8FAA2AC06045F7FCCC386E7BD258F6796256E901, 6C02374CCB50A0E50A39DBC648E70DFB + 22: 8FC9ED1351E05EA5E04799A518CF52F21CF689B18EB8, 97A2732C6149FC54C21E5AB8B69C2A94 + 23: 9B0809249A4D0C8F095AD270FEF3DF72232FE807A92243, FA55F25502F7FEBDFB4638FF27AC7E0A + 24: 2B2E0239FC8C1A78011D73890A1169A117B7CC1E8B5B7B77, 02E373B8D36E675D47AD9BB0AC661BD9 + 25: 28D5A76CE1064E266FCADE5CB7A908E29B60B19482B1C40B3C, 689E34472FE29EACBFBB9BB059DBC90D + 26: 6A1C1885DC27697AE22D8AAE9850A8752B4F9D75A7AFF65E4182, 28B6A0DADDB7783929D7C774820CA679 + 27: 8A414CEBE09F7397D1C997645FA3AF71D19F5BD6227EA0CB47034B, 3C1441F1A4054A37C98DB6EA0268E417 + 28: 7CEB9392C3E73183567D7876F86E5373B64F01A0D1C0AC0AA0A01413, DD9BA754BA874DDBC6FB531ED46D9CC0 + 29: 59D7302D064F375940FA8C6D7ED4E4EB27025514576D4ED31037CFCD28, 4A7A7E25C56C0676F9471B0440856F86 + 30: C738EAD06D011F8F6D39076C660A8BBCE69F470D747E8BAACAB6624E59F9, 474664ED7DC02BE63C7165860464188B + 31: AE8386752CD19641133432F27A923AC03E790D6324E7D951866B30B930ECFC, 017375CF18EC2AB24D19E10459977233 + 32: DB277B162E172882DC35C0D13E8CDD2A51022F711A67491F9788F83C4953342F, F289BFE53BACA5D9818B118E5A236300 + +OCB-twofish (16 byte key) + 0: , 2CD8EF22E5457C7FE4016B0FB82FD204 + 1: 5E, 3E38069A9B48C86A6D5B30230AA8FB5D + 2: 16C5, 88018710A0DE759BB40F63D01D3BFEC5 + 3: 3BB919, 541D64B63CF6256A2B91641C4AD7881D + 4: 18BF1940, EEB4B67CC606C3BED042713A1C07E148 + 5: B83ECCDD6A, 99AD31F23F10784CC315534AD7DC3227 + 6: 2C6EB390D4CB, 239FD47E333C9E628F53A0AAFFABAB95 + 7: 77A6F443656C96, 6669B100ED5816E5E7EBC6E6FFE9FD28 + 8: 48ABD8C0E7880A3F, 2927A8138FF76C35644C1C260A470E61 + 9: 58618862492B904056, ADA18B1602AB662B1DADA3D17AFDA16F + 10: 421666490D83177D6662, 31A434A1AF320564DAC4AB41CB95CCBE + 11: E6C856656011B22865BB56, 8308CBA4CA2DFB3BBF50B406AF9787B4 + 12: C00BDBC3ED137D4DF4AE64A1, 3A6AAAD853FD891608E6E524CC71291D + 13: 51FC0197213EAE6C779B0D9591, 2E013655C557BF924C3377119D445A08 + 14: EFFA38E05FDC7E40A0F73CF9EE75, A20C214FEF00C5B836816D91784EA349 + 15: 5121A8E7DA2F34FCB27A211AC7B17F, FC16C8CC0F76AED1502E54E5578FA4FE + 16: C7B4BACC25D34E3235AF82EF4682BF71, 4A2D4172B5BE33532BDC16792840F807 + 17: 67C6376AA0C00FBAB7ECAE408F20004842, ED2BE2756636BEEF1EE5DA5CF727E89D + 18: 8E2262CDDF6A2523565B6B63BB86311EBA9D, 6E36E1B6ED9E116581B155B5B3CD3A4E + 19: A683E2D02AAA473F66FE1B88278C83D1E934DA, 216A3EA8AA533F47F668D8A0D2D7C59B + 20: AF5E282860165A89CE43987CD12D54E09F24F930, AAA981071FD86D7FD3D5E1A9B7B0F54E + 21: 8CC3AEA5C625B1BD7B7982E0933340C7C6F697A7F3, 211BC13BBB33CA9D9C09FF71E6C6FF0E + 22: E7A0BD9580F60EE6FB96830BC03B9DB1C714A5FB1E3A, E80D8AE804A1FC572719C9891728EB0C + 23: 8957615AC77DB6D23C5156709A8426D5D947B3BF83F80D, 839A17904B6EF3367F41D86641179E64 + 24: 89F7444059A006913EC23BC6FA07E2EDA6929F9425ED55B5, 94D3B35D083A99D7CAD703C730B7AC3F + 25: 166189030E95293421581FBC56598AC6ACF597FD07BCAB8BA7, B85DFECEB4953DCD16F1D294B77F5251 + 26: 9D1CBB72E273243A031E061FD1B7B21283C43C607ECEB5F604A3, 37A1370BAE41F2E1A538904B623591F4 + 27: D5C870356DA4B1A6B5B80958049A04F4B463453F5D54EDC3B90EFB, B1D6913246CCF26C063E282D7B9AECA2 + 28: FFF152D69AE294A239FB875C038688F0C2025F6B924EA69ED633D974, 8DA6C7D7A7535D33E92776BD51CE7732 + 29: B327AE2D692BDA7B4F0F46B8025B2D09EACA670F8E4B2D32CB538774C3, 721861B534B2C4DD83B9C3652BB78083 + 30: FED1AEDC7737586AE88324ADDE9C8396AAD39C1A24773185F47F83A4C9F2, 5987D5FE9CD91AC15C434DECBBE96F49 + 31: 3B8D6C999FA569F5BF275654ECDD27465420E4A4FD0B791B3082B6746E7494, 92CDADC59BAAB01CFEE801288F669BC6 + 32: 57A44D012A7D8EC832121B9DD374990C2236A5B5CDE525A105309A5DAB860B04, 13B2461EFBBF3E37C594C10BE45EB3FF + +OCB-safer-k64 (8 byte key) + 0: , 0EDD2A1AB692AA7A + 1: 20, D8E0A4AA7186D93B + 2: 3A72, D35ED39A0DE9BB7A + 3: 63E95A, 5DCC145AC083EBE1 + 4: 66CCE936, 43DC4736618962EE + 5: 81E790856A, 67FE11BBAC7F0CF4 + 6: 2FCC612AFA2D, D9A73706F6BF0562 + 7: 8D65EC96919C6A, 9859A2C2F467F271 + 8: B968DFF1928FFA70, D6379C99C09205E2 + 9: 1D5AEB22616196731D, 91F6EB57D46B3F4E + 10: 8712826B41AF01B45F95, 7482C4B662B4D51F + 11: C3DC292B6D37DC8299F005, D66EDF92D14E89ED + 12: 41E72489BC2089E3632C50BB, 1D058C13D261FF52 + 13: 257A6510FB990950D8CA3B6BB2, C7366DDB55647661 + 14: 74C037F38910E25D746D3A41C422, 6A89AD8D5763B669 + 15: 58610E575C2938BACF63E9612A5704, FC40C717D3962A95 + 16: C23657B24E3497C7C3A53C8D99866586, 8092D335D30512A8 + +OCB-safer-sk64 (8 byte key) + 0: , 76F16BDCE55B3E23 + 1: 6F, 9BB975FF089B072D + 2: D0DB, D469B44427B54009 + 3: 9124AE, 29DEEE037ED01B57 + 4: 3CB507B4, 3B2099163A662E8A + 5: 24916556E2, C645411E75A45A76 + 6: 3861F27498B1, 27CD404E5CBE2530 + 7: B9A4F0F215AD46, EC8ED0F8F5BFA762 + 8: 35F39C5CF8FC195F, D2EF40AB639C6841 + 9: EF387F42DFB145C157, 78A3687643B6A8BF + 10: 609B7AD698D6E75FC8A7, 19F2B4BA46C226A8 + 11: 9EB389D840B5575A431015, D6D5CD12B0A8D58C + 12: 773D76C86FC6548E9C3F7106, C84DA314B3D2A265 + 13: FA9F6A22A448EA8EBC4D5CA1D7, A1F9A8800DEE87F3 + 14: 8588A29BDA0F754902F45177D98E, FAE4F6A46C282C58 + 15: 3661A78146680EBD27E1B0A8411F6F, DBDA06B42AFE89E6 + 16: A7817AFDD86A73DBD088D726950885BC, 39EE24F1DDB14EFE + +OCB-safer-k128 (16 byte key) + 0: , 4919F68F6BC44ABC + 1: FE, 62E1BB4260A41E8B + 2: 29D3, 84F7E10309B5A9F6 + 3: 82CAE3, 21AD21271DEECC38 + 4: E8CFF492, 30A28F17566BD7B7 + 5: 42D790100D, 2712BB75C619F235 + 6: 1D7EF9DAD397, 29EA0096FE1B0F8E + 7: 2328AE9F5F8F23, 823FBB72027588FE + 8: F1EE17CE5D1D962A, 7E763B44190D412A + 9: 59995D24D2F343CAE5, D0442E8DA4B7A738 + 10: 89470C900512352C0AAD, A1B8267CEAC51DE7 + 11: FA01A56CF4043DC9016507, 3F04CA39354B7945 + 12: 234CE53F33CC18BC1D87581B, 26045CD92EEB0B7C + 13: 09F0F817F0A1C34CC1882349D9, D6690B0CD95E3B81 + 14: EE59B78A5EA7A7565519BD8394C5, BA02E6FBDAA3D9C0 + 15: BBE92ED57326C0B8BD718A161F93A2, 6F92501366610B24 + 16: E7FF3C9225C652EC6E89F4D514AB9529, FB797311AE38EEAC + +OCB-safer-sk128 (16 byte key) + 0: , E523C6DBB3CA178D + 1: CD, AA12FD56D9ADDB4B + 2: 0CC4, 98012452ED510588 + 3: 426651, 7FBDB6A5B8960251 + 4: 9EEBE085, 0697D2EB8824BC84 + 5: 346C825C29, 5BECAECCA943C6CB + 6: 12C8F7C7174F, D6F614EB7FF14058 + 7: 06494CBE89E31E, 51A7F4E7D1B85EB8 + 8: AB7DB8E035CD48D5, F18EDA93515A11D2 + 9: 5F66C9179485A4C178, 77B2EABD6B9D32E9 + 10: 44E2F4B20A7B5BC5321E, EB0D98A55F19267C + 11: 807F11C15D37266D9CAC24, A28A19BDF9967E04 + 12: 403E55B8744B21CE9EF5F67C, 5E4F91E64F5034CA + 13: C38DB3813C26D0DCDB4B3A78EE, C4C9A3A3B057511B + 14: 67FFA142996CE550C513F59F8277, DA59DD302D5B0BC7 + 15: A88F78F05F9AFF45F2625D1F450CB1, E4A32284D3D6EC35 + 16: 2EC309FC14CA2483FA63A5EA28070833, 3689A7737D796A82 + +OCB-rc2 (8 byte key) + 0: , 1A073F25FF5690BE + 1: E4, 6EC51CC8940B5924 + 2: 4468, 4C549CEC13F5744D + 3: D2CE47, 3B34AA5CACF700A0 + 4: 4D98182B, 43851C4905037752 + 5: 5784656E03, B1956D2F35E190D6 + 6: 612EC3D4BBBA, 0DA8B476C515C20F + 7: 88CA9BED760036, FA5C4349AB03192F + 8: 61219479ECCDC295, 024AFAC39AF5DE41 + 9: B2205D0B520ECD3C98, E8D7F09F54045A91 + 10: C4B8820AAF0CAFC7F16B, 32AC2DA632FFA7C8 + 11: 4EF4A33C630329020CA0B6, 00B94EC22CAA440F + 12: B26FFEC28419F7ED99B241FB, E484E08689C26430 + 13: 588D22959AB8D1582049EE0486, EE7E0E38A42BCE31 + 14: 86A1FD658FC2AC0E1ECE0D528AA7, CDEC84E55E0BE78C + 15: C00B073B48026E16562924BFC8EE5A, C65C71EBEA6016B6 + 16: D4E298B1E610FEBAC020BA0D0507F0F1, 68B094F6F2C46BA5 + +OCB-des (8 byte key) + 0: , 8A65BD7DE54082AD + 1: 7E, 91C5CD7987CC46CC + 2: A275, B76B5A4ADB75D0B0 + 3: AB0C5D, 2C463609C9933886 + 4: C1ED86D4, E79AE10223890163 + 5: C4D04AEDEB, 509A81814B7873A9 + 6: E0FD095B644F, DE5139ADD9BE6250 + 7: CDD1164659654B, B0536BB2817725FC + 8: 759F0E801E5AD992, 71EEB01DFFD9D946 + 9: A1E8BCFC90324AA3F3, 5B61AE171ACD4721 + 10: 3D0BE9B40B8B7933976E, 1D33B66102AE70BF + 11: 338F0213A7C843CC335E20, 215F1AF51474E391 + 12: 9B05F57853F4319140533EBD, ED4425C38848550D + 13: 16CCD44B543C1B6939D9F7122C, 22B0577679223676 + 14: 092E7CE7DFE6C7B07A672680AF81, 761C1C267F62CFC4 + 15: ACE1AB7120D4092868143FC3E76179, 165DACD587304D1C + 16: 9D3764DCD797FDA981A440BFBFCB0F2C, 538254F6164119C4 + +OCB-3des (24 byte key) + 0: , 9CB7074F93CD37DD + 1: 90, DC4E7B29A434DAA3 + 2: 3139, 09BF34C4F770ADC7 + 3: 77161A, 9ACB27184F3BF196 + 4: 1F7666B5, C6578EB1CCE25553 + 5: 043240D354, 23D090F6DACE0B03 + 6: BA84DE76B081, BEBC521446F286C4 + 7: 3EF4272C6AF1BB, A99BD626436F2586 + 8: ECE6A8B0C4EF8D63, B675ACED7D2B28FA + 9: D4FCF97B677A2CDC2B, BC6B8BC16BFBFB20 + 10: DF899D92AD0FBB3CA443, 23D486A6B0DBD5D1 + 11: 1A95F4AF984ECAD4CA52EF, 34DEF497F95BF424 + 12: D32ADD65BA8604BFB0980BF6, 01C2758914C4D0DE + 13: 6D477BC51505C8FD9EDA926596, C5A338A6AF687597 + 14: 37AE388D897D22789CB79B17E1F1, 75E7372DD653DF15 + 15: F24F950FF2DD2054510E67EFCDC4DF, 705A27ECFAE74710 + 16: 1D8AD09B1124EFF0817871754FE6ED40, 3D143151197C59B4 + +OCB-cast5 (8 byte key) + 0: , 77E8002236021687 + 1: 98, 9D73A3403B345699 + 2: BF24, 80A7E8123CF54C9D + 3: 93369E, 01A967A92245F16E + 4: 5D917EED, FFFB66F53851ABFD + 5: CA6E2BAEFB, 53596129002C9B7C + 6: A66DE171E377, 25BC0AD3B0AC21AF + 7: 04A05EADA80780, 7703120B8DF8B98A + 8: DD040CCEA55C8830, E4B8ECEAADC292A1 + 9: FEEB112E469F4AB637, 92F0ABA0A554C9B6 + 10: 5BE2019137752075F35D, 0DC52AED0F2C3894 + 11: 75DEFFAF2C152E6745A97F, 7752A70A2D9D184C + 12: EF90E23366790D62DAE5BA66, 829A9C7684D03C5E + 13: 0A4689BD15E338056782F19B13, 5676FAE6E2745929 + 14: 2534CCD55A471E5840447B6BAE6A, 33D1B4876EFD5FE0 + 15: 6FC1B4FD3A202CB14D9ECCF88F0E55, 13D8EDBE1BE8F0A5 + 16: E8BACB11E0864011D72B599025DA2FDF, FE7397323F7DF138 + +OCB-noekeon (16 byte key) + 0: , 72751E743D0B7A07EFB23444F1492DDC + 1: 65, 2BDF86A7C46460BDBB8252E176CB7105 + 2: 9BAE, DB8AFF53F1AEF4FC5A9BF3E1A5DE9430 + 3: 96C214, 25585611B7FE5EC176627DB0BADCBEA4 + 4: B6046645, 32F5FF1347797760C872D92FB3E48085 + 5: E5C89E89E7, 5B1868C4655FF6B28BEEDB0C8A37CBC6 + 6: CB6CC16CBAA8, 8A7C7213989BE3D89D8EBE31024DDDE1 + 7: D09EE74CF99850, 565DA08FB8F154FDBAB27E432324BF77 + 8: F389A90F999147CC, 618535B5685A9F76012B99B0C6FDFAD5 + 9: 32B110B50A8D6F67D9, 379DBCC0B20E3523935621A7C1506A28 + 10: CAF759FE91C8794D8D93, 50EA638B83E1C85F210989495A8724CC + 11: 332B07DA0F942C8F22C1E7, 504DCD9521A42C77C05CE9ABF8FB4FA0 + 12: D0C422738243A89E54B734A3, FD4FF9C337CF2785EBEC0C128482371B + 13: B899277B6557E5E685A5649E64, 868F039212C96E212E280A4DBA6555FE + 14: 15E617DAACB18D93428C3BA043B1, E072A199CFAA617CEA2A176B75682516 + 15: 58B04DDD83045E773811BD6C371978, 6EEA2DCB6DECFC0B542DECAAD37024B3 + 16: 8DE6C50DD08FD141E7FF20FE3262A340, 6F826FA2FCF34E4285975DE9FB0FC4D4 + 17: A14711565B0CBA6C88370737F97F803F7E, D84950FCD2C72536711A1503348975A7 + 18: 5AEE5927EF89D3A09CDA7CC7183EEB701471, FC8DB44F4D6188581A0567C3DF2C498D + 19: 12ECFBFF02C5A37DFE7772732659ADFD7DC349, 8ED7F4AB648339A174ADA3317BF82C64 + 20: F57930534156A623A05FA3A30B4CE5339E8209A7, C78081E80D95BE642DC4F194C902AC3B + 21: FF92DF299ADF1EBD22CEAE3876B5DED0AE5EEE2F9B, C491571613AA18C9C4305A9595575EE1 + 22: 2BBCC3079A01962F7B406662A20924C2AA5D65493FCE, 6AF63F2B8831F8CD41522D32A8BD1C1B + 23: 9F05A8AF6256ED46EED6BE3E5F9F5F13A3804AC0DFC110, E310472DB635D60B5BAD5F5B3E24E768 + 24: DCD82591D67AEEDA00ECAC67E91BC62CF42FE69D6B9A427A, 9758F103B57D3AE6533F736F17C95D48 + 25: B6388AD629A4A951F2CDE98C80A81C8C499ABFE073EE81FD6A, 70A8217A7652D8325EB717359C1D7830 + 26: 51D9F3341368BE00BE709F6F009BA53F852CA27ADEF439CB5A59, 6772C710B9D6159F1B0F4BC2BD5DC1A4 + 27: 4710196F162BFF2BD87945AE012CE9FFC7C6EB651C716DCFBB6706, A338043240EA22FB4B50A1D6BCA241FA + 28: 8120FAF7FC1FD6157519A296EC5513F2907ECB8792219CFBE0A3E17E, 45EA2ADF503BCDFD60EDFEA24168D539 + 29: 34FFD8289321EBD9029158A2C217DC867436CF5346B3B940B3B9339C0A, 3A7C1C2F5CFADF3F4C601C005333826D + 30: 8E97C51214057F523B915BE5EE84D72979254577077FD6D9FDA63215668A, BB5E2FC288DE613716BA3F3A69F6D17A + 31: F1A13BEC82D4FB33A5E5E6E1A5DD47DDC7F67AF5EBCAE980AB1B641A76FBDE, A2BBEA281BA38731F855EF8533B94C60 + 32: 77CC8CB5ECBD4CDFC9BA9414B6E6596D7ED01B24C46D9EBCFE150FEA2687EFC3, 5295D9ECAB6E2CC4C6C60D27F4A5E7F9 + +OCB-skipjack (10 byte key) + 0: , 90EAAB5131AEB43B + 1: 01, D8C438498F94B782 + 2: 23BD, 6D650F6CB26C0BEE + 3: E5D16E, E4459817F4A898E6 + 4: 126212FE, D97B43C7BFB83262 + 5: A1580EA0A3, BC7C325FF295A404 + 6: 9374B704E26D, 97DBA225A0F0136E + 7: BC2E8E234CBE33, 4603D9A50B9915ED + 8: C7629762CF53A687, 5DAF80ABDD01CD74 + 9: 151D35020935EFB225, 0898987E5F710240 + 10: 934BF9846689A0DDC434, FF698391DE287C55 + 11: 8AF680448D95D32DE31B03, F60110D8968D1FB5 + 12: E03FDF4028EBB30164C297D7, A80E7FD7A5028E62 + 13: 614BF4A0A567314FA3990020FC, 6B1C9D495FED96C7 + 14: D8BFFD57B4BB8C100F3F026105C3, 2F99A8895B86B798 + 15: 81B2DD86C7252B4FD8D4FD385E65BB, 7788260BCABCCC8F + 16: 8AE9FEF234B5FC98AE95C1AFD6780C61, B332941A6EB467F7 + diff --git a/notes/omac_tv.txt b/notes/omac_tv.txt index 9d299c9..2139358 100644 --- a/notes/omac_tv.txt +++ b/notes/omac_tv.txt @@ -352,39 +352,39 @@ OMAC-cast5 (8 byte key) 16: E8B0B219D4CB699B OMAC-noekeon (16 byte key) - 0: 897F93D42DF43E4FDACB0E19A27D0CF5 - 1: 3FAB4FD1A374C36E80D0535ADA81583A - 2: 209F1B04BD823B068BC19CEF40B875DB - 3: E8FC96A2D8EB9BDA9E8A4EA8F6FE611A - 4: 35DE59C345C4AF97924187A6EA73F556 - 5: 59793AB3D84D614D8AEE6E233B3DE755 - 6: 64DCB7E74485DF98F4DC70B14DD26107 - 7: 42E87ABB43E4504DB362B59A9BBC28DC - 8: 98EC0C30C1AFBF4BC9A2DF421AC446E4 - 9: 8B3B59B481B7AFDB6BC593E2BB2A80B2 - 10: 0F60392A9518682015F43B8109E3A773 - 11: A99BEC6BB467B5949EC4819B8FB47874 - 12: 8E15ED270998CD1D7226B2BB9B5A8BC8 - 13: B4D637277DE68E507DD95E6EC495B364 - 14: DCCF001FA3A9AB5C58213CEB90B341E7 - 15: 508C01FDA50B06DDC1AF9CD78F0FD2C7 - 16: 3DB78001DE8115BE9E0B884AE4243926 - 17: 165951DF3F7D28AD6A2FE56DC32A0F60 - 18: 155944AEA14A6E08283421E8F19FE6F3 - 19: 151BEE5BC94004DFD407A0EFE51F8D9A - 20: 081C3192C00D7BACB147FDDA5C460A4A - 21: BEEB181DB90F5B3B1DD5BCFFC87C66DE - 22: D83B9F8AFD912D8424C85AB0FBDD4751 - 23: A3BAF0E00DEBFB9C3A7B65A5AFCEE670 - 24: D03695C35C7D36C05FD26ADBF070E559 - 25: 5BFAA49199ABCE1CFBA626D30FA6AB0F - 26: 9C3601196AD328AADBE62C730ECCC888 - 27: 75D79E48C5797963EBAF466BC0E1639E - 28: 968DF7D963E6D023EC8421C7B2787E7B - 29: 5E315EB6B6E583E7D8CF78A3A81D28C9 - 30: 322E00FC522FA7B41A6564E37F3D9DDC - 31: AAB04CB0B25A7A7951C75592BA7CB360 - 32: CD5B1ED284EDCD493EFE133ECEA0F822 + 0: EC61647B281C47C1B43F9815064BF953 + 1: B100B1B6CD96DCED8F47A77E70670A92 + 2: A96CDE3C48831A6B0A5ADFECA6399BDB + 3: 14E75E7CAD840208834918B29A5D4430 + 4: 9577083713AE6E44EEC987C77C93C072 + 5: 2A738C02841E461238C02F5CFC8E66A6 + 6: A901327E451BE0D2D9DEC83DEEA9A022 + 7: 5ED7EE1BE04A64A689D15F6970A821A6 + 8: BA053E24FCFD02C731A8CFCA19EE66A0 + 9: 57139CA8C91072555B29F85A19E2C84D + 10: 4585EAC7EFB84869FD96EE7A5FDD350B + 11: 62AF6C415CA73E54E82EA306254C1BDE + 12: 75304F9724BD364F84371EE154F5210E + 13: 7FE5DBCEE826760434745D417453182B + 14: EC98DA2A580E9131218D1CDE835423D4 + 15: 631BD9EAFD1AE445F2C1C35E2B4416ED + 16: CA2D902A1D83388FE35BAB7C29F359BA + 17: 0DBF0AF7FCBEEE21FB6159C0A2FFCD4C + 18: BD7CD2C49241032DA33B1975EE2EE982 + 19: B30B090EE8626D77D310EDB957552D46 + 20: 64F608AC5707C381AC6878AA38345144 + 21: 28513CA7795B23A02B37DC3732413D23 + 22: 9F440700094517847E9E013C8915C433 + 23: 8CA483F313D20BFE7E0C089DAA4145BD + 24: FA44872743E20E5E0A069B3C4578DB50 + 25: F6DE8FFBECD52CC1F213CD9E406DF3BC + 26: B9702B7E846735A3DCC0724255F88FEC + 27: A1DDAFED2B1732C7BA89C2F194AF039E + 28: 2549C5F0E30F8F4002431D2C098805B8 + 29: 52E3836181BF5C9B09A507D5330CD14F + 30: 01C55DCBCCFD9D7A4D27BDE2A89AA8EF + 31: 3CF721A0CF006702CDA91F2FF3E4D5E3 + 32: 6D264B9065BE98C170E68E9D2A4DE86E OMAC-skipjack (10 byte key) 0: 84EDFA769040603C diff --git a/notes/tech0003.txt b/notes/tech0003.txt index b43f8aa..1a21867 100644 --- a/notes/tech0003.txt +++ b/notes/tech0003.txt @@ -25,11 +25,11 @@ Blowfish | 4,168 | SAFER+ | 532 | Serpent | 528 | Rijndael | 516 | -RC5 | 204 | XTEA | 256 | RC2 | 256 | DES | 256 | SAFER [#] | 217 | +RC5 | 204 | Twofish [*] | 193 | RC6 | 176 | CAST5 | 132 | diff --git a/ocb.c b/ocb.c new file mode 100644 index 0000000..7b4290c --- /dev/null +++ b/ocb.c @@ -0,0 +1,561 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ +#include "mycrypt.h" + +#define OCB_MODE +#ifdef OCB_MODE + +static const struct { + int len; + unsigned char poly_div[MAXBLOCKSIZE], + poly_mul[MAXBLOCKSIZE]; +} polys[] = { +{ + 8, + { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B } +}, { + 16, + { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87 } +} +}; + +int ocb_init(ocb_state *ocb, int cipher, + const unsigned char *key, unsigned long keylen, const unsigned char *nonce) +{ + int x, y, z, m, p, err; + unsigned char tmp[MAXBLOCKSIZE]; + + _ARGCHK(ocb != NULL); + _ARGCHK(key != NULL); + _ARGCHK(nonce != NULL); + + /* valid cipher? */ + if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { + return err; + } + + /* determine which polys to use */ + ocb->block_len = cipher_descriptor[cipher].block_length; + for (ocb->poly = 0; ocb->poly < (int)(sizeof(polys)/sizeof(polys[0])); ocb->poly++) { + if (polys[ocb->poly].len == ocb->block_len) { + break; + } + } + if (polys[ocb->poly].len != ocb->block_len) { + return CRYPT_INVALID_ARG; + } + + /* schedule the key */ + if ((err = cipher_descriptor[cipher].setup(key, keylen, 0, &ocb->key)) != CRYPT_OK) { + return err; + } + + /* find L = E[0] */ + zeromem(ocb->L, ocb->block_len); + cipher_descriptor[cipher].ecb_encrypt(ocb->L, ocb->L, &ocb->key); + + /* find R = E[N xor L] */ + for (x = 0; x < ocb->block_len; x++) { + ocb->R[x] = ocb->L[x] ^ nonce[x]; + } + cipher_descriptor[cipher].ecb_encrypt(ocb->R, ocb->R, &ocb->key); + + /* find Ls[i] = L << i for i == 0..31 */ + memcpy(ocb->Ls[0], ocb->L, ocb->block_len); + for (x = 1; x < 32; x++) { + m = ocb->Ls[x-1][0] >> 7; + for (y = 0; y < ocb->block_len-1; y++) { + ocb->Ls[x][y] = ((ocb->Ls[x-1][y] << 1) | (ocb->Ls[x-1][y+1] >> 7)) & 255; + } + ocb->Ls[x][ocb->block_len-1] = (ocb->Ls[x-1][ocb->block_len-1] << 1) & 255; + + if (m == 1) { + for (y = 0; y < ocb->block_len; y++) { + ocb->Ls[x][y] ^= polys[ocb->poly].poly_mul[y]; + } + } + } + + /* find Lr = L / x */ + m = ocb->L[ocb->block_len-1] & 1; + + /* shift right */ + for (x = ocb->block_len - 1; x > 0; x--) { + ocb->Lr[x] = ((ocb->L[x] >> 1) | (ocb->L[x-1] << 7)) & 255; + } + ocb->Lr[0] = ocb->L[0] >> 1; + + if (m == 1) { + for (x = 0; x < ocb->block_len; x++) { + ocb->Lr[x] ^= polys[ocb->poly].poly_div[x]; + } + } + + /* set Li, checksum */ + zeromem(ocb->Li, ocb->block_len); + zeromem(ocb->checksum, ocb->block_len); + + /* set other params */ + ocb->block_index = 1; + ocb->cipher = cipher; + + return CRYPT_OK; +} + +static int ntz(unsigned long x) +{ + int c; + x &= 0xFFFFFFFFUL; + c = 0; + while ((x & 1) == 0) { + ++c; + x >>= 1; + } + return c; +} + +static void shift_xor(ocb_state *ocb, unsigned char *Z) +{ + int x, y; + y = ntz(ocb->block_index++); + for (x = 0; x < ocb->block_len; x++) { + ocb->Li[x] ^= ocb->Ls[y][x]; + Z[x] = ocb->Li[x] ^ ocb->R[x]; + } +} + +int ocb_encrypt(ocb_state *ocb, const unsigned char *pt, unsigned char *ct) +{ + unsigned char Z[MAXBLOCKSIZE], tmp[MAXBLOCKSIZE]; + int err, x, y; + + _ARGCHK(ocb != NULL); + _ARGCHK(pt != NULL); + _ARGCHK(ct != NULL); + if ((err = cipher_is_valid(ocb->cipher)) != CRYPT_OK) { + return err; + } + if (ocb->block_len != cipher_descriptor[ocb->cipher].block_length) { + return CRYPT_INVALID_ARG; + } + + /* compute checksum */ + for (x = 0; x < ocb->block_len; x++) { + ocb->checksum[x] ^= pt[x]; + } + + /* Get Z[i] value */ + shift_xor(ocb, Z); + + /* xor pt in, encrypt, xor Z out */ + for (x = 0; x < ocb->block_len; x++) { + tmp[x] = pt[x] ^ Z[x]; + } + cipher_descriptor[ocb->cipher].ecb_encrypt(tmp, ct, &ocb->key); + for (x = 0; x < ocb->block_len; x++) { + ct[x] ^= Z[x]; + } + +#ifdef CLEAN_STACK + zeromem(Z, sizeof(Z)); + zeromem(tmp, sizeof(tmp)); +#endif + return CRYPT_OK; +} + +int ocb_decrypt(ocb_state *ocb, const unsigned char *ct, unsigned char *pt) +{ + unsigned char Z[MAXBLOCKSIZE], tmp[MAXBLOCKSIZE]; + int err, x, y; + + _ARGCHK(ocb != NULL); + _ARGCHK(pt != NULL); + _ARGCHK(ct != NULL); + if ((err = cipher_is_valid(ocb->cipher)) != CRYPT_OK) { + return err; + } + if (ocb->block_len != cipher_descriptor[ocb->cipher].block_length) { + return CRYPT_INVALID_ARG; + } + + /* Get Z[i] value */ + shift_xor(ocb, Z); + + /* xor ct in, encrypt, xor Z out */ + for (x = 0; x < ocb->block_len; x++) { + tmp[x] = ct[x] ^ Z[x]; + } + cipher_descriptor[ocb->cipher].ecb_decrypt(tmp, pt, &ocb->key); + for (x = 0; x < ocb->block_len; x++) { + pt[x] ^= Z[x]; + } + + /* compute checksum */ + for (x = 0; x < ocb->block_len; x++) { + ocb->checksum[x] ^= pt[x]; + } + + +#ifdef CLEAN_STACK + zeromem(Z, sizeof(Z)); + zeromem(tmp, sizeof(tmp)); +#endif + return CRYPT_OK; +} + + +/* Since the last block is encrypted in CTR mode the same code can + * be used to finish a decrypt or encrypt stream. The only difference + * is we XOR the final ciphertext into the checksum so we have to xor it + * before we CTR [decrypt] or after [encrypt] + * + * the names pt/ptlen/ct really just mean in/inlen/out but this is the way I wrote it... + */ +static int _ocb_done(ocb_state *ocb, const unsigned char *pt, unsigned long ptlen, + unsigned char *ct, unsigned char *tag, unsigned long *taglen, int mode) + +{ + unsigned char Z[MAXBLOCKSIZE], Y[MAXBLOCKSIZE], X[MAXBLOCKSIZE]; + int err, x, y; + + _ARGCHK(ocb != NULL); + _ARGCHK(pt != NULL); + _ARGCHK(ct != NULL); + _ARGCHK(tag != NULL); + _ARGCHK(taglen != NULL); + if ((err = cipher_is_valid(ocb->cipher)) != CRYPT_OK) { + return err; + } + if (ocb->block_len != cipher_descriptor[ocb->cipher].block_length || + (int)ptlen > ocb->block_len || (int)ptlen < 0) { + return CRYPT_INVALID_ARG; + } + + /* compute X[m] = len(pt[m]) XOR Lr XOR Z[m] */ + shift_xor(ocb, X); + memcpy(Z, X, ocb->block_len); + + X[ocb->block_len-1] ^= ptlen&255; + for (x = 0; x < ocb->block_len; x++) { + X[x] ^= ocb->Lr[x]; + } + + /* Y[m] = E(X[m])) */ + cipher_descriptor[ocb->cipher].ecb_encrypt(X, Y, &ocb->key); + + if (mode == 1) { + /* decrypt mode, so let's xor it first */ + /* xor C[m] into checksum */ + for (x = 0; x < (int)ptlen; x++) { + ocb->checksum[x] ^= ct[x]; + } + } + + /* C[m] = P[m] xor Y[m] */ + for (x = 0; x < (int)ptlen; x++) { + ct[x] = pt[x] ^ Y[x]; + } + + if (mode == 0) { + /* encrypt mode */ + /* xor C[m] into checksum */ + for (x = 0; x < (int)ptlen; x++) { + ocb->checksum[x] ^= ct[x]; + } + } + + /* xor Y[m] and Z[m] into checksum */ + for (x = 0; x < ocb->block_len; x++) { + ocb->checksum[x] ^= Y[x] ^ Z[x]; + } + + /* encrypt checksum, er... tag!! */ + cipher_descriptor[ocb->cipher].ecb_encrypt(ocb->checksum, X, &ocb->key); + + /* now store it */ + for (x = 0; x < ocb->block_len && x < (int)*taglen; x++) { + tag[x] = X[x]; + } + *taglen = x; + +#ifdef CLEAN_STACK + zeromem(X, sizeof(X)); + zeromem(Y, sizeof(Y)); + zeromem(Z, sizeof(Z)); +#endif + return CRYPT_OK; +} + +int ocb_done_encrypt(ocb_state *ocb, const unsigned char *pt, unsigned long ptlen, + unsigned char *ct, unsigned char *tag, unsigned long *taglen) +{ + return _ocb_done(ocb, pt, ptlen, ct, tag, taglen, 0); +} + + +int ocb_done_decrypt(ocb_state *ocb, + const unsigned char *ct, unsigned long ctlen, + unsigned char *pt, + const unsigned char *tag, unsigned long taglen, int *res) +{ + int err; + unsigned char tagbuf[MAXBLOCKSIZE]; + unsigned long tagbuflen; + + + _ARGCHK(ocb != NULL); + _ARGCHK(pt != NULL); + _ARGCHK(ct != NULL); + _ARGCHK(tag != NULL); + _ARGCHK(res != NULL); + + *res = 0; + + tagbuflen = sizeof(tagbuf); + if ((err = _ocb_done(ocb, ct, ctlen, pt, tagbuf, &tagbuflen, 1)) != CRYPT_OK) { + return err; + } + + if (taglen <= tagbuflen && memcmp(tagbuf, tag, taglen) == 0) { + *res = 1; + } + +#ifdef CLEAN_STACK + zeromem(tagbuf, sizeof(tagbuf)); +#endif + + return CRYPT_OK; +} + +int ocb_encrypt_authenticate_memory(int cipher, + const unsigned char *key, unsigned long keylen, + const unsigned char *nonce, + const unsigned char *pt, unsigned long ptlen, + unsigned char *ct, + unsigned char *tag, unsigned long *taglen) +{ + int err, n; + ocb_state ocb; + + if ((err = ocb_init(&ocb, cipher, key, keylen, nonce)) != CRYPT_OK) { + return err; + } + + while (ptlen > (unsigned long)ocb.block_len) { + if ((err = ocb_encrypt(&ocb, pt, ct)) != CRYPT_OK) { + return err; + } + ptlen -= ocb.block_len; + pt += ocb.block_len; + ct += ocb.block_len; + } + + err = ocb_done_encrypt(&ocb, pt, ptlen, ct, tag, taglen); + +#ifdef CLEAN_STACK + zeromem(&ocb, sizeof(ocb)); +#endif + return err; +} + +int ocb_decrypt_verify_memory(int cipher, + const unsigned char *key, unsigned long keylen, + const unsigned char *nonce, + const unsigned char *ct, unsigned long ctlen, + unsigned char *pt, + const unsigned char *tag, unsigned long taglen, + int *res) +{ + int err, n; + ocb_state ocb; + + if ((err = ocb_init(&ocb, cipher, key, keylen, nonce)) != CRYPT_OK) { + return err; + } + + while (ctlen > (unsigned long)ocb.block_len) { + if ((err = ocb_decrypt(&ocb, ct, pt)) != CRYPT_OK) { + return err; + } + ctlen -= ocb.block_len; + pt += ocb.block_len; + ct += ocb.block_len; + } + + err = ocb_done_decrypt(&ocb, ct, ctlen, pt, tag, taglen, res); + +#ifdef CLEAN_STACK + zeromem(&ocb, sizeof(ocb)); +#endif + return err; +} + +int ocb_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + static const struct { + int ptlen; + unsigned char key[16], nonce[16], pt[32], ct[32], tag[16]; + } tests[] = { + + /* NULL message */ +{ + 0, + /* key */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* nonce */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* pt */ + { 0x00 }, + /* ct */ + { 0x00 }, + /* tag */ + { 0x04, 0xad, 0xa4, 0x5e, 0x94, 0x7b, 0xc5, 0xb6, + 0xe0, 0x0f, 0x4c, 0x8b, 0x80, 0x53, 0x90, 0x2d } +}, + + /* one byte message */ +{ + 1, + /* key */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* nonce */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* pt */ + { 0x11 }, + /* ct */ + { 0x6f }, + /* tag */ + { 0xe2, 0x61, 0x42, 0x3e, 0xbb, 0x0e, 0x7f, 0x3b, + 0xa6, 0xdd, 0xf1, 0x3e, 0xe8, 0x0b, 0x7b, 0x00} +}, + + /* 16 byte message */ +{ + 16, + /* key */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* nonce */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* pt */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* ct */ + { 0x6a, 0xaf, 0xac, 0x40, 0x6d, 0xfa, 0x87, 0x40, + 0x57, 0xc7, 0xdb, 0xe9, 0x6f, 0x1b, 0x39, 0x53 }, + /* tag */ + { 0xff, 0xbf, 0x96, 0x87, 0x72, 0xfe, 0xee, 0x59, + 0x08, 0x1f, 0xc7, 0x8c, 0x8f, 0xd9, 0x16, 0xc2 } +}, + + /* 17 byte message */ +{ + 17, + /* key */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* nonce */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* pt */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10 }, + /* ct */ + { 0x8c, 0x94, 0xbd, 0xd4, 0x2d, 0xdd, 0x1c, 0x40, + 0xbe, 0xe0, 0x06, 0xb5, 0xab, 0x54, 0x3b, 0x00, + 0x20 }, + /* tag */ + { 0x0e, 0x72, 0x7c, 0x88, 0x73, 0xbb, 0x66, 0xd7, + 0x4a, 0x4f, 0xd4, 0x84, 0x83, 0xc7, 0x9a, 0x29 } +} + +}; + + int err, x, idx, res; + unsigned long len; + unsigned char outct[MAXBLOCKSIZE], outtag[MAXBLOCKSIZE]; + + /* AES can be under rijndael or aes... try to find it */ + if ((idx = find_cipher("aes")) == -1) { + if ((idx = find_cipher("rijndael")) == -1) { + return CRYPT_NOP; + } + } + + for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { + len = sizeof(outtag); + if ((err = ocb_encrypt_authenticate_memory(idx, tests[x].key, 16, + tests[x].nonce, tests[x].pt, tests[x].ptlen, outct, outtag, &len)) != CRYPT_OK) { + return err; + } + + if (memcmp(outtag, tests[x].tag, len) || memcmp(outct, tests[x].ct, tests[x].ptlen)) { +#if 0 + unsigned long y; + printf("\n\nFailure: \nCT:\n"); + for (y = 0; y < (unsigned long)tests[x].ptlen; ) { + printf("0x%02x", outct[y]); + if (y < (unsigned long)(tests[x].ptlen-1)) printf(", "); + if (!(++y % 8)) printf("\n"); + } + printf("\nTAG:\n"); + for (y = 0; y < len; ) { + printf("0x%02x", outtag[y]); + if (y < len-1) printf(", "); + if (!(++y % 8)) printf("\n"); + } +#endif + return CRYPT_FAIL_TESTVECTOR; + } + + if ((err = ocb_decrypt_verify_memory(idx, tests[x].key, 16, tests[x].nonce, outct, tests[x].ptlen, + outct, tests[x].tag, len, &res)) != CRYPT_OK) { + return err; + } + if (res != 1 || memcmp(tests[x].pt, outct, tests[x].ptlen)) { +#if 0 + unsigned long y; + printf("\n\nFailure-decrypt: \nPT:\n"); + for (y = 0; y < (unsigned long)tests[x].ptlen; ) { + printf("0x%02x", outct[y]); + if (y < (unsigned long)(tests[x].ptlen-1)) printf(", "); + if (!(++y % 8)) printf("\n"); + } + printf("\nres = %d\n\n", res); +#endif + } + } + return CRYPT_OK; +#endif /* LTC_TEST */ +} + +#endif /* OCB_MODE */ + + +/* some comments + + -- it's hard to seek + -- hard to stream [you can't emit ciphertext until full block] + -- The setup is somewhat complicated... +*/ diff --git a/ofb.c b/ofb.c index 808e32c..cb902b2 100644 --- a/ofb.c +++ b/ofb.c @@ -1,3 +1,13 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ #include "mycrypt.h" #ifdef OFB diff --git a/omac.c b/omac.c index 0b5392c..1fe3fb0 100644 --- a/omac.c +++ b/omac.c @@ -1,3 +1,13 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ /* OMAC1 Support by Tom St Denis (for 64 and 128 bit block ciphers only) */ #include "mycrypt.h" @@ -15,16 +25,6 @@ int omac_init(omac_state *omac, int cipher, const unsigned char *key, unsigned l return err; } - if ((err = cipher_descriptor[cipher].setup(key, keylen, 0, &omac->key)) != CRYPT_OK) { - return err; - } - - /* ok now we need Lu and Lu^2 [calc one from the other] */ - - /* first calc L which is Ek(0) */ - zeromem(omac->Lu[0], cipher_descriptor[cipher].block_length); - cipher_descriptor[cipher].ecb_encrypt(omac->Lu[0], omac->Lu[0], &omac->key); - /* now setup the system */ switch (cipher_descriptor[cipher].block_length) { case 8: mask = 0x1B; @@ -36,6 +36,16 @@ int omac_init(omac_state *omac, int cipher, const unsigned char *key, unsigned l default: return CRYPT_INVALID_ARG; } + if ((err = cipher_descriptor[cipher].setup(key, keylen, 0, &omac->key)) != CRYPT_OK) { + return err; + } + + /* ok now we need Lu and Lu^2 [calc one from the other] */ + + /* first calc L which is Ek(0) */ + zeromem(omac->Lu[0], cipher_descriptor[cipher].block_length); + cipher_descriptor[cipher].ecb_encrypt(omac->Lu[0], omac->Lu[0], &omac->key); + /* now do the mults, whoopy! */ for (x = 0; x < 2; x++) { /* if msb(L * u^(x+1)) = 0 then just shift, otherwise shift and xor constant mask */ @@ -57,7 +67,7 @@ int omac_init(omac_state *omac, int cipher, const unsigned char *key, unsigned l omac->cipher_idx = cipher; omac->buflen = 0; omac->blklen = len; - zeromem(omac->prev, sizeof(omac->prev)); + zeromem(omac->prev, sizeof(omac->prev)); zeromem(omac->block, sizeof(omac->block)); return CRYPT_OK; @@ -209,17 +219,54 @@ int omac_test(void) #if !defined(LTC_TEST) return CRYPT_NOP; #else - static const unsigned char key[] = { 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, - 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c }; - static const unsigned char pt[] = { 0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96, - 0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a, - 0xae, 0x2d, 0x8a, 0x57, 0x1e, 0x03, 0xac, 0x9c, - 0x9e, 0xb7, 0x6f, 0xac, 0x45, 0xaf, 0x8e, 0x51, - 0x30, 0xc8, 0x1c, 0x46, 0xa3, 0x5c, 0xe4, 0x11 }; - static const unsigned char tag[] = { 0xdf, 0xa6, 0x67, 0x47, 0xde, 0x9a, 0xe6, 0x30, - 0x30, 0xca, 0x32, 0x61, 0x14, 0x97, 0xc8, 0x27 }; + static const struct { + int keylen, msglen; + unsigned char key[32], msg[64], tag[16]; + } tests[] = { + { 16, 0, + { 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, + 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c }, + { 0x00 }, + { 0xbb, 0x1d, 0x69, 0x29, 0xe9, 0x59, 0x37, 0x28, + 0x7f, 0xa3, 0x7d, 0x12, 0x9b, 0x75, 0x67, 0x46 } + }, + { 16, 16, + { 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, + 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c }, + { 0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96, + 0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a }, + { 0x07, 0x0a, 0x16, 0xb4, 0x6b, 0x4d, 0x41, 0x44, + 0xf7, 0x9b, 0xdd, 0x9d, 0xd0, 0x4a, 0x28, 0x7c } + }, + { 16, 40, + { 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, + 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c }, + { 0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96, + 0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a, + 0xae, 0x2d, 0x8a, 0x57, 0x1e, 0x03, 0xac, 0x9c, + 0x9e, 0xb7, 0x6f, 0xac, 0x45, 0xaf, 0x8e, 0x51, + 0x30, 0xc8, 0x1c, 0x46, 0xa3, 0x5c, 0xe4, 0x11 }, + { 0xdf, 0xa6, 0x67, 0x47, 0xde, 0x9a, 0xe6, 0x30, + 0x30, 0xca, 0x32, 0x61, 0x14, 0x97, 0xc8, 0x27 } + }, + { 16, 64, + { 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, + 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c }, + { 0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96, + 0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a, + 0xae, 0x2d, 0x8a, 0x57, 0x1e, 0x03, 0xac, 0x9c, + 0x9e, 0xb7, 0x6f, 0xac, 0x45, 0xaf, 0x8e, 0x51, + 0x30, 0xc8, 0x1c, 0x46, 0xa3, 0x5c, 0xe4, 0x11, + 0xe5, 0xfb, 0xc1, 0x19, 0x1a, 0x0a, 0x52, 0xef, + 0xf6, 0x9f, 0x24, 0x45, 0xdf, 0x4f, 0x9b, 0x17, + 0xad, 0x2b, 0x41, 0x7b, 0xe6, 0x6c, 0x37, 0x10 }, + { 0x51, 0xf0, 0xbe, 0xbf, 0x7e, 0x3b, 0x9d, 0x92, + 0xfc, 0x49, 0x74, 0x17, 0x79, 0x36, 0x3c, 0xfe } + } + + }; unsigned char out[16]; - int err, idx; + int x, y, err, idx; unsigned long len; @@ -229,13 +276,18 @@ int omac_test(void) return CRYPT_NOP; } } - len = sizeof(out); - if ((err = omac_memory(idx, key, 16, pt, 40, out, &len)) != CRYPT_OK) { - return err; - } - if (memcmp(out, tag, 16) != 0) { - return CRYPT_FAIL_TESTVECTOR; + for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { + len = sizeof(out); + if ((err = omac_memory(idx, tests[x].key, tests[x].keylen, tests[x].msg, tests[x].msglen, out, &len)) != CRYPT_OK) { + return err; + } + + if (memcmp(out, tests[x].tag, 16) != 0) { + printf("\n\nTag: "); + for (y = 0; y < 16; y++) printf("%02x", out[y]); printf("\n\n"); + return CRYPT_FAIL_TESTVECTOR; + } } return CRYPT_OK; #endif diff --git a/packet.c b/packet.c index 44da445..8a6c1f4 100644 --- a/packet.c +++ b/packet.c @@ -1,3 +1,13 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ #include "mycrypt.h" #ifdef PACKET diff --git a/prime.c b/prime.c index 4837a0a..64d6eb9 100644 --- a/prime.c +++ b/prime.c @@ -1,3 +1,13 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ #include "mycrypt.h" #ifdef MPI diff --git a/rc2.c b/rc2.c index a352f7c..fbb4bc1 100644 --- a/rc2.c +++ b/rc2.c @@ -1,3 +1,13 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ /**********************************************************************\ * To commemorate the 1996 RSA Data Security Conference, the following * * code is released into the public domain by its author. Prost! * @@ -116,13 +126,15 @@ void rc2_ecb_encrypt( const unsigned char *plain, symmetric_key *skey) #endif { - unsigned *xkey = skey->rc2.xkey; + unsigned *xkey; unsigned x76, x54, x32, x10, i; _ARGCHK(plain != NULL); _ARGCHK(cipher != NULL); _ARGCHK(skey != NULL); + xkey = skey->rc2.xkey; + x76 = ((unsigned)plain[7] << 8) + (unsigned)plain[6]; x54 = ((unsigned)plain[5] << 8) + (unsigned)plain[4]; x32 = ((unsigned)plain[3] << 8) + (unsigned)plain[2]; @@ -184,13 +196,15 @@ void rc2_ecb_decrypt( const unsigned char *cipher, #endif { unsigned x76, x54, x32, x10; - unsigned *xkey = skey->rc2.xkey; + unsigned *xkey; int i; _ARGCHK(plain != NULL); _ARGCHK(cipher != NULL); _ARGCHK(skey != NULL); + xkey = skey->rc2.xkey; + x76 = ((unsigned)cipher[7] << 8) + (unsigned)cipher[6]; x54 = ((unsigned)cipher[5] << 8) + (unsigned)cipher[4]; x32 = ((unsigned)cipher[3] << 8) + (unsigned)cipher[2]; diff --git a/rc4.c b/rc4.c index e60cada..2521cfb 100644 --- a/rc4.c +++ b/rc4.c @@ -1,3 +1,13 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ #include "mycrypt.h" #ifdef RC4 diff --git a/rc5.c b/rc5.c index 135db08..2f97e28 100644 --- a/rc5.c +++ b/rc5.c @@ -1,3 +1,16 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ + +/* RC5 code by Tom St Denis */ + #include "mycrypt.h" #ifdef RC5 diff --git a/rc6.c b/rc6.c index 3a0d974..adb631c 100644 --- a/rc6.c +++ b/rc6.c @@ -1,3 +1,15 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ + +/* RC6 code by Tom St Denis */ #include "mycrypt.h" #ifdef RC6 diff --git a/rmd128.c b/rmd128.c index 89fa5b6..aff0c62 100644 --- a/rmd128.c +++ b/rmd128.c @@ -1,3 +1,14 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ + /* Implementation of RIPEMD-128 based on the source by Antoon Bosselaers, ESAT-COSIC * * This source has been radically overhauled to be portable and work within diff --git a/rmd160.c b/rmd160.c index c429215..ef917fa 100644 --- a/rmd160.c +++ b/rmd160.c @@ -1,3 +1,14 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ + /* Implementation of RIPEMD-160 based on the source by Antoon Bosselaers, ESAT-COSIC * * This source has been radically overhauled to be portable and work within diff --git a/rsa.c b/rsa.c index 0673e1c..8344e0b 100644 --- a/rsa.c +++ b/rsa.c @@ -1,3 +1,15 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ + +/* RSA Code by Tom St Denis */ #include "mycrypt.h" #ifdef MRSA @@ -308,49 +320,11 @@ int rsa_depad(const unsigned char *in, unsigned long inlen, return CRYPT_OK; } -#define OUTPUT_BIGNUM(num, buf2, y, z) \ -{ \ - z = (unsigned long)mp_unsigned_bin_size(num); \ - STORE32L(z, buf2+y); \ - y += 4; \ - if (mp_to_unsigned_bin(num, buf2+y) != MP_OKAY) { return CRYPT_MEM; } \ - y += z; \ -} - - -#define INPUT_BIGNUM(num, in, x, y) \ -{ \ - /* load value */ \ - if (y + 4 > inlen) { \ - err = CRYPT_INVALID_PACKET; \ - goto error2; \ - } \ - LOAD32L(x, in+y); \ - y += 4; \ - \ - /* sanity check... */ \ - if (y+x > inlen) { \ - err = CRYPT_INVALID_PACKET; \ - goto error2; \ - } \ - \ - /* load it */ \ - if (mp_read_unsigned_bin(num, (unsigned char *)in+y, (int)x) != MP_OKAY) {\ - err = CRYPT_MEM; \ - goto error2; \ - } \ - y += x; \ - \ - if (mp_shrink(num) != MP_OKAY) { \ - err = CRYPT_MEM; \ - goto error2; \ - } \ -} - int rsa_export(unsigned char *out, unsigned long *outlen, int type, rsa_key *key) { unsigned char buf2[5120]; - unsigned long y, z; + unsigned long y, z; + int err; _ARGCHK(out != NULL); _ARGCHK(outlen != NULL); @@ -464,7 +438,7 @@ int rsa_import(const unsigned char *in, unsigned long inlen, rsa_key *key) } return CRYPT_OK; -error2: +error: mp_clear_multi(&key->d, &key->e, &key->N, &key->dQ, &key->dP, &key->pQ, &key->qP, &key->p, &key->q, NULL); return err; diff --git a/rsa_sys.c b/rsa_sys.c index 4c562b8..017aab7 100644 --- a/rsa_sys.c +++ b/rsa_sys.c @@ -1,3 +1,14 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ + /* these are smaller routines written by Clay Culver. They do the same function as the rsa_encrypt/decrypt * except that they are used to RSA encrypt/decrypt a single value and not a packet. */ diff --git a/safer+.c b/safer+.c index 89d50e8..8468e51 100644 --- a/safer+.c +++ b/safer+.c @@ -1,3 +1,14 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ + /* SAFER+ Implementation by Tom St Denis */ #include "mycrypt.h" diff --git a/safer.c b/safer.c index 664ec7d..1866967 100644 --- a/safer.c +++ b/safer.c @@ -1,3 +1,14 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ + /******************************************************************************* * * FILE: safer.c diff --git a/safer_tab.c b/safer_tab.c index 79242cd..18dfa33 100644 --- a/safer_tab.c +++ b/safer_tab.c @@ -1,3 +1,14 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ + #include "mycrypt.h" #if defined(SAFERP) || defined(SAFER) diff --git a/sha1.c b/sha1.c index 049feb2..ff8976e 100644 --- a/sha1.c +++ b/sha1.c @@ -1,3 +1,15 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ + +/* SHA1 code by Tom St Denis */ #include "mycrypt.h" #ifdef SHA1 diff --git a/sha224.c b/sha224.c index c7c5787..681000c 100644 --- a/sha224.c +++ b/sha224.c @@ -1,3 +1,14 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ + /* SHA-224 new NIST standard based off of SHA-256 truncated to 224 bits */ const struct _hash_descriptor sha224_desc = { diff --git a/sha256.c b/sha256.c index 0695250..105ba49 100644 --- a/sha256.c +++ b/sha256.c @@ -1,3 +1,17 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ + + +/* SHA256 by Tom St Denis */ + #include "mycrypt.h" #ifdef SHA256 diff --git a/sha384.c b/sha384.c index 8d05bcf..3f29cfc 100644 --- a/sha384.c +++ b/sha384.c @@ -1,3 +1,14 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ + /* included in sha512.c */ const struct _hash_descriptor sha384_desc = diff --git a/sha512.c b/sha512.c index f6cb5c9..7978a9a 100644 --- a/sha512.c +++ b/sha512.c @@ -1,3 +1,16 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ + +/* SHA512 by Tom St Denis */ + #include "mycrypt.h" #ifdef SHA512 diff --git a/skipjack.c b/skipjack.c index 68f4027..cbedc15 100644 --- a/skipjack.c +++ b/skipjack.c @@ -1,3 +1,14 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ + /* Skipjack Implementation by Tom St Denis */ #include "mycrypt.h" @@ -84,7 +95,7 @@ int skipjack_setup(const unsigned char *key, int keylen, int num_rounds, symmetr tmp = ig_func(w2, &kp, key->skipjack.key); \ w2 = tmp ^ w3 ^ x; \ w3 = w4; w4 = w1; w1 = tmp; - + static unsigned g_func(unsigned w, int *kp, unsigned char *key) { unsigned char g1,g2; diff --git a/sprng.c b/sprng.c index e3e4b2b..4d93bc3 100644 --- a/sprng.c +++ b/sprng.c @@ -1,3 +1,14 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ + /* A secure PRNG using the RNG functions. Basically this is a * wrapper that allows you to use a secure RNG as a PRNG * in the various other functions. diff --git a/strings.c b/strings.c index 2bd4297..e156037 100644 --- a/strings.c +++ b/strings.c @@ -1,3 +1,14 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ + /* Future releases will make use of this */ #include "mycrypt.h" diff --git a/tiger.c b/tiger.c index f326c36..465b861 100644 --- a/tiger.c +++ b/tiger.c @@ -1,3 +1,14 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ + #include "mycrypt.h" #ifdef TIGER diff --git a/tommath.h b/tommath.h index 1af3396..6cc9bb0 100644 --- a/tommath.h +++ b/tommath.h @@ -338,6 +338,9 @@ int mp_invmod(mp_int *a, mp_int *b, mp_int *c); /* c = (a, b) */ int mp_gcd(mp_int *a, mp_int *b, mp_int *c); +/* produces value such that U1*a + U2*b = U3 */ +int mp_exteuclid(mp_int *a, mp_int *b, mp_int *U1, mp_int *U2, mp_int *U3); + /* c = [a, b] or (a*b)/(a, b) */ int mp_lcm(mp_int *a, mp_int *b, mp_int *c); @@ -466,7 +469,7 @@ int mp_to_signed_bin(mp_int *a, unsigned char *b); int mp_read_radix(mp_int *a, char *str, int radix); int mp_toradix(mp_int *a, char *str, int radix); -int mp_radix_size(mp_int *a, int radix); +int mp_radix_size(mp_int *a, int radix, int *size); int mp_fread(mp_int *a, int radix, FILE *stream); int mp_fwrite(mp_int *a, int radix, FILE *stream); diff --git a/twofish.c b/twofish.c index 6199cc6..af5ec68 100644 --- a/twofish.c +++ b/twofish.c @@ -1,3 +1,14 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ + /* Implementation of Twofish by Tom St Denis */ #include "mycrypt.h" @@ -467,18 +478,17 @@ void twofish_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_k d ^= key->twofish.K[3]; k = key->twofish.K + 8; - for (r = 0; r < 16; r += 2) { - t1 = g_func(a, key); + for (r = 8; r != 0; --r) { t2 = g1_func(b, key); - c = ROR(c ^ (t1 + t2 + k[0]), 1); - d = ROL(d, 1) ^ (t2 + t2 + t1 + k[1]); - k += 2; + t1 = g_func(a, key) + t2; + c = ROR(c ^ (t1 + k[0]), 1); + d = ROL(d, 1) ^ (t2 + t1 + k[1]); - t1 = g_func(c, key); t2 = g1_func(d, key); - a = ROR(a ^ (t1 + t2 + k[0]), 1); - b = ROL(b, 1) ^ (t2 + t2 + t1 + k[1]); - k += 2; + t1 = g_func(c, key) + t2; + a = ROR(a ^ (t1 + k[2]), 1); + b = ROL(b, 1) ^ (t2 + t1 + k[3]); + k += 4; } /* output with "undo last swap" */ @@ -533,19 +543,18 @@ void twofish_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_k c = ta ^ key->twofish.K[4]; d = tb ^ key->twofish.K[5]; - k = key->twofish.K + 38; - for (r = 14; r >= 0; r -= 2) { - t1 = g_func(c, key); + k = key->twofish.K + 36; + for (r = 8; r != 0; --r) { t2 = g1_func(d, key); - a = ROL(a, 1) ^ (t1 + t2 + k[0]); - b = ROR(b ^ (t2 + t2 + t1 + k[1]), 1); - k -= 2; + t1 = g_func(c, key) + t2; + a = ROL(a, 1) ^ (t1 + k[2]); + b = ROR(b ^ (t2 + t1 + k[3]), 1); - t1 = g_func(a, key); t2 = g1_func(b, key); - c = ROL(c, 1) ^ (t1 + t2 + k[0]); - d = ROR(d ^ (t2 + t2 + t1 + k[1]), 1); - k -= 2; + t1 = g_func(a, key) + t2; + c = ROL(c, 1) ^ (t1 + k[0]); + d = ROR(d ^ (t2 + t1 + k[1]), 1); + k -= 4; } /* pre-white */ diff --git a/twofish_tab.c b/twofish_tab.c index 99f7aba..3995085 100644 --- a/twofish_tab.c +++ b/twofish_tab.c @@ -1,3 +1,14 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ + #ifdef TWOFISH_TABLES /* pre generated 8x8 tables from the four 4x4s */ diff --git a/xtea.c b/xtea.c index 6c528d3..895907c 100644 --- a/xtea.c +++ b/xtea.c @@ -1,3 +1,14 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ + #include "mycrypt.h" #ifdef XTEA diff --git a/yarrow.c b/yarrow.c index ee4d016..2410ce2 100644 --- a/yarrow.c +++ b/yarrow.c @@ -1,3 +1,14 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * gurantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org + */ + #include "mycrypt.h" #ifdef YARROW