diff --git a/sbin/gbde/Makefile b/sbin/gbde/Makefile deleted file mode 100644 index 8c84781fc4ed..000000000000 --- a/sbin/gbde/Makefile +++ /dev/null @@ -1,31 +0,0 @@ - -PACKAGE=geom -PROG= gbde -SRCS= gbde.c template.c -SRCS+= rijndael-alg-fst.c -SRCS+= rijndael-api-fst.c -SRCS+= g_bde_lock.c - -# rijndael-fst.c does evil casting things which can results in warnings, -# the test-vectors check out however, so it works right. -NO_WCAST_ALIGN= -NO_WMISSING_VARIABLE_DECLARATIONS= - -CFLAGS+= -I${SRCTOP}/sys -.PATH: ${SRCTOP}/sys/geom/bde \ - ${SRCTOP}/sys/crypto/rijndael \ - ${SRCTOP}/sys/crypto/sha2 - -CLEANFILES+= template.c - -MAN= gbde.8 -LIBADD= md util geom - -template.c: template.txt - file2c 'const char template[] = {' ',0};' \ - < ${.CURDIR}/template.txt > template.c - -test: ${PROG} - sh ${.CURDIR}/test.sh ${.CURDIR} - -.include diff --git a/sbin/gbde/Makefile.depend b/sbin/gbde/Makefile.depend deleted file mode 100644 index 2edf986e595a..000000000000 --- a/sbin/gbde/Makefile.depend +++ /dev/null @@ -1,18 +0,0 @@ -# Autogenerated - do NOT edit! - -DIRDEPS = \ - include \ - include/xlocale \ - lib/${CSU_DIR} \ - lib/libc \ - lib/libcompiler_rt \ - lib/libgeom \ - lib/libmd \ - lib/libutil \ - - -.include - -.if ${DEP_RELDIR} == ${_DEP_RELDIR} -# local dependencies - needed for -jN in clean tree -.endif diff --git a/sbin/gbde/gbde.8 b/sbin/gbde/gbde.8 deleted file mode 100644 index 1f3d41017307..000000000000 --- a/sbin/gbde/gbde.8 +++ /dev/null @@ -1,271 +0,0 @@ -.\" -.\" Copyright (c) 2002 Poul-Henning Kamp -.\" Copyright (c) 2002 Networks Associates Technology, Inc. -.\" All rights reserved. -.\" -.\" This software was developed for the FreeBSD Project by Poul-Henning Kamp -.\" and NAI Labs, the Security Research Division of Network Associates, Inc. -.\" under DARPA/SPAWAR contract N66001-01-C-8035 ("CBOSS"), as part of the -.\" DARPA CHATS research program. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.Dd October 3, 2016 -.Dt GBDE 8 -.Os -.Sh NAME -.Nm gbde -.Nd operation and management utility for Geom Based Disk Encryption -.Sh SYNOPSIS -.Nm -.Cm attach -.Ar destination -.Op Fl k Ar keyfile -.Op Fl l Ar lockfile -.Op Fl p Ar pass-phrase -.Nm -.Cm detach -.Ar destination -.Nm -.Cm init -.Ar destination -.Op Fl i -.Op Fl f Ar filename -.Op Fl K Ar new-keyfile -.Op Fl L Ar new-lockfile -.Op Fl P Ar new-pass-phrase -.Nm -.Cm setkey -.Ar destination -.Op Fl n Ar key -.Op Fl k Ar keyfile -.Op Fl l Ar lockfile -.Op Fl p Ar pass-phrase -.Op Fl K Ar new-keyfile -.Op Fl L Ar new-lockfile -.Op Fl P Ar new-pass-phrase -.Nm -.Cm nuke -.Ar destination -.Op Fl n Ar key -.Op Fl k Ar keyfile -.Op Fl l Ar lockfile -.Op Fl p Ar pass-phrase -.Nm -.Cm destroy -.Ar destination -.Op Fl k Ar keyfile -.Op Fl l Ar lockfile -.Op Fl p Ar pass-phrase -.Sh DESCRIPTION -.Bf -symbolic -NOTICE: -Please be aware that this code has not yet received much review -and analysis by qualified cryptographers and therefore should be considered -a slightly suspect experimental facility. -.Pp -We cannot at this point guarantee that the on-disk format will not change -in response to reviews or bug-fixes, so potential users are advised to -be prepared that -.Xr dump 8 Ns / Ns -.Xr restore 8 -based migrations may be called for in the future. -.Ef -.Pp -The -.Nm -utility is the only official operation and management interface for the -.Xr gbde 4 -.Tn GEOM -based disk encryption kernel facility. -The interaction between the -.Nm -utility and the kernel part is not a published interface. -.Pp -The operational aspect consists of two subcommands: -one to open and attach -a device to the in-kernel cryptographic -.Nm -module -.Pq Cm attach , -and one to close and detach a device -.Pq Cm detach . -.Pp -The management part allows initialization of the master key and lock sectors -on a device -.Pq Cm init , -initialization and replacement of pass-phrases -.Pq Cm setkey , -and key invalidation -.Pq Cm nuke -and blackening -.Pq Cm destroy -functions. -.Pp -The -.Fl l Ar lockfile -argument is used to supply the lock selector data. -If no -.Fl l -option is specified, the first sector is used for this purpose. -.Pp -The -.Fl L Ar new-lockfile -argument -specifies the lock selector file for the key -initialized with the -.Cm init -subcommand -or modified with the -.Cm setkey -subcommand. -.Pp -The -.Fl n Ar key -argument can be used to specify to which of the four keys -the operation applies. -A value of 1 to 4 selects the specified key, a value of 0 (the default) -means -.Dq "this key" -(i.e., the key used to gain access to the device) -and a value of \-1 means -.Dq "all keys" . -.Pp -The -.Fl f Ar filename -specifies an optional parameter file for use under initialization. -.Pp -Alternatively, the -.Fl i -option toggles an interactive mode where a template file with descriptions -of the parameters can be interactively edited. -.Pp -The -.Fl p Ar pass-phrase -argument -specifies the pass-phrase used for opening the device. -If not specified, the controlling terminal will be used to prompt the user -for the pass-phrase. -Be aware that using this option may expose the pass-phrase to other -users who happen to run -.Xr ps 1 -or similar while the command is running. -.Pp -The -.Fl P Ar new-pass-phrase -argument -can be used to specify the new pass-phrase to the -.Cm init -and -.Cm setkey -subcommands. -If not specified, the user is prompted for the new pass-phrase on the -controlling terminal. -Be aware that using this option may expose the pass-phrase to other -users who happen to run -.Xr ps 1 -or similar while the command is running. -.Pp -The -.Fl k Ar keyfile -argument specifies a key file to be used in combination with the -pass-phrase (whether the pass-phrase is specified on the command line -or entered from the terminal) for opening the device. -The device will only be opened if the contents of the key file and the -pass-phrase are both correct. -.Pp -The -.Fl K Ar new-keyfile -argument can be used to specify a new key file to the -.Cm init -and -.Cm setkey -subcommands. -If not specified, no key file will be used (even if one was previously -used). -.Sh EXAMPLES -To initialize a device, using default parameters: -.Pp -.Dl "gbde init /dev/ada0s1f -L /etc/ada0s1f.lock" -.Pp -To attach an encrypted device: -.Pp -.Dl "gbde attach ada0s1f -l /etc/ada0s1f.lock" -.Pp -The encrypted device has the suffix -.Pa .bde -so a typical -command to create and mount a file system would be: -.Pp -.Dl "newfs /dev/ada0s1f.bde" -.Dl "mount /dev/ada0s1f.bde /secret" -.Pp -To detach an encrypted device: -.Pp -.Dl "gbde detach ada0s1f" -.Pp -Please notice that detaching an encrypted device corresponds to -physically removing it, do not forget to unmount the file system first. -.Pp -To initialize the second key using a detached lockfile and a trivial -pass-phrase: -.Pp -.Dl "gbde setkey ada0s1f -n 2 -P foo -L key2.lockfile" -.Pp -To invalidate your own masterkey: -.Pp -.Dl "gbde nuke ada0s1f" -.Pp -This will overwrite your masterkey sector with zeros, and results in -a diagnostic if you try to use the key again. -You can also destroy the other three copies of the masterkey with the --n argument. -.Pp -You can also invalidate your masterkey without leaving a tell-tale sector -full of zeros: -.Pp -.Dl "gbde destroy ada0s1f" -.Pp -This will overwrite the information fields in your masterkey sector, -encrypt it and write it back. -You get a (different) diagnostic if you try to use it. -.Sh SEE ALSO -.Xr gbde 4 , -.Xr geom 4 -.Sh HISTORY -This software was developed for the -.Fx -Project by -.An Poul-Henning Kamp -and NAI Labs, the Security Research Division of Network Associates, Inc.\& -under DARPA/SPAWAR contract N66001-01-C-8035 -.Pq Dq CBOSS , -as part of the -DARPA CHATS research program. -.Nm -first appeared in -.Fx 5.0 . -.Sh AUTHORS -.An Poul-Henning Kamp Aq Mt phk@FreeBSD.org -.Sh BUGS -The cryptographic algorithms and the overall design have not been -attacked mercilessly for over 10 years by a gang of cryptoanalysts. diff --git a/sbin/gbde/gbde.c b/sbin/gbde/gbde.c deleted file mode 100644 index e173bb78ad90..000000000000 --- a/sbin/gbde/gbde.c +++ /dev/null @@ -1,895 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2002 Poul-Henning Kamp - * Copyright (c) 2002 Networks Associates Technology, Inc. - * All rights reserved. - * - * This software was developed for the FreeBSD Project by Poul-Henning Kamp - * and NAI Labs, the Security Research Division of Network Associates, Inc. - * under DARPA/SPAWAR contract N66001-01-C-8035 ("CBOSS"), as part of the - * DARPA CHATS research program. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * XXX: Future stuff - * - * Replace the template file options (-i & -f) with command-line variables - * "-v property=foo" - * - * Introduce -e, extra entropy source (XOR with /dev/random) - * - * Introduce -E, alternate entropy source (instead of /dev/random) - * - * Introduce -i take IV from keyboard or - * - * Introduce -I take IV from file/cmd - * - * Introduce -m/-M store encrypted+encoded masterkey in file - * - * Introduce -k/-K get pass-phrase part from file/cmd - * - * Introduce -d add more dest-devices to worklist. - * - * Add key-option: selfdestruct bit. - * - * New/changed verbs: - * "onetime" attach with onetime nonstored locksector - * "key"/"unkey" to blast memory copy of key without orphaning - * "nuke" blow away everything attached, crash/halt/power-off if possible. - * "blast" destroy all copies of the masterkey - * "destroy" destroy one copy of the masterkey - * "backup"/"restore" of masterkey sectors. - * - * Make all verbs work on both attached/detached devices. - * - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define GBDEMOD "geom_bde" -#define KASSERT(foo, bar) do { if(!(foo)) { warn bar ; exit (1); } } while (0) - -#include -#include - -extern const char template[]; - - -#if 0 -static void -g_hexdump(void *ptr, int length) -{ - int i, j, k; - unsigned char *cp; - - cp = ptr; - for (i = 0; i < length; i+= 16) { - printf("%04x ", i); - for (j = 0; j < 16; j++) { - k = i + j; - if (k < length) - printf(" %02x", cp[k]); - else - printf(" "); - } - printf(" |"); - for (j = 0; j < 16; j++) { - k = i + j; - if (k >= length) - printf(" "); - else if (cp[k] >= ' ' && cp[k] <= '~') - printf("%c", cp[k]); - else - printf("."); - } - printf("|\n"); - } -} -#endif - -static void __dead2 -usage(void) -{ - - (void)fprintf(stderr, -"usage: gbde attach destination [-k keyfile] [-l lockfile] [-p pass-phrase]\n" -" gbde detach destination\n" -" gbde init destination [-i] [-f filename] [-K new-keyfile]\n" -" [-L new-lockfile] [-P new-pass-phrase]\n" -" gbde setkey destination [-n key]\n" -" [-k keyfile] [-l lockfile] [-p pass-phrase]\n" -" [-K new-keyfile] [-L new-lockfile] [-P new-pass-phrase]\n" -" gbde nuke destination [-n key]\n" -" [-k keyfile] [-l lockfile] [-p pass-phrase]\n" -" gbde destroy destination [-k keyfile] [-l lockfile] [-p pass-phrase]\n"); - exit(1); -} - -void * -g_read_data(struct g_consumer *cp, off_t offset, off_t length, int *error) -{ - void *p; - int fd, i; - off_t o2; - - p = malloc(length); - if (p == NULL) - err(1, "malloc"); - fd = *(int *)cp; - o2 = lseek(fd, offset, SEEK_SET); - if (o2 != offset) - err(1, "lseek"); - i = read(fd, p, length); - if (i != length) - err(1, "read"); - if (error != NULL) - error = 0; - return (p); -} - -static void -random_bits(void *p, u_int len) -{ - arc4random_buf(p, len); -} - -/* XXX: not nice */ -static u_char sha2[SHA512_DIGEST_LENGTH]; - -static void -reset_passphrase(struct g_bde_softc *sc) -{ - - memcpy(sc->sha2, sha2, SHA512_DIGEST_LENGTH); -} - -static void -setup_passphrase(struct g_bde_softc *sc, int sure, const char *input, - const char *keyfile) -{ - char buf1[BUFSIZ + SHA512_DIGEST_LENGTH]; - char buf2[BUFSIZ + SHA512_DIGEST_LENGTH]; - char *p; - int kfd, klen, bpos = 0; - - if (keyfile != NULL) { - /* Read up to BUFSIZ bytes from keyfile */ - kfd = open(keyfile, O_RDONLY, 0); - if (kfd < 0) - err(1, "%s", keyfile); - klen = read(kfd, buf1, BUFSIZ); - if (klen == -1) - err(1, "%s", keyfile); - close(kfd); - - /* Prepend the passphrase with the hash of the key read */ - g_bde_hash_pass(sc, buf1, klen); - memcpy(buf1, sc->sha2, SHA512_DIGEST_LENGTH); - memcpy(buf2, sc->sha2, SHA512_DIGEST_LENGTH); - bpos = SHA512_DIGEST_LENGTH; - } - - if (input != NULL) { - if (strlen(input) >= BUFSIZ) - errx(1, "Passphrase too long"); - strcpy(buf1 + bpos, input); - - g_bde_hash_pass(sc, buf1, strlen(buf1 + bpos) + bpos); - memcpy(sha2, sc->sha2, SHA512_DIGEST_LENGTH); - return; - } - for (;;) { - p = readpassphrase( - sure ? "Enter new passphrase:" : "Enter passphrase: ", - buf1 + bpos, sizeof buf1 - bpos, - RPP_ECHO_OFF | RPP_REQUIRE_TTY); - if (p == NULL) - err(1, "readpassphrase"); - - if (sure) { - p = readpassphrase("Reenter new passphrase: ", - buf2 + bpos, sizeof buf2 - bpos, - RPP_ECHO_OFF | RPP_REQUIRE_TTY); - if (p == NULL) - err(1, "readpassphrase"); - - if (strcmp(buf1 + bpos, buf2 + bpos)) { - printf("They didn't match.\n"); - continue; - } - } - if (strlen(buf1 + bpos) < 3) { - printf("Too short passphrase.\n"); - continue; - } - break; - } - g_bde_hash_pass(sc, buf1, strlen(buf1 + bpos) + bpos); - memcpy(sha2, sc->sha2, SHA512_DIGEST_LENGTH); -} - -static void -encrypt_sector(void *d, int len, int klen, void *key) -{ - keyInstance ki; - cipherInstance ci; - int error; - - error = rijndael_cipherInit(&ci, MODE_CBC, NULL); - if (error <= 0) - errx(1, "rijndael_cipherInit=%d", error); - error = rijndael_makeKey(&ki, DIR_ENCRYPT, klen, key); - if (error <= 0) - errx(1, "rijndael_makeKeY=%d", error); - error = rijndael_blockEncrypt(&ci, &ki, d, len * 8, d); - if (error <= 0) - errx(1, "rijndael_blockEncrypt=%d", error); -} - -static void -cmd_attach(const struct g_bde_softc *sc, const char *dest, const char *lfile) -{ - int ffd; - u_char buf[16]; - struct gctl_req *r; - const char *errstr; - - r = gctl_get_handle(); - gctl_ro_param(r, "verb", -1, "create geom"); - gctl_ro_param(r, "class", -1, "BDE"); - gctl_ro_param(r, "provider", -1, dest); - gctl_ro_param(r, "pass", SHA512_DIGEST_LENGTH, sc->sha2); - if (lfile != NULL) { - ffd = open(lfile, O_RDONLY, 0); - if (ffd < 0) - err(1, "%s", lfile); - read(ffd, buf, 16); - gctl_ro_param(r, "key", 16, buf); - close(ffd); - } - errstr = gctl_issue(r); - if (errstr != NULL) - errx(1, "Attach to %s failed: %s", dest, errstr); - - exit (0); -} - -static void -cmd_detach(const char *dest) -{ - struct gctl_req *r; - const char *errstr; - char buf[BUFSIZ]; - - r = gctl_get_handle(); - gctl_ro_param(r, "verb", -1, "destroy geom"); - gctl_ro_param(r, "class", -1, "BDE"); - sprintf(buf, "%s.bde", dest); - gctl_ro_param(r, "geom", -1, buf); - /* gctl_dump(r, stdout); */ - errstr = gctl_issue(r); - if (errstr != NULL) - errx(1, "Detach of %s failed: %s", dest, errstr); - exit (0); -} - -static void -cmd_open(struct g_bde_softc *sc, int dfd , const char *l_opt, u_int *nkey) -{ - int error; - int ffd; - u_char keyloc[16]; - u_int sectorsize; - off_t mediasize; - struct stat st; - - error = ioctl(dfd, DIOCGSECTORSIZE, §orsize); - if (error) - sectorsize = 512; - error = ioctl(dfd, DIOCGMEDIASIZE, &mediasize); - if (error) { - error = fstat(dfd, &st); - if (error == 0 && S_ISREG(st.st_mode)) - mediasize = st.st_size; - else - error = ENOENT; - } - if (error) - mediasize = (off_t)-1; - if (l_opt != NULL) { - ffd = open(l_opt, O_RDONLY, 0); - if (ffd < 0) - err(1, "%s", l_opt); - read(ffd, keyloc, sizeof keyloc); - close(ffd); - } else { - memset(keyloc, 0, sizeof keyloc); - } - - error = g_bde_decrypt_lock(sc, sc->sha2, keyloc, mediasize, - sectorsize, nkey); - if (error == ENOENT) - errx(1, "Lock was destroyed."); - if (error == ESRCH) - errx(1, "Lock was nuked."); - if (error == ENOTDIR) - errx(1, "Lock not found"); - if (error != 0) - errx(1, "Error %d decrypting lock", error); - if (nkey) - printf("Opened with key %u\n", 1 + *nkey); - return; -} - -static void -cmd_nuke(struct g_bde_key *gl, int dfd , int key) -{ - int i; - u_char *sbuf; - off_t offset, offset2; - - sbuf = malloc(gl->sectorsize); - memset(sbuf, 0, gl->sectorsize); - offset = (gl->lsector[key] & ~(gl->sectorsize - 1)); - offset2 = lseek(dfd, offset, SEEK_SET); - if (offset2 != offset) - err(1, "lseek"); - i = write(dfd, sbuf, gl->sectorsize); - free(sbuf); - if (i != (int)gl->sectorsize) - err(1, "write"); - printf("Nuked key %d\n", 1 + key); -} - -static void -cmd_write(struct g_bde_key *gl, struct g_bde_softc *sc, int dfd , int key, const char *l_opt) -{ - int i, ffd; - uint64_t off[2]; - u_char keyloc[16]; - u_char *sbuf, *q; - off_t offset, offset2; - - sbuf = malloc(gl->sectorsize); - /* - * Find the byte-offset in the lock sector where we will put the lock - * data structure. We can put it any random place as long as the - * structure fits. - */ - for(;;) { - random_bits(off, sizeof off); - off[0] &= (gl->sectorsize - 1); - if (off[0] + G_BDE_LOCKSIZE > gl->sectorsize) - continue; - break; - } - - /* Add the sector offset in bytes */ - off[0] += (gl->lsector[key] & ~(gl->sectorsize - 1)); - gl->lsector[key] = off[0]; - - i = g_bde_keyloc_encrypt(sc->sha2, off[0], off[1], keyloc); - if (i) - errx(1, "g_bde_keyloc_encrypt()"); - if (l_opt != NULL) { - ffd = open(l_opt, O_WRONLY | O_CREAT | O_TRUNC, 0600); - if (ffd < 0) - err(1, "%s", l_opt); - write(ffd, keyloc, sizeof keyloc); - close(ffd); - } else if (gl->flags & GBDE_F_SECT0) { - offset2 = lseek(dfd, 0, SEEK_SET); - if (offset2 != 0) - err(1, "lseek"); - i = read(dfd, sbuf, gl->sectorsize); - if (i != (int)gl->sectorsize) - err(1, "read"); - memcpy(sbuf + key * 16, keyloc, sizeof keyloc); - offset2 = lseek(dfd, 0, SEEK_SET); - if (offset2 != 0) - err(1, "lseek"); - i = write(dfd, sbuf, gl->sectorsize); - if (i != (int)gl->sectorsize) - err(1, "write"); - } else { - errx(1, "No -L option and no space in sector 0 for lockfile"); - } - - /* Allocate a sectorbuffer and fill it with random junk */ - if (sbuf == NULL) - err(1, "malloc"); - random_bits(sbuf, gl->sectorsize); - - /* Fill random bits in the spare field */ - random_bits(gl->spare, sizeof(gl->spare)); - - /* Encode the structure where we want it */ - q = sbuf + (off[0] % gl->sectorsize); - i = g_bde_encode_lock(sc->sha2, gl, q); - if (i < 0) - errx(1, "programming error encoding lock"); - - encrypt_sector(q, G_BDE_LOCKSIZE, 256, sc->sha2 + 16); - offset = gl->lsector[key] & ~(gl->sectorsize - 1); - offset2 = lseek(dfd, offset, SEEK_SET); - if (offset2 != offset) - err(1, "lseek"); - i = write(dfd, sbuf, gl->sectorsize); - if (i != (int)gl->sectorsize) - err(1, "write"); - free(sbuf); -#if 0 - printf("Wrote key %d at %jd\n", key, (intmax_t)offset); - printf("s0 = %jd\n", (intmax_t)gl->sector0); - printf("sN = %jd\n", (intmax_t)gl->sectorN); - printf("l[0] = %jd\n", (intmax_t)gl->lsector[0]); - printf("l[1] = %jd\n", (intmax_t)gl->lsector[1]); - printf("l[2] = %jd\n", (intmax_t)gl->lsector[2]); - printf("l[3] = %jd\n", (intmax_t)gl->lsector[3]); - printf("k = %jd\n", (intmax_t)gl->keyoffset); - printf("ss = %jd\n", (intmax_t)gl->sectorsize); -#endif -} - -static void -cmd_destroy(struct g_bde_key *gl, int nkey) -{ - int i; - - bzero(&gl->sector0, sizeof gl->sector0); - bzero(&gl->sectorN, sizeof gl->sectorN); - bzero(&gl->keyoffset, sizeof gl->keyoffset); - gl->flags &= GBDE_F_SECT0; - bzero(gl->mkey, sizeof gl->mkey); - for (i = 0; i < G_BDE_MAXKEYS; i++) - if (i != nkey) - gl->lsector[i] = ~0; -} - -static int -sorthelp(const void *a, const void *b) -{ - const uint64_t *oa, *ob; - - oa = a; - ob = b; - if (*oa > *ob) - return 1; - if (*oa < *ob) - return -1; - return 0; -} - -static void -cmd_init(struct g_bde_key *gl, int dfd, const char *f_opt, int i_opt, const char *l_opt) -{ - int i; - u_char *buf; - unsigned sector_size; - uint64_t first_sector; - uint64_t last_sector; - uint64_t total_sectors; - off_t off, off2; - unsigned nkeys; - const char *p; - char *q, cbuf[BUFSIZ]; - unsigned u, u2; - uint64_t o; - properties params; - - bzero(gl, sizeof *gl); - if (f_opt != NULL) { - i = open(f_opt, O_RDONLY); - if (i < 0) - err(1, "%s", f_opt); - params = properties_read(i); - close (i); - } else if (i_opt) { - /* XXX: Polish */ - asprintf(&q, "%stemp.XXXXXXXXXX", _PATH_TMP); - if (q == NULL) - err(1, "asprintf"); - i = mkstemp(q); - if (i < 0) - err(1, "%s", q); - write(i, template, strlen(template)); - close (i); - p = getenv("EDITOR"); - if (p == NULL) - p = "vi"; - if (snprintf(cbuf, sizeof(cbuf), "%s %s\n", p, q) >= - (ssize_t)sizeof(cbuf)) { - unlink(q); - errx(1, "EDITOR is too long"); - } - system(cbuf); - i = open(q, O_RDONLY); - if (i < 0) - err(1, "%s", f_opt); - params = properties_read(i); - close (i); - unlink(q); - free(q); - } else { - /* XXX: Hack */ - i = open(_PATH_DEVNULL, O_RDONLY); - if (i < 0) - err(1, "%s", _PATH_DEVNULL); - params = properties_read(i); - close (i); - } - - /* */ - p = property_find(params, "sector_size"); - i = ioctl(dfd, DIOCGSECTORSIZE, &u); - if (p != NULL) { - sector_size = strtoul(p, &q, 0); - if (!*p || *q) - errx(1, "sector_size not a proper number"); - } else if (i == 0) { - sector_size = u; - } else { - errx(1, "Missing sector_size property"); - } - if (sector_size & (sector_size - 1)) - errx(1, "sector_size not a power of 2"); - if (sector_size < 512) - errx(1, "sector_size is smaller than 512"); - buf = malloc(sector_size); - if (buf == NULL) - err(1, "Failed to malloc sector buffer"); - gl->sectorsize = sector_size; - - i = ioctl(dfd, DIOCGMEDIASIZE, &off); - if (i == 0) { - first_sector = 0; - total_sectors = off / sector_size; - last_sector = total_sectors - 1; - } else { - first_sector = 0; - last_sector = 0; - total_sectors = 0; - } - - /* */ - p = property_find(params, "first_sector"); - if (p != NULL) { - first_sector = strtoul(p, &q, 0); - if (!*p || *q) - errx(1, "first_sector not a proper number"); - } - - /* */ - p = property_find(params, "last_sector"); - if (p != NULL) { - last_sector = strtoul(p, &q, 0); - if (!*p || *q) - errx(1, "last_sector not a proper number"); - if (last_sector <= first_sector) - errx(1, "last_sector not larger than first_sector"); - total_sectors = last_sector + 1; - } - - /* */ - p = property_find(params, "total_sectors"); - if (p != NULL) { - total_sectors = strtoul(p, &q, 0); - if (!*p || *q) - errx(1, "total_sectors not a proper number"); - if (last_sector == 0) - last_sector = first_sector + total_sectors - 1; - } - - if (l_opt == NULL && first_sector != 0) - errx(1, "No -L new-lockfile argument and first_sector != 0"); - else if (l_opt == NULL) { - first_sector++; - total_sectors--; - gl->flags |= GBDE_F_SECT0; - } - gl->sector0 = first_sector * gl->sectorsize; - - if (total_sectors != (last_sector - first_sector) + 1) - errx(1, "total_sectors disagree with first_sector and last_sector"); - if (total_sectors == 0) - errx(1, "missing last_sector or total_sectors"); - - gl->sectorN = (last_sector + 1) * gl->sectorsize; - - /* Find a random keyoffset */ - random_bits(&o, sizeof o); - o %= (gl->sectorN - gl->sector0); - o &= ~(gl->sectorsize - 1); - gl->keyoffset = o; - - /* */ - p = property_find(params, "number_of_keys"); - if (p != NULL) { - nkeys = strtoul(p, &q, 0); - if (!*p || *q) - errx(1, "number_of_keys not a proper number"); - if (nkeys < 1 || nkeys > G_BDE_MAXKEYS) - errx(1, "number_of_keys out of range"); - } else { - nkeys = 4; - } - for (u = 0; u < nkeys; u++) { - for(;;) { - do { - random_bits(&o, sizeof o); - o %= gl->sectorN; - o &= ~(gl->sectorsize - 1); - } while(o < gl->sector0); - for (u2 = 0; u2 < u; u2++) - if (o == gl->lsector[u2]) - break; - if (u2 < u) - continue; - break; - } - gl->lsector[u] = o; - } - for (; u < G_BDE_MAXKEYS; u++) { - do - random_bits(&o, sizeof o); - while (o < gl->sectorN); - gl->lsector[u] = o; - } - qsort(gl->lsector, G_BDE_MAXKEYS, sizeof gl->lsector[0], sorthelp); - - /* Flush sector zero if we use it for lockfile data */ - if (gl->flags & GBDE_F_SECT0) { - off2 = lseek(dfd, 0, SEEK_SET); - if (off2 != 0) - err(1, "lseek(2) to sector 0"); - random_bits(buf, sector_size); - i = write(dfd, buf, sector_size); - if (i != (int)sector_size) - err(1, "write sector 0"); - } - - /* */ - p = property_find(params, "random_flush"); - if (p != NULL) { - off = first_sector * sector_size; - off2 = lseek(dfd, off, SEEK_SET); - if (off2 != off) - err(1, "lseek(2) to first_sector"); - off2 = last_sector * sector_size; - while (off <= off2) { - random_bits(buf, sector_size); - i = write(dfd, buf, sector_size); - if (i != (int)sector_size) - err(1, "write to $device_name"); - off += sector_size; - } - } - - random_bits(gl->mkey, sizeof gl->mkey); - random_bits(gl->salt, sizeof gl->salt); - - return; -} - -static enum action { - ACT_HUH, - ACT_ATTACH, ACT_DETACH, - ACT_INIT, ACT_SETKEY, ACT_DESTROY, ACT_NUKE -} action; - -int -main(int argc, char **argv) -{ - const char *opts; - const char *k_opt, *K_opt; - const char *l_opt, *L_opt; - const char *p_opt, *P_opt; - const char *f_opt; - char *dest; - int i_opt, n_opt, ch, dfd, doopen; - u_int nkey; - int i; - char *q, buf[BUFSIZ]; - struct g_bde_key *gl; - struct g_bde_softc sc; - - fprintf(stderr, "GBDE disk-encryption is deprecated,\n"); - fprintf(stderr, "and will be removed in FreeBSD 15.0\n"); - fprintf(stderr, "(continuing in 5 seconds)\n"); - sleep(5); - - if (argc < 3) - usage(); - - if (modfind("g_bde") < 0) { - /* need to load the gbde module */ - if (kldload(GBDEMOD) < 0 || modfind("g_bde") < 0) - err(1, GBDEMOD ": Kernel module not available"); - } - doopen = 0; - if (!strcmp(argv[1], "attach")) { - action = ACT_ATTACH; - opts = "k:l:p:"; - } else if (!strcmp(argv[1], "detach")) { - action = ACT_DETACH; - opts = ""; - } else if (!strcmp(argv[1], "init")) { - action = ACT_INIT; - doopen = 1; - opts = "f:iK:L:P:"; - } else if (!strcmp(argv[1], "setkey")) { - action = ACT_SETKEY; - doopen = 1; - opts = "k:K:l:L:n:p:P:"; - } else if (!strcmp(argv[1], "destroy")) { - action = ACT_DESTROY; - doopen = 1; - opts = "k:l:p:"; - } else if (!strcmp(argv[1], "nuke")) { - action = ACT_NUKE; - doopen = 1; - opts = "k:l:n:p:"; - } else { - usage(); - } - argc--; - argv++; - - dest = strdup(argv[1]); - argc--; - argv++; - - p_opt = NULL; - P_opt = NULL; - k_opt = NULL; - K_opt = NULL; - l_opt = NULL; - L_opt = NULL; - f_opt = NULL; - n_opt = 0; - i_opt = 0; - - while((ch = getopt(argc, argv, opts)) != -1) - switch (ch) { - case 'f': - f_opt = optarg; - break; - case 'i': - i_opt = !i_opt; - break; - case 'k': - k_opt = optarg; - break; - case 'K': - K_opt = optarg; - break; - case 'l': - l_opt = optarg; - break; - case 'L': - L_opt = optarg; - break; - case 'n': - n_opt = strtoul(optarg, &q, 0); - if (!*optarg || *q) - errx(1, "-n argument not numeric"); - if (n_opt < -1 || n_opt > G_BDE_MAXKEYS) - errx(1, "-n argument out of range"); - break; - case 'p': - p_opt = optarg; - break; - case 'P': - P_opt = optarg; - break; - default: - usage(); - } - - if (doopen) { - dfd = open(dest, O_RDWR); - if (dfd < 0 && dest[0] != '/') { - if (snprintf(buf, sizeof(buf), "%s%s", - _PATH_DEV, dest) >= (ssize_t)sizeof(buf)) - errno = ENAMETOOLONG; - else - dfd = open(buf, O_RDWR); - } - if (dfd < 0) - err(1, "%s", dest); - } else { - if (!memcmp(dest, _PATH_DEV, strlen(_PATH_DEV))) - strcpy(dest, dest + strlen(_PATH_DEV)); - } - - memset(&sc, 0, sizeof sc); - sc.consumer = (void *)&dfd; - gl = &sc.key; - switch(action) { - case ACT_ATTACH: - setup_passphrase(&sc, 0, p_opt, k_opt); - cmd_attach(&sc, dest, l_opt); - break; - case ACT_DETACH: - cmd_detach(dest); - break; - case ACT_INIT: - cmd_init(gl, dfd, f_opt, i_opt, L_opt); - setup_passphrase(&sc, 1, P_opt, K_opt); - cmd_write(gl, &sc, dfd, 0, L_opt); - break; - case ACT_SETKEY: - setup_passphrase(&sc, 0, p_opt, k_opt); - cmd_open(&sc, dfd, l_opt, &nkey); - if (n_opt == 0) - n_opt = nkey + 1; - setup_passphrase(&sc, 1, P_opt, K_opt); - cmd_write(gl, &sc, dfd, n_opt - 1, L_opt); - break; - case ACT_DESTROY: - setup_passphrase(&sc, 0, p_opt, k_opt); - cmd_open(&sc, dfd, l_opt, &nkey); - cmd_destroy(gl, nkey); - reset_passphrase(&sc); - cmd_write(gl, &sc, dfd, nkey, l_opt); - break; - case ACT_NUKE: - setup_passphrase(&sc, 0, p_opt, k_opt); - cmd_open(&sc, dfd, l_opt, &nkey); - if (n_opt == 0) - n_opt = nkey + 1; - if (n_opt == -1) { - for(i = 0; i < G_BDE_MAXKEYS; i++) - cmd_nuke(gl, dfd, i); - } else { - cmd_nuke(gl, dfd, n_opt - 1); - } - break; - default: - errx(1, "internal error"); - } - - return(0); -} diff --git a/sbin/gbde/image.uu b/sbin/gbde/image.uu deleted file mode 100644 index 1c06d84f1e45..000000000000 --- a/sbin/gbde/image.uu +++ /dev/null @@ -1,3304 +0,0 @@ - -begin 644 gbde.image.bz2 -M0EIH.3%!629364"&9H\`Y1=_____________________________________ -M________X7"_"W7I7N^[5>OM;NXTY!ZK'VZ]]MS?=??>>OM=[?/I-WMSSFM; -MO>[&RU[OMNKV=>\:^>K>]N;5WN];V*7F[O6[[[>G;WWRKZ]ZK7?7UZ7=[WN= -M[?<5WWR[97V[M=U[>UAYYW'WNW<^^WUM??7U]UZ=>MZ?7KOOK[;WM[O>]'O; -MKWU?;[Z^=*YZYNLNKYQ7KWO=Z]W.>OOO/HR>KV^N>L]>>Z\O;ZWWN[O=IOK* -MT]>WUUS=V]:Y+[/OON]>[?9[GWS>][OK27KI]UK.N]]]WOJW=URR]L[[LU>\ -M77VSN]YM\]Z*]NW>S[GWONYONZ^[SI>^^YWN[6Z^YUF:Y]Z^[[=]=\NNY]Y; -MO>^NEW>S=GGKW>^^[;?.[[7?;[?'7N.^YZ^UW/K[VY./:N\M]S:]WWV>^I>W -M./3MVW>]GKR^]5K-=GG>^\MW'NWO>^^]?/7O7WO/?;O7UU[O?=]OO=<9@7V] -M<\V=W5OOMS7>;[[Z^O/OO=ES[>7VON]Z^WE>]OI\^]ZE??+,[WG5FW33V;4/ -M:]O-[M:SUWWOENY[S*]>[/0]]O!=];G>MWEGOO:MW>K?7NW6NVHO6NMWOJ\^ -MOO?;K;UUM;>VV:Z>YV]T]ON9MCWGMN[WGNCWWW=[Z[5/O?5=??;WINOMG>TO -MO+??;U?;XS=]VK;UYYYSNOGWO/I[WTT=KV[JI[:]]WU[?:NFNO=W>GNZ] -MFV]W>WGJ+S;OO>T=+Q[7UP[WKNOHR;C>M5?=SMNU==O>Y3[[?55WW;U\\U>= -M[>^;NUU?5VNWGON^^>W3ZUKNNN[-WW>NVC4\QUO;N&77;>W>>=\Y].^^[[=] -MZWW?;YTJ]BFW??=O3M[V[[Z^=Y?>^\L];;O?/OM\]MON[N.]Y[KSV[PWN]W= -M+ZK=]/M]SO>]GN^[>]O??=U-Z=[OGWMQ][ZP3[[;OK[V=]W?:ZZ^]>]SO`.) -M[?7>[=U7O>OOOEM]]W=?>VUE:-;,ON]Y][O5V^^][OK[[[V]Y]WVV]M>@Z.V -M?7OFU\???=[[E=WM-/MRV/.9MJ)6>[[UMNWSOGQ]?/ON>]]OGE/'K;?=J[ZU -M]?9=U\[OENZ[A[M[O.2]U[OYW(^?;[?;S[)OO=][SV8O?WW9:WUWWWOGN>^^]/? -M7GK>7N5[VRSYNVIWVU>YNU;KSP9=9][+;[VOMMZ^^C[WO?.GIWJ^NN^ON]WN -M[V]OO;Z^J[UMNOGFN[WM4]>OO=UVOM]X8]MNO>\9&^N^WU]WG;CJ[NMW=O8. -MZ5?9U?==R^;?6N]O>M:VUF]N]N[,VY'K*WSW=XZN[O>K[M\Z:?7>][IUK%[= -MV.]N[O6O?77=OIWMFGOG>:?.^YWWS[SX5>ON^VY]3WW=[K[7O6^^]?7>M]\V -M/1TDZVWF[U>[IO;"[[NVR]:]GKWON^\S'>]]=O/?>W>K[[O> -M6O7K[V^CO/NUY?=U[O/7GSVKG;[OJX^[S?=;W5TSO>[Z^USMN[O?=WWVUZWN -MWNS[[O>];KQE>MWS:US8^[=[ZWM>G??/=>^9W=?;OO'CW;[[X'S/ -M!51*I_@`)@```-)@`$P`F`3`3``5/P`F``3`T-!IH:#30R!IH%-@!,$TP``$ -MP3`)B8)@C$P*HA53_P`$P``````````!4_#0,0#0#0T-`T``)@`!#``E3_3! -M38`"&```F``3```542J?X`!,"8`3`F`&1HT9!IH,AB-"8`3$R,`)@$P``3)A -M-,3)@$R8"9J4_31@3"8%/``3`3``&@*H90TR&@T#0#$:9-&A,!,3`)@`$PF` -M$:81FB:8``F``)B8`3*>!&3`1B81IDP3``!,IX!,J?J>`":4["(B(J@C``(@`"(``!)"$G*%(@"(`B`(B(B`(C\C`(@1&1`$1$``1$1$`1/OL -MKOMIH+QS3GG]CAF%<+B]I?#`V7-_"-Y#LDSH9(@]7VLR`[HWF)TW`6KW'/:[ -M(XX%BKB][$SP'KU?K:_(1N9_H^2@JA3P.J%L@];AP_!DU0#Q+M]J`25MW8VF -M*XL679-BSK:$@%7+58\#PQMY/2W?@M+-W)\E?]B$TIE`=%,17/[11-(;\I/# -M3K0@:YL-M_DJH(H!9LQB\>C6A#Z#2)'V&%ST*32:^<7Z,WD!2Y^/JR(;=ORJ -M>,<*PVQ,R&#QC8-[$9MU[)EC?'-!R@=(2:X0\CG?++DK!YO[LOU*6-G(56S[ -MML*@CU_P?SNY*I`D2CK+X+*[&5,NIT^H*%`ZF8Q<'K7)XIWZ8=1A[<' -M;TS"6Q^U[E3BL90'SR0^'D=A@&E@R::PDR3?^0@H869KI`T;Z3$XA/LY\]1E -M/C0"&C\V"&S3KB$?U0>XUFH\Q[N+OQNKX'*LW]*#OQ -MPCD->$>?-13U@8#8*D.'R)W#N8IFE^^*R@S%:&O"R%#-'W?!YNM3N5PZ` -M/#!F3E9,(+E-0&:61NBQ11&;HL-7T,4#Z:MA]`E:==_$3](_^+,-FT4#KAN+ -MBE/&6*K[.Y6IUY,+C%C*7"\Z&7P!BW("$L:%`G#&'-[R2,L8NQD^'8NKDO6%V-S] -M.XJ9#YRP6=JD;F2*J'B=3QEU]OH\;!N7\Q_OE"0`"(B``(B(B`(D-T3;PKMS -ME!5Z$Y68,"-/Q>PAYR72R[0T3+!9,F9+<[0LJ,'K!]IX"V'V63B#J53F7=OS`#2?&W!1[9G`*'&?SYV2N -MW5W]E$!P+VH9'#BZ;8[/'<$>1S4//EG80Q8;"06GUQ=I<,]Y7D(7FTGIUAK$E9@ -MG$JE)3V?>1[&:XGBU&L)E>&W&XYK%=/0]20P38X^,$3A/B+Y`![Z4:ZJ_RZ3 -M5O9QO4@7/4:,]*_@!XU8;!W>8B]V%ZATFI*&3JQU@A;8*IW`S;E&3A9=#W.J -M`H@5MZ#+DN\BXYH.2C>"<% -MJF?>2G6_7\\@-/$FU7[5XKM.7&U+XO\E7\+V$,8:`K'Q&"(^ZA[8'4*!.B=9 -M_TQ@Z596F1WTPA:,40MQ5CS*H;5H21VQS6@9P$^U;$\D=LR-1HU^42O(>K+J -M:L@X=VR&SWEZ=!Z.]1PX^+V[E>F>=!PSK.#KV'"G^,MUMU;(HF:QL+H*ZR(TM"9V,/*)3X+*%=HLY<)W^`#[H(PPH($?;XL0)TC##3VW2WP(S!3X5H#\($, -M%2D%>[/>W\9=))4F[$:]V]J?9X@\OUKEG;3272J_R(T:R##2:"L;O -M2"SKT7P)Z9$@T"?1B4<_JD--\(C4:'3+J>($7XU]F1[G8;U!R)]'8+M/WAYV -M=TSANI97]6K?,&AG`GA(6*M,JV:*BL<25%3%@Q?0K8E>0Y:U,MY$"J0WSD6M -MB;C;W[A*5#-WKZ -M^4*GD`WKYL[5FCI)Q-KE -MV\Q\2*G9'!?`BX'Q2.:J*%%LRJ6?D#\-)>B>NA7!,I0#4C-)7J6Z#7YF@L*C -M]KEA9^]?J]LJ'.H-P>\ZY,8RA\7=_197H'F'?-*@VIJ4&-\)4U#613H+]^6-I6%=O:V -MCO7^I];_E<=Q,7U\WB_KZJ>+K2SR`FAD/D$RN'675:N`\RWP\()^OKK():JT -MB-E5L,!,=,GS;)@YE?/^^C[V1V_@"Z.P033VJ*^A!AE5Q_QVMTI'=[0Y^K5E -MA^`0E>6=>&9X=>"XH>%8M6TT2.A_S::_D'=^LWN6.9\UAA,\J7;C//PJ]C)^ -M:\;1(O$K-4W@@=DVC2^'C'U-545^#=I*P.58$+T"G9 -M?LE2U\W^6`M;5C&^]2S'&$)=V502NFDJF^HF'35 -M.\%4(M+Y.VMX)OW?Q1\?-M@8V^L!?6D2M6!SI5*!^A$6L"^"^]L5Z"9E#XI1 -MA=-5"CIK7Q=2/A/V83`RIEWD-TV2!DX^H_U"@MYZC(:O=;W;L>9O=%W=>#U4 -MZ]L=2H3_W"N..'ZVK.^%FCDG?!F8S%$\2HO -M?IY+618!N;^FV85%.C0.Q3A+1=ZS+U<(O&G2:!=;$'SW;Y9B$$7<<^.$P-_2 -M92+RQZM'_`>12>R'1@N72M-XF -M`8J+I5'F*J(75:2GKH]V&^!LX--5ZXQ20I:+ZK)9>/=SC,IRG7JU#6N/C)Y< -MS=Q(T2=4+T>T_O`JEA6JWN"8!+^))2+?432]+))3O"3T&):8C2>Q&>V&J98. -MY9\\QVE%LKZC=O95UY)^AQW@X?!=]WC'""_B%8<[^TB\8X3#WQ!WI2\;+@L$ -M0HHMOQ)Z4X[[MP7=(>MNO`?E'K--#20D@$A&,;!(?.LDU'[7I91VV#_.BV[H -MP5,5RU@>O)>$[<#H$8V"V0&`T1&XA*F-$Q:5A\`.:-[2;/P6NMJLZ:3GP`/.Q.NE(*#:LAXJ4-99LT) -M-ID,,T/2_VS/4.TD%7-$RUDT;UFQFUKRFV7Z]C:E"-MM]6_QCH[T`7!S74 -M3YOR.*:#X;9I+O)J"G1=U].?[.YM3;VAGY&-70TI2(!G2K=RJ!>?AB'8:7_I -M/L+4I=?6%ULTFV**N3]#K$X5:9"ZEH-,/S;H-#S,1CQ.T-PJPDB3@#Z(VD]I -M]L("A/`:@7Q!?U>UG_@Z:/+Z#SN$E21[R')ZR,X<>",[`S'0FR["Y\^$\#SY""@M=04)(OCRT+42_7^ -MS&V]B&#`NB-KE\MW&),/\/DZCN(&PJ<>PL"M)$A1[GS"N9^)'BI&VQ-)9W?IK,$>N,[K[$)--3"Q<^7"S2V -M5P5=BK%%/JC62*6F[)8%2*; -MXTE-2&)%]LADS\D\_KUW/UQ+4Y3C'YJ@V0>&D?'%&B/["^4C0FWE;+:I:;MPNK:;1/ -MV6=(0V`+H%>:KN%*F>R!F3IRS8%6)8[O17E<>]-/@.$[!-4]>,)Z:>GFGU#2 -M5O_)=\5B*[(0?ZV1$EYRT^J%P'Q;-WLC^TMI[=)=$!$XY^`K0GV6@A+QGM]Z -MQ1;,"[0'!97SB_'S/B[Y>;<50/2&/J*6_AW;0A8&RP?SG[/R`]A?7K`$P5D\ -MKC,M.O(*M3/6MB_FL\<"?II+/35,(Q+X^TJV\NJ*QZ?]^IF3JGH='PB!?H8_ -MM!3FR=HN>P1C;8%NY]W2@%&AQ"9L:9_]0E'\8KOI\7RG8/5\/FHH8N,%#4O\ -MWES>AS5&N!J@/#L:M`)C;6A'!=FC_,W#.<&^R&Z+"`GQT2?K(#KS(L+`Y?)K -MCP#?C;'2>1&L'G=!`EMUUAH'[&J9K#BVC>6#G[E0T)#7PRV9=7O\*"Z3A;' -M/K^8T"YBF15.'XV)EZ)%!TTY@$42I8=RY5RV.6]L<_`]T8'"9LQ1+AIV -M_ET<\KE*G31(1NQS?#W+0R%\EW$P+ -M(;40NK"#=5#>_2J(RP,/;`>8L.=YPK,`LJS.M7TL=`[)HJ4->?>A(,V)$1P; -MC?&;M^C;OS"EIG3EUZRI*'ZE1[6^3G2")'U(1B9%@%O^^@%.&T`@.A,67:O$ -M?U`PSK,E%-M+JN?K/[U=_$HI.8,%8SO0=;HJW?+L^+%5PS8!S"\D<%&/@,"% -M_3:!O6-*4)GKFTTEFN87$H1)/QB>.;=\9D(.JC#8'V55AZ'X2J\<5E#EH+-B9B/YUU[ -M_V/&"'D;YX%P6W699`7$F]`B9`'=+RR(,7E-T;S>%0C_:I;::@ZU>N!HV0C` -M$/N33[_WS19QN$(S`U&3H'L;U>_39M[HW4=SWESHD\NZ88-9BO6]U`#0"G!- -M_*I!W.PR&I"*#F;;1Y`"J4:XV:S`6$>8%M9='ONF`9-L6BA -MFD_(\4P\#V^J6\V;S'IJFU)7CIQJ?3UCD59)4THHV;4[),QJ(Y6#W8$)P-V7 -MO9^^38)Q9;U/Y`6A*?\E)05BC=M-(STFE@+^?)3(#DWZ']9CSJCL\^FYL5?, -MN)D<=^%(!YN60H%B1I+>?T.ZL#.9(CFRMO0V?6-P*!'?VL^V/'U=2NQL36X- -MJ0\E-_-IMVYNJ<]Y;D,F1"DX*3T=;+[/9L#=`ER34&`^:F%-F3O#D+Q -M$8:*^I38G_WTW]RN)H:"OPNC+.T7O32F\%G%)?+75LPM:$F4&)=![(&3&GO@ -M&FC(7;_IL@EH'Y@'K15QK<+IGBWKY=O7J\/08C6[B75=ZJXXIU233\^HS$5& -MSWI5H9.%.!^8018ZZ5T1>Q;3X"-<_\V;C!4V8=UI%_D<'-PBE@]9Y?-K6*9) -M?)9P(N&++8LPNNVC-:-\2&FNL>"4P#DU/TP&X')*>IL;T7$SA%R&0[PYR7P" -MT4WG)6?6BXNDA#R)2191XTUDG;<6QM.?Z>-O9+U6V*!L-8$(`&ISZ62I]PC3 -M.LNLY4=D4IKZ9LU5DCW17KK=B+F%#D(Y%YJF$T*)&`FN=POR'"+UNF=G -ME`B-F^ZU,6E^A1XZAA3-U?6QQ>)B1`'C%Q*<=@IM+LR>"4%)26\YRROK"S8= -M]E08V/V<59::9ZWMS`@_PE1>7-B+_RQV(F(\'(.R;$5:503.3Z2]@$[A_MM4 -MXO#;=A7H+RE\)((TJ[T4"9,(W-GY4&Y227=&CEE_XXAJ$O>%X):'^0?]V"%- -M"S_*HIT)3?"9QN%\LX>+5,C*!!"AKF0KGOB@H72HV<=K(+83-47Y$A9K\SC1 -M+9RD7,/]9!ADS"$&_-Y$07SVM#/Y6>]W$H@,Q_"`4`WPPHU!Y?MFGDUS@9I\ -M9SA/1=*;UR-IFYBFM33W%(?]L^U>-,9H]TP+Z-JP:5ZDA+ -MNC*8)=7)SQYJ5M;*NW^)>3862XJI[''?,)'ZGS%7R@KX/RI*;\3FJ3:`5-DDN?M\GQ:?` -MM&!="%>ULO1U;(\?_8I)+S"%8B_,Z,3:F&X*.V5-55?[$ZD`7PVN80)P=U3Y -M&@EHD0725=0VK:.,$'K!3592LBPUU#;80U7GW!\THD2-=%Y`?!7PQ? -M"UV1SI]&Q:`7IL8H3W&JZ$PIYD?W>*#I:3FJ^+O:,5WQ;)RY6M0$WMB86T]- -M)A3(#!>0BN,A?R+NW#=1P;[>!/(^F6'.=(:B]X_10T:U@X.ULJ;B1N*_->X/ -MG*#;,PE#\DUE?)=57*HC&N`M1#1;Z7@X8L949)[*!V$J_4.N*'A8L(V2KY&@ -M*?Q2'<+W^H'`L6),P90)?ZNGI7%G]!A!E7:\"ZNJDB*\J -M!^_4^"2K3LM'C4YNVL -M3KK4M',5@[SKX7;,=6I8V]URL>G3+J]<3?8U1T41GAFWG=>O$6-A%%1N>Y5' -MAA5C`OGFC&`.QO'K(!N/5TU0MTOS4!.@X6V=R<7+GPK$>/VUZ(]-N0 -M,!NU?9'H9B34VC116\#V/%?N3Y`AH8HQ=-.,1I_RY]?L29VQEC*!N0Q)@W"V -M7+ESQEL -MX'416G$O>>UK7J9&\,5/6M.7'1;=IQ,^;$'95%XPFEBHT35LGI6<5.B;1#O[ -MM^WBEM$5*.\1N5\32DU:I5LKE27E*7:9DIPU.XJ74&X3;N_U"FH[9G?:> -MA9EXYF[3NS,32%#UL?NNQ8"Q`MY?UJF\%B??OZN_6[8*<4OG&79=;@0_I2A; -M2A#4BWS5+!^O77#&<,BK":<5]B@VN!59?T_XU!4CR+8>N$"R/?-DT6E;>8;5 -M];61"409>??#$0J/*[R&+*>KU#1CHW%%P#/+,U;O/^[G!/C;H2)&-DWKB%?_ -MRP-7HAN8VZ=)(Y-?2MD9/WDO9BW_BI%BHE[^H6%52<6`WM[&_W^1(U/X9]`Z -MKC!MX(^Y)9(0:SJ?ZL<(D/#0'F$P<8SIC=`@!T%E+-.;E:&.>N]K'W73"A"I -MR/.5P"<_5,.H:%.EQ388AI2UPFI!PY1IHR^=2!A%[SJ[J<;A69C1<6RM-)_H -M$:ZC7*@"&/N<[R:DP8,X]=H7]7,A2F5$#O&?IP#A4OM$VYQ5<\G7SL76?!9):BS4GF[W>\\4`\@=5Y:\.AP?<+:_CSU-4]5CWV\I!I2Q;N> -M,"ACP/KL,G1GT;(I^A7F%'":\X+[+A/@:++ER/\WC$G6SHSS**)ND9-B:O[< -MW4O;4C)P1GAU6MV(JIII=C:MB?`2<2N<6P$0KT= -MC`FYE>3RU3582+[^_7_3!;QDZ(6-&:]L?EU7%_9&E&UUTXG@+;CU&6H5W%2X -M=,GAZ`VGO]>X2#BB44LM1J<^U=AJF65K\]FO1SAO'K4$4EH[:.7B*"<`V70/_=UFLQ]C#B0QU3["TN?P2R"2-=M[( -M%*YBR9;'=-^%_)KII?-BX(N^10+=9%]&1G<<(HY'LV4$;HGG!/NC2"K$EC%N -M]C/=\A?'F0YA-M)O8LN6?J2P+KC6!G\L/7,Y5J4_C!?F?6?(TNA -M1R-5"O8MN91<$R8HZ -MOJ/@?&,$DOIYK5T;GF;PDI=-'>HC`F"UKP*(@/K@.M,E\,D6EC<#B:"JT_%! -M,A-L>TQY"%[,J_YHRHO+3B=!ST^XY0.]CWT_4=4-GKF -M=GTS/Q%3405:P0^"WJ'BFDH#%0!*Q;+^0.NIX&SD7\=G#-8GJ@XI6K]\=J`? -ML4,6G>L$!MV_:DFC@91RW]9:B_.]LXAB+DVZ?:596RPY%D[6UQM6K?#'54GB -M=^*F6L/&LI=V#>RYKLYTB0G5K1>7MEQSQ$3$"OI1VBK?L^LQXKQ=MMLX)E`^ -MSXQYGCY4#`-B;<6?YGX5N;=J>X&U.R1_0Z:_X>Z8G&9KQN@V\Z`.5M7CHUZ& -M6X9-\%O1EH-#8XWHDJURS!*UL,6DQGV)I^E!S-/&GNG'[V#>=]%+`O;.\E_( -M\5A^%VS"=O:-]EJE(:GG-Q5LA)+=%;G4.,R%GBLP]"DW">Q*9#8NA>(.#L$[NN#4$[=%V6+ -MJA!"\+SH[+ZDS64G2Z:]\<4(`Z\WQV7_?5KC$,:U,*I.A93MU"5C*/3OWF^N -MY5U\4*=B69='G@U.ZU3-F=Y(9MH;D=;DKI.T7H.LHYK(;SFH#W2TGC&^^B`3?*)-]&XF0=FN];0\J]&`4,97O_^Y[FX\MA%0HO7ED*@!T-5KZ/='U\"BHX&"+Z-NO2J93U)*;0U21E=4)G(=6_*7)8/8$@;7^'@>6P5UE?77EBI[7G)Z#RWQ(:GOT.2=6PM53(JK/(Q5M+M5!+N2Z>[QLE^I"3" -M_GM*/%Q_[S?Y5NON&HH-OV)'R>YINM\W=PS'X?:Z\E![/ -MOYL=YW%4P6'[!B3&-[";FY5:/14I)DJJ^A`$W3?5M/>YVK89%I*,J9++%8[7 -M7,&!*/M?Z=EH"`GH7$[Q[02J8GJ1]+L)G2B):1C:T#BK0 -M34TOI/E<)@BM-$@W1XA;*UBN+SA%AS(6^Q>,,?W4)U+Z+L2S$`W$?]F-4"QK -MRVY!,@?+Z^7A;&:U?-025].,*NQ5ZU@HI&?1C05DM>#,%ZC<>>9C]3=K#4!! -M'Y0=%&]K)[S24Q9%KK)D6F%4LYZ#X2KVE^N''=$O>S=(91#VXEM9ECQUU7X4 -MK^?&$M^W,:%;&V$E[96O^`5^@UG12/.'/Y>SO(NE@RZUI!&D)3^;4A5J![=9 -MX'1^$AMTNB-?;(5*(4,PD1L(!K&KF3,MA.2\@_[@#GQL\ENC>@_1R138&`Z' -M'==(@&?K&Q`A!7J0#IE^A:\,)BONS0CT('>Y@BJL!1O6T%7;'U_V<+;$]R[V -M&_6I6T'[4EG-YR?-@R[4)/P.L99EXE-M6CRNB54_A?L\)4]Z'..=;^_YXH5W -MV=C0P`:34M3LSR.6,S&[F-6PB46=)PD2R_*Y+'5@H?$5IZ*QVI%[S*R1];4Z@DBAN_TBK41T.KK@4J=)H\UY#V -M,$2)3%_6+?)EJ@5M,-RTJ(O[U]!"$!5((LKP_7C;O_9"U0?T0G>\;*=F=W#2 -MFG".-87"3VM)<%>2%9F\;9L2W4L;/AN>TU#30W2?9V52QW+YV6*6Q"4TRU.W/9]%YP -M=UW030;';"VAH"P_D'Y0`FIF47UR1A9FN;IT1E#CU-,O0O9[2X"=VEF"=@TR -MO/RO)UQS"#RW3E]LD&RM8%_Z<$"&6+MX,8J(9KI;;YSZO&+1E[!K%/I?;07G -M6)^-X<2[+6\MS13DJUVQS*@6/!)/=?6<>XTDIBO;OG_P'43I/ICY^Q7G"K!A -MOT9WY#C`^*EO/,[19/DR+6'`',9DN5ZWC!;$;AHK8U;0=TYXM"E(VUR>:^#2 -MI;3.(Z#KJUBXJY?;C;2+C:(`Y]/X0_?;/YQX$7($DML/49 -MFK[-.9VW?6=!%D]U)'+RZ@_RB&]TSY_GZE5PKEWZUJ8M7FJ0Q[C`@+OONQ1; -M(S9Y`0&:[7#0%JP1H7C[/]QY=K;'Q58W/;Q/"=%>B/3H,2D\@0"Z9@5A;<4E -MK&@5()-DC(_^++-%Y#E&%]*WI!Z5;F`K)/T;=I7?W`D#P"VR.V="XAQ!WM,' -M4:N+:349^1U@8OYJ0`IU9-.PX=JYZ4S15FJ02L1XCDP%Z']O-'GIX1!1!?7^ -M]^.(G7/=FVS@GOPAD9U>O%U(#2HI$9FEOE\HA\D?/5ZTSO!]5( -MPA;N]FV3*FAY0Z1\OI\+_P3RT(5T&6&*)VF5V'/%"0QPPJJ"U\-=8LEWO53^=N4!NF3NUKJ -M[0#;QE-=]0X//Q+RD#??<^G]X1C)I)T]>_N_A$Q=U5J+I\"F&<9W-*L]_`Q) -M'(B3*:?B5U.JPV2)[%?)<,;R2^-0+;`\.J+7!Y-YX\9!*NV8'Q9J*7'9_R6U -M&2:T@O>J8#;L(8VFX3`WVU#`7`^>U1Z\PVGL*N1AGSK6KAGQF=$/SRV%[JF3 -M4[%NFI)56E26&-6JG1?VUV_1`AV`L'MCZ@]NG.V\7?P<I[I5)>87#&`^?`_!!5\QY9T>.XD3M>&SR -MPX#[.^L`<)(*CF;%G-Z9)-^X;H/_N7`\5GR0Y7E6!S-L-N+M_E)Y,]GVC/OJ -MUT/B<]A])X"H)?I+GF6`U]?1/6Q^Z-<#C[W#YN;],NK\^=^[ZY%&+Y)+%+5>W>FN4NR9 -M9=MG,5OAW0"YK?E -M/W^3T%LN36+..5I:3Z*!Y0&T5?U&%*:$Q=@X>X7\,BL:9FMAZW$`*<0NH'ZJV?JU-T$6[ -MQ)>$N%)=:V6;9TDFRV:X&BZHHC2.?C&BZS@::&-<_^AXX_1)=Z!B.+N#R4/P -MUEBK7%7YO2D)K(G+$U2J/*V8<@+7CN2N="C*$H^<$VU_$WN^CN` -M,%02KL,@#E2IBC&S,K.JX[;O.4]U>1Y(:++2F+73F&)1H)B]6]\BW(5-Y]`* -M5:XOXM4&G^^&&,:4/3OMQ&(=/-RF]BJ\<4L!(W&O"%<) -M,-=H/I>5PA50PH)C(#4$&'0:8XQRH8G]9\WV]A#NO=EVA41V(3V[`G)U?Y/9 -MLE8"ES5Y+^/;$,K"YK#HPA2PDHA%)+7^%*,610#-QT/W`4_JA"/F."Z?>1OA -M^NTC(H+H3PAY^;"O?,!\#Q6QBZVYI9MS3F3'FWQG5+QI+5RABJ':2NO&'C%@ -M^V8Y&"3H3IZPS(W%-""N-C8UNTJ2E7`XR?*>ZPC$G![S_Z%C[,%>[&K),L*"IY*N58.:[_U2 -MJP8NG2LCEA=X3_9/K"^:^_`3,?14">[8#.QW\@NH1`F!D/(*.(JRQ\PV;VM1:6L;=?X2C[\2PA3C7= -ML"?H+HK\2"P,;'3E?S6;W.'[H#YNE)<;,V1M<]2BD+UQ"\/+5N(#SS$@C=U"_L=B -M8F.&XEBQ[YJZ?&F%8\=?XIB57+FUIR:V.:]%;D%)5::]'*J?)84"O`BB_TH1 -MM9AW!OJK!%G\ME9';NT1J!(#&GIMNX1=]1\YJUQ333'M>"N)9=>%3CPBKJ_B0NFM6XD,GU@=\22) -MOHU$`^,=6"$A';1A'#\D[.?9\7RD'LA`VJ%'H.'^2-<"22J``']V=2/-]#6X -M)LR1*O^267#SR1J(B5R^9Y8=SASFEE;^\KP^45[RN03!!M -M3Y)/8RBOK#='/<3I<'!/:;3/OD;^Z@UJS:!KY(`<+B7;3^3T\-:^!]8 -M5U'LQ+.]/UGW"S8=(9,F@)?\P+.B+E%>\7G:H'UWGZ'(JHP7,M$EZLH5L#D" -MCDA/M56\4PREU:)VG;<>'J6`CNSHP>`,(EGN1_4:FX@,4(XE+N\R^/$=")6M -MJY<"&/DF,(5Q3BZO4(.3G_K?R,-I9^5'R\JJ*7SC]+>?-0&B/K!(7^@S[S:D -M'\MQ+*@6,>00,(Y5P;Z""F5`3P#.)O/JTS.J-^H9/EF&Z'YP -M$SPIC*Y='$1DD7C;\K50P!L7)#O7DWH[/K]#6<*<(M!2=GLHP!(\56W[[4RL -M07O2RQUS'*^U8*7,\T+F.3GFV1]6.VU?)-N%VBK.]C9([93)-ZT`WMXV;WX= -M[))]+S#['ZY164%7/QMYI4=*!RZTUOR'PVT;Q9..FX7&?'71Z%L>H"M157&F -M++N)3R%8.E8)K`XM(L(:?MQK1H@!`$OK\>O#/Y&!^"6/0IN2O5^8;_GCDD6U -MOA,H"A5-.I0=2[2"?,<0?4_F[@7[LQ8J6A3U@DYXR>;.OETGH50Z@4Y=()(B -MB:?[;!8X2LC4O.ZF[VO5VB[.!5\V8?*9K=B5_0@*$&RN,* -MW=F4T7=0)/;4+L=[L$SCHQKK^DE0J&`63MN<*1'L8Q*2B3#""!DF:9R7:(,K2FK3:+\TPXXP\(?WH -M=B5O554O`UD)26'W+`AK(7BMG>6^.]WKX;!?-8*&1YT@Q5 -MW[#LT=;%$GN0NH`:AG]L=*JQ-3D]IRHZ]U.; -MQ@F0'+M4(UIRO!3JMU:SY,P/OH.0SWP*>>;;]M2U[9;4+A""[0;"'H9;P66J -M:'?"1J6T`%K_2?XV,LWS^LTS6212(U6LGZ`9`<4I:8QW(4@]H -M2(?R/2/H7B46?I.L04V\=0=GU&T.F4C2+^M_+P6&?-+Y?X=(P8!J;ISZR\]_ -M8]2?"BB;MBWMN?^-O+8J!TZ]R@=1JC_0-L-E18IA3?,[VT69<%VWX.N0RC5#\N.:`0NZ1E$SRGT^4S&#W90:R$WWB\#6 -M`$XCSVN8NOC;\T=A4_Z]Y(HP#@/&*%2(.S2*[+PN(`(MTG<"9,4E>"XKF3]$E6X@T(\,%->]GG$1># -MC==G"7N-46<#I,XU6K<^2.\30A-5*U0)OZ2UCS3UHK1:*BH5&U_O&O4<3,X;A>.57+.,BP^//=*1T-M-K: -M&)FU2ZC\*=%JSVY8EPB^*"49%!EG_+H$%!`UL`]@WT;-4TR]3;3O'CK0'A+X -M$Z)X<*RZ[EQ+6$R"2.GXR0R8DUI5O"\CS^_G&P6^NR+YII6Z_!QYR_CIF8[Q8>`$6*6R8!,AR9B$&&* -MQLR:H_?SI39Y]A@VLN6H(I$H1F[WH;4MUT\9S.[\9"_LEV7(SA7#8T84:F#] -M1+FR3Q\&B9XGY>[/P7*S^,.,C!&V`02(H5VUEAOE6-3I1_CMI<[$&'5Q\%XH -M/"6()*4L?.@(VQ`/9=GSVT]]P%1YD+?=84"-Z$95"#=\)"[7 -M[L>9OSM#K.J/&Q-'[8WV_?E<^HX&^X-[RVHVE,:F=$V_'@(JRYLS[S##%DO9 -M0>M,%GMC/@"ZO]SZ`FV#'MI64ITLD73(;EXX'D4ZU@LN;**FXLF0L`832#8H -MF[MQ;AN?$7K/7.,=MS1F<1PT:`R\'XQ(/ZOLKC'#%,8L$>.V1Q[AXOC3IS:72)'$_=2'\@,T$P7Z -MJ+&#,>2=71]WC$+SQ[1QM:`EQQ"OBXJU)T<%J\V[6YX6YQU@WN67+?Z:UMF: -M.,+]"GRAI_)R*-9SIPOF?-3E;8O)BMM:]ENG-0=_BFJYI.T&D$?$ST_^C%L" -M@..TVDQ'RFV#24M0LJU:,/)D<6P7+)06[8H]&KJO#7@?`SIA4\Z!+N>*_?P` -MY/!=&HJKJIAW!&(Q*]> -MLH3S2>*IF$G^4,W_I5\<;XV1L3>'3/-6JS$_9Q_*'M!\,*A1!'>HZ&`*IR2@ -M0@H!:I(%"SS3KO`N1D9\)Q8SLJ*;(H(86B)M+!U>8M%%0F:*H+ZCDQ=RQM(9 -MK<,;A$S7_0)RG+*Q3,T>!=H?M'_C` -MW$>N1.CPT[[A[TH/N8L/`+18TO/2N^^4+Y.PKI"SK.#-D_W198URJ_+'Z8\& -MPSP*:;7]EJ)K%9*\``.Q;Y0Z@EE]\E":^>!@CV2X-OS(<51T'*[#6,M1#F=Y -M5A;+GA8P=0PV[?^O+N-83?P3WRNO?O(`:\C_F_OX-%:6'*F=0B:,NT8+`3?R -M:B.)VX5@R>[3K,FC'8Y]A@6@E]P1?)KC-%Z;3PJ*^@"DYZH3?5%QA -M:["TZ1\3RM08*=IQ#D_^7'"P_$V=L!IE!;+\`!V__LEE>E>J3"9M$D):Q%6R -M:-.,(S.,YD:+N]48XPH",7#0L)>ZBU=F4R)K^-WWH,<$&:D_,D!:1?H_.8LOC>STI9^&$01AT-X4M8`W$Q6:KWE -M`A`[$[4-R)2'6S?H`_`DUEO@2`$,W/OCE -MYU/IZOR&\/PU82@):QBUD11A_G4$U&*2]4/M8_#*+?-0FY">]NAQA.3ZX6ID -M_61H!>-FF/T@>?LL>B46G.C\%9K3DCL@XLVG4BP:M1_9_/CSL=`A1)R15(09 -M"-8302RRN/VB\.\<^1N*IT8R-4@:BOJ*==`+*)F= -M.)Z@+3_R5)1_DA>/A[6:47[U8*\K=O>!JM4SH.^"X-JYY2H1"6FBBV2""M,U -M0XPKQ;UJ;Z[HTTIRRYG"US/=E*RI'ECK.Y7*)'-*R1C_10;WAID8@+3R.5B` -M8+L#8AQ[8F.!>-\O$7J^V!T(+F6?_0=FAB?%]1^=DP[[Z^,H)10E8)3&:@5I -MH*1\F\V^X$[S4'X033_.._PD!ZN'F`+^44/4$6VN1D2G!!\X0TGG1@]*GF:M -M&T*F1[K\N=-9$[030!L/MO(T<(X1DPN\1T07AY>%R()KV'[,#FT6&$I1R7D< -MJ9ST]WD]H!!%F+'I&*O@U8,F*6U?+>AT67=Z] -M'VT50EX._#LXE'7UFO1J-*B%.?&X;4=B\WB_&B?^`GR=C:<#*0<0I%(,]G=& -MM4YR;FJ6@?.?:Y(?)6JC6R*\5UO-L_I6=I!]6%S;R:X-"^5.=:P6<03ND1V> -MND$O'^IC(-_`!5@6_8U;[K5!8;<),K"38U3ZV3CLOI=S8H\_=?'-20QY_`%Q -M:B68X^I&WUC5=&B8,#&VQ-LUZ>I61UUI:J_G*_\F_VR3U4%3LW$C(@9T"Q1% -MT:O[)=J]N_'ZJ7%TWY?MJ!BP_U#89A#*#`(:$^I\C8]V%:[Y!_YG;/5R?`EW -M[?]'".`KIVNL>WZE^R3P]C$^-MZ''^0%=VY_%SS]PH.8/M(%>4+]&?_?6+S: -M[?B!6Z$,VQK;_J2/H3.'LGL>I53ZG`155Q+'I"HT,FS)K*&M5K$R=R4M!V#OB/A; -M90P1A6LG4'\+D719!H)"DP"='IQGP0F*UYH8R5#`.M7_1P/%BVS5V]>U,:]& -MAW485;G<6-T9U1W7BV8+C^D7L#5U\3"3=1EWM6IB`'7KH&;X;;M`SJ:YW1V8 -M$,$][US]E`U[*405?'<)GQ\."LG3H-;:Z0(>[;4*%;6_>!4_!O_*)_(3$L`; -MO0[P.]3PU=_3_]]3#]E4(M8816X-YTLXMXL0%*^]N+,/.:#$L>:DXU>JHZ6) -MFS[T''%^L9%CL3?P"[SEY,62D'QOG"0+-:".>"6'#XWGY"8)D9_A$#DR -M2T<'`O5I9+,LN^=#/?`-SF74RLF\LI[2./11BGVH%=$M$(KY2NI#H++9\K'= -MF'GPQHP7NXTR+Z8TO!GD#Z'ECU[B+Q]"F;(Z0KBNM"35W(*!Y[_32J.A.:'> -M6$5SN$8C>L\`?THWA;?'YXP%@I50:__J>I^B*IFA@GNY@V==8?K!11-`Z!&QO'Y".X;IR"Q'H1LN%1V)K&6)GID- -MI*]W'94S<'@FHO!U61J-(IMU(/$P/+B>]^K"RJESN^GAMC@;<:W^Z';(B?2Z -M-)XI+$!,[((MJ?&X:YFFPV;JG#=8$Y5KQH)HX/W8J1+;"E#KF9R>?:_^FD0? -M9MYLXS8;3BQ8!)[H'._:E#;VF#YJ0&;U_HD=N)E6`>6?A:L>!;;B]>&>'%J! -M`J^*;V>><0CQ+U9%(H!1=*W;L7+E_'=/*H1!$-I'79Q!(8CT/;SM:QN(P?0DX#&0):MD.V_`7>G%$:K,^`@I(*G>70]+;T -MS#G(N%[?&28QA8*DQ]Q>M`ZV=T)W$Y2@FZF!M5]']F,X"4.Y/>"::XS\8#WT -M*`-=+R$J(&R7"NF:+AF>3=?ID41-+(2A3Y8AZZOD]&)+6"^7-V%I/>!CP"R- -M$9,-1<:G-\]JBIZ&5^MZ&@17!?.>5A4%K>I>"\/N+^RE:M3'#P9?!3#G]N8/,,!;J%CDJ -M#C^N3K],")70:N`-86TK]D,\6C";1+=,9*<65*R-'?$,OHSZ!@?IC_W,9]+. -MN]XC7]&,+EB"T'*#2(F=E>-K.ES&LS9_O@Q)T,L3,'N8Q#)#!-#=GRR1/L,A70VMZ -MI0E`KI;:3`.GVGD$9-L(RZOQ?]@([KT&M`?!U[E![B^)S/@\X=/'Z-&46_%^ -M$E[[-*!LBZI:5.6%8X?%/[.L/!8O<2>/AC%O4U4J5K+';H*`(W+79#LM,8?_ -M9Y4!35H=X?DUR3&/6LT?!"1-HCNV]D(L6*U0GVUKK"D4J//73](J2XQ6;1!I -M]G\G`$2N.C2@/ZE]<'ML$6D$Z!QNV#31&QUM"O"+H!;<_1*C*M;M),\@J6@> -M5*`\SZ^B(4Z!!>I&AZB%FAA%W&J`"85[&$C4A4BKT:T\PC&AOV!%]>Q'2^?J -M;$#"L2OZ^$'C14@4,QQ,D,=@<@E#/*U2@^(5>W;1(&A<^;BGAO+O.3-BR]21 -M3@GDK+96PFG=3)SO.1SM.2[YY-0>`<:XBP9&>_Y\::N'^>!(F%:M%D9!(M3B -MY@LK!AH0'3E<`=%BG,BZC2,=U/']YT;EY%DB#5@M3N?-*_\`!^.[6T6<.*6&V452@2@F6&N(\]Q@ -MT;[^C@U)!&;-_;'779\QU(,,P'-;E7:2D^3NX@[J$)A/I[XMC'0E"4K?" -M7A`]D2R\/4B2IQJUSV\K!KB*K=83&)*-AQNI+AMQ_3"24_MDW&ID7[:2:5\< -ME2M.]^AX/!9+H"XVE*EEC'\#.P/?$(0X;I<6D9(G__$)NK--6!P3>JLP\!2/ -MC>Z'^E]D]V;]L+04,FWUVLEB*DH,46:B;"-B*Q]V1"(7(MS"OP5&:L(K":?*JCOZ`A)"N)!2W3G( -M,SO:6W;Q?+@G=\YU]75;/GSCQ7C@I]&^IG'@F*/HI`T#,'&U.XD5: -MR$\KNHXU;'D?K1ZN@D]QO^J,M]M'ZC2<'?58C/[SZ]G,8?%:I]-_93][N!NE -M1O]@>2^C]9,TX(52]6M6+\B=JO+N.(\R<%@ -MO#I49FN/>NY[I8B6%%SNB`R[4!NWT1I/D3C0HG=2Y.$ -M#FOPQI76=/,*Z`)*OHE,NXIMS7_YL2)SS3HB+FL5/S3 -MVD#+X_I&O7U%^6!GT[C(9&=UO*>DX6(GD9BZ=HAN<9H0^BUKXF"R0^,IO`)M -M,,T!1%GD_+\?9HV7D:]'#_3XSI3Q6^T@*==?<9(A6N`4VC:$_)X" -M3XO6M4S`MWUM%ZK5.'"(W!BT-6?2ZSGY%C[V,@\6L4UN+O\-ABF;YPP\H8@S -MKV7`>:RIQIJPYJ^]\+(0_FD/B:BV&@DC68&0-K]*J&C$\JX<&EUK!ZWG@]NN -MW#]Q+_<4Z0^JLM]$+(U.NN.[@J\BRL0-B80Z5?H(D3HML4>QW^$F)/,$NJ3: -MFLY2YE4`J:%$D"'>^:BUWP3_HBE$/ZU")$00:=L$33J"A:?\B81*";L@7=6H -M:\0QB7#^NEGT'%/%NIL#!:^XP3_L@:AKL62T*X9\5Z)=>"]9?IGS"!T?VFIV -MI'+]^KYA`/2I%`Y![4%.5GW%@:Y=:!(AH4>C/3F+!,W@=,45J^QMP`^3S^T, -M;(SMODVKP&%R+NH[M-W#XUPB*694U\!SQ1T5H/B?1:_&^,3ED%-^UTZY<=&E -M%!][/*?&\YH@[S),F/%2NN@CII!_0KS^)7$BJT<[N\?EK<0CU^XL$<8 -M&K``$NA033ST(P5M]!78P`=Q>\GSA3"T]9H&]K(0?R)21YS+K0PS/0=/]588@\.]$;:<#AU -M@.?FPZD]ZR^0<@9#,)N(\ZS^=9:6)\-)3+KK21U]0F03I4)U-H\)'5\;VO[7 -M%#6A9!8^Y8`3F);'1U58H.4TUL3HNW0(5">D_W1N8>I62O.^BM%E^O>,U,'< -M\$',CS-U,(+B2IC2"CF:GU7=QO)7%,3PTXU0FE?96/JLD69/U%@B!]])!HA= -MH0,!UW$B,E6:'=8CT`_X6]-?5EX]9-9361V -MM>;A*U"3,4LFH60HKKT^D4Q8S66A*@\O+5&1=>/G'[Z\X53>@LK;PQS# -M4QWPBA/WXI\J4'=_+>SXJ65/'RCE/$T,<=5.*%W=0U2>N.J[I7H3'GBSB[W: -M`>J78=F_G`FE0XT@$2U%2;U$,CZ,HISPEJU"CS(C5P/,]/Z.40Q6)- -M1//@%(JS+P1Q,43$[5^8A]O$:2UR]8IHI]CK$KV?61_9"C^F0>S[G='Z5XAE -M\*AQ7L$4CM/J=E'CHKT>BHGY\EM%4LH=1@H2O"GSR/BZ)=*WE[S%[N*/A,^/[_0 -M24J)*RP6^B1F.FG=I\%+;$QBCQU!48$P/)-)+ -M\^,Z><^F]6#%=9]T?,QE"9\.^"/4E%K5U=;]M,/APJ!:F3@G7Y^B&$L_#\RFLH]^21"S#<>]WY%/5%M!(;ATDDKQS;ROA -MR9IB"4WWF)BD\8FJ$6ZG&.W\KE'6[ZR/[HR6%MV&-3]''[0B4GUF%R>5?;A@ -M+OWT"8WKH"OU@QDDBHB^?HN7WQ=8FZ/NO[Y<'*VTE?,ZC&J6F6Z^&> -MZ$F$@5#\$/;48*/U1>8$YW<:"35D<8L';4HUMH`[E'+)J;=_FAAR=('B`,F` -MOXK03CC\65^WV1M&2>J&X)CCZBI/QH_-K#MU=/XS0JGU9T4F`Z&WP]X/=\L6 -MGAQ:C62G"-)<*KUNDEO^]F^)FN&//I8QE5"&B1Z9\&?JPUOR50?G%EWR4%JCFEK?^F+_E`Z$7:7>WF7+2CW -MC!,6!6["I@!GSL1.]3GSGO%C'%7MCU5&?292;?3G>LOVD$+&3+TWC!.&\,W. -M4D2XWV=4"K""*J)Z!/$M)KI]@:.4TZ.&*53=.:[NB/^I69F.*3*O$UP8>> -MI;<6(U#M1=_/Y=\\3:B5U49@F<Y&E+FRX=1![GVS*H7;KI6N`[WW,4X.ZT^FSR?TH8XLOWSV -M"K$3WV)4)1YM+2U"*?CQ#WS'&K*2F33D``_)#`$FP.XYV\F14;*$KK\) -MKK51[A5V/F>)P;/G+P?,(3+(M#SWXK7Z";9H5**@Z2)7>Q8B1!R -MA^@2A)*/Y"CWI3Z3KSE^!NN2=V-Y_B[:/N/I*$T^YWKJNVB,+'-/`1:59"9Z$=I7`IMUT2[I?M#\>2A8%EE2K1VKD/`E^.[:AZ -M!R/[HJ+`ISZE1A"`HM@U+Q&V8'P4L9!!RF+%M_+9@?+K(NU9\K=:9F4"T(J>M\LT-IWH7_`7M$JO+RRB:^RHD*V42O8ZGRBGJ+C3T"2W&_?`T7 -M/HDMHJ8)9.]LB=$!GEH#4()[AQO -M+C#CKP;FL;VD''(NU$KX4'.0'"G_RQB``[E@CGA,++<*-S;V;#:4R=I+,!-YD% -M8%@.U%+VG?YG!M8BV1H>Q@E@R'!JT<67U[S1J^)Y40T-3 -MUG^9,7G^-?USVF53)`/QWIJ*(%HKG?9K]8*]9DAHJ#.,GN6R/[5Z'\VP`KYP -MO`2@1F6S'WI+.IP[CF%2>8`@O#X<`6](CGE&-WBD$&!O&?3/2>HR27Q[(%<4 -MM=$Q\L>=&`&L)Y?DU`/)*&[`PBG_?Y3@YG8KF],2U2(=" -M7G"&?7JT;TFMN)%H,!?+ET.OY%D%2"BUAJHN[/D*V"USN!PQN1JH;/>\%(Q3 -M.CB&7H_L5#ZD_(/@FKP<@Q43XZEZPS4=H`U%@9/9HB"8&LA0:8KE]?`$4E2< -MO&KS]OJ$^V1.5U5^:1SDI`_-OSTZY?>ZJQA!#'52*\-.^SI?OUZ,Z:O1MT]: -M@T2*VL(7&:CD?R6V28)_^B%(&I^?!5WWOHZ^Z&0D4OK6:/ZT.#<0BA6V=%B$ -M`QB&R4T_T_?E8XWD^7]5RO&RP>98EXCNL&.<^N]YH3XUUZ'KA4M:[4F'O!GM -MTBZ1O/0@AXDPF\;SZ\K`G[(JF;8D&1S4V3R2?\O)4".R/JFXV-0SP;]JCI6+ -MM'8X\6O]:1V0KW;;_BQPRMQ3IV2RP`B7MFS76'=2]#VKN`.S=+X>.E9][EP?RG@TB -M*<.DYIXA@.=^IR?RH^_D#'UZRF+(;G(HPYGJ=1N+-\J9VE3UD?A2((";4VON -M;??QR(3P<4;WITO^DA\3'Q>1"]8)MD(V4],ANDOW_,VK`$$MCY@ -M,JKU85+PAX/Y^E:XE&0$"*4"D_A28GXJW8HB(5VEHUS7*2\_K?J@X5N)=/]N -MH8AXN!+EW!(&6?$)ZWKW>[>HD*H^CEJI[_?>AS>^1<6/>P%BHWHHWF'LQX9# -MJH?P<3L4*@QWMIB.]<25^M6LKKAJSMEC[#WMX_9PA9.L3ALT>D;ST(9;0[YS -M"O9DFEFU73OB+=^,Q%CC7(8X<"4W_?5Y;,S0@0IH6)W\?UQG*+[EL;^-8I\< -M0Y(\V-`75V4TA$$ -MXP\";2;D99CI'@XO2?=3`3T`61'2<3*`A6&L.OE?6T3[*N!, -M?GQ'7Y+GCY86WG:2C24(&-%D]]8NG%IV.+!]#(2/E>UJ?X75QU0>'V.R'2/K -MF@XP5DNP5E!3@BTLSA&0H*OU*DXXT/ZZVK7[7=F7O8Q6-/%IRY -MW*0Z]'"WG@``S0F^329`![>X/U.\)&1GIJBP^U)IRV;S.O<,?,/,I9IMTR?I -M)5,_:WC.%4$[QMM&-N*^:W1^7*UW&'A=<>6S4ZM'K^[SP97'DZ24>\/!2&S-"BNZ*K?M5D]GA[M3 -MW[M^M'ZT,VW4UCSC?#F>Q\F2OS[#B5+]?8;0>EYTD+5%#->ZN\DIZ]:A@H59 -M01I5;")$NPAA)X>@5Y]2%-A9H,?+OS/AI9QA=3[73]L&/IJU8?5D((BHLD[X -M4>0$$E@K14YAAH:GM;AR>_LB7&**'Y?E"4W(M#E1O;%A)_'NY^@4/#RH+?[_ -M.ATT8WG+=O`Y^7O),BYTOMD,0#''L=%9O2[CNUG)>$!O.?^%O%:BM93IJL[, -M)P@)#A82J<+=#&3TY313J&2L.7$\82AI]$^K/VU-%G4KX]AQSS,69=3]&NO> -MR9FWA!M\M&G?-_:>PVO@(V=-%;EQ*)Y<@9$P" -MM\<0G_@,D5+;;!`=HQEQ67K+(6*$NC!$:4&.#<`9=>_:(^ES[#BMS*A7Q^*? -M`3H*8$J>IP\KOUQ!>M[U`"#$0@M/4E`-WO]\A$667TJ"C-VQ9_H0@5+/";9] -M!@,+!J8C@*](L4`TZ63[EQH\DGRDCPG4OSW%,1)%\1>ZW` -MJ?*?=H[]42+R9=E4!9Q\0QHK;#F[![^3Q9^D#?@+-N7R-AYB,/,+Q#]I2+@A -M,__/IC)HO_G!?I1NPOE\QEGJK=H4]6JTJ"X9^IPT`]755TNU%\_`,8$[B+N: -MU6>;UM*QZC$/RHM&*QU'8_!U?/A;J_I4OHA,!C(9,\IC<'XL&;,<(T1A;MGT?_%+X8V#(O;I8AI)MO[X/J -MJ$LQ`QF/RHH@X!LLV?AXH.MJ]!1X?PR5];!+9M,/AM])\Z.SN`*);A_6J[0` -M2QK>:CEDB=MLS9A"[12&PZ3.N::;+:Q@J82.1,?5AN8[(4>6=]J'6RK%J"2H -MY?)^^M"L*.0(=H,41[=XXX/ZPX0X4Q%H)P24\=B$:;V)Z78;?0#\<;`U9B[I -MV5"':![WFYJ\?J%+*,PAMPIO!DC)DD:VL8/[X;RST)_JX`9W"U5A>0Z<\3`DY"6)75US7(-)7G&X4HBSBK&64+(6R#$SPD;M]K[YL#*W5[(* -M9^<]ASK#;Z/?#>^#1)_!*]E]K3;B'-;46D+`BG0^;<5D@R2NGA[!$D`MD;Q. -M8.8=5)UQ(LR6!B)F.!7N&W;C":+#UP03UGWM4Z\I*-KPV'J=_>-!&RVK6!TJF[R$PHGR -M,)0C=*[>\5';F$55"U=#YBJ4<\0$,9"A^O7H>3,T=N2/XD)1%]!X3Q)?7I:M -M]>7KKCJWKBF:.OJ$HDLT#0\L2?&,2?%19G#'QHZ1\ORA<4IN:6L#5[[VBH&V -MGJ/4+VWB"&NP9F-C@G2P$D2A_NJ"`H+4ZA4F9WG!'7`&97Z]:E/WJL`\Z^,< -M!$;D=3_NPA>)4_*!=@P?D#1/@B($9R%![7WD(O^4B/`F=L^`YT@LJ\Q4_6%4[8MP6:0Z53X& -MFQ5C9#IK$E.OVWW;L,YNS^9)`_\7(#59++:*_AW>2)D@/HC5K37@"4P$0FMG -MD^M^O4_+7Y30O8XQ*D,LDS>F5X"D@)[Z:'-''?V(QH%A_QL@X*O\NY*4C9BW -M#08MUN/K`S"D?"QC"S@[)8B&Y:N$-%]STH6O_UB=,FGZP)2WWZP -M,7UFN:@K65I&RJ5SH+LG?,*TL/?8+OABF@/G'X+?PUV;[L^!B"MP8?1RJDL; -M&,\BUED-QP'30J(!0!Z-'5CJ#\003QOW34521J.TY@8JUKP;9\'FH\.0\?#` -M7WP/=9AP9G9GM?CWD?A5I?#@_K*#L+#EK'%KX"7M5(F@R;?RV6T!Z,J"!2,O -M>M$X3$)U`]4I7,6]M'*_M*G(Y>9G1F+M+M'W:='6@])G]D`#`=I:_F('4%B> -MP,#A7F.%]#57"8O;A9;KK[&(S#M^Q)O1V%3\:O*%1>^JHV_7?UK" -M/06($V"0V83$IBF)2V[LF1HDX],/=1]8>\G*N_A'J[L.V$!N)#O9?C-44^^W -MH-RZ]MP8L0.PU#"6=+YI2"JZ6MP&2E^)'6>O'8![6)TD,]BQ\L7JEN.:Z&%# -MNO.X)9,*$5Z$@455>J7B&P7KG+A9HWEVB7'.F#;"MQF6@H%Q'O\XI[!%#%I" -M1/.W5)(XS!1C[O/6)3RF.G5=80@#3IUI7"K>BLI;5*B`MC2Z9W&)13ZRIO4%QI`B7V;I%=$PJM3SL#LW90(4@_)UQ-3SCG -M``Q_I^+[JX4JKXCXS,`L.)48M-7;P&-.?SD:;/8O\[8"1\@/6PCC;>$O5Q'3 -M`AG=.IHGZEWE;!J%1D^)R(DE%D#\(K@2YSZ:#C'$))&AA!%`.P6[YOV^R&C; -M(K*23U6,5Z\:2_*$G@VI#R0!K@6PSWKN\2]Z!"S;L^FV3287)[UY9UAV'KX^"<*-FRKL -M^%,>M?RP/R&PJ0>:GOJ:*S]@0[7XT]8!6W123XY`U4 -MHF;M,$%628**O""TX9;R5>5:Y6^)/\6Q()G8-/@+RW@VO)U--#K.#910,7R^ -M?+<.+]>P:$/GU)$"Q0O<2OA$]>BJ+#>=KO]I)0^J#Q*!%4%!D$0B?;$G&9(* -MM[X+O,DDP-C--@/!5A@=\3:/PZ>C'TE[444,!-,3J&_L=K25IYE+^1(PK=25 -MF%Z2M'/G/K.Y[>@UX5-CD4\8B=E2HSP.,"P2(_)<_`LR)-!>=4YT1'QN -MG0`LPSE/UTO:N0^%"\RR(!G,14^.:.B%S:5R.@TM;@JW*I3>T36`4HX6>5M7 -M10]6X8?(-+FA3)$3!/F5/-&LG*""]`6^Y0YGT%KI;P6`^U'H,?C%A87"YGD1>UY)*E@.P_RD]RQ92= -M\A?>\-*\$'$>X4LS0C0*$@(],ZU[J$H`R?3\;/3+*P;334509?J!T".5)RY> -MKS(V:8^=597C4[BYT+<_OFTH1A*"@QX0:+_[1;DS$$" -MT5D,!I3'G#OO"+KR@*&M)G#R8(C@.VLS)G]0IVT1[IHX:^=9PXO.IA3!>.R> -MJ'S$)0>90Z?CP'JIY:2WBWAHQ9L8V0_83*) -MCK'P$U2NN%3=B5FBH7#D@BH3[P[60?^Q,CH$VP'`?'I:8+AXZ-;!H^%G%X=[ -M`($#,"4NT*G#VYQ>QU%#Z_X2/S68>;;!)9,[FN(S40S$E@_=P -MEEC$U/YV#]MCM1"[%K"?[9X!Y#AI?U4B!:*X/)(WR0(LFT$6:/ZTWT//:-^'/C825Z#J^@ZJU8#K9P" -M96B:W#;N1FA;)&#ZEH*)CI<>;5+B`M@>P;@)FE1,9$(T:L:16KN>R559Q -MM.B2S;[\R$D)T)EL`Y=X14X:-*^AP';5(8:9T>>K_WI5K=M,N.""+=_P:52$ -MR5H6K4]5SYC([PZ>5>+][#58J5+Q.BCQ4;$R"3H\7RQK;VKG4LWW156@Y3CZ -MOXD.G]?`11B$2GD##F_T14H,RM>3A.L$9UH;V^J@I_06;N%0;R55=\5J9Z=F -M,[,Y\,FIRGE&_#LV$"Y7D%^LHP;C+HN>!ULT!J%#V/;'>YM_[,<3=[C.F -M)D;B\`'F)UI.N!P!8KKC*[&0NK0)OU!1)\M.:6M9+ -M>5I._2@]F]/<1:QV$V!,5$2J@DZFK2#3%AE/&658W?M!L/E:!G5S:)C@Z!.6 -MT;5[M.K/``;KSS"WU&)LT)JOJ%DN -M5240N!4;3\JFF+51;(2MW:SM$9:'`B!33//F@@1?O.8S/^L-E"X5^\T#[9)$ -M1RJ)SHSE)*X9YJEYH.T][.+FC:8K\QR^VP;J8]W8E&.U7()&H\Z%JX%[4)%H -MUEOH:XJ!P%'ZD$[P9)`IYD[@=+CM6FE<5AU3 -M!QQ]*9C9\P=L?O`^UWH94%M_/XW:W/\S',9HJAUSR`Z@V-9B^&LC\:(H[,[= -M\5!LSQ.T1J45%:IU#6&[WQ=`^9*(:M4O2PWI^>/@"TAM)=F-VK)/;^NXFRQ5 -MH7J_:&VC/ABF%9LEIZ&0#JZH)D$]!%UZ,8U$(SE;^BVX\U6B^0`:KSFD:(`0 -M7[9^MA28F8]`'5'CQ>*UE/K9_P5APLFK`$V):]EM,>7C6Q-&VY$L9; -M];85C%<;)AFIXRBIU&`?#0=-(^00@4A7_8/=7/]>C>V++ON2*#K3D6"4R1>D -MX-F4W5H!.&#IM`ZSJ0#L(>4Y]Q^-S9]OOZ"JC:#DA`T:#HQ)3A+>C^T&I_AWVA=@3RB`W3NT_Z'*+V#*DFQ.+#UP/@[YM> -M&S4`AHF7CCF527\V;-0=&!S.WUG`LB9V-2)8TT)A(&QQGBL^'O>VB6-B,R=8EGR4XT):- -M9EMRYJ^.=J7J70F5UCWT5)%6Q@6!9#1PG1^V>KEX1_SS_]49)99`^>K^NYJR -MR?`8*(*A*;0^L_&'`U0H"#!N?%8KT2S0[/:*]F7\):1]7CW0&ISY8C2F;YJU -MB,GR#L%]L9XM5J-VLUH,WR_%:0"%]-"(EFA\O/-R0J"R0ZLUVZQYS0PE] -M6!QLBC&EYI]!I-^CGN-+$M$YO1P/KS=;UGB+1\>4_P*V_UA;9ZI)A?$A -M!V:`"0S4YC@"$7[CGCW"0FN -M%"D<4!@M-$ORVG46CBPHVT!J1>$++KK"P3$,1,7E-UE#8)WT$?!];&J:IL+) -M;V9$49/\*T&8E!F\8\)8"U1I3KE=KZ_>%O5O^"6F=T(SV;^D>PT'!F(VGW?\ -M]52V3:M/K+-P2K;)75XBL-(99:\>;YY2CQ=UC3T_QP1=EB.[/Q6H5W,:1\ON -M9>0D%1C`@-6G$U]WG+7SA@J'YG+>7U):"W499H8?#Y^J<0"_7/K<0T89MYE< -M+ABPHE[O1C=2.O\9_7Q22JHVP20NNV(M6O'#=CK%,ZL131_D\P$8(L"HM?O9 -M5ZV)!O,4^;+>-]>;&"UW*R^FR=8889)EP;A*P!OQ<,!_4:$.VM7^;%MK`:?5T`$E?7#++_&/.2CHU"A+RNI/D]< -M2R4Z8S4F!J\AF`-9(']L6=9T-X.1@NI9CSMG]2&>/VEV4-P.:42>7ET//_/$ -M&$@)T_I`3(W@=H?*3TD`/6@N)V916PZ,Z6B_CZD0L\;"IJ-+.XW2WEU-W05N -MTC$]"_#*RP`XR($CKX=]])6"<'/S.*W=LY<\J"5:P=$>F-<1NSOF$:;Z=W?Z:J#6J2UT_8V$AMFA@'5QY\52Y)30 -MAWJ2$6@9D_[`7,0)7/O@?SA-3FA%[!TOLQ4"#$C?.7#R59SGF[$$R]BZSC)3 -M/L11.K1^16X\C\MO14D)8-68NM."H;'=AQ%/L506;NM+2B&C>+(A94OQ\:G7 -MQ]&+&QO0:AG:Z-4IDB<`C&W^@SQ7DJ5$4U>E>[.F8NK(T3!CGI#PPKJ^N#1==<-<%E,NHTA3@%LYBT&$8"=I,L$#Q[:5Y24O?.><]CGM[0[[V -MUU@&C]'9K$Q1]R'C$TCJAFR^A(I;G?1&:-`Q&_%>1GI5^,,T&>PKHYUX"H'"G2R[Z`N[`;68VW('44=X2^HSW,S/#E)&;7L37',0Q5YZ? -M`=_\X7WU<&:$*.._+S!_#(MEZ;48E2]XEC[;9BNU<#`1"2#]\9?"71=G%D;T -MVE1`-?Z)S$R6UBD&W):N#ZRPRK4YT'H(,JUE6M9X"86,Z\!_Y\1`QR7ZT:J9 -M0]S>6;]X[B?2!,%8%.BJ>(8$9A7DL>\$(JMN4F=J3M#Z7AR1EJP-_&I!#!`" -MF<2(FHD?G8>E;?;0U8-Z#"P<$SI21+IBTO%=)Q[Q<'-?,W+YI0^L>Y2L4@^9 -MK%E_2%8?>P6TXI4P9-PJ1`VN7*[_5+?Z<=\^3&HJ^>X8`+'BM+=^U)8[$S>) -M,A!C^"Z7I>;GXZG'XOY%Q`'^.5G:-1R(S2][RG4S^?X'1EXY*T"6,#=]DE -M+D)U"U4BG&GW_EW28CR[\9X/--A<(D*"-OBI0;P^[U-HT$1[&HB>8;EF;PI: -M`-B23\]2G5)<(K(MHF_0%/ZFC\G[SO+)_.0U#9DG<=@LX*285`G)IQK.-"I< -M4/P-TN($:7QWQ`MM;5&S3,["?PQI%/O[^,:W)V4GL(,RAFUU14$*K#^*$SZS -MBB:91AN1*Y.0A`=/$A*`#=9+KC:3I#+S*A:^6P4HF?RV%X_>!<'/>$`G*9/- -M7*0K/WHU(:VA\AXI488#^- -MB80#A&)]0O<[R9'Y)V4!T>N,E+\L#^WP73C]]^6";V_E5`:(J -M$PQVM7>:-REY;E$7=G0$&&(EI.K>28`<*6P@:H=&A>65\FIJYMXBFKGIU -MWZ5X31;/`3;1[08G'4#YBQPY>H-SH&*#KD@_^HP)#P^0R_ES\GF_7LL.!^(G -M9\'OC/$3=@_EGSNU%+/'OT`Q;)4=D7*:03.5>@NPATG!U8L"_?-:7F>F>B.( -MJ$:+CF+@$XG:'=%W*W]!Z(&/$'&Q&-B$U8OD;[\#&`-&[I17=,*HOT]/HC@3 -MUYF&+&N&1]3?0I"L5^,/X5^K1E:3>AM6,9(FU-7B2$A0?3[%%`N?:[C[-RZ^ -M5T-#NH=O!G^C7;1'LR?<$C0FZ2[]-K&#^G)KI$S2]LD0O[5IIU^D+-7UE -M5"1N`<^P;9`D=XFVXT?]*>3&,QS"XDH!\[#*L/-S)D.NF^UD>#"MR!#V^67H2XX5WQ(/K35J$16PMKRZFVDP1:QY]6WA:>2]EV -MAB@HJR^!$6'W`6B,U5'?=&_RWRA&MY0;E*+L:O^O1 -M-^?>O#%N;NI4VF9D'#M_*72T9CCA;2N7\FC4DT?VV&D;2%EB1P8,?SO!Q9H\ -M.7TX[@J0#TVT2A4+6H'2GIU(NO+T7#B_[>VHO`S!R5XQ'*96F"/'/;B;P#P> -M[@90&37?((%B7N\\<;V/JHD,)03YBF(HL#;BRZ$/GJ+;]_,_`*7N1P4S8[AE%-84UY= -M:\281;W&'6B]U/LO[1;;8"?(S4J@XZ?0V4;Q^1%M-ZR)"/+QPHV_XE9E<'=E -M?R2B3T+DK*WMSA0;]J-D!MK"V>Z#_"6V\I64L>FZ[_PFO'3J?/&4N&4]?R+[\ -M@02Q'=FN`%Q>D2@0\@M6ZD7^!S!R'?68Y$TS:&ZK3-!KO+_BM+T9?*FV\]=V -M87Q7)O'RF@-)V?] -M*^1*MH<4^YC6;^T3T7*WQ)$-..F,DUV_O,^PU-B7&+==(D!L38%=ZZFHBAA0 -MV^/2,VL+:/QY^XS;TS@9/1@\0UBLY"'-2=.AH-6K?'81`7\X?&J^N.R3LCRM -M@88Y.N2O=M.T]I>P\NY%F?1GV./=\H -M=AS:/%@;N@+6[2Y-=X_)GI#YM@[:72K]^ST\5JYJ3F\F-!NND;4<7U\:U6TU -M8,E.6<^3H6#@&+SN(/NTP?!;"L]_J@L.<5R`ETD49>:X_5$I3P\4+QQ-14"D -M!M5O4@7[QDQ2WE_(_S#1^.69Y)=/#(1S2S$BAZIVTCI]WME)>JYN+=W46B -M+D)*1/*(ET5C8\YZ_OX2=S?`<\\:&7&$U+N+KG`)T2R']K#81&-K&AI-Y"IM -M7<8-J!H)XZG.F&"X`G07$10Q_,K`F$D2TSZ8M]>3CCTCI]DQN@^Y-UQH?Y>& -M)_FK(JIBEE3^3,[@TU5`$0,%Y'FV"2RHW"BC6+K`>C4S,.Z)V$OY -MT[ZP<4!?!$'&G\[CZ,A[(\KHQ.FCI[-Y=#,[DL!-?($BBLJ42EN)-@MCCET; -MW>W0NGV3:S5BD6/<->,K/8UH#"&17S71_F2&P]T-:D6-!JO;=.\X6+WWKW0+.P\`[+:SN[HO)\JL96PJ5/EYQ,Y[K**=TC*GM -M.E]@T=Z@QL)!M#?/-AA.?14=/+8@#1I!'QU`VYG1GT>DK&I&0!J\G7>NB_\_ -MC'@;"2A%UO=0@`+[N95Y71P/<%NLE.+L_90^UZ#V<.V#RC*+M"HQS5A9L?*S -MF8R7%QD,2.7B!G0_V:X^_KI5/\>(.;D]_>$_Z-V;$["-U76W7N3SHOCRT!KK -M@TA8MDX4MM=.]_1N?4K -MB.K>J'-K(Q#2E\4T;J%Q?>_$>GSD$"1]3D\!R4Q">E&7]._&ZW/.XAJ/!3%G -MC%!U25A8=D(B(8_'7:K2DE5GQIK.4FW7-5)XPUA;O>II1N9R!M]6UO1^V(2__'*>T_"8R(4#>C9,/*!IL02 -MN.0=T-N38M%49^)4L1!%9O!A\__VB;-?Y?E: -MYQJ,)"V[S1CCO"=`KI@T)5I#/%`]BP)E3>[B`/P%WGB[JFACJ.OKLEM7!B>Q -M\#%_LL<,%LN'5D)]7A]L%I*E$#4DI)%`TQ3(HKL5/9LE/9$^>7B^)AGS3P,*79%7NK@B$I676LY08(KO\MT$!BPY/C -M,$6K,+A3R!WV:*GXH-4XQ`RZAX]QJHV37(UTMW)MCOI.PZX&P0Q#%Z&+M![8 -M!F3K>F-W:WT]4/?)?VYL3\?<87I$>TB5-I(![3;)*&.HH1.85"^6K-P-PT;D -M;&G$E%AJ>_2!ZG;@,7@\_R!T)*+-C\KM?)@OS?=FVLMGIO0<3LQ9^K@$`>;X!WFGG,MI5<.<>X"11+QG. -M>Z>:56XUC_O$W!U]\`"N@ELIJM'_.2FEJE%&W; -M'[45&,.+?@>32;'?;WP!G[^R1'O$GDM6+ZPAC>X`@\1O1D%W!J_#_<'AXH_A -M*20%W(\Y&RV_,ST4EJ*6ETJ$:MJ'N%K8O>@66"O^:&JYNN'5?V%!@&>/U(+$.TV&Q/M-D891*@!FI&BWJA4 -MI6\-DMI4[!Q]M_?QI5V276FKU*F,"O4)CP-@:3;=3?B -MZ[51**V"+GZX5<[-=C7F*7!^@ULB/.I$^%63Y(T)F)7?C-P3[HNPQC_6X'2Z -MC$B1:?FINX>SHHK@"L]N":J?'"#O2EJ/N?M(;"H`1!NY+.("J>S%'*ZL:#V/ -M5"YP;'(-N$SN9'CFT;?7KW3H$0?*CVU\V -MZ-C:(X77K=G#,21W/5:$K,[2HWO/RYIH4HJ("4^&1M:'J:[ET[ -M*)C#PIBHH`:&4M*6VQY/4?/&)=SKJDI&+COPZA:`"^I\>1Q"$Q,[CW29=+4) -MB)A8S16L6B2$&HU1<]2HR/!L0WTDG4S+/77;FDO/GW#ULN6F*QK[_'U.X*]C -M7@TVN\_(A"]LJLKSFZD-_\ER@+8R206#H$-4-CP@$9<##+0'+]]LIMW]*5(6 -M$U/WKJT[04KH0>_7^N@1?M9FV.5X5\P17)`,<<>'I#&\!7UB6YMBS577[O9$ -MG3&I4,R/M$/8T23O.0^+U"G1'^8(_A$&9/]MH+_3 -M2/0'V[[V\_N=8!+OU&DO"QR#\45I,:5\,#>`]L]Z`UH`(*=[^>(\+06=&QR? -M4?*P*S`XXS+/G$V]?;P,D0XRY)EBVT6>.)/!E12)`'5%#L&H"V.Z9MJ.A.;< -MF*I6'!MLS&M7U<$A]US^2[F_(6(1GTV//F#:($=XF#6)!P[@Z#LM^8#PB8GG -M,],G_X_[9;RM_UV76S95+04"H$`<5.TPD<^N.OJ&4B^"5.3!DF8EE`A%W5RD -M58TW'8+T7"4C_V`NN[\H$B$_V7..$NDRR?ZA^[SR"68?%%\8OLB"F"QAFK(4 -M@/:*J129H"E+V*88S-<\)7H4+>-JMFJN'0*N71S/R0C3>V\0R=2I$ -MIL"XZ\8_ILS2++N*^/FWK+QPF3@8LJTPG=)>_G2A,8[/8^"U(94@NA*;=F6;KK&9O/DB\9'"A%N2D7 -MO\F!UAW@"B^_RX-_@>`1(14NF[>J7F[;Y:O^T_]=?-T&[%;"72NVK/'%BA$I -M[X009*7`GY:.M0N!*&>+'`\63G(.^\X2X^FL#`8+G8*0Y!*;-?GHZ7#7Z6/. -M]A0>.53O2P^6K-H3$NH`/W(*`BK'61_@B"9_.+V''D0!>KHXORG@#FCT?Z7F -MEKBW;@.4RE0F:MS\37:LEQF0*\WQ?#HAROEWJ3F9]+7!Z`%!S/Z3?)ZC5TW.7/(KDO$]>!"/&7?<-;1.6O` -M/4&=`&\D%#WR1T$GH36>.XX(0?Z?;.6OMB*8[4[+0I.:.OVS3V#"2[%HF*!T -M%N0NBI#>I[V\I1!5N5R)=/?W7_>BS3?"KR3@0+OI!YS?3H@RG9#K#G7YW*F? -MF^SR5/W'G/HK$VW*OH_')OR!X%;>52]J@7M8O(WFS!'8Y(%XL0*6>7!\O:"\ -M"CZ4LEJ"1[YQ%^D!R4EO+%\[#>=--],V.KL!7XDPO7!'M- -MRKWETO^HV*Z2#WV"*XUN?RCQHX:G+D+HZX2725D(6I0C%D#K_CP_W^H5>B>LW(9T).(+O=-$3MY.0N;Z_;^C32)9#"$YW_9 -MF?R^_8/=$#7A*P(BS"4A[+^8S#5\92D,4*/_RPR!C5^[H-RQ@I2*!VI@P5R8 -MHZ-E)EYV4-VM4)Z?GOUQIX"SM3(R]_!1'@Y/D']]Z2[^6M^1YT3_7M3.U/C/ -MK6,@.6PGO9LO`E*E.01?!RI91543UW1(6,EC>4C94D$5NY/L.M8="U)CWX-% -MYT.G"+Z6)D&UYAJ3J')\F7%,F:I_K61.1OS2*0 -MT`?VIE,XCM1V7M6SC(I(-(+1(_7N$_LR9MSW"2" -M_#LZE9T&/"/[2.^RK%I1+-XO@7W1S*:W!ST$#U>.)<4WM&IG`5_5)(+R=0R^ -MQ?Z\<6;H;J7@VD82T$ -MI5WB"X<=H[^D8`TCH/L7/!;&`$[0HFZD./1CV(.9AK8XYGJ>#Y,LR&SY< -M"+@BEY^T&Y;A#W='!6T#.:#C+08?),B+-:/%1;Q`\K0K(PQ)"+A7>'/0[]"8<&5AR'408F*_'K>\EFW -MN;7NVJCI-[G/TJ4?H@:_LY*(+G*H`>L$%KR!8#E\B3J&,`DRP3D6TS?/7(UC -M4WQW'SW?$^II3\J9HBH=A!]=9PMS/>_L=Y_173#31^['%A^:XV$<&WPT-B:: -MPAB*@,OY#,&>H+9%.<=180U.N=:J?:*EB"(X,@8"U%$8].61$"8F[ZL>`IQR -MQ_].ET,K7ZF!9-X<3;4HY85NO2T8S7#;AAT9"#3"B2/;J?X)EZBM#+G[0D96 -MZFLX9[IHYF=G0\JB-4:S70=)TH7L0+DK5?I1`.&J[UE?OC,%'R6:JP+1X"+Y -M6&\:?Q:..WX01//[2CN6,GU[^,!MH!.@E>#4@CI5OB2E,'X76-*JK6$DI+KV -M45C5F.'?%!G`/T6Z3E%4-'GMSF_@5&I5-2;F_"^(LT)!L69 -ME08^2K)2U^R5[G1E\#XORXW@)^Q/NG(&;%EWD@%Z3Q)?PX&" -MZR=W#4XMF.V^0TSRBLI!\8T.A4E^HT]\E._Z,?)T3QH-7Y:A?\]F]9TN.G6) -MJ3&OAL/&F70ZR.U%D`D-:J_L:/E75E3?H_GF*F8$:)P?^!A$+>'<+G\N.OA$ -M17&?@1@:$=YUO?Y+W'G5`++\-E+`B3"<5)AY1S+1W=7>ET8@-3[1=C8\[_MDQJR$3+RFX4X+P["LNO]2WYJDUA=6E5)=0DL8$E -MAD28,%+:S%B_BICW3V*87VBP%'7QC]17_594]0FGS3ME4V7Q(8XB.'*MY/VTA"5PG4(M-4WE -MCX)*FO=2-G27(_.IV:/KB>N_+=RV&AV\T8?R<,@@H"<,4\$4[)A4U4$Y!D4T -M5>D[OMP(LZ`_"H+9+W.N8XYS^/`?V^@9R2&"O:,D;,`/1V4V6GM.D'U+1J77 -MU.;./3=90[U\N.0-J+_O:,8:L[;VG0I6%AD[((V!LSS6%DB$TKRZI)*4(Z)% -M@@SB2WDJ*5;=9(_'WDK..:[_W;^'*S!1>9#*N2_R43*L&:VDKM%D""D-"LXF -MPD*6NO):9O2F']P2&?BI<'CK4^R&3EGMR/C&[:"W@M32P`2O;<#)-(+YOI5[ -M,1RG3=G<6M^[<_7BQD@^THSO5K0YZHB]SO1N-UQ;8ES'3[-7WAT-5C6Y\?6# -MV4"!^_;Y;;8T^P*.U7.*(*RS9!Z%F13>G='?L>9H5U"F:A/'':.^&Y_+=I"V -M9]V]ZW15V8[(^W!8:[POE)_\L@G3=\9%9VA'U5:C$JRP"`?VYU@\>-P)I:0# -M]]#;E&T0\0_7I\36B*_:9`7W[O0JX+X*D0*$Q=H$8[<>L15V2E>H[*V`92_( -M.+5+Z3@@![!.R/WV&*-Y>33FA?JX_I_UO@=%>-9`L<&:,@?]&T&V2H<%.Z:^ -M=O-:T?1J``[5&=50RWD/\^A^N64\Q:@`!!T!#>=JBH=??O_V69VTO/+`Y?,7 -M(U;":RTV^]HEA`^6TM)/.;XH3=<$@(L!4SHA96>=!(VV6(WU@XV@H$124YB>AR9:#M:(,K_`/*,N/0/EO,IJI? -M>K@YJ.;_7(2^A67_<`)5H/F2\\.2M^1BI1EVZ%8OB$./Q`K$Y6A56LC'/J!+ -MI?8->T7O+IT,75&L\!T?91?Z-)@PMU-P85NV6Y0-[ZDEYM6O7*_6ZE@AH^^? -M3!LN!:22.)W+-FM($U.W0==O+HWKGYBL,4TQ2AI@JE8(.PZ0LM8QI++E8%GW -MDO/)DGCN8[BD)(/B$*-$B=V(X\-?9?<1)M+K)1+F.9#[MB8S/'OULMNG*W9#,_^JZ^NN@VU% -M$02Y64%4$O4PATHVX*Q2(JD2.T6#WZ<',N.K<^'C@$L=;7.+^G-38XE/*&*I -M;).4?,KOJ5>]RO,NU1F]KW\.CNIN<@H.%P_NS&`@[+8]>#G/KGWENP]U$/&- -M+1YY`7;(VYVZY:8PB]5M;'%=N3:^,,;CF(_L_E@M7I)9NCHEFVBG=)AX:H,6 -M(CZ&8^$K\_8GI8H>CGUXABE%[D,I#<4WCU$#E!@/2E_P@11+*:P -M89V0V#"!^'IB.PL`6G1>E?UCC/N0=`FR+.<8%CG>)^<'2)=DR5D7;1DKH\3LDL\,!(<]$LFQ"?*U3O%I$,=+#*CR,)6PZ!O+D5M^]IH -M[R*^;P>;:K%T::>&>;JSL=R74/'#1^P`BPR60J.;$(PIE>E7S"D>2^]-NR?S -M%@294U>H1+VNEDZF)OLLFT+>WWA[.E7_G)D^,ZW,94=/@HHF!DX"+8T$P#VL -MX8T!G5B<&QV9Z]:PX\JZ:!QCO3;5^3;S:JUK`PK,FHMLV*#<C:JRQ0?_I(O`4EXIAJ5U>#(,Z**=#9OOFN=NQ8]=: -M9+<1#ICA]*_F*\GOA_@QCS4&+4U@5OLY7UG%1W(?OT]@H=L2A;&ADR]1T9,2 -M;_IZT%@`M]B(ZA!]NN69B[/6O,H!TQT7RNE46T^`2.NFJ;%-QLX5J@5A5?H' -MG71K_U;7VR$==_1L%8F`/9,\H#YYM$D9(:T[-=Z58Y>Q -MU78QJB];YGWT1(BJD5]^&0U0-I?([-;HO'7^"?:/7<85[?V>.)-[.J"=^:B2 -MP;H*J$:_3UT>#?.#V!1OTSW>0/39NV7^CQ'(G-!QDPB;)E6H7%FLR2X]2%V* -MUGQ'1?:GK&3A=AR894`(J)OUU[9:D:V;1&>7RT0[>2M'?AWX2-#Y\5_LTZ1B -M43!&4/&_8FXQO>.K!WT5XP??PK]BR8')CH2AX*G[LG5^*Q@M:%-N+9+CL1E@ -MIY`J0?;RVI./EL%IAM>2#/[?93H0@]K7O)O"Z"9[?C:=4I]_*TX;H47^;HH, -M[#1AY@`GUT?1*@T-R2#9[6$W+7?=\I=.%^2D4Z8TZ;,8KM=BUZYH!L<(.8K1 -M%@`TVY4*J:EI%5`'V\1G;.1F$D:ZC/X'WK)79]ZF(JQ1_QIQ(!'@PN]SGSN\ -M/JY8JR3RFD*'M5;=&O>Z4#D!P>/UC$G#*I"ZY2A-$'3-'_@UK8UPC]7*Q -MU_=LBJU.GVQC#M>4,TLPJIUZ*'XD3$4_SW+@9V[G:9@Z8)AL$!C=^1$(3LG%#TI9.XM>KE,G*P?:N?% -MXB"D<\K+%)@=YL?P1]XW2W@JZ715[."FV[O37S/<7Z'\8T+1RJ0IVI&[?NR) -M@/R\IR\D.8)W@ZW/Q2V<0FYOY,O5N/!ZC+#(,NE_B>B9F*EFC]R>XU&XX(D] -M6B999P@GOG>V/V+2:ZV3.;E3\V6O;&`77TI00AYUFY."+@:RZ(:.4MNUI9!L -MW3WA]3@L)$-!)%UHD`YYEZ?J3IFNJ`U6L":MTBR"L-Z" -MJE^_``7NC@U\C!N,F4`W,_N2DP.E*HHARZ6P9\[3"PEJ*ZQ0[K^4_\BJ:>F] -MYS#@?[\YKGN;GVXF5.YDS,O6\5ZM`MK6%5/?<$`F8#+UE6YF=.A*$`9]7>'# -MF].GR>H#]L]9\-[9L,,SF%6/8.-?7EWO@).N![=EW.;[%,/M7"Y30INML(OZ``H -M!`PT5711PO]($A3C-9%M+[XYEJ([WHS6[1W%DJ67%F[OU3$5/@YO::W$:9]; -MX:.KIM"GR`+A_$,G0FQ3 -M>>G)I'OQR;6F0K)-]>:H^0];R"!.SD+3/A.D*WQ*.'M5Z+>U_*YXP9.,`[Z]:'1GA%+$SOO<1\?6FNQ/\+XCP-$+4ZN+6_'7_F5%M"V9V&9@_= -MUV3>G15A'BV=V'0ITXYR2!VP,OKM0#$E3>PZX9`> -M-MW^*OGQ200ZX93D^O&!%\5%[!K`]XWIO9PO,B7CSB\5@3Y5*92:S;GMEL#K -M2D1/ZD$)BOO25KOW*K32`Z=*]YQP`7H_9Y"`C$>Y$Q>X*4/]) -MVZD/9VOOZS>'$`?%\]AR%4!C.>!V@"PQL<':J9]T$9G6SLGN)5"XUD,KA#! -M[$R,:-425')$#HH&R+/62*M%VKSAY1V;-$U51VMDN6K`7%=9DJ'S><%"/#KL -M9>\R%"S6$"2O]O,!4)$Z?2$C687"@ZEFBT_R@-X0NNN.RS*RSQCFIW]+@(&^ -MVB[;VJJQMS-A9[-N<;0[*S2=_?UH@'OX.`K?OP7*)7WC,@I0*',N-U -M/K`J[[C]0RZA3NF,SF)^I%WDZ!1UVR6L9D4_[G)NAU(WG[6V?PJ"JKP4'[C6 -M]E2QAV9#%A0^[>X[:)'A%D1^9N;EYCHJ@H]'W]9Q76O<70_>YEY'I,.O0WV['A::#+/CVJ:HI923I7KW6H5'PO"2U(_.1? -MM/B(9KA,ENJU$U+$&Y#XQF6(!7<^F(J$IK;J/",K?([GDR/&4`'*F96+J.^T -MI.!1Z6!10?KD^'^*AIVA%\"R -M[.\L%4,\5.DLMBUI=!G85V=IK>2''TKPP5R= -M.^DP$]NT#.'ELQ6':CMT^>:(*O/9C`-<=Z+B>YO?G+ZXF2EB;79Q7K+ -M):3783]I>$7N7=UA)_7-UU8/J^;(=O?REI!<\SG`TT^]*D`E]I^P4W;MR,05 -MU*G@=H4U`IORK),KC@25Y!9>;6O26C)0OR\-,-\\-(EDPGXNL,0CT2M/_(ZK -MI^/J.SR[DGKOD38=:2.Q\S'%(#6XPK8W0#1J[9:DD.>O0VV>S"$IZD5YS1%$ -MQO6@!7S4?[.@`T)#60_[O*T*L6A]*6ZYX9+B#F8R+9M0Q-,E3F(59G\XFD%3 -M<`VG_LMIU2(3V>R:_@Q&:QLJ@V)5=(X9S:Z`X>EH6_34*,G7_\*YJ04Y*Z9V -M^.=W[Q\W%NRA">3'^>CLTNPM>;#5L)D@V8XG*T SKHUH@"S?<#8NE`A'3A -M[-):69.:MC(\4(M_SK0P\:KNT+0KIWVBQ[PR4I=I%0$'K4E$'\SAASPRO3(; -MS2RJ/HPF9KW?XY=:PL`5ET\K1$^/GVM -M,/'WA6C:00;K&#X(?'!X_R_I!F&48:PNP\69C -M"MU4U4*0)KB_WP65`+07(*UG/HQQS*?6'7:;&5RI#6'ZCK:&9YP%B.ZRV1T6 -MY4Y2=VY`"3$G_ZK!$*E"_1H6C?I)`3G822 -M<:M$KJ$QD%JGH&+UV0'ZVZ&):GK[KVC3\K;HJD-E*C^P)KG,&+W51Q=<)OOF -M12]DK\P:1FI^0;C@0R>,<&T/'=`"&_#"R;EA]4-TS:`B]*9L#.GV*^8]EJ.M -M^(U&>:#]O\O?5,_,`W]C$13`3Y+DAZJ."49^"&4T,3*-?[X4Z:57+T#@3(AC\:Z"8G$>MWJ6%?$;GBNRH6WEWK] -M#LRP;.05S$9:5F=^3#AVJ/(4-^-5X9>F@X3C+`74XLI41SP2*6UXD(\I5 -MOF2,03C;QYY`MOE&`CY<;UF[D,JGK:("+IM*UR]^T$VO/J)KY_AH5"2)1$S` -MCJ)G)3#+!HL[DCX=C4F8YMGEB?3T@,LQHY>/I&#G>94YWB+CM8&=IBC._*7T -MK%7%TZ^D\LJC(25)JA(-7_\W\#'UAXHZ%V\L=(YJJ+Q.S?F37:RZH.UI^^:B -MHP4U\Z_#.L^=//A$W47)7`<-P!=Z%&WH\2,B/JR3>>ST]YH"<36'T9,R'F=9 -MC794=_H*648U\H>]916[I$$Y"XK(&N\V-C-,\7)*R+ECA,\S0`B("JO9(R-G -M7(L8/JW2R(&%71OT@G[5_["R;2%,)/ -M37LC/FQGS*EZ@`@/$=M!?A=+K:T.<6Y)?X^@>!IPI-DK,>85J1C1I[XTCD+0 -M1(Y"F>26S5SSN%6:\*7D*A8J;1N'('Y_"F_([N=/;@SXR8,89SX^<*OV10D: -MM.)?;!(C6HQNU9`0E1OZD84])W0B(H^CW,:UG?X;H%\%]#XJ<+KZBJ!<0QB# -M@0_+6GWU>.U^%GJ0D]%?A5=&ON#>#XQT,%FDR"=!-G1,E]U;)&I/Y^I6PD6T -MF^LLV#YWY842K/;D\K5'8^NM\WMAJ.S550IP0)(*\<"&<^)1>WZ+6-JACA.* -M@1XF\Q#.XUGQ8_>3B74;V)+]M@QNX=)I631^9P*#!5A:M1_^%FF!I^1[U?BQ -M@.7R95/7)FZ9NHPKUNIWJ6HL)"$_:1<4T?;T:1K7?I>R3OS'OH53X-"SP"L- -M`?/X/9/),;^G/OS$/&\#*)?2-PF>,;/5`8I(7DF.Q*,@S+C#(ICR1ZYU(>8K;4G,&]C?!?!L.#$TJ3$MIRO@V9X*)]MSOAJ!;[3K=O(C -M7(Z!Y4UK!@*/`Y[8.S-8FE26D4\RCR%SGOS(T9TP&%VCSTN1@/N)%LX[X"[# -M1?)_N#G!EC)=),,&BB6/9_9!<\-MO+9IJI*Q=\F\=J^(;3TH:,C,YTT'?^]H -M1/#.4\J%G_T0O*3Z/'^H0/#JP/4.,V5 -M/I2PU^9='9S!1HHMK74X9DCG3Q=8<`2#FZP#B"Z_Y'M9;"(8;`Q!A5<:W`?7 -MRG[GR:\3U&)G:V>ML3?[*J':PP8`?R3TOL(M4+STK;2=[^WIX&"')EW-BX3= -MKW=/=3`*[?N:44JFWQT>-2_`/84*,FU"V'+;)BMEBY5:3+(J,8/T6C%[/_! -M*L;L.TZCT/3HZ^@/#_TC)_3L"1.[Z+Q(FA,,1VLT:2KUQ*#442*=9Y0X<>S] -M>RLSP/3!%K-0YW/>_M&8HW^8C=CG:.,LI>V$P#MT*B)]^8B8[3B_[DHS#X+- -MOQR3>](1H])E)$BTL5*X-_FVM\M*ZTS5;8>+-=^L\;#"N3O\8@-@`$JS[#CC,(ON< -MI<*3?DRS.&$@*>@PZ]9EX""F@^[?,/2@?\%`3&?>"#:(.L:)$`7_0`/">3W: -M+_,Q8?Z-1U:CR#2]M&OP->&AM9%2UV2?M895?3NHH34>_#/$HA&VW&>M+ZV@ -M99YH6]["E.38OULK44>G8_-!'_"LZ1[J58F!IWQ;9NS?)9*II2Q4U>$(D>T9 -M&K9X!MFGX@\$$Z[OH<(%G8=UM,LLJ]$ULV%,8&'_1Q_1?&X0/'>V!NN*^*F? -M84X`=I+@F%$8$04YHA;N,7&/T`[)30/!F86:85?07\BWHVCW6WG<$ZC86BS3 -M5@'O<_0W3LDL5%R4;U[U-S.E?R/\#+$8V/SDBF?ZD[AVT-2S4^2UB>['0CR,@< -MZT6*&,U/M\[T8X(3JUU^I4-S]E8%L/VVMJI.2@EMW>O:<##A(5?`S7>CO&>8 -MVLJ&C+@A`"G?5P-6K09+L65I$>=K7..0)HN/4O -ML+>POI?S#CS\("$2R=>"3LIFK$#@L<]2'(98F,,5C^[!`2_+S%7&`L+=E.0/$?NO\+K'6T -M!"#K)DN3R&N4@N*M%!?M'L9>Y1W.?'IJ$?AP->\K"X5Q.'0(&7?P<=JH^-&# -M5+^I;*K@/S>>KT87)W=^RSOPH)"B4'P9"'JJZHN-FMO^/VL1"?4@4Q(CRY$> -M!`ZSW.#^@><8;HG?+HD-2'3\O_4-5!N'%(CKRE5=^6AG@N@DM$O*V4.8E*@M -MUO,HGT_6\87H-6'][[TE0J*N1Y4^9E#WVQOR,^Q;,V/BL(.Z04'VRD,,RF/8 -MFA&+T@[U7@]I;C_ZPT_<(3CLO!)X-ZS_M%H)=P4]4%.`Y4#[<`S2%C[<<#JJ -M]6HH>B97X9U\D==`L8KBS`;$VODE[+NC_%*]-2YW=_ZPU*^G@O3(4&KV9.Z1,>RD'GM=Z'LGA94:*$UPG=A&Y\[1FG/JBLRV8KV49RY'>[T!!3M7)W$W+5W?"%J73+]#LF#Q2"\('IN? -M"LB*9/RXKGP>'C36;8.^0KGQ\@6'/R*4^#I]'O'@HM!/9<>V4C3E23CB$Q"; -M>[37(7@IKR#AN(R'+!:(#"F[4<,XJR2E?TL>A7\4[D$NPGW+QENJ\XA@S,6- -MF*G<3W\KP&[XKIMJI<8.1=SL>5ZUAH5LNCGO)G"TUWUPG)KZIOWRO2TQD%/ -M&V(I2H)T;G9YOQT]I<7.G`Q,)JHWQY))^2M7F&V`QL3A0DH][%KA(E77]-`L -M6A!,BB3LR5E8_J"[>[[XI9FG%T`A+=H8J?;3%"R![DE?%E/VCV]+2:CX;5(J -MQ/4&(1`&,$?"\CK79=(4&/WA#DG&**S%,+:+\\YJBY+)FTFOBASLJ_\`V+WS -MJ3!74[Y)3B=!4ZJ*/ -MUR5W;Z=>%^/F(?'WV<[I>2.M,7^84`\MD*J?;24J@'\\+*YY">Z7[J;XD,ZA -M=S,<9S2][?2O[Q//'J+_C$Q76R6DF\/_#)SE'80'YW_=-[F.SY59TLQ:-MHF -M(U7EAGS]/!CEP^9.Y5Z=0K`F6;_.('2R`\@GG:_WXTJ\.=,S`@7KQ5%HTAG9 -M3HTO,'NKUTPQWA3R(O8$YU>C>BF.X.W%E;MT>QBM,/L#^?B*+R5W:S%8#@P_ -M\XWFZ2%`)(@8E2T?YWPE#KVHO>V1_:VUF-'`& -M3PZK5B;%"3EA0!W,`]JJ#,.C@"7`$P83#B1=-K_(PXK -M$J#28M*H2D`0)'&S/Z5\&HIQ[[2\A!("M5G7+JJILMDAYIM.*=M"S/)>=TV7 -MF`<8>1Q@,-_U?D:&%T+`;#%PJK)AIL^56N2/@]U&O*:*,PV-JA2I$>EB'!"7KS?AFJP02% -M++(UN>*(8N"XBY8&A/7QX_F6!9<@;7K,6>=T/^?F!\H>Z>W9HD7/<6?BUM\: -MC*)3@/@8GU;$R@G,*:S7-P+H(E+5,G0',RK=MCP%/R32MSN'PULI(RMV;@Z" -M;7)2=/&I/&E-3YBM(PE4E)\6GDQ3(R``_E?"^T6!VE`E^3GJ#7$P,HL['^>^ -M%H5YZ1LT_+NQ:0^N%:MA%A:K^!"GJ]I6_=WHT\Y-&9(N9GMIU8X]H^5[M^DK -M/?'8S$0H1X'=MB?NI"5)3OG00DQ,TZ6('R -M<;(S79.#4)NT0%;O5+031-=:JQ1K$N4X#N>E?D^WY%J1M#(K#7=H:6;OC1+; -MVE%?Z_%K%YYO;_2;YZ@FJ-9W%:LF0FZ0=W7I+&6O'NX%,_E.@$8>UR@Y\[,[S-;#?&EZ -MB+4_AH%Q>A='PFZ:4YN(-A)ASN_@EB=Y"(O%]C]B6Q,UUP3[>'K\;!<3;]5Q -M*_1K^$TFZBXF(?KO`Q='\16))\5I^$2OA7 -MR9;!2!3>E#7R)`ZMR?W;F'-',J!?YHW=H7!H$K+/U/JJKY\NGP9 -M:&=P7[Z7[D+#6&4N8T -M^@9?J(YB],Z52^2,HW+^ZS7">.5)?&\;!./"5M4[>O+9LX\G0\6&:C^A)2@* -M2$BXG\6KJ%Q[LIKTVMBXBI#ST!@V7Y``22HW?VWQ*I"9[ERJ$X+)Z\$F:^EF#Y]VX!,H3U"D;;)V&$=^4`%,-A -M05PKYH1",%%]5`Y;NVZ3J?/IV6/Q_7?KY"<3OHLPQ-JDTND7#4'27^TQUGX" -M#&AM_'ET@&9US((#:!TSM]20*M?GHH2FJ@./-SV5 -M-XKD]+:J[]I0J!#$]^G=(_;FU%Y`_P%BR=P:X"3-XK3OF9#9,)I>)J5*O7BT -M3`3S$)^959$V^+G4KG_ECRS+#OK_,NH^@<]L\6QY"G3(XRR+"V1AP7X;VM#' -M_/;H%P/6@F>58-IAN6X0#O\"R5#3BU6!<6W(DEB\=`KCW7-F;DGE6G9^=R?_M0@24^2!`:%XI-(#F4T[J%@2&6\J&&K'G-.5*@_"ZY>MP6IHV912].- -M?9IDL.2/71/2U]A.QY+/)%ASZ$#L_D:&%48F.)(UJ,I5"0"Y,7%4FC -M$$,8XQI60,YE'R6D##)/:2F+E=5#H-V"/G7DB+;WHA9CMUJJW_M=IOP^Y+WU -MZPH<2YQ&L_,Z\D]]@(%FH4JM1!3GN1AXB'<[SVJ'@$04<_2+N;.\)PF#.&1&U792N_\:GBL0U["T]"F:+?9:14W]*F1RZK.]V? -ME,EQJ!%2I36/E-)?=K9%C.O$6!N=B-1M+%)XP1%Y\=FFTQW[_@+>='5&!O!] -ML;9'38D[\N9K4F7>.FD7G+MOB.#GI[]CB6V<&8N619!&1(_+B]8 -MOXM<79A/B,2WJ;+W;_=5<'##@LX?H?I1!YANJBHX^CP#SF?8.Z_/LM)J-/SM -M6U7\PK5KT>KYO-!YOY9/("3M4XY_Q'#D;2(03Y-_N!>=N@8A;\(G<)30(%:G -MM(MNCMD'3K3[KK`G'!%J,#U$V^NX9U@FE7W>>3J]7Y'(X0%PO -MF;2A='"4%N@ES"1`CSJ0"-`/[2M6"+VN\6W/^J7X[/-4F'\Q`R,ZSQQ5(-6Q -M8B"JW?(=O[WK/4Z+37$48H6N'K?4S)`ZM2L[RN^W]FVRS$0*_YV[O5A/3GVM -M=XR-8N6PG"SML[0ZE!T]?9'"`Q`-1R.4%-@OJV$I#7`H[W%U@DM`1Z_^(C/S&)LN)-_#DD05+"_>)7K[8F2,*=F^ -M!GU_@MM0V&(95MQZ/V;H!8"MM>S4P'F`CK#YO_&_O#5POEQB&?T)8C+P)'BC -M:VQVJ`O+PAA+R<"88VZ62X_1?-'3OJBG-6/GI,'4'S6I!ZT;Q;JR<2Z8=EO7 -M=Z0HDBE;0R=_B]-A:&72#5>1,^0'7V.QS0^&7\ZL* -M-Q8.;[N8DRT:E-1_JTS?GA/\@20)T2U?W`]=EW$(,U[PM@B<4!,+(Z1P`PNT -M=VR?.1RBH/][YP=D[VTVV\VRQ5JB\G%8$4W5.W'M#'T`GXK_H2\MP+A]62;K -MPME!%4C/WJ4W1OF#0JM#N.UUD'W'&2R3AI$H%2XD,7!;>DG.]3$>,N6CFY$UY -M=V!P2DL!6CV6.&8+'P[\_Y>!<\/!9"';;/CO]%MWJ8$'*Y(>*-7;M][IEFY% -MZRWQ%8!E1_"'>MW#.N@@2Z)(A;/,F!7GCQK"+/Q;B[L)?Q6O'M/31:S+5'OF -MR2O\J3Q6$@*>B[$V#@R>'*Q9MQ78]\<385L34F -MTFH:R?4'I$`6'5HB/47:;VO4(/!W:C?D47CK"/G?(L82W*/9#7&2<'E[$2^O -MUX6,:S2)&`3,OO'@[1&V&B=-LG4:A]3E%&R464MXG8/LH"]P"R5N=Z`HYJ>[ -M-KCZ#&.R3ID.-R:)YA#/)LVV'74-`2[EZ7%0T@#SOTD07*R#.)+2K^J_7':Q -M@9BSF",15B@VW0U@?"0?T#]=Y';,J2:KK7#X\T[8C]O(/CA5VW3%NRWC6LT4)W9KE7O1CWFC8#="B%4/H1K -MYS5BH47=%`QFFW7%*'%74:)8V]4**A,#1V)WR8S*70,N$ZSWWU]H*^.N61X> -M;]A3]SJ3)/47MI350ZX=1L,W,ZVK_;H+VP4]I4[G>_^/NM$4#%A2IKK26YJ& -M+`4">/+.':]Q>,\Z:WS#MN7+U;M.,6L\597"7NOI#/I3[GGP6#05F9Z@[1E* -MD!KQH$D2\DH,-&WUH3X!JMK9X9J4,BIVBZ!5SY>W#,X*3X]G$L7-_M5K\IOH -M?(HMP1"5G^,,.@KM"!]1=?ZJ&.G(6;*O&^02J$:AQ'IF<)]O!)A5>1DOH'?W -M:")&[T$>B?`U"7/F12N.YF,G)(BG>+6`@OH[UH/KLY44IM'G,/@%(SO#C4.N -M\Y"QYG*<_`BYE`V2H6K3F/IM'(H-QB+,7843T.T;PRE+6/L_$7[2D'G-*H3! -M?Z=KRTDRLU8@79&`/VI+_O8BNZ[C)B&Q!9RU;(5,XC/'".\_%4Y0MG0X;N<; -MPYF.A10G;KX6OQ&S7$0$VQMLC`0ZK/M4+TT'9/8^!RYOJ$S0S5YT"!>M))T98:YTFHAU=,\C6?/#,(!]RHH[-Q2M9ED9ZLR?H8):P3SP.6JOCQ* -M#T*'N$6K!=`]-%\*CV,>E]9?T\1+#@;#5<=.D!T(PU"T?'6Z;%/"IF#Q[//R2]!$81YAAC?_7Q6:L: -M$J_.%S^3W1_,\>4V81*12;%\0>@2/,*OV,9%O9+M26Q=_%.!(A!J3X<#D>RS -M>.]F*A<%PY.8`PC+B!^%D[F'J-G>,DH1Y098!K^$;!7M\-=PAYJSA86CDO;; -M-0M0[R(ZD@/D97$\4XD?--S]20*6FJ)@LOX@,#CFF+9NK$I&[GV3 -MC\,W01`E/VW+U,+R2AI)/B_1.[T4R+V&S"BA;9NPZ<@,H_QY0%*AYQR9QE@H -M$*VV52"=F)8=_^AD>G9DV-0V7CIX;18!@6`+6XWORG;BVC -M3<@9B*!:]&>P2UX)6`E7<@9*6\IKD;%*V^45"7+LZ18G"VA*7_PM,FR2HJ'8 -MD,VO0!=?I47D,'D!(L",.J]K3R,$:B@TBO#]M#DGG;_\*/:YSA)`XOOD(Q(# -M&88F^Q34CYKU:@0.:)1E9'R2_CY5"+;,.530_#LA+[*>-Z=+!WN?!>'9*7`R -ME;F/F&>E,SLJY*6S0SOF(4*_Z<@S9^\53WQS7)#8LZQ/VWS>?ND*K.;E@SP= -MN;1)Q"S_:0GW3V':"4R+A(]8:R[=T^4F)%B.%'QJ1D_W6S]-!T(K55+@&19P -MN'Y4>QY;6"HO4^"%_9;;N8>9&!-5K"B1?^+K)LZ$8@UJPDE94HYL8MV_K@EK -M>%9(G1D.'9@]-5#(G[*[?-"M/7X_MK/=WD5"`4PAKB58Z3EQ<9T/SV=4V<;< -MQI-.0V$9`DG@Z8@@%"I'$\M>.\6&*Y=U/=[(CIZV#P:$P*9W[MTBV9%$TOY< -M,OXP-(%E_S4O/DJR=)N$'!,KB^@=6557^`IEW&!'7\=7WMA!?G@M\^0]#5YA -MM"1T-)_U<'1&1NWY[4&(K_$.'2?1B+;E%Z4>%`N(IV9Y*K7BVY_Z@8A6TW[* -M7H5I\%]AZ1^X+>J/W/*`7:+%VMY#O>:.JSX&!\[2)G-T;0UWVB,@OH:E>^7O -MBFX`:7]:7.=7Y]$8GR"83--'<4T*9'>4L-S2._0#B..[6V%AU2AT`FRD$=:" -MM7<20UE+\^*:\?&7VY92(^=P+5L>&*'U,>(1M<&(%1N^2/,"22-[P95;=WQVA(>RR%B5[S.\9X: -M6;;%R)N".K(B38[@5'=PT.-"%LGY&IG70OF(WAI%*^-"-$&Y=[-ZW^ZRAY2R -MDO0-5>"H#/N_'W*ZG"\U;"(A'WZJIBT%K*G5'W8G<8C#-GQ89^^CQS_4J#!'FHNB0"_;53Q(GAW]<`"IVB>IJ[/WB"J6LEE:=6+Q -M*V,'4M%L:/HX.#$N&PDX->-H9<`3:48T_M58I^R#*O7F?($L/D`3)1L]85O4 -M@,WN\DEBT&L6[O&)CW^^2*'?[L1)?F_-I,!ROVMGTV%#,E=.-Z.P@CI3NV%^ -M?0P\:>P$RD8JR50/&7.YN1\P>U-6%$/\A9U6B&F3,MH/EH%FX$D1BCP\[.3& -M#1ZU>D`NJ">_A\^AK=3/T:80WAE:O_=1<(/+F\K>RW>:5G>.D,P51[K*E#!DE&_'VJP)]9%\501([L-:K!^KO%JDI -M[I-COIMZ'D70A;VK(-*#^2]-QS"S_SNLBHPDQ -MRH`$#.!D3?4-KB^5D4=J`'0^Z,TB:I^78ZW*+OW*BGL1CCRZ(5!J..&JD^Q< -MXS!W17U&J7*]"E5C)`C@,7H($!1ESTG9R8L))>6_/[Z>G;BGMU@2$Q8=RD$_ -M'Y9/K:IUA0$N:--)AR;T=3X0NK%_.25"O[D\J'/OWY&>$-F'87Z:,KU*/KN$]8Y -MRAS_8BU'LY/:H4>VHQ"SG`U>;6QLVDMDBSFS#XLLO88\>BDDOXW/EC_'UF:6 -MZDD-P56Y5UG(O6[>!E3M_*98R[;ZDB<,+<_)G2ZR')LY`<[+]L4HX5$N`N-\ -MAM\#SM/LS48'&&J6U3=.2FJ:_AP:8:&_7G180)1.7-)*:5&9#;7%O^.H;XNSX*V&G+^PO=Y10^+'BUISY9 -MT[X78E%50C=4M?#Z-YM>4?RO+7M -MQM5?J^DOSCK1_B(OXF(9[!^WIX@VQ)`^>Y10ICYGAV:`N[R;]/D^<]:`@UP- -M:DX] -M!;KG36`94`H=JWD65.;^A[H#4*!R<" -M&X<0?/H(L@OP@""%1)3:T.=8U?*(7[J1WZE6LT:CYF=!DX>1]%J>OW8I" -MGP)4'8INX*:E54P9S^3_UL0OZE73$ES$6G_FZMN'9QR2F!$;4Z[-Z@N,##S[ -M=J_^5/8FC>!LD&`?R][OR*FRL:_H%"5C!&"M8+%/Z)YG-YM\2G]:P#2IUL-JGQ5 -M5>:>YCNP^!V1HZ.PX_(,;R;14(]-J0F:%4FVSPUDH'MVG[]7IK=:_^Q?ZLOY -M4O\$H2.`<-2J'$PK&I?`*_^.>(`H[<117@S]'GZ`K^(WIM5I44/2BGTE/PI, -MW31U?1HW6K14EG9W?IT>*419,5#-N\(H+:^13C6LVQ(L@]J&/EZ^85S:%_KW -M$$_[8''Q\K?B5UV89Q37[MA/Y$A%:>""E^Q9U5325Q"IS4OJ27H)$1Z=G"H2 -MBY@I[21%Q1.`/?945EB,/5=;UC2>>&>B`>`D^>RRK`@[FP/9SP?_O!][3EB%[Y$9UK -M3>@VOH:[5]#M?38L>$Y2CFN/ES/,7["%,9M-&R7R5$@`XYXUE$L(1>2,&@YY -M2(9?Q+N^76(BOGZ@;G[C=]I7HZ)AD+CLR25G8J;9@FJDRJ(#9VA^37F1.+_@ -M8`(;<$GG#YM34V+?=%N>SL?-;416UOU]XRP^<87/7QS+XX&1I..=D*=@WAVZ/"3C@?;W -M:/$Q#-.%>Y6`0_J.R;V]-P/>&?^PF:R[&H?&H` -M*`C[G`)AN2;NIVP[J$5#/3<4+D:KPVF -M<73KSWAXZ!*TU,CLI^46,C*P-S%ZV'H6JCM1'-?-DU,GEAQM797_I%$J]D#B -MI"W(.,^L5"H6C-CMLQ*JZB\-6S'>R%E]`%=)/$\OI4M*<%I87?CS=K&4O8N$ -MJA."LPUD+0VG;>\]!*Y_U:6;@P`)Q#B5)=.J^:?HV_);X*5R#1J%O.2.\<)! -MTD0@4D43IT[,&&&O.TGJG-RCTAG174KP/$JZ;WOOS/48^I,$NMZ(%`@V]V`3 -MPAY4OS(0/L]1B/67786TXR:CO!L'O_M7UST'W:C>U3FOTKQQI[0FWU]$Z+Z# -MBN(1>D-V6MZFZ_A-:4VD$OK>QU\/\94B`^,A/2-CE2(WZ[DFAYC>9%8%M=[? -MF&0]5(OA_P:?G)`EIS8@&7OE<[W,1DJSV;LJBGG7.+'(JH4^YP==+D_+&/,? -MJ*;\*[J)AT9M-5,\1E7AZE'XN0?/=)UR`('0'P+.:/IEYUA\UB&78T#V!XIG -M''8/J^EQ22E56A>*7JO4KBWEQD8-B8/W7$$#QP,Y:FZW:MK`-Y/G0K`=/"=M -M<3X!Z!U"UNIA!XK;)5BH24*5IP8T\P2+]XD6*9?R^5""*?I'U.F-XNUE/Y+Y -M(=%XGTSAD,-22NX2'M,;[[O#,Z -M2ANUP%M#H+\Y4S#26N^09,"BT\<@'+JU"\4@#.2I?&4'I-@-N"TVDE=;GAJ^ -MMQ?''*K^-@10VEHJ^:LJUT^E2MZAE/T5_@/")KVX[KHZ6;>%"85WA+XG&L,4 -M#N$7"2>QN;GM%X]M+H`F.,S3(8QF1B"TR0Q.XPF-*=?O[#!_N97%$/K-"EZE\KU"\ZL,Q1R -M0;(LW'YN:.&DLTR4&^L4/5>E-]Y]@PDM93)L1-3HO%UPD&<2B -M,&<7I6`%[:]/7%87M74T<<$W+J=T5+%SUP&"/KI_6FPB+[5ST5#]S:5,CX#: -ME"4P2H4X[-8>[,0;T3AI8WJ%E;;A.%527A608M]Y;MWD;Y>-:7.]@&CX3)!L -MTH(M]#-\2PSU'T'1(OHL@8?P&6MX](#PFT\YOO&(*`6#R[UUD`P=1.]I<:3C -MQ#R@'G`&WQ9;O=TO'(]G5C3K;`T[B\[I*KND&7V(RKIS -M3..2Y8)(-0,43)M79C*EQ.]/;\J,XQ5[/'W-=H+*Z&*_OCJ_1^5&`3U2Y&A0 -M4F"%,ZFI%;"6]_YT[ZS76H^1P9[&+7E^E\=ON!GA?0,9I@H0%5$%F_[R+NRC_9/86X6V.FQK;C -MZF:W)QAM@N/#10*69+<=KM&TK#;6GK5JS^G6>`T9'LR\UCWO.N##D4(8P=KRV2Q2]JX]\,"M"U'YFWP0%AV5 -M)`5?>RHO]UU_Y[NYH5ZOYPUHR7J2]K4X"^U6_4R/+^_U'J$[0,:OWY&R8Z3/ -M`!K_X<8#`A`/2ZLK1I*_,7/K`WY9FE7]:;Z+`P)WH^#)^FNLN7I$DR9WGS2W -MFMA\#TJ0A,(Q1S5.,HH&24/&U1)=505B/K&4]XMMC7@\X0(AY/$'W'+QPQ[B -M+H9-V:8+'S$GL^_;SL`GW.+GU.A(D]GRO\HE^)/9RP?>\'W2OZW!->_A;/\K -MU:T<#+>#XSUR.D(L#(-CMF(GO";DEQ98.\R7OLU+Y[KXBX7!>$92U->&^5O>,M$GOAEH5]@Y\-U0 -M\]GBOA`&H4,G-J[.GKDZ[ZC4Z=G+"7T)L!J[?A>`:#X)W1U^6N"LOF;.8I=& -MLH+BLQP:4L`B00W6M+]K)0/;22*EO&64IKDRL[X]=2E@.N3I4T67^/"UO+W8 -M#Q77K(18U]GC0M.MM4$)."(%]R@FZ.^D9Y'':-+MR8=MLOZCK.,/YLU7<7YC -M/`R>9$NCGL!R!&[WQR.5Y7_,8TS"^-CH6QNL%&*_L=,03,.G&_DK(&1H'L6; -M?.&>I,#Q.I*O*G617.=O"OJ`JL(];`)3D[3#H=5/M9/$@#:(\ -MY+=3QS4(%J)$/;R.\-8F@Y]DV65^;7MW#Q8IMHN"[;KI:Y+<$[=>!H>1;N`B -M$'K@X;NU^PNJUM-"(M,XD59P,.=4>&0S90ZBHKPHF-VNUNDTT$#'34*=<3#8 -MH3\YV_Q,SS2[AV)=L;+E693>TZIO^IZG1"4:-ZEO-,M8$8"PH9(27Z$$]_TN -M*"7)]AO?2H.K*V(R)\C#3A`P";,=5@3_GK,#H,CQ_1#5C@G-G[NKQC2#WX6= -MNMB&QA@.+>CK?FVU!G*.9SUH".<+MJ+ -M!2D:)7,*!C]#O9*:A%O#QJR&=RGC^(5\3GY=C6`YAJQ-X*'*6?'_5=,_WGLL -M3>M\*%8D%]<-)N?!<^"#GB9U+8'<,HY*GT3U')@4`H]\(GD'3QS!K6X -M-*H[$-".5'*>]P;1)3T/*DOPPEVS=.Y7&"_JRK_(@4%Q]D99QF$,8NA,):#D'9!P>6N)PL4%$DK/``"@`,&1!]:P$1Y-J!?K-G?&NYC -MD?GEPYJ#.A-"VS]VU"3)P2KJ'T4K<[`0*Z_AV*TK+UC[*7KN.U>%*I^OZ1.? -MY1LK6,3JZ82H[8*G,8W5W/-3'1+8`%91>W3_H:];:G',D&;.+6U$"8Z7G_N% -M)T*A9PT@S2/B.KOMUTD">+'FKX=BT!$^;P9M3J%;CVG+[C3-YJ74,=R*U -M3RD2;7SJX$+Y`L8S)W]#*%'^SQZ7;UFU[(ISN2B-2/)"D;V8<<:&<#_I!:>(%*@ -MWZ=T6F6?=1%\QZ16"-,.[=*D\D=%TAER<%'8"]#V>/P[:(X+%TK15,/"@''. -MLRS,(9>6'2*/R[BEV,ELSZ"S^SJ6C`T+@@8V3N5&>7AJF^ZI'^)M9)I$NX:Q -MEMUGSUB0&*ZY'J<4'[.(51F:DF$P3)Y<)+DUA@;05M9K"^C9\RU-*#4P+LY% -MQYSY9M=5<$%3(`-G=*`.:_G^<#AA!Q$2&7TJ]A;MBC&2_M:#$#(S6+?+3GK9 -MP\<1/ZGXE>B!K:+@AETBQVH]@X^=]4]164@EPM,46#L)&1=1LE6Y%X$XQ*U9 -MK(X'<@K!ED'#=93HJA<%CTLVM29`8S=U\RCFRPU'!$`FAX^?@YUQ^-34/E)V -M?FUT[WMFY$P:XB9JMXWK/1#6<9#F9U9@">@[2*\4Z7#(8N_Q\HL*O8!H[B9] -MYS97;)QSEJR2Z,R)T\#9N=(?5^1IY*4)G.N8C4;;'%`D8#&@3'C>6&R-;LRN -M.!6]SDCZWAEO%MR]0<4`#$@>7?L3UN95&.Z8$K?UMG.V3"(JWZ*`A,V=NG>O9&ANB2/C%%=O?[NU01`>QFEE9)YD:SCC,M%B;%[W/LEWC -MX4?8\&_ZMQPQH"N$K@0FO[CFS_17G`_GS)+R0$?\O6:6^I%C&$U` -MX)Q&KF+]&U5U9:^[&E/!C@4.P=R'HR]Q9@-TWYLMP6%MZ]PW0'=NA@P!K,J8 -M_IO^]LEK8]\8K:O1(*$7FCBC>+VT.;7,8.#>>'^RJEJ=X_D@=;JB9?BB>4-F -MW>8'A=9J4C.0#XJX<'H+$S:_B/M;)E/-,FXG8$A62@_;5#1%D -M)20N4E"MA]`[?/OU -M[-3ZV,FRL,`_&\X&Z3C0X58LUQ7_%PO,(Z-&VZR'5X'[(@R7.'J00"8MAMUM -M'CO;M7CUSZ.'J>KU+*(" -MT]^D0EN]\YK>=2%$QN5W\@``MW2];(,+,Q_HJ(`Q`P;@'"E$QODV>/2<01)F -M6T_=7^1^E:TA'#B\W`+7<:=0HL]AI#2O::_[FH$6CUC7X3H/"W_I[T8R7\06 -MB?=N!#"4DK-'?ONGUU^OP*45=G^08KQ;Y]ULV6Y%==X$3:E=@LUK3N8LL18@ -M7E`0][#62YIFA$BH>X0^A9-RMB#$$D8T]/OWM;JDS+`IOQI==05";!XL[_CK -MVA$0T5V!E4Y1\Y1!6WEAG@?$C`FJ>8)A$^J&Z/:L\^'AI11EU^\2F,Z+&`\7 -M+#DB+.*;]Q>33!]+*9TY?61P;]$8:G-DZ__,]#FI76>HGD,R"#5/#=NEU&FL -M7OYWRBR$TP-;(Q3EA&V"2UPD*2775Z%(]1X%"2BY4>Y"*='P)[WO#*P&<,#W -M]X-T77R*DB80/#"`BE(PIY$!4;1U&S]%@2WWV>2MFE5W'@&YU\F,0TU!YM_@ -ME3J[Y@,1[*A=;4B&@8H7ELH5]LT;.+V6)V@6=B7CHA4Y#1"6`>M_P,C$#TQIA-.<17]ZZZM874%&EZX"JA**6Y]1F%-T^TVXQ4@W1I8(*ZW -MVK#!CICY-ABSGHQ?72M%+/!`0N3J-5<;XGN\@Z1`1$IP1F>S_D0W63>NO\#>21>J<8JC+,N_,&[*7I,K[\;\=[B#"4]3O5J<;YY8K1HA/ -ML_8!JEH'@U)+:/Z!TFRGH[J44U&%M!EIH$5ZA$L\L:``@27'?:UK89-EZ>,O -M0KHG*O(UXIR-ZOZ0'Y38+FTW425PL+%>!R[1VS_F4F$%0K_O'8UGDZ:D[V'[ -M\UTV10?8R\6M?;^P7Q(75RZ=XA?E7$_/.$^:D:,S)7W95(C[=R-R[4EF+!5E -M,HUVA//CS:&VUW/8\9-"H\04LD7M)^2_>#&!TB$Q@0CE'`1[4N=-EY%VYKCK -M2Y3*&8E_"'FV#8"8V]WVLKA#C?<"&B<%5PH#*;#CUS*QZS)%!LA"=%OE)C.G -M^Y`DM)!NN`+6(7U#14RK1#1C96*;MW3BD2X@S,VY?+D+_VK)_RSY\"TG/LLD -MT*&[,[!6&;?:B$*H'>@`@+Q3DR$)Z/*$2V?_;V[G\:(I6AE#>82U2O=)*TP- -MSJY>+0_FI(A3G/6(K5CO*R1(G<;(J0(.'\K-[';]/N('6$<+2J=X2U^X!_D` -MH(??L?VPDD$W$`O?[5(OCH4D%SJ5D+6$([B#/A][4.P^Q!CG8G$82I,T_`_? -MIH"V7L'(/I2(S#!WTHL_?VIAC#'BH%Q7 -M\.O6Q"2Y>#O!5(;;#TH=^9/\D)0%KRNP3?E_U&`Z.K-CG>!]6KK8PY=8A7AF -M\%XQ+MXIT)7R:8!!/@)DG>#<4EC-46$_=7`JOZCZ20+)Y.*' -MM%O"=KL`!T-1H0\&*F)`KEVK2_:,([/$>XT+M9]P3OGQ`O2J6AI==8Y8\$_; -MD40D+'1$IPD$\BRY-O49>S^S&BC0_1&.Z:5KC?F[C3;A"X^J7-V$;=#45O94 -M&/O+/9'?H]*B^.X7)?^BW+XA34\[#B^)S,&MFI:/T?:7^+\'_)<>\,;/+NR% -MD@0ZV38LVLC>+,-K0[GQ@D$]P?VIJ+R_QRE'QPV7R>R\D4>O3IF(,EHS+O/V -M3O!I((?&D=1XSS`@R!%7V`[!AQ=\LRW0;K')=$`G,T9!V88GJZ/+%-< -M$*SY%T4'3*-1)/FO$4JUDJ,=I#'Q>_L5<1G8>@REOP`],+G,_%69_@]*N5*X -M:O4H^.MDXVWOS/U`^ZQHPD37!G)UU`AE:5,5E??'GY@;G[?CK^')\A9Z^-CX -M"&(E#P',R%"_:^^&8]1+Z$>4(%I[`8C\\@XVW7BIR&EI,`9%FV6 -M;&ZQ7!@$J0P7%5XZX#Y?\T!%]G]TN==$LIRZQGE*:Y]V%B?^$W21@Q(YP'%\ -M6X)U!R\@!YRTHO_/#6+$ZNNR4(;=4W5V!>@"%T-#F?]LH*RG<8M2(2SE>LJT -MJN>;AAHK47VWF;XJ.,#T$Q=_9N9?3LJ_FYN,DG-O*P/1ASF@VQG5,Z#P*"*$99*"6PBIFW]95HFR]*T6FZ38DW&@GLBZ,;S3+AA1$P6? -M0RYF@+:HZ1VD],KKR;8PQPQ)A;LMURJ7Z'U;\*O\ZW%*W!>&DFABOP-?R*]6 -M\Q'%00RMAC;\W6Z+!M)N0HPHB%&6I9)AV>/(<9.KD56UZ6Y/KU_31W1-%0H] -M\Q2F=*:%Z4%*<(;S:CJF8NPHB'*!:&HG+*N:3Z`\)J6_L/'GW8;;NWX%.5K[ -M)1CIUMK=H!R3P)DSM^%!.%4"1>=VS@SST/**G[-R<2F_I/E`#$E`5TD!T;&1`^I+,I=WP$Z*0>WD?Z!2G*7L1PSM?\ -M**NC#SIL6B<4UV%_RFZX>7),GS8B%:X$00%#39?#X6G8Y%^/U`J<==8XBG1X -MNF:&/,)7B*;MQO=\!CMJF4F487=$&)6#^RCQI9<[K:H=ER7#Z?HTQRL;(*A3O24O< -M<#OH.)`D:#V26C#A^._9BS;H'[?#964+RO043[$EWBR01VOFK>Q4ZJPH..5D -MDCH\W?I:'V+I9KIPL4Y>LC@HT(R^GE]?MH6T)0Q[.!^Z&441Q10;HI6P!Y@W -M+/'(L.:.`HS4[L-V`PI1V/`I+TXAU]5D7_&+^R+?RY31:%M^&=4.Y#9"G>PQ -MS*H?50QJ',(1-'H[.*JN)/;G-4:6@6Z_(6Q#Q)7>A6``=#U!?,8`#L;/1MS- -M!EO0M4SP7%./ -MU`IHW.,=<_4>><^4/Q+K"=G\'[MRD,MRS^V4`#/BS])8SK+#*%/@3$0S\+5' -M9Z&UF](VO!*\L$S]!PMX3TCSY%L$W3;\1QU\P$MI3/!>XV.`QH2OV;?O255* -MZ6;YPPMA^D:7I`ESE)BN>6B=K>/KA!?;Z0#.&%. -M_]F.N/KYJ6P!!DRSK.:T!)8WP%'.TO9&)1LD";IG`KJ(!D^L=XX\6>Y[EXI][C:1@AN?8W$1Z>5QY`0)0:6-Y5S&P9"F8H?C;:L\B -MRQ4@PVVCZ[U^!?#R=Q.\IG>0X>+K&OY?G2Y0H=#P9V9^!V=Q-8-\,`289CCO -M*)EX1'3=.=98&MRS,O&(JCR^^J1[9;`Z%KO\>OSQ^W2YB+/8,;C:#4EI09U9 -MY]#\Z_+/&%_1HZ&!L-%Y<8IPE%[`X9^9A(Q!*S'3N]ZV[&&,*QL7"EKFY6Q[ -M8I@F;C0CJSC_7$*;2\4![)$]JPB9DG;X<&`\\][W_@I5VC+&O)Z/G00U*&?N -M("[)/C/>R*/+3E$_*9`YDZQ>NRHN-HF%HS:8Z<]W(VPTR=BZM(6*^CPRSM(B*4E&*3 -M5Y6UQ3KKW2)Q-PMW+Q2,'XC;Y):T,#1,M'^\B.#$I@3 -M_RJKJ0E%"+3*6_.X$:UT&MX5U`J-B<;X6U-[36T'&!.SGKF@$[;P1KW0I/H$ -MPKXRX;L/SS?1$OE3HV!O!$>S+.*CT;NVS`RLXS9_\O>_`RC5IR``<)U$BPG7 -MNJ-C!%%[`^[6W(,8J/*7A\*75G$EEI$E,6-ZZD/SNW<\5!+/K66^*1U7G%S< -MYB'T61&&ZKZ3%WO:]Q0(SG..[RE3<$2"CE457HR84UEKPSA8&(\MHW29CT75 -M>;SPA!9FLWD2A2B*JT,W((8XS\]1,V3BG5L@YXK!JS<6Y(,$NVL332ZXQ*SE -M@/&[A^)1>T(J\E^!E_U?S8-QU8K5BF2.`YO$G18R(96;([T;0>SNM4R.UF*2 -M2(LKS#V8Y=B`XNY-:2'J7H`'N4ZWI%),3[IT/*8Q"9+VQS2(Z5Q -MX0MZ](%N)9#"_O"WI(J_8J23'MS1\.UNJ)0:^*OA6>,:%YC^,&"_!/B&%/Z^ -M6$,+#(2J"IZ@4RBM6$!TP*K$-]6[XSUL5VQ>)S>U++XWN.$1PMEZ0<*L:FB5 -MNX,N`4S'DF>`V*HM*/SK+PO<[<*4)JA$Z#<>D+G#%X(8-0O;].LE/\&@L.NO -MOSS)*LM/F#UHYEFEP[XT;JZ;H'6OQX]IUXN]Q2'@-^R0N`K'$92!9X$FUYR)KKJ^*$B%"3+YQU -MB\"^.":MIN*%RO-G6M9YN.DWU8_U(BU+$O#I2MR%4E37.&?$%N^$/#'5"@3GZKW$*TON"$7KBBO:AW+K%VARVX7P_Z2.DSEJSO[7X=>MKK-:J%[$; -M1,8$GM;NL+Y^GM&%K_H^'BNVXHS97OSHEZ;UVVAX,"J3F1GY`P*/T5$KK1%@ -M+]U8_/,[X3TO<2N2'8\S*%+^&S,',*@F[K([GQT16^!C?8C-WT`>V[K-$D)/ -M8OCAAJH\=1=5A2K$Q/Q$XS6H43#&EH$`?`M^\O;4CU"WIVV/GNMYNHPL'6,J>$MEC/_!XC'N^R3)'>A) -M:+#J!877OWH8%LM67^]X^RG6!@.4M(-?'85R43'V>ONR9O!=A(=C;>T5FUB4 -M?"`?[/H3ZV*[@WN?*E\;V/54,3>W#4=\G&0@4&@N(Z'DYHSK*0MSRJMV-DO5 -M)3I`%T0<&G<2G[,EMXE"HP?GPR!5QPW*R9Z*M[!;#CE4/Z?8;Q!A[#"\2;!S -M$\QO&1\:NE!_ZB,C-1S$5?<.,K)ENXN2/)]>X[QJ6G`,CUVYZ_FX1`/(&A7_ -MMVK^'&SN`YYZL@)/H`FY]Q2NQNP!BF'HPK -M7J1+)AQ#DSLR.2VXR+D=^R5JCW[FW:,*='[4 -M5<_)D@$EEG+=TX'97"N06;!&6XO3_SL4!BJ@;C<5DN85:S@WM!?O,BJY#/)W -MW"Z$)C# -M^E=R06ZI/;GS6?E_6PQ*XCP/]'L8]OJSI -MB*3A(E7#(&%KV^-"OBV:NN5#<^0*LX8GRF@@R:V^>[<6ANRR)LQJ`4,4]FI] -M&)+"8:@;+ZQJN+W7!=T\F.MD[GH%A@W]=\"`SC].(S#86@1)'RFI_+[D/#X` -M#[,`-B=:IV:>X+59^Z3;:GQC-J7=N?_;&P@_3X+$['JLSCP?/T,`5R<4X+^! -MSX(C@$B%M\=$.OMQQHGDPPJLH^W[B/@-PB)*)Z!Z;]3O+GB -MZS;8NM)13N[=_NB/3[V*"MD)QYD:WV`XII'<]`YN6/6T6F"%D]Q%.J54?:Z# -MVYIM#%6%D7)G-C,LG2H>XZ!W_[^D#MV6W7_3LA8P3T4YB64':;ZT"/+E.^,@ -M<^TW;^UIXJ;(?&ET"4H'+Y/7,0$`/RL!D/"X4DU;3/A3+M-ZLOQJ,7'RGZO2 -MSB5.3>9IZ7]BE!`T+ZRL[74W>,PI`$UW=IT0)EKTD55D9J)AUE7V,NOSHVR+R0(M;UE -MM8LRCG%!;K6U@)!EEIDM![.C6]^>IDVKC700S^P(&JP+`H-*[;QI%,W?J-F -MG1M'/@H;"98[<1D:QJPB/,'[CQ+9%UHW4^K%GP551%Q%JECG2)11JX-N -M58I*]L94+1>Y@(A$E/.QD&T1/J6>^FNR0\;08+L?C#%M)#T->9M=^;CQ@E88 -M07T=HEF=TI.ZUFK#V*'>%4Q?X:V,HH2ZZJ?\CXLHN^>G]X1IE--@YSV -M1G[[M(R^M'F+C$BGY`/<`58(M`A`+0F=@SV]L4Q&`,S51U&_D,/*2A_41>OV -MW)I`4;E2>^#8^UL[QB5VKQI%,%?L<)Q'&S(WGGP:_%4:ZR;8R2A<%#D;S]4A,'ON7> -ML\T?P-)6PF;!?3H&C&=IH)N3]G6S)MM*0[2.PWM6UH.-P-:!AH)-9^5*6@S` -M31IBGSEFKKUNO:PB9;L8%>]H_XQ]%,0N'/.,$*:T^U+=!A;H3\/Y(,T#X)LA -M,/@[E"4%Q(4V#[F=_ZURVC'\&QF%H -M(=5/+O"XOX?^H^ZG[<^?9C*G:&FRE-E%TSE'AB6OCKD*8H48A!R(776+A(53 -MJ5=\`A%]NVJ-P0@J0?LB[]-*6Z"FEQ*OZ]1LSE\CU!%(D>7QE9=EUZ3F.M13 -MU)J@?DPY^U\>%$>N]83_`A"0LSQ6D26`9@C"SKT.2" -M3R)98I\O?3I>_:+O-*[G+?6,-_K]9E[*:S0R>MT@_OI\^P>B9\SM=7$N<=.5 -M2_?I6+5):\M]Y%C0ZF.F0?2=CE]6'`#XO17,'QJ]&4(2K9`EQN\NEL7HJ+0L -MKE`V:AE\A3?,8THE:K>8Z0?_1/\T04H4>SW,Z0UAG0G?XYPAP9SC%T!N@WQA -MFG1&HL&(&MU&@*.C%PYFR]U5E&:U&"5;9!&LB;K:KE1(;DZ7=IO*9LF#:KPM5> -M8^Q#,\"('4UCN]*)B4"N"KU@^GO",CRFJU)>N_Y7,`2/T'=CR17?5@=0\6L- -M&,C3/N0_)3VH(6UDS[]=#X>^B!SBEL^/LI).,HW8VJC'X,$.^GFL]`YT]QO5 -MQK1XEU:X\?:2K!WBI[*SCVJ63I>8E'>Y61'LX.(XL1LV7N$9-0*U:EN>U'VS -M6=Q2.A$501UPZC0"C?+UCZ\+G-W!:8IQ>_UIH++QJ_7^@P(6G((+E["ND>=5 -M%3XL1,YV/@NYU@2?!7%*5.J1G;*&)8U=#$FRZE[PLF(M-*ONHD&KTFSD1(6R -MB4BA*EF#*1:\;J>X"WU5ONB?$"F^;9L#+YTOOU1X4W?L-*/K1A6<;F\<0.O\ -M_6,JM_]`.7I(B`#D>4?'ZZ_;RCBG=8#6C)K(H35E(LA/>AV)ZRN/UC;2PP], -MT4J&IMD1(+Z)N!).^M8E*LF\(.#)"A\27*^!E -M8H64E)-'C0ML7X3]=LG49YZ7A]5ZG5/M&!R&ZD4&_\P,%'?QF"FV:&0@[<,= -M/0DNJJ3I\=&5@4=N'DXA-:R:O#-D./1<^U[60PE-B5ZCH,27B@P6TC^(3BEI -M6_.9)"_(HT.!LO]4#SUY/,]G&_#ST;+6U\>3UU;=):^+8)YKOA6=AQR5$?NE -ME[[&'2E\V)^Y>?826Q>,'`%N[&NFL3TW*YUWFP`X(T0A5G9;9-8SY/6-)/P)/^(24V:2 -M>[:#4>L4KD?Y^D9[5/X`N7Z;+6<>$T(WPTAV?^Y'B&E,OP_;VF?HL9/,2#GG -M*49!*I\&214-E]M(+/O6,NMJCV=FHG+=7%4IC;6-N8DJ!JH -MC_ZST/4_5/W=Y5I9/$2>'K&*.T_L=H8`BD^TQY)%7D%X(B658VWEB]G\\L+, -MOPKRIJ@69H3H\HT-+O]@MRQQ-H)5#]5!??BM)^>6@_!8^V\K$Z,.]*WEX95?H8P'_).M?G%< -MW`M0&O2,@@"F@<\P%(`5M8+.5@P+5#ANRPV^/[J_RE`2@?<7NT5]H8A9>&>' -M1DV9]C*!^HJ;5L[]DI:U_4<54Y:S;_K#/K-JU"-5)O;L+OCUH1L+R\3R-UAD -ML%A7A0-P#_E&,M3HE;%G^`]B(K&YL7SX5PNOZB,7?_20KZS`1']4)HWZ/Y(^ -MMOV>!A_E\OMI&;KN7S[IN2!;1YI\/MO%;LO"LSLAX0\>6]NN -M]-@VU_7JE:5*C`9HKPF*WQN)U$;V]-MPT(^A>7U$#K=KFEFIF^/3?NM+8.7+ -MUB`K[?!+WN+'Z2#NM#KG0M$JZ.\N`5JE(HH/Y#?EA(=N]T3E]#!6X>SXB-N8 -MA-ZW0`1JX&I@^4,@--7?B?]X'Z_.S<.RD&05G,OT-:$!23UOV).&)TOE$;OB -ML^*9_06SMQV$74?B885J9B64W]'E,OH%8&CAO]U1BVBD]GML`:5E.GA`'#:M -MM'LQSQ6E'TBWQ)F'^<<*C3[:MLY>?RY:_&Z_T9!GF[W7\O]66E0N+&_4(9WJM'+X(/D=&Q;D&_J3*"(G(4P]Y0=;;+E6 -M'VG[$>JF[?Q]#>"8>YY1V=I'EM'E+9B""^S=W6/IC`SN@<,K/'1C2_XS3R:" -M1!M#)H:N8'<:S?2)Y^=@U11KE3QXRX3AF^A@ -M3"!XR39%EWZC-%!JVGB&6)616+O\D\MQ%3;MP(M%Z3&)A#^+!#N#Y4)F0"8( -M@`$E;5E#40_#3R?//9[%;_P#Z%3OQ0Y(#WF19W:G.HHTO^WUDG?EL-/DG*LK -M<,`.6Z=!G7/M.^".)36YKC-;/@6&Z."&W81><98I%4KI;`+TN##V%`!D_5_& -M-,+M-2'?5`%%P^LY=VFN)-LOKQJMZ,"HCB$9IGX`BO\GO;DQ[(/W\8HR,58G -M-WJI."B,32"0FE1-+W@4+=V>LIJ6`SX<(R-JU?K(46#B0Y0IH14:Z9;MOH/3"JB6"N_GD%H/%L[,@JYU#];5*MK@*HLJCQN5V*@ -M?NG-JC%($L^?#@;4M"T`3&4`@\B#859J]>O$_:H0(C_(DK,YF(Y54$WFURJ%+'UR -M(#=#F.223EU"V.Y_,5OS[E&V?$WF>^&O><*XE#D0_-JS4<:B*%\!7#;CLDNY -M=0Y$A0O$2*9;Z]^"QH.>-3.FN=6@F\RYI^VH&DU?'&N(#*&*V"R'):W'9"NU_U)Z7!O'.3".>%%WJN,L74>SQM(4I.@ -M_[%<,)^.S;_K,A8?K*Q$8ZH`F>E!HTZS$9KY-7$VQ!GR/Y.:_:"@606+YWK% -MIU@/XTT\DPF<_Y"(@OIS@34,G/&O78N]@T\IKT1N&#XT03PEID(1@3J<3U64 -MOY5$983R?>#T]Z!=X$=*Y\R:Z*_G;1Z%!VLVH[5E)DS3;2H31#NGZ;!",,[G -M:L5.^$K5N%[=B7;`53)T$G/H_&MSJ=(6#\H6;72!RM+MM1_`A%L@446Z6G3# -M(0D6/+I>K"]B,AH21IX`2-"W6=GY1(M"%U>F_AMJW:H!#TN]F69"LPL#SK-7 -M<^E6@SN3#(GF3TK6G-9.;N@M^91*Y/0""N!.Y>S?P@S*"KE0O9RUU?NI>W2ZOVHP0W8B -MWZJGE6`^,F6N?VHO@*HJV[:]ZW6Z)27Y3H3>CJ0I]4HF)JJAI<;2<#J$0NPQ -MM7`MP@9OJBS)^)+#NF7!B(`LS?SG)Z<*/T,++KGM_K4YORU/UW^P2&_U8C(N -MH!)3T'F"`L9RF%WLF3",NOJHEJ:U"GVA(J4N!^^%*PMA)'"\5PY76#,5)*[IQG\>:)L?F/ -MM9>^5M+M6A` -M9:-_L9?7!9N(IME!&^V;;(2Y@A#*Q[,=_,7M=6Q]9MM\!^;D$I*% -MJCZ,B,*[?"1`@,_7BS&I#KY2@%LAH$;O;(R-9'7W^JZ4M#L@)F@>).2(L2S0'9&PU/">+MAOGHHH: -MZM-B0`5_+?R_OH3R=9*%A\JV:?G;_?Z,I;(`= -M!S5RN.>9_!("#*AY:-]VIE:J=/5P^$I4D1?\OSSQ"MR;.*-O2N%>4.V?'<2B -MB8[4M[L?]#:.+H'T0%!$JO-:E.\ -M,G'4W8V+.<[/:UR<26*Q9C,-^*1U0C[04/:=SD:)K^HYY8P@9&'$-N0O?`"% -MB\=#3!(IJ]G)UMC!C5U;K`Y3]P<9VH/9!+HT><[O;@'XG,_TV!(.:OY\&>/# -M,+0F!P`M+V'0Z\H_;M*VUZHT39:EL.[63D.: -M=_=$1N#CBCTA,4]4]9D4*NV4N'*G#BM&V8OD^_Q>::-YV(I9^WW9/@PMQ$K' -M27L_S,T,O>P`<\9+.-D4#71YQ@E5XZ-80J3>UU5H!-K5K1&-W#]^T&.'>E(D -MC7K6J\UU&*#'IBR0&-/G/8+VHPHG$R:`972%6^X4B_4N7'B;:F(?JP_!/!\@YI=-JN8%X7UW* -ML/07="&0N+B7L2[C"W#&#GFF'+(GZG2;T74?3$%V@_`?M/Z+6=^4LA<*/5S? -M1^62WTG*O3\YZ-C^F3]*6\],QR4D/Q1T1X(>!Y4#-"]!A%?#_*8;?G`18`_( -ME@RNFJ):@N^-50R^C_5%&+$>5VHZ@9U?-)G$"%065!J::(R7[;JI3R_PD*MX -MF64>JLJU=4OETX?[]M$-=&;RS)W;O^SB.,*%4@Y$!U3DNOLO[`K%Q/I/!]GK -M8X5P20=_#QZR;^8B!0Q(Q/$=#>KW/KY"G!7C0"`:56N-2'CV=6KM&[^D0 -MHBS8^`>IW:N_N.E\!@Z'.R73/P;]SKF*HNRF&%/X8I4$2)9+W'HBWKYW_QGI`8``I\S+AJOBIBSGK/2R^:;?GLF -M\3B"G-$-@VKGU%34@WQ*<(F`"Y!J@%`V6=%8U'A4^@;^OT/#(D@[6$4@US+6 -MML[%&1A>_`W\_U@E1?D!PB_N2Z3I1H:%3&OB]NRKTZI)%V+LM.[-_E[!L9TS -M/-DQL6D]]UW3QC=\/'D4A=/6:&%?F7YM'2UKN]9">C/ZT'D1?M`:1O'D_[1W -MWW=N6:\2SA7HQ*X@=)FNBM^^+X=Q6U1&8-ZN&C]>U66#O7FW@*%)NN4:5.H* -M8&"5?&-D1\=HY*>G?NP:=6]1X+\`]=+!&`R#FL5*V=78\Z`U)DS=G\=E$Z@- -M/;Y36O5M+@V@>I53FPK\+J)@;AY_EL\,=;.:)&"$-NXGNP7(3*=RBP>S%5"L -MOVBT`OP''VW?Y78S($S,)_$>;^S`,O` -MEX67DL`;*L^-BJ]0&I;^5C9M!'/6E26=P*U.S\-!W+8:0V7/>%2'FCOYK/8K -M[`:E6%=S`"C5[]Y$1>=>_@_7[)%K7XSN_SK02&TXEBX4TBR89!H5Y0/"1_ -MI53.!0O8/DN:A(]:%3B]"*`%Z-6+^H4&\A_'AB?P+4TR\8J=O-1&4?_2`D!+ -MB*+M7(7FYIJ^D)82)3$((W46%>;G_:JXXI;;O<\WS0NQ+7P: -MMM]8>W%_*14`KW,H8_@Q;\[9/HEF7J6 -M/][(8K-,70M0(678W==RCYI(""XFN-KYWYTD@.U>K>)B(O)&;J08#">"F#;, -M9?4R'6"V$M:QQ[1XV]+B*2KD9WGK@3^S]E"'0^7>;X$D7R&^4[Q[AA(QN._, -MZ.&R^R97WGQD14X!0&=*&\+FQ35W%B9&Q:\X)E3(*\$GH5?!.=,Q.@1E$W7^ -M4>`)=[[&,_\8AAC%CI[T0&ML[@7EI3(Q+";/X]7#[S&MQ/8X/]HAB$Y0?@A( -M;*#2S4Q+P"])+V%NADDYU[#P!0I"B-,Y^1DM[*6K'^9T+%4H9-1XL4G$0C`) -M9VA/TR$#C=""N9W17X6V4@L8;6D>1@\6-Y+@M_6M*J6<7"F:JZ@KR -M-(>UQA#(3V]+[:/4ZS&?P+:"=M#S1D4:.G_!1B@R*7#GW3.'I_+;B>*&5G&XC&IQ1 -M&K3(?^IHPO=W06S&$JR-,'!3'!?1O^%94(8[*5$7[:A?+_]&8R#]@!PH=E!S -MP&7!JDIJN:^S].5UTUBHTJ_=5"M95[)DX!G-9UR*%WK!BJ:"LMU<<47E)82> -MTOMJ.L1]-]]PDZ_`MKQ6A,,7V&3E-P/Y^%93=#VD!Z`JXQD#07%L%ZSN0+.X -MG>J'E-%4^'SVTQ7?[5'_M+"+LA -M<`_V@7M'_8$@([&4VF,K+@C_#@4Q.9,(7GK%S:B/2F/:JD?.=PK.<;A;N21= -M1XRO>.'`DP8;FT^LR_%%("X]7WT-_B*7ZFR==V4BS7A_%W$!*LZ/9>@)5\,F -M992CVBJW*LW?I@;P@[JJJN6OC17:G&;:).R"E -M8QQ[^&Q.8FHY5!A,0[J96"H+#I:SV3`??L)E"!?B]6F`4@.]?`%LST0@%(5. -M6"@LC%Q!P]R/V\E&+X:NW")56]R6IS+*W4V,.^D9[*#0*<47*AZ.\_F[@7E$ -MR/QSHDU?9AX6S2AA)H!+P<=4A)=_2:BO!"78"1I/?4U]](F/$T)VR\N]@7^: -M_0%87E3P^1KWD4US7[7_M7/[Z,EP3'A_E*\DMJ#`F*X5,M6!N@FL6:"2>&,X -M"<$QG;*UIA89VJ:9Q$5<(T5^5\7WMOT)A76CNMF_:2^RW'%'5L-==AX.9>XK-AME:RYY">)+^N;0K(6L?@Y -M#889RL>W/F08&XX9KU51TRBPONQ+=48RS!^[#%T5[`(;T -M/DG\8_Y$"2F-PM@1,KH.T6?*"?F]?**V!B05:%9$752Z*KH^U^(P7E\H3"F# -M!;@4:R;8N.Z"`MZP'GMDA7TG!00!VE*_`4P(G,8,@)*$79FDGOMB]4+01^>N -M;:NR7>:V[4JC8G#2W_>"7BEN#I@&+7<%+#H_AKN#Q1-$!MMARND-$/Q[3TV>;CGU"+Q(\JF&,/OV\W-M3-U -MO0.M0J26"HDO^99Z:$9,:H/ODIP0P!GHU1K,AQ3WZW?R/RV -MKKK39U6)"%N.O@/I(#Z$(U"KMA4&&,FI(>_(69*5(]%[4O`O-U>_0^BMFP@F -M'"B)]*!/W"OHY#VV%XM\P-O);!42`(C`1`J3&VJ.76,(R[(WKJN7I5#H2)5& -M+V%_5+J'9\V"98!F&SB(*Q--(C -MF@0=]:CPAK"L*1??)M/FFE<=`ADQB7G/O?9M&]3`WV/N[[_9#HF,V$/5%!"% -M@YOCOL-T]3P(%,=>$%KQ=U?IJUPO@C7_:H&K$F![7$]7W_?/67F`]=9(YPZ/ -MHQZ#I&%S./9YV+:(0AW5F^UHTM1]A`@&[6K:.0D')85`PYJRW'BLD+/-JGC= -MP#1'+HVLG*U>17ZA:*:(N(BL@@'K>)OK"'Y=?PORYH(3)]^AB:20B"/I:E?Y -M-QLQFM$&MO#8D'SK:=BZ6DEL>05H47'LA=FA)\]>>FC_3O7GLVWO%`-F]9KZ -M"-DC$@K%;NJD41V8G'H/R*"E*MA!TK:?%0"P]I2"Y/&1G:"D8)D35&R+_$C_ -MNEF;F2_'/4^("B@^9"]FSR/7V>N\?7L<+$U!YQ@H>)Z`/**Y017;7W.;GJ^8 -M.R;L"XQ`OR=R(6;K]<:=5O*:::->-?R]\91(^^@R!>//`>"NP1-`^:5MMBJ, -M81LR54_WE_0Z$2F&OZ$-J9Y"Q-BG6I(G4%YJ8HTPIWD;,WF)/I;LM&8.I9ZD -M_XEG+U6!F<*LFID\)8QHM9B.N".8ZU7*KQAK+V&# -M78E\FL!,XJ-=U!N:VQ$Q$9!W;O=*6!-I0BB8ZW"T("FF5Q^D[WV[QIN/Q:VY!HK%)H?2:%L*M)Z^;%PU- -M;+VYML'(\H1"?M+;O[>B4J<'+FI"0+:"7XO%[;JO2G(?7WDE%&1UI.N[+[SQ -M%5=7<_C^_FVL`8VORR(;9)P>ZMX"\N.2`F"F/]4)5VA$6`&K -M#<$B#!R-9'5>!P*W/7IYPX$>=JN>Y:=F2&NXY],EC&@OBB<.S\J$&OG?9.^L -MA@._I=1]>R>]4)"*$U]XJ9N>&[%/L-&`Z6'/1(3@?T+P*H<;Y.5@=S.MVO== -M%22,P-Q?.[QLP$I;1Y_#=Z(WD:%U*X2251'W%GT`6S -M+=JXW?$0QOMKZ&"[>1[X^-J)',K]-^.:5LX:2]H;Y.!7'#?>Z_&\Z-'AP^)G -MFHX3B$Q^`9:8DY.DZ:_PIQ:-X29\RB2KU*=N&J*%L/;T'>%_K+=BHN?DI-$Q -MIWNY@FM"_\Q3?X%K\$@)ML'X@&ZD-OTO<^O1,2YAO=)%US=%'J#\M''MOQHXJN=7 -MCJVK3J8I4=^MT:7/E$Z@GJ-F@`:]&;0[4VL]%M>"BN:)8`;B/@1,^*_8A#G= -MIZPUYIZCN/>`T3R*N:T0S'7##35&HY[7U/\BCA"[1/NIC<$5!5O>&RC/FYPS -MDTH5]74*KSMQ5,\RIY@SF_"W+^?5"D$G9+VI:@*$$E:#1TG -MYL1])T29I/?2\O5+I8G0!F==W,658@!`6J1GV\!"J4]HL$BHX-$A[A$/],/! -MEZ[IIFTB=$^X][C1_E``"SX(8QJQ\^`BYK5+Z6W@A_* -MH&>].-?.F8@C"U3-/>12;2.<-%6N82G<4EEE?AP7YR#:?)Q8Y<2%*:<^6G4R[(/ZFB(:R"]LEGVO@+B$T=.6A8.ZM=IQ&.'K=9M?W" -M0FH*LDQ;!?U.DJ=(`(/N&?HX+`B[,[A]].&O1`Z!+F6W6P1)\V5A/*P3NR<- -M//AT_+"5F/+5H_A9QW!$MKW^4=#?F1=9*;[-\&^A,:Z`Z.N'\ -MPZ;1,"3%M!F&1:;'$EC&OK_4FR&^?PRP'>+4N;MM@"FJ-![5.9G,[82OY6GN -M(NC_I$2"+2:!FO?Y)R^!141&`_`Q"DU%45)^/O;6H'4M7(HRC?7.67%;+Z)1,PI*1 -MLIGF\=T)`"33!_)(@4F-#\;.#0"H>F%J23$/$AG0JLF$1]G>8G#6E=AREW-\ -M)L?>`T`?(&B_<4T6&)?1"K^#FOM+:'/:!E+SV.*E.)X"64T+Z>5A"D;L@+]G -MDY%J;QH*!<*@>3%G=1)5^"-"QW8Q=FTJN)6/LBJ[>GH[!MO/O[1]0&QU(RIP -M3+T(XZMS2\7(!M?>]>!R8=K_`.V.9<"#6ZF68?'"7%2(6H>!/V1^.S#MCPA, -MLXTU8-\/:=;)APY?57'\7K(Y@\"EPB8RN2N&G&CS,_^I$4%$TX1FQV?\&XA> -M5M0TUA1,S>,UXHY!*'H950578Z;P*V(;-&+$35NI8U'1UF[HIU#.C#25=T(0 -M=$T,P_LVO-:[ZJ]A0Z38E\0.01>@$5B+0)(V,5NYO"F/EN4-F:9\8G#R[8S&T< -M.(]EB,-L>O=;KB&.F:5EF>HG8A>IUO^+,,"JJ4EPSG9`PT[X;>)IM@7/O5ZU -MDYT_TBKSY=XEJ; -M&H*7.\]V>*Y*++7"(5&`::.A6R)MC0$*WGW84POHLAFQ%1YP+81H'/^)BE?] -M19?*=][INL]*\^>%H"K\YT^5@1;IIC-F2&G6>9:#!2X&=D@Q30X(WJN&?RQK -M_0[":`GBF*N=EVQ\83Z%X>!;Z<#91BF1U!X>:Q1.`=NA-!B(M29QZ]%!1@$T -M7F0:JAEKD_Q@=PR&LWM/X?UB\CS-WP,$0<.2X:^33S"67\[U[*!WG4Y5L -MCO/\)ZO4KRE9R'G3E$;O#,VR^>'CQWG/VI<18M-=#@2V`47[4^6'M97CM9-: -MCKD30!4VK<$I,$%[AQR8K7_,LA340I^&),.9PMTW![@7DQY1E`XN`DRV`)IX -M,)JO58-;A<^"JR&S@G*7NX43!5"0).1(3F'!?P+T?XFA:F9V03A_32^CJ3Y: -M30_O82&1@X:R?2U*)4!2ODQZ'NY);VF1OM@*9`R1Q]&FC\K?.!KNVY.%:O!U*FT5-$&"^?(E4])# -M[_7"]U?1?A.9+1BSX`?K*%'USHK?>/UF>C=6Y*9O<>'KR)9'BSJ75EY'\+.( -M9E:D/J(>M#\M5(AQP09H=Z!3V<&NFPIV)VD*[UC?])F8!8;Z\-G -M2*!O:PRVSG-=1);R+;M`(MLIZY2)9A!>)$7(V7$MMU,0RI>9IO"LZ3PN[+ES -M[V:=]J=$>M\_+/.^PRYMOH0\^=4S=->`Q'BXQY3C#$"-A@:T7J%`';)*<&>( -M`=EID0O4&X9ZGV(@S'G`W[&C&-N7TH%6!T<[9ZT8/TY)^3QV&@G<'VGO""Z2 -MU/!=9V:TY!FJH;Y4ZUC@6W5`3O/X>-2(77RC5O_B+,+W[-U))O3H -M.K.XUW@"MB5(KL5R=$-`8A"D"S#>;I5\)<,??D4]4YPG]],,IA%#IU*]C*>)CQV=^]\/& -M[J`EQS9'RIU@QX'HD!F6%;8I<[!Q/ES2&UR=)/L+>E_)NFI&T%JT_9G6\4Q# -M&_6MN!:7.-F-F_88$HR"$1:LQ@4?[`X?2TW0(JT]1]+3/)]\V`"@NWI -MN'PMM^)%`.Y84PX+\J][>U2`Y([$TG8G/WLS+E^O()2B<7:*3JE^5-]PC#4! -M5,W&T]<*L':*3T;-.0A!L4;#?U=&W"C`MCF`7BH!=% -M<[X/W4>:,^_Q>FB]Z91F)_3&(%71F6!\AI18M_4V:UX%,R\CTN[!?IUSI?5U:C0&WG_??-TR&K$?;3#F -MV#8Y0.@DDJ)E)+U!$5`K+3@XM-0\Q?3-&*CS%8K$8&"G`A=#((,'/7^O4W'W -M:<,DM]<(=5L08_-';B[?P7Q:FM&?W&A/-\=@WZ672`K:9/S?GZ,]'![]XX(O -M:9RD;H4ACDE'B5+Z1#JG[0_\.&LVO*;IDH^I^/7O&W0+IJN^9@4]JO'N[Y:] -M+4?)8*DDZ#S_T@2V76$+NZQIC(#`$MTZ,6RNUL: -M::F3$2EQ`1\AKD5_"?J#ZTC-TVW?YF2_G*`<<>=15@MQ3B@F.F4`(>CUH5C+ -M?[UK[D_<5GU0]LJ6;RENWT0VQQ$OJ9$"]U_.5F&<3" -M2?A"24HRK>,`4OJ2"HH1(;D4:T*JQTEU_8.T8!68``_,;N?]Y0T:Z?:@6F'> -MZ6".?Z!S35Z`UD1I[>12_O@92ZFD3$D^Q@%@C%TJ"6'_)'Q=U+.PH7L$:8Z8 -MG'W\4959=XT+&>S!`\X.:6#'?3*I_RSMWGB[:0,N_G=[SA/&BBEU-H)0Q0]\ -M(H1P>2Y'8']D)6&`::Z,E,'%\UN5#_T`/#>1QYC_:&38(P);Q3)?H359=M"* -MQ+OG++/TN:HQJQNDR/Z&-TS1C-:A=:H%&+U?>IVIJ^*IFPSQ(QS637MJ -M'2,#"X5(-D`A!,+EZ2Y3K_GQ9$UZ1IR\G$<#G\!7^+8#J()%%J>Q,74Z]%S5 -MIB)KH83_PP?;YBK\UJK[5K]2>AJ2Y,XK"24N8*^2^8J&JG"4"Q#K!UVJALB4 -M:QC_[M'?VLQ@ZT6BQ:5SRZWU;K6PWIWADOVZ;NRI.FJ*G01,P`<(ME88(P-1 -M[9:/SJ\ZX>KT?KJ74I5ED*3%4:RHC93'()B_H+L?(%R"^YEC)K(;**S&AR)= -ME9=A$E%U^MH!^[]U0CX4R'''VA<9(1U1><;%1%Q.(][!#0EC8[B:J0PY$>U_=S^#5+PVF>;ZY9O5(R([\23_YXT>/@LT?M>#0V6<6D:1\ -M%M:D:(%.+A,:J/>77':B.`708[S;==^M59B[90$U+M/TJ'HOWR$L0BV%EI_A -M'@+_E2.\F:S8=6&A[3(@?,#&V% -MG$%[5F]M$E)Y#CU\S%'U$^[\8O\W3$YF^/@W80MC#EL<"_Q55DCT9Z06>N4V -M?U]?Y655KE@TU@R"G04W8Q!/.$$\Y5>K8ZD-IZOSE3K'"M;@\6&W91S/YFF6 -MEOV=,PS?1B:DWS""H$_C(NP1KGUB:MM#2L3L.,(_JI\\<+FRRG2A\E&^TOW6 -MP:YX+KY//H7N*23OBK[/(-J&?4X+VQ*,*D[)'5).Y*IXP<^[%?"`>BQ+YXQ^/,LR@E(48 -M8)UI#\80`NHV96<[?3S&$^8ZIO$(4X9@)%; -M353VOW>%3#W[E)U$VLEL.0>M+'L^)UYS\,&;PIK71D@3K_7+\>@ -M^H)%N1AB6AL./F'JXDA+'Q=,\Y%BC"_JXZA<6='OF'TO?1#>DCWI=I/5AYK/ -M%P'!,Y+Z$7CV!VDR\I\7_9>KG6@&XKM+0-E2>[%X:9K6 -MAX;W>JMLF[.BAT(EI,-_7:,)[Y81OD[1F/&<#BJ#,?O[?\Y%OS9$;4>0V;J( -MLKW5K6D=)H,J?O$XH@$?-79,A,30*!VJJY[*EH)0RE]M`-\]3:>\BK60.<)7 -MTJB]\8"8.]RC)5%@@^NA^)W`7VO*6_-',(!2&1.&?^N,#+]-W]$C+CZ;4!&* -M.BLUAT.22/EU*WYAAI_D">2V&%RSCF3*58355CKW^DJ#HWK\T0NBQ -MRCY3%)>._^?JCOI<8ZCN,5C&^,E8AXS\8ST5:*=6,OOS?(QD/3,"?9!'.G/1 -MS3I`D([J`G"6AFM<0)T5<10Z(PLFO[4)"6A]\TZ^7,!_EA/'S*TT\.?'(^FA -M?K>VY#[(83*;!1LUBT>5U,+HJ3X,'C&,.,]RH6AE6/_^0]D\/-%F((SXM-V( -MJ0_F9[W=1@N/S#(/MDUV!?S^4@3K;W.JH#VD8\@I',889A2^#+:\/6KO$M^D -M%TAF,PZIO^&/E]9CN<-`FS]8CHRF]ASLZ`R8R*F!70'(`\)=/)B1T'?O[:4D -M;5>#\&^-0O4J">O@K+6?CMR43C(FLE3:J:2))"?!GZMRSG1EV$TFRHAT_/.Y -MZH-$@UP,GTZ3IFUIX?HYB_E[."Q(9_FQG!#K@<9"`"1\FW -M$F0S+%;(?/G\*K;6_NK"(+8T&ZT!.*!V_">#/D54:5FDO:03SNU8X(*F6"#V -M].!.$!`ONSH:/W;6*?1NJH]P4O#J.E,1B;IP9E.#M)Y7LRT"P&9HXTG7NP]^*+9<7;$!G&?$8I'ZU+N9. -MS=TAT:(>QLM?Y]CG&I!XG\3@,*OJ5)7*]HB/C_D>6YC&JE`,].$"!? -M(3'\^XB![%:7LA,IV2E(ZJS6^0RQ2E"U/'5L3!O$/#\E,[0"<$Q@S:XVQ86OS -M%W2EPR):8C_J("&O;&.?2E+9%"*N>7G%0LF!"!.T'7YYLN!F2@` -M*]RW_%Q`!3$"O9,\]4V5S=29/UH(R'LNKL\JK*ALRW8P,,X=[;OYSQP-W3G) -MLZPZ!3W+8#I/]G"\Q;E\(9"3JWR6@&"D;$,\"P[9$4H!=5'S5TPY[W;O&G;K -MX\"EA/NDLK$TJQ0A+LF-E8HK17^+PP\KWND[FP_S+T."\2;(._MLMVYU@]^3II7.2^E*^;!\)F55N[$R2HD!A'$TA^($@ -MUGZM_,A:R"#(%/SI&:@3G6;B7CT)-XMX1\>VW@`9KN"2U+)JS54P;"WSMN^+ -ME'[H?1U_TUJ"F.<#B5OG5F)\B5,&2W'D"9>=*3CVF`*_SKGN&GG'\]+JR.L@ -M23\,,`DT(X(\*L]%3@H712.,N["*XEP`+#ZJ8(#6M-\)9!V&8<>DP"OFVFC8 -M[^&(XJ@7QS52Z>@IT08MN>D+FWBJ]=+SGE^BW?:`=.8(M -MCAW;M:0XZ'-68O-OX8<.XXDO^5)31&^QX`P0=)3.I(L0KMH#]A`.<:NAE2O#/]MGE=%0]K)5(-GVZ -M2XS3MJA$]7*DKF[,^`FQMR"5FF8*A?R5Z\XY&\LE67N5I5D"$2#!X,_U(41K -M[[>0!4HT#S!TX$8=$T&\'KCC%&+?B7^MMCIOL1F/E%DA:H!U,U?2L(]ZAO*W -M!67?:4_SEV#]D-5?`;^YH'K$#F))1@9K4\;&E`[5*OLO!'V'C?4%>0Y#P],R -MI,?Q3NT=KS2?O1N=`U[-"?!1.]6@LWYN0,&%9^4C/UK[A+`Y[4IYNR#W@%1% -MTY,?M,JCS%(N4OB_JI5SB"N??K7O3&UZ:*JS.,)E//4&SP:73%@L/;:"/'NI/.N!@DD"T*'Q#/$QJP. -M9V6Y3SB\.)--!>\!MGFZ?K(7``UB>8R>V1X1BWDR_S$^MY6QD!Y/HR12UMTI -M@UG9'EWI.8\I].;>44]7C>A2AA -M3X5I;/V*NIC'DU.ITRQR?,*(TX$';TM,&?TIZTOD*^^,;2N1!'%"RV]*0R\C -M)+)/3<:]M2("H6*71A*8F2IZO\KX`*VG_AW`30IX:C%S+N!?M59)?GQ^*!BC^Y(,ZIK+?J6IDQ3__<`2@,,, -MT1PL@_ENYV@[G(<%&IA1*N'[?`:")J.IKA,"!T<8[W_>H$G\]FPEE!-QS2 -M]?/U$]2X9<5+"4'O-O!\W46_HX9J%U$3VDX#8@/TJI-?1JG'.O>D#7?RPO\J -MUQ8*I+-C9LN^#9"8WF'\)>E^6H`]/Y>5?&3ZDQUDCR<5XIWE8\Z'I>W747Z> -M<)9K/(N/ -MU,6U$K)%%%&`OCBMTYL+*JM%:88K9R8G`+275Q!!W<`]%-WNE7K@>?HM9)+E -MO#A/7!8X)P7,41W"+\V6*"7UHP79FT+`]XZG'6L\ -MW'3<*[8QRQUU_BL#$<3CBL[E(@]M")K3M['@V'_!"[?M(#I"3_,U%[)[(5,X -MCQ?4X)`0K&W+WU'$MNY\^BETX(,E$T_>>O@\3+N\@XWN,(<$U),8FGFQC`#" -M6NG&##NJ^WE7A0/#\O6!IL)._$8.82-4A"L"1;]/,"R[+2/#U(QK"G"=]*V3 -M+'P)*%W=K8WU>5J4I(JTB:I40XX5-:"'7!TZ5%P'Y'X8X,@T@T'2 -M"'4/5X^"])."F)G:7BO0Y!RO(T,3D"_BLU6XC-446ED8O_'4JJDY,=@\.=9H -MS[66=;_YS;>3VS]4RY;)U_HEN/.MA"I.)2&B&ZN*1DCH3$IA40*?Q1\E]JE, -ME7E]&QLK^35FW)MZV"%2"V"#L9HT$VN31HD##Z'@M*+^4$.]6FFXISR>DPJ60E#%Z7Y#1 -MR!@X9^E*",\B@BK+#8C;L[!/D%"\CC7*4[XF>:C*V^9:!ON`QG^_]Z7KPM^1 -M=3IZ#@CSN$1X%L?VK9`=0EV8<"9U]?D0TVT0BBDR+D(/KU!7J;EO0=LKCX-Y -M7EPKY5KZ-G;OK\7+,\;E+,#(N^4PW)=[<@PK*V`9/KS -MH>O/]IUG[/6EM";_'MWGIIM_-`Z5@\6'1]AS7CB;]9O^?.:&+]YL@0D@P"PI,15J`8F'H=]R:' -M5N,D%$=RQW630!I(OD7#7'!I7XI'U:*9L&1:JS>Q2OYV%\N@:.9JJ@87&35+32$-HV>Y10AV&6M<:JTT5ZK-T?X_6.W$V1^#6.T'WAFZ1=< -M3BUBW<2!8J:NNPA<.:C!=%M2,C=E34G^+]]T>X'WG/K!0)?:8+ZP.#%`?/>= -M)4#0DN-67PM2DW"D^,*N)O$KNC6W=.[U6LCGT-](VWL1:D*]9J47F<**0LS3[F'1KXV!P8Z+^^1J09A,M7U4N)D9DCY -M>IM"V*NW-:VB(L#'?D0$?@J!EZ/MK+)KSK,!RS^G -M"IJK'?.[1XXR+*W\"W>EQ$-E=!PF/Y"6Q_SQ*8%BAM2F!P)JL)0"NG-DQ+/N -M)MZR1=$N3;"N>ISLJ,!Q&+%-#EBWV2EKF5U%SY$7B0OW?FGB)[.H4!=\T/HG -MGXPM8I2;:+@C]MFTN4NZ[;S"^NDMY!N@]%*GE7@QX,W0VO`$DGLVZ.'* -MOV_/*,[Q#$9A,2PXSEMIPW$.NM60I'`G'BS!.85#UPN+W[41[7-G+Z.%HV>, -M[.=#4XU*8F_0;USPCP?15-W`'#3IPE:$5J^%,EP<2I]^RW:4G!88VP'$D`PW -M&W;/M87]\`,'US%NWFA6N`%:_Z58J'MU.\HBJY^$6^C/188>S2ONO=BFIU'B -M1\76?@RF6)\,EF^R8ED982Y.=_XX>`B'&@"+@ -M[;*`/M\7\5`*-,M&1VP]?,F93;L+!?P]2.SV59&3OM&H`+FL14H'F6Q&T\<7 -M@).B)SSBDHYQY.BZ!<:I6+.9^*\+J/OV@UD[\0YU!5Z/B5;&(26([R6F6[N8 -M7P3LY;<%"5-"'*Y;PYTS-8V`SMIK!V2%`(85).TBG:C+&7V7B,TV80[Z@"J[ -M3PMCQNV!\D18A3\`L&3V%\1!_[59RGVY7YK4&8,;53YA_DQIG39*%!_EZK5[ -MZH4A/O'I"I7+;@XKH-3VE'%IPJN4X%I=]#9>_X4P_+WR5/AT2DJ6.BU -MAN2TV0Z#A&1F8P$HU+QG]B8+8])+C;I9RB"[*O+<6EQVUMO>E%?W61MKGE"H -MTHH@[WJ%F3/+7O^_A2U,^*@Q[?4U0DLY:PNKK>K[H$E.%*2HFBC8+S'V#I=; -M>I%9CQ:9B]FX,FCQV'MPS4B?,7(15R-)&R)]VPWJ@>K]$QDWB2#X9#1])KW] -M>,4(DFJ(X2V<^>U$\[U5YQC@+GZ34WD&>;2FDL3JT;!PO.%62^T;?K=XT4 -M(3A69J?02H31=[["IH'UJ8C7!] -MXG$\CO?727&8[FEJO6BY5^K;-]3NI60;/6>&KY\HD;TS03MJFY/ZJ,HP'['G -M@JCY=,!_7&YU#"!-TGKE_[S*1&=CO0BK/0W`#]GY,H+F-:S; -M'=G-'`_'^Q>G+7PA@Z;XM:E_8[G<9NKCMY.3J\OE=L[584Q#GCT5O-_<55?8 -M&>IUCBH-$L;C$7RECH;UZY6$\="9O4. -M;ES%=S>&FL:V[">3Z9U0S%L6_Q4W7W$,*1G$TWX\YR%"=NU88*17MM-`EJ2= -M!S@C0&@Y]-SG(63"%W&4>A!=4*#B`Q.SG@WJO]IIE*'9BSA,EE*VO!+B?U&$ -MP10(30E5Y7>ZXX*M&5P_:.\#D"0R5#M95]>X\/LR-GHA0UF*+-^`+JF:&@HQ -M_'L6KUX1#$-F!:8NI]SE"3IZ_&H+ -M:GXO#-CNH&F@C5$:?3Z+PO<9-LTJ/M57* -ME.^Z#?H-B9E9)3KP:.@):/ZRIC5T=L!KN/!X*)<%A*G^%';?FI4MP'3GRGIW -M+Y6/+S+!??P(6!39!?,Z.)J#II9GY'*J^G'XJ@!/J(O!C$%'?3,A@GX#$KW? -M,D=/2"W9&[3\%^C,EL'R[`AT(E3(OM@7E"]"5";J9,R>JECFI]8CIU`H_`O3'31&W$S4W9-/U,J^!33Z4WU,:_Y3QUK -MT)%A%"DQ)H[<],??J9O-_I*?8MJUV&*)PY;?5="%AMJUU>.+Z@!>)ZM3N59H -MNH7-;7X(!D4(+K\:/2^`V).DZ]NV?#[:*5)[/G2Z;40\#?%^^Q%]?(&4U,J% -M4/KW1):YRSQO2H!HRU1YOW+CDCYPD/8R:]B2@)SSUY__OGGN4;D#GX6*UM.N -MAC*MXK3AW?@_60D;43.&.AC`*/`F5U`8"0"T=9B@5VL1SH-S5CY[LNRT5]L; -M'+K;:-#'FHQJOK30^>#<&K'DH!]WM\9;DF!E]C2JW)-8(17@2(7KAFQ8D<%> -M%52.#9?JQ\9*A`OU(=:SVRI'S.S)40RPS;UDEO\4F6QX[B>T7X!RC[?Y[:%Z -MU3Q+"XM.9N@3`_$A9^/FPO+$3P,;XW$8?_(-RX08.4;AP> -M(KXY+I%AQO_0<>A;-)WET]E7&8,:?2Z+J2[$0+SD\IO_F<=5&K%5D./A&-5S -M#U5*:KNK?G`ZD\>(+=ZJWPT>&QHOZ`X>2A^7)ZE4?XLMF!EW`WZDM.T2OZ8D -M[B($2EPY<)WP[X@BWYU`^C(JH/,%:A*_,L1*-C(=KDL9'2X]?APTQ7A1:&,'O6*4"#2;WK;YMX+41O,X+# -M&%TWDN]GL4N%6ZXCNA$H79Q(86LF]QZC4[!\/>TI@VKAGPT4 -MGTNXN!SM%]69(@-$I>**I%&^+O3F<5C9O7=I:QV5

>X.V0#CCQ9RJSVZ@% -M2H>ZJR3?`CHEA"A?=/]#-1[19+C]MT*?^&X*EP#3;LPA.3OIL'=:_JB.MFI@ -M;XKC]W>AC^$=C\(SL!]TG$NKX3K6JU$;@:]L25^=O,HMAPO$DMC@\6V)/X^F -M=[R?YV`NZV!:/^$:ZYBGEL!]C7S+>.(S+')K35+;?<2V)SJN"96*;I]IZ8A) -M8M/4U3'HSY#]SH>#Q31)G.D\D -M'K;CI9"*Y!`S2.Q$?N)95;`\+/?HNXBI2C8H1P@7]N>='&KH)2Y'BH_F>E$: -M7U5Y4`%6W-\.:0<.;),\<2D^14% -MT<@]DZ\0JT;%="#86$S.9%GNRZ&,#`J8#?,*,:X&I -MO"[])6*#S-S9T;?)(9V:32Z!!`*UX#B1P&MGIYD!1MX*H92BKUVY&.>OY=O& -MK:@BA36$H,!Q>RJ$/<2-'_,%*/-L\:&4]EU,VI;6Y<"U%)_V3YXU[F*QBU.'P1& -M..HF/*L`QX8L@6(V,S-5DKZDN1KW[:D7L,MUE*[1:QOD-=;\-[9^%R5 -M$LOQ?#/8R969?BH)@"*8*^9C-C]].B=BALQR8[XF(9GX,H&I\_0[++0!W*53(# -M]S6QE[T)HBFE?2)!!QC)#V\I<4.&+CS[:BQ -M#7"S/R[1MWESGQE`&*!\6>,K"2AU;)?.M=,;>G_VXT1FE#:#>3/;C[<`!*"] -MO!\$N'53DY6] -MX%%`<.J\"A?'M4KVZED\$!&Z:8,C(_*"^]*:39%)Q77E2I2V$E>PR!$7^%A]=&]S -M*=[Y>O>4@.-B\&P]W45?1*L4?KM$8"=@^.1PT:WM<$!"3,&]K=XE:?F;"5U) -M)V<+?:LR^'RU7FPD%0OQ:O(;`WM5>?"7;FRM>%9"I=I!H"X?>PVBXV4[TCJO -M$'^PG+6C-I,)+7NZ6J%.D8]BI&NI@J2GMM2L5='^_I-H"VF/G%2(67^[C9]` -M$`.#%5",:\X+`H*?#?O$%VZV=\_%B&(J!H6^;E41_K6VFM32]C&7I-Z%FV?: -M\^!O.\L.]`$9\?.%XZRY);F[Q>D9#;5F1.:^:&D']K4>@\V&WN^L$%S?&#^C -M[(%#7HJ.5NOTU6@18AW"U-Q*.M$\$))X2-*9S9/.&I`ZC_L![O70LMKV*WX`N^*GJ]G9E -MD3B?M:L>T+XAD0B5R3A<\SXMI7HGG6N;+>[O,28F7]&;2@&T"E7DUV^@:*K[ -M&T2/]C>)F"O;RR=HQ>OZ/(4*\]+&.A#.9^4$)56_&C@.-YC7%NJ#U.FW#<,9 -MU49+NB(Q,E%C`"T0D)^[+4/6F3C`&H7X0"8N$=Z!,%?)<81$58!Z@G\I&62F -MW;2@NDNR7^ZZ\LPE1WR3*,7#E&BD1.^`/+M5<@$B*,&N'S*'R1'-A#,[A=%M -M5:>F__E60*WP)PR>9M,>W7GH2O`G@K2.U8'3!=DUUFYLH8^0C9QKI0TXZ^F_ -M1U-S^K_70\A04UZVF$4,PF0*DAI=9SJA.'ZS/ZAY&N0W4/ND#@&DV??YV0E>ZV%'8W -M-6[/G(0W9L`&;29!]?]#&,H4GGE\/TC@D1_/2`=/P(Y!7!M#B$X\.!XD$9`= -MB:3\>?E*;-4)AWH+R):O]%`2(A/4M@M_9XF#%^D;B-%=J3G".GV4R:A8GU76 -MSW2I^AY]<)"9I6'KF0K>M]0^!G;+FZS1[SQSA\>JRWG.8TUG]X\-P/^-[02] -MBVCC&WE-&?ICHDO%D]T@^U)@,/(H^K$P,M._8A$0=0J*'H9UT3.Z'D+`A6%W -M,KSZ,V;=,#F#CY*EY=]R_Q,EF\S\N4NS6<6'DNBPM^DTZPF+L1S^=X`.' -MFHYR%Z[A^6].J2;PC,^?S721*XCU60+?WOX-\E#7>WK%Z\MS$ABG5=SFFF7K -M/?[WYDLAR8*XMH;LX7SN]'TD68]B)O7>;/-#KR<"=HA)YV/:V\:SJ+8S_A#8:V,?\9^W_G/` -M5*Y-=52U2"*@4TR5TP`;#%2Z3M"F$B-M`H+V_1!WV%O9#41-C'>A+OQ)3;:N -M*4:;&"(!B.V1-(X<*0H6F_6BI.RF(E&*%ZE:([WC';/$OS.&$HME@9$!F@?@H -M`1MIA[GE+P.O<;KL,)#:J'JE9V1P^DU!_:MU9]QQPHOV//5\2T!K([5P@P(D -MJT@9N9HO\/-R-,@JU!K=<2H+<\DK8TI]O),FM\BX6Y3$E[6[;!)$A=PG/TH963H=\3O_JX[.B;XQ;QLUG -M&5,(JE2Q0/O,CP32()\L&IQTBPG.9:6W`*PL1Y@"_Z_E@[D74@#U"S\M]X\L -M'_PY4J2^=!8(RT;N'#\?RTJ%Q::4-0-*`^>`NR>Z562:+I"D7[+/6CQ>E.?2 -M#IW?:`"''D>%[G5;94G9,#77U=4(BTIG:*.U?Q`DC,=?QG1B/<7E6MQ/2,C; -M[08G?DJE%1RE$+S%>0R&*C]<\W7K^\IF[=M*X>!(S,3CW&]GXCIU?P,F+.*9 -M(*[F.C_@=\RZNPY?*2W?\[+X1RW_J$(8'?R_M[:+V=X>@3Q2LYP5(:/&[ -MV1*:E3M6N:.;V%I=#(78.1BCA/[P^.3_W=R:.1J$F"=2LT2]_U#6"YXM=D#L -M.U8')FGFK8::;)K$^_B8?YJ6+NVZU$NA'G4Z0QS\I:P(C0TR]WRQ7TY8<;!T_5M\5!\"6NO(KB5LO&ES9VB-N`\,\ -M,(KUM\:0]@O03_&UWYO>>:6*VHI'S>TG,_GUMAB\:<&&!:)1X[):N[@9E)3^ -M%/Z1/T3K^6S0JT4'3PG1N>SE%>D)];*&!Q%S6(OEATA9&2&I_Z-G^`#\]%R? -M@,)SFL(`/QPH:<8K`R\6=6+/=B]7#NTJ,DP9_,IME!.KFR>U'AQVX-.BJ?P; -M.8Q([0<`/0@EU8CN(UM6?W[(:FH8,KU:/P2OPTJ&F2RJ!ZBYM@C@0]NIFA,` -M:6EH6W;1-Q1>@\F774_[O8W8Z$Z.*@1%CQ`/`_K'M^?7,W:!.F]D8"O)CGXS -MCM2WG!LL!)00MD=TF*/8CD;G?E@=3Y6/SHACY44=KF8+8TDKL3NWLMB$&Y,F -M>Z;O5`PMDC3V8,X0)7PR`36'H6P7`;;&:,A%#J -M#+Z@2W27*?_YA<8S8E6JN,ZX1QOE&ZQ@"]2&2%F60919.5'AEA;8#Q&0[Q"T -M#-%:]35Z6HI01;C5#NS9J+HGK#>H9856L]^I<*(GRXO6.:P+'+93_-=BY'.; -ME`_VSUTEWF+UH:DTKPP#>^1MSAZ!F.K_B$].DOM8;BO0#L^&*9>]VM(@T0O*7H@K;VNG'ZK%? -MD?W9.76U$F1`F`^M'S>1;#C\N;E\;"B8W;%2 -MI+I42BZ`*([527G8/!C0FUF%NAIRZ+7.`L@%8&_>!3%0>/@@ICB<3(*[OHF& -MHO4A://B9J,@Z//U)"G?Q&-8[AM7PXL,JIK-,D;ER$(B89SR4?"LX_>M+1-I -M_($%_%*F<(FX1@!-H+.Q7"T<,=EE#")H?`2\:]R_9G@K(=5>Y%$JH.\)VJ;; -M.?Y>H$[=NP3PA!^G59[$8L%4L^G?6N1X8L*F`8#:Y;M43*TEHZ, -M4YWU2+K;Y9CC^[_I$]L0H35PR/8TJV#J:WECGQ>OHXIK_>",;A`S>OJT2X"7 -MKN)/32%73;ZVX>YC]XCX0A:7-GVO94V)0G#[61%3DB?`H1X=9CDS<6O:1,:& -M_X1R:V33`$69*&&GN#D8K5K`O%HA+!0%*)F:*/ZMD-F\$'C0GG?Y3JK;%+`6 -M>X0>)911F4YQ(^;Y32W)"%H01CF@^F)Y5876/QQT(N%U110PFB#\\'-)3E,Z -M?J(G*2:XS""995"]%W?HYN14\=,E/2@C\A/^9K'23P]"OQE*OO]ZY,_#_*0G -M"023)FAL=;D#!R0*MV#CNE3^+!A*K*X.>T_4ZW=(MVD22^#'@%Z31=:<3%/W -M:!,8C6WALTC0>\,`H@*X\'96,79A.0A1&CO;C&1.A@[YA%:QEO?3D^K1O\(< -MCGOZD.F^>%C\TI[@3F_?SQ[!>BA,"\7,IG/.LJ2_98!H:AQR,1AYH]>/9W^) -MW,M"S7O(3Z)B/\;W,NH]X!L/-:6/FDQRDRZT"(EI39XK^O0"H:(Z8ZKIA!TX -MY0BT:L(F*.?J=5(FWM.5+7.6F(>2$N.76+<>,/BZ<1ZD=?T^6N,V*2-_!0+6YH&ZMY_>^O;Q:;36\+5LG.!`>K]]8T -M8!Q2_(C902?[>G$$M672E5]0WA6[P&X8J1X^=35W?MKZ"2F%AEM."JA1Q,X= -M1/D0PL#G,X7#BG -M9*I!,"_"*8HZ&H$'Y"0:U=[]'+L"<`Y" -M#+:@XO81E,5.Q12'K(6QA1Q-1Y_PCFLI!]%E3_`>E4[ -MLL\H*7_/=L^R22QK/*:T'$;Q";H./?'6*:W8FK2/VCW(=5N]E`%LD2LPC?XW -MR?]WOI@N4VU8P&?J?6=AK4V4UARN??A>89(`S#<$"#EI+].$KG0T`N!9)2I3 -MPWR\\/R72!ES7;]4^R7MW]\U-2V'!RX;%D1HN*6"\;'M]C4 -MA,Q0%ZGC'88I0+3/M_KT7NR_+]"TX"&XLR/Q6>B'VMWDNS-L(P;3/X5'ORC8 -M(Y.8M=FJ/37)QW)3AJV-0=:&?C/]Y:RZ>'BX3L%R]]_%"[TG/4<+V-1/ -MLH^Y)$BXGFE`MPEKUSQO7N+*&>'42YAJ0LNY,$#%TD+?YZTIU/UY@A:_)4Q* -MM,3#L!2O:L?/+<`,2$0'1VZ]3T3&5:E@Z4-/X#F5>K]%>;Y(S3;G@=LV%)5P -MX]6F?9=:):W>)%-7>3[H9X;T=LR\UHGL-9K1P\+^C- -MG)C97J`D>M3WL\I^,6AT&RMZ18PYQM?0,2`GY8U^AP0@9?QJ1)?0/XG-?R[^7\/!UBD?]EP.9(E6DN,=?U-A4`AIO\[/\GC -MB*QR(CEAF[_,OW._I<<^L9&6.GB:059O]CEA#LW490-D_()!YIIEN5IX-GP,D -M]F/@U416>X*/7DSL2"O<]1#XL9[2VOA2/$?Q]*/\27D#%)Q:/R<:[ -M5^A(7]=/>>6K\R)_3D]XH/BC/AGI!F$G("D^LM]PCOHSXIZ#IO+P'!'1;$,] -M@P.'KHR\@PVY/88)LW,^.Q^O7,FV,9D"6O),!HL-5$ -M5<;NX*G!0SG%Z<"!T(OT,F`E+M9_(`CBEUT+P$*IPS;3&\;H:7VC.T/D9*W" -M7H,,C896@]'0)^QG`0R5^"`T7W3,L=WHRB$02[2P%_:(F<# -MSVN;!NZKAK$XOD)D\I90$Y0[T;NM">L1V&^YA[*\7T75/OBV1+D%9:X'4;"WD1X+7>9.J:= -M?*J^:K-Q3S"')=XW(1Y:?^,1 -M5492*U;*_7P?`>/'Y2:/:#)DQ&$R:@<:_Q^+_#259BF(TW(GF -MO`"]&G'$AQ[-9=AI7U+0&+Y_]ZK6IQWM?09N/8S`-*H[W?;6Y`+KD$8EC?_H -MJ>ZNDM`*P/XBD^_&!9R&]IHAC,>8E?L*[52\QMIP-X;U(?QBM]6S\4TOSJKV -M.XM",?]7_.JY3MM,Y.@)OBJ-4OI^E:&0+ZYHB\1I=<`QG/G%B:<^J`;N5-SW -MO_K'JR@27)-IMM<=:@-9XZK^Z^W0@^^I9+V,R;4.IRV=C$':)]:2;!Z-BJJ) -M?BMUJ`SU@:N7CMBELW,F@P]7!$OK27Z(;!V\O&^L[: -M#%Q]J4#3^39%_SUB8QV^4[>*-S9@]J.?^CV`N"_8#^_P>_3OL6$"-[-*$BV' -MF\%'#5BC[/\'5>#RQNMG0Y6=28646]QE3MAE5%%9)R.`>>Q7KV>&D"DA$-]8 -MBE$>[PJDGZSA2QC=LV'X_'75]3QP(VYW*3">P$;QSX00(ER2Q=L9HO7:0@S. -M0/?:_Y(M9B,1'39[V,?/+!Y^#,.3/"0$U.4_ZYE/%B=76B4U( -M/+ZL4Q!O_W=9;8/J+,)8H#77SG5RYIM]E]!BO\U24*]=(+W"?LMH -MJB&S]4G3Q"OJ7NG91"#^48"80WX#4GP&"LZ-F5H_GA#8YSG&NC*U5(DKQQSS -MHWU'&?_8=YZ5[M2Q_%T:]V&J6L<72@U)+?6WRY(.@%3&E$;,TC'@AXU&6=GB -MP_M\R'<)=.G(MC.MFL2\R'W<*T:F@SPTN47L+:\\[GQB5I^S4_,"F-Z.%7]S -MR;[H;S)\3LQ3354*DYD]@;JJ1U&!=A@9M(>PSY -M+[V?#6S259;X&%"\3$+%9 -MZ_AG[OJI7%&0X3S0-"+CL=`?P.$$Y4@V&-S5/9L!%=1<4RU0H@82P=%\;C?$ -ML&?0X?SZ3H-ZEE*=2BC89\(7E'?,#JNG//S]FF28+_+D',>+^-%C,0W1U%B@ -MJO:YY`HX,CVO?[3$`HBIKLEM$N(0]5WJ[1!5-8>AI4]BEAX.N?7@E2-ZCW9W -M:Q6"(5V#$_.P1E71HC/%N/W$/FQ&L/TV^I29C#):16>(U*Z-2=S!X5V#S#)M -M=]AUV.JD/A/1NG;IDJ^Y9F8^D\U"0W+3\8 -M=U@[(L-6A=_,T-B3/#ZR^U.Z//=-++B.,%0"*-UZVCIX6H6M+HF7P-'3!AUV -M>MVVU\]!B08.4`EI0B;KV$J)_?S2!!84FU,\EK]3A3&A-E';93K/+,\?2


E9V/S\Y:YFW=Q+6X#83`MDIQD47L9B6E&,.UPC`5B77/`#!VCU% -M#Z[%CT>:X!\]0(0--I9N=-1O@SATO&MU<;SOH7CRTVVK_=^WXP! -MRP3,W97]]HK;NQ41=WW69MNOZ_-0Q<)IGZ70X<;9`G=MW394R>FSM";NW?>MY]J8H3X!VFXT55S82OX+LV-%HE -M.Z$?3/`U<,40/H/,)D<_%%_C"$._P\1&*6^YSM# -ME2J7P#&P32@8JPFIZ2*J?H=>9Z.8*0R5`"P0*J%F/J'[ZYKYF2\;7+RZQ4!Z -MQQ"M+:G9(C!&/28NBJ[N'^YX0*Y(`D/&E(8A0"9R1>PN?GF_FQKVDVC:YM36 -ML%D7%L>E_4E>IH"UX19-[>],397X[M3:O@;M/\E*93&D"NDO&5<<25;U]H7- -MZ\.Z&*D\]5I;`$\@;_#58#7&*88$E^KA4Q6GC2BXD]-J_"%3'VX29$<:Y-4] -M[NO-O)G>CN?\QSMZ*VQ.E3GXI@Q(.ZOR\&]11H1-KWJ6*I;5(@YMCA(=+Q'_ -MF$)`>DV=DCT]K$A2T=[F>B[G`_+KOJ,/Z#[P&>E#F4"5X>[:_XBWF'V]/4O* -M2@^)_,D:PUD.&4_+NOQM;N!_PINQM.^2+H`$=.[R#._#5O4C!C&;(Z^:>TAR -M[X"(*\([;$)0TX(G^O$HHZ@,D)5[VOI)`&_2L.&^")B=IQEL&,VD.&)_7 -M1'^OPJX-KU#ZGS):`[-.-76*M()-E/+QGEE4T[M54*N_[KH;F4:#P6O1B>:? -M[XPH>QQQ*G:BJ7W=IN2^.GC]LB*%UR(M$6M#/6]*H?[0G+F6#:ZQ6HYSKTP` -M_+/INF4H2=@K3U3:D3=U)U*=CEZ!C&K_Z*OFEJHB0T:`Z=413)X]C^G%H$RV -MF1]8/EE1A%:&C#K(W:N\("UOUWC+E(6->9P=*!EV!\$EX[U1B:)A'ETN-QCXT8Z -M<::?N!1:B$E>IA,(NZOO7!E1<,P6W$Q5V_I-_-W2V^!Q3*EW2GM/)G5"3TGE -M'B.=,<=TCX[:O"ZLVJ%[H*P1%=\L0\_\/%8V)PW.\'B6S#=YX/=SB:/^&PWC -M3SALM\!0>T#'AE);\@L%+FC0X]7/O.+T>8ZO(U&\CP+51B]7\^\"^!*\5CYV -MU[=>G[Q5\F`&DM;U$ZHU4I")J,+\"M@+?IR:C0Q1H%3+P9`<=147H!>RH4-V -M,9Z9>R'BA$2>4755]WH:!0CTPJYUKB.^^6B%FI8'M>V.W*R$9_A/)?:1P^#D -MJZP*H'7NP(,NR6!)L?#1X&F5%I9<*)8M@#SD*`/-RT5CFT9(]#G")L7\:"?' -M,Z-+:B*3]>(;8_25[?*?X-/XC,`MSLTCC_^^I]P=U$A#2:P$*T'?SVR*984E -MX+AJ3%'P.J&`VA/,0UG2O@D%A:3YTBV&6R89.H[.R=<#T;HX%;X]X05X2Z>2 -M-Z2PX0!G40ZW&,V,/'YI+$XDVYF^[2LDZ"IT*SR&:]TF91#`0T3/=E3Q.;KU -MX`4(+3+=$=4SCJ-=MZ[Q28,0$LEZ:`.VX,Y4PRZIL(9](P?. -M;,:*OB1V+0-8%QG;59'*_)/BUD\-984@VSK@*.=],^VDB51GI8K1XV$,'",E -MN!(%S7\$E@P_"**.6H^WH$C%6<^LO`U>4O?'06(0-BF_XBA-]3=M?Q;'>XI= -MT8ZW'QQT219:&QP?3C`!IZ>X$607%?[X3 -MDO?J&:`_;!7V$&*W3A_.2"7?(Z/)P_E)!E7&>>'!L):D%:%.D4IS.9TWS[T< -M==877;;=#`&LKU*-C^02UL\>B]W#MDLU^JCG&E79';9F4*_R5KE,O6X/DRD- -M61U2J;LAZ-/7JVW<)9B0&DF_TF'8=J -M-Q,03T\NJ7F;FRP-SW_>4KXXBI)UY?KJ)W$]O^./<=%"+M$*I,[!+U$`,TLH -M6O!_-68GK9SI3E^NS&5[5V44A.IFD%[-DFI^;Y$%^NL,T_"6,B>>1^48P<[M -M67]5N&&/H=!&6UNXSQ3LJ0PKI6H0QQV6RGGA1,K3F4^Z;R+ -M`R3^GQL,2(I=#&5&C2<$G>XUF;7[*-'IN^*"20@,><_IA0)GB0>%_)V2?O(+ -MEE*GI*C<*=]B:]"@\KZPM#PW=T-I0!GV6'[KOE,(?^:KEL#K%>-0TZ?(8\S^ -M4\;T$=$C@)S347:@U'=V,=9_?O<+L2MQA^QR]5O0M@K)%*!E4IMCTSC8I_`\ -MT8+1#A7D2NF8]@#-4`@$_STA++KVA&0J$5Q0JWOR'N"%0H7?((U%57NUP.K2 -MSO:[V?^D&1KURD7`D/%,=)8,&>WN3_5) -M#AD7[GLC1,K^D!/M`XEE(A=3L@"W1%73&-&ES479KP>VW(C1^M!++O'IX)'6 -M&OY#7S<4)6C8D=_[/`\W,PYLTOQ3[KA.\O(G4H-IRC4,0T0:6E7 -MI\LB!%?,4$A`J?B_)NC(6))1%T0?CSJ>=[2UO[W^8H&S?AWXW>`!>9`AT9'%^]%5IM9D-Z=@?`@6#ZXNL\-6(2>==F[K-./?J^%2_;Y -M=H*1^H9G+4%I_O@4)WLB4=+1/&7J,1B6A/G^T*3]X4FL39G9:RX*.VZNR#_= -M#,:^Y375/*P&V'*EG.[']0L9.0[O-3:U\3HXMGR//42GUWF(+8A5V&W![=B$ -M8QR&C:0^2VC?C;.3RSZUFI7\#QQ-W[6CQ,K2A@61L)1DIS30NX(_-PM%J/+^ -MFCX'29+@#A%:"#.F:.8L+`EQ9P#4@60!@?0TU*R/`S=*UM7W3#FT4H4:2:'F -M\+>^SE,CN.+*SUQ;.]W\UW:TR#+M;;V&O.2E_1YU*%CP:J`,2RF-'=.?"85EV. -M;PU0)O,]UC_QW);MF7DT -MI3]2$3LZ69\+6\XMZ$453&LR++,D!C_-K9_$Q'/IMRW#`W&^K+X'/ -M%$[1I!(5M/\J$@P';[3*6(KA?LLTS:##K;I22!0(< -M4-@'@R@IH'OGP6*RX6:V=U28I,_*K6E7D5[/<>=_(WCU3(L<4$9`IR"^Y-R2 -M-JW;.L3B$Q/-"?HOA-_O5G>2`&I;;\(AXSXRH. -M)9W4;08ZN'%:>5SKLG&L2U7Z47-18%+JN!-\::C.]\#?,_MH35$CY.% -M*&*(//=200`CMV3NEMH&!>)A;X=K=V!9@P[;&`4FCZ2,>XKLW#EA -M*NQLY5>!5`5N@>@810+8/JFU^VI4BZ9H+N_Z!)TDO%M7NKC*]*Q;>A2.WQ1I-"R(K*I0OQD/(-3% -MWU#L9*O*\D] -M-T7_"(A\^`^6#@E403_=U\?E$X6M^((0&'TD0-+C2%-%:>%0SN[FS5TENQI6 -MXV?-#6.5%J*F#TYRUF$Q;C@&+`AJX['2V -M_RO7#9'C6H6%_Z[D$&,!*PI5]$KB$UGWPB=-%-3FC^SX1L)IO$+4FB.'1K*; -M]27D%Y^C`LEJ@C^UKB7FD/33GJZBE9INV6V0DDHL:WCW%"Y&5$S\+T@HKS^+ -MCN9_UWKPR:#8N:"A]9D]*48]>!BH^N6.A$,L>OWVM3G_Y$O7E=E0L0V=K!H/ -MVXD)=:?*,+[+GSFCA/P*N_.H6`1`]MFP_W*KAR2[A2O(SPNIV.]L_^(MD`TP -MLPHS=*3^)%YR6SS,K"M#5RF4:K^(;NPW1B*8;5G#L!@G91X&"]1(%ZDFYF\I -M<;Q6#.Z61GT/M)1O(A8^@K^Q1#ODZC.FZSF-)=1MFR82S3*@%M!-I**63;YN -M;A7LBZWQYFGD&_OU]ISU<$QYHP5IIPG;!.,23)-C0BX-,U7AU?;>F`W87AHH -M-''[GNK<^O@IHE7:A:IH`I+OT'I=!?=]Y1+EDXX@[*1MM<9 -MEJJ/W(!"?WG1ZM'ZX1A?M)EZ(8C$7K?5[8#5L"@CY'01'UWU9%4G0AEJNMDA -M`2C:C(PO,W-I`+6B8;6ESV)R_DQ.@\AA.1Z$]]CHE;RR%UBZ"A$H-E98]H,< -MI0L79NFGV!\2T)&0T\49H,M7R -M9);_V<'P;B7[4AR7#2'-Y-[KXKLHA933U!C5S..PCDI)T^2NHQ=(\72`4L?C -M3-YG;NJ-1.>]X);:+B^Q<91>,3PDIBPKE0T:$#5T -M"]!R),7/L?><&Y]<1\%?Q8CZ$,[OZMD_">%F'&M"]].6O -M*8XME=?8H[+/B-^RF#CW'7D;`;RCO+4C?L4:R@]/H`*:+?MC$*!QSO4 -MJ]4;:KCJ^3TBP_B=3^NJ@0O8M^=ZTU72'.6HWO.N<=#6M'5[*W1RM*1+/_MX -MLM<3D2;/W&ER#\T#3IINR*+U6RN32-V)Y8*N+=&?0)P#I6A]*^B7^.&B!$<# -MC'!`2:\@T)I@EAM2!=QWRFSZ1Y/MQXSA-0]69?T6BH$Z>=J@#.XE('O(IO5KEF`@-+4U1% -M9$Z\'1[V>K=4CZVH`-J^_<'/,>R%=R$%P7!X?N%]=[2C?Y)<9TVRPLO"$^C/ -M@W>T^660O8_WSRQ*-_S`.+1`V2TRX"'40L$SC8Q+)K1V0DJB02Q(E_X?#=/* -M#4JRL*[FQ'I.T$;Z"T[&%#2R5*R3T+)NEL26E:('EQL-' -MUK7GT38>SG7-4N$J?Q.JDYLG%7=/6(&GWN#=:EV6V/793#L53=O9;8B&+3!U -M,@?6`KZ<)!=R8^M!V?L7ZYNH&I;&6F=^AE8:E?+G:)04;**Q2T9($Q_1=M]O -MA2.GRO:HZ]V&Y#HX2FFS.M&R).QM@:AY15VU[7+T).Q5USU:5WCXL=]+T>[0 -M`1]Y^I_WB5.+L'G>HV\7:EQ*0L/7A^"+;$$L:&I\#9+H4#9NFH6#4S?$E;D' -MWBJQ)WOTD;[C7SFEB:PPN9K7J0:L@XM,A3=8)4HJ71069[^>=RO2%1U7B*,1 -M:5"W))L5?MZ7'=K9:CO&#FT6:]5$#(286L,BB:>8H\&`+&[!B;^HFVD$$C8[ -MGQUHD3=5>?ZL>VLXSHS0/G^B\['4D4>7G(J -M%H:P65E?%++?3[>GLY+1BU?*N9K4%9-'B5(WFPPA>5$D5OXA#8*9V&0>I7*S -M>D/%*<+&56+FQR_%*KF+&.A5'[]#GS;IC]3>7&\-*0UXI;8A7F%C)@7V4@1Y -M>TO>;;S]XLK<5(]ER"GE?_]O@_[\`P';T]9IAV<)6":V?_R7K2WS9^5GS"L1 -MF8'<=ND@&&L"N"AV5GH]$!LHI0,,A'/"X<8Q(.X4VBE.\ZND(AS5`=2,.C=QS@\>/;ZE6!5C@J-.Y#:IO]CRYE?/8BG%7RA<4E -M?$=5S/TOL>I8WU97_Q:<80;N=TE&!_1('AEDYZ]]8.>0ME',W_-]%\]0)E[5 -M;R7=IN[X'S=U?/CFYT^$.K:BP5\^]ZFD.2GK4?621PAQEU<#W$X8K`-S$(=K -MMPLM$6YQQPM#'MI@=DQA8%W(EKH[Q33Y/<'_D##4E]NM(+5+G743?KV8+0M: -M#*0*Q<&4-36V/;]C\N!)L<:E2&8U&[95VK8[#VF&T?.NCA;R1 -M6'E*&5QY@2Y`(N=1=2>$A_V^/XB1^96J$I$_#U5?Z#7'*]$=L34S=@Z+IVNO -M=!)=35;RQ,!\UI9;2"=F0_CYD9,M=(Q2$0\42:*(];-3=\BCPD0SQT*X7?M& -MNERJ[B!-V.)DH<@;&;UV1J-S/U@I.[$+IUTI,:9_S7`.%FN3.NN.K]&[Y=SH -MUAI+W5'FU\]B;NX\^C$,W0"I">O)(C+&,!T>69\0/7>4V(Q_">.`\LRKP;8@ -M#'W+I%/I#D,_+9EN5^M1;YQ+O(F!!
>7@IB('Q,/-?"FZ9!+>!LS\15Y>1NHJE0P;ZTK]%7/J`Q$ -M1GC2-:+XH=%3F`'G5ID1N`" -MJ4RRT!H6LAT_B8(K/,,S5?9F@\TXSIYQ81]6MF3ECT+7;Q0O*GT)$#\A@6KP -M:Y.T>QSKN0#%+CM1!XY\U&J[.]EL&V?SG0UCV8M-DPV$3/6V] -M[*=//@&:K&#_DF#0P--LS@9UR0F91KW+4F/U"1R05!+^:2/F0E+\^XOVLQE" -MD+OWI5$WVM?]Q,]V1YB-%3Y-@[WE"D6GV8/$E*::[/:T1HV8V*_8A`M0ZJ+J -M*+I"MR4E-XFND"[A3L6I,T&S-',WO]\3>LR#UX9MQ^;FI7J0&>-*235%GI15 -M($,;68<1\G$/?$<#)LC:KU&BI-Y[`5+MLK\#Z0GNRWZZ42M6^N@0P-/WC2"9 -M_D08,[P.7\(`[4**=C&:%(>";1PFR2>E[$90'@Q9T-4K/;DVQ2=J+4MC_/6G]F0L^\8>1P9ZRQK%]V&)F,->_0_QT:9R -MGVLYZ/)!(4J%ZU5N)"]+2Y`&*HCNHV;`Q[CN?8$K^F6-/4'><(Z7\O,**C>E -MR(^D(Q[-X-ON(KQ0A&A3R8];,?]`J9(SXG%`&:^)/\:\J3D9:A+.V4E0':Z\ -ML\N].)8SRSN43%/!R0+4GD1M9F4U"K<6XZ$RK\G+I''Z*;"XY3Z]W+Y/GY*$9"^=.1B'5PZDJ;]O,L!;"-*^TY=4=BS?7"-HE'6(#8W1)Z:M?`I8#=R\"X4J:62 -M$%$A._[#8?`/.PZ"%D^=H;(?8WP=EC-Q[-8LSNQ":WO)]J?)0J( -MMQ*;=0EA`4.,;(BGA05B1!N<;[7?H0=H1ZUAJ=9][8?[FZ)L)`G..4D@!O+S -M9#+NC&JWAZAEI>^)ZP/[+^,S6PC&T)7:AKRLB_HWC&LL"L`'9*8]^.9ER4]0*:G9 -M">Q[@UK"<-20^!PM8#35I6TTK/L4P2U]W#XCE'4(=4I!!KV"N\;$YUMOF*$/ -M#!_F9AM&U(6GU^@[_8JTHH7:\D -MS5CK*30D;)!K-/P"Y7S+1-15EUCH(]7M^_&?/\R:&[NY1Z)_8?UDCK8P6B&6 -MXNEVC@@%DD@V<[BL#S"_]E5+31CM6DBF)*XH%D7K:76^*AK.;\FO]$1T-%75 -M2#A&KPR98IME.M37+16!EYM(B'N5A]ML)3!?:9G@G"-J]R^,O89#VS"XQT1V -MGRPC,PEO7K&5TCK24,QA^'XIB3BR!$;&Z.':.'JN0/@]^1@99Y#K'LR9`F9\ -M=L:^U/SQY=FZE\"3P;1Q8W2=4YF+T"*/]RCP^R`;WHB@YGK&8-C."W?L"42CJZPG?^,`N"EVE#JQ -M<*E+]Q@D=6Q&$*-55OK<$EN'XFEHPLVB+;%_H(M4HTCR\2@)<[2^S58,9\CZ -M/Q%PC]=-3P?/.A5L'VZB:TGL+*/K)F3%-?Q4*')6,5X:5UJ4G>52,\5^-,)ZFD2JA!\#/"U -MA>%EIW:.N@9<'V)[LF3Z7PJ.^ON*PB4$! -M+N=DD=+[F\AV7E=@,Z_#/CJ40SW>.[?/Z8R41&=2),4=/+[\%M6NVUF!F(@O -MLUXI>'@QO\.S])+XD9#R*K5V2CE?8NS!'_B+QP5XVBV -MG10N"G:,_%S^'KE<;"!V%0:=UK@I3TZBM6FZC&N>3U\=GYUWTW(1NK>7?(/.W_(:_GT*3J$DB2\O!KZ26]+8=_'I,:-0Q;O!C-$'I)#? -MT/?EU_RZK+NDX!G.Z40,\9:>R3X^4"!Y?ZRQO8#!ZSX)1;+(9AQ&8GFF9YNA -M!6$1KKDM6&?)O\P8[P(`L1&A_(4ZEV`?'U40U79.4_1GS\Y0V,O+Y*P5'BST -MR@Z/NT]6@1L+4B4NR_:>L`&EWR+U7IO=532Y$ZD(@GEED@UWW]I^A9X.;8E4 -MV>6OS>):>]?:R]DY\;7=4\\V\^J8-H@_J;FEBMV?`8"0 -M@Z@R3WC-3^\0+_+B[<+C-`RO>/T#8>)CZ,$*!812^J?F.4N9L$9Q#7?VA)W>L\O.P#OUR_L=R*FL<.DF"`^ZA;>Z((%B@%.Y1) -M?MCIOY1,)K^"X3N6O1Q6$:T0\:.\:23D?-+AODEYM(SMZ@R5E^[@52N?$XH7 -M>E@!HH$6X@/@H%`X#Z"=%&NB3*Z)M+C^N>;'@,O&FHH5,9EA$X]"J975$6RS -M/Z(:IVX/C7@R7V9QTOX*%7@=^$*V_#V/\F/8\9GD]IM+[A5OR&P6&P+=/?&^ -MXCYPU(V*?N']7"OZN!*R9G'XX0P(+UT-?!7**!Z8[;X*L!BCB&[LZTC[V0F+ -MA9[42Q3$KY2P/2\X0^82TT<,;*W4`U)FG^$MS+L8#=>6N*VSQ9@GC&,0-H.R -MW^8SU3X<*^9"\7J'@"FF&\)5/8EN]-TF@SR(AV%V?8-=,:+VVEEPM(\[-N3* -MF[LT+X8%-0^"PIO%89O>:/Q8KC7$/2A48*N.UD#!>W7_DF*&6U#R]ZF-]#:- -ML:R<#>!`572E^LF)*\V/(Y*'9=\"4)J4^N?#P7MRE[AE8$87_K -M-.')B=$O8R=5A6SBO1,PIA"/EG/5^M(DV3H"L=:/R/G-L^:]Y7OFW4@?/E33 -M;+)#ZAPNAP"0./>KC9&UBY(@FNZMTXNVS+N&CO!&:RVE3865#IH3];33!_4F -MYF;?+H`)MZ<,3^R-IY%122A`@`"$EF.U9NH)M3Y[AG:#E8Q8_,F>^%!3A/C< -MUFN=?@N&$H^ASPHJMR(!P-,:*@[.46ZJ]&^.1[K4 -M@1^LPK:4F]ZO)NXK6A'^'T3,5/??_+KY/1VE(SOJLE7HWD5)K`BV%CS>7/F- -MG:*<,YR2ZO!#8"F<32YVA@^_]S*`D:/=,%3$^DK_2VL/`36T;L+,\E+ZWQ5+ -M/T5?>`<[+('6Q92VX='C*%V0$(\KQV'Q]9^9C#1DY!O6XI\#_TY>20GG3#9&&L03[[/-`\_@R7?V/EMN0EID -MQ$],*S(.`Q@N'R#S=!$\WI+TN$!K%U*W*%8J57]*%55L%](&*#_2Q>4\ZZ.5 -M-C=$EZ)(7`-IP8.;`0E,XE[LQ:+,.0@IP&7,8S#&P/:\F+A@=7U`BAV6SB1- -M]UCU.:>1LEKYT5E7S-8;M`=LVYX>0!_8D8O#]F=46`=Z;TUD?M'?=.MA9(Z8 -M;_E*-YE:XZ@T[8-P&Y!^`@/XS65PM*-`T(_Q:.8*9T(TETP4LX?0JSIXOAG+ -M:+M9FW/PT16G#-#=.9DHR'DV\A:A&Z8_5;N;2VZ=.C2DSY4B#\RU'N4*A_M\9QT1>IFXL -M:($I20P'0NIW@W@-K.L$]/7+>94-@%?'J*<_[1KEN[=#9L@OT$:LTV2$)WJ3 -MG5GZ/>#PCF&@Q6.-+T#]Q&M+#M`3D'F+`2U>6>6K_R^D(H/6R0HH>?1_#6+N -MD8A\+Y/HO7AB/G+`DCGQJ6Q#_:9?MFI:EN5KED.8Z/?M$`AVM;1U[?R]3R4T -M9L#?67RZ5"RP=N``E0QI,W-#YS@$-S>"TM)P6.Z'%+6^T4-0TBID2KM,&[O" -M=JEK?&H>]MI]3IMDXB!PX"6F=S6',3V`8VM$:S8J!,A/A-(F8J;I2^]WSC[$??TWX^6<'E$VD_[EAA4A%6Q)E;U_GIE*K8.!;I0 -MG_IZ2VA&KQJ08)/AW"]#H*=_TPI^,#7@/!K%[,%`]ROGQS416WJ(2Q^Y"\@TN_3BAI=#=&`?J[Q=`%3:Z -M?G5*_XT?BIXR(6A]"=0XL>197%@@7>`!A1D6IA@M8GFO]IZ8W(JWCG"QK=>Q -M@FCSOZGZF/Z+8!9^!AFQ9I1W@8`SLI,"_@9G*9I>(P'9);FL?1HG9H[T25$@ -M*D[9@U*1E:,);(IY2QQ9,'_&3=HQEX'IK<@2)(1^5XX`D,5G)0&8"8F.C3T> -M2FY*WIH%'1?!F&+I'Z@&'OR&;XNYBN8EA]WO822ZB)R_)VX\PZ]_&.+K_UMS -M-_+/@A7N8K.Q0&C,&VND_E.)1E^DN?U3GJC0D$6U/M1LO1QC0U#FZ@^(]>XM'4W-SC\XO\3)65YXM7PF4%CA -MH,C`';DJCAUFR*G:RS[2JHBVK'S<+C1QM+_$2GG>LCOW(0)A6GOBX._G]88: -MY#Q@F_MB:S=MF`S,(B66CU&@AKC^[UT8.J@KG2YXYN)5FF+PWQ*9QZ0F;R`& -MQT0#)]O4X@O>9W8-PKM88M"/NET:88E9*1KNO$WLNY7;NO[&NTQY:5SV0>LP8P`3L!?EP?)YP -MJ5DGNXEO25E7`R:E\]&DSF/`R&O2OM_/Q9&>A`JAT%8,_!5@LP(3;+\7_V@) -M;ZM;T^-V"HMI'JCP>TH`DC$\%BH-+E89H#IX@):3%!-'-6T5F%DX8/S_!`3?_ -MO*F(.D\'P!;76>20^$1>6`S->K^1GAZ86K;WT%==OM^;^_QKDAJ($LS#OWKB -M*%SK+A!.0#FEJ/TE:&RA-D@BA'>XZ<(7F)&>;=<84!6S4X#F&((WSWI<=Q#:W*NV -M+R2`]-O?A^5A?`EQK9GTZ.ULZX@#:E!Z1[1\J;6.+'72_([6>3Q*9"`J+^76 -M6!=_#GY<9)+E1[WR;)I7R-QG;IZO+F?%]PI5Q-;Q-H]2UYGYD$(6C.$H('.E -M=DS/=_#*FI(YU5A@5`O:#A?9YCHWC9!1*WFF[?,["PL"UI8_/U"F4 -M0WK/B;$(<3689#F&:>'E.8#]S"M&,@RC"/RYV[G^U9':SB$[\CF^N+V/!;HJ -M*EQX+\71BU4GR&\1GRAU7B0-8]5&?M&5_/==/D_GB,!AMP*4R,%[`T6_X\I1 -M@SI/["ES:S<$*DJ2_`UZ!^@><-I+_:!+<)O*9JTHS*0A=Z`3S`5CF_JE\6V6 -M\KPUGM"_$'7+2''FG:[+9D@,N3Q'-U^&5*^T:0-J4=&<5D/*T*Q?2G9"XG_F -M^2X)F+9F@P3XI>##N5,;O$/&>=_Z13&_4,IA"'OLI+?0HG)N'[U>9S`5\M?0@`=_E0S#,\H$IBJ:7J,5WG -M$\/;P&\[->G/%2/?+VN!$76;T%+"TP38:.!Q/(/)2M?)5,"/HE$L'AI4<$5$7'3TGQB]@\5.="J-47WSO*`8W\FR(-TK -MN1#44(^V9R2DKNDRXH&E+N[YJH<"@W5`5"K;-;*&HC8:'"1$?84]D:\RO\EF -M9M'=!$H:GT[W->G'\;/JWKD,IJURPTUV@KX)Q62[`Y8[1QHX%Y4GI.VXJR%O -M#'"\C(WUA!:0IR(R,S0^!"FSLSEVD6T^4(8B-U%,NGOZ/DHTOD*,:'Q#[C0' -M#A53.FF_<]S%96#8SLW%+5@50ZG3^S.<=,2<3@0&?1+AT@37'LR`I,^V]=F: -M]Q;B@18UR\]EATL0/U7,+3Q.J2)0;_F\86$V_X(=`N6U$88+< -M/5TYN*0R@X$$RQUM&8WV\,K;IW+"YYW+OC[,6(""\2Y`+P>SC:$P.YF$NWD\ -M4LY76R:NINW%%_RCZ@HTM0'-!L]0@Z-G>0HTD;3VPSCO?>9?)M -MQRD9;9%5J:[N76I4+AC*_5MO2IM)1#40"I9!&#M -ML3A:&<("5>#K85DM7=C"]C20H)$+?'V/(6"N?ZT4%CL7W7K[>);E:J8:R+W6 -MA\^*".N9L.;!S:)Z#GY&#.OS$B#CO,'I<[29K3"#2SXJAI$8#,)>0&."HR[( -MJ3?B+8_PRFH<`&):V22,L7H-I1TQ=,%DM_BMNP'3ZJF9_%*>2%>`O80A$6M^ -MOZ-Q*FEV#T;' -M/[#[S")5SEVOT:JKNRC!0.[KQ\Z&Z[_,0O -M$O)@Y%`+YOQG2^0(F7U>HP2>26)>)ND`3:7B$;I9PZA%-INYJ-FG6+9`$U(MAKH+CL0( -ML3E[@4%XM>WTM0:.)3;Z:7+-CZ6^]\.\JCQ+-?WTP@'CUWW]Y!HFBC+76!ZK -M6>!TW_:U,$MNX)JV:IX[:4$P?G#&P**KMO4_ZO.7,]=F["^%!DX#?*>H++O2 -M>&5">P_]4-"/*"#-%8J`\_U;OR$;7ZX`FM6UA'FG-7CT:6`/E%>)(87P4Q.F -M>/VL(E_8OO8:E_$\VSGP<3"KE6)LG[RTI&"SRF_Q\>@TSXHN52^Q"=8JNK5# -MRT/'#:F'PKN'FA\UM<7R)6D0$\=F'JIKV3!I[68\^NB_6I[@*T3$=W=\/_06 -M/9DH[9/KSX7H_\X3W_*O6-/8VEI$Y]J!PZN8<5.6^:F;K2;QL;7`T(Z8]0?Q -MPRR7*\E!@"(WV[]A"?LC@D$[<*HD>,W]?!C\&(XV':O\N'_RPJ*F=`![E1#2 -MI7]D^>"EU@=><1*55VBV1<3[S?NBL=.(VR]/:J,=+M77O2<<+/8[9,QZK%#U -MV)L.`4+)G'V#@<*`.@?EP&^L$Q(N/]MZXR!KU^M;0B%17>J;60["AR!RBPZ!.2YWPS`(O+*CJ2:G%ZD,Q<9Q%35>->:6[IW0:G/*HR$[Q:RA&0NP.C( -MX&.,OA!Y:C5X\4*43=+E*N5O0&$4T_9M"7A\O*BV@.-HEALG-[(/PA#<+MIX -MO.8"1\E=_#&&L`:HRI\L>==->YMDU,+^TWF'$8XT]:&.1YS0;W5DFD32&FYW -MZ=FK>^%IL`ADNQ20RL-ZQ*\1"\V_3=WK!BU&T@_-FV@+.%=(<;L11JH& -M8B0GNZ?,@@'N=7'^@V59PI;>H#A1>D?\U[/VYCD\(*"/^;G[!@G"2,F>[^X7 -MH]^I?3?O;+PU[N>V3('5V:V!P\[M^&+-,F(4?K,OZ72R$V1/FOWS!@37`.U[(-!E=:>R>;&LK-ZO`8B -MGP1DCXM0<"6&(KZD3^CJ3KST]H?YT@JR]3Q_%[GJ17OOI?%$54JJIS[\4V9? -MSM_"H\[0:[<0%0_6S20WLGVR44<%??5'Q9NT=B[<*_1=Z665O.%:.N0$QV%( -M2O,Z/-5".^+^V38!E3:/)=O+>C4//+;?70RM]N+?ZE05TA\$@&HD$@J<=*FN -M5\JO$7DCL\O-[N7"EX1G4/DZN:$'B2\-9)>$1A'?]^,UI*$/%WQP20C[9=X: -MYTQEM"CJ(B80D-+-"^,)V!D&NCXRHW!>@__ -MS(9;H=]>@@G>T).AP;83HN0RX-'?;E1.RQWN5D+"ZS9RC:2__B?MW$BRF/^' -M>3KB50,\"[J]_UB+1FO7>F=WN` -M#T=XUCDBG2WW8F#1#=XU%Q<0\$CD,APLD%R!KE6`69V]$3`8@QF;=>O?VV#; -M:CS$"^%'>8K8G[.&OWR'17S;*[^G:[(L]#OR.(J,/8H<6DA]T'T[*'##2QF=/7.<\/8X+JO2PC]7ITH\74L%DQ#)K!YK]2,ZB17<[Q4**N5LK(M -M6L\F_7(96#YJ2Y2N?(W:F]"=<'`"+4D)C8[*%,:0-H\7`Q%(W&-$IT)9_C]/ -M2AN*;I][)#0R0"DG@=)?JO>'N<=F8YK+%J,*C7;$RX[Q!'MS7#I_MI49XLB3F1?6'Z]K]QC.-$0: -M9HQ2@4[WH*0&(XI$\21VQ@#I163\!VAZUR%ZNRA0NJ\&+MU!#M60_,FTY.;VC`*Q(>"TP-UP6#8PQL -ME>,5U%&/,S#64&N&:!PK85RWW;@8*"<_=OR)?%^GU1@>\L:D-%.+ZX.+--2W -MHU`_"[,6?$T.941^_;9"Y`U&8L3,=3X5NQ;\02.*K$Q=+0`CF[2NIN6E&<5Q -M9%6NM9,`#O&/O7J9QT3Y$3"L5>,JY+BJ`%'B!Z^GKD5S0.M^E.1/U[)RJ/0$ -M<_%12N.>Z[1<`1.`1:1J]B1Z1+<@6,PRPVW?P\@TX"=XC)1H&L4\9]W^_)CQ5(*^EZ,YI+D -MI.O2("R?)!#1;F!-`EY@?3JI(\O[B*^#E&U-!>X&LZMOUOCAD -M>Z"(R3%`"GUKH5\>][="7C]^$@\^,-'?($YHQ.4-Q\#.%,CA`4)#TU4-BW\: -M9\G4;3X/6\-\$;'^29_"^@O5*0N5IC@D'M/F_15 -M'(TOV$*/DGN*[0=V[`V8CK)5]H`$J`;F)^EU[^K>&M_&JQ6"(^F3YP0Q_AQ6S^8-E5S'K@WH^7J^546#`_17 -MU=_G4ME>@"=5+"X3PU4K@:#!!6S>%@56FX/M6C.33N-LIN&^Y<-T" -M(W>Q-\J%U&2*.W8F#,1L.:`U5T7G)+&+Z>8J"0EJ@C4RCC"\M'SJYF=.RWTX -M7[HPO0!E&)UK31. -M5E1$;(WA^^A!JT<[:F]&B5EI2;!6TE"G'/J^G^&24"C.^4\04GK@RE.)=FP8 -M20*7L7*RMS#U!JPY1_Y%8WB(Y)/C-]R;M\F`#XQ\@W]0L7J\32=B?X;@D!RK -M(#XE[YISQ'\,R(1>,N]=4/EBH1LH==-N@1@L.%V>+7MLI:/`E.?IY+_]6D(+ -MZ1GCDDK5K-TIF=6A(PV8)="XWX,`>P5I<$%Y(\)DK244[`\D1K=ACR/":I\. -M-=/GP<:C:P1U>3A=1-2T=7SABJ)2PI&R*0A__,97HSL&IR+G_X!YX'3UGEKC&K>P78FVN6V+D"_C -M3"A'3:!ME2M%T_KOYPGZH%0RL"PT#`+`B>#[)GA+,MT3/5],F8I,$*:8(3A2 -MDJP!E^G!,5,2$%6R2MV3"[<;2^1_OD5)O?@.TUNB0ZQE)(+],T.50-TH&D9*932%47KC7JUMTC>15I[4BM^<("J$/#KFK?Z*2RK%#]Y -M/<@\+F4*SHF(NQP!0JW:T:[U-C4-B%7VMPM[QLK#W?T`8HBX*/.:BMVP85+= -M`B$WWP]`,6646CK?5I?I#7A2O#?\+'2W[]@*P\TN4\.8V]AZ5(",C:%?;[ED -MUMB;.JG[.JM\F.P8HD9:Q*C,3![H!7G"E@,P;RO%NBYV`L[9A*;U+8'8> -M$=",A6="3BPM.=)FKCE,GF]/Z0$>CF<;2W#MMP-? -MXE:RCNI"3PUM?BJF@S'/-Q&DQ4LO2`&]OV7`NG89G6'*!%@QPX_8M&TTOU0O#6X%@X*9YN*\`0\]C3;VEO5?R7+-;,"/?1 -M3!V9+$OIHRF)%@4JVKI>MF2IK!&%#/BYK6,4"OR<*((*V!@;SKRS[5'4'UM1 -M^*X[*I@8*4H5!.LXW7ZRW0ZUL`NFT/]_"43_,+A[SY"-U+?_215PLV7W%B') -M/?X20SA_(J$)'/OA]RM?66IW$O0&E/HV^RZQRX[3D4X&YDV<8?[8U(=?.R1)O'GS+(?[?[/>79V(2I4%M>[\B;XI(; -M>UOH<$=:F?^K^G!)`%.^$T*R(*Q98&#;\)8LY%&KJLM;`&)9%$MF+_;\@&/_ -MZS"<^?+284P..5,KF3XW]',>>_'/=)FHMA:DUQKPWQ3ACM]%ZN12O`.,F1"B -M%L]IZ:--PI;]C1N]DE8!W.2/.5`N49MZ/X0#LC?IY6>1Y)="8+/6U-W^E.:Q -MP$?4;L2J9E[CL<0O/?&\=W^"UZ*>\8YJ -M1=R[JS)41[%2[N7-\(NBCTK41F)C=!\OC#=TG)_4%?"UZX(6Z9!^=%[!#M -M_Y&,9\HU?"+M:LI;M/KQIRY93)J@(@5[-OY`6@DN/@5T/=QN!9X`,IM03BLZ -M;B<@4\2VF""-2O`,:8L)Y#'QQ(:E&X]IRWB2D=`'P24^))O+/U8W9T>]Q;V? -M0WQ2[.!DF4*'0_=()*+3W0*$I,#/])_O.X`1<9#)$!NYDL<@GA=VH9(V2XG)^^U8)IL!3V64)K!^69&C8P'0<+X_9G%*`(5R9 -MP,@$.:VGB8G+S4/THHW@50$5E[[8M2J9?#N@:[YC=('E#AK/-;ZE'!/105)[ -MA3;W`^S_FXUF+G"C&RK'MO&Z@OLZ?MQ3-6\TX.O)9I:K^\)Z>"%-&>"W0^:G -M_6K2ZO3S]#BCY!YHHNT^D;"5WV?^*3H?Y;&ZT^?+#W5DFXZV>H% -MK3N(QA?NV`2/IH,G"!T?#J0OF.),$R]C1%\644RQGUV-)N!98\1@@BHXZX_R,"/PF6 -MWZRCBJ6S%TU97]$PP\I_EPVNCF`=@H#N&.S:MVS&*Z^KO\5Q>C -MAN5V0:;7-329D;ARPF6V2!Z6]N>(_WF%WKD;>%U8\&_7`9;YXP-M+#"^_Q3B -M?8WLDM6;DI`HQLLAR!I>#IJ18V9C.EE6Y,C7_DT\;;E8,J"^^8QTA0"*: -M#24CSLEW*30NOW;(Q!`.^Z/8XUXN5$)4.P@%J]-GY<7YX7X;-8)G[E,P:& -M"X;?TIASUU.0!W\J&R>IAV29$;:JR(=??Q`AR/^F@OP:#5075."V$:9:STB5 -MJ33+S@5HU^@M,[3A=E(B*W@VY6_*B',K+YB>1EF_AYM'+#O-+LR2@F)M7*YS -MFZF7P*3S@9NW;U)X/:U_G7-E):['85.!$>?T,M[5BTT\D -M*^S%><=W71IC;>;T;WB8KOG`/_,%`&_".+,6[Q-;QV1PFHM4IZU[/V8"QCQ)/_P=@K\ANJ]Z!IJ -M36&\\O7?&Y5VU,IL7LF3IZ/JW]))@FWLTQF6FNR@[8Z,#/P/&M_ICGK?+7`& -MO71'@>&>'LL>$Z[HSQT'NE1E,/!&BMBHY,`#&6QHKX),+&I@E]68-!'4.KD^ -MB2+Q$-),>#T[@M+\:Q(T8'[,I9^CPW14-[^@VKN?L*CO%]K@0&2^G;_5".S[ -M9/F]F$!F*]3XH$$A.02;F=,?*1<#!S@]461'WP`_GFH!X`5AC*A-9>1?_')3 -MWMA\R<>?HYDHC@7[^S\0)8PD0$9PI<'7YRH<9F?@=PVC$B@-;";QZEMH_K-% -M?=2SM@<YO?\"3(6AE[`$35<&_NDS)>?NN"4#$F78>>.^E\T9K,G%6 -M((S3T\'RL+($WNUT4$5^H=?DC$3(9$B.WOMJ**U'08Y) -M[(R3]!&,+6"/D&FI?(49Q8RT#%06P4N@V-:+K&8;!#0>B-J'_),>#*OF4ZE/ -MHO$+6_GSKPRCEK@<_]CW;.NNPP7+3@UT0YPG?=TX]$TR6CN"N\N:29NOR@+3 -MF@GH%S-*/;BVJ--4'E-GV%)0"[Q9NL*(``!AFHP7="J+:\CI^H7ZU#B<;-0< -MI43VI06;UBE_K\SR$3J5E@HU/:$,Q;:06("EUL?II)K`$F408L1\_>IC7CJI -M//EYLFU`YFW/>R$G8C.P/TVC.!R>[^K<]9S.4@MK9; -MAM`YFRC^7`_O0;&9V<0D)]W)XJ@G3MXK[M@/Y4\@1DAG7@C<6RUAYP82!S9[ -MMMD<(RBB:?^JBXN&9XE3ZG@8C`W$HM\!L3K/?G\5A.M;U[K7K\<&9;*S,T^]JL)A8@C -M,O3W<.[D*=^VERR'"#!9NK=W2T@CFE,*>2>J#OO+)C3\.#(0Y(<+;EP6C7(B -M1">.+SON/',;>Z7;MZ&]U._.YJU(&)ZX)5PB9=2JU:7GE.4/G3VL.,)6Y\;+ -M2'B^%!^LE=?/6'[."2FK?$'<2#4`S7>/NK,9GM`Q]K:6G9*ZM'PT`:USGTL: -MCG'::2>[.(0`ORUR^U6\.Z479\P*31-O)"B4=:O@0-OE99U]R)KP'2?.11H' -MDR%).*6*.8SQM\9[;SP\*++8Y$W"SL,_M^?*&D>7*W/6D0"0I:#R?$7'Q1:O -M5/^N@U)V%/?Z\ -MJE<$8^ZQU.6*;5_!Y*8;D(!3A#>%P3^S?/LF%7KSJ<>6Q^#]:6.R77X*KV[. -M063OZ^SOP(C@XGX))<3;)*D<97G?/B=APU.1MN4D'\Y.P_;DI(FD@78=P(W*-$E?2S?3 -M=?1LL6Z)MJ]EW/1$K%H55C%WA[2"*(']T[]&QJ;$='7"-\Y!8N`'RNX-6+AC -MQ(4NEHR!&E$HWFN7,W1Z$*;A40:L>29)3K;?U[5#$?8[Z7]D4JYLTJ('S/32 -M>O[5I_/9!=$8V$0>CJV3DCMDS^<&\!Z\CM%5_S^\O$%C76\_5Y -M+ZN+$2=2#))A0`,FTOZG-3)\VNT'*(ITTK;GV2Y6,CJ2WH]H.;5NX0MPMB*E -M0D4;YGCBREB@&0K2-]'D2/5/C&*@47!N,6T4?OU/>?2[FV,VT;YR_E`OP[E$Z65XBEE#"6L5(NK')ILDG9\S.%JYNS(:)0PV<"6\*]%?9MZ1_+ -M)8UVQPGE@[20;R8DJZR[!S7-,PJ(&=&X?P6M.R/"GX^UU_[+C:Y:JZK?1[,G -M5LU'3,U4N3\7)3Z)'/PP4-1N(+X5QJ(O/.?O[#DED'JIK](5,+$B/NPVT -MSB5.R\.+]\%?T#_>&O_:>)6P)A;.*0:*\$)/[`2XP1X>"$D>B94<$DT+'$*/ -MHK6B[INHZP5-U/N!E.,(M-4*D"^KTSZEN/4LF\(F!$A6Y"A!5?IH'^1-Q5$.3;`9P -ML=E>JZB0G!/0W01R@NP&)JBBVTP6&^%I+;=FP#UH&LRNNLATUY#U% -M7S[>$OG%FQT$).%%>H(SPG+QO-<,W39(BE3@Q[MP*CK04.A*3'].KEJ0"P0H -MZ$Z%UJF!AC@'=^N,KB.`"PAN$3IR>SRN6='Z61#OVA,\RCC4P!:BXL20V]FV -M069A;?]+K???AT5J0AB1/78:![V2VIXAKW*[(0'S/2Y1].W]?%6LZ$:.F)@D -M.@2HN6?$3>VO\2NG?!&;JY26;;@[4)`%N=(3QM,O@YC]4Y)!_?Q\EI=&"A#& -M3?B4M$6;:[?0[ZYBFJ>!-574*[$(8_8^,[R@8??F^%2+[AC]2`2R:%1CLAC> -MVB9-2:3USYY68?L0O#JCS$B'SKHB5BP^CB#Q)S2=O9`H/)<8UOU"O&1.VBJ/ -MB6,W+5`KY"6$]LIJL!M*R!MZ>LN\SRE)H0,@/)<@K9#-`?:01;4!`JY/F*^0 -M%TL),OV[5#TU2E#ZBOSP[*2X0AT8;$WP]UL_BB'\K\,$L?>:-)7?_\]Z-$%+T*#B7L%K16W*3Q@KX\R -M[=&RL[$HP*&0<'@XVX8N88`*T&9"DT=N"!$]9)9[+7+_QL:NB0IH, -M7D.1X&C/6YW\`;<%HWJ(4`?0G!LXOVE,$I6P85#GIBD%M5B7\S56WQ24'VGP -M,I%%4#P+LOL9UEM8OD;%">45A$0]"?<)=N>C<2Z3E@@>.:XJ^8SG7K)Z3?$3 -M!1$D%))Q`AI^5RD"'32JG#OR?L%EK?M2>11*LJ]O7T89/@7]%`(OAD@K#DS$ -M0Y\8MHJW4H@]"KU,5WRP#^?J=XRJOFDGO(GWS(F`JHVMN%2,[]O0)0L\*EMM#6T9`X9+G -MPLL@/T#LS+(EYHTO$8PI1%#O;PT07^XT,=QE0$J>^DBRK]7+^>F>@`S*W'*; -MA)L)4D0%\[%DGPC5(`<%,_*X3J/JT1UK5*AX);JWV:WE!8CY>!H427/RG0[A -M)A;J7^;_1/CZ:XA+.*#&BKSAGDGR`FY:4/()"GMTVR"3(LX-"A[/#:O$BM'N -M;P$!!8,TAEHM/0*;ZX)2(@P^H)GNCS_C47C'+2<.##^Q-7+1LA9@IWB9$RQ7 -MH?EM%*=/='DIU\/!ELP]ZZ!._Y;R5U:+M+.P\*ET1Q.D(+D0@:-\R,9QN/CB -M_#V:Y))'*25-#,2"=\H,;VR\K/EVCSG#$CT!^^=0*B,@\;$_.B+(6#A8C-QJ -M13",G3^N+'"0EX"H8.K!;?)H[?+B+FY^?AT)BAS;'9J.V&.O&-NZ'&&<7NU6 -M0!R"=(YJ,%[%OC5;Q(;YS`V3@_K/%>[&%=VZ$=2^"-`I/Q[D@*SQZ`S'L-E;5QJE,WF]?2*?JZAHQ.;P4@I)*"X6A<.?5'2L/F/.U>60U1^95SK*##L%1&,C$=0*"&W53<8F5OW*+=8NW&2<.81 -M_B#WP!A4;V1N=V$7!KKC1,EY^1U#A?HX!J1HC=3!1Q1I(1-]\57L+[>S3G0U -MP[.9>/SN\2LW%EF/3+-;I=P.Z0;53RN&L4U$-A<*_XO6FV'2M%4H$WOU.("% -MR>^/(5./$N$EF(;G,D1.I+5-6DG";Q1*G.L(>R+U@[-OVJP?/G;T:ZGI!-T) -M^9L+)PRXVC]'.-+N -M":Z&YO.^YG_@MD>^$`K"E)L5Y(O"OE--1I[QQY,,;)L7P4UIJ]QZW-VIN\O_ -MOH9AJ,DE4E";LLQN'Y>P<8'1OVXA./]1*R0W0Q>?82E-VKJI7A![FL*_MAW\ -M.^&X%2"B40I[Z5C+>5X>,@J:!?=#U98#MW*ZG&=&HW(^G5$L]#7-Q"0K6 -M:Y,TKSFNN$*-K'= -M^\905W+ZSK<,L".@#=RZT(4J-%D()85747/N\I*_SA5TG=51T.0Z%@[`=0'=5*CZCG@>\B'24(B -MO+AT'&_:&CAU7C9QS> -MCAUFI!&'YH"&LLK`#O[)1>/R>(CB3Z(Y!=]IMDZ6)D0>)X*A\!B"#D,[TVJ1W*P)XRE*Z#"]-NW(O(/;\96:^L9WG7'U`>S4EY5)BNF46"3?#_]U$'E)M^SY -M'Z6#DZY+.!O!VBSP,U7')F2*('I"G.E[#M#M^;M%@%;ULD['(FAKUL1%V!2< -MPEP?6(1U<*%SZ+,B+2;("V&T!*BL7B=,!F;XZ&A,D7B7IS'N-Y*>WC8_OQ[: -M[_I@-J*>%LIZ7>"!TV4O2GR-E@;%F;&I;).9'Q23DGYT)E*D^_J=:TWN?`ED -M=ZV%*Y8DHVN0.#L'K52/.<':N>>%NO"#RB`VZI=PY]-7DH'0:4,/P,CHS;;] -M1^.?:RZ_SI%]]=8MJV@$R-2"[>=B+X\`\X:B@_&S7S:]$5S*@]E:R%*$3E^U -MW/&.FMP;EVN.P;[1>Q81YMI-!Y(_.&B,.G*J8V6D/V@I#>W^T0&#+#=1NE/V4%-135B=\J=>_;UP.Y^CMV -MIY\J#;&84,1:R0#A!"3(AQJ^=ZYZ0(Y`?!&QJ)0$AO/Y7AA$(Q[>J9^TQ94= -M0I.$&<>`@`)#T3)7K!M4&G#"_)?F42M&.JEA9; -M/@E@%B;LU;.T-1DV31Z*]/'(;T`YML=8^E7E:&(AA/8[`JVWB:FKN1ZRQ#]T]%,2M+)OS -M2&"?(YGP[@7I0T+LQK9E/T -M0'R<6*$"S[CCF*@!ADWK*?2<=I&O*$[BBCWM(5H=Y$,FJ&LP?C0`1LA,H -M)I\L]H?@VIS-7RNZN6R/UUS@:]#4YP8AV2P4HH]-'E$'J_*1S`(,GU))CVD -M`^M,L>.\L1#A)Z?LH'3-+O@1P*TQPG%P1Q.)D6*=7515G.?OFO5G:'F=TR]( -M%B6OVS1YJ^\F+:FSB!(RU>.PK+4^V*6(;O^;<;&.^DZRJM279=B[/?KN0[0] -M23?J`2\@;Z:Y!Z9&ITH*IBH);VUI&-J$8HUW.]DD[_BQ=)MZ.KE0B%W=%VY$ -M06X0\:L84:KY?NFR#:R%B8\KT7JC+P:GDET1+[I;F<'OERXTKD^>2!FY+P.0 -MS&O2&`^A)F9C5Q'A_FG+BC:VWML$WNA>H"]NTQ2J2T*C2%RXU_6K@ISB8E+` -M@3V1(&%!W@@D2V]MRM.RL2E./J!(2R3;2".Y$MFVOB&A(WVN#.1I3MP3&ZHK -M:/,D`6;^UZ22UV>XI9)C]7B&-A?2@\K5O6PGY1%61B]7U0? -M9KX;>)#`@%1NY'E#@D?RGL&G@F81?!3HZDI*/./8"WQ=?"HT-`+CM`?^LDM)I@:+#6Z+-G=OF>,[PJ8*=8). -M2V3HL/S3"T*(E>%EDH)[B.:&3]SO:*7.^.;3`(I.["/07%NQ[X`9=//R=H+Y -M,$SDW3'4#//OEC\Q8)W8TIG^A![8H-. -MAP*T4[U+/?&68+@(X/_0HP1AC5_X+WB+N@0PC$-DJ%_NO*0^@CQ.MJ[-BDSX -M_>K]WX'7QF&A8'&FX0K_94/Z@#*MZJ[M,Z(%O#'GXJ-2BC5QDOS)*C3!#=7! -MUD)]N0K4/=J2[`WA,,>*_9ZG#[SO(B2-7C-!;=P3?0O

QL+@FY -MAZC:08VT=@E]-A4<]<&+1/[T7!/W&T9C\`)9S/^O>K(DSQLI9OLM7E73:EJJ -M`A^U7+J^:I;B5&MQSAXWA[[A3R&TR6Y-%TRPSM&C$,8C(;R&`-3P,ARFNR>% -M['C>@%=1A&WA;(]6;;NXD>DTJ7FT]?Y-,9':4]M[`!_\YQ#E4NKBSO5I--*$ -MSJ`'UQ'8_??-^)XF<'1,K=1AE,`KS/90:H)&5T.5A"*>?'`@AWB<6UC5KS%F -M"R`)BS>1CU!\L6U1CE*+>_'JK^!+'R>IDS\CC-Q\G&>9V3)"BT0KU]3\2']E -MT`O!A"1PL7Z8=NR67TE_J.^8=B:R7G!IQIZLT7Q/OM81H!>6%!A!.XG<0VJK -M[<7^%4M6$>;#;_K/YD@?YK0\:0E,/9\R_C>.E05R#Y2^%PON@C2BUPWK5$7-1_8A#&Z%32OQE7*:6Z9_7PP[]/`ZY4)[K;BQ+S*D09)QR)IZ`.,4+#OY'Z!(7ZB_JQA\7O9@$A -MGWOX)PM4$K_E!B'=<,X6&8<#J_R4.\8?SH<,H"P''&$M$/1:@*?/$D:!,M=Q -M*J>59-/VB+Q>9RM)-0(W.L$ALXT_D+$K46'T%>:@#D8+TNGQT9]G0R]@7'H7 -MW[AHE.G\H=UAQZJG]J/\S3Y,7M+T%@99X""$-FP"6_2@L+DIU^!:#)Q-/7TD*ME!VI*(VG`$"E_F)S:AO$P8AU,KE0M -M*V)&!B\8A`3,;($;)@Y*]?12`;H%TLJD\)81!ZB.'%C_X4R;B[4PL%\B3)"< -MA/VEC)5*4U6D^]$'>(2QM6>;F[$@(S=X7]-B*S5^0>)O3=*)RQ.JBXXW/>W8 -M(_G'7U'@?Y>XL3W1*7@5\"GL%?^&IDE"W8NKI@-F$?FMOI@&1%+P4#19YIF& -M&MCKFMSYF)V97V0DE[>F'ZT -MO-ZNO3JPA7/-$'80?R>*)^LBB]I_E9EPY2'/'=Y4H\.SHK.6T23SD-A)?L[T% -M)B(A_JOL*G]*J>I8,^ZI2PT\.4=8GO*?K-P]%P^+H&\.$V+K -MA<2)%Z"ZFC%NT7G25G)P9X*%U7$CK&RE<]**F\:FDR7HB?^[7A(PV6NL']N\ -M\\TCV3L-#IM&YFP^RFX7LL[ON!AB%6ZX6K<]#A0K_!TT(EJ]!R-F&`R'+X)N -M%M&V&)1WX4&8OJ<4NBU?62R63YGHP*8.0L<6!#?[')QR<$YZM()?;#&9'KC:<\<^YT&[\BY7WT@5)@5 -M&KXE%O@,4U_C`UEROV2PF@/:%MXWB7>0M:(^_IAY?CE"BR8>M_>>0*;M-_LR -M%@.!&I/]O$1FV\"^+XJC!5,A'QC4NCD!DKLZ0,DV48A::&C8FR*+8*9$;JPJ -MPTOQMAM'=X"=CF="QE&032%W0&NAJZ68VJTM9G:2A_Q>=PYD3R^U9H+>#EH' -MW$_3XK5%MO/U5CF(\PA!8V2^;P,0:VT(#59+\7HZ3!73OG3^@EY][M>_*K3. -M9J\,9.I,3U;SPR;O/)U;)$=N#XLSEX2%.+HWLD\L<9G5LWH6) -M#6/$)=%?%S%9E=$FXN,MZ)#MER1T)$:.I/^$](E5BI!4->*J`< -MZYE!E:)-Y1<24JP^(7H7X24=W,BH?(A@PM$\%6.3C9/I!_D0EDRY_8L/Q<,3^ -MT,3\WK-@[I:BRL%SC&O12WO0%ZWD`C9KY_%>(1DIN[`:**V3K>%+MIRA]9CP -M\2?%2.#ZU-E/$.*#)D5(BA(O0.+QV%Q9_L9[\8IY3_\-51XB$S98P[W12,N. -MC'(=!NQX==7T%N,28.!W#3:;][J+%Z(?^>W)G8/&EBX$=#D%LU4*?4EXWYR= -MI-J^?K;*I;)9^.;=/3BV3"LFM>-/A5'_(GV-[P#:;3YQ0?O<]>?A7#A+8!VV -M?K":T;%M\=@$.K/HUO`0;7I=%",7&A\$??>;-@TJQS4K\4[]>6(XQ3@W(M)0 -MV1QO^781R7\*7F_Y7#C.9<\Z31G,.=XN2GV5A"?-.'\[LJ(>#+(VE=GZ0O,= -M*'5(ZQ)6M(Z]_X\_-]2^7W57K2V*O!M6CEO5,2/.D`TXJ=)M>:C!BNU9BV," -M7@D(@JHJP/W;R'8YI>NZ)8`D^V6>4-TAF_?W53**LWW-_AO/6@#H&/]%7Z)K -M(M]>M.^4-`BI\='%ZI"/<;K4-9LW@#ZQ?\=7S@TJA9#OR1C.>;!NB)X^S$2) -M)N7Y@VDSGZ'=S2#\JYEZAVU.%=D$`N)E8>\*!TY>LO9TT:^I>O?,,62.%-U> -M2Q_=<",1;9GG7Z$`,4R^\ZUZY$`%G%\76!/P1_<>VKUR48+X\>`F:.:0#14"27Y@ -M"%LYX^'%3[:'XQC70IC"Y,OOTK+B/NLJ2ALOJ((6:7GR:;2I)PGL"IE_0=#89V#;U.$WBT'+5!3A\W -MFV:80&1R3M`&Y@3G(,`H!-]Q:3,[BN9JZ$6Z5)M.%V!L.?4YSH_OZ$(\2'[! -MUF[WA:26DCKLP'7Z,L&!"TB4=U7Y2EYS:#C/40BS("*G0*BA@W;SMH5Y!W>/ -M&.2^%[B:#!*^VYU'6'@C7%X7&5]@1@86,_TO])ZW>^A_ZAEO4(-^2##A3R1$ -MR9PE1@7E2&K9/$Y,C?'P6N3(^,XPF"E'++\R0.53UJ#C)#;I8&5<71SXTA$2*U0J6@4#.%@LM:.? -M6C<:W'-Q$A_6`6?"*Q#FO.C%<:`0[ -MR!C;F_SX/.>L:,&G?\?'-Y[M5]G$*TQ9Y4*ZTG8\^=-9%[QHD1E(MT@<8>T. -M'G+'G5:@PC78'2DJ?8@Q1EZA;G"+ZTIUK'^HV.8DFOD7J&AP4>TG/V=`@KEV -M^_:.7A#SQS*".LIK=[)LEK;J+'KU'>4^9IXV3V&1UA,QI&;GV,"\%RS'5F%% -M:TXP/V%U+1-V(<*^/'R?-EA/D%;KR<)X!=MTK5L/-5=-[Y:IG"KG.]\8&P-W -M$/?^NHM'-*O#36ZVG^E&X]&)JY:;8V>@22]"OK@G:VL;6-RCR_?6[5HD7Q+F -MRD(.6ND*NK"KMF:"V<@)>^W<`:NW2%B'V+T2^XO4Y$9HH*`F -M%$CDT)_H!R26VRZ83(_&(MW"E9$HRI>[RH>C@D& -MN&@O'&0XAH5G^16_"Z5=Z\8-?G[(JJTSNP4[3/+:B.FC=VHB.TN5T`JU85;% -M5W\(0!C->T+*.$A,;@/Y7GPH@``B*O8\N3)UEC_K"HJA.1*A4F(A84+,X'GU -MW)M#C$;*M\V&;+[HE-[P:9D%%O>&%Y`5H,UQ=C#GMYR=YT.++;2S8O1@/Z/L -MC%2D(QEH$7R#:>"(45>R8T3'OLI7=9&Z=KJS!->T*7T>'XQD3#95QUD,ED"W'*KE -ML2Q5'6(8G<@_(PEW[JS$HQ-E*4P=D9(G5#V_B+/512LGFDQY0S_3.9&A4=Y, -MM\)YDA2*]$7MA-96'\?%K:KK?`=#[;FW8>P\.Y>?DD1O/J%6$;%%4$YG*[:N -MB]LY+ZD[=CN%GFI>3U_.Y\M8]MBV95Q(^F!3./B([&VSRXV4KO]%-VF6RH3X -M;P.`AAS<_X1YMRY!ZCL!.^U'-!A";Z[+=$&7!A-/'@:N\/%8G'/@CP,2(OG: -MTQHCMI7&%!7I!Q]JKYO[G:9G64Y_->0OT?/M?<]P,,F^F1=!EQXD>/FL2Y:/ -MX:I6)Z8(/N.D1KG%\3L. -M-^(]GW4\.LI07S))_E\";.TQ_K%]#[WQM?^/)Y`2<-#?,])SX0_@&A?'P -MOA.:`X+ZMQ2T,HIR+YRT&_@.7^8T\*$[VI8[PYG1PW3JB:J,H_\>2F1+)^:9 -MJ+I2QJ/+>H'U1UN'H:&0$I$31L_XPUN-_;X]B$/>*.U3*`$FF'85I,DK3'Z4 -M(#=V(O->FQY.3A@K$U!T8[)M^/;&<3LA[_$6\O?$;??1+&<2_HH]4J3H<+A/ -MI@#MA\3]9`8TR"5NY#HNF\WVP.\,5K1)2(Y:RA+P]I!H0&9O9GCL_<$Y5#MQ56!+!US!;SY_7L,'Q+/@&N:5X[(A@HOL^-GWV0@%Y/KHLI_TS&D -MOQDKVU%3-69(2X;FH!/+J+MRY02L]#6/-%9,EPWYJ3MR'#'4JOHCM`,/;DKE -MA4T@M-`1SD/MIR0'024^7`1O\,VK9]M61(X,.N\@;K'56L)_4=D[9L`-=^=< -M.40.1C&.D#>P[??J$]2RP)?-GYSEX$G#XRQ=\_5I+UO'%I_P(BS.R(WDB@A@!+.@#D[P[EH+\$N+S!B1Y -M_#87K?-,SSDYC6HU<'`-;W\%@+]T-<5^>@&T-Y$N3*CEOBP&_7+`,7A!&'7@ -MNBI`3S/#@"LSD@JC.41(M&V6!DJ5Y93WS'>C9DS7%]%AQ2+C.!Y)JF/%\IPS -MS*;ZNV"E>GCQ>6%6HJH/WV,;!T%I_ZD$:;4\([%E4EAGX$:3*:EX``R'K+,. -M75,`4\GCJ8$+P&969,>R_%&8S0^O,NS6V\\[_E@=W"*6K]8UO#3%WWX"V9`D\"]^)9".509G:&TYHDUQ#+ -M68I2LLUA5T=U,'7/JA^$4T7:N>@JC0MJ2(8B!TMGWTC]%*R3'1JV>7 -ME#^7DS%XVN1OY:ZIK;6)?GBCQY`3MM[GO.ZLIU$)Y:"1Q4$F]0N+H$A!ZZD% -M0J[&CK>">H-&$6UJUU(;:YMN-X -M;N8<+TU$QS%A -M&[Q@TY3"NM@MYO!.(\T,R.;&J+# -M^UO6D&KG0&VW8AG346=;/O`OP3I*:7Y44VTY2ZHPN#YJ_3A.B6B8SNQ_T,RZ -M0)[^/*&1A\?#3;1_9`&2#D_?!K0C=J?@W;YI%)3Q2U5F[*H%NA9F=0)^7,CA -M5]6VOO:%S#N0;T:0FK;'#H/!<1CKQ[7T7PK":A.I4A.L0X<#!+Z`RR?=:^X( -MXA@3>>K]976/^]+<2;5$5>/B5/8N(`H2PW2]51UZ_MMM\72HLH'3IF9B>W9J -MJXE8+J&Q66<7:QAFA"^23YL@22,;-42U31+QFM_%8[E09?(POX'3Q9>EW-;D -MRD:C^N@W8.2N2Q,1W+<(8RPS>&;_Z5;U+6N((AQL!]K@G>GX=^E2$6_OY.S; -M.YK79C$&A#62,+JK7+>+?SB$(6].6N.):#Y):Z?ZV=#/7K$;WOB49+A">>-JJMX;7&(HD`:ZMBM(FC8F> -M3(G$?DC/G:DP%/N_K5N>T7 -M0'TC2P[[+$J3>!./)/031#N%8T0UM-WD=#(38H';\*&)K(;(:/4A\*H:WU;[[[/>0P6!^$SZ= -MBU4B\3COU,+.OQYH#RZ/O^$2@VERP><4=R!A,+ORVNN*_67WBYTI`^8O.3-^ -M4+Z?W?4(;:_+4`,BVE&*U]FYTLR:;2<6$L,VPZ)G]?@>\0QZ@HS,OQINQZ5: -M3637F5E&]#?)[>[?X5,)L-+^[L=D&3N0>#'C>KIC`<A4`BU#MD*X7E?Z^1,+UX5H\,UH@O[D?81E#P!PQ7#J#Y+3C@.2 -M*JNZ17!U&]HJZ45+^@J+K_)IH!HA^O&"W"=/ -MC-?VMUWI5TW8`:A!HU-&DE>G>T9;2AIDL7EJ?=8N -M9?0STL$XD7C"*I+!@_[&G1?9DP(`$)]+)8,7L5N\PMUZ(1DZE]&9L6`G]Y&, -MAGS)'*SRC.Q<,HE&@5AI)U7@4]]>OXE>R7.")N+J%Q[)E9(J.40-%Q -MYX[3(&5.*<7R#:1=U1;,/4-7'Z%3*-6WM2*RJ:RWMU['VZ/"5\&=I4@MA22( -MS1IC,A-*9./T&=!2TUCI#Q4,MS4;Z"T5(5+UF.7-OO.9$,/%\B66^2.OR"(E -M7,Q\$?O4Y)>>G67-K"DNE^DGJ+H#,_V09^'MAA7=-H/\!>*\2_VMFXE3BZ"+ -MQ?53B$F@:<.`-D(.T;4NRCX-`P2UF6 -ME&KP!Y/Q!=0Z*/'KOB$0'2Y2U0/Y]`B:W7:C+-JY\Y1<;CP,NU5`1OD%\IM. -MC@IB8E*9M:BAW0JY&YNISC<^MJHAXF9LHCJ\0`Y%]X.GOR]YI!D/?SG]YQ:D6R_%ISD(#((QW/!EII;\LB>:(8W'I'#R -MA[J-\A+M9C!`DNL0SEW!,@^X2`PERCA=HDA,3O0+0@6V -M*JJF.86W+<`?&^[7R:W>KH[E5^IZ'[^Z-GXK'FR"@] -M83;T.>**0M/.?"VM2^V[9:\I[D[<^^K-L"".F9K5`V6,M1ICG([*SK0@^P+4 -M\+25$)KACNIG#>K%SV13B@>JY"FX990[XQ\0?\CS/*HED;ZQU0EEG1V+!H2[`2V]R_TF8GZHWUH<4- -M_@$F2B<9L&[$<,*G5CA"'S%,])-/,)"P"OOP7JIK&2BH;%V)`@*<1P]"#_MO -MZ^+=?WIZ@3R;9C6Q'%T0;.[P0*%V?0YB*_VV2OW'7NU]8U[F=]IUU,DVQIL8 -M5V-;^L_QVH9X=P^ZKB7_HVYN@=Z,!A&E*YG0$YA^LR>$FU5U6@5TEQCP>4>: -M+1KYNR%F,(\=%.*9$ -ML-'.GD3Q[WY0RQPGH[>>6^+34A#JSZD;OG>&0'W37.@:%_.2`^HZW+PR:E6I -MC8P`BK%EQ)$(\DS8]72O*,WV:9P%ES^,T\>RE22Q3,SZP9.O219)E7R%9\3W -M-JGOG%$WL+S#^0D^T^<:7/A7N%, -M$3/OK8A)7OR(/.&E@9#>C$9C':DGF#!5UAUXPQ1;:&K6V=)/1[5R8V3% -MV-'VS>6\@NQEB#;+6Z1]2<+ -MTCN$408(\F2I069U-5;\QO!&^"P60JY;')WZMF9K')J$)>H5D)05.(,5A`Y# -M@K^STGC#E09>"D3@3WS=@4@V%3]^:K=*099J]@5_ML)(2)5R%C9LR?C1."C& -M;5>654=R$E]&>5ETG'^GNN`F_F'U,"C6;#T:?2ID7^+\ZILJ^#+]%(9G>Q.8 -M)\4@.%M&+8;Y>0"['R4ZBXPJWR[4K'[/=YL]/MFH$[RJRM16Z_VU.SXE]JQ< -M\F[>0Y$LT0K7[<=]QY9ES#VOPS'G0[P&B%AE%91SK*XQ+5VXO`@S57^2=PP8 -M_,JJCC0VMJAYMV`2@3>%> -M/&75%:U6=J<*8+='XB77(T%`02AU`&X3(X)V0JLH\:#+!EGN+V%7PCO223K& -M\\JHI*C*Y?QMM7J^;457+JJ"_X6GPS(8W%?K&L`_#/,/\`!NJ1)9W.U -M@J0IZ2JBJ[IQ5J(T2)IK.<&*Q$,3\9P502-.5#@PQE'@0P&K3G(GR!O*:"*&$_M'V=4>5]:>WL0B%=IBA0VW,DOQV(!`XO$&56+A% -M-'@(UJ[#X\-%?W:Y/:-KQT?H4RU+TD$*Z0R)>L`YVI-<^_;[G@YK3UM->H"5 -M+X*'P-6R3N%1M:7SP?X);#M\3)^#[+7!(-HR(/,F*!%&*P$/)XD'`GCZ$Q)? -MCT]9M`+^B9&M2W-3'AZ]A?BMHCUK+2^\]2,(^9&-IV3F"OS>\V7"V'E^W-J2 -M$MG4(XVPQ5/)"T[$A7E)A'GXV$#]C-YU##`-\,QX)DXMX1!ULG95@'3WLY9Y -MPI``B$/PX6^%V)49,>^3VN9:\=23IZP?D)P&QKVC(EQT-'MTV8" -MP!J#C9R\8U5'<:R>4;('\*!2;5O'[KWXI*B6B+%2Y+@T&Q';/:?SD6VRV&E@ -M8L_OJK](9*2)%N9D-K7M`+@3$1)9)%#()WSKC.6KBMWVA+P>_\;'#@6W9-01 -M$]A]N?*&`M&EJ5WMW41!_'7?CB6$L>IPH0TDEIC&W8$:"4/AD -M;WE'2=7ZK8:L/]2U(31ZY!8/T;-JG#"3;(ZY'T-4:831*027\ALKKI[J.WZ` -M?3S$YQ?`J4LUF>^5.2-&2 -MY''&AU>5C_'7(EY66S$/UI:S'X#%UJMZBM7X^4@)%SB'V7=04UN0'>NS4Y#Y+V;Y!08J<93JOD^MNLO_>?1 -M9I&]?(@6C9!46X9EGW`OF*()ZYQ)@.S[J=KA(_YN)GAFLU&'J+WJ-/TTWOXC -M0UC(JA.'[U;(X]`CQ`TU]_OX9/ZGR/U,[6!V(!B4QV?HJO/-=O<*#+:7&!"6 -M"4?O6(0VY'6K/K2VXP>?SR(Y@-QUV>8BUHT^;!,3&WY(7^)_1[G^*D"-0"I0 -MC5N)?03KW9\T2K3O%5#$0[N9>0$PRQ'BC3%R)K$:JZ#S$M%$6Z*R._]:D6_6 -MD@U*%7IN\MIQK"#BY>Y;X7['"QU;ISL&-"3!#KV2]N>5J]4CBLA6S$WMO<'U -MA]8LS7MUH?+V'`2_6L`?@Z>ALILBA(;:9=-0O7=EZ3<7^OU)1B_G,UY:_WVE -M!J.3BW>JQW!A0!%SE''<<4.A-U-?URW/&(9R/U,(8S -MW9H2U/*T[0VP:XAQX,&1EZA>B6E_/J$+#TBE\T$D'9H:07+X8"']M?]>]0AM -M_$TK38WWNO%!\C?M,7,ZE;XY@:8D_C>^`L,),#@U4>5'JVL+$<,'&3F.:TN. -M?^/3L&1S5\M6/N,QQ']`?"@4SYEP#ZN`T5RT27W"F.C+.Q]^.K;*`.]^K%)3 -M26MBJ%O[!:\@^,JTR@^OI*Q,IH$6J2*GUD-XBCNE=U4N?Z$YP!EPBM0BZ,_9 -MRC.6-=RW%<[=D111A2UYA"V(UQ.0:)<)P_7W:O"JYV-O/W%,XY.+6;,KF1/4TM:@PR -M&.LB[J]]5A^`XKYX='X;PV:K2^[T]!^1I1/+&*LTTY1",]X\/)[5`$'46"$0 -M-GQ!U7\SC&<&F3C]VQ'FFA(OPHCYL55*NZ!JKG9NS -M8OM#GLVQN[FL'@`E@#_7!<8*HNK*2MXU/,D!WFXD^3C<2\.GP8KSA6JW[)JY -M>+=5(],!U76-/X">Q./TOXW"KY7A]*GI>F%[V9.@WO@UEQK].'/0#9#3QI84 -M?`?KZY.B;+[+=-53DZ58:<->"_'0MU2\%0`#K<<-=--!K/[$99-LK-F-)_PX -MP]-N9V6=2BNL,$>H^PTPKMI'2"-T)M"WET_+AU,IK^O!O_(_AY)GP#PAW)6- -M\KU"A)=OFIK%,-FW2G+US6^1T]7GEZA:'R#>\&VM,=V/M:Q&K8X")@Q+!B.(+ -M;5%AJ+/?_V.N?G83%V%7+?RR4@7*H/C>3O%3+>"#E-G[IQ1X;6^/N9.Q0YO\ -M_IAO1FP+^0>ZBSB"Z@F/?V/UQ+)3^&)^_#)LK-K-,-`PZ:$+AXV[BFO(S!;H -M%V=B.1`YARLHR?+"C8(ZR.S0?3?\+T-6[S#`644/VYJT7C+`76T93U)=^8&WRE*BMT@O77X"!Y+$N3"I9Q0D\K%''4Z%6'&,^FPB/^J6)<0Q'U -MQ<)?.W/>+P*9Q1RNX2WEZ&WXU>Y)S7Z=@9FR60-WCM4><>V/G9QH7Q)&&I>ZV'<]E'7-_69GIQ)6_>/AMN_-+L1"P2+RM?3HDO -M6A/+VO.27J92PJ1$P%^KE6OJ">3AE/Q.`J#5[<%=J\V*K[SU^0,^LL!5'NH]W39N.84')"E2H83:;\OG::'@@5%FB6" -MRD5DZ4:::]9ZW-A7\=7&K"*K^'^D,T(Z.,=?"OUNE:_KS_C+PTI;):FV6ACY -M@UQ68A`';(UHWY4?KQEGHA&!0LU!DGATXJ\,2??I0T<=>8N[DROXK^BKY/@Z -MA2#_+1MZ+]7YB\^)PY)Y%M7`3"89N:&'1KO;#H]:T,%.1]X%%"7?U`S@PFA' -MA(+@]K$;GKAD6RR3)A^-2IL-5XJIN+C837'3F:NJ0,MI/&^AF2GB71"CJ;?8 -M*15-0>DSVM3WJ]+>BMU9)KF$=D9R=GJV8&$\'ETDAR-EMC85S=8\F90%L[22 -M[H\\[7.UXIP&56XC_$*\N4N1!Q2/>\_VZ88XOL2GIN:Y4NRL0#2Q>J$-!W1- -M#=*\#&H\0^=8`I%?T)E@]@W^X(MHIDC$83E;'T6(0MYA(RZ8(C$ID)7H\B-2AQ[8&>(N(X5`ZOVN[^)X/KGGC6R)9XL`K`S:O:T:V3^J`UFZZ -M"@CS#@1OOM_1?61Q8EZ9]IHV]13+7!`J@37X%5C''&VD@W -MY3CX?45HY0B!#^9.%"DH@46U/N-_2JRE39#+(&AIQI9U_0\ -M9Z?V("HS"R``]Q(B_YR[R,.GU9#4U=1CN6`U4=;7@;A20HVT^R68B$\.=,"5 -M0\UT,;#'$P5X3Q'3#!(A1?`=-OY37%%>`-*[V2841UCY)7L&X;2;!E`?>>== -MFF?1[CYI<"L:"9*ZYS9?[TXPY'3^O@CE0O&D!)'3KM)?=Q.71RQ1!L&&AI,< -MSC[[VH\!+[(R;PV^#"),)]"`VLC9@NFVZ7>CG19=4D\OT)/@U8P5MR -M=[/>[:_]I66'W+VGHV`GH)I$_',U(`\RLD(EK4N!A;:NO#VWC_4N,ZS]*83LGAZ7(BLTYPH8$6*&9P%<^DS;D6V7T:.<;/40^7RH+CREB -M2:$W[+R#:I>!2G=&N@#6N.<)NC0"(9))::H[R0C03L%I -M)A@R0C#*:-ST*-0@3'ZH6R*N4L4^\5\OED]?9TJ'Y'L<6;'O< -MLG^%'`=$W#<^R",A=$LJ7=1"3KH]UZ"^>Z?V`-5UDL_M;R^R^"UCKH3#[ -MV0HGI5CV"OWF'66V5YK)/?0#U^0]MA@7ET5S(`S='DOM'0UB_2;1A'4XJD@B -MT*N\X*$T\C!*VA!IC4WBL>M"UEP-_;S?%0J6?8(YK%IW_36Y`4J_D9G$E@Y*(F<(R?Y^H#GLEPZA_F,/#9#89QOR+CA_GH@[:7"1#(9:`3J91G!??HL/+CP2+U:W9PE80DY -MO=$5$^ZIK<,MB5=5]L=)7D4"*DC&]<50;V%UKI4$U*K.Z77T!+>W<2$HG/ -M)M[?^Q@>\7-\$-B>!.#4^U^_>Z"C]N:.?,POL]ULLC>9--4;MVG?#`>*44E*EQ>Y\6.MMM8>^#S>35D](AA%V`M,QF,DBRTE\@ILWS46)?_(!L:!EB=BHIG@)+XJ -M`H%;T[K[QD'ZY2FI^QIG3,8#:%)HUU[Q*R:SM[<1$CS>1<:-WM=HH#I.W'/F -MSY[M,>F(-K2/SOB&M?`,:\GJS]A99R4$!IKX0I$^ -M>Y5MO%>`XR&@HP9LIUB'!`W=JRR;;]+FP2+[*`4V2)X*2%/A8V,6F[,#-,-X -MUNI&EY&,_:?M1'FM!Y`?I(6A,)8):X`^5:Q9[\/)'$7#EB*4&:A-:XD#'F[F -M>:GT/XAH8=!_$8VZ::B5T(^J+%C3>];#?=%QZ>O(A8&TKGI?2->]O[2% -MBCU?4\X."`R7/3K7`N2+NJA=+\6AV]IH@0A=I4G,"2HLEQ5*+4PC0"E\2:-% -MQ:@X2?N@&'&CQ_OII(D'=`'7&"O+0T&=(?H)&64Y%7KQL@^^ZS8).TB;8:HN -M$K@2;R[EP%5[<8M::3#7#_2E)@XNPS"@N7;"PU7EC12^9?/-:+Z@F3))JO8' -MW^PGAX/)M&PX$%?#^M\V,%4$J)2EXE5,F61TOJ&Z"MIA3I+21MI8+/,WVT:, -M4U,-\6]14&&4,]='>T+;8UZ+:?B]#X8Q_YYQ2Q6L<_?ON%'_3EU6Z4COD!7FHGZI*H7%FSC&)*QO.6AV6GYD=UE2BA=J:JFFIOAM)O&RG68OA>4X2'4J21'28,VA="`J&G`L`''_RS0_;&- -MGQAXYB?'^_=*=BQY!IR\,AQ+?SM)3R'$^=DHWE23XGJ$7!*Y9(N>Y8RSY\2- -MW&4'%#4,M^)-6,-$T,O9P*(8MF=%!??\T(M_SL9^?OZ824<['@5H-5DBKM8]N4I*'NVW$3*(54R*""+5/6<3WGNN=6[ -M>7#7FX7TH,%54GCC1.)HJYG`Y-+\*#AJ(Y&A:&&C.F&D%VE1QJ4T^,]@F&1G -M;`<9'&#Y=MC%!O,NGNE`<_?EO577STG:Z9[^@7#5='Z4$3ZYB\SQA**X2ASN -M68;AUZYHBK&"PW4\3UP?CU$M)]=MW4>AD"/^UG[07EGT:F>'2D8`KS74"M[? -MZ\DL%4!5GLA0_#Y([??Q3LYWM\YX*6!&='$,O\"&*N1EQJ\F_D0VE)&"#"J+ -MZNITF6'WH1\E_\%B6=,&7ZT:&1U=V#)DHG1.H[NA[Q2)@B7XJ\7A9#R4SN6R$1(#H:8MZD(M;S -MH3YI5$]L&4R!)Y=N12-[(Y*1"BW#FLERNJ-1NZ$PPEKT\&NXIE+B3](.7EO+ -M'R*^Z"R#/5L\AZ)GV#+;&1EXLXK=1ITQ'S9PXSL8Q!J8DH32W&_\5%+U0U\L -M#"-*U"!=W9J?OBODB41O;+8<4S`./IB\W:N'0!WK5%'7-Q?!G*:I\('SG`,:!D_AK; -M;]3$6>&R4DUBOSEC-H"%8B:T;$)@D#M$P3#ZB?9OH/A@PAO -M!?J75;``+*RG6X2*;JL@=WI>(_WL$DYNRN+X)D3.7*B<[TD+/[77?O*EZ7QC -M-!4A]R@&Z3Q_`YX64GZ;#,33,.?6:*:65>`(KSP4'<(*'^:Q/2;+;D;+>_5Y -MI3\\BP7F'8J[X_Y6>8(*V>O$BJ(U@ZO+&67C4$S> -M0A8@JO8)&Y4B64[1P@P8D?]I:C18^F/O\:D^>>TH=I`'.6`\K#$Q_",O.ISB -M+"BKT2?+`XSJ'4!\_+"O?8ZB_^?7<%24:,)K&\6C7>)<76_.SELA#ZV$Z\$D -M+:`8MGW_W/'U][&R!Y9) -M$6>U_RA']J\+`Y30+%:-G9RPW?&1#4S<[3+ -MQW,_CY+))LE3^%IJ]SE$E2H[&82N`%* -M?K?]!"QH&HV#'"SW8Y=-%[>CG6O'V%"M.XLFLJ]PLSV05)ALT]3@Q.9RPE$? -M[WP3\H=<:5PU2Z]AOLII4-<%4UQP3K0IAQ98SX4>ZN!U8C62++0:?X2`5'>8 -M6RY))A49;3?9;X;:=D\$.F/64Z_>X`7R*FKB_)$ZU$ID/P&L_UV1\_/VDR46 -MA:5,GD=[QR9^.@F._A*RS_H5NN9P\:#T(BY;348QA(2\<^6G%G36(-3^YH?G -ML-.U3NOA-6;/N&+'3NV?H(H4H$"B8"6^-/OIVO.H<%A/I;IW!%Z[>&BR-6-J -MF]+TGD5J;E,^,KR%G+CZ^S._3<3J1E9F>AK&)9Y=#DB;@\6M&;3P?A2X3:@S -MP.4!N*A9>WY.W:9G;';1&V"VYF]-\_M1V$L>A'#A5_1W_JH%\\%"@L"VUJ]\!HU*I3J#<74UT*OX -MVLH^EDR#<4T\OS"%$D!Q?&EF!E:_5#=2?-YUY:_'$NZ#G:<96Z?GN`.\50?ZP4Q1O=?0`S3S_'&]<3]A'QR1 -M!NV*:-9LS(D4\_5SG]G\_K<9YU;=F.T,0JZPE.4`SFADM!7H7'P(*JZ0YFO@ -MN='@-5EJ\_019!"I:8PLGDJ@\2\#.X7==PY:%8LS'R9L-F9M6\ -M"G\?T.X:DZM=1EI<.5-E_>!['J%>*%S-_K])EI<42[L!?N,'8(@$G'9(.Q:F -MX;(*#8B'89B2O:P/?2KB&\M->S;L?"5['+0_#A8PJ33<.95C%3C:E4<=2>1` -MXVO-T[/\L6D8H'U*PK@N4,T>"6:".W\LR82ZAJEX@7R/ANA-VRNX@Q[0M95D -M8-!]J"27<3U>]C"5.*)$]-VV7M^>6E_&Q<-<.6HHEC:%?EK[B0SV1,WQ&7<* -M3VH)=YN0NW=,OJ<1`6\B']=+7V(E4DZSAA;9.I2E98Z!:19/3;*/J]&:A0<" -MKQ7-:L-B^T5D96E9@Q*RY6V'V!3@O` -M?VB=>_TY_'4%:![G@].98=':@)U[EC>66`,90-YP^FX9IHR,D,7U8+A'?I?2 -MU6[SG"!HZ53-#SEO..E];]P&1?*PX\^YC,U0$NXR1K=2$:(`Q+S=FC\1!-1H -MYAK_XTQC7OU,9V@ZSB*P5KY4E1&52=M8-'N%[8%JY^:H4:+4SHU.,PU]]LIO -MA5DR[/+NHE*,&A0'&TQ]*<8",*IXK -MS&49@WZB4J3*_W$__CB+EOQ]"!6]$2-T=-[*Q4SVFE1AST26FEW[!YT0+AQ9 -M3\S%I659Y-QXG[?BZ'C)_NY/C7(RJ;.`(4JQF%YY!;H8V7;.>'@FARV$ZU\N -M!E4/M6<>A2**A[.\E.VBFF/^B>6DZZ-`PY_VU[08[2("U7`#4CX8QV1RVZ"S -M\VT:?W2;6$HC<&8E[XWTG']5CN1PQ]5,46@]Y]!W4IAG2=9K=A4L52$->6!M -MCLS,+%*(*S^6Y2UOUOA/G4-&VY;:$IHPS%8$:G'VNI07C]/I$S@H>C/,@-5L -M?F:$\C.)Q9^DSI16U6DUP1(*12MRU<@9H0?':C2:#:H&\R-!SY)/OV//L:R\ -MAJY2%E>[&HC*DVZVS@UNF-V`&] -MN!-)(,(KP:X[X_3\*>^D!J;:IZV'GU)8U#T&IQ-*\$CVQM>BCXCO[[_IXY*7 -M7V$^V"&Y>_HJ>*3=\T`<[,NL9LIK@#8=8?@(+VK5".IE.XDIKYAH1/3!QT6Q -MF8STG?>/NR3OZHVN3I^HCDRZ]@ -M-`RV\,1-4`<'"1GA]!<^6E0FG.[^B%:"TE1R1C"./&:XX[X9Y8\',)?!2-65 -MHTPNYJH1\)$DJG[RQ!,?$84>_JFWHS5G25[/.#05I@.PN:^F'=G/QZY&]GB) -M"^=2\(WD_2M3:0RC'-?'P(I)`=O+)3::!OM)I+`%GYFC0OT-X7GH)?/03Z*9 -MO-.%3:DN0UVI$TG,\./DC&4R3S\#&8(N8XIXB"P-7I1IFS9FB^4B+*_)`[WT -M7:./XKDDS`$54D"Q![])F_:;AC;:B7S>RI.]H0R3`_0.\\.1C';DOI(BETU[ -MTMEH04]Y9?ZLC7;>%IZVRP9&NC:-J29#8Z8'"N2R;*N;]+ -M:!G:=M/5M`3<'">)CO1:W%'V>&=L:"J91O\TQS5,:XCLBT_XW..AD_=3V>NQ -M`?E'JMYE<\HR![N>IIT/?W-=R_G&I#S0#PT)D%B`EXO,>&D:4BX9'7!J,PEA -M8;X-S^L.6?8"YN3^7W:C"(L,>X\V(^HM!7SG08F#5#(=A[N';F&S85;,^WCU -M>`/#2:_`"^7&-46<>;$N:/>IZ[%Q\[\E)9#B=VR+7']<9XLHJ;(QY$@5"O"$ -M_$Q\@*-9^[19_JCA52?4I#H:PU]LM#7O,D_".^9[ -M5/_?P]EVUEU6!5OUOHR2+VIS:1PF!D^;'9$@G*ET2\U3<3MR11!&'RME'EL" -M6F?Y(*S2XO3VO3@J9F;N(-(.[7`]6_Z))((K#96D0=V8ZCDA3&N!L^EV.#4>.FJ'VEE*?2 -MREJ61.3PEB>#8APQJ==!F].=$(7%@:&^$IUUX>8EF)/`5+]UJ]T%GQH5YI&P -MAF#Q3'T;^/$\3A+,SG8GNA[:LL(L#=#N;&U$Z,A_4LV]*K-,]\X`8TK5;)H% -M$[MLS'KTT]KZ(-B22FQ!2P^QH29G-L9=\!TUSD#FI!&TR+6B/E9L8AFO1.CB -M42%3:5H6G,0A,@T*9-[OYK:2M.-J'WR(`C#`@8CE635>7&$G7-B])KNZHD\A -M,9R,-N#:+#?PO19:"$?3I*)-*(74\2T/0!%T#\4X3JH/C=>VJNS@W\M2 -MTF+GL8:O;-5!>6K-6NF*_L?#S=*+YC;=Q:ME9GD_7,]##K'^Z']2APP\C -M@04C?O*[0_*Y#5Z+.A&S&RO`P.2.\Q2`5 -M=%VL<]41RRLKDK5(\`V/Y7ZK1__O@+WET-:!L6^Y?.+UP:5,U977F';)35B" -M91><<`H:5^:VF:RS-8QN[N@LK)(8/KV2;%G/^-?'X3C+'7<)F3ZIQ1#^)F'A -MIW'+P`9UVOTIB/SGJ6TO22U;ZQY2;HZNE2`2YI4"G@H$M$E9P21-*J@ZQH2N -MPW8;,>9^[?ONGH#%.N3"(#)LQ+8ZK-?IAVC5O5]N(RUW?YU?$T;*;!EA,-4" -MW='@(6:MR:BK/!00W\,FK'668^*/11SI[=Q8VVU]I/AS6R*K]UU[RS( -MV0C)2J[OZVC*RHOD0+YY:NH6(07?1J6KU^-N)!KZC$%^!2[2I0_<6&=XG).7?54GN.7M#6?=+U#(*E,O -MWPJSF39;698N27?[ML>=ES`:2^,Q=O"W14E?`_"+]=B==`I%>#SP -MH-^Q'XBJ=QA\V9.6FC,.C_T'4H)E3!`DXPZP?8DC:O_,]B5CK'_#&,T&8,'; -M%>"HV!!@]Y;.Y=/Z/"U9M$U'&_K&[IT9TJ6ES6O@FF?*`+\'CRX)<+\?N^8&BAVCQ9,:E.@BPX7IZXE%U.`M'[1C$5_<5Z -M:**MMA*,8N`)C\B(6"[A.>IFBZAJ3\()D\\VI5E^9Y97@"W^R2R>VN2!R-!] -M34Q6W`*IUV3QH[$X-'R@;S,5^(C.T<;'HWFZP]&<]K),;D#K1;$I,.)8!7&# -M/."5X.HD$G;_)A\GVNL<'NB>/HVPZ;3X.1ZDW8]!!Q?*E`'S@XW*(PK]D73) -M07@)M8*L@#!@1K=T'!%*[2LM\01/?@]UW:R022=.\+,)%'8>@+:SZ']B:4;5 -MR@M92A:7_.B^E7Y*/KML%B;.Q_3/.V00_"30BCU;`@:M,3&Q1RG5A3D_2>=! -MANJF=L&H"?3Z0*7Q< -M*R?$:ZU?+DY4O%Y$V7PLA -M%:31!!VX<1B\V?E&R*F?[BL\B?;9S*9N3AM!.AKP%0NO,K/,%E&VJB.7WEN< -M1ODQ^%J(NQ+LZ37Y=T:0K6TH>\VK(X1661[XS5D8-3[U5#@8.,6GGS&3GSF& -M]87!J<&D.\'8\O4TN:(&:@N07LEPQV6<<6+A[SX@FW)E",[[W%D2Y+>Z>QK6 -MS+@G?29H\*L]=M4<$R'RW>8)IPS?[%!/R='ARV6]:B;L%T@_(\[2%*ZHV=9> -MYX5#;C)[KQ";Q=[?/E=B).ROQ-OW2$A"V34MJK0$2)=/B$M@$2(N271<'&8/ -M/!OVI:/\BLO$;(+UF]CO0]>_9;U:"Z^I\A9==]K)Q]A<%$K1P2B\75;,_<6H -M`'1G]/#!8\C"F3DJ=C^(*Q"ZTITB!1N-ZVH\M#>$Q)MD,WYJO>24#^&.@HGB.RP#'(UU[0K[WWPX?24_OJ]3$C:*R+4`^'/#)*&_DC -MWKYK"T#[V.T -MY,QSPD6C1*K).`)/P;/&#M@.(@^K;4FA22YK981X5@$=>VAX@N[NZ -M2NQ!TR$,P^Y8ZADZ>N@Z<2:WD'J)-C99IZCVBL1I/RD)(A3+N,*54KS"RTD< -M]A6X-:1@P$4(1%E2B6!-J=M`KL,V3<#WI:8N6!_":RU@')NMZ=BR\AN=RYS` -MDC@=_\!2W">Q.@TA!']#]^7LEA*"T.RYFT\!P'M8=(#8[Z"VGV6.H-W)Q$V+ -MC0!VB\^KH39\N5RO@!;_V(P=N^?XCO&_98\6O\^0Y82 -M5EM*H9]%2,/-'GM7%>2D7#"I!@+T"#0&[UYDL3`A]RI:=)1\ORT<.S+?"%=? -M1X;J-KR?TK]B\!=_FO(M8YS[5E/)_8_7\-:F'""SYP -M)U![V!F^PPKD.>&*4[O:,5"OT')=UZ?C62FI*4U?#&`2_@U>KK:"GT/!.INN -MJLY.3'Z%0RYW'XS!2@JC!,#\)W2-Z_XA1SL53[ZFZ8UMDS+APY`;XLMI7Q8F -M2PD8@_9TX4_(`DZ-X:9`=82#K1K!8^FCKQHC2$.!AE'D4L(1-ZEEM+_`?IG@ -M`;YN-]=M+WSYY35Y$+X#1!9H[$;@QD)\;E5.;5-4+C>:7S,##-%OYOWLA)"_ -M23U0JNZ,"\ZPL]6HQDPV;7I=/-XASP2: -M4FS`\P&:[A23S+]/O@V]Y7 -M+0\W(E?=&T3IC_QK^#-/X[+^;:(XR0O)DN8TN+X0CG>_:H%>^C5(>S7C?0JZ -M]LU,[.>Y;+"2:GYJ227P0.5"'D:[-VZNRRE*3,))37(RMA8G#1R-T7T=!`D7 -M)YIHU7FD5J(A*1;LFCE$[FUA?C; -M9EF5KZMESOV>;B$7HYEBX+OO`2$#[`I$B2.[=;>W'AAI4:%],K7Y2 -M<^!.VX`_-")B'&OM>_':]5VR.03>-##N9ON0WF@1[Q93+(JF0Y%^0O^U^S6S -M*V]=QB7]7@8L1>C)59[Y#^"B+)[8_@5O1;N!/G:51L3#J)CFDI#ZBTDXHB5] -MK3"67RM/F$&9,HB&![K\3<(0WY:O\GY`SOP+TBB6OG?]A]JQY_*4?1\*W->K -MRMP:#($,#:C1"!D=Y]X-\KSQ%89U_7]LON<];'I!L0E/!K>@IUY0S"KQQ5)L -M4_V:@RX)Z,6GSW?BP6Z^!(S,W_W<[S:[A&N61T_P)5Y -MJE1/;/M&NFH^=>[]LA-Z%Y[1Z3CXM9(_00&\%SMR@?E--]B5DHZ'"94HPPVQ[BIR92E*^< -M43X5=A2T*B[[6]^6B:Y6+=Y\>#12%-15FYW*5Y+^#"01O?" -M6A6>#389L0!YA<&FNJY!L_`" -MG9TQ]JU"QZ9$0D\[I1G1X9+%Q.OW4=\/ODXJ4>88V%W#U>,@ -MY41ECU^PNA!'2GEV1H`X/_BAKG-_?0H_:E8?HOTF5>$ZOYC@$CA=2^:G_U5D -MFN1_D4R,@@;2B1E1(*RMUV'D(PC#(RY/Y2%,M]%CGRU^W_-`4V;F6B9WI=N%Z)_#P$I/D1:W?ZJ%FI< -M\O9!G&%F-*OE>-KBT\('_L#["P'N]E*647.-OI*55%/VH]GRMF('%/C"]J6: -M(3W@TKV-$O$QS1\Z]O_#!N:G%;QVNTP>=B;+9+R( -MT--A2DDH`=HDFL+S>S'9:U=:QJ>5)IW7>.>1^":NP)88%YP=IY`F2 -MB4GX6X?M!D^>AI6D0T2S`CY7M#J[TDZ62><+'-:D+N@'HT.;FC9UR"@27^JC -M]W(>?MIB(;>-^4.)-B6GKM+R[),#AYXKHM)PHB*CJ!%R)%W*"`8,;'&-O^^# -MDWW363H).%R_AYDSI*%8*K%*B1&7Q<'H:$CDAP+G>*[FA>D8_E#2?TV=9ZVR -MADI-IQ4P'Q+W(78W:<;.*A+CZ82:HH\T%"5_8K,$S:5^.S[+=G(SM7@]:1;# -M)[=54<[8+EOOT]NE6U/$4_5U]9#NJ.9*H*3[R&=FRIVK/QY:R,,R:5Z*G5WN -M6I_(Y!<6696SO1;,1:R^S:M)729`BA+SZ+)1'Y@VSQGIL02=68!\;/%SG#^+ -MX;OI?L7@5K8;24ME)!;IFVSZ79U6E_;)IO2,4JXQ#H;)+UCSE>-4"V+,89.U -M?%0F>?[CEEC[NQX'J.KSX$-`VP=%QRY-3%C"+@D\;F$J=WQX%:YEQU&G -MP3_1K+,HV?LU']#I)HHF)GO92YJ:RL>XCVKUMBT_H3QNJ9^332,LG>*T[-_" -MJWC?[0,QV$C<@E3C-SJN$:O)+_O?=]A?#W+K$O)"Q(?.0<[:OHE0PT+73>)@ -M"WGL(R:.,%>IJ>PVPPZPN81CK`ZM_`HTM^'L7%8W3\VTIFRZPP"EXOMYW#C9 -M!#BQ246Q:"Z^N&S=/Q)R(V]T_0W]\>4`/^`TYOYKTOA[ -MC#H:_SMTUP>_`B7GROE9(MOXTS?7>^D;Z/D3$+>JI('UYJ#Z*RXJJ5%5!0HG -MR-2C>*(:`P.0DA!.9MB"3U]^LQ]\]1493]PQ4,2SG$ZI@NI2!I)5F52R"370 -M_L13(H'>.0P"]3[4NHH"NUQ(+]9S2VW(0%@KN_O-RE!=]*[+FI]HX5QJ03L[7.7/#S-,=HQNI'\ -MRE7Z$.8!"R7I6K?H9.!90R5T9;24H^38X9='V!"^+!5@3%,-Y9>)T+;AQ1[^ -M",FK\!+KGKF4+BZ.T&+E1Y4%WYRNFR,"QN#-LW*6)U>NY9V!R<8A=NU)Y[67 -M;]?-&YAF;=9(!R@_>;DND7@\B1CFF<B=JG^*Y6*_*O9DNV"A2/-H%\2C*C!R]K`=5]> -MN"J$?C330VMB2G:?795%%L!;R_$%O;I'Q54?Z+6S-=6>1@(:-B"GX+78B-ISZ&IP4(51E+@$5I. -MWT*#0ZRT8$SJ@)PQ.)6@HNE;ODQ4C@9`B)_FZ9Q_Y\,[,J.B!?IL!_DN<7*D -MJOUP4!M[F4"EK@)D(KN@_T!<)\(+/KGC`<(56V.:[V^<,N3Q-^$R/"`L?9?U -MXFB8<1>-Q7`9(0*=_06= -MTGM_(SA+!:$I(8[?]L6Q63@"UF#5(XWM$%C,IP4Y;]@S5@Y3S=-'$0GB'.B? -MWQ+CS7OCL'W/MV7E6']C=([_SQC0ZW-MS5DV,\ST0SZ9=&/IQ].8YS6:0T0U -M*3T=@;J"I^U5&F2&*^Y7'`K'*1,A5:PMEG92O^*XLU8$<]T!2(HUY%06)I)& -M7,TN0P+*D:8($O;SI-"6+EY:@.#Q'W3CP_U`ETK[D3%R(=.HZW9C2HJ9)=Z@ -M^B_;!BY/O5F#)1,%I2'1-1O$+-B11)>J -M+R@'LDK@Y_ZE"A*,H2S_V5Y(IEOEAQ@M;ROXS7G')"221L,BI*`6QVCWC`T. -MXA0^HI^=YA[^;'.6!T\VC87$I`^-15^]=84#,CKOV[%9.)/0Q`K5\!(E(GT2 -M9%XX,W&GSU0:B$J`FBPB/<$&G`;J$EY;Z];W(Y)_'U=8!?5FD -M6=0'0^L..T6VDI%H[S7<(NE9(/DV0XV3VNA/5\/%`ZO:&)(K>,88(W[_K*O> -MA2/'UYLK[X_[^*GV=W@P^U!DF%,M#0C9':>S`?PO -MZJK/4$':&B148:UOF9*6?;-5E_-58Y^&1RXW*-)#%6F90W/"&^WXD]. -M:2OL]F+7S_"?TOG;D\#X?K70QJ\\83R*FOCUJ6^FCL]N1'TV/J]KUU)5X&DM -M^Y4P_'R#C+:;O$<1CA>4Y8Q.'Z=W.?L)%[HYJ"!$R2`6T-"W,:C7 -MWN*1M0.P3D(8UFG=I\6HG)$8+V+C7F'XVH)^XEI^)D"AI!]'A6B(U*\Y1Z(L -MP7@U+(3I:9ZMOTAG8A?(9H):193*M6^TL?'W'>USC(VO*J/89=<\\@Z9R58Z -MN16K_.A.`R+RMG[)E(M8\@"@?J.\F\G?%S.MRD*0#=Y/ -M,([Q;:WF`E7D7`+E"0*26-;7U%@AMY(J>5T*!QJYW_XJX""4V^(`]AZ$DAK@ -MF`.E'(-<(.16>XE$V1H<&/YE>$W,/]E8Q)9A!,JYLI2"?/S^/A[@YD%;5@K8 -M[]O60`(#)^%C).[@OJL_%,W@+*S>-\D0.Q5=1XKX)[$SFL]I] -MB^DO*D&APRZWF"TV:KU6'6_.5E`E]T!=H98`%!]'[G#*T&S%%/U[][MBGZNK -MY/:(]L3OU"#/!E./M:N'J9'+''CB:1G,$AQOM;.[9DL")S^*$$:.9X1$XAW, -MJ"GEIFW2";NJ?`U($DJ?`L#5E1_-3NO;GXD9"N.=J;1[W/N@Y`#&3Z`1]DAL -MFP'VE;E^D,(AZ:\Y`N60NB;FFH@`6W&@BN9:+?[NJQ9RG#O(W14A,0-3Q*GA -MX1%O]I#-_<'[0?XS!EGB%5-F_?7Z!^V^=5'\QDTR(5[\B"]N0B['5E%XT\+RL,:]=MCE_>W^'` -M[2/4EQ<#CRRSJ?VX\1H!_&9BH;7AIQ_RI&ZM'8BMM;BOHAE!U&HX;145<"[9 -MUH]:[4+\^S-U"^,(0+U@-.<*L52")%!X\?U\VZ*#\(2T@K/_?$C#-_*($(AC -MBR@UY+1V5]F9$#T+3E"WS.G7ZGK_%0L[)VADS%:%V@ -M,I._<&:YFOR4#P*"*WT[N:RBT`VA6'FU&8@T6UUZF#>?#R"=0ZC[)P1&T6+(B2@7ZGX -M]AIMQQ!95_+O71G>,(#!0!J:&YE8V!Z-B280@W-W_B0D@IRH(%1B<^"W!>U_ -MVA_OQM3?#_W29"=RF.W@FVXE5_V(9\`L=0L$NCQ&D-=,[PE$85E+ESO+@<.J -M!:^#+,LBQU;=&=`!'UN/NJ*A%@9+`7]KV9,-$_- -MQ./-P#Z&W@,7W;N)G'FS5'-_D0[AP,[,9KA-BE&H.ZBKKB9AE6)IX^S!8@\= -MQVAA]AD^)+C/5?6;=?<0*X=I`KJV:3B]FP.KVI&!GF:[Q[@)8#H-A4>]5M)+ -M47Z7[@4=?A+H%9OWORZL5!6S0XN2-^X4)VSHY,].\M:J)9%]#_(@1D%7BF`F739L9CCSJ_MFMF,A;]A4!A8-/?^J -MB1!WU$:-1[UW>3%38_VY7R$IP(27LVTHXC?^&O;UCCYD":`XP"35T$K0+=&( -M3%:C$?]"DXQG-=T%]L&"NOV/#M>FGD_@23B6EP;:6[T -M>%.]6,`'!(^M>:A<7\)GMG[!8450Q0D9ND/E\[U@IQ-H7-9X%\W,.E;*5&G^ -MR:3B(XYD#6UU!\](S5NHM2]W0SU?$PYP!S#,NV7";"&#0"&_!(QL^.(H3^MYSG'?JF2O0<,VIA#-.]@ -M63-R+#".9$OY'OCF48'7WAL.YUY`YB0ML.3(@SD#D>HTU_WWG4!S_=O-+M(& -MVY_[TK'?80K6MH[&"QY3<*A@<-03`QZ#V0Z!H,'E]WMN-VHK/'L\XL]S3!RKW&M2C^ZVA>[D] -MM.7J\(9;(2D=\8<.-2GOC33GYT-7,&G%;/X\L@G5-'E=^/HQ+U['B5EHH=)P -M]G/#8P1+S,&FBZ<3"MA)HJ.CU9@R@I7?/7XYRG$OV'&5+86"G0(`*';VT]QW -MN9**GP1RP2"[LC'-+OMN'/O2OS3VPF?=)[%5P9G$AT&)8N=+J8J'DF($M&T, -M"_7\(O#WG._NOG[6A`/@AB!'/>>"G-#+T(:-UD27V*FV(^_/#<.+1H(PM!J_ -M/B^6D6>C-_2><,)>U':E$JA27TSZR\P.W_Y\S=4%_U&?R\&\I(>(%3\<\9'; -M_KL4!ZO7'?<\U=!1PB]F_C!'U\?F&(*IK'[#)SC#I5QR[+#(.&K8\TD$]Y)2 -M/*$O5,(#Y$$9&^OV-0P]Z*4K8P=N:EPKM>A1K?3_R._+`8O:#'8E`KUV'>.L -M<;"Z9$\V:*YS1>CXZ2M)[P'7ZUIA+?&MT/M2*8JD3YC53]\W2=;[:4"^.\R9 -M77[NFA*H39'UV[2_3>/.H*UEPF.9XV8_9KJ7`MG*QV4>'Y8E\ZW569RSD[O; -M`(02H.!^`?I!J8B`3&ODME/V$KSRSFXY)RB/:JA-$&3M+%+JI/C`"OYQ#"ZR -M?'DR./?\T""$3H'JB;1IV=2F(U_8B"+UQN4G>=VK,8&EK*1854LNB9E',:WM -M]ZEH.^&B7KP,PDA)#>T7<8+!KUG0Q3!V?5%L04=/\TEZ79RT=U!C8(O>+2XJ -M$F@%!)M*NZ%XB8E]3RL=9U!?W9>T^<7RL:S[QM,B\=.3$-M-,`GF?G\ITAF< -M:)(%47T&CD>D/=:NYORN]`=VJ=/"CY.9]9Y#Q`\"[ -MD*O<%G`;X9VQR0=!67L>>M7.B-.%EE%>ERBKD"<>^T'E=L#/(-F`-^?E]X3U -M3SE]4NZY&$O54-/B[.2M*$ -M-$>-!UBY;ID!8JM5JDTAK(7L<-BJWF!VG=YD -M*9.&,_)0$D5\1<&(,JYJ[[5_O$_?[*Q@:]4(:8D<$65QANG.B/!3M)NYZ57=TA598NS^#_60J!]]??X -M5P@3SLFX_)//[A'QY0=&_?G(*(FY^C$G"$[Z/:,_39?Y7"'.+',Z[+L/-^;$ -M=O;L5\82BEW[0&<[,I##(Z;8"K%;'&60X&O>53E\7BTG!A+@TV?.V/4T3X+) -M;BKSZS:<`;O$CMM3C,N@*\(VE-B>]`0)7\,9=X8^W1PT\QF9P&J42YGQ[J.# -MKOV[Z]C`U(DJILZ\-)CTTJ#)"7\6K8G5'5$5SZXDW4DXY)JV>W2!<<;T@$:? -M,'A=/\9-GU];Q&(XYOG?SJE]HQ353V@QG-WP#=!3*C=>+67U"B2:8\F_N7ID -M8;RFN;`^=M'T[_(C?IM.I:>R:(MR!;@+Z+QG5@` -M2"G"=//C^%C"D\^W1E:75S+H*3,GCU>^W>P0;&7BWEM0%Y>SM*)'K_6>[XE4 -MG^`9J5I!&DI>29K9.;D0EC'+D"@C%TI4#RTMB%H,NVN$Q4J;%:>>I"GC#:>< -M:^JK$O-(U)`W?:,L?5@0\J'UY$(?&I>2#11:"`'Q&?[!4+`%]?,=%/^2'KJ4 -M(FAUR57H2!/PH7I$HV@9)FK)1_`2C`@-/`@=L`FHM0"R\B;J9_PA>U4%`>DN3#WR,M3V[2E+XZ,DN^[0 -MV2;%M=^.1A%0;Z.7%>.JB0W1]?5V!2G@*UCV9XHJH$8.XNW<(O`9RA\AU/F+ -M]R6$IVKB&-CN3=DL9A6(5022%(STL2=H -ME7O8I>>]-3]IYD+G09K,JZTEQ7MH-0\LPN<78SE= -M8`J9)L3+N9G*--`:7,P.I:B-8PWMCDKZ4#)WE(FK5XHG)HXH3 -MC+P-;OY=%M/?* -M,4"ER?VIUVQ4)K)15@YW@FZUED\'7A6E/^#KOD7=>5O\R,1`],$4/[5=E82M -M.C`^HB^S.@>;O>9R.(Z^SP#^,3]E,HJP_Z'-S1%[!]Y=-SA]X+XB",?-3=*11<]:__$UOUW9B(X*%^EO=4,[!3!&Y?(F>!5*KPY-LS"Q5MT[)FSCZ$XE0(WO6[FGR*MR0YW&C;T,H2K?X9 -M'J\!C[>,!,[S*:@B&VR;-7%`V7_8XQKJ93FG)]Z;ZG"RK&T,Q)_N==IB=>JI -MRFWG'6_3-:N?O@`_D@*;\%1@5VAF\*,ZQWM*PQAZMCMB,?;,N@4UI#1'B$CW -MT$ZPX8%"[=UE(:GL-$IRAA?&;A$3B_!E_R;)7U[K2TJ2#OAY).W4OP%HXHK[ -M1#!I*V:GL-2"DZSD-)P";+UW\P(@0B:DJ[#&D$@I,TNE`HL&Y"+*[O$OUY_K -M=/8A6QIIZX^HKUBH7>]+".=`S'$(\72%34HGD[B4;5K3O(;!GO0E\8I-SNQ^F&FO@J0MT,FZ/;362U^"/0%Z -MU>T#*:B5X]4<(A=%AT08%'H.P1[\T_QL@TUS9@^1EF;)Q)UFMMN?=B33S:-M -MNU,AK>E;YJLSKV`)[S4TEZ36 -MR4A1U^\^:TP$*MW$)L<$\W>Q`?E),O3MZ76YY`T"K7V25@^"A>UQ"H\P[]VQ -M'>UZ98I;]%/@F``WO`J`TMAC-]\5:ERE+LTLHM@U4S:;AKX,`;8O_OL52<1B -M<8W`E;S65N'^BR\.O=\H8_/?!I)=>`_+$`TRCZ::#BD(<6B2>6F4IY&C[BJ: -MZL$3J<3X'B]T#\[@'HH7H<@Q-ONM`1YVHRZ^HO0W_C.+LAD'E0C$XR>Q#I-< -M9750\QN.,W3G-D12.[:8Z^A+>L1@B92.OD9VC_?0P:",[O2[^IO0&/G2ANRD -MBG'M!2UF\WH4.?PE*E4`+$S("Y4!M(O?JQLWE-N4==254UTWZWC_MS`*O% -MD[)%P@`;B&=%4#6,R@%J\V5L_#@F3PNS"X%]D\$AJ%[5X\-6-G4>0EV80CXQ -MK]=:+!IVEYC.YS#?Q>S2RO'*[?+/`MCPPU./FC8)X)JC>AT/FQBR7;,A='\V -MVJ()]!"+:CV4!/$Y-K:P4*1"04[/SR(/RH>"F^YU2Z^:T1[9%]D%Z5<&8!P) -MBI&<\=JF'YW\0)J"3I+UR.M%B-AK:\]^;-S#^!(WCOQ[\ -MQ/JWY`=_#F:U/8EO(LRBC],WZ*]GFPBS.,*NSAW2@L/2T(CWGZSQ84H5#=6Y -MPCO'VHN+?=<(AU!@+J3L42(3<;D:'FI7PZ-($CZXK?(M2J;N=+(V]0B -ME5=AB2VK/;B\.C/T]]"T#DPVR9[=Z[7/5#EYD#J<]<%O.:9OED.N&L?H9XP4 -METB`N4@CJRU2ZH]X[TG>R\SY<]M[L.R]O^UB.GZ&M\3TZ'E2(4-C1O:A*`,1 -M44C+G/?G8N8W!0F$$9_J,PW-R8UPM\N+STX1N`70A%6[%M:/NW#]/3.(I/`3WQFH`7B3=$R\T,9F1"M)8C5NJL-GOTTZ -MHM+M5K][2B(-K]\IKF$VH/)&2*?I(H(E!/R6B(L_,J;2WV(D3;DTZX8R]\M" -M2/M:8MJ"[-@;BR"HH;SDS&WJ7=A-VIS9=0/H1,]'QZWT!G/IPP?V>-B,2$KL -M3)MR@K3;BET&'G)G9KC/595+GYN'Z;3JMPX-ZWFZG!`U_.^-25C8DE/\J7TR.+^VA,$:B"E][6S -M,-KN);=USVNKCX^T\HWSYKR?6I3YC'^&,?#CL]M(+BQ%)>CR)E)X.IGS(K## -M,,WC#8>,O*P-6Q3?UU^(22&>1MM.U$E10B22_1CW_4TT%YY#J0WI9^CBN_/" -M:B*$R'OV:O@SC8E>@>`.8O9-ZF(_3:DK#@[ZPE2BC$A,PT@TX!_M(RN=!"I^ -MSN*U3_"L":<6G^XVX_J\&N.R"`%&JKF7]K$O)[3S6R_*,-I=MJ3[J:T\ZH-( -M_MS.E-[A%I44U,%2T/1/L]T$HSAK>,`8M\&.,DS=%,LX$\1:G[I\+@^>62J! -M'VTXDXE\R6^"SW7"312`J.6+_V[/SK#"6"-A<^\)7@","G9(^!Z`A'QJF0]?YZ&J93 -MDP&#ML,HX/`#[_+W>_TF$Z9P5G]$`/ -M+4#^#JM).YMA<:.*J'D$J?ONKF??*<7L2QT!..'D1B& -MI*LZ-@G_N;/@"RQ%198\^25R4\B-TE_Q5\U7`)YW%;_6]U-U)??57HP4WX&D -M!O6=`!]?]FMKB3J5;9)TVG-).]TTR:<\7]?,<3&S-/VWH^^;"`AZ`>? -M4M\7!$?7GRKZO<[R0NB8:EX69@M&WXA8?E>)C!&M5.^!H<_L1V,JD91>"L7$ -M,I]5``LA0/T40IO9EAWII&4"ZM^>S\"V!>\EBL4\\DZK.?V7,9A$+5 -M6-?\0W@/UM!7`163NV[Y,QKS*/KO!('R9W)H[`A&)SHG_TM[&`A)6R\:Y>]= -MB!25:/9M5.I2F[3738,_N3D_!Z#Y9?`J-#ZRO!0'43J*#3*FFA>OZPD!WL[? -M\#?3G[`*/0`^52;!J":^],.$_..5MBEA.P/(`]$=F[-N-D10I@"_?""V2M0?E6K$)'V`[8"L4_^[;0O=S?*R"%5;-+%% -MQ5E^UWM`N:-(B\*L\=#Q_T@4_[Y1&Q.7I^FY*!(4M*6A%U57$8DPM$>'Y)=^ -M.?<^1"\$&!&JM^4&KC7""5+1J&V5O*\TQRH/_%J.9?@)?S+)1*W9INP5R>V -MX\:/!V811YV@ZI&T<";%U;#;/4%G!5%F4;$M^'^.-J8!SR;!/9WM%NT[A"18 -M6`/\X((+B2`6S.*E![/4&MPN:#9I[DG#(Q^D0%Z;YLQA1`6C-VY[-YS:I>/K -M+0\*QIPWBVQG"K?D^J]^-\"([N5.$OS?I6I$WFL0_P^#J^.'=E!3H:UBB-K;GP3&B8MFR]5N*Q_H!6ZU(7@8:>Y!D`VWQ_ -M<&7@@)3DKDBAAM3]1)FJ\Y!Y;@#3]Q5N]+#WUDS7K9YCR)R"(X7@8!M6G$\K<>L+R]-IIUC&/J5=4F#YJG@EF\=,;;X` -M-3;%-8;PD:*T83G;2;DAP2S.8X9815&@R_`B<&=Y/G)T[-%RKL.JY&\/6V_N -MN&D7%B2S,7!,3W?-5DIT"`$<$V.4!;+3MDIK!NXF:':@:XHK]@!-0PLGUA=5 -M/6UV1@6F@>!>^O[^,,.,-(Z][-XSU,M_JMJ($FL!8WJ3@DQ=YR.->CTJP7`2 -M\^G`32I:8AO(?S7IO&8='X!IH/_7;!V%YPA452Q_LJ=AC?,?-,\?%\<`'&[Z -M5?'E8=O&Q?B1TM0CYR.\+24$SX=%%-X!.C9)/N?W54ELW&UO96.EX-Y0[ -MI\46:ZQWV9B%PCM^OG:KL0J@RN57,.[+^LD<>T/NME.H[:$_>A=?S?:!",QYV+.KG?U].40BE\\Y4RE;3*/ -M#N/ZFU,'):10@3C\65\?IQU12CI\@N2+;DV@R"*3<'--7B\R3[EX9IT31Q3R -M:70RL/NDK"&RNMAXV(" -MZ<-Z@F<0(E%@[IE/6#*X>C[P-IE#QONK>M*"&7Z3J'E9O=K^BWC!>K7#,.D#5D5Y"95I`D-I:1(NC6L2*E(5DN_R_MS/0U9&QPWFG)G`#P -M:T]5IS5RB.+\IAYS0XX&P5B3*452W)K21`10(J(]3P.MON5-1B#JZ"*#>L?` -M'WH9E%*I7#H,[4*W9,,'W6T*[+NEBN`!!&T`Q.&3^H:1]HL[F%.DGH>[T>'/ -M:QV->LMHX>;U.CDN1U8I&>HYZAIV<>3\*'@0D:G96FP$4GJ8O'*]AA-N'##W -M+8Q`9EDFL/O<6L=Y(UOY0PZSI]A@104,Y]#;?" -M$NMLAOF33.K6M'H=;=3QL"!+?NS9G/G5O/F7?$B$.++O&O)LEU/>QS[*ZD': -ME*$KFX-=2].4J*J)FU3@$'W>%]4PQ_:B_2#:%[%KP=&G43BYX_NZ;'E1BG/`6KW;_9E/CT>;8%N/5HYS]I(+B63C/Z$.#\#6\>:]F$VS1.;;B. -M!6B5Z,Z*?0MO3[-?''WY.Q7J645#D!O>_^\/B$E3+TFF%;V"=)!>-;Y<^:J+ -MUB&^B5.K2P!*Y&WQRG$,3T5T(_O:[MKOV&_K@W(?.GPE?E3S;8;5J/$+_)6\ -M8^P=L>YEO@Q@GJ],EPR.._N?;7?T+YR35#K2U/OJ.@G!2O%N#E[ -M-CQN8[?I"C(O[BR0W,;F-#8"V`1C!0I**#YQG?!S96K?8&;VW79E&UVSDO3UJC8H[,K_J:0G<9BN -MGR+SN<+>D-O-/V(,-2Q&>5;0OIA("W!W6/*3*#CV')^?A\-!-*#B+^QC!T32^% -M-^^AQH'D@6>QWM6Z)\!7%?FFG&BVQH8'>QBGIW0TI`#$*(!KE?R%G^S#Z'G6,T/8`U6 -M^ZGLWG4<]5DIUM6D4^3R.OIOOT,)(=(C?IE_B5`-4CP4(S0.#ZU,$EW`QIG%%N[16@ -MC2D^W'5ZO7ZLGST37!A#A29!]1/_WS^M2%AN.T*^)8Z)VY&%$A1MVF)@OS;5 -M?$8A%94QP07U%8?E^`BK6!LT&61R]NF5A2,4Q< -MJD4>H&3PH*J[;<&WA(6EWA!,Q#`8CY["\D9F`XUQ&,D$M,1/M$]K:'G:4S@7 -MI7QT.'I.D;F(&&],_')#C7-.`5FU4P9&]"V!BMG_&,7DT5:MKDJ9L#]Y]L#. -MNPQ]7Y5#FS+6#[+K:3M)_B#A#?7+VY`VEXWWR%&>8=Y-(?MXK1-KU6*&U?J^ -M?!>L&E<.4)9=VZ/Q_6NY4S;70979!+[@C(H9QYH""ZO,#GP+LD-PP'3*>K;% -MD&4_G+-IV78$1TW&Y#1R1ROEM,-4#ZQ8T>\-,H;=P1(#V>*5;@&9D[)(4?V/ -ME02\2T"0@[B]*?\PTK'M)"#OE4L.1\];@5YZ?'G44N4,7;]E.(H`)8\C\&Q_ -MKOUCT!Y?-K-&>`RGU4Y&%>`I%DC"<4#05E-+^^Q>/5HMH4LAX])^M8\P"#[R -MN!.5"*&K48=DNF,2@34*FN1(IEP#W:(8S3#*E%.WTAUP/H!A`'X`]BUHA,!% -M<+O"05/'@DY.!Q6#[UTF2OE`$0*^A%(0!]\AU<3]->?(_]M&XUY3/-D3N%'3@$B-B$[888)CO%PC=? -M<+D5_U57<_[,$H/(ZP -MM`.V(J6*C*!Z(B`;("FF$EF)1TE;\@](SP)[0JW>8KG;X51X0];$G -METI8+;!U0J(PV.,6'L>W-V%SWNQS/\M:X3/PO?A>L\CZ'K'N_*\M>==RG_GU -MH.:;R:2[O-'+AAG@KD[&PX2!^&R,KJ:_!=+,NDK*-]-;>?!>7=OE$1DX+K59 -M\1O`M2JHR]@9(&%LO@R"A[$OSI0JP5V`40HW(]B*K]&,>7J2>4U7GP=[]PN< -M]'P^T9O^;FP"$8Z6E8?J;O7&3N3!BESQ1X$8=BM\I",#7):`?=-G+4DMKJ!K -M@F9QEOS5+DU71EX9%2D@TW#0T7>LL9B)=B+D7/%3@IL]+!]?JK$T567P=,.$ -M\03QC'2).RUWEUU6.G@X;CNL]ZKNL-NN@;-50Y,MBMWO7T65R3B=H-U+5`CU -ML[EY0!Z7-'4H72'ZUVO03[@L;]5'D7G>/U1VQ5:W%6,12_JL-5) -M_AC'PUF7=6Z+X/@E]UM9'@U.\E`^C'U0(@2K- -M_N%M7H[D7Y1342`9>=%'HY"#&1NFVE6/+V'O\3<4R5E\I5KP)Z_B?"-SWV\Z -M-`K0*4#`<)"F"WG9^7GH1G7P:NDU/FJW+-7EOU0@F!6"8\`!Y>62JE%:SB#3 -M4=L.@4XN+;BFZG\)^[Y?P7U%/!7J*]L:@Y-IHF]J(JQU*A""7L53#3`>(Y*D6T*JB1G[XL -M'@%FDI:6`(DTU,LXI1^Y`56F%/%O';682K;=6K,=_)#];ASLVDV>6%/KD[1A -MBS('5AOW8!TP`^L -MB<-&$6_CQC;BVPV5+/XYJ2I#5M["5[ZS*SH3`7)?OWAZG25?C)N,/DFDS'(X -M3.Y=\^JV4IUM%>J*8#ADHM^*5TZ(PV!J -M&VIDPY2Z[)*3NOX._P_/@1-AGT'[1>W(X+-"D*1B+`XRQ(82P7B6CE_33T?P -M*0@:(THTL3_;5>$@UDA)G#4^KE\"/E -MXJAY>V#1WIY"#^1-+0D.+4(T$)(XYP0?&\7N#F[!KK7X`>PU5Y:YG>)\[XG4 -M"N#K;PEB@FH>CW`J+3VV'_.YPJUM=(;PR?T6W7Z;`C+>7#^T="5,T"42%@'GQ3R[&D)15$`5DBO4X;P-1UM"\E%]=4@^9% -M(GPRGW"+/X%UC"SK+[>T]Y2DPB*1;W!\9O;B32T.^.>!N-TDN*N!1MI\:N7P -M&6X#W7\M,MU]2) -MLC=RZ"G)=DF<:JBFF2U]!_DB^QT@8)`KS>2P7"4Z,$G$+'FYQ[U-!)P/C0`A0NG[2D^T6+H3X74 -MIX-"J\'653J/#)`I]$5C^M00M[9^L/=5+/O>T6,];.!%+#+T9%HDP%)^#TFC -M_Y>UZK#-]_.`X8+1#>8J'JULUE0"R7D>SH-F.`6L+FLFGFDIZJO_:_92HI:` -M[V3?"=0.5+>J;J&;8C:]/WAVOHC\XBS7YS%)E@I22V2:NKPF;WA]M,=95EZ) -M&S-2KP8/B[0CZO9<:C$N]*AC;B95.0[TA,)`_ROE)$3-/P-!_\3'G,M=(++K -M'=U#:.A.#1OBAO%BRK3DO+VLC!I\N\XC;NQ"H_-,^HJ6]1'8#_N_L. -MK&N"J2J[NRTXH[XU66V1^)=BT_ODUD38[-C#'DZ*&B9>&+WM?4(*&A'#13C? -MN4N^3N)0AN52(:%FJL4#+NH%!=[%XCU6.-\+^:I_!E-!KCV7,Y#CKM<*3$KY -M-^YNH,K74'^<=J<+-.K"DMWQAY3`BG65W0TI?FB4C"B#;N=H5K!^.B@ -MI\!NM^R7.0(3@_VWWX78[+?RL_;NN@,E?]"``;+/-=ZA.WM4+J#X7$?3FR.+):$WZHS\_VF70 -MI_4@_P43CV%V'9Z.L%E_RG_:I"ZB(NYAEJ"Q!$5\H`_RDVT3BD,9VN>RL4>9 -M@T-:"?]!D0`SWVE?L!E1WUP(/SON(IILHQ7-C3$?@H-6&J45-6D6Y[3,[G -M-LM-I!T36W]"!PSC`J(4&---W*RMM>+VC7U>W?=XUQ=7GF0;OPP&>>V+8UIX -M6>=/&J84@KT#,NBIGR,?;0P_W(PJ_.LI6"Y\S^@/RMA]NEN"0B+^E[Z679=G -ME$D]\<,ITD[WQ(I%3XQ]/%'+0U*4'-O>*5BXE:DX0<]E=+DO&,[]%VM`D;%C -M:9B`ZTTFNKSME,K*#+$%8%W:A*F]P6@*^A3Z>Y,::YU?:->H%L+LR>( -M3743+1"?98<,Z71Y=87$3KHF.,-\,815Y*:F2`+YR^R7YW9/#4+`R%?7Q+]@ -M&%R6(%S<\PL:2XN2#V_=G<"%D"BJCK3H.42M=M=+R$L^I7_UT*ZNYN1(8"&T -MM@V[7F[65C0`RPGV!03$W>-II057<]_6IH>T#XEA/"[LP)RM@O1#/"O$2N-! -M4\VS.&'M_7X:+L)6,;RC9U8%'>0QC_YN$1B'#3$6P`$&MRM:]%B0P -MI4)9X1MC=_L1#T>XA/L6MWD^.]DJ*OBU3]]OH/1CLRFO(TVCGUE`K17 -MA;[=OKO!I9?"=3>&D!`:@:!])5C?"%/VEYEC'A9VR*F`K2&3O;=J%%'?FU*6>:NJEW)4U*`(G7UI5/(B;:G*3.S(;__>_M'EVW=)P\6 -MN<..Z?.^\]WEIM1G="0WP3B$JY8R>3!L1M;U\[""R!B35K!GX:'V)LY -MNX"?O0KL"6^2^8!:E9O4;0#'0<.,B5RJ,$LP)T'>&B\MKYS)<73/V -M7`-&,;(=$JIUD-A"[UBOY0'T\8JQH8;I*/%/9\_#NF=YB;CY(XZ>?++EU"B' -M/NMO0NWU@D=QGF6XHU8C%VD&5H%6VBP?Y[D1'&BHS1R$B?/R@.LH4!%#:]:4 -M.B+RUT,8`S7XXDV:_1F/DP?\Q)LX#/]$*JHR(>F]0WE3*'/\?Q96S\9T!(Y1 -MG!5KNIJDM0_2O\E%`OF7_D&Z',`P$Z)\7Y+\\F/I/.ZUG)I0![2^1+H9[\7P -M5+W5-$(.C-B%SQ6:Y$X9']3]Y?X?L(3G;<^@?*;FT,UX-ELEKH-*=Y)!:RXS -MM@'6HOD@_>\URN?MV@*L0=4W!`I5@-1/0E?21%U`SI#>U!\;:0C,VC\R8Y^V -M&*/Q7'7%S2+RO@$3X/=)*P7Y`L`]Y3D513V#:^#7\O^'$NA[_>0-I//L)3], -M?6&?A*=\/,Q*)N(&=Q4`*MP8H66'`)(X*D"S/<4@BX$;_ -M$QR?5PF'TTLN>3>`P(Q)J%+TPW'N$2M.Z1E.*N5Z@B1V6]'YQ$]Q79F-"G9O -M\K77QQ+$\)]T]9.7B/V:P=>(_CG`)9!=SAR"N5A2^[>1Y(512+%?K*]`^Y03 -M(G5+/@Z(?G-Z6D.EC;4]C]+`:."U8TVK8V-=?>+Y+\2I4-ZU9[`&KW+.#VRA -MW'9`U/+`WY'X&[ZIVZ3;@1'D@*MQ=AVZM245'SFG(GLT(`T6\Z(%FT^/LA1( -ML%JC%9(MC6.XC)NK;3[)_:78+YD)-<2T8Y+#8K8+L[YKLW.;L -M#\_>0>47TBG>1W#U>6*=9-+>*XJ(@1:N3[[!AD45M,TCVF:/%)!,&S'T^C/I -MZ3]=0?6.%D5<,77M[+K&W;"46[#;=W%*A-`EH9AS! -MT-1XQ.)R5).>FW>0*V'>.;5*H`BPS?1@QIC-^1'*^6N`=G.T6[9-?PR -M*10DFZ5Z`XC!6L9K'6810=RISK9NG1,VTT@.L!\&"JJ8NB]NK5^^I_3KI8M^ -M]D%7=[_X+F%.<9][Y%/^[-I50_L3-QEE`P9HMQ5'3-I2&64.Y!,;;VZ9&UI8 -M*K((WW)QK:7]M7G!R\6'X7>\8AMG)%D078"1C6(%C\N)_B^)L(Q&BD+X-BM9Q9V9?<:+$M"(>,,\P]$!#11>G6ZJ0 -MG7%>I_"1`N_J3+Y8Y][(>$GMY=4M>)P:0A]!W/ZBKJ?P&?@<-">3S,]R_^4L -MTQ+A4H8BHQ[+,HP!Y##)%=NN&Q^6_)S^5^0$X1>+T*SO$]Y$09--E6 -MWY9\Q=31^A`J6;Q\!['XR01MPTF(LKDM!D49'NQ).D=ZS/TVJ84$Q(K6=?DR -MAF.L0)GR*82(9NC.N!&;7S5QD>%,6ZA+R,)P8<\7XGV?[>UN98#QOQM&'40_ -MJ!&Z5ETFM:LEUWR&@S^;B>/L.7-DE(Z>\B[S2D.BJ/'QIJ4G,#5P0%G>:97L -M9."_:KH87F_!"?MC3:RW,N -M?O'1TE\8.W6.DAV4?'\.OGI@7];/H\3:@`-\OX_M474]*?U.T+>#H$6DV4V? -MXO]",$7+'`V%H0:V;DA#V;E9I$T"CA&F$1YFV>234);XZOG>*<`.6QX[QR6O2Y4Y"=G_W7:1 -M0]-H$/[C&KK8%T2?=V55]_=!,S+17/0)L%!?[.TFG/1([EMU=;T=:MP[SO`9 -M.D0^]Y?S0>QF!>B@X^@GK,>0!Q$H50"G"H6O*FIP>%=E$U,#JPWK78AX-238 -MBW]V)3)B9[(Z3-^U55Y$,Y??5MBKL/5O]U2@QW>X""RA?843K:!Q(!&-XB[R -MSZ*Y.8VBDP-%VZN]4,$O+@^1J'S1P'%TY5K^#\RQ%+`9,WVQFB/^OQ>&9<_\YID51L)8R@TQ@-2G]94[Y#QR``(B(``B(B(`B48CWT -M#:9+`.KIL\&<+Z#?_KT56D^=!)6:W\?`5>"9Q3M^O=Y+B0\A4NW&$US#F@OX -M?BW*3PIQ0WSUGU[HB?$6=J:C1ROH'FL7M6JB[6?N:;O1]63P]FC]DM<7'K,L -MW#*%*PF/T"W.K9`0_E($^CS$`^1E2Z,U$81U8'#01]E^KBBL?ZKV8<7.X[]/ -M]!8<5Y0-+@'L\$$KC"J<;V_9@\9",AW,%M5O+3(TS68>R14:$9!F),WC"VA`G;+I -MA:_NS*TQ:@V'(.X.*Z053HI;K\8GH%/QD?BEH*F^Y*BV.#/3]Q2MH<8HTZI* -M%J5WL\3YB+=!E2H5"=XXLVT=%-"N%7CNQ]6NK9[[/%^E1JVTUJBDI;U^[I2S -MZMH?HE\7+,=L6F-@,QZ[Z"%;N_0`=4N+KW0TR^;2S`DX8G$`,=#-"W26`CBJ -M]*WBXFL[^;OH0GR*@.SOEZ_^&I[?LB4-G(ZW;LSQ`(<*862`6EZ*#NUL`R3716+IKE>45,`!DV96SH0J=W#6>5)U@M>AX*0!U2[.N0NW$ -M*0#=@LPHJO2V#G%2VBGIVK?`"7>%,:$)F -M*1\>BPP!:5_*4[FBZ(,#2H(O-&;)]_(U+"!-)%1R%V1)FA0H2G7R[* -MM^&^WZQP&PUY+00*`A>39^'))`5<0>2:PAE+R[,A'#O5-SY0@:;8#]$6LP)* -MR7[>Z\=%LR7KZ-*T@:WVFM&KQJ-P:>$NS -M$EO%'."?.,_ENBAV:%ZYJRM`OWU[)">!(AB3&>/JX[1+@&^3410##33; -M-Y`FMV?X?REOA6H*0I+@,K54R&@R,[NHCB7<-3OH&QB_F,;KU7_T%7SC@S>^ -MN07.>B@B%[*\T!$B.?*FR%K/TH9@S2^&!'+OBEB5^[17P1@P-NK&RB0PUIT)OE%H0!=.Z-?ZJ2/,J>FK7Z#HK5J&5R' -M?&M%W;=S%8XM273[BT>&;X)U%A5YI=R+OS5IY=9+2O8"A,F]70:F$EP[B@I` -M=_U`,"L=?:-`J+6DC)O3PH%%[Y^:KAE'5^^*DT-Y9/-K,:N -M`V=:B[PY;/'WIX%=\D -MTZ1/Y3G?A:_\NN6/OR7V1Q9Q3KF.>""FU"P'8<;6S9,NWD)C59=J_XW;A9KF -M99IP,F!2>5;T*]W$"8ENZ^A$8+2[Y[L"@4F0_ -M"<^,C]]&\!7V5)=^>&S5__X<=S/H`"`$:*'+(K).WAZKWC4%*W]O+G"3%ESI -M).7VFUQDMR*2GRH#VN:M3XL]]H3#BG,7ZUNI9(8JA&NY4\>(>F;]KSJ\529X -MY_0K;8)/(GT0!,B%&7=',L#%$T;]G363YNE31U#7S\'V7^A%E*@%Z-.+9XTO -MO`IK'Z`@.*_R7R7DY?7\5GA4ZY8&//YA7(B*XSL=T]MD]B@@E'>;S?@N3M3> -M*A]XGP\+-%`92I(BUR>?"6\)6U[4?)1DNH\R+#BG4;L?-D2)P4W'/'W)2$C7 -M5>H9EOG13%VST,,K/G`UPP)B6LYU\M+6\.PL<;+_Y"88^'FX -M5R?XZ,X@@*7Q3B(.IGC=MV7YG+1>=1)I'$. -MZA]R@5KY=YFN&Q(N7["&>C-=+DOI:9/,_L#NU240B+_HI4&$N2\!J"M4?JJ( -MNHI:67WD&7K*=UY]R;%(BEN!8NU/X'6IA,*Y7'GC;<'--G;K5#%_TEV7;]:) -M7''T7D1<11W@YOVYRE!8LV`0\?R9VAXKF!<22L@EP)H*K_@!X>M9S]V??C%U -M(X"JY5[4#-54QK^T1@L)%B -MQ+L$S%1\&"-#DE2N!.K#;9"?-4GSA'7`0THA/YM;/`PZ9&+@(-&9K#7Q12!F -MZOQ-M=_0G'IG=#35>+J2XE0$#2Z^.P?_*!%_<&U8$_V/RZM -M\F`!ZACID'V(;F%1PZ'3+VF,R))&D+[+EFWI#>H>W<#)E/*V)+@J&;_:*!34 -M[@=G&[?#@_H6(N4R'5)4]3>A'Q^&772N3.=ZOVP(=)AC`'&=[R#(_&3D8?_) -MOZ9R+$T>O(VC> -M>N!JA@!88!.+,J_<_!;J$X<0Z8])HC3?9MK63CEZ=+OK5-T-&+*:#=#4.ZU1 -MUQ/4*RNCZABL^@?32Q$^W$M[.OKD4FG@S>Y]Z_D[$>74B*!X]4COZ%R5E6U< -M*+A8^M+K@3-!^E`QA-B\=ZKD")GI\LI)>C^#]R>@?$X8F^.IIL%K8Z@"$E=! -MA-1#L'H[N`N"Q4JD2E_C2\6Z.;S,!.Y?.8<>VH63RN1,%'S8VIS7R3-"WS72 -M(M^"`@"+-XMWJ,H/#DF?V*BVNLA@2(NG6_W -MLX^4@^-QY*>%N6/IW`&%J^YS"7K^];J4)P7XPW'HNGP --^K_XNY(IPH2"!#,T>``` -` -end diff --git a/sbin/gbde/template.txt b/sbin/gbde/template.txt deleted file mode 100644 index 6de6c6b0b485..000000000000 --- a/sbin/gbde/template.txt +++ /dev/null @@ -1,31 +0,0 @@ -# -# Sector size is the smallest unit of data which can be read or written. -# Making it too small decreases performance and decreases available space. -# Making it too large may prevent filesystems from working. 512 is the -# minimum and always safe. For UFS, use the fragment size -# -sector_size = 512 - -# -# Start and end of the encrypted section of the partition. Specify in -# sector numbers. If none specified, "all" will be assumed, to the -# extent the value of this can be established. -# -#first_sector = 0 -#last_sector = 2879 -#total_sectors = 2880 - -# -# An encrypted partition can have more than one key. It may be a good idea -# to make at least two keys, and save one of them for "just in case" use. -# The minimum is obviously one and the maximum is 4. -# -number_of_keys = 4 - -# -# Flushing the partition with random bytes prevents a brute-force attack -# from skipping sectors which obviously contains un-encrypted data. -# NB: This variable is boolean, if it is present it means "yes" even if -# you set it to the value "no" -# -#random_flush = diff --git a/sbin/gbde/test.sh b/sbin/gbde/test.sh deleted file mode 100644 index 502bfd8dbd68..000000000000 --- a/sbin/gbde/test.sh +++ /dev/null @@ -1,66 +0,0 @@ -#!/bin/sh - -set -e - -MD=99 -mdconfig -d -u $MD > /dev/null 2>&1 || true - -mdconfig -a -t malloc -s 1m -u $MD - -D=/dev/md$MD - -./gbde init $D -P foo -L /tmp/_l1 -./gbde setkey $D -p foo -l /tmp/_l1 -P bar -L /tmp/_l1 -./gbde setkey $D -p bar -l /tmp/_l1 -P foo -L /tmp/_l1 - -./gbde setkey $D -p foo -l /tmp/_l1 -n 2 -P foo2 -L /tmp/_l2 -./gbde setkey $D -p foo2 -l /tmp/_l2 -n 3 -P foo3 -L /tmp/_l3 -./gbde setkey $D -p foo3 -l /tmp/_l3 -n 4 -P foo4 -L /tmp/_l4 -./gbde setkey $D -p foo4 -l /tmp/_l4 -n 1 -P foo1 -L /tmp/_l1 - -./gbde nuke $D -p foo1 -l /tmp/_l1 -n 4 -if ./gbde nuke $D -p foo4 -l /tmp/_l4 -n 3 ; then false ; fi -./gbde destroy $D -p foo2 -l /tmp/_l2 -if ./gbde destroy $D -p foo2 -l /tmp/_l2 ; then false ; fi - -./gbde nuke $D -p foo1 -l /tmp/_l1 -n -1 -if ./gbde nuke $D -p foo1 -l /tmp/_l1 -n -1 ; then false ; fi -if ./gbde nuke $D -p foo2 -l /tmp/_l2 -n -1 ; then false ; fi -if ./gbde nuke $D -p foo3 -l /tmp/_l3 -n -1 ; then false ; fi -if ./gbde nuke $D -p foo4 -l /tmp/_l4 -n -1 ; then false ; fi - -rm -f /tmp/_l1 /tmp/_l2 /tmp/_l3 /tmp/_l4 - -./gbde init $D -P foo -./gbde setkey $D -p foo -P bar -./gbde setkey $D -p bar -P foo - -./gbde setkey $D -p foo -n 2 -P foo2 -./gbde setkey $D -p foo2 -n 3 -P foo3 -./gbde setkey $D -p foo3 -n 4 -P foo4 -./gbde setkey $D -p foo4 -n 1 -P foo1 - -mdconfig -d -u $MD - -mdconfig -a -t malloc -s 1m -u $MD -if [ -f image.uu ] ; then - uudecode -p image.uu | bzcat > $D -else - uudecode -p ${1}/image.uu | bzcat > $D -fi - -if [ `md5 < $D` != "a4066a739338d451b919e63f9ee4a12c" ] ; then - echo "Failed to set up md(4) device correctly" - exit 2 -fi - -./gbde attach $D -p foo -fsck_ffs ${D}.bde -./gbde detach $D -mdconfig -d -u $MD - - -echo "***********" -echo "Test passed" -echo "***********" -exit 0 diff --git a/sys/geom/bde/g_bde.c b/sys/geom/bde/g_bde.c deleted file mode 100644 index 1313e6a35147..000000000000 --- a/sys/geom/bde/g_bde.c +++ /dev/null @@ -1,296 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2002 Poul-Henning Kamp - * Copyright (c) 2002 Networks Associates Technology, Inc. - * All rights reserved. - * - * This software was developed for the FreeBSD Project by Poul-Henning Kamp - * and NAI Labs, the Security Research Division of Network Associates, Inc. - * under DARPA/SPAWAR contract N66001-01-C-8035 ("CBOSS"), as part of the - * DARPA CHATS research program. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#define BDE_CLASS_NAME "BDE" - -FEATURE(geom_bde, "GEOM-based Disk Encryption"); - -static void -g_bde_start(struct bio *bp) -{ - - switch (bp->bio_cmd) { - case BIO_DELETE: - case BIO_READ: - case BIO_WRITE: - g_bde_start1(bp); - break; - case BIO_GETATTR: - g_io_deliver(bp, EOPNOTSUPP); - break; - default: - g_io_deliver(bp, EOPNOTSUPP); - return; - } - return; -} - -static void -g_bde_orphan(struct g_consumer *cp) -{ - struct g_geom *gp; - struct g_provider *pp; - struct g_bde_softc *sc; - - g_trace(G_T_TOPOLOGY, "g_bde_orphan(%p/%s)", cp, cp->provider->name); - g_topology_assert(); - - gp = cp->geom; - sc = gp->softc; - gp->flags |= G_GEOM_WITHER; - LIST_FOREACH(pp, &gp->provider, provider) - g_wither_provider(pp, ENXIO); - explicit_bzero(sc, sizeof(struct g_bde_softc)); /* destroy evidence */ - return; -} - -static int -g_bde_access(struct g_provider *pp, int dr, int dw, int de) -{ - struct g_geom *gp; - struct g_consumer *cp; - - gp = pp->geom; - cp = LIST_FIRST(&gp->consumer); - if (cp->acr == 0 && cp->acw == 0 && cp->ace == 0) { - de++; - dr++; - } - /* ... and let go of it on last close */ - if ((cp->acr + dr) == 0 && (cp->acw + dw) == 0 && (cp->ace + de) == 1) { - de--; - dr--; - } - return (g_access(cp, dr, dw, de)); -} - -static void -g_bde_create_geom(struct gctl_req *req, struct g_class *mp, struct g_provider *pp) -{ - struct g_geom *gp; - struct g_consumer *cp; - struct g_bde_key *kp; - int error, i; - u_int sectorsize; - off_t mediasize; - struct g_bde_softc *sc; - void *pass; - void *key; - - g_trace(G_T_TOPOLOGY, "g_bde_create_geom(%s, %s)", mp->name, pp->name); - g_topology_assert(); - gp = NULL; - - gp = g_new_geomf(mp, "%s.bde", pp->name); - cp = g_new_consumer(gp); - error = g_attach(cp, pp); - if (error != 0) { - g_destroy_consumer(cp); - g_destroy_geom(gp); - gctl_error(req, "could not attach consumer"); - return; - } - error = g_access(cp, 1, 1, 1); - if (error) { - g_detach(cp); - g_destroy_consumer(cp); - g_destroy_geom(gp); - gctl_error(req, "could not access consumer"); - return; - } - pass = NULL; - key = NULL; - do { - pass = gctl_get_param(req, "pass", &i); - if (pass == NULL || i != SHA512_DIGEST_LENGTH) { - gctl_error(req, "No usable key presented"); - break; - } - key = gctl_get_param(req, "key", &i); - if (key != NULL && i != 16) { - gctl_error(req, "Invalid key presented"); - break; - } - sectorsize = cp->provider->sectorsize; - mediasize = cp->provider->mediasize; - sc = g_malloc(sizeof(struct g_bde_softc), M_WAITOK | M_ZERO); - gp->softc = sc; - sc->geom = gp; - sc->consumer = cp; - - error = g_bde_decrypt_lock(sc, pass, key, - mediasize, sectorsize, NULL); - explicit_bzero(sc->sha2, sizeof sc->sha2); - if (error) - break; - kp = &sc->key; - - /* Initialize helper-fields */ - kp->keys_per_sector = kp->sectorsize / G_BDE_SKEYLEN; - kp->zone_cont = kp->keys_per_sector * kp->sectorsize; - kp->zone_width = kp->zone_cont + kp->sectorsize; - kp->media_width = kp->sectorN - kp->sector0 - - G_BDE_MAXKEYS * kp->sectorsize; - - /* Our external parameters */ - sc->zone_cont = kp->zone_cont; - sc->mediasize = g_bde_max_sector(kp); - sc->sectorsize = kp->sectorsize; - - TAILQ_INIT(&sc->freelist); - TAILQ_INIT(&sc->worklist); - mtx_init(&sc->worklist_mutex, "g_bde_worklist", NULL, MTX_DEF); - /* XXX: error check */ - kproc_create(g_bde_worker, gp, &sc->thread, 0, 0, - "g_bde %s", gp->name); - pp = g_new_providerf(gp, "%s", gp->name); - pp->stripesize = kp->zone_cont; - pp->stripeoffset = 0; - pp->mediasize = sc->mediasize; - pp->sectorsize = sc->sectorsize; - g_error_provider(pp, 0); - break; - } while (0); - if (pass != NULL) - explicit_bzero(pass, SHA512_DIGEST_LENGTH); - if (key != NULL) - explicit_bzero(key, 16); - if (error == 0) - return; - g_access(cp, -1, -1, -1); - g_detach(cp); - g_destroy_consumer(cp); - g_free(gp->softc); - g_destroy_geom(gp); - switch (error) { - case ENOENT: - gctl_error(req, "Lock was destroyed"); - break; - case ESRCH: - gctl_error(req, "Lock was nuked"); - break; - case EINVAL: - gctl_error(req, "Could not open lock"); - break; - case ENOTDIR: - gctl_error(req, "Lock not found"); - break; - default: - gctl_error(req, "Could not open lock (%d)", error); - break; - } - return; -} - -static int -g_bde_destroy_geom(struct gctl_req *req, struct g_class *mp, struct g_geom *gp) -{ - struct g_consumer *cp; - struct g_provider *pp; - struct g_bde_softc *sc; - - g_trace(G_T_TOPOLOGY, "g_bde_destroy_geom(%s, %s)", mp->name, gp->name); - g_topology_assert(); - /* - * Orderly detachment. - */ - KASSERT(gp != NULL, ("NULL geom")); - pp = LIST_FIRST(&gp->provider); - KASSERT(pp != NULL, ("NULL provider")); - if (pp->acr > 0 || pp->acw > 0 || pp->ace > 0) - return (EBUSY); - sc = gp->softc; - cp = LIST_FIRST(&gp->consumer); - KASSERT(cp != NULL, ("NULL consumer")); - sc->dead = 1; - wakeup(sc); - g_access(cp, -1, -1, -1); - g_detach(cp); - g_destroy_consumer(cp); - while (sc->dead != 2 && !LIST_EMPTY(&pp->consumers)) - tsleep(sc, PRIBIO, "g_bdedie", hz); - mtx_destroy(&sc->worklist_mutex); - explicit_bzero(&sc->key, sizeof sc->key); - g_free(sc); - g_wither_geom(gp, ENXIO); - return (0); -} - -static void -g_bde_ctlreq(struct gctl_req *req, struct g_class *mp, char const *verb) -{ - struct g_geom *gp; - struct g_provider *pp; - - if (!strcmp(verb, "create geom")) { - pp = gctl_get_provider(req, "provider"); - if (pp != NULL) - g_bde_create_geom(req, mp, pp); - } else if (!strcmp(verb, "destroy geom")) { - gp = gctl_get_geom(req, mp, "geom"); - if (gp != NULL) - g_bde_destroy_geom(req, mp, gp); - } else { - gctl_error(req, "unknown verb"); - } -} - -static struct g_class g_bde_class = { - .name = BDE_CLASS_NAME, - .version = G_VERSION, - .destroy_geom = g_bde_destroy_geom, - .ctlreq = g_bde_ctlreq, - .start = g_bde_start, - .orphan = g_bde_orphan, - .access = g_bde_access, - .spoiled = g_std_spoiled, -}; - -DECLARE_GEOM_CLASS(g_bde_class, g_bde); -MODULE_VERSION(geom_bde, 0); diff --git a/sys/geom/bde/g_bde.h b/sys/geom/bde/g_bde.h deleted file mode 100644 index e501148c52bb..000000000000 --- a/sys/geom/bde/g_bde.h +++ /dev/null @@ -1,215 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2002 Poul-Henning Kamp - * Copyright (c) 2002 Networks Associates Technology, Inc. - * All rights reserved. - * - * This software was developed for the FreeBSD Project by Poul-Henning Kamp - * and NAI Labs, the Security Research Division of Network Associates, Inc. - * under DARPA/SPAWAR contract N66001-01-C-8035 ("CBOSS"), as part of the - * DARPA CHATS research program. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef _SYS_GEOM_BDE_G_BDE_H_ -#define _SYS_GEOM_BDE_G_BDE_H_ 1 - -/* - * These are quite, but not entirely unlike constants. - * - * They are not commented in details here, to prevent unadvisable - * experimentation. Please consult the code where they are used before you - * even think about modifying these. - */ - -#define G_BDE_MKEYLEN (2048/8) -#define G_BDE_SKEYBITS 128 -#define G_BDE_SKEYLEN (G_BDE_SKEYBITS/8) -#define G_BDE_KKEYBITS 128 -#define G_BDE_KKEYLEN (G_BDE_KKEYBITS/8) -#define G_BDE_MAXKEYS 4 -#define G_BDE_LOCKSIZE 384 -#define NLOCK_FIELDS 13 - -/* This just needs to be "large enough" */ -#define G_BDE_KEYBYTES 304 - -/* This file is being included by userspace. */ -#ifndef __diagused -#define __diagused -#endif - -struct g_bde_work; -struct g_bde_softc; - -struct g_bde_sector { - struct g_bde_work *owner; - struct g_bde_softc *softc; - off_t offset; - u_int size; - u_int ref; - void *data; - TAILQ_ENTRY(g_bde_sector) list; - u_char valid; - u_char malloc; - enum {JUNK, IO, VALID} state; - int error; - time_t used; -}; - -struct g_bde_work { - struct mtx mutex; - off_t offset; - off_t length; - void *data; - struct bio *bp; - struct g_bde_softc *softc; - off_t so; - off_t kso; - u_int ko; - struct g_bde_sector *sp; - struct g_bde_sector *ksp; - TAILQ_ENTRY(g_bde_work) list; - enum {SETUP, WAIT, FINISH} state; - int error; -}; - -/* - * The decrypted contents of the lock sectors. Notice that this is not - * the same as the on-disk layout. The on-disk layout is dynamic and - * dependent on the pass-phrase. - */ -struct g_bde_key { - uint64_t sector0; - /* Physical byte offset of 1st byte used */ - uint64_t sectorN; - /* Physical byte offset of 1st byte not used */ - uint64_t keyoffset; - /* Number of bytes the disk image is skewed. */ - uint64_t lsector[G_BDE_MAXKEYS]; - /* Physical byte offsets of lock sectors */ - uint32_t sectorsize; - /* Our "logical" sector size */ - uint32_t flags; -#define GBDE_F_SECT0 1 - uint8_t salt[16]; - /* Used to frustate the kkey generation */ - uint8_t spare[32]; - /* For future use, random contents */ - uint8_t mkey[G_BDE_MKEYLEN]; - /* Our masterkey. */ - - /* Non-stored help-fields */ - uint64_t zone_width; /* On-disk width of zone */ - uint64_t zone_cont; /* Payload width of zone */ - uint64_t media_width; /* Non-magic width of zone */ - u_int keys_per_sector; -}; - -struct g_bde_softc { - off_t mediasize; - u_int sectorsize; - uint64_t zone_cont; - struct g_geom *geom; - struct g_consumer *consumer; - TAILQ_HEAD(, g_bde_sector) freelist; - TAILQ_HEAD(, g_bde_work) worklist; - struct mtx worklist_mutex; - struct proc *thread; - struct g_bde_key key; - int dead; - u_int nwork; - u_int nsect; - u_int ncache; - u_char sha2[SHA512_DIGEST_LENGTH]; -}; - -/* g_bde_crypt.c */ -void g_bde_crypt_delete(struct g_bde_work *wp); -void g_bde_crypt_read(struct g_bde_work *wp); -void g_bde_crypt_write(struct g_bde_work *wp); - -/* g_bde_key.c */ -void g_bde_zap_key(struct g_bde_softc *sc); -int g_bde_get_key(struct g_bde_softc *sc, void *ptr, int len); -int g_bde_init_keybytes(struct g_bde_softc *sc, char *passp, int len); - -/* g_bde_lock .c */ -int g_bde_encode_lock(u_char *sha2, struct g_bde_key *gl, u_char *ptr); -int g_bde_decode_lock(struct g_bde_softc *sc, struct g_bde_key *gl, u_char *ptr); -int g_bde_keyloc_encrypt(u_char *sha2, uint64_t v0, uint64_t v1, void *output); -int g_bde_keyloc_decrypt(u_char *sha2, void *input, uint64_t *output); -int g_bde_decrypt_lock(struct g_bde_softc *sc, u_char *keymat, u_char *meta, off_t mediasize, u_int sectorsize, u_int *nkey); -void g_bde_hash_pass(struct g_bde_softc *sc, const void *input, u_int len); - -/* g_bde_math .c */ -uint64_t g_bde_max_sector(struct g_bde_key *lp); -void g_bde_map_sector(struct g_bde_work *wp); - -/* g_bde_work.c */ -void g_bde_start1(struct bio *bp); -void g_bde_worker(void *arg); - -/* - * These four functions wrap the raw Rijndael functions and make sure we - * explode if something fails which shouldn't. - */ - -static __inline void -AES_init(cipherInstance *ci) -{ - int error __diagused; - - error = rijndael_cipherInit(ci, MODE_CBC, NULL); - KASSERT(error > 0, ("rijndael_cipherInit %d", error)); -} - -static __inline void -AES_makekey(keyInstance *ki, int dir, u_int len, const void *key) -{ - int error __diagused; - - error = rijndael_makeKey(ki, dir, len, key); - KASSERT(error > 0, ("rijndael_makeKey %d", error)); -} - -static __inline void -AES_encrypt(cipherInstance *ci, keyInstance *ki, const void *in, void *out, u_int len) -{ - int error __diagused; - - error = rijndael_blockEncrypt(ci, ki, in, len * 8, out); - KASSERT(error > 0, ("rijndael_blockEncrypt %d", error)); -} - -static __inline void -AES_decrypt(cipherInstance *ci, keyInstance *ki, const void *in, void *out, u_int len) -{ - int error __diagused; - - error = rijndael_blockDecrypt(ci, ki, in, len * 8, out); - KASSERT(error > 0, ("rijndael_blockDecrypt %d", error)); -} - -#endif /* _SYS_GEOM_BDE_G_BDE_H_ */ diff --git a/sys/geom/bde/g_bde_crypt.c b/sys/geom/bde/g_bde_crypt.c deleted file mode 100644 index 39825a5bdf21..000000000000 --- a/sys/geom/bde/g_bde_crypt.c +++ /dev/null @@ -1,358 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2002 Poul-Henning Kamp - * Copyright (c) 2002 Networks Associates Technology, Inc. - * All rights reserved. - * - * This software was developed for the FreeBSD Project by Poul-Henning Kamp - * and NAI Labs, the Security Research Division of Network Associates, Inc. - * under DARPA/SPAWAR contract N66001-01-C-8035 ("CBOSS"), as part of the - * DARPA CHATS research program. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ -/* This source file contains the functions responsible for the crypto, keying - * and mapping operations on the I/O requests. - * - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include - -/* - * XXX: Debugging DO NOT ENABLE - */ -#undef MD5_KEY - -/* - * Derive kkey from mkey + sector offset. - * - * Security objective: Derive a potentially very large number of distinct skeys - * from the comparatively small key material in our mkey, in such a way that - * if one, more or even many of the kkeys are compromised, this does not - * significantly help an attack on other kkeys and in particular does not - * weaken or compromise the mkey. - * - * First we MD5 hash the sectornumber with the salt from the lock sector. - * The salt prevents the precalculation and statistical analysis of the MD5 - * output which would be possible if we only gave it the sectornumber. - * - * The MD5 hash is used to pick out 16 bytes from the masterkey, which - * are then hashed with MD5 together with the sector number. - * - * The resulting MD5 hash is the kkey. - */ - -static void -g_bde_kkey(struct g_bde_softc *sc, keyInstance *ki, int dir, off_t sector) -{ - u_int t; - MD5_CTX ct; - u_char buf[16]; - u_char buf2[8]; - - /* We have to be architecture neutral */ - le64enc(buf2, sector); - - MD5Init(&ct); - MD5Update(&ct, sc->key.salt, 8); - MD5Update(&ct, buf2, sizeof buf2); - MD5Update(&ct, sc->key.salt + 8, 8); - MD5Final(buf, &ct); - - MD5Init(&ct); - for (t = 0; t < 16; t++) { - MD5Update(&ct, &sc->key.mkey[buf[t]], 1); - if (t == 8) - MD5Update(&ct, buf2, sizeof buf2); - } - bzero(buf2, sizeof buf2); - MD5Final(buf, &ct); - bzero(&ct, sizeof ct); - AES_makekey(ki, dir, G_BDE_KKEYBITS, buf); - bzero(buf, sizeof buf); -} - -/* - * Encryption work for read operation. - * - * Security objective: Find the kkey, find the skey, decrypt the sector data. - */ - -void -g_bde_crypt_read(struct g_bde_work *wp) -{ - struct g_bde_softc *sc; - u_char *d; - u_int n; - off_t o; - u_char skey[G_BDE_SKEYLEN]; - keyInstance ki; - cipherInstance ci; - - AES_init(&ci); - sc = wp->softc; - o = 0; - for (n = 0; o < wp->length; n++, o += sc->sectorsize) { - d = (u_char *)wp->ksp->data + wp->ko + n * G_BDE_SKEYLEN; - g_bde_kkey(sc, &ki, DIR_DECRYPT, wp->offset + o); - AES_decrypt(&ci, &ki, d, skey, sizeof skey); - d = (u_char *)wp->data + o; - AES_makekey(&ki, DIR_DECRYPT, G_BDE_SKEYBITS, skey); - AES_decrypt(&ci, &ki, d, d, sc->sectorsize); - } - bzero(skey, sizeof skey); - bzero(&ci, sizeof ci); - bzero(&ki, sizeof ki); -} - -/* - * Encryption work for write operation. - * - * Security objective: Create random skey, encrypt sector data, - * encrypt skey with the kkey. - */ - -void -g_bde_crypt_write(struct g_bde_work *wp) -{ - u_char *s, *d; - struct g_bde_softc *sc; - u_int n; - off_t o; - u_char skey[G_BDE_SKEYLEN]; - keyInstance ki; - cipherInstance ci; - - sc = wp->softc; - AES_init(&ci); - o = 0; - for (n = 0; o < wp->length; n++, o += sc->sectorsize) { - s = (u_char *)wp->data + o; - d = (u_char *)wp->sp->data + o; - arc4rand(skey, sizeof skey, 0); - AES_makekey(&ki, DIR_ENCRYPT, G_BDE_SKEYBITS, skey); - AES_encrypt(&ci, &ki, s, d, sc->sectorsize); - - d = (u_char *)wp->ksp->data + wp->ko + n * G_BDE_SKEYLEN; - g_bde_kkey(sc, &ki, DIR_ENCRYPT, wp->offset + o); - AES_encrypt(&ci, &ki, skey, d, sizeof skey); - bzero(skey, sizeof skey); - } - bzero(skey, sizeof skey); - bzero(&ci, sizeof ci); - bzero(&ki, sizeof ki); -} - -/* - * Encryption work for delete operation. - * - * Security objective: Write random data to the sectors. - * - * XXX: At a hit in performance we would trash the encrypted skey as well. - * XXX: This would add frustration to the cleaning lady attack by making - * XXX: deletes look like writes. - */ - -void -g_bde_crypt_delete(struct g_bde_work *wp) -{ - struct g_bde_softc *sc; - u_char *d; - off_t o; - u_char skey[G_BDE_SKEYLEN]; - keyInstance ki; - cipherInstance ci; - - sc = wp->softc; - d = wp->sp->data; - AES_init(&ci); - /* - * Do not unroll this loop! - * Our zone may be significantly wider than the amount of random - * bytes arc4rand likes to give in one reseeding, whereas our - * sectorsize is far more likely to be in the same range. - */ - for (o = 0; o < wp->length; o += sc->sectorsize) { - arc4rand(d, sc->sectorsize, 0); - arc4rand(skey, sizeof skey, 0); - AES_makekey(&ki, DIR_ENCRYPT, G_BDE_SKEYBITS, skey); - AES_encrypt(&ci, &ki, d, d, sc->sectorsize); - d += sc->sectorsize; - } - /* - * Having written a long random sequence to disk here, we want to - * force a reseed, to avoid weakening the next time we use random - * data for something important. - */ - arc4rand(&o, sizeof o, 1); -} - -/* - * Calculate the total payload size of the encrypted device. - * - * Security objectives: none. - * - * This function needs to agree with g_bde_map_sector() about things. - */ - -uint64_t -g_bde_max_sector(struct g_bde_key *kp) -{ - uint64_t maxsect; - - maxsect = kp->media_width; - maxsect /= kp->zone_width; - maxsect *= kp->zone_cont; - return (maxsect); -} - -/* - * Convert an unencrypted side offset to offsets on the encrypted side. - * - * Security objective: Make it harder to identify what sectors contain what - * on a "cold" disk image. - * - * We do this by adding the "keyoffset" from the lock to the physical sector - * number modulus the available number of sectors. Since all physical sectors - * presumably look the same cold, this will do. - * - * As part of the mapping we have to skip the lock sectors which we know - * the physical address off. We also truncate the work packet, respecting - * zone boundaries and lock sectors, so that we end up with a sequence of - * sectors which are physically contiguous. - * - * Shuffling things further is an option, but the incremental frustration is - * not currently deemed worth the run-time performance hit resulting from the - * increased number of disk arm movements it would incur. - * - * This function offers nothing but a trivial diversion for an attacker able - * to do "the cleaning lady attack" in its current static mapping form. - */ - -void -g_bde_map_sector(struct g_bde_work *wp) -{ - - u_int zone, zoff, u, len; - uint64_t ko; - struct g_bde_softc *sc; - struct g_bde_key *kp; - - sc = wp->softc; - kp = &sc->key; - - /* find which zone and the offset in it */ - zone = wp->offset / kp->zone_cont; - zoff = wp->offset % kp->zone_cont; - - /* Calculate the offset of the key in the key sector */ - wp->ko = (zoff / kp->sectorsize) * G_BDE_SKEYLEN; - - /* restrict length to that zone */ - len = kp->zone_cont - zoff; - - /* ... and in general */ - if (len > DFLTPHYS) - len = DFLTPHYS; - - if (len < wp->length) - wp->length = len; - - /* Find physical sector address */ - wp->so = zone * kp->zone_width + zoff; - wp->so += kp->keyoffset; - wp->so %= kp->media_width; - if (wp->so + wp->length > kp->media_width) - wp->length = kp->media_width - wp->so; - wp->so += kp->sector0; - - /* The key sector is the last in this zone. */ - wp->kso = zone * kp->zone_width + kp->zone_cont; - wp->kso += kp->keyoffset; - wp->kso %= kp->media_width; - wp->kso += kp->sector0; - - /* Compensate for lock sectors */ - for (u = 0; u < G_BDE_MAXKEYS; u++) { - /* Find the start of this lock sector */ - ko = rounddown2(kp->lsector[u], (uint64_t)kp->sectorsize); - - if (wp->kso >= ko) - wp->kso += kp->sectorsize; - - if (wp->so >= ko) { - /* lock sector before work packet */ - wp->so += kp->sectorsize; - } else if ((wp->so + wp->length) > ko) { - /* lock sector in work packet, truncate */ - wp->length = ko - wp->so; - } - } - -#if 0 - printf("off %jd len %jd so %jd ko %jd kso %u\n", - (intmax_t)wp->offset, - (intmax_t)wp->length, - (intmax_t)wp->so, - (intmax_t)wp->kso, - wp->ko); -#endif - KASSERT(wp->so + wp->length <= kp->sectorN, - ("wp->so (%jd) + wp->length (%jd) > EOM (%jd), offset = %jd", - (intmax_t)wp->so, - (intmax_t)wp->length, - (intmax_t)kp->sectorN, - (intmax_t)wp->offset)); - - KASSERT(wp->kso + kp->sectorsize <= kp->sectorN, - ("wp->kso (%jd) + kp->sectorsize > EOM (%jd), offset = %jd", - (intmax_t)wp->kso, - (intmax_t)kp->sectorN, - (intmax_t)wp->offset)); - - KASSERT(wp->so >= kp->sector0, - ("wp->so (%jd) < BOM (%jd), offset = %jd", - (intmax_t)wp->so, - (intmax_t)kp->sector0, - (intmax_t)wp->offset)); - - KASSERT(wp->kso >= kp->sector0, - ("wp->kso (%jd) kso, - (intmax_t)kp->sector0, - (intmax_t)wp->offset)); -} diff --git a/sys/geom/bde/g_bde_lock.c b/sys/geom/bde/g_bde_lock.c deleted file mode 100644 index 5693913bf7c6..000000000000 --- a/sys/geom/bde/g_bde_lock.c +++ /dev/null @@ -1,478 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2002 Poul-Henning Kamp - * Copyright (c) 2002 Networks Associates Technology, Inc. - * All rights reserved. - * - * This software was developed for the FreeBSD Project by Poul-Henning Kamp - * and NAI Labs, the Security Research Division of Network Associates, Inc. - * under DARPA/SPAWAR contract N66001-01-C-8035 ("CBOSS"), as part of the - * DARPA CHATS research program. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ -/* This souce file contains routines which operates on the lock sectors, both - * for the kernel and the userland program gbde(1). - * - */ - -#include -#include -#include -#include -#include -#include - -#ifdef _KERNEL -#include -#include -#else -#include -#define CTASSERT(foo) -#define KASSERT(foo, bar) do { if(!(foo)) { warn bar ; exit (1); } } while (0) -#include -#include -#include -#include -#define g_free(foo) free(foo) -#endif - -#include -#include - -#include -#include - -/* - * Hash the raw pass-phrase. - * - * Security objectives: produce from the pass-phrase a fixed length - * bytesequence with PRN like properties in a reproducible way retaining - * as much entropy from the pass-phrase as possible. - * - * SHA2-512 makes this easy. - */ - -void -g_bde_hash_pass(struct g_bde_softc *sc, const void *input, u_int len) -{ - SHA512_CTX cx; - - SHA512_Init(&cx); - SHA512_Update(&cx, input, len); - SHA512_Final(sc->sha2, &cx); -} - -/* - * Encode/Decode the lock structure in byte-sequence format. - * - * Security objectives: Store in pass-phrase dependent variant format. - * - * C-structure packing and byte-endianess depends on architecture, compiler - * and compiler options. Writing raw structures to disk is therefore a bad - * idea in these enlightend days. - * - * We spend a fraction of the key-material on shuffling the fields around - * so they will be stored in an unpredictable sequence. - * - * For each byte of the key-material we derive two field indexes, and swap - * the position of those two fields. - * - * I have not worked out the statistical properties of this shuffle, but - * given that the key-material has PRN properties, the primary objective - * of making it hard to figure out which bits are where in the lock sector - * is sufficiently fulfilled. - * - * We include (and shuffle) an extra hash field in the stored version for - * identification and versioning purposes. This field contains the MD5 hash - * of a version identifier (currently "0000") followed by the stored lock - * sector byte-sequence substituting zero bytes for the hash field. - * - * The stored keysequence is protected by AES/256/CBC elsewhere in the code - * so the fact that the generated byte sequence has a much higher than - * average density of zero bits (from the numeric fields) is not currently - * a concern. - * - * Should this later become a concern, a simple software update and - * pass-phrase change can remedy the situation. One possible solution - * could be to XOR the numeric fields with a key-material derived PRN. - * - * The chosen shuffle algorithm only works as long as we have no more than 16 - * fields in the stored part of the lock structure (hence the CTASSERT below). - */ - -CTASSERT(NLOCK_FIELDS <= 16); - -static void -g_bde_shuffle_lock(u_char *sha2, int *buf) -{ - int j, k, l; - u_int u; - - /* Assign the fields sequential positions */ - for(u = 0; u < NLOCK_FIELDS; u++) - buf[u] = u; - - /* Then mix it all up */ - for(u = 48; u < SHA512_DIGEST_LENGTH; u++) { - j = sha2[u] % NLOCK_FIELDS; - k = (sha2[u] / NLOCK_FIELDS) % NLOCK_FIELDS; - l = buf[j]; - buf[j] = buf[k]; - buf[k] = l; - } -} - -int -g_bde_encode_lock(u_char *sha2, struct g_bde_key *gl, u_char *ptr) -{ - int shuffle[NLOCK_FIELDS]; - u_char *hash, *p; - int i; - MD5_CTX c; - - p = ptr; - hash = NULL; - g_bde_shuffle_lock(sha2, shuffle); - for (i = 0; i < NLOCK_FIELDS; i++) { - switch(shuffle[i]) { - case 0: - le64enc(p, gl->sector0); - p += 8; - break; - case 1: - le64enc(p, gl->sectorN); - p += 8; - break; - case 2: - le64enc(p, gl->keyoffset); - p += 8; - break; - case 3: - le32enc(p, gl->sectorsize); - p += 4; - break; - case 4: - le32enc(p, gl->flags); - p += 4; - break; - case 5: - case 6: - case 7: - case 8: - le64enc(p, gl->lsector[shuffle[i] - 5]); - p += 8; - break; - case 9: - bcopy(gl->spare, p, sizeof gl->spare); - p += sizeof gl->spare; - break; - case 10: - bcopy(gl->salt, p, sizeof gl->salt); - p += sizeof gl->salt; - break; - case 11: - bcopy(gl->mkey, p, sizeof gl->mkey); - p += sizeof gl->mkey; - break; - case 12: - bzero(p, 16); - hash = p; - p += 16; - break; - } - } - if(ptr + G_BDE_LOCKSIZE != p) - return(-1); - if (hash == NULL) - return(-1); - MD5Init(&c); - MD5Update(&c, "0000", 4); /* Versioning */ - MD5Update(&c, ptr, G_BDE_LOCKSIZE); - MD5Final(hash, &c); - return(0); -} - -int -g_bde_decode_lock(struct g_bde_softc *sc, struct g_bde_key *gl, u_char *ptr) -{ - int shuffle[NLOCK_FIELDS]; - u_char *p; - u_char hash[16], hash2[16]; - MD5_CTX c; - int i; - - p = ptr; - g_bde_shuffle_lock(sc->sha2, shuffle); - for (i = 0; i < NLOCK_FIELDS; i++) { - switch(shuffle[i]) { - case 0: - gl->sector0 = le64dec(p); - p += 8; - break; - case 1: - gl->sectorN = le64dec(p); - p += 8; - break; - case 2: - gl->keyoffset = le64dec(p); - p += 8; - break; - case 3: - gl->sectorsize = le32dec(p); - p += 4; - break; - case 4: - gl->flags = le32dec(p); - p += 4; - break; - case 5: - case 6: - case 7: - case 8: - gl->lsector[shuffle[i] - 5] = le64dec(p); - p += 8; - break; - case 9: - bcopy(p, gl->spare, sizeof gl->spare); - p += sizeof gl->spare; - break; - case 10: - bcopy(p, gl->salt, sizeof gl->salt); - p += sizeof gl->salt; - break; - case 11: - bcopy(p, gl->mkey, sizeof gl->mkey); - p += sizeof gl->mkey; - break; - case 12: - bcopy(p, hash2, sizeof hash2); - bzero(p, sizeof hash2); - p += sizeof hash2; - break; - } - } - if(ptr + G_BDE_LOCKSIZE != p) - return(-1); - MD5Init(&c); - MD5Update(&c, "0000", 4); /* Versioning */ - MD5Update(&c, ptr, G_BDE_LOCKSIZE); - MD5Final(hash, &c); - if (bcmp(hash, hash2, sizeof hash2)) - return (1); - return (0); -} - -/* - * Encode/Decode the locksector address ("metadata") with key-material. - * - * Security objectives: Encode/Decode the metadata encrypted by key-material. - * - * A simple AES/128/CBC will do. We take care to always store the metadata - * in the same endianness to make it MI. - * - * In the typical case the metadata is stored in encrypted format in sector - * zero on the media, but at the users discretion or if the piece of the - * device used (sector0...sectorN) does not contain sector zero, it can - * be stored in a filesystem or on a PostIt. - * - * The inability to easily locate the lock sectors makes an attack on a - * cold disk much less attractive, without unduly inconveniencing the - * legitimate user who can feasibly do a brute-force scan if the metadata - * was lost. - */ - -int -g_bde_keyloc_encrypt(u_char *sha2, uint64_t v0, uint64_t v1, void *output) -{ - u_char buf[16]; - keyInstance ki; - cipherInstance ci; - - le64enc(buf, v0); - le64enc(buf + 8, v1); - AES_init(&ci); - AES_makekey(&ki, DIR_ENCRYPT, G_BDE_KKEYBITS, sha2 + 0); - AES_encrypt(&ci, &ki, buf, output, sizeof buf); - explicit_bzero(buf, sizeof buf); - explicit_bzero(&ci, sizeof ci); - explicit_bzero(&ki, sizeof ki); - return (0); -} - -int -g_bde_keyloc_decrypt(u_char *sha2, void *input, uint64_t *output) -{ - keyInstance ki; - cipherInstance ci; - u_char buf[16]; - - AES_init(&ci); - AES_makekey(&ki, DIR_DECRYPT, G_BDE_KKEYBITS, sha2 + 0); - AES_decrypt(&ci, &ki, input, buf, sizeof buf); - *output = le64dec(buf); - explicit_bzero(buf, sizeof buf); - explicit_bzero(&ci, sizeof ci); - explicit_bzero(&ki, sizeof ki); - return(0); -} - -/* - * Find and Encode/Decode lock sectors. - * - * Security objective: given the pass-phrase, find, decrypt, decode and - * validate the lock sector contents. - * - * For ondisk metadata we cannot know beforehand which of the lock sectors - * a given pass-phrase opens so we must try each of the metadata copies in - * sector zero in turn. If metadata was passed as an argument, we don't - * have this problem. - * - */ - -static int -g_bde_decrypt_lockx(struct g_bde_softc *sc, u_char *meta, off_t mediasize, u_int sectorsize, u_int *nkey) -{ - u_char *buf, *q; - struct g_bde_key *gl; - uint64_t off, q1; - int error, m, i; - keyInstance ki; - cipherInstance ci; - - gl = &sc->key; - - /* Try to decrypt the metadata */ - error = g_bde_keyloc_decrypt(sc->sha2, meta, &off); - if (error) - return (error); - - /* If it points into thin blue air, forget it */ - if (off + G_BDE_LOCKSIZE > (uint64_t)mediasize) { - off = 0; - return (EINVAL); - } - - /* The lock data may span two physical sectors. */ - - m = 1; - if (off % sectorsize > sectorsize - G_BDE_LOCKSIZE) - m++; - - /* Read the suspected sector(s) */ - buf = g_read_data(sc->consumer, - off - (off % sectorsize), - m * sectorsize, &error); - if (buf == NULL) { - off = 0; - return(error); - } - - /* Find the byte-offset of the stored byte sequence */ - q = buf + off % sectorsize; - - /* If it is all zero, somebody nuked our lock sector */ - q1 = 0; - for (i = 0; i < G_BDE_LOCKSIZE; i++) - q1 += q[i]; - if (q1 == 0) { - off = 0; - g_free(buf); - return (ESRCH); - } - - /* Decrypt the byte-sequence in place */ - AES_init(&ci); - AES_makekey(&ki, DIR_DECRYPT, 256, sc->sha2 + 16); - AES_decrypt(&ci, &ki, q, q, G_BDE_LOCKSIZE); - - /* Decode the byte-sequence */ - i = g_bde_decode_lock(sc, gl, q); - q = NULL; - if (i < 0) { - off = 0; - return (EDOOFUS); /* Programming error */ - } else if (i > 0) { - off = 0; - return (ENOTDIR); /* Hash didn't match */ - } - - bzero(buf, sectorsize * m); - g_free(buf); - - /* If the masterkey is all zeros, user destroyed it */ - q1 = 0; - for (i = 0; i < (int)sizeof(gl->mkey); i++) - q1 += gl->mkey[i]; - if (q1 == 0) - return (ENOENT); - - /* If we have an unsorted lock-sequence, refuse */ - for (i = 0; i < G_BDE_MAXKEYS - 1; i++) - if (gl->lsector[i] >= gl->lsector[i + 1]) - return (EINVAL); - - /* Finally, find out which key was used by matching the byte offset */ - for (i = 0; i < G_BDE_MAXKEYS; i++) - if (nkey != NULL && off == gl->lsector[i]) - *nkey = i; - off = 0; - return (0); -} - -int -g_bde_decrypt_lock(struct g_bde_softc *sc, u_char *keymat, u_char *meta, off_t mediasize, u_int sectorsize, u_int *nkey) -{ - u_char *buf, buf1[16]; - int error, e, i; - - /* set up the key-material */ - bcopy(keymat, sc->sha2, SHA512_DIGEST_LENGTH); - - /* If passed-in metadata is non-zero, use it */ - bzero(buf1, sizeof buf1); - if (meta != NULL && bcmp(buf1, meta, sizeof buf1)) - return (g_bde_decrypt_lockx(sc, meta, mediasize, - sectorsize, nkey)); - - /* Read sector zero */ - buf = g_read_data(sc->consumer, 0, sectorsize, &error); - if (buf == NULL) - return(error); - - /* Try each index in turn, save indicative errors for final result */ - error = EINVAL; - for (i = 0; i < G_BDE_MAXKEYS; i++) { - e = g_bde_decrypt_lockx(sc, buf + i * 16, mediasize, - sectorsize, nkey); - /* Success or destroyed master key terminates */ - if (e == 0 || e == ENOENT) { - error = e; - break; - } - if (e != 0 && error == EINVAL) - error = e; - } - g_free(buf); - return (error); -} diff --git a/sys/geom/bde/g_bde_work.c b/sys/geom/bde/g_bde_work.c deleted file mode 100644 index 684ff91d6fad..000000000000 --- a/sys/geom/bde/g_bde_work.c +++ /dev/null @@ -1,778 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2002 Poul-Henning Kamp - * Copyright (c) 2002 Networks Associates Technology, Inc. - * All rights reserved. - * - * This software was developed for the FreeBSD Project by Poul-Henning Kamp - * and NAI Labs, the Security Research Division of Network Associates, Inc. - * under DARPA/SPAWAR contract N66001-01-C-8035 ("CBOSS"), as part of the - * DARPA CHATS research program. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ -/* - * This source file contains the state-engine which makes things happen in the - * right order. - * - * Outline: - * 1) g_bde_start1() - * Break the struct bio into multiple work packets one per zone. - * 2) g_bde_start2() - * Setup the necessary sector buffers and start those read operations - * which we can start at this time and put the item on the work-list. - * 3) g_bde_worker() - * Scan the work-list for items which are ready for crypto processing - * and call the matching crypto function in g_bde_crypt.c and schedule - * any writes needed. Read operations finish here by releasing the - * sector buffers and delivering the original bio request. - * 4) g_bde_write_done() - * Release sector buffers and deliver the original bio request. - * - * Because of the C-scope rules, the functions are almost perfectly in the - * opposite order in this source file. - * - * XXX: A switch to the hardware assisted crypto in src/sys/opencrypto will add - * XXX: additional states to this state-engine. Since no hardware available - * XXX: at this time has AES support, implementing this has been postponed - * XXX: until such time as it would result in a benefit. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -/* - * FIXME: This used to call malloc_last_fail which in practice was almost - * guaranteed to return time_uptime even in face of severe memory shortage. - * As GBDE is the only consumer the kludge below was added to facilitate the - * removal with minimial changes. The code should be fixed to respond to memory - * pressure (e.g., by using lowmem eventhandler) instead. - */ -static int -g_bde_malloc_last_fail(void) -{ - - return (time_uptime); -} - -static void g_bde_delete_sector(struct g_bde_softc *wp, struct g_bde_sector *sp); -static struct g_bde_sector * g_bde_new_sector(struct g_bde_work *wp, u_int len); -static void g_bde_release_keysector(struct g_bde_work *wp); -static struct g_bde_sector *g_bde_get_keysector(struct g_bde_work *wp); -static int g_bde_start_read(struct g_bde_sector *sp); -static void g_bde_purge_sector(struct g_bde_softc *sc, int fraction); - -/* - * Work item allocation. - * - * C++ would call these constructors and destructors. - */ -static u_int g_bde_nwork; -SYSCTL_UINT(_debug, OID_AUTO, gbde_nwork, CTLFLAG_RD, &g_bde_nwork, 0, ""); - -static MALLOC_DEFINE(M_GBDE, "gbde", "GBDE data structures"); - -static struct g_bde_work * -g_bde_new_work(struct g_bde_softc *sc) -{ - struct g_bde_work *wp; - - wp = malloc(sizeof *wp, M_GBDE, M_NOWAIT | M_ZERO); - if (wp == NULL) - return (wp); - wp->state = SETUP; - wp->softc = sc; - g_bde_nwork++; - sc->nwork++; - TAILQ_INSERT_TAIL(&sc->worklist, wp, list); - return (wp); -} - -static void -g_bde_delete_work(struct g_bde_work *wp) -{ - struct g_bde_softc *sc; - - sc = wp->softc; - g_bde_nwork--; - sc->nwork--; - TAILQ_REMOVE(&sc->worklist, wp, list); - free(wp, M_GBDE); -} - -/* - * Sector buffer allocation - * - * These two functions allocate and free back variable sized sector buffers - */ - -static u_int g_bde_nsect; -SYSCTL_UINT(_debug, OID_AUTO, gbde_nsect, CTLFLAG_RD, &g_bde_nsect, 0, ""); - -static void -g_bde_delete_sector(struct g_bde_softc *sc, struct g_bde_sector *sp) -{ - - g_bde_nsect--; - sc->nsect--; - if (sp->malloc) - free(sp->data, M_GBDE); - free(sp, M_GBDE); -} - -static struct g_bde_sector * -g_bde_new_sector(struct g_bde_work *wp, u_int len) -{ - struct g_bde_sector *sp; - - sp = malloc(sizeof *sp, M_GBDE, M_NOWAIT | M_ZERO); - if (sp == NULL) - return (sp); - if (len > 0) { - sp->data = malloc(len, M_GBDE, M_NOWAIT | M_ZERO); - if (sp->data == NULL) { - free(sp, M_GBDE); - return (NULL); - } - sp->malloc = 1; - } - g_bde_nsect++; - wp->softc->nsect++; - sp->size = len; - sp->softc = wp->softc; - sp->ref = 1; - sp->owner = wp; - sp->offset = wp->so; - sp->state = JUNK; - return (sp); -} - -/* - * Skey sector cache. - * - * Nothing prevents two separate I/O requests from addressing the same zone - * and thereby needing the same skey sector. We therefore need to sequence - * I/O operations to the skey sectors. A certain amount of caching is also - * desirable, although the extent of benefit from this is not at this point - * determined. - * - * XXX: GEOM may be able to grow a generic caching facility at some point - * XXX: to support such needs. - */ - -static u_int g_bde_ncache; -SYSCTL_UINT(_debug, OID_AUTO, gbde_ncache, CTLFLAG_RD, &g_bde_ncache, 0, ""); - -static void -g_bde_purge_one_sector(struct g_bde_softc *sc, struct g_bde_sector *sp) -{ - - g_trace(G_T_TOPOLOGY, "g_bde_purge_one_sector(%p, %p)", sc, sp); - if (sp->ref != 0) - return; - TAILQ_REMOVE(&sc->freelist, sp, list); - g_bde_ncache--; - sc->ncache--; - bzero(sp->data, sp->size); - g_bde_delete_sector(sc, sp); -} - -static struct g_bde_sector * -g_bde_get_keysector(struct g_bde_work *wp) -{ - struct g_bde_sector *sp; - struct g_bde_softc *sc; - off_t offset; - - offset = wp->kso; - g_trace(G_T_TOPOLOGY, "g_bde_get_keysector(%p, %jd)", wp, (intmax_t)offset); - sc = wp->softc; - - if (g_bde_malloc_last_fail() < g_bde_ncache) - g_bde_purge_sector(sc, -1); - - sp = TAILQ_FIRST(&sc->freelist); - if (sp != NULL && sp->ref == 0 && sp->used + 300 < time_uptime) - g_bde_purge_one_sector(sc, sp); - - TAILQ_FOREACH(sp, &sc->freelist, list) { - if (sp->offset == offset) - break; - } - if (sp != NULL) { - sp->ref++; - KASSERT(sp->offset == offset, ("wrong offset")); - KASSERT(sp->softc == wp->softc, ("wrong softc")); - if (sp->ref == 1) - sp->owner = wp; - } else { - if (g_bde_malloc_last_fail() < g_bde_ncache) { - TAILQ_FOREACH(sp, &sc->freelist, list) - if (sp->ref == 0) - break; - } - if (sp == NULL && !TAILQ_EMPTY(&sc->freelist)) - sp = TAILQ_FIRST(&sc->freelist); - if (sp != NULL && sp->ref > 0) - sp = NULL; - if (sp == NULL) { - sp = g_bde_new_sector(wp, sc->sectorsize); - if (sp != NULL) { - g_bde_ncache++; - sc->ncache++; - TAILQ_INSERT_TAIL(&sc->freelist, sp, list); - sp->malloc = 2; - } - } - if (sp != NULL) { - sp->offset = offset; - sp->softc = wp->softc; - sp->ref = 1; - sp->owner = wp; - sp->state = JUNK; - sp->error = 0; - } - } - if (sp != NULL) { - TAILQ_REMOVE(&sc->freelist, sp, list); - TAILQ_INSERT_TAIL(&sc->freelist, sp, list); - sp->used = time_uptime; - } - wp->ksp = sp; - return(sp); -} - -static void -g_bde_release_keysector(struct g_bde_work *wp) -{ - struct g_bde_softc *sc; - struct g_bde_work *wp2; - struct g_bde_sector *sp; - - sp = wp->ksp; - g_trace(G_T_TOPOLOGY, "g_bde_release_keysector(%p)", sp); - KASSERT(sp->malloc == 2, ("Wrong sector released")); - sc = sp->softc; - KASSERT(sc != NULL, ("NULL sp->softc")); - KASSERT(wp == sp->owner, ("Releasing, not owner")); - sp->owner = NULL; - wp->ksp = NULL; - sp->ref--; - if (sp->ref > 0) { - TAILQ_REMOVE(&sc->freelist, sp, list); - TAILQ_INSERT_TAIL(&sc->freelist, sp, list); - TAILQ_FOREACH(wp2, &sc->worklist, list) { - if (wp2->ksp == sp) { - KASSERT(wp2 != wp, ("Self-reowning")); - sp->owner = wp2; - wakeup(sp->softc); - break; - } - } - KASSERT(wp2 != NULL, ("Failed to pick up owner for %p\n", sp)); - } else if (sp->error != 0) { - sp->offset = ~0; - sp->error = 0; - sp->state = JUNK; - } - TAILQ_REMOVE(&sc->freelist, sp, list); - TAILQ_INSERT_HEAD(&sc->freelist, sp, list); -} - -static void -g_bde_purge_sector(struct g_bde_softc *sc, int fraction) -{ - struct g_bde_sector *sp; - int n; - - g_trace(G_T_TOPOLOGY, "g_bde_purge_sector(%p)", sc); - if (fraction > 0) - n = sc->ncache / fraction + 1; - else - n = g_bde_ncache - g_bde_malloc_last_fail(); - if (n < 0) - return; - if (n > sc->ncache) - n = sc->ncache; - while(n--) { - TAILQ_FOREACH(sp, &sc->freelist, list) { - if (sp->ref != 0) - continue; - TAILQ_REMOVE(&sc->freelist, sp, list); - g_bde_ncache--; - sc->ncache--; - bzero(sp->data, sp->size); - g_bde_delete_sector(sc, sp); - break; - } - } -} - -static struct g_bde_sector * -g_bde_read_keysector(struct g_bde_softc *sc, struct g_bde_work *wp) -{ - struct g_bde_sector *sp; - - g_trace(G_T_TOPOLOGY, "g_bde_read_keysector(%p)", wp); - sp = g_bde_get_keysector(wp); - if (sp == NULL) { - g_bde_purge_sector(sc, -1); - sp = g_bde_get_keysector(wp); - } - if (sp == NULL) - return (sp); - if (sp->owner != wp) - return (sp); - if (sp->state == VALID) - return (sp); - if (g_bde_start_read(sp) == 0) - return (sp); - g_bde_release_keysector(wp); - return (NULL); -} - -/* - * Contribute to the completion of the original bio request. - * - * We have no simple way to tell how many bits the original bio request has - * been segmented into, so the easiest way to determine when we can deliver - * it is to keep track of the number of bytes we have completed. We keep - * track of any errors underway and latch onto the first one. - * - * We always report "nothing done" in case of error, because random bits here - * and there may be completed and returning a number of completed bytes does - * not convey any useful information about which bytes they were. If some - * piece of broken code somewhere interprets this to mean that nothing has - * changed on the underlying media they deserve the lossage headed for them. - * - * A single mutex per g_bde instance is used to prevent contention. - */ - -static void -g_bde_contribute(struct bio *bp, off_t bytes, int error) -{ - - g_trace(G_T_TOPOLOGY, "g_bde_contribute bp %p bytes %jd error %d", - bp, (intmax_t)bytes, error); - if (bp->bio_error == 0) - bp->bio_error = error; - bp->bio_completed += bytes; - KASSERT(bp->bio_completed <= bp->bio_length, ("Too large contribution")); - if (bp->bio_completed == bp->bio_length) { - if (bp->bio_error != 0) - bp->bio_completed = 0; - g_io_deliver(bp, bp->bio_error); - } -} - -/* - * This is the common case "we're done with this work package" function - */ - -static void -g_bde_work_done(struct g_bde_work *wp, int error) -{ - - g_bde_contribute(wp->bp, wp->length, error); - if (wp->sp != NULL) - g_bde_delete_sector(wp->softc, wp->sp); - if (wp->ksp != NULL) - g_bde_release_keysector(wp); - g_bde_delete_work(wp); -} - -/* - * A write operation has finished. When we have all expected cows in the - * barn close the door and call it a day. - */ - -static void -g_bde_write_done(struct bio *bp) -{ - struct g_bde_sector *sp; - struct g_bde_work *wp; - struct g_bde_softc *sc; - - sp = bp->bio_caller1; - sc = bp->bio_caller2; - mtx_lock(&sc->worklist_mutex); - KASSERT(sp != NULL, ("NULL sp")); - KASSERT(sc != NULL, ("NULL sc")); - KASSERT(sp->owner != NULL, ("NULL sp->owner")); - g_trace(G_T_TOPOLOGY, "g_bde_write_done(%p)", sp); - if (bp->bio_error == 0 && bp->bio_completed != sp->size) - bp->bio_error = EIO; - sp->error = bp->bio_error; - g_destroy_bio(bp); - wp = sp->owner; - if (wp->error == 0) - wp->error = sp->error; - - if (wp->bp->bio_cmd == BIO_DELETE) { - KASSERT(sp == wp->sp, ("trashed delete op")); - g_bde_work_done(wp, wp->error); - mtx_unlock(&sc->worklist_mutex); - return; - } - - KASSERT(wp->bp->bio_cmd == BIO_WRITE, ("Confused in g_bde_write_done()")); - KASSERT(sp == wp->sp || sp == wp->ksp, ("trashed write op")); - if (wp->sp == sp) { - g_bde_delete_sector(sc, wp->sp); - wp->sp = NULL; - } else { - sp->state = VALID; - } - if (wp->sp == NULL && wp->ksp != NULL && wp->ksp->state == VALID) - g_bde_work_done(wp, wp->error); - mtx_unlock(&sc->worklist_mutex); - return; -} - -/* - * Send a write request for the given sector down the pipeline. - */ - -static int -g_bde_start_write(struct g_bde_sector *sp) -{ - struct bio *bp; - struct g_bde_softc *sc; - - g_trace(G_T_TOPOLOGY, "g_bde_start_write(%p)", sp); - sc = sp->softc; - KASSERT(sc != NULL, ("NULL sc in g_bde_start_write")); - KASSERT(sp->owner != NULL, ("NULL sp->owner in g_bde_start_write")); - bp = g_new_bio(); - if (bp == NULL) - return (ENOMEM); - bp->bio_cmd = BIO_WRITE; - bp->bio_offset = sp->offset; - bp->bio_data = sp->data; - bp->bio_length = sp->size; - bp->bio_done = g_bde_write_done; - bp->bio_caller1 = sp; - bp->bio_caller2 = sc; - sp->state = IO; - g_io_request(bp, sc->consumer); - return(0); -} - -/* - * A read operation has finished. Mark the sector no longer iobusy and - * wake up the worker thread and let it do its thing. - */ - -static void -g_bde_read_done(struct bio *bp) -{ - struct g_bde_sector *sp; - struct g_bde_softc *sc; - - sp = bp->bio_caller1; - g_trace(G_T_TOPOLOGY, "g_bde_read_done(%p)", sp); - sc = bp->bio_caller2; - mtx_lock(&sc->worklist_mutex); - if (bp->bio_error == 0 && bp->bio_completed != sp->size) - bp->bio_error = EIO; - sp->error = bp->bio_error; - if (sp->error == 0) - sp->state = VALID; - else - sp->state = JUNK; - wakeup(sc); - g_destroy_bio(bp); - mtx_unlock(&sc->worklist_mutex); -} - -/* - * Send a read request for the given sector down the pipeline. - */ - -static int -g_bde_start_read(struct g_bde_sector *sp) -{ - struct bio *bp; - struct g_bde_softc *sc; - - g_trace(G_T_TOPOLOGY, "g_bde_start_read(%p)", sp); - sc = sp->softc; - KASSERT(sc != NULL, ("Null softc in sp %p", sp)); - bp = g_new_bio(); - if (bp == NULL) - return (ENOMEM); - bp->bio_cmd = BIO_READ; - bp->bio_offset = sp->offset; - bp->bio_data = sp->data; - bp->bio_length = sp->size; - bp->bio_done = g_bde_read_done; - bp->bio_caller1 = sp; - bp->bio_caller2 = sc; - sp->state = IO; - g_io_request(bp, sc->consumer); - return(0); -} - -/* - * The worker thread. - * - * The up/down path of GEOM is not allowed to sleep or do any major work - * so we use this thread to do the actual crypto operations and to push - * the state engine onwards. - * - * XXX: if we switch to the src/sys/opencrypt hardware assisted encryption - * XXX: using a thread here is probably not needed. - */ - -void -g_bde_worker(void *arg) -{ - struct g_bde_softc *sc; - struct g_bde_work *wp, *twp; - struct g_geom *gp; - int restart, error; - - gp = arg; - sc = gp->softc; - - mtx_lock(&sc->worklist_mutex); - for (;;) { - restart = 0; - g_trace(G_T_TOPOLOGY, "g_bde_worker scan"); - TAILQ_FOREACH_SAFE(wp, &sc->worklist, list, twp) { - KASSERT(wp != NULL, ("NULL wp")); - KASSERT(wp->softc != NULL, ("NULL wp->softc")); - if (wp->state != WAIT) - continue; /* Not interesting here */ - - KASSERT(wp->bp != NULL, ("NULL wp->bp")); - KASSERT(wp->sp != NULL, ("NULL wp->sp")); - - if (wp->ksp != NULL) { - if (wp->ksp->owner != wp) - continue; - if (wp->ksp->state == IO) - continue; - KASSERT(wp->ksp->state == VALID, - ("Illegal sector state (%d)", - wp->ksp->state)); - } - - if (wp->bp->bio_cmd == BIO_READ && wp->sp->state == IO) - continue; - - if (wp->ksp != NULL && wp->ksp->error != 0) { - g_bde_work_done(wp, wp->ksp->error); - continue; - } - switch(wp->bp->bio_cmd) { - case BIO_READ: - if (wp->ksp == NULL) { - KASSERT(wp->error != 0, - ("BIO_READ, no ksp and no error")); - g_bde_work_done(wp, wp->error); - break; - } - if (wp->sp->error != 0) { - g_bde_work_done(wp, wp->sp->error); - break; - } - mtx_unlock(&sc->worklist_mutex); - g_bde_crypt_read(wp); - mtx_lock(&sc->worklist_mutex); - restart++; - g_bde_work_done(wp, wp->sp->error); - break; - case BIO_WRITE: - wp->state = FINISH; - KASSERT(wp->sp->owner == wp, - ("Write not owner sp")); - KASSERT(wp->ksp->owner == wp, - ("Write not owner ksp")); - mtx_unlock(&sc->worklist_mutex); - g_bde_crypt_write(wp); - mtx_lock(&sc->worklist_mutex); - restart++; - error = g_bde_start_write(wp->sp); - if (error) { - g_bde_work_done(wp, error); - break; - } - error = g_bde_start_write(wp->ksp); - if (wp->error != 0) - wp->error = error; - break; - case BIO_DELETE: - wp->state = FINISH; - mtx_unlock(&sc->worklist_mutex); - g_bde_crypt_delete(wp); - mtx_lock(&sc->worklist_mutex); - restart++; - g_bde_start_write(wp->sp); - break; - } - if (restart) - break; - } - if (!restart) { - /* - * We don't look for our death-warrant until we are - * idle. Shouldn't make a difference in practice. - */ - if (sc->dead) - break; - g_trace(G_T_TOPOLOGY, "g_bde_worker sleep"); - error = msleep(sc, &sc->worklist_mutex, - PRIBIO, "-", hz); - if (error == EWOULDBLOCK) { - /* - * Lose our skey cache in an orderly fashion. - * The exact rate can be tuned to be less - * aggressive if this is desirable. 10% per - * second means that the cache is gone in a - * few minutes. - */ - g_bde_purge_sector(sc, 10); - } - } - } - g_trace(G_T_TOPOLOGY, "g_bde_worker die"); - g_bde_purge_sector(sc, 1); - KASSERT(sc->nwork == 0, ("Dead but %d work remaining", sc->nwork)); - KASSERT(sc->ncache == 0, ("Dead but %d cache remaining", sc->ncache)); - KASSERT(sc->nsect == 0, ("Dead but %d sect remaining", sc->nsect)); - mtx_unlock(&sc->worklist_mutex); - sc->dead = 2; - wakeup(sc); - kproc_exit(0); -} - -/* - * g_bde_start1 has chopped the incoming request up so all the requests - * we see here are inside a single zone. Map the data and key locations - * grab the buffers we need and fire off the first volley of read requests. - */ - -static void -g_bde_start2(struct g_bde_work *wp) -{ - struct g_bde_softc *sc; - - KASSERT(wp != NULL, ("NULL wp in g_bde_start2")); - KASSERT(wp->softc != NULL, ("NULL wp->softc")); - g_trace(G_T_TOPOLOGY, "g_bde_start2(%p)", wp); - sc = wp->softc; - switch (wp->bp->bio_cmd) { - case BIO_READ: - wp->sp = g_bde_new_sector(wp, 0); - if (wp->sp == NULL) { - g_bde_work_done(wp, ENOMEM); - return; - } - wp->sp->size = wp->length; - wp->sp->data = wp->data; - if (g_bde_start_read(wp->sp) != 0) { - g_bde_work_done(wp, ENOMEM); - return; - } - g_bde_read_keysector(sc, wp); - if (wp->ksp == NULL) - wp->error = ENOMEM; - break; - case BIO_DELETE: - wp->sp = g_bde_new_sector(wp, wp->length); - if (wp->sp == NULL) { - g_bde_work_done(wp, ENOMEM); - return; - } - break; - case BIO_WRITE: - wp->sp = g_bde_new_sector(wp, wp->length); - if (wp->sp == NULL) { - g_bde_work_done(wp, ENOMEM); - return; - } - g_bde_read_keysector(sc, wp); - if (wp->ksp == NULL) { - g_bde_work_done(wp, ENOMEM); - return; - } - break; - default: - KASSERT(0 == 1, - ("Wrong bio_cmd %d in g_bde_start2", wp->bp->bio_cmd)); - } - - wp->state = WAIT; - wakeup(sc); -} - -/* - * Create a sequence of work structures, and have g_bde_map_sector() determine - * how long they each can be. Feed them to g_bde_start2(). - */ - -void -g_bde_start1(struct bio *bp) -{ - struct g_bde_softc *sc; - struct g_bde_work *wp; - off_t done; - - sc = bp->bio_to->geom->softc; - bp->bio_driver1 = sc; - - mtx_lock(&sc->worklist_mutex); - for(done = 0; done < bp->bio_length; ) { - wp = g_bde_new_work(sc); - if (wp != NULL) { - wp->bp = bp; - wp->offset = bp->bio_offset + done; - wp->data = bp->bio_data + done; - wp->length = bp->bio_length - done; - g_bde_map_sector(wp); - done += wp->length; - g_bde_start2(wp); - } - if (wp == NULL || bp->bio_error != 0) { - g_bde_contribute(bp, bp->bio_length - done, ENOMEM); - break; - } - } - mtx_unlock(&sc->worklist_mutex); - return; -}