From 0afe1441dee073b90aa6b02e481b54a98219e454 Mon Sep 17 00:00:00 2001 From: Robert Date: Tue, 24 Jan 2017 11:27:25 -0600 Subject: [PATCH 01/18] Fix 'See Photos' link for hyphenated registrations \W would probably work for the regex, but I wanted to make it as narrow as possible. --- public_html/script.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public_html/script.js b/public_html/script.js index 3a70b73..687b978 100644 --- a/public_html/script.js +++ b/public_html/script.js @@ -1378,7 +1378,7 @@ function getFlightAwareModeSLink(code, ident, linkText) { function getFlightAwarePhotoLink(registration) { if (registration !== null && registration !== "") { - return "See Photos"; + return "See Photos"; } return ""; From b1a1771bb0e16a80288e49d1a5e498bf02d83721 Mon Sep 17 00:00:00 2001 From: Oliver Jowett Date: Fri, 27 Jan 2017 12:31:34 +0000 Subject: [PATCH 02/18] Speed up float converters a little, add a SC16Q11-nodc converter. --- convert.c | 59 ++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 50 insertions(+), 9 deletions(-) diff --git a/convert.c b/convert.c index 0c02b72..6fbba73 100644 --- a/convert.c +++ b/convert.c @@ -121,8 +121,8 @@ static void convert_uc8_generic(void *iq_data, for (i = 0; i < nsamples; ++i) { I = *in++; Q = *in++; - fI = (I - 127.5) / 127.5; - fQ = (Q - 127.5) / 127.5; + fI = (I - 127.5f) / 127.5f; + fQ = (Q - 127.5f) / 127.5f; // DC block z1_I = fI * dc_a + z1_I * dc_b; @@ -137,7 +137,7 @@ static void convert_uc8_generic(void *iq_data, float mag = sqrtf(magsq); sum_power += magsq; sum_level += mag; - *mag_data++ = (uint16_t)(mag * 65535.0 + 0.5); + *mag_data++ = (uint16_t)(mag * 65535.0f + 0.5f); } state->z1_I = z1_I; @@ -173,8 +173,8 @@ static void convert_sc16_generic(void *iq_data, for (i = 0; i < nsamples; ++i) { I = (int16_t)le16toh(*in++); Q = (int16_t)le16toh(*in++); - fI = I / 32768.0; - fQ = Q / 32768.0; + fI = I / 32768.0f; + fQ = Q / 32768.0f; // DC block z1_I = fI * dc_a + z1_I * dc_b; @@ -189,7 +189,7 @@ static void convert_sc16_generic(void *iq_data, float mag = sqrtf(magsq); sum_power += magsq; sum_level += mag; - *mag_data++ = (uint16_t)(mag * 65535.0 + 0.5); + *mag_data++ = (uint16_t)(mag * 65535.0f + 0.5f); } state->z1_I = z1_I; @@ -204,6 +204,46 @@ static void convert_sc16_generic(void *iq_data, } } +static void convert_sc16q11_nodc(void *iq_data, + uint16_t *mag_data, + unsigned nsamples, + struct converter_state *state, + double *out_mean_level, + double *out_mean_power) +{ + uint16_t *in = iq_data; + unsigned i; + int16_t I, Q; + float fI, fQ, magsq; + float sum_level = 0, sum_power = 0; + + MODES_NOTUSED(state); + + for (i = 0; i < nsamples; ++i) { + I = (int16_t)le16toh(*in++); + Q = (int16_t)le16toh(*in++); + fI = I / 2048.0f; + fQ = Q / 2048.0f; + + magsq = fI * fI + fQ * fQ; + if (magsq > 1) + magsq = 1; + + float mag = sqrtf(magsq); + sum_power += magsq; + sum_level += mag; + *mag_data++ = (uint16_t)(mag * 65535.0f + 0.5f); + } + + if (out_mean_level) { + *out_mean_level = sum_level / nsamples; + } + + if (out_mean_power) { + *out_mean_power = sum_power / nsamples; + } +} + static void convert_sc16q11_generic(void *iq_data, uint16_t *mag_data, unsigned nsamples, @@ -225,8 +265,8 @@ static void convert_sc16q11_generic(void *iq_data, for (i = 0; i < nsamples; ++i) { I = (int16_t)le16toh(*in++); Q = (int16_t)le16toh(*in++); - fI = I / 2048.0; - fQ = Q / 2048.0; + fI = I / 2048.0f; + fQ = Q / 2048.0f; // DC block z1_I = fI * dc_a + z1_I * dc_b; @@ -241,7 +281,7 @@ static void convert_sc16q11_generic(void *iq_data, float mag = sqrtf(magsq); sum_power += magsq; sum_level += mag; - *mag_data++ = (uint16_t)(sqrtf(magsq) * 65535.0 + 0.5); + *mag_data++ = (uint16_t)(mag * 65535.0f + 0.5f); } state->z1_I = z1_I; @@ -266,6 +306,7 @@ static struct { { INPUT_UC8, 0, convert_uc8_nodc, "UC8, integer/table path" }, { INPUT_UC8, 1, convert_uc8_generic, "UC8, float path" }, { INPUT_SC16, 1, convert_sc16_generic, "SC16, float path" }, + { INPUT_SC16Q11, 0, convert_sc16q11_nodc, "SC16Q11, float path, no DC block" }, { INPUT_SC16Q11, 1, convert_sc16q11_generic, "SC16Q11, float path" }, { 0, 0, NULL, NULL } }; From b1149f344da845fbec657708f87c879db7ca339a Mon Sep 17 00:00:00 2001 From: Oliver Jowett Date: Fri, 27 Jan 2017 12:33:03 +0000 Subject: [PATCH 03/18] Ditch a debug message. --- convert.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/convert.c b/convert.c index 6fbba73..06b753a 100644 --- a/convert.c +++ b/convert.c @@ -332,8 +332,6 @@ iq_convert_fn init_converter(input_format_t format, return NULL; } - fprintf(stderr, "Using sample converter: %s\n", converters_table[i].description); - *out_state = malloc(sizeof(struct converter_state)); if (! *out_state) { fprintf(stderr, "can't allocate converter state\n"); From bfc4b742afb104b3fc818d434a39beb3d6ab8a1e Mon Sep 17 00:00:00 2001 From: Oliver Jowett Date: Fri, 27 Jan 2017 12:33:43 +0000 Subject: [PATCH 04/18] Move {start,end}_cpu_timing into util.c --- dump1090.c | 15 --------------- util.c | 19 ++++++++++++++++++- util.h | 6 ++++++ 3 files changed, 24 insertions(+), 16 deletions(-) diff --git a/dump1090.c b/dump1090.c index 64302ec..2f80541 100644 --- a/dump1090.c +++ b/dump1090.c @@ -96,21 +96,6 @@ static void sigtermHandler(int dummy) { log_with_timestamp("Caught SIGTERM, shutting down..\n"); } -static void start_cpu_timing(struct timespec *start_time) -{ - clock_gettime(CLOCK_THREAD_CPUTIME_ID, start_time); -} - -static void end_cpu_timing(const struct timespec *start_time, struct timespec *add_to) -{ - struct timespec end_time; - clock_gettime(CLOCK_THREAD_CPUTIME_ID, &end_time); - add_to->tv_sec += (end_time.tv_sec - start_time->tv_sec - 1); - add_to->tv_nsec += (1000000000L + end_time.tv_nsec - start_time->tv_nsec); - add_to->tv_sec += add_to->tv_nsec / 1000000000L; - add_to->tv_nsec = add_to->tv_nsec % 1000000000L; -} - void receiverPositionChanged(float lat, float lon, float alt) { log_with_timestamp("Autodetected receiver location: %.5f, %.5f at %.0fm AMSL", lat, lon, alt); diff --git a/util.c b/util.c index b66f7e1..5168851 100644 --- a/util.c +++ b/util.c @@ -47,7 +47,7 @@ // (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 "util.h" +#include "dump1090.h" #include #include @@ -79,3 +79,20 @@ void normalize_timespec(struct timespec *ts) ts->tv_nsec = (ts->tv_nsec + 1000000000 * adjust) % 1000000000; } } + +/* record current CPU time in start_time */ +void start_cpu_timing(struct timespec *start_time) +{ + clock_gettime(CLOCK_THREAD_CPUTIME_ID, start_time); +} + +/* add difference between start_time and the current CPU time to add_to */ +void end_cpu_timing(const struct timespec *start_time, struct timespec *add_to) +{ + struct timespec end_time; + clock_gettime(CLOCK_THREAD_CPUTIME_ID, &end_time); + add_to->tv_sec += (end_time.tv_sec - start_time->tv_sec - 1); + add_to->tv_nsec += (1000000000L + end_time.tv_nsec - start_time->tv_nsec); + add_to->tv_sec += add_to->tv_nsec / 1000000000L; + add_to->tv_nsec = add_to->tv_nsec % 1000000000L; +} diff --git a/util.h b/util.h index 41ccbb1..51405b4 100644 --- a/util.h +++ b/util.h @@ -36,4 +36,10 @@ int64_t receiveclock_ns_elapsed(uint64_t t1, uint64_t t2); struct timespec; void normalize_timespec(struct timespec *ts); +/* record current CPU time in start_time */ +void start_cpu_timing(struct timespec *start_time); + +/* add difference between start_time and the current CPU time to add_to */ +void end_cpu_timing(const struct timespec *start_time, struct timespec *add_to); + #endif From 75b221c0e3f0592e0a60540c49f4545df4ecf746 Mon Sep 17 00:00:00 2001 From: Oliver Jowett Date: Fri, 27 Jan 2017 17:30:40 +0000 Subject: [PATCH 05/18] Lots of refactoring to move the SDR-type-specific bits out of the main code and make them optionally buildable. --- Makefile | 2 +- dump1090.c | 523 ++++----------------------------------------------- dump1090.h | 20 +- sdr.c | 145 ++++++++++++++ sdr.h | 13 ++ sdr_ifile.c | 236 +++++++++++++++++++++++ sdr_ifile.h | 13 ++ sdr_rtlsdr.c | 335 +++++++++++++++++++++++++++++++++ sdr_rtlsdr.h | 13 ++ 9 files changed, 800 insertions(+), 500 deletions(-) create mode 100644 sdr.c create mode 100644 sdr.h create mode 100644 sdr_ifile.c create mode 100644 sdr_ifile.h create mode 100644 sdr_rtlsdr.c create mode 100644 sdr_rtlsdr.h diff --git a/Makefile b/Makefile index a09c267..3ef571d 100644 --- a/Makefile +++ b/Makefile @@ -27,7 +27,7 @@ all: dump1090 view1090 %.o: %.c *.h $(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@ -dump1090: dump1090.o anet.o interactive.o mode_ac.o mode_s.o net_io.o crc.o demod_2400.o stats.o cpr.o icao_filter.o track.o util.o convert.o $(COMPAT) +dump1090: dump1090.o anet.o interactive.o mode_ac.o mode_s.o net_io.o crc.o demod_2400.o stats.o cpr.o icao_filter.o track.o util.o convert.o sdr_ifile.o sdr_rtlsdr.o sdr.o $(COMPAT) $(CC) -g -o $@ $^ $(LDFLAGS) $(LIBS) $(LIBS_RTLSDR) -lncurses view1090: view1090.o anet.o interactive.o mode_ac.o mode_s.o net_io.o crc.o stats.o cpr.o icao_filter.o track.o util.o $(COMPAT) diff --git a/dump1090.c b/dump1090.c index 2f80541..4003c74 100644 --- a/dump1090.c +++ b/dump1090.c @@ -49,12 +49,8 @@ #include "dump1090.h" -#include - #include -static int verbose_device_search(char *s); - // // ============================= Utility functions ========================== // @@ -113,7 +109,6 @@ void modesInitConfig(void) { // Now initialise things that should not be 0/NULL to their defaults Modes.gain = MODES_MAX_GAIN; Modes.freq = MODES_DEFAULT_FREQ; - Modes.ppm_error = MODES_DEFAULT_PPM; Modes.check_crc = 1; Modes.net_heartbeat_interval = MODES_NET_HEARTBEAT_INTERVAL; Modes.net_input_raw_ports = strdup("30001"); @@ -127,6 +122,8 @@ void modesInitConfig(void) { Modes.json_location_accuracy = 1; Modes.maxRange = 1852 * 300; // 300NM default max range Modes.mode_ac_auto = 1; + + sdrInitConfig(); } // //========================================================================= @@ -212,138 +209,11 @@ void modesInit(void) { modesChecksumInit(Modes.nfix_crc); icaoFilterInit(); modeACInit(); - interactiveInit(); if (Modes.show_only) icaoFilterAdd(Modes.show_only); - - // Prepare sample conversion - if (!Modes.net_only) { - if (Modes.filename == NULL) // using a real RTLSDR, use UC8 input always - Modes.input_format = INPUT_UC8; - - Modes.converter_function = init_converter(Modes.input_format, - Modes.sample_rate, - Modes.dc_filter, - &Modes.converter_state); - if (!Modes.converter_function) { - fprintf(stderr, "Can't initialize sample converter, giving up.\n"); - exit(1); - } - } } -static void convert_samples(void *iq, - uint16_t *mag, - unsigned nsamples, - double *mean_level, - double *mean_power) -{ - Modes.converter_function(iq, mag, nsamples, Modes.converter_state, mean_level, mean_power); -} - -// -// =============================== RTLSDR handling ========================== -// -int modesInitRTLSDR(void) { - int j; - int device_count, dev_index = 0; - char vendor[256], product[256], serial[256]; - - if (Modes.dev_name) { - if ( (dev_index = verbose_device_search(Modes.dev_name)) < 0 ) - return -1; - } - - device_count = rtlsdr_get_device_count(); - if (!device_count) { - fprintf(stderr, "No supported RTLSDR devices found.\n"); - return -1; - } - - fprintf(stderr, "Found %d device(s):\n", device_count); - for (j = 0; j < device_count; j++) { - if (rtlsdr_get_device_usb_strings(j, vendor, product, serial) != 0) { - fprintf(stderr, "%d: unable to read device details\n", j); - } else { - fprintf(stderr, "%d: %s, %s, SN: %s %s\n", j, vendor, product, serial, - (j == dev_index) ? "(currently selected)" : ""); - } - } - - if (rtlsdr_open(&Modes.dev, dev_index) < 0) { - fprintf(stderr, "Error opening the RTLSDR device: %s\n", - strerror(errno)); - return -1; - } - - // Set gain, frequency, sample rate, and reset the device - rtlsdr_set_tuner_gain_mode(Modes.dev, - (Modes.gain == MODES_AUTO_GAIN) ? 0 : 1); - if (Modes.gain != MODES_AUTO_GAIN) { - int *gains; - int numgains; - - numgains = rtlsdr_get_tuner_gains(Modes.dev, NULL); - if (numgains <= 0) { - fprintf(stderr, "Error getting tuner gains\n"); - return -1; - } - - gains = malloc(numgains * sizeof(int)); - if (rtlsdr_get_tuner_gains(Modes.dev, gains) != numgains) { - fprintf(stderr, "Error getting tuner gains\n"); - free(gains); - return -1; - } - - if (Modes.gain == MODES_MAX_GAIN) { - int highest = -1; - int i; - - for (i = 0; i < numgains; ++i) { - if (gains[i] > highest) - highest = gains[i]; - } - - Modes.gain = highest; - fprintf(stderr, "Max available gain is: %.2f dB\n", Modes.gain/10.0); - } else { - int closest = -1; - int i; - - for (i = 0; i < numgains; ++i) { - if (closest == -1 || abs(gains[i] - Modes.gain) < abs(closest - Modes.gain)) - closest = gains[i]; - } - - if (closest != Modes.gain) { - Modes.gain = closest; - fprintf(stderr, "Closest available gain: %.2f dB\n", Modes.gain/10.0); - } - } - - free(gains); - - fprintf(stderr, "Setting gain to: %.2f dB\n", Modes.gain/10.0); - if (rtlsdr_set_tuner_gain(Modes.dev, Modes.gain) < 0) { - fprintf(stderr, "Error setting tuner gains\n"); - return -1; - } - } else { - fprintf(stderr, "Using automatic gain control.\n"); - } - rtlsdr_set_freq_correction(Modes.dev, Modes.ppm_error); - if (Modes.enable_agc) rtlsdr_set_agc_mode(Modes.dev, 1); - rtlsdr_set_center_freq(Modes.dev, Modes.freq); - rtlsdr_set_sample_rate(Modes.dev, (unsigned)Modes.sample_rate); - - rtlsdr_reset_buffer(Modes.dev); - fprintf(stderr, "Gain reported by device: %.2f dB\n", - rtlsdr_get_tuner_gain(Modes.dev)/10.0); - - return 0; -} // //========================================================================= // @@ -356,208 +226,6 @@ int modesInitRTLSDR(void) { // A Mutex is used to avoid races with the decoding thread. // -static struct timespec reader_thread_start; - -void rtlsdrCallback(unsigned char *buf, uint32_t len, void *ctx) { - struct mag_buf *outbuf; - struct mag_buf *lastbuf; - uint32_t slen; - unsigned next_free_buffer; - unsigned free_bufs; - unsigned block_duration; - - static int was_odd = 0; // paranoia!! - static int dropping = 0; - - MODES_NOTUSED(ctx); - - // Lock the data buffer variables before accessing them - pthread_mutex_lock(&Modes.data_mutex); - if (Modes.exit) { - rtlsdr_cancel_async(Modes.dev); // ask our caller to exit - } - - next_free_buffer = (Modes.first_free_buffer + 1) % MODES_MAG_BUFFERS; - outbuf = &Modes.mag_buffers[Modes.first_free_buffer]; - lastbuf = &Modes.mag_buffers[(Modes.first_free_buffer + MODES_MAG_BUFFERS - 1) % MODES_MAG_BUFFERS]; - free_bufs = (Modes.first_filled_buffer - next_free_buffer + MODES_MAG_BUFFERS) % MODES_MAG_BUFFERS; - - // Paranoia! Unlikely, but let's go for belt and suspenders here - - if (len != MODES_RTL_BUF_SIZE) { - fprintf(stderr, "weirdness: rtlsdr gave us a block with an unusual size (got %u bytes, expected %u bytes)\n", - (unsigned)len, (unsigned)MODES_RTL_BUF_SIZE); - - if (len > MODES_RTL_BUF_SIZE) { - // wat?! Discard the start. - unsigned discard = (len - MODES_RTL_BUF_SIZE + 1) / 2; - outbuf->dropped += discard; - buf += discard*2; - len -= discard*2; - } - } - - if (was_odd) { - // Drop a sample so we are in sync with I/Q samples again (hopefully) - ++buf; - --len; - ++outbuf->dropped; - } - - was_odd = (len & 1); - slen = len/2; - - if (free_bufs == 0 || (dropping && free_bufs < MODES_MAG_BUFFERS/2)) { - // FIFO is full. Drop this block. - dropping = 1; - outbuf->dropped += slen; - pthread_mutex_unlock(&Modes.data_mutex); - return; - } - - dropping = 0; - pthread_mutex_unlock(&Modes.data_mutex); - - // Compute the sample timestamp and system timestamp for the start of the block - outbuf->sampleTimestamp = lastbuf->sampleTimestamp + 12e6 * (lastbuf->length + outbuf->dropped) / Modes.sample_rate; - block_duration = 1e9 * slen / Modes.sample_rate; - - // Get the approx system time for the start of this block - clock_gettime(CLOCK_REALTIME, &outbuf->sysTimestamp); - outbuf->sysTimestamp.tv_nsec -= block_duration; - normalize_timespec(&outbuf->sysTimestamp); - - // Copy trailing data from last block (or reset if not valid) - if (outbuf->dropped == 0 && lastbuf->length >= Modes.trailing_samples) { - memcpy(outbuf->data, lastbuf->data + lastbuf->length - Modes.trailing_samples, Modes.trailing_samples * sizeof(uint16_t)); - } else { - memset(outbuf->data, 0, Modes.trailing_samples * sizeof(uint16_t)); - } - - // Convert the new data - outbuf->length = slen; - convert_samples(buf, &outbuf->data[Modes.trailing_samples], slen, &outbuf->mean_level, &outbuf->mean_power); - - // Push the new data to the demodulation thread - pthread_mutex_lock(&Modes.data_mutex); - - Modes.mag_buffers[next_free_buffer].dropped = 0; - Modes.mag_buffers[next_free_buffer].length = 0; // just in case - Modes.first_free_buffer = next_free_buffer; - - // accumulate CPU while holding the mutex, and restart measurement - end_cpu_timing(&reader_thread_start, &Modes.reader_cpu_accumulator); - start_cpu_timing(&reader_thread_start); - - pthread_cond_signal(&Modes.data_cond); - pthread_mutex_unlock(&Modes.data_mutex); -} -// -//========================================================================= -// -// This is used when --ifile is specified in order to read data from file -// instead of using an RTLSDR device -// -void readDataFromFile(void) { - int eof = 0; - struct timespec next_buffer_delivery; - void *readbuf; - int bytes_per_sample = 0; - - switch (Modes.input_format) { - case INPUT_UC8: - bytes_per_sample = 2; - break; - case INPUT_SC16: - case INPUT_SC16Q11: - bytes_per_sample = 4; - break; - } - - if (!(readbuf = malloc(MODES_MAG_BUF_SAMPLES * bytes_per_sample))) { - fprintf(stderr, "failed to allocate read buffer\n"); - exit(1); - } - - clock_gettime(CLOCK_MONOTONIC, &next_buffer_delivery); - - pthread_mutex_lock(&Modes.data_mutex); - while (!Modes.exit && !eof) { - ssize_t nread, toread; - void *r; - struct mag_buf *outbuf, *lastbuf; - unsigned next_free_buffer; - unsigned slen; - - next_free_buffer = (Modes.first_free_buffer + 1) % MODES_MAG_BUFFERS; - if (next_free_buffer == Modes.first_filled_buffer) { - // no space for output yet - pthread_cond_wait(&Modes.data_cond, &Modes.data_mutex); - continue; - } - - outbuf = &Modes.mag_buffers[Modes.first_free_buffer]; - lastbuf = &Modes.mag_buffers[(Modes.first_free_buffer + MODES_MAG_BUFFERS - 1) % MODES_MAG_BUFFERS]; - pthread_mutex_unlock(&Modes.data_mutex); - - // Compute the sample timestamp and system timestamp for the start of the block - outbuf->sampleTimestamp = lastbuf->sampleTimestamp + 12e6 * lastbuf->length / Modes.sample_rate; - - // Copy trailing data from last block (or reset if not valid) - if (lastbuf->length >= Modes.trailing_samples) { - memcpy(outbuf->data, lastbuf->data + lastbuf->length - Modes.trailing_samples, Modes.trailing_samples * sizeof(uint16_t)); - } else { - memset(outbuf->data, 0, Modes.trailing_samples * sizeof(uint16_t)); - } - - // Get the system time for the start of this block - clock_gettime(CLOCK_REALTIME, &outbuf->sysTimestamp); - - toread = MODES_MAG_BUF_SAMPLES * bytes_per_sample; - r = readbuf; - while (toread) { - nread = read(Modes.fd, r, toread); - if (nread <= 0) { - // Done. - eof = 1; - break; - } - r += nread; - toread -= nread; - } - - slen = outbuf->length = MODES_MAG_BUF_SAMPLES - toread/bytes_per_sample; - - // Convert the new data - convert_samples(readbuf, &outbuf->data[Modes.trailing_samples], slen, &outbuf->mean_level, &outbuf->mean_power); - - if (Modes.throttle) { - // Wait until we are allowed to release this buffer to the main thread - while (clock_nanosleep(CLOCK_MONOTONIC, TIMER_ABSTIME, &next_buffer_delivery, NULL) == EINTR) - ; - - // compute the time we can deliver the next buffer. - next_buffer_delivery.tv_nsec += outbuf->length * 1e9 / Modes.sample_rate; - normalize_timespec(&next_buffer_delivery); - } - - // Push the new data to the main thread - pthread_mutex_lock(&Modes.data_mutex); - Modes.first_free_buffer = next_free_buffer; - // accumulate CPU while holding the mutex, and restart measurement - end_cpu_timing(&reader_thread_start, &Modes.reader_cpu_accumulator); - start_cpu_timing(&reader_thread_start); - pthread_cond_signal(&Modes.data_cond); - } - - free(readbuf); - - // Wait for the main thread to consume all data - while (!Modes.exit && Modes.first_filled_buffer != Modes.first_free_buffer) - pthread_cond_wait(&Modes.data_cond, &Modes.data_mutex); - - pthread_mutex_unlock(&Modes.data_mutex); -} // //========================================================================= // @@ -565,36 +233,11 @@ void readDataFromFile(void) { // without caring about data acquisition // -void *readerThreadEntryPoint(void *arg) { +void *readerThreadEntryPoint(void *arg) +{ MODES_NOTUSED(arg); - start_cpu_timing(&reader_thread_start); // we accumulate in rtlsdrCallback() or readDataFromFile() - - if (Modes.filename == NULL) { - while (!Modes.exit) { - rtlsdr_read_async(Modes.dev, rtlsdrCallback, NULL, - MODES_RTL_BUFFERS, - MODES_RTL_BUF_SIZE); - - if (!Modes.exit) { - log_with_timestamp("Warning: lost the connection to the RTLSDR device."); - rtlsdr_close(Modes.dev); - Modes.dev = NULL; - - do { - sleep(5); - log_with_timestamp("Trying to reconnect to the RTLSDR device.."); - } while (!Modes.exit && modesInitRTLSDR() < 0); - } - } - - if (Modes.dev != NULL) { - rtlsdr_close(Modes.dev); - Modes.dev = NULL; - } - } else { - readDataFromFile(); - } + sdrRun(); // Wake the main thread (if it's still waiting) pthread_mutex_lock(&Modes.data_mutex); @@ -634,16 +277,18 @@ void snipMode(int level) { // void showHelp(void) { printf( -"-----------------------------------------------------------------------------\n" -"| dump1090 ModeS Receiver %45s |\n" -"-----------------------------------------------------------------------------\n" -"--device-index Select RTL device (default: 0)\n" + "-----------------------------------------------------------------------------\n" + "| dump1090 ModeS Receiver %45s |\n" + "-----------------------------------------------------------------------------\n", + MODES_DUMP1090_VARIANT " " MODES_DUMP1090_VERSION); + + sdrShowHelp(); + + printf( +" Common options\n" +"\n" "--gain Set gain (default: max gain. Use -10 for auto-gain)\n" -"--enable-agc Enable the Automatic Gain Control (default: off)\n" "--freq Set frequency (default: 1090 Mhz)\n" -"--ifile Read data from file (use '-' for stdin)\n" -"--iformat Sample format for --ifile: UC8 (default), SC16, or SC16Q11\n" -"--throttle When reading from a file, play back in realtime, not at max speed\n" "--interactive Interactive mode refreshing data on screen. Implies --throttle\n" "--interactive-ttl Remove from list if idle for (default: 60)\n" "--raw Show only messages hex values\n" @@ -683,12 +328,11 @@ void showHelp(void) { "--debug Debug mode (verbose), see README for details\n" "--quiet Disable output to stdout. Use for daemon applications\n" "--show-only Show only messages from the given ICAO on stdout\n" -"--ppm Set receiver error in parts per million (default 0)\n" "--html-dir Use as base directory for the internal HTTP server. Defaults to " HTMLPATH "\n" "--write-json Periodically write json output to (for serving by a separate webserver)\n" "--write-json-every Write json output every t seconds (default 1)\n" "--json-location-accuracy Accuracy of receiver location in json metadata: 0=no location, 1=approximate, 2=exact\n" -"--dcfilter Apply a 1Hz DC filter to input data (requires lots more CPU)\n" +"--dcfilter Apply a 1Hz DC filter to input data (requires more CPU)\n" "--help Show this help\n" "\n" "Debug mode flags: d = Log frames decoded with errors\n" @@ -697,8 +341,7 @@ void showHelp(void) { " C = Log frames with good CRC\n" " p = Log frames with bad preamble\n" " n = Log network debugging info\n" -" j = Log frames to frames.js, loadable by debug.html\n", -MODES_DUMP1090_VARIANT " " MODES_DUMP1090_VERSION +" j = Log frames to frames.js, loadable by debug.html\n" ); } @@ -815,68 +458,6 @@ void backgroundTasks(void) { // //========================================================================= // -int verbose_device_search(char *s) -{ - int i, device_count, device, offset; - char *s2; - char vendor[256], product[256], serial[256]; - device_count = rtlsdr_get_device_count(); - if (!device_count) { - fprintf(stderr, "No supported devices found.\n"); - return -1; - } - fprintf(stderr, "Found %d device(s):\n", device_count); - for (i = 0; i < device_count; i++) { - if (rtlsdr_get_device_usb_strings(i, vendor, product, serial) != 0) { - fprintf(stderr, " %d: unable to read device details\n", i); - } else { - fprintf(stderr, " %d: %s, %s, SN: %s\n", i, vendor, product, serial); - } - } - fprintf(stderr, "\n"); - /* does string look like raw id number */ - device = (int)strtol(s, &s2, 0); - if (s2[0] == '\0' && device >= 0 && device < device_count) { - fprintf(stderr, "Using device %d: %s\n", - device, rtlsdr_get_device_name((uint32_t)device)); - return device; - } - /* does string exact match a serial */ - for (i = 0; i < device_count; i++) { - rtlsdr_get_device_usb_strings(i, vendor, product, serial); - if (strcmp(s, serial) != 0) { - continue;} - device = i; - fprintf(stderr, "Using device %d: %s\n", - device, rtlsdr_get_device_name((uint32_t)device)); - return device; - } - /* does string prefix match a serial */ - for (i = 0; i < device_count; i++) { - rtlsdr_get_device_usb_strings(i, vendor, product, serial); - if (strncmp(s, serial, strlen(s)) != 0) { - continue;} - device = i; - fprintf(stderr, "Using device %d: %s\n", - device, rtlsdr_get_device_name((uint32_t)device)); - return device; - } - /* does string suffix match a serial */ - for (i = 0; i < device_count; i++) { - rtlsdr_get_device_usb_strings(i, vendor, product, serial); - offset = strlen(serial) - strlen(s); - if (offset < 0) { - continue;} - if (strncmp(s, serial+offset, strlen(s)) != 0) { - continue;} - device = i; - fprintf(stderr, "Using device %d: %s\n", - device, rtlsdr_get_device_name((uint32_t)device)); - return device; - } - fprintf(stderr, "No matching devices found.\n"); - return -1; -} // //========================================================================= // @@ -894,29 +475,12 @@ int main(int argc, char **argv) { for (j = 1; j < argc; j++) { int more = j+1 < argc; // There are more arguments - if (!strcmp(argv[j],"--device-index") && more) { + if (!strcmp(argv[j],"--freq") && more) { + Modes.freq = (int) strtoll(argv[++j],NULL,10); + } else if ( (!strcmp(argv[j], "--device") || !strcmp(argv[j], "--device-index")) && more) { Modes.dev_name = strdup(argv[++j]); } else if (!strcmp(argv[j],"--gain") && more) { Modes.gain = (int) (atof(argv[++j])*10); // Gain is in tens of DBs - } else if (!strcmp(argv[j],"--enable-agc")) { - Modes.enable_agc++; - } else if (!strcmp(argv[j],"--freq") && more) { - Modes.freq = (int) strtoll(argv[++j],NULL,10); - } else if (!strcmp(argv[j],"--ifile") && more) { - Modes.filename = strdup(argv[++j]); - } else if (!strcmp(argv[j],"--iformat") && more) { - ++j; - if (!strcasecmp(argv[j], "uc8")) { - Modes.input_format = INPUT_UC8; - } else if (!strcasecmp(argv[j], "sc16")) { - Modes.input_format = INPUT_SC16; - } else if (!strcasecmp(argv[j], "sc16q11")) { - Modes.input_format = INPUT_SC16Q11; - } else { - fprintf(stderr, "Input format '%s' not understood (supported values: UC8, SC16, SC16Q11)\n", - argv[j]); - exit(1); - } } else if (!strcmp(argv[j],"--dcfilter")) { Modes.dc_filter = 1; } else if (!strcmp(argv[j],"--measure-noise")) { @@ -942,7 +506,7 @@ int main(int argc, char **argv) { fprintf(stderr, "--net-beast ignored, use --net-bo-port to control where Beast output is generated\n"); } else if (!strcmp(argv[j],"--net-only")) { Modes.net = 1; - Modes.net_only = 1; + Modes.sdr_type = SDR_NONE; } else if (!strcmp(argv[j],"--net-heartbeat") && more) { Modes.net_heartbeat_interval = (uint64_t)(1000 * atof(argv[++j])); } else if (!strcmp(argv[j],"--net-ro-size") && more) { @@ -992,9 +556,7 @@ int main(int argc, char **argv) { fprintf(stderr, "warning: --aggressive not supported in this build, option ignored.\n"); #endif } else if (!strcmp(argv[j],"--interactive")) { - Modes.interactive = Modes.throttle = 1; - } else if (!strcmp(argv[j],"--throttle")) { - Modes.throttle = 1; + Modes.interactive = 1; } else if (!strcmp(argv[j],"--interactive-ttl") && more) { Modes.interactive_display_ttl = (uint64_t)(1000 * atof(argv[++j])); } else if (!strcmp(argv[j],"--lat") && more) { @@ -1034,8 +596,6 @@ int main(int argc, char **argv) { } else if (!strcmp(argv[j],"--help")) { showHelp(); exit(0); - } else if (!strcmp(argv[j],"--ppm") && more) { - Modes.ppm_error = atoi(argv[++j]); } else if (!strcmp(argv[j],"--quiet")) { Modes.quiet = 1; } else if (!strcmp(argv[j],"--show-only") && more) { @@ -1056,6 +616,8 @@ int main(int argc, char **argv) { } else if (!strcmp(argv[j], "--json-location-accuracy") && more) { Modes.json_location_accuracy = atoi(argv[++j]); #endif + } else if (sdrHandleOption(argc, argv, &j)) { + /* handled */ } else { fprintf(stderr, "Unknown or not enough arguments for option '%s'.\n\n", @@ -1074,27 +636,13 @@ int main(int argc, char **argv) { log_with_timestamp("%s %s starting up.", MODES_DUMP1090_VARIANT, MODES_DUMP1090_VERSION); modesInit(); - if (Modes.net_only) { - fprintf(stderr,"Net-only mode, no RTL device or file open.\n"); - } else if (Modes.filename == NULL) { - if (modesInitRTLSDR() < 0) { - exit(1); - } - } else { - if (Modes.filename[0] == '-' && Modes.filename[1] == '\0') { - Modes.fd = STDIN_FILENO; - } else if ((Modes.fd = open(Modes.filename, -#ifdef _WIN32 - (O_RDONLY | O_BINARY) -#else - (O_RDONLY) -#endif - )) == -1) { - perror("Opening data file"); - exit(1); - } + if (!sdrOpen()) { + exit(1); + } + + if (Modes.net) { + modesInitNet(); } - if (Modes.net) modesInitNet(); // init stats: Modes.stats_current.start = Modes.stats_current.end = @@ -1111,9 +659,11 @@ int main(int argc, char **argv) { writeJsonToFile("stats.json", generateStatsJson); writeJsonToFile("aircraft.json", generateAircraftJson); + interactiveInit(); + // If the user specifies --net-only, just run in order to serve network // clients without reading data from the RTL device - if (Modes.net_only) { + if (Modes.sdr_type == SDR_NONE) { while (!Modes.exit) { struct timespec start_time; @@ -1130,7 +680,7 @@ int main(int argc, char **argv) { pthread_mutex_lock(&Modes.data_mutex); pthread_create(&Modes.reader_thread, NULL, readerThreadEntryPoint, NULL); - while (Modes.exit == 0) { + while (!Modes.exit) { struct timespec start_time; if (Modes.first_free_buffer == Modes.first_filled_buffer) { @@ -1186,7 +736,7 @@ int main(int argc, char **argv) { // Nothing to process this time around. pthread_mutex_unlock(&Modes.data_mutex); if (--watchdogCounter <= 0) { - log_with_timestamp("No data received from the dongle for a long time, it may have wedged"); + log_with_timestamp("No data received from the SDR for a long time, it may have wedged"); watchdogCounter = 600; } } @@ -1213,9 +763,10 @@ int main(int argc, char **argv) { display_total_stats(); } - cleanup_converter(Modes.converter_state); log_with_timestamp("Normal exit."); + sdrClose(); + #ifndef _WIN32 pthread_exit(0); #else diff --git a/dump1090.h b/dump1090.h index a6490c5..5e89c11 100644 --- a/dump1090.h +++ b/dump1090.h @@ -65,6 +65,7 @@ #include #include #include + #include #include #include #include @@ -84,12 +85,8 @@ #include "compat/compat.h" -// Avoid a dependency on rtl-sdr except where it's really needed. -typedef struct rtlsdr_dev rtlsdr_dev_t; - // ============================= #defines =============================== -#define MODES_DEFAULT_PPM 52 #define MODES_DEFAULT_FREQ 1090000000 #define MODES_DEFAULT_WIDTH 1000 #define MODES_DEFAULT_HEIGHT 700 @@ -245,9 +242,14 @@ typedef enum { #include "cpr.h" #include "icao_filter.h" #include "convert.h" +#include "sdr.h" //======================== structure declarations ========================= +typedef enum { + SDR_NONE, SDR_IFILE, SDR_RTLSDR +} sdr_type_t; + // Structure representing one magnitude buffer struct mag_buf { uint16_t *data; // Magnitude data. Starts with Modes.trailing_samples worth of overlap from the previous block @@ -274,24 +276,17 @@ struct { // Internal state unsigned trailing_samples; // extra trailing samples in magnitude buffers double sample_rate; // actual sample rate in use (in hz) - int fd; // --ifile option file descriptor - input_format_t input_format; // --iformat option uint16_t *maglut; // I/Q -> Magnitude lookup table uint16_t *log10lut; // Magnitude -> log10 lookup table int exit; // Exit from the main loop when true // Sample conversion int dc_filter; // should we apply a DC filter? - iq_convert_fn converter_function; - struct converter_state *converter_state; // RTLSDR char * dev_name; int gain; - int enable_agc; - rtlsdr_dev_t *dev; int freq; - int ppm_error; // Networking char aneterr[ANET_ERR_LEN]; @@ -308,7 +303,7 @@ struct { // Internal state #endif // Configuration - char *filename; // Input form file, --ifile option + sdr_type_t sdr_type; // where are we getting data from? int nfix_crc; // Number of crc bit error(s) to correct int check_crc; // Only display messages with good CRC int raw; // Raw output format @@ -343,7 +338,6 @@ struct { // Internal state uint64_t json_interval; // Interval between rewriting the json aircraft file, in milliseconds; also the advertised map refresh interval char *html_dir; // Path to www base directory. int json_location_accuracy; // Accuracy of location metadata: 0=none, 1=approx, 2=exact - int throttle; // When reading from a file, throttle file playback to realtime? int json_aircraft_history_next; struct { diff --git a/sdr.c b/sdr.c new file mode 100644 index 0000000..41e8ea1 --- /dev/null +++ b/sdr.c @@ -0,0 +1,145 @@ +#include "dump1090.h" +#include "sdr.h" + +#define ENABLE_RTLSDR + +#include "sdr_ifile.h" +#ifdef ENABLE_RTLSDR +# include "sdr_rtlsdr.h" +#endif + +typedef struct { + const char *name; + sdr_type_t sdr_type; + void (*initConfig)(); + void (*showHelp)(); + bool (*handleOption)(int, char**, int*); + bool (*open)(); + void (*run)(); + void (*close)(); +} sdr_handler; + +static void noInitConfig() +{ +} + +static void noShowHelp() +{ +} + +static bool noHandleOption(int argc, char **argv, int *jptr) +{ + MODES_NOTUSED(argc); + MODES_NOTUSED(argv); + MODES_NOTUSED(jptr); + + return false; +} + +static bool noOpen() +{ + fprintf(stderr, "Net-only mode, no SDR device or file open.\n"); + return true; +} + +static void noRun() +{ +} + +static void noClose() +{ +} + +static bool unsupportedOpen() +{ + fprintf(stderr, "Support for this SDR type was not enabled in this build.\n"); + return false; +} + +static sdr_handler sdr_handlers[] = { +#ifdef ENABLE_RTLSDR + { "rtlsdr", SDR_RTLSDR, rtlsdrInitConfig, rtlsdrShowHelp, rtlsdrHandleOption, rtlsdrOpen, rtlsdrRun, rtlsdrClose }, +#endif + + { "ifile", SDR_IFILE, ifileInitConfig, ifileShowHelp, ifileHandleOption, ifileOpen, ifileRun, ifileClose }, + { "none", SDR_NONE, noInitConfig, noShowHelp, noHandleOption, noOpen, noRun, noClose }, + + { NULL, SDR_NONE, NULL, NULL, NULL, NULL, NULL, NULL } /* must come last */ +}; + +void sdrInitConfig() +{ + // Default SDR is the first type available in the handlers array. + Modes.sdr_type = sdr_handlers[0].sdr_type; + + for (int i = 0; sdr_handlers[i].name; ++i) { + sdr_handlers[i].initConfig(); + } +} + +void sdrShowHelp() +{ + printf("--device-type Select SDR type (default: %s)\n", sdr_handlers[0].name); + printf("\n"); + + for (int i = 0; sdr_handlers[i].name; ++i) { + sdr_handlers[i].showHelp(); + } +} + +bool sdrHandleOption(int argc, char **argv, int *jptr) +{ + int j = *jptr; + if (!strcmp(argv[j], "--device-type") && (j+1) < argc) { + ++j; + for (int i = 0; sdr_handlers[i].name; ++i) { + if (!strcasecmp(sdr_handlers[i].name, argv[j])) { + Modes.sdr_type = sdr_handlers[i].sdr_type; + *jptr = j; + return true; + } + } + + fprintf(stderr, "SDR type '%s' not recognized; supported SDR types are:\n", argv[j]); + for (int i = 0; sdr_handlers[i].name; ++i) { + fprintf(stderr, " %s\n", sdr_handlers[i].name); + } + + return false; + } + + for (int i = 0; sdr_handlers[i].name; ++i) { + if (sdr_handlers[i].handleOption(argc, argv, jptr)) + return true; + } + + return false; +} + +static sdr_handler *current_handler() +{ + static sdr_handler unsupported_handler = { "unsupported", SDR_NONE, noInitConfig, noShowHelp, noHandleOption, unsupportedOpen, noRun, noClose }; + + for (int i = 0; sdr_handlers[i].name; ++i) { + if (Modes.sdr_type == sdr_handlers[i].sdr_type) { + return &sdr_handlers[i]; + } + } + + return &unsupported_handler; +} + +bool sdrOpen() +{ + return current_handler()->open(); +} + +void sdrRun() +{ + return current_handler()->run(); +} + +void sdrClose() +{ + current_handler()->close(); +} diff --git a/sdr.h b/sdr.h new file mode 100644 index 0000000..b578446 --- /dev/null +++ b/sdr.h @@ -0,0 +1,13 @@ +#ifndef SDR_H +#define SDR_H + +// Common interface to different SDR inputs. + +void sdrInitConfig(); +void sdrShowHelp(); +bool sdrHandleOption(int argc, char **argv, int *jptr); +bool sdrOpen(); +void sdrRun(); +void sdrClose(); + +#endif diff --git a/sdr_ifile.c b/sdr_ifile.c new file mode 100644 index 0000000..42fee29 --- /dev/null +++ b/sdr_ifile.c @@ -0,0 +1,236 @@ +#include "dump1090.h" +#include "sdr_ifile.h" + +static struct { + const char *filename; + input_format_t input_format; + bool throttle; + + int fd; + unsigned bytes_per_sample; + void *readbuf; + iq_convert_fn converter; + struct converter_state *converter_state; +} ifile; + +void ifileInitConfig(void) +{ + ifile.filename = NULL; + ifile.input_format = INPUT_UC8; + ifile.throttle = false; + ifile.fd = -1; + ifile.bytes_per_sample = 0; + ifile.readbuf = NULL; + ifile.converter = NULL; + ifile.converter_state = NULL; +} + +void ifileShowHelp() +{ + printf(" ifile-specific options (use with --ifile)\n"); + printf("\n"); + printf("--ifile read samples from given file ('-' for stdin)\n"); + printf("--iformat set sample format (UC8, SC16, SC16Q11)\n"); + printf("--throttle process samples at the original capture speed\n"); + printf("\n"); +} + +bool ifileHandleOption(int argc, char **argv, int *jptr) +{ + int j = *jptr; + bool more = (j +1 < argc); + + if (!strcmp(argv[j], "--ifile") && more) { + // implies --device-type ifile + ifile.filename = strdup(argv[++j]); + Modes.sdr_type = SDR_IFILE; + } else if (!strcmp(argv[j],"--iformat") && more) { + ++j; + if (!strcasecmp(argv[j], "uc8")) { + ifile.input_format = INPUT_UC8; + } else if (!strcasecmp(argv[j], "sc16")) { + ifile.input_format = INPUT_SC16; + } else if (!strcasecmp(argv[j], "sc16q11")) { + ifile.input_format = INPUT_SC16Q11; + } else { + fprintf(stderr, "Input format '%s' not understood (supported values: UC8, SC16, SC16Q11)\n", + argv[j]); + return false; + } + } else if (!strcmp(argv[j],"--throttle")) { + ifile.throttle = true; + } else { + return false; + } + + *jptr = j; + return true; +} + +// +//========================================================================= +// +// This is used when --ifile is specified in order to read data from file +// instead of using an RTLSDR device +// +bool ifileOpen(void) +{ + if (!ifile.filename) { + fprintf(stderr, "SDR type 'ifile' requires an --ifile argument\n"); + return false; + } + + if (!strcmp(ifile.filename, "-")) { + ifile.fd = STDIN_FILENO; + } else if ((ifile.fd = open(ifile.filename, O_RDONLY)) < 0) { + fprintf(stderr, "ifile: could not open %s: %s\n", + ifile.filename, strerror(errno)); + return false; + } + + switch (ifile.input_format) { + case INPUT_UC8: + ifile.bytes_per_sample = 2; + break; + case INPUT_SC16: + case INPUT_SC16Q11: + ifile.bytes_per_sample = 4; + break; + default: + fprintf(stderr, "ifile: unhandled input format\n"); + ifileClose(); + return false; + } + + if (!(ifile.readbuf = malloc(MODES_MAG_BUF_SAMPLES * ifile.bytes_per_sample))) { + fprintf(stderr, "ifile: failed to allocate read buffer\n"); + ifileClose(); + return false; + } + + ifile.converter = init_converter(ifile.input_format, + Modes.sample_rate, + Modes.dc_filter, + &ifile.converter_state); + if (!ifile.converter) { + fprintf(stderr, "ifile: can't initialize sample converter\n"); + ifileClose(); + return false; + } + + return true; +} + +void ifileRun() +{ + if (ifile.fd < 0) + return; + + int eof = 0; + struct timespec next_buffer_delivery; + + struct timespec thread_cpu; + start_cpu_timing(&thread_cpu); + + uint64_t sampleCounter = 0; + + clock_gettime(CLOCK_MONOTONIC, &next_buffer_delivery); + + pthread_mutex_lock(&Modes.data_mutex); + while (!Modes.exit && !eof) { + ssize_t nread, toread; + void *r; + struct mag_buf *outbuf, *lastbuf; + unsigned next_free_buffer; + unsigned slen; + + next_free_buffer = (Modes.first_free_buffer + 1) % MODES_MAG_BUFFERS; + if (next_free_buffer == Modes.first_filled_buffer) { + // no space for output yet + pthread_cond_wait(&Modes.data_cond, &Modes.data_mutex); + continue; + } + + outbuf = &Modes.mag_buffers[Modes.first_free_buffer]; + lastbuf = &Modes.mag_buffers[(Modes.first_free_buffer + MODES_MAG_BUFFERS - 1) % MODES_MAG_BUFFERS]; + pthread_mutex_unlock(&Modes.data_mutex); + + // Compute the sample timestamp for the start of the block + outbuf->sampleTimestamp = sampleCounter * 12e6 / Modes.sample_rate; + sampleCounter += MODES_MAG_BUF_SAMPLES; + + // Copy trailing data from last block (or reset if not valid) + if (lastbuf->length >= Modes.trailing_samples) { + memcpy(outbuf->data, lastbuf->data + lastbuf->length, Modes.trailing_samples * sizeof(uint16_t)); + } else { + memset(outbuf->data, 0, Modes.trailing_samples * sizeof(uint16_t)); + } + + // Get the system time for the start of this block + clock_gettime(CLOCK_REALTIME, &outbuf->sysTimestamp); + + toread = MODES_MAG_BUF_SAMPLES * ifile.bytes_per_sample; + r = ifile.readbuf; + while (toread) { + nread = read(ifile.fd, r, toread); + if (nread <= 0) { + if (nread < 0) { + fprintf(stderr, "ifile: error reading input file: %s\n", strerror(errno)); + } + // Done. + eof = 1; + break; + } + r += nread; + toread -= nread; + } + + slen = outbuf->length = MODES_MAG_BUF_SAMPLES - toread / ifile.bytes_per_sample; + + // Convert the new data + ifile.converter(ifile.readbuf, &outbuf->data[Modes.trailing_samples], slen, ifile.converter_state, &outbuf->mean_level, &outbuf->mean_power); + + if (ifile.throttle || Modes.interactive) { + // Wait until we are allowed to release this buffer to the main thread + while (clock_nanosleep(CLOCK_MONOTONIC, TIMER_ABSTIME, &next_buffer_delivery, NULL) == EINTR) + ; + + // compute the time we can deliver the next buffer. + next_buffer_delivery.tv_nsec += outbuf->length * 1e9 / Modes.sample_rate; + normalize_timespec(&next_buffer_delivery); + } + + // Push the new data to the main thread + pthread_mutex_lock(&Modes.data_mutex); + Modes.first_free_buffer = next_free_buffer; + // accumulate CPU while holding the mutex, and restart measurement + end_cpu_timing(&thread_cpu, &Modes.reader_cpu_accumulator); + start_cpu_timing(&thread_cpu); + pthread_cond_signal(&Modes.data_cond); + } + + // Wait for the main thread to consume all data + while (!Modes.exit && Modes.first_filled_buffer != Modes.first_free_buffer) + pthread_cond_wait(&Modes.data_cond, &Modes.data_mutex); + + pthread_mutex_unlock(&Modes.data_mutex); +} + +void ifileClose() +{ + if (ifile.converter) { + cleanup_converter(ifile.converter_state); + ifile.converter = NULL; + ifile.converter_state = NULL; + } + + if (ifile.readbuf) { + free(ifile.readbuf); + ifile.readbuf = NULL; + } + + if (ifile.fd >= 0 && ifile.fd != STDIN_FILENO) { + close(ifile.fd); + ifile.fd = -1; + } +} diff --git a/sdr_ifile.h b/sdr_ifile.h new file mode 100644 index 0000000..63b97c9 --- /dev/null +++ b/sdr_ifile.h @@ -0,0 +1,13 @@ +#ifndef SDR_IFILE_H +#define SDR_IFILE_H + +// Pseudo-SDR that reads from a sample file + +void ifileInitConfig(); +void ifileShowHelp(); +bool ifileHandleOption(int argc, char **argv, int *jptr); +bool ifileOpen(); +void ifileRun(); +void ifileClose(); + +#endif diff --git a/sdr_rtlsdr.c b/sdr_rtlsdr.c new file mode 100644 index 0000000..9f73aca --- /dev/null +++ b/sdr_rtlsdr.c @@ -0,0 +1,335 @@ +#include "dump1090.h" +#include "sdr_rtlsdr.h" + +#include + +static struct { + rtlsdr_dev_t *dev; + bool digital_agc; + int ppm_error; + + iq_convert_fn converter; + struct converter_state *converter_state; +} RTLSDR; + +// +// =============================== RTLSDR handling ========================== +// + +void rtlsdrInitConfig() +{ + RTLSDR.dev = NULL; + RTLSDR.digital_agc = false; + RTLSDR.ppm_error = 0; + RTLSDR.converter = NULL; + RTLSDR.converter_state = NULL; +} + +static void show_rtlsdr_devices() +{ + int device_count = rtlsdr_get_device_count(); + fprintf(stderr, "rtlsdr: found %d device(s):\n", device_count); + for (int i = 0; i < device_count; i++) { + char vendor[256], product[256], serial[256]; + + if (rtlsdr_get_device_usb_strings(i, vendor, product, serial) != 0) { + fprintf(stderr, " %d: unable to read device details\n", i); + } else { + fprintf(stderr, " %d: %s, %s, SN: %s\n", i, vendor, product, serial); + } + } +} + +static int find_device_index(char *s) +{ + int device_count = rtlsdr_get_device_count(); + if (!device_count) { + return -1; + } + + /* does string look like raw id number */ + if (!strcmp(s, "0")) { + return 0; + } else if (s[0] != '0') { + char *s2; + int device = (int)strtol(s, &s2, 10); + if (s2[0] == '\0' && device >= 0 && device < device_count) { + return device; + } + } + + /* does string exact match a serial */ + for (int i = 0; i < device_count; i++) { + char serial[256]; + if (rtlsdr_get_device_usb_strings(i, NULL, NULL, serial) == 0 && !strcmp(s, serial)) { + return i; + } + } + + /* does string prefix match a serial */ + for (int i = 0; i < device_count; i++) { + char serial[256]; + if (rtlsdr_get_device_usb_strings(i, NULL, NULL, serial) == 0 && !strncmp(s, serial, strlen(s))) { + return i; + } + } + + /* does string suffix match a serial */ + for (int i = 0; i < device_count; i++) { + char serial[256]; + if (rtlsdr_get_device_usb_strings(i, NULL, NULL, serial) == 0 && strlen(s) < strlen(serial) && !strcmp(serial + strlen(serial) - strlen(s), s)) { + return i; + } + } + + return -1; +} + +void rtlsdrShowHelp() +{ + printf(" rtlsdr-specific options (use with --device-type rtlsdr)\n"); + printf("\n"); + printf("--device select device by index or serial number\n"); + printf("--enable-agc enable digital AGC (not tuner AGC!)\n"); + printf("--ppm set oscillator frequency correction in PPM\n"); + printf("\n"); +} + +bool rtlsdrHandleOption(int argc, char **argv, int *jptr) +{ + int j = *jptr; + bool more = (j +1 < argc); + + if (!strcmp(argv[j], "--enable-agc")) { + RTLSDR.digital_agc = true; + } else if (!strcmp(argv[j], "--ppm") && more) { + RTLSDR.ppm_error = atoi(argv[++j]); + } else { + return false; + } + + *jptr = j; + return true; +} + +bool rtlsdrOpen(void) { + if (!rtlsdr_get_device_count()) { + fprintf(stderr, "rtlsdr: no supported devices found.\n"); + return false; + } + + int dev_index = 0; + if (Modes.dev_name) { + if ((dev_index = find_device_index(Modes.dev_name)) < 0) { + fprintf(stderr, "rtlsdr: no device matching '%s' found.\n", Modes.dev_name); + show_rtlsdr_devices(); + return false; + } + } + + char manufacturer[256]; + char product[256]; + char serial[256]; + if (rtlsdr_get_device_usb_strings(dev_index, manufacturer, product, serial) < 0) { + fprintf(stderr, "rtlsdr: error querying device #%d: %s\n", dev_index, strerror(errno)); + return false; + } + + fprintf(stderr, "rtlsdr: using device #%d: %s (%s, %s, SN %s)\n", + dev_index, rtlsdr_get_device_name(dev_index), + manufacturer, product, serial); + + if (rtlsdr_open(&RTLSDR.dev, dev_index) < 0) { + fprintf(stderr, "rtlsdr: error opening the RTLSDR device: %s\n", + strerror(errno)); + return false; + } + + // Set gain, frequency, sample rate, and reset the device + if (Modes.gain == MODES_AUTO_GAIN) { + fprintf(stderr, "rtlsdr: enabling tuner AGC\n"); + rtlsdr_set_tuner_gain_mode(RTLSDR.dev, 1); + } else { + int *gains; + int numgains; + + numgains = rtlsdr_get_tuner_gains(RTLSDR.dev, NULL); + if (numgains <= 0) { + fprintf(stderr, "rtlsdr: error getting tuner gains\n"); + return false; + } + + gains = malloc(numgains * sizeof(int)); + if (rtlsdr_get_tuner_gains(RTLSDR.dev, gains) != numgains) { + fprintf(stderr, "rtlsdr: error getting tuner gains\n"); + free(gains); + return false; + } + + int target = (Modes.gain == MODES_MAX_GAIN ? 9999 : Modes.gain); + int closest = -1; + + for (int i = 0; i < numgains; ++i) { + if (closest == -1 || abs(gains[i] - target) < abs(gains[closest] - target)) + closest = i; + } + + free(gains); + + rtlsdr_set_tuner_gain(RTLSDR.dev, gains[closest]); + fprintf(stderr, "rtlsdr: tuner gain set to %.1f dB\n", + rtlsdr_get_tuner_gain(RTLSDR.dev)/10.0); + } + + if (RTLSDR.digital_agc) { + fprintf(stderr, "rtlsdr: enabling digital AGC\n"); + rtlsdr_set_agc_mode(RTLSDR.dev, 1); + } + + rtlsdr_set_freq_correction(RTLSDR.dev, RTLSDR.ppm_error); + rtlsdr_set_center_freq(RTLSDR.dev, Modes.freq); + rtlsdr_set_sample_rate(RTLSDR.dev, (unsigned)Modes.sample_rate); + + rtlsdr_reset_buffer(RTLSDR.dev); + + RTLSDR.converter = init_converter(INPUT_UC8, + Modes.sample_rate, + Modes.dc_filter, + &RTLSDR.converter_state); + if (!RTLSDR.converter) { + fprintf(stderr, "rtlsdr: can't initialize sample converter\n"); + rtlsdrClose(); + return false; + } + + return true; +} + +static struct timespec rtlsdr_thread_cpu; + +void rtlsdrCallback(unsigned char *buf, uint32_t len, void *ctx) { + struct mag_buf *outbuf; + struct mag_buf *lastbuf; + uint32_t slen; + unsigned next_free_buffer; + unsigned free_bufs; + unsigned block_duration; + + static int was_odd = 0; // paranoia!! + static int dropping = 0; + static uint64_t sampleCounter = 0; + + MODES_NOTUSED(ctx); + + // Lock the data buffer variables before accessing them + pthread_mutex_lock(&Modes.data_mutex); + if (Modes.exit) { + rtlsdr_cancel_async(RTLSDR.dev); // ask our caller to exit + } + + next_free_buffer = (Modes.first_free_buffer + 1) % MODES_MAG_BUFFERS; + outbuf = &Modes.mag_buffers[Modes.first_free_buffer]; + lastbuf = &Modes.mag_buffers[(Modes.first_free_buffer + MODES_MAG_BUFFERS - 1) % MODES_MAG_BUFFERS]; + free_bufs = (Modes.first_filled_buffer - next_free_buffer + MODES_MAG_BUFFERS) % MODES_MAG_BUFFERS; + + // Paranoia! Unlikely, but let's go for belt and suspenders here + + if (len != MODES_RTL_BUF_SIZE) { + fprintf(stderr, "weirdness: rtlsdr gave us a block with an unusual size (got %u bytes, expected %u bytes)\n", + (unsigned)len, (unsigned)MODES_RTL_BUF_SIZE); + + if (len > MODES_RTL_BUF_SIZE) { + // wat?! Discard the start. + unsigned discard = (len - MODES_RTL_BUF_SIZE + 1) / 2; + outbuf->dropped += discard; + buf += discard*2; + len -= discard*2; + } + } + + if (was_odd) { + // Drop a sample so we are in sync with I/Q samples again (hopefully) + ++buf; + --len; + ++outbuf->dropped; + } + + was_odd = (len & 1); + slen = len/2; + + if (free_bufs == 0 || (dropping && free_bufs < MODES_MAG_BUFFERS/2)) { + // FIFO is full. Drop this block. + dropping = 1; + outbuf->dropped += slen; + sampleCounter += slen; + pthread_mutex_unlock(&Modes.data_mutex); + return; + } + + dropping = 0; + pthread_mutex_unlock(&Modes.data_mutex); + + // Compute the sample timestamp and system timestamp for the start of the block + outbuf->sampleTimestamp = sampleCounter * 12e6 / Modes.sample_rate; + sampleCounter += slen; + block_duration = 1e9 * slen / Modes.sample_rate; + + // Get the approx system time for the start of this block + clock_gettime(CLOCK_REALTIME, &outbuf->sysTimestamp); + outbuf->sysTimestamp.tv_nsec -= block_duration; + normalize_timespec(&outbuf->sysTimestamp); + + // Copy trailing data from last block (or reset if not valid) + if (outbuf->dropped == 0) { + memcpy(outbuf->data, lastbuf->data + lastbuf->length, Modes.trailing_samples * sizeof(uint16_t)); + } else { + memset(outbuf->data, 0, Modes.trailing_samples * sizeof(uint16_t)); + } + + // Convert the new data + outbuf->length = slen; + RTLSDR.converter(buf, &outbuf->data[Modes.trailing_samples], slen, RTLSDR.converter_state, &outbuf->mean_level, &outbuf->mean_power); + + // Push the new data to the demodulation thread + pthread_mutex_lock(&Modes.data_mutex); + + Modes.mag_buffers[next_free_buffer].dropped = 0; + Modes.mag_buffers[next_free_buffer].length = 0; // just in case + Modes.first_free_buffer = next_free_buffer; + + // accumulate CPU while holding the mutex, and restart measurement + end_cpu_timing(&rtlsdr_thread_cpu, &Modes.reader_cpu_accumulator); + start_cpu_timing(&rtlsdr_thread_cpu); + + pthread_cond_signal(&Modes.data_cond); + pthread_mutex_unlock(&Modes.data_mutex); +} + +void rtlsdrRun() +{ + if (!RTLSDR.dev) { + return; + } + + start_cpu_timing(&rtlsdr_thread_cpu); + + while (!Modes.exit) { + rtlsdr_read_async(RTLSDR.dev, rtlsdrCallback, NULL, + /* MODES_RTL_BUFFERS */ 4, + MODES_RTL_BUF_SIZE); + } +} + +void rtlsdrClose() +{ + if (RTLSDR.dev) { + rtlsdr_close(RTLSDR.dev); + RTLSDR.dev = NULL; + } + + if (RTLSDR.converter) { + cleanup_converter(RTLSDR.converter_state); + RTLSDR.converter = NULL; + RTLSDR.converter_state = NULL; + } +} diff --git a/sdr_rtlsdr.h b/sdr_rtlsdr.h new file mode 100644 index 0000000..d83cac5 --- /dev/null +++ b/sdr_rtlsdr.h @@ -0,0 +1,13 @@ +#ifndef SDR_RTLSDR_H +#define SDR_RTLSDR_H + +// Support for DVB-T dongles in SDR mode via librtlsdr + +void rtlsdrInitConfig(); +void rtlsdrShowHelp(); +bool rtlsdrOpen(); +void rtlsdrRun(); +void rtlsdrClose(); +bool rtlsdrHandleOption(int argc, char **argv, int *jptr); + +#endif From 234beb0bc411404427180783429de1a9f726f5a8 Mon Sep 17 00:00:00 2001 From: Oliver Jowett Date: Mon, 30 Jan 2017 21:55:52 +0000 Subject: [PATCH 06/18] Version bump to 3.4.0~dev --- debian/changelog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/debian/changelog b/debian/changelog index eab6c6d..6a53738 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +dump1090-fa (3.4.0~dev) UNRELEASED; urgency=medium + + * In development + + -- Oliver Jowett Mon, 30 Jan 2017 21:55:42 +0000 + dump1090-fa (3.3.0) stable; urgency=medium * Improvements to the Mode A/C demodulator. From cf9e3005e86a21d49064a10877a0410b8c224d14 Mon Sep 17 00:00:00 2001 From: Oliver Jowett Date: Fri, 27 Jan 2017 17:44:42 +0000 Subject: [PATCH 07/18] Add a bladeRF SDR type. --- Makefile | 4 +- dump1090.h | 2 +- sdr.c | 8 + sdr_bladerf.c | 501 ++++++++++++++++++++++++++++++++++++++++++++++++++ sdr_bladerf.h | 13 ++ 5 files changed, 526 insertions(+), 2 deletions(-) create mode 100644 sdr_bladerf.c create mode 100644 sdr_bladerf.h diff --git a/Makefile b/Makefile index 3ef571d..7acf7cd 100644 --- a/Makefile +++ b/Makefile @@ -22,12 +22,14 @@ else LIBS_RTLSDR = -lrtlsdr -lusb-1.0 endif +LIBS_RTLSDR += -lbladeRF + all: dump1090 view1090 %.o: %.c *.h $(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@ -dump1090: dump1090.o anet.o interactive.o mode_ac.o mode_s.o net_io.o crc.o demod_2400.o stats.o cpr.o icao_filter.o track.o util.o convert.o sdr_ifile.o sdr_rtlsdr.o sdr.o $(COMPAT) +dump1090: dump1090.o anet.o interactive.o mode_ac.o mode_s.o net_io.o crc.o demod_2400.o stats.o cpr.o icao_filter.o track.o util.o convert.o sdr_ifile.o sdr_rtlsdr.o sdr_bladerf.o sdr.o $(COMPAT) $(CC) -g -o $@ $^ $(LDFLAGS) $(LIBS) $(LIBS_RTLSDR) -lncurses view1090: view1090.o anet.o interactive.o mode_ac.o mode_s.o net_io.o crc.o stats.o cpr.o icao_filter.o track.o util.o $(COMPAT) diff --git a/dump1090.h b/dump1090.h index 5e89c11..2b26a3e 100644 --- a/dump1090.h +++ b/dump1090.h @@ -247,7 +247,7 @@ typedef enum { //======================== structure declarations ========================= typedef enum { - SDR_NONE, SDR_IFILE, SDR_RTLSDR + SDR_NONE, SDR_IFILE, SDR_RTLSDR, SDR_BLADERF } sdr_type_t; // Structure representing one magnitude buffer diff --git a/sdr.c b/sdr.c index 41e8ea1..4bc45a3 100644 --- a/sdr.c +++ b/sdr.c @@ -2,11 +2,15 @@ #include "sdr.h" #define ENABLE_RTLSDR +#define ENABLE_BLADERF #include "sdr_ifile.h" #ifdef ENABLE_RTLSDR # include "sdr_rtlsdr.h" #endif +#ifdef ENABLE_BLADERF +# include "sdr_bladerf.h" +#endif typedef struct { const char *name; @@ -61,6 +65,10 @@ static sdr_handler sdr_handlers[] = { { "rtlsdr", SDR_RTLSDR, rtlsdrInitConfig, rtlsdrShowHelp, rtlsdrHandleOption, rtlsdrOpen, rtlsdrRun, rtlsdrClose }, #endif +#ifdef ENABLE_BLADERF + { "bladerf", SDR_BLADERF, bladeRFInitConfig, bladeRFShowHelp, bladeRFHandleOption, bladeRFOpen, bladeRFRun, bladeRFClose }, +#endif + { "ifile", SDR_IFILE, ifileInitConfig, ifileShowHelp, ifileHandleOption, ifileOpen, ifileRun, ifileClose }, { "none", SDR_NONE, noInitConfig, noShowHelp, noHandleOption, noOpen, noRun, noClose }, diff --git a/sdr_bladerf.c b/sdr_bladerf.c new file mode 100644 index 0000000..2d9b17d --- /dev/null +++ b/sdr_bladerf.c @@ -0,0 +1,501 @@ +// Part of dump1090, a Mode S message decoder for RTLSDR devices. +// +// bladerf.c: bladeRF support code +// + +#include "dump1090.h" +#include "sdr_bladerf.h" + +#include +#include + +static struct { + const char *device_str; + const char *fpga_path; + unsigned decimation; + bladerf_lpf_mode lpf_mode; + unsigned lpf_bandwidth; + + struct bladerf *device; + + iq_convert_fn converter; + struct converter_state *converter_state; + + unsigned block_size; +} BladeRF; + +void bladeRFInitConfig() +{ + BladeRF.device_str = NULL; + BladeRF.fpga_path = NULL; + BladeRF.decimation = 1; + BladeRF.lpf_mode = BLADERF_LPF_NORMAL; + BladeRF.lpf_bandwidth = 1750000; + BladeRF.device = NULL; +} + +bool bladeRFHandleOption(int argc, char **argv, int *jptr) +{ + int j = *jptr; + bool more = (j+1 < argc); + if (!strcmp(argv[j], "--bladerf-fpga") && more) { + BladeRF.fpga_path = strdup(argv[++j]); + } else if (!strcmp(argv[j], "--bladerf-decimation") && more) { + BladeRF.decimation = atoi(argv[++j]); + } else if (!strcmp(argv[j], "--bladerf-bandwidth") && more) { + ++j; + if (!strcasecmp(argv[j], "bypass")) { + BladeRF.lpf_mode = BLADERF_LPF_BYPASSED; + } else { + BladeRF.lpf_mode = BLADERF_LPF_NORMAL; + BladeRF.lpf_bandwidth = atoi(argv[j]); + } + } else { + return false; + } + + *jptr = j; + return true; +} + +void bladeRFShowHelp() +{ + printf(" bladeRF-specific options (use with --device-type bladerf)\n"); + printf("\n"); + printf("--device select device by bladeRF 'device identifier'\n"); + printf("--bladerf-fpga use alternative FPGA bitstream ('' to disable FPGA load)\n"); + printf("--bladerf-decimation assume FPGA decimates by a factor of N\n"); + printf("--bladerf-bandwidth set LPF bandwidth ('bypass' to bypass the LPF)\n"); + printf("\n"); +} + +static int lna_gain_db(bladerf_lna_gain gain) +{ + switch (gain) { + case BLADERF_LNA_GAIN_BYPASS: + return 0; + case BLADERF_LNA_GAIN_MID: + return BLADERF_LNA_GAIN_MID_DB; + case BLADERF_LNA_GAIN_MAX: + return BLADERF_LNA_GAIN_MAX_DB; + default: + return -1; + } +} + +static void show_config() +{ + int status; + + unsigned rate; + unsigned freq; + bladerf_lpf_mode lpf_mode; + unsigned lpf_bw; + bladerf_lna_gain lna_gain; + int rxvga1_gain; + int rxvga2_gain; + int16_t lms_dc_i, lms_dc_q; + int16_t fpga_phase, fpga_gain; + struct bladerf_lms_dc_cals dc_cals; + + if ((status = bladerf_get_sample_rate(BladeRF.device, BLADERF_MODULE_RX, &rate)) < 0 || + (status = bladerf_get_frequency(BladeRF.device, BLADERF_MODULE_RX, &freq)) < 0 || + (status = bladerf_get_lpf_mode(BladeRF.device, BLADERF_MODULE_RX, &lpf_mode)) < 0 || + (status = bladerf_get_bandwidth(BladeRF.device, BLADERF_MODULE_RX, &lpf_bw)) < 0 || + (status = bladerf_get_lna_gain(BladeRF.device, &lna_gain)) < 0 || + (status = bladerf_get_rxvga1(BladeRF.device, &rxvga1_gain)) < 0 || + (status = bladerf_get_rxvga2(BladeRF.device, &rxvga2_gain)) < 0 || + (status = bladerf_get_correction(BladeRF.device, BLADERF_MODULE_RX, BLADERF_CORR_LMS_DCOFF_I, &lms_dc_i)) < 0 || + (status = bladerf_get_correction(BladeRF.device, BLADERF_MODULE_RX, BLADERF_CORR_LMS_DCOFF_Q, &lms_dc_q)) < 0 || + (status = bladerf_get_correction(BladeRF.device, BLADERF_MODULE_RX, BLADERF_CORR_FPGA_PHASE, &fpga_phase)) < 0 || + (status = bladerf_get_correction(BladeRF.device, BLADERF_MODULE_RX, BLADERF_CORR_FPGA_GAIN, &fpga_gain)) < 0 || + (status = bladerf_lms_get_dc_cals(BladeRF.device, &dc_cals)) < 0) { + fprintf(stderr, "bladeRF: couldn't read back device configuration\n"); + return; + } + + fprintf(stderr, "bladeRF: sampling rate: %.1f MHz\n", rate/1e6); + fprintf(stderr, "bladeRF: frequency: %.1f MHz\n", freq/1e6); + fprintf(stderr, "bladeRF: LNA gain: %ddB\n", lna_gain_db(lna_gain)); + fprintf(stderr, "bladeRF: RXVGA1 gain: %ddB\n", rxvga1_gain); + fprintf(stderr, "bladeRF: RXVGA2 gain: %ddB\n", rxvga2_gain); + + switch (lpf_mode) { + case BLADERF_LPF_NORMAL: + fprintf(stderr, "bladeRF: LPF bandwidth: %.2f MHz\n", lpf_bw/1e6); + break; + case BLADERF_LPF_BYPASSED: + fprintf(stderr, "bladeRF: LPF bypassed\n"); + break; + case BLADERF_LPF_DISABLED: + fprintf(stderr, "bladeRF: LPF disabled\n"); + break; + default: + fprintf(stderr, "bladeRF: LPF in unknown state\n"); + break; + } + + fprintf(stderr, "bladeRF: calibration settings:\n"); + fprintf(stderr, " LMS DC adjust: I=%d Q=%d\n", lms_dc_i, lms_dc_q); + fprintf(stderr, " FPGA phase adjust: %+.3f degrees\n", fpga_phase * 10.0 / 4096); + fprintf(stderr, " FPGA gain adjust: %+.3f\n", fpga_gain * 1.0 / 4096); + fprintf(stderr, " LMS LPF tuning: %d\n", dc_cals.lpf_tuning); + fprintf(stderr, " LMS RX LPF filter: I=%d Q=%d\n", dc_cals.rx_lpf_i, dc_cals.rx_lpf_q); + fprintf(stderr, " LMS RXVGA2 DC ref: %d\n", dc_cals.dc_ref); + fprintf(stderr, " LMS RXVGA2A: I=%d Q=%d\n", dc_cals.rxvga2a_i, dc_cals.rxvga2a_q); + fprintf(stderr, " LMS RXVGA2B: I=%d Q=%d\n", dc_cals.rxvga2b_i, dc_cals.rxvga2b_q); + +} + +bool bladeRFOpen() +{ + if (BladeRF.device) { + return true; + } + + int status; + + bladerf_set_usb_reset_on_open(true); + if ((status = bladerf_open(&BladeRF.device, Modes.dev_name)) < 0) { + fprintf(stderr, "Failed to open bladeRF: %s\n", bladerf_strerror(status)); + goto error; + } + + const char *fpga_path; + if (BladeRF.fpga_path) { + fpga_path = BladeRF.fpga_path; + } else { + bladerf_fpga_size size; + if ((status = bladerf_get_fpga_size(BladeRF.device, &size)) < 0) { + fprintf(stderr, "bladerf_get_fpga_size failed: %s\n", bladerf_strerror(status)); + goto error; + } + + switch (size) { + case BLADERF_FPGA_40KLE: + fpga_path = "/usr/share/Nuand/bladeRF/hostedx40.rbf"; + break; + case BLADERF_FPGA_115KLE: + fpga_path = "/usr/share/Nuand/bladeRF/hostedx115.rbf"; + break; + default: + fprintf(stderr, "bladeRF: unknown FPGA size, skipping FPGA load"); + fpga_path = NULL; + break; + } + } + + if (fpga_path && fpga_path[0]) { + fprintf(stderr, "bladeRF: loading FPGA bitstream from %s\n", fpga_path); + if ((status = bladerf_load_fpga(BladeRF.device, fpga_path)) < 0) { + fprintf(stderr, "bladerf_load_fpga() failed: %s\n", bladerf_strerror(status)); + goto error; + } + } + + switch (bladerf_device_speed(BladeRF.device)) { + case BLADERF_DEVICE_SPEED_HIGH: + BladeRF.block_size = 1024; + break; + case BLADERF_DEVICE_SPEED_SUPER: + BladeRF.block_size = 2048; + break; + default: + fprintf(stderr, "couldn't determine bladerf device speed\n"); + goto error; + } + + if ((status = bladerf_set_sample_rate(BladeRF.device, BLADERF_MODULE_RX, Modes.sample_rate * BladeRF.decimation, NULL)) < 0) { + fprintf(stderr, "bladerf_set_sample_rate failed: %s\n", bladerf_strerror(status)); + goto error; + } + + if ((status = bladerf_set_frequency(BladeRF.device, BLADERF_MODULE_RX, Modes.freq)) < 0) { + fprintf(stderr, "bladerf_set_frequency failed: %s\n", bladerf_strerror(status)); + goto error; + } + + if ((status = bladerf_set_lpf_mode(BladeRF.device, BLADERF_MODULE_RX, BladeRF.lpf_mode)) < 0) { + fprintf(stderr, "bladerf_set_lpf_mode failed: %s\n", bladerf_strerror(status)); + goto error; + } + + if ((status = bladerf_set_bandwidth(BladeRF.device, BLADERF_MODULE_RX, BladeRF.lpf_bandwidth, NULL)) < 0) { + fprintf(stderr, "bladerf_set_lpf_bandwidth failed: %s\n", bladerf_strerror(status)); + goto error; + } + + /* turn the tx gain right off, just in case */ + if ((status = bladerf_set_gain(BladeRF.device, BLADERF_MODULE_TX, -100)) < 0) { + fprintf(stderr, "bladerf_set_gain(TX) failed: %s\n", bladerf_strerror(status)); + goto error; + } + + if ((status = bladerf_set_gain(BladeRF.device, BLADERF_MODULE_RX, Modes.gain / 10.0)) < 0) { + fprintf(stderr, "bladerf_set_gain(RX) failed: %s\n", bladerf_strerror(status)); + goto error; + } + + if ((status = bladerf_set_loopback(BladeRF.device, BLADERF_LB_NONE)) < 0) { + fprintf(stderr, "bladerf_set_loopback() failed: %s\n", bladerf_strerror(status)); + goto error; + } + + if ((status = bladerf_calibrate_dc(BladeRF.device, BLADERF_DC_CAL_LPF_TUNING)) < 0) { + fprintf(stderr, "bladerf_calibrate_dc(LPF_TUNING) failed: %s\n", bladerf_strerror(status)); + goto error; + } + + if ((status = bladerf_calibrate_dc(BladeRF.device, BLADERF_DC_CAL_RX_LPF)) < 0) { + fprintf(stderr, "bladerf_calibrate_dc(RX_LPF) failed: %s\n", bladerf_strerror(status)); + goto error; + } + + if ((status = bladerf_calibrate_dc(BladeRF.device, BLADERF_DC_CAL_RXVGA2)) < 0) { + fprintf(stderr, "bladerf_calibrate_dc(RXVGA2) failed: %s\n", bladerf_strerror(status)); + goto error; + } + + show_config(); + + BladeRF.converter = init_converter(INPUT_SC16Q11, + Modes.sample_rate, + Modes.dc_filter, + &BladeRF.converter_state); + if (!BladeRF.converter) { + fprintf(stderr, "can't initialize sample converter\n"); + goto error; + } + + return true; + + error: + if (BladeRF.device) { + bladerf_close(BladeRF.device); + BladeRF.device = NULL; + } + return false; +} + +static struct timespec thread_cpu; +static unsigned timeouts = 0; + +static void *handle_bladerf_samples(struct bladerf *dev, + struct bladerf_stream *stream, + struct bladerf_metadata *meta, + void *samples, + size_t num_samples, + void *user_data) +{ + static uint64_t nextTimestamp = 0; + static bool dropping = false; + + MODES_NOTUSED(dev); + MODES_NOTUSED(stream); + MODES_NOTUSED(meta); + MODES_NOTUSED(user_data); + MODES_NOTUSED(num_samples); + + // record initial time for later sys timestamp calculation + struct timespec entryTimestamp; + clock_gettime(CLOCK_REALTIME, &entryTimestamp); + + pthread_mutex_lock(&Modes.data_mutex); + if (Modes.exit) { + pthread_mutex_unlock(&Modes.data_mutex); + return BLADERF_STREAM_SHUTDOWN; + } + + unsigned next_free_buffer = (Modes.first_free_buffer + 1) % MODES_MAG_BUFFERS; + struct mag_buf *outbuf = &Modes.mag_buffers[Modes.first_free_buffer]; + struct mag_buf *lastbuf = &Modes.mag_buffers[(Modes.first_free_buffer + MODES_MAG_BUFFERS - 1) % MODES_MAG_BUFFERS]; + unsigned free_bufs = (Modes.first_filled_buffer - next_free_buffer + MODES_MAG_BUFFERS) % MODES_MAG_BUFFERS; + + if (free_bufs == 0 || (dropping && free_bufs < MODES_MAG_BUFFERS/2)) { + // FIFO is full. Drop this block. + dropping = true; + pthread_mutex_unlock(&Modes.data_mutex); + return samples; + } + + dropping = false; + pthread_mutex_unlock(&Modes.data_mutex); + + // Copy trailing data from last block (or reset if not valid) + if (outbuf->dropped == 0) { + memcpy(outbuf->data, lastbuf->data + lastbuf->length, Modes.trailing_samples * sizeof(uint16_t)); + } else { + memset(outbuf->data, 0, Modes.trailing_samples * sizeof(uint16_t)); + } + + // start handling metadata blocks + outbuf->dropped = 0; + outbuf->length = 0; + outbuf->mean_level = outbuf->mean_power = 0; + + unsigned blocks_processed = 0; + unsigned samples_per_block = (BladeRF.block_size - 16) / 4; + + static bool overrun = true; // ignore initial overruns as we get up to speed + static bool first_buffer = true; + for (unsigned offset = 0; offset < MODES_MAG_BUF_SAMPLES * 4; offset += BladeRF.block_size) { + // read the next metadata header + uint8_t *header = ((uint8_t*)samples) + offset; + uint64_t metadata_magic = le32toh(*(uint32_t*)(header)); + uint64_t metadata_timestamp = le64toh(*(uint64_t*)(header + 4)); + uint32_t metadata_flags = le32toh(*(uint32_t*)(header + 12)); + void *sample_data = header + 16; + + if (metadata_magic != 0x12344321) { + // first buffer is often in the wrong mode + if (!first_buffer) { + fprintf(stderr, "bladeRF: wrong metadata header magic value, skipping rest of buffer\n"); + } + break; + } + + if (metadata_flags & BLADERF_META_STATUS_OVERRUN) { + if (!overrun) { + fprintf(stderr, "bladeRF: receive overrun\n"); + } + overrun = true; + } else { + overrun = false; + } + +#ifndef BROKEN_FPGA_METADATA + // this needs a fixed decimating FPGA image that handles the timestamp correctly + if (nextTimestamp && nextTimestamp != metadata_timestamp) { + // dropped data or lost sync. start again. + if (metadata_timestamp > nextTimestamp) + outbuf->dropped += (metadata_timestamp - nextTimestamp); + outbuf->dropped += outbuf->length; + outbuf->length = 0; + blocks_processed = 0; + outbuf->mean_level = outbuf->mean_power = 0; + nextTimestamp = metadata_timestamp; + } +#else + MODES_NOTUSED(metadata_timestamp); +#endif + + if (!blocks_processed) { + // Compute the sample timestamp for the start of the block + outbuf->sampleTimestamp = nextTimestamp * 12e6 / Modes.sample_rate / BladeRF.decimation; + } + + // Convert a block of data + double mean_level, mean_power; + BladeRF.converter(sample_data, &outbuf->data[Modes.trailing_samples + outbuf->length], samples_per_block, BladeRF.converter_state, &mean_level, &mean_power); + outbuf->length += samples_per_block; + outbuf->mean_level += mean_level; + outbuf->mean_power += mean_power; + nextTimestamp += samples_per_block * BladeRF.decimation; + ++blocks_processed; + timeouts = 0; + } + + first_buffer = false; + + if (blocks_processed) { + // Get the approx system time for the start of this block + unsigned block_duration = 1e9 * outbuf->length / Modes.sample_rate; + outbuf->sysTimestamp = entryTimestamp; + outbuf->sysTimestamp.tv_nsec -= block_duration; + normalize_timespec(&outbuf->sysTimestamp); + + outbuf->mean_level /= blocks_processed; + outbuf->mean_power /= blocks_processed; + + // Push the new data to the demodulation thread + pthread_mutex_lock(&Modes.data_mutex); + + // accumulate CPU while holding the mutex, and restart measurement + end_cpu_timing(&thread_cpu, &Modes.reader_cpu_accumulator); + start_cpu_timing(&thread_cpu); + + Modes.mag_buffers[next_free_buffer].dropped = 0; + Modes.mag_buffers[next_free_buffer].length = 0; // just in case + Modes.first_free_buffer = next_free_buffer; + + pthread_cond_signal(&Modes.data_cond); + pthread_mutex_unlock(&Modes.data_mutex); + } + + return samples; +} + + +void bladeRFRun() +{ + if (!BladeRF.device) { + return; + } + + unsigned transfers = 7; + + int status; + struct bladerf_stream *stream = NULL; + void **buffers = NULL; + + if ((status = bladerf_init_stream(&stream, + BladeRF.device, + handle_bladerf_samples, + &buffers, + /* num_buffers */ transfers, + BLADERF_FORMAT_SC16_Q11_META, + /* samples_per_buffer */ MODES_MAG_BUF_SAMPLES, + /* num_transfers */ transfers, + /* user_data */ NULL)) < 0) { + fprintf(stderr, "bladerf_init_stream() failed: %s\n", bladerf_strerror(status)); + goto out; + } + + unsigned ms_per_transfer = 1000 * MODES_MAG_BUF_SAMPLES / Modes.sample_rate; + if ((status = bladerf_set_stream_timeout(BladeRF.device, BLADERF_MODULE_RX, ms_per_transfer * (transfers + 2))) < 0) { + fprintf(stderr, "bladerf_set_stream_timeout() failed: %s\n", bladerf_strerror(status)); + goto out; + } + + if ((status = bladerf_enable_module(BladeRF.device, BLADERF_MODULE_RX, true) < 0)) { + fprintf(stderr, "bladerf_enable_module(RX, true) failed: %s\n", bladerf_strerror(status)); + goto out; + } + + start_cpu_timing(&thread_cpu); + + timeouts = 0; // reset to zero when we get a callback with some data + retry: + if ((status = bladerf_stream(stream, BLADERF_MODULE_RX)) < 0) { + fprintf(stderr, "bladerf_stream() failed: %s\n", bladerf_strerror(status)); + if (status == BLADERF_ERR_TIMEOUT) { + if (++timeouts < 5) + goto retry; + fprintf(stderr, "bladerf is wedged, giving up.\n"); + } + goto out; + } + + out: + if ((status = bladerf_enable_module(BladeRF.device, BLADERF_MODULE_RX, false) < 0)) { + fprintf(stderr, "bladerf_enable_module(RX, false) failed: %s\n", bladerf_strerror(status)); + } + + if (stream) { + bladerf_deinit_stream(stream); + } +} + +void bladeRFClose() +{ + if (BladeRF.converter) { + cleanup_converter(BladeRF.converter_state); + BladeRF.converter = NULL; + BladeRF.converter_state = NULL; + } + + if (BladeRF.device) { + bladerf_close(BladeRF.device); + BladeRF.device = NULL; + } +} diff --git a/sdr_bladerf.h b/sdr_bladerf.h new file mode 100644 index 0000000..c35f9e6 --- /dev/null +++ b/sdr_bladerf.h @@ -0,0 +1,13 @@ +#ifndef BLADERF_H +#define BLADERF_H + +// Support for the Nuand bladeRF SDR + +void bladeRFInitConfig(); +void bladeRFShowHelp(); +bool bladeRFHandleOption(int argc, char **argv, int *jptr); +bool bladeRFOpen(); +void bladeRFRun(); +void bladeRFClose(); + +#endif From bad821f5ded181b51895e21445b8ab72497e8c8f Mon Sep 17 00:00:00 2001 From: Oliver Jowett Date: Sun, 29 Jan 2017 17:15:26 +0000 Subject: [PATCH 08/18] Add a benchmarker for the sample converters. --- Makefile | 8 ++++- convert_benchmark.c | 88 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 convert_benchmark.c diff --git a/Makefile b/Makefile index 7acf7cd..942042e 100644 --- a/Makefile +++ b/Makefile @@ -39,7 +39,7 @@ faup1090: faup1090.o anet.o mode_ac.o mode_s.o net_io.o crc.o stats.o cpr.o icao $(CC) -g -o $@ $^ $(LDFLAGS) $(LIBS) clean: - rm -f *.o compat/clock_gettime/*.o compat/clock_nanosleep/*.o dump1090 view1090 faup1090 cprtests crctests + rm -f *.o compat/clock_gettime/*.o compat/clock_nanosleep/*.o dump1090 view1090 faup1090 cprtests crctests convert_benchmark test: cprtests ./cprtests @@ -49,3 +49,9 @@ cprtests: cpr.o cprtests.o crctests: crc.c crc.h $(CC) $(CPPFLAGS) $(CFLAGS) -g -DCRCDEBUG -o $@ $< + +benchmarks: convert_benchmark + ./convert_benchmark + +convert_benchmark: convert_benchmark.o convert.o util.o + $(CC) $(CPPFLAGS) $(CFLAGS) -g -o $@ $^ -lm diff --git a/convert_benchmark.c b/convert_benchmark.c new file mode 100644 index 0000000..0348b81 --- /dev/null +++ b/convert_benchmark.c @@ -0,0 +1,88 @@ +#include "dump1090.h" + +static uint8_t *testdata_uc8; +static uint16_t *testdata_sc16; +static uint16_t *testdata_sc16q11; +static uint16_t *outdata; + +void prepare() +{ + srand(1); + + testdata_uc8 = calloc(MODES_MAG_BUF_SAMPLES, 2); + testdata_sc16 = calloc(MODES_MAG_BUF_SAMPLES, 4); + testdata_sc16q11 = calloc(MODES_MAG_BUF_SAMPLES, 4); + outdata = calloc(MODES_MAG_BUF_SAMPLES, sizeof(uint16_t)); + + for (unsigned i = 0; i < MODES_MAG_BUF_SAMPLES; ++i) { + double I = 2.0 * rand() / (RAND_MAX + 1.0) - 1.0; + double Q = 2.0 * rand() / (RAND_MAX + 1.0) - 1.0; + + testdata_uc8[i*2] = (uint8_t) (I * 128 + 128); + testdata_uc8[i*2+1] = (uint8_t) (Q * 128 + 128); + + testdata_sc16[i*2] = htole16( (int16_t) (I * 32768.0) ); + testdata_sc16[i*2+1] = htole16( (int16_t) (Q * 32768.0) ); + + testdata_sc16q11[i*2] = htole16( (int16_t) (I * 2048.0) ); + testdata_sc16q11[i*2+1] = htole16( (int16_t) (Q * 2048.0) ); + } +} + +void test(const char *what, input_format_t format, void *data, double sample_rate, bool filter_dc) { + fprintf(stderr, "Benchmarking: %s ", what); + + struct converter_state *state; + iq_convert_fn converter = init_converter(format, sample_rate, filter_dc, &state); + if (!converter) { + fprintf(stderr, "Can't initialize converter\n"); + return; + } + + struct timespec total = { 0, 0 }; + int iterations = 0; + + // Run it once to force init. + converter(data, outdata, MODES_MAG_BUF_SAMPLES, state, NULL, NULL); + + while (total.tv_sec < 5) { + fprintf(stderr, "."); + + struct timespec start; + start_cpu_timing(&start); + + for (int i = 0; i < 10; ++i) { + converter(data, outdata, MODES_MAG_BUF_SAMPLES, state, NULL, NULL); + } + + end_cpu_timing(&start, &total); + iterations++; + } + + fprintf(stderr, "\n"); + cleanup_converter(state); + + double samples = 10.0 * iterations * MODES_MAG_BUF_SAMPLES; + double nanos = total.tv_sec * 1e9 + total.tv_nsec; + fprintf(stderr, " %.2fM samples in %.6f seconds\n", + samples / 1e6, nanos / 1e9); + fprintf(stderr, " %.2fM samples/second\n", + samples / nanos * 1e3); +} + +int main(int argc, char **argv) +{ + MODES_NOTUSED(argc); + MODES_NOTUSED(argv); + + prepare(); + + test("SC16Q11, DC", INPUT_SC16Q11, testdata_sc16q11, 2400000, true); + test("SC16Q11, no DC", INPUT_SC16Q11, testdata_sc16q11, 2400000, false); + + test("UC8, DC", INPUT_UC8, testdata_uc8, 2400000, true); + test("UC8, no DC", INPUT_UC8, testdata_uc8, 2400000, false); + + test("SC16, DC", INPUT_SC16, testdata_sc16, 2400000, true); + test("SC16, no DC", INPUT_SC16, testdata_sc16, 2400000, false); +} From 8a41bcb7303de81e8d0d6370b3139a5ed2c8a2d5 Mon Sep 17 00:00:00 2001 From: Oliver Jowett Date: Sun, 29 Jan 2017 17:37:21 +0000 Subject: [PATCH 09/18] Fix up end_cpu_timing (seems to break on Pi 1s otherwise) --- util.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/util.c b/util.c index 5168851..3711237 100644 --- a/util.c +++ b/util.c @@ -91,8 +91,7 @@ void end_cpu_timing(const struct timespec *start_time, struct timespec *add_to) { struct timespec end_time; clock_gettime(CLOCK_THREAD_CPUTIME_ID, &end_time); - add_to->tv_sec += (end_time.tv_sec - start_time->tv_sec - 1); - add_to->tv_nsec += (1000000000L + end_time.tv_nsec - start_time->tv_nsec); - add_to->tv_sec += add_to->tv_nsec / 1000000000L; - add_to->tv_nsec = add_to->tv_nsec % 1000000000L; + add_to->tv_sec += end_time.tv_sec - start_time->tv_sec; + add_to->tv_nsec += end_time.tv_nsec - start_time->tv_nsec; + normalize_timespec(add_to); } From 417cda7061ceb50e9dc1d1e4be702f0026071e53 Mon Sep 17 00:00:00 2001 From: Oliver Jowett Date: Fri, 27 Jan 2017 21:58:12 +0000 Subject: [PATCH 10/18] Make SC16Q11-nodc conversions table-based for speed. Add a mechanism for converters to initialize tables on demand. Move UC8 table setup to the new lazy-setup path. Fix uc8 lookup table allocation size. --- convert.c | 243 ++++++++++++++++++++++++++++++++++---------- convert_benchmark.c | 76 ++++++++++---- dump1090.c | 20 +--- dump1090.h | 1 - 4 files changed, 252 insertions(+), 88 deletions(-) diff --git a/convert.c b/convert.c index 06b753a..fc2a7ae 100644 --- a/convert.c +++ b/convert.c @@ -26,6 +26,36 @@ struct converter_state { float z1_Q; }; +static uint16_t *uc8_lookup; +static bool init_uc8_lookup() +{ + if (uc8_lookup) + return true; + + uc8_lookup = malloc(sizeof(uint16_t) * 256 * 256); + if (!uc8_lookup) { + fprintf(stderr, "can't allocate UC8 conversion lookup table\n"); + return false; + } + + for (int i = 0; i <= 255; i++) { + for (int q = 0; q <= 255; q++) { + float fI, fQ, magsq; + + fI = (i - 127.5) / 127.5; + fQ = (q - 127.5) / 127.5; + magsq = fI * fI + fQ * fQ; + if (magsq > 1) + magsq = 1; + float mag = sqrtf(magsq); + + uc8_lookup[le16toh((i*256)+q)] = (uint16_t) (mag * 65535.0f + 0.5f); + } + } + + return true; +} + static void convert_uc8_nodc(void *iq_data, uint16_t *mag_data, unsigned nsamples, @@ -42,55 +72,33 @@ static void convert_uc8_nodc(void *iq_data, MODES_NOTUSED(state); // unroll this a bit + +#define DO_ONE_SAMPLE \ + do { \ + mag = uc8_lookup[*in++]; \ + *mag_data++ = mag; \ + sum_level += mag; \ + sum_power += (uint32_t)mag * (uint32_t)mag; \ + } while(0) + + // unroll this a bit for (i = 0; i < (nsamples>>3); ++i) { - mag = Modes.maglut[*in++]; - *mag_data++ = mag; - sum_level += mag; - sum_power += (uint32_t)mag * (uint32_t)mag; - - mag = Modes.maglut[*in++]; - *mag_data++ = mag; - sum_level += mag; - sum_power += (uint32_t)mag * (uint32_t)mag; - - mag = Modes.maglut[*in++]; - *mag_data++ = mag; - sum_level += mag; - sum_power += (uint32_t)mag * (uint32_t)mag; - - mag = Modes.maglut[*in++]; - *mag_data++ = mag; - sum_level += mag; - sum_power += (uint32_t)mag * (uint32_t)mag; - - mag = Modes.maglut[*in++]; - *mag_data++ = mag; - sum_level += mag; - sum_power += (uint32_t)mag * (uint32_t)mag; - - mag = Modes.maglut[*in++]; - *mag_data++ = mag; - sum_level += mag; - sum_power += (uint32_t)mag * (uint32_t)mag; - - mag = Modes.maglut[*in++]; - *mag_data++ = mag; - sum_level += mag; - sum_power += (uint32_t)mag * (uint32_t)mag; - - mag = Modes.maglut[*in++]; - *mag_data++ = mag; - sum_level += mag; - sum_power += (uint32_t)mag * (uint32_t)mag; + DO_ONE_SAMPLE; + DO_ONE_SAMPLE; + DO_ONE_SAMPLE; + DO_ONE_SAMPLE; + DO_ONE_SAMPLE; + DO_ONE_SAMPLE; + DO_ONE_SAMPLE; + DO_ONE_SAMPLE; } for (i = 0; i < (nsamples&7); ++i) { - mag = Modes.maglut[*in++]; - *mag_data++ = mag; - sum_level += mag; - sum_power += (uint32_t)mag * (uint32_t)mag; + DO_ONE_SAMPLE; } +#undef DO_ONE_SAMPLE + if (out_mean_level) { *out_mean_level = sum_level / 65536.0 / nsamples; } @@ -204,6 +212,125 @@ static void convert_sc16_generic(void *iq_data, } } +static void convert_sc16_nodc(void *iq_data, + uint16_t *mag_data, + unsigned nsamples, + struct converter_state *state, + double *out_mean_level, + double *out_mean_power) +{ + MODES_NOTUSED(state); + + uint16_t *in = iq_data; + + unsigned i; + int16_t I, Q; + float fI, fQ, magsq; + float sum_level = 0, sum_power = 0; + + for (i = 0; i < nsamples; ++i) { + I = (int16_t)le16toh(*in++); + Q = (int16_t)le16toh(*in++); + fI = I / 32768.0f; + fQ = Q / 32768.0f; + + magsq = fI * fI + fQ * fQ; + if (magsq > 1) + magsq = 1; + + float mag = sqrtf(magsq); + sum_power += magsq; + sum_level += mag; + *mag_data++ = (uint16_t)(mag * 65535.0f + 0.5f); + } + + if (out_mean_level) { + *out_mean_level = sum_level / nsamples; + } + + if (out_mean_power) { + *out_mean_power = sum_power / nsamples; + } +} + +// SC16Q11_TABLE_BITS controls the size of the lookup table +// for SC16Q11 data. The size of the table is 2 * (1 << (2*BITS)) +// bytes. Reducing the number of bits reduces precision but +// can run substantially faster by staying in cache. +// See convert_benchmark.c for some numbers. + +// Leaving SC16QQ_TABLE_BITS undefined will disable the table lookup and always use +// the floating-point path, which may be faster on some systems + +#if defined(SC16Q11_TABLE_BITS) + +#define USE_BITS SC16Q11_TABLE_BITS +#define LOSE_BITS (11 - SC16Q11_TABLE_BITS) + +static uint16_t *sc16q11_lookup; +static bool init_sc16q11_lookup() +{ + if (sc16q11_lookup) + return true; + + sc16q11_lookup = malloc(sizeof(uint16_t) * (1 << (USE_BITS * 2))); + if (!sc16q11_lookup) { + fprintf(stderr, "can't allocate SC16Q11 conversion lookup table\n"); + return false; + } + + for (int i = 0; i < 2048; i += (1 << LOSE_BITS)) { + for (int q = 0; q < 2048; q += (1 << LOSE_BITS)) { + float fI = i / 2048.0, fQ = q / 2048.0; + float magsq = fI * fI + fQ * fQ; + if (magsq > 1) + magsq = 1; + float mag = sqrtf(magsq); + + unsigned index = ((i >> LOSE_BITS) << USE_BITS) | (q >> LOSE_BITS); + sc16q11_lookup[index] = (uint16_t)(mag * 65535.0f + 0.5f); + } + } + + return true; +} + +static void convert_sc16q11_table(void *iq_data, + uint16_t *mag_data, + unsigned nsamples, + struct converter_state *state, + double *out_mean_level, + double *out_mean_power) +{ + uint16_t *in = iq_data; + unsigned i; + uint16_t I, Q; + uint64_t sum_level = 0; + uint64_t sum_power = 0; + uint16_t mag; + + MODES_NOTUSED(state); + + for (i = 0; i < nsamples; ++i) { + I = abs((int16_t)le16toh(*in++)) & 2047; + Q = abs((int16_t)le16toh(*in++)) & 2047; + mag = sc16q11_lookup[((I >> LOSE_BITS) << USE_BITS) | (Q >> LOSE_BITS)]; + *mag_data++ = mag; + sum_level += mag; + sum_power += (uint32_t)mag * (uint32_t)mag; + } + + if (out_mean_level) { + *out_mean_level = sum_level / 65536.0 / nsamples; + } + + if (out_mean_power) { + *out_mean_power = sum_power / 65535.0 / 65535.0 / nsamples; + } +} + +#else /* ! defined(SC16Q11_TABLE_BITS) */ + static void convert_sc16q11_nodc(void *iq_data, uint16_t *mag_data, unsigned nsamples, @@ -211,14 +338,15 @@ static void convert_sc16q11_nodc(void *iq_data, double *out_mean_level, double *out_mean_power) { + MODES_NOTUSED(state); + uint16_t *in = iq_data; + unsigned i; int16_t I, Q; float fI, fQ, magsq; float sum_level = 0, sum_power = 0; - MODES_NOTUSED(state); - for (i = 0; i < nsamples; ++i) { I = (int16_t)le16toh(*in++); Q = (int16_t)le16toh(*in++); @@ -244,6 +372,8 @@ static void convert_sc16q11_nodc(void *iq_data, } } +#endif /* defined(SC16Q11_TABLE_BITS) */ + static void convert_sc16q11_generic(void *iq_data, uint16_t *mag_data, unsigned nsamples, @@ -301,14 +431,20 @@ static struct { int can_filter_dc; iq_convert_fn fn; const char *description; + bool (*init)(); } converters_table[] = { // In order of preference - { INPUT_UC8, 0, convert_uc8_nodc, "UC8, integer/table path" }, - { INPUT_UC8, 1, convert_uc8_generic, "UC8, float path" }, - { INPUT_SC16, 1, convert_sc16_generic, "SC16, float path" }, - { INPUT_SC16Q11, 0, convert_sc16q11_nodc, "SC16Q11, float path, no DC block" }, - { INPUT_SC16Q11, 1, convert_sc16q11_generic, "SC16Q11, float path" }, - { 0, 0, NULL, NULL } + { INPUT_UC8, 0, convert_uc8_nodc, "UC8, integer/table path", init_uc8_lookup }, + { INPUT_UC8, 1, convert_uc8_generic, "UC8, float path", NULL }, + { INPUT_SC16, 0, convert_sc16_nodc, "SC16, float path, no DC", NULL }, + { INPUT_SC16, 1, convert_sc16_generic, "SC16, float path", NULL }, +#if defined(SC16Q11_TABLE_BITS) + { INPUT_SC16Q11, 0, convert_sc16q11_table, "SC16Q11, integer/table path", init_sc16q11_lookup }, +#else + { INPUT_SC16Q11, 0, convert_sc16q11_nodc, "SC16Q11, float path, no DC", NULL }, +#endif + { INPUT_SC16Q11, 1, convert_sc16q11_generic, "SC16Q11, float path", NULL }, + { 0, 0, NULL, NULL, NULL } }; iq_convert_fn init_converter(input_format_t format, @@ -332,6 +468,11 @@ iq_convert_fn init_converter(input_format_t format, return NULL; } + if (converters_table[i].init) { + if (!converters_table[i].init()) + return NULL; + } + *out_state = malloc(sizeof(struct converter_state)); if (! *out_state) { fprintf(stderr, "can't allocate converter state\n"); diff --git a/convert_benchmark.c b/convert_benchmark.c index 0348b81..7a0c523 100644 --- a/convert_benchmark.c +++ b/convert_benchmark.c @@ -1,35 +1,75 @@ #include "dump1090.h" -static uint8_t *testdata_uc8; -static uint16_t *testdata_sc16; -static uint16_t *testdata_sc16q11; +static void **testdata_uc8; +static void **testdata_sc16; +static void **testdata_sc16q11; static uint16_t *outdata; +// SC16Q11_TABLE_BITS notes: + +// 11 bits (8MB) gives you full precision, but a large table that doesn't fit in cache +// 9 bits (512kB) will fit in the Pi 2/3's shared L2 cache +// (but there will be contention from other cores) +// 8 bits (128kB) will fit in the Pi 1's L2 cache +// 7 bits (32kB) will fit in the Pi 1/2/3's L1 cache + +// Sample results for "SC16Q11, no DC": + +// Core i7-3610QM @ 2300MHz +// SC16Q11_TABLE_BITS undefined: 152.80M samples/second +// SC16Q11_TABLE_BITS=11: 101.22M samples/second +// SC16Q11_TABLE_BITS=9: 243.04M samples/second +// SC16Q11_TABLE_BITS=8: 316.84M samples/second +// SC16Q11_TABLE_BITS=7: 375.70M samples/second + +// Pi3B @ 1200MHz +// SC16Q11_TABLE_BITS undefined: 22.19M samples/second +// SC16Q11_TABLE_BITS=11: 5.86M samples/second +// SC16Q11_TABLE_BITS=9: 19.33M samples/second +// SC16Q11_TABLE_BITS=8: 33.50M samples/second +// SC16Q11_TABLE_BITS=7: 59.78M samples/second + +// Pi1B @ 700MHz +// SC16Q11_TABLE_BITS undefined: 5.24M samples/second +// SC16Q11_TABLE_BITS=11: 2.53M samples/second +// SC16Q11_TABLE_BITS=9: 3.23M samples/second +// SC16Q11_TABLE_BITS=8: 5.77M samples/second +// SC16Q11_TABLE_BITS=7: 10.23M samples/second + void prepare() { srand(1); - testdata_uc8 = calloc(MODES_MAG_BUF_SAMPLES, 2); - testdata_sc16 = calloc(MODES_MAG_BUF_SAMPLES, 4); - testdata_sc16q11 = calloc(MODES_MAG_BUF_SAMPLES, 4); + testdata_uc8 = calloc(10, sizeof(void*)); + testdata_sc16 = calloc(10, sizeof(void*)); + testdata_sc16q11 = calloc(10, sizeof(void*)); outdata = calloc(MODES_MAG_BUF_SAMPLES, sizeof(uint16_t)); - for (unsigned i = 0; i < MODES_MAG_BUF_SAMPLES; ++i) { - double I = 2.0 * rand() / (RAND_MAX + 1.0) - 1.0; - double Q = 2.0 * rand() / (RAND_MAX + 1.0) - 1.0; + for (int buf = 0; buf < 10; ++buf) { + uint8_t *uc8 = calloc(MODES_MAG_BUF_SAMPLES, 2); + testdata_uc8[buf] = uc8;; + uint16_t *sc16 = calloc(MODES_MAG_BUF_SAMPLES, 4); + testdata_sc16[buf] = sc16; + uint16_t *sc16q11 = calloc(MODES_MAG_BUF_SAMPLES, 4); + testdata_sc16q11[buf] = sc16q11; - testdata_uc8[i*2] = (uint8_t) (I * 128 + 128); - testdata_uc8[i*2+1] = (uint8_t) (Q * 128 + 128); + for (unsigned i = 0; i < MODES_MAG_BUF_SAMPLES; ++i) { + double I = 2.0 * rand() / (RAND_MAX + 1.0) - 1.0; + double Q = 2.0 * rand() / (RAND_MAX + 1.0) - 1.0; - testdata_sc16[i*2] = htole16( (int16_t) (I * 32768.0) ); - testdata_sc16[i*2+1] = htole16( (int16_t) (Q * 32768.0) ); + uc8[i*2] = (uint8_t) (I * 128 + 128); + uc8[i*2+1] = (uint8_t) (Q * 128 + 128); - testdata_sc16q11[i*2] = htole16( (int16_t) (I * 2048.0) ); - testdata_sc16q11[i*2+1] = htole16( (int16_t) (Q * 2048.0) ); + sc16[i*2] = htole16( (int16_t) (I * 32768.0) ); + sc16[i*2+1] = htole16( (int16_t) (Q * 32768.0) ); + + sc16q11[i*2] = htole16( (int16_t) (I * 2048.0) ); + sc16q11[i*2+1] = htole16( (int16_t) (Q * 2048.0) ); + } } } -void test(const char *what, input_format_t format, void *data, double sample_rate, bool filter_dc) { +void test(const char *what, input_format_t format, void **data, double sample_rate, bool filter_dc) { fprintf(stderr, "Benchmarking: %s ", what); struct converter_state *state; @@ -43,7 +83,7 @@ void test(const char *what, input_format_t format, void *data, double sample_rat int iterations = 0; // Run it once to force init. - converter(data, outdata, MODES_MAG_BUF_SAMPLES, state, NULL, NULL); + converter(data[0], outdata, MODES_MAG_BUF_SAMPLES, state, NULL, NULL); while (total.tv_sec < 5) { fprintf(stderr, "."); @@ -52,7 +92,7 @@ void test(const char *what, input_format_t format, void *data, double sample_rat start_cpu_timing(&start); for (int i = 0; i < 10; ++i) { - converter(data, outdata, MODES_MAG_BUF_SAMPLES, state, NULL, NULL); + converter(data[i], outdata, MODES_MAG_BUF_SAMPLES, state, NULL, NULL); } end_cpu_timing(&start, &total); diff --git a/dump1090.c b/dump1090.c index 4003c74..d3d6076 100644 --- a/dump1090.c +++ b/dump1090.c @@ -129,7 +129,7 @@ void modesInitConfig(void) { //========================================================================= // void modesInit(void) { - int i, q; + int i; pthread_mutex_init(&Modes.data_mutex,NULL); pthread_cond_init(&Modes.data_cond,NULL); @@ -139,8 +139,7 @@ void modesInit(void) { // Allocate the various buffers used by Modes Modes.trailing_samples = (MODES_PREAMBLE_US + MODES_LONG_MSG_BITS + 16) * 1e-6 * Modes.sample_rate; - if ( ((Modes.maglut = (uint16_t *) malloc(sizeof(uint16_t) * 256 * 256) ) == NULL) || - ((Modes.log10lut = (uint16_t *) malloc(sizeof(uint16_t) * 256 * 256) ) == NULL) ) + if ( ((Modes.log10lut = (uint16_t *) malloc(sizeof(uint16_t) * 256 * 256) ) == NULL) ) { fprintf(stderr, "Out of memory allocating data buffer.\n"); exit(1); @@ -184,21 +183,6 @@ void modesInit(void) { if (Modes.net_sndbuf_size > (MODES_NET_SNDBUF_MAX)) {Modes.net_sndbuf_size = MODES_NET_SNDBUF_MAX;} - // compute UC8 magnitude lookup table - for (i = 0; i <= 255; i++) { - for (q = 0; q <= 255; q++) { - float fI, fQ, magsq; - - fI = (i - 127.5) / 127.5; - fQ = (q - 127.5) / 127.5; - magsq = fI * fI + fQ * fQ; - if (magsq > 1) - magsq = 1; - - Modes.maglut[le16toh((i*256)+q)] = (uint16_t) round(sqrtf(magsq) * 65535.0); - } - } - // Prepare the log10 lookup table: 100log10(x) Modes.log10lut[0] = 0; // poorly defined.. for (i = 1; i <= 65535; i++) { diff --git a/dump1090.h b/dump1090.h index 2b26a3e..07c2247 100644 --- a/dump1090.h +++ b/dump1090.h @@ -276,7 +276,6 @@ struct { // Internal state unsigned trailing_samples; // extra trailing samples in magnitude buffers double sample_rate; // actual sample rate in use (in hz) - uint16_t *maglut; // I/Q -> Magnitude lookup table uint16_t *log10lut; // Magnitude -> log10 lookup table int exit; // Exit from the main loop when true From 2a8d6db055c262adc56559701eb7f75466e1a391 Mon Sep 17 00:00:00 2001 From: Oliver Jowett Date: Mon, 30 Jan 2017 19:37:47 +0000 Subject: [PATCH 11/18] Build with -DSC16Q11_TABLE_BITS=8 on armhf --- debian/rules | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/debian/rules b/debian/rules index c8a2de0..8e9e082 100755 --- a/debian/rules +++ b/debian/rules @@ -12,13 +12,15 @@ export DH_VERBOSE=1 export DEB_BUILD_MAINT_OPTIONS = hardening=+all DPKG_EXPORT_BUILDFLAGS = 1 -include /usr/share/dpkg/buildflags.mk +include /usr/share/dpkg/default.mk -DUMP1090_VERSION=$(shell dpkg-parsechangelog | sed -n 's/^Version: /v/p') -SRCNAME=$(shell dpkg-parsechangelog | sed -n 's/^Source: //p') +ifeq ($(DEB_HOST_ARCH),armhf) + # Assume a Pi-like target, where using an 8-bit table is a fairly big win over the float path + CPPFLAGS += -DSC16Q11_TABLE_BITS=8 +endif override_dh_auto_build: - dh_auto_build -- HTMLPATH=/usr/share/$(SRCNAME)/html DUMP1090_VERSION=$(DUMP1090_VERSION) RTLSDR_PREFIX=/usr + dh_auto_build -- HTMLPATH=/usr/share/$(DEB_SOURCE)/html DUMP1090_VERSION=$(DEB_VERSION) RTLSDR_PREFIX=/usr override_dh_install: dh_install From 44129dca12a78c1d5cced09159b57d5657120b1a Mon Sep 17 00:00:00 2001 From: Oliver Jowett Date: Mon, 30 Jan 2017 20:15:26 +0000 Subject: [PATCH 12/18] Add copyright headers to all the new files. --- convert_benchmark.c | 20 ++++++++++++++++++ sdr.c | 21 ++++++++++++++++++- sdr.h | 20 ++++++++++++++++++ sdr_bladerf.c | 16 ++++++++++++++- sdr_bladerf.h | 19 +++++++++++++++++ sdr_ifile.c | 50 +++++++++++++++++++++++++++++++++++++++++++++ sdr_ifile.h | 20 ++++++++++++++++++ sdr_rtlsdr.c | 50 +++++++++++++++++++++++++++++++++++++++++++++ sdr_rtlsdr.h | 22 ++++++++++++++++++-- 9 files changed, 234 insertions(+), 4 deletions(-) diff --git a/convert_benchmark.c b/convert_benchmark.c index 7a0c523..24b1bc1 100644 --- a/convert_benchmark.c +++ b/convert_benchmark.c @@ -1,3 +1,23 @@ +// Part of dump1090, a Mode S message decoder for RTLSDR devices. +// +// convert_benchmark.c: benchmarks for IQ sample converters +// +// Copyright (c) 2016-2017 Oliver Jowett +// Copyright (c) 2017 FlightAware LLC +// +// This file is free software: you may copy, redistribute and/or modify it +// under the terms of the GNU General Public License as published by the +// Free Software Foundation, either version 2 of the License, or (at your +// option) any later version. +// +// This file is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + #include "dump1090.h" static void **testdata_uc8; diff --git a/sdr.c b/sdr.c index 4bc45a3..a437f9b 100644 --- a/sdr.c +++ b/sdr.c @@ -1,5 +1,24 @@ +// Part of dump1090, a Mode S message decoder for RTLSDR devices. +// +// sdr.c: generic SDR infrastructure +// +// Copyright (c) 2016-2017 Oliver Jowett +// Copyright (c) 2017 FlightAware LLC +// +// This file is free software: you may copy, redistribute and/or modify it +// under the terms of the GNU General Public License as published by the +// Free Software Foundation, either version 2 of the License, or (at your +// option) any later version. +// +// This file is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + #include "dump1090.h" -#include "sdr.h" #define ENABLE_RTLSDR #define ENABLE_BLADERF diff --git a/sdr.h b/sdr.h index b578446..072da66 100644 --- a/sdr.h +++ b/sdr.h @@ -1,3 +1,23 @@ +// Part of dump1090, a Mode S message decoder for RTLSDR devices. +// +// sdr.h: generic SDR infrastructure (header) +// +// Copyright (c) 2016-2017 Oliver Jowett +// Copyright (c) 2017 FlightAware LLC +// +// This file is free software: you may copy, redistribute and/or modify it +// under the terms of the GNU General Public License as published by the +// Free Software Foundation, either version 2 of the License, or (at your +// option) any later version. +// +// This file is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + #ifndef SDR_H #define SDR_H diff --git a/sdr_bladerf.c b/sdr_bladerf.c index 2d9b17d..068da48 100644 --- a/sdr_bladerf.c +++ b/sdr_bladerf.c @@ -1,7 +1,21 @@ // Part of dump1090, a Mode S message decoder for RTLSDR devices. // -// bladerf.c: bladeRF support code +// sdr_bladerf.c: bladeRF support // +// Copyright (c) 2017 FlightAware LLC +// +// This file is free software: you may copy, redistribute and/or modify it +// under the terms of the GNU General Public License as published by the +// Free Software Foundation, either version 2 of the License, or (at your +// option) any later version. +// +// This file is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . #include "dump1090.h" #include "sdr_bladerf.h" diff --git a/sdr_bladerf.h b/sdr_bladerf.h index c35f9e6..39de012 100644 --- a/sdr_bladerf.h +++ b/sdr_bladerf.h @@ -1,3 +1,22 @@ +// Part of dump1090, a Mode S message decoder for RTLSDR devices. +// +// sdr_bladerf.h: bladeRF support (header) +// +// Copyright (c) 2017 FlightAware LLC +// +// This file is free software: you may copy, redistribute and/or modify it +// under the terms of the GNU General Public License as published by the +// Free Software Foundation, either version 2 of the License, or (at your +// option) any later version. +// +// This file is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + #ifndef BLADERF_H #define BLADERF_H diff --git a/sdr_ifile.c b/sdr_ifile.c index 42fee29..6f7750c 100644 --- a/sdr_ifile.c +++ b/sdr_ifile.c @@ -1,3 +1,53 @@ +// Part of dump1090, a Mode S message decoder for RTLSDR devices. +// +// sdr_ifile.c: "file" SDR support +// +// Copyright (c) 2014-2017 Oliver Jowett +// Copyright (c) 2017 FlightAware LLC +// +// This file is free software: you may copy, redistribute and/or modify it +// under the terms of the GNU General Public License as published by the +// Free Software Foundation, either version 2 of the License, or (at your +// option) any later version. +// +// This file is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +// This file incorporates work covered by the following copyright and +// permission notice: +// +// Copyright (C) 2012 by Salvatore Sanfilippo +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// * 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 COPYRIGHT HOLDERS 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 COPYRIGHT +// HOLDER 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 "dump1090.h" #include "sdr_ifile.h" diff --git a/sdr_ifile.h b/sdr_ifile.h index 63b97c9..6652426 100644 --- a/sdr_ifile.h +++ b/sdr_ifile.h @@ -1,3 +1,23 @@ +// Part of dump1090, a Mode S message decoder for RTLSDR devices. +// +// sdr_ifile.c: "file" SDR support (header) +// +// Copyright (c) 2016-2017 Oliver Jowett +// Copyright (c) 2017 FlightAware LLC +// +// This file is free software: you may copy, redistribute and/or modify it +// under the terms of the GNU General Public License as published by the +// Free Software Foundation, either version 2 of the License, or (at your +// option) any later version. +// +// This file is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + #ifndef SDR_IFILE_H #define SDR_IFILE_H diff --git a/sdr_rtlsdr.c b/sdr_rtlsdr.c index 9f73aca..4c3ae02 100644 --- a/sdr_rtlsdr.c +++ b/sdr_rtlsdr.c @@ -1,3 +1,53 @@ +// Part of dump1090, a Mode S message decoder for RTLSDR devices. +// +// sdr_rtlsdr.c: rtlsdr dongle support +// +// Copyright (c) 2014-2017 Oliver Jowett +// Copyright (c) 2017 FlightAware LLC +// +// This file is free software: you may copy, redistribute and/or modify it +// under the terms of the GNU General Public License as published by the +// Free Software Foundation, either version 2 of the License, or (at your +// option) any later version. +// +// This file is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +// This file incorporates work covered by the following copyright and +// permission notice: +// +// Copyright (C) 2012 by Salvatore Sanfilippo +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// * 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 COPYRIGHT HOLDERS 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 COPYRIGHT +// HOLDER 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 "dump1090.h" #include "sdr_rtlsdr.h" diff --git a/sdr_rtlsdr.h b/sdr_rtlsdr.h index d83cac5..317b2e4 100644 --- a/sdr_rtlsdr.h +++ b/sdr_rtlsdr.h @@ -1,8 +1,26 @@ +// Part of dump1090, a Mode S message decoder for RTLSDR devices. +// +// sdr_rtlsdr.h: rtlsdr dongle support (header) +// +// Copyright (c) 2016-2017 Oliver Jowett +// Copyright (c) 2017 FlightAware LLC +// +// This file is free software: you may copy, redistribute and/or modify it +// under the terms of the GNU General Public License as published by the +// Free Software Foundation, either version 2 of the License, or (at your +// option) any later version. +// +// This file is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + #ifndef SDR_RTLSDR_H #define SDR_RTLSDR_H -// Support for DVB-T dongles in SDR mode via librtlsdr - void rtlsdrInitConfig(); void rtlsdrShowHelp(); bool rtlsdrOpen(); From 0a6dc372ade12ff01e2ad8ef044b6c917e90435d Mon Sep 17 00:00:00 2001 From: Oliver Jowett Date: Mon, 30 Jan 2017 21:54:15 +0000 Subject: [PATCH 13/18] bladeRF docs and custom bitstream. --- bladerf/README | 43 +++++++++++++++++++++++++++++++++++++ bladerf/decimate8-x40.rbf | Bin 0 -> 1191788 bytes debian/dump1090-fa.install | 1 + 3 files changed, 44 insertions(+) create mode 100644 bladerf/README create mode 100644 bladerf/decimate8-x40.rbf diff --git a/bladerf/README b/bladerf/README new file mode 100644 index 0000000..672b83d --- /dev/null +++ b/bladerf/README @@ -0,0 +1,43 @@ +bladeRF support +--------------- + +There is basic support for the bladeRF included in dump1090-fa. +It uses the same demodulator as the regular rtlsdr version and it does not +take advantage of the bladeRF's improved sampling rate or FPGA (but see below) + +To use it: + +$ dump1090-fa --device-type bladerf --gain 66 (.. other options ..) + +The bladeRF has sensitivity problems when receiving ADS-B and will benefit +from all the gain you can give it. 66dB is the maximum configurable gain on +the board itself, you may want to add an external LNA too. + + +bladeRF custom FPGA bitstream +----------------------------- + +The package includes a custom FPGA bitstream for the bladeRF which can +improve ADS-B reception with dump1090. + +It adds a Fs/4 mixer step to avoid the DC offset of the bladeRF, and +decimate-by-8 downsampling step to improve sensitivity. Some of the bladeRF +parameters need to be adjusted so that it produces correctly tuned/downsampled +data in the form that dump1090 is expecting. + +To use it: + +$ dump1090-fa --device-type bladerf --gain 66 \ + --bladerf-fpga /usr/share/dump1090-fa/bladerf/decimate8-x40.rbf \ + --bladerf-decimation 8 \ + --bladerf-bandwidth 14000000 \ + --freq 1085200000 \ + (other options ...) + +The bladeRF will be configured for a 19.2MHz sampling rate and will tune to +1085.2MHz so that the 1090MHz signal appears around 4.8MHz in the baseband +samples. The FPGA Fs/4 mixing step shifts the baseband signal so that it is centered +around 0, and the FPGA downsampling step produces samples at 2.4MHz, which is what +dump1090 is expecting. + +This FPGA bitstream is built for the 40kLE bladeRF. diff --git a/bladerf/decimate8-x40.rbf b/bladerf/decimate8-x40.rbf new file mode 100644 index 0000000000000000000000000000000000000000..392a2c1a847fa27a0ac11b197982b7ba0df7b28a GIT binary patch literal 1191788 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

oTj-3AqilmMxIy4 z5$C_YUJMyDKq9P75DUQ^LL=UaiS(!wVgzr5HSFz**qrlg=_p=m4Hr^`bbDr<4wwCN+sqQC+X5_3h-|5_IENlRw)5x= zLlG-y#lKw2sSV|v>>HBVOW1VwH!HKJ*^{3$Wc&@}4JcX1FUBx#h8b(Fd_FL69#0+HeGpO8MVI z1cV1lG_6!gP|(^!OHarmBi)`W*A`*{i*!~Wsof_ZhsMza2lY!5jN(_yNmX2-=)mVX zbYWZ8`4e?R91L_9IWWvVC`u)C#`#bd90R9ip&#^$_zuq9z)fg2B!WDQIZS)3H6`1i zLWGMZXGb$Ijwq|A9eE)am-?pqSCGRLfi+(&vJj|dU><2EGgXTzbdB(AX05cS*jL_R zf*#fo_i|&ZN#02`*O%FQ2z>t`P134J-F;)(MacIbLlDQ!j-T$@p7optmh#yCX<-?T z3b>9)a(_FcpS0_{4=)na(>tkz2#&&FSD1N3I;{-xnnOs&CP!^=cQj5%48mq&~1npxvO)wZN0vBgl?rTC+ZNZuIFLZnRNEb@)CL)ugnA7Lr$R_nDb@62 z$2?V@)7YcP!{-F231zlC+he3upWTa-2cJz{3a2x>&A~N54kdUr5Zc*{O{vsJl@XUt zS+ibf><~3vx`bMW)r zw6EQfo!pT$$XrLmjf4$Y;DGA#;KEKbHdY=P=|_<16QL|L)Jd4DYRsiHB_f|{tJE17 zUdz;_?GlHzY58~larx2`R<1C{L~Ygs-)14QVSsQg#&`0h`HF)y)Z$P)M+_N}7511q ztdy5w5}fX#=?uuw48v#e6#=5EtU`JOF#?rK-UfC^#e38vR$PF2R89(5q!jibHWEh^ zM;Kad4`yd;rH`7maxQ!+N;y%7TzM-%DNkc;6lsEY8eYEdZ*X(+%f(>Ay%>j5KSCf_ z8UrH+wTWf&5PA@zj;%89GD{f zJfcxNY?FF-!`}bPkrl~tq}0p5I>3V%^K<0WhUWB$nT0#)bSwE-Lb9?=0ae++5|8~e ziZ`%AqIZE3G?pYe$B6Le)>HyXei;m1OOXpnBZv(gv&|gAs3|hQ8or8L#~p-h)pNJ3 zVWljX(vfZgY@2=v1Zn{YRr-PzAx}v<*6c54$iS zfeYM85M8R?OqC$UHs`*ftZxx~jQNNu?-AyeBeLj9E`v4JGgqv(2f$X6=5a$S@di;x znrDlj1aacX09jN81N>E3ZWPD3i-(UA=%C*ut={a zYpIhpZs%Br#=4V?(oI|d@d>L@FV@p7sADk(p=N1Yu#I6@OUY3ti3yn)D^)Zw;?(i5 z9~mhKGEVAJNNOvp{B~P?Hrmdb)(V##Ul)s@hEK>e)ij!b(54l@Zq#PkWp=vC7vYT? ztp(c-WXL2oVr;9RHT_E{DvIQixH0}PVGIpdnIW?;Iq=XD;p`ah>T8`1a)DGVTh2VI zS$`EIQ;UB1=Q1)dK-AqqxVSNzP^*UJ9JA@8)CHDdb!skX0#;;G+c$MeRz)ZB!CA#B31ZOX!MSJDuF6 zG*mYv%tMH5Rp$mVYLWT2ARTR)h!|lErUr7Og*LZP9rX;()ZQZqXX9s7I?|ng1A56e zra^8bmqHZ5P+OzDF_<@0!|sar74;^BA-Aw7f-T@ueWP#_`z8}~II|%&(T0yfhzV-V zh3HbEJZ%Bi@MSc5x*>gtXe0Lu>FWyoMk#;dkBD!rT^T~8aVJFLd3i2o15Tl}bs^Ic zZw<&g3C>g06-y#g%MvMT8LNB|D`w@-iXe9lt5aK-Ov$)G3Ra=N)HOzqD*-Ihmb6-8 zd`iTquvKg#Mom%Zic58swSe-rQ65qkMVlvWR=UpqJB@h3+P9!q>{vmE&Z!h3Tuj2K zhZ_Hyrmkd+JRTUdN;i>kT3?wHo1zgFmEyl8E-JtqzJlaHIx#8)HpJTUxFg~+v`ROG z4@yQ0w$cin2NfTbv=UDH_2RqW-G3n+(&*r3!7>`oRNHay%XM5HZwE-7OV~K?5`C)6 z9A|3h2Ijynp8KZW_!F5i^=H(M?=j7;~d#_-Z z1^F(_c8aV6zeK1y=$D!fA|Py_%_N8A1Ue=NYmOP#667escZ)VfwdoA? z1m~N$(F7I!7z9I$y%+f+slX^Y1Wq61$J|L)kb^*V8?w8_=}jxdqrs+?O)~dHjEEyqpCD<#P<74*UwsUpniMQo4K)sqi6d z%^VMn?&moy5BQ|52YtqVSe8fJTKiG%cbeSFx5@QfGhD$nkI{hPg~ONVxjBzyoH0MQ z1$%p~3zjMYbx{{9EGze`bAN1xbTFoyx-cfbI-j{_On!!Pap$!A!p}fv;3eaaw^Hq~ zVL=TMcrecjkY5RW@aNV@MZ^ON7x{&z=tZnTn@Z^i7Lq647{{cemU@?FKBNB9wU{994d4v@Dix`5%3Wc zczBMO$jiZ<#dn`}zy9lxm)9(8cMSAFk$cS4!|yci+cO4yxf=JbXTV2=G-{??2E4kF zhkX`)Bj@~zxD$CfWBHD43<3uF{)Kx+QdWq#lo;?adLD)ci+myvri`QA({wPEj+jaT z2K-!@h$faZiuC4?--tXz-D|Nqdl$HdkKhG-88PL(<)X!lMzgspt+N}FmvV>57yrnA zh2G`B_XJ$amwxX99|Qhv0?&c|O5o@6Rzo=P+XfzObc+te!F61i@SHsc}*UlZ&YVER!Y-Sa5+a4}z$e(pRF4Lx5{gycxFiA@bLKfHdTR zA?HmC9AJ^YNz~DHSB?{=5u4J z*?w%UxjvViu+XD_ez9OSUgL9j_{a7?=Yw$n${^hFTuh}uXoGNf7?`?^sfOHv52AF` zI?U%Y`C;-7|ELty&)WKlwsM8#JsgyHF51f~&SW3-=jU+nZ;D?TObS`591nwwwGn5f zesK{o_xU_rPyLY6>2pHm5pUe>w~4z){NXn6q}Ng$^^4;RxJ8$`VDu&1+a^Yz%A}IzR*Kluf#oHJ}-@1B>l-%yd?8B~fbzonw#Cxe84ATA_I^|(`kY*V^sN9`z5x4o7F{+XEkW0anwZ0A%0V*%pDaw3)8L%2Q>Xm&-)}^qHW_Y; zpjFPV$i%)`W4~1^T=+c1`nPK3;eo$mWehynsq?|WzY{COFkp++lf0C^XVCq6Nse-HR;Z_H=UT$?}n`WrW%(;}MJUw>}Ir~TxmSNorS znq@C6!P);z;69eWeC5~jOEh2mS}vmb%Ki8fjh5oD{N>eGm&=#H`XbHYOZ{YcHJ9Ri z{p+RAtG=cNm*;gMRHF$ z@en93fjv+h4WyO6fL(Lx>`wZ8=NrEnYQNj0{%#FKd3&c;x_7Gh&h)64|NnpC{CYX! zQ(8vNs{1*%&e(<+TzXkPPihZ4<#*PVL(b2+xkB$9YOv<$V|hs-n?HX%&eY4};_2j5 z)VXq4P)h#^8p?*Z0!{#e(usiNAf-}|w&`VCa z6|fYjcdz0;B|=0?Uaxm$(GWTgUo|f-kdmDDoIA^?ig%h1YSw3RpBF! ztVp~_0loN#zzG4G%sI)r1nW!M;FQ=(yNMi$02>xWV?b-ZWvE)Zo?)ATGTzTFot7^E zB;WA@_hdU!Igp%|!JM*DLAR>J$_+_M$HOLir|-}wx18!WU}SJCN6>ZR@GLXS>=5qI z6)d2$%zzZ(iDEB^b1ejloi@mLN5^8c!yz>OB9p9hHisbxXd_;j5l>IJI$U{dQWeuI zG4&%5Xh5zD6sf9Ttj$<@ND-6xd;`yI# z?q*C8M(#|zu~Ix_TOfs*2T$bzkt@1w_=L;24zEJSox9AML*s{!s&Qyl7O}!;QZS36 z3%`Y?qBW?KfK8FXTB(Q_@Lc&8ElQB+H-4;?<#OS&8?EY3ONUV$s*LN}c4NK=B`=T2 z&>2fdenLe%+&QAa-l|eslTQWFS}SkRTeAtpP$QRR1FD)^x3aXyR^p-lf5i#>T#cuJb z!&w~|sxv=isb(Pyr3CF;?&)oGYE`K8nH!h*xBn%0gib@-sdrXMRmr;%UBQd3)V`H|gWq3+ZliD{bT>=Y<10-J8bwx@<{% zp_M(6QCH*}{Q4WJn~|+Fnj;^r<;IX#PMmmzP$OQ@n%>2cJ0u%PH`!p)9|b{WTuHae zK13qMl#nH?IXpZUpVLPM4&KRU2e3dSE20S+@4+@^)XF9r)%474fCQ#WICnr`!6Q@U zi1}YbwA(`_H}G+F&ntI&3Pncx$QhK1n}-F+MnM$G{4e}?hB!4aO=`zv=nQfL zx@o!nZggWF9luwZ`A%gHIc|A6>eO?JlcXqfV!gx^k%2<(NPtPO^YxL`sl5iHlu<1?8&}V@Aq1V%sc^a`Y^n8B0V= z)Z*xO5e-_&k(K+<24>?#LWxFYDQ9fI_3w!zd&5FVTGDk8yb!V}D_v-(Y%JGsFMSs? zW@Jf;1;SnK67okI|A6AD-8pgck+DvEO=jJiUe_^S=ZZ2S!<0yxAg)|BWwgGhBzYw*rsJpQX6LXUBVjMCr+IjxIvj5+(m0DaCT;DAWF zU=!B1h-N@wQv4=34F0UaywR4pp(cDwbV;?@$xy`G06rG3*`m>xIIf1CsA+lR&o#x6 zrGa9|)C)OJcyk#`PR0moXbbwP6I$yWRlt;NDS>RVWJ0#;Gjpoqyfi>)9dpe!+8WqM zT*0j@(lv#Zm7Qkc{7SKGkg9KRx$;qZ8A~VIxAM!S5s3($awhBPPWWWV07{y+@*jOn zY@SA#$PxBvf7%}oc#tC**z$^~fur3yS%LGe)nUeO|wF{r34lZeksB<|`qk6fIyu;5vuN?P|vms2R&nu2jjLMP8j z&;M}kv~&Bi(7f40K8^gNY57Q;w!Y+L+q}Idffc zKje|Ukx(|`93l@Rj3kIKC;U4Cqm;HxM64l?Qoa_v8D(lD9kqgbH{1Q>wFm7kM=f>P zs@sB4sMN@8s6()oO45Nr+6gsjzQ;u<+abFEZ3aDr6P(~1E9EhzrMz^Ut zm`&FZA`&-ki3BPTBSefVv6lEqH@s=ukfouhy7^G$7Fny^yZM!fT!F8)5T8**#ipR9 zUS9lg;qD}2P^7v!Vr5(O7Fx|xW@U>nV-*B6H96=CY*xLZ*NTR^ww#4Ttiji$DC|dLQvY(^AlBO^dd<1$ELi0H!@-Eh zVR`!A>oscTR1cE}(SrlpBh10cBi3g&*7xZL3oV>N>9S*%>UJGKd)T zaXcQ>6yQ9N#i&c{1_kn7detvy2NSlx7t(G-wu=z3@8G@d=$!6~5B3 zopFAD2v)-f@DaD`L2=rTPOy&XOu}kJ+z_j%5YBZ57G-P|E8-1=$KgZobIcPHnNe#K zoDePW&0(D}BL}eHVJU+!q$a6_-LV5?C_z}8z?4MbMO=}mh%`?;@J&w1F2=Z(}~*3WpI2{yM&3{3f8o&jD;tw{0_=T4kl;` ziB+I6PnhCiWi+!61eq?42Vh;lERN7xlq`L-249n-#pt^Y@djxty4IxAvajTu##i+- z(qghGM3YM=;*!VaKcf+!ivhT07dH_3<#(20aMYY^-DItqvxnZaIrk?g<@@0q-r}dp zv=pa%t-EQTGv`wkH|^YfyB@MvsPv&8DG9SxqIHeih~bm zSs6y$;fv!`5e&17z${E)6qn@@@+HJP@&glJ-F+9#%iJ|4p7PmgnM{U1BwtE7+jIHU zpUs>WM8V~iRTzi+1C8YyAq1ZNWl|mzctWQq zX%X=9JfUrY2VV;ORi%Zn<*pjl*AMLt_(16NC@-<( zmjWL=b$|(c!vvnD6*!gJ2)y#C(ntw>(<1P}ABX%>;E{(fU;)nxe@{Afif#XZYb~)+|^CW`o22~{J;4j6mvz0_5qb+>CNEP?>O zGSE8)Jdql4-w}6?lQ+BP3q9LSZZP1%wNu4C5vM|al(jxC%$}ykc3YJJFI@Hp4e_p% zyyF=xzqV$2wktfYFXAA6tXIW1BN}b%7kd7Ve8e8-i^M%}*&pK8PQeqE){P$FW8w@B zS3s+{k1KMH=^@2=W55R=bw=DZg!YbzyYqvACOL6aKd=YPh&+Nq9u1x$H#MB)HNs5q zcPU-|@Bwl6-_lE~E$~z*L)+c{p|9ChQ4wI?j8QhBhfOm~;5efpr_LrmfH{kBORTi$gys_V;Afgw zfSD%v0FTsiKj3Vs@gdcSPq=8<0?(RbYn<70A!np3ip~fZ4}cxF`3i~}Om5!RvY^uM-_E(d zeSxNb{`rOSS2&mC%=Vu@AB;Hkue>rSzsMKn_TwS2C5|eUI}AD1T)eZDIA~$5KE<2D zGM7Fw=YMJeH)$BN%4H=8S_3VqrT`FukW=@GpZed9pT@eh6sPnbyuF|dk!A^wd%ZTf zIa{!XW-=l2n^;S6h~&-v=LZK*j$cV!21;*#@Yo#OJ$@uyw}>wsXEnoxa6NizuGnh% z%NOaEeIi_HMp{nBH)L2+GrzzGVfn&R9M-`QNxd$DAJwQE+;w~FE5LNyJDqjsIlJYHR^D4=F7EUMWvO| z?NR)2D{AaJ@#Xi%%IFimn2#nm@SFHjcjKg@m456`m;Jx|m$jbb&6eWK<}5j3DbADQ z5}XmUJiVibXWJEQm!k zx%?%U1!+mnbFut|WkInNCzl01uoUNw%S&-`S&$ab$QR+aU5dlfn~kM7iVI6|6qmPO zic_Y!6z3q8;(X;RColZ*w_1wB{o!6O)EP@~=1ga?1ZTu__V0Wt&c%gFm-3{6PdV*A z1ap)(c#iflHaKaIgBf+t947*kJAQC1mj#K}j0@%)kHWbuNb}|(o?S&=#qzvC(#R4Q7IJi!q4Zh_-3X{klyji$#!1ZcdO^c!3%gcvdTFUEE#g_ zu&D|ND%Q2IIUL%tNng1n7OAMCDBSbmOCoLW+BGJrc|;zD`%ralpYS_&6w1mEP>y3kn@o)`BdCq_Q7n8UZOX06}Q2omCW!{FW1WM^fsKLKNlbls#m6 z1$?Hj)R$ifvsRp5S6RSf>v_jmbx@4|33vDqAF|C(NxG1RjE_gRyK=}i;-y2YG&J>) z1RLca8i+_Q!X~et5P$AxyCZ+x< zlw{4NLeoti>-5G*}`;uq$$j+CW1I~tw7 zw1V*+whsk=M!W7)3q$THK0xyL86}vJ&ZzCI4&@XlpLd)p<#E^T?`b(J^mm7h@qW(G zaf^H4sBq(cit3Se#F_2jr)DVBDWxC2pF`F;q~7kAn5j%z>~<=0fUYoZ0*ZycJK;18 zVRhG%jFY0+YR_Rdo0cO7YtN_)Rtn6H`(bKyn7YM~Q=zhpO{;S&7Y!I()D0uZA!?%9 z1yzJ*xS*bv01ZYoXi;`#X)gIu@o70>+ygx}fBR4cd8^)PUGn{w%3$8>$__%b`N_D1 zFLi+rc{D0h$w}meH(#T=t~~OnYRe+mA3+MaEhWsl2C2;R=nD^SKz6Z4g)RU-7->0C zJ9I!v;0qvhtgNTR8b+iC_B=#uwNXqZBPHWIf{YkZmvXYfDzqDi0x77xXF&|L^3!M4 zCRnXIC`%|~6R;OWc!HthEs5A^O)<}gdx*(QqJvV7cVPB)DbX>d{Onzl{mMm`ExAlT zLVTkxI&?3dDGba7f~_4dKM8jB@ddHpD_fA~wJerkzfJb7tu0?nr#I}Z++Eb8@=50S zfsu8L!l9EqUM4hiwq><&Q}l-K+n!sw@N(n}9isjSL9GW+Gn?)Wi~t2&xBKwnz&O1; zVrMkv$|c&3hckK0Fq}qD=@?rzvSxN%%Q1T^xr|UOd71Ahf)hqJ;WG*wLMu;HFE230 z_0euzH4fMItT_sOxqTFx)Po_T_FWZ>s;pE6Ps7q6z3%|-J(;u`k3qjPXbnYr|= zPJKSz=~Rx*-+fSy`d!}No|YY~m#$nl&HcO6z7BQQ%I=c(%<50qQl6M$Tb={EkHlm; z-MS%HZXuk0B2H@jXb()8&+5Z;Qx)q;sOq>>zMbP(yH5W51|6TCluu;l)WA(p{@@Sl zpl;^o)^t9lCzuCL&Ws#I7dH)bL@c#GOpmiE(_NqKGFVRf9WS%HCuO&r4tGmM;|cXg zrCrg=Qgsm7D<7o_T0QWbNIzve?e)x@P@CrVGsF@+p5)TRa+rUQJl1RpsX-Xi`bIibum#q(v66356^24I9) zX#(a0Vk*n7A<`^t$_5w{IdtRiHfN$xl<0r$k726UY)SnQl`v1`0+3`C;z;q+fJ-o) zvb%iNu`D#VBWEC8vgMo}7Ezj`Ye)gdDE~*{V0hwPR+BEwDt*Q?p42ug<{JHOG>LKo zeM`)wEo1BrO}C#iKxdlM66A5hihyO8mvB~@?eQU7jRkC*GLXq019u*5NW&!c(U3(n znfaF81~9Ay$SI(?n23+4zc0m+vRANAXs<4_Z|hQ5KAem?QH^E^jmRa^c}6!z{XR9d z@21hC+%zD6-#Eb_3|TFwUz`EJ)880Ds8o4WrY4uI5@#+jHzbKXk2E+ug9BKl5>en( z6rT(!U2kOQTqnGgR)VR#Q3*tG+Quay&)O77)vv)5ZtMK%7_m-WkcVt;5&-BPTTmOx z3rR1OD>zYD_@@qax~aKqKza%KXObOt+&EdH{ePFS*T6<%wxd1PvFwOEQsu#sQ_AUO z;{e?9Y9NSoTpr;Ec9?I6k|$J&XOvl(H%2}gjqCBdM?KW zP5xafosvc)bY>-9(_Su{%bAOo(VzyiM>u&7y7@8sGb*Gz;ieNds+hX!Io%k+(wz_~ z>cJHg3zAuFmZA;&3@KeKtlAEx_6jJF-lkIs<~dpUW51A!w37e*u~KEBZJD`ByA`Fl#zfJ% zT<4$T5Ee2VMjlLTps=P>)FJ~qvjR;!6B8nc%Mc~3SyNUBLMKN(q$(hB8Cl)xqhX8_ zWC9AE1mTg!;U#=c1w*Q>feX(Y6D`ppEk?5RXqjc}Rw}f}VT_Fy@t>0pCoM<>4&_1( z46L(2FXboyE$BE+SYHw#VaToak0@R`qyldnaV|?Sf~`a&$racdf~NhBNtwmJv=S_k-LEuE1ph4Q#L? z#CsE7Mh2@b;AkYS;ATJ1aLG$wt|&d6y`oBB{^b8D&1h9!visCor{7zOhmb}bbf8mnTSi0h;1 zlo?fFwm)dKHD5c^L(hNmSIE}2yvY8&CV4EIZ_N6sQ$D26`Rw$rqo!&)Ai;mDSnT$k4$cs)R zdzZTpg0+@yqZR&QU6*D~quBtAB@tXp4w~-R3j5I?!IynJCBxWovtu+q!vT%k zg2k!9<2+sk@vxpkJV%2T(!5`$XAHc`(PE1VU&7L7z&BKRZ{!*4pqSIRfO>{5(ScP* zwm8~O=N%^U%Nf{K{d$U`Cg}uA^=W`B;7`PXwa1@vc<6G6J#3~!V^660Bs2Qltt-`c z%YfbhH{hoe3CDuYLkKZ&0%<|%s7*_7LU%nmT9T{F?2L!up5k((LW157(1_Com(@_8 zaaU+T3>MgAWrlHj|>*3FY(uLs^EU6PteFS80U@X7zhNyDCu!`RJpPOA2+V1)ydWITRyUvV2B&TvO=8F zy2U9AEM?_~27&JOM31;@ID!(wT3=bAeKAnMl8pt+Z{DWi`<1Ul z*o2X#yzTnllf{V_K2>qDn0{rcM-Q{|qswk*v9q8L60;O%dY_%9d+o8E=cj{p6@22x zQk)&%rF7kX!eu4!Y1yskN4%d?%A@|oVlFHGl+P9OC3TnAIGec*)_xA2RO7Zju1%&N zzdLt2VS4lK?6gcL{$9zale;&4g=;zJe}012Ytx(eZVwcj?%!kQ<|tL~Dy02Me=l*l zSFlosEh|{5pRX5zzc9H_|My>>Ab)K(nQP4PinuV}vuUUJcltZUz4T!3eA+Lzb$4yr zADqtzaJhA^PjcPrzj#Jv%Uk7+n{zSO-#KT(DR*YmbL9AP;@#;_em50l;HfwQ-*0{U z(K_(=m+C47erviJctXe169QjvTz@`r2A^X)Qc&=T+IEO7*3q8-5LhlYD1PhDv3 z-(^az{Q*OK!2C`@-j~S}40Re^PK4=JRZ9QV&ljAS?CxCnoXBc&waUvv{d|p!c1t2p z?wvy9g@*$fW1^>2+4Wn4@YD|+y)r##j|Xm@e_TVXKlnao0)lv;0ZFM7%>rx;RM!B=qC!50lGp09vMUo|jNXa@FA{rTiz4K za~Wr5xr5Z5PiQF@9Cu)_0*2$^M#G%u!1K;T!&r;_5~WU5`t+~;Ek*;YF>af1ti{>t zKlm@)SvYh2hu?o7ObtBE>mGS@N2@TpM;m_Rk*PZ?J>LBXZt-!Jy7lP$Kl-@={?U|Q z`-2}lQT~W0N5@8-cOHFWxX_Ve>#2*mZ1Z-7>fW2(7A`k$3UkXw?{AfU^6@*Lr<#6p z`+Wy@odsX9ET~Mbf8d3MGvXWWcX!FH_2#XQ-@_N4I`4upuro!@ijb3&dtk=9Fuklw zOWk?jJ-xPEcP3w$gJb20)jHYVpW7N|`^nv%-_cal_jg|Syh}Uc)lZ*&K`)T;pfPa2 z`|Pt+!4&g_7YAzTZ$0~YVe;=rsgpl-&%4k5b?Uu&lh>n-6N{TODQ>@ie&-%>-@bA1 z0;=4BIhc9Jto-Ru6S1z_8S&j0?lW1x=L0XI)os1^1JB+Yj3qhO@2d2*Yfs$U!2PxQ zgbkE_^pih?R#)oT53{g^+GF_(kym43_xCgMx%{Q?Z{NAVhspI@5$S7_56l*{;rjP} zzZ$#7&pz)05Kni0=!Y+)z4OCAELX~e zj~`)W@8)d{k`cEr^pyVg$MdY_;~zg@NR{pVTQjHh^j56QnNAN9@9gSpLFM4qEtVz; ze>CuPmshok{6|0fVM_nPe@q4Z0S$?G$1q#cD*gndBSA<;j&ad)69==AbfT9Vf~epG#!I$_tDNoROx|3hUEI0+zNV zj#6|V@}&x8K50A=U9rLa`Tr@(w4_~vUG}nEy5ihW*AbBl9stg=9+0u$FbVoYeeA!~S8;CL%B465xA-c~ zoonB7=gucSap%tWfWLPCVD`7K&A)s33pbv-e*M)~fBeUvOZ>&>PIs@r^dr;%;OVDt z-TKBi4h}x^nZVP}JbiHM=e}`pqS8P2b0>+vdZI7UeD`a=aQISMdG%HB#cRt~4|lH* zKV0|{&8=I%`m0)sqi@J)DGuL|`DXg^#v6AIWbKVN4)i6OJFowee7U&ziJy=!f$?Ry z*!`KO@!{)VzjaH#eEsXY;miGRPQ!;c-bi2W-w$8zEPwtGA1*Gw_(k~wPG2t47k$Sj zeF4iCzGrjoT71tY;=*@r!k6XGKRH?nU%nV|87_!R_;7HLU&R5(S8=8%`Bj{g|Nd(a zEXConxG=%%I0EK^>%NBT&TO${g5Ti)3)}5Xb!=naXSU#HSp`DIN=Kiv#6!-Io6Qd?`oRo!ev*!1optU zd=SZjp@4zTix1FU>uZnld+Q~3g$zHlT>ANa|BlRSR9UpVG>PH7@8;P8dl zo+xch^cUgFG~$A_gY+fi!bE=%zLfL@AO6Nq$oTIX>H`*L8xq@~uaMmp{`ZaD^yl}j zk~cN%mvd&1syjC#F5QeV&dpNTHu5^XP6@zO6i>IO}E6U0w>C zZrArrd2OlhnIRGI9->bE-&3Yrvs0c+bi3Ud_R397f&C5&Q!Yy5mi!-JB=npel(Q|a zaTJ=PQl4?J8+(Ib5IuF?o#zhIdGRpP*QHbL8S-DL&H@Tf+s~nS$>W@IL*Z>(73a)< z>cyG3ZT2a|UTiwy_R1M~M@Zl2ey~H!c};myQ5HCjIty}-Sn#5r$082Jg8zJ5pV#vI zmZ8Lb~Y>XP;ML-x*@WqE{V z2_oJOp$!-!<#`%z(E?Y~QN@hY(N3Y>UmE94pN-44G_LtA(e z6bpB^q`t?9@9>f*Q`@?3Z;nmLoT8*nz`*(i*_k~PZ=@SzXvk+(`;^er zJ)TA}ZVW#T6d(CRmJ83N5}T0%gu!rEO=c-U#5Cl%Wz(K4I)-36ZbLqcLv%F%{V6PV zqvNR$ab@G`v_+Uz1TK>M0xCcd%h9$#euP$l6l20+ zuVZeY~$eJ1C!`Q5-dM>b)I}BhmDfkHgh?McmX4pM-|jl(jI9X^5TV zgboJ9E->ZjK4oOXYezb#Mf+`)qx0*M$YUh;AB_jv980Y1pGcWf>{^<`9VY=OAnRkt zW8Vmxl2~WY!6S4ev+{ra*PPF?GV(Bo1JcRjr0nlGt78bloY7T1jV+8K_^4)AJBfRU z*6s1s=0N8X(|zV@Zb}UVrYqBn-J1;Is-W`diR#XcpEKJ(;jE$DqkfE9z0KlV1!HT< zkJ9WjaETp<4&xEA4&J_dnwR`%$>9#`!&fP0j3L77X!@SyE07gyF){T`goMj9GW5cV!WX_kM2lJ01@Vyx86%l$ z119uPG@qfICvMfW=WF-vGtSD_(Oia(GzfQ9fSH_8Hb4p7H22{;BTj?vT(RK&8(Kn~ zG%I6+S>K{zCQc?4=kSPrE9Z+0L=BdIpq*U6xrqMrvRarh8Wa>0-bk z4n~4CU{J4kjiCC|f^BpIqYaj+oTOAG0IHBt+bGJ6jkH-#mwG1CdcH%*HO|sA)fd+( zBpYrpOKjMr@{9}0##a8_&nX3R@=RJOYJPy_X_qp+>=viRfys^CDl1iKwIEczlv9;H zV+LksQsvH`2{!(lwQQ_}A#RDd29^!Q@RSQh_HXUuJij0FgIh={Mbj3OvqCoo zoaIsnlW`Q-FK3$k#l$fot+*;I<;Pyl@ItO3tlFwRs1bC|i}8q~WI=AkB|W12+NIFd zAk<+K2;(9ga#V8()__G@bI|fx2N#!AOp9PEkACE&y)nAd-2~(oypPh2ePHxt%-Y1! zz*Q?%I${`!CU%c{^MLE2_Yi9;wgDgc8aH6jHBKO6oIv*+vxump#-^QGa099<)j1kD z`fRPSK^SQS%T!bh_A19xUHs#ry8gUsHkuk%CV0dt{PK4n%19` zfBKkm((DFx9`tn91$L#X9H0WOE{Fxcqz}8=3|b>NOGvZC+r=J)jhd9)yo6RJdd<4) z0!luvVamBIt&RVcRE^A2h|q5(RCEQ&c=GM6zcqmnw6^4lrK~O3gcH*Ks5C(c?c%kK z)`|y1vMzeb2j!F@(q`L(i5{5$K+tcVq!TSaE)PtMJP2q6`$Y!bn_N50=tk&_CBla} zTH3;3l;G?V|2bF$*Ag+F1y}MFu~O7kPcXg`sck44#X|=17BITjRKl2&(f>`kblC|! zWE;MOAf=J%Wd{{0C1cs>2Wt|D6bWA7m zYTP25B)}3WkB_X!8KtfrVmiyLmg-_f5N+OQS4x$}P;Y*uH0N|D&c13F1f{Ve8)PM@ zeqBo7cM39#Yaeg?3TcjuW2Beral*`P?~MVsQd|>bKdDMht$80WPHkHNJ(P8BHvQ%i zbNrX^c|G`|ypm3#8Lhz;zrhABr&YPycvZn5R98FnK_wW7O_LhxW5+{z+%fK=v3r~h z1w`8#osvuqWZ4fAWMnh=axL6j7YiS9H`3{)qrs-D)Hj8+sO)Bjp_Ei5=A&>d?n$td zVHveCJUYUvWwO#}_^^}}D0>Z7o_L`gMRDSjuVtvxBi$4|<<;2JGQHvQ+O~OMr6o8w z`s?Kem>k|$-z`sb@q&B1l}`8!mIlS9$|QFH!3^r@GrW!Y4E87GkUTX#Tt z6TeswCHG@cppwtexD@TRH+ZUrr$4V+#+tw}F+{VF%V9uIOS9C-TgVxxhH)U-q(jgo zK{sp7O2?BNpzBCHarIUbesqQ0@CAX1-h}4MrYPvm`V|-fk0D6M2Cc2z*rL$dWHzjz z?v793^M<7^euTI1Wv#U`spvNN#$Tst`9&J;G{zI`Nj;w3TR6k z-rXDKU3pji>~{_Gt@8f>(a$k*Pr_t`nx^<8^f{<2*^T(vr5yMCVN)2Ze@wqF&JK0%U@oY!Lz$@Kb)2dW2KxuPGRs1d$O`qKFz4rs9siFSh7L} zDKF5L=baa2%TtAScL#m4L%vMv2f&(UpN|97Zh0}rd}5a3lwYb|%JKvC#WEPL`IHw; zzMOD})e9%1$MWTu4ymAh3W&Ef)mjDK^iaH0;8E>)x<%k0EiLeqdrzqY9x3+}cmn>} zd13{=t8@?*Tn;=|CN@#v-!-|%dZRJ$;I0(Zc~Gu^@))8$1H3+G8p2n!#ok)yUSW1 zBK=+Wgv%qx_iU)$-n-_X6|V2s@)z(Us)3KPd@Po|Y)?KMm{)O&@$T8~^;gOT1HP*l zKFh!>6jVK_O1;@iRVp0oOk<&dUU z^9ypq%oPNJhVL*&D9v-TPdQC&z#DCGm;pOOUcNbz=Uic5K5*31kcWS#k)QL+e%Nl2 zKMr4h^B+7k@GlHHZ@e7%@@NKr^2m2F#5sDtYaMvpd7Hpb`V9QF-S>U&tpd-fM24UR z{yM)Q_*Q}MUwG$%=PL~ncxLIN2=a8MIp%@DPx6CXE%4;80xw@Ut$9a*XGVI_21?(0 zSm1y0gXDav(tD;smcRk&gbF(57vU!7{^L{}pDEHAR3Y^6?3i3SG2+4SVD^QOmu;1X zPptQ~O{LMgptmtFo=v(1H*-qsoDC!Dl6ay_LJmal?#VzYrg^m&0y+1Bu? zZhZK)zlwDnO9QP@JetLgi26!SG^*X)xE zUXv1BzzZzA)9=-~%K?ihj}`yns713jnLwPSC|;oz*w)dFzJVWcM43`xqGxG=it+_ zLJxd;CY-?c269*eeffpB?)oi`{`n^{Mj-HQRze_#a*Z$xW#2x&Rz~!2jzjWPn=LcWDP+hex zf8nb*!;-e`5qG(;AIo6Y%U}L^wUtQTQd?KcUv^)N&k;>`zwo&WicPOS`?=xEjPzSC zzB0fc+3 zU)^Pj?{8(?xA)_<@pZgg{I5T|@MS3nu=B@E(2lc3K*sE)0AX7GGJe(DE!>iflgOe!fr*4MEb^giY+BF z{sKlKSUeAWlz1!dQLGv|HaIFwUAeTnAg&1dRXoVRZ3>n|U9@ikimf+$XJbQKai%-M+KR)T5^crV zl`U++d8b=(o{p_J+8)G~oZY9{7If!VcYAH*xpSwlIB7%A`B$5|c_#3=Y+0P8FBThi zHeAcjG_*|lGS4?-OKiot9$&>_TadQmeB~>%hyH48#bM5>XLY%PFw7q@VPY!|-_^*Q z-A&d5@?Ljke#Yky>Lwbt;+!pLIc&wz^<%jer|%c0cx*Y@*qF^s@#R(=#`oBY!#Y~i zGCc#Up#eN+7Go;c8pXLy^;w%PtkUuhw&EbAK~>UVPsL4DA8{T{b$XfVl$j)(XHF$u zqQ1tZIODrH)_t99ar}+j;@8)7-TlH1pZkMtK@a|tlm}Q1RD5v|Yb)cf`0cr?N%Cr> zhU-99uYpUH__DIoD0Co%7%GHaI;a z+BKuCyp=vdLja~}uiHv{X=}E@6o7`hKi%VvZVf}<1_Hb%|3QY$_UY+kZU5e+*OYN{ zu)DF*_3a__4W6Sf&+WXAZ4Do3Y4dG*yxEp+`Gd!a+4j!!y!*Q98Fp|^nyc?)02fXo zGddo`;uGUXXM<`yD{DLu=uF;00x2DPVjfksL>rIJLpXD!gBedSqc!`_+(+$hIwANX zJ&$H@{Gl;t(}Z6?P8ttH8}s*Mea@r%~lKDkYFDlYb8HVwBY<^i`rP z3BJJ~q_~$Nv2sYkbG!pP~%Pk;zU?rgG{G3{q4r%fH2$3b0inyH8xstT=3!ijqX0CyVmu8Q( zKC;HGJswhcfw#CZCBlcI`M7F~5Q5Mv&GdhRIaQsIU+z zyw}h=-H+^fATc9-RvU6HSV9hyQ`#?A8|)5P1R@K1+VgnMFAg(fulEqp*;rt@KnQezmiM>4FWsdG>u zBivPSfu>MB-@; z5UBTVU6xHWVzGmVG!%hg=D;^$WE4at39fi#N#VF43$enJ(iV9VHpNd+FFb2+Q6n&5 zY5ePL!dZSr&^R(Qk#VT1k8gJvW_!$z!9R$M#3wm}rPRkdK3HK$Lo%^VZ!W?b#Stcx zz=ToK+FyQ?&t^I!;u9D%lpGY(8HluF^3RVkWaX$>@-dm(n)_vV{Y%tZwj*!xwCl7$K0T*JH9o6la;>Fw`-sNV7>?&> zX8e7mmZ2vsQ!{>vqBSo=+&yeJKba1BmF02r7H)iF1Pir+^1XBcu2|HPIw~6H>ZrT< zl(Wp#Ag|GZ;s}Uj;_$RvBt3aT2j7zvjh#BwxD-Qz5<)c?Jl9X?giryxoknV!`w6AN zLGsbKI}-Zdb4%__3STtwv8c@!>}vsKw4>lM)mn>RFj?A?@HF z%DrrMVsbERVYRyWpbMqM@QupG3>%*1>7(#ty}WBO+W627-BP17exZ#!ux*tBV+G5o zWYH2(Rx~<(6(MRS`tet?7hU zAMqP5y}V0Lq$f0DWHQqV;KC;^8VDE;lsyd1D`d+l;S9%hUhhxU?_>%zQ%*c?!Qjl> zdswF=t%=)jo5HOw6uh(SOY@eu&Y?H+1~`5=O53a?D}|o35Ey?sP0re#{Zo=739yl? z-+o2h*`NQl)Sk->i8{2nUIE!yK{ZmL^+23uDp^rug6!wi>e{ib79lVy2h`UJQz1%X zu~$IUWj4;BZ_6y@;o zvF*kllVIo(hohte7juhO>2hwDBos2v4comG2xm!==alzc=ks1g8RIgcArn2u;+p(1 z4_JVE3j1A1EgHgt_5~|Tm_m5agd*bOp~oR*KU@o;@QfSNA0LF)xs1`9Ug-^n$du<& zl%1DO*-jJo23U55V*63)j!CdT*gya`W)91{q7~?NyeUMi8iuoKJL1*BibN9VjNwOe{~Im?XL~|}Lmyon zIvNIRS&LB{_Oe%L71JUAd%sC}ONKdU!}+*`Y@no;!bu4SPIkY7`45E_VHYv^ex+3K z259YS(Xw>Gz`PuAA=P9|f?U99R%GKh(h_03FLXzygv%=Ni1~SW3Xw~;sQV9aiA$e0 z=eoBCx%GhjLdxY6(!`TSgJ1dSl+Mo;;aGz(rZ`xfTq%Q?c?hz+$iO~Sfas#Fft8q~ z6ueZDODP5s%PGNW|kU)^)J<0ej?}xXeDqV?96gPLxBhwF&(5fFQJErlX(a$%q_tkf!8w| z#3LZ1fP##m4ne67LUOPgf+Cq{Vk%@k zLe2t}3JE6+B%)qhg>Y9?lY}i7MQlk}3E~Vdubwp_FdXuc;wxaQ;W3e#Phh_Vv+7$C zOG7#2R5^WB#fr8I!CH=r-A_vyRZb!Ot37}ALH4jZx`QvGS&0lOJ?;)J?W3S7cL{5< zUVwmZp#&GlR2RbNusdY@Tsp!EMZpW1UWiisp*9d6@+TaR*x_XnHER?Kudn6Qr~jEd z*Xk}8lQSQu&1SXRtRbf;hS46PLjqu6HOHlrs!ei$UlxWjNJJA^U>uTmJt~|pCR{2d zjF7d0K_oFx7M@&kNbL$>F1>S1io1bpaE9HD9hNTb@g*U$cCSa;r~rfL8U{5%FG^(# z!BABD%3u3Z%IS^7N&f+C6xk%SNzo4RoH?~Y;EH3`AcxRe5}W_)Hv&TbEgam;ilOXLe~6YF+T27=j?wF8%ly*3m#th~+ux)_6W2S) z>OzT9lnlWttXyFn0!(voM5^G_+{hP_dmUa5MiapeHAvp6OAicsy4^+ zc!kw4G&yMnTC#C1B|E~l!d?khdep%Mt;pTWmK7Dt;BYrg1AOp3s(h9^)#kIyG@BnB z-6q4P(~g2e*PXL=fSj~YwIv6fYO~bHg2s!hsRtuY7H&ZbnYhtadq~M32qCIkYm(!JCSmJ@}R%+ zRwRwcG-;chIz9!XU~=b*p=vrg^>^6?W+}Np?JY-YOF#X&!SSv{r|!`!Gwcb+o0G%w zDqD3tI8ipn^>xSJD~?5N^3*Tj@alNV4vc6~*2C(&L#qkiZ#SA4Z;Tmi?-f?uKHOC`O94-~G z>UiRE{E+&O{AsMfuw0ru3HXN02h$9LHq&D{%uhLo$Dt0M4bSsvf!Dx&vHXtb+0dhH zNj!u0u$MI)-=>FsDM3rj(Vr{c#q*e}2JblN)$hwqXxi|G6r0k7`8ZBsZyY?u9XRTt zy1m3CKJ{1b6LQ$W^MW1Ud=_oMsJ@B+WT@Y_@Sv*Gr6zcqOAS;Sd|cs4GM#qg!$ zrCEMIt=V~8FH;qS`)i)D(ODU2Y%CcO(5!~0Wz zXPwz4ugmE6f|p5v_gjSTixF9-W{h`jtHr(S^UAG0uQ=%Ldpxwnm_gj7oG!DxHM<{& zI-nR>63~v5m0-;+qSfaW2X|s8&gNmMz#+`8c@LbH8)tKjmoMUyN~wSDYxskWE}2oh zz~<&ddwf>Kx~6%o2NyD1LHcKjvE^fYB1{}SY`v*laPEbpw4R!7-Lwz-SYMRut2inY(4464EHuz2)B!b@ez7vOc^Vgjrw~i6gj*!5Ui2F_)>Vw@FUXX~l-Uz6Z{@Ej? zQk|^&eOi869Cn1bE$qBefq6P(qUVmmUZH$HV8Wb;7OoEo1cpoe`t{RQ-0$*I{~`6y z|06Qi=S8w(zr=R$e`1Cy_+6WIQVc1B->M?jL})3VAhhF?^BfW?mGczh9Jd5ta5HaNfZ1Y2{Mj z?ph?c3Z>QYQrhG$(_jPC3t!kW#7au8QmuER(()lk|0<5x>`|h1W(8hET;~DY7K^AH zuU;cOXz^IpEj$llop&ByhGlPFjh1k2AL#!?$(LKJQy` z7JOSLw&Luv1xK4`rm+?0Yiz}NK$~b{D-O7Pi6*{^!xw1kW*ThqFVXnsnO(NvNQ-P@ zD-QS`TX86fzKWv~ot>SZAI4UkH)0D;*A<*%D^7APZ@m@Tz`mj9jsLFk)L-~QXc6`= z^n4*~m`sk2WXq&K(pPbQwePhRhtxmwN4R;)s;Sa8d>eL34{XLJnlhoJa`PhjRvaJo z*^1+MLzfwrChv!1BFa~BG~d!z99@N2Z`1N5$$LGo-M4K#qPNmHW3h|zUAZvM#}L5% zj$*?m8ZKHMuTlkvZIX-B15P1cP~i@(+5;b3KEfe(gO3a{U4rkLTdbD-7plKfD+6*Ba_)Vk9L$Mbmy$TQ;v z-pk4Ate75#$@AJgU?`bzyfXR3{~-xH=l`La2n%KLBcFKKMUu?zW|kZf z8YAq#J@Jk>n!HhEvJ77%q(hGOP_cn~_g39vCpBUSnk1$1v&hl19UqC8WwhScYW^qE z0Olb%r<)#o*qeNxGOi-K;KQ)$7{b1VvfAPz?lM>J)rQQ8Nd8k1{lR~<%t}Gs0+Mv3 zbA=Ppm8Zb`%u=M|Q~wT;2Xkqbdec*9zx4|$c|a2tr-%i`vB@z4TR9XLf&bwc0#20q zUaA#=7Mh4fz@6{q5#2i-%#z4S5%F?Id^o$5r1MG&5$j=t=rT}>>SjP?NU73lYsGaQ z%&^51m>(?QE+IR!P&9oUvaN}VY?RJ(DME$u_dZv(F{nF~imPOBwR44Z*IRN$d^dfo)s<2;7VRAO2UOj%ADaI9&8EP;GYZ``#)SM470(rYx7RYVCe`3!#AvQt0DWjl)xn?J)|+iPc$7 z{!kuNXK*437D)T@xd@Ml6y*&KwcL;a?Uu}78KGQ{37B5wc}#?aZX7ZO*T|WffnVCA zJEIrVMhxvB-ncF9q%rDn7ppXO&b;y=-xz9IOg2{Snl5U-ky9_~oCl z#T{5rDoWO=qLnN!o9fJb*^#5V4T^e*R53A7v-pN##pIHsRA6)LC+$8f;NFWCPop^wY80z8Z`#c3q^?7O=oU=E%3}cc1Ocb^O_Ws+`wi0{-G?9*5&ewjpmf~QyFRoVj0thcnx6HMKdnO ztLO^$!OG)d4M9qsS0p0HuN&*c^2>p9Eo6p*oD$bK!|*c9{$1wgA1spZqTgK)eC!jy zyZODFTk*iVj{g=lg?AnQuH(N&9{3hz`)-SW*YV#X4}6QVeYeHG>-cYx2fjtwuD1A# zH-=%7evPubSf@p?^SjXB)$)$~@?ZYgU3~X0>7Ty`R$Kf(|J>fqVer7ajvrj{yBm1d z@xQzN9&-EU9p4N(zTtpfPEkquGAk&n>(YbFJ*5YUcM#A5`Zoi4nP_#<*_PxXv_FJ~ zz(4-qd@a1y8Z#&U0fL==7|r~$keR&XvN9iBNoXCu9(v3!*5x}rDHB0vLXGL!4R@HI zhSWR)QpE_kMCEC!lz1LV5Q;n~8AMu(nDdAmzqR-exFSm=#1J)K{f-rI3stD&KWoEM zg_?tK_|6TLK>Ro!hAe-%F@1h6Ad`Qtr6U|rxrz;1jbA5o^jnU%WxD^d@>~KIQOj7;UEKoi1kY=f_!S`yAvXU0Bhm_V}za)(&4=b;+NhQ;k z5G8#ELj4&Ekt2zjp1-h_79Y>8$wc*Eev&qCfF$)IED<3T@b3YY))XWMD^%m>?eGG_ z0D?L~Lg(V2f?PSjJD~-sx&P~7DSx7DY9Ie^$v&5-bh9h*b7&z|_JKjPb3R8uIK+1X zNL-pZc!O$At)*!43%}>m3rfp_1=_b(V3e9;BKo;gPn^wp`6VBPRelT{YyqHb8Z)ws z(*y`83qkg?PO3u{5S0DDmX-)Lk;wr1b)9&2?MQN#0PqS#>L6PVUL$_Zo;-|b=HPh- zuR)$l!5rTthR!T2cw*RJ^QnskL1m(1^Tt4Yd_FgdHxl#Ik#mDxL^)fp`b&+FY0ZQF0D2Q=xJZJR*Zm7(-1NPEcFE_pUq zthAqQwrEUwJNjtxqB0U>j(<@P6_QjeH6s`4^IWf1C}6_VVC8M=^yks5c=>bUM9gKrxM6mw=RH09=l)(b#o~iVlnoQ=I;oAKk zdvM?=L()%A5+Ah9hNM@q?TEwsPO{!+VUkj#hxvVoTif|JBQqQ7+twO!07{Yns9yA$ zl%b%-f762!j>^Hsc*7fC3xn?$^BzkDFoyKJOP-f?Qo7lX=P9j&oJ}=L0>&RnMBVsP z4ejRiaU{^wT~$9QJ4aPRb3_3~9iUtRR8C|tQw}!;U}rt@Dw_c)K>4Bw#Mlw_L{87* zB^)rbkeu#jy*2ni$#Tmmt1@QvLdX+uSX35iprKU3jN@s>5JZE@7bMBvC8P#RDWmLJ z^!W;+9eRnrp%P1g{-)IGkXf3*(xMVF?o2=T>quoM4kuVD{1Tktloje;Q}N(L z%XE*{W074jJo6xkX->7$r&IbXQh#3QEgRjd#$q%>4JuU3%)us3??eQAtYPQ|GBUkC zaH`k<@RV4fAtSRxWEN4sb`f;tOQ|wG!e9)rBDyR<|ga5oko`1UTP$`r?`X6>+g#ah;t&hp+qhZU9*|K8IR zpp2AjU{L_tVd8rQ@yvf~F{?qsy<=$kv$mc^_M+%A;U^6ya6@JMKb~ck%lNJAcJ%W zm?Tx7xDXsUe+^>dO=EBn&K^=7Qa!364qd*)fN{AZ(`4SzvaiZ08?rtK`>w7<>@F9f#N^Y5~JHoNb2SAqXsM9NjE2_6SBj7Ln zKTPTO|6?K-A&cOrMj`Z6Ajn5rYK-tD@Vq%W7IyMO=uhmQ~SkD9*?$g&GQ+2hr0SI!2=rF|;kfQmWQmE>_}j+z*uM z^FKl%xu68O%K17kA>ynNCS#o=&-6K75c@ zKZqWo0iHWT4l3r-CE#lMvG=Z<<_bCWc&9?H0WkrWiQsDD(lMGWminl$gLIX&L0BJe zav|oW3n3M1@Yc_zP9UO{NQp0#uZt_TG$z9NvdBPrJKi8vt7wH#f_<`5eQP``R+>}u z&u${p(qY9XV&nZQy-kneHM_n;Rt>@XYO7W?m!0LjwOz}bxw zC3DQmq3{J5tjre}_lcVLHF3r3X(W;d689|?er8F|m9``el)D5xBb_w12s4BWxbAvn zX-MOjU}x&20V|iqt-S8X!Bfle9D#j~;P}2Oysxost%0wq(I*`h_s(C^t%$o_8Gal- zk}Pelj&$wDEN7`XuGP9-ka$iOIxeSm4orbX&eBqjOfco2`;nB+&lObBa>0aiYKZ6v zD6y>a%5#-FNDOzUOL_MVY6amYuc4Jes4$b3M+lcf4rQ(P8{)-fE*mhmX{P`6-|;Je zR5Rsw=@v?OQ7RbhOO*<7uuSH-)zwlP-MAqQ@oo?Peke%|U**zpvqAgtZ-fz6!N+ON z3I~~MLg=6RA_1v<3fBosP8FfThO6dbE@@)c$PGFTahO3OE{AidBk0II7umkcBQZluy4cF{{8JSP28pLud%7PNK4$6dDzbTd0s*)kxXJq&K!vnV@fo4-9G`NVq<9Iry!>e7B7o7hw;Oop=gkD$|H3N zOlw;Pota$J%wnWj)&9i+q}Lx)}Y4M+;a8HeDm#t#ugDf%7PF6?i-tIjlQ?8v zQ9@skmM@LS?VLf%e{|@(+s`koOE-DBhgs_8ley0o(S5>ujz>oiwOYmO)GFSq6%@A}*arQPdiw-$yeyl%$a z@n%*3e@#7^vp!%9|qf~T&_pAB_+_6$d>Ic&!2fDp% zdm20#fL=V7^>zU~2fg?`UE7}{GD_Ec0Sp{|um0y3NUsO?yFO6OMH+2arh3m#^?TRi zcXV=7SDLu;#P4`snAcKfy&;d<^Y{+ms}y}__r=?`NbY&VWs~^}3;az7xh+ro>pEE| z?{0O((qwdNbSf>AlbPkVy|zO`2T!}x1Iq|(8=fbV8)u|`{}=JWy5kcTt9{V1FF5}3 z{fz6zG-;rjG#4E|V}!WBY19GGeN}8@LR|@2)%k zO7!7-JASt6c)k`tm*Xet)@$pI-_1s6yRz?&*Ei;o8W+c_0?yP5`dd%P;eC5dQ>QiW znB#WM@jvQUAzHjct237ldJWLb8legdjt*Bg1M>`mTD&d;6|2Q74uCgPUd2ceA2+>tR?lA>H-2e6k? zSjoYzMOX|lZ&XDKVIBvF)OIFY#;rl+*(1NIj{SKaTK?$BQ!(Ors&O*nTru_eXl!a* zD}}HpQ~FCEOI`wrkV62WnOZ#Hwke>PmbIPg7&GDGb$lE+J4PWGudiXx+f(OwMZfrN zNS1oa!7S3D;=--d^)ibrv&oi1M=>f6-?#aOD`|5q%DD}R8&KH0=bz@?^W`2NP#jvC1Zv6~^qKy@uANnca52D`cD%fiHe>0iR1 zsLC*@lmu`Cm1R(q9@`4LMCEJTTVwH?_dFOw%|ly!d6@?j9(<_cC+K>_JyrX_d%lxv zZ5r^XJs^{2{NQ*#hdyq%9ix%VdBg3_j&S0wvTjVgLzwsZ&NVQNx*dOGz^J?C7<$A< z*S1xlc+W3G&9xh@?OMmD%+Wgbsoki%^0;ilUo&CA^PoXH=FRW3`P{X5eCK*MmqT{0 zPi_kHnq4yC-LyAnOh`Jkoh-m{XOXV-w~j1PqW*i2HPlSHTc2K#_aoPjKP$X_O&EcA zNqyJdu(QMT)Gs9bUJ8$85+LU0@d9ACo54O=Q)1xpSS`M3uJGk%-YxvVm5HiJm}Jey z#+80Xi+|ud9;fC9+&#c#6fJ4|vB&4~RlEP;z9yN87@mQhiZ$x;*5e!Q;p*wl z?z+Epvera5ikcvv(83jsO9lAK69<81OX@!Ggltj495)ouh?aWbyVD15%jn<+wxsFK z4W$M@75KXU0N&kr>h_7@@q;INVZBDv5F3vbL)(>Gr)Oj~nw>4~aG}3GUo0$P(hbMk zJJSW1=-!7pb{$_#pvf?__#}0-x&NV*jEn2o$NGK*oyO9QpU}-o+dsmfnepn*l<%0NNOR*t_aA{pHQLQe0d;KyrT!ansdV@m?)pHKr>lj>N%`ZR7wJ6>#4A#4a z7b)v~zIHg93G;5@Jc@S<@5Nhz_nLUOaKoE;^=@Ik4fucIUBVlW29_4yE$pd(@fSnO zFaC|t^7=3BJ*oHje*W`MI)459$vxi0`#gi1yK{%f0?~4QXO9x; zox)43w*sg0umOL3O4?HTl)s@k<#q?VnHlTr`Zv&&9J;v2(X`#JRr{=a!>Jt@Q15`wghuY~e2Qmqi* zF6cG;b^^ZxyzY_?yF~dNCj8|8ntnEM^S+O-@SS_CA5V1$^%#Rx)G34|q}$RB3dvb< z($JqLOmsC)b_YDo%Ti44GPcN+_QTBCFsnPz{gy7`^{-6_lZdb+tHpWu-43^=BsD&jG7BJ9dQ4$8y-G7rmu)GUHnNT9=N~^YmXM6N(Uj%~4K2@FEJQX^+zJ z@1^x;q$sw$mG;0O+(QOAO&Yn3c-+726O^U7Z_@@0Se*|lJyk`u>9&NitbGjZpkK|V zqbAF*ocL@YnkQr?E%l&NyD`CfQK=QT%*s3k&3RN~J&traTD&wU^ATPhkv@7w$0EZ4$ub-cbrJm-!voYo;0(i9 zWy1}bFv6h+WI1~(2wwlXY4F0i9>Tm|-YK2}H+IJqM7A3TCohIIUHYDf(|Lam69)gS zb2%kb3&sF*_rq&w=Y9rDfRYM7YF%RQhj^4XZ9r-$%x0F4_58dp(ET1Od*qs-UVpNi z^K5KCZ)o&9D8E49q$5qELB=;$2xmH;JWlE9!|5uvsa48KsauJDM6zPQT@G zdyHaLzOaeSOo5FV2Q2TPMfIz8seb}kVN^%cbdUT2MFTv*XAhwqA-7lQ!c7{vnbD68 z%7W?#Ij}axxSEZ~72r6^!O z4>?H4ZIU=-z#p+BD6+0V0glV~Xp5VenA`%R1*6WT0Y_peVqWZ4??g z(m_?7kB51$cz)5VJb`gOd0%Jh1Jx8Us14fA_xv?3g~Zh4O_+|M_%rG0J&DUXn*K$dM`hILZXqwa}W}r#ZX_G1F<{k~2_OO?3^wgDhth{uMeIe7l z`>Av&;~N^m#&=-+9>fEVQPwh<{M}9W`D(DuShXTYjS+g8YianjEDW71BOPjB5!lX> z3%_fE>FckC1Y#$k0Ls#%6gXh6ps^ixqt~1tsQfhB+v-~r!yW2>>}6tlpx(x&n#qxx zvUY44H^rJ@;4uBp0q7ZU<`kS5{U;j>etQdB(63R)I+&?D`ah97Tp z(cQ{}jFIoxvnn!;MMSc~flVi~bC);L@q}*Hq-Hv8M`jS7PRU+Ilmu6v(ZJlM)=1As zoZ16jSzwSv9rj5zv*z|qf@3`TY35Lr?Uu$63N}>{B-dnZxxxo>z9)C@Aj8#zSKBA5 z$;3hTO+K|K%V;jGCHaG__~>QIPZ9N|qy&_Yqra7LtH0#EJGHb(=@{d3ce|hOGD0tS z=v@DXo46*Ooa#s{1hbly;MG zME-9+4-FIGnnD1%IF7RiR|YVTONo*LI+571x(z@=FgjILax+Zo(Lo&|m#~oQ*u$z- zqUs9J1i_(?tSG?l^u!qiCGOA~NC#kkb`g@C$a;}X!WP^G z!Kqg!0jRAw04;*5Q;0Z3I;g@vNGvl87JRqJZI_h5{LJaQ9!=>S|KNb(i%>DAafwFC z_crB*GRpTuRKimRAFO;2GCzw3^#19yC0=+FMKl+Mqk1RxnB zuEbiug%Z^h?i_?_(({}Wu*abcG8A&3$pv}Crx*sg;Rt9=Dn^Kb)RMEZQLQPXR#Ddk z9?>CvI=E|64YxEIh4++PS!TrqO0RRsdZe5V3ibzfs~{HkH(^*7H+yQSln24m;!!ba zJ#~4Ep{;_6@3Ug+l6kI%bgs;4v8(doJA=Ro7xL~mA7zP)wrXe7Y~DD8Mj}5z6}*Kb zYfE`gjp&lnAZ;RSD4C?OB-7@RlA!6VEuYE}KB_(Wsn zDxih`)xKN=C8S_hz=4<-AYul}PFMy+bI8?L3S&X4XG>!)kA-{;wf_E9OQhjY;C4i5 zR4M8Zip3%3%fC0Z=jQ`aX$CNb8l6n10M}qO#yVIDx}3rm;!>_l_7X%n-~f-+Wny>? z=U|ZRqonFUU{5|&&r(Sxfn9_X@*a)`fdZ6-R^fmQ(s2=TAp{N$uB|dcwM&Ib3aaf? zSrtZutzpNi(@Rb4xOtv_<L=K#7M!*MMj$yAE1eDYB#ol^(A0*~e>@DV)WZ5tm$TZZ0PUOk$;o%2Ob|&s#jEQ;v`Yayi17l?M%CQN95N zdxn5mcuR#D4l#fKf97$q2iS5WhG^9hxW>db4rv=8^C2w=jR=Pv2oLgf9fi44YEC1l zMOGM6=FE|pQ(S;mL0Fz#G^cZmQ^avV4PH=CqozRCX&u6KIZ7lJ!2zmYJBtjt2(1(v z8)pJm3j}HNtf@z zTVWKh4~|xfOOwczGTuvL(DNF)yR0kIsUA^s7alV5LJqdoA`hMj%|moZ79N88@BXJ*)ENSGU+taeXD3 z-;22dTGvnzl~|Fm!`VefXb>w5x53AgTqvHBuyJJmWs|~!tdp!jsr$aHz<-elM;mvMXLeq1Io z7&-zX!#uR;dhv`xY21mF5x?ll$}P&4S_&ahDS~qKAh-Y_&1gu+d?d2)7~$Snt&zhu z@ip=09Av2b?En+PByR}rAAN;t_**Uk=$aR%R{S%1+OS5XCZHkpp)$38(`W;_*&IXR zCnG=9EIgy0MvfS*=tyI2mtN-93vm{fv-VH4-@~QF(rhDHhReD<8oKr+Y*&k)m%?VI zgqf^$Xr`7qgn9HIT~M>;?WNKC4VBO1@y@iBBQ$x?u(#|A?hq)eaEvB{fbCgyy(uX5 z3k6KnJ`pCb=$u(T*Dd*hh%Q4P-%cZ@3wqOzspnznh?#=xZBOxyr;saHg49f*<;?S| zeqqqXL2rB03j3SiE~U;*=L)g_%yh^+sGKRUL%AZd1;-b5a2s3}e3kTR*6}d=V1e{Y zk~ZBtVR(~UoZfa|3XP^cR?JVqb4+}aDpA|X9J=Q2YbwG|4b|zmQQXpJ6_zo9#gk!t ztP=xb$d|P~B|^icNzFpyhJ?U8&rC>%U~W1`xy>czd@T~QB;Zd@NV}dV>*snglI$=j z%KJd85n!!PI*F6+24w?{K{u^bLb-SKv0?=0i?6|ILmqSPBdZlm;Fwh{%doTzux7dq+>Bl}Sj$2Q+PUmFMG+WBhn#8=)8skw|_{2v2 zkyG2rGx}xl+tZsz>9l$Mp_UA-X&-85uVmY7A8Q$7tQkGl&7czpH#Y8mfbqIX?-_mQ zIG;A@!S?azGR^gB^Cjr~B(NR(6-NBxpBaquwj9~DAK(!Pm7Cv_`88ycj;}^9=ebSj zJZ_3y%TV(LmEoLUA?9*}zmX;vTFoZWTp z`R+)+3*cNW%kyyeev?#1BmRKh-v=)mWt>IiJI-Vjj>lZaCwF`sj(=z*$HVO=a&Wsf z3QPqYXT_r;isK(>KR8kaq|pc5@muMs?~~)V((F_&ZJI1k@u2Uj^3;h~6 z(U<1J@fBmE9DXpBx^TRcM8)xTyE-0Q5;8d)pU$e|OMIaLt2n+?z%;EoK8+s!fX7EX z4T-9C$D>8holt*tQkENI6ZVc zG3JWx68Dygd#Y}ud(7~7dSLWHVX{AchoFs@L<_1Xd1XIZm;a>w@IFZ zE`AR;7r&>!!vn9?@x}l6L}Ls-sgC#B8XVu23h3OyEp%0nD&Q6E{kh=ycC%E#C>-Cu z=NX!MYBt6Xzr5;r_BOq(xQrIJ)k1UtvdP;t@8d0UqrAiid48g?Yor!PVa>z0a#lh9ILx3E=2%Y z&81LT7R5nj3aBxjWMDDHbtMa7R5*qX_C^49ZwpJ%!0vm;itFv90A8p3Xen`ab6`%J z9(J=@BqCl07ER@WpZF{y`sd_lIev?2jd|eY#8e1znvM57ODr`H6uh~0>z1(<=Yau# z`u2jYI2&6^HQL;K?DlO^Kk&c@h3R5BXKDG~A3OuM4?g$Nc}6cT$eFDi)13q1>9xSy z{u^c6?cCU%A=6#I9z)HJzuvQ-5LepC^+y8pLq9OxA+>OK5JQfLq&_%^p(a1Uo(>2y z1?X?zJ`4QXnbh=)+Y7~aK6@tI72NN>@B$_24sN~{*yE#a1)yOB(*-tEdh@Q0rjk;6eX3TRei=F>_ro3ojJ5gU(>oLcdf$@6xn*?92E zfRj*p#iql@Zp?YXX1yd7q ziryW}ch&H^N$f+~>~^&kXENcD?I>j6D_nEW` zotIZ{b)~G6vV-ghsgg|@>qr-Bbv~~RqA=mL&@&<+b@Y^D;X`B8f@oa^>B~bMJg+}J zhkgls5`+&!3#z28iT;7d-MFgEH}IUVs3;7j%8(;9L$*Ke-!_?73}7lY1nyN9xD3^l zh!_b}0%fU!P#{N&KKs);SE!CZuLQ>`tgTRrC(+@pOq{&Jj#f4hq3JfKxMJc?CTHIsss$W8^nlxxx(X5~@wdV@d zv@-aI_)du=`W@|`}h<>VvhUv1cG^6IN^zNsxI zf!T`lYX7FToP7Q3eg7#ot~h4n%9p?1&ph>)XMyj`a%kCmHB!GSeDTmYi2#@=Y{f zR7qq@!BgLg!?qw#jV%?smbaet)Nj1;>L<(gpt>yxucCzqT!opKwAx%m&mYN_^u4cm zbu3S%8Z`);X}I@xT2ZB5#CsYok%qods-|aL7oG)XObun3Ayram!synx-e}ql22~vG zv~0!cI&Iv^^c4;3Obst@%~9gJZ^dCTjf;hWxVXzET5mR5I(Wf}f7v4N3o1saB(kMo zHc1jii>JmGuxyxvgq0e6b_ymJnFub+bn)n`atU%lT{{0<1b=(y_P3YZQy0^UCi@-G zcwZIyz7lH!>lUuEj=`BuljwBdCm$BAW|wAb6lKJ=D{V{_ZtKIUM{F}Ghkv$j1Z_vbM~tu|VzUI(9UamloU zF1_FlisZX2lkBoqz};51gV?&J)|UGZSngi|AJ_p#&qPz=k4JL8f7840PH*-!(``~PT z(^e>fNSR%$M}4mr3p2?KB0P(GPaLJpnGZ(x?&g{h(bRvKlb{SR3R1sXlUFH#PQ~*u zC)xWy{p}=@o9tLooInX^r$dW}3Wc$m3p2jmE`F1a27g94*c=&E&;Kea+MLr z(vgP^1Mn4KG+-P^dE~3TjNMR4@d;iK?THj;h(!oe;q6%_WGAyB$bOwQ76Tb;P z(kzH=LPMU9k|Z`PcKJ}b96OOT61Qz))4T)qYIY;+3CQe3=<*Bu+;zb|rEQ+-7cUM* z!1!hIh^rm#-Z;KVdm0dII=jl^0rsDC7@;;OE*I`SqnfxYl@rL2 zjfP2nJmHZ4(k9tqCYiLPJ8Ifb;>tN1`%h9G^bib}2~2Lg*_2;c8T^eUqp7jNJ{_@Z zvE4c1qQlxLy?N(|^6hj--E@4cW~C1h>C*G3xI}57A;V|nniV&O6f0uP^E02 zYux`7q@8{nWZs#WSwqAwG?>4#(p%!RBWq)Su{2O0ZEoh%mU2zMO+VIcu$?b4%%pZ# zX|+49TQvLr82=FlTumQMPpjK?>BD3&PuRs_&8#J`J^Z8*rv} z1GhzMPglv@WH#k=1!U@wwRU`}krjg)3oP?@r}FK&%!o-1r4--YvHsMZ>=>5k)y^FbrH>O z@k1s>kz86NVKEBm;g}g+jNTAKw$taCUFJyQfLa)Tfox~9Hk9FqdWlZlFDgSjUuT3IY=CMIEParhAW63kxwy&1X-3i>?f7N9ZmtG z-~RXyJ1ZTQ>}al-Oi?v*pr?%_85)}LmM&0xge2vvI1|3gA^YfJ29oj}cryFBo@1Y}f-j-X0cEG}Xt zLuj746z!ugbN7^m{n{mFl%q6crSg=t8OAHJ$SOxAy79tE0MkUvk<`g< z2hX(-kvfIuR?zqtUKlRZoULUZB7#A=9~5-NNnr~{A#)MC+DQPV;Pf-FIet>EX!7NIQR85l=zXWLH0wpj%*VCXyFLwsA^OeD1 zfGKEVI@A<2qb1Bsuq4X=c9mL+G#;cYDKO0Ukc-h!+{=kP-zLK=jW@KYqR76{bw*yy ze#OB`X}F-phxQqCFOrPr@*YiJspn!W!3gTJlo|$gW8nr!PS;oR0lLN!A)1P*uGXQB zFQTs7GhI|lCM8ET){5W!@?xR`l}1o`__~GYg6J!mkP1|R6hHE75m_Z8Z7$erETHsj ziAr>+5p~U$9OYYS!Q=cBVa*E%7$i=R?hDx^*d1NHKq7-C6h|hiRZ5!lv>LFy;K~6i zxsJ;j-o*lMNzt4N*Al(V9my%+ZsyaM+0wd^&a_(x>tOhp{3rMbjQ;)oTZrx^GiD4bPd843oHtu{8N zs>;?NE2df#)~OsqfcX*A0n76BC5X9_)l#T|52NBK(ydbHq=|D(o(V92C@=&nA@HC6 zXMyj=7H#!#NeU6buNaib_b(iJD_bkH-(0De8qzJN)(b^~7>=bzN9HK7VgemB9(<2f z8CecmmFcXhq8=TO<|K;Z=GcSq+!$pbP=X38L6Nf4Wo>wtfNNTSr6dar2wV1$PM)49EWE4+dwz#%i-6v_{*6!Gi7oYL#(BCdm*p;JFts&>JlCovCUNZ+v%g<^$_qtOXy zV;UJ3Vts4}Av?DDKoVmh5q4=|V2%F1P+-o{sj97n zc@0FmW#X)fSb&=lc7#ok+j4}>AZ&$0Ir^v5pu2cA<(Ghc}ldwNG<(+u$DdsOJX? z*0+}aCfv*Ss)!>lQG1N>`y_vf>%ks0T~GP-FtvvnnLIvXR|r}F?;>O~$KF#)&O#8Y ze<^|B?xcNQF3VCMMT%Y(ivO~7+A}@sxR0XiZ~1LbOuC>^ z0xrsEp@d`tRYUaCYXA6mo4hlfu|T`F$_3Oa^mfC&ivCZ1zC0Q)f=49 zcQ>Hu4%$Q_jTMy6fq?3&!fH4VTI*$|ZpA6L0dk1lEv1)UZpUKWUq#$>MU)VTdx7wk zN97~Pk$f;rjWa_JLkG)Ui-|5MDy39{D|tFwC)d)3s)6VMTSf;bg)IZ4I)(|^P@=!i zn4)zacu@U4HvIBDwNqoj*xEjs9?IwNwTI(mYT$<)Z}5Y|S6hB_J%4a|n=ZPMz;w$8 z(g*or0y_9MuHEcD*xsgHPTJUtGj4ulbVgB|_N+Z4?`isyn)ms%^(_VM?r7dEtZP5q z^PVN!7(F?;32wTN@K8FvtUKiw?uLo`?(uwqmTr1HHEfxjKZ66$ud-o5j=bs{6gJb7 zUgoCTo1F2uDVVJYD$yckUA(r=cHNf#tan@bueA%Vc{}N|NF-Xkux^}Qpd?*-s(sDz zb>fsLJF?J3fM`C%lzbwu=azE_gv=)gP;-RiL*+Tj7z^gsS}3jcb&=X5N` zYtzq$JKj_=?0i^peE00ODqt(=qaE^W z2G#LXcRatOBuudMz(@40?BaNpT023=d(H90*&O8#pXjj#IbItSz{T;8b#v5(o)m`8qBk+s%c&aedUaON6kiR&us45W_g~{&bbuuo~Fr7#cA+l(lwJO4bOKp`30`y zw<{UhbX&Kki#d!tyO+GiX04H+57B;>t zWD8g}X{eFsYg1q1-DvXdQ#ootO)T&8Q}>aRo0Rb$j_x9a%ru@}zn=6FV$OO9vhV!Afg=-$H} z-G1zDj!##<8OQ$zBkY{EoP_<%{6r7X7&R0ZRk>ZD5zU0R$AKB+gxv(pekfdg2!8jAP?MytZpNrpO5T}&9+OP$~c zd3k}9V^Uu5I@%s@k>{dPw&Jv(rLL97ncIe0gc;6wCAR|8aputkrf=dJKLd(7VEDw< z9>7qUJ32k~V1>{HO>dAbc{E%3~Jj@Oaa_Zk8shcN@1^B`Kw(!P-L2o`dyA8kDa6D?;59Ca2>)NMzJhy2# z+B1L97Bh0Da;H0UaC>FvI$xq;8F}~g1b`p9dqS?V@7Kk|aGo)~6K-+bu!g;U|p zuolJXfx~czTK(uZ&*QZWS3xjL#6<;6fwJCtrkN zLGLn`eO?ClETrmj_Mpt6HO+K)R~`#bGreK^3x4lUD5UVS&p967I<<5By!*mg_`CRh za&>;No&fW`J#Bw! zH^2KS9*bsU&v!qi?JsF_hwU%eFxg@I3x4ei_OIeJ%~if6qyk*s=`^c>pHRlOpo1AJ zDowLD^F2^ac3aYx_CR4v|JrM3@s4ckln^tP&Kn4BU-$ir)H*<)UN&-b?RYtuf zYPny-%;a2Q+9Hvup4So4>8gCiNi@>XPkYj31?*%3Q11}&k6*C%z`vx%DV;2^7A|ps z=k-aRaM?m_b1^ewk`)zkqp%vK%b)?xf&2yK#;U6~ST4nFe@Is;7yQ?iHU%sQj$u!^-vbuj2fJ_$tmwNhi@Kqd2f)?M3^OZZk z73U*-&*oK6y|m?}cd`{{I*qM3Q~5<-=)oWQLXZ677{4sex-ZHv+R(GV@0gE)Xe$mc z3ui0NSH6;e_LpfY0Cnw{Ipb6fvuPOSg?aqVQLpPp!#q>h5yvjYE$$+uxf*c+*kxqq zqIbWoIKKU*Nlb0BIs)%C$ZGM|*SF$q`XwiAZqDb3a-|i{d$BcVk2mMcr^-9Fzkr#w zDZb-P3#`R026(!Tk$Q8Ub!S5~6D9L}#w6H+y}Dw z_sHumNzG|_m9rLEWxP$eeH-34!}=jUvPezDk{qRBwxQSmYW;$H7cdu&a^Ff@VRFsd z_p8jgVVFir{fyn9px50Mk4U%8jD%Rpe4jae;uv$F1sF9MX|Azb+oYauHSJtagP}|x zL1|fq?dM#Cr#!9wNm`3mUaztge+oY1v&%enOK;lQq~T;zurY=^BA&CGo^~B8!JkMr z)$%M%upVH|MjBdQbHHQB**eQGNsbVTGjHnR7HSWw!lWWkwbIleoFE@?H+CxjQD5wY-9x6rnJJ0ACI^^g^bs2|^%JU^p8|aFif`ArQUPMtb+>eP>0x9+W1 zyWHH1mLdw`F*1C0o?r?%b_Te=M-HZJ9KZ7tz>7rVH_PN}UAI#Ni3ey5N4a|7>KH}S z?{T3k-4$YdQXo4c;&S1YvH|2>I=1oDCvZ8Y%)nYN#>>A71;uh@(=*knSTS|V1}f94 zVG2~v1qf+bOn`-pL6y0rmxxGA$elryx&4TI>m!1O9iEE z+~8z#)vI=B%+dLUbTapJ^B|2*xD%;dd>=*9W{LkQJt*)kS+g{22t{;fRJJ5S{j&(#$1m1iyRCFOWC1wP4UO7q6FlntOu7OIgp5o zbIiM^wbHuu2o3-tB>iXa(tIwb2`K}jq5H06FS9esG)HPTisk?(vFuP#8HoTwo<)w^ z)E2z?Gx#v1Bbf`9)9mbYTAXHnV9QCxZ_KL=?XZF8^pFgWoJKi0Xgbynu@~ipg{tKE z4@>Ak6*{?SnFrWQ2i%D9M7@Ep#^MVeN_nhi!q9a<*+tfPIad2d(J1-}ttq2fV!qHu zPR%2~h(Q#Rn1TWd!(FtNwbkHOHX0_rwV^RP`RiVm?LC5lvK z<31`L9nF&!1dD{(_;`vEE@Ck&FgJXD6^o3vZmR?36JY9XoEio#VuMqf_$6 zn)J~_RhQ|H$4B!CZ)_e_dpPB19oczy@(9@)Mp2t5;~h4x?m>YNB_z}xsikg@!P1s4RZ*6bhLE$z{ zty=cUA!R~3TXj%PaFcXQ0xa#FlFL{fp^P^zKVtVH?;!a4Lz7-4FqNbU3)+LD)cy*d z9Cx9QFX+6BkO zHRB`nG0K!%<^^h=Ne@TU6p_$1-Gc zz}@cpIOfp|B2J01wxJDM_1qJXx%N3ph`)DZi;qPMn0!m>X!p(Qh+quT-F13XUk9NZ zZ(VZwW}YQlKJZdCep=)Siyyr4!d$v7KF@mUlN#`h%^$lckE^GjvF)+aeVEVE_7{px z!u+b?x$0-?n2?i|Bn3p~YUh9E7o}*JQTa(_Vv=q>jy>>;k%Wq*GxjJd6AloGOcW3D zOcC5N0yV)Z(qWY#P|rM#Js7 zqYuOBbV`{*!$4iXCrs6c8?z+~Z!L99JRqDDVs$B^N&&P{9y188@StTL0?HJKu-Y-( zPg9OxT1D*!0=>1sT%u~apzvx$N)AAjGIi47srg4_<%xQt$>_^qAZo(EjL#YpN(yQ= z9oGal7hf>TH95M69wqh~;-At3v@mWZ=}G)rm68zlDlerFf>iY51D%O8YDG7GNli&J z4B-lN?{ce-FJ$O8>BtoIkh10;NnnN^d!9Whn{j5$o<#nSLf{vtXcXKxj6hOG@Cdom z$8dvX3{|ADZl?jGJC~n1QSq<`lEmVgcnZ*7C3yX)Q=N zCJAr;S1I-VKw4qP=frb0!jex{6E&0|fbm@sn*e9CpaT!3jrOACb<`htwYpF&ttzzm zmt0k$F!z7S2V5e-VJ-~~aW7N^*BYXna>A0qZ6x9f8?Zwd4??y3u;3a72||3yk-Iwt zSZ{?2bYa3G2_Rc|2%{(4YEEmy=4s9F@p^7yJ` zJPK(fn-mdZI)+t`D?=?Sh1H_SKd7p*Iaf{{9s}!S91T1JgiI$wnKMCM!C>tAeYA|L zscDF->6h4!ei{`(=EeT7R4I((jRZ?~CgcrWL7{Av1jRBMD;!|B3YbSm$?+44F_d|c7My$|=B~~;%DwoR<1P@-1P<7S`MGj4xXlW(h z4cy=~sv=3kzk(QrY4EWxk+fc7@EKRuSX&;P@J4u*Ql6rhvdoMrO!1_q8bfd|Xovh6 zv;j;W9CRswhhPC8Jd|@$OR^$K3>wr+S(c)@eC*p5Dn?2kx9w^zrHMqsz<=~V7kt5$ zT>wqB!rn@-HtU*ITp`d?;y;){#swS|q|XlYp@$w62Pndv;2^flH;4FjS>Txzlc_XZ zH9>?JuVRhV2PrWnjIzV*Y0JbG;0}@k3!;l6Xdk!q4zY^WHGmBs;mqaoFi3gvf~2GJ zCD!G{5DW&Ct9+rZJcW#Bt>~kFm*54EHC>biSN4rmgd?d+)-rJkjCg5aij$KMB1Mcv zNXV|Bud`m6qG&<%CKv%-#c6n8o@Q?dA9D#8z~b6=T>;PFA8-{=8JZB6^#F$yO&9)o z;4r8Y8m7`!fYbtIvdSpp3PTKk#d|6~yr(8s6Fa_un(}}Br-b@Ky5J7lNl+2C_8jAN zu2Q$MtY!^ua&&doa|6M-9suGmU?5!qRxwB%!-W@-agV!4=&Jndq|x3sYH1kvLyA?t zszDTND4}r2RqpGnGDnKaAO6Ad!E+auPWR|_Q5+oq@q0FsMXa3Rs@^q=ris4}L0%+ebo)?P!TszC?q(#_{Spa+!I zoF!!V3F`t?SKP&Ofm$@N^j&{{;6hSxpa*wno}Qkinz%-bpldev0wwUU z>`s1xX9N7&ilY}ADtP-Wx*#U&Ro@7VfwqsuuPLaQfk`?x8GJjQ{{3jJEapvGdWAo_ zylnj(_p`*Q_Pm_Q$8??N(FxO0zaIG`jW)!~kfa$R4+5m!!#|<=G`2cnO&E>qC@E-Xp*JoU$&0R}NFT)&dO-mke!5t;lvr|e-@?t`>NUnK2 zGFaUYdD}X89uCvvq&U?_jfR7EKTU8GrdUi5VPaDsF5d}8AROYNp=!#8DaykVkIJaW zC;wVNjp)e0QIkY79$=m8HLbWWPObZF9hze?0ty`iJ; z(oc<@AY}(a;A4#v#B+{KI^FfaAKP;}#{1GwQ}Ltz^0m{wE{)Q=rmyh!UHcGT;^(9| zA|$_pQOb^xV_IyNjnG4>+dczd&Y#I=GF07)vp2qhR(xuZKkXeu);upsy*2uM=`%Fl zt@NJlW%MY1fr`|Zwm;3!z%;xuyva+;QF_nhwQY*izh`pu)Lrx&eBiT{4z@8cv&au< zHO|4?#ybBb-3ncr?b%DVoUY-!8TWns&7JM$wy=2X|zZW_af?V^gO@r<`S;C7eq zA&}B8<5V18S@4lQstc<`?dw;3nR`w>X}fMX{bZb;LUVDIoe3v@i~y8qb7hA@9$lVJ zmNMBx?13Wxx)ogG+ur##Ive4D?PA%Gn@S%xP}%aGx>E*M^h)^ln@^=ulxNux0QrSyUA?lk$O{C*6N zxX4omf9iB?_|V0T0uP2C@5%5eR}F6)hS%JggJhIwylHsCoX+AN1|RStHx`6!8vfnq za8|n~?fmGuH%@8t2p;XSy$L+*2r2c@wC~z0TX7zaUn?A4yUc4ZntXm=`wDlaQGRIp zQrIdi&d?A$LMVW-wqq*}_aV_KET8eC9$(koKnj*mvivxItqE^U-b>R~ zO@!qqmySM7JU?4F(e@YNmVz{s_r7%EuJHa1Iu1XxtC1{U+J3*jV9r}t4o(eREx+Bo zL{pb8OJM-JqXU&5cyEl|31=FTvTm&dkGZ`sp|BJjwru(3Npw*Bi?S`hB{*?1X?J(@ zF&_AEif}Ans_BVXSpL_!@$`4Z55$%mEI7TqoM7;#7+y9Ye&_(;dkt?i?P7SQ9AS8- z4;Oczt(yFH$35*H!;fWf74m}Nn@j0yk5r9!8GidghJVjR!^aO9WAJUp8s})FoiIGr zJX0gsZcd;2a)zJgi-sRp!;f<{d>Ce&?lwHP+Aw&#-*xvjeAA>q{~87_W?$iEUvo2B zIwOKAfEKT6VG9l+YIKWVZ38p#MtDzL9jTc`3R6YUnOHJ|BelYT@foor+Ta-tKwRJe zqdjOIh~ZQ6n`-gERH>=JxpdgpJ7|X*Gq?$_IcV`rFgGxf+asg^lg4x-QyAc*?=A1- z2=nn>Rt6-1&Xip06wC~&SU0%%eFKAg(sp$Bkv8yttxs$g!Tkl_}dX*hGn3~f7cMgoNs_KewN zU=gIIsJx0XTU(njAWBWbQW#J88>w+$f#g4oS7+h`;{}e@{~+ytl`e5E>D< z>%i0L(tWhG_4~B_C0}~@_wEyBGPcL6Z}ZT@J2&|}x48`Fb6sH>p?TNPnAKrfcW^BcI>|1X#s~J7K^XezMG-@7-tvG|-o4O?@ zk7kq|DU(~@!K|j4Y?rM#lkM1wlZLH0Y+$ht%j{lTQpmRb+PUm~>C$`mUpgfm+h3Yy zYv)^E!rpEP%HoEr;Wn(eRu z4xP|LJ$&kHi8ZpFb?1q(b$&+XGTEnvnf`Yu(LQllYJj~qs)>3kP8wf}Q*mTzHDhXM zFZBqCZ9&5IfF*`fvYILHcd1D+_I+^B0+U!3t+l6c$#vvJrOvB6itFBmsa~hd?VU!JTU`5YI4# zp{HUh0?`^F#I%my7KsPqZlqG00=p%mneu^+q!1)Q<|~9UG@rht5>2!7b%U^^A)0wZ zctXzK{+kLEkRfddfQO89)ASAc;4Nwnp#cw4hSb<7AZ`i+(+0l3l)D6a6w&En67Q|K@off1mI65t;;Mj`unsnhboc301 z#bH^XoQe}$ao#$&hu^QeFF^NFP4e^<%VJ-_Rvg!$$`+hXcsLbj|Hy-W?-t89N^ zLTO1bY*^XT`0lZB1?p-m&NKS9k*zrU(v{P*v_+?Bc6QXm1A9ux$2-?cp4YE?H|0~Q z>yu9OkCqd9wzi5cTkVmZkc@A7I#!dLok?hpU|~VUJnt)1`wWADr0bLKf~BXzfxx1= zS3HEloxwJYC3Q$)JJ5gnn#jL1pb12UX7EszdF_9ouT=hKv~LF9q5obfB;3p%q4ths zZ4_mb|D7c!llwAW5c;q3T@A`PmU3FXS^|eT<_2|X6Zu%vU?LQVF^%V+#vj)z>|~+` zDA5nnhi>2oLz55E(n?;9U6UOur-rDp){b~oa)3%-9%{*CF$yi4O@M&gO(>dD>- zb7$jn9deUgHssRRc@7&(!|m5GUv4}4rKT}_TF2u9iz3sL%g%RT9(uABY>THnP8@EJ z=Rt9%f~_9f#^mGK4=tUTM`c)>Pg|s*kC`7E9|^YTf~09@DJ{5m+b%J|Uyw8jm@(LH z)~B`j!d&^=n!VtR{EzzBvPj`$USS;3O!E=GtD#&XADWmiT=tO1}uLeNCaE#^5e`A$?S zDl>#SQ@v7_HXU6((!5EAhvbNX6UzyBgxN+cV^(e`4-ZnU4Br?eO~2&wAR%^p(zgk+ z2MR`VJwYBTXUB)9(dv?^C7Bwb@r2ZoP5g^JZp+FQd z3?Glx9^v2qKt!q>B|$@Swb9bz)u4%r07O3bXeJ-!2iowL)?V;mXV=Im-k~)p9*Jr3 zVrn{Co0u@eRa!hpV;%ev6B>Sbf^A&pyx`LuJ>ymq~h4VS}U4qr3}+RDCr<73+|eTwV<#ov?U@ z1my|JN0W~@Pw~A}w$f1ZiCb`qQ=VLO4?jUu;jBibx4s04)jYWXU-skjyCt{vEf1+_ z-a(QoC2EUaPATJ3?egEHZCgauGXSLQsngh?6Ni%2cP36w1xgvZ9oS!H$;=7r17LBm zu8|Z?Wn>1Obj3`OBN30aRj5sm6Gj(@q#nmO=Zq4^NuLoW z`aKgnMeyZW`TAyG+ty+yV;M-0qD85OkAE9vDMQwU7&9!fyt1QARkyrVQ!i6I%dw(b z1jGr)xV0IR140-YR9;AdncW}Kwds1sBmhpNgDcDb`Ew+26iGnITfSljwpW%KK}A5z zULGx^xp8XB0w4|E^qyLyB2jF>Nu<>bi%>Y!B8zpbgClj~7)M`D8_gLW{?%Yhe$r;w zi#~@C-+zFxs}LzS&uKyt*|fC3AwxwYrZrmV+4f#~S1601s)u`qvQ2y@A*C&!W35|D4ug zC(S;J$#m%{C!1Zy2RI3`0p%*Q2h)fAWT*EM`-fSIJbe|zEyz!79ONByql6g=)3&0Q zWu4>8 zX!G=xTEYH_bVKExojj#Z_L!h?hnFFV#>i7+1tA8^>G%lY%*}vprP@hP(p*2I5OwHC zVXXqIW7hW1{S%q;9-#EHo~i~36pA@lfO0H@LeTjw#8P~Cv9OA#bmT85c#%N^Ey)j% zszENw0L}m1XP7;qSaRZ=sV=SKevqBW30ICazmPin0@F9BI;8PS#+(w+KOV$4* zh;ry;G-z3Y3PCuIRi+dx=rherb*DGQ0+G*Zq82nw4<(``40n*B2$cs8)mzmyh7Hkv z>VGIw8F>{gCNeN3!WY695y+MtPs1pHJhk(r#;Qcxjt$bO{-k%uEpqLwR};&{y^e(H?5NroY2d2|+&y2UzjkzhfPsuS9& za?xYQS$QF){A#JGuJq|2EX>6%qSUf9@!)bP<3T1=c2{v@Djf!vnEgbE+gBRt3nM`4 z1w?8l^NGj{Ug28?;DsEs6la#;(x^gV}hNr=;9h25fgA*YP zSr{8DIztoTNE$evaG;c)R1%52f+;oOgk(b%x)^?lHazP@(pBK`Uv^cE#K0g5O}Ru( z*-95^M(ziSEV>kNCWR^?qQYU|P!{pph=dUk!Qzs3@_@seOBhMRG^7$h+`;QT#Ketr ziQk?4C^1onp&*0>k`xzoVai0Q&^s)xK(Rv2kqDJkqU6=^GOM{L2n4y2FC2Ly=ONz# zZ;TIx$C)yEl(&SHqefpVwvs+bgo}$ZmW<@N2OK`w3rEDd+~e@d2_3BB6}8+B!wky1 zSXy{cxo}1Szayk735oo25R6?V4zrJBGQb@iV=p$ke~_+ zFuBe}yKodUyaU)!Bs@eoE*(2C0~rYx>9UD>NJ0eCwV9ceVv2XjLw;aZP$_^hp+u${ zr|UADnj-EH;xfbr6l;k$nrE(LkgdJze1lf*GwaFG1|wd(7{sjh*!SN}Q+OFftrsZQ zxX_BXhlB?8?kcH85}anp2Ghb%fhlM>CbxnO9x(nHNWzO#Yany1w9MHM=1Q~?tfBlB z(iI>Jg-J^gHzYypMDYntTAlIknlVY3iv^gMSc||)!r(Er03KW8DuRY;CNEXKl!zyT zqDts=I2fzy6S4`lzs>a3#MYAxBifkvp)x~1A{0n$8mpm)mC|syK zZCLT@t`m%ky9<6;en}!ZBSm}4{f~cj`*Rx1WLM?uiz)cwIMOQ0>^PtHSyHIPvww0 z8Yy(=T40TJB7+ha%}1trFi43FMarW9>O_}QGLr)!MST1&nOb(^DD5%37>JIYMf+8iKL;+b7Qk}=ss}svrGiAt#8@vbtTW3)VOhs6z0HX#WdbD)vxbB70x}k>w zkWlXYwld#6N#I$PRX6x*ri*-%mM)jrp~gg#BJ53ZR>OTX8F^;qD<@7$N6p|<#lCPcMr$3jrLgsAHjD-DT@&>nUNIJH3-FvY6Y^8Iph6$(hC7T zUMl)Cyn~o7Voy-}z92l|*k?VAJ#f}$s#Txo)k~gGlVD6 zFqOlO#nv01RIhq5N#rrQZVjhqKMsf11~Ujfv?h)B2q~r*Bnlfb2VimN>0ur;98`dP zsR_6w%(w(~{U$VIePAHQ({iZ@(qVX&Kp-*kP)ExT9MZ%|D@|{6g0ZBppN?$TQTIE;i7|ip# zIjE!YZ9YxY!|7;y%7z41wE~aQ)t&z1aNWLoW%_FBnq2TDZGU+l`nY+LWpwBGj-&L7 zmePGD+0AzPo^%%YQ|f=y)I(3V6R!GC(6o_QLLFFze8^t890 zwmJJr#;-i>JU3k)pI+0-{Uhy9k3BWF*`0EO?>Mzf<J~r zG5GxXwc$rHtx}Jh53dbR=@~CoSWYHG!#dV}#jmXz<|CgFK=p&MPnuuOe0R z#6t#7TSk+YQWmUi(Od2$XiYN6Z%vcJZz%TgK3*TJUtRlSDuP+Vha@E z9h&+kW($;xMQWY%Bh0ICFn>Us$C3GO{b5*07TF5-sY&UP38l%SYIwa&41=HU`i9{r zTZ7@BpLg%T@TOrJ!+*#04E)Xvzcu=X%V(IX9Tmg3`RUo0H~ii!_KppoFW=wr>Dt|f zk9T|3@Z&rfULO+Z9H<8wp0y1Oet*LseqX7GV)$}X;P;$;soG&GDZ1(kyxlA!e!KC& zJHkZmG##-6CRNbKiFc&L^HM)>s$<-Ca|Tt?3Qp*z)aV!;w5$e3hS0}p9yfNz*@81! ziLTdDzQ%3DG6`%<^jvVJf)imTcADXWEy5*F#EkfP#U;40f*F?wqXnLMOX0`3L8 z;s>+tA6TE95QghX#(3c!jrC-p)Uw)9;TI-ZR=I&kHO5DHE(91?Or0-a)Z+W89Y4cD zd7H2GVA9w3(^3a_VM+u&JGbb-#mdU#^r`Z5{K?Ezm?=APz}K`RC&E(c($+VA-DeOtzVx+mLQgxsrnkGzrFT6RC-e-s zYzxYx_rC8sdu_lEKN)xwC-<~l@Bg57g0#&+V00l5hP%rj`W|+IFuj?5&wNRCg^m(8 z7|-}pvSO6u^+Y><^6Q@=^S1r)qxx)_tvF$?D?3+W3(n4!idS24Zs=qlq_p!WQdSNe z-7-_=|H_95tn6OT7XpF55fb>gUbq-H(04 z^Ia#r^J>?PMx!f}S4h2e=}8@n1OHJu9w&3GN~Ff}4Udiasjxg9(%z7zbsW)#<*(^m zZ1&#VcxLV#d+_k}XarmB^*EvD%E!MYPUcx*Z3|-a&|}|wvop2>U3vZ!oe{or+L8KF z)I;Jlog?Z4lk;f`x?JA=*x8v;ul>b-#k2M1di?C= zC7sYi_{w9~sRxcDDtNsWhtyH9!@xXEnWQL`(hvO?I4g*#A*3-Qpn8Td)DppNtkfe( zJqwy%z$+>cZdunTkyTFct)wniRHRgyU>7;UCcFZ*699@wyut(uhuof0f+8~T5MJRz zt*(=FgWn-%9HeZLMb!$LfhT3YAoEJwL=V!X%o{4_wZB|W#p$}$sW@NhR-D*^vpN;0Y=8NMvi;?YUo6{S zzIeXc{_@GX6-S$C*#7d7gE)!i&f|}lGh`l*Z7_S&*#7b>(`U5pt6erkA#%ZfBus%l&v@~3|nzRm+RNHiRKr6VduVEaqgpwq@BIqf3j@F`9j%(v$t1H z>M3XIaGuRv+kxJCtDMmD)>~6;3t}sdPUg`T9Bm5<+>}#sbTZGqr{eG+%&9nUy=CXW zIm~J5{gqSC)V#lftvFrb?h2lCk-BVu(fIBPGo}Wb*qOK|lQRbJCb2SQICRZ2j&O!d zm&kr^Dk*$y`ixRC@aF_KU%!g zG{PgrCU_cdBUu3vQ?~GA78C_7yK&&OxQ?MUbG!%WVB8EoxMYbO+SGW%@CqLIE?W^Y zJ>YvAuE|y20yOi>e~2dxR$t)ZNjZL~+L$VHO-$d<#?8pG&rc>VAY04BZk*bXNbF>H z%(dXsGWrQOai8oS`kXx*D8$p!^~H=Q5;5*J2?h=UfaxR?M;D7_WheFp#2s^e)NoFX z1@E+oGc|3OpSlnINCI%9V>S3xuU;q5APIqF%nX$0eU&`Lvlwg1dJ52-U#XMv?XmHv z=K>(38vaFl`)|v`Y9tRnlt7HWP`_!*Petq@aa9UzhRT0-fv1m19L;Ygt(^}>2de}E;w!J5z< z452HnY8oxxVbGJJL}Z$TfS|MAJyKQDd@_Omd&rVTYUD+m-vZI1lW+4qA&lY zi&*f2q$Z!g6XkoPdO}7vwHh54!T_qY@jzo&;3cRcC<^~lVR>n&!poLc_^ zM-s+iw?c}XC8=uT61*&N;X*GwgrcaTGA_6<5Wke=k`R1G`t~J7oY1TaWaUe&5RG5k zULuU#JxVc%4~%YNjppMavQBCsOCD`dOIT@!-?+rpy0Rez0Gu$$A`cR}hT z%Z4B;Lc7E-G=RQH5|)_B&Z%cwz=C1Rd2R0du01}VzNd9uZmo|PT&aMLA}W+z4} zQP^Msx~i%hXRH+s8V@godAGgISxx{(hy!WRb36GVGfUow^HFNN;v93oi#E?mI!C+w zE)}1vVj!Fe7U#qpd50FCryRv)rOg|fPM9ckNA#I|B>PNBc&Hzadx9+W{wYge-pyrH zqKzD;4?%`?d@4dtpP(PDh&z0Jvq}+HxY24q_Jx&ucaUT-w8~u zX-8}?@KHlx)?jVZw1R(aNkP7bN&a{B0n4rvMj?h7Nf_@Q&b0@Hwah7N`~cG*+7D~0 zdOv^4Swg&<-VHk={=1Q#-p!IK2&+R$>~K}88J03m@^TsamXqtGxiV**rHAK^ZD#Q` zbT)?Gy(Z;G1g&(r%2059C^a>Ts!AH?>)wGPQ@XaF*;7|F>P0X z3dlA{`}R z1b{}nz-kz26DX2Vsl(k6`4qvK4h0Cu~T(=lfYkO50nuplhY_^1xitDq?kr&GF{B3SLNX! zC%7$jaAbByusJ@oj`rk{Nt8=BrwKwPhZYT9Nv9;@PAe~wAt*Iw1fb}RS_g8s#OA0e|;Dc|+CdWa6Cr#f^zmiI&zlnr~%H!n_njX%bNbFHFVQ!0V>J;3ak-`=` zpDto>B;cKtP!rdPt}K-y;e5i>DpY9sf(RW-rHDmlSNS!X@6Sv9sY>dy82w~o{J3sV zXc(;-iNEdFi4W4%GWw!WuxO}JnH3v_Eo|79k$q@#ilu;t%e5;UIyK7mP$5%^q$WV7 zxYR}yT!uzaL=&a(gPn`UC^x1dJg?BVOm$TSDTcoSBo(i7QGR9C;8Aa+g^3!`L()iP zqJ}Jrw(c>yDHH&QwFfS!6dCG}scV72Ejp_?(fmXuNrvb$pO?<7ukecCl$Oc^OMKh6 zrYQPsh^W}XPHqK@C}TU=vl4_{gHvWzlP4xdb7=Agh|}s7 zg!?#-M0%Xl7EkdB+HG)N;sIBvk1QpG2`FJ_5%NNlt6~ElE+IUIf4J}}AOosVaK*el z$a1nAm0b2XafJZ2prGMLrvX;gkUdC&LIQdG$S3OEkXs+yfNG=%R}41J22E4YHqS|5nK z6)qA)$Sw(dJEQORFOMDfok*`tW_yCyvtxIX~G-hbcm{wf+|M||E1$%J0&o#0vpL0 zU;Hkj^bC$L8cv6n;jhUzk?6YL0iB#kD4pafql(D2w8a~mRWC?-dcBHK2-L*k)1r#N zk%!o!GBl|Q(CsDa`UHw|tzZs4KowPtw2HgigBm{2V*a=a)H;gNJV=TUJs24h^QZYW zZ37puid}f^C{&=RiH5cs?`1OVY8P1|Uyy+)n{Sxu0qp{oRmONrAUu?!LLNN#V7rI1Nl-en6{=Tx z=BhO%)79c^rh@D%tFAno9L28!S-payzg`<^Ix z<;JvjPHd-Fa4?YaLOrdW{jNrNJGg|x-%zm2aItJ1=d@OrrVT6Nq_{khKwT6E* zeU1evPQ?jLnbh#xRZIL%*_Z4}QQm2BJ>3c^*HZ`G=n0B&?CpvVFkD@SiIvW{GNDY0 z0t$&?7MS!*NkuEOLHy1tGIBN6Yvzca#G)*B+)}C1DWtewZ|U7dtN|!telB#e^qfB7 zBjHTt*E7F_?7|^DPsi251O%ANK`#`sCcnc8SEzkVqTI-y!OB{&MWrkxMa)qkJ=MRA zcYeGcX)IQwin=qEG{%}JnDcu+ky3??*@VTDq8`^>dKR6Wx%(pRn_jvtxNd1KAMKG3 zj!|n{CM6z^nt92Udhm$Z zvs*~&R{g|au=G#wL?q6Dk*cf$tl|dj)gQ=8V1^BVa6lC+91KIaFk}1;DFnRIv#%Lf zd832$Td7hcDuvaDq?&q-)>6voDSK2YgP3BIFil9Q0}aR}XEKRaDDPdcGF#AXBi1+k zgZF}zA%G4WC3^c0q8*=ko5ruFvhEI}{O%cRh|ZQA7D)8L$&!gOuVLB!M>z1jV=GR2 zqvH$2+gCH(9XmsI`S88l$_JTsPj7NFBOI7mpJbnD^Iwx`jAwy|tvKdgy4~_=rwl!w z3iDyL*67f*o%`H*$8cq?tvFZGb60JyZ_=ONRdroSA7`01vxn|yvZvf%nLa;v%L#0b zlq1$H9Vu7Xf+M^GK2AIOT@Tai0PP3?PhJFPe(Ch}BkpuPKY)cjv>-1$oM$sm*9<#( zVC-@weM|g?5n)!_N1I8yJnn}!ej zppXo{>;}UJmWrZp7(P+G+&n$1ZG|zlfN)z4|FhqTrFj8CRpN=l@)P^-?o@?M`bbEu zme2fFr&9yM-JIA4yBl`CN<(LC-@ST9(IcC}hsp4a~R|mS^`1 zO&uj#Uh9GN7TZXa*n(qA48CnIcGwWRYxKuvrbVqa4!f}4f2~`(EdBIg>0)`u@<JG-yp^W^@9Z+9PLcvCHZ#fCq_)E5kYaGZW3PB5-t zd#Jozjm0M&iIE{{5>n7d9ym7zCt)fUJTJH#!huPB5fg&1=|Wg;Fld0`>IP)oUk0oe zFJLjS<+~_n4#bC0!ow;syDtb4zEUu4Ua{FWaNMa$#bGRZB|$uS6s)9(pATDbVs=Y> zkZIeoo}2Q3LuH10Uy1=NJE;l+``x(CYrIMU8<}M%2|7jlpMHN77K))ZNDUp_X^byY z3%wx?cQL3cUcq?9l}Xzvp74OhC;AE#M;NLwH`l;(A;9Q?QeHT04=pAGny#r@#~FK} z&X@?PbtNq-_Q0hUG?j$g0wa}IP>Fa_F=IFNa>C#MaM_BZtd^lep_k_fNeR1w$q)$Z zn#T4B54h01#)HG^UQ-7)QjrT~A$2xT@{hAt!vH&vfs+X#GWibjBb% zM$IC&;EYBEH;ubo|4TXAHgi(7Fx#|C>~xr#aW2`=oc!*V?Aja|l< zuEka{!b3d-W|tFoiPUiEe5Ka0G=)i|=8Q!%=s)}0Pz@f{Vzgl$p$)7BC`N^LQyFBx`pOjtB&OZ0KqRZ!A)3%`QQ|%XYDvqQq zZh;q3PRKTKxDSRm~`0OxRMwOiY{#% zTX7iZV@yqK#X%Pa_MPQ`J;JdSho4!GtvJMMD-MfW<%FKLEn9KG(uMnjovFodZ%Y?) zpJ=!T#R)xwF5uE<#zmL$xY%XP9#@AQ96F50MVB$-yQH*xD!-(72j-K&&bbrQ0Y&Et z?l=A~*nX#AS_M6D==+_@s7&aP=3j}#{}*ZvC9@0p^%p`zzy{9-_6>jW{{HWc$@Q`E zol8)1ijjzLdfcL5MwMEV(zBW|gGY9dau>`g&A>B@%`PclwFpze{F@>zJoy0Jk-Q-_ zLWsA5OMx!aBART|_xXBQByaTZIF{jz72}u4D))O!m!T%mmROIoAp}$_0^`u*q_v zbdg|%6LbMg3bfmD3cdBJQsjj#3VG8-(+m^;t6mW;M>&u+IRl4Oami92Y|Bs;NETU% zb9Dp7Hvpy%hU|qRb=r@8XS8O+B(@B?g^?}%Vu`W}FPajRJr`U7kK^jn*U8dkCWI$y zVu2kQ-6@p0BE^-dosmOBnp!=e_aD}THCi=5xJ$XD!|0&YODJ^Y)6WeXz`d~ zFIw6H+6i1sPFSaENGm4iQp!LI>M0n^Oy@Lc1WSu&m3Ya5%ZtU4+V?6_TEDcW0v+p6%7#Htq5t?6|G2)D%OAaG9FFTzmr<* zI8=$>G8COIK-f>uwWI7q9Wn|5F_BnU=8KMnaYHFx&Ac(X@GuvC8=iDIf0M+z{*}CyW4cU=ahk@kioVLj}OCN=8rJT6i$Q&?4B(_=B|!pn&!wc|(A3ncdUxBVjZKDoR*$xD^t$BD*N z|1QSuso!s*fd9Uh!%ovDB;^gHpCsd(j>9eI*WY`rwC9xQ#V8T6&YW`R$JGe7dj_yO zY1&7LKC8?_7pl*Y2OM5D?CHDd2PXZhM7$bfKxXlO=QXAo(+~AsN_Q|5$6-&?8%Via zn-b05DAnZiZvV@x=_2%K|Nq19xCI*8@dfy4euXd5UgDY;%*Hc?oe=Q0qMU1*&MhjI zSE<@pm6EZL+cE4ci1WCqsM}^Pu(r!hcfF4ml>o?UpxHrj(G)T%1MsKkdiGcIF+g^j zXaP@j&p6D7ZZ=^ElVGCwQhV}Zi~7su5n^Oa;y6qARVR?esZQ)H|HQT zw!@;LWk`7^9SV0$T^In;o>*cUbHpUUGJgIMO;?}~bHAh0h@A4YcVTGBLAq^baeytT zicuJ=i2_&W<-2pY^xVH3R*Iz62Cx9ewIa+!*??UAvcXt>2t76eSq(}F0osb_<@M9Y7`kCPI*^mr4m)w!;Y$ zSca!b;K>jb*rEw4H!q}xqRLPDas<|Gm>A{To@U#pADwD9HmOcYm~=u#?n*R2)qLw<4C_*TMrM*?9l;AVQ+qqc-p=(NoFXeEfTa3nmBPp zmP%vgo|b0$jyR@pJf{K(OsEtNvb^Q#W2VG)Pm@7sfyPDptG}sPhWv@Efj@OJ>%76? zW=aJpD0uu_CK@qOO$U;7h{xhz4;ReU!+JduQctE{bvYqyG&QGd&_GO9QZ~Ax3*%jI z&0yoDL2969CiRNL=5!hPIBKrVJNa`mY)Ur}G=i+{BgPw{6YiWEex|pJOtR8eVs4`_ zP#;Rf-L;KEQFWm^AM8Dy{1kCqm|KoFIIp^N14!kerveLc@S>5~zSCe_v0)liOzn~s z+q{lf0>H7m`4ZnELd2Gs7zdotKl%@F3b+g}z*9sju=e!|NrJL7E`eE~+QISn5e|(^ zUep`7S6&IZKPX+qW>=3}XU?Y>6i;zTkuTV&pqc}SiV!srK5%w0;9??7db~h!LqxE9 zq%uVTCk5T@S|P;nIP}ngM~xg^qS%F|ai9<{8mz=}D&;rJXM;oH0w!8BgoLNfQ3zJU zC9bTQD55}?F@TVO0=bJ|3FCTn01{U=`0`*QS0b(%XqD#>nb72Plw2~VB{58~YBb~^ zyBRaiRl%8AOQd88BO##3R^zr1w8{dH!3g4OCz!qPizzA_oLy9Y+EcM76rWJoSwl3v z0DpXiOq3Y;H}oY?AbZei2=vUarceiZk;5nxv5Y^$jQT_BMbOh#h>@f)6hlfyWAtNj zS#tVf-z?-r)q4ct6)43fSOjR+f`L(06Kyr98b98^$NG~Ph@M(0W^%38d%5iRQVQ13xLo$-MCTRi>w>Z$Nv`V}f8aRh4kCmX5-eOel zBd+Rz6v`O1*MrVIpw^Q1 z9wd_vmuL}+CUuco;=*0ERfa2o+jk$H$U(j~l*A(uE$>63NDkF|D5d!qDIQ@QsYia|Q7bw*seKisQD0LEQF-e%=DIR*SbAAEOV2KN9^kLSV_nX0=JSz(%f2x?ELUh#;5U)r@?#gPXP zF-lS#g$6*%MOYDhpocgD?YSr(W)l}bqas4UDpiDhoqb`inn%?|q-)Ts5IryaL9?|~ zh*p^-F=kgdCn}s1v5{-W;9m~@+S}_`lQ-Bm()1zg`xGQB=A$iEM z=32=mn+O!a=Qd3zgwZ9S_S6zcyA|Jsd?PIX?YBi33~dSk9_|GvSmgATJYcDrU#n?? zD`KFA0bFgw2@H@2&jo4_l}6V_$%{1++lwCJpL% zp^n;g&v4F0K6^J32R+PIuk_1Q+-pEc*Wigx32&}|J7CqWNn8Lu72fv35-8coo z5O)pZrw1yBsA~gU{&3{6^f&mD ztncww8KRcDCzFA*mset4b5=adq5M@}#i^jSAxAbC=J3N584|1>|8kUWGvgpYy9d0m z4Re=%lAUJF6$5Qx`~p*^EMj#LS~-yUcWG$U5Qr``32H{d0{Kcv1u2b8bjrsdJ4q~rrOXR%{kC9+ z7ITok=T%lY&N`B$bL7snr0#mzCMmKeQ_cPjj7~@B3HlMb8y;O955wfnZ5XLDyu=Av zz2fC{C??xl+*9)jO&azSR3nOOiJFd?DH-X@1w(+Nq2cojm!;QOoeWU4rjTI@cW7M9 zYAv1P@8go;m%S>0*uIZe74d47)OXW)#sp9_vgeNSTb$V2tGP78dP zPp>DBJoK&((*#mAQQ5!W-~+UK)G@w!tH8WgNoo&lLvu!t&wBP635_r^HSxEp)kzpaC&-Z-aE>cA=I{IqtVweBP- znkWUvou-}~C1sDiB}F=fE^3tH{T;rb@ig8a|G+uAjF*>Gt&{QobCM!_=lpiR-@g7F zT({x+<^FAcfwdLZi;>sQ)4AULO**QJcY%{m8%X^?#zUPrlxk-@`IJs!+iQD+&el&p zIxv(8+;R$AbVBWYnxCu7vH6U({_)9swTje^Ps-*q-hpet;T5TjcRTHN^G-$L#ZpI! zEO`qZ+!6nQe~kAICN{8c$bxw~bETExdoc9AM+9=ow-}yqG8sOxZS3R?F#9Fn3Ot?u zTwe@+o~q%6GbyA;Uak!vq@b3Kb%WstU9|00Z%A{yKi)q_7k2%rEpHlLI!)TiiP-kX zfBmh#li~MO0ho58R2K{npGt2mc4nQz23OwsZVC(V1(l)V#_@MGEW==M8KxLsmXTu6Xb{VeHOmk>UE~{kMD7({H^F#-``5qf4T}bBkq8A`Cg~p7M4y zcy6wLfR7>thpi#y!FH!1o@>7=O~)y4Q8`^ZA*^&R3@BCwa%`+Fa39P6>CcJr9>eRl z3Sjti;VDBV5}dK7CkOBxTn(RgPv++)!{2;Ec)Gj1a~=lwH|}TnWp+%4xVsGB?umN0 z;TdUY@*LE*@1+7Td@;DB3>C08{K+#NQri7bPm1B4+i*2}y4&z+5~r}G@y^%Nl8DCa z6o5XwG13q&295?#q3zy@hP3}Gn-ME zUdN9z#d@xAPq>Yx_YD8ra8)ecbk0B?<16!@ilLgKQqG?VJZ{f4Edq>73KXnaO$mdN zeo2JM+<9Ppnl^@4#85txfb^bl!znVA+;1U=h0;V?2$g6dE0%C(URt;-b!&p57BrQ^TdH6*Z}Y2>TFL zBvQJ0@pJ{PGIqlM@E?dcozBeymkj1?dmxzR%d@~!z0u2Q5j*WtUa(0{(cX1Nv)R3Q zCOp1&5;$jfrzqoD*A?u-oEE1vDZjW_Dwn({n;3&ADSI*0wAc9PRuFl%?auzbhMMts z|D~5``Pzv={P@bpUy_sow>!_Dde3=u*Zr_kH>@aPrcWWtawipx;* znKMFp`@6qk4uFU*#FsY;al0go&YnSpOF;1&y_)n?Ut}r!O9@&BimVb9%_D~Q$~A-fqClb z$awt3p^;iR33F;vLMHYf)RYAw&{}$_sZh>Sb|;Elw|=twvdn58du$&m>C&~wrj9+Y zJoYWi^NJ(9bCcNo=wsh-qC)Op-}!{_gzY%z)cVeoM;-BehZ#6dK4Vt1y&LD>?Oeg8 zvV3lD*c&LZThF~4EMHDx!{YNZy4SG3a+Dv9eK<5kHG;IlzVu#FmP=Fss@?0ZOYDv+ z-}Cn(syb2RO+xr%{(XU3+DkHqdfJITt1)3~LE({G_N#J3i|*UrD@D8o`oVJn+d4#b zu(B<~GOJqa`_lDDN_*0{RuPGYk1Yqwgu3;gHR@}fiCA_7P3@D-S zuAF}5E2EHt7x?zRY0aT1+YDB}Oy>8YM_auQ{a-LC{kYT7or8}ch*_;@d&55HCn-hO^x?fHk z+uxUzx3t~z&uP15+2W|}mVdEqyS(pq%j=V0dRAK;Cr3Z^Q%YU7Tb`Fw*q-VC*2V3X z-xpgyrAyiR$p+HLrBksBC5o+|Z@yXV^5&amyXEcJhI(JS{K-h2Zn53+?YCLD(RRzX zQ*5{V;up>SK1)ERx?)?sP%7IBHNd+oJlB&Uy?46o!5X0>m^6;jwYdw3I-Q=M-;G%} z%Jk@nFFl*^G69kjxb#Cck)X!?6`}S1I@W2PYEk?9ejYeZXi|}=S z8#3E1RZ#Hc?Q_s;lOyT&8rv<;op3pYjS=3?6dJZ$ZfmlZ(t;;^a9*&1RG5;944x+! zp3fykbdc~}C0Ygo%08O=`tuG=^>nqW`u@c@^8 zOn&O4C+_Veh~>~-97bLk6dynHcT^ZoRH^Y%W#wq^NU*Scr++?;uN zOr3eYbT#87tbSaY7i{9KFoZEqtTmUXX`;qUGbSNMb2CPRmS_`635gbKZjL>V5GEJs zN==n0$IvKBLOM9cNK$fU(m;T+Y%9@Bq^!D0rlf=-H9?I~l*Z5Z`&(=8ea=1i^=m@; zyLYeO|KIwp-&$wweg5ooE+6rFc%jQjSaZ>`Dpz{N;XIYIRee-=)p2o7r)Aha;zadX zUcxGv;h;<)Qo6@66nNpPVQS;fiF;lWm*0YBaFG|t zMlEkXpgQK0+Bov#GG~0&S{0AsdI}4)*b5Hsy)h8O!`3ey#E_}b9X}nCUf+fYuo%|v ziI?i)IH#a24Oym-a7e~WWbx9!_*B|q`Y(M9gPJ9LAORpxdp%e!>H_+~B2~%g zcSE~IEBRJ315D90Y-ExaH5G`6gKPu`Mnk<(FIFrNe%8-w-m9~NR{Y{s2Gs!5^oW9& z)o^)MQ~FD3_0fUPZX-D3NUxyKSgSpFOQc-A5X-p`h@-ruigDdRl=Q}_Wc==eGog?r zVSz!x2E2v^;>41bDBf)#{02+TPOM}J^LP(3 zB)=zxD4!`gLqJuk0@{ta!H!Y~)5OowA@SqbjTp4WduN9b8 zKmgwTSPHi_=A327W&>PuVkO$}0SPp_!c{UM)>fo+YRZ z9zoGk;qca?I100&J-3`WmfB_rhf>WH4676wAynWahz=%e$zS_1%!)F|Qn?BKLc+qX zQuWgCRb9Xmt8Cmi(W~m4hcm1O^p6T1k!Ho`UcvONVtOHhqi|H#)gtlEtUR(sRE`PD z5~oGc@0zi{#mQpWNXDNwBM#0nenoguhMFE-U2v~u#>$Ik_`95C; zZaE>6WS-F9RLy#>cn~&!7{r`a^?KB}m|EIL82mZ~7Q{L=7ucy3{TMH#wmDNeQ zx4KwlqST`P7Tg$fLE3DYAKs+*V^l8FPo)PbeOb-yikaVtTa?p}$d--dk@}PI$r-q0 z8cUL9a5!UsJ)z1kY703t|jUTatXdPGtij)FQX|&174=rukxizZydmT-MZP*4mC%I(32-;tTy7zAbkZK zJfV~~KtH`EBF{N$53mZ85M_{5vMwMELy#F-fcyp7s%jeUD6Rfu)43Z&huH~B#&MRp zm|-(<0-ELYrGs{Z+EVD{mGy~TYFe!?=&2HC;9#*JH?%EN^nxRcC{(w<;aA{UOA1{U zbmL#FT@GKJUu2&uayjPExM~FxS7!iS_wzn%PQw_p> zXn6aI22&nHl~hh81Bg)65nA>+atPU?WL7-)+|{@thsA*}uw3ydSDdVP9#fHPo6~$1 zSDnZNIc=zEPQT{&1z&_zX#qi~=0}3@d!NMVTs9GXM&6QWHKr=UMT4*|rQ&}cVUp0{ z2`$%m>ccsDfRJ=hI0)lK@B4}1k5Zv}4`eLZxJ|q(vOGiU*hM%eBPf1hn76po*`!kx zKA6xFQWxygoVGZM?kkk#i?oJ9s0O(NvFHM0FTG~8Vp;Wt5W~l$Mn{lFOQ)R` zvho-H4oQbzHVsaV3;GHLZZI<>o6h;cd)93(IuREh=E#Bni&*~C$k1K%ATGVK)+x*@ zxOrw_yn(nv7v;58WiAg%iW*4r(vxZ}ROD5hh+U{7TiWmoBIr42c|TC6xs60&3J;(f z%Loz}S|3~J!eQ0~bmj=CTjNTrBc)fq4Jyc)nN{?er|LG*O+g7wC5Nnw3!p4$9*LR; zT}vyirH7gI z31}fZ3$8QTeRNrwD`2*nv;SNMT{*t@H|`3v*xWi2)5rpO7>dPVwrC~~4x4hJh(brp zyxUu{Gno8rUrOlSn+k~>(*X3u|A2@s#cQ7@@b~o?sNTVQ%&mwALrizu|CHr<#K1p8 z;Z@WYBJKk2gXUNJn-+hRLbz}YGJnKT)3BMPiev{W2Ku*Gy$})b=v|%K$8@1y4no(J zX%$0;ISHT3>52n7dX*rnNypWwxV1r0HjYcQ_P9Z=&rLE&bb2%akEU>93+3ie(PR5D zt^M7g?)$-3TvJhsK60wUsi+AkLYdA4m7}|gUyRQV6T4W|8|<8ARTb3w zq@!$Z-e988IJtbPdXXR_zAqgN4~pD+i%XN7IxaF`WNx!tHFcyipWaJVxvvJr4In@j z`^xTccyA21SKFv&j(`LFyH@$*aZroRQ%kT+x|o>FA! z3nCS;p=3}Tnio}IHZUoG?6%>~G}%6?@v`AOiY~zwIf}ooa?u3rLD}PBOU&FUq*j%% z4nq!IXK%xGQq0KI=0#&F&?RHm4@lN~PDd&K^6wNQmHO|81rpD|7mdMdo)nbE0J5jq zMe7=z)|3Sy|55qWKu=8Xaa6grv`mVX;|R4xxHBY$`WBuj44%SsN$8jZ4KiS%M&H;G zplR`A!H0~FF3E@?-FPO=#R$7tX*izCs@#3s2+#NLqAI+UI} z>XncYYNK?qucxiw)w+Z)`V3C11ffbrZOEL}a~f3OlIEZ;b|uorxj@toWH=pwE@TGb zN|WYi*APg?(ICsOhJ+jn;%~m7x#Ae>1)=NrQxZB&TQr5k`l^@7R7Dl2_|z6$>w~i; znv&8V#p=VX>NBoI{uyW><5_soi_M{AOBAY}=h)?1Fyg}3)!p2lL+F*_HBV#Y39y)1 z;m5JJ@bSGRx8^J#Y#fTVPL{wD4%PAE` zF32qFoYFH7n5+k;^;V_6LQh`URh_+t`bN@gWcp;1!g~~%?YDXhmNcbp zss$|aH~&X80v8~gq$%)y*Q;WwusZLcy&}Z2EST!^)Fn|U+pjLJbr<2>hB(!#WEsV^?ZXSS<9HwP*}Oyru-LREuS;*#ULXegBtfyEm-4yL9fh$Cr5)S79*DgFMJz&up5o;sZRsuez;Ulhsn zdHobC>HKK*n5){wORSDs7rYbsa$c|ww&bpxXwK`!hIg=s^VhZ;-HKDz+sYjvC+DvR zF8M>1TXB9};(dz6zzf3JQBKb{mqZ~MqH(v&Ng~R7?>_teb)#IKWeKNY^}^R(Z^6%= zd|mn!QC@nda=9~n{cv6r(Ov=*HX7l2F>QO z;kF>Y8JEwZC`u}I8#s30dZt40ly|$?s^0(UHW#9#`bOO*Fw*jcKZGI*Zw#k`#}{&} z@|%=a@+-xm;BSId_|I*`7ZpC;OK*~mZWwy=q-1#Bu|iJa-{cW2O#jAplfY+rE6mHy zZ)Soh6M3bpO$ERA?k7%=Q1&a0g@S(~7w~(Z|4dc1dxLUO;olU#`}KFOY}ZC=fKm^|~^mH2e8 z$|~ji*Of3XdlE>`yN|=w!X%T=guBfH376B!6GWXM~8!d)s7FVw+xpXfU z!TtQ^>!s3HzNUtlyYOjvl(x0jL;@vsj8|g8Z336T@?yZ-O-Xf{p}#a^*pGsu%?FFwOv7>nTp>FX4Y8;{6Eh3A1*`DVVaC&xPI69(im-233~ z;zeN!KU}11t@yO1Z%T!9n<)J1b70PL&5| z^pvpT0kL|yR7F$asr!H!{Ak!#c`F5wF(_e`g(*wmS>f;hCTYgkBio8ssS8qFX@Y?( zw|X~H(6RauXRBe6!+JsQg~c;r?95|qEHCNx_)#x{MfUo?dxt0i@K`T-KeX^0#Cl(o zC`r8`=Mw%+@G|gSon;IBg6X;tCd36>j&nGc*GAr)9bcCnp)(f37g!JAYw2CmWD)>e|I^vgekf^MTjVPKWYMc}Ov ze5GA1&XdBc>cY{1E=jh$*9{)Ft-4!ujC|PUhBtw|dPpnqd3)0zV|l0bTKHMrfQ=ux zqTyTJw-)Y@>9+e_Z*LqGO+ zWU-q6@)_x!zIGt%LiAN!FF(&e+C_=Hx|3m^Eq zpV93vC(nKY%q=Kj*nwYvU45@!{@ir}-~YX@Uy~d6;wYK>_g{T&vtg@Q3A5rC>XUQs$%X+E6(#6ITE0<2(Gsm8{zGB!`p3z%|Clxj=t=7Kyh15Q{p>ZdmCF|I=TEN5kujedALS2h#HNdvKX+A)U)P#G&Zil6 zxc~YmGl>oNKlyq_n}$j*x@mC`_Ez=fuzX6e%B-VmjDrxV(`OKUu~V*MQ<`1v@|q7?G9;aN^cYB`0<~&>ZR! zTyukh`|Qhey?58Sz_bcqZb%PyU@LwA!B|O7@V29*JUKI%fc+@_nd==sEl@G(d|0#M z9Yxa<5IIr!w>P4lTokF+lynbN0qfKtzQa`bE)6B8jv&%U)6wtvFXETaE-r4n6(?>v zxp^zj@9{5uO}FCcm(O(L%D>9(FS>ChZo!FPKKt~i{mW6({Gv%nd!;ZRAq7kxQ-LG#u8RW8@pe2aC*x-IBB<oR11?|xFnh|xzv=_ zL)`u{4Cm*`{5e|m_scbFksGcrE?}$nRHLjdcfHPeTadHK8l}jEjs8MXa5h4}ha0P0 z>>XHa=KsPd6-(2EkqgG?#jNXr#}EA}v$JM*gP19vK<1;aWUJkQyu-nieZj=%i9AH@ zhdyM3tlT2Ec+B%jMx!o|R3}36wxWc~Zt?{9;h%3YskcfVM;0!yY(VKU*Hx~XR@rDP z)hh~uoX)r~)0W0((67)93oP)|i`T0~Eki`9$gbtUBFt%#E`#I>bx3bOKah?y)Je_Q zl+#6p<lW`7b2^_bg!iRhKA#_Bu}#-w`lpI`a+V04s^1RxNynv2ExQci0;5B zO8OCkLF*6#FuelR3u;p|{Gy(k8v3O#gE8RVA)6qnw15l_x;W8f$pU1^N*+bc^Q;SnH%06g8)hC_Ftfzw*vx zQHC12FtfEjLk(0lS&fk^QRMeqQ#nElolyaN8Qh0E9UmKwamqM3{5dHuu2RkL86ihi zePa{m1hddP7=9SYCEY8;V{uhvml6mz*#BvIs|-rHOIZgcnujg=NCAHg)YSr6g3k@H50#;guN1_Ifl9^yJkwr%D zwOu8lS@j^9)N3j{+KLrv%P%lsKu7RA+C zWJGx;6MbTylBNyRsD`gOarq}r}id z12^7kS{3>#*BG?S1zzse4*&%2P?!T|t7hbau_VM2NUx@fG&9bj9@f?g%~pJc%|14x zPZL$yXWERwje^4Dfi~0D+7t+z)d>#+Nd?&rZ55SM#jmD8(q3gmrq@|`ZLU_)f~qEu zd`%zz)d;98FQRj)u1Po(Tc8uCqpM)4Aa5*jp>kC?)l_XiTN&g+qqbt3ITxsha!*74uT;I|oO7g}>VrXjJfZ_9Q`BbM7L}HRPYYx|V*v2vUu{-#H~P-y0tsM5_kim! zBBkOs4S^mLE?*Wd3^L}(KzdmiINxNuNu`mXS#6;6)fzLgL*b~LpI*%sg%;4MgQQ`T z0IGoauE@30xa24*zKy&d@yqFin5ZzhsAwPMo+Ma-|IJULwQR9~@P&pX4Js1glEdFO ztynes0L?&L7GKpUc2Kl~By%8{()rp6V}%E@+nojb!1ORNm zu?B0Dp>-H)!=Q`b^ZAYOgQQ1lTg_w##Z{Wr8j+y5rQs1vo6n&tn+!HRN)%ZZr@ixv zDSQkPrih;bPm5;U9+}P8KuuR0Hp;;eqGsh;gI60_?miGa6q1$MT1Guf(=m!R7Mo_t z5yYjmjcBaWfT|?T-egwG7%Reswb_m6 zhG5h@4RO2oP0dY7U(Sa#U6v;90ab?@ zpteJFa6uhtcQbs#RujGzR9TR90B0@7918cjmU4Pvh(;i*Pz*szY#C^%G&*`Si0)c& z%u-G1Pkh*#)_B=ZyG?j#55bZ{e_a+BHY9ZqcT3BqYfwA!L_D(^Nr+Ax>)IvVfSi%W zp_0i$$A%+MM}>SMWV9S?%@BghF^B*<4lde|snxM=SpJ<3JGHV%zwb@80MA@+ZZQ?1 zj>E9Kyl&XkeaXIHpMOGE`=NIE7O1_rv8#JJE>C7tvAe8xLM6*1Gm1OWu`EV9i@O0i z{jdK=2=x+yj(w;I;<#!U9zn%cazTGUG|MVk<<*A98`mB0us~l$b*K>2G4p70koCeh zpw1;T<|diDWv-M_`hj|Kh!Em95tmI`VM?-quyPxu{iK7fVRN9hMhz zHWPc3suF32Oo-{!B(QX94k!+YCi|PzuKDaa7K&Zn6-4W{P9uH2%&yNn0@C+UCqmb56knB-EP;xE|i{j|TW>gs(& zd&x?!?a;1+tXKT1X^`4NxF6L-ut>XD`p*VYnKW!r5w_05NpT{2e$k}@L$nFry9+$ZgiCxhl)|f296dgZy-5vP5M`Z zJf}bM4OG2d$Bej{$O-`6iW%9YWo~w?_xanSD9Eka7L^Z_MRXa)%T*(9e}zy!A#KLW zVIy_pMc#yA2-$5|+U#>P8=jCl}?A>!#z6@@Of~)rYlMo~e-Z`I2F;pO07H zE4(VQKB?Iw8Y;#KPIx$}=}2{s*PBbe~@%U`GP zZ0fOX7|#ozw2e^1Td;Ibs$TGphe1NbBQ)-49tA7M{>%p{{7&6* zn|Ky@jmjRv(Sv41TAc=r6CKKH#v=k~4r1wU*H)|iSyo7xswn=DWaE)E@W-CbZPErz z4))GzHc)>$?p8Xgj<17b$ziV(Zmts+?|MT!DS9O{+9Cfopvt#uUJ)8bcY^xi>4mMMG!( z3`2IvIkX!KrWIe!qcqWsG#$t(^bj}?u<#opU}HYnO4C)54Xk`&sE&s!ZU{S&fir~3 zVJ8aSLp@6AJHAkRys8(lk7JKdZI8c+!>e1>+QKwE@=g3JK&nppa*>DzcCq~7Bb1iGr^ zWBXvG`*hgGlXbAPb)^15h?)0{9QSlxz;}7ah=A%=n+UM+nERtK$77yCWShZPnRR?} zBA(TFl996FHybcf8m_V)!rCjoYEK^q$p`F=XMDmurS*D~h38R*l`7^JC%`?*Oj`8; zzK5G@FqPkIgohJh?v>)UAh@A!qGS!jqa~KD1{FHh#H~1Wi??}2ksN&7_YZTDMl?qu zjH6tAv+NB#bv;(exC-5c+XsvBuBo{`*j?4_QDXXbtu>syFM^*(sWZK&4?$cNOp5yx z8B|ruMB(}yLIVH|!u;#jRtTU94=h@ch-!>{;s@ojO%jBDX!v+wM2Lrq9IejB!fGpR z68?fes67VS@YaLvmcmcDR-4PbWdCrY)LED*m$_7f%`>Y`-pEDO0JK&scxb$2f{4~_AMvxc~9JG zGU6lOxZ>ZlxxQZUJ2r6xi+|7NIyuUAo06glN0g(Zh%({0{blmriPF87V-#-1saw3c z1?O=MT*2S%n`qwgCwFh6`IG%78t0Jn#~O}Yo_j8GnebcOiqpJ%F0Zs)K29#mq2rbd zRlUAW>HEH~;mf$8=apAJ@PSW#Du0-tBrQqMF92q^hP)oeF{^EI^=wJjDK)&$clk}+ z+#0F}aeSUns-_oyJmZ^q69zd;#aYd5U-UUw^IiMYcrS`sLTRK2kFalAot|a22|kBM z{+XXkH{s}}=>J#ATlSyRKtj5{0kYfPG+}3VvApI`#ViVyiOaa#ow1oio-;E#!dQ@J z8~DtkllT5nZBw$>dw;U+_7P(iDa<73&uAeH$oQ{~6RO-e(D{aI?U7{=P&;t|-_RjY z=hYpF+AmWcb4O|LwSRj|W+dSoXj4bQ8ciKi1sk*(56mbc;VwLZ*ho-^%4wHBZRW9a zBS4sSEn9Q)YFJ}hXchXQ-g{iqbT4O%6cSjg!mD~+2S0qE{ETkZzo6Ts(VGInj z5erlug9;yY?lRVGl`f#Bqg*>F46|W0mE%W$3xjZpRB#tv7JG2C#~)yclE<1W;*=FQn7*=xf)FMeN0Sl)yOM9o;+1uCcR)>1OLP~q(yPjD`FL2U4T1T-6=s9 zj37F@V9^rVftf#mN7d z=~1}@nPpXs=Y`eJ#+_~ACYL*$olzSs%qFAdUQoVlW33pzuHXwE9x?$}@oURu7 zRS?{Yo$ex!-*{qcY7xl0qFfxQb@h}4`M@iqwZ7Fm6GF*tWdr9=8RT@S6`}%=GZ|bK zo~o?sDJC_$C{=C&8Fv5${m~ACa!${up+exEQ`(|YNFAA58+^O9WWy!lUPZ2cNJ%tQ z#dPrB6=LpC64DJz5#+v@^u@m_dWP8nMGD9ujkyNvR>^KS=pn$_L*`(M7iQ3E+q|Z1 zBG=HwkXirTjgIozPY)^E91eBLDg@CkQn6R}s9kB|ar$(^U=OU?lLf0ss18BoT~q*# zm47PBWkWS3vsF-544wq%7{RlZEGLhQsuSUOJqTL~pXHuo3ne7!< z(k#eG-HUxUDGVpUE%nu`q#FAQxGxweah@HPd=?oUb+d;2AOeWS2bg|L!MMUoF%%_!SRdUB`!3a z9!HpwuI!wjXyopm=FEz)shG7OTr(bbK}Dz-}86~zXj zg)X)TgH#`3%U4rY^YpgStW*YzJ*?&N1tJ^$squhK99O7Lcqc0=Qw)bLMJO)S<@ zJT@J3dt6x#8ne=8POz@>(C~UGI!1-2L+u2(2D7^m<_6t1t|dF?9@;t`Wgb(D6g`h& zm6)JmBdv4@A5B{)tn-)5nuR?)wi=o&TgG|?l2NZG)i{wT)t~vvR7}x~6(5N)wQe%u zI+3Z<^w3_cwNl=QbZI$4rO%NuJ(hni$7qL@<&?~hs*87o=?3(ncSSRA-p5@$V(WWs zNf8W2EfRbOlZa0dWG?X~&uXUqC0GSHuuI{w;)m$@mcU>L$u}}?q zu5O}n>4!zMH#@fVWwY^?D4Y3l*fS#8yE%u~n9?i?g`W(02eeyG*dgYFu!o&0zBQp+ z(=-z!b2-Xy%bE6ne?}2w68(7H>q^>vQRZPtPYu*X>rIlrfPJg5V!SEOVY5Xp`K<<7ADrO>5lS^b{vtj7gB5I8Z?dfWm zKGQsA~R9YpTL-Ru%gZaPIb&)lmb{N;GvjQ|<{#T&_A& zsbh!YQSCtuURROo0%RL70=J^(;1zrRuctE%l(Ldm24466Y+3KpdDZaM&Ig<*yhyW) zdVE|{9UiC3TFbPr@SKQG=?w6E**iQkE|>?+&tu#!iFpYYcp-Z}F0s-=REH11vJg!J zy5yIKLUI`bE5buY%?#Wox8h{7BID<7K?>xENJJo835X-&JXNaje4k+EE7Ey4h?nE^1Zu^%WKxMWPnO`X=o`Rq z!-dat!{$9-pVAq1S2AkjomX*ln5`pJ1F2FK`llol>f3WhHWa390h-L*4O)6s?B#AzRD8i71%2#g72QI zC^!0ytX_j940Wfi)I>j!!IfsM*i(32{IDV~zD2`{hoL?^DN|!vkfWjHD!OtU$Cn#Y zW>ty&D7}pD-pwL-;XsPxM zI2Ca?;(78s*)i*DzV_SviF9}GzVJfMLwdMWiH70b?+$$T?s9pQ_>RbTDwH@`t5}SU zFX(@KM^))ks-5vx8iT9?RL~{4+)3pfio!CK2!CNe+ZG0tVT)Fed1d4Ack|!|v>0W< zCyzWLn5_hXUh+5nbI^lzg(uwZ7+vrHSQ0awe#J!_om{S4|jG_^iap zV{nnolh)lAPQ+6~N_u>J?7|-(5ASxRu~v+sulQc-R`K1!%W@7XDfLomL);Ll?SNS2 zs{2PkfFBEB-i@f@L$9{t?7AcCe#2lBTGWVXWd?{%sid+^1Dw__pYdHayxq!Rl}{Cx zkHF^SqH^H~kzV~|OhAnsSn)Oe`k$6bt23unuM61S%10VlI_&WL^9n~Ld*M&S-yKd^ z@m_6|h!xMe5so#^CvgYyclkLFVMb+4!G(hX^S)9R@6m#x#j3#$Y;t$SyH8npUX&x- zJjg-XhVR06Ju##Q7B$(9TqPI=$@+>%hSVLVZDF$>ibSdsU>tQC%DMQLFIdraNGE>4 z>h}+#;QT_VG~Y4qJB@beG4xr>xeviar19K5+jY~o{#PKYztBx&{?_s2_rY$~S4>E~v~v7}pv` zP;2vTvA77Y?l-N%VKMLn3bH&en=4RT@k3v{gRPHv)Je%+qt3pL`&`H69V?wno7o<3 z)7_>GdKje&yjU!kk3C*4PmJ%}3HcrKvc`Q%@)?Y@*)nu&n_j_;e+a3E)uIUSZ8DgeBRe)r#Z>tbdIg1RZDI?}MO5)EJ`ZB7cC5`w z+6X903mhwC)etI`mc*&k78BYK(6h&1sbKbjrP9$$M4^~%kH3G4QhIOXo{f)w?N@{> z6f^pElII%aU#r7c*;Qv5$(W}^Is+)Vu&v^c#S1KND?S9OkD>_XRM*r_-hrlL!1;k*YS;y@gL(tzD!}5tZM{h5RwjcV~mXl3r5e+ zs?_ZySGTBT-=f$Gwn5u)(36l_b&Qz0rN;(7)o zsA>q-a5iSIsYm}8-?XaRU_Npo%&j;diJNCi3H<3T=NfJ~x!g{-n&<|W%jxzP-E#7C zDScOV+|WZ5-9)2kz7>Zk9tlzUh`1G}N3pkl=O?0k znyCF2oQ8LAQCc7QR;6`)&(1AM{2=o}x8exv7kc=r>*Ei6;Eiqi!Pk;u5l9Pg2h3K) z9F>FV%e47;os(H!c|dbHuqDf4NE^g;Et=0duX*rQUPOB(_*dkGyj~ioOW8)BqAoc$ zyc!`4KgWpB^ExI8EntMDH|AUpbPc=BJ!wwLO-L8iCY7!q=u&-+*D*a7JENsv)9RPR!58URsXyKv1c9iPMBTJ?X6CA z>SiI@$=_=qkf9bCS(dF7e!0;da&ZStX@?G zulU3sh2uHZN;XHs-}rA_S7h(#L?noI0$l}6D}Iq9A4SLn6W#@V{+-tbXtj$9&WL&( zq#|jBx&9I@O;pa)H%B-yC$(}cT8liG=wW7G%@xpsbK6!DNism5S^}} zUJI2LI7HEA#xrP4Y2Yu#$7DCwRkx&&kB-vM`!~CZ+SW0M3i(bB6-Vv?y<+JV7x)T63;` z8-6bWtoJ+ng;iTcb}AV~L=j(PHXx)11yZsXLtW19v$PQ^$f|vq6qVLxK9MO<+&Ul| zKRF@qH zX!mj~h9##Ng)m6@SPQI+ls;fTZ(uzxb(lN#%X82pxn{ zuz-pl30W_W$&%br1KAOILccn9-%|dw#^oU;~U+Bz$ z&m(U~3+-oGL74*NcdIC*=pr1SP(9`lIlolT`X>-m@_>LJPiN|ttDH5SOIPcJiLywK zK!S=R118K0g^f)!hM)QUOm#X?$fGO=SqL6-imYtr%RE%rWl}rnm)8jS3?BqA=)_d< zC>*#~cZD5~z?eK;nWVH5SQ&GJw{Y%Zvx^A9_@RbF0T0Tg8f`1;WGFk5vO z>WMo4rT^Cg3Ar9P7-Ladlf97qdr3SbGk2fb&Dn9vTI3vEO=*qSxl2Qmhf5o*c1F1l+I#KgtcCyxW5 zQR`&m@v|TmM5cuU=xh98+3}w--QjD$P1epcTzfhm&a$fP0X1dr!gzMf_YoQvNMDB3 zON-eF$${mZ>UgrVM(^d*6Cv+-$@^k6Jk*O<_EP&)0}b!4j1A)QNamh%brq0HAIPFB z=!z6E{6Z@p7~b2*NAAekTEg!WR?nL3fmRY5J-D~A+JZr7qDRH(_5q}M_{BL zmO+^QgEybK&Ss%mt6GpvanzS*)B1LrHf$%O2Vn4YffGGtY@KJ8W*wfW8l?><6{M{T zAw}p>A$fQ@VM3iqbhH@q|5=}W#)rx5+_nZd>3#Wr7WAkl(XB6$%fDPK{H<$&mP zUa{c)@VMi|wI-z04=-hf=4?s(Fs|%kGqYhV`xTc&veHAO`8Q-?=+sv)zr~&oIzSOy za+BJQ?%jXL=-5HBjTxp#8ahta5xTjbPP)@LX*EShB^8rIY+1K(tJRCdLak-wC>P-q z*GEO75|R%xPZ^Q`eWXqzr#qSqR1PfsB>Y@Gp4~ z9_>T1%1IYF59uH>_pIDO&^obNCJVCYiM1FMO&^&eF(r^&hI*C^&AF8Z%E%UKxMWbP z&O$*e?|9r~C?InTEg$i=&B8Jrn1hRSu267_qDM9<$66>Uy_jVO5h)eiRxMt^+3>#Q zeSBel@_YCRVt&X^QVmcE5qNR;PI^{+CT?K8yQT%NEA)&;-~xd46I;5T6tHBemxECF zRl3WgMISvoR-7+IrK)ESxKYbpdM;CqJiB96w{JzhE{biGUvbeA9H~VI7S`PRh7Ts#;fbR2+xQ-wF+eui9cn%N5?51&(pV?&508#jlab!zw zG_f+ZQ1^;3yS};MG#A*-xzP_{c3_{k@?^)PGrjv>b;-ve=WaFO10s|WrA%fMl_xT# zKk%Of$GY`r1V^0%ut)n{vK<$hc*jV!_ajl8Dn5bP$&M-g(aADBvQ-<35GOxv>D6-g z$C%qxwJ*Sg8-ZNdsEhfrAm$ca<5W|-O}n^nLVB>9Ms%@j2sh6q!;?w_f1DK0C~363 zjJ{e9kGjc-3;FXFviYpG6t%#VOELdD|3+UW?8jN^Y&nevtuIS?A${m*xf~-jwMur$ z$BS!if|i&%aFoc`_{LFR8JTp6#{5uzPkjwOaM>FSvZ+d2EdvKIK|D8nBqi6?MA-u7(uG!K)7sMY< ziLz(Rn*aPGN7;#?$5cd_i!})4!Y)6BwZS{nyWUl9JZ==_UcAXP4+DMwmJz+{T^B@A zKXY)DG(Co`Q^knVmVqxJHJ?L1N?%Ma6nYOL${RJ!RV~U?-P51NEywUE7ylW7VJzK} zkEHXgK#+A|HUdRk)sfTi1EwhRy0K9#&qix6IW;_4TRr<2VrI(=aC+Zl%4Kw80^3;Q zDN|p$T#k}UZg#%N8wb^;Qy0rIiX3_j$ej`C5fgeYfLkup@VU<9OPA-x?R4Z~R}5yu zn(C6$7k(eb>@Y0*P-nUD4H}#UOS2(N?&j>O%e4dR?3UfbLgSdC5T~0T-BFab$o$ON zad;Ue&Wv$(>#-xsf^dTDRt}%*8EOE% zS2Tfomq74 zv(N*HXq?Ro#`n|vu{g2Y%!myv22@hXR>CuAOxi!M)11rUJO4IKAAT>W1|19D1CNGt zHIr~Ro$w@-{jv@8?nC_1XcyM$5zvcWBFwz+w3DrfdiV5XneS#T26xE1&^x2@8y~N2 z>X=J?mp<}Stao8JN$+pFK~pFqG4C(qTEAuJ(Rn949nE8KvgS&W5{gh0kcF1_Ur>>K zxN3ycwDqWBFw+6}g*M&~BucTMvx4e@rOAHy&f$wQPVua^NBOFVf>VDc`41zCPA6k7uieZg zAIznVXw2npM=3|H%Wqd*t`?t;5xsSkN3*&_v6t-h=MkmV+kG{Lc#(PnCI&;(@rj8QzbV>qndW|X#MBA0%RNk(HX>flB$bhwktUKA�q#VJ zMdUU{bR$ZPQf=%8D#zQ4;=;%3ca#^&Oi})=U!$vy4^jBD#626Frr9Rg?6t|RR+m** z$9ff~dSI%&7QSbIm#p$5P1_OPdhtV1N<^td(KAw(>D!F5oJD!8BpihY;gfP%PPx43 zTyBfP=ZB{eaqYpy_cWpdQK)wt(L9&85rvByo+2wsQgx>&f9_w>Ho9O6W)S<`5NIa9 zh18XSY&(|O=u4E5zQwIa&s8?w8Fw)`HcQJFO>E|WO)$}MGPf^%!3AYy| zqK)2fO+*Gg6WKc=jZ=E-0FmPRe@K?Sa5GAGp*$_f)K#}jV-Pjg=&fU^N16I?NJ}&# zgt{@=gL9yudhvH++bJ^Y84!_AEAXF|G&iH*-!B&Cp_IrT;OqQ6>nV+8M6Lsydl;tyI8}SgZyY`y2H*EO|n3 z@Kp+~ykckuV*X+(#t=^?T8DuYp#9&-mrUBWQlnhEb;loHwTcvkg0aUa3bDqzN5xz&mrs%RVU~wg zntuPc2BCP4NnpdVaT=YA)O4m9e);3v9(cTea_!^q4sVUMHZ|rB6E&B1?IEl&?)U3) zt5OtgCP3qC0*`tYQF+XciDQ3n9mvIQ-M8Zw#{JGh&Pg7DVI2Wz_1_qyZmk-) zEL~vCw`yo8-_NHv242>(Q7C$*N`A-XHb%i^JWsbdhvGKJn{tQ3$sMaz09Gs8jjuNQM_RYW`Hf$Y`N8N(2fkD}<9mnpm>@;TP_G@YF1@QvH-Z_n7HT`UyKm9p1I?^O67klm zD~~Z34`uAXO`BE#m2|Tor;SJvR1xRnl-TrM`BwEUjqn693o?E>u%SZF%-x?loC|0A zebV-kNrY3&aaX5TT~bELr$HX97Y-h!8V8Vo2zPZ=(;hhLS*v}FxL>mU)J9%|@#U>U zxEZq;iP2iA$ipchbwbuI^Z&>-4LiKkRh|Odb|yqm)jG&%>7XO`mV}auN?{tETe4Ke zxB&O6>IL#Li>1~@(Ls;Wg0(p9JfYV?F^dA}v0{!!YxY){#=+h!%Vr$za+}G$F*3?g<_ zuw(TF+Nz{rjqD*hj%>`eR1}=YO*h!@e=kmSHyJ}k0Al>q5A>@V4}3JbS;p`m79j!WR1y-EkwAJXj09-ubmmI&* z_2&G^!r;6bNkBaraId3_BJ;@V9ILw(|!e%ebNL~9O0CBc z_Msw9>O;<>EbPU$zFog?=hVoFQH64;yf<`a4A6+yAJ&Qpc*s0!QQ>LEEt;jSe}!yu z!(J|pGVTmAT?hK)>gjVXH=SouH2OXaiyh1T{@i!4)$rM&S@dz_JF+p{VZsGgl{VhV=ucj?~a}}jO*m7 zYMx4gvV$m`Uu)^(j-rX{!ya?P-0AcYDJm~*Qh6fulWaInHNO#M3^yaZ$0#hl#-mQk ze#W_(Nq1E`a_R+zzx(&T!^=H1O4(Z2X4!q8gzXkfJL1^5b!7A;@0rehs%H*B4M&{J zsEo_hu!n1U=5JEI5kqaGeF1M?0bOM^w{10JOh<^YYMT!+%$b$A1vCoXZmS`AIEW*u zboQILNk-3IXV7gro~aI!%HyVONLr2u{dR@e_sS?uK?GL4k+cOLgGJVgCOijxB9f7# zh}WyZ#Me$EU&(1qM67uX)AE`NMk#fhG6-5e{Lod*$jm=>ZgNN@rLjTXO-aT0*o#q z1afTdetC?&*@f32V*)(fgN3(eq%cNN&As0J+|$KZX077;g+GvWi0D-5gnbmew}BOO z0(BoH2={0$tiMWTG0rd<-6ZUmqwo+RBO5ci2C%ALS9I}{adarhh+~RZwtPVnmy_OD z`VbFQolGK~F#!>pEML!vb__`XE%qL6FS!U4nV`~$WP!gT%4ydzmV-=oK!X^aL*r1N z{T>)zF&I05ozpu(ZfCj+IP$ZpxZ8aWXzZX&M@NyoP}434$H7r87wkac?B2R0l@4EpJUoNSZyZbuIIs6qcc?aflgvYCUQ-ywG%WwIFZMkEF<3;N4NcM8fo4w- z`EmS%Mv;Gu61l*#Lrj&4fvHsJRkJ?gFk8UClA$wKkM3H|PXo4Y={EZo=xMx14`nF75D2l> z1+gQH?JdLfSi*gbqF{Og#SX7ad7UZ78QZJg%~bbB#3C^G*?=csv+pQs_QFNa(@_DOF66q&6e3Kj!&8}-{C zuA;Uf%P*KFimj%3M46_t**Kb>fZfL-L^yeSi|>W*aU#+zO7Get41W-){Zp(Zwx_r*bUF~6}NG2?a3Y({5;kn zdUB-;k8;-UA%{bGntI-;r#`Aw3_5TV%-tgw4|fbBLQ7rsXVv$j37a$C2@*^X&{TS96HplA zCJs)DF6em5VysXb*mC%WU&o5)yJXx4O-z6Y!$@?&E!dtmZXV;35%IK96kLfuu z4>k^dB&1>L9)7l)G~5k3-cui9r}TEU$Zu2a8k&=7)M(GG6@g@ z&$xz9Z?4h^rc}c>!ub8}*yj7#H2gLL`@OU%)F}o4GNsB#eR_~ywvlh4oXB3-UJT8k z>g-6ZJsih*?2br5{F?soyZ;)K5}z_~M?Jh4uNh09u4(B`AxyoUC{dyw0L(vIjjl#q zI=EIjAwg7No?m1Uwf4|sF8#qdy$=OM)iiAeOXeYhc8H!!h+=|x^&$ufMVaf5gRpd~ z0kiaVC{HMc9w6b5NvqbV{#J>RJ+qaOzZ(jRBrSw9cG~?Rxh&^LSDi z%JSUbW4N)`gr!RL_R57{s~CPW*QnZ)`rp$vUzgk}QLIs2PwI6g)`P3 zgmwx~9ICGTrVtUwrE4L3LQ@J|BHRb3&m7O7XQdc7;&h*8?;*NOue6VMc#N}XkUP684cmY4jm^u_Dq?Jw%$mb6^%Nxjqi4ht8`3fMQ^bid zz1ntw(Hd1embZo)WA7B$f?4z^d}K6hdBiA~Pp`J7;4O;qZsBckBXzRC(l7Rm4)fj* z#84IbthF2?>~i%Bvz&KHjrQpv#%J3It99#YMe}q~rWD%=qAdx9>_s0}dX&v2+l#L9 zDs|yd^=!1+AZ;;JJ5}8OH>R(7Do&8mMxA3NjJ}6vZFHLFU||#d)ql?~l8tsE#*BA6 z-LctYRH_*6o{ziP$$igrWHD05{D~U0-5-YNmT5ZPLT2=V)y>daN-QF(rpR4@g_b5db|rL)5btN~eLl zVo>uUSlpVn09-E9F@0#YzsCn_WU3IYT8bN?TZ~)Kn3R`6Pi8WHni!V zgj7^ObHJY<1W(c4Ftw}WDD2Y*QvaH+nTHrXM_1L=s76L6JPW%S%H4;e=wHF~T7jSa zs`&C$l*w7KccUESl#BiX!b7dR?Vp1aFG|6m+wgrtpxF`qh_d=F9f>G{|| zo?X!KA-zgJx zEwN@Q6lC`{*R(sK8WX`3CC)eB^H-Fawt1x+;65VfCV4W#G=_><%WsEzviDruyj{AG zYkBDTichVsxJ&JUd!6=yw=gXiWj{qBJ65`6U|gd}&9kExU_{ErVZzazcy~QoiRck` zgfQ-KL~|_*=YQdQk$4*DjaJM$@ zeaSUOWeJ1T>toHsp;R(>4&xqtiZ+JmF*Wzf175@g-M8bW>3$xDWu}-p9)CZ~H+}(Q zsYURo|HR<#uqR}fbouSRlcw2%CU51S_gbYRS=T8%Tto5u;ItK_9ge1=Bk*LY z%yyb_inbp}c}x)Hh)L?BlvZwbrMVHJ2N3SG64MikpZFm@rLBDh#ayR+EmZWkfLWn> z42hz69@2^Zz(mHQm@jFXFy@G}tBjBO}Z`&e5Qae&pYZ!23Y2-feb^(+huNxUKLW zRE$h9d3;ZAcDDk7^zXO_YPOR)N%60#lMiHfXp-B;<>Bm)Nc_kC%gH75k?|ybYf63| z9Amb(r&5#!A$sdD;iXvZ2*kO_d%VI#?PKkaL*I?;-df)d)dbWxc6vW(D3{ji)R-G1 zsa*KQXk5EcDKl+ayU^!gR|>b|=}{@7{`i{CuLK=}nbRTluFOGO;i3cgN{rUguK8iE zJI=IC#8rf^O3*}s#=1!|vp1<;A=H@g0QIT4cy&?{?BlIUln;w~DES*4Xr$D;o(~YK z>BCnH{yQNgyRC*=KWF@&t1?tGLDXyFpG?U)GMs{htjQ<27LuvW!*^ z>;TDflxHzs5Fab#a9APPVOxMC`wxF0TVP8>v$1?w!U%yO6tZN7wXCnO|B(~~5`^vF z^Sp27Ip@}`>YBw-;Xf*??#awI-}lM)eKJp;Jm=n9CEhCaW@}oV0NI=9+ko-~1fCTD zFn-R!7NUC_V{U9-hgb3|5+5~bnZ8; z`7RZ88CjN8v)G_BzTFajZ1@u1sNaA~3@#Mq{eR*78zJr?RIkRF0!v40UaK3Oy5|cH zn5sKlSVgd^!4}!L8o1O3U><9-EhL*q#!;Vm6pGdxqnr4OG6#v?Gn9zLA`bFL<RH7iALSGO5mENk{wNec1aQ@)xx z+;g*Ctu`>p*|*%2xheOaq)u?>F^nUT(L(|VF9gaNH!8d+C&t7s+fsd+Rfv$Owk*Hz z-zAGr3r|&Rd2Ujr8@UPQ5YsaP*UWR0lUGfsViVNaCVbSHsg|uU=gFU<*hZGRandqR z5rTp>9rKkm)*iAi`67>us5TYk2>EX|eQ*1>>4D^~-XW;ms1B;2YPc94UfIn63L|3% zj-LgNB*{C7s$A7vVx>w`%_RX?8`6AX8naWmOXo)~u+AOz$N<2x&${dh=J{zdWIO(N z2Uuw}X?i|Rvr)9knq^b=gNmzw$qE$FlxQlM6bgD+HbXIGR+xxwTTdIy!xvizig*uO z@!nn&kZLC|C2~W0120nng*OJ$fiwBslTUz5=gBss?3N+iPI8VYpFP-ab)*?7bWvz#( zTBL;%G$++Daium*L9~0#jxEt!Puf!oD=CY@bO1)2a5)?q-LHG1>Ogf!b}1Vn<|Ttv zB=TSRPqV$sTvcTzNTuyrhUze5df>1Nfs^rXH=amquXFw8$84$52zV6E#XI*#@ZpMy z*E)~H)06|{n6YtezJNiu;YUQ|rf@}X+X}-XAF~>g1~L}LiG)lQe*URH=Jr|BXmQ0- zdT6$dB--V?18B@$1ud=WxI26T5?xwuCgIjFYhKaST}2^}nied7VN-Yf{9vSGmPX(y zh)t8H^v7?7fzCZart_w?Vi)1-Bvy>!49~CbvRox0gJrG$T zd~MArMV)wyVc3|gK~Z?)a`+{Rb4yw2#+6vC1auCi1yj8dSksaxkw<~u)1NgYU%s9CDD zihpq)cvBQfNHx3IbfZN+@Dot-hhM@mjwf8kCc4DeMyT0mE^!q_Q%aAO)@oXK`tpO!;8qiPM3uF8+<4+U*W z=Q`M;(?pHg$}!dgu-DF;>ZJuNrXky&gWmMfwnpRxL9Ik#Gi)<2qDwX}8B+lnC}qbCy!tJS)oY}hbW zrGA@bgP;%=0cK-0=H~3LexE-d&mR{KxDYectS9wRj=<@sd45?J!IxC)Yb=eD%MjF-C>S*2Yl&MZ-9~wN39>k5 ztqwxMi|-mkAQ{_>Ui89o3(IN#oXnHuTmC?VS9KNQJ5O>{zG7LAuH@m0ph4BB93_ql zG4A(+sEAp#NxtE3L&4Bx2gu`KFU-1+@{et0s_hYJ6J?_wv7zN9I(n`u)wbqUu3Rxh z98)RwU-}w?_#@`6CAiye(3GZy3GXS^blKYB)NG?H6H%pOg>mi+qgDy%ad6HkNwUeA zI~K~=fB2%w9&1g)2tY`Y&z%{KC9m#SC+;Y!D-uv94Df75gZ$Sn4*mCt0?HgWd@7bI!C6-UU&S z62mBz<p3jA(?l35vD?Qa?I&#$c$W@FS4)J z6$AZ2`n1X|gudE&b}8M^O^ z;+0D0c1mYRaCMpL2tlc|K!y^pbo^Y#(6Wm&V7G(B3tAyC|TmgNkK1FM7IgyP~F z)3qLjA|@_M_9q(ck9?c{$BSqRlueAV)e#?@>4@&KeC_veXaCM;Ebm^RPtYmGbT zZ~01pXf^O8uWhn+c?z?=JetKEn}b{x#r+woqNFbho;OS*s))>_Y0Xe|Ggx8?82nJd zNB#MKEfCt=RKBAG#wLP{B8ittN=0Si!baN`AiDy}42fWl-rVxYz;IzPLB6z@5zgGa z)Zlz0wt+GY7V6@PI3r$hi?B#DsN@=kE1qHoMf-T>yjYfPKxD=B8H{`}fL)q2(Q9xx zB{}efIngx4rg=;Qp#R}d=KuPeX+&ivnjy|B($iuDy>aFWe?y8X*AnPzt+fc!j?MJSG4QcnnqDA38q3-+3Kg? zs>RGJcN^l%tD?MtQ=}R=7H@WX5mpP-K?)^d4KPC)mj?$tMRb?do2YQ~Bewj|YD{=h zrILTnp+pRFp!ORf32NG#$`{OcL(FxtHUJQR|7&TAdd!cpr@74~wb2BioMj_xhQGwR zHi05@r7>6F#H9x;q!zLYmHQ@?21zJJQXUeH{sbRY?Iz7PvJr&=*o3j=#z8Y)OW!#2 zrC>(_YeWCC>bq{+Jx6Uf&0=*p^2_YUHgttjO=+mbE25;DxURNBWU{h8XsM~(WTchA zDh^k&(?oGiW&OiI-TO>#prr3nP~N};C0tOq@sm=i%QwGqYZIy(vp989t7SDJ1RKR= z`S5od+D((jQMI8ww-7-_7b+)Q#ec4SC`?c$MLlDwc)^lrcgz=17BfHGz>>jZXC&5= zre+(|iM=tkuF#ipw2-l4`CVHCagt~xs%_0j97^eTWVHg)hxDyKp~sKQwOK9iETxCp zU4y(bh@zY&>V&FKc=(|%S@1?y37qLusaFP>3NA2NYW#Us?Q3GFjHJp|zG#@GWJu~P zTQTEPp$%CpR7(g@?{SdODC&P%9(`cEa}5_mHI(G|6_PrTS}^TsTRHoBK1z5PI4Z|4 zD~<2=V>@EHD{nE`Hh6P)5kii8;A)A{K9Fo%+T={ON}Cb+B3&D|0ZnD<*%&nxRV38% zdG~MValD@xBwpx_$0^kIvUKgDk1aM&J$r72?Y5(|b#D{79A;E~%jsL6R8O8_97YJ2 zGBg8(FFN`%p>H@)9$EHeS9KIswCG&5bS&L*)s36I19l$9aCRx|0~Wy#e9(8Uz*EW2 z$Xv>5b>)&=7Pb%4!do%s(j|t|rs&fq%@-l)nh3tunkhrnwnZ9!Vy0hL>;@}*j9lzU zCP>d+X&Ntf*4)a;bG@Hu-D+qmA5o}r?sY#ajNe?UG=W&VikRKdM9=9&)*{Me1!YMb z>#BLvgbJE;oW7>e0TMXI3gY#|fEOo^E)=#`=8E$v#zkct(kS~#wbTT)fqdk8BBZGK zvig@kk~4nNc2%mH$;==tqEO>7Yikx;3RbMzwL%^nXC|umBPKrrSFGnKqfh^0S9ANI z8z^l{LCNz(+zTO4oNst#Cnhr0Z7dt5YOA7UwZX0P_zk9m;z93!{?<^M9!=QQ8LPb* zv>w!f=9~MQf?rsU*;$*@4xzuuVX=bC02N^rt3l?8qMq{=C10U6bl#BI)Dzw)RL_HL z_gv>5UDG&P)bn7&l?!5r7kU5U@7prtxA(b;JJw^QvOW@+E5()3M$3STI!iM%m1SO2 z#YxLU6cl|5qe(2&-{wm+vBnFf-G?>e0NB6?EaA+^i;IMGn{6u_WGb%y%<}3Nus{Bl z`s;_29vV%pFf+ZdVhjOKl4~61(uu-m(Yj-_VJGI{%N0{Tvh7GWS#xwF`5py!HTo(J z{qf4dsx+y3Zu~Yqi@N73MR^e2&W52PZW@mfwU+(QJN17f>Z&ASrM5-6>Rg=LIuB&; z45M`&6IQ)Q6c2N?u{j^F;@{xiV{f}0fPm5Z?nR3Xiw)K`LEQ7`Pe90lw6u9Mav`P! zI+HX(h+-As+6z$LSeMO2qpD4ywim5fwa45X2(pT{TQ_MiHPKExkO3;$auYO+ z=#BNpw&PJxYP3Gb8!95MGNp3DPEaPrsrS0X8?>_CtVic2rcsJ$H+ z&C&#F)`=5Qt5I<0J8ou^g0(OV?L1=bM=YM&HCP$N+F*%euRwE@2ueQqI-$obK6O$% z%mo#26=aqtFEf)kZ6pff(}kHQ8A(ReP$IBW?mWgiru;~G)5_kSm)TN1pqO*brRUkr z+gtzmHbwEm%0A*e%d$U5nIa2EDvE%;h4(*DYb;M!sp*&sRVD&aa>N@In4WvH=hb>o`HAtJT69MT2T9_1>ET68Jv5l=-1kKcT5kRT0>`V0mA zF*$~ipv3kncUaX1p^Y^W=4tdG>6CLuS}wo;OVQ=y9b;Fcc22)J*tS~GI~l5qFXe39 zW;d5r#dIxfWv&fL-t1R?9PEVr36jit86}|PSbYlw)@t%7YCNl8Gaot0D16r&>UKZ| zn({W>f|C)|z$*KWN$Qw3mFK^(^%*o zCoKw6;nr6u=P_^`We~5U_wm>%KZlZNQ^&|mQJ_&}36 zlFKBuIN<4t;Fb#y)u1UDDrj%A=M}R1QLPDdyQ%GD&T&su9U_eeQL4@a?FvQ_jFJtU*1P1vNhMv9Msv_E(U!E$7je7#_5Ty%e)v2LI27`Z+A;1q7#)YXrD^bHdu;yWCx)BK_;7U?c_`qw267*lswN zHW*pdu2m9a62Q;MyUI1>8IGJl-9&{$6!l3mIj6@44I|70rU`|GQae&{RZt|aTCwo8 z-eVwvijGB-%yDD&F?&0pc0 z{p;weRP(BSSsw08I%vkNaG80unI4MHE20_G!pud{6W&y*s6?dBCg2zXz>A)B5TL5? zj<$0634*euN=ha;F50{bqk?w5&Ii%PGU_=TcZ^h);fgYq*jxQ0|J_M{$+$Mwp2A|R zU08B}qBv2jVz`>&SK-CEJ)$|_sItvNb~y5-Zx zrnRLIl(_+G1GHSBQPC{Vr0Gt|tV)&3NY*uX)Y8@-Ui+izjBj{Tgy`H7BNnospEFGo1F z6t56oV$9(zR!e&!pAS^}fg%8*WT3*-8lND+S@3NX8P1X& zup7@yF{^;VO;!g{iz^y@m`b;o z1Eq#+9UH6U{fHJFbEX*^rE`-EUHM{%T*$h-@RBvo)hxl-mKiSqESzet3LR?*J@Y-i zn=e~%A|iDiKlTM+o=&gIA64sANI-%XlDcYV%%bwbznOkZewwqljtq68hu`)sA zeoc~WD@zt0heuHhiSD0t8x<^@bYlelBVNT#+rZ1ND}Cr-JGTk2(ORWS{3xvwY~Q6n zA~9LxMNnItNf0}u zL%i9|0~-ybNz?GDoIFV``Qn6xr=;k2dOXvlkX(Ob&KT)G>Ir{vNs@ijNqe^{d5>iAn>1AMB zAT-OEtx%@ah!<1yC=*xRMVAi1Ma81IDiA-bG0ifs80Vl`L_))~COM<(C`!|9BPY|U zSaSjS&x8N1UzmVY_;;As4krCH*W~uJ(@UWfU_Ry|je8CP9I0|m+{bGM+PtCLh+D@* zQC??kwKn@c%y70=l3({93U?C(&MKE8tv6OS~hLY z*G0E=M<63=GlM*q*9ct4C<#WPw`3HLTyrORhkP$L&2pqn)^n7ID31Yd?|j;5UlLTi zC2@o?18I}bTDU{fF?MGkJmr&QJdn3szCxf>Dx`LfWYc0hvqPVOjMq7Ecr^&=_j*;F*RJCFhpEtTbr*t!$H^{_4qnheU z%W|8TW}8X3WS>=SG~8MemIteXrdFb4Ut3M5LXl!$&6z>n%vQt;gr}-QhPlRlE7VS_ zVa^_t%|#IqhA?JZzycM&R4-yu6t!ezIira{3Zo=jl}(gz#Rv+{ECJ}^fA=@ru0}1h zbVc561DNrsxaf+QSG~5((9cz@E7kf^kupzLGSn8Ff~~KOa2;WVawVL|9SzHkhRR49 zKaHSXmYjFVk`4FOH*)nqmJ-nV&pk-__FvwvCbr%IV@)}1B5K?K)dM zYMA>&t3eM=$8SUrmckg5Prbx)$I-v%DRqAX%@&uVfRHI7QU#H&Hd?Zh@lc5&pgi}) zjfT;|h0ym<|G*z_PbX6k!C=yL?2O!kv~|73i*#4EQdeq64IE3}|MKp!EfuP& zt5-TijA1t(9jNT1&*vjm(yrV)|6Q3fS(kzjsSHMdY z`4wgr&F}WaoewaTvW!*iPr<9T@}#_GdaUnPMG3x)pb?m)i7! z8b&Te9P!IT{%!xP8;DiO@~Yv6D;{K{07Y4r%o~Sja{KcRD5LFTptvpsh|z>4R!2K2 zWc(wv%mX3G@uCzpXT5a;mb8rv=MTC-k`+F?6 zxS1di?IyXr(Ddb8Bt-gksk>x|al#ztOZpNQ5 z$Ok`2z082%pKX&>JU^nzvYhyvC>2e)P{Oysi>^aM=1%ENR5p&DhLUB3 zLj2xCPlzhru()b90qvm!x3_k)j_8%3;zU6;s1E?mR9m+xH3{|{tosY{fvGOUa~f)T zUQ?;c64i!0fy0F`pTr_SI@f8VG_l-2v=&jrpji%HMgeh=QDIt6CGy zo2ttB+;pc^vq9)PbbaWwQsk1{-x9Cwle56m5ka8XA`Vzzgdy+w*_yn#Rab-*UTpKl z9ArRKEN0Sw{z(L02I7R<8zyuW-#o4_ND zrKz;GUYJLaG>`Tf_k|`K4OJZgV?^Y7Dpe&hxg1>!u@w?cMA<+_fkPJWxiSEn_nw>; zCG0m*HeB0M9W7d^6}G5vihl2}dctpt-(lVHi7gc(*g!A^A$cC8XikJtRRX5Fp4CKh zY>hZg`^{*B^&q_x@43&N0B`_>jn*muI3K&5lpG25nz!D@KEoejDvfg0@|00=mfY*# z`?-(_yWywWW_@Nosk9ElV0tv_)o?0d0h}O$*2PuNbG^AS=bEzS&9zyyb+Tg!gkNR= zgn0AGSI5dzfVjswin*Bkoi+6EWu}e2>gT00nS-b+nJ>#XzpVc_r+1*vYe?%ViSXiQ ziZQ~e?P^Ipg(I_q93`^$Kvxm!hvX4ZVN9kT6d)=JW!|;b+oj%uH`6Q_W&{{Zwx2Mg z(Wfm_kBo2yrBonE>JB6Q#hTbnLLL@A6wa3PR5`r91Z zh>M{yYFE#bmK}?E6-goCsXpgSqFA1ID5(b||ZJ{3IgW(24qJ9XezR9w1H_{p%|F`b)Gn+p;>vgVGw(~~-KKRc>ZK8&}5 z$P<~_smw%*R;<7KDG{$G4$h*#cXIUjU>&_EOpTcl-Rsq1!?f8aL_FB?8s8|Y6TS)1 zja0p%7G5~h4j#@l*GQGVCPZX9reI>NVj@hWlJNTdAK>WL zN!vRu238`5v58ml9ieON^s=3S;EI*mvpv?)jMS4oqMb!t5r6gkGB-k zWA3*xw0JzE=W?kEHC1I4*ZEP}oT?({H4OPQHs}rv{TF^KxVr|g^CNU-%A?t~QdrAB zmBLN;-L9sf_%9jRWC&s#}=S|LIm<&OteM6TI zT z2W;DszO8Wf!ZAcJiijT_<{^zZTV1k|TV$q_4$14kU!O8a^fUu@4!jj^6iVGDrl`u1 zZ1`7Ow&&9JPng*Q0qD#`?kn2N(#&s8*F?$An*;G|Qk%&ZnPz%rtmYLzJ(+QwSTS-K z#K6yoe_pG732mBWyZWOabhMI3d-OTgyFyv~Xc`2Bu*{w%YPwPqh)}E^2bb|u7gwma z#}!LK`ZbR>QQT=j*#SKiW^s-I7%j}WSR6&dcN}9dP2?^^SH47QwpEaFMU!r1!SQA5 z$NzLZ6n3B~Q(3CPUWK_NPvdYmqqVUjy(&txv%}GwWD%hsQ7W>CE=q02j=st7bltgI zD8(~Qj+(KC^n@4Xn|zI6F#uTygv7~*f8*ZB{utprOjxA(Br_|w{sidxeambUw2Bwm zO(3Ee977U?DiM312?|C=5t7kjA0nxtGrUF^v~5JJj;nQeApbaJw1qcH+90W<*Sv;i z-*s?7(&*g)&4sE>UVW(fq-moFB3P^PhvF}-s!Bqsb+uve{HiR0h+vzi&$p`@(Y?GF zqg2`J4E&0_k!DfvcsF9jRz^k%93$$>0Mhhca5NF5Va`);w-Si5*#R)F5`NEIFlpDk zu~j{&{|qO{b%Q-DzZh?Jt39PzkPSaqOU6ufd3!`FR0So^smV8!OC`!&N*UB^Q zk;T+YBlRnrK=CyZx+H33iADi!vYy=uC@@uMMT^|Mt;3J1w=K7AnClp&AN+GxwU^=N zMi1MNw#$SMgmE+5u6Tj8(lpwNv;QB>ct`e*XM8XnlfaP!Lr{l*FKCEiI6tx%khCcd zwoRRyCfsdmUR;+$6{qG%JR_Nux`EOK5r7oAw1KCg5{dvCnou-5nfAIkjx*j;&v?O3 zlO34F5fXQw%2OQ6rvQ}2LimzS*)2)1{Ga}g?p)*6RnSrn3l*-KY?I2hs~{i|uLcyR zb}!vX-}P)!C%1ma89vAq1ZVf>4MU%l?ox;kf`C#T;1=rANW~Dp? zjvCJ4H~{-l>9l9d@(=zH#?$Y)n)w8rmZu$Ul&eDux?0+lDnD055o5``Oh8J3KE}d# zF1<0y$Q0l7HFYSBHF8D~3>Q_MGXly143@-H{h4BHlno^~-}rJ9t@9>Q9mQn)9P!~s z)pj1XZ+&EwcL$7yL!ViEhLz^z<@P~!_G=qS2v&cTOb-miUC^z(P4^mlpeITjLI4B_ z3hOFc8ZS3im7QPI1Q_<0ALT)4%3@|Rs|1RjpomWnC8d(A_J8cJYQE>Bl#f=kiff^K zm7`c987lFjqR_99)Sc|)ZglOEW+*Q|IneA>fV_hDWPgHQEd>^36}-ml-YM>%f+VAu z^bHOh8~`=dh-4(0MykTNR4dhhyqY^I%Ufw#KKLW0YtL%zX+}Q*cz&@_^?cQfHKKR< zn;xf|`Z9rdXS!yz-Qe5z7Nm)k%4m$a+VKTS|C zKIG^$#pf4B=W0pa>Gz!^d)W+R%S)Npc$jl^EjH>RUO~)Kgqfx?w;#GX=gvm@X(L-# zvpxgLis(?%(P~=wY-F+Aa9z?(U&3laXcR@v*X`(ERZRYObh1^uGx&23=uWUF%HZ2+ zA13k(ik=#w+m1O$^_)eihDn5qS7Wge>^Q&d7CKxS zG|NSIWFCOA7nAE~=P1m0P`n|uvFICLqy41h?k9DT%L}pG3HqH|C*fxLQQ3@0ew26r zXS@;8?Y95V5>eZ64cGa;w*XH>?jyTPF%a(@B|4TJtZVPBMP8vP_6%B?nAk{mTJ{ly z2GSn*KEM}h^Jmg^Fzk7p=5s3uMtZH&DEOH6t!d&@be~jGiO^P0eh&m+mVZe!YhW0>F`Y1LN)nh72%?)Cy76 zjwB3%WgTs*ij=ve_*d7U%vUv1$;Eljm3Z;gnMaD4gi$75kxSS=`*`)Rd-wXHhQ zOqz2fu1>nU-wYQNGpCH@MzdaQJBf6qCU8v$ndHmXH866GUc7Ug+6`@!_=eUB5u~1x zin;9E99FERS_>QD+b_v<#ae#nm*bHCQqV}>SgH`u$z_m1j+#xl(f_D1F9kpX*+z%> zScg_-&u`Oh`h$5(r#RRMBAM4v#xHljey5bBz7AP6dp_w^6H9)?dNNOgOCjBKhOXp{ zJaDPjB-wxazt^3s8||%iCW>SI`K9QhjsUgj@%e_Kkp}5YTKQVYe2>qphEQR;6w`f1 z99^39%#db3>j0`{p|1Zk>?(W|BG+y>aBCo=bZn1Rq){n2EoZP@OYU;R9u)#zzW zN^35QR<0Ho=e3J8F?oUMmWvI?7IhbHA{)DARVFA+d{T=|LVgskn#W|2;C_sNlCFvL z5cgqWpssQOZ%%Y{xbhfvbefd8@sH7 z$asEAr?Qh~k|KHC)u<%}y_Ay{p62Zbb& z$dWAQ(m$6B(4-T+!0Xlv62WoVA&NV(55?x812XqRvSx#RNV;iTT zRKhnE0#dS;DjUjcS&c&Yk>AnOriHPasr1q^CR6a#eMdm43`~@CRE)aCmb;o+jxlCKZi6IgbT=ImkVE1gcq*>p4&yO`a&(d`X3*0agBZa zoHlt|3D|}-m4O;_Y$6oAx-)>V?V?RR`pqJ(NE=qE)-*a^f5fkDehk^LA1yV-f*ZNlkA=v&PNKtK@t@scnkBA=@oE6#+U;A|pDv@Jf%FT+Tz7DuBDZz8hLT9u<7Y3C2|wFWE7CJh_V1%*V<)`W3S*^;6Q%&T28hVs}i zGHoO!BSQTuv^>gi%A$cHK4Y12gj77+yR;{E-V!`Zi-syD9JKSl%;$C$?&f%zU zy+&v%#Iyg0{~7L|)R3()G8T-w&nZdU&|!>rD@=R58j3ub`eJC_g36F;WCZGHozIY~ zxltUjCFsPH;VC;BMj=+z3S=iDDj~>+fR%yNN0#M>0m!0N8ct@>hbg<-SaCP^XFdXK z*TH>oH$7H|6Xy!qh>|@klkh4jjp-E=4m!$?M@j@L?vo!et|*<(N9!KLJ^);1jrTP% zcJjsz0t0KCgVphL43&^nznV?>b)NaAuz{fWkMI0zYK>1c)sC8e?P(%-ZZW+Y^@7B) zex=emR~l@RUs38{)VlI&Je@d_=>f9_VUjk`CM^_07lUS#*3Fr@{^hlep8w$gVfD%5 z$;-_zY;DfT&9P$rjp`LJCJ-5=P6W?#jsOH>K5mlNdW#`<)puYO)a!(usKd4iG4*gd zd>PnhMEnLRuk&{&Gfm)BZ2s5wtK}2J|8G!4SMz1$3~y$Y>Rog?9;@6ai8M2uRhsss zFzJ5g%S7b@UuGIL2*m>A$NtrM>rL&N82Hk!yrzzBx|uU@L;ReNYpdN5e{EFHJGvo$ z&d0UYZiv4&s^=Zu5I^VR+G;n%UmMl)j&6vb^Kosp8{)5x>Ul>u#LxM-w%QHx*GBcc zqZ{Jqd|X@YhWKlvdfw3u@pC?|t#(8FwNX9q=!Wkf$FHNQ9bYIhWI%j*H*hB{@SRXcXUJi zoR4d(-4K6mRL?uQA%4!swbgEjzc#Ap9o-N==i}OHH^g5X)$@*Sh@bOuZM7TXuZ`+? zM>oXJ`M9>)4e{4T^}M4S;^%x^TkVGUYomJJ(GBr)KCZ2HL;ST-J@4p-_&FcfR=Xko z+Nhp)bVK}{k87*l5Pxk{&pWyye$L0W)ozHtHmc_x-4H+Lc^+HKl9926ML?q#Zx+<>)ihEt7v@Wm8&q7%dk%V|8 z%btkky2@@_38Y`H*2~qS6qywDrRaz+Q1p+50DYuv=vV9Y!@e9#$35y_AFcYQW%beJ zK&BoCwe%E!>8CiT#Q%iiNYgGy(hA`kqQ`$Ys(+|XJD&O9mAu+Z&5k}=yL_k?C$bnY zM<67}t2AaM~kWK_o`o;qekQ}|Zx3vZoH*kPg5iLrmkED5G9lN$egI?~u{kKh5X z0NynkJxZ*Ei)Ej7W(bM%i6PoQSRPqVA`LD@gFjejYBTP4dLY0#XkZz;re$p^4OFZ^$G#y5f6qI@&1!ln2@{tAG51X!R*AnKy z)$M=y+ogQr@p5_GJ!F3M`&xbe)qxQ@?ibGwK~?ETRtS- z<)eqI^2#GYXlaog^7Ik2VL+@+2d3)*7eownkdcl#9`=X* zQimREgKDA1_x)k@@OS?)sokV&XW%o~$1iZQe}|5qg}!It%=B^8a;GtC`b;YQXJS-s zu4L>rQWkN3RNHry_h^6Om$}k+eZTH}+8&hEf%XPs_7ULPB~VaWXvEdeC9kjJ({hGeB}9B00EMi15Oor*Q(n7Y&Elx&|ZBiZqw#$)NK z&VnZmUN!S_yC(FWg)7CUibsn~Ia-!e?pfH^^-Enfd!em?Lcgyted(WQQ}&2ONG=YK z0?7Rg>TtPx&m8n?HiWEo2W1a2M1ltlY%Zv?a`niL+kMKhROkxtd+DolI_(`PvBm^m zGD-!*4yBI!gcm8Fumm0!DDC;@$s_Tv5mOH$L&Mfo_Ydn;=P)?Lu7EzE#N8gdCFokM z;RA2AcOz5MqP+C<0mZ71B=+jd9C$*xw-O>|mUxg>jy<+s)l0{v!ij*^gDziEJLCm8 zmDq4`1)_v8$GY#5D^CxF*B=hL9K9(8OspEWQvb!@l1MZ{Y-Dy>-Utx1CCw2LNC)bN zm%Gvs#ifdyJmQZ#C`c34v@z*1!B+Qwlhj9~AoYZ9ch3@Vg&CZq+^sbPz3!G*J#cl? zz%7Km@s^w-U`|~yD)-H{8>mF$!fRbM)1ItrM)b{JHJySxD8Sw* z5^)xKV8oXU=~p4BXZeciYUt&Vg3vr#l`s3n)Ul$cu1ff&f3ADL%lVq4%ldc6ayqSy zFAaW6$ITdCm5#GVb)}Z?^+t76$WP*)7>bQXO)HDFQzYwZ9y^85tO#z8lR@W(2czs@ zArPzT-Z1%FAhpa^I$&a?uuJnY6#Y&Tu}Nc)h=X$k&H*$;0PCL8V2`rom1F^OyueRMA3F)7fSGlp z`b>rAjtg%ep*}b$4-fkCem!L|NX#UBdmk5Rd7*P%7qkx7De8!W0zLNP#+*~|ED_uV z_PE~bsH^OKU%^FFPdoi#*)0?ciG@~~ggNQ_I8}9n>;IrHJ0=kN%iqRvkC#tkdm+8o zdibKS0EK0EM+baa2mo#6u!omRq0o<#t>IQOG1eH5eF)K$GD0Uh*EvgI=Xs5}G@~ zWz7-|o0bA%ke>DqYXudZNR!jcYejG>C6bh_t3q@fu)3N_CZEXZ>``b7(j99^Nh>ar z%N4sQnxnG=8Ol~Cf^~gq2o%?$OJ{xHNKwSwMnTC+=e*(N$2=kK6)_6E8}(!%bdRcy z&Ic!$*M6id|Lt!L0Y?A{DSX`k-;Kv8J+nX6r6!C?)wOX2nYJM9UB}!r-aPan14n4@ z#r+WUs)irwc*cczOnp^BlwJvaRG5?o&(yw2VtokR#S};)ou0~wZBWh0fo3<+&OC5k zhxHmwd9RtCE>KfMUcCp(vhtE2?cbyA9D@-tf~lGc*SmE7984 zw=|kt6mCtAO*0FoNL{TGR&x5d6-I|5pc^@bsA zT#!BF)q`jomUqdN5`*UD_y286!XFpMc2#S4bH3*4X@*epA*-%TsyU2I@T$;q;@T#5 zyC7@9>5u%E zSqm@61KHGb)p6!g*N(E$K#QuO*$vf#f;6epJCoqR8+ITpQcHtF z<#nWac{`Pf5~zqc)+SG-I^i3-72}Z5vM6QXho#0c7-zMOW-lbG^)LiJtiw)MSamep z-JR{@kmimt#eSOQN7d809gTftNwUE51jz>7Et1sUm(|mF6efxN92uFp!AX{N>|~no z$|q}W^~OXCuL=Tu7}U*pL!;W3)QnV6^txO}_c<70q`2BdMuabDi9+sTF?wuk?u7>H z?<0r_Y3Fql>2x=-8HU1q7q_|rSBIK5*|8T6nr6opdqM#pL7+) z8WDCgtMfvyV<2es+~&DSOF28s?e7dy6)&{sdoYN^)v3sblvk;%+Ya6->M+z-ny5Za(Y2|_$xu&7 zT6mnsv`$N9v5<9mz0mVNMC6p1JRS9x;$BN_B%c>PC#D+FMl(!h51ycu={ekLcocj( z-d|k4&81NP#$M__G8l_IIliQ~NZS^$g{MAz!)=r-w zbtPVvQ*6TV?%v@3Wa?$#Q@tw#Iab~2&~*dKr?dRLp2z4G{0w_e=R^UGVTF}t_QaGS+l@9g}}yQ`fK z1G2b<_U&?@J<+?$?gxwRC0>&M_vl^kN$TS*hxByFlES?}WtE&y`<44l@im{c@KVl) zH1uE)9X_9MoSGz0sx3sRrlh3qx+`t!=Ld%za)aBune*512LmPZFq%HhF+ z{mXj`gML>F|9W?|7zpfE`5b)EX>gwoMDRU&!xvppMTIF=kK=O}V#K%QG4q?iH6FCS zst=R+nQTuLrj>Y(-D}_;mc`fob0UiO2T9$*dabL&E_to10FhD01*P3x*EM`3tbJ#K z*6HB-TpOCIHEvDOPNmNPkkq#dw1;-Js`RIf0be5D*;#72E<3SzFSl=t znnJ!d{O;~uP!@}bl-v<57P4MrwLDy7-W?p881W+O-IpR~&blsbMMNI;hsVd#TR!aj zp8P(asL`7Bu6H@_{l?#Nd3gLXr{$OZPP~2TC0X(aQf~FT!lmAIOkt+XUibPA&%p+& zjJ)L1XLc>mnEl;b)bOC|?i~!LLiyr@;Rz3qRhN3XcklG{F%QUx9dL)ey{|u!-+SfY z_0v<`(?2^IPP?;vdjrfX616VN7xSKL>Dk{qYCZ#Tw8ocJcY0SStJNNTGY@x}4ESvKMP81x?8>7jbrzw;rF_5Sk1 z#JsaODxYE;7a!YSJ$Zt9cmGgRe%Za|&m3@%6%(}Fzb{|*%M)ERhy8u-9)z}h6;%83 zzW%tJ9o}Cb!#JOc<=yihiptS_PKxELuP$Wv`6BW#h$aRAmb)DI?egME?x{|sCY}qz zOEhbsNje`@V7WS4Jsk$L?yXkJqYlXWh+(6fI`vnlr|9q9d*f6vE39PB&X$}EZPLN& zNVBONfJTO`<>c}a2mSG}-8*|MI{305TDyn)vhK>g)zL6;cXYIRL%uBUAK}}rTeoi= zA@90f`ctGVeE721zsCqL;aB@#MZVK@_w`-}E2e$u)<^MS1tPL<%fs+37y!p>;&T5> zzC^Aq_g~@Nc?w7CSCz|O*O@%DE+4+C)8Nm39*k&Q>Bsb{Nj243=ACz*UDFxw4uW{i ze@e98dqaeiM{rO^uuyj(;(;*n@V{r`SNFbNIeeqlVgD3s5gNpIdl6*W^BY=$0;30c z-XGkP54(5n>GLR{?6a{TlHDWa<)u4E@@3~>PlV&sO8M>E?|OIo=2e4p`(B~XZg1}! zPEXnR?2GuFo!#C0P}G&(J>J*?wc8WXyWK(hbhtEyjVUiU8vHMbN$`p{IqTJNd;*-Q z()V!9922|8B7X4~@5$XHUS?|Y6_bwR4LI08H{;zw5MK^oQh`av5}^F(z{FCgO1gLC z#hisoW4~H`Xi&b_9h|yu9j>`LD@d#;_JR#X*==}b^ zL)ke(&P-n1+c_o2r%w6p+yB^mhJk`+3Tgk&*PjmLd)SaVY)pi z0HupQvGcr_OlcLT14~W#vd^S;!%@!?vncDkcRc{aCOc$m{igc>zLmf+nIK$V&xlua zC|Qq9Or9H|#ra_EJ+INyl09=+;!Fd*gg~phQdfqeUmpfq527A@ORhdS2!3(x$ar-qxq2xDwyu>MFZ9t9RMp3^2XB>swAXnv(A< z$hbCh-n^vE2Cg}j-CSZ>wY@Y~6b-vjS-l_fVKwrH4}1F1?lO~ntHq@^Fy&)Egn+P} z*2#Pg-abZ4DEMfUv1x2!MH~iIbvi58S}(_$60S=|XQ{Qf3Sq46XnBoi1MiWc?s=7K zdoDFtC-Je@+8y;=aJqn`akYG0n7-&<=y#D0~ut>x;DCvpl*lUyjNf5PkdB z{pC~gj!UHFKKmFx&sF-&>kQ)X zGADs+JP8;q?TV*TAt!Y;4-_8fR5=aOXK#!zT)%aRsM^w!FFf%Kbu~)+7O#Pq?o^dH z9xIpDS#?VSOUZR(f)dZ57v+ooyjoPnfQL@K3S$yJ4?l9pG0L+voAIryhSJWHVVKO1 za!PGX3i)iTwo?0Oa+TPZosF{(mo3-T6qMYcF+R*B`dsjxKIOM!ZfNk8ZjDnZt%agf zAbc?$q3UBsv>~oD9|^)uf8-;)1G&S(_^)W!_1bGE zCy{^hlbp}Dk6-(aPipD==ttjrEAsF7c6MKP-uyR~-@dbR|Nh&bUaodNaR2_NKfPKB z<&)$>`Q)?Jk@HU;t%dT|U$|?O@A|I0cZK#{AOD)iLRtMs9{}akZ?BG&zy0>nkx{6p zwb7nETiKVhpAH{B{@s~>JbYPwJbYR0XTJKt2afJP`PY#go*k_} zh%aY9bN6fH!^c1VICJ~*(bXUS0FmIseWSd6-@ZJuJ5hm=srmmifx(C031~SgTv@XCCOgpbxY!bu+64LRSgA-(R2VoLKordch?`XCig3 zuet!}PE1M5ywu}bUvoVqQ;J8-_~5TI@cAVkjY&?f49lq3b7u7gK5dr$PyFR*f6kGP zubyzJp3@j@oS)}llFXD(49{s^O|TU~!Wg^fgCyZ;FHx_s@KKIJ5n^nu|soLa-eA_F%o^3^w)e+iO)T)Ep zq1GCcKg!ne-3AEq5XS8@{McW?sE0^6;h`&KptKxRC;5Rg`HC@D_$!*%-5EudPk1@` zyCzw-pqE>IDCbMLI@AWTUf0nv@!-UQgP^xz9y|juC};6NnbPtf{tAuBxgy_NaequV zN|{B)M}iKi372S1m-yIAS5cG!)IpSmV(*N}_o1@pQ$@&!H|?i9?}lO*d*zy~gWhLB zi9;rp!0&V~Uhb-3>)@FAq%(jA$gV%43K@Llop;1`m}zqNM8i#2lsOG(j!|EDSFFeN zx3FbnsE>6lA4>iL^Y>K$_@Ma zxBaYYogj%pbC;4(=#diM`<$Z(PC@F-6@6j|eo$TMb3<0vL32cxGhXY}j=x&Nt)$}a z);tlSl{u~+tf-u&L!`J~x(}71bOUO>V`A0vGbQ&UA@#O2ff7dkhMJ1J;l>fK$o8HV zU8Gm1NQOQ9@yUs^i}DmoV^%N*T^U}`-6}ax)K`Q0q>ukVI^zK+DQbZ&lZz$6DkIeAL7|Nj1CCoraTu>by8%3Ofz- zh@svgQQsyoT6{DYgU&^vyEU&6>O=7V+a`yzPfTuui6ERR$`wyGDtC?yMMV?7ESb&nQ6bthyFc71Pl>Of4<5IbZ|unpl0DVv<6Xy07Vl(y z-`AUDjXf`jUmfz-Say%}%^OYj-ZNfH#p=TxUX=$J@+P<@*+LIom%sSUWgrKj3_&Xu zeV`|{^*icYtx&ywppN++yi7WBeN1KD-9dW90BKm*k?S*X-LUt$qCj3B00L7Yi|^46 zjE->FeaK}@`qjy>{yhwjRFAlm&?6KjD!RUN+ev-*p_TFNIR z*i4S5tkOTtgq9RN{wQf!YR1(m6T@1{;8u<`iF;F~P%^o&>V{!GNFq)kekEfkM*L~2 zyDQ6e;cy{z;wYy|H@E^S7enm`f%Ckz+z3|CHA*RijLcp$ePBG4X2-O^hE`8~q4URu z2+QYoeC>vTw>e7cTZs)MQz^={9$Qvkc}))IjMu`YiVoGxHGc&MakQ(sCazKCK#poz zQ1ig3yBl3N)E$>6PjLepV2>6RSdKVq#&ghuH0i)1*L&M!9mQHzh@y_%g?NIi^?*x) z)IrZSpD-&N(p{*`)@R!0NGWC(fdk7VANH3xYpu?gYjr3TrIs_Q`W%hMEx#%GPpH{5 zoPVmyaW=nLODk5 z6ps4DItBS5Kdz5N3Cgncid_N$;Vn9?iP#h*M$qp02NGnrR*NbkbQt3UWDm7XM)pauy0bA>7=?0_% zkK9~@f-mzlSTqok;?!lW#tV|^i%;Aj#i`mx(KIWU4Im3W>m_`S(o43vEYa54(iFt0 zY9$WQt0uX;SIV4|hTBEDbKO3czIXm6kA(qrikxE<28416yY{QLn0~g%!=U_x7x)8L znt@`ZA+cQJvveRPe!4ce3oQ%LStp$#btp#UxEfv~Q5t-lIT9k&24)AhM`*-u&#IjA zS`4*$Q49DGtZuY4>f?WMU)P1941I45GS=}fsC@OiGsgM5^{>cZ|dO-^*$P_ z?14>@{mDNA0ua0g-S<6+M+4T*PX}V!l^$<;bwv_)a!#aGk>xs^OPn@eBeg*=N)%39 zFh~e$o8{qtsQAe8QK#6N^;%=ERk@8tjVesoveE8xw|=}Xk5$xA=*bMp+Op+UEumR! zkfK8V#F-CLz-@W1m!>=YD$`i*TPV55iGmYnirzhE%zEALhA;LPIN!Q1%eVb|R)xdr zgYSx?!kRMN^vQ;NF zo$8uM{WJtTbu-n{0z`^lfO$q=M?kWJft!-GqY*VET8BXetq9s}k~j!Q8-RK#Ry86- z>m-$wO;X06{e>qovphfG)4SrHOFpoky>3hoCeF73c@Drh3N2Ov6l;ymTLyX;e3=Vpc)#iCHjeCLLinkVz1; zTo z{Pt1kPNFB~Cmuvuk@ggOXO# zl*uP;+&PKZTvY#fZ?7(L(xau%ws9ruaaQZzpZ_EpPZEx-cd;>1AqWgY4uOnbI)m*cn5mDv?M-(v=f!Lc#31!7?<|ghZTHcWSOCrL1Sv z=1kV=cOb8SmV_c@nspPTG?0TEOSUF4=}GkHvYJDM21_hZDcn&h<&>tC=AxJXUhXK# z%)|foZ;*3QJz?}c%|ouoQkns{B$GZTt{MkT3?}#>YF)1fSEGl)WgUH%r>cb><%L6FgAR8vV2HO!bW=pIk$eXg zo@FPNyHCZNJ*0NDrA+#I*&7wS1{=7?IbB?-Xfa~_L2zp8Qu^f!azk%0{*mubnFa35 z_Bd2KR?gMIRfVjU+U82DAsy)G#5zM8tW(iuq09pUmnop_q+Cmn^475}rh>Yw?i@Ad z6da|MIPjE5_&Oht%Fa_gkrXR0h}~0O9_AcM+e&t8QBK;kO9_BA1unZTke0GSSLQb2 zX&QIZv6t8$ zbHJLQnKax*iyM7d9m-BO=qxA)r@3n$_V8{!=#xPZxJVVG4XUZ)h!+i^n`-7L>mFp}x!FgxGn=xBt~t_%hCb6Z=ou zTxxRcICLiv$%9fjK!&4tMe!k|@F4>J0M-M1<{Ta1nAyAF+g-zB7W2h$ zT24ee<8ZP*c)T9gk0JFj&$6wCr=lH#^~UHZP9|yL`$1G z23QV*pWpDbb@1~Ye8Z2JJIop0Hqq3w6XnzmEWro-5ju%c)j7^3?Im1Vs+Vr{Sfe*A zR*%;^Pv~76?}0DvSeKd3Z4|!@342l&MQtx{E%^W!8&zEKgp>z@M;3#juW}aN+R-yA zvCDK=>Isj({n{UEO-DgZ%k^tK6n^bV`S8&LBrliJ^Ha3?mM7l?FwP7#@SGi!Ue7bY zL$0rIDDS@DSnAzwuR5RU)aR}j>>CE`q@{dkXMH-)IRgez)vmGN10oF2qC3&2xXA;B zGiPA@c3un=eF__JX@f>@T~XE6WX^T{jZbTn$Geyg74iD;P(Cc~DpxN|3*~&EN%<{U zF63H)^;I05DALl0gPlJKE9w%oi?GUL4Qunlhp6;u5G_}gANTk`JDI+*(f4BO@Lg{z ze}F1!cNb|XzwsCioEiB1($2BHl6b`GFaZ(_YZ=&LyEa(2S# zeC)*qeGc3s-4n`ghc8dcn>bNGA&hl7Esp^>VMQwlu(mHKuZeN_tQ*$lt;1cwhtl2M zQQym*{$N;^Hy1mHd^Lx9r(hrB%ahvx^WBeuzG1w3LM~rE#U~OLZ|Mpx6mmvr+4WkR zdK9o$9d9^!;f2{!(98Gp_*ia#jOy~N>yOJBA1FBP`vt!J)8EqfSYZkZzepGFW)4V% z|4cGM83s@NQvg|&!5umj)zYD-&j4|J-5G5tWsp43++jTUSpVIHw08JLi-KS5ytpG& ztih1{btqVH{;a!GOTe%;loj5h;!{V0U8AKIdqe|Md?*MynmBfRDuG@o>BAeEnrh`6 zA&2zI!e!za-2>@}c;i5s^5w2+Kt7z%3doZWN{=o46OKC&uFfGI-f5MUat#Q5@$QH6 zQ69ZeKR8xI81+4QdNDY4qNTlf@id0%E;dlQ^CE;oc+B|4;x5FO0p2~Z%y`Jqj7MVX)YA^*MDGmG zL1FmR_Zk#Z*HJ-E1HCXgOl60;tP#I760b+`NV#ytS=ezkQrammd0oVa+AyGJMt2q` z0|KPV38*}Ig7rfDhL+Z(uo`pyRU$D3&;IsGjxP21E*alyF!6kBlNrx9%yz$p8P7tl z&hhvGe3tUpzehDE&G=zZk-557;YCPL2glJt_vV{H#`^V`z1HqnB+$a~9hl?j#eSUe zi@OY&5<3yx-I2D2k$3`4ZHy9q3rOvBkS~`5eFM4l za4_np4BrkBD47yb$#BbZH>NJVo;->6lRXV7$YWwDOa zM(yFLKK^)21FfRA9BReqOAs%?dykf3m_jE0JN~p_m+F5f3DRm`%D_o{%YR;>EAM-t zwF<*-K#yRVeKF%v<2)M%&Gf|%nP&Ws>N|^$oZ!2~i<*)hpNeqSSSRk4J}q>x*B~VgO{-v3J*14Y=P}jas zxfx|el9YPBCBuw|G~RDsJ{>|!dRQ5S+;)( zblY=fW}2x%800%UI?b`tQsd#Grd$fxX~E)14JGb;_MSq#OP=YP@oG8HCvXPWXyki( z0lLR`qi8je%J0Nqhh+Sm;^RwfTVk?u84apk*R8AN?Ej+ug?-Jya!WgH((;bSNe}I! z9@^|Z^WC)rGp-v0Y2ze3#VFw-f3>Inc37Jt(B8 zbTU|~nXlG^;VCno$u*dx)#?pBiR7E@`Z8yc$|+2Ar)Vk0um0*&^8M9QTKQ6QIYpcA zH2KRi#2DWr>F)S@u#O#6$k4^OeAZ5UaA0pw`C`Ez2>L2!{LURuZL~R)q|NOE?Yl4+ z`5phAapt9G{NC<8kHg*_#);thbb|Wers1=Y+EbtBtKIne3+}E4xqZaPT?Y*I1_j4gaHxrpeG$(M=^Mi{zLXhX zmg(-rbFpsky$-g!pkz&K5hIPIRl&N)(dc36wpf zEO+;I{h96CyZ%NgC}FK}7s?)M&l&62QE#Go8|SG|_&$%&_yqUM$UpI~iy;RM3A@W) zO=U4SV^?#^{8`ZLprv`O7{wM`X~uU09aQ3#i(%c+^<-YIm4%oK8*_1>0g`>xavz0FHSl-AXKF03^Yo+DMpp2;kO1JB8f^d1!iI3IY-StPcYA=LJ zVVCt$Ip22Taztd<5yvgAljJBe3Ap9aeHPYq>Kv_JUBpGT%Y|uohgE&RgL>8NdM`z~ z!fPtU4Xgl`Xek9T6zJ+x|Bgk9mEgG9Aa|-c6|IGnDw1GMoSsqJOch_J3)a3;D=1wZ zNu3T#11~Wzlw9$t)l^Zko>rjPj_RP66qBbfCOqDi5c*+6gjDLfb9FvOM3t+T#SFu8 zJ)ETg^|*8>7xB_^s(Iz5)@!aWZJbHdf;N1bN(i}grN_m;^+%wDub#a5COKcCIr+%O zS8<-9sxQ$zd->(*S8?7td+e{`l(P@$%QK%YMfs+3IXm+}?<;!0V^7g*NCUw`>z zeEsF@t%bjeb9NSA#VMbV4{v{Zy*Aq0ys2W8_4>BHMDvW?X#CX}eTn8-e39qutmXdt z3n=mh>-aLw8lU7#wZmmFTsl<3LnNie2K3Eot=$& zpzQn>q43!3L7@4oIB%C;U&VR$tp988XQ~W^l(SgR+^Bi`z{oLr{tz^aP_Jha`bv%# z6<^{s;h4qjaJc&!PU6cuL!j{pOgkT;>i$}Kd=#f!4;_-yowBBDgD>sH2TD14j5bXt z1NiadfBN1Qg}Y6jN$L-GSZUo$QUBV`^ZxiR{iN$# z4?a_dji$4xcN4MoCiPmRkF5#5FHKYIrnrc3T#p62HNC^adH8h51idq`46!feEDbLp zqsGh!S4q@v{W4E$S&ZJ_G1gqKP8cK}`gB|&hWB?pbCJ)DbPt)0%kr{zJJ?hZ5OxMe z`lA}{1=pCzu{U9_JP3w%aE6RWTd#HL5%%Tt$|uTi;fb?WSD}4&2tQb{K4_3eA-4=w{oWUyZ3pm%FDcLUCv^|;%?o)8jkq-4{!9YKOrRv^u1U;4Myl& zv=vXu_=t1-vy+by7AKz`WSR;`vHIr!O2(yE_#|Do*<7iZAM0qll)ii;dNvIJDT$n8 zUCMl8GPH)(n+kAbl3bbb+@UAc2_rpG0fNU-0AyhVX{_s^asIw@kjouaHnMx*~ zBb`V=a`ix!(H)J|I)Kt0_I8}wz!b5a9bEQVnA^B) zF!e$5N5mD*A>AAFh7z-s^IEs4EB=SY9h6pl)LW7EkFm!5}ipjQS=b5xfLJm~oWf%lJ?S~TO; zQba2a^`Malm)M>2kU#*sbM>8wg=*_hu(T~xLxMpE(rREruxOZBORU8;x?7*RY-xOJ=Ug)B@&84!;mE7Nvj8^jkCV35r787SOn?s$>Dufj+Y+*X>n5~@)pn4)EG z<$;TpI;R1CQgArBv7#Wd?u>=7mhCubAT$|@eN2~xf3a~B}1|rBM3hIWK zGIc(Qm%$%_3h3-FMqXG1j{reMSs{+eRgjR(C)KDRbxnYDb1q6&O{^*ey}F}p5AiJc z38*(mnbX=*1dcwv!lOoWAvH+~5f#^}e2pLYCN{C60(ijQ|C_c+Vh>Xw!Sf7?U>&tl zyyq!%8a+sdc1)^rLX=|mbvKLLnkFJ+@r zea@1%x;#@8S9?EgdEbLJ*|JV@rFPwN1z{EW)n6s)op^96Q03w_sXEfv>I}s6UL|lw zY;mj=#k0=4QiAisr53zybqSG>3d)CTf9w@>B3*OvoFGio0v9cHR(6O(=97K!wEsdU ztM^{SS7p={B8W(L?1uVZdZu<@o}t3Gbc?A~19b;1@H3_54j={n7O#4YHl$d9jN$6$ zdg8U07{R;bD3}%HSCOC-4b{yM2@y`E!l72gK`RROsV;IasfbU3qaQ?<5*{I-J5k0y zm5;Vs33RDit~xVxgfduwS8o8yUgl9dsi=Fd=Sq)-kULbu%8HCNHrk2n3P6bO9G?(H z*TTCczj$8pmOfX*Hi`*Ez_r-@|MOGQjF{=yz-6G_mTw}!M}gvl6MCQyM(8*Dz*F=P zNtdC}5UUI7u+zu6Jjq#V6?DuG))Z<~8d0<+WD9YHuZQf!I6h4)56D+SWgf7CS@I(+ zXk{EiVYnKU%=Vv*bTz8brLY0s^caGR$yC_Jl5B%S)tuCcqv6spp(YPxpi2LjRjf#szbcf=uQVzL@Io=&F`$TX)%jrsx0UWBw*E=ChSAHmCCJ~7p z+Qvjz)l=}s04Wrp4hdaFU$01hGjs8XKp~nYrdB2(i@_H`EIwEcg#gz|BT8kJWY=PK zRS;^VI5-!-Ilsy;b!SSrd6AFAK|Oo}UVIzL-J8?|l`b+-lss~Si(Em(HgCIvIPa@s zlvq&WdgcDj|8fYoq`~n?3Kc@2h$0V_rOvFu+9gDpsRQhljFd>f;1=bNWeBCgx@KG8 zhw*#OUI|P$eR6q_F!&t2C9Df;%2M=Iziq8p}NqaVQ>*P)<4uwnsasMQEm`uy-D`)B{u?ogJyYNAo%HNV_o#VdL{*q>~4U|2(HYhlE z27fEtSfQX50~lxQsg+umC0KLjwcHV2-&Jd9h{$2q649=~Q&p_%I^W>Og|PmU+s*KD zSu@8Q5XMDqVfak&2WG@TcXhL%G-1#!F-bA1XynvpjJ_=afvRWU-b$DpwPj~`bp2y- z!~~xyF$!?`f?35|@K&jXA6|i*trTof$$KtgQ{hrPIZn6lsW>@wM@dY`C7{V^c7kwA z1+*r{^hMF@AKo>Pmhui=kE&CkqX1#WZ638YO;{;XeM98psM*`GftIVw+{2=gOAwWT zi*j2lAjujh$>_~u<+de{sHi&fAg{pUYWASEqav34dWD3yZgrp}vS|Yg zmw#}AlZ-44N}>mdx)2S36Z6ZctY+=#SCPZdNs9m$orb8^N>^&Z<7trfH?OQ#F+&#e zt^sZUdZFZIr;zyISGZC*xyoUk4?1*#L_YarK3YFaYzppFW(v7 zxGv&hojDlt28n@GF_^3Fhyk*2Bypi!2*5GoW4QxHHa&+#Cm>uh$*2kHGNM%ufu=)f z2cXU6AoD;_{urXe`ZEJ-pjE1mD3NgE&ohYtxOrx4~i))>JH)@+;0S|!~}n7|-eqcV#+gDB9vABJotzuZPLIJOd|X$Un1 zTir%B1(Tl}fO)u75z#^>>CP^H<{j-!cykIae)D9r)9O?f#EP}ZIo{%2a>DsZlA zYrJL6L@074Uj~UL`tyO4@gz8t3*NR5MI@1HlfHS?KQNJ0qPQ^MAbPghPK5?9E}|G& z6UrO%7^J|J3~hOG=$hJslPy3DMBymt>{G?{ChHK-BHN&D(pQR8D>R_e8BXQ#bw#FA zc8CQT_p}vkwlftc#Xm%CY3y7c@QQE#KzPL|7HD0O0H}EEG7}wL5w}em$OFNk%#%`LkYc+%3Jl=YP0_H#1`)6#n zT-?x^Ahr(}OU7EkyUyC4n?MZPm1vwYi)&@bAeR?-T^zR8HTSoEo4Oxi+!FT0Ak4~r?t1DY+W$3&wb@|WVA&;%w zZ=9U?B<=6*-FIgTM|tT;?xZ}x>C@!y-9xGW-h&6Ex9xjx9Lv?q)+zC5_j97whZlrR zL&q|i#FNRq{+7(-)~F)9k3LD?Av6FG;$tQA-Hx6Fl%Nd^1 zy)m-S$CF$6!Gn&sbiYBNM|OMq4Z4ug>1^kX&!GctpJSG@!Nz-Ibl0{lZHXC?jMTQB zU+2MpH-Bnd^6S-LdN9bUeSZ;LZpN{Qlr}%6`k0J<=(*#ipNvMEo9w0Z5xel+=br3! zOca~8z2|5E-L-3PERH>Oo6~Q6+K)$H=C<#1Xo0VrEZ?Av-Am8ScKw7icDIj?jFN0^ zzyJPeO?EHU+ReAN?%k`v1X!)k>aGQsv+GZ-05rCB@enR{*rU&a+!IH^IW&J-bM~=P z=lEEFT+yA?J(cJ#qh$ZiJM|JSxR;kG)h;gThv;4S`bYjLjr6JO%O&D=AN$y6KkMuj z9*w?)sZS;!|G3P`(hDz;iVbCxTQaX}PaVH;jP9;q@9)$7rP1hfD(q-OuM?HMbm5LS zHl+AGd75gIi$YQ9_U1$~uunc(Mz^^slOK(4#$J3&AKMI5wrBTDmft=5tls>N4eOMO ztS_nBZ1fx(gFD;2_WC_75!}}205IWkp5ii6#@RFG3cO|Boq3z8&rs2|qxUPa*o5)3 z+tRl{&?%dx!<2bIsC}{(GkJQOXm+2 z6$&o6(?b*=n2S|ZlN5jQYn0>qcuCGiAt|)yF&n^Wp~+A@s-h2R-;hD^Yys__+MFHB z+OE@sqj(68_nhi`ny+3F(1{RIaq{k_Hh`u4%!V>$l#<-G{S=l%?6qt3@aU|4eSniV zu@PpJp1nq_CwA=8k2|{xpFN@%;XqbDVrdRUDpO`sPgzeE+hIa z3Ig?&;`gw46u!On{*f_aPEw_su5B+C6`gJH9h{Zpv!gJj>GlfEqcTwgeP6leWR$>H z@{*`>u^Mi?l?#=MuGaOgU=)8S>TK^EmP?2mwJiRy)_?Cmr@8ZS61Y$p`d9AT@_zc# z1H#?GL8vf&@{>AJFwVSQml1Jm8!Rqg6=1BvR_Rc&&2)=cQlZ~)2}$we4PM;>9xFp> zUH8-!izjuI0(WikqgceTbnV%uUlfV%tlR9H#Zybj76uQugvC4VbbGQ8cfLl%gaeU{ zR!H;?r3OFQ^q9496IXEwdaPP$J0X<}Y?gxyRg zT}J}vrj`*6X}j`?azZc8)IrwPb&TtjVLZYnsXn&dEMX2_)H&bOBUE-y-w0c#-AMIt zNpkGkrfMj3MTkS0e9_GD?d(MF#*9anJnC-D)C!^F9G`LnXeV^^^zEEq9fP9vF=3>> zG;?&IcZd z(tL1PT3AlbH7kBPJwG>G_3`F%S91=Z@wk_198h#o7pELVAoisw%!ETKvIi$70PlpU zQx~0vRFYw_u|7cJrg-pBaq2v1QE9lH5(>01JjB4e<6}t*k(U(RC7KaIcEd8$hdWlG zM7U}<)QCso@dgqQ&Jo*<;sh~NdE8jHL~3GiRf&`ymu@4VIfN;bpt&@hrm2Q(SAQH} zSd~myFnIIQOA#_I$|bn=d>BetwSkrcY5mi`kM*L>O*ia;b4hBDXn~&BKw;AaaZQ%q zF=NNo@iC`ZQ0a^SU*Nn+`@oXBo2mlgm1eSm<>S(Ru(NQr5Q+^aiJ`$YH7+VVeSD;% z3ra9YmKpUYJbI=hQ;MhwJRzCcLfrWlMWUf_G@A~LR+q;zi%>1ypnQUy$Gft46rfnz zGOkN@{Uht3aBit0HMRpZ3zv^1u4}`ut0zbUPdu?w?`6Sbc3@TEn*BsU&kD;ER|1{Y zKZCeZRVnPI7$2Tc7<4ECo!t(?QO9wqIIs6Qv7$z0a*?kR%0bO}SGkR%tE;DMsvRW(~xh#BA47A%hEZR|yjb zCR=qeu~qEa;uY&uPiDZz+n5g3rtoAJSz1nOHM@d-(&$Aaei72rPJjdQ99SthljX6U z;0g*qWg2jDA}3_$cVut=%=$;6+sA)5YQtu z%LSKk5aEplpssPr!%MPZF>oWFN+ka+{eaGT8Ejw!uT5c2yVA|Bvj)+iZO+Ayxk;AU z?IAs%Gcbr3Gb?V6iDslnr6w;A!RrNwcdd|fa9jY7_>2!;9BA#2qt9VWh;28 zpMjbeaTLOxkb=P@TXlt}xb;# z-94$e=%e7^y36IQ{BWeba3UHAMWkO!If|B&UB#Xy$^@uFJIq_Lo{FiI$wj~5Y3yv+z!utWjKoS z*2RrD(9_2uns0tnM{snYXKzmjdfp=(M{$s$9m#3m)~SOmZ@u+ee9z`=;9_sLLo|F_ z2QD1R*;^mzX-9Bo?Re08!%>{~+EJXdue75$4>^*fLo_+Q^YhIQ(MObwo+}RY^pX0# z6$g6$3%;%M$n5L!ZJloZm9Ow^o%6=!{Jfh#6qnkL1!Y@2`Bj_`&EDiF&M*Cv9saQ0 zp8q)Oexuuaa}0sijhE)H?DeDZ-rf0p4{N8es$9GA8gJ+A`mKNWHMR_O(<#(+{K0< zUcfS1z-=VO8=nE1%@%Xw#gQX9o$q1oOmq6#Ydr%I_gKepnWuO~Kf?jk+Ka7E4)S*E z_Ng^&H0G&{Ck)!v%ob+v$xV#mZ?Ph>ZT{AUV~;FufyTGO=VckJ^J+g;83ll2G6A}x#E!wz^aJ3Xr~L^UC}Y7piwl96q11}Ey3+MXR~zdmOq zL>%LAv94$>nFoU7!v*c&n3Z}J;dKaiI=#C24`R2IecBD{%{LfxU_}>PxH-sd_UVgb zq~z6)M>@xIL^S7Mv^SQyTzWP?XZrk8oKoPS<2j-+-fEjP^9AnVS=7k?k>x4_*7HlA z4Rh7Imf&zClQ)_{`rb#*Qm`{__+RexKLiOJ@Bs8ha?yv-r`epyLbl~7pA_ty8SL9o zozw8DIlrS>^)jp9^RKG}5F(*8Mpjaho?vj{hm6jT`(8VAk=ed3+`&W2JmIcQ7eb); z#}LVy-a#?}M-dGQPO)oD97x|PszuyL%0-IeBr;M8J6lj$LQ6)y^*^>BQ}=7w-I4DT zB*JNgLcoRq|Kj4vt}oii-$>$6J2SsR`cQjVyp^tygr_K7{@!41qd_@j z(mlsi@-@l6Cn^px%Hp-@)e5XKGZRf+j+ECX<{dAnWzAVRNN0N3*z?STDcXhJNrusa z5>kzwzr)JHTsk$YR;MZiiIgyJlU;w{im=4*RqR%_`=Z^4yKW%R5C4UZ-tOO}m}r}) zOof*q;Ckt2D^M2(2gl;|qX5;5z5V?hKFc;=nEg1+yL)x zf6%np2_T)TdNHMfquI8ue4nSqiv(V}ZANch@KP2~S?@5*TkTsukWmwg!6!DFJyxDH zaaFD)uGRER#Bky6*@YJLwe}3gNQyd@-nk|&e$J2N;!v#tB#z%Ni-FB_KO#S@mg^;{ z#pPV6SZoW@#mD159$HBb@zu2hlcG$4j0-((c2t_U1Z0y>KU9E5haQLLp>}9NqX)0F zY3YP|p}WUbgv>A>fKB!+L3JPMdeZFu+`6D;+&56ZMvu$_>Z0cUc@YcfQ!T$AUKN09 zjLL_IIkvJK)Q&HDQQDhQmd4GMkZFgs9okh`H8g;jtJi;wQACYcT5y$0i7ZkpxnD$t zF4AQqBq|ax%Hb_S3-Is!XCz&9OY82UoqN9DnWKjtyOUqpVOq#*-EKg+v&8rqVc8qw z$(frTOWmJ@SW~`2jbOSXN_}(3CWgV@wC|-gro3}Q^$~M9nlILkic`@jg6Dwuj*<@k zTv+Bbmfh=;k12F>%g5Rxo9`kwy#xBvM_72D2w?`m81^`4j#j3t=+VVSPp^?~(ob$% zCfFOJX4HSElXdJapQDLa$^{lgu6BxLcNN{&&|3;DNu|bzXrfB%WY!Emc&#vA*DF-d z`)VtZ9$NmY%($M^rdw1=LJXd+>m9sR;$AEv6yB|F+9Kb>Gob^pjp8@tIy@J!LyLr7 zlUfQ@vCD}ly_?YqqjXk3V20lE4SiB(!D2MQIVFubIXTe=PgFREaDr%dJ2O3gmug-3t5aum@5{w$l=^z%AW>e_$ zK2QIRuM5GZI0UUzxhKws~1DX z;Wk{0PL-xNbG1J<89;jwEn}-dRLay#K^+$wP8io2#H1%PULgeJAq*-a*Ly6hGus2ZP9rU- z9K1ZXOHPD-Yv|apKvEBCho=T()Sp~l)q$X~VwC<~yn)h1BTI|v*xy8!Lm`Nxa9pFG zCeR--I&gyyLnVt4MCO15n&JdhQMbuML%_8*->&`SW%I4CY3)(D)c-a^ z1wFGD9>;}(6%-K=uZ@;xfGaj?ZViMAGn6BkNlkbQox4;ACfNZwc6LMnphI(TGgHwN z)}^%6@*e9#dJk(47C{$i)hSGyB=8IXafcM=3aI1dTDY`S>$GcE(Q5|H->$@0)Dq8m zTD(>-!Kw^R3Ia)8dO)EMTQ)Cw?l<4Pe-$%AoaSU zV1pB^F&k2Pw0csi;rApB0XolfBA*0!v`8oI$A_3K{^1ujN$Ko|4#){@Dk@^ateV*B zi($b$#+<8sK+euppCwbGSU`>#S__QMDN${ri5(H-fpEf0#=(FUd;&BCREYWi z2((6mAeSVpiYnAYh*%T?>ru(A(`tR!{=e~np}mq{QZ^{H!LjBY01Z?)r~fFp0A$S5 z<%Ep9DqAT-^^$pj$KGHQ$u#E}gzl&;jJsL7SRH6_D;S2rJW0=}eVjy+ zPj2*H9TOV z`x7+)UGz^;q`=)*3YSrPOWR}$YO{(h6VLo95Ca#)i<&9}m6Gr)T=>c#uEKx!-xrdM z;)Y3G4F8JY-xZJyLe2SI0m}78Clo~r-GT{=AxWTc>AKWGJ(j3>;l4&<6vfPyp&Zf- zsn!JMi#V$0zdQ(5s4jF z(X{_Yp=%p))bg~1u!i`6Y*we#1dJ6m^5JR6nk1}ST7=_cSmGtgum2qp?xb=x`X)Ng zfW(#Z$cd!tjE&z%*nokC|G2A^6ZD{zBmWU(ErC?AY$FmPhQpY6gI(cD2O>TchRPBV z;6sN=r9GS2HANa;^h|*yA<>wrYCL z5b4khTx!ehioA(JUJdX#i6GVG+n|_TMuoImc^pfaNd@!aKSS5T!#%n;9NnV=QR<>A zKdi5WmOsP>#jr*?Nw0VTy|Nku7HZr-(4UfHSu^0!Y!N4Q z22X-|kO1&AyAa9mkC~8=9%}t9sv#e!CE?)U8{}20W}WI7FmIs7)s}Jx6rFWnB!I!%0pMC`lVS<-pZBeq0}A;eE( zrk2--rLHhZS8TI^5IuMVE-r113U3>rSgav*Buq>x=<60}J( z%xt2DB4J#J4{l3wSQ3%}0C9mr?uA*gb7BM_BH>|#;u7KXKfMTrN~&4~+h=jOf{KF6M@x5S%HvOTR*$=C;D=DV|0)I=EierF-ABdbDp z9gU!ayS6?L*(n)6b_872Ow<}EB;nDYBJC`31IG|o@jEer4{?QALx?^oevOkGI%o*# za~<@xM^Ug35N@EsQ5H4u?K1cap{vArN+f}PAZ`s!;nON6S&|igPlD`Jovr>w+NSqG z(F!6g<{rh=U@OmaPjZN~%9`g>;?RIjC<023_S9tXh1t8gXs$$$q9UN?KGxz|DuV3; z?2tyy56MIpxiSgjHd~(yiCZ{VMov^C5K#lZcm|S7L{P5Yg{W&G@MxeOAUrj$PsoU1 zgxV+@=t{V>Bw-QFJ6tb|DgMv@Jxp)LIT*EU+i@CQ%4LITA@BF$1^CCuqhiHhusduC z)7xvGPFeefc>ND;jeGD7#ylqWJZ0OVapz6^^z}0axZ@Za*+NV@trpHUX1rQy7T3*mm(Qr#B|Y}0P8+oR>=uD!ruGJV#0 z{U+0l*Dm}PbB*Px-lUvAo9(H5bL;7DI_Jswb7My1&9r&Hv+rgNt{?aPPtW_xmslh^ znW;L*OJ@2kc5eQDa>|>$50JohRuiNqr^|HN{1FcTwG0?)#c8)U@PU)AaP?`qi2Ktc z9srg@n-+Uf?m6R0tCK@26AhJ;$>sZg@Bd)4J3Dz^CaCf*PwI>I3{eq0(z?qQ_yoycdw9ocJ(>7T}&FPO|O zH|LBQbl0=dE@vpnhz^Y1%jtL3ak_mI^O-GgPVMyQMw(4WHP2PL{p3e1vZ>XW9+*^K2>qV+?Y;Pf+l(X7}>&HaZ~F#9rf zRxYbnF99Yqdta~@>0u7j|MEFH+_pg!_XgcdVXH@57i42b5q(N`aOa%)D7d`Od;(H) zn8<3RZSfA5jeJ{nLh9H}G#)>zW}7#jVd0n(=UY$nfV;c?)Kst9XTSFLgF@@rygn@_ zdar!m)lJwa_Q2xum~fXcyHZ1#ar>@KKe_b->Ufahn1Y83H`I;{AV#r$ljjJ#Zz!=! zf~(_Xv7?XKTWCtHP+aInK#=#9n?NYM1TSSS2@B-L{!AeemAn{_bTi^Y1PzV4;2}zS zs!+;Rf^fsH5O3q}>|d>vac2j=Z;bBTMI!P}Rv~N%(ZNG1;MJy3>t~ z&)j2kO?`S?&E4vlCy%wpajduH?(ZBg>t$jTIsU*`p`ZHh3Vq@|eHVQ$(NHCfdv?mh zjqJx5s4XAWDv9zrv4+ZOz08EII@G&tft{~%euFbGil=(2;U3RUF3)f;W4z0D;=VHA z3kN43W_cdjCDaG@q1Au%-?5Kq2cf-ihGr%+;(qEA7$fF0yL)n129FM~$x-_JgK`&l z1L0`rnvFQo8=Rn$;`2-v51F2Z8XeiQQha9TyIO$EgjmjQ@a}J@uRV2NE!eJeas`!P zWLUg&&TEPt#U3W@5=QZ1LKcdzp$k-kseb0(+izEP-!J`x4}`~(9nzvsG@?w^hYp>%XHS3Q~?5)WgOB8QU$DVX{VC?9@_PCqsz!$c<`;1P8AP=XYQ2407&6a6< zYFo#{XeVq+LrnS_x)v-xPc>{vW$GRHG#mqoxXpGy_+UkN=N2k6cAf6L{q`x}$5<|< z_;^3LQ}mrs1+C!&LOO)D`hcAAuAD+6v=p!Kp!lWe$JxUL9o2{8m+~7ept+<4CX0HEdMbQCDN5 z!tP6jHQ}Km(%qt?35jNYEL9;Te|D22I&xp&RP+NK?0C}thUR&Ixd zZ(UO?JtaUM(j|q);v+AM#tI%#-VEro59ln|0`dvAD4)Vt{cKH~?xPwjCfrnpHt1rs z&##7?{1_MYq4$*-SzWr+85LR2HhYF~xQ7T(OmG92%-LC%X52Hbj+CYlpN9NE?CZoG2D0;NJBR8=o zh(0-PF$s4gR!w53`%elqg=P|@{R zZiVHTtaH#nd(L$Ku%qJPjp8vHUjN_&iKcghciqOd=b9{|S3jd%))qg0itpvTc_x(YNE^!co?+I1ZPuB@vC>OU0%M zigSYFPOo>@AsTfx);(=fNr)5N;-C&=bhE0Im&B3`sn>K;{N8TtY-c+eJ5-gPkAsNL z?7#g07g64Rn@ZidwNPgZ>0PJN4cF<I6+5P)<#r+QVC`$e8$La-mc1JyWA2)5? zd|P2OTQ5v*Upd-sKwX{Ip2LC_m~!_e7coO}QLR&byDJ&?_Uc8OBh?kD`lBA6q~879 zO5wb`FRFfe{xIDB{2P&K_N!lw@ZpNok5u}}_zPb+DM&+Or`g(mR$rdSpV*axC*!-{ zg*w0=zb@A@9~+BV&4Rv-A($zcqrMwDzmChSra;9PCCzbx7+dua$O$BC4sLSP_j$zYkhZ9VtZ zcjRtva;h4aO&1sL%5_!M?_?A&YPg0wy=`&_F4HO8Jh%lHxL&LX@6FzSf907HMJn!X zQ8-*aySG|#ceVBVZj*;i?SF)d)cG4N)!u*l8N`Z9b=3p-decT;<7JVIDUtT)PQ3RP3y8 zmcOA_iWhMyHoK&K>}C2K#En!+Ni2D(YZ7FuOigT*zwg4Wf_1|DCx%$LR2f(BKNkTS zMhn`duh{&vYqcU0u&S6;H@)!rse;ul+?7`a#Z7Qtb;VsZrwES>m>N!gTc%4TgOIG+%I%(eo=flofBlh^dClx5no{bCH;6 zHi9tfpbx)sOA&yfTse6;8nYU zhF)`^j)!fk`v5u4Pr11S3|PBpHmXs}4BXPxI&3JVU_3GpmCA9oR^Fo z@+y;&zKX-{I*yzyzQAoGU!Ykon)}{r{XLs5zKV1H=ABO8k~u$*Lo^Ta+i`g2!+g6P zJ-N*}4i3?LYj00n9zE*YQJhEZK+pLvw{OQh-LHz`>RNFGuQcav}s-^mUxz z^5Jaw63zO%HXr>ej%4_VEI&7--jz&iF8V6Yk08tH(V82*XM9_y9mP36pEoWwzVq`S z*H)68gUg5Lg=0ah58HQszW%7`^wbu!^**Fm0m@!oi&-_ugsgpcFVlXR19&Ol+0lWiv2z}EBz9W8Bvht_=FoO>>;s81Zl zp_TD+6U|R?Id;qJr>9S)Gt=HdQOPcO6HVKr(e+chHUuJtp003$%SX5SIpOXV-6-ra zry~vNUQx6pr)MLz(^1HsYYwP6s-3w|~3m;TaE%J&nKdq zm&*7K@Ewugf$m=tiaP#(1!bUKyF*ac`JLe9zbX@AjyPjI5KCILE2*_Y~XW6R&-nZVbu zbLCt3%Y0~)ZrywPB%-=!&8^ zbl$!F-EWeV{h$m2B<_-95n`&!f{?=@B;s}vr*ww09oa*vYj(7PSu~3LIvpSuZ~g0V zf@sc6dFEm9oc$2J78~YN2;BG-O(*1F@!XB!C)|@vMbS?jbP#IOd}lAcOZFGgR~782 zx3kxJt8CXlr5qKDr>3Ued*rgB1|A|yg`0k7d<6kFtf11Q1m#?X=t*gwIXNR&eB+n@ zYdJgv(X}?Dya6D|mu!|OtYQ^93{;7F2N}-cL_i4-BV8_df66XO*(w(#I$x{pK9A~D zM9cFz<+QM49I*DfN0mAmP%EspB3k%q5t=cZ-Jy26M5i&cSBYUZE`wY|ma%15w^Jw& zNodaGOARZ0&ZDW)rBq;Cz@G#ix)ZH>A_09~CN&F^^@!Xllhsu1t!glFuSESkPv#&2 zI{@5&#Owl%R__cn$;3P5O53PWo1vE4Cq?VG!m)FQmK^j?_9Twz%-2otD;}WqdD6TY zDnWe+GZ;niq6js_$P0&qz^ERCulyo+O@ZlE&9tZ|T)ZIcl#H6eQj-E+r1f2Mzi#loyimFp~}tpYhOwJUaxQVLamRLS>Ins;@`%>vx2iw{+Y5~?^tXq-9gDtf*UQGcPn zuEAM2^b5F^zvdev&DS3AN+GHN`b#`jd0ds(&RRS?3z2L1dw)b}k)-4A6?iTb$q%^vL*wvCRMa=S)LDgY|R3FVAS zL1t-Zj9;e9(5UTo9mgJ-l`k1Q*qm@%pO$A!6Ws&70VW`epx$_Pu3S=4%7QQYy7N0a zRW-J{v}H~{MTsUAYevvlOoj2GdlMyQJ0sO*vY&=A=t>P|x1Yi5NYU4X?g0c1 z9M6f}k|IgLFIRk!DhGR;3;+FjIHI*mnc}L5>CYFgRt`YQ)8LTYQw8xS*O)7Ji4Q`G zARz*x$oMn><45R-_J{-{drmgmMu)t4gf3^DxZU0~GNr_ts791INK!xr?LZ<5er4-m2)gtu$#JRC(+rD(h2OEE>Mz5Ix0as|n%sKI!MK&na@=!KCxpx%m5 z#7eEDk~Ri3@M5ucnm?p!*y&Z=6N-l^GEMEf|9T^$4;HAaP?XKhU9RLh;EHyl^l2H$ z$lB#~$v~1P)YtJv!Q6RBm0Udw79F5dm@b2l5>pJ?0@|P=dcEaTH^cEBW_3UbqfM?E zD**SglS{IaqkvBTOxTnQgLOp*G*7crP&INUGV~MUIerS$v6ke?TtVdA4F6oTrcCQ2s%<_qE1upki1u@n*GHW=`G$?yi1447Ir1_8-Tl2Kms0K-u0i=Nfv&jViF@DuMd9NXM>rzF$C5OVpPo(-R98CbOpiNx@F{xMBCp=Feue_y*0GSRE z9ACx%L|uXSVzft5Max89GS&~vXt}$h0*=8nu|2{O-_2VjF>6z8>4x-EhB%SaI|LQ33 z>uLl*E2Sv3t?UU~jc6CH=J40J;&1;EilKDyiK@yUmx8!Oq!h5k)hg~4)D~siKfgw? zVaZPW#EQ*Yz}|pQj%WgW~<7p%T@w zY7wJm)blb@Ww3iOl8afi4KokUgidXlF5yxgg9nMbsL!Jx`u5Wh*qQlMc=8)nQe2>{ zN_FCQeruf%N_iCu@>ho1S@sxEjYd%%AQ(T6`=}3rHG&3Zwi3P?Bs8yTeQn;l^gF&7nyn?@EEB7%ZT*LpYk>0IQrt5OKO{kp*-D8f2MLRB~nzl>{V z{N(;LGtlZy$ffSFTv+|i<)-0h>ae(62~Xqzxw$x(@+sI*>p4vkdY$mz?^QG_EDjRx zG*}v$nJX-T`N^wDxvdPuuFI^bMlDabexn9Z{(&TUM$NSwzJ-%ZaOEI#al^c2SVNM$JPHRYFP0tG9)&Gf_20BU(jt*Wv+b z(S#|iD>bfGeaKq*H*Kt4f@?K~H$rP2hBjsS&H9_RqXDcF6>CV#h)c43p1$&f=B9s* zf4+_{v+}=srb2jBZ%K@9;{Fm?a7$h^V#*gZf)1q_w#2xQxh@ zlG3Dx+(f^If{=qhOoI{G&G>J*O9J#c5Dl4x9_ZU5NCiaZ^@&u_hwOL6yA`4~o{ACF zxa!iBJA@PTRr2Hk5w864E6v3blqa}EaG;VO(f$+}OL5UI@nc|fbKd3yE)?xJ3g{;x zU5~p5afia7P^5WW{|Lr2DwBlK2VTddl?WAJ+u;T~xBU`C#Y&(D*OAL1<|nuKfu)m@ z_pRs_xPq%BI4Mc=35sCisG1K=WWs{v{BQ>t5#12URuRFX!vM=6j)s)De@;^;V!m=+&sd0iy@;~A1# zb~r~rArv=qJanFnKj{V#|GKM+q= zR26D~#_!5x#G;|DmL?UH$aMYgxMUOB3}nl*66;-}+z}nlz&QL|G!8ZUUSrJaAh$e3 zD{r8XLlj4i;zP#9LXcrh_%yJcHWFG3aQVfO5Jn`i9Tc`*kMDU#F8B&H zGRIHc?z0^;kJx3T2WXyFBz^0uDxAgH4LglGNL}3$7b`1jYQ@YB+E-64Ut6)BL5+`~ zUb>~Fs3`f=`f3yWncn z%r$fh8@p>yC5qhLaz1Osc>T1Ur1R?b)90_6{k+Xf1v z((G&J_9m5*&i}RFq=rYk*(o9$OH9vl~07I@@(TN8XgQL9EW1=$kq;FwF~92l+-;t&HE*|uqgtUjW*%7 zb+v9|KFxv3ggEx62E*X>V+$)k^NfSM}_)8{c10u+ixHIn;@-;#?@twAEjnEAL4k;hb?* z7dclDY``?gD%&{@E-#H1GCe3%2w%y$yu`z|TZ)QQ`k=~_{t(apuOihm&n(d)M{g3_ zNl!RDGd@POojvmm8uIN4laW0(=x!`tpRvJulDsl5=5xMwjqs|ccZA7mGTGW%)zi}v-$+5zaJiWJaXQ=H zenc#)Wv^tde5NVkUQ!R+3Zr-SRH}(B$Kqn^t*`xy)61GTCGhb3XtTugHJqw?pk@g5 zeLb(2JWij+S8@J6+CcHxEWHX}o^iVGahSAq&)ni32vzN9!r6^EkU%U{$FHM0c;zJ} zpxS63Slh??&mKwf*ESthjYdyhm*Pj`>2q>1$oTHUWb!Iu8UFq42X|3Cg+3|T?0qCE zjuU?FHmMT3vyaJTV>0^eODKNw{oj9bxx&R*Yc;damlKsL-OElmL?KVh%X6?4a{6%P z*laptgD4+4+Vr||6u*h$on)#$oGqrORXv^is#0*BP8p51w@vMYJyku5<|9U!yz7Bn;?VtP%n#5*-QD^BG zO>br+Kc;;0=HjUDuj#lOA)%Si(<*QGIY(S?9^)B}KDMcy4kNyI(;pGvZBNY! zr)$qJQd4-ocShgC$4UMzwVUnjyqrDYV8Zo-FVKS{L-|sHo87qmIi=p(lPoNp=0mtm z^5M05Vym3@_YuA(w*3&UIh$9PDoBnx_-%B7lKtVIew zd=ZD(hqYdcuBTH4Po7YNr#kB2`8+BeXG75vM^=`Y9Y~|#;}!6j4aQ1n!*);x-K#IK zStc6rbd#OQR!5u9F`e;*#k1Or>aK4S>zFV@8*bb)Nu2Ncv|=Zd-Oqr>;!!-wZ$16e zNjcHCai;eP+ujxzl(2ha?@Q{Swzh0lJx?e?r2q+BgPpsQQ}S$chdOD-RLDm7wx z+M$wu?Hn}FQc3d!^JH>)S?w486BK+la-x~A+$2Ni4rUykM7psCE$G@gxP*VNq}O7yc-SQ9{9}%sO-a_yjwl=`to79r>jadC*l;OXl}BToMTI~Y8Q-bl%D`9RH%TvdUtc+gy>%K6U0 z16;TyaWmWBFDH;k9#T@vi&ob1A{@og(wk%au+?WUWlkEa@N3CA~NbjFDgJOAiH95nsa2`-(DN11s+0jh&bua3&{@e;+8<(D4d z;yHP6T#0Q8XCw&4+tc0g19AD}4>WF4AmLGo=G&zRkzB62J*Ko(8V!6(q$E=6E=tzI zv?rm7pubhJXc2@T7g>9+*HoxO5Efs=qlE*hOXDJq4-f_~!kHB*etH!X1bqQ3i&v=s zw{^X-pM-xuVkE9f$uDFzmMPnO;&+ zo6TjG;OrG+IZagTvP?nMZyni+@TM~h;vB4|cB);|u^^as3gZcvo`}8)W3@#{k-Ei! zL6-abGq2EGrzCFJrV>#+vm({uJyMxf69DWbD?4`_YVJ?BL;-m^mW9)+H1iB3%z_JS zav*}TN+$J_z|hr%13ne>Qc;JpmkhNS=+SS*}&tvGy!S1tqr;dRZL zwFba?*fCi85?L7vW-?gw+;u{l^G0WlYLYsMU4t&G!F|41)sXr zCqbJt97ID?0S)-dLNkIP^%~Ff_W}hohG z&s7HZZ6y*lc+CZIo>*ABRFGAMBBwF^+}!NTU)E6^#M4on&(lY6aAo1meeXROad74A zJx#qIJUDxEaBCc*`6(7_IXv^tZ)QHJBA3%3I*NlUF7JK4Z%1<8Yu~duf4_Yd=i<%5 z9lmEXjiWf<{3hSA5tk1+5dxPuMDrsYqWSt>ukYG?{Sn(Ao;XBPhcD68i};?+PxTkW zcWn5+kB;I@`L2z)wD0`9w`#6#T*c+=m)lXCw>S=@l6~c2JBkCBNUf4QF45{Aw-S*$ zO14^=y$P4|_giXiWrNE@+=m=4nqG{)tS|FeK0A|}S@S`bZ=uaMUwY}?ckSKR**T4p z=|Ediwu3p1HlkhilWon{*zOgNHW(9MLZja+H-1_bF{SS2j<@wvVtm#3WUbZq{@|yH}hll5Rgq+qmd`(f5v07jx_1U75|9hOge$>QLXKCMqLb+IMfOGeqY$k*)SiHr`N#r ziw-}CJ)T1%h^(S3mG*#-8^k@aomCkB<{vfJBMfrpUl5ygGeS(95Yq}FHRoaReHm2L z26+7qa_Qms0G&Ddr|{?xy$S281eJm7Cd%ljhL?Gw2JHGchoG-uv1PlWNIajdHYJ?9ECq$A~AUO@7Ci@+Q?Og<5|n7xdX z3K}oWQ>eT2y!aqfhtS;TSXWN42$Jp-E~L0~knGMObys+hb7%&x%dq1SgiVxE96P=2 zATwS7RJRbHLL79qXi_NVKW0xknW>=#Y=|)Cd_qJihU*ZDt<1z>y#gM0lAm^Bqfp&^ z2M~M=l_Q$9O)gQNS;hGO?4Q6RVbrZigIt&uGOdbpO|nH8CfX7R5iyl_3Q;It#BeV( zbG$}#fEJPzbnG>Tlw8)G%MITw|KByyr|!vcyFw1$d@czQkIvbrQ> zcDQge!^P@ATSF9aN@T7-ky=&XK`3CzqXo{COG~_8EuGO3T@V&|up+V+vp@N3sKqIk zQi+@&*6R3xPY zvxNP^Xa@|N7^6CWNZdP0=#YnsbEq~7O)DM2TvZn}mZ@!f9)Z=TRdTFW7X)~WD3Y4x z2tr|rwo@(Ppq;ABsz&YzgK0#Hv^pV4ZHb|;(VUQ-L;{S>>K$G-^A*Vm*>2~w-DC^= zW42#gS|FJImQZ6|qh=XIpr*SZl?s@+C4~sO@|SRYf^1ZV!)P2RV9ck!DluEdnE${H z5=u^Qa#XP0yc44cFMBFHJ%?xa4ha^0_ktKRs?Uw?AEEuMkdnN*ZvPZEx!UP6jmxQw zhTge2hJeI#N>2#VGj4S3z`ia-A*J$Fr$H{c;x%t54Yk?PxJuQEiibGVC|%{)gkA|x zOlNu(p&wB=^3lzILN#KchD;_kSL5I66bi@)iBhPozwx7>l$U;JB265ZqONl%s3-3U<<^xgjXzCDVE6wdLLKJp9F26Y=CwGINYJ?y@D>%u+S5n zx%gF7J{6s_&<~gF2TiOdTN$XNaWJwXU8D3Yx)aDYA82saQp5~2&^7W4lMiCE3Ikfn z09T#}$NK|wZRC=G=&G1X09IGjmB#iP-(#*g^~O-H^Uhf3kr46Ul0>>7Ko7)yCx}cT zl-V|r0D!WV3&9YjE}7S7Ve#bAW8fs?U9M0qX0Yg?jWzKIV{-9TC+)!{Ge10@)WMTfrEa$*{myu zctB$X43e)ALPp9qVO3fcy0KCe!vMCtP&W}QTu30_L7|XV`T5~CLk#<8Wdz)kpFr`C zNKN0PARtUQE~cqQAdAU5N|-00KH(qqsFZ=0r}^YD^B@p5vZ)o{V+d-3fA;+$evNoc zLa|7hnGz}vE9a1_826E66nixmjHhr5z ziR}YDL$a%7A%$&{&9Y0rNhfcGELHm)gy(5z>k;V)dG_b#6^YKe=&?!&cM3I7yXMM| z4=Gc@3-e3M6;mKk`3)fBz$-(oP|NKrHo(m#VOc}`M5A%_Oe1Gl^%fqD35pTburf?g zAwiJg{u(#pwF>i5PuUjtKN@KAn%MF6K9Ar*#o9R%uo$TG@M~?`L}H1Dr(8ySpgrPQQ- zsb#>(QHP+6NEzhnt;B`88Ab! zZqcAac4E~Ws@iK)Mg;?S(2?=LJ%orDBSzEMC!vHHwMl0UVXMdiF zhOe`l!J)e{U4z#UG^LSHj`AOaJyc)(+gci0Eg(4wVjBg6@I7ehk|CRL0~40Ek8Z-T+5^m-?Vb^epwt4ycX&Xd7V#wg5r<;oF@QT)8u|o^&F`LO;fM0CS}`0 z0ykACMT}9Z@T+E@BRD)l9y1;~#oiBF3Xm$Y^Pm9Md9Ut}N2IWBlzF!bOW$sJkXY5L zr0X?Wz_JTd8Yoph0aPd_F4?K>sHX0E2Ys!Vh<114ExUGS9^p0yNYNcq8C;ll2G*e} zsx82G9>-2@Hnu6YQcIk0AdI|CXRB7W@vz&p{)-F z0AjAw-Z_maiI1J6DhSgfJ%|NxD{YENn$IjW@?ZIHkV3H5poeOlQm0F)I6Xd}($SoY zUZ^71`P5fZ`qv&z^(}|o)o3S45=QQb)8e3?@A=W(NX^X;kY}R=RMwAoocE?{x%Kg6HYqU z+z&WbyHby4$3%|vi_2V((vf~p+?jR@g>&&;#!cm)(`l*BCN?$Fht@b*R?3A=I?(pT zEu`;FpB%cMze6Pjn!ZQyGqn_yB|kYWJaXI@f|DLaVx`{%Ouq|Y6Dz5IBb9}Z%90-! zVIb*^li29?sL?~DT)HD2K6f0cX7KJ;yzV}d(`nxC{76gs zvI`vz2YK(-EZw&md+PgGD(;*leoM;T=S~ztoogh#DUhau#|A#cgV ztBdKa>8(udhnO^K@gXM}ByQOuJ_;k)Je>Q?+qqv5HwHm6Uoqys@I)a-4tRs#8jw)Y z(*C(>OG|L>0q5w@X#87pSmF${YH|||8{))8v;riOC?)3B&eDmf|S-`w!{@{e_yYIhu50a~N?%e}%&FVE)Gt@r#Ff>=8?89dV zC#?W~GY`gfBM(NgcH@CC7q|L#Xk0LI|Nc=;`B;58;u@Cwl3sn`03YN_IY#~U371QO zxg}@aBaGvNNPO7Mfv2|y`M`}lft}qZo4lBWR?b}4i$39UAK#86p4`Xau-|ZhuKJ71 zwTNCbCfud(I;Q=yb8+5xusnBtOX4U(~HQ8Q}74Zj<>_Tz<-x?A?l6 zakBlP-II@=R_+A3@=aWtGEMJ#S50Zy-A%U{4i@zHK6vjQm(G+2yj+6s^jrmWZ(uP$ zr2&4-;v< z@WPM$C>}G4ANk?oG0Rmg8tNR_)Zu2+Ct2$*HyEAU`$%>j{RetkSze@HJ} z;5wlzaX$si6RhZts`^02i2FTia}dS~A-Q{ZxW`u`4?OI0_pYSZ=`um-Ub^w8|2zZM zU3*E_=mY)feZ0!tW^x~&QXbMk?W?bT&nY21*!lQJ$avI#s19|)y&5T<)^1Wz1GolR zXt#U+dxcAR|6~xx1fKCby@yyjnNI^H*jOHMBz^>bKx0#DhL=mgp_ z&S@YBJhwNPefwuzv6M0jn2@>wY<*(EX_wrI)mrsEQZw zRXAlFbP*P`XFRtQ4A%)D6Ra|x;VN^#O#9i4kIv`9aC(?Cw=Z@fEvoYoX~V%7JzPZ2`j z|KX=kJ6bP;W`sR%^CAhzc#IBmPB7s%6}7=(>^-Wkj91`ywJcJ1F9G+Dtm(+&k&M85 zpJ9!G&pEEFZMx=hm$U_1eKon#_5cRtjCXebE)6r&06L^7R5$`%IU-$~h@SGMC(XvG z`+?(17k4Kg{iw7!5^!XgbT9J$np0{YXx&UFc~=OqJALo_71-&{2ftOAw zDDSv0Wx8DA69K(Qs^wXSPw#u5nI_5i?t(nkVD<-LO;zA-6r(L*xB@Zk=gwhv7Qf}Rq@o3;&A!Y1B73JJv{+$^QDcB` zo2X>P?B@o!^oU;2YzM+Uo=^@j17^n@_~sAbr{iO7r};r*=SMvkW&FE4=J0{$uSlvn z{{aE!>7P^4W#^B2#&dAxvU=5exjCSWm&P!}xi}`Ef!cZ**r{-2{H<^JIF9DYd)^Zn zf1A06qfxs3!^5DAA8yOWPWNZ-3@Z)a=RS848GnHffEhTw|NX+#>8)EAV5XXUft;IW zJ-1;H3S1KypU$L?VjxM?Gcwz8(8!%XVs1j4dOgM6(8spdSH@d*ChWv00l)VDP?RgF z3fI#Lh9b0#1UoyJ-~3_FDYgz7zCs8#1n(wP;zu004gB6~B1iQ*_dLF|7&x~h$MDVb zL3(%Z-MauO;Gi@=b;KJS91jCuR%!fJh&yh@QQP^hOVd@@!x`UHZ~Ne9?g>m6sDm#q zl=yZ*=et|CE`-Z41fB0*JXNUkZP7c4NCBufSJ5@aL0p8zYmxCz(=o@iVk?&i-A{|^ zkPTJL&AW_JPrGb94Ns2pp1Xq|ra#}@N3tr%r7NaLF zK&hx82z62!(EBC=SoDlVYH==SQ0IobgbKqXI*778qh`&l+t^(0dDy=cj}Qsa@(yG_ZwwWDcM5R9F%YHboR{~ z=U3if1(I5&<){v!?}Dai-5|1@WAH-)HqnEuTrbp>2QAuJaW9hLkkSr z@pXo_tM#PyXzW-{$)&s*NmklJSV?>YKzG>}^3d6%H62|W!;yQj#aIh9 zd>Ymfnqa1VcZ5HI=lZgLdMbS5X8oAHVDnZS9>*{Ig)cG{?%w;hhfm_hm3Ax6k3EdH z;(Ve!R_)(-i~Zyk@Ne`Ho1G zJ7@2n9enJ^lUw0dobmP-_vOjc6t}%RX*c#f;XyCDiRRbhwwE_P4gNGY(JcM;mru+d z>Gl_H3o5#~2+U1Jx-BTBPkxdcd7cD*@+POtK6&rM_GZ_8n%bISM$An#pGf9bo+iIV z>FLuxtU$}kYP15DmBo{&{l+5j!h7Uah|5#j)?0Dja_qkJdMnP8C+XThV?nUeDaptv za>Fx=Bjdcj%2AIaWJSi2Hf7EoPNxq}Q$Ctc{pD!&l`{Xqqj`Ge7%QhKal1=8Jq9yu zwetF(Df0+93cg2zb50V>8|*nxGmv0}b{>KS}8ePf~gE^MxnZl=Slp_UngfSUeOS zhJ_I>8wLX}ZP0`OMrNItDdq&pnHJ}ALd8Rc*Nxs+Cwe1)vq#AqG+1PpzW3S~j(JdK@PtSmi|PC1OhL5*F7f?q*AfuZ@b zBtOWJ>+M%8=T8T?JL*R}p_0;V)CVdv#nxKz!`DAFz+_qT36~b@E2dFL3xG+wgFcVp z=GrOd#pF=^XqnO}JMS0O1d8sDwtn6l#1#S&nL5Af(4Zw+FngQN$Mlu}=9fbU= z3g1I4Sb>YtR}Qf(dPwDvIO;h~%y+A65bfwNmjZuZmtOzd=~$|?$iJY=6|b2mIQG|) z@6-gX6^-|g0H}j#woGbreE~FmdPLyFz~vrA*vB(ncqb*DfU5-Bpu3c5stFp>?@~^<>p1DS`Os3P zGgSbPS(lc{BG;{0v*JRF+@Q>j=xB;Gc3#zT|H4VOh7CYxkbPW4C{(U+{U^Rzw1eag z@{tO(H#RA}U3Q{NgVX@bwcSt!fs_fcm)B|`aAlADR*Pb~fQn$P>uOYv?Ii-s&w-JN zg)PI(Rd3UU)0D?LO~nE?)R=)h57K3)urjzbf_+K95f*sej%Z&}{BQq3NPH_7N0kvv zuw52CXmiPlP3Kq?Bihs$W1wC761d7J-I8poj?C>`+_F51ldVh77JSOxGT40B;&_Uz z>573h(TqJyKcn&-F&dXT3vr2d!!LY&vp=Ru81jH@DzpP!^8(#x68k(>%By zp@HHUc#L{xOS}c*jeIx9rZ&0SiL#sggX8&}}v8rrdKK55+iNASX*IEs?5x5;cM< zZha!-wLsVat@$iM)d5x4ZdKR=1hL)Jc$VHsQr#-IB3~S13}b2cb_I`W^qH-Uv(zN( z>{2_omk2zAZIcS4hV$3?{q`n&Y3bE-I^GsXvwjjVicRPS-8x>#nKXVIu(A4YT^mcn z-U&8Cr3>L!O@kyr&|bXMO4M@x?_(2IWI!v)_O*vnt67Hm=Ui4A0@dW96B+{PNjzqVx{yUw#C(GyY$GYwxtMj=(#CUx(rk zw(w5i|6t?2ZtY(z@No|H?Pp7EZLgh5ZC4feiPw!RN}Nf3E_@~amU26XD+ivdJ#6Xz zzRp%}y3(rFZ41Be@^kyC+U+ic(GaJENBEyF#?l&ZNyV#cffow&2@RcGW(U=xAq&q5 z%+PM|ezqpo+;gwe9x~@n#04oVpN40wNqWo}3%ll~z42!n)sV;_8+yNTeE|-BwM>7hQsk#*v5ovw6x70%gsvVO0VAoTmfqy z`%zoD7vPU9x!e?*kq}MAuRV*h2b`kgzpm#$Uk0j@fVp1gj+EH??Z_XcJ2FQ+x+Xuz zvdcW9c^vPkC|n!iGB%-uS7Xg_2VveCSyYj2K2>}1n8s+18e_)GxUPq=P~YfA)cxl{ z>1=*c94(A^ZBl9pQ$WZf;Uj?JZowE_9318T+uDZTlt22*QdwKnl}-XR-~(GC9Acco z<9(3QxXo|snd=b-$|&lVsDXl@436A_DVSve1AH%A(}x&gsb?NYH-2bDMbKj~nb<~Q zV6QTQ2*7cyGJYtA&~?odUz}W1v6_GyzxFdiCei`cLWSw6lk3ef=0~U$PR*$jh;kIn zFX?PoYz*#*nnWJ`ixA$1bWIRH_Z5G2lyrb4pa1->x}yscfufCvK%~cq0@!r*VRbQ= zCEiXCs_RQVn#3|ccC#mN&7#zpDoiMR>9_)7t3n9Ws#}C4iiW=;<5CLct+yY&m<|fE zduB+aM<}tWE}?f0L3hM6{$VYnK`x}!H5CBuTTQ9*cT5=I^pK{ZuH;yT5nxr=&@dH7 zP>qxp-ndC-Tv$#adClNlUwS2cUL+pSBHxSpl^*kfqeQ_14`<;0)DJjL5*F_z*Tl6~;6jrSzQ?1P^76z9>0>Y?TL!5K3|%ijo2i zy4E@bgDXl?G5R5C^$w}n5nY4xdJN1m9P;>itkKuO8an{)r(;5UfvJJY=*z2x&Dsib#P$YEdl3BJi-ad-}y4y1*l) zU#Z$|!O2#+HR+0OY2$*YyWgxp(={SYj>d4&hSV2A-X4V4Z?RREJHNA~52{8(}Hm~r&ZCDM7q>9w4^(W{tnn9&x{@)@hCJgLo zPZf;V*$k*Pbr+`oZ~hSq)gz&{TaFe@H9n_{we-3kNY$zq;VmLkY`v9;AX{@uY$C|v zMU=;0M$L3FDvK_f5j_ahFn`L}0Dr&-NwpaPCpL7kR!!0kyNbkKU?(nZ%xjH%-@4v% zt%Sl?0{0T3Ng-mVqB%pp8E!WvA9G0oO~ZRb`q3{UWRhS=lHxLzZVSKbX>-PhW0)&+ zsqzQtI7*2_oAbruX^%pZnNZQ=Y&m$QGmM6JJS0ocl2;YyiBF61}u~rD$1)U zPQfU!XN+GfTvXUbPMTyW>6_5M_qV;kCRUV|EWtrPm+=eFSb<3 z{Wax-H%-SfwPxaGb?Va4N~{mPphZd%Y!$q=wnW|3@KPLs`|Pc2>4 zU6OCq)}<A73Dlyz2 z{sdToS;H2A+?^06)Ib%Z@)uxZ$!&)rOj<@|Bec!nbP1QPkkHNJ&B;JKz)u0Hdw=V>^UwN=d+3a6rf1QR!lx#VcA z!Ofn!O;HbGmVNvo?|p&JQGI|4C~0UVlWp^~m$JszE76p&V8kPZsBw{qDAJG#{}MzP ziiW7wV}^=jW7wtpqdnoOpsKJK_187wk}PX&75Hz!%4^|8Q{n?na=-H!92!|1jaa-j0Jfd$TPbT;n! zxh1KY!fna(aLvRKfkgTUj1PuJGM)aNgiFC>8}u(<_B*%ukQRSE^|L#(fh<>h&L>3`RJQM-x^P>zQU ztu-5?A<3jGq}|z1h-r3$S#)UBv_YBQ0rU`8c7Og`C9F!Zr9jWf+8!e9InvnUvjL+x zI^j8@GaLaUcFG#F5ixBvUIpvpma6)O#VT4cv?#(_Lmj2U{No}2`b5$3g0dIdsCrqv z(P5)B?!V#|ZG1NMRM!J!3zJh4 zJI5!=M}Skn6L=kQel<;&69TovIZ8`MmeMV7p^c8jy|TCHcsN z6=U!fiP- zz6*^puFs7oNC;@AY=*#aGNE@}b9^xtJVmFv(JaXhb0G@pVSjke8_?#<-ewxEWb8A=V~JZeWM!GFC#OD6!t_c1x=4CEf1y7^a?@m@9b=9z=Hj7(T4*^HpKs zaYH35-18-5zRAv=8qeuAibb@rs-n|%2Ff3*N@M5_37awF>}6gV~KW|&REaezyCXo z*3QmJAqbQAz~)K3Jk6PEq=jY{vz|0h{n_Vf7g|r0%s4RV4tFdXD0l9NACaGQ->B;( ziTjQpBse?p;*A@;={0}iTX@{z(eC8%>xX-aB>f?)=lb~wH@g@f?C6(7o`@pRK(BbJ zrTV5c=8?A3V?8RiLK6+FczR0}*YtA1OrNBkS0}5Qu~Oe$olb#OTCFr5tNQsmD|{_E zCz9#-cvY#8DzGp`t3F^u+$(J)dY`Q1+bUgPT-Gh;>(?L8&ul;cz`IzPV-=c!lTmXs zw}P)^|NJv>bAIu~C6UkhkG=f(vuP+L9&!6UJhKq9xGluL24J@nhSWjOyqN5aT$CD5 zrz$u=m_xvvGYl$vyp_YA>0KVb2p_zx4yF9Qd*E*G>g@2|kO<++!S_eG@SI6+Tb+=$ z5x{qQk4qr?l=0ow z{>F<6JP+&l5X-jUS{v;7{Lrn3*9bi0(=?tDPKLWSTQ3Aw;PoV)#w8Sl$QS@vmMS@$ zrUabGQ5n9bd!xidfu|~@v=#U&dc`NgY&Mn{y=;)|Uu3)j&KD0tyOr^W;+GaDcEQKe zqOo%@&yKzES&4X}f1m7C)Y`nNw)imRw~Xfzt9VDl0&vWqRD})1R?E&YSnbZLH5q&2L)1DX7%-bNKOLL)B zlT|rhnPEtHg8|8(17sT?f>LW$4@bxmc}RG~*9){2h4dmB?}2yyb;k2T2=)N=(D?-3 zJDm0CCfG0EaI(ylBk8aFmO|uFiab{xZvdt;exy03`kW1BX62Y_Z20%8MaSNq9W^lF z=Wu2|LmPcC&u+&7vg>fFTD#;8kA*wiz54RY&}Ul8V@0pqMVlkiVJX7b`S#?P5m6_} zO=y3^1qIJ((f%ZBWxN6(TuD=|Cv_#dT3u0hN@OdC#c3s-mGQ~YOD6>`kaKmMAS1kW zB`!@^$|#%SnWrFX{@>>WPn*Ww-{=_FBtb(oX70Aq^%lq9VG`mf(;@0#?1cH|D!CU2y50 zZ}s)Nm&e{ZK~Ne7x#j6jq7GlC_%i^akm=GYW>W8&%Y3YmYKfPU=-CV6qb<^|@Gcet zZ~J>XxbkpX*mJfDuWET;gs;;FVegDLid=1no+DFeVWTIkP>B??uC(58p*lZJwnAPC zVues7dISp^^#tj-dZ;M76-j_B8G}3pHGZotArjO*;~@pbH`1sPecnDeU)id#uTU z>;Oxy{F%oZnAM{ZaUE0bUPw`jP|2F6v6b^vYt3=d2sxlc?F4rf_(F7nRu2ex!rD%0 zRzwSwN?vGIRx3y!RdJDC2yejEF8KhoS{^`jel+ELmD9 z^B%|+_za~Gj>UUx5GNt z1}oPZv2`Bvo>(Z+%fg?7Y*w*1m7xr2_|h2^99YJdniq{0Uo9JdUE!J;xJ)keL^?p`T7586ab}On>(8DL@TaC`#n^!QxlP z1Rl&-i3F-|nSU#tSXXx@n{mJKqxZ;MTZ7TkDzHx3o3uu*%D|!f5@ohAS{l#3u9>ve z`1pdA)^$RJt5O3GU^3lldf>3rhEMzkRXBR2Qq^VyWw0O`BC^DXR9cM;up0;Kg1p8C zah+WeDW5Jj>>uIrhk6q4>8XxzJX`qR(wEK;fB2{d{=zE7GjvxxJC~;c+fvW-{jt{` zf_W0}Yh|e?@jm@>^5^+JecGPq`{5;>)oA{z<3(FTh75HJp_%f3(rso{Lg%83{-x9uYQ&!ZY zH|dG+7qK$M$`UIF2Uy`Dxx$y93jEen9+oR>)OIWMXxj?b^t5EGTnj6!0eHBK4aT!Hm$;a~ZD`W?;{*CgYGEx4VhiM1o@u#L2SD2yDWLbrfu*?yr_A%kkE z@DWZf6@ES4FuT#8*$qwDb332U&(G)GqenwJKkquewkNER#-OxN!U`|kTCzo01NX35 zqO$?AInq;u9hS^!kNC{IHb#oAu#{6;tx%W-E+z03{3e#5s~I@gB%IkN9C2K3Z9w7^ z4f9#@4+aV5OJ%iD8$wtGrf5hcYpfosV-IX(|6Z7Cv^)G>YHyRT zeVSw8@83p#oQ~L5;&$v&E$J2L6F#eQl2%|1XsX4eWtF2#O(`7>gp9(9SED4K!&5Rv zACUfM;B|74oMW{Gb6#NZ)<34lfm1nXnjhjdrsnljH!b}L3!TMV=DGl}Yx+E?CMXqE z&s56L4bY}tcn5hot?V&9Lj4wNu4HM7p;{J3eXqjav7n!eS}N|1K!z$wQ%wa$3Q-#k zmGy%fCR2e(hitBwR6xmYa9k>`gc|?s7WXt$a9NNPaKrIqh-JF@R&p)2>Zbkxp4A+H z&DhOx0q~7Wa)sj5eWYBm59`LB zm1?+&m+o#;Xvo8)VM;6KDwO6 z=s#bS;qbWs&(YCt4XN_`GSd!N5IHocyrT{U74gBQ_`9kSch}r(*R4yrQVG zLrn&m>==faM>qqGQl+o~^2iC#_yOm1{8&h{EXnxvlF8-Ix$8z*(6bK2WJ;z@z%)3^ zl%9}i9>2awgAM&!V8CRAjX>*Dv;f|RV8;kE8PCeYq*(D2DV36TGS_2^N0@_>%?7Yi z^?xzUKiUPPqOW3T!z_l95iH0<==8XqO;XuM2CYHF8+?R0d`q#I^6J0)N9h<|#s~)Z zS7g?o6N+y-SKXtL=vjHfut-->_}n6Ib%Z2)S^=BxGM%3d@k+RfWN7h5O=0Lj@u-q9$>2mlrw2GA5(udBGGOCHMx#W75M6PD7sQi zrl}Z|t4X#2uMy;^Sw(tV(e+kgU60)j1>fbC$~`FUlkR%{tG}3PT8KkH4`eBPXBb*1 zf^jSp{FfzhKRZ$Pb2XSJEJ1hFJ0%2t?DsES^jLfgAz387-ky1q>wc8mh4Ri_^vkEE4=C_Ct-S13`1M?bmY>FZ>^W_L z%Q&G%a>^$XrV{U8#T+nQs`s!kzjQs50AAZIr38m_yL6DSi3VVm>Nq%33ASSub6KdI zWe;qPaQ%{g`s-lFVYRCyfA*^hJp6w8&`KU$!%{*Hnwx6TT0=@z^VglR#e zwjeq1MORumEO3VwHTf-XyTh7F0FxgnRZR{85%_^2nx0=kflX}Qq5zdX`8S~<`Hu`& zjR3_BkQ0|7)+1)YEj~9?Mb9~-0UrP=6IUq)n?9Ha!Ra_cyD0oxn@ zN>;w_k2^a$>_zf7Y@JXrXE|qG6f5j%nGRHKG#PYvoUgRz3J-Au$a1Ac9$E#hC&P4C zYm9hvT=fgDMsqu=!e!HuTP#M{jYioOENiCC(JdWOWsY3CG zQm(KOcp$vj@ZkGJlA^H`?6DyARJ9UX;zn(^$1_{uOE9`Q!= zS&pnsSuwu$fsM|k!(dhNwBsc{R*eEs{fo&?I!eXhoG<~MxWL8BIAmj7E7Kk7d%)By z1}M+64sX_?}`u*(=b1uQN7v@%lM1wKXUFoaYZ2#u|S1#(Z= zRRYI0B#L#!4=e#S{34fD5sy+aHUT)}py_1I1QKT9N>7!;7|QPjoT=l%IbM;w!-ffjm%} z*|7*dGP&@Kqu?M;O4Ya8h%RG6sVRuyMVW2XX?oB$>V*U`|Jn-(f(|miH^RaUJh$F# zd1%DADoN^0#;6WUcmznbsdV+ZZuAGfKxkx14=@b~;2MqR4D;>fjmy^+FUw@=GNAb0 zzaQ>y3ywr+e>i6cz?(0a_jV7|8*__eHtg|w4h0$-bAvObPiBRIv1AO}IlNT(2;40Z zK5aKA6EluFtgEX8qp}livsQ(s?0YJTwym>W_HRgyf%2jiF+CRJFvA{X$gEjxYK$0- z@Gqc_6o6vzOdLe8T|!xSEK^*A41A>zqO$W|snTiBBc+T7fE4RXZA3~nRk8IsN0WZI@sfPuVS#QPilA}PciI0J|EHzDj zHZ@uBk2WU04ue+s_uh+^hUudfz_O9j_DKb915BtAG!v@qNp}R-g|PPVW?9&y2g|u$ zoI(_Ia{8bC85wVc#gnBc(78_1eIi~f>-k?}UU`#MpYip>_WuMXK9asr_D}5ocNcgk zssG;YMDs^|f;rNanIiRXu$(;S2@q!-@%Ui>T&*!p<)X6(c7UU$-~(?5MZ$?hmWKVq zG<}0Pe}5)xBDQpYwm`F8;4vfc{TmqB*QNNhvcKFf zQ%;NZQ(j}s)oZMHlo|bg;rD{66V`|Tm9)`^p(Vy#M$bi;$@n8`L_NaG zn7Weba063P0-B_@P(76;ixR=d3%6mpbW1Mtc!;?CpJbNu4CoSP+I6_}Q^NcCJ16J) zOX+-3@v=MW7kmBL>->1}kVES0v%NRfRlWs&Hx~y@EH5hdIaN;3iC`+9rs+321l+Qt zPL};_%l&?_;N9VWA$Ol%rp)W%%h`F!vwgC2W;ku$J4X-S|a=U7^PD(6R!xO0}k zGi-!#R*c`XxIUI9I9*&oiWmC_-)i^x%4U0*VL@myLn{y{(dDElrNxpmb#NT&e4#VK z%SZ6=afT+l0{M)bX_K!NMlB+qu<6_-rGF>((9UralYfqb_{@g9P;jji}1M0k;`Ds?DO3f0%Ug9y>JkCM(%L)!eq8wu8a#W z4;~@rTIT(8FxRd)&bw2rFdDkL96>sW+QsqWEV-4m*gbe8X$FHZd*ysd!E0|}d`ahA zW4t4u@H2d~ZZ=aFUZ3oF+jN`C9>i3P6rh&-G%Z5-B9hjEpQr8OJX}6qNe?!e-&om*HlwU@7cf4JGU9A{yrQ| zuuoR!D=X#IU4`sQI?gK^KG=VCy0X{L4$GHH<$~)xeRH{5$;u;-+0YZRi|KT4@0?m( zV>~l%GRygRLgf`+958xk_%jv0!F^-8iRS9nCAD#~U((xYzSX0BvBRAsvcip34BMF< zxRtY2-|thK8I8LI%ofIFE1X@|)y>qx%Jd+t-PVMHFFX(pEAYW*Soa>Sn8x;{PYB)0 z&Dm1FRTEkHAS>p++$LmpQBo?>W*-2PF^L}aR&il!31^a0+Au(Qo-KpL)sllI^1z;G z!>IMUpCr@w_7r&Tp_$Z_s-{BGrCiy&Zz~4W6NFviI8_q<>ebp;(ydS5GpnTLK{{Ek zsJOphmX^S}0|F=ZdZqegazLP!7V4ZCCkW*B8M`$3b9Uwz730nB3qEY){^C;VmE05f z#8vmY_#QKKN43(lr#C!d?mz>i^-s~h+G}uWe4pvvG2=|;Pxo<2^g-iCk9u4cdp4UX z1Vu!*l_i86qz!YN5CAxIaJ8yMd_&>o%y-2zX+%bK3dOAHTILmSWGTKZW%p$Vw` zr7JnriUPX^bdli|k*5V3(ifs*Xk$`kJixPbqFUv^Rx4?h$ar!Ln3k(oTgI1j4B|bG zBx>y+m_JKGj&!m%Lz?U6p0=E2@GV^;*c6QxCmuSOXZ<*ZG@2Fq_ahJ&tN@o&LUdgw<^Y=QvbM-!sGC{o{EqSNh1o!ljjNiY)yuuvs{G@KEHp4}Za%6BnI#kqM zGJR*Mj8A)Hyu41GtT0Ub=Y(#;@2;}u*+uQWt35t=?}Y6teZX^8H=;C`FPFjuURr^v z&0LQHL2zFrK^?uA>u0k<+Y+M$SCgY#L5m>35M5A^6{&(44)zc*wp4EoihFB8JhcR3 zu5_(m{4R(w@IJ>A_>MUr6?E>KF~Eg7U>yO#WqM2q2wwL+9C_f zTI!svd7db{iiV4ggWs-4Derr}<#v;qtPn~d?&q7v9ACVeYR4Q;?l&#%I9&azoCkPi zy=!Xk5`6}$Ps)xmT7hKaAnoatiH4|gkGY2_0xvyfIM-S0 zjym+N%6aB|ivCZ)-5Rqvdaezv{U>O81Xs8Ey0l@Y_<{jqB(5^vu{J;^<%E^-YNTju zCQb=VsGWwj&E>*qbIvFg{@HuZijbz+{g0=r1;l*?yrd*dq{F|U@Zi`7fMI%2P0gOf z0H80x!NCjODKBZ$(akDtXLoVaq2k3gtXrT~8{7@-A>NfHz_B=0pW}lZ&G@AnKF50{ zy5N|I4l2Ykfxri!d!Xfuex3@cBRQuFPe#Zd|DcAE3Fh!b$T>U9kz)m>nuksD{%2X{BbzjK> z*TXoofSBsag-RnG%7m<0@it>4EnV?r7M`eaKbs&UT#&H75-m{Ei1WBy&#@dZ>h@cfq!ejtj(n z_UWa$?wUf9XrO!7V4J9}~WD^9a2A zUEGTEN=n}aUOh?aRc<-4m2OzktvE-*uL*O@$tQ}v^2*JdUw*5USNz76SuZP3ezT9; zUcMOk%{P>!6ThR?Yi{?{U`9xTG zy0(HfS$PX9+{p8Uc#KwbD~>&BwVRdZOS7UId2}mIVB!L;TXE>ghkl(zH4=?4qGWa? zX=Mf^@JFjY9lhG86{(~>+^in;{n3#bLGNp|bo5F;tDjHh=y*0mi$;>~bRey0lt_N8 z%nKTU&{dNHJ(!>ft39SP9hGUpf9!@&ZWsc;MF(<9c@6lYU90D0UjHbL+p6t`WD>FR zRXqV2$6g_@3&j_Wo@+@f<_UEZ6->IGN}9D&cHSR8#E*`XCGDr3CW zY_-1g$6ffGP5AK~!6g=LHfT+5wfL+BKZp*a{uZuVbr~n&eB4d;|I0Nd0JSP7FmY)DF0_9v^4l0l+rRS_mY+>xtNmi zNls^xbDRY(hWY|4>5~b4078YV1Y4vXn#nz78bgVdPv)|K$+99fE*t>G(va09;71oj z(a_FIaqwr>FG%*8v1^DWD3&Tp^vWwyFU*8NW^nzNr0-IK!k-k(cy1GAnuaQB)1)DN zWa%6Xcj9$V|0^WgKLwRP{il;4@`}pl9Pm^U2+*>Y3`&TFv^`>L{uw5LA=rO8>4IDG zqC$J%QwdeA{z@^OAYs^j)I^|nt2tf21=Rb1Xsp;Hw|iX&- zGLHq70~KMaX7`ZY7hc63!@|t6VHqo^ltpzV6pfl*nQHPJh@gk6mla&VVpATcrD`yu zm=;gKh`1RI0x8eA=l{_8;<6m?(v2IwBxb3|%Y%B`2~7X=zsQ3;)dj*}$hU)G71POQ^>_I4?t3arQT*fj?Ef<8%rtd)hz#Gg#w(z_v@rQ94r6tEh%A zHr5yCN4>B#fINEp?{?SKNqP~_Bk25FASw#LUP>Q8S#7I-RFb!8$IFFDhb|0-X$iK# z2h)|BK4z8C5oEOZ$xfiWN~Vn)4W?I-GHr)wYs;J>=C+{70?OM=`LV47xd!-%m+%3wSof*EO zQ@D6loxR>K_xwJ*k~t{S7(a%jccYSS8D1^)h|j;C2Iw@1kzQxm*-7N8o}|c3UY0ER z&UKKddVh=rMa|(x@z(h{j|jz=o`WL4!SSV}I_;4n zsm+j^G~k*-Eq!D3yzFxw+B66l17uNPiwOw+IoIXpu)t0gs_jt9)9awsJ%LOP>P)^P zADm*t@s3}k(r^DHVRu#S;uJUzY1&oBWyLw&5L?-Uus-(t2(PCJrK$jTwc{z2=qgBV zy-(K`ROVJF9g^f(hW-E(wZSG;Q+gj2m8zb4OSvXDXZfLf+YvXKS8xPnsanwdW~luh z-IR=#aWR!#$ajtS!TyY|H?d=zuY4r;`l@B;>WYOqpJ_@uvsBJyO8y{IOFq;IXB^-d zg`%y(;O*+XM;4Hd#cBIK z&z9k5Nr^@v?}GH#O{kV1EjeEiY;UW-9d5WQaq%DgM!6+=)V@&7$$;yk!a!J&j#eNr z8)LH!afbAPj=k6mibc~j7%JK}!(&xAYP6uan^EpnZZsvpM6)p$!QdCkd^_@e*3Lk~ z1)3W{F!Q%gKo4sv+04tHb`?^JG1y-`Q8zzoJ{K9ts54aZu?)~3e+GVi{dHo}5tm@9E` zg*?}JX+=yj2V=Y7gSFy}wh>X5BWFuQaXaLAx+NU-g-3Sz=ubkKSOOM3>w~B>M5`;I zPk_dL)z||RGA7(L82c*zDhZ-*^ULTG{B#@|%EEZUCmMkh)>k2a=i=`)D#tF|o|>d&pT_>!~W5#X-P zCw{z)vbX9}i|9C8y_tXTBA(Mv6ymgc_;uOWu?2J~@?qyukbFO9OruU{8IQF@tX$I| zq2}i~q8{52$@e`r>zY0hzyyqHThLr_o^NavQn?Amk<5tP77I>L>t?*r9CA^}m0v2k z#2azC=NOvuH^I1rbnr2d^bTDgKK8$~l|b}DYiK}W;b0cAbPgLtF4b(jb_G5w9^Dfx z88eXYq97o`tCHLE$_jR?+>lb#j|wQciYllu62jh_u(On0V*{8ZE(>FvS!h*ZF1MYO zw!oF!c0?g*+nB{|bn=oc2y49U*(A(vDT|@cGd=_<=TE$-DJCEy53?n|$C%Zo)S_0L zYaZoZi;yX_TM>d{apwz5*I~@pzM|MBR1EQ@3TZH0EtDH$%i!inKkB=1wy8RV85qI)hYz+q zn)_V9hDZxsC30CgW*Q9Tn)oPfG$<+ZFgekiiJBj{wQQk-l*a=dN^VnW<>zly31DHG zyQxf!p>sBewuL%C9j<`!rZF$0IK6Nc7mDE>#dU@wY`EN_z0gYLwp>#dHU?;5`!I?` zHu&h0*)Z2r+e^No!t|8(1m0qYP<36teMD=bOUQz9)GEYuG8(v~ zEh3s_!9M;{9?h>^aIb@ktvu8RiVL5$GZBYoMacI})#|-8pm68c{|Tfjv@9Q|b?rOK zUL-~hKCxIaekkCJZZwF%HN1`9*F-*eWA>BBQV~xqr8RA;alhJ^vMlTDB#_gR8HlC* zxk!y*RQ8_&I~LBNB;|f;ZZN#a)-W$~Aum zy3BV=2~-qNfURSUSf%l0OQbg}wFc&R{1!cOG2muG+qco6TO0SmJMtk^-MD*$XTGQZ z!VhAM_--84)E#GP!xzy3O2=m$bCNmTl{`=itD%2}6>ka4{-c9Ag#-<2ff*oUJJBb)2I>5E(8_E3A9eHf&a)?gLANsYQawfHEhgg^Ecn2}WyjWoy6J z6hduDUBf7>K|+CAxdi6aIINe2t&TLtHeGvc;;^hXFaEpV9rwJH7CQcDSFAP%PrE{3%z!@CFxRrXQ=h^91FkBFO2}@s`xhvsa6i~9#RwA03$%;P2?n`=7>ii4!Ab>i02ZZdgEN?;+ZPWHUua*mgobvpZ0cSVXg zZPzB>fIQK~8enoo)phYCsBC;;lri3}Go3cfWt%uPc|9L!5yVxG2eQKTqEcq*A8UUu zV*Q@L=9X_{;y~z-`$+`Y6sGz#VBxfu@a(J=95w>hW8G#xbg z!A&$>zH%^?whjlFy5JC@~;2 zqt)<6M~P*@B~INxg6Wq?OGv7ppR_{&kho#yGenc?e}+u@roXS??QL8zeC{X>2M~+m-h4;mFe{6 zRT7?zKP;a$89pqJ!71Hz%p>7++b{} zt}toHdCir3RHi_<7d1Anxg z?)JjIkBfp%>0Q6$fxqcSUb+&2e|L$%zc~FYNld~+({z706DIJ4esqNw3GL10HCH9f ziZBg3T|}9FVsso=n`4C?)yy=B3p2<2p!?KKZRS__%>BA`%_jK;Uc8{G2m1*-WV~wm z%e`cs303^!VwOlnQhbmrikXDa9N>D#TK>~!DH7;TWXXdfPuvrapP_{riMOmkia(Bz zNcIb_B%A_pTh}__>GWlt-o;sNg)|j34A|@awL;+Q z0aVCKh(N?ew0=Y@9iB+58m<1H+O_6 z3|uzJY>c&-RHf;&UY}R<)Sd)2li=spKE{Wqj1pk z*m51H&+)7lp~=a8&E+aNW_X0v#lUVqbyp1SZt}ua4U@j~g1EzjV+RU6Ua1!yQw@bZ z?pTdsK~Hl$JgSwlG`X3|qa}3WE?GCvR3lQ6G2v2#v?3MWCuyDUsiQgm5fVB(T`uJ} zTByaGj=Fjx1c>iez*tQUiGVaV8s2j?PNW^v^K-hWuepkWzrIUi|MDU=aRssGFc1TO z2ucyg8RYD2PW`~QBZ)WuFlk(ispf{iE`_f~^BeBqeEwO}6m#?DV=!-5(JQ@-ir&z* zYoA$aRdcvQXE_dfr3zTDl!{jr?FXZm;n+)=I1^Fmi?!K%KFrdJjgMk?4%6 zhCPHkSFz4rf5N3C=&hOFn zX}UqgX)a!Hi2TN9|1R78*-d}J6myQ__I8hM{+Z7h;!@-tonq-_P~Iu5m1OX>gtirW ziV%oU7hx)Jz))^3ozyUCkLY&JFA#DkoM=JASb?C6K^Lr;X!g29Qg_$ewukq}nE-83*in%aQ-J86oJrJWfU zu~On|rPXvswIY7e_dTOpF1V?8eJ!PxyV<$qjLUL>;Y(`pRL+Rc8IF}|GhvE`Vf+DD z5$3~xNsk=U*oBj8HEHpda(scWZbJiMT|agrPQ|=7P4I^=y?T^@KDH4rUU8MG8!3`$ zMsd(L3ZoR`jhOwe|>-g<2yqQNg(QMs{ z^W(*>y!BR@$%<}&dA;346F1L4Ew{JHbZ^aq>R-7*k|M*ezvju!R zVp<1yZ;SSxvLnow)iS=5aqd6F&N#A4&F55dQOh8pyP=mP0+F9AkDTI+8D}Y#zfOmW zv_h(!fQPo{hSu&OaHN}Ug68dwN}95a>BW>;#{0k@f+)@;oTbUkwfU+jYn;$4$q>7? zGZ0ggi35tT`4-#?TH*lAGmh3cw8tgOnAPLHGuHM>R19s8!{E*JgX4DFXW~n%Am82R zY1)@yv=GeUlI&lc@K8VBh&|WZ^L3xA3bSqmV~;nS-%m+H`2Q6=0WXJZ+ab)Zh4%I~ z{_+2<$H5aHIS%4ow~R;Y#b=cvfN6u3`8j!TAKrW?*JgL#7f#P~-sGG^p<8mFI#S5b z(Jl>LT?&pRr4_5~j-#W_O#|Yn;2%xx6pbd&ap@t1nGRd=E7k(q#Z)sdhZj_0pHMa$ zM;J-Y!(f|!;iBTUL6UoG9N=|`r|hoKYZ*#2PWWnRh(+3t4OIZGHu@z!;m3Vh5V#4B zQ@{}17Co*qC0x{JZa*A(e65+wmGnzLlk$<41hO#1Rl+SIupUbVFg~c?5Y~_0x~{Z= zx5&39#w*MO8bGZvs*XFTEJaOMM@MGEU539fCgNmoFoZ5=Gc_^Yq@@)_{u@{ram&HY zX&JIO?2QU*eG07u1V)yML>T9*kxFY!(Sz^yq>EhE;zFbfEnOeG3c8b~Xt*({Q6Q*P z8)6!BW$}Q!|1}$B%-dn2i~1{9n*#6BDk%r1-+V!n|(V9G--d-+sLu)?|ElDQ;aitO@t=S29<%W9PC z0RCD@M?)G`T7EN^)C=4=qgyyrbkRO$$spakz}#|*F^$SyLU=;;L5h_@zReS);lpzn zjtj#N+&AO{no&3WLY0 zl#$|%->cyJ6wIL#zLTT?dHQw(xH44?Y2fEsaVsB`y4gMS0mF4~bWlXGTZf8Le+#XF z8UtN~bNdtz=)Y^sslj=tO3mAtVE?JpbXOu`;Xso_M0VAtY8Lz$REQ6>42s;qAaPVs z*BZEv|C)z4qZBoj`HHutsR~Sn(Xlii;)@7pXa@=YU-I5RMz$ln?>qN)b6~*)4HbFd}_UYTFnw`hjNUdW;9EU=(RAE8HH8^r^%&+r_}->DPto@Qw} z7zrC-oybn_E-h2a${_M{5eG<RY-xOJ=U&7L``Qaq0uW4mK}ZRywT9A=&nNxx0ePAs8$3>+!( zGQcJtao5KZrcRX|19=w&y?`!GwImajcK^T=WRVM=X8-{a}xq zx8&VX4WM|HJxc-T`=lRrvZ;0vY)C~pDgwZ*HB1_bg4Nt6BKi<2IwiB)A`=&Pty&#@ zR6US(MG%wQRXZWTf3|32(7N}IQgjA;CPJdmZGzZ4u?;(MI}n9l=m@f_&Fc3r>?Q)k z(>wRJ*HTNhVJ)sCPJt47iaKK_Ko(Zjj-28^x`2 zULM_1faKrkGsY!q?m$fyywgu?KZopOio4AsPc5oJNlN~F*(VZSsy<>;hNM*5=&2^( z^Vb{)LQ%zazKT$xRRY&`l#k+ZjiODmBx({bzpgj2)>5iaKd~l#(&Z?7%gpk4^mrgY z4kpQRcA+SA1zp1O(|UMMBBHm+nDm=?69Fz(3yY_wLP2LC9Df9K7o~Wi@If~^-9JqIyx%{y`uF>;|EII<+)SP%p*n8mkjtiI}o`bn#YBSz`GS>1Dgj!FiM%!OiiVMW?_FHNHYGaWbH| zF69*l;JdZmLP1#{xQFRF{nc3nWAdhxzv?=jO@xbGL}3@LPSJkzbqOO(ls2}#*k%Wa znYy$QyeO!=G72c{gB{n}_Scc{VLnuhyA-l|HiZaL;wKlOP)z4?fd_z%D0~sDE0Q9~ z5~oHbDdn6WFe%Uhw^9$P2=vSDFZPn;kJKc8nV%ee2tLnI9*K3;t%Kwkm9vphu9MC| zz8qXV>VX6v2*3WH79_c7jN)GeJ9f+hX^&#F$xAo{C_TJy1(2l@5 zUKu1|X>^^t^l0-V(ay-hIwn5AHOk022^V3pCMurG5RqP(E)!?!_6BDKx?E(I?z*sm zWAJ4EkAPrVV-o9kKToR!!E;xwzgL>PCxQ>TuBRsgPKh5|&fN9=$_$(W#F9osAInM%C?eGoms-CL&WYNt#;PgGyhP*rMhXo$s7TR)iG!X zWtW>ua-ZO0+onH%$l%5Mx}n(1&duzUK&R6K&ynHROtEchLn+G-GX>jmO2AYS>H5@KcaX>cMK$2JUR}paS~*SAx-Pm?w_|l-_fRbC6M@K& zP)=*sAWJL}A9l*ioh-NWl~LG3t_PuE(CNta;<^$4jp}3*7G0== zL{N-~Vq*A#cP;Uv-vkBoN2#haZK=q%6Bl{t*ZnG={(B0^(f41`aKRNW?$@VTf>>zZ z-^9$2+5Pm+f=S0~H(RAyl)uS=nzdlUzc?wWw9!+W(VLIg@HC(^5a zNhF-cgu+HtYr1t-mq|P+m*{QlL7!X_U0zEL>wHQEmyr)Vh2Vdp&!(u#UHZbU6IPat z|DZVjyI7{_rK@Eth^RxgrC4^*H+@ZtRFqByJ`~7?#|XC8jpRvNCxn zA3FxIrPIY;4z~QJ)=LrizzynuzUH(H|1axa6Pq-$JB=!gy3jw(`p|dWi^)+7Y z#@37;sD~9RCGH}$N=`VN4Cy=ESN@Tdusvj{z=m`ud;{oNR>tgbbEiqB$AXVOW9>8W z)2$TCP#mNQ?X`hDk7{+BR5u^tfp0tb9<%QnSIx#Xn=1Efn<0*x!(liGpH0r+>?QU+?qQS&+i>7#h4^3R0rQG!>gy>C{|C^CV>0L` zG0tm)$unLYUgaI?qoOUXld@7uos22$gjL1p<)uEw7}E}VL^NgvYYe9`a!&o=50xU0 z{Hs2rs!kP8Fmk=EDj6t#0y}33S}TL<%iv3K706uXECdr=z=*Cwza=tF@-A(hq&|i` z73OI3C+37$&(gp$yoq8-UG1P^ohM=`m{qr9&HRTu^!AQ#SrUfT-TKd3-2A~NR_`{G&DG;EoiZ+7v!Ahk{paTM=757KKfPE~ zybYonac1fX6ssMpM^BmN?#uZooGpfTa&9KCpV?&ijQUts%=wo!Z&AQxA@O$MWOj56 zQe!T=TF|hRvYx`p2R#Nu1z;&CktN~K@I%R4VoBNA=*TRL+Tx85+$mEL)Sjmk)SoQZ zb9U{QSkjWd&cxb+XemB}@oC-UzN%xeqk6D8xSB3`4u5*O`Y*qS_Sq7JDfOf7{ zGuX~&cEBMT*lLlq(qokxeC44MbIz-1_hgunVj9ghv#J+1yPEKYb!JdtC*jaObk_#IXM8cr^oD z2Ph$IMeAJVUGh$r+O=2Foai4&^tb;lC2c=_E5Z9?j~?%)$l^+y+N4Dm-~nPivx9=E z1hAy(RYx}xEp5A6D5HG+yQljR>8i)>jv}>n$ETAU8+W(vHE<2zS6!UFlSlQeU1p9x zUHj~ChQddKSu?YFzIFXuTeG&x*Ec^$m`O`B3m2J3f6Z#K${1IDkym*z7!PK4K-r#g zoz?Y^Y$XH_;c$?Uh@&_^q9yUcV507Uck2rd-1ece+urMhFa~mnX7ExkvIZ3F&Q^p= z9qtSTZ#GMYJ)jy$F z*Ee>~V~)X|s&gR5c5dgG?O*!$@D|0hQS@fInHW8*Z7H7eIHUqO`@}x%N{VMUsYB|; zO}?tGe}v~>Y98BnRp{<3QvHo5ug@&8?|pB0FR!qRr;Pln-quS}eAVxNwiXt@Pc%2w}*)9k-!=zNGZUzj4G1SPm-sxUHOQqt%Ay|yUciE$X0UJa~RU=6Rh(xX^ zo<6%&#h?q*okU`(09U*bQh2~=8Ku@BK^PB6z__c(rzkIBR9)~ypJx&5WZi;<4try{ zpCi~o2Et_LoLC^CY%lzuh`n9i`ZV&RUG#kkE9UMV4m;f<0(vKw$>Y%p*U&Fn_`w|* z+eezaOcm8%(Z_7CX{xygw=jD0?4GUYUC9t@yHuzV`JBy+st7<#XOqwjg*P{U zPMUAnR!Sqh$LlHd=>!wG<}S!h4E9e)Y4&57}0vp7p2gm zX-)+djoa{!@R*i|k(^X);@x7y7ZA1z!xt91ddOw*uxl7HVlZxqiph&uu8nU;uq4Ce z3GcLO5MjI%bCrMfN6hjs_FVC-#k47>y58<8pgJkp60*EPL?X-iA zit;er`Do=k4I-bG$hU1$W z4wIhRsqdnT7Y_=pqc;^^@Cl&3P{6>RRZ$jSl!-CcE<=DY zsnbgcfyLK4+Ng;O!K;dw%4OM7B~Z!}J!fA$%*!@`Ig>QGg^Bt!Mg&OlK zbXyFrE=z|me2TV(A3GN}2Km@glnaKJY0D`yWZ79z`3mP^1WpCM&FJgScf*wo8R; zBE2-55o-qITG_0Gn|mI%n?F~exl9a}N{!|Xh}d3Tq)X1*x-N$>G&p8fkywfvV_mzC zOSs+TJ?>)HvfSyyj+dP)73qLVR$#|wjkR{)M_2SF{?Z?vcSb)nR>9&FS`yl6_m_ff zu<_Xa{e9r?{tQ(0rAAL)NrW#o+~Mn+?TOIop6hn#A zsdQ6KCNsf7ygLQh2t5O^>@|F4mLG(J-Mcqa(2iz_>)n#t#xNr+U8btyq7d#_%?iBB zLhNW79Z@ug*Moi*MgiBSRg#UM-5E!LHQwTW%*v$Db$TbhD^W>p`}=D7bh({g(8f8* zP;qux^s>_~-(E&lNABSH+oGZ#fFJx-yz~|UpiMwgLA_oW$JfRLIP;4sRPuQ^@MSIG z`HF3W;`RPR%_w+@gRm9!g535x@U!sISIiRCIY6T-HRhdZX?nIQL4!WNtw zKyihb2sc0LKJg-~Bh=@Y7%u?khN<^GugTIo)j{i+{&mCjt2oZ0WFFse8>P2F% z?_4jjoy8X^p)L{huZ2rTx0b(%39rJmt81&eZ|iht6xY?Jku8d6w+vi&$EVi^dWLId zbZ}rNQrUO7HJ67Y^!k%^smu@Xmw6N}>!36(r#HSN;JRYgc=~+jvJQ(DMEqkrR&Mv`+|L zSn~u2SKhg>sBi1M^UicyzO56ZxXj<(dr@5G`99i+`c#6%OE?@pKdikc=m*@U%op}GgzKXNA{TaKN62{rPDTvbmtDZ$+hdz*U9_~c3&FJLB zZFWS^qb*{>)va4GdOX$+Iy6&eBOIog#I@*n=Op{AYf*fi1>s7c0mHOS{DZ0+?|UX2oXu-bm|A(teF|VlR|I2c}@CTkd1AuHuH6!_a=s8sVm32x9Yb}Uc zv4oC5oVtTY~gn3Rcw_Nj?%$@ZLB zd(ZXPZDmSi@5binS-c6_u@K5OF`y?r2MQn(es_ma;xU+xSyGRnh-C?$_2h_k%Z(X; zqtb{F>M<*OtkKI~aEgdlM`U4h2F5A8xZr4W{PwNRnQ45xj>{Tu=lsO8bD_>Lk&n>K z-J!_n5OyuHvCH=ltO5|p!f%%ZuXr5ta{)VaDq+8s>c(;6QM@Enq*D3qt~w{GvN$TV zNA^pFqAt|Vo+R`km~JVm$0`+E@;lUIiL!OsFRACtX@?cZLZQcAmb3FnUVc7{ktGq5 z-%(skqBZb%H0)$0aOGNtOw?O&)WD^SE*#nTbUtc1o}y=p+!i?^q#?Ka2^hJT>JgN-IM&=+>nWyOyW78dbYp^Kp4uQ(Ua<*?+b4tN-wxh?gW zTo|bxbgpt+O=NS(O7Jt{Etle1O76qY#3n_vXXOQYCJD7Bd@%AX@w-!-5D)IRYKsMj zhvy$Wr4e3FQ;4V_!wG9;iCT?U98X z&rabW6-}+(#6%V}59y?DHc#9&&|*}Y%uieLj|B=xeEURcV+%*@S3(J z0*hk-HHYHOqK@td6AO0W!zWRupIq11gj~lZ3EFH1q>oX85Q(qeKpfC9pMa#G3)tT0 z_b2|D(exqXC9=v4=OHywe!)_%z|mP0G%yGLP%)p6G69SRlCy|M&6?bl0aYYg^cT3` z=s&6ml*_un6aI!my#+)Psl(wPf~XiOw1zc{MNECn9CGoxpFs3`l3)wPh0H}RUb2Yz3&w$8L|T}MFWMK7PnNF7kMwj6t;|AZ z!Ufb8(rn-N>&8kLwBb3*#XBMuKy{Tp)7B@0K^xAusj}x_zYEgpG`QccKAG(ZAx|Nk z$R76EDxT3cFfBenQbj%u17$f#weA>N@B&#?JPZ<`g)(L z#zu;7BacxskIwVNs0p)}ZdT18CoF|hVM=qnn_h9`X4!^Sf~i$mL07H{zwRty>8_3t zq4=yCd}CU)N*rOjB(CO!7;NX1P=S!SW;`Aelp`{G|AncZ<5wf2%L=N+eXIUMls%XA zzrVo7cmpp*TcDT6f1IQ$@(c#*rhArv99u%E+5uCagd{b#sJsF`h8fo_)>>tR??L;H zvR7{OL_9T)MA5WkBC@hW*xEr>>BdAfWLZIhKhtf5{A6+^XypWwL!*gp(9#k#o2#8s zJ(HCXN#$GI!b-?eS8@cgtg~Zd7RIl6 zdd55>^G1%PP-qNEmci?qiem}{Gqe=N0Vof2>q`kbriN$fR~NgL;YC?C;EvEZi= zF0MTuy1c|LS_rC8jw|&fUvXra*M5(^f|h!q=Hf9Q{2WjjhqTrh9yq)9B8A&I%JTC& zlGe(E$&)LY`Xx04D2t22aw-svhzC&9!EqH zluLdUQ81`l!?;5(%@0j4+9(uxV{vMxC~BNR3LkF0Bu)3q+w3Hw6O@zpePD=&feU!%PUq9 zF3O9BPbnb>K?0YR8DX#);k8o&V(LVthtSPzN@Sf2{Lu9w>_Zhsp&!sfHYMcE(T!6D zLl#mDBoyYQwh$eAdC?Pd$y|v2TD)Mr09iq7(*yWn!*>+M&WG1fl$1a5pB09wkR_iD ziCCq@C0$BaBX;(hF5cg4mlTAUj2rr9_B{7kI%kJm@FdEG%EXDWm6cRsnq)OyH2n!l ziP0~rDk51gfyMPZ2(55p>rwK^3pS~a9a$2UD3A99wY*$}&+aRJ$9ohKSnOh?X?I8( z=1S3p3l^#_99*v+(8ZVk^P0#meI50hdm)GdtBIuYnWBp?%AorpcLlPNVo8D~eus*n z6s4G6LA3%S;T`Ek?|h*=fVHS3jissZ92vIyOqgJ4Q6F1#YWED9wU`*Zm_&ZIp)2!8 z5J?H#(K6Q-N14PEv2^F&Igc$AzA)i~VKmF@c!#hA$0hTi3rKSKXJswFySc6eTsY+( zyC0xX2`T42oTIXbVW#%DwIsBpu!3@#O{K8;m!Gw)pptuLTy;nxMPV zxv`CvHUpx=0)J54!FqpTQN)DS@gS6>a|Ak{O7DRv54M;EbJxp61+KUU9M;I-S(b~W z#C<0b$h?lL?YsYjj!J6@u3M(!R;MmG(x~VZ=7EW!02de)IV9yBdz3O&AwtTJoxh}T zTbq&9p6Eg%F7vaP5DPR_v}WNxMXvZ&kqfTKP^sG0p}@kCCDW>(oLdIB{^5=Edw?ZB z;Cf(j3Q)yOJ=iIxsJM%9`rv^Gh^{?_JK}=43~CKtQ9(a-HXT{Vtq5EK#3)jV>lR7B z@4x3h9Mq96OqCN?4VpOa8=d+AyG#U?ldaw02Q;^?DBpu0^D>3k`O2>h1=lzwERKlS zp_4FCmj}_1sehM?_<6q(W>M-rLq%%+Ity@cHK-VO^g6loo^{Z{8VTndnn}mmyYE64 z3eZ*9D={9i#$*qPW`WNY)}@SuuQ2K8!2R9FFa61V6t8%?(wBi1tJ83+CZR6%L0w#7 z%OaxY!tR2-E?9=y<{kOFn1vPwU||-)@#~y-Eb@ocVH^;UYWXKm?_j*sDI^kuEZtC` z*d#j|=I~(wb-b(4l|+7xrj7)s19wb09I1w(m>acU<+kCzqj09%q?4LdJa zx;~je7MHzTChFF=#KsM`Iz-8ZB}(3|lV_tlsf6C8EG;91ZMA)8n&Ij(5`}4{6Y1S~ zcpAv*OZwu-H7YWK<2a6*`X=nuF|n$UzlyRNPAu2~$BsYcGz`f^QblwqKD&i_6JCg- zOXs9;S30XkrIJz%E6-HtsF)@2AKDq2ym$Tfy5*`$~QcRDRMkxv9 z91GwnIxYd{;+Wi#c`O$}ADpuE{<=Rh@+{x^I(V(S`<$_xD#*&^x`ZXbHGxP9rL5}} zrxdL;?GA2KWdswYk_kwrUkN}==iJCb^o~)rg!4jhI>%uJz0*X!M#j2v4kF&pqTul* zD}<8Ey5OIa4B$a|){X{=6T(wwiwfhSUpvpD3*=6m5{v~Z(hl~hIIomVWDRdsbD+MQppTg)(!zOBwU zhG6yfg0=YDH1xlUP3@gk)6eUH(X}bIAF98H-L5zpvO)m*m{B-Qn^`X+Y7VBsewx?C z|1g?5Kr4R>rG{g>{?k_O_>r+mwx@kN^&uZVsSa&(aNJMY&cjk30&shm51QA>CyQ8b z13X;P(!N9}(l1Scb2<}0w|W+Zb<-j<0&01ppdZM*{!FI45Dinyt=A{qL17dNO6oXS zEylz4Z;WAy>R-@ss17j1Ra zdyE&pZ>t5MYPxj3b@MDEudI;1q*v7^eDkIrZIsDlqv3ZuYUdOEMZJktRm~>C+I1pi z$kl?hpVu^h6q8j?lItx74nw z{;K#b| zP`P(%TMP&MY_eeE{U7jAqTYt~`Q{Dwor(>IXs%~@Ha4V4vZOg+lpMiPe8q=R5&(s= zovXFidV=hV>V0&i=yISZ@)?iv7S=xRNu~6NqaK(YFba_T5v795^^v%~22@1FNrenC zR!pjB{YN};p93a(Y3p!6<1;_d10b{E@K6wHjl8esQlwO)vxmrpZ>NzPus1Y5S;b;nDdFH5H=obUf|Uy{#6`Kg7gQ^+xyk& zMsM^J>|@H0`B5A?tnV8AGV9#dd(_^v<)D7TUyR-FUw^WF+g7A|vbm^MBdxJ7t5bTU znO#(;*Vv?O7y6z}p4lttyJ>#UF4X-2XJ&j`=Li|9N4{Uj8+z3vA8(EcTaux(^;;pj zh(_05-nKJ6@1WLgNiN!i2xRMwY&KK)vAt!PdC?tWGY@#j#IGE`bo|FDLB7?zahHb| zwly4mm3V3LO)Vn81r@SG{I+`?p|9c`a{5AgqQA+?rNA~UWRO^WSVXw+dil5DUdN_+ zLsY{%4YF+fFLufyns8z(dW#)b_<-Bi_r==TZFc#^a^ za>cV<>05-?sk`1l&W0uONEPrSyTv%o;XIGi5v!=?SbNn500+`m5$;^ zsz&v{gfa)+rc(UV|Ba4r+4CXMr*AWSCctLVSC`dUkE+TH$z^d3~!Q^r@fXn<93sAGu3b9{ zISYSCHOn=gs-}o=>#4Aki6d+d$2A>0Zd{*rPfgj%zqz?%Ij^e!KvJC1sJ?z~C zJw9_xoR1tp@7oo|Wni&*k02F2J{B)H9DY@?c+Q-v$Z-FEMDYwFt)-fQ7t>BbpK}9p zY`bP+l9Yu^UWaYy`{~=6D)5oGis_1Tu0bBVyRo*>K>CvK1^H`lvDmKVz?Y~fa7*LnZPcg3-7 zUDH*&`$|e==;4a3E(Ool?GvA>oxCs2b7n)|BZ9N9P;$29ZOKW=-&!saa$uLGTZt;h zi`9yIxM{rb)UI)+0uI?!{cq1M$kPnXvnGT6qj_9&FC}gbyE9OPlVsBbPJMhhTCF65 zEZQMoPEu^l$fA1l(lS0SiN&sqW>o{CX508h&S3fQBWG~JN*OSP@TOXWmaEIiRh1ykyo_)q zlC;oykJusLwPxm+e!oQMCQQcamMLEDQ5@YEp$^~W0!CZ{ccqHJZc6vzvLxjSib<%G z`{e{G?y98lRL2*2jT9_?naY1w*okPXq8(SB}3>)~iT_*NBjXErqH&^)oY! zP;zhB6}F3pEP-ERF)Mcs+s-n&T34Q=lPj`xMV2nz38v!ZDw}hMEGI>lE3t~{xD=|( z>lItQ#L3eg3!+GJUbhZE#HEX0bLoO>QPD{037pC0h0|NE-OeoEKC$*Ue(=_<&vZv| z4rk>E&ZiCv{EbyPiZjfh1;w#+3a^&P2AGGaPboAtd#=i0z zM@}v*{=zTl$jN^Et=|%i@i%`#2YU8i)Pa?}coFz2TwZ(;EA z^j_29q7ZZx2k1v}-o0r2D9&&Fz4*jGwB3}jPhNH9aHGAM4%B|y_CR>Pij!DoVcvsD zF~SB7uyh#AgRs+z55azks_yOHq-&+EkD6sR46T`FV6dmBbnmzrSA%CK;L3?`PT>{krm2zbhxD=IoW;)fnSbGO3QH-Qz zZlKb2a8aPR4nP9b%?JRc7Y-XWU(P@d7v=k+j(_Th3IWKg&RcN0iuvRGWcJ6p_{YXl zD-Xq&4)P%sm7wtdQ$C&sja|BQ>67OVWsFiDBKnSiAL)IVDt(A3UvhR&{!sKE8vHX~ zK%iaL{rI#fOEd_j0zEiLVN|8a8ZTrJ=PHryTj$N8*}P`!hgEy5kPWMY zY0V;=rtYAa>Vy<>c(HG%39;U3v}S-P4UzL0c}arqOx-rm81k}l<4WyjR@yB`JQDH;a- zC@M8Rv$GNz$&5v@kAB6@3j*bPy)sUjt!Q&u2q_tN$}h?D=lyFs`{7XXxoh(QP>Im_ zj-f}qS?l%WT3U`Upe({N*rA0CzT%bra~rixFFYei!cwek>f?W=+yoX{ZLd&S-8FJ% zDq2OULtp8VGgdwt(%9TEHWX?RX8gb-7>3j>6T8T<=)&W9a_)mXRD0#kNm`x6P2fXD zYezhMU`!0x0XmC{);kFm!%mBcP|{WuqPSQ9sp`(_(OL)3|M=gqY*>6E39p7s2ug7% zYa5Q>F$ayE?ebZLYTijQhd}N?7xzb+;}W_^&n7;sy16?d1?9@J_N3H2rm69GAVovx zsV@y3tD7#2&RAXaRgt!@yS77;JP9lZ`k|fLgLZ>hnD z%`9R)fJ~L~15OD5GdzK=j%5`?HaQwxnACW%c&;MIOFTearZ%&zUK9lxCHgpV2^hVj z414#6F8XPhFYRd1hgNCgbVEz0y$DL{$ivi6;OplgvNP=@=_H%?!;3j z*3xYuDTy+b&avI>(ISiFw6*^hCbs6XVB(zZar^z3&C;4KAiVOZbQ#b1iT4p%R&gKx z=m&SA3rv$>5l$5*6dI=vPvwDA1qPe(J0M-96gwD4C(RhjLQI0v?TLPGkh%R#C|IE+ zJO@*BF;Ejg@J+PV^LTsoCZAw~!xx$r2q{V#;BT|bqYHSRr;;*cz2Q+|-l!;Iv6rKl zc*>2DF~%@3A^5-vo=lMLz_PbvNTm+m*Xdu8P*NP`m>~6(B;F@ggz8W@#Dk^eqKvX( zxv{w8{^A`=by9}O80yT94CC)xJyz&w0>=X^C2bh|&XWZWh|H7cV`(KpVhr#0ZFi2P zqvTlU`&DEaH{|DHt}Qpqw+y$e-pFBwR6l7M%8mRh$h?>$kJT|#qtjCi>&uLj@onqH zVRgOcjceJybX0AtVZ;#k5VB&^Z6f!`-Ssw~cI;EIc>Yeq6LGb#Cgd89rzp;#;%^Y? zder^f!u2lgP6rHhXbkT{TbDJ7E?+LE7=jc1Y|)_yWo#Pvc?XFCA*iwcpMjMSOhiyUn#WVmQ_w zwH#`j==>(@ksvUn!+Ijq|2()fv52u%DAEok@O{n6?G$PyW|?q$#B3#0XTKA32&X!e zNu6fYdPd=@&wHZ+jpC#jvafqm%X=zfO!IZOYME!($P3Mw2Ty2}XhPZE8szXx!ixiM zw>0whYNN8Sj9_`{Yd5UkMJhy&w5%(JbC#@1<8-Y3IE0qWUxPJj#?5TO!_78K6x)8) z?os{OPDbK_Vw;!#H$_BhVlT-D&zOo>vc@orj`d53ij`=lwiF$Cc|p;tHFt@t@^L4H zTS~MykJgo+{w%?yA-1;frBA5`lvVYh2qvY%%l+cW)W2oR#3L#C%A~rE*W*8QfyM`q zh~ZvF9Y%STJWgTkMUFOCA#%y(N_o6(uyiOoxgz5J)%;{&xY*%<-NdONrvN4ESOCa` z|3nM4oCxpz&pM!*MDhetJ?2L)N0%!~s3Fta;C5rGC@5ur4yM}~MFi40HFI{}u>)GY zTuXT>zQ!e<8hhNcR*~L4Q5>vsAyZ%cc|3lJn+Z5u+Q+P{?d*v))-OrzRAe2)9(Kwj zF`0H$8ls!sltdn>b4kh-$^Zb!^orB9J7y|@z!&}B>O;f7?p zzhv=HsS*UDN0SYs3PIue0yV!Zk6a9@4)v-rIKnU4uY0-{CLRt*XyKI9Srybdy^0o> z8zQbagwnZVvUa}dN)+CpuBMYD<0~#(R-dc-#;u~RSMo<%3}Ftk%bb#UVagfptJH}= zwB(7KTHOT~5x7GlWy5%jAaZ}_%i_74Bp5P4TtP0)`27ix?$-wyyza&wY(*|dR$cq3 zP5BYb{Hvxbcpi%eSAUB6g`6@f{SfpKF456OLn#KEK>x7QHc1Mp=`#*H8j|2NNHE;+ z%U#yOg2rWC70t>{nH0j}QkM-UA`~lx1E*RQ%KaCar!E?NvV&se(=uQlQA!1gn5*inX2gqt&3GX~)rSE`U)C9GuleTJ=_ z>er<}5P7soj(@lT&(IjVeovVcfGCR?rEej9Y`T zR~l$__=?E_NFNC(OzD_UdJyU8QiSpil8Tl3n~}BzmIj2Dl>p8oMj@SW50(p`PyGJ63hcz|-MU&0pLO;YD^AZc+VCSR`x1-05FK>ET$0e)FQKTnChIw}H+ zgGGiMvW`*!&Nh&JGn*63jvF)I;SZMTn1jqvWv>Jgg7G86Suw1F2nz2Y3dX{^~J?vN@k*=^-Y9R zwU0`x8LQY}nBWYj#HqDPsY5Il@-cqdM|c0~Mh;6+bXfen^O*1`!*>BT6S(3s{=fSz zE{F~zuECPLl#jrn#PN%xeBzzmd!^4(m!JY{W8S`&g4#i;M97>i9vgW5G<5iOU5got zOk)w9*-)b>(T<{D!bk*;Jv=>a(A&R>F=s)%^ zf2O*&BqU8GB>LfcTVm@+VdB~^*h$y%EQl+3t4iq=;bSE98NYt+G7S{B={BL(8VT+3 z^9Dg;N`zCPykIQa=+zeZ#Td!egB2%_vMzOxhf=KN!vkjz`mX4&rOjR(X;UgPoSXk@o}xnt~iVi)V%o32QtV43a&Hts2ZVZRN#<TxsE31_+-Mzb*lL&(AiiePjQ+HI@>yeQ0{Udt&jt~mV~gZ zgqfeGfQ=Sck}9Jl1YNhXls0iAQ5#j+hL%Q0Q~dmo%)unMaMog zNDusQ#Yp zDAe#S-BG;OYrZd?*`07^FLAKukQJ|ceLjst6ONlh9z9Zz(l2Yc&(b5M9${2_NPSdy zIbg+HfE^EHKcEKan&c=dYoRD!TRs`T(34x3@qHa$Fg_LmvS1e!QL2TM)yV1s%`AJ>in3(ZaHft=yS(%#t{+$T4@gZcH{z}D2zpv7Us zNr$KG%hda?Ff_$QgZ8T7oZFKxP^$O-87pJj0ZLxl$Ry9kMk&aK3XaoPamLun5CD<<^#U(gX8_N1r{!7@upITPg2;hJ9$1PBy8=(W}!dXjVC<&*buDJ z*5KvcC?g1y=a=ti>Hj3Rb9FYTjK$m=i(OPz_aD2MEm6Xq;TiJwS>*pVkA`~H_itU; z%0`2q8Z7P9u3dY1bitP6M;^HcUXO*o6=rR(_sI2cfoJ>n*0=0}TKgE=vl9oYzWbS!8}1S$)+{>%%%pYmtFgyQR+$w^GT z3SFY`%ARbcc=m&P1=NGsQYEhVc#?rqJaW0CvAg1F<-4o21gCxAnE`ySdh2*a@Z;B1 z0fTTG#b;)Qp9@m>^}***G<419!VI&xKKMPt)_dfUZxhc3%}pu3>fK%|{;m{{)eT}a zdt~eR-4$EKi{kx2kCB+l?-buQUqf}+ueriM{?VfN@#E7kk||Gj6du-h9(TC)afc0x zjmXmM-aU^Qi@!0=WG0K}QuAe=sh~Q0IX;ZxaCB=oXR38HtWir2j^v`IoB2e<)=duf z_)M2D+@F5o+bRFdBUaBJ+jxGGB8{X*-zfGm)dRMQ{(*zR?(K5NdlFwU)fr#M5leS` zJ7=H}t$jPKc*Lh&t%NtK=6iMaiETP#On7Bl=~-5%Lq8J2;j^Col+HkL8#}WZhyMap z7fcH4aFJ&=#*#?G0ZDnLs-{ zM`tz5HPSQRF_9)I3Hk;S@30;g$OmC2!UwIUL}HsS+?B@JCij-YI9GKOW$~ykwDbTB zi4upeO0`YSSszOqoudj!M8#-velrsv!t&NqshTrJm)btr>ZHuezfJ$T-KVFaIBxJz ze%GE9&H&?zr!T=k#Nqk)f1uJ(Kdks0Ue74}vDt+yzJfnGsrG09E4pDOr_ znU|$-9=3B9hf{!!6yNK?UVTjO+NOOghnLE-(4@Np@=-;Yx%o?}Kl~TSR9WxH$7Nk0u5Q$TT-isMnMmXe~ZA12BSW2m07bd!x}7upaROqS1Q85(tWk8Ej5Gzhd1v&1}t zXukilxqBn4C+h7Ea$4)%svCm^WOe=cFuMwYgt2s0gYfm)6a*zzc-RmR+}ir+Kyak# zK&ohs5$2~!vl+KV_^|A}l)M%aPFq(1YRQT}Qf(Y?#_~Yo~6&znX1~4>SOF$4vS#dq$ z^_o@g^?+!xsJ^F@rfkO$4Z~`7YGV0doqBu1W6ipO(RB}Zht04+3*aR}xU1B3=2L~G zN&%Xzi-hf}_~b%9xMrwp9&FLa0~NqAs_urkq#-cV#N><1fSWH+^nd5FA`RX-d<)(vh$Q6CG{{%n;sqxAMfzUN~*T~ z;#k@GuZn2~XJ3>ITZ6aXUMg()3>j=P zS>{#R`6r-k*EOsfc!k0aCj0v*KwgyYa4>m#{{*Tqd4)aNc=&4FIk2;$y7ds@v$G|! z7S6nIF}mJ4XLRBEzcYPnMJjvgCG-s}Cvp0tnZAlc8PGdCu=sDyh(+)B65)6UeM{Ai zpz!A4`RCtnPjgitJuh8XZn=T>OZKEx+bO+j$KRN^~fS&A^p$^29JssMay zpL$5$P0~D>x<6&6gDXn!w{S|vmwX*4Nvz~`Zt}=E23SM`lwM*jqSH88slJX3j8k-E z3U)%T69g}K3DE=53~`lxJSKV8*_HHMRWFw!)DPH#_CT`qC-}N0H{R}a2OROODc7Y4 zRcB>|OjhZxSo}J~&2v{8P0Hjt;VHdBS`A3TdXIQ17$cnbx+1}mr&A+K;nL-0$WY>) zi$sf#=q~gomOXig@cPks89PJ=iY#Q3geXkAD8|Ro$+E_GI_vb_g{bPNBz-#11YC=F z>A{pT_|8J5R(FL0;<(+SE6o(@?d=&AI15B`ASD|ID#`TM{&+LlEYD) zzhq}Riu1t-*7#AJZ-nLpj^g~rH_X3^^Bb#j6z4Zq=0|bnU*F?c(5tU5?!U^hAYgtD zS>W=8a{OhteeEkcio@|B9mVdG(1;_)(nu1>RqLVviF2 ztbM_c;(T*=R|k5&d12)!&hK_daaNJr=%=54j}qx9&f>kj@>QJs-BBFI9k{&G9mOH_ zANp0C_u}9MmUENVY06O?)2sWB%r*>|j9P13f;b(;0r*iIK(P&OS1Vzw-COwraKI}G z2scwrOogis;S`yf$5TV0Su=5-a(J{O>;bs z(6#f-trsl~<~nno0}_vR;lcuSXqQ5B2bXipR@?Z0Z4&%{?JB3tes z?@aPA7azyIlju7zMYc8ik4}}=BoDzqn*JfOKQ@s6*w_z6{{5dc_CY>%L@koHirjJ= z#!@}~l#0^UcF5vcJm;bCj_vL&nflNQZX`VJ(!_3jPlC+CE36-tEh+3MNJ`sO?Aj9pd|)Xw^w<^f1FxYU*P<-UXkUqsET0?_4DO6VZLO!_bH3Ego9=&c!P~CWS&kn?HjsDMl+dDcgV&y zFhby)@469!+vcZ0E*aFOL`cDH-A+#;PZK7;`d6e39pw?8i&CDD1CKT=S)!FBO&`dF zHS0oi4keP~YF*fhmjs_uP@DIh>V*9mm2@sC^5Sxn3^cVTJB2F+W1Z9i!sSHjONW>4?Mk`O$VQ1Ow5 zJ0Cnzem1^L$)!ExqPtWG!4KR@b_SwwhvMf{7_#89X!6t+;CBSFl~%!1c!^)7A|?vNzwfx3hRM%sfM2H;$1R>pxS9CRsaiizn5AjYC3u z@DqCi0a9x@Q9+5)f-J5E@FF|=HTqm?Qrp?HVlwxCEG%Z1ITDU3FCw>ar3kWidgO?8 zMJaDr1`u-0b{2Qk4w#S0#X3On24+5Lv`LRLhJCaF#HY-o{Fy)8lp;je!|P0!ibgPN zzTK+W(f5B$awpgT?2wCQQKNmbxkqm=sN_NDW15>E;2 ziFb3t>ysu7{$oOs+uIbvX{_{dR36OH1sqosx&*3$+lNF~gWydfY`Mk1q;b;|G&_N2 z1!_Qaw7iXk^o~vYmZ=!J9~y#IpTW~5|6WkbeMvjzJ^)Tp>q)MDR)iyhC=&L99ls{Wa&s^zYH7Rq=+8r*W4R+RHv%4JBId6sacx-twsS!y z8fcdPkR((GzQ}zjZJt_>QDsI`BuVmxdY=;oREKEaPIlUk6|dPZHbPoYjUTm>w1$lS zV$UoQLo^0HXFnx9#tE55=vs2Djy+`{J|e#+_k7Ug1Zl*O4x~-cHq>moX)zt!#PUEG0EBE{PNXOXE;4YnZfzBvL*M`$)0a zu~nVxl;)X|&TUCl{c<>G-8@g)u!NeP2bnSp=8I1(w(D8VAa#`6!=?S_b9iT@S<)$2 z6AHXTjlDVJWYL$n%f+fK?7gsOdzp@{%E9J)NceYVyc3g}iDPx@gMJ#Y(j4~a!}cdl z743`F$)ol~E4Gz5?OCU`KF%!$5O<9-M|67DQtR3H&TxAhW$pH>_AB(4e46mpRE>#@yhRB%rrwilhlb;BPp?L#d z)b>tj&QVcr+EIKxfP+^)WPsnbdp}LkPLjRc9?;_?#0b6i8M;(@4c_#b>Ucs8^!9Ch zxElv{KBJY`jru^z>FBVk0)t~ICRn+a| zwV&tl_j&29tUk(rA@p=imEDKSjD0|}S%0KH3TNWN+(71CC&TF+l6^f4DomlOX)?wa zlc-f|kKY7`sqs8JFyz(Kwz)=6#*^zn1iE7CPBO-!x}QNpsbr+#63aZJDs05rjmCaCQbD{X)Bg0*LRNZq z5#%>n`mSF%(_ryJ)Z8fljo&c@HgrD013u zLk@ae^H!N>pqIveQPkvLa%Ekyq!yjksL0TQjJ?aWsVpYNJrLsZJA>X?ba84j(tAe5 zTy-fxSt+rKucGBvTPtj;swv$Kp=kM3&#)*@WeJ3*!mpaeVOpsUs#+|2Y=^?OVx{hu zt9RuGZlKHKvKUuKyM>l)N}ZIIRYBmXcW_64z@uE{m1&Cxr*q za7bLREp(MU>y-@N=@X3Arby{mXgsE9nk0(J4!jm5N94yEqr9aZnFa|5Y#{}9@leD<7Kat}u;z3_ybyRiE% zY|tEl%IF9c!N35}gVS(GNM-iorL{D~iVGFSmDR<p-ofHl*mkl zV#A@o_taxJhpb$(j0@;Y?9Bpes@-)*Ed`e$+Cbjo@Y4LcxeL*etf#iLPdY&?hrC#q z53&_^^cE%gXZ~VA95U%73(8m>WOY!nav_Qsl751hfe~_L2dl!sAyI*QsE)WqfXQGI z5S^G_h_F!d3WeJdh$v*+&ye6q8?DYU@L~h$wW<^8=morP)!WEIaj4w4m=%A;62x3s zuMXkla>=p;I-9goAJ`5>e^j#ZPzzU4+vKRBI`|J6`(A`4eU{JQoe#a9u;9qbRX~`D zlXq;vua`3T2+*MhCzS2PVo^Q4PMR=>3U~i&d&&8B7jZ8RorPF}@epA;r;Y|J2>!b! zPfZ*3%#Ce(s7@-2Hmj+HPvDFA#|{s;ie;ssNN}{FQX>lBbQdEU42Qm1;76k`*9 zL{%PevJ3$~p6=u3-VUNwIl`OY>#^qMlQ|EvAZ(=Wfc)xe-zot93?lfCy}>(JTPA?x zUW1ajYCSc|ruM1)h+xcP_n_-S1=q!_#ja98%u7ktAaNiwKxHrGKfx!gCF&s!@MS~(6UZG)P6zx_s5}gz z9Yiist2#}c3LEi;9|EVw>Gbfg6F(6rmL5*{JYz1fecr%6&XQB7)-?_WJ0Ey zd?|r4S;CvUHATZyvgjuVRAY5-R#*6i}}UnRRmGq2>N@T?WriTI$rvjjR6FB`uzsmQgXyq2n^k9xcxmGVWG9 zD1s_gI-E#0^i)Y0`E{3Aa{j-mdmA9jj_ba!@0&ZbZx@5*+ra=FKr6a;IE022XgxqE zY6UUO-Q|)6OH4GRA%{_wtA;Z45rvjOicx4wCHE}H^iqW?uVqGJIkIX@K~+d3$B?Wf zj7xF`AWc(>l7g!k8V>8B?T7bq_8d{B>{5)^vr{--iK4{u|g7ge^sb_=@LM*0zPhU9zDu7b+vl z=Y~x|eaAnqyM&~!ijbI{8{Hw>6w93L_*Tw$HkxqT zxY6|=3T#JlGtW{1jV$0&qr!XQnJ0utwthz$D(VUywMe0JHQjyjNK zsyoXjxS})@gq{B3fx%)kOgjQSZ!IR+9yee_lP08O%9B~LI8@PwkH#TCQ3y?5bMH~gmq+Vxk^yJUj<6D2h;Xc{eXmtQUL#s;ZdS`2 zLXw>$2zy|nYMWH#I&ZxZS!m=lI|`o3*~Dgt(F}#1MhG1}Y0_kCu9K_yl8Cy1pvbPJ zNSCBySyY8&F_lQ^prBu_Asa=`M@!8&c0--dV{e)+SEv0F&T?wPa>d&+?7GYRzz)k84ytNrA6S-CMH|&hSo($#nphu_9W{C|c&^^#ZVz{f zCVSx=Un+TDwH#`CW4At6A3*s)GdaaC>Mb9h2}`IStv1mZMsI_S&$M9q6%MYqh1+?! z7v4Gg(CF<9-?j1Gi65=SbhvxSqE0y6mgif4F!WZ(Lbh-MDgi51%@_b~e<1YrMO&awfj_ zi$H{vr#QZjCe>vMtb^LS!W%|!#;lbpLQx;lYPIuMN7eK))>ogX-d@+|cml`W!SxGa zd2)qu%1v2%cxlpr&+;Bp&)|qS_A4F4!sP@*9b!mq!BXB)m;fz&JOQ{A!Y6JEYu^!S z`fihZjlBDCI-a>Q9)nw0!nVlY=yl8B65gqiewkZ^Zyr|-r#rlcOzYuN0HhJ>tB6NY zw+c4+J;8IE>GWhXjlN3f@|)~eY@66I;m%_m?+2b8Ft+L2J%-5bcLfgiYiI0-fa=LV zKrMW{Q)^~M-p{M+jR-fFOczKT-^ z%39FVpkN7!D@_c`k|xY)v9{1+TBSw1_MR^X!iMv!7+CXdoelNTDJ|qNExcaAtX{8N zh}go5Atczs3%rfe@wjPN7F78e=MrVA(WW%!H0Z{gmIdXzK70$(=LXgejKt0o9NBX9 z6pJ_rBQ2&$q$4e!iM)M!k7-@ug%PS*7Bn@SSc;R=>6A`dUp3pVj?SNt(lYw$uLiHI zMQCnpP<-vb!0J~nPp`ygxtcOs!|rl@=WC`7@1$3+S&pPE#aU+EQMGbv^Q{Lvypz6M zKazI#!kx^r!h64gbIIoHXhX=SGiRo6ir4kx`2oLkrkA{@9}8&| z?z!vz|9nVDXh!@xv49WEL;}99Uw!TX!1+AUnt*2^%h~}m`|_zr zCkFh=cR)`l*)`z9`sV?@8r^>Wx5qbtYRQ1F>#w_Q7gLs(3-B>UhW^shyYCb5quaiH ztaMyG{IGz(J7nO;0)905sxu$4G1~&4J7CH)K%{OH@Tod|+e2q8J-uzm@~?WulN<76 zWA$SI&s+8PXvo*2H*E;`FuHipR0r6V2OiK+=io9)iDt&H8&6Tg`QkQAyit4};Q0Zp z+crMDd&p7w9u|nCm6Zq1U;I>a_)N0V)_^?w;JF6mPt{v@?tu7mwRD00V3gHcAyz!i z+j+xdh%Q(B#@k^6p&x4PTP_kUaPq`Mizdp zY(1)PQn4!b9nJNMV-2_iJRUr+PgR`08)OgYzB{xQhu@WdU@Q>$9X(HjkWZs(d{I4c z`|Yc5RLWOR?$a1Md(Ziw~Wa0r%Xo2+XpH>HO-|$}1S*mna?@OOK z^WYl}7)q-)Oj#MsvIcMu_pGtk#nIB*+BGfBsn0+3?DXm8dpTBCE9+OL4enGt`fKQk z3ljl9VoG=5!=`lc8<6q&pgx4{kUbRG34BEA!Gng`fviY-TY-9m=Y4nAUr4(ZhZ_M82%7?)IpxB3qcS5tvSW-M{9yy0 z8-E6T@DYD{G6bIAPP{I_3-D(i>I2Vvv;bcvJ`n=&*cJr*Qgz#(a^T17lP5CpHsUv? zwnL20zsW}Y=nW4B!fJhXU9i-vE34P1D5=#wbn@h50-E2)`R(_oNM`LLbOd)kF&pXf15Gx86X zsyi!MJ7DaR2-x*gAu{5Z?p#*7vT_$4$z3p=9PhF?ZH4!RcG+*FWtS@}r8ihw!>f== zD`{iIzv4D_+-61ZYsbI@#&Ez+Euu|3{N$5jP$4IE{@Ej!$&wY(-GIHUBQF&J)G$LYwGS;LSMt! zHD^OLxq!Z=s$Nqo)upGLt?S4&7a2-wz^ z=^;Gzk5aFbn(tDXH66P!i+)434CXIrHwL-}>QeQ!w<#U1Y}HDc_J~gxd)8yrz5&}dP-7UkUpsd4^c+g zw5v89^AsSn4uX{TRY?*MPXZ9F=2yc<>Q<{j$9GcHfNO69$ zo>F2ex&N^nhs^Eg?w=~H?|5K(AnD0tkKM3((!GTGM|XEwaX6WL{>BaVld#HC9H@ca zs^RUR&27d9wlL*1jk!x5`_0bIvngT2&csur^0@seY{3{$m+siO4i{6+^eLsceZ8l= zDXel8l=98Jpn8rwAh`XoFRm5xwOs11i&wrpz+t9()XE znO|K+g(>wPElhl^Pgwsj&4(&ZpSpesJx-s0mNdNj;#1Ei(%r|Nzuu-Ov86cZ zdj9zv)Q0edFYGF*uk1D?o7=mX66$PQ-hX3gPiyu2o;BI)c2O0jPaT*h6dD)Z6gr!ilH41@*C|ZIoDk09*gEHfQ z4T($)N^8teiHX;!<2v0);A7>Q1=5cl9zOlx&x^vds7M2onwgHU7A;|7f=YXLL0bbFQDzv*xQ?)zyr2SnG;yZm||U3Tj%OE~9J3 z)D??!EKZ05uzToTm?Cd@EnY z;oCaz(Ndgr)tBO6lWalDo3Y_DH_*Z&nj574g&tpubI1}L`%+I{igWcDEy2N)t2s?t zilYTRT8i_T&rWSajt&wLS+kk_Wi3kp?no5 zT)nEV;sjD@3E_huym;~B9}l154C)dcpuMS4%5J9e3aQGL21|EFN$JicT~#mYjKAR) z+2{bN(faylZ;)P|Ol~}_@?`q-p}42hPn0xKuJ7mbKcpjl&`4#LTGm{etlRN)XzPw$s4Vdeh&RgY~KROF`L-@&A?&LWzc^7_U{HA&VR zQ;m35VCn~kNH1#Mh;=>HPBP_$XtJN6a0^Wdmr+R*4U5FDD&={rryH~dVSM$Ui>n`o zyLP|kW_c-pi9y~C1E3rcvT?aK9lvME;N_G|yj#hlMEb;G7T5 zo6VUuPJ+WWJ~vmnX*dcPgTSZB6VgjTd#V06 z>lFEQn8>wbxz)OW+V#0CU7SAs4k zah4@AF$CMFL2I){#dVkyWi_%Enj0&lW*_Oba3wVRRa2=d!F!i2&si2Dte2TXqS`?b zr@1i1+E}U7M2GF%(j(zDWAu)iQEFi2ZI))dWsr_SvjqciMRcMA@x%@8iX}`O{{p5F z8WHIx67J_KpF#zj1Z(OQR@i_G;8e@%0Ulk%hUvkc9;vRTA-#$@`O$Ss2~vb0in}mn z5Jq^$@vZW25@{aSHl5iYk5P`8I3hiFkgOiAYfsuK(Qp1`jrg$CG{nr=s*dC?gi*5& zG9$jIN-+yukiCY(S8IwkoHh@M@W`i}0C#9&kNGPl*pzdR%S5*_k3EUWRco ztbUkWo$`Wym?E#AhZGI5DHte50JwPIEr^i2AXSn18x!~K!H3?xXsfg47u<)?d>z7HaDvHA^J7NQJp>z zway`OnfH_|9gpG$ivSbPwH^uKEsWw2?No76-KiTSSC&v3*n6%p2r7;Ds(E9mG@1g3 z)k)YB7GoX+kMU66VKa)^hhRaQ7+JFm`c}2?E{P_B1@-`}C(D+9h+J555mW2x0V>HNM2*+4V9zxpc-wI$dp%1dCF z19z}ARqRltMh_idO}3$=#&>yRao4P98v2xnk36oW8|k+RcPE(xWe!l>N$k4M(P9%R zXd_JOxI~hefWY$taxw7;k@^VvfL1vxVOIY{VEshJNTF)P6scC(4H^8f!1@an57+i9 zs6cX#$DK*JGj+0kBJA6vX(8%?bQ;*Pc%FPfE6mmGOX^51EPYB~nu6>N zDO{lWpP>+*;E@knQk=vC`Z4Tpo(oTmG#ps%{4NP-UEh3 z$ZzSVYiXs9;hC+dI`$>xS5w^O$QK?rR*a~bLsPXsy7(3b`sH&Wd>dS5T@~&fy*)gt zWj0~d0FrtGecVo{FUQHfx<`9Jm)zOxH+0t4&Vi==Nxj3pr8L@EJ5V1kUB_(>5Tk}S zD+9;>h^Dkp)o6>S=2|MWH~M@N4ghw!2}`%fL?is>*Cc%C`lY72c0pRg>Ncx-!XD=~ z9DuhOrC5V5n1d8msk}z9Wx6Ww#V;w^K+mDUGILLy5#14TNM0Ys=R{3W5h^U{CDF;qG4$tx@E#*VPs3mLs&? z5H5?@xM{nihKW_ZuF%x`ObJ{DhMlV_3#}0tMiqo*49l33!)T`=SIU*RlPrzluZAns z#ML@cJ!Xzc6j_6(7_?$YXk#QX$z4MLu2Tt3u@1aLxb0mM8b~>?i}OQw64ypMjQD#I zLpwFlIKN=R7>PYa#g-*nZzxD%3G58Wm?hGNE@R!y^|XYV{Bl{+K4}%sZ#Xcq>iK$j z*lf{2o4hqOsF~K`i_gk0L?&+ukO<_3w=#_qjD{2~%Uq~ENpm;@(E|Q(9>)VXGC_Na zgpRS|Mh6>Q>Ui%nx$^%MVUL^bRdmqHR|oV?(L8jPY7i-A1<3Mq*X4o+)A zrCdzBm!(W#{_+g@bz?~l!V0ES8BQMHIS9N^NA8M93Qbf@#I(-4I3fOM3ka%0?{?A<cX`m-Q3YGRGvWmDZ<=!?B9uUGw zr}_j#TNwgEQEZdbqlQG4$xi$|1-AwsY= zdBtH=GnX^FWoAo=K4?s6g)e$ObEtrKF(jK(+LcM#rx^Vag$j{`IcXKHnyY9{nhMNd zR1L526^ujGRqBzdJr)#%5;cg z%8e=9i3Ztd2b#Ea-J%@BIWlCa750;GLHi-4M9J({O&Fh6>;&+lGnt3bay?XABnrtB zy9|(pK`wb8WrP905fwWnfD;-Rp0$FqwFuUYR*_5(ZW>?olGWH9pHL^cprHBRGFBjp zYzaA~Ike-}28j+E3Yrz^nrL}Nq9=B|Xa-*H3~}h zWQB*0X$j7~Nu?qOI7;;a#;^r#iE;=LMG@1Y3KEH=Rzp@fh0;?|1yMx#pRMT!KnUQIsMM#^Mb*~7(HMR&&;VUA)@(8(A;SY(7j z1leHlL|Hb6RP9VK#_A27RH~$+n4vVX@!S8tSa=J29AVCotUn-t6TxIeWCAjc*Ytxu zP~l|1i`@c6Q)x1G;#B|3A4G*KA!VW=TxPR{@lhpr(YidM@N~c7;)J<6bt(iw3g^ z7+ioj=RMu(2tc&2KFPt?5qmMuC6bJ^S&I5jk4+5F1-a@qzWI;*sR;ZQ)x2%4j4dQJ z8nu6Ak2xc?=QO&c=MN)lRSmO6?Uj(A5Ge!0z%b5oFpP`qI*WF zH|x-dW+8G-nvKnh3xMtcl~|l<`c7SG9ugHQjT(*3e3Ycz3vi^is6lT7UzC!GHaWp( z(^qNR2B_H72LJFINm97rZHpZ9A6dzk$v>Ef;|3D)mQX$Z>c^#wuUurMm@hy~r={8f zVna6C7Io6@VaF12@YZs5BRZhj8*Mi9{~JTPd=jG{PBGQpB|Ez8lz@3Sptm5>U8LJ{2~p zw+S;+6OGGt`>_Us^$eAM^r_7_70pcA>UurYY15{Jq-wV#Du;|KO%yz5QwF8z=ZxgG z*%VlN5MfHr- zOV_-H>nI*ti^lmAgMsYwnNd}TALSto7f|&oAIPD&yguSi(8^UN%qQSYH4=&Q^)#hZ zwzx%PX-K3Y*-7+jt$Hly-8xOtTeThR$lJVMc^@ZR;LcACae&2^@Ezl(;X8T{t0O+eUR7;||K$k=;>u(> zhI7v>uW?%ui0TP%aXui$+?W*L@ye*$)bh%2t3&fQ(vlvrUYZ<&Ag}Qp#jO z>Vwhbwu8~Rn8MwR+c^3FvqlwmHNds;Me}K+3)+e?K?kga)3HwHVhG$mMp+22JgCmA z8#W@)VhPH(tL4f4L7&GJ@O0H>eB#80&SzG99Nbf=Pbc692ZqCk!bc`IjKIm@aeu(P{bsSjhWa3dVo?jznDxrBE`_dO2IXId|7S}*HA6M*B zsb(cCR5-69a%Oe(M!I^79@$opunZ?$JwLj-9WMVGugDy3GZ4(mlx6KN7)INc+WIOVBrUsLql2tLc{VG&{2_3jlji=qTGLIFqId1 z6?iLk%<&uGE@L6LVG4D5Mf`lDV)ZiE3A_wFz! zFmw%gKFhHsb55;XzE}4QMh1M?V_+NbT8IF^OLtToPqH$EwE*wD#;6%hUdz{D0RC=E z0p0*7-KHb z;8*w2qM@pxPP(mHR)$=>mQs=}38AxRxpi}$Jz#v_wk=E;kL_pY>sNhb<3RkAYwy1i znP@lCI}aPW^S*0zdh>1ozLUi@aTi3vP|IGZ;Nn^ z?)b&}fOK{J;=WpAPXhQ+wY99*6PAOIc%NyiaQkW9YYuy>x_Z)591E3xGxRxiI$v`7 za1=C-d>!>{FEK~t??FWnSC2Ry53Qa9FrE_DrjJ`cg!>*pP}xR2$GXur9RP%z3FOgk zz}I3x+nG`11!*ll+Y;00>|GPS1BL88%^&O@j93xUd?Xz5%FmhI!*F=tw}jEv>&p-B zh6e66elokM0^Lr^3;4Bw=THwts@C4i9J3b;_(THk)CLxt9l%hr*zADfX%4%Ibepo$ z*WR50H{cl#N?F3e${c`StsiY7TuW;j@C>K*Hzt(<9>A-m3)VK~vy+!8K2+n?72a41 z3^SMvLe+Bra`NzV@j$@a5XUyJbzu29Nc-Rx9vRSK26)QW8c%XlOtcwdIzTO_R|dEZ z_yC04{Si+U>wN%RzbA3P>CtL5TPJ6>+2eJ({lm-v+WRJlDo-ch^DCFqxBfEDO_tH# zRMj07ZZyj^S3{G~u-_S7=dJ=`v=nPbyq+_K#K~h0*aY%V-6zwds zsUnSTvaO633|7T zY+b)jU+f{Qttmb`T6+~-jQF*CV$g~Z-tml_{BU+DTh>O+xXG!?Z@7!2Y~oO$(~o8n zkzw*ck)>0`lp{s0h=@!zqn$~#o$DR)Xphap9hBmMdKQH@^vH=XIHeIMri{`gPapms zrC5nLWd@Scd-QV-jE{i7bo$bI2nUi@S;(7n*hVQVV+}b>QLOT4B_)k~;o1e2aC)>} z?@JDCUP~I0u03Urx3cwu=zyboFtyf9O6Bq6R(9lRI=^^btZ-vSXU>ii%zRjIbU?~t zZfsCvvIPPIeHWWXYl(vP+Urx!%AX=Txnt_fVK{Mb81Yly_G=n0E50UD=Em4oglnmq zKC<)JUSh=WTxY#&1Ejh%^Xe0gNMjr8Y+Re_y z0X}ijL=l_3cNp=niciXxwY#R*ZXC#z2{V+wAFz9Pc=!{wlujPm*^Q+2BfAYrnC>d2 zT}#9AcHD(JYMRH)>m6Rzmie|D^Dd^BNDmGU7}@7HzCdj?dFbMk;+jmS2bMlCy`gmD zqLs%b4O81+Z1ob{=NKk2SnI@91!kl^{;>hz8}$oa6!tjyg1eORozb8+y~JDN;2+UO zKTzBD!@BoJwSMub8-04|r(#Po=@9s)5n2cyZ*5zOr|g)twh?wnX+>u>N;Q-SQ)~ej z4MH8!UHhHHIb!2K#^Pb>^luIIY#vA(^#w z2ZhX;ZE-Cyd70nrP(5GO3r)(LBsz8}oXtydiYG;R9d;Y`9?*x|M@Kv05Dcv}K ziL}2I=i|==Uy5_cQk=6|xbpV5`%)ZR{_+DXfBAS`g2Muq&wXxVLrZZ!{<)2dTK4kv z(-%EGyr?hHd}I2QFMGLm&C?&fc7I-q^XkvBc;>S#dqK-*J~NrTn&mG~e`dp$zdZf4 zFMoOZkin#-IG^IPE?SDSU!9XJXn5ZA$|DJ?t<5l1yJv)BvU68Bs`P~~R zS=!jR@ps_jqBUxu*OQAnvE}%@4OJ6_65dipVM5usI=7z!-$3S8DfHEiV4j@U_iV76 zV-94}X(Fw;qTeTF2A*14vn1yl=Zq{Dx(a=zp2mb!SdU2S^y;GroO03T0YoOXh|}Dk z!Is2t({Ot-fx`;hej?>o>@}sBh*EAAiHi%0ptieoJXTxWar?lphL;i=+_|}2ym|Er zsukET=uT^|bH}#)QZv)H1Wqqw*tNI(f`)ZOcfB(T9|$WkycNYCW~-n#>;w)sZ?Z>- z5JJO6Rb6r5T_U@5K`-AWuD(W`V6Smw-A?~t3n?;m!-3={sZPsWM?DyH^kRr`4b00P zkv7h)oZBL~UPZ{PP+uO8(lU<_P9at=rL`>-E^EZ_=@(MQ)r3Z}lik+CEMxm}HWWei^1h&XUEJ#x_>-$9F!n`fjDievYg9{JpluvOrUQ>CZA#J+Q zK@B&E?LtM`uLXdKP}ymoM5unCiJ}uYcE<6Kf!4;2cRw$Kc6ViaQ&eFGP*mKbxkBao z!Ie-UMYS;~KS?TF5v>uR93cgKwaMxG0R}bvCKtw?hF7mp;bTOI(sfh8l(da}sv)xr zD^M5t%`%LQRkA$(RUpvtQ97$mKp442Lu~-;S|a1Lx#Q>X5V^{-O8NykbmY^36n(b9 zm%E}>B-&QSE?px99)=`J2R7=+C`{76r4KSj+-l4nM?BzCWglY1GxfdK%1^t6ooddQ zqEnIN`$jfi6Bt2^59>wt`z}rH79QBC=SKk8P(=xMM|A=PRh1AaG^(n?E^L!MRfuFf zGGk;0!sCK?4zGm>YO;oZ!hTu_dyIH%nK@j2SQ{s|DRlmLU1u*+^Jfxob!z}eJ)K-v zOI)?uXst;{*}Ui}yTKZMSSaUSa7`Lfq9QX5u_=~EE2rz0c!laU;=Rho?Kr8vPDETI zVb+7>aFpvNGK4KToA5O{L59m$c)}=!a20JN9$kaZKIDbURHI?PbRj+EhZFOElW+cm`w?{*9oOyG_yu|{{0sSM(Jn|6hw zXlNqYUSpjgl}J!xkDxlzLJ9$gYRzonnnWbG$3&2LvX@|Fmt)V=Ksy)gHaRToVoOBY zG#Mz>d0@s-`-*!`OU#vhDSdOa3V1@Y?*8pf;90fgML|+T@{xM zuEk_gRL+An9H}44AgiUI6<$Gi@qo~2&Rt>vkVb-PTaNbCi=I33gJN_x5{0OU$wVnb zga<1gRCaWgV^g9)6Ex_0qESj6H6pNr3Zv@qtv{mLQG?G7RNpBB({-o}j>{F*7Hm|H z8uC6k7^0EkcR`h#wdg25GmT??t%tA;p&O;wbs$uZ?(!dc^7%fggs6CfVg}aMvo!; z&VC4-)Q0?2R!Fh-iYV1J8|fLOA~^z1Ddgi4TB37`n-CM7bBzpcgqljDA3z9AV46DM z*{yt94f}V#4^m``eLyf^9Sgolw*>Pt6~ay-hNZhSJoiCarI0kP8Snryf||nU0^UVy z$*NGps|R5{!KQn;dgfmXfC}~qEo>=Lj*5m!tF97Ty^jEfD4_k@xSmFm8w%oq(<*G5 zQimg5#xy*1o(>Mi(`ca#UTok;X3;@+vR^bH%?;D=IMbl45Fn^+h!D^O1$opEkJt$M z4j}7qLw#FFh4@j%Q_w3MAsnD2hGZTgiKR@VOxCf%h#WZCr_XgbjbHi$(ITfI@`XSI zN>Lo#+b%{@CRCA#5EU`niE%~n5Js{uD(8Ws(QQ`MVOl{vIb;hdxp)?)pmN2={j$LF zHzMSkx^9e7MTMA4f}?FXx}=Hgz}rwIRd}ob8eP}Pmc$m>gkNLe6Pt*gODdm(9I%!U zOXMYu*wr#dD99k;p%5*mK*s-#pokwSC0_brCx~CVT7Vh~5nA-VC#M-!lt87?UwvE~eJc{Hm zDUd-lTP|`NT%#44a9VYct;X>%GLem++h^3+DSfyW(Gim(HU*yNxF1aulJdFd;HddM zw6}%Oh~_&LSY2&7@Qq*c|6dcN8xq9U~FJCnjCRNpC-tX&h|qTAsDd9Kf<4e_$um=EMe|H1s1LU23fpOo zV+-npm*Sn-TCj(&eiJU&#+nl2PuO`pv|A2t*kbmZ)h(8AryY)?I9?3hEqL+zW^j5j zO%~pnMrVqJi^MKl=^8) zM5>#1p6Qi<@z4=xq8B6H;2Wxly}9p+{^Tv$@5NBb!p@eo@<$TtDw!dnYx0t zQ8Ak+4>h?ksZ@z{CUDXj`zYjgxM}HH#GW;Ic0HuFJ6c`*%tLGoT_)Qy$FIpUb!?WS z5spc*-yy9nLywB!A}y*b(?^S$2`tC$x=~Kv3_O~#C5ox1#f#y0{_~vC3>DQ#ECf&G z>?MBNx@r1&@<^NFRi31$BtGw7wXX|OCgmt<7kXNZC_E%1XRq?puxN=^;j!${7KhGO zoV>iH0=C9@TZ3FnvBm3%nSisFmZVI!rPWd@7in>iUZj?BhfC2dZ=(>7h4RlHEjgtu zfU5ds&o9rDjM5&tRfMH`|w+0W%XP z&vZh{dtbkfUngAX(dpZp8IOdaY`H$!PqD8;d(Mn4W(u~v_Vlb4?V+wErM~r2KGbsf zyMspDSL^nI4D~#n4$Xki3jB5(ySK8Hl}jYVq6)e$YlrPP&(Ok8_7(k|79U*_RP9#L z(q7n!ik8)EOAI~NdRk1rjY{tghIwlXY=eD5&$yGz=KaqHb+*O!&gk{T#UrxLmTUT2 zdKY1l_u*n@3GZmv9hQ$9c7Hse|{rEwPTJG;fnLM7ugh7 zIxR9jW)Aj>7|k2BY+2h_hp*5Y=i%hvNGkPhX}cOa4AJTpwO7)emR5o4bsGwgA~{VK zTP>U!cCoZHa-A*Ohx1KQ*HS0y?fRtakyeY&OJXNu^z-m1*TS|GWWK2tk zi#Or6#KN;0{>_~w?`h=;>;Kw8W)y>vK}H&#rH#A$mMy8v$elI_V+)%DE#k48T<(3# zeq<(V5lVAB?fWFNHReG_>=$E4ezCcthSapo8+3%m*MD`c;OJy;hGgVh_I8iXO~~oq zL|^!9l)N9i3CVm~8eApE2mYOBBLpo&O;E^A# z_T1Lovo_G;1K(Bl7)u+jLQLHrt2+G7uJ;tU8F5%oDO)0URHqOvCdyiJ@!j8D=$;zx zyp$okGkjK2r1%z5r^;#~F^dqC%mn&D_i(!aWR!_Fr#y6MO@m>)rPBKNK4&g2TFQ;g zZ6jv^U?;~J!pL7eYV~+VkK*$F(^JM3HRsn(=*RVV#XxLnD2dJ*oxKRWOJ~OKXzavHk{Z2Nb<7%Fwa@b8>ruvN z#BG{du3sD9R$a2I+F30h8C~@&$)e@MLoH}RN6-Ga&eE$UBkhxj&&BNV{1_$`3a71luY*b zY@wuq>%$vciWY2fEzxvExiOZwim2YkAmjE%j_URxJ(hG&hC|Gu@==Z25apmkr)+V48=3r#^&4J-NYV(4Ki3 z!u_pZl0T}O35@PpEq$pWx0cH32%=p=TbJu7Mkez1y0}oZ+`qo@^$hV5uY#8Ii)@-1 zzrf0(^f=QVOzwN%m>%l*M^J2A&KHpv&{FV1)>LLSt7D+o!%EcXrb7Pr#3(&uOb5LD zDaei-!s<`{mjJI3uL@Ola^gHm0q5{j@lArfFc;x*2aJ*>sFa2m)RJ}d@i258Z2f+) zkaklXe#>V{F|VL3QROr6w#U@tf20AgbNFJWw;<4+Qq-KB^rpC(f99g2XR*B2w%Qv@ zH`gMp{Lc_GEKCdYj7Ge{ozYe&ct6Y{-)cbA470RmuBm_Td#$pEa_MF#|lY1w$pphMc+@#jvfO`l32hFHE?8 z>lcj<7|ecCdc2W*%wwtZ%6&TL~QyP>>|B$YD` zE>m<2G_-z}!Pg=qf`JadM6wc<29%<~S{=0P6n=gv)Zg}B!PYyUlwsLCnmGx<&@~_3 z(Sc3b;Q`GG0trvt9a8;ND}Grz;Le&C=ypBQ;sTb4ud_%MHp;WO<(<19xBYFNH=4kmelN-5f-53&#iI>j?d%O4}Dssl@|5Vj99$E8EwZ>GDzcB|Go@&NH>drFQm zYYu8?DfGP6U|nFAJeVUxfmiS6DQV@D^U{nasgM>^rA#h4!glRy7P**brFqye(jEAw zMfIBY#y@rd=>Ei4dxZrOH{D|=9$#!;was^~S#DUF;c<|PJ1$yY18xc$`DD9Wbxg(PzKWMU@59l&Dg!Iy zZIi^%U9))B><+VTj*uHJ+Ri&idFJXoW{%g0w^5%>%4$q{U`&T&Pcv#{L|FZ0&g09w z#;)7Als#!Pjl6n6l+1b=?>lYw!k+`V%hKXp1DJ}Sr!5r2j7oWmDg4DMkr!Gg88%OR z27~oq{WY$hGP!Nic$~4QKlT)#=H1fHa0Ge-^Ht!sqT&TwjCzEFEfg6zZ_cNA&$oad zVTdVi=RK9sS%<@))cpdzy=RBt%;j~)V3gyIfGrQ!}Olakf*5W`5g@J5A)>E^pjQElc`1=J@CQMEENAA<%SI%5<&I(RG!hx*gb!6BW`j4?JQf zUG^5^hGK1g(>v_oDjqReEXI=nxf$wanrD>FX3-15dAit~plJ4&f>o<9Aap`U$6S$zHo&_-lmQopt|}EcRVBDdAFokmAOySJcDfoXLB-p3bEvd$oas*k?e~y z<Jqzf0pVX07$NDH%4&zD@O=?UgxZYH#SXs1N=#eczz z(meeW_>yp*f_+cNv1J$db2D4;qxjMeB_CSE${Z2qo9X(nC&K*RzKfhk0*P|A^*G6z zEiL$J+9<1f_V>5Ba#hL9wVIq0|Iua+8+dt23+IG+yxfT+O{t z1?;bkN96`tF`?~+mN0A1pe%GX;K#rI30=8bF-MkU=m#>#Sr~XVD9l*p)nH_}EL$ zt~pmxhqSu zhkbWvV3Qa9zn;@Q;TfStm^lozIlusH{nn(=lNML1td12!y?r~Bmo8#4t$zRey^!P5 z3zpvOv=`ZzGqes_rj$racGej8vZLBP;gFr-oct=(GstjCQXB zb%VP8=YLq(;L*P&In!e4ynkAeU)#LYmhl&Qd z18sS6I8~aDIT$)G)&_T}NKw)&75HREmrM(Cg9u&76Dxc4HBpMIG4XOWiTd4I4=l4l@V5CXhq>v9VQe7|Axtu5Rm zTm9`j@&%MtNOwEfOCQYJ`tnnRPB)rLsib{-^9@G+KJoNj6ZwrdF4SS!%WHH{~cnQ=P# zUbZ88&fOO(JuOs~k?x1oA|*v-D>Q4>>`-JTSQS}K@*ljyC(yJK2mSfq@+S-T4Eg~3 zjM@x%EySG{cx|2mxz^kD_8bG^h$u@HP=vpNfM3-CL;04XZ0QmsT4bmrSN_oD=4q;V z`kVBq+aCRyYFF=axvfsq@#k!yxf$|x-XOzEPPC55SNX2EKipd_^GZZ1@;P+{8D7=4 zgFt{A@SaFEhXTA>hhzp|hVD&<)xY?daA$M#GKX^-t!O#!G`pA0=t17g$~$@1`^yNL z)2e3cGiRXyOzz9ZS|d95$^{s_`Wd76(DTxTd3; z7HR583v&f}S1Ehcy8a1WMuj8fJ20h7%YlC5lZ7>Fx1kP=qW4d!KdyAfm+Usy6u0LM zlkEfQu#{yT@EP^3SkWQTP8@E&jGnP};3-)qms$lm!|=@`*tJlybE3cW=6qny+M%l< zOZqL&>U%lM!g{W~Oqs9fadv=-I4t$pj?B(Ulw0v!ziOzvVHT5@DKq9cn5KU)fAAdZ z(l2G41-1UIF&pcda->-=TgAX5b8SGmMLT9NL291TQ`N()qw3JA@!mt-lvo$!e(1Oz z%~p{kOSP2L7q03?jZNrQK|b#rCu5?K8|JAp!+^_2)C~EuU$?~DN*Y`(B2HG(=M}@) z6^f9-Ke~mi$iPJj#rm7R-|mq4jv#_IgWlrSkQ11>Rp4LPbOUb4CaAQ{2EZ*am!S`f zsP;d@UNrbTQZ$Nn_294PA2P^1#v;re{TW5aRK!x8b4QB_nI!rx1{BO`k!Ys(wE%|x z^C-+UP^7?#Ml%~q`z4*%)5%MxORipgTy1clOfj^w^~Fz4e&F1o@S<#VNyTMbC=M1q zIBY1YlXQp%K4xf3!=?oVS=Q!aNx;zdv|q8(}O ztux!m9C)vS&SuJM2Hr^4XcNt1?E@v9(AsZX-fDX+4tbB@62}zJc~nN(i?V02mN{yt za~^!*-rY1XQG?va{ViDqruI1IxCJZH@^el%oc`>9iZ@{j2_F` zD_~B!nRu=<%nM%uhD#p}cug~g@h~dXB1KAb7G`bX3TpM-KNh3fnMZoidQacWob7-g zj?Q5z8)aS;ZwzM@L=_6=|$$n=Z$h2``P~vp)NNA;!RvM#8ux3D_6FG zWDoFxHFo3S8-5CdxKCF4H5*>+?*s-akEPJL+HZbl)XVTT1+dL%8PqN) z47B9FSY+OuHR^snfeQ7%KNRXV#d`zN+3D?a3z|QPBy$z3?aaok&lC}Qj{Py&K7+p6 zv_{P$wJC~zp{f4!7qsfnA9h=X_zD~8Nenj|o__w;#d1}_5*+JXx|tS(z_^WHc<7%$ z?#8!gFh11F*`+XVCnAH*Tkhgwi<$HO@3cqV?ObDhgjm~GCkOeN(R8F?22cjL2buP7 z!GEOOu)-yc)`=MGn$bbH%rMr0D%dtuqEaWFOJ+y7`&(3HFV?gyYV(#2oNwtXO({N_ zhYOSsJH!o_x9(u;l}q+v$k2JkP|G}XM$p-MuZbAJG!;8tc3y)uZH6H;{=-)=;`_tf zO-8J5Vqe#>y7E!r84O7k@xPnW|OF^<3Qf6cW15I68OU`|-* zx#m64BlO(B6-}%@o_yfrN_OfcyL3xv%p2tG4TQ}Su3QOy)U%1Ay3n7f*Z_C1g}(Xb zdw~~TiZhOb24cQo1>SB#7uE&ul6osH(Zxd4{v`h^4=};=MpFwiHI^r8X)ndvKL(lN z7EYJ!d@G%w@I7wHz3d#x;AhluP2RcR&eVxot}71QYcXjvQo{e3Utdv> zoXZ}y_jHmyOa*@Z{Xf>DpvQ<(dIG~dKJygwG`s7gi#YGg?&-XYQRd0cE|5Ablr67l z&q&M^JDJ6~U-~|&>g%?K+|*u+i=|&C>WlQr%r=N*Ul~f4&Ukuj_GcI@vDw671C(<6X}@#*4bsc;_0nN9I5Bgc{fT z@f!2RJe6LGr7z&f%T+yewO_LQB8V26)|bq9NS3V}V6#}JE>u!*%*s3&uRiy0&|<^G zDP3D#Zn3@-PHoL^GZ@^@-=h5sMRas5@@)n}KVRyVE>QBd@5}UDr-ZHSsS6~e=oo^I zfyJ*b*CV=3#bEbAr9#Oz_hfI?ix~|jR!pJL%O0h1s6hhbZ`qz<9`ejo{s|~zzfGB* z=D4MN*$&(S%DpxggK0V*`B}Xr2%TtB^O=kfMy+Qw_Zi_-)ZpOAoy zJ-70VQDA6oEIxYLl5<99CAXrbunP?G28Lo5%4+?R5LOVISzweI-E+9R7OCU3rv9h@ zq&)h|bR{L*vZ{rX7tHZlvq0QOSsrV1{?7`$K)J;OeGa_d;5UmQz?Zn1s(ub@#EuC(P1^$g5}#Ts5lYUhsU%t!Ndc8tjhA7{cYBW|wogT60j ziWe9@MvI>Y5iN5HU+f_**~~R8I)44w*+hBvOFFpb{eZG@5$WIZS>rJ$a%kXGDU@_z zpA0wT%#B*F5qFw(W z?u}XImYQ5_$XALghuC!X=6`-ZXX-^Cwj+c4TUW|_t(KwOY{>`SEY+K{>4qwATCwG3 zEa_Ty5Id`k@jv{1V}P2gE$4abkomTcg)--r^}@U zK0i+6k*G48UVNnU3iuS-6Z)KiX%K8I`%%}3u82Z2cbaQny!p|H~(7dKxSTxSDUEB2i&V;f72j0ZPw&S-7yz>7CEXg)#Lx< z^M$c!Csnp=rTR}$YVKt>-0YX=%$(R9LFx_k49_CqbJZXjkN>x+pH4!SRt4)J?;9r^ zZ*0C0+0NZMRx%|mHkuPe1$?JdvOiI8B{sl;oahD}SYh;E{?b~7masKXx zy&uop!rn~Fbc-h5iW^@(k2}X%CjM4+jgJc8=&NESzmBz$oNIWU@4i zj23sdqE4~?@R`5WU?S4t*m_QCq#}I&aprh`)@{i9z%XuW*mK7o53rKmZRll1YY(H! zw@i7Q@iTlPWo2#cjEX{+xObstoUEH<0!m$w(ar@Y72$pgyZ>iBc8IufKa0=!WOp`A zRn`F#Y%?kxUvQiXI-XiwNVi~`{W_13G_Ym`XUnq+C71)Ox~toDeXFp|6jo0qD`tHOuq{??cidl&Ss7 z;zl+BoLZ=i)bY;Z+|?{LzXyC~?JWseEF$W#`61uyM4pN>dm$Uj=S|j&(kIqVrS`#N{c}GJ>RR0K9K3>>SL-TvtI<2h{ zIWw^3``*FnBrnK&OID>8T{*}S$OP2IemS}$)2(?%iVcDX?^E1l>g~n$C1;)PlJ#8;@b}=NSC+3Wi(Y>M870jI( zmyXmTwVAg?9JS?%Ykz!~K3JejqWqQ6vn7OUKcKUCd-7)uiAfA|4xKoH9G(vyOr@^% zMSd0HFh$c)*}Rq_VAG5gNoFWiSlU#Ww}oEDy6PSO1yjum-%HOt;#Ag~UMSa7@v>&; zhSWm8v$rg;|-qQIa-DwDhv7m z9sbhu-H3Pnxs}XWbR1(k0LlxQL|4r9M(eWtHE+$?wlwdELpMVg3iC*SJY(Guw#bBX z&eUYX`pVGambl7nP56>Nz-2+b+vUXDHeD)CWIFV<_|=1j-xlFn-U*R*rBxN~STg>Zanc522q?3tm+WVWH@LeX|` z?c@W2L80$mUxz8{2(3()A?G_nUq#LjO_6C#c;laXrI|UrJ4vNR%&f!$r7s8Rh}ooV zx^-U^A7d6Cv;6LIGa8coNKIpyyFPrvWR}wc5#b>q%$~3FeHnUsV6B)9z^M1Ou#g(D$>cEVr zRT%I`q2IdR=@Q9HTm-iW=S|iU3;D9uZG+PXi^1>B_YFPHd^@r^>TaTN2EFvNIRa7C2l^kO=?NvB8x zso`qS+PHR*^|XBTKl*_8Mm7r>gIvXqR5Tq^+QTMiNeuX2O|}iA&F-G@=0CG496AFx znO0C4+gi%ao%HDiX8oIB$(aI+<~8(9!W?mpzG#MeS7ZsXWy5nauj&{m^H47u_3~uS zYGxVpmI`DRiOu?B!!HwEonpUqvYzrt9KcvWpTm955>u%j`|0O0@Yz~%b`8zDV1h4m zH0O@mzZrTsU_Q7bFe^iU6uRWwaI_+qY8i6|Ejpzn_~>`o7uuL5O8cd#gH8PtcWKpM zHc5t=ac!pXo}9GvkX%=24fJya!?~rIS3;lv*&r43n(~6JN^>10Hv`EkLyjD*N299&Z?6Tnd(!g4rjV%Uo0Xzzx?4jhvfz0|m2}uB{ef zVR)DrBi$z|s4e#1zUTu>3Vx-*tVKoLx%hp446a35&6S26{~~409&0q?RL_=SP3xZ= zkoj`R|9j31WqQhHvxY}Yw0Bi)*b8PUVbgy`eNJs|QU-X|VsZcWDS&6li{M)}I5W0w z9$N+nvp-5KYi`atSuE^fgYO= z1N}Js?2pS7`>JT$j5TDXOlp;!yiC_E*)~j;{k|1Xtc0VgIKqd8$j|fU&#m{glwl#> zeqLp3Uzs*I1*_llDKlm8Af#tsuYp$fq-6$>*`UU|lFIq6^y1tRciEKFUwMSp8}Ve@ z($JPHT=d zV#ESlR)6yutl=#KW6szc=$6lfqUm_jJg%&9&zp}v%4U1TfszM=JecGKo1{cs5N5S> zEFHgVK?%&J&4qflAf?hwfVUW;8j0%C^;^GRWPPQ+ZK4=w5;IzkrzjT}xFlm{D=@l+ z*F7p-L0W#ARy>1%mIeAv-V_#QyH%h`-OR}{B%YhK#ia_aog(p%|MWq*fO6=qbKrHh zj=3~_Y-tae83%hcj(LH)=eQhkzSgAzSN3S21wD{WPs{Iou<3T2-EwOw0={6M)hR*V zkSu7HD%)ZH-cx*>#a`3SWExT*m4*xRNlj-u!Ch_rHBTt@!y->+wHS|tGY%@Nq@ijT zV|kKylE~dAnupSAF-piP@RCBk`p=%z49`?!&E$q!;EReAk!nmXL}*~053lTv)!4vw z=Pj0=7Y>H=fK7Td*T@DthxC2OhPv4%^am2Tw*+{m136mwt6%vVNE}|RqEuUrC@sON zk2RWg$&Hz#%Ee-}JS3E&PQo)Ods3uJn#qHtNIOv@T@<65*y6!HP*FrJMbf64U;1_Z zvT*N~ftzMs)b`T?H7_q|W}w@c^N}}ehjwKT8r|Lvj`!TJ@D(kyD!g2JP&#_xJI)&N z0O-iWUkXks3eA9Cr2f*MM!@RUx)$R2k4U)wu9cGmd~wA)K>m8J(7V)N%Ff!vQmR@2 zI$6W5)E|)=8XYiIAdMN&_{tX*O62+5}eEn1Z*sfds;EF+Qdv5g$n)os?m`6jm_v3uHLb!Y5zsPnir< zHv9#&ba)g;^Xnmlg+j{$$DR08iWLQK zb9u%pY<9C9YSntqVt{Yot0`J$6!ePHZk?Lr%XMSvh0&U~G7l+ECW>@P=XqO79|k98HRTP1ma}w!N!to#5GtCSZd%lN zfAG;f6*`C2=8>+%_*~>zW1w2-*t}6Tvawsn6FgRqELs*hv`DiAv+|Ob4#OuZ4?oHyDwX!Mg8xu*+8uc0n`zZ?%FTQ>LIwUz6qAYGO2s^yl$#b-SO=Ns-!c-eBDkHaR_Bh~)rz9`H}hvIEb)-%hW+eAz) zn{3YILaU&knXyH$R*j$iX8IxDBvWIp;S$u)KPe#tbTj{CYKzpsnbr?wq{$&GnO;hk z&}#8wrl~>~PZo+jr9hY1IPhAFXSA4LF(AC{>+F8K|ByNC1?!fpr|6iovwkf!C!aTz z#5^hmOWX7Kh2ldZ$O#9>LNNNZPdmoF`-n3o?*m22pj`?=SHbSb|KZ!)HLg9Z+rBbd zQFKh{V!%a}<9X!uZOeFx)YKD0BBH$Cs5$ zW$Ub%chu@+c(-}ZoGDj6od)HO&@x~$aieIb(YWrd>^2o;yj$9nMKbqb)?vugW2$n^OwN?Mx`m z3$&Dd$5Jx`MdQ_j-!G`=R#2^Wv=Mt^`Qwgee7cD_t*af6oO^M;h`VgAM|afy}~I)!!f6efS;!oH_cd|Qt<++`O>>9oV}UXa5FcV zu5?NxtYOP|tCZE`B&)DibIXM!J52VT|C21gJ6T|E4Y$nAjCi^0=JsO@Fc*e~2;lza z!$%aDH8&5zDZ-1WriMrFutJsQdn{2(rwq^H?S2h9a{HkG;GIf0-=HbDDjVCjxzuON+F0uDK$WrBPR5`Qc#; zb8k3!4|Kwk(im5}o+>sY#-ILoJnYuL+u9dWOD8w@*iyV`l)2rl2PI=LF7|0wODj^? zMPSoeDZJKQE+gbEw_v;%ErxwD%9wxktxPq%Jt?B8CMw)FG1GOttg(AJggMiCb_{Gb zN6HxEs#W98c{@RJU7=G{FmO;rmnhSWE}+VEV}ejzhvI>%-u@+Zk~b|d)%73!StfY> z3ZLnT;3Niu2(r=K+E!+EG$SN=jU*amB}dgk`W>C>mr`S^IuARf%>*>HlaqGXqJpRx8-)ts%z{6L4`9-JnH<-se!e6h) z_qcb)blxtDmcvpgtzD|7 zj3g`-y+_>dE@8Lp<7{=xsLMo7TqPq8!d%aFcfPm zsjFYdy&H1(ba;jNS=`TRqK-Qq*cq+;&Cls6ZSGJ)JJCr6F@0l%-W>O-Gb;5pXNY&{ z?N$(BZT)-OMt2h(3^nZ!??M|Iou2gthP4Ijjq;8@l(!M%0u&J(QywmY;;GaM_ z%(aixJa^epTc1;0ol=&ajR6d>85Pn}x3a(8RhFE!LV@-By*ny>xV-=(OB`kZuUDs-qkb>+9WxrJUG-_LHO(KL zE{CHoYduHb;u|b=#AGvn)#S6rO8vTS-m`jE%TDa+q;!NcLve<+795>!stNxNZ(5&K z;6#1}yPtxc6ydK;&G?P~%r`ZB^w*ChX&r)7BF;6t1n2~tnp4F)IIoO3We|C}eCPJ3 z8&%=&Af+?AVlIh2#=U5l)GN`aT`NycF?MAEEp2|_pA&)lPWs#Byvg}TZ-a9kfHSJe z)Vs|+%}`H+-f-D^nK@xRE#d?k|2k$#sQ<9jRR6A9KP*cr4)V#ci7vVRB-so9NEc8( z9~7yIxM%KD(Z3Nw#U4$ny~km(_lsmpLWza*Z`oUxn66{J&8K|0%FSvqN2bH2Wx z1%4^7le=ttHq%McIz#vezrT0y-Xo}Y7Rnv#+4kpGa%?IgP9eS#STYtTC+L3yc`t+=n+Nyfv z$sh>r4)CQ?YF`WYoGDK0;^M1Rjo$dhH{8E{JJ}6tr>fJ>XmehL6Vu#o)aWU0@DhTr ztzXwh+{+e~Mp2nFq4T~9LM=G{u<4hdeJfs@bPYSdKO^L%KwB5m#a#aWCx1jFJ;GP( z>U!fXoOIIm{BqSM$L1b@PNDd<73^9nL0*Se*W?}obipC4Dqdn#4o<(*;#3z>Wx0y? zia9OdM36W65BP>A&4}8Q#MdF{6ZLq`!Dq0HJV9$|GMN+VJL`!}JRqR^iXG-Bjh3Xd ztsSNwtC~7U{Fm0nWNCBr$!0^gp=Vo-O7RRW<4kp!(Emo=xQiZr(i9J(uccrafzb& z9qPaP`?_0X9hYjCBj8-Um~%|sCdUV*@6zM0vYR2tapw`Q0H^2)*$%F|q})|>!)uGK zrpl!`R0c~&r-~F1`27H!h;jkyT7j-l>9RKdv84O)wIc!ED_lD|5%LX_I|2G6_w^~~ zMvAq=tRnXgQYz{KWGUPsahIP_*QfEHwR!#l)p8EP_ zx8DF68Q8hmQk#1S%bIt}{Pv{?3xT6Q)_9Wc3u~YXclZ7te&?-GZAVM@c%iF2|LlpH z#jjJUu#4ywwVAjo^Rj$CnGRbeZsS?_yV`%OYQJ466(+}|mkkL8SY`a-9Ko&7Ir^Ex zNee;fqJ$lN?paf-LpGpGEWNKrE%(q;R5G7{1YQYF_u5QO|)K7JN+ zu@d^$RYFfegXVw!gU-;CYT=}#lLkw+Z?H^7@kFW9rq(g2W6}H3+go(EloNS9?4oFi z7iaxD4gJ#ZPdD@t?|S#VB={fE_wr%)MK}ip{?K>O=@~ERT}H~BsW=Di-o8ss>bITP zZ_n;lV2L+5ZBdm`o&7F(r$KlJssHcD%^&-FZ!bVI;u}3w$i7}J-^rqLlEMqd7vVe* z@TKNFI{yEApBKQNlLuS?e*yeCA#hIJUU>Wk@aKfUIdyyC@fX0K69VVd?S;o*0Dn#h zoKv?K9)AJ+IU#UP-ClV71@PyDz&Uk$;qe#1pA!P-)a`}GUjTnj2%J;57ao5B{5c_T zPTgL3`~~pmguppD$M=Y+sH zb$j9Q7r>tr0_W82g~wk2e@+OTQ@0l$e*yeCA#hIJUU>Wk@aKfUIdyyC@fX0K69VVd z?S;o*0Dn#hoKv?K9)AJ+IU#UP-ClV71@PyDz&Uk$;qe#1pA!P-)a`}GUjTnj2%J;5 z7ao5B{5c_TPTgL3`~~pmguppD$M=Y+sHb$j9Q7r>tr0_W82g~wk2e@+OTQ@42hsND$kKCBuv(I{>3vs|rm516%7 z=%B<8+OMk+^#g$kLJGm!V8htzw@>&5!tPg7k~g8%IML>+T_uJ@{Zup+8cS^?=LHe0 z9VHl|ZPi~&@y=RH8|g6{x3*5*YSkrKGqLewh(Kbq?s92Q1O4C!KP|Q~j{Fd%3-w=^ ziK{es6~?xzA6g{PGD=}=K_^Qi7?LV#@L!ihTxwGH!!0i0nr+#tdg+L62d2;&oJd0! zCdXRcc;m5cZCSJBa$O1fjDO;nDF?Lh0OYi72M!yB2%wI+>Ny;Gvu)c*;xvOZh6wcD zqU#)*hHlli;{?!ERr`~OG$KE7ma!YUjpW3S-mQvpt9GX!?{pUb2}s78a06|XdekVH zS_^XgXj`wo+3$tK_=pdDJLscrxCm+_!$A?|lu?Kuh)PJ9A})2}Wo=~a6d1^=XJZrE zh{%yt<$*rnOyrR=kyk0N;8Mh_pP-UOFw~GNt^SQaPF~VNrMYz*PQ&BjYz7sJ%63J3 zVh1F7yxiSGV_WnJ%5&As;&AP(P|-YR`B7d zg}x1Q#U)A9R3ZsUrug_XFk2`6#wjQ#Pl*}r*#6C|s$fL4BjU(!SaE{`;KM9u$bIm7&@`BokCn6yRhfXN`%WWy!z7pU->T zOx>;PG(3shc5R*0pnC}VB~%|bTg_wk7%NIQ*W5A3krVCJcB~UFZKYOxFm1$*IB6_# zq8zoXw=Tjb?s&@2Ag1XUL67l^o@(LCII3J-MTHhmYjx6sYPb;E(ykxB6 z@W|lb*B6-;8(9?XTAZenapY98mbO6TKm08zcM*Qq5nwxcX2tj&P~aao*?tGQcsmjK z?TBY+=}hVWlfu`JOkFKCdr~B@o!4Bh*ae$H&=#kqrU{X3aM7u?Y(uk0MBfP4 zncC?pQkwR=naZ$i_7WT5hFSbL%gg$- zjn{Y0UZOo3XyMqgji9;v9m%X{$w(tB*1Ve)=SqpqC9&K#TflOY$^Bhye{W}-=GcsX z3L4v-wvZZ{`za!B9aE~CLY4~_i(9NCx+sa2p(eg@-R$}y$mP~DfGf>eGl6Ki#ieNm8Ag0L%&daVM z)jvcdP!j42*VP1sCgdB|bDB)i=q6-8(QugodPS^ti8agQQAcsDWwqAzh=;LOd^ndu zd^&NEa;?PHui6WhX0nwEKXcM%!s5;uN4m6%PKU@>`v65A7o{q7vv`3;hYK5fw-q+ns$VDOD;COcaNNm$W06Q<2KWNI0B?( z1&!8K44up&< z8QO;dq_j=S%&oFsrBE&X0h}%)&4q!7q`nI>-3>Y-b_n5;Y#K}4`s~=IMSR^k6IN!^ zOqRIuSlfK7#+=Z|6?Do)h7a@z;Yp=JBq+PU7>(PjFPmiu0thLDh!y-pf-`0^Nf9t4 zG3-{Zz~!JCCJ7`W&w$ew*A<7~cz~!Xi?^RKn`Z$K=Bx7NW|k$tsNUIw!5nTB7Oj%F z0&fHA$zm!h3zj`GM3*Cw3bFY~$VL6o?Jm|9DZuKtnyCl?#mx%8!iZv0@Hi0{#9Cwa z*-H0H%0c6z0pfqV=Z~5W$>Ch%N=TQ8r8dAKA5Q9HlY5%dcq|bN5QaEArBP8$4P(n@ zAN(^GOQ9|K8j+%Te$rEc0>+-W>aOdK%*~Su3ONa~iQ+`YR}H0`M8UQb{gSz9cI^#c&|8xo!68^rQ`MtzbhAKt@PrGn4m`4+ARdOr+=|wfd$y zf}E6yYXS~TNH+l#b=$&&r%dL;@ExNpTSJB(>amS)!O;}CTjTy-Ti~q>08J9*UQEsE zzSMXQQB_lq#gU|n6jmtyN9KS08OsRRwSD;&Y#j_cIoPgQ<|ap=CUYj3$m=?T0ei&&wcW>!Vz$V!^FEJ-l-F6sALRuZaVo#*S zPXi#@QfG}FMtg$Gi2`nayA4}*v}^cg(`NcWAKH$K=6WvTHoMR43zzhZ=qVO%^(382 zI5BdrW26%KvId(5kODMsWJgLvifb>So!Kj_gX2QxCEHrJwTdM!tgC7@MZzROSBLHZ z89~x`T#(wN!fiY`pr}n^X2iMbt#I73O#J7+%Pa>tVtXZrh%3fDtkB2$q$v`$T4oBNQbv1LJCtQkQ6wt6ptqptNIB$NWT(SHE z^vm^YvUjns!9g%*^nFu=4k$)n+5a^3+2DBS=D~F(Hpli^vlaFQ$Mi19QG|6TP;4$I zR@mJm^^=jqTB8_ufN_=8_7wz=DBn_ly1ydi$K0&6P|S{eLeMX#Z)QXz_wh9@;tmia zr7hdw3P~q3OG$&BrgrpLJD)}5qEr^v>1D}RC_)J~O(SU|AzW7$SM0{0gJUQ*w*(;3 zS}V(RFkt0EXO+||ad*EA7gh!0bJs`G+7Xj;d4v<^?5YRY=v-n6I_rg0D2y{jh4*ua zM~s9ckL{*eA(wU`ND0Cf@fCbm&}cy zijranK9NYe0{bmS2<;zrB%D?o(8X#3w`mfP_#iz=66?970$2^rskDw+-&L(hW`kR0-#VYJqT5)E-#u6 zolHH9=$=w6UQ&UPs&bX!?Wwj9)%VPwVWJe3s7__d?3*F6DU=f{oK{H>h4m;yL;9)U zO`CLlU>PN0S=MPL$*_#uS7PaLLcAz+d*Rg;xvE0jb0;U0f6biGh1Xc#WZliP}2$1?ar-{Yr8H_jT_Xlc(U(tsNPzA*tf4~8;3ZhONKA2^%(`-bu=sr2%)>Fa?4RaaZE5X~o0 z<;DFI`j*<>>xepW9dOi(b`s(%=$S!0uKAgKDt=6>{icbNhd-@1VIuqsyobT0MZaSsCb=u&ArW^?^$?Jwe zr!O2@rqo@(JZWK4BcfAWDxC?1(*OQFXGpc6))lUxT<(Qrpz*NG)S_b6G@9jZjfwRP z1u(9EuWD_c#N7quIdacIi$YZ*>Q7)431Z*^i=!6yl*!0x(2s6>2g+v#4v)C;!~{zh z5~qqTd(ssI*5Xra0PON{0>Ujtr>Zp=u7|g9#w1c_D{`AEyFYDs<=JT2`8WR~^gg{J zbH_m;d)z1PXjoUnDRw8Q%;u;IYot0wEoF#a?OC;d$`zM~9ffUG^dpdlND17#84tMH zM?E_8{s!zU$7$?~Ka`tPCBHd$=@>(ug}x+)JRfz8hYsaw)TImkCan|nT%B5dtJRTX znam1>g7i)$@sUSyPko3|pJ!*Ee8U3=iwYbCv*%=ANSyI-_iK z^J`C#BGp~B-t*0xI%fhV!J^1>UA3Pdv#11WWtY}PTq||#s_{U(DqJFD2{1ED3%TQ% zdrzt9Fkwy)^kNGZ1qsG5ps!W^EOsmh&>FOojLi>Fo-rlSP;M z_x957Zo0jd7#;Jak-l}U=+qrX0+!QCUWRY^_G(_o85rP|@ zOqcmycExJG)TEjtQ=7TER=)}~Qsf6x1-U26(ywO3NtrpMLQz#8N}n z9L8G==dX#ix5>I*X7h6}&omwho(T z;pLu7*Yph9Oda&lAP|~Thso8LTMbpIiM=I{=kbBM0~9_nH|s&}nvF!qZm8zgk}s=+ zZ2Oriaj;x)hnT0y5l%-%4voDRB>z`(#@Qgtur?&}H5o1w#dV z;rIjGodoO{l(ZrHEsu798p=l<^jQ=0uxqwY*ZW@hFmaB__J_&x$`-6i_ijKZHrp{% zds7DsMIOhz+HCW=-;Y{pbnk1{7>69bVOXrWGu{Y?+)g-x_A2Z8U$d}w$R3?hLBG_j z?WQ#(#!0YC97FaSVU^qb_llr>lYluR>YAd6g@s$05#nX8N?vA!*4Vr=W_k<+l$&OCj^vkVR_Ll+X0Uun z$5VzerOSZM^B)Y!gmjXSsiQ`MIa$G?S7{ptsvs4au+rUy9Ec7rj#ROu(GY=~$2P<7 zMP!W*kaK4K4{S`*3?3fa9+HuQ-GsoljdPy{cWgUh)z_X7MoN*g#&kkTXdV)87_5mN zLb!C*N(#dj-}DVuR(PNe0i)4?z2#20pPRtqy8m)^DeqcChrx^Yd20>39#(8(T%~!k z(P->qlp>w7VzbMatBQS@`{q!OqVCuuHeOz9iqi2IM~z);rCX%{3-^|9QGZ#wz;^jE zFe6}XjnoP{h~B|Qu7>Iu_FI4wu5fvtZ5Xy$0&*IL2fPeYAwvg8+yF=hDq(EcZx51M zm6&rl+^~Z@%Y(stRt|Ea{+sUG&l-ov!;LWwnhy?d++B>+ zANq*Wf8t%Q>?NeUd-$_^^9+)M&wpf|hxYzUw|=0I{{H*7XuUG{14E^a?T!+C-@o#K zA1RANyZ`>n-(Bp`u3q}Z@6P*!!Mld9tj*oPSJ_0HJ-T|UDd2o<^y*mYW6i7ML%Tfs zp_Tc#z@>Lh1$+SbEa2~Z*XJ1kP8s7{`-Nfq=GCNbSKfbVODU=(Mt9}@$Npu@ z#ol%Q<);c}jK?4ONXF&ErI)t^nc3WdUtKK#-i)rTRp6&9 zMC&mhgh|S1^a>yupQV5|Tp!S5tOQztG}D7mO-qTZJaUEnu?<6+k=#L)iLG*59* zfv1`}YN-;}iyt!(yyD2~jLHZMDRVx|0-Kmr0o=U=En1#!lcK1Aw~f6Q@@y~&SN2}8 z#2WEUnG*oEZ{PgUY%JQ3-@K8H4a5_iPs{!HQ+h2N4hA3jP=1XozO|fkLjINgd7cNm ze*pe-KDoM-Z!c)Q`hlAuzGClsWQHmY_T%w(-+j+cvf1J4rMN45#^b%coa10PY(9@& z1aK$i{@5*9yEZi;u8rZ`3Lh|CQ_A}D0i_I7MMF<(C%DE?=M2E=`12)^LXx$7+6nRi ze(lv;4*W>KuQdQ|Sc32*sT3q7#_8u1QjqSth(|im2VDQmza@C9t9QVMVGlg4*?|W| zdAv$2@z#E{0#7w%KK^8_84On5oewMx!s=B4kDA+K0JmoNK>^Rl6W0a&efJ6Qa2SFH z05#Y4rWN>)IpASVru*1={Oal~Eifa*)hu&@xyR$1sbCgX zk6#5kAjIK|jAbB50j{PFG*4A|$`W78S`ShWykT`SFO)SBvS^gR7TKf89KcUJKBeNl ztUgNbMWZVz3>c-mfp1iY4u9~^Bk54k1ECK=W`r~ZEFP4>mcxV7vxa~o(0b}MsZ~el zcU388*%qXjI1B{(j>mah+Oi7(aMKxs0T^k)-qrw6PFl7;@(>DzcdhKLks>`CMxfJ8 z{3#B`oPA`xYr$@kR@4vTuCy(jcEM(#^Y~+GjgQM~X$ZNf9cYkpGiQsX7CM?zUK8ZS z&#j~l6_nw&rg}W*>bY>2^wDT_mDU7Gqzyr(%WJEvBzXFxI*}J@eSBnjnu~)l_ZTiu z;rhLNC@++Wb-GllO@`6|=VPTB`5Lk(I=Lz%u#~QIx=`BMV{2Y^{t&(;P|A&QiuLpf zD@AQUJwq8?Ck5AGqE_dZ&yUsJ<+WESBixFsL9Le`t5UotV?&7z3sQ?##8E@MbO|Z= znsK+Pl6>aJYfW7NrsG>q$8xVuI3*B{CVknd(LdDCTK{>s$f1TS`S5CNs_<$*Tc_0` zF+AO;r0HtWVT&SR?lBsBTKoQ!KSDV?(C+69lvk9ZHcO8d5vDFl@E9x3@EDtbORF#Xit#AI;ojHJq zy(cvYvuuEQjja=DZ`I!3qLgxJybJP0UPjOyOl3YN+pN9nDc3;ii;t)0 zN>?9K+OR>d<*}y`|F31z1UFdC=TM`)lIGGyBnD!u*5da-+Gt)7bmlFDRi8!DC3SoW zsyHOg(^~ev{^VbV(pKE<%Dea7I6n6VZ>{D^HG_==s8sUQU0zOJ@c505X@c6eA9}2& z^^VLF+XrgU+_tn)ZIS#>Vjr=y{4nd!EB+{pZ~Qx8M3{4=S~hdbGgId3kgXH zbfHwhQ{s=(Aw|bsAFI1AHZGlwuf95`mW!u(A?|UVZp{njKv_D(p1w@C6XX-5UYREq z5#Uk99cdbgsOyp}xWhEgHxuilZteISD%*Mmy=Agj!k zxBxwD9ZKV8@$G`aa z^Or9_|NP6hp7-?Dt>>RvyZp@a=LSiAMGTHhJl=Uhr-pBr3# zXz^uBD=X;og_Kq#<&7%kr8jHqmyR}rq#czIkaEC=>qY5cc620ZN|8eP(n~jPy#Bf! z;5&Jzx=_yM!OI<;osEecqwPd3`=gx$iaVp`=@~VHX5$&sfo*KeX52{HeW;yfKE8XZ zy|J5lICQXmV<)S%&a>_dYHh2dg9G_qTsxStj>Yj+4SbAO$Im>Y?bLYu3_3;b&+P27 zGhNx*dUB66ZlxSk7+v0cW_-jwpvyZurP$8pwY*ctf#;l_yo3AfuC3jfbK{tsTk|8f z8uiY~c+_kqxV1S+zX*wz? zap9oWX>~OLZFi=n8tcS`AeS8}s@$h$zX|i#3UL2+Lh_Tt+qR(3-}&I({Wc`$dsO&Z z64D7beK==1A!*V6x`P_mWzL&$Z}c^WMH}X}!N=BRLtwwkc~$p_2fH-bZ722R0$ZQA zgYC%M?RGu9=CdU0(yMKr#!)`XY-qoa+wz&0@ZQS_uwBh&&m!3-?fwyWiIK&FAzS<7 zfxT(lE5DS?euMj!YpKa7v1f0#&!pFF__4sLcfM;euQxxL$HQN;Z?avx6ph=SPnq9~ zeKG7K> zok!v=&b`|2U$tY%MOzUES+BpxTgLVwJi$h(pa>`8k!};M+kgMF*bE}J+Xxm$K$RKf zSwBKi86)2YPD%>(QJnj(n{LU?UmKcyOZUJ8^*`l*XpH%luR3oW;0AC!H&$>qgsl* zA5t0%DZW3_RZgbA^`bZW>5D;Vj%|X(G^SjvNku6wwV5eqiO)lH@ngqqgY`ML>?GP)JkK@eFJc1IGCJ~)9}93Rj2Al?jdd!~Bajaz+YaKhS|w(SUMF+B*L_>c z_9LbpDkr>&idja$wtd?KvM}98VWiQ`$&t4?f1v*a&RvP-Ewuw&DPwhrYj}QvoxsOY zFYVa)Fy~^syXlfdFybp2k7|x!NIa6pQOFhww>S!gh__ow)*Pjnl{q3`%#6VqAH&3j zwK1sN(@ji+BPgT=BoaQ$ErIdvb}WHVk+@zEIk$!cZHc=oimWDXF2l{oBW+PFuerrQ znqvEHKPHtG@({PDH95<%aT+AtBI;Ap#Q5SBs*jn>UiXn`j&akj#FUMcwoOh^<76S@ zoKHZaLCQSZoyjFX=8y{6A|oe=O!T-N!=OyU1L^_>%V}T>3`Q2!SizJDkdY?m(DOfW z#|fytA+ty)He6(K9_Tc6S<<+tn-DE#6brffyVow5;)Igvp?LN!psxUU(e5-ka*wI- z3K%J&)FaolX^O#4Z_I=2Rm8Y}sH8O{FLebTGXE1~2j)<5^^#E#ixhGW7WYZ7s8l;7 z%@d3bKtkY#Nm6Qg&p}BU;gb_{;UjpYRu&M=yz7Q6F)*sHs)0qX+3G&@fmeB3pNBve zm;m)*1+yZJG}r$uI)ze)M2oA3Lag&ufraU*K-YbLiEL3Nv`Ln4V5T6&;29o5A&XX? z0F2v}PvzJo3i_AIi3SQJiR4)Htcpt5mJBgB9D7t1`xJ#j?I_wu>?^N}CLhffVx#E~ zfvyESw;A(@vm}%tBPX&V4)Cnx!tD1Xi#bW-i9H!6@HI9YNv8lxd`7KhmM{Ttq&$s| zO-Qk9YJMW5A;P!>OX8*daI_i2It$DzbhE<@TF|^5@bS6j)BrqNNc>vtfd}x>BZm0j z3dIOs3qI;j7OKJZ41=W;`X#XHH@WC0k`)?T*-ORAF^y!emKW&jS;Mh+JLY{z>#6b| z(;n&(+Kj|n)MBoFGkK7mT2q>)BxB__xUA%MPhiw)2vCkAB_bG@89#eJnWs~Tda}R< z%*7B>OhBc1unDa}x}U~p0Q%pdO|wHixvpY3^zS&a?%?l8>OMe ztA{B*W!Fk`Xki+LR<2>4g;%2eG`yEAg&!u(8jU}OI)|Ktb_K)X>Xz-^SH}O(yUrIYH#Qx1kNb-M_xe4(U$SXY>U_)Nlhg zr}2vo_W1Y*y3$t$F;f_7Yj*e2&4{vWPV8B}Q;E|g_m+tYj}mpA(L`yGo?9U=a?;GT!<5Z#qelf74w`LKjUQSh)s`_eR^XM3i&R6~-M_)(sc3!r zSFc%w+%tLVP05X6>;rzBk7?OT9r{j+knX&}yMeoFz}`exp<-F~zomQLgi?*}YPNEj z_;wx#)qqg1s0*oU?iC5!{^)P2=9wHS1D#)?1Hl!a>?Ep&(~5^wNCFW@Qr3Oc@}^n# zErWL;VHl#v?wYLZ1Da9D<>u{>xKOVEWhWclOPkmxs!Zr1%fWFmOH7FEQ`Tq!qNT@8 zQJ$uW>BEDXBp%dhA%|4)70b1&l1RNJa$N(B1{{PYPCeDBRL=+*jTGDx+B7N@{*+7P zb+%{<8K)qKjK<3R+KARHFO(O`@rXkWO?#`8+Yxe5Mq7_lA$dOV(MBVDb#z;ktQsh~ zz|vCac*$$%y`5HOXqmd4oEdbUrEZsRzfpO{VcsW3cpAuf$Te{*LPmAhiAb1nl}x-3 zi+X)8`$>gy(4x@mp|plV(j9^&cdiNvo+~Ju_93TZqPi-;#Z;p-#F8T_-^%JBr-cWL|I_s=QWPwSS6B$B1+jbn3+4^`vjj!l_fQQ5t zmoL|enLrKA6d}D{52@tVWTo4RVA& zpoXd%Sn4GENM(*jPC}Yx4WvaPvRs1Z4f|+IyOephut8k$Is_D2c)lj5Vk#D1OzKC- z6-5MHW)-C>cqqginM9m7sT*On*t1AzMw&_Vf2yUIAW&PYG(S8fVaYy4fKuhgQnpmf z%C_D^tV(UhDkO`WLs4xBr??f^)uI+B1}z@)^aPQls}_q!qOk1VLVA$^eWQw5HXdW; zZCX+F-?ccRDo!9WlWKp-#l-{(rXza5J%3Uqg{mv@%+*i20oI9{Gl1kP2dpAz4n-Y{ zN`2s7wa6?tb(;1pVeLQfS=90*;1kWj-m8iyXBzHkAygm^%tNg-Puy82uNGV7B5F z(x8nc_*9W3%JQ0NuNzx~RHZc;DRc*irL3$%?hfTo1ueE7#BGJ6;;oVgFBY=XKdV0L zzZ>H>80f%TGFp##PNnYHaRHGy4?U~KTy&97#)R$Q)jk)N`;M$~M6GAnrMX>^G8|(`NbVKB=CeF?$|g@?N!$-{CL(bw z?D&DT^-K(xf?9A;+Nol0Lg40KCLxSJEWRTSpWKCv0)r}h{2oU?(s*fNyP1%cT&xvw zYUPA*m=h^0QNBWwSp+iQ&4n)792Jb={&WQoFsN229#6rD?mEbwRHGv3PKBmg!vF;J zpqCoLzww7FL-syBKd5Zv6FdYWPrcTo#+xe}YY$o3P}S)Bq!ZzM`fMRCj=q($Cv#UN zm3I|A*_9-}onW}PQ|oa^%m#t!vg!;U+puVxDlS%hUy-}hIdtYlH6eO;NgWh%bGuiT zaZgY6YRxXTwqsBPeT2Ury}EDcE*`Zu$%mBbvpYq+DgLa5C4c+57*7Pi@> z?83Q^tvi#d|1&PBkh#y{M zEZ%j*KK@h9rO~)u<4bYY!bj+uPqFFqhy$D_g`3LU!)$o^J=%-g4WB`d@==n0?}3N! z1KfYO#1{esxDqyI-2X~+A+MitRamCYdXlHtP1ChKAix}$8(FqT7o!A0>kEIeDb$ds zpzg`>=?Wj5aIsN6VwDft!Y{H&{@|a|y|QL1Sa&RDu7xt6k_gxgb&vL(A~LmFR7hDq zNJl&GW;&ARy$_v2hLcA)H}Y-fs9}@Xyc>2X4Bf6gg#maBfd!pS0A=3d_Pcll&6!pCp@tAz$(Pov1xJ7t9-bMPsi4Nyo}e!p9*oO*v%^o zvqJ_3?$T_m>RXoPbVtxuF%GzINQuufH|(X%1j^f^L+(!5Ank=_<4N!V!p%Jf;|nO8 zn|6+agIzmQQD?MzyrZD0~dEcBIi>b2l8jv!2YI&89&2*P(_z}{7 z;Rh`q`PtWo7^pB@5t?++=w47zhA8at^y8Ei;72)=@+|suXg?S+Fq8*_Azk456E)@~ znjx(SfI%ztjxJ>|5C%{NH9;N*(z@s7kz<(khzC+=ef7q&3=2ySD-AF7T#iXX?!O%A zJA`+w?dCSTIJmq_g=>OD|knb|Ca zWQ_c57*^hAGs{T2rj%E4_#|Bbwa@XbGVJ6Zd}==rc!%T8v#9&xdfd-B58{I>H`avI zdX%#ao9n{^goNR@ttcJaCr8`7&=cb);(_!SC>?}0+=(+A9JO{pXI!a-gYk?FrFw^X*Fj52C~8o)duUw!b%<1>S+W!N&@LGK&i* zgAWe3b7mfW%Rs<4%@f>QgNdaC)@qm;o;P9LSzfP$GzAzBBzOKGU&9|-#_z@FnQ5LkCPEZJq_Utt9xN##Y zRmfC2zLghxL4oCFq3Iytc}$xb)u=<3*{BX0d*5hAYAn`DEAASWz3uGV#Q4#?5Ae;5 zMhITd`?DG6;rHNRX~2hB2J*0f5GT$6O`F$L{f$^fb)!X=L%Hhjjyn< z&SJb2=$d)8{>1h^xiDTLpAwqd>i5sTdT4yF%KoA~MAuB9&$c{N62*-I@}zA6d3FTb zlr36woiuZ&ce+2HU}Q^ep@a9>^I1-0W}pV20V!2^%WSl)UXt4uq?>;=bWKeO09rt=LQL-JqAg9VR=Rpw-lmEpCaQbu%C(uoq6012ECX>UH$o{Qb&OpoM~%`7pTP4PA| zfSlpQJRXa>G=6V+i%r!^TrJGLOP6$A9>VJA)nTbsbu@3Br7Y{6m%J(6DjLi z)06{zfh~PGVDKr+!=bt^qmfc|sJ=0b&+$oF;~|l{P4q>pMTNUi0aZ2=3I|+vYn(G# zTX<~tMRfgFzSpau&ZHh8Hw`CwI$(|W6g`YGN?}75%ep$&NKg^uhNl)Dh)I>ED^o)F zV3SF-!YK9opinuHxmv+K0aapVp0q)!Udj1kl^M^QN^P>5i32cYf%&UJIt3+FOs zJRx$|-}}B6vx8n)emnoctBH($uW#J{T_jGKF|LUj7;qkK>5P&Osg)n_& zMvBK@t7)1huYGQRzjdzlmbCYHCM5Q8)$~BSof1OYT5djgz}Xe$uItqh2I=}X_L9DE z;P%E()YN92nk}xk2eTO`AeJ1;@^~p@krRBz*eQlm1Y`1S0RcycZTEQ~g{_0m383r%2;XU~3SHVBpCzPTcKtvX*+h4si zqqI?^6YLGTuxp%37q@|Obv!Dq+2f3@jFm!q;_)g`EVq<``eNbf7fHYQ`#dY-Q4hbD z;EhH3jl+gbDG z;058%vg)|g<-x3Iw6GCq+E%KdLz8EjG$q-{+h*gNH!15cScu^JRC&)iO!q^ZJ7P5C6 zG-P7fq=4z+;ZQT1V@o@fok|)rwJZlTT5t~l=Qj}sbuFOA5~p6VoC@y5tfOv7pQ;&d zS)g{@Y*+};w6Kx!i$-OtaJ~D1wXC=5a~Zgn^?b0s?2VQ+XET0jBa)=iqYLSJhQM;& zW9IFaeY97T6Ot8AJ>u&~KomkuUhai!7c0I_MUgWMbUBme1YGFTKch@lK%D8M)Dh8# z6IT|!3r(jF=*$Z8DTn;vKhK{Qaa#!BkD@fmv{rBYf`0fhF18t z_gVAglc!$Ad9J>Kv%6Q*H{WCv!>c&u&ET)#9G9o-t2oEYS8-^4=T5uv@rONaAJ&U2 zciQchZ`X?}+x{xfo1~I*`~|&=b8zrd(W^L`=6V%pc3}Q0&X>Q^UiDXTzH-%H=y~H# zeWB;|pWF7=gBEY_fIP3_lrL^R&8s*EpZfIkPxC6y^Pff+e--E7d-CV>+RN3A`V!4X z>#yScYP;>P;Qajd_D}o*I=#8Q{RO>>^XB8v>qVY&j0B_{A3y($zeIEU<6o(ke5FhE zTF~NG+G@$0t^ER0z$H~F;TgSxb6j@(Rh;8eU&U$sRh&C_xOKp*ICt)>)mL$TWjxla zIEy#!zux0V2VR$F@fB1%qz(5lNJm3{fS@a928jDLPm9Z%r=N#|^7GVk2XABN8R%hS zJ7EF!42P!v9!rgd5u2p+oxE%Ru7&oMeii<=Yo{Ahw{SgNlrTRxuk8dz8m~4>pO}M zSl{0uMW==6qiqHryLl~0%m1kHbB(6)9cnpE2sSoGdbx;a_1o>eJz5{PCTC<$q&HtO zd+FF_$480#3famLLTOTH)%eYt$ov$Q`!%fdR8f6IIgG}C^9hPyS4bU~FTKkabb$1C z3gvAp^4n4&meUny`#D{6lFv0;PAGj2y$IRkuOo6BT6x_)q3TiYp*taA{nw*t*IKUD zg)e=H-7wzGH4M~fyKSbB$WHN%?3~gnQ3~4@Groc6;HnV4cH4GG2ish*1f5e-dBXPD z65qNjoWo5NiO?)RnbvJ5 z=5~=%T(B{QX6X%XLp{TbE+1ZB*kSQUJ>t$dBepd&v*{vP z$#!gST65GM$xLe?pgu?9P}t?rPw`|GR26h~&Fd=6?5W`w?>uA!5h*FaPv2^;ZezQd zMRfuuULy}ncAitSN+qmmYSB8LTplAis| zr2EPCRpijckUy4`ZJsAZM6SqQOat4*uGNx%s&I9h>5GncnmP50!lTc}>b(k(5OUas z+E#W_Q>eBAp)^gILwD42Qszo3MVZ1;L!9|d5HF;;YS{Z6C1f_YeP^M)thzf1yUIe$ zC!{dG4N@v6j=%oxuaRj?Xa*#~orx6UZr3b>F*5LxZO3w(?H|~P7T{wVkkuvnlThrH z^<7=`o4lES>U15rUh-(YBsTm3kC))|Bxi$+A7kXg5OeYZ=bHJD5Gw4Eo zoq{wk4hfXg+#8T7HDeh_c+#s3T9Zo634jIWcY)=RTwx zqrA=Po9G|s&uwE*QO94iMj=X(j`j^LRTRnoVl(Ii>fQwlF|N;Y}3 z!vFvFuUk4IL&*M*AY7VG+MICC6d@B3q3MOpNpOPhjc7;ByX<9xP>MO@N+FR`C(IDg zqMxj95G~M3Z;k5NFb62N2TZss@wx>Xi6>;PpE6u_>}46ZP)=@jk+e>@4H<`3gBTb))>lbjJ!N*dtFe_z%&W)9iQQL+@B@EhO1qgUJ1WRG#MKFw6zc_Rta^&t}223y&5* z7KS;HMBDeBToH!IxdO{qEit;s{Qk|bSo;PgxYL7Hgd9Umf&BbxPU{B9Nhn0#OCdpp zq+b+liJ+6M8#({RD1+dwi-!Z#O$@@fB8F15PKpMS$vxAtkLSd zDK-2f;#uUwUzC`Hb<|Hb|f;Ug7po@AO^NlzD)wOkS<39x#693<tc z93$MH1)bYQD71k-v8Lnz@V;P6Wj?hi)U!$RxG-X#p%nuk$Rno<8!BfU6Ik$CFEjxKUJ|IQHJKqWdo8_8v(DI z>*ws?4U_X76Yr@})x~m^688k+F0YvYGx-{np*|^g5hqn5Wn^2y zw_$_FgIvDqbfmf)*We-NAp;QNu+h+iw4wd3QreTX>{%?lD=1(@MIo5v63=n78>{Yn~Vx% zxjzix+-X7iN7?@=2xmdPufpRE3py^;vC)!yzG|E7koycJOSNpr#5IskIc&~RICs^y z!DkC{9u%QH4g4f;LRjnA3+{QO3i& ziB*G$#(6c{$oj#cET?bnA|z60hq)J$w5K0|A+j^{1V`pektLOoJto>^g4cWm3w_fi zz{9P>GzxriMf5Fqp;*+77;5-GzKOI^J^+4jTTmdQMUzi;LQ6OllE;cv)(T4M%Mxd| zj;B_7iBk^%)9EprW;prRu9-z)0$0jJT_~hlad$}JQgD80M}|i;$?U4Yd6XWD3Wc(V zu7y+~bQnf2h#(y}u?iJ*EvlCU4@t0@B>|D*&}oXYqJA_4nu94Kr)wpB$XzD&gu7Dc zogyUBOOwC+Ke;ER+Ck%n(M)CxoQI5b%A%w!t9?YY1Xds6nYBhdhNokYY>;dMI@3{c z(PEj2SWQWuV?lz>mcEO;MQDlzdXlHP9(1jaPlD?LMJkz*At+yz;c-GGq@lu|)OA-` zLLy7Zx_OewprB0)-eVz2z(G^gb)6)k&lF)n&-abqaM^ktB7rMdp@>rZX%eit>b< zWTFi}N8Ys|U50>`9E2)1YmtDj7{(!n1{_5+LJ}Jh8yV9hsf32gl)Ec#W`}Q)B`fh+ zDs@yvb-QhNJ!Az08x_M%EnZ#_!3BFpjTEFyBqgaKBM1x`2HGc8DI`R5bW67e;)*cX zQAN)aM;Wil5WGL+9Kk0*B6$UgOQa;3@d;bCV-7Xdnu6OGOxXL6 zYx$(c%ULl!ktSt5;KLLh@ZtnTNDir@Fwn=ZH7h#@ofWnzuBw5qqztA994Ya-Yc`wN zM$f2i!n%f|4_OPDq;`|6uX0>;b)?}_{h5$N^LAYQ-&I@8vKbr%t|z)l(3a)NH6&G? zghDp=MP;;N>_SsoLy>t$ed#2foMh$qr^EmC)07$)oIBT#+0|+*RCVy8+VlkF31f_0mJu1M=( zpeZ-Ti1i`7PYUwT3I(NH+5Y^qDA#iMw3qvsWsN`*kCaW3a?~vC9gJnK8za)1t8h_p zQ0btJMbGtPUQS|?RHP-dVmp+U4VscE%5sR_8jh2YDK|-EnwvGX^+*Jc%;MwH6zO7Xmy{+7+)fv5Qp?a1L_Wtl zR9iPN6;DJKDN92cJ@md{)9OvaW8OJY;Wri%G!Lp!29=l?y|un&l^``Fu-5at%Etk9 z^r!!>hSqoiM3(O?R#rK!r5q5I?jUAIdHO!$=t7BGxF~(&)9&&Z0AQyv#kE4y&+(I93HPMX{Ro5Zj| zUJrk_dp1N-CR#gSc^pivT}iz4G6@!6ggnC8?8P{Ilc9J$+BLo=i=EN~ECuaOh`V^$ z$I0(=7M?ORoB7?ir`eZmJ5Bb$x-tr%y%LM2z%We9(5@d1H)*De56~F&CmwN?VvP?#+%%O zc^0r1TtMC71)i6(t!36bhiV#X7?;x9*uGzDFlemd{~~*ihT9Z@nHYQ#fu(u6Nuv+@ai>;3o3K`0l4+3>h;v_+@cp1XFHkxna*jo0Sb)*hBHl zK>D4y?RVquTEbzRWGueS!5^THkGKyPS>WTV($rFE;-d`0r#L31GJO{H8Moa9w5RM* z`!C+)x!vxR#ybTq{l>Vmj^aEvOcx4xFJT9BHFSLBGqMZ;U$orDqX8*lu;OVmzzYpV z9?ex~x|GK#Bxa|3H82EJCinxo;Pm2&6m5JOUKK%yq+7<7ZzXwpN*BsVX>wL-q^%vI z!ya@!28>d!3pfmUYe=n!D^(hkRz-g22a{X}rR>QVCv-WCRX3_0;#~rLKm3?)I;Lv} zKE}AE=A>GAGDEPMDUbDSs|cWLER9ETyhb;AD@eM)t=H?xj4o^VzI1@r{H_hYHVg?V zna1ziI3U+F*G4mZZp_;`3Eq{JgZ8TiDE6`DE#oaZJ09h%r-eV$l*EfGgU?J0t+(yA zbG_%p^*6ejwj*mTZd+U%#7C(0Ft#lZgq0(YkhKs4}Umq>5FG$A6;0eB!AerBeWZ~sRbCPWhO zKs_O*H@O*(9^*&b#UZ*1_+ng;>ztmHK-$(*J3~_?AFdnoeJ!H~- z4}kORYV$o)0Y40T3E(-8y}2#mH|(t`DL>L8;CYYJf#+wS9urP<-WVaq?_SNNklA{) zAccpDQCf%LAQ)`?rzCjSDz}Ozl_XB3wM>A%yaQ;8Uy?=~s$#vg% zZq1#3v+Kvzo#E_irO?KC&Efimp`G6K+Myl&ai%p|Ju$T0Trbvy11rtdCLjza7}1Op zI6+X;9Ih6WV~psvEf{vtloz&OB=E+d5gV|P-p7@qIKN&3IZ*%y8Lk97fq`ISD?xrR zKR(}6xBJaoE+yOfBWLE;`BA4%ojO&w>h|qheF;1>=aZ)4qz(Xg3}rRe`jaP}fKQ4O zU;@u~t7^P$1Ky2+-&dd0h%xZplV7aYoQ1qKLuVZoFL8zQZ5oLofxW$jZJ3QATj0kL zUk=Y0x(Yl)8oYPde93@UtPRTtw&5x_1J9SmFDdZ*{dA$gTki~cY#z_v@lC_)V8m-C z5AMGlI32*8eph^3wCJ9G5-3+q_+Eu^+O2>IywSGAAQp^@H8%qPU;N9;(8uMaR9MkM zqi=8w_mhHwkZG{N={w@ugP4CCPWva%)89NO=>vv4a)tT6HBt)`@I9vu*R052$pwrK z5P#9O0a1nxa4Kc{ucFN|*DYYo?sSoOT7+?-7dx4R#xf)ROukpi05)Q!FRYU%tkG;M z*;8)UpYUsFXfX+ZH~1zWFZMdu_uy5l8Ti8Xk%wU(yaD&lg$*NFFRlwF2|f24g*jiC zt7F_jskef5)io!Ev4+I;$rZdNxU8-@^65ZEJnwmA^ZMo=uzj~=)G=|yC(MO&L z(@DUlo1~?j4^?cBufii7mCNjy5BC*S%`{+RzU`{xo_MgXoWRJzOBA-43ljCgF>w?o zS3GZcfebynPh&!%rU;lu0Fw!Nh*NPnI)A|GN(2_egIXyK zV0Rd<)>U}+*19qaz>{0<%w|`cO5C11f3P8%C(q3!w^zP!o_KjK+!bvDGWuirtJmb( z@$$VTr5N#4&B#5G3tT$yg7)LGg#pu2bdUNFa>nBh!b zHB#$@5AZdx&I`W1%34pnRH}b-y(TX7fUp%Km(R1$`2XU=Z`l`@*I7FE9r0}Ib@l|m;vgqzMB+WOfbW<{C1r|OY_P`VzIa`1Req{-!%Fl-Z{`qC%Uas`} z3}qLBOX(kc15TtOD%^@xjt9{Toeh>@5Bt)<8vEOZYfonlKJg>BG|MtrYIct$6Ljw z->fL`Kx4K9MN=TGx@9VT;Pa?((qMdT1^G;L!v$QND0g(Jbm%41JcMaH=b7aFXs=I? zL!yVUge-GK6Gy#$S0#pjz%4Re^4RUaD8Uwvn?g6FV1E>kqin}*wYeQ*6=vJ6hBaq9 z(vCxLYb4r+o~^XoN@;bD)h(ZqQ|X=s9=tU!Q-HcJn1LAbz|I<>x#`QcU$(w5dnb%z zfO2W22{Dt#kTxrg+hz*47IEjRjh)u{baI}3I{g~(K$D1Eut^*2Fc+ULQ4@UcZ+Y~s zIP+K97MvI6<5ryemRoUN(^ee4^=0)Lw!i4@FQ3udU%p^h-~Z>d{bd-m{pI>yaK4F# z?JwH)vYE}aaYa}gSL#OFUt~qwUu5Nx?Jtzh?Jw^R_RHG-a&7IcI2#{v^QCT@FO_XU zvI1r+&hi{z#?3SG<(u*eUpC)tTX8mTk6Upb@rA88Yzs;&xfSPgyyvHF#W_B1TX8;e z(0m!+(DUuSoIZgMufN{5;?#UY4{r+^x8n4D+lte-tvJ_hE6&gT+`-rWqFIDGqG6p~ z;wK|kZ^CK?S!j5(sx2yb(k^Y--#=fg6WP|dW^j(%U$|j5s~ZDmvvFevXV%H(Dd4O5_M%;X1DobDZ2%WxwqoQudajj`Cx8n5L z7POYQ8)lc6;9IlVYxk){zGU6_veLPufk1xx!p)!KSKftVL(jY5!tI)O=kP3@b1)Z- zJ`Z6tiA%At6}gXx=J_an1PIqll@@_-IJe;FBZ1n@4;q|5N9q6X5Wl{O`fz6Wj>`Ra z%o#KM*HieQ{5Ekul2abx{{LY9*POMuK)j<4>N90;Uk#56f59h(a-T~HtG&j6Uty~< zwJXk-veCV0$8}iu)w;8~&*QvbqaL8|{Hh<$&a~dWRKm;PlPiW2C02cO!?f)8L)2Mk zq4{&h6U)wh0j>qg9jyCNsq)^Y7dCh5c7AfgIE~T}8Qc@wTk<@5eC?$gd{Be5%$U&W85MI|acQC}%rvE+82H>S*~MdGr6sEmEac^S^ksv|T;KbaG!W$^PQZRTXe zhv8FXlt1&g$xZO!6O>LI7B%YS-=3u&;dv^o6sRMGwCK6_J1NA5#IFo?VndZ^I8ti* z491rLA(}WP7KyTqSFoph;ybf5yAp-Jye*R~N7i4YD<`s`|3#fy8PX4Iqw6wraPgJ` zk5#vRDN6?#?R?ln{^2#o0GMUPHk6tL70=mTz%H?~kO(1`E8p`}TX`EBbPyho&8w(P z?L^44=@8_lal;D#wK3^a&%GTf9E5Efm~#6m-Xi2?F)*gAQwa1u6r#>vF#&C;eH-y) z)u0<({_yBh-23!42}JU3y4%T0Z7v=z#2#Pe;GPJ>E0uC=}5dWG-98S&M^ zj)GqE+pE2yucy}e&ruQ=Y@cuchv?@-_P7MaI8#hcb@qmxaw2g{o8p2chx)oBAnuF{ z1{X&3cpH4Z@4ZG_Du)xGX`wZ})g`5t_ETj;`S3kb^p(u;VTpxv=)ju!ilfkeV!+6o zW1K8!#8+~x1Wo3&0o(#Sg<84&H0)V%6vh$HPv#Z--oJ&ooO&?Q><~?0I1CchC{BhA zp*C2t6`~D(2HYiBH_XU)&I0S(d_)fR$Xk)NXo$bFu`5NAZ28XEG+%?>b}v^=_8g)i zuB5_$&2*r0a-ZiwmKH(PxRC9tqD)hA{!*uoaBu_-&!DD*5f6o$?5aqv|D)O;Myl{d z*+!~%O-|s|MUORsKczgkeL52RUuBp>LFGbSmYlzD&O4 zj+E0WSJ-u(H?)z1I_CX$2BWNzN5WyP!@<`E_I&(j!WfF#uv@(aEw6*o+njQSM>2f*gcazXxUQm*zI6%K_#`xAL(P!Yyk zhh!|6a)04%A*ng1wYSZUQTh{eZO zagWB^HS!bUkYjMToJ$u7S|x*B|JLvNt5D8dIUP=w!w=ESIghEpg76f_`(PenkS;2X zz~0%)ZE6Tm*i+q##Mf@!qln?+b9fMZKRo!Utk{BI;zYD*zE^(zF6>hadbV3)tdoiz zERSvT=^Ux=z~Y`$gv};SIXhq*W(v7TAh#Urtl@iAWV+$dm8wXRsnx@7-+?6VfsvrW zSDXTbNzn1!G)SYvnXM>Pd^+@NJ4IJ>`dO+eiZ6JQ>S98zxT!HeBO#|mFb!>j`g{1w zw7b5yU`}$*;&>i=D4ntJQ;GXaNMlO91Q1<&^F)1O-G7D_wdy)WrdiqWOi3ON{x-Oz zrvhtLS`9)!>>~*Ic*+4UB%jADahF!%njjf(NW6W%rw)xp8Nwh0m)1e&m*(1u$OpJxu z8dlaTID?yprNA#9noD@u>Ls>+`$xq$2%*8|$$11FMQC;U_h?q8>!Pf=8>a#i$qT~= z-Y)l*;=nY++G(kkdhowb4%JHm7)mI;!WYzK1(g93ui^R%(L0G|zLG?$rG|1Qnh=yP zPWBVaa&l~W2L&l0ZVkYVmmNMaBbunFC#dA{;3< zhWH2-Qz&^~5pYcp%~kfA^)9?abOXeay_1fUGg7=L{6@2;C;S|%XjPj`igXe!5WCKO z-fW|cG4@a+5SXpdB|<40VtgkHKMIwvObXlpG0kj+!lMyf_{K7)oW~CRC;w_2ipssw zK4^{J25MR;_96ZSB_ka6D^=lKvwLc5LZtRwVvs5)VQWf5KEW~9&WJK6YLUWY(&lj$ z;VC59mEH=#t(^~X3R)s9z1*o4b1eZ3hCmwF3~Km(6gRTlH>q+sYKvrKK{=B5da{0p zYv3Rq4I+^WESwXX*1PfDsppxWd8W*?D7IbC*JA(8Z-?u~V;6Y|ERctYn?TOaNZibz zq0Q}`TZEAZz0je+zEoWa!1$95T|0$%fl61?s#CtKsiT30^NC2!ViZy^Mqv7>$SWG) zJTS`exWw2>lA$LJj@o zqws0Wf&BRIF-?V?yc(yg$jWmb*Dy!ERUd6DOez9|5{gQLW2-3X2z_;{W)8c}eHB{O zfq<&S#muo+55-DNDmy}WdaH=`DY+d%*m(aQaAv!C5SlQ_=NDQ+M z`9cj=2Oo3IhW{mnP%nsZlX*Zig z=yBSIkW5WJ9!f<$qV{N(*^mB`X|!*UpSC=y=XlNrkAXy{&{kO^*&UL@bvsEY_lzTU zN8V!4r^PI_Ya98BF}Kf?BEibTrf-EQ@rT?8PpWvkar+(SGpvn5HYCBhoT}FW1t;Z!=RC1V`UBxM5ZLA*@L3kR=SJ(61j5- zJk#CD#*ZO1ns`*~#J$WX;n4@p1|!gDTB9J3i1~B~`*N%7G%B~s$t&CN#8^&ubr1^f zaJYy}M6lUsY>%#=1zF)LNm-`kpuW`N%CyEjo`qcsnTRkHZa|)$$usTfvqJ_s_uY<; zDAPGK!Ks6G5#x&om{YTw&TiX+6SCsqoTXKw!4&k+XpGXWJtxog3u@Hi%B$_j&iA~g z%-WOsJ>RVrYUm>Oao|V(4`=pdIg_U}X0G@$dH1}w<$_0rS6pIL2LFauu)@)B=E=#= z@FWaVb3Z+0PJNrY!YR4OZsVZ@8+0~&ZDo_09`L0|>Az(D!o_64Wp=139P5cPx{3V- zuIb_T5q9Q9;m0fa3?&SwZ6v(NnePd^YRuF~$l<ay*f{{LgSkwKDF)|t7Hf0ymtMf? zzA{C#{YcyJ_=*<1uCtJrTmHg7XJ@K}n`G2&r&8k{$*J)RNd)pV$5T1OKki0!uOY!} zg3ia13p4|9_?uL_rt&u_y(X96|LQe}R%$3=$Z1lI=g5ankW?&Q+KYYr#W6L~_ia-9 zqwZ_DqspelfIE<`n!)OMl(La{#>0`Xv0I^b9kp~=Q;sUA6kC_ByxEoBbyZE{E4NHn z0U6Y*s^+*~r<5Chu$rH;wg#AENokbyeO*sUn{!~b%q6oaDGek zru#%P9>m*rO?y@9<7oA-W9^_0_WOU9@X-*UHe}wA# zC+WM`-e%ck5Q${_^Dh%`g?Z&QMshs-)U)VMv6ar%{{`McZF0gKvljQQ0|U7Qwcc{#Re! zEL8y^Tb8{K+Zgx^xQ&75!RqN16Tzf^d7Ar<=m-VA+ds>|ANSgCRCw9F0&n_;1K@l( zF<0Oxr0R$q;+%Yw$rbMJ?Mt;VPV|2&OT;DWh70=^A=WJe5Zt6fpx!DHY% z3vYpcsRiB?c-5;gV4qwC-kdPOZ}0P;`vZJ1`$AbHHfEa^c+J3Q5qS9Yg|FB$@b>Q! z(&POg(wu0AGRVcslft)dv7CZg-6kmUf5w;5+#~Dym*N30c*q?g{D8sXtG~M3;LhN0 z_=YJWBfr0Y=fkcZu#Y_{%#z2Bkd9Gz!tM*c;h5@y-?t%bc_Pe3((#dcw1DIrY~O4gq?%Z1bU4N+rU4b zz94_@r~k%O+NNIP*wvFzBwUtjDjM;o1n>Wqz zxIgoyv5N7{>G*b>4MSAR9oVUw%b2EwFn+a>(uf!}G?vM|Lq!`n?l-QG@O!A>3Cm!0 z3fYSjF!Gn%BBX9~u2uVYuu=*;$KkU|Z1D07*=CMcU9!?bY~`sV9J<)!c|V{wvF3Qz zgf(@mo4_qs)`O_9xZRe9D)C#5)K4s~~XAn#fu2efg6KBcYJqMew!XK!UGKY#B* z#eBnEm%cE?y!ETsLGfXIF5mbg5X|xJV6)jUEQD!!_AI+o78TYPZ@njs(@J?G&pPp6 z{pqzc;-4Npovq)h_BnnGj*&dbFm~)*2Ep(Io=E_Hw=sdoqBj*&$8GxyA4;v_{Y$ zT-WluOpKK7+(urEdZ29vu!&vOTIp@#4~A&IutKaeB5x+vquS&Sv)T0qUyoHK_MFBtK{wd(?3RC;lJoj8_DHz1b8pMKLA5oFxE;psN?7YjyGMY@;?(-?=t zvvpky&(>@Br$=9AGe@iNe7xp8dJcU$6BbpGEUIES-}9wRqKcB8yqtwN8l6Z}kGhXj zMcqXXD9A5?oH3mt>pC$+usef*qmTtkMk&g46EYRx{j8mz8%Ta{bY{DkgI5bm$@ZHv zlaL68dTN74-}@1ll($r*PWKOhhYHGkl)E9wjKW)SMya95A_Ls{K-v07UHqmJN3s~D< z-X6EVyshmoKk>;=zRmWR*M4I5J6HFgeO7OvS=AlB!~1O5MDx+@<{9wy^mUvgW} z{kAP=mD_^k%eWOMw*|=;ZN+)_`Z%`*z5DK9dMnQTcX!)@X8+L-%BNvyaXI|4^yOh( zw!VBRTQan*I8Q&lTIJhHcL+$<`I0y*j|6^ zYwpjmTxdfNA3SZ%pv`H%7k1C71X{r7x%_=g#^-QZ@kR4H#f)NPk8i~Rr!QLcD_z#( z%jO+fYj4Hjg@5PulJk|VI29|!&X+V0qswbJZ3}u=n1{GSm}_`p*5%Dyco^m-@p)M( zf3aAlm4$(bOG$1Z@Nh+e7ludPmEl{TfxQX+O$Hj{?}u@IRG$bwK%-^+Bc@tb{vp7( zIy+)3pgR)2!~Fd|wSP3X>#j7l#6#u=GC@$Vi~G;}^@B`G;S$CFM?i-rLnM zw{l`Lt~O0|^(RLU%Bz^Jfu)#pc`!ZYtAYCq?r9uV8@|fuu$4%#*7M1V`~Iv@dUS$u zsruH~DX!mj;%d{8aE?63hk=#rDuJv(tzv*1!9#t9HT;BMCoSZ1a!{ri&Gd77#bV|R zR1dPEgvX!6Sj?)$&mb_H&ruImu{nuher|E}qRI?2j5+>M%C43(nlqC()NSQzX*05h zHfk%j?amnPp2&XuJTJ0_;m5SskptAVH z8Jm|1U323&!UpbfMn~?v2D()1)F@@q{c~~UWIjOb5l8|P-3r3K+PkV&WL-$G!j&q5 zSK;)a&3H_SZ7+jBp&ss^b8D0Sm(rZ0R%J(i@0b^4Zj=FhOlKDELv;i$S*)N``ng)> zxGYh~1cWQmH6-D4$jqH(D!NEiISQRAtio@=@wS?~qLHNz&rbd=1(ZWI1;-e96d3WQ zc%rF~H8SFbOJ2gmwTh*JhNcw7SxOIuu)}AyOj(m)z5uBy$XJ zZ@PX-#+bvZSaq?qF9)Y&n1!8H64fiHn%DH;H8M!Snlk!I%N^!em7pEZlRLb{kdbdI z3?hbZj(q$aOKT+X%{KO3HpNrkH;gY0rrN1azJY^4ryh_1-7-}QIlJp7cwVL>(I*xYU5Q2ZjHaR;8!7%J4^w)b-=;KJx*RKx8G zXRped6VH6Zq9#Q&ixz<4V^?h>1&&_LksZ5P<-jQAm$lkdF+I_=gq0}6k}>P7I1JM= zSyPR)f2ES#!(^Md`xR!p$%eW7(k-xsK?|jnzW-!6BffT(;rCUnT@i0iO6f3&SFH8r zEQ{3R(#Ivm{%D30J21Vij1rgZM`7d#yAH#!-B)W+d*>%?1~H*zSlb!sHJa#1xEQwD zW5#EM?G5j};zFqt5Q@oI{Jnq2O5CAWTvpm`H@9ciT2*)3$*x3^YZXLgy6CwCaty@@ z8Wx?G7rG<6L$`Hdf=;0cD~$e+qX51~{j+smNj%@p2PXX&msb|fm9Po~B`EM;vUUX2 zN{S-N)#XtT0nP^(ukpXZ?z0o<{`;ZqHMz}nDVnyZEzptnn$wv&bA{zqB)kA&Z zb!mihIo-WXYKa&BAGA9+L2xWO66Y9UY1qrbl7eN?q_+cA?j+;%v6F`=R{}&j&d5QL z!Ep2}vg&wv7sI@}K}O(&7)AVtdRbgeS5qe5n&w(WpC`g4mGrFRU1lqBTJQ3SWGAc= zTT}usS-&P(r4iNr(pT|(B}}8bs{A-Gm`a4RQ}FC0LxoVu{lq`YQ!b0 z8nPl|b#?S|U|#4t*;R+;hJpq?19d8Ik*cR83pp>cvanY04pc$FO;bWSF{pOvaTCcH zRIQ|p0nSlnszMxt0s353Y+(rzncv$xTcL0$=`kduRc1-jVt(*|&SDbg@F?JHe7Hng zB`id;yQJMwnk>H6VRf>fYf1vQ~z`IF->aN&gJ zy96e&t{qfj1jw5IR>HC}+j!y%OX&bDIfS6*3yOQMydM?JF6e7sCu zKISQ(IYtFUq?BBp(@oIKL&-XEbW_=0K{+LhVVLC28n7rbh;Z zRXVgmBtJ4Ykc$p0(Y$GPQsg@tb{7*&;=WoY!a1@k5kPCP+q?e?Mr(>NK7xJ)Ym8B;Fp_^Zo_W2tF2gMowAS8Fh_*w&+BBZ!JEbA#TFpq+1z zs-gMNhKl>&|FqDf5VGO}XE~m!@^qk?PB!^%nWiyTOb)BTSb|M%SkXKt(e~Jut07m; zYKC7?-9jVN;CKlI9lI7yvcpH^k@gG4HLIKqghQh3_| zlNyqis3aVMY(Or(swA(LBnl3=d6g?g9<~d7iO0Hc?0RaMhJmhW5(x<#%8&u}eR;0lGlCG-T=if0fO+JP{tP}6! z^1B#yXWmx+l`=mVMu%8-G1U&PebOwS@UjgGL0kWXTXbUdq9Otm(u^B(g4DCfD6hnW z!;EArM>zp?htRQw5{(*BW3sRegp#pzKna{f_O`}_qXix6CPZVNsbHtTtYOjy&BAyI zlFaF!`oG7#7TOp&q47L-)!m>rbP2ko_{ic|Tp{n1RyP z7jkl~(0Z{Tyt<&rYq2BL#4&P0b*y`i#jp~H-VbBL5zjdyvv+-p>>mxRsAklt4)JI8af0w@krOqAW2smGvOrBAb%~zxjgfmHp&}k9D9Tr z?^C1!SrwrPy4bq&TuPY!6 zsTQNs4*8C1aT0%1_EU`5Dkmx#g2T?f{Ebv`7^ioFPxX->+-7vvw8KCN4$Jdf%i$Rh z^q%m@miM+#i#kg2)q}pG(=|NZ;`9zttvxp~hk1^ z_+RqyWFg>{%g4*5O)eeNQ;j|yO~HUm$X=F#-sHd%%0;3DLh6~{2RJViXg?B-?F3do zZbVdmZxd-nw5DX$aB>(f#jC=D(P#cF3PV<~WD86fjHaGJ4R)Ku6e?*Droc}))v$xH zHtKLlcR~}=7aD-9ceFXB`@NRNtGuzJ&dNM?Lb86#Lg5Ynb0@D7JZ7BzLJPT)+N#bbOU2lZ5sAKZq;o0 z2mUbfPGUe}fxi9*^k{>Tr}2&Tj;;s^c<9!#!h@nRyqY9J3x>L~6huCRL1BLVe5Q;t z(N9?gI}7L%^mxJ@p{yu#)%MopJ7jPSE9thB(wEehQ3`QaXvD@=oRdJnqxy4j`VzQ; zPng9D6=Yq_IkX*ZN(+a46tvwA4_l<~3h^mhR2zYyY%Ar_@bn2CwTN>eeZcOyr;M#Q zW)(F!zCIm<)scAz7TYTQ*FHwvyTc_bLvO!rFOGvUcMi|7r@mQ&c`J_1__lU$FNRG% zlg{0BuC{qPc;eXTdDeW5HV@(_p7Jwy)%A*!_l6B^b6&HcH_^QC-MkfsKrfCTct!s5 z^B&Bsw8IP%7S6cCYlMDQjt zl~?1OfS1dY%~EqtJ*m#nFV*nHCeKt?-FC9UmnSC6{dM|+6{|Gig^BRczf|g&O0)LT#=Z97aZJ^QuU&g?z101OWAMC<_W-BQIYx zL2k@S3%q#MP2Zoizz@$aWuECxnUvwpX0 z+c1Gn{ef+8|A=}ku?c@qxX-s5VT3vh!>Ip7v^a0jO>y9xa4 z$~Hf~{EmTVPTB>2#+0JKKhO_UavsfUx~;eq=i@hJ_}c@&cuRpl;*mKuKt2X0IpcKCJ zeuC%V6XaMSqy&`89Gr@#x=tt^8@dH8+f2+)T=J~@A;x9Y#!?%ssM(v559TL{LX&92 z4idme64I}f0vaz4XE^_afto2+Uq4Q2nX$)eVjuByN0GU%E}+NeR+Z1>zn+1Kkt6MG zEh!+ZKv!rssP-FhDbF2kGXJUm3d{@ZH1mNMeI?)QtXJBi%^YvG&9xDY>YA4$6Ah4|J z!~n{~0#3Cw44Hf@rJTA}I*Mh}#ofSSt$LXM8xYJw%jGh0M1XyKJB#}=f=Euah#+5Z zj#Mzu{tDBRNROW48Q(Rb(zCv6ajeO|OglQ0UkW0j`uc@W@^>QOtb!+PO%%`p`&P)%BB#cTc(WV;l_^?h~ z8@AeVy>6=i5#w~bRg9nEGXN)5-0WnhITP9o4^ z#Dn{BOF@f}ti-EoYp?lljS^#S?TOzMw&qL5U=s|X$u&OpUAev9RI(%EE!!KcY<(f_ z**l8=(q%0d5Uecm323;pyS^0L92DhN=`RKg$c(tVaPvvHibY=ID?cYn16mh8{opL3 z?J7z55UEzxyX1GMX*AnDXN1p?NKbo&a)<2tg3*EktO!m<$+?6O>YeisY$u5( zoqZx%i5`K`2`v_B&hZ|FR(jH`BqM3}9KW9$5P5MU>_h-9V>p#7GF~DCe_+bz4Q$JahG-vZ@0zCfjV9IaaWhY^^+v6>`f~K4KbMZ-|<) z*7O_Vk=$;gd4JAsl)W$G{l2tpjn#Ocrr3WtE87ONElMia#s-1UrjAdM5}i=yR-NU` zlTW4J`@g^MtvJiJ1t;bW-@k9U6=!w7%eTL*R_*OCtJ-PH$rmi&{_^g-W?y3KNyE8u z#q?GjmDctb;h)d9;&i9lJX2SviC6XXv|0K7Z?w|i0Bd^vM%(^kKd5allotK~Uv64C zxBC5~58rsdFF*0^zNkgHk>|D1m-arJFZA`MFKW?EUw(eWPp#m~JDc5BoX~m<` z7lz+ND}5&1yDA_2)0a6N_4PsS}9} zpI~M6e$%?Y0VCPW8$Sn65X>We;1`a#Cs+(_U}B80%AMMtT8(_JjWy!?UOvdDTG5`6 zyW(l`iGAq5LhFN}%@8@Key{@l@trax$At#ICH^sRxl!iZY8x|m6{T*yQR3GlZ3{?zmct>^5+e}}dX1+|Wl9_o_9+ej{ED+-(7jv|A=`{-Jb zWPZ)37xS*RGHNbQcV|<$z{zqrZGnyIB%a?}S#3EXgMk&ZIT*8HFSWd4mq=F@Twn87 zT7d})Tbd#QViSo%dDLIS!OKFjgEN&nQnjjW-dFHCb3?*BdX*5fRO?7+-n*={&YY{5 zNi*gkOfcfC-)O9+JHwf>X}I*}UdS{WtB!NVUWMu?jYL4Br3btE>%ssfq7l55=_X7M zh!LtQighYVr7ONEF&MFADmWEp$}vMw_G4xByP`j!a z=wNV4j#BWY%D&66SP?m6SwTs51h`Z9;KqdqeS@Du%TjHwz_Iz0!r1 z9$|f}V?&+U*EHgX@<)CzIwkmtC#mM)@EDE?&%wTNG{6=Nl|Tklk&vf$$Y{bH1!AQt zxMMDb4UKz{HQR-K1=Wh1KV|=kU3#!G2c>jig`V;HyDh%L9<91D`}6l`$kc}KUs(yv zEvji8mOIVOu0O+Uj@!o_alsD1w{~is8zs@Kh#i>+el$o-7CF2O(K~Ph2;K-ffsqQF z^%$&r(lkrM^finsqI%|VNr7-i#It#>+o6?Bbc5L1mKjp(d| zdZL&zwpZ9=OZ0PicTrR>`Lx7~qTGt+X=7yx3uwkp8&a0OEYd$&R0@Cw9UCo3`eo9s zfU?f=q-afb_`sSrerBP;zV+J>g+5dUgz_~W3a1Y{-)wFb5nhEnyN8F%du7Ey+92e# z_83E`z&|!c#`y0q$hcI)*d6Rlh+jbpU@)euPE{dj|ZlXq69P(SPy}!#v{g^ zw7)kLGMD|`{&l`Ovi;tUBQH6ES$b-BQ0n;S68Ge2=pJL}x=noFX}|^}dM{aY_236O zTAzS+a2H}YxnL|;L}hpu6B%O~^w7IRG` zLmCg|WRhs4=*|X>KWH!ZL8OTepIQC(sG9&Z#g4x1>@hJ|?K!IaB#6~2MGUefp=Fb9 z=4L>ZM8@nfC5R|rrAhfr+%O_gDhoP9liaawZ#I6*5?u+#G)W~Bw}XDi^%g!dZoT@$ zmU3H{Rf2Rt$i-En$Yn#)g~=+3zGfzQ0z3~DRl&;fx;otg3f|5B?3%H0tIp?XLN=rY`_4n1QUCV%D!oKZdtLc&<;`+R*5YnwQZmxeV9uq z*D=kg^s-#nO6@V0DeldY!c7ZljDU`n)t2+Dx=^2|2%d>8J*x{mFsEjFg7|>LX55!v2kF@dT5y&wW zCt*wJ155!8hy*KT3#{@e&%ff}edkR_X&^i3a;a=Wsc=+rlhGAO@pRwZ2&+TmO^_6k zCrS{P8sfw5$f^hr3gzbxQcA|dlOQiH@-l%e=Sa}d?&c5qkW{v^`9hULHgzPpXt)fT zx>4Yv9uP?E9E!|=)t*6%y^2Io%NU|BPw7zvb0ynD8d%^WOICJQO(~VtcEYJ29odY- zp{dfDaS&088K?8(<^mG_fic{X%y&rI)oIO0s`ip^`cW{(AbKlUQlrtM2;KBd&Dd6% z3OqHX16;=r$v=k>Xs5ATk1Szp{QbrsWL1*c~+b$8Vuncf#0F zjo4NvuXG{+XJeg;NU478z^Hb|AK0jv$@(vvhFRpZx(x?TT z+WIaI`a67ajgJ~Zt_*bHRVlxL2+rzL-tuwvF0un15@-IwGzeY520S>WNoB=5pHVbl#e?hReqEaC*2q5@2;ocfLL##P)li!!~^(iM@#ge>PDesPA z*>{SJWF-y=eS_pvDt@{ZLnrAY9yQ#89H4{}Cjp#XcgwtxV6=jN$x3t+VwxGQ@w8Q` zDAYEl#vqH^O1BuLKmT4E7mz#Psj*fxB}KhI!syACeH3d+mG?}o_{_Aj)o%E}x~9JX z>G&*1jE4no0>oZRp;j9SJV^Kz6a^e;Gdu(qr6uT`B%!13_k))#nBta8Q40=X!FV3O zGKF>tcKwiaZ1plrxg0Yw&XGQv&K3CHVMW~phoQ*UTR0>Y!5{i(p&RUclsO#&=J`gb zJga?zlfLiZdT`WiEmbKUnr}vXv9-&2(UJ9mu#FR*Mk-~Zl3a_(;2g8+fXL#lckd=m zqWL93cuOZ4DOU23+KC#G8JT#tE)%B!#|R!GZq)hqrzU zcso^+6QZ?1kBfAq+BO_8TQVzhfQ+UgtTK=h9ek+1xapQVBUTHHs8t zxJ`ULMObMgrIHhv)q!JZ06ak{)Ie^eI*E@m5l+UaCd5^0{us;wAIO^4b|FaIly}1q z4cWZ`G16PySarh)Z-N~@J%ko^j_o*RA%i~Q;7OnFv9QWvOsyltmH=nnI|t7kdEiXst{os-X)<<>?ZfBe0oUAwpuY6so|xnY$l)c2 za{#S{oZ_CWRiUa&)xoQE_LDy;!4A@|fE{DDfNUWcJ(i}A3AoqCCh;8GtCPG%-y+_; z-wPCUWQ>|Q*f54TSP=a945-IH{UWPY4BTWwsYR5|9XF9$xiuRwBdJt6D*3o)rFq+;rL^mPm(Jb;sC z-}U$N!`$OxC0Y&T9%7&nlyU^I;E;#Rv?QS}BrvYva9Iw8Uo&a!b4^aI1fDQF&Feq7 zumpw@6o`YFE;H}get5N0Idx3nt#-kQ5OD91U3qdQy8KtF_xMuOer(7o(9B5d1x+9l|RgRy)2gWlyKE;_1HqQ>o_fyNGdJQl{!$IT{>AMzO3 zp=-5fk?ofKAs)&ax6ddk?+CT7Gs8~yK27(08Xwj)nhZPm^6%(2-1k{^&sbCqK}WBP z$L%(!#iuyJn8eV{wXrLmi%~16(jlCDise6v1&46UNg{GM5i#%-4X00Z4uh8{AW9ry zl@dgrkI+(12-2W6i%YvCtVCXoqn(#zaP$>Ak3BMT!1aIQ|B$2P1B5->%=2@)l!reO zK7c1WQ6ATKQNR=2XtHAc?b|0Vt=qTZZLhs@hWFWg@6%Kaf1FnK_XsujXL#U`N&l2h zGbnRz+)kqF`rEL2VGX|qC45_aU+(DMq4&3L(EwV)do#$i1MS$s%B?4!D1l(F;$*7*e6;SD z!Vns26|8(dn8@5d+6g=}PB+->AO_8|KX3u4D0b|zDu3m_dNFcU4BjUOONR$Jf(>dm>X1#4_vkK zar?YN1ir_82%EP@0T0TjB<*iM^TWCiI~=U<@$-%=F8N;7Kxf;`nMZ~%$Y)Cq($MqI zvyhc9?9H;HpMRB&9QZa{UaeO=!B|aj++W$+**!OTqp$GKm8-tGo`1e#g8kS23?ifU zAU!y^cOZOp^jWanZ=q((K?eTb!2US{AQd-~~g zXEr?j$%ww+yVF88%De%b6LIK|fep(nw$a%j_W6;o@JW3@L&6jO)Cu@5P2E2;pxOfY51r}>2Y!u_{Sf2wuC6~cR%4Y_9M4H z!tAiOci81ZW53~_(2T`8`|Ky5j^OP$o%T=Q&dlwia^Aga54sCxl$ZRy?t(>=x_GPC zhwpyNHhiP^J$HYJNOK?Q;FoyCOZU+a&o;cz=GKY6XAH(-&Q!nQyFUJ@C3Td-cX{B) z9uwZ%d+agATSF$}4%KGQkC)G9!w#mcfu1em+suMVJFq`Ap&P+VZj*76^k@ANxfMFw zMP${i+RL<3raFg#Syqgh3o zmbZZ)hJ(+lhGFc07WjjMr$393!1H)8n7|Wo1^)Z!fJXw)D{&x@yzEubHI?Cw1UzUx}x4;~4;ylQ$H#Bf~0 z-;MO$Ti^@+E6_R9fPc7G?!h=8F*Z(?@Wnnj@JG+RKk%V|u)3}Z?IVF-w+?t;;4ixR zr~fT^sY0Oy2u(FiEy0?aSVB!TTP>b^pQ@goZ7>c#Vy$(EW1gAT$UoXMw28^So^9{C z=it)%ajh2@U5DyIZyRIwUEn6Gt#Vn=cw~pQmUlJThOM<7RyMcFZ`SI%nb@69R{F^l zq<09MOgK;YLRP#)PO{f&hDlEed=le`_s2s#SC=C$$sWuT_qXTG3^R=;te$Rg6iPYE z3BI|nFp-ZGUI7r5_|+4QM12X3uT|6t$)VM*CdXXzknjJpsqPpx8!jaXR#uR5_Ikie zOPED_s){)6m7v!+BA9bLKLelg{zQ-6Gvy575*(kfxY8X9&NRf`OY)J$mc{`?zvnHDIV~IA>a_h&bKV&WJ~>&ANeDoN$B3 z#bNaccVTkxCXXlJqKQq~5a{VFYIvpwhURz)c#Q8PdxVj*t|@3O%JyksUZya60ZQwD z*?;{fNGKnn3QEI-0bUu}4udp-RsY3dA#!kq6zg)3&S3Heo?-{L2)yFI*z{I9$hQ6& zR*1u~Tdh>gyG$;?_L8>Z5WK8QTS2a`F`4glp-#5sY&Kk%Jm=b)WA2`MQ&kE0(j#%> zJMz^I=}Fx1=sC9w?)tqzdiNj_o5Rp4jblyyd?de&C76-DT)J>I^K)9vO>OqXsD&d8$8W6H(7ZJ$r6cByhX28TI<>M*v^vr-6}F0oSOlY!U*QIs z%|jy|m~F9DI3llx^v5%{iomzivwZAi=4oc8clt1TJ~3M=H-dO~%r_Z#E7VbCN z=j$doofV%~#19Vqv&+pm5SQx5Rw=|%dek`LnF7QjHXy~VqmV{nsvXQ`sXXP!z*P&JgLxJQWJg@kg7kyw ziCvk3lbTllpoUDB1E1$cQ`1Lz?u=0lwUjOJv@!{Qr1L137e7XPb!QER}xqrV|`L-7QG5KShsTl7ce%e(L1&bI}<`)&_zn~UVj{rhbz&izf>inH1rwyijq<5rx@-Bz40X;abh zvEGWKckE~@&i%hL;P&ZKs@5+*r+Z|# z50;V(f3D}Mus>LyBJU3T2Tl(T_KW)qX9wK7Var&m`EtVTvD@~!JC9SE@p=cN+^6}d z%QxeWi|*YpWz#CyyEaG43LA;>rAW(yR@uSr2;=hRcD7&qJTyVwwx-Q;5@@3-To}%Y zIggvTU2pKCB#XY%pf+)G)*Bo%Cle>vV2M?lX;xbO@JBwb>|X<7n@0m13|pdMJo@!P z;rcaUXI%l=!H#@iojZkpY{Ii--Iaf|f`{A(w5}E1l@t+=a3kY4gxy1nqx3)2L@euf zf}y_sVgj`#(if!^7Q0ffb7iAi&Rm~f>=Wn^8%82mn5Y(1I|WOF;U1W*DL>yd(-a!j zoKGh|#I2V0mD6XX0LQib0c)z;rFCJe2&7m1=?fJu`H#<5x4FH^iQvJh!%hViBjK{b zvzt1R;ZdykDMMeM0NU4vpTa++RBPq)164o+Ptv@SxT91Z-2i{@ebhxq#qeFrVvp3uv0^PFWR|3B{5eq-YJ2085T}kho13WXi3e@e)PYTbfkJTZb^$$XCi3 zCm?VPi@Ri@wWc7rD!aV2Mx6rPU(n^G6(#r)iOs$zaS%u4G%0C?;kO^4aBC6$W9?)( zqkbTbM z90V`qU|O4sIn}7+{$J|eKSs9Wy7N2t&h38pjrxu5jD}Cm=Mh~qY|<_2foaiiiD$2& z)Qm>Nh-Q=)Lnw;jHCo)a4y`D{$g3y>A_O(Vku);i3S+O5UPh};}6k7{z=W;I#s7mojP^u+^V|w zR#mThvV9bwgvcc)4%3Lb_RQ`OPTMW=H()cPQ4;UC)8jy@A@XCc6qPNWaWUm0uFgV9 z?v)OP#D#jROVqf6i*86{{4*F+JT3@o*jM(sgAAu;nY)k!{-ol)EOD$FZ;(^e%Q`~C ztX$+8ql#VlsHmU*2eP1rlYvNxOq|hl{XwBR$(Kk$t>>(=NWz|pdLAb{yi~gu9STZ6 zUn`N^<#IA>igUqaClgNhifSi*?gZ=Da-JjGGzY5B-FR`qWg+fP^jxhMTDWx{iGGN> ze&QK^t}mgUlG0n(YF%AqcDa?YDl zO+J8=rXv^5!-{8IsK(NJzA*aS2vw$T%3II{ZiAnBNqOnKBtT4ruO#5$MElIxg3u4a-=9xqfO27i3gHwADtE#&U9Mu;H|1-snQ zQIR_3#8lf_0R2Ia1{ep0Bp|%P8NZJRO}i9ZIY5b7-5$-2MIlHOs3AG|$HO&s4|^PF z>k&B$NccMJwnFt|IDBIPuJX!goK&C%?; z$-AbqAegoa%bDGeViCQm-R?-uqynk66mUF^o>PQvB~{bCT#_2yUERSrNwXrydFQH> zlw-BeEJkh};*c$#fLurpcJ`6Xy+X;g>BGGMC7_(7PTX+nN$)AM>Olws_*{ejFMl-Q-7RYtJ0kubJ?{5 zBjz|aEH1iCRdm(0m8PHzF1jQaP*lzf1IBqmfEBMrk&+qr90@$fE(g!pLAEK%l!ZYW zuR2_XJ?GTH%yBB`oFfH&XwK_SVxhVyn#CL=c@o|^S>~t8Ulest_nGj`{gz%}o)vgL zy1>6VgS)VECXQ}7y;Ba0yo=Eyg|H)MMQ#YMzibqnl8#9ZNv6z0a?>lY3y9Icg_&H6_ zgL8N>S8jwiNvrH<{`CcE7Bx4*JFIC-b~iQgyHSf$+Q5%VKbL$icsG+DTM8N8F8f*X zoN5l=P|`WXLXQe?E#iybr^g^UnXba9BpG4%yiyBwV?}L}W)3VX* zef~b>EjxPAwDdm~yd~ixVG+o@JbKqadl$*u6$i2M(EYiV_RdFmXBtE3f=oLNAj z7UtM_|6Eq5nN!X)ij%^^x484!b66zvbSIiqx{SH>wjia z6Sa!y_yVPPNRPo`>q*&M1&`U$HJRh6(={qtQcEh}tpe1?&Fn;0{fqynjV&gXd3uT2 zBaF*4C%6mFZ4~s6p=>jr%W%f(9PgHv6fAA77puvk;tK>#FoG0$^Ce&xEirv9}9V#Nk^IP0yW=s5e&sUnd3hyU+)g*n~ z7}eX0R6V58#pLxISCKfK{JWeOcyeZsuYd~OQ7{k=ISJHVPWW(!^Nhr^#OD%3QeKFw zdKr-`y2g4)P&loc$>)-2#;#ATF{9_OsT?8FP^pQN*+2YM(O~hm#KL-23FsFfaOvBU zAa;!TGIyWC91eCYtX!~T&e@((WsRi9aWCegAs))R1JT&9g9rErO9 z>Nali$v^qE6=Nk@1qs*O9p*qe3AR1Qoux|=tuABHChHE^%wcb5qOt&z=Y=>dgg@sM9y+crJ#}V#C@KSB(G3{+zq)P-3Aq_)yDtc7AU#0lh+_Q>x>c> zUDOjvFNttLtLe1N?T|aDnmW!sU(PW_$=Olj$Xk~CK84FX`S^AaOF||q0+pU(mqlRr zCl4cP)(R>BXEznSWOm4g4O_dHh2KR08P@Hqp)R9WgkrdNgvJq~`4Fo;2ShSNCA2b= zBEcD6-izo}!NUD0lpMuD#fx$Ew2wF{z>%wU)WW~jwY;#E>~=!Cnz)Sve7#%*#6c^7 zA{95{P>qqCGKvmnPkon#T~kN7e1rs>0-wzpoc(XhPHLp!T0HVGaB@*(ea?fHwKt~BJE5LE!0#Y;DNQhz5K|MO74bN9U2q zRj4bAyR9fef5lK9D7FkyP+*ghu^@#=#UYu^rjXtlj>s^~Hn$W+A_jX9(@gJriTk9n z<*0o3A8@pBB5)9<8yGovRjPIy#7%3*sOa7*?G?#-F%8Qn*6QMBF|mOZAFO_Xt=@HH zp;M*9EGh-N{ob0=jVjrJozUP5w_F6mL&fj0=Am1%E#L!n}_a$oPbYQh?p zgYbJ{p{6sMNU)vGQCTPQR1kef)lj0-y5g)fLL~&29^hn6MX8-j+ zgf8%N3Dzkwb}nUHQmbhcu&22WjW=gOIR`XfF1r+Qt}feBU@xrg@Vg2} zXqJ+47vCO_Todkkx%GtVuO(n8Md#TaM|IC{p~e*WWU96SXt<4QVjYMBoMi?H;8Hl5MF+Zn<>t9F zHx-Z;C>L=t7OF^G%a{;y6&}OX&uXJP87a70-hQadJY8rHXGB!|x;%H`99D?PRi%J` z=BieN(*E}AU{e{XtyftH?V?Iy@phbBuGkI|M5zvrXRQ<%=tf0r+ z@Hwq}l6nnwHQapE1`e7gF$eH2R=G8lITw**R1rV$FDOBqT(++o70OdH#4?n~MHfmr zk|YW^PD%gnzfh#~IvLH6kNFEp|kReb@(U>H(!-X z(93o@yanmp+%}aWEE=OqPK*~@fn0-Xs2mWLT+CG;5`@^1o>OT!%u-H6I_O}(_JGS=H6Sf`@j20$3%WeuJD?E9>nQtGh9i+VMuF@&(Tsow2o=WF z&O&qQCh?G4;CwlnVq`uMI`x?`-|+AXTcE(`k)5TDnXAemj+@_R3Mx$ksqS7jxjyt4 z%It%g2Run0xw8llk}MKAvAoxdQdp(PN>(?I@xiG06oeKbS7PSiPPm;Mv@&|rrm|W} z&@*K#Q$?=m_Q;85xMGcF8&T=^5NYg+L~(H6SK-)Wc!+*%W(lV5B6 zT`uQU=!PsJC^;HF3KpvbDH1)!b_fvK9af*Ui&WgI5-U4k0M|xyZlzS}Vl;Xfsr>sj z;6fC@Y+m?+j**AE7 zF?WpU9z=j_E*?{@|Oc2d`2~u7cc=E(1Ap!VBS#6`MI6zyxp;5(F1c>dJMEgj$x1 z)I4g670cBZSVH+<7-U=~+gU1H{s^>WZ)-xC1c|6`xkNw(mX(IEJOFpGDR88QoEkDk zuw`(}|4O>$QVlc!0x}D;RAp;~s-0mG$kRAb^xVNVm_}N$BYai`nY}2}J&*JLT>;e| zJ0@8Hy#UQ_t`xd9#vWDXfJ;y=L#K(35axWMda1W??Q~?3s;*v6RrHC9$L5}}b0^v6 zjl(>zQ6+lzpS(U#KL_*8+gf+X3FlaOL$&0ppzD#oj2gM%z`CiDbWMMdkgH2>OgU9_ zIJ&D3psi@6x*RJ%E^;NPq8_PM2-_CD9x{8m^?>C0RT0KE{KwNMPfem?IRF8)Af6m| zZBqa4cQ0PmXdKPCh1I`C<@_9#^K7;g&Y&n>1k4+i3@#6IlbYSWWeiXRbw*w54wr+} z@2~AV2Xae%{5)8yTrXV}qSU?LFiT1Ms`VR9NP#%j7J< zy-X(+KiDWz1qE**Q9dH_Hd0fWPE~M-Zs#L(P`h>0g@lUlHr5#v*e1NqNgy!*;q_5) zd!bpzo|m6Naj2P>8o{qR+DiSHt&A-|H7u{G2kbq=i4LEx%HdF*3G^IMgvHavsDI!{ zhb@qFG+mG=G?f3#|7xLw3_8#*P<^oU=UwZJ00`F|NR6m`lR{RLEurGB8dLM_Qd(CN zJO_e_*OVUSkVmwnF{?Y=u6UDyOc>dH#Cf>#-nfdlHy^WJ+Ci*-H?1=d$F8kAqnv56 z*0K9ntC!iiP8pYriu3KetM&i|z%IWU85DM4omh8vi-bDAikQb(05#&2I86qt`W{I0 zdzZ^7Ut)5^Gz~^g{Z6u2*!pGbd>p(gK(x^HQBf3{!Fq+*XNwl~f)^cP={injc@M>) zzK3lP%tk1*tRE|fRJ-A@Wqow?KaP1S_0S6||Gz2YTB~ZzvIk}S6?XkCEp=3O2#RBoTOE^#7p#jUoq^udwS6(I=1In>2Ak4lPjrk_9CAPQxp*`g!k2A^eN zhC{Pr?XoT0r3`ByYizslbBv+p?JAC{xh(Ao#b}HV_qdW%Z&bCi$}*PSKKCItvVd&S zmRHPWGP*o2UqXrFD_g@ND zaE9}*UZS$mI%{huc2IEYO?6@k-bc!2?=4RTDR3%qEqH0^XWw;vi`A`CU99^f8wS1T+y#ze1h}Hi=TS;Kl)6X6ve%r=WnISrE<91 zAA`Si?ZM$b&D9xJ!^y#{t|kwJDIaw^{qg9uNWH30Z&jv#bsMWF4&K+>p3F4g7dUJ1t46DV9dm)yG*WNXXAu>nfDBBRb zDC9F6Es>SJWF!)wBgY^szMhOu?cj1}BQ}XIBkh^o_jWdpr1*Ys-67{o zAJZV6)lOs4E-l^DVJweTwMKU-h0hh=e}-e4aYHG-{Hf(u@yjERm+Wyz;pNZ*xvhM3 z?IyArTGI-Ta=H6>vriwi{KzMDN}k_6G{f4O6i=5XMWgVwejjQ&AT%H2pIw54@4o}S z1e8AgrcbzZzk1k9cIkfUmSerQ)GQtD8apWtm=bbwVsT(Ls7SU;YlD+OW$TUM^C2xQ zz3V+S8eY2e{`Wp}5>vOkd}9yDUFOF~uh_@dCNC8SD|YJ_;!8T}_KD#nEG@nJr=ECz z0+-IcpFcjO-)in1Gm3SJ_kLi1h>05d&oE3wvf|2Qcse@ZM6T+W69Y68Jo*?q>G$1U zPsr5UI07Qmz4i0pI~5=OBGB%MK-lp;Sr-2U?S`r@@7;_eDSmGlQPJ{GafEGvO`kJo zfXmAfS*U#=-8ie^(P!b(rAq1<%H_S@cm&hl#=q~!6SkV)SYKCPL*uNoQW#6W*6*vQ zSzo`&Vb@=nV(|r*i{jC|2$z<+oB{|Vjt&RUuv~>eC6+EVO==h+OU6i4%Y+6zZarkh z_pkr98sJ^4Qhd?*z_GRL(`@%1x(DW0=jT=DO^mK9(3#~}t+tqhzain#%ZUj6xfWYebsDZXBQYMol ze3wzSLA4AANWnxfuz-qRcvv280O{nE%Gv9j3s3V@115$vm&yPxy*qktt78?K;-IRc zxWH$x%{>8P@y!^^Sy~EAGm(hVC)Oz;MJ0~|Z&?W<8xspzC5 zi`R+#$U@v}Kpl1-q*T{vD*#*(wz;%Ljq#YSz}05E#5e zEMB+JRXd{Du!HVxW?b}T^zagkeG3!%Q(Nm1kK87e@R#1TW+|!?S4sCWIYd=&nNnpF z?rz=@YapXPRJUAQqo34lZ#Xcck0&Enx?D6PQW<2~h+)OS6`z+eGU$ltgf=VafU6MW zkQf({Nx5TXSG`93h=cQ{%V=Q$a<>%@8I^{_HK|c9=CYbj5`TCF4BTAr#tHgeYJlV1 zlc4)YFf_8;Z9 zg3fO3PJ&Xu_~)mIO0IwA&(-BL{ZH=E1zj4feDaf#LI%A(;u0p2sdM?+FTQrdK;PTz zpPVEs_!R*ffI~*V{(OR2anIMkE@-PK=$uwqZPbjw@mN439;sCvj|Gd#ct2bGWI|1C zb-eE~HSt-879+XL!ZVX-rP)J!f+b1=xm?Dbr~qekJ7TVPS3G**;C&i}n|gjLplkb; z{~5)@ksMO3iGjxe#pY%JSZ6TA=CF7yNt$A~Ky#!IbRev)>Fi=!lrxN90NS;UlNU*4 zy88Nyvk2^;+?mC)T<@RE686x1@-@Nb8_&Lenxx6kPfp>v{`FT+C%}!{-=9o)9Jl&@F zc-A?>#L&NUVP+A*+q$;{rM9OuhyBTn+|6h*A-!pWLkN*YdKoHr`OuaDnTiYpSX95G zR2@|u02sbx!FdamrGnD@Vq;Js`%R3MIMB19nd+UX*I({w_ zibob%y5ClMso-w;g2mGUExyN#5jl_l?9;qy;S}6YeM(b^{zjZ=I&<^p_J=ckL0cW#*^Iv^sbTj?&>c_wKHBJRS{y1>|bGL7QeEasw z>328kKjb{$m;W@MZ~U!SGko<`Kj--8j_wpX&-Zi3aN%s>{o~_R&N=3U;^%d~@pn%9 zeZfIgyMbl;xh1ySiCYgJ#B!JrD?idWcj1!e`Bsw6z!$vP*?!3 z1fKO!ZkRmjH><~~AdMG)`XbfX0gLu{50MfJOqQB{Iwac?@tHSee+J|{?q&u#-(kj# z$}IWYAEzVUsPxA1s4A9v8*x_k3PhaEu+DO$o^6w>Ti1_$1Oups_3kcK%-Qj~6*pwP zIi?KW!+Z{?ZbZEi({i6lsw|>dnVwhV6lcW`GDc1+R(b?WPfTtRj)AK4IFbo;j9P{W zRaE^M92}ZM-6D!3C0taHky}vMH@e&jfp^jc3P&o7`|J8w_tNou5(23T=>m{!O>}+SbE@1D-cNfTlbrQ;fn@S#eu^aDzE>3(R`KPxw}%AmVV2s!?i*EbsN%uPb@{V z#2mb-wl;fH8-9Ie^)&sB<`@|eouhO2U~D$Cy=AXX9TE!$6V|Dp(~GQjWw~&>>^7DxPej9sO!>e`_mHCTP*sMM}mMLupJMj53Xd!tG=r7V{kFJisukU+c}3XBQL>G7@%eMm>~dG1v}Cu6S<| z`?6LH;Wi=7Y{eVL53t||1(AkpVu&%-3MEY1^lEtu7LvaWG4RAQ_L=-9=U+u_XlpjL z-a0h2cx&+x$HPq)XP=aY7!9sZ8+Gs|NY0sc)BUNmY{AefOMH;!vM4i!V&Gbz5XF;db5=i8}Z0tY&kZBIZ z(4@y}a&)bV(FIr{-^6hdD@0BdXqc!RhjjC9Ori%~9B!NC*>+F^@-1s@qAfOkAs7X~ zy=*2&sN=aJu(2Q?DSEE%6RIq%)PC@~bh|K()0H4*0>Y0k^Ao5#r z9Am|xtY0C~Ih_a4)oE>J{VAgG@{qnvE#^ucqqGqs($KbMS5kj>T~$xCja0XWgpD?{ zM5;5km|o#ULo$!kfaEGhF@=+?$-3EL0v@3?dxDZJ?C`R_B&N&D(800lpfo!Uc7y(b zaazedj$5MhbkY(%@?FdRvmNEz202!sbpghd9P_k*9vl2Xm52nW?F24Skw6@osm||Q zE(CuoqpZXZlxBQF(QB+!1mhLBFjhu9n2Gd6L1#N7Q5|+F3wvriNJleKh)uC+@c=j} zXaS(vha)|&hlB_U6}5H1bx1gH4A>p|FkTpBf)FBigj`7$vK=X$_}8R=gla$r($quZ z5`Vc89u1PE3PSG*og7O>DM>R) z$DI);s!CI0xFo2!QkVnoC|t4>B79;Q66IGRLQ|X^JQ9nk(SL-Z95c;~f!BV4jx2CT z9iaF}LNh7sVAINjiQPl_<66Hsw%Y%?xzS@-HZ*-K6B|-UUF^}V^&0zX42h(D>N~!f_+Z8|Oif)w_XPP9 zv1H?Ax-g^XOp)fNw;0>wRJu-Es@arEV>*nZ`g|PGBuF->5)5`bVHIUW<3vje+Tog+ z9p3>4=A%aYhO7STG;xdjmcbsQ$3c8(_M7#mZ0F9S*!Bn}+!eOntnOhQyG;yq4r1qw zPZOoV>l;Mj?AK=4j#Ug8fZ3-Qslo^Cv=fT3t2{;d5oS0sRYA$omLm0->Dw!{2$QPZ z?#60*JDPo*m%YXAHourq4ko>Ivj2ho4y}2=9|mpPWwhyYhCBdCe3Cf8g%KO8zv^~ zb!%+t{^d~aS{V=N<)gjddD>cJPW5#68H+Jc?l2l$ws?BA386bSNoLaz!?2>2)Nn{r zT8efnl%d>0EKB{Ewjzbu?|uF;+Pj(fL=egdeFZ28PgEhfh>gqc;o2c*AYuW* zLmEr%3Jr%kYs@cH#5pIffve0Q5#-ti%w1*4w?!-kxTHDOLa4~2z9kA*gqCq6f{UWX zv%Q4pE@G3Cgai~S(IJz!!)2Amvblp9ad$KP67}Jg(Mp0iHBACWR8m&gW2Ep&D?k}Y zzy&qhEIE-?5e#!k&jl`*NtE!O^9)7$*>92H8S%HJ(e)665P0s&lwrugDkbLs3~dvc z0v**LnC^hc&jE-EH*i0~I3+3~i;v7_M1rG2+w1bNNfZ(NjR<#1(hINxEt8MtLl0I& z&*NP2Qia7Au}~aRd>O0*HCX6lX&%o=l@XcklnUUY`>SPo#shdkfuTHRMonCj*-}ab z5xCqj4NSS-k@#Ll3Xz5?0B#e``^0_2kM4cyWcXN5?trm<4^RjVkg;VmM~rvC1N zE9rdogodl=94O1f?j6B3MGv01&t2vajub)agp&Qizo|BZk~ZbFM8Se$DB7Je;G+L~ z5M?C#Dw$22#nY)wtJiJ}4qQBGZ&89Gz3* z_tq;WSk6PR{=4PqH_fW=br`4N+|*)t^p+_kd6=%2iG*$UL>A#Dj>IR$*M#^ z&`K^(kK(i|G%o6@kxdN zF2q5tBI!^MQVNS%hgJj&hMU)=?F7K=3O)bEse3*tDl?NRwkuZ%CQT%8U4=(g9%8}3 zcFAcqBO&T@DK;p#^JP&@>uTUp+6yk&e5JO-&1RI!-ZFtk>?DnPT-kH_hi*{ zi%Uy)10#cK%>B|8lYd7{^q-vq5h6!K=+7MCHX1-GCfHtxSLEaaknZ$(6l6kC;+CT7 z5ELwJ%PG!03?x6=so(_%PcN*D9>^XITX<-Fjt!D3&z@W>ZP%5YN}gi}yM)vMv`(22 z3XyPuHGM&Fo=i8Ws84zLQj}fHU|AK=F%#4$Gc3y#h$iy14AfPw&zUW-ba%RI+ztNd zzXeu$)bjd7#mK=lKr-bz67vwTEH5c@oPxNvkl+#Ja>5F&`7ll;MB!9rRB~wv@IcGY zr>>-S!C^PXSv3lkRbHD7w@SA!uFcTGw1_J$%9Cp=r|#DsFe)pa&5%M6Dr%_E9#>po ziM09M+KB}rB7ubq^H7jn{=2n4k14^&d0K`Nfr|$+h1?B!p=I{fcJo;v+^RXMD4f@E z+k^A^EhsW}oSb>1AJO!9=l>_RS+qJyws7G}D0JVK9b3 zB1PiUPihQN(5v22kU=zhnjI0nSS`G2npF7%U*Jb3kMB)AvV#u`_^IwHc8>~s0c8a%j>1z`vE}7xlg$|6Bb*gajayyd+ybgNrJv+`p;AIt{J@TpV$asXjD3&f zRT{lAAeHN>{3HtB(F~_s+N8T?TTuJ}Rzvy`=lnRYH0otI*!3rSY&0vYVYCTt#HKqY zFlpIVj;mcetYYtozP!sbR?nu(Rh^LaHglc-o+g+Pf4mx2PaIyiU;e*j@$6Mvvq+D; zV@>xlOj^(IQL@p8L`f-KT6K^H153fGL?N$^P((ll;ed)Bq3~~rF02&?G@te!Vd(c9 zUe<(?SNh!tXq=`xEGCRaJ4~o{EXn%WX51^U_-4&jdvT{+XQEz4Ov9+GEmfN;cvt)W z7|kOQOp#g5=ZTL~r5CxpAWXtrfFCIDJpk-VQV#;I9uc*5mB)UVpe`&VSt09V17^6j z7SeGL_`wG>8U$xGX$U_BIl!Eco^8-Mk!1t5EfZ25xKkY(-lhxxQAq zyeOe~ZVqwo!cDoKYJ`ApVb+SHTzeIRXWFY}-hp+CdT2)a*+s43l zseqQWKGnQ7P2it=@HIQMdpfV~O77L-pX^S<($YP}OM}D$>YrUYsZ!{4{z~U1ODw&4 z-}_$+GgLO-JQ*GoouwzYUbh2#*QHN%Uk}d}tDSGJMB4m)mwpsZZOPvE?$@z1mIc;( zJm6hgx_@bcEJf#f@0mJM_N3sOR&nLZ7yJ9H67JQ{KCwS5)4i8ZcP1p?dwFyelDZec z%5K)p5klB6^!8^lRpqGMPur>NK6z<0wY0MGE6e-9Uj6G2?kC=s*RyU6dai!zg-K#- zP5H@hPUw9eT8oH;GQ}vF>ZlA+49n5a=|n zos1Ij+I_EmaTdDeuzYO;*nQAm+ri;Tfl_rdjvkHuC+H2~GcrixBy zw;EHc%APD=qc*Hj-&JB`KZ;YfiQQ9ueJ~9?_xhF_w!dt$Ux8M=@46IEcQ`l+2Nd$; zgDAdu_q#t)zD~STJV7Z^**`(y<V3G> zy)W+V&seT~WfGIBZQS} z8^3*X1}yDQ`ZJm>EKBi!9>Fk)xn&cn5Pp#pu5JW}oq}>yg1f4s*~bRw@)Pky)tT%n zp<3U4-BP*4QuUKCW#`Cyj8ruISL`KAou&Kl39s3#svf)=P6{+#ej&V8psMaC!s`qN z9IMA(C+l6U(EL(y<)@p|G$~jn#*&wKsoU8^GGyqXd6xyvliI7Fi7fGf=!>)cWGw!^ z6({r+{d9xMYAcRIwm|g}xT$>+$h{_Gs z1cO}rg;)9b!LtY@gCDSUgmv-dR@r}6vOIc~qOknt+2%F$(JLPtQ*%rojcM!6O?Jr8 zeAjM%JWc=_X`G>rAyr>rFc4Tl~wdM2J|t- z((?P(zn>;cODrl!@!f9cfmZQDRoaIc6yNJ@Jj>>p19nh7E5);F+ZE3i99fyR;$+xQ z4VpmlP{opuuTs43@e7KlA53E!pf~&srIposR(yH&#1cH+0KefBo}+!Y$95R+?wVu9Syv{x`+!^1p65ZjDmgc*L*5evwufqr|1s1TZcY?|v7lrxekFi=bTeeObujBei5giL!W)qj0&z$VRCM zCwSBdR#k?iHpKXYDwZu2LU^s9PGiz(iL|d=$QG?Mdx7t8sA~De3~5*?e5fuRi+`vb z5-+<0DCy&uw@MUCjWNE6;^}C_+x3*VT~-2<7)bS|ZPu;2*Wot%v)_iKEN`tNG<)qL z;&ko73TfQM77A3wcs)%OcxsRUsL0)Vbz~v138P9?Kq;%V4ct1bMG6p?tDPCJTcUL! zxk+c=Rrkp<5w&X1o9{iBz8?^GY2CgrY(WhL%1}Bi1|Fv}CRY^uNUF--P&5@q5VY0K zfEb--)j}bYRX3RQa90Wv_boWU(w?ev`sX2sPGtn;-u2kpG7wiTM||#^dXMQ%SuK|y zx6-N0a)$$#am%~i1gP0Ts=?Lj+e&9>@JR@h)H}+}54g{0zwdq)Qud=wCKC!=<3kxO zy0&He2wJK3F;m%y=!96owxmCpPQk3^4I^QF^pdCsH%70` zW>vNIi0HbuHQs;yAoZ5JPmbZjdL_zOLWmo$pPnkW{b(ZSWiOT0AWS3+Uv%d%sNnU_ zkM>a^Pf;(ulpv3qc+MB6Mx;OZ zh1Xvf9K<+5WBr$2Kb@e-YcK9gFZ2?7(n}Z&pNUxdLtB!C`(qGDi+)3XutLGexy;h!kD^(wm!qX$qC2j>LoO9oTMvncNy#Lc-B#l*BHKLL&G2jp2jnPE;PrA@}{aEwkles}U#7M-m&L3F$qcIfLLxT&a%up<-! z=hh2#GKiy10Qbcp(H~ihAU^Uzs@gue0-a&mg$h@-e9moL2^sHz z!N9Eyx*VU=XD*9aTSuPQTw|3#v2ug9rOY?cv>IgMs50iVU_P$+1-Dl3^SEf`x-1|| zK=2VTS1d3nrsfian_y?oMG;)L7lOk|w-IIMR$Dy(W-euZa>e5N&PA)cBiZV9)7gq; zb6v@@w1;X?)0W$MmL<#3{idhQk)5euFWBUtRaJ1zlZ^iLV zG;BH1CYsalHO(JB$2OSnG>vb?0eWP`n70MZKIk<$PM^#0_E)0b-K7_{C{2DnZ&5n^Zqpnd!o?x70KfcY$KZn?gSB zTv+C@O_b#AQxe(8^PTUp4Q8pa??t#hXW`|UEIx!R8xXYF=03b|G6Z#j`;+9~11D1% zVZS*QWHZe)iK?N0S6mg=3gnwEOIeOwhUJoNLB|?Ey+)Alyu!O&b~w*w$i!q!WtXMd z&JN6YT+v%0xd<)zXh|`0C%uDnH9_rIAoUfOMyVtd*X!Hn|NaeS!bSK0vR-&c8M2%U z(zpoyqycn&&ZToK!8Fma8B1GF;oup2o!iYkUjG4SJ@FRz28Wz zBZDY+22Pe7c6LyLL@ zh^)pXWIIJE+BJv~J8~;#x4LNu;+wcI)5Mmgw8TC5B5#adBnK6#51Jx0F@;1yQVoQG z4Gaj(Q!+@QB_OJ!QUNnK76jjpv8q@_9C@Wtec2n12$X6y{Lml(0i7d;8?UDZntTjD7Mfx|c>#B1B9`o%gdz-FqyoHLE;C7{RbCH4WOlNJ4X1(yY(=w&-smW;IYeJHLUVmd zoOESks~;hNxl<~pHMDJtL6af~<&0abDJF?9m;g=!P8}dRE~-hUw(T>PV0C5 z(47{9o&>2DH;uWWlOp=@jszho2PR@nH`xIijrN;xNx;OX#&mfHy4`e8zQn*bvRyv= zk-WE;Xf1R_-err$QP?Fs;o{t&GVWQd;K*b+mi2qFa|*kT9qJ1?S#%_A9Mv;034=(Z zK;t2d?b}y{YpN8UqDrH92wGQ_ctZqfDOJA&rG?0+*F@5PL@~#9f>2)%~4BwjOWM9=D& zGp`A>M&xTr%biR;F8bbL8>%M}iswMX4~6_l)GB%ILX6zCdWWt=o7Clr5p~B}yEU^T za>8&umH1?M)@z`_%)i<`O?rdus3oH4A4dx)knJk`$O7xHk z6(8?}akoG#oE}%t;&C`Wrk$1pe82R|!Io{pT@YzTmCJW2S=H0c%4+@EF=pLM&5j*d zlZM_?*G+gKo^Ufv8u}l#54Zbxnm!quwb_&#qD(UOu^W6@r6$bOSM!)((l;Oza&0AA zIWg5v^^`JIqF$*rWyB{ocp6o!2`BWOAS&5Aw|8(YHxPR&o-G$t8ePvF^dS;Cu7vs5 zHmkfci!(c8#k_;Q2e|`0aVUq(X3r4kwx23;t5HTrPch!$HQeGpq*OWeS;0d>Adr{F zefM$YdgR{-Bbj_zNkjx6*SiPM(M?*6SZfi8C4SQelYkDB;3Ev5ycOI+Ntj9`7`Tt| zRnv$H;xLuOtCR9*9MKb9N||EWq-z%UQR8a^C`(8YB?YiS#3H_s<{U$%M|pC|{kuG` zu~+m$LPncEnX5c*4+<#N8rj9r2B2IB+@b`^h=*;f{3_wi6x_v|ipL=wcVHXiUD=%s zD%^6ETE##v7aT24kS925?m6>T2of0|vYTcQY|jJRu!76=e@gzc2y@1WZ|fr{LY#Y6 zrPj7ZG_f;Rw81LoKv;;Pf&=WuMTrEbx-|ncb$*>G6-*i{>U=~Rj{9WRAx~-s#4svn zl$i79)iG9ptWq9Y17^4l8QjalAsNjvegjd?h{2!~0V$CH#h(mCTFZl4PT@#I`VcXQ zi4aip4&5udLu{AJVlvrOAgC34&gQBT7|U=fcc#=s#X{r^CvgfyTy?>@rAREPP$u@* zHFlrGip)Znh5W2%q|Gj7K&J`WoSmoUln{)*23PXex|UBH3%SC?3de+~zBdsLmL`D6 z)w<{~(>XgYRLHOh5!p4xl2N4~W-2|_JIeP$iZij)ELXnUai4?pJy+VLK^2 zKqS%`bd5YC7tQAY`Dat4IEK+^WmF|2R9@QvCcEIIg><4rO& zZJtCyNhz@z9!FBSs_0yrBQ;1p7=wMP(1kmHoVy9L^J5c zLQ`O`qyh1j@J1CmH%IA>-(FD=yPpMrSyMmoXlvEOo%O@w1u(KdJmqHw!B#_ZH z(#r2dfyrDTD+S=Vy`kL0vLi)7oi8u<({{MF3ym%>i1&{oI98mTM~3ds9B&(>cugZ^ zGYb1{BMOuq1U;W%Jj?10A$op$c7!l0qjiMRE-4ukVX}+hEG9(WLzhV@y3W{9tYd_2 zExC=ma>KmlB-=@w5r(1(5jZnTf-z`2s$NXRg499;1js=^%oSmMx=?dB=RpVVr0(%N zi<3vPO7d25CoE6I z^~fv%aeI<6fv1975dzN*HqeuS9VB~PNWDZ571Xs`g=bZQkUO-5>Ze*p&$njKjtVr@cHG-L6^@G=7@BljC@i2g2lS<1?$_=m{Kq_MIfXx0u)RQN4&<9>c zP`WIMe;3t~#K9qoZysXM;V#gbJE9qFU~EHUFPS;(B_D3bydo4 zCX#|q+6;M&NyKQ_AjrFQm+lC|@|Nb3QHtYdn;! z4kLO^f=A^ArQB}OvQ6v`nSzsfHYTYs6fN%)|0f3+wZk^z0F01>c>?xHQ0-#KHD}<< zYeaW6*PPNt>5g~UjDCj_I;>Y^84gXw6L%27>vDu3p&0NdN|v0a*kA#f;ltanvqDH! z0ZuBYH}t^+u$c4lxRk6*g`#W%${NTW6wInc! zhQxxyoYR#}JiEG3R+-K}K2gV&ODvE{#+F&nY0tDsCdmUsLdF$xKEVkXIMOWsp4Crq zQX6r{3NMoON|dV#C2ELE8d7GXFBV{p>C7|@l;y1lNp1cZFZ%6{#EH*RMrLIxvR>At`GG- zCCw}DlNZ{gMA%k2Wo8R6{dkpRup~&CbPntpVaYZaaC0VvAlmYHZ0VFiP90ROO7K2O ztWGFMa@ru_9qB@P!isv2xK!9La@s(w%IJ595pAkRSu8-mT$1LCiM8dm>#p?YQsLO7LT>~Gs)%2rZUdXr26m67fqe-p>@7E5zJ=q06>psMT z;?-g7(j9d}S4utN=ZI4IOI2MyRUcWExTU*gv70d9s%#=-BS943HQj|#T8gSDMpsvn z7~J*zv_sX$RqB$mJ|Hf$_WQPrLfp{%7(r7V^W)(9%oXePa@K=m7k=nY`eM6aoWitXr)J`tK*`3VQ!-s7Vq4kB_7xf;2*$&Lr>3K*+jFV8o@=7 z5|s;CN?<~S^1faonT73bu3RIyd0h4`tz+{*8q>`84_wD`+Syt}*;o#J?6nd|cejnCZROtPB^^9%9Wl{u_?mvBX0+-r8vwjMf zzP(rp-&=dp=a{{XZvv5}k1TNCy6*?gj5qjHY`~8(~q9Qr7CY-6YTeX z_;7?xckOij6n!tReg8O8qo2PP`K<&_XX-wK&fr!`mR|Mrr9cbxR(8AOO4ahM?*2<< zTCZ{VCSruD|Q3r*G*HL^mcq%n)s-Yu^6DdB8W)T6JZ%W~;wbd>RH2Vw3qZzkTxO(U2 zOeT6GjS@ea^sz@yfpmBM8I`T7UGp07{#*)^%G=D1eJU(Jd)WSK%o_kk?k^1=H~Q9Qpg^XQD`#qnz=;Ok#~L^4?S zVgjF8udPKCu5;Gi2r!0;;(YBOkwNuigGosI*4bwV+L*w- zNdgsV>KARgRIc>uQ#&oO_`R9U%Id-8y{Vx)usI~@poWRm9^DJF?f2K2MY8~ z+y+5CjEx8Ti60v)M!TaazwXfqA;yADXg7}HjIE1x^G(Xf`lw4{g>E%UHoH_@eF*)} zh#rgfZ%M0frwP@`KLLc1s|#k3LM9$a1xmjMefZpOp+< zThoslv88}{Nn~|t*?d1u=&#m~eyI30J~bmFhf2#3xj|eedczQm9U(P0zyy=3w{B?< zl!oPi1>NT&@KZz84|~&CLU{+x^DOi5>0T;+afC|mDW0k(=DRe-moZR^x8eb?Kn7MR zzSDVX@LEux-t3}6U|XmU zanVIpx~C~aYv=)2{d)6BqDv#q(X< z8-Q4I%zR5kGMTi_-7G$w3NE3i#0Cp1B3B23t@(Pf$ds&%F|+?XY_weYwh5OZ@VF@ijb znW!1r^$rBXJ9K~JR8w2dL5JJ)OqPc4v2geE9#s1^@lR!M-E(8{*C_*wXMBvMZ6K6n z;Qf__h$pAMMUSYFu1NPE5EqE`LN83vJ3nohB3&+1JTo@Q)-NJviR3?|Go@O!QoGf1 z_ZWEdCP_<|Y@I=M$qI7BYH95~O#mteq*6fz7*pTrmh{U(ei|xw%c>a_&+yH$3&7R!raFEUf9X zP%|7JM#P3{GHYTZoQ*z;R!*`kEDa$z$bwQc97;`UWek~1a#m=#MO}i0L>Om>FbG5l z`cAaG5}0JA7!Doqj}avU0wUNKAx899kk9v5-Lrc~%7G&!L4efEd%vn*{pwf0`ql5% ztM^|0x-g=^_ZUG7&(sOX81K2Z{wYB;FXE z&Su!^VDyz)#>%uZHsh=D!mIN+m-q7{R_V_9IpEOL;o{J7~5~VJ) zI(LrcuMhuda$ch{xxY~9(A{6KCPAY{8b|KnCs-oPWPI>5Be;cLGZcR7iS~}m(zb61 zE@jyowddmAZhI}-tOZ%R&GyY(lA+%ExFCbXWHPBK#Wd|4ZtD$cDsveFey$N2n7Qr_ zQB0Tjm=@{m_3rga(%q|feRiJdzu_>_Z9S6+bYD0>XN>2i&3roNPO;lPznkqJ{uPFp zYGd?Ms(_azXq@|QHIl|VG*YmN#pNWl>DIkW|Ah9qjm_s1L^XpsTy-WiX!D=v}2h zX>@1P>yP5B<_X#`0uIs(e zb%$MCjll2WI(66TlHOC2V%}ozrbEq@80>9gNer8b*+0C@ldGCXVB*8r&X~P;at$3} zN%J_EP;e+@m|>gg58GsTL3Aqv!G|dI>A00iwI0TGY9&munB;m-)*UY4lbd zrA3wNg)~1sq0lVg()p~v;M#=b`Tb@>MEU^y<-cPlmy^lM|0b?DpT31N4K61y%N6G{ zW!D$E;+&rsR~+15+y!U;8*MB1m$%<`R~&a-aYvq$cRBRnxFUz1-~VJF(%eNbM z#d-VNjl1By{r0s7U2(1zSDah7KL7dRiu3vDr+03%6Ai97l$I0Cul!1p#a(f}U0iYA zo{vVw6{j8f4n6Y?cjQ?*7XkOhW#L>z3#6Cxb7OZLIrQ9jO?r=u(tg2DK{?x4aZo2PCCC5Bi{I}L+>&C0kGPMgqpq@*eT;BJ=mUdoY?#dAEC&clbHI(&%yW|!yAc2{%%I{9QjGcljQWj9+)HVHQK zD%B{B;ZfI!9px8uBz1IlihPL7x2)RgY@@EtBcIsgu%Q7XOkWIc5wsKpCqh>A@J!KmFIjk5VkTxp zIXCw57+Lk*F1gSmvfyW(YMtU2t*U7Q@2~lVBVoX2N@Uydlw;WHT{!2HnG{lKB4cWL zL(X7AoS)@w^rH>@RJrw%ZQ2~9O%f+%Qz9dJ5bqJK1|>WN#^&hkM4Uwcvs!)`-5GRb)pUAJ`d9UnXg9zT6EV%LiSd3cQAiy& zQQAm-^{;`>#H>2nhzX4j_3po-@IF}ZI6MwYPCA%qsHqCEt&>B( z6DfR(V;cFuphTq={)v|$Q9xHFxik`elB?;x!$a-jvknx|aIF>MiVPH0-43PJPt&M-uuzordSsF>3S zaoVt5qh~id8jBW^W)h!c{p{>}ZvDY>Rwp*1nKi&R%`*3#r` zjC~xFtq~@}SWf(C(lYjZDL0-G9}DC(tk;H*oi9N;{DNh4wJJL3?{+JexzjxgdNX= zDa2hq7#`!%#~Yo!AVFr{WoHy25h=n*Fd>mS5L}$wJ;lj{q78G8DXvgU=1e@x*SgeUh$fJ`TG6rX=x7sSG6oMiV?H$nX z7sjS$s&g+)Ue`tgSqV9kx1(iMi)PU-8y`bdaV;gKv=qYh07Q42{esG^=#=oi03eqn ztD%(3aYD<&cwhsK`6Fx{vPc2;;l(C^l)%ShsfZWCM!lQYlE()Hpo zLB<*(5ZI4$ip)eklp;hEa;1V>p6RQ9@ek~Kgx#AUrsPH`d~W5cuG(EPUfg$UPLa$> z#wMz{%@1exWidN$4|dSuXTrWcpRstxih5ad$i1`u$VD@q;g2>t(K}&$ZRi8ws=Y>4 zL}){*`EEs|ZKtPfnl-iGimyu)LffnauE_ZnlzJ4=gQ;WEX1&H+w{~*}i~j{I{*m0X zklGXahp8tPkInKT5%aHXe2}#@7z(Cwk2LJ2cD7l4+)j|b-q_qns{^YJaM@~}%a`I| z%cr7U8`*x{z7lLZR*0!lN=wz?Lh}%Hj`Ni>L9!Ix z+Ld)8eBytX-3JEjlxV`9@xq5e*Lk;(}3-RKR~}L3=De|*Z6hz5wo{x-l29W_~EMm zdmXcn)CtvOSIU{jr~GpJ+f;s#xgOAA^QjuCr;PdaH_c`V3G^@eA;-idfWk!6EQU~z ztKB?h%$@C&Xw5;09Jx-5G7zB{*pKnq{NFNBLP`)P#dv5>#G>Nw4RMKBumWtsez5=> zO)m4_1>>k99WjsScrTnis#D}>BSz!VT<^(K~gS2EMr-% za;wOsGqp3vQHcK{>rHkDtRMj40jMMw4f=I{G{aaGu#@cbOq}4V2^KO@jUeJ!E)^>k zbt2SzI!7}3FCi`?g1JK_Zwd#+m!C7Qik~ij2y1O$eYf4b_SK$~y}T3Bt%dS}h@Rk(#-N zO7t_CRTFp3&J>j(+>73zSe-~JzzZDQ>yjoW7k<>hY1!-;M4doJ6-XQ?Rz%r;;%9~Gc0g7mS-9SI z@+wi|cVg&QE)scbg_Wt5L{)MDwxhYFsE99$D7MGpmur|7@j!~sLgpmJpjeNS{MyzIsHU>kKk@Ty>`ZU|IG__4w_>i$ExDp}(C5$uj^WqPz_Qz@KYtL&7A zvd=7`aOvf~GjE1O$=!@AK(PSrQwDY%B_6?~tW5%2@=D zq^e0;vMJ^?aOz@sO^R)R7*mN< zm)g-Im?A|V!0RG-Q&MikH%;pp#9b)Auq~D% zx)gjES#S`u#3BKO+!W!x|9Nip9t5A1=^9O0Dw87V0ywEsI(~1F?Fbh{qF!{mle$j8 zdNx-L*?r5Lv!hgiz$3&($cj0+)j!HZ_wws$5}uI!d~qrqTsaxy@P@`@Vzx&mYJP~F z@>(I%`&BFocBNuu{4^(Z`RFOpWMtJbg|ph5i4;M=Q-VrhDH_KwI|xO`%KB;7Wy3zn zZxb{qO&(4j;iPf3R(lBhygSqQqc8>Ot)d)#+NfTk;Nk~bSA<+utv`k>PPC45ETooAL2_YFaO0was9tROqx>aJ_`5H_I9pmUKk$}Eu1J^OnO>Z9|NGN}i-9rU z53vY7w9IOw?3~HW(yf~rXT95fAW*uf>H(aDjVclyiP{AjMOTa37#9|ERm5wV)xgr< zzZ6z3P@;rKu)nM~N*bU-bF5BVNbG>|V-Xns?KQK9DRct`@w!RH(UEt0uqgBYa{|7eUfV!wok-L>TfqBXMcR;|*}aWRPpOZ+3SunNag8HvnpA73C{N@Uktd2 z&u&@-J8?DM$Ql_%^u`5qpP6PW-ZXT{b+;lg=Iu$H$!MTe14fy zXKpH%U~W}AlC80|P7^z}X3d9VzuG&B{TFH89$%wEa}d^JVr#{}WZl)&VXK$W=^b<~ zH&u7L?z4wTTHB`2Y$MfM)o){yzi31e&5~ zIR>@s)<5cI%r=(W4Eo~PtRH)9hC|sQ`U-wsU=B>0Bx;vchB!KiL4zv}a`sul#2P~u zf3S=atkoDtI5=&({7PB)q2J?C^^$#(!_O6b(JJt?;DKP)S0LP9av9*XymN{3Q< zt{&Cf8YVpz?=J9d+00l~de+ zs`v3TEbI1LsQzv}2q)Cnw*imjgG)?EFfuzltse`ke5RY$p~)-HH{s-2D&Sp?UXV32 zwoE*w6?dT4HZkO&-e&^$$q;%^VfbtlqpOfELFxQ+4B7OBj>?d)(@}kv5z}{9)}wu1 zdWW{x)6(RC?rrwJ@F8KP16QpU#*~4VE>%&Hj$f@*>ACw_(3HpqDw}oNq+4x1p?uU( zmj5u2Q;AAlz@ewRyQ0#5Hi8$6iTZur9gmlIwob?inW|E{({U%7`qHK0kV103iS+kk zKO6SeS*Pg>uC0A$rEq6&9j|3&#ko+raJ$r5%2ZK`>!Qd4q)L~m+^Gwm8NhZ1&oUEl zk(_9h1bT~*#X}!ES6E*kIaFzP=<#*4+7%~?dEuhc;_`%aT~!mCFepB`l0u4|&i7oJ zSfYz7Ug7LxoQEBZh!J#b<19tDq0KAD8=YA_Nvy8#j80>&s;%(C?U*~&wPtYJW)`l= zF(C(gp}EGlyuSU7C);WD*4i3Q190iHM4Ar^dAongm{nDeS1qL~+#6n)PST}%hps`# zou@lUt-V63m^5A=cH)rUYuX#5Np<|tLr>t|uyXu(XZlf1&EB_$Tgkk#C%W5r<%saX zX7CL=XWyWQ2jDxMN2|fzYTmO?1b*iwcWvu>JD01)^Vdg`#oln6+P3Fu2~z~M2t5on z;1G%OtV8k7Ft4fD!{|V>g~T^%EH9&{4}LInRWqz|-QZNTex`n_H!pt`p@Qx9?)K-g z?)KO3Hgo%>FOpTQdAL5ngB8RN@;C6q0TWb%zNBl5i?446;Jj>@y{<6 zpVa{ad~uM2pNo{@=>T>{QM&a~?C#-;XIQcpeA8TwG^5&Bd*O`;)u4av_9WFSaLDioq9x?7F|0Wk?uEpuK2cjo|YhSpOzWpkGs#|pV6la7*#&d zlf}DQfGouifQ;YC6*ZJSLNNKdUhloOmFa*hm*1okxYSa37uOuY|N2lgRY3DAHQk7& zJKg$wA`otx-T+~btg@5M)R?T<%w4#if5JfUP34a`L4RD z+e>`xJ7&X+>+VU#SOFDR^Y%Bk=4$j6cV(-q_uZw@+!nUyz%HhLm!9A)*X2yFuU$Iy z((J(VGm@1S?qS)ypvknz@MGBeiqbtFB^YrcHy^lI1c_E^&Im^{{iDurb@;dR;}r)dkUc&X=8#TgE)W7t_@+F&g68q z_dH^2sAu^yL|dmL6wlMkZ6Kw}7C`1(0Fi92-Jy|$k-7_OXa%`z4WxJ$@0)DcwobQH zy4fDQA;nj#8Vc!Lxu28TSZ82K&a7FE#$s0^yyx_CB~M+hnQbw$$i;xI2K1 z-_#exR#)#zCSr5am@1`|KI*Gb;dp-!lZ_GaYC}E`u%Lk>05B9tw*^o8i&o)XGl&_Z2shR+qs$IyjOirV zze`vPJA#QuH#8PVj8Ly%)~Cn3w)RBL*j~P$BxBn<-cHQrrA%dWWYQxfWBMZ+EQD9# zIbMGN#`JYyvSaIi5Hh_&ipsakwx^cXTRwZibbCGngDF}hbIpE zKAkb-SQRZs^s@2VS7#BD_DjDGtZd*r(S+vtH@}ua_g{G3;hyhAgNIOic80z~7-&Bm z^a&fp-~QUyvO|6m7`VDhQL3fwD4d6utB68J_;`ve<4=sa02{mh!}2Q$y`v*?nTUMr zTXR5v@Xc=u)&u#OR8{Ya(ltL7a1Ti5U6u^%cI2hk*VFe)7N+dn>A60xy!PfSazD9p zdW|$=Jgmg+DM^L|PpLY{X0*}Q5i7;sb-8sB*hD$QTu@++=Q*0D7`raDNW)5GtBRJR| z+@X4V{@O?tN5# z_nId@=(5@#vS?IRi?}{EBX^jZxAR4oXFhUgoU`lQRzF4?bGe&q6W1sL&Vp6o8B8N*27Lie4wez|8iOuXNpC|@ z3E^)*@8?7+<1%a~0@REqwvXToV-Jf8%GE4JB`kZkAW*E|-x#iRw}m7u2z5_UxNuzY z)H1ijYmVfYa$4e-T>1+xOMJ01)vZ8jZx!j7NMkn}R7EC1ow}ylaW1E}q59v!`9c=OziSSq%aAR}bs17v15ND{;L4vX4q3??G^2@~)XCEk6ll@fSTXWN{IDbCh-xX)$Z~ZOpXR{$!oKF{5oZmZ_ z3r=x=(XKe|iu3cn`-|_6GoP~?%+Irj%zT5=^5eLGaJlceQn>uy@3RxlN^xAdbO|nR z7g>G-Sazaeho1FYw@$vRLyvZ#@%?NZ4z}M0F5Q8aP_8&9zC+K0T-2iFem2fUE&4XA z(LGpR&YW$`2rX(^JJ4Nm0AQ8-uZO$|c`sdIS}q;-(s3?zSxu!{6si?uIM9_@ zWC4yDE*M_MW644?Anb?g`HlKK(U`;htw#zT@aCrO#%_-Df7A7?z-lLN@!D!LiM_ z!R2URZdZQ$%*=H(ijAj0-aYwbe(Q|6Xl6>DEBd-^PBGXF(W&~}a?BXY8EJ56Or8rJ zqO3R_G6TE4sp2ZC`C)$WCUq^rp(>d_Kro*{(@B=dndq_G{4Rw|fml2qH zG{VuJo%|;6(-83WjU`?=)pe;GS0@K+Xtk-mkLrU=nwtr|Wn6;;AO6d0~@q;^Mh z@)qtFB1-R>v`yIIs5uZm0ZQ_W+^(b`p@s09#F9Oor(?V%_2u;ZpLgYf@1w7Hzr`?%I#6D@){x0`|1fIW_>6cv!y(L1#kLfdM zcwp%y$^Iz^UGISDSh8SqXgus^I3Y;#%A)EuF<1h0?M7Cx!7YDGW?CEoLgo*lm>{Pd zz8PkWA55CSCi19no|YDGC!nalw*0dnCRVE{l;)g?C}f=qzMP#z$ajT>ln>w>^PT7i zDE_|{P2W}Af_?8f*n^m5!HS6R6=$w%ojLu574#deXV*Jv#kR1ty?xQp(a`Wd``>Tu zG!6Mel=w=P@njjVFp}-ra}~qi7#1hGS#$NwLbZzP*CFxh6pN!OUVy?yFD2fx=~j|Q zPRhf2r^dqh*3U1m=E{b7yjSmLx4BJz4JX>}esc&(^F~!+E29M$WceMw%O-CJT;dh# zuPf{9**`#*j4aV*ffH=a{%SwfkzX=owJTR~Ra%6w|E$U3fX`VQN14lnktXRu=6Sxt zP%!bK`-CrfA#U0))4JY~eM&8wHN5b*h~}aUvbFyS#_4JFbdH zJY;ERA6_S0w#(avpm|1Lj zY{tT*)|fNw9Mi=+R_%Qj_>XvplACIjWnhF%N6*Z3C(X9Qv1@sScynCkrfdA5OT`c5 z1?V{KSm1A(8}7BMr@Z<*u>?;N;rdC(xRxT{f(;%v(OP!+3hC3Jy~H|UzLs-qt3fi_ zP|4yLU~J3?e-7M#LSFuO^UGA7`Jj_Q9cvzt+hK+S>68Ts)z~s4jZjlADlj?_Mlg7^ zoRR~*6_z-JiG&{IY{{k9_E;&SzDk+VP%)!R$@-It)n}PBfveg>6`lVM38>6wo`jtk zb0vYQq8$R3A(hC;E8r^k?u!6Ee2@j;KN3@yQNGeBdBBRf6(VdE>Do@Nt9gWenk7Ou zJB}E+t)3k>&E*(QV&{xIh8-hn#^OV4uiNMTcCgR!v48l>wZ=pVd~(w zNg}veeVA=tjFl{S!_Rjlyt4zNHtxVhY@K-=!HOGN1fhDf*U{$W%t>p>F@_WQBA74=|5IkR`DTtVkS_e-t9- znKJCCQa*CKNJLz&W5%cXolFrsaMOdH|4iYXcF!0Q|7k^4Ir%bZkrAkPW-+Chqt&ES zEN@`59a6SFvhlF8#6&^FFypr`05vCxOpdNB8bn+OVB*L``3&S|-T@>eowpQNto3;8jK5w2P8qeOJ5 zgOLJ2BuKoA0HO?&fFs3a;ZQ^uH!01bOUX-RM}vwMJ!9f$D3CZNojLrB`&cB#aa<6o z0***8h?0$ADm4*Yg|$^zXP%@{$s;Ng`QP$X_QtXl5R}@;Fik8vZ5B!=XQhje&|s9N z+fP(V`7?*4omGO`8x}PO@T!!bFJekLfg%c6e3~m#NaB*S3!H@hA?`yMqn77ggksJy zI^scoX+h%B$oN1IM?5cGksXFfxrzq)*vY1&0O*?w0kTroW=jmot?}KG0g;FE|7*sr|s0W#a_Y4&{TVZ)R z2|n1l6r5HU9l2P`Dw-T3XC@?jnkTTzl`}2p%igi`QBiFe!2{EMF-b;qrr=pWK>RT3tRZISG_+5I*1)izA4)Rp?6 z4wdG|kip6W^mIdDDwV-x5(}th@6?eIEl1PikLUWg#k^N+qX=GvUk+&fA(W1aL>58m z8Ap>5jD#M}Numi8L=_;*oQ`BEP8~-Qlr*FDQ*^mVS(JrTG>DF{%)h^hRR#e*5vrJ+ zl9E!7rBgV1?8Gr-2AWpqQV%H!qk3e3f&?hW97=joNJ`hhOvpr%|1GrC&nhDXC_?|o zW)h`55-7{xBFEBWZm<#LGB|+>x_vLOy!x`r$B0t7(0P$(QT?dXdxN+H?G?rABi%cd zenTkL;Q!(4 znfGFci8);vHLzk!`>Od6Rx-A5Dq?CSt+!7u3hZIC6ib%O7GgrOv`1M4+O3Vf)b*|c zKWXMRB{OA_EQ05#aI~-eWklvBT!h3cqAa7GKO^>$JwcU3zm!7n(G>5uBRE82Ap8)} z;=`gaoHmFN1h|-$n>lD(2{{45X68xI$jOxZ37A;&7gb^kE< zWG|_+*Be4e;t=^WkfI>|1D4cX%ET%s&6&GsdM`UD=;i%Avme8Zr zDK9X6%ET-dA1T=lSiQV;mdOb@flq2!X&e>qnMFwUf@MgLMTZ=OcKL)!Ts$(zcZM>U zxY3j81syWB9TK6S$_8CZm?(5y)7(y80V!WaLPU1^bBcID>X^aiQI5)qP^Cu-tV6*(7yWWa7d z=$7J0mdHw6tBF2<<0RmqYlAK_%O z3_VmPF-d6 z&P**?HjyaxXE>=M>KEg%p=*|pPK4}59Id4FD@Wv|wp2u7iC8&m6!xKk1*1iZ%r}t+ zZj}#K+$JS1{R!bN%5!cabZpI-Ee>FZ$3-R{6Qsk;Af!&+=Zu^(D=(!JEm(%Uj1-7s zJVF^Fn8d|?0&BlcU@oy@IT2Ie~$R<-|b*Py%t`)xM8CW*?5>AwKfq706E% z@_ne=#4f)Z)`lZiLgR{&`pIC+9OQ=dt;q+QE@MAIHwL`-H1reE0LG=vU~~r6DTWcS z6dk90feCp8(e}=595zpzahOs9$Fjp*#oMx{$M{C3-(}_TUY5f0c)lF+U^b+hr?vF1 z>iddEdl5H7c+v^}p{(7-EAZLRg`dp)lxp2{-hVXc#O5LU)efH+rh3+Th=xCGhdo=% z2iK}8og7lYS*st9SugU7_OX8RS=+WtgYde3zD4_+;X=}e(DdsQR(iU&`2I*FBqkhb zyV)A!e3|$u3|vSdNGRd3Y5NJu!vNJx5gu|J8(CpJuroB1TGN)%+ldL_;dHzHr_~7qRQxlOXyu1wrgCb*TXY($_5==9qp~ygkLPVTG`6slWp^g)qL#;%|m>NJFQ3I z2*1{*GYVZ?DQ=BBcOz zPAtAmid-zh?1vcnj&tF(=sSJMRuMEB)+2#&Kw5I6jpQzta9)%uT=PYGyPutI!DUez zhskT8`3hY{9#Cc9_ z9j?Ws`QS6XYsk{$X-DpsmmaPUN4G3L{P5MEj_=?()1Q4brj_d9E5mQbInHO>@mq0z zseWd&`4;Y$;oo^=_)Wb3!f<$lazI67Q;T(mtgdox!7E;}m;@8%$qIh8c z>UDaL8E;X%Z4a}jsRlGVnoTqj4d)= z>ODGO<)QaA_vrlU$&De9jq3)2sB$a5DH+Ta&tvOYEkbwHS*`T0aGT0>!8Yz=1VjNZ zgKv&dJSICH2r}rR;HH1Qk>Ytc8QjZiVbTPG{Oj2jA8w#{=$K)lcn0P1*HYfrr@zOl z@i4`zexKc>M?3a-yg5u(+2dDlc@MK7&rq;!9i8Q4M)Ixx86(V^q4$W_((0G4W_3V2 z1xn0mla1~g-i>qW>0g}#L)eOEF;o3`cn^qu>AD5li5i3@hK)qg{2npzqgk1%=s zzCQ4(HV9JPoAiF? z(#H4wiKn;r-i*f;s*=I;lL=b~(lm~7TxCo&9)2xkBK^zTUjh)^2AD6iJTmEm(AIp6 zG`Pl)8MbedCbu1DG*63?Ok{ie?8Xe(+E>SdgTd=JGo`O>WAN!eyh0am^fCBYSDUNw zV--yMed7par+xpcr1cU){HxW$VT*Xc;0Cc)EPl(r8l?DUd%7^z?22!O`IWgkAl{|X zz~`lSYi_#Yt-0ZlZQdqQbQ{jRG@Gc-lt!1{+CICDAyeo*b4!Ys*B`m->qqOiMoeVZ zf5sKx?@xTi&F0Fzy?NAX=x+(GY}Sl0Fl+au_|R<`my~`!xZ?Y6@U&>_MYX6}lj3XJ z=)XpaaAj~Nun61}k4y^34%GoZk5^t_Y6EcJO<9-Cbx#k@T;UdGX-58Fa8?w*H5=#j zBzyhwI~J*-u`6w@@*S3Vr3ehbA?%CVvG}oNh7xQS#R8$FJ8-4XSEVXp1x*kuV@oZS z4r|rixojETLoQsPYWm~GuanMUU!@*jn^L-}wmY{O33z|vey+^xERoyc{x67DsFq=^ zle#%ewx0^()>&ny0^GK5IJfQoUAWO$yW1GyiLPYnVyi_a_6q{b)n^$P>_%4*)u~Z< z`+16=F)FZ3Y&6EZ#iLp*JwaNA8f-)sPk(Hm-Ghk+tOTFtb?wfE&(~L(m(%%e9;n+! zZGOzs-{<$^SL*&%7_G?nm@KPTj+%bW znNG@dfl(I@cZjGfJmc+0yK&5yeh6!85tl8LTGAC>e-x`aQH@B|rK`FElFI@$v$P(K z&92p3maFP&X>9-Mz)hMBMFlI(4H@I3eo>Dx9$A3ulQ`l&v=&?z&OF${4c+SZE7tK4 zmn^ot6*+2JyYcI{ zXHgYQ-w>qkoDGTN?0io3YdhzE2;}bi=Ij_ae)XN1F36XD#-Sa#o8O>){VTHwx9T>x z4(ILS?kFTI12na11ayGqcqNn94g)Rr(Zu8v^UNL&8GL}iF<3jbN8+Ewf{~&EQ1%MX?E(? z&SxuC{Bt9EpsMzs9e7WKK|5x;xW>iYqy z)|@HP^iZey{1_W;;C7tr+HOteHC#sT(A)gJ!VCYaAhNwf-4>r8-2>L~`Bt!F17tyl z@Y0ylD4Q0M?#k}@B)2_yofKUVU_oH;^Rr15^#GzEW6=0OxIT8!Tu(4%=d+`mDT5xQ z`MF>?`or@X`T@?Bj<1~0^SAy7+NgISYU^Uy=69G#g6KF9fpU3Bb%@xJzbdS#H$6uL z1UC;VT7IrSS`1W22&~4krpUr-dn2h>7>~ySJqCTkmj4sci+O^caTSUvig}v3o(fAT zo)>J-BC<6-#tyyUiKhQG=2VCXd+$EG>R1$CU}wkgN*Y5-4UMy76Ft&3f2D5TpLk#h ziX~RgP>H~wtA#1l%U*KP9KFDoYNVbEgxSyk$JFHY3Hpr*SO|&+sDN=PJx~G9z)?wl zL&`F6Nw?5D6ZCxr_pTDX@F_M-D_ewN9LFS#L06qlteOK$Jk`AomEEfjOX#XsC3g9^X@@7dt@f1jPtCWH1z*x@Tp1|zv!rgZIE+2QM2D;LLn zcjII0#ZmHEIZRITvpeo6`TCQ;A~(zBZewP?+t_&E%z+r)q&hC&lm2N=XAQuvfKf!UC6SrU)(J}w$RT)maM(pDBXVh+uPf} zC-}BIkdA)yH?{NGD6ZLHGEo-{og|83VT?47NJqa&R$@dZuEdcYFv|ue zJE=(D8fU@#?v`)q&C|lolC^Db&F`n(-I6r(9M(jtQl57*pzP%a^y^pCpzKs8$%VZL zsl+6U@D8k~M_g16m>gJ|t7zM*>m1IV(?}i9vWHiGSHus5^g#Sii`IWy#-9-{E!+<- z=l$fLEf!1h|63%_h4-S0k|^i-gNb*?|KPW+8vXf{SX}b*;K1kYv1NX5k;(Qbq;?z< zJ%@dE@ZR8t)y5ESGBwPR7r+s+HpQ^P%jVy)5PAL0wJ^sB4!Jd?6z%fI;t@aTlduL? zBtN3k9`QJkj7TRVOlFQ?2i(7UOytc!1^>_dvCUC5H{9RTXF_UNk(&h4D#O8n4HZDedAQ%zwz7Vl(fcb^;U9KyxG9a9hC zS|RjON9I4yn~0GRRqX=TULEtr5rQ*b9!pV3;y+Gg+|&hm?twkm%l25$6RpC#r@-T<%EVHn{H*g%T)bM%s>A4|lD3 zk*_5}@={*~OUM*QdR`9G(36CS(VY2#l+)^Wujy6^Qo~7kgmxk8p?g7reZ}L z)33$pF4=lriBcpC#q+jGDTOvnBq^rl)|9CotQvL}Q%TV%{t#jzacJfi>;LLMWxSc% z1SO;^1D-(W*^y5_u=bXjUP~!TxSy}4iKHWGt^HL?K;WxEe7Hg9x3{tQoRTaT5i!B~ zW!{`7(HdrBna?JrE%qi)j#(&+2}!lEg?od`%%`P1B}Ir94AsCTF}g4O#r z)CvTIZZaT-h3b3?e+J4M;?o;mgbF-I^;g-17FliD$+D*au-PX;&hO-^&I%uSB{p!ZIS!emtokomuB3 zRx`|DR>jX&_I`dOaaeufBYXn28Mo?Hw7$b*Q5DA)W|XWeSgVPl{^cXUO8u$Y_D-G- zu&;QR#jgWm@q1k7O_llbm7WH1xRL8=OizC3bc*8JW31F(tawAfG0atrK^tbKlhth1 z45s|fP`2iGn;woHcVG@G}sVtr!{1aO;C1<7)AqqzLG2_CJTDK zR@==4I6!=ga*(ixUsf_vK1I&lrp!JCq$l?*d|V3z!<;mlN+Khh@%2!csFJ)crk zA$s;Zt7lVaap@N7K=FjRP*>tK;!uER_6Sg-VpMaG+yqLk3>6tFmP|$R#z-SL=Li{m zk}1)c!DdqBCj4nCShWd($Eiap^LVoP=Cx zI-z{J*6a7vnOHBFXXuC`X#?+c!QBbPL?I@7=8__bqbNKX%P<_nn+B|1Sr@rv@<%x2 z5Pj4?s`l6$RZeNyHc%9-Tx01&h=P$=+;BqUO(N3mL$GhtBtnvvSbBYGa9+qmfl1KF zoFRivqS^}5TpePjRkBSD;ZfB}vN1FgELo%9av|!Bj>sJ=pRie{Fn2ENs4Awh+Ab|va4bD5%&AKxOLr`%N|C6OTC5OUVvn|r1dg9LzR(d>X*lt~Toa3Q zh4ky$VUeRivLsRvGxX*0#i{aJhbLlb1x-;^i-4#(Efep8 zj-Ek1b+juk7K&0sCPAk=3Vjoa{Lix^{2VZ!Btf#A6xT1LQb1laoYz_qt) zFGiehsQDrSGAm~p&|WHWD)1Qr9YG_Wwo~|j-K|#R z04-}+!^g*Zaw#!|DjNEKg-YHAw~$YAlI7Y5TXS#%tdtDPR{xxkk}-1|UFn&3;AUL( zyDotPl{(~9E!aX#k(6~VJt~CaWjZM@2DdEHPnC5M$Wf4@p(iYK;Uj}jAJVVFQrUC=Q6VX0WxOg3owEuj-J&j1R3_TU0d~f`?KcA-?DU;f|19p#juMB${j*^_cx#cDJOg#@j@U5DtY%QN6y$;W(jO zKoAiOpCdvBDje#8seByv^x_0lVs)cA%Cs#KcvjphJ8G#<`h^(9VMg4j_B<^^Lf39j z4C}msqjK>pJbmO!d=T?V3!|48qPCb+b_ zV7#=qQ9MedG+pg4oEJ{S^#hH9mK1exK^L@!ECqUk)27Z=_Z%UDzxv<8TO>M09QQ-I zA0oTl0fNL1}YMM(R-O?Gis(LCO)%q;!OsuO%+d~RPG^1LibhFWQhc!;)+04 zvl$0L=tUN>%ppmvJ#>qz+N!p0peXYYDIj(cyh|rCqW$ zwEnKVkU$a^7Pu@Tn1wGl8wR$;hdU5+4s`1TVG3(q;!>RWdr;%8LMZP_Ovih$;H3T{ zxHk<7a*J{V>9YkB#W(NAi##V@S|xWxd_U05nO=}ss<{MRh0XzN`4?W8Lq!U;cX@L3 zVk{s-YP#!2S%~tY1#|F@$sRFP`QLmNmZXc_g4gI88Cg}Q59b-|7jn z{4fq}n%-wXD|w%(JkAs)O)4YMyCxgD3_Wc0BuWkf+?R&$2{%Gj$vSzmc#zPY!@EBVs}W!t ztM)W(7B3#BeTs=!B$MVOI7r%|3pNIsD9zLB9ae?zcx}x2s}~jxQgOc}IG^&Sf0Gs| z$+5gVbf>K;%=ET7PUK~Bv(?k&>T@e2y$BjV6eb*rL#(`&5&zlji2KAOmz_{bi5ihW zmeSPArAXW{rSyU=iTm11IogMK@*|{+lOj@BbChD<@cq%4GEOXosFi^JSli3jut3))WD7^{;@hGM%N+#=2;ZFdC(wFRL zuoJR|wTe189IYu4gSq~yC{zaoA?$Ffs_c3K=!sZ;W;;C2k&P9Ez0%h-O&A>>8zw|y zM<`(x5(gOq1n%WxBaF{tG;L-Q$ssuBO!(_RXOU-bzIp(e7eSl&@twpvB%o_Q$r2R~ zndsoW5}DC3)5EXE6;1|L5}LhgFzNHy&8U$X0g+IC77tfnd~%yz-}`p3ORK8>>8f4* zTz$|F+4`p|xBAB+-d^KtM)T-|&uM&S>f7yJh*I^H-d3kqJ@uijosgPdxQ;i+Vckt= zr{8o^_(eTsXnwTmp4wA( zn4@Mh{VoJ?|p>_VJ_;bvpL4{^W=3ehQPNRt{^T4{Tl#dGv z*E?5S-DIqUd)EOeC@jZjbC)~)mt{SCqW^95KCO)nzZ&}&zlz=%VdOZXaVs@JrXJGs zltnZYSk#X0r7Suo>yeP0LlW`GY_93TKQaWnC237b*<&2pvT z$3JiBi5|bQv2Jl&{!jdtUVOsdV3c_St9a7}-H~1wps7Lq2pe=E1KoHDMI6$}V&8A| zBjHb2(`}FFc2=%P%8%e26Sa@rlaz>;87*p_$lBhz)iH-&JmHb{l%*pFq24>TU0Pw` zR6erRUb4;v##|2db0{-X6C1}hcTm90rvc~%wea<&ACCI9U1w$QL48lX~`Tet#?WxJLAD6m`sd!}g88NOiibE<(IWVfAKdnVY~TQiKI0 zJ<)wF^d}%$T)D0Ms*<2Qie5O;xa$c!epODT{qRJ!zJ8FrR9|WBS*Fq}RdIh=S-FDh zBTh7fYh*9?E?aPsD~?LRMWq+6IB+QrJ@wMLsO)?eDeb?uQR9lEVl1zhEcdz4HA&n` zw|=I=sfaWkqv<`Nw5YpWT-DWm$&f{P$@(q}lk}cBxw_KolUk*S)V&8_Ea}R=hkKW8 z^Lw@i^qreCaoK#6b@E*sZl1kFPW?>%HP**J{ysxx;l^HydK)-4HFB`$jtOD= zYDx1s7b@2GrhCb9!W^mJ{m4q%v@rg_!58sa?7gMDy)__|g~ zJm;=B_4?3#pn`qiUd#8JZnw`kkJR06 zP;O(NsMA^IGEZe6sQw`x!xcWbyM0c6eff`oJX*HeaI5YD}IO`4|66>*Jpp8kMYKHa{GFAinh`HZ2}ozJM@`37qv6qCoq#odo{HiZ7T@oF;*3@@O~vGay6>WRz8{{WO55zV zzzfA&{r!wF^A)qFUGbqt@l~!@isE|@u{wq{)keKOV_nNvzKi0um8`3&e(u#4k-BzS zS0xj+%VS{O9Q6cwK_`J3^Ithjvl_kN*3A6zn{PKufQ-DY@JqSmiTRkd18Wg(%nHXTa3)yJkI#DGPnQJu9P z7G$~oCwfY+t#N0MxZ-r?z?GH9sxNKBtzOmd;P5Sbz2$XrV&_xM+7oOLr(y?Ga_80Y z>O*>RW0S>7xhvHMu5nWQV;#uOE8OZ3WzM~Ijr-x;?~W0RXRbn>nL*KPQZb`s)5Zxi ze{qSFejIJiP^rdtV6k}8{WPIrOtunKY<#w51O(U??A58432rBtlHqcp(!DE~4v=MB zjb#*Hr=jJ4m+P9bJ$Z!=Va&3h2paEj@C2zq)!#^#CGL$wlG!I%M7EiZM1+2PZDNe= zC>|Zm`D)DMmNCBj{zqW|d}3SpA?A8+h(4t0Az_& zJ9GS%-W`XVnl+@_p1YEPzq1KpfAGSqlSF~R;AToV^{^ zzkMbspD04J{o0pif?IR;3j^AGK1aOH`_E_d|AV&okFo5y?)=WJci)@a%{Rl_&F1J0 z)nclfP5O};X&>pa+|tt8>Sl{>5wy^v87)^(oHsHTnHY*Q5*#ddVQi|KExF||yKS$4 zFp0DKL{Byh!T{qy2^8!u@<P&oJL^Pvn|Q8zTUhtn_+qM@ewFZy5n55gomE_ zIbgk3^umT7buo=S^^A8lp`60jw%6V~n_;%2XWl-W(c(u3Z_YC^Za??dJpao71S2-g zPNxyLelSI2^=Ml=bLi678C$Ww*7tJIwYR56A=!z;qP5(V^NtXc(2NY$;~APH-M$KG z(YN4KA&%n-;d76atvJoNY{jWJCzDeO9mW&d3%c1>Jp^VJTai42Z*Qoptsh3EFvUm& zE6NAZ4C{c(=dJO~l#c>$0mP5=)%YGOZSFv@ubq5^3epw_flXP0nWc}$g|)U3LOYx7q0Y@9uofHZ_8VEs`Fv)oluAE*L2oSrkh-hx~s?; z*pV?aOo<>ZH0s_x=P?cOva^ZC68MF97fSH#gyAMM+k#3m z9kMQ`CmXrNnPr-r$}Kk8bS3JPP!CG9K1wA~-4cw27v9@u$E0?yWd&w-v|A7M$0j!`Fa*^4V);3(nC|2eY3O_C==BY}^CF_*Z7Bp1?H<)-@7g7yT4kv{HnGEeaC!T5GC=gO0T^(alPpLw8bfG7sM_5 zR-7+#A{;X4{4{OFamZF2PCoOkIIqnozson_=~Q(x8cmZ!ZNVYzTXBTfl$B~~4>T&X zKH&PvNsLW%J)IESjHYK$-`MU4v$cJfN_S(0h13x zN1BAl;(>G(_L|ud;grM$$QvypQ}EO&>C7^M2`*5l??6SO@0^i0o^Q{cTb#ct7~^Yj z>sgF*Wg0f7jHke9fi}IGd4FTJF(Wlx&VX_=-GW8i1%x=+O`2;=+Qe8+t3S{LCiqqy zhsc6!(-~C6d}je)^RRElscdqibeSUk<6T;yy$@Xk{=D!ump^a9|DWh{;Y&^aQTP9# zpz)8UdJpE0<@+8A`xnZluL|YuYSI%bkjkCx(B09Q>!#OL89YCYo-MKNp?+|#SIDo6 zRiZl+Y1DYt?nh91^N>lEZFI8AtL|toB`kw)<&l0boprqy;itWQHC_plc2w6?#_Nboe-9<<}FH1Xdc*gzJB?XiEd zV+u?%svtJ=w-pOzO7!iZ#@rYZ>E|O9Hr6vY%7Ex73F6tuel`9es1*aaWB|9oDiX38v!1T0i4UJYgQ;c3d93 z?y@!c1@|ddQTiU$y{kw}m1yM2BJ-HY%w;TgT$u}wQFq9p*F8iH=U2GMjDao!1MlU5 zxJ3!26qx`qh6QBX@J=;}MrCkdb>^ePD*kBs)RGu-=Nr+&#RvgQRUFGTK)bQ78v!_3W5!=Ecm9lB$=#Qyobt!Kw0DH zi`zPrHQA5rsg^xKA3-EwA{`c=_&co*AZO!cNbuSqL*c=tH9jh`#QOUs1Dn9 zBa`1@>uVd45b=m0@|a8F=P?OXes{_0ct8fCK?jI4VVvV9-V{#*ldEEOo^U_iUAh{S74pR5MIw-o`_5&{c(5 zF0vf~U;!4ES)K1e-lno1M0;hhCF#1Na}{^8u(%{dJ$g}Lpdvj=a!lEpwxgdRajP|ViNGc*mf_cjj*5gl zZSWUCPwik84TuSzxGQ+#9zuXkW*#Le`Qs! zb7grmW28Hzjgo|{6W)VE-k)`fPZ4FEj~1b(kNrgKL(1uHrVqHa#L6+>MdHJRrcv-o zT%lr{7~RxkE}ik7-iP zdP%3s?Bx4iB4I{h%SeX@m$>5UF6u(ru@0+_K?UeIVe#|0LnBi)<~B@II}Pp9<^hPF zuqnjnch;cdEvBW1zGz#CS;b#PjZ-7GmL_7PY2yi1l4Z+LN?%}^?jaC)88S`T7*HCQ zDG670uf__3`ar@^DKb+EnN)^M{is!b+@3~|yg#!&i}!jg<2BW`;4? zCu}=^ZQ9k`>m$I>1w`9EdmIqf6`f5t}<{q2-qN7RVsw*Ht#w&wETkpx@S^5nvY@XCT z7>kdieC{uavImhm!#--fhm6|bh5x7;CH$Vhi&W~Fu-bG~98To!AfZdoBshpfgX1bY zzvYnybkw_eG8cWHC7+ErtuXI$ssK7wGLWQmike|Jw%__)f-~!Lzg=#55`74OVT+Iu zxveuYw9B$t9MPgg6~OA>{!Pbekf^tlAb5R4O}6Zh$M%5@;mCM1Z0VIyVl9|3jPpV`bz1LMl)J;-lc?cGWSIFB$hjB3yCt`4OnlK9>ucly8?rIQe%(D}FlUPK~~DRe=b{8l}~2 zv+XLo4APF&1!KNSR-9Y9xVlu1JMdf-#$^KN_e6e?z2lOCWLKUPB~{rm|J#rHnH2X7oYF0F=|6m=*|D17`!&mPavEF)-jQfE=Z4#^@Nv zLVA`>t$=CC+`=hZLO6z2!m}o_B#%ZICF@dENH4mqIC^0|t|};H%eA&TuU26<$qJ?| zs}n=VE?TMVfim$T6Q6*=Na<~u-)T_NB0uVgU5{2;HB0K;iq;0$pa!NTF^tG-01|Q@Hkj zBn@?4AD!nXNu%lma)Fi0)PR0NQv`Y)VwpcI?IEE&FIMy7m%?;$+ha1lN3W6aCulV# zlFz$4pxO}2TezSOOt#G;O)UoO-Eq3NmE%K ze5tYx$vTv{KDU!+sT1G1h_FNAKqMQj}JMn{<d?pY=PH;Ll40REHT>x}1XwQNwDh zqoh%(8&W^$a=75G(=J>z6e&w^CYkKHkU1*NXMdJ5qKAlI*%fkV$VR;Oh4u*Le2WM{ zT++>RmB)Djo=O?z|_Io5#3EzERH^r-Ul|`?VULI+uaEaLi%^#4U0xMA@Awba6^ln4=Y;T8yHl&sKuA)|5~bgc2&% zwWQtfol^=p(4to9dl*|6LOKNpYtN z{D8|e^DG8R$}0tlO$O9OQs&BTH_Ky}|1vqgE4>f?l*iLLMHlH00=IK=F5*}y(SSUb z{lBs7i8QX1>^d!C!4WFlT2y;FW<~rW?^>OeyE+%x-5*8RoA^1%1a6S4yj_{~nv{t@ zu^QhRRyrSs<8~-C_IOsBspJLT({sME0X&- z9idh|45UUq*70!H5qa%&(IRT9U6FDVWl~*>Byk;aWkOk_6@&W+37)DzdLodTFrY~9 z9M$|{5-yeLgU{A92`w(UPQ}!}#b(D+Wb`Dd$V8ny$;ZM(ypmg4Y$&d)97lP!AgQrf zrt+nToq9#XLSF%#W;(YWInn2Er+4NK%+$e`-L!b0Mr4s@fS8yYH#aJE2YN&}+<=?f zk?^8*`D}TGq|_XEgi`xbgvLY$AF6oM!wPzLY`d-A{hrd*9f<_j>Ba+&;HJ3@(aNS; zv5#iD)t1AUr5i=)#nhzPs|r(%9Z6jJYfH+cVjgfpg3OU5Cwidw(dBhioSIAZ>3GRz z{br*+VOpjhpc(@{$lCxFBa-?u+25~<+FoM&%`u%uu9{<2(8yll+?z4`o{q;$$kJ@+ z{FY%GFR}H0W$g~TW4#9h3kgMW^3ED3vRHG>@BaJ;{EpV~(mp?DkQm+P&8TiZ*Yv(L z<+L7n@B*{`>SMjjcQdF_z6W!?)$ZlZw(ZB>$=#bPUs-#cuUl~?uMy43Kz8r@R6a_4 zne8j1E#Jzfa&rD;T(z~Wc7Ltai5cvaxu}mp?F%idK?A3Y^J3xTt^*n&8sjw>&-f#{ z`_+5+slR4*N{wque~Je7+im;b{}U8_$)a{IVFJZqRXq=*w+Uz3pm@8R66+~4;iSHduZM3Gy=O{}X`!e_aa0eq5g%1Ood=IG}8|J1@Q?ALZKVmK4S7_&T z)z0ho!TI^Hl6%Y5L$q%g=I*?{Rh=nb-Ew1&Wq`^iXUjJXZdBD2iPeUm%eHk z$kK&s&^%xltF^BzV<^l=*z7YwV#+ySh)JJD&ZpVY^(5g`udxn?-$vfrMafU`&h#@J zeYCSIrPIyua^*8i zn{q0ajVbPijzx*U7HtBP;{8+{7CCBe3>W8y*81wS#D#hl7Y{ACE#P6{&N9^DdUiT( z;E^mqy2f+owpA5>bSsV)6NLqr=X<_2hou}YD_e4WLyxxND77~BIIIV}>*u*v%b+CF zofmi|O$Sg)_sR!NX+v|xOhmL9y$mZc+iz5ue_P&op)2KFs`*^KF{*qx~vz zeCMhf!-c`%GZ=0jTv+}oCb@Zic=Cj?z@>jTp)+K`kS^u@RH{O{fi$1kl*@hJMz{xdSs`p5PsuJ|8A#T35m2swX#e|>(6%4#WIgQIpQ zN%8xqDboN(!yBj$qopq)%tUwwRW;h?8$m{eTV4?jecDZhhubaq^IEwc>35p?>#q0@ ztj#3LXyl`r^|#aY%wCT3!*-u(f@T&h%kJHI;nVq6b+{Y`pEe*Xn4i=t`f#!4G#u<} zb@+$cn7}C?Z=m>a;bYC)?7ZwJ;-`ENQ$-gMfN%Y z+S6-!N(n~_(=s+sQT%uRXEVEdY0^YAw!)-1rKH{cUD}t~8}$sx$E9P1moCwbk!s`oly%ts>h8Oh*&tjLnoVd=E#JzSzT-2?x8T;?G_BR}#XYGe?IDpBWs$WqI&axaHim z`7DH$K8lVOE;WCEO3~S9?u!1j5!81rb^n?`8yv0ad-F5LB zBPo7xk=;W^=inC4-obmLSN`Z@&y41o7GV^Ck^66quPZs~ILIiT$NhvXEbls*&I0ML zA5L?HzMeUq8wMZFPUiXMM-Xq+T;?uoW7&7A?NPO?#H^-+t^xcE4s+?7B>}`*%>`s) z*?2YeXCUZld@D{>jhC{*{q2@`+!j(+T0yj4!>( z$WT>(@qKTQTU~F~r*v4M_jyt?GV`mO;<8jlQt>-m{g+*q^>zj|2r>lJkJkJ9O1(Xp zpX6NIs%F@^Zl01g>m~m?nf+XPppNJ~E(mBqRfWfujtibsSo6mwRYUBB;ry?CLqxZDP^h2*I zk)>T{nnRc(;sSd=snx`;KTS)3gZfkv6fq~_>5}pRVNnxikhM59l0!9xTYKVowlj<^ z-SPWSt&Oh42xO-RT@6n+S6DF&yt38`vJeX$;M#+Olm(x;HP7PjRBLN5zA>As-IRS4 z)zZm{>}dSp%LT@7yr@)@$<0%x+TOl-s=ocv5@tzRB(`3;adQS-AKkd3@FhJ-Q>N|7 z*oW{~Cz-ys1v&ni&mNd^Dd*bs`!0%Iy!Tt*oU0n|di(6mcp9kYx8}g{N8WxDSUq~h zcZOJuF2mC2ubrX8y1u?O1NQH{d^w`Q^ZnT?Gjds5`}!nGbH#-ZZ$@On;xDFs6i}}X zj6E$pO6{{dC7bQ;rVM19Or)TXpKA*a%dy`&BNl_5Ct!@v5&uu$CrsNG&97kx6xOz{ zUr(TiBQy=vsW<@Jdzx)883qTQ(K4zaM19;67IS%dHX~e{N?}VeI<$@P%Y>_TTliAp6EAiVyXbNUD|fwVSgU56pD5stJxjLKec?*RH7?%s41dU9IW-Cj}2~Dc8Dw zTDga1_LIz!LFW+xZFSu>&pCM7d(%I^z3tnB)+S?VzN#OZyp{9Puzps1pay-Giy#Y1 z0@63E)ow#hR*( z*_3dd&r%`}9k8_Xo8JW^UAtq!L2?iGB&4AAEAEwu_SBpqFH~XAjj)6(Y+3zM#UDzN zt6LBAPS!oVW|PVqx^RU>4Qy!H3h9FfuHqcMF14Bz?+7Z#_g9w`T~{mRR2*%@5<*5H zFw{KLpLLzvJ*q*HUve27?_nnbU-8@}Ntt_q;zul$7^ekt!nBzQ%4LOlVzmrpe9HJlCHJrW9yeF2LZxQwT7Fyy`}DiX5#>hr>TYo= zPN73uFBW5!Ma9=;A`af=P|YOahq?heE(3Iv74GnhT-Qettm(-WS8qaMQR2L zchXpftl;@%?c8Jok@$L0xb)dUDssM8wF&kAV4mG}y4(0sCu7+}Ge8eY&4!-BrIW>$ zL1u~xHls{*tD0da9C%={B;NHDz0l^t-umx26^AV+SEr+qPNLblI@;#(d^_!IJA8FM zY6s<1oE2>~IXPZg(FT?maydh0_@Xw^oSm(=_ohiMHZ!LXU4MI?7*gm>1{#oZg2%*gVsn(9^cv z2|bf?D$XSSINO8f^V?_Zl+;IG@GUu+tvExrD6tjiu_D9gJ}20=pWF2ldM1zisW|Z` zzCz!>!J1s=Z;?9Vk#U>);C=Qs(8JzFF%hPXU^ovXAIqw-Fy6}ynJIC$Hhc8w-g&pR zM*mLwis$@eE%=zktZ*F#F@7MaX<3BTYXPx5;EY7TuXQkzNN6|j5N)0?9ZU(pTMq!K zLr6(nf&qQ&jd!g*)|}FTR={t+%AB%iasKNH$H}X6C693qd9a7CvMq=+cCKH2k1XxR z*EADlfAGw3El=7wet=q;8(VSGYl6lzlvLAR&zWW5oX`WR4d$aF-n1);QTXQ^@*CWO zHrbu4bDR8oZ2D8s8q3snqyuX|dB8MTJ9b#pRAT|)cym{89W?dT zwP~it$BZ8b4Ek0rTec=v^<=C4YCM$j!i`%zmIRJq+rp`YH{PPX`{M7b5vFKMF@U(5tt?qDm;DM@v ztJVPxnM$gjNbpz*{OW;*M7TsB^?MWBiyAu9Q|j28T`l4Z7x|ed9wl-X)d{7|r}p>Z z)1Il0&c(_VQKa|gD z#n2?KIY%?&q#Oa*xu6iVcmz2J1rs&`$nM8brACo zk*L`|-V^3Psq9!OQGCt(B^tCltoUnIqE%T$a(7I`Cqll=^%5nwgaT`;pA2&)cg0)I zd~%psokKRcTU?+hLu0>;KiNwea72Q+Vv2)9v@d-RsdMsz-veG5Q(AZQZrWsnyg6n- zt0h9~rae0Zx`__I4980V6u`3=DakUyWpAbA1G`DhQe|KyQRWhKM~VjP&X|XXo3%)9 zY-!dJ!!L;%i>C$D(16HJih`3oOS;|Wtl1rZ2@EU_=89|D5(lb=2IK6wf1m?y|omfP1#nBk5SkakMUeP4_ZhtRQ@VB zX%8d1Z4QO_gb^jhRmrA&;%oZCrWC>r2FA$G=hZ^kuVJxpn7ev1_G|VU*P+D<&Mrj8 z`g7n@Upry)u$lAf&e5?|N463Vt&T@|71D^XHY0}}Qj<5CxA7P82HTWQ5%3ZAQ^@FI z%H-XK#0LR#ZlfLVZspKIOMVcNTIukiZN3JW;v9)2L?x>}!d4usBDW%AYWc;N3C;7m zX1kIk`p;xLMQC?T+XM`-119>53^i;HoY8SRHTrfnD%%vIsORrnKL9j-$ z84wz357Ca8G)18E$ax`{swP#D1Y@!=Qz8s4*w^qUx=OPQu((6Q2;}-zyx>9>?=5K6 zACfjip`+4+!i%+Fd7H41%oTkLxbP}BecOs$=vguarJ$PTn64h$<}QlaR)bf4qZ4P? zM}oN0?{_?sqx@E;^$&hu2D>3CBWMxVj7({`ajT8b7ETbqYIgaI13FXt5M9cQV_3Y5{$Mj#Yj&7kZ>L|<+|y2`sEw5< zW;6@#&mS*E)U0rYdNT}AM%uTJ=cTQ_p1pRh{vA8q+~O++U$&uJncHSXmF+`cr4ymz ze6yDiF(iKPElbX=jL1!VY%OnA?DaZ(82S{Rw{~Zyb(b$KpHhb}lM)-x%X$K$g!W}Z zGpZrbOGJKBGUN$rPB#NxOV&`oiuMN~{`*JySyI^JEJF#kCQQg?J5l`AYv(2VN+RhdjeO%c6VI3_x#KPd-Ezd)Q>JFg zOAW{p8jH5sU&gpsrKaTrdm^^?(Pf-atX=w|9TGujujjcsEmCzIxWtupD_KDl^_ode_wruMLc))$Y$@x` zIt=gr`|bU&lZ26TY7BGjVXYEQB)-VA7Mf|KkqYDjv4grQ`b!|nAVRBKQf`|Tve*Yk z%8*RuLP|2&vK_ouCEXbAP9q-hOkiBAf=^r|8Tb7yVAMjHea@5fK)XjwlK311}v$l@)>OaV0JhMpd=~gv^G6f=>VcyNI$8$L>-27&X59P?~hkh^9JQz{*V z1mc(Jtlgu9z}6)YW9@px+UsLdc)DEToJ2NgRfM=w+0@SzmjU~^iU1sA9?`jDfQO%X z5Pl=67}5~8YXTjE1J-?cP^{e{iaQBc*C%e~`gv&K)j9eFaY+VJuREJ7c-H^vUCb@A zbsY(k;u3Z#))d}7dU4BESsN6q%^|5L5XA`>rK&eoQ2bm>Y3zBtnf6XOB9j-HikBmU zm&--qgfWVbx=%7rW8PH=g6InF)GZx{Sf@UqL<(Pc$d^eZ2DhCO+>Sn^AX!loSajr> zEN1+=GzbTvyMS4{(^PWdk~|{m#smf7;P;XX9CL@spt(w35#N|gkShx7F?5W}ztJ&q z6>z)l9AT8Fc2uRxkvDSflT9CjuCxVsGjb6#B(k1tuCtCVT27*@#@yiatf-hvCJ{=h zd$I@qBYieExl#bQ=so*J0F$`jLJ+8cF1mFg-hGkM{}EabKV2*&o!@1l1LvRQ18V$f zqV8vZW)X~Z$wC?^Wn}&%PaPG)Y>QaR&W%}~ZrB#8WKnF*!xAOSmvqCSs((AVPf@Y+ z0nllPi5|U}J~5tEk_;dBbWZCz^AVeQK&diGltrw5X<&~*mHK0v5MQFf;l`8)Pud_! zlj)|!vTKPm;*Uji+bPLbT>+|ymszy#2q2~VZ=SIhX~0)_=9n-mj^A|cJWGO^Pe0U4 zB9o@yAWI$hJbnu{7iis|P~jM`^+2OyYS_%4(8=D>i?iJV$#}y$xZ>dsQ|`C}*Aku% zX2FbVGO$y73qLUN_(vV5-e?EL#P&536xMpIc zuUuMh;qv6JP^9V_W~0O>u9AdLc+Zgh%BuvaL&~N_Qb$SANL*5jTz>B}Bq8Q0psVtz zCSd74Y6yp;EXm_fEtbrDLhNx>24pDeY|#e$geZvE1$8XWAxR!&NlcQu^ezHecM?VT zau-TXzH^;NEIOy4r9N+107dhdY4=m(n|u^%Pq>`Vaz5v_MMnq z!u8+$Fqya-7PBsGjZmW!Gd_z1OHMl0eT8d>9O(U_kx{E}A}{Jl#tHCbkbz&gCS8g` zN0kS2S65osna0t?J@5%O&w5vboI{W9GL`hSF(rPllMFRP#K=HXq3Am5+oZYk5!)Q& z4^?D1!es>U7kp$!JI&3?=Fpa=lmM22ieT8T6M2VvG|>C2PMzgPNVPPpjzi+*@Y6OI z6rClOsP4JJ3*nf|x6zC*Z-jfUBX*HqnR+xuNlaoG%M{ctauJ5>KwfvyE|i;zJ3+eT zEUI^$E20Z#Wm7m!$>`Sfc-1f61Hx~o&4yy zhQnO3iHD4u>G>18%3coe!G31dUI{}V{?cW(yDstLcdVUZ39=0jw)ijxiee)A9=mmn zcEN+nCoHq8_?WL$$85wwa;%R~b3gI-BLn+Ou;wAX4;eBcO}xY1XB}*vWu`03$F?(k zp_=lN=V#jshkFkmFKw}5_8MjS&ywg@>oJ6pHt_^q{@U&ZK0$(Lr~-z_J;d4K!w{R0 zX;1q$%!!hzZ5?Y6C5M-Zoehyg7u0jM3E6PFKg`?pU)#0F8@GrCccng#dB4Nxer!D0 z(-(l=J!HUl7BCppaj5SGuIwFQ1nM00^jO<@av88EXOj$%P=IXea5)ZM?Dtm+e6+G8h9_*?b_Sc)H(>W05zI0rZAw9dscCh=u*sq}2UI%tmBYNM6PVgz>b zW&3eX*s-5DsngnV`@mO*VHZX6q#S10!^?wu`8s{^Q_b?)kmlaLpzeaVeW+N^0TD^y(hENc$2c7)336x=_oI#*YggY@qT8~tk!Mjd>Orz}PpA%Ipj2%*DjRutQZ3tp zICX*&h|8iRBbP<0eYY(9uD=kS4DZrQrysqPj_AR;{2P%4Cu|0IGA1^QG#tu4Wf}j4 z$v!J{>yHh#+5S=wuJkn@FW;2%Tt1a?j89@7gy<*q)b)p! z$0s(g2M>k#W;I_PJZqB^%flf*7J3Ufxcrph`tX$}VhW*I9={pqtc4ss`c3o_wwD`@ z0byf8Gk%8ZsxPmPlePsteRmo6(Hg1wS^a02ndY_nWT4KYU3(N61SJbEU0eI60k>`Z zVmkc(KSA+rvz?S7yI)Xvu#YZpCo&p*_=0wZ4C*WFd^4+;N1trZGQCQ>dy48hL+3EL zf5>2j;xBx|VY7UKf-PKLK5OQvY}~xv0@?D!W&oPgwdO5gGn_VOz`FiC?}Q;=(>XS% zbp89SAfoU-l|3`<6cw}VdWecK!htNCPGaBYnKkJHDga1L)bQX`t~$qzZ}~EX)gvsc zu(A|??F~K`4IUV5&jqinMT)>lJqK|vc;#`y;qda~kxbgr_8U_Cs2Sh#itsHMoXxU6 zMjz}SSl^}s$j~Pb%lEhn1mObPX(h4TXC$&uKpc);^ONg4D=@qN((VOyT4*FtA45jbOMnpU#o>;)idI z=kQpYrd7}9(UVt{0h>q2fQGs) zh0}09mVn6ViVwq2uAjA*2X%18BPWfXLasHg_(8jNLyBLf^yDxYZlcIJZ$P(4Z2Tg} z$PA6nVg2X9XIAb!C&jZbVJgM5ch?oa))d8;)`#?0Xb@DuV#igdc+GB7))vP-FHUFi zjopYUYzQxm-=%o+&Jht%{2P-wv9@&@GvO!VEh?a9@+OE1$LIkSzCM|wkKsN0H>HKb6 zN57Ahl!8yL8e5ZUFf0wy1aPh%>;nfi6nrn`v)(|K&M|)K!wzXmoEOGW z(sNNg{EmO5U+u58jEnOc!Hnlh_AJ*ZIxnd~PC0-}UG|ja*=j#$EXp3z2F|d2&?vlG zVY{Xv^OZ5(AX))mk-EuqHt2EyR8ClvpC-k^h~Y^?E>OQ9sGdfAsyha6T%#oCM(rD8 zX(kLZRCiu@atMUwu79y(>maF6c=Jt9J-p|ezEg(nd~hLEvrlSd8zoQGt|?SEpB-jk zGkkjF5Iqt^(Jzc8!}{o$)~@iW@6+HgbB_JIp8D}A*TvVzqHJ-kwVgdLAS@;FtsHrE8%_;szxgsb7R zUVTf=_k8lxufH$Ip*U^?j1bAieNZ!SqZM*jVHHxpnjG@+P*gmYZAHuCx!GHRU{H=O-}qR#?epbIMs?5xzL!hcqclOh(x! zgnsHS1|x<#Ba{$XjZ+>DGOLxh&jo>~@<3sp6&RQP{r6Lt=F(@Mn?{}^RgJ;d%5AY&_fp@a8rL0I~McQwsHn{!6tO!IMU{PE*xexx1aFR8?1gWRigP@WX* znh%)`)%5sPZ}okrvl$g|*InAbQuXdQmuD2V`k@U@f3bf3;DhMhth%y&^VT7~!F2i- zd!Vd(_8QQtbI)F%W;Wohy#3ahRJZch+f!06ec*t?@v{>TA`7!Ip#e7^nXYp)S*Sgd0zyK(Ho0BU}Hi(+Z@NlY=wC-!RA7< zYzdE=FV)81dtm7e7HFc>!H`S&DSqq(9m)A?K44JS5;zRUyBzjxDH4O}-rbg|a$S(F z_~P|@qwzIy zban+W_Q`d>NLWh7qg;8CEJH7XY4;IsE$L3_DPj6YUw1jZ%%M{}Uu@hBI$>|0{z8o? z0?j7D0Xrl!rL2qG-P0nSnoFsPh^Q9No{RHr3KpuOXY01VXh!I+w9|KSDN5+LEx0UF zFOn@z#VO-GxpwS|DKS5AhommkZ7vsza+dYWu((np=FufJ&tqLWFA*o!bzDjrXniq( zc}L;JsX0gZ+Z2|v;tvE%NTx4P8q{{?+zHs@4KTejp%kqUH%NHEJaN+6~ z%w_rZJF>JoEogq$`e`_9VDU`}(w)sb)nelceX7D1^V~t4FJLAd;xr4|^c|?6 zO~2zU&(6*~XlKbGeX3xjPvu5Wr(iHZmM5jc&4ZweEPxr2gx@U-D+pW`hZ$OAIXbe+ z!quw`0~PBLuV#iQ;J4{sNiA96(oT1Q>`2~Cf|HnlE|YE+i!8Q~#auK9W?VSQB6nMs ztWbRNQGxfk_@2=JyFmIglTpwgaP<#_yI^VF?}^Lr3H?9-jr~iy_-Cche-;7pe?n;% zDdXwyTa~Zdlpks0V?f19Og>Ds%}yKBicNX2@PWHkR$+%>;<0)Xclga2-s>7m;cdrO z_L=_Bb*@ByIuNo?(Rgy$TVWvBz#?{RQ+9!=$U#s=vyC%@dX{(6cxwmr)zrqF`jGXH zaUY7r#3eEB{-#y2%2%0r?{G5xRkJiTJ{=e=J=NwCFp0hb>{h|@Cn8j1vKd!C?kYm= zv1&IoY_dx;241ycW z@g5uxjufSzfvKFY{EL9fE+&I~iga=+X_?Zl=|8={@yfvcxZmS!45GdYHmtBYj& zkif-{t5M{p{5)?t6DKA%R)6nzKqTAQwzy-V+85Ie)2^Utg@2c+&jHCGUAD(sTfWLP z?<)2IfuR$w72ejauz{pot6D*e8bco_|4uA=P(jdfvI^`WeMZtE+W+x7~j8ch94B;xC9jau9YN|?3p<2#rZf}0ieDi4a@6p2NOeM1{K43~8{M+zPld)IjXj8T0*FzTZgw6J<1)It)La^qS1I-G5 zUgdUL$s1C8L>gk_DZ!S}2fqcy{W2m@#JtJ2mmKzT(DoO_GW6C61Q}_vYiM;=OIG5L zO)yk(pOBXx1nol=6cZ?MNIAMJ&CN~2l*NTdhcL66Vit z!4;7uW~*XO584f3Z7YK!fv&CG1j(@r6J>~tR6xX5q9qRy#o8uHZ{cZx7G<31g(V*X zgk?6bxM=nz)LwZir94dFf8zyhlr>1OHxNC=*pw?7Jw6a3lAp>(qBCOpzrUe)u?(Vs zeu|%WZEonI;+eU0sl__Sucz!SE$J z%GF~r6C+7TiDlx+JdRa|c%b;Q&9m7I{c{RaunpS>je=(5U59a#UPZm-5?p5cq@Ba; z8!siXq*DSL^9DSx^Y#o~Zp0&BL%VD!NlCh#2kAxCdlSV1188({<)vF_XjM~@c;|6~fs;3NBqY)Mu zWP703?pJv=faBVM1$hTcNbRoe-E`b8YHO4B0y7ltRx#y!M*X}Jd6!fD@}B(_6k^pH zMc}MZ3YG%3(BFea_WzjRS`ldddc*}_E$4#(g5zu;A;Px0}IsFbWquCEAzkNT`7OZY-ucEGLY@7Yt)col?3 za91qdF+ABt%RO00@^j&Kvjc9wlu8Tq6iG=N8c`%kH4%-g=0xn+o#s^li%@&N6ymLS@Q0ID@al`!>pg~n<0?wrTS&(2=~3SZka%bU0|oq+rvh!D}eCS>$s zHafbPHzb)Lod*V=6Hz6P+AI>F=MpMeNVy1n>=nc0`MWbBa8M@I9^xv9-!I!xDC_2N zp3JEUCMQ;tsYFnrI`@65gzMb#AVQ9yT=e^{-;?qcA~7N@hDYV3>hBz5Mdw=}^MbEh zAORlvV3P23dEiZG0*CLg%YjLJ1cQzW6~n*BR3I}Y$&Oa2Bq$6OBL5&rCbwOqQO?nD z5rc)0EwjxO<2#)O7Ii3+sq$vFlRUfh!#{ny?GSkvSQSGqmdvonq$HXs%11s~V$!J` zgZJiNXX3%uT!KEDKw-yROwyDNN1qYBxCT0t1DCTFP!^zc!-d4n`XKxAhymF<6mV*F zL7u2!Zr>f}8S`K#^*4+?n|!RVjA}r}7U*vv2(duYov3gS92bP)_ql|Zt3zzBG0J`?tI_`FUfXy&Z_>;Adi%vr* zb(NwRcSKtV2^)nS{v$z+mOkF%t7bj0!~nP>fL{PYaYOnUOV3WM{46WxSo}y*#$A_4U4uMTo$6B_lkk$Zi&8V{Wl$*QU5>!6 zQ}l0BlHO-HA&HJ3M7iDNKv-vRlKoh(668?^vCb$;j)0JnA~;)CzzV8=)ypG*96RW_ zQz`|7_r+6}qm=Room;z8 zSV#qSBv_cNmONCqiYkVy_Nhyz8&2>q8#RdQq=|^vWhy!GdyHbkF=ah*2BEMSCZ7Qy zwe2$%I8g8AQn<~jvdYZTrwOc27B6W=G>NO&<|h8W{qA)TIH^0iPe9Vf$CPfz8>I$T zq;UROd1X=f4fqh3=MRL?FMz{T(e!ldTr9AdUsm8Kk~TqIE*PM)6irTCxp=t6vsZ~y zsNym}SGg%;x#)L=oD!)QDOg!-wkf-I(XtbI;w&1!6`@VyvF_57b_W#kB~`1ZrJ8oZ z5e}WVsaNq8)0QGdH9;64tlG%q3(#HSe#C3QpAivGqV`+^9@GFPr@qj=K7GQUK)7+2 zfxX0rLhXsT-I&TMC4UiPTkDTA}lU@TryF&8bL0PChVuQ9by zm!7|&70A`8aDJzhN?X;LyWA`Ppg``?{}rSYV1QO`={8PyxdW9um0dXqC2o?9zS`YF z;M?jr6-JFyI&o5zoAodv3#p_8TuekIJc(cw!Z}NTqk?cO5ptn`P7hl1aod#&az*i~ zP>FJhEBO%YI&R0-n}AXW@9LwX=SZ)wm{KjGF8$2{=UG%Pe33^8u1dwCZgkZs3ufTVt(wK7F67gz4aDhsz5Ur@3S&n#f33JCqT~csFEhT4%x%4p^+%fWHc|00V%2-{7 z<*6fywitNud-&JXacSV@onpJRALs(h6V!bvw7uPCvW$l4N_6e_Z28`bL4y%0_4&BR z@7UO2bnZiFI`URM4ywUs#RQ&}tadJ*1Iv56wmweL<~2X=BYV`IqiS~}uRcvXxz5ki ze6FsmWNvr;8;?;Xgy9hr)y0&acO|jjLt}}0Bz;h)G2lx}K4(?#C;Kw|j!AEQRrIm# z^5R% zAGWiLR?jfax75-&KPs(lTK!Kf{_sCQixv`!<%b-Ws2QzQ46u?==~UZnrdtLg!I42qBK@>AtjVeY$y(rZBYSzx+czDB*yB$Z?NH* zq8rP+xDOFIV1dPHOW=^hgw|;Ki41ubVsTM>gnj89{gZ#oz_vzdYF07L7>1$Y4dz9C z%;x)4U!3f#n9}e5r?AwEeH_b?fe~L94lK|WKA;*nE^DME@}2E3)Co_BWkC-|W{`!b zb&rdM?Apg51mVJE;2o2~EFyxIMYzOfEgs4w24;ugawIj-Q^V5X4{}LlDK3gV5*LZE zJoF`GrDT%DixxP`#fv6cD5^^0u0Yx{twCG{8gxUC?Lk@GTt9`2$oU;}pUV&YY#pYU z-Lj|)7xW`YESPmJnKN|=qK-8UfV`&GqA8Wg7f*fuCy86W=h|pW4L`KH&-NEKpO3Eb z+PGJZ!S5hp;v|}?x??%rlUkZ(^T~VX?eoS-G}J_|x-h!I=j$Gev}g5c^v5wWqsJ;T0KkgpsEJp#@;N^bA{RKv$=D5JKovzW|>rR5FT1)={S;I zcp#0Fu@3&x)a>Y-l2xrYY=%E|@2!?bw)|9kt39gLn{N&iI$pi^TkG?PzSnMDnZxCg z)mv+Gs^H=yw!6qCndPPT^`!VP_@O>jz|x?sKiIRm9rpC@KHFiR;XsZGn%T^HOXt}Y zGz+YtrIXL0cgKT-^T6)-Ayoj?h2q&HaYuLvczEZX1Ba}}8)K7f7cvyz>n#tP8-&^Y zpmtIZ2A5f}j7JAhC#Wv2%6Ny(6U+RbK4b^0w=m59`6r3x$KWo$&3+RMzWo-8*Le!J zn9jiciWL99-7tR5uNhslDW??lwEYE5K1etPd;hPQ4e>Zvu`n%d(vs_q(Lm5AcM)P109#DADdwerd*k13cM-FZpE3MO3 zic);Kfq2!qa~Ql-)S5I*NZh15rGhXLLC?i!%$= z(zzQ5!=m9{M)P(5FPxVsb^Tz4-iPxYIj zVAX%%!VKYR=19~%nw8?!d5#HZT1`=WaK-m}7n<>LgmvlU>%r!5YEt}gYjjW)kHM4k z;HlFC)&$+zej3%%BMkSX`1Q8Fg~FN2OuiN8;v&Ucz1dEHPybgSep#dG)a?CBK$5Tx zCd%UZbUGGv_7nq{*tJAO31VXumaSQ#M#XIG8i1Lhv0$cHK%|sR8WRvw4>QrB+%$i- z|L~xO7LvkPBaqa!$BRcIL5(9do)82%5M@A!A4!Bd%a;ZMoh*1}ksuo;U-8!1_`4tZr6B~q0wz^5-+nU1A?QwQW z(R__c+0Av&y(}<2B*{?1UtHaq*c|PxOSmOYpjCnZY0;p#`&N+EG;J42(4s(Ea91j-q6xY|oz^Xi zpr7w=&b=hxuI#A!bAa{?dCtuI<~P6JZ@%-JKj++Y?oFs3*Q2MWQ{rm;zC=u`2{4b3 zlcpM0h&pG*Dv*?Xe`czUDa514E^;Q`*_jcKMkU4x_GkHwxqa`0#Qg5lp7MIIe=j1( z>e;I^qGs(?@?68vi-u!9^Zuz^i50@YN!ND@bVQn`oX6G1^NIILxXti9r7DSaf9)5@^QEo#rjop+*I%sK`S86{;;{2!y%S|4-lLFjj`%ekb~USy zAAj<}gIrZBjDyTd_TC3yoe`~!)mR*UoM%~5ys>8Q+nLSh$toH<&p;B@58BP#d;1Nf zj3TeUn4r3x!c|p!LRv4;(D_#F>_qiIy|Y7`)f1ZLD6Z95mS!5CiC1{zFpC~##E8XK zF)wa4vz#$~Cn^pluB$r6%Zw4W5B&^jinC342zzD9~_{ zTdaQmG*Nl=)=8R6*hqO~)Ze|MM>aL7$FJc`SUQ+{R0J! zS0{Vau#PHAhj>{jrjg20FhaKCMV@a;RN#$CujOP!R4p&tNSC%u5DWXVR_9JEqh1?~ zN|2P)nYgHRLrO}LwUFkva8IFB){|=S5 zF=JQfA01&qFH$h5NV$sLmO`bp)7^PIJBdzuC+12@N@`J8&*ySD7u;REl(Mj;i@Vo? zLV1aX7O_H08gq~m9l{+mqi^4FSqBF%U0etA0eFT`Ug#03C3NVP>|gnkwcq45m?^K| z=#`Vh7uvge?d9h+hGUOLZu6{o~kufKfro8?s;k6+)u z^Ey&~g_mevdp-K=FRwj}CR@(u`c)ikIX^s<6y^+G#le<5q9xRBzUekKjb6oh?VHWM zYYo-r3P>K}~*|+HYZtUg&x2Ei?Tp&cjQKE8y~Q z9?L5^58DI1igP}{?XTjTpZhCHwCqO@vE?4Wii0iuwod!jTmGv!_SQp5X%D{czlwA4 ztG}CH#hI!{wzsE;j2C{O?9gL@uRD5o+oUns-2PFOTJxhndO<^*=0~eczS*w6tZVq~ z_RC-Pa{Ka`$MH<@D8|=bBMvdnGg89N3xbKqtV?Xfa9Mf%h4`CqGKDFo7O~eJRWZ6v z7Uf}@rVb4$W`~C^4LgdIirV7*=9j&8Q*3GW&t9e)w!BO{3NdEbZEa^qwbvGLvlBBo zG)?>pUOwUmr{Z9?3zaC^k>bcJsCam24-zDHB+0Vw-JYK2^OlKG^LxdHBwcbViu*Hf zU203%+T~oe+k-hV^ZZ}Y*O>php_|84w*;jA69^HRl1vN#afXG_H)UQ^l5UoKSGoL7 z?sp-*lL<=o&wh6{Fw_k|OC#q9kCbQVYc>8YEMy9ZzpSA5g>Q<+?jYs{O_E0yH znDu6GLY#4>TRUn|OqRMnsx0kTO0lvdZY`ymw>In~*4hNm$9B@z9FfTmmCuj@wJW<+ zIZBAKD7FJJCQBrzPVibHjYh}RO62Eo2Rd$IaTA$qzJx^!b7)m;sv~$-ZI}D%In^Os zjEIdigS`tI_=+T#v;M&Z;}d!|%XVZ*&vTOx_M9cz$t6q6Ju5CjlGU3B6jte09 z{2Lko$)@%K_kk1dzNDBo^R)d%yKJGK8hcN*&Q5>nr_|P#8-#G%Ve)51qj~~rgtpV# z8?s7lG~%F5ydTBd;R8VhY%^k8XGu{@$dDkiv9gKeP80a{t`H#7G=w;LG^IOt$yLcH z%1{G^U`%loTecj@k@rJfK_|+1Lt>64=1w2T@cRRqDBu zYSJNbO27Tj@>>fOx2uuajr(N~-H-P@t}b%Yie7z$%5WWGCL9XPl>ZmPh|FjXw{k0{MC#bt9Ho6gdrT~ zKV*>t4<3P2g-@x>!;!RN@{x9X5$`^;+6NLH%wo~CrY21WSWZ-nZly{_a7^CZ05M=W zVj25MZrviXrTYyY91T5|9zaz*W6iP$c7%hbOWU+5pIStU)G5~HHf=tLEB6*qCaOdV zl}{`SWW+mzb*^XAq8g6#%pv|#if9zdx~4mbJQb8vW#?8QI-XO6tDzPd*>*DD;m46E zwwJL#M^%lmM_g)_O|os;R5>b*J07_WyV$``GI6Nc=>AKoQJ+PDIY)%rT>}Srk|QMC zAysy9`{OpF70{BXIjWZ{o8jDCS3-^%foGa{xM?74FVqWGWnM-B_iC?lZg+yH5`}1Z zcrqa6OWrFqPQk|iDLk=w`-dz<(2e)W(~4uP5`@gHM6^NYOd8Xw2mdD-I?^4$8EO507iRGiZd6c(#8A0<&_c&mxC`t>xwnGj|dfIs1huJ3WNhm=D;)_-Rv-0StDSYtf z3_%RLv~~tjlrK9Hdhv`Sv#YbUX|lYtMt+3h6r6Ehs{=z`&(Y^Pft3Yy09QsXodQDD zJn)=nj&fZlCv@=BREW=_b8iB{FObe0>I9t0i-c{I!sJ}oqMCVEXP^@~LRulFL8CA5 zf+Z<6qvDT;)ej+`LyG4oArnJOoPy;3&;J^_GP%g1b3$=U7LG)jCYzb1i+Z{hGdB+E z_h~$BZ{tFTHSC$ndRiw|O^&!T4SG6Pzi@!sYL*VpBx5$y$DWt={#+f^Xruu0`3~Mz z;X~1O!VLGI`eQabGmATEs^*_OEf^{s{^_5<*v$KrpWPe*$rRu%U)Xug)Of~Mo8ch_ z@HyZ>JN8Uve=4lbXOfXG66av3%=Xai{spYOz(K3_M|t&vI=Ac)oIj8u3Z!PvYcHYM z`}qn7pev@9qi)awbXAtEyt%_5r>|{pF&#*}j@5Ag`|HC9F+?ijT=Y;vBCj~^=CnzI zkZ1?|$o#v1hU{TL0Kdb?c;PO=eoB`3M3~c&9VI3*3DyN~C7K1s38w3+HSHhmSJ~F> z<(jE)vzoy>!`rPo-#MjPHfq&+2AE!s>KiUBGS>=KWWSJ&Zh)s6v%iOjhDTLp8BCFx zz%DHE2mE{~DAU4;&w)r}NX<2^;@z2?Lgsceo{C{4S?^P#SuD5dHO4+ew@UU2c`0Az zcVfrrvR$j^k=9Hz)oEc`oVn=~dTEU%dOhcgQKV`bv&hrudR^{99 zraIeZP6j4|9AzVrzNDwiyO7b2<_DA$VjUjPC+RQkxbaE%H$RET&`SN2*wKlQ_@j{j zMM&Ph2Xd)>m8WMDUr6qthz;|i! zxdB8+o+$-(tk^9*qv=T!`Ad3t@x%_vlWfu5;O7HzojapSePM7d!m3q?W6@E zsAe5oo04=>D2ZO(0#kH`DEOV#r|^W4Q>aEvP%Sij!qX2(D_3_?YQ)V&T7(x!WMv|M z9unv+z{j!#kt1bdLM}zjn%rW{PU=n>=DkixS`>U;iCVR5sj#d(5xKxYUY({Ob9F45 zLLw>0N|{9$w?||$2z;UBkqR0fqRuHK&I+YMvfuSyc#@N3fl@>S_lti)DQA_EgfR(u z#UvG_u(ZPqI4v-9arMF&l`37vWJWdz@{&_2 zIOOmE*RJRua)~rBO2~+h;ZJ~WyCciB~_T>uYrk(5cfPh7a)T5H5DOMdG6XKL0fTF`+EoGW)D#2M%@6X-UB#xG| zk~2_FeeVkOhS=*9jLpO~-~UJKp}t5P_tDqoyj7~8L-Ws#uY88C1{z2nH-@7bW; z+*Ty>7ddMGw-;50wBswOr;yN4|H-ccQ5KzU@G}#DJfMs@{GL3Su85eNg7-u2QeeV| zqPp3|OFh0_Ej0>4FqQfl6<(#IBPyak*0ytOG+|`%h+PLN5_LGOsGbzohuVuObrr~s zGZT>LUQ&iYX^XQZ6wfJ3-awENq^baH*`orok>Oufxn&G3k~KrjvlNl=Qa*eqQTqXv z)Ka@7ggU2%$tqUioO2W(4RX+;KF*83_x}QYJ?cnNq%68DJ)tJ$qUfhrT$<7xid;ZR zyB~IqI2Ke< z7X5k%v#{Y{&q|s-LPj9@zx_X914VJ+E*+*Q=Yh_%E`yB?xEn*hG4masD(E4a=;`e&gp0$(X`Y}MX!QzP}b9OL5HMN5AvJXcW( zd@3#31bDJ17F>%AvD-mhr!h6j0gA>BqufPjofjhU{_8nq2+7ZW>KLm%a#8ft%1N9$ z=$#GAn4Y-`{qXN#HuKrUowbNpWsB14`QtL}bomn#QW7dF1FaTYw8_}sU#fYL@#(aL zWcCy;j94wv9z#)uuaQa6T)m`KaEqpsg;b!4MksbEbuIYdIE1i(@LHLY?q>^HB9Tj` z_9#mzdQhA>2+5m8EpnApy6#h3teAYoWTe93??_FmZ3)HwS(52;u&!H12(YhNw z6TY}7&LlC&>VmWevMgE)qFcbF9s`celBnMAT?OS!`;#c0)k=C;2VVVP;|)*;BXVNwd%b3*`a((7|cbdnewc;?&^`Bt$+V?{Zlc zG6e|dpWtugIXi44czt84k_4d(!Q-yqNvlMM=)4W!>CVkdTJEb*`|a#xWf9Z#kv@z-R3<>)dvk@Nq2{PDiAU)^|(1br8~1?c@_%TYPA{SqGHTdY+xr z(`=wz^Ku-IK-A%jb|*}#b|vg>g|F~c#rV)>sN!Uj-nVH-R^Lw;n|8;wy${`cht>Vj z@!2G%I>bXB!1|iZtZcqA4*zNZoe!dE6B5Jw7LIi^(U|9QWuIBK@%$ER?W&Cc-t6&M9k1F70Pfk3pp!49r;*$)w)Hbg z&qBI&zp7V(TQpw0!DquC13t2Pn``yw5&aD;e1#XFG?5XnCAuc>>|{E z`PH3Vt!HGf^J6??p6ip9_h|`mR|b@T36i59=2e?RB#^doJLZ}{VHh&GPiZl7yqIlA zy9o`oq-k%v4uCGvyhCB@x!JQn_@~Uyd2z)E_&nVb@n_~6!enyS6Xdz>O*UCPu!Bwo zU#ytVOYPAJe<6&33n@J4?h{}jmaAx#5Dt0hT(O?Z#x+Cb54Q8^-e{uQVYIrwenByB z6ktrWmB;c$49^8EYb8*IBr6}7m|t6qL=T}>E`9`jdmc$!XG zb15F{SyuW7TcT?73XWp^QV%WV+t1h6l39LiLof31ZUkdAV+(o-JfpaX`I+fr3$?hW z_D!E!#7o5iwCi2Oy$IR;+0RJH5w$2-}cYAI7l{g!Xo~+teZ8ol+Zrl6VJK1{r zbjAw_HhF&{-UvrKyavO&8%N};yi)md@@MUMzMJ@VdVJ>9Gz+-u^M4`5$>^EKPFO#~ zXyZdC`#>8ue#;3EuT75VS3WaY`;m<~o2IqLKCwp3>o2b`QS#=;;}`gDWsk4?^^=Uh zJu~{o`kdDfA6uE*94XbR;>qN>6`*ZIXbWsa)(EtE_7`JMmU zE+^rD?<`Z?-fb@JwO9TQz;E1H2YB8cZyVlpFnzfSz_aOprcJE#6M7DSYrFI5HpxsL zz?Vhc*GO+{-@(qR`ku+w%w{8f{W_(il_&PvOW64-8UfGp5N)Pf&+R5+rm{$U#_-)s zv@A@HX8=FCwfg)or-;w43Fyhn>TeP7lkwU!p7(LW2Yioz!hyf_xH=&7E{FSQD8P?K zk3T*KctQ6KAf2o{_V`@!=oVYsIV}#8Si|g|7Wo0nbks&;cxy+n6wC zSlop=|F1u5c=p=QG*jYD`!tGczHJiRt+us~CXfesf8}HnPS$XE%xpjPfS615no7Ju zb$^RoHMy;q(0D^+ltF$xe*f*Srp#io8^Ar8?SVVb(vEkJ^zs=o{c*;`xpy2B)yCkS z%Y4P>oS{x2cs8C`N?F~g0MH{N2N;iAPIHl(Z?I}l zMvuWg=h2$6VxEr=aaQHWMxfNQp`{pO;HYy;A2)9>D~bqAIDpZr_6` zc$D@T^7v2HNiAa?(>qYwFDE+Bs$bo@q`a=*Ce}k`s3sSMyZy?4W0wES+UEs4ds6|= z{O7>iWbGL`mI2^b2=wTWY@}AdYg0cbXbFu@+Z(U6vj`aN43{5`o~Ru7>glbwX}wJr zz{h$G;Xq;O*ZQ1BU0AZ*vb$yqa;)tZ=K=l+-?P% z+`&#%(;*nePwu@(xPZHE#Il&lJu8quZr?u02$|Y6;y5P21^lnxap1Q#`iyrfzg@j% z-~QwD#huAi&EeIX1eBBd2SQSIaR6!K`q@7oAU)@W+Y`6Us#$b4nR-&35!3wOn@ zoUqa(1#Bc6Dexuaur@PUj;a-E5pyQ2Ol+JI4XCRzkpS>8t`c$PJs{61mfnPCq0(5D!k%YW}8IPIi5il7|c)m=dZ?BG1N^1%) zJ#G~H{4nRj=Z@{${BQp~C|gh7dvQv> zLAJI(k3=pgCis9#lOP-Jr_bGBa$pTeI1WP0f?-jQqGg zh#<^6H#6BJax0-OWGAj`UT~9rA%48 z-k_YiF%U@^k2M&!m??*)#B*{@J-<}!crRmq+^Ct&Gs>Pjp3gFL;hwp~NT-srX7@7@ z&Z&r?F=@<>(weO1?g+7L5iZ2!z`d$ZCB`Q9(`gQWZI_pq#31i6KP)z%W7A!5ng59w zpmWQ>CzH)}JvvE|o-#x6CMzc~U?`$B{v-hcOI)6`WP$O@^iPR5{d$6Gp0B7`0#BS{ zB+>|YcvmoHx%cvt*E2Cb+$-HAw2^M;D$g7J9@A)D0{NqZkk^?dJ*;jNDP3)7AVe*G zT`g%YA!c8Q2aT7p7Ez=yl`AZ`*NQERmMrK)TQF%Ntam_;G9gz#q`7IF0F5oHVt4y^534zQ^-VGGQKWZ0J{U^!kf_&!+qJ zmy6NMzWlR(^@*OE_iI6R4VRZ_(E=B}iZgwQ zC+1#POWO9~!$s`Btz&u>XFhNL?%%OSpld)+6A}B&l(hTW*Q0#IzQGbb>C`luRFyLI zs)`j=>`1=c#pJ8XVt!3=jIYl%OT{?P;@X+2%gmxBlMztYA%S@Qo6Vhcd9PDmSwou(wt)hugo=PXFTUh9*doRMqC9f zM`>8As(fL5MTb?gNw)3mCtqxkph*~xbe@m;Bp5dWc=9;tI9TPDjJr0<+b-?``?v7}pP z9+3jLkB0mx;s0&^>u+6I0Bs+^TA^AiWZ^afqd~f zxAtOH&Ft9y0+OBL1B5JJ$2UUyS+OGqN*9v++|Co6J5Ea2KyJQnhgulV63ht!^LTc| zz}q!M)DQ>_NkUd-TsX0LAxl~$JHm^fAx+?`yn>9B->Moif>OkAM;`G_hcon@9YRvE zkx{}Qj`R^A&!FigBt<-Vfrmp63$h**MFYPO6}Vp@TP$&qI7SO=ELVgPyReUgE2gw# z-}4WU^gR@LKwA4EijF%+N*jRQKWGcAWO67-sib7jxE zfl8`W@iH7L?;YUMU23glnhF8!vca*+W~krgG$l_^TcU6(mqUjIc=A=^vbgv+Zf{&T0@X9g+b*@MRiY0o zO4+4$1t@8coe-UprQO334f*d&ve?3WLv6v#W>&3St3*Ho6x~8V6h&gNJ)P77EIlxb zx{dHjm_=W%87D!M1Anizk>R!)Yw~RAVD~yrp$?E zXU-r=JC@x|?WeT7+0kF@o1IA_o33_AaC7}${MQuM%{s9NZv8_#FaZVU2Q6;HF z$~vBXaM|&zqB_Oucqo1xhDwCCTKAiWOQi{>a3=B0A8N+2 z^T8=7s1zdcDg_e25k*t$yr0w(g)^Nf(RUf%29cyWk&7nk`66V|u@{%w-+bAl#xD-) zk+3^;ZCsQQ+*rSglEDz?G)cvw~*&rNC6w$QNPprD~&kkR#K1m-HT z=IJmTtJ-0VC2(QHW3hAF(-gi>symObA`*8nT~&C^jh^wAbL*SC8*bFoKMO=Vm=exV zdnTvXqFTi!W64=Oobbgp+^q(y%#$aXN*8iTAmamZ`|_!)^Dn4+OwEEpla`WhX_S^j z($Ip`<7K>k1c8P@Q-$iBL=^jNokuj)V&Ye^Y%^M&%?l-v)`0Nr$1FkOkW_F!C6N$8 zPc?eE#a&0Ggq^1Ol;VWUt5612#itaEJ{154!s>8)PcrF>sR#;kMFMY4oVK?5i*E3` zs$h&eP&a4uvX1nIaSdRaGH#nbiFd&gfNk7>;ImiPm*pvZx2H8lR{Z&=x|?VOG0ynziPg;%g$Vy zt{G+-7=?^@H&=o`uBTC!yE<`IQ#O%@NMmA6CyHT)m1WjqX_ePrNbJnx3kVhz$84!` z4mmH2XreMqX9%Rh!bAj4!G7DvksNPGSCQF)K&wees^aTG_IF{Cl1)sa3o@0ZM*;b# zC3WqbDDCX^I%x2$ARu%_MX!$u?WPtXk^t1g)v2M>8A_K?zZ22b5vjU1mm|> zT^A9>rCcYs6I-&{tpVB+jx6S@5ItGW;36r}&Pmac*~^xv_}hL(JJp4xPNDAm!hS6j zD?nh;oaNL2Q(3ab(iVrqvm|N3?3I@i*WDmWHPjUrB9(@OElamm5wlD&58-?%vUr$N z;ei(sQOr?{3y( z1HCYEX7_&nr(BTTN$UY&t%)NY<^ThluSHAmL7<( z2t|5h|HZ#2MO{-RM}Ya|ns?D!_k6oQ-yuoTisQRNKS`j7E)a^+z{{O)eM}+T1-t%y zenNt(xxW^909%09t6U_vBtgNyqJW(idAARb_dx$5#U)5o1Y*}pPnA{$_HX-9Wp0Yc zoFWInJK8$KtTW;ZtN5b0TuP)&tO_hBS3IR!DZm|hMoJ$XadRkM6SS)w^>pUsk&?^M z{OLcuNEf3Qxoh!_g6dkq&E$73xyiT8f#w3^B~6JN#P3?_4N;5CH7SekTNHVGL*Qr)|7Y)6R?w#V zYMNeV~;#$h^jZxt*a@@3PA>ro8eq`y0i#rTg+{otc))Q_^p~e!u>#CrlrK;{4yRgfa zr%Li2=Xgc=U%St0oFZ?H*9r@p+M2BMct;kE45KnMb1qyuQ%K{H(sojoAQi-JN-6c; zDWwQ{7hC8Ee%9m4mLkBJcrX%hbC_kswVqiiL;Ynj*u*Dk(FPkAz4E?k{L4jihhbqVI3G3P`z~#Y2dG z_LHP6vTIOE+CN`UWEGZDxcJa#+}WvqTC^2|ihc+09%wWAM7mn5!8{@R7;|d zdGYUR%&MuDMJHTsAeav=!uCigQY4ZWT=Xz|7nV{gE_ccc;a;+kq6TTNUBZuqGj~+?+@H{1xqRA zJ=KmXDIs;4Ymsi_))|6#=@n*6DHL6WV#`&2k-Dmcr!?B!1q8c}&U{vPfcuyQg;<^y{J|x^s#}kE-|`lLItYvbo@bu#^)` zf1PV}4WrNnp^xQKXAiPP6A)q+)%RZ|eI<6mI$l&+)GR)yDdqa4Qc5-C?i2@KRCDoM zZZFg<#7Gkx_Ap)!Kxyo>X-D5RpztrHJb7iIO1hjb5*G@<%-hL32{b5{`q$3vU4mX7 zy;f3e3H#43WWbI!{?D{`^VX&##u(=Rh7@P;2dv~aLyjq49YDwV6+8&ZCEqEfkf z`~SNX^+)13;r&d|UE=cU@6*nBHI?4trhB=h6Y_MxW>$hRUdBn83+MnPd}-0x_r#SH zkQPNZd;cM%xS#wZNYTzXVvXA$8Qw}PTlAf5G2J*RGnFdiO8>;9V48lmQV;^i6)wjo zY(SesiV`cizu^FfnB@590H5`#ddzN~J3EfAm^rzLRAQE<_Tfz_R6+{1&wqU>jLQFS zOG(1r(bdNV=?a&fpQba0@J}Csf9~V|^mPszL0|yBCpQ>?AAs)(fu7V39zOuz69PS{ z9Xx&jz9$5FQagD30DMmf^rUw1_yPEy5a>zm;PC_SJt5GO+QH)o;Cn)#C$)pe55V_? zKu>B1j~{^V34xx}4jw-M-xC5osU19i0KO*#dQv-h`~ZAU2=t_O@c04vo)G9s?cnhP z@I4{WliI=K2jF``peMD1#}B~wgg{Sf2ag|s?+JmP)D9j$0N)b=J*gc$egM8F1bR|C zc>Dl-PYCp+cJTNC_?{5xN$ueA1Moc|(39H1;|Jh-LZBzLgU1iR_k=)CY6p)WfbR)` zp41K=KLFno0zIi6JbnPaCj@#@J9zv6d`}4Uq;~N50r;K}=t=G1@dNNZA<&cB!Q%(u zdqSWmwS&hG!1shePihB`AAs)(fu7V39zOuz69PS{9Xx&jz9$5FQagD30DMmf^rUw1 z_yPEy5a>zm;PC_SJt5GO+QH)o;Cn)#C$)pe55V_?Ku>B1j~{^V34xx}4jw-M-xC5o zsU19i0KO*#dQv-h`~ZAU2=t_O@c04vo)G9s?cnhP@I4{WliI=K2jF``peMD1#}B~w zgg{Sf2ag|s?+JmP)D9j$0N)b=J*gc$egM8F1bR|Cc>Dl-PYCp+cJTNC_?{5xN$ueA z1Moc|(39H1;|Jh-LZBzLgU1iR_k=)CY6p)WfbR)`p41K=KLFno0zIi6JbnPaCj@#@ zJ9zv6d`}4Uq;~N50r;K}=t=G1@dNNZA<&cB!Q%(udqSWmwS&hG!1shePihB`AAs)( zfu7V39zOuz69PS{9Xx&jz9$5FQagD30DMmf^rUw1_yPEy5a>zm;PC_SJt5GO+QH)o z;Cn)#C$)pe55V_?Ku>B1j~{^V34xx}4jw-M-xC5osU19i0KO*#dQv-h`~ZAU2=t_O z@c04vo)G9s?cnhP@I4{WliI=K2jF``peMD1#}B~wgg{Sf2ag|s?+JmP)D9j$0N)b= zJ*gc$egM8F1bR|Cc>Dl-PYCp+cJTNC_?{5xN$ueA1Moc|(39H1;|Jh-LZBzLgU1iR z_k=)CY6p)WfbR)`p41K=KLFno0zIi6JbnPaCj@#@J9zv6d`}4Uq;~N50r;K}=t=G1 z@dNNZA<&cB!Q%(udqSWmwS&hG!1shePihB`AAs)(fu7V39zOuz69PS{9Xx&jz9$5F zQagD30DMmf^rUw1_yPEy5a>zm;PC_SJt5GO+QH)o;Cn)#C$)pe55V_?Ku>B1j~{^V z34xx}4jw-M-xC5osU19i0KO*#dQv-h`~ZAU2=t_O@c04vo)G9s?cnhP@I4{WliI=K z2jF``peMD1#}B~wgg{Sf2ag|s?+JmP)D9j$0N)b=J*gc$egM8F1bR|Cc>Dl-PYCp+ zcJTNC_?{5xN$ueA1Moc|(39H1;|Jh-LZBzLgU1iR_k=)CY6p)WfbR)`p41K=KLFno z0zIi6JbnPaCj@#@J9zv6d`}4Uq;~N50r;K}=t=G1@dNNZA<&cB!Q=Y_eyg%oYpt@T z*g(GCwx+dUo8fjar>|EvrR};^^`=sg3FF2B^_tt(HWRCn{-%jd)u}~F7ozQ}{`#5JC5O7nprOToU7f z)*>uAq$Kzkn->4h=qwU%2{l@RF*+C#F0>SFOFk~vXpG>mZlY8MA-iS3 zg1kWIBC)CYQ{L>uA$s#j;_R-S5*)S*YCjQ*49OZJ#AO*4O zO_K76unVU+HcNLqH!QJ*(ISwmr@aF)hGw|1U{vd*xuc2K>{S8a1`&(X0alVkT@f!1 z$~@y(mKr3Ni4Nqhg4b8gE0L<+1#}8O<-ER&Toe+!4W;(NoJH+Le2sfyL>Us@_$Y#7 zVOunTn139N|8})dD+B(e0n3C}^zJr<0AeSq2qbsY5L(2@(cn_>nNOlh)@kJwm+3G3 zr^{r)xXTLmWr<|q1dF`-Qeh!>5o?yHyILi>Y28AAsMJ|xT~-kWsSKs1?j<@*bnZk} zK`K;VKpvIjQe%;M^Gqe^H;d%yTHbC3WOQx1&K=*uSDL`!xB_I^s3Kt36)pizM!+%QSL={gSv;$XVIQj7w0f-y?b_|t&BrtjHxVZ1A`V-d^%hbBhYQlw zRabS@+_Lp*bun(55o<@)j1V;1uAXY1ur+Tr^Nww9BBix@v(?hQB`E>}TgE-%}Dt^FrK%?3xALRuj*4N4&v+Aka;d^b= zthJ7dgdC`CtsR7CHPdMNku6BkpO)IA|I+ir>7O;(GLe_5 ze~gLc@RrP_9r3%;kiIMKcVW&;#qU!1E~LNyt3G405l>aC#rikFq>%+uCx zZOzV!dFGd3%E`7e{K#p;_K{h#xNWJ{ghAz9*``Si{p^2E8TW9KRiwEr`uKg9ol9imnMrbFK51=R25Pq>$&{U-AER^B zPAejz3W*ZS!9LA2l47%)pif03P@~D4q1APU#mG)AHb3^9y;rS~F-Aj}l@Ze+Pu9)) z6#Ojyx8rt2Bf|KU3WwW2sM5f+zM_}|RLa<&%906guJxwKMwb<_5a3{)#*%7awm5S3uIZ2}3kCi#LK zBE)DX`8Fh{+v&)fR6%Ui6>Ch+W;2e+#b4P|Z`!_g%#f%Or76zbil-O*SJ<&dmt5EY z!)_D>G}xP|1B% znC+-PY*#Q8yW%N?sO&+Ll#+B-Q7)%wlJBFNQxz`)2)7kd8kdKxML`!Avz0+fd{7ce z9*;rT;i|d7K4sZ$vRPt1#^YnUXe{A`3h;y++1q=TUTHD?n95V|K-ns)r_p zxwhk2Lp4asQ9oIGq*&!tu@lZQaU$TlA%!+?+Buo5PRgcQA#sY((u~O?=3w?2$vn!? zsDJJe$xs;~LEHb6fJ?ClAq^^w6)!JDXeB`p2JZl%PEtciv50ya_3BVWb}o?GSd@tE zH0e$VGm61dal*;)5{n4PWQo;^osgce^AK0t^GLZE)gOnB9(ef1kv?CG=|K{}oJy0< zl~~i@$VP)Ufh#n1%5 z5Rjt)4v~4OxGzM?$b@8bYI!)Kp4XsbQLB2iF?)UdM`8CT{y5df_7SX-76nS!ou1N) zL_Y##TD2qK+&6npgS|err_n$m0UM}U)w`<4ouj1c5s$Y|Rgv-#5@(nOd9 z05h6&5Clt8&#c1V zZBi*&d^T;~NkcRjFsCh@|!jT&613L@LtLS}Mb8^I>PuNa0_HFQGP9)$LlS?Za_F7E-9%3IT^CS6L@)B0djE z%FEc!uA9MLaI~mhK{{|Y*&5bx>WJPkpp~ZMRF%qO*Otgw21oC)VvN`3gj#$t!L9i` z${UNvxYCSH4{J@ETbR*oN1H$Fw8Og|rE+FaNo7i!lW{%oLs8Zxf+L}VqnRE~`ARa)E$Z&j?n0TS zXI)#!-jld>gDOHaWYd8~l!l-^X!jf2W!IXZx`xWcSDi!)+&0sO9mCl>m^``Wf|8@$AL~3y~d$1B493QpOeKi|A zLOad&DVGvzmBFFlF`etS1TFh&TD@DHh?WooN1%fAXx*ZQ{J|qGu~q*VzpTu%JJ+h+ zPjHjbC0xo>Jhpfrwt)5eEQ=7c&L!+KzeqdinHwjHomp(%$SI{F9HDN?5jC;Y zqR4>2F3s$VRJ;hrLPOxzJBj;W@-CIUVDwZn<6l_}CwP;N%>1)Dkrk4k%c-zwdl+tu zl2{>gMYw@1WUch7%#G7`56-) zr8Gi;?h+>f)}mK@RnY>u&=RRBhfLJcP;iVcMIBH_-%pxGE+;4oi3wBy0RzEl>?^wz zvxI{frGmEUdf!;jJn*v}G(LZfKvV7aY0lj7TCN7az;Ue-rE#^i%lH z|9uq&OWqQf2d*q!T87O0 z6D>2O(q_!|9+HSxfrqH;MNOoU?4)L8LIr^{?g!mlAZL>&H50(|B9(CPQD_2d21A5X zTFa(ThLX%;yU$UADp)4{GtV0Jl&d(a%j|j2l6MN3Bt;%l7kgBSyCUo&6@A#qLF=ya zo>-H{oQGIMWo7V6&R8NK6(aet#hfczyQ7oHw1AIBl+Z~4uuqEGOp;)OEY5MIN3rjPekD8YGjgkrXX!YAK+L1!&c~Zcr)EM$3cO zA$6pjpP&$;rda+Zg;V_d^sl?Eh2%6oMWHd8o`IvOsaobUL4qI2gvY4r4RkZX1=F}O z>T(NRk{IABDC;UQK^PSVzx#&)(RD&z#3W+7ZDaet8hqee-n!-{6lJKBP zg3P^FMpbPSWft1B?(C8G8j`A_g(%nMG#|PWSGhM@7Eh)qS7VQz%g&MDRIbGHd9%@gTY-fMLV z6%uPp0fP34nHabdkrrwXGDA~B@;+Jg#|R1~swnSX1_zZ9!v0*k(v?DLMjl>@PT}rK zc9F?E@X%6=|MBqx^b5HuY9xAQ*qs>!A+RN zy?@;-lV18CtA}Kx1g@vK%MJ%6cDjaYf;SKCFgA2ynOytS4#ja8oEdU2Jk|-uYle%$JmdT|oi-}?xrckFMN5ZLskHfg9MCRn- zXpwkl{4@Wdg&%^P0FA9-Vr!J1v|H(Ws>#Qi`mwZDY~&UbNG3T^;KLM%>_9k&X2seS zdz`u}{*2vL;$xO0+Zugh+=S!MZahD#o3F!}H*BKa*u~1;_lEVOJ!%B@w3IZdUVE|G zs^X;LR&pD@g6!;ffVq{helV(6-(%Pjo@?y4*>iQ+3pnWekDB`$qAx!mvbJHBz^AK6 z^~fgkjrOtdvu!;)+O%&}eC$&lOdi$;^*ppsA5~jbKC*Z*ik5Y+aCJI5ui{!$#X4gQ zKEQJj`Dr?0ovnNZWS)jNYPKgw>ru-YF?cn$ful?~SoHXO3AWAs_M~~gdj%h=sn3q_ zg?$?BOIhQc6EfG6=Scd}-{7wBR+W&Ta1u7CaDQZ@QN2;EhhuyS`Bu}|`n^YWJ=*pQ zIIfOx)O8TA!|l2mzc(~vG|+n|X21Ca;7`W!u@n1Huv<(vY$a(({l(k+^{Dyj)%%)X zM_gLCMH*M!p0(NfZEmzN0?5*wnAPd)A2#DQly%=&srMH<{lU-uhA)oRmR zF!0B>R^6uYt!7`g)%6aoI)rQgihES8-dfihb4DyKw0MiE>b=+yv0>Y{{Nu6mf}|ok zEH+fKApwiq0{u)+6?s@+&mOCG)I=!Z#6=pYIZo?-Rm(!Leh}3&vehHGwZ^kV zz^(oIneSh_7X`KAd@jXk7#t)4@dvTcS`b9nltzK*F^YuNe z&Tg%KzPXpHv)^>e!c3uB1yBt^h+wI@Bx!HR^)O=g? z=A+xcR?Qh;d)$PlcKwrfX?b;(c!n*jdCv~;sMY#an}MLM{{`)Ckpe#C_nQ-~P}_GJ z*@9VZc?9B=(%jVTiKN|WWU-=ka{X|t$wW@B9 zwh>&dtZ%VrN=*6M?IfRTNLP>5pAztoJ=Ov|pzsNUhR>F@F_QmhR_``b_-mFx;qa1`uh6wYQg%QZ3q5N9pAP~fZn!m@NqzW>vszH zakahQ{2Com*Lwnb0sO613@5*O3wos04S>ynY@G=Lqqf0YIMg33!1K^s!9^cLAZ!cN zGVFIhA1_(3>;0dk9KiSHF*6}IAACj92mo#j8>so0|1{W*-}5PE5Bz&mZ5vl>Ae*$y zkbKh|ukiTz=*dK*S8mZQD5P0%;M$wqLX07-Kec|>rgYE~4Ptoelc$6+g|)tHL|*W|0CJsGLGwmHp+&rgDE!Ewig9_ zRi!v@&niBm8_b!Q>?KwDG{X1{{8mV#h!8^a^P7pyN8=YQX z60bLVCndjEM`~$8o*B>q5vBmVaA2<9Kaoq-+gpkWe3rw>gjS}T?$vW*<6|t9HubA% zMm)A(#+4K?d_jscjA1E9H zB9((Z`9VI{4`J=8^^Xepkps{A^g9In#Kt@FHhA~gw471n^LCHneQW*m_BLL(y6(W& zTkCi8%&dA3_qrA9QwJ&dh=8YwAGs%+YCT?FRpaVYTZ!=l;9CXwV_HyETlKsH{%--P zfPbT%o7oSpI`E92Z_@!j`b?d_0RDqOq>hO6y*z$a&)|YDM@8G)rwQG)1J7zJ7gyea z*CiFXyx!bvFJp#&Qcokm+x@Ak*YzuLX5^dPWLmVoC*a@uNuWEgk10@tPFO|4T6@mHfgfa+{N=XaAq3rFdk?i za#!gd9WbFP9iW+%xyDv19#ooH2w=>xuP8;wcuai2WIC?Kr;#+(ITO98s&xKwt(Xqr ztj)*VfL&dS-hnI42u6KrDu$mKSZ1bVND|3uJ#ne6QNckZt7-1@&lr>?mRuFC?U3ZS$KcM zm2)+k@B|Rui5!*Ug9i42$Cq0cI=YcCH(j4a(X}4o1QTvLGWu$+Ea-IZIp7^W8j%vI zp=TFo)Y2nt(Zc37pR1+1_Wel0AlZr_RUP@ zI)t%c`9JspZE4$M4J8~V5!aJ8D8~2dl*reUH5JzDKmH@?=@3$@o|X$cy=69tYHWKD zr%;}1Pm?_TVE^;P-1MGJ=ks9p{)3qFMqU4rd-rmlOzd;_-p(2RX`BXH*M4L+3n6T7 z{bgcokq+W#;{mqRThE@}!zZlm=%=4d4>I{r9lhZ~WGPo&oAWp3#7|A$_}V3L8|L4b z+hp>Q_rEQAz54@~ULJR6)C%_EPhApE!i%0ai+hpwg|*qMGvf7)SJg0XP&UG2vcGY1 zf(?@}IsG&-zAqammW~ooPQvMrU(PZ(9iL2N;0lWz@jB8JhmbGOWo!F0xGsJ_mk@2c z1yr#bLDZOa$>T2|qEtJVR^PMJcv42XPi?X+2Zt;~X(Yq->nrMK=Sa zIU&X@=KK^!6Srk8grk(GTz}u^(i|xhN@dGrPc0&RP}0a7I>KZx?&qAp_&y+GSUQpb zc|dM563tLhdqVe86xLV(#HZ^9J-7!-mYt-l5_S?4CQ|Cfq^VkKHRHzeJVUSSf=R)b zB77CrcCPy2=roaSw(|pWT#-Il&nmvtJ&Cuid*Or<^X}B$2)DKSXxE_KR`Gh6$Ohex z@wjPqV}=i8xCT~S>!eUz1~sKgiq@n^e&qKSn5H}H$6QS(;4jy=NLxtZx-Y}O$amz<%z8}GwNl+sNZ0bER>gfd zm%{oeZpK+Bre;o;4F&Lpw9b}JC+khetq(vm{EI8s(lX8YlESj7Gu%F1+fs_RUt9-X zzOj(fb?Z_}6R&FD+Aw?l^*eW7c){#rAKSij_(IeC@DJa;dzj1=zcx2}Zsp(y^SnCT z*m&usd~vAwUd~*tY`pMNlSfbAx%1|w+0%;OBpz+wdF@S$D=XA~EtYs5)$N4 zeDn2U%dh-OvBhI-`TEbPMLRF3cFr$!@y?E-Nw68SYsmT%=+gdCZep zhvcoxEAFz+#jIbl6i|y#5_UY_#8~nX4~M=l3DszSe-t#P_9K&A6++xuTf;wtrp~J3 zzI>_G?Cw&Fohq@vceTrCla#BkamWSuqvKFW3)DCMecr078OWFO3Ji4*3e1#?uc4+}Y zEl_B?m@&>cXDlu9=jUFoF{6?$x1e5+sqx&bFvk*ggQH}=yR(4)M+@mUs-Ax%hVQaG z-QcgIvVKzH*9-s9Fwp_aki0*-Z1q`IpOhji-Skv9+D|`ihfJ4kx(7$%k8@dYtUBc; z(5DYl^N~8S9p>YbsFx`0_rmfK_-+T*S5}e=epa}ok2#;R&5S;-jcgYd%lk(=dISD$ zW)457xjSuh$fG8VcUvA~tAfqWjyOMNu|8rQpEG{+IT_`ekGI3f4vuUT^*~qr zIj+MJ9vza_zFDMbDeeYW;V?FA0(5Cv zhr{2FtX(!ZwC^DnuVG?<|2d>Sw4?Y731XOk0#R&6Vv~dA&tB|i9&0r=EyiVn-u#Y@ zeKlOPU-=srzMRe8$}KI;?Q@o6w)1Fz{tqM162g*yl+Nn{37Y_$e{PAP5m_E+JGds> z2Y0IySF17}{F9{}U!CHip7+zg+QljqEj%E>?mI&eeQuR)(Qg+VnfwDg<6MQ4s$1B( zJBva204m`Cvc-?vo-&6zA=TCtwE;}0JTp>P2Z?-zor>8u?a-D((DB^j96iUnr;yyf zC}E!4ml?HH(T;@22;5*i661vkgkz3mQ+sgA#y(}zY7pv4>XDBeFq`?v>^_rHipCR! zls~Yrb8Zv^WM|6~^nEk4q<)r?Gjs3hbNck@)2DyjzV~*&ivYfNpRO=-&<&zh z+8v*GgEOV&tDTBf3t{IANYt8YP%D#_NUe#%X_pz|?w09Iis+q#n(eHFY4O>33hNq( z56Z3HnXOhNY>#kwMrvY~RB$|i+tl#KF#bxWcBrSFLtBGvn>wzdR<;nf*9=K~5m~F3&62yTvAYNK z_g#sY9b?DB>V&p!B@bWzhNTrI>cO5S`gu}S+*fbbnho<)9Tt)yP8OAEnUa2kAl5y? zx`U@}rcH}X-XNMf!j_n3^!s2ur0Kq`tXI5hN?OT!(N^qY!^V%ur51rl7@2tCm#X!w zZBESI`=qu_dS6vPhf{|fP28d5Kc)+Gv%8B&ze3eLpI7baIX<25*)Hw)*D3icDv7c^m7k25WtbD|%;1HseMYuj`USgXVwvmaIq{fdyQ8+UJykABYz8aX z#|eckTY2tZFt&O7g&_z_q){VAMMbg^cR*U84XRVD7EvG>Z+s99k!Q9F$f9j@Ra>2e z&@!KhpU_CDXHLblzmNJhvSdrB%K9qmfgl?d42kQVZfm&K6qT#_BIm*uLkUTtl)o0wL$d-M?QK($-r`K{)9wZ)?38Lek(U$9hvi@2QwHsySU4Gf8!_#Nhg z$-XqL)_&7IvG=vWw!{n@<`|5C8 zJV|`DsfMr7MX4bk{bW@;KHF~F{)oDWwCt(P^?tUtyOf+Aifm9>Jqk&$=O>gg7ztlv z0H7kN1^iflQC??I-L9>-+t_YRQ~PWGAzc?&&FE9>4C3v87E87)!DRHXYGzDN@EtBm z+bKlc>_blVyv^7Sqb;#9!P?~1%+_w>VzW<9 zNFc7_Y)%t_M?}wB3}`b<3aw~I)0qlJiZj5tg_0OyMI!1FHKs(m{a1bLP#u;uWT6N?Oa}#*K)c5d(!-2JlneYa zR$aIQlwezzi+EMZdl}C}AbL2*lFb&B7J0;yZ9jRePIP*=$#3a#Nm`C>G|+8njRw>DrqoXf?j8JlwUFtO4tfS*irQm^+$6^YQ2QZVT=0} zhCss2Mw9f9dbSR@a%(^*k*p zq(&D@5BgM17T7h8DBV$%&gEgz4n!r+?iy3h5@x)vQu39eiV;MeFpmF@uq`#ak~XgK zRVRM(v(9)ZHlq{6c;!&8e`=tc5|1!z zok}W95Oj$hMe%5csu&=-{bcTx#f@nD!3|YKk#jVQThfcK4rOKJuVh}49tcf}|IL5R zYf{3|uiu6_DhU?>0uzQh#Zd>$PgIQ)dS`+W=`v&FM#M%Ar9l#IXL0u%XVOA{Q}^Q1{7q;FK}AM04(_AL%Wh7Dk^CSHO_zhEptpwK0MB)AS24rraVaAGN^ zBFXY7Qpi^%aHo{Y#mrO|e*f+Nn`{1|U&=PoPvM!z#N~r%*+9Wa-xaLOO!`kj^{qji z{$8Nq2toc1krjX;c9tP6wp_uP5=m>oYE)23s49aW@qIe=vP3=BY9KU5IJzC>?5W`q zHPP*?w6dGA>VqjegIQ}o?Pc&pD$GlSvJzxx(K{o;C7LGZc9MMi%!NoEVT~D5+(aT- z%9U*WQEY_Dn4YPNL)0All_fNNxPeOR)3aD0i|5ED92i}-^ zDkGUkud*Vh#$(ltg76~S#?j4fF}+w)&MvAG4XuPbgmp+z;sDPJURA!W>S~coW53u?7L~`C~*KjGK zu)ht568IuorGU21bkVX5!-!vIK~v-!#gU)|700B@F(eWt5pKT6D-6T6C2bM+_K^B@!ewA{tpm z1?MJW6FY#Xeg@(Y1dCG-6pwRliVJSD7r)Ia*b^ZyHFJ)-UU$2GiI)F}jE=EY0ZhR- znn(;aAQ3#E5MiA)fhi&EdMOzCx*NtVQW^j3lUUdmRhxKyl5lS8C!=+d)F z#Za3hRcfCMr_2wT_V8q|SLIn*2)A z4te+2*rPU5yj-j);;Co|%n<2y!>Ws`xr&ssa7IRK;ut2kr9<5*iVN`6t1~w2K_E?FLre*DablXiw+;#6^;3E51TYd%Y-g4&s10H`Cy~^MTF-MH~lYA1^P*}yj%D7s%_pnJQ>oV z_1>g=u=u2ZFi2ZgKU^Q2XSmBBU?`wO9~xxa#{z4$+n9z; zOm*zl19I0Oc4*07ru4%;&Rzd9R)5LfXK!QcE3sLBi#;IJ|4ldYaUiT%+d79{p|U^@t7*uCMAgA>T2RQDQ+>{XSJeQ z9Pj?a>UH)YwS%1|Y)`les0Y`W3#XTJNaruuv^i|1O>RDxgHeL!RgUwAZS$k}kWs4n z62=^GtNrhy{Q@Sxj&rF`ZZ&Bp{panAHbiktD`n%2ZPARH-iGB~iyS*gD2>h4GPv@D zjTh@d6FR94Tf7&@|@Vu<2feb{Y(QKhP`&9nf6(36$b4jv*LM#EqcGYE(QN616$+hr8qW~Rzx%~wuRXNaeRRBCIczdS)b7hc{(?0jd z=gZXJg{6fm7;HN(TXCeV3^CoZpJp)FOA>3e8-Rs~uEa4mX?iC%7^Ikic;%T^qf2nt}+jMsCwiRNU{74cc|vLVVJKF4B#{0(t~uNjw?^3&vO z$?;KcxfSP1@ki^pq8+g44K01&$n(qpBTK<9JbHU$#$%7|NB6EI+Qarnx7NXfzcCOF>c-mJM z*~}_p5{<+6C8GTXR|ocxy*!A~GV9|tnzEE{_S`HnrVsZ%B{Q!Mxs-|Cu+KBDhudqB z(v$k9@>>~O!l&{y+m%3zP1v^a>Zj(yS6fp8HIJ~yE4}TW!HJK7! zpWI8*GM>B(9){Nj>dIG|Z!|Fr|H@!)(xPoa!LEnrwi9_@4|j$;*4XDh6sduxxwHN5 z7%kzsD{r-#MzApXY1q7ZWnpNsfA!G?qxN>QfM)01jkj(r?Cbvyj&I&K!|}A6;ocCd z>mPhy8k2!ty)uJlgl*mNO>ulPxOroS%V>O~*-V9;eAXR5kmE4~Q$S&RfTOu7-S*)} zyI)Fd`%y|F*WFMdsi3PmhmGwU5!`INh~o(i_nw2xRH{gAUuiyXxRCciN)^I$@s0{R zcutOQnot}+eC;_oK5VcX13YYA*~^LQ8_aRMM(Nj}89~BaE($mHuBBcH=u3t&ws?KgMT<+)6DGD@#|YRJcHr3 zW9qwe{LCFcxbdPKkKeavq#9g#G09bf(B5!YyW63+)qGgm9M$pz%?uK_ss>LrU12Y) zXoene3$4_xvE+6JZl2pCm9;oNB_8|4J1Px7O{&zaH3@HJx$2h5@tR-|%f$ZHT#j#s z6US^Ddj*GM3mpLI5aoE(#&(X2!p$4*_@+2MShFn~nk&Wej9}l$&=}*x+u#P3ouuW) zR1NaFw|JC&_TC+A2<=pk=c+?dTB=q~`HDQ^#m*q*A{Ly+1E5v(us8@dCW+7aeX5!25&nW8&tA zeP(C%m2i8&ETrC0HO#FV^2?048ryzz;V)~2@4j95%lb*-T%j1P zHE-cJgxP9z1uc}UyQJdulTpc79v1CzXkUL3~&CJ|HA zMPR)g!NtLUZx!zqW*bI+EBsKSR9zi7u6Q1#n&wZwuk5DRL1nkg;{tyBDMp?x2Op%X z^C2oREx3&F(N{Cq^$*M_%eGk#BUjWQ;7s$LtkZy-U_A7M5&O`}Ry`)R?zNZM1xWmeR4eu6N9ecU z;Un!fc;(_n{LYrN_x{j0rgW|v{?MHl6GgrJVWsL<(@(yY_xD$;PkeHk_w&QNXG}Dp z;l=4Y$8&b6tW1u<)$pOTSmc#+@ALMDeP%J9lO{#k)b((G2)9m^cSR@kiRnDrD~s_k4q{*WH(o$EjL!S)WtITt^I zE$rj3KXGTeZ!71*C*FE%A9Y-d7c14dN51^-aYDrZy^JNTJh{LY)bThAp@Tm8mc3**gV{hh^eM9byHyU=wQ9Um|3 zKl=;#24P$T1e4DKqnnf6sTysopTaAHiC(!PX7%mFB?`bpks(B58CbJVodX_4NV6Kz z)I>9r6f&ZjSP1iq$ZQVQm6(5BR-E7IYT^tg?8vxEr80oUM5-c1vJ#8QQK60|L|GV> zxXX+RDBn|{)$kj|T>jc2_dEa-Mlg?L7^pG>yfZaPD)&Gza;9ATIDAp!h+)#Hj@Lae zfmK!`E^};kO%S+6I*I(`ZRG0UJUvf|@IVfQs}?N3d%{>EqGMiH#|$HIfe>(QDYz?Z zF~3t*9!a@aNxihIZ0I5Ncja1ak+q3b%h+mZ3&WZ#>r$a5<}-4-p%v&7e41L9Kf!Vn zP4UHPJez1zmO%07GMbrl6t~NZIj$)Ah1x@y^=}Sc{Dp3F(MG8?CU7OX+#$M~D!cGc zZTRU=U%4`y4Tqm*D^8jXZ)n>~N;e!Y7B|Lhf4Pz0y!I2?a&mO^6VDd>?9SlA>`wE_ z(@$%w$l?)@@)}V?z%cSMIKm`t7%e!xd=* zYg^EL@HuR`e}6cXP2kpT`OURwFR<<9rI((4R@+}*I(l~JWw+(i-$u)~hr@3RA2*G* z;@p3`iQ0nm&2MgR3*W!Lt*tmW4t`Txaiqn!;@o*DKhIX2+23rAKK(VNE?aTlej7}Q z?!V1Ke77OSVoTJvAWF3Pylgo*cz#FP4)Ts{`AOEnep4kfyZ^RI#0vTQY{fy#Z~O)} zEaKnzKdhb2)cA*7NL4dKt{ozw<#l*zYPr@-@mWu@zo=ZzJDmhKQ!h~9D&u}3;BCle>%>eLVAlr(^(z%tZ}R(Lq~4dN$A%j#Yqb`!UfAaWKln&m*4OIQYO`iq7Te9o(o^;c)_?Kz zc~r+M_KE5#%R7&nePFFg=gGS|Keor{Zkb{<%?tIO#Ut5Xr+D|{wm$BsI5mrjr@CxQ zr5CQ7Ex0#(k&G6S8h+kqH52e%jdYAg$wA!9Q;=a=DUNiSUsFM*=z%p#{wf(97s~ zoVXSd4wRIP_3@tW+C$`6n;i;}x{N|1qt#J~uM}$hUfGy#t&G*&X(n$E z>k)ULGx$l4=Nmw==7P+RJYePYKy373eqwRju8QL;vGpdZhGlEHZFY&=dEp<}PP-B| zS-1YY?vh$oJ;&O1qV*=U_!QR+OnsoiTRe{ucGd#*V_^r!k|HUU4z+r_wbiz{hLzGAkyul5+~9$_U|VMcp?hji!deN`313QVHxV#Uj-^XrzLworWm22(R? zp<>h9`RN?p8yx+8^6l-DVg=(jO{stGd==2j?huTxA8Q%m=@lPr+Rc?X)=10m7}-^t zTr;i4tCWUgjaAT9BvqUCy$)=jy0d-MWz4(-hvq!wz~?w$wP%XoO6 z2yAgIqHS^1uWZ@sd}iA@+28=3*<$n5Z~nJbdyuFgDkoY-2OePffQRp$3Nw#WSk?ZWb&$t@f6gtm5(6+^Js=JrK$wD=aCXeUn_dH}y(RwKP{ zwrjk7HKoW0Dn3)y4tOnqO{nSUoD?WcK6?cqFD-`@8qiHPKsPxMjyicI&g_+UMV8;Z z*r7zafHLk;VlW%|xEL|Wf$S1LOS>&!)jOkfK5EDyrC_rh>7jPJ4(GR&PcJbt!XJlT z#O$ZY6veuJav88>UuAsQ36<&D2XQO~m`Z}DLTKYQkoIDdaBQo`P#cK4gI4sbtfhsC$L`_64-ePc+Q$eD! zOAS%x*|WATq{wDs zXK~8p=eqK;g?e1-yhdEK3Mt`JApC85lw|?}&!OP*&~B%4encsDMNtY*{6WuBS4jmQ z1wL6+DCs0yDiXFcCtQn$8nb&GK~YOV2|y->8kHn*bk?XfLPh+=I+n;-XBoPZ*p!1C zlh|oVvJT*^i)Pv(oHz=QB1R${>WKc-Zc5U-U4)%Eh{q05XjX&hK-ryzh;$Z1r^F6S zg`-YLf=}eNUV-sheg+zv1mdCj*~gILY8Sy80R$?>0B|zun3{!6f_j*P0FFY`NFO%(s;bfY6f=}B$1YkGH;5I92?Tt z*>WbJSgRAo?((DjrItnKa`eHFky9k(TA(SB7kUq=kcliaJtc%;mOX$%aUgQ%Bd1D+ z^fN|K<_jodAm!9bTk=E6IGD*CiNhe9Av0WM+Yr*Bx)zQl8ML7J&mjZp*F{CjsETFA z0&iJDn35nClrFbej}yB!ftHiw55FqID+vYY$veY+p z2@>u=DI9#PcWq9pIa4udi|LSOyah=z$+wKD93Fr?3$8fAX|lP7M3~`-lV{#}N?L4~ z(Wt{-a)b1=;E?0QnhtO|bQhws{Ef*-nLBh`0)j7E{ziqki5D{ z?6~mCurH-WwTE;%ai2$V(gjw%Ci#^Xfu**zl=uU16mP_#fR4=$cQz!j*q!?}I(H;; zPvT;1VYywFRUPnO=QvW-4v(gVX-APjgg-Bbl7*PnhnGbW>nw=oSh76}ozjUAlygrQ z3b_0-kyoj=$IUSNr#l!QxNNCc~BmdTAUd`#RU z07Q-j2M`sLg;~~sOVsRSwe%3TOHTMC!4QPbY1t_>It{losIdKt)JaN}fQC;WrEDzb z2+G_g7VVPFT_K|NlYZXMZCjVSBVi3iyo7d zZ~ z|HRjf@5IzImPKt9@m6MoFV5^<;zzunz`jkosr2y@ zhPg}~dDn)tJ;gkp()aCLROg|nrphm-N(;Z}4@uct;@TCTl;dz|YyCGjq_lLXu48fG zo**`%XC+=k6=g%Fr+TzL4LPJLw{~0Q(=gM9jBPV%;R#X(rK*W%S}XY7GbncqFjx@Ahp^*C4z$!`qniJuc*2rku7^Z68Byls=bN04IFG3G>3`i zJZWBLa?>!&2|VK**vqqE@9^?2(#sY`wWDp4gZ<;LlNO&cDkuE3gCYvB-mf++F-^A~ zpWpW$RH|TrnVJs6qeih4G?A{ny+?yR|x2zzht@(K2js2a)3r&^Y_3_2SxblS^SoP)YJrLMcJIJ~ZQEdwpG zm$q%;rr+O;Dp9AU;d?)cX2;T`U829B@B3s-g3d|)84fdazigtx;-a-U8ZA_az_DxL zWCsuO;V4yHrv9CKRPyC|oMP(nz1nu7Daja`ui~t1@Z7IT7wRADvj?x@Q(L=wuF$Wa zdS+}Z+~dy~BC7q%tnUT0M({cvs>d_@Db2md$30krlX_ZMfR;hn)$qB~Gk#Bz=?=BZ zji776nrgp)dBinzrS4yj;B)oXI@k5MQb%@(B$l>rt*c{u8m#+QG?_4=X%Y{dOZ*a_ru~ol0SfJ(lhCUFZ?=HR5ypAV-^276O zJ`iI+);}KaQ=*SQ$`?n_ve;vcU0Hqf=t@RvFnpQ!Fa7$-M~`04^M3y_LvX@#!S}XdoQQVt_J9oKX8#@=2Gwa zB&M40*|f_#Jt2sxRxOvW(@+3A#Gh+xQG^nboQzja>DmN{+8rF0PEj zEKxdE6k+bUYmbb%QuEEO6?A~90Dvb13B+fja4d84Ua#yFIroShU$2~dq-a~=3%Dp> z*<9P^b!!NZJu)Nnx_*LRl()PkX6FqjPF_z-S#N30cEH(!?H!{D=rUID&4h3!6J zmQ(&TKO(`pY__CCVR<(6dLL3DL+D*{y3ZIwVf!m-J-MsupX5QOTo(DOt4DY_9qX0e zBihTs>H(J7P=M;vhsJ0zYND7~Mvu@76PT>$rNJw2#$L48Bj>0+v|L;%+Q5j_D{GsK z5)}54_w#TWCtTh_jvbYkKQm6Y|DN}(Khqxb;jQ!deOA|xoV)USc3iK#=e-S>TprT) zmwM&Wk8Fec^|fn5w!!etgD2X1xTsfuf)|AQE9V~l_%z#o?|gCmdmkDeWn8xre&OXa zj;}9VmgC7?&%?k4xKOaKifUw+Ucri$<6oZS8I5E>g9lqfEF~F?@{2ir?mivU*5&vW zMr=8ntLRvc$FWYc{usxz4BMW;@f8}jru_CSIN)&BD772HNKJ2Ra4?%rad+6berJmR z8EV||6vX|^l~O|uD}iu4*IH&6(z4!{mX&&)-)|{cj%THNeC|aCtls4(isRRDJPXR3 z%P)*ml`mZQ@MqfNDl>fI_?4B*wH&`vufA{a4&Q-dTZSBumg{o-%DEdiyaM`9J;euL z_8DY%`HWYtYdOB6txl3E`@QeE^0GU=`Gv#c_@g7Wc=cHXxR8QyAwdD_;cbyYgPU?Z zo_5Ex=k~T79tKB_=@d9#Ueo899`74-#F~~IcP=S2nT zDe^3%75>b!5`mdYa)mqYw1NG~yg;>bS@;e^$0O01sg%XUAR+BwW`S_{-MEUBS=%ka zz_9FbF>>?4bD%4Ja@&bz=M8Ncihsuh6x*OsHib|ywDT<-eZbN`dzYLp^)Lic&yYfX zP#Gt_bK_XWfTsC@6R5i07s*}@_`EBw9P>?`7*e9akV^RR9ztmI`;jEO9EjEHEjo~U zx7Uk>U5)&CAT+VWYc>gNR@!!HVY5o2ximSyx=regmfNE&ZK8pydPh?~>s8H5P4lPq<1p2lv3z!hq#a>ApZv^1_AM6U=0W$MOlbw)Fv?16Wj6wcS)j zWx6y-@M09j7$1b$G3~ym9U*n`KVpzxxj6mYEb>Xqi`oHF*|{I`ogr24lJ5wiy)!se z=T_2m${=yBH*3cXHNDDWj11BjTeclmEX7K9X0wWlNdR*1PcyXfu`Ean7$V2?dI@z% z_w;EU;fR{5x};CML|WTgJL)jRJ6pMNo>Ubj7nMsS1GgFySa>8#3CHNJD_cpn_J znW(z7Hhky!xS}!GcZ93T7K=q?4?k|liv?d0{E_iniv|1juD5sh_aA2RpwzwI#;tZC zEpDTVo8>A#LgO>V)*X+B*_uE}*!!iAwBXWGD6Xbykwv8im_DZh(-U4hKAuVH@H@hI zd$CBM(fpm))4#rInEA-{+cSK0@e%ELs;duPW=u2O|%b77|=)I83=Qb4W zpN^1dyIvsU^PZx(XG#mpnJeyI%HY+T)0ANk(&E_hi{Eh^((wX1#u@eV|9nfMMF(|& z%@|%t2q=L0w-69xL50sfOgs0~u`p7M39C0!WQc(!EPGRO?2hLy86Kd)Ur=wEs*i>d zqi8nz6pRArI<7f8J<_rp_?#Vc5=P51{sF$s0E#eyr!*%r?z?YbQlI7hP8XNLX8~%W z1QiYj!n*F&fh$D{$|DNXxEuA@&N~|GMYE3IhdW&eO8kj{NQPhA7v`Bj{LKbC0H3iP@u3%MaDTByFL*iNdm(sZ+t&hQC3l&v`Rl03nkEgjuIQ`iLW z>}|V5mK%B$cIf1nTX9O+Lw`Fewnqz2;MFb@nzTc|+eA}JWZiu)xeX)nJh*W+c+~N7 zL(hpVMahXRORb$YZ!B_`CtmzDYqfFZ`RChKTXA-tZ^zndva>U8gA@*zzV@aY%iXwG~HNv=v9Tl&|6pTYcx}Ti??6e*CLAZTTvWS@|lCS@|kX#pW5M zF5lJ>E?>oY`U~1r#G?c7+u*0aP`+pLcbJVXD2e6>-;DnylZV+%qanY3og9yoWA1*E#mf9HsG|SfG27f^h3`~S(B|0t zo>D`)7R8*Q#b(CpP}Max&Mg*`c;rvC@Q9KK?zD=Q2XI1eg{?SXrsICCVN=~y4{ujj zr_-FZiAG~;g_g9Cmf=ut(dLH5!nfkI!rJM#xUaXX@DVq&^wJSrM#3YsFdLVa9dITN zseFL75_8(DLmD|9PEZy}>LvDM=~!GdIbCqPa1`$g*YUUh11JAKIK@A!4zIdDk&-fQ z{E0;WD4{=jhNoKcY4DE;#XmB>`uo(XO)Ngg{YblO7605Eg*4_#cjOrt?LBJsn%-X| zy$|8n>yt>nJ8rIkW_h)_-`?>2S}{qjG*WO(LEn2r;`b+37&APIlMT zuXZjWM|eIzh>gcUh=C^GvTPaeE6nrtEI!0z5zR7m3*#a=?!{7l%^}#eFz{HN^>G;i zDu%02%u_t2W+ZhaB6SByc{q9CY;TQwlyjFjWe@C?d_A1@EGBvQfBIdOGtjtc@g$Y# zn5Qj~I?^Z~8C6@oD*~uU_ehdcCG6fJKsV5X7k;NBL2Po=9DrwxqZ7pyjk8l%1~eu+ z1ZY!Rnp&1o$zx7k?H_eW5smaQB9{k(jlB_*E#jUtk8suziF3^{ zqmTX6zcGR`K@fE+K>{kRAT5@`5oU&WIR`x zgD6W}f)jj>afe+IaUzQo6s|;*4=mUn9AqtM@uriUb*RMIgBA#76&QCdU+yC6?+&-? zOf(VEQ~Pa4f}U|Kp{{=WxBXtnizda(Lg%q$qMMkzpirqBa>!2k2}kU=ho02!bUi69 zsapj??~S zt0y#g?`6p?mMF2&1HJdL@-{HG&A1R1+5@{OC^Hq%tc|*Nj75?k=fN+;MZ~AgC1K1?S1Bg~`%Pz3eO2OJln> zS`fjenl19h=^8WmAxZ+MN1C(UjtPAuh&Ck70O>`mmQXnNGqV{m3F51uNYiSRFXp^u zIa1p>W%#WfqDW#I@$z1b85KiurAv@2V`+!jb({T0Gn;BVadeMo2wBL+MFPhrv<1qM z>tteUbg8NH7?MoN{IN4fYY2mFAH08-oniF9W`W!KeZv#=5EF+D+` zRvIE1wrb8P61Iv%O#Xpt#3}iI-mF49fjo?yfG9TF${n?{bjomNQll)+LW0Ojbpq~_ z+{tnObK2OvYG62o92O;nPHD)ZLdPm77nFofCdh>sLAg6X9b_+5EiVMZ^n)$LB7YE) zr=gd&E}HApzyF_lKqpekYn1WC3TGXN4==m!k}EVm+62|M@UWCQ$w?{zXdl5S6O;W6 zheIe@;w)IBA$njVlUJ3AhYm3+ac4(>(}CBNhf@}E_25YEAU&Z6NS(zx1y=?+#mMOF z!b!~akk90n3*RH}a#jlm%5!1#wE-%s77~HH#Yvnx>S;XxN1}i^#~BZw*pc7^6edX^ z{Lk-0xm6wyhkwxp5-66SLR~PO#CufI7*DzqTXN5x?}-CAN8y5!hq`thmoX{&z<%8$ ztIm!LUfQx0bOBv!VpmWLDIn;uRF{`=xH_pmXYzTp>{8{FrBT{-q!V8yC|Qq&tWf{5UaW0MLnfzDwq*jK(9?^-p^QV-*qnlc?vyC4tUar>G-y z5+GE$bQDEe7y?iRW%T$V9$_dhLmW{@GC&2>n9@O7280XW(>YamIy(deY?;)hq^cb5 zTWJs{uZEQ29ARLV`(SIZvp$EgrPsIt)*nM@;)48hFOW(Rwf`qVq(OHFxa$n0GvV(F z<|Un%PQzdF84(_rAO%?+Y)T+1BSEDAk|SY`!k2?X2@;!RllvT&-y{(Y1TmG zNl(xdgHHfPgd6i@2G66xkpsv&h0Ljgar%+r&6VFVeOYrHJdmv%AO~Dp z9>qvYRAO)9A=67ro)wBJ(z#+Q2w8y3f}C1{oDn-K<&9A~kl{brUBZc@=k;OvhsfatJfGO*mpY~*yYNyDiPK;wCWJ?USWd+m3NImfAag!Rolk?MC6rVc5@iM_ zLDH#9<2DvvUfQ+f9ZK#DWDk2R!$EOliH1UL)*0y13uV!re;svk&h~I}0fP7tP#ucj z_p|XZgI<$Mst7-qn32BL^^g8F4D-i7Tp|h?_l1r>JbJ5|Yn# zd4g9UWGD%6WKI%i+U_TXPl2!&@IJ^a(JE6n)eu8@NuixF!kKCa3&jzeiB232&JmaY z$l;JU*Clv*4xSLYj5hhS?dsjP#uC+sRCGxfyp+Pm@RTn)Kn5)=Ivu&4$Gy+E*Av-2WKouw`=OtR=;(FqW@6^}@F5IPnloxA`WJjDmC`_dgCNdFDyxf(H z1Eb5NGW(bRsF3^)K*w(D)Y-;pP;MkNiYqJ6E-@!Q$+rva)2dGdTu-SEG7#)2E_0Oo zg-C$IcAVEEHzz|j;DJW0%80l}?$oh_POtL_t6I?Qko?>UXD5_ROl0G=b;|SXi$o}> zJ41<)A7DbHj-LY+TOBVc4G9r$BvxrF2@=0*|pK;su(xLzD5bxM$_3&>stu~Jy7 zI@&BlICa7i17O(Wts8hEndH%#a|v`fWYKc802lIQJFbW{=psqGUb?s*)OBg`3`C@W zNJ?4+gXpu~So<(au(V#szwK6{bxmyCS5L8z@i07$WC9PtNiUDEtw7`TvKJq6CdFr z#2^1TkcNY>#*SRDJU?IonXwdJADU;eKb(m@!|O#hz4rGQNpAARo0}|R;@3ZRUq*_b zF=v`W0ut}>H26s=tix*HG1);JjQ^r-1ub0Nuw$A^(ujjLDx;d{MFklr6p#%kr!&5q zh^1M)OtcE$-~+ttRSL-u#pT{6Kh9)msWjA3a4UDNRirw`BqVv2Y~SLc#(c9wj?Ad? zDt1K8c^o47dzT_ZNs*sdNRPlqm66SA7ji1r%NrZ&Y2yjJ2%R}BM|%UutAde3lj{nZ z7Ek&5*;5jcjZ@$_gr5nBf&b-rI1>(Le5NQdPlx$FLTx&M;IFJgb9(3OtqE9%jEh3bN z)UNIO{|ki9U5vM43U%Z=5j;o;?7HAN9!71%DVu04t?9jE;4=j_&6xzZc=wz)?6A}j zzuRMTJg9dO^Io-C*q9RzPc2?0f*(M%9G4KlFDiuf_4Uad>+UZI<2PWPRfJ3?CXJ!IR>6jrq`BOUL0JYas`?Wu!4Go24Ad zSvGAoC>(Wmyzad=&7{^#KMIi^agp1zc*_9 z9$DU1%kTaE#+K@##}{Z+W{vIc1G|OiWnDXQzvBf+M%ue!Zfb3>QXDy++!KYWRM@Kb zcu!cHuI4Q7?XlnLUIJI+^sZ$*7WreGGW?FVOV#zm2xdPPXMT{cx|6V>cjXu%<(wmSpPMum&s6_iRT?u zJ;$hTvC81!=iKpDV>WuJfRP+eLyvO2nsjl(6vyYRQgx0ePO)FM9M$6Il%_a-f$=dY z1G7!XOUGBec3BR|AiyOQnk=*&<4xYcL3|+& z$1^~=IIHE8EhN|My5l8-;Gj90&B6Wtt2e>4csbs}ldG@o?5AJ)yCk@{LVT3t!Pc+Y zTpS5hyy67Y!aaksDns-%WTFEhkgZuJv94#YiUcxQ_o`TR*lATn#x+bhjD8@;2jR-o z;whU41JnkJLnM8c4*FOeFy` zF93%?gkxfb8N=WdJ^>L(OWd{jr4%l=u(*`Atm|ZQEs`VxhZ-}PfiPdeLm^UwIhg6p zg|835Y-q})s_lvT2>df&B_-Fv;&YWB(UD{NqegdV457(my)I>$koZ|-2Y8K;Xkj2R z2yl)nREHISX2RFvd&ZhcU<=#6PkN$j*EK?g)lMpbx|yM7j15XHTMCv1+yu}z&R|&z zw^$tJWa~6oBTIHV791QC4VDz@h%W)hhv*gL4lAr`NU8%i!0vfnkPKjCQSxlvRvgB7 zv1`1pe#NH~_wWm2{Axm>Uv#%E|JJ`k&&K6jvsq+_S)V2%!{zav8Do5Jvv0#kf90}9gNAtYT>@nWqgD7h8 zpS!o9$y$sN>9*yADD;R+YxkUHHwxSku6@Y;UVZ42Y@@|*z}FZ*eT#g!RBOfXK64~l z&K{QO0;RP0+2VK(!;;e$XUB_-#g1W*;ygpASt?jYXXU3foDW4Y)EpTYFY~Vr-N{k{ zGse3yhyYC1(;_R?o@cfSooZ}7dgnN)p61^XUR}*^$`3!dC4c<0UnIsh+|$^rFV9$r zA0B%R#BnRkFDtWvOK@xIIBc}?e77-yEg*O2xvG$x<2wwod0sG$9I3F7rLg*T&M~RN zbjFwQ_Ib1Txv{Xe;wV+S@s0VMA&4zFk!mbkaeBSpwL93vBhIyAOSqyh^z?cG&+lub zn(|c~t|C%-}e&LZyG|V6#Onp)rPA{(}Z`-O6B+aiBBWp{|m|eQUBnJ;0?Zf zRv)-_PQe4^jNT4>T9_VbNNt;DD_?9y#A&B6(;y2=_hu>{HwEOx5^#qfAWAUF6Q@~oz&|0{xvyW3a0FA(fB zDT74(l9sGs+2WV{6I=@0r4Ch*E?aRlArZaACt5liPIIB(Aa|-$sTlIV+mY zwXc;eCtuUXm2dG4nZKh=G|};55#ty65=~xgUemW@a=r%EHkfOhMayHP{?;*C9+Q@~ zeayGNwBvKW?PY0;Z^bFLxR#|Y<*PVlD~?iYE6(w8*^09OYYWa|afSiX$ywSSed^+?M-gE6#new&EPzuXZjd^}$lh$yaf{jSX+J1&6ITZwsIK zDh~d*{PSfij;?OAWI#Jkj>k*fts3fvdG^ca>~i)1YUgvfwC*`Cem=qy z_ocdV9Wfe?8AjuR%YM4ULnwx>L>pBzv&eKaejm*i?xxoSk9X(9ZGPEyqUjF-|MROJ zDTqTup7A5j5Fb-Qc;YL%quQr`$X*%37yYd z)N}gG>go&|E&fcI6#57H9CuSJjndDgis*x%GAE+^03D62ZsH!Jw^w0CWm@19lBF`* z>k=v@M>Q60E$P4 zo8#*Jk)?PRGAD;D=bl1@Hofc@%oUXhEGH^rN^LYOm^no#O8@{r0PbBhE%~}iE)u6* z4llS6Qe0l^L{O0YTuwe6+9a!yZUMlPRh2Eoz29al4v#+)_RZQA64l;rXN;m!ka$4G z4751!fNqvc-vIT=C~%V;VzDAVhAF~rX5x>*Is9$BgGqm1>QBT)7qkc5W%Vl zQ%42**{-Z>G1Diqc&>MrvqjB_#Mq(js>SyR@0W!3Gwwn+A$OMeZ!r^XK}si--lN^A z5afnU(&r_HQhhmuxmr8|dfnX`c^45VP3c`mYP{ya-r^+{AYxMM&Y8`fGh5Bkj0ld% zF|+(pK8FSUAOz1q=9MFL(T=4;fbTOXbw_4a3SG_dGPtd%1BxCOm=G<(IyCgc3LN&+ zNWg=(>|Mty+m}YM#}(%7qX;GAg`q`H8IqoksbeC~&*yRM5Eh->POk~_)~rf1Wn7-yp z3RTV;@lT<58YFb8=PVJ=^3wweC?bZ!(^V`!5LKuLc`m@pUoTuIUBV%I^6ie<32uTT zKBzjjMm*@Mvhin@zU`tM$rhEtPaYU$MI?>|DY;!aBq;AYq?j|m?8cEJrv@Sp1c%xgB?vjQIOQ0MBtp-ne`KW&k6!}HsB+R^n znwt=w#E~63%VG@J1`n4;5HFt`X$phJL%u6D7aIW>hYO3DFnMq>b%^zmV`2e+$dIw; z{O5ns84sMWABe$fxxP>q3R6Wp3y3(BXoAa%?D#^&snxkikvq{5_a&fhz0T6$!yk=U zW4Bq>Nm24?ficJxdi`|~Fe;Ch*rW*lVdv83PFkL+VOT;so~9U$N;txcCt1rMp1DWL zllhc%-XBaB&ldqwktikmKi}+9pfxRnQGvBnT4c#SJHk>RqkvG11j?W!7NFKiL^d8! zCc;T&3fT(ap+!_MTTuT=Fr@w~Rv{Nn|D4p~#g0~k65)zNxCByGFmUW6MNA-`0GtS^ zQwHfERf=#F&ODIpB3~`)ltEGiQV5(v_F&LiK`(h$Ll>lyxAz2Rkb8k#P%Nkz~_(M9~SIb+D8MRf&*mJe5AlEAe!n=-?wz zD5*MOs3oWhD>pSVyp5Oa*af;gpi;*Xg3EZ@0hvHAA*2UHJ>OEpSmHIBFwC_bF4J_j z;qk}-5R(^>pdf}ERiRlGz+{rKEW%dh?g=Li83nY3Eq7s|yZ-~xx;{yyRo&~5fgKdH zL$SXvX7-c#9uhUuseqbo2Qe>07A!1@4p%0Kx<}xO0E8+A;ZAMzASbxU1cVaQgpG*G#bikWa8F`<`X^?`lg}LdLNL-(ViKwb zvrd3?GMXMLEO2^kmX&l|Nv;&QR0HQIjswb&R|@2dF-B6ci?qi)a7qtQg>c??N1UNc z21RyxF1)zRJ}&t_&5{4$#51PC$s-F{SO=%#<%}kX&|%`>>obph6bHT$-GRGHzIP^X zz1{6l$z!IO(1ER|j0E8TmxEAu1SW<5Z+l-CYguxgRr}1o*LRY(xij1up~#SG=ZqPF zmGmfM9)d7?#+P8kOWPSa7GR|lj1U;4vGb59!nk^TVp?H%>fW{fSFKuAyY@ck?mC+| zhvE<__Scafaufm{8HX2;EAWcgE{B8U$D!sh?_`FImLWLqVa_vT4-}s15acao`Oy;#5tYQ zvhb2>H~>&f3N)6)S%|QgUYP2^@rs(9>}KU`j9fn)_1PIj@ZU6pNttq}yaty##-$uM zi9$@}pg>{eDpG{p^*@bg^Y)QaXjp!6Ppk~%^XW0T10^aB?Rr3t7-q`cN2W|Wm1<~= zVjvsfoW4vHsivRDh?mrr>~0DfEJ$}P)a0R}K?-7o!>BPbcVokD5hb-Xp*eC0Np6BE zz#*e_6&3-(C2Cg*CLKq?mu>&?NzIj~HIpB=lYta{96Njk9|IkNI9G>AJfSHn7L| z_JET9DxRHRT$ME|EbhDn>%9nzHC2ifQ&Aj9*Y!-Xs>Bhnk}XW8vyhXC8P40sa##KPqZ$M*`86K#?A(%wkBInf(5-}`&He=hQJ0JS^uSFjm%eXP5 zES@!@k;^F+kkH^{{E5E{0J>f+m1@YK0Cb>aEFf8E+rtYXt3p_qk8Y7N@M^Q91R5&Y zp>YZUy;wPP2kDV?nS%g+hpGc)!Pj}@(z_r&@LtA&Q(^#@H%}e;{KTbUsbd3%m!7a0 zKGK67<^@vlq{enOi%FY=RuxPvtlKngq~>YTCJn&e+e;sQ92nZ&$MceSS{PyPA7kx& z8qZ4(co-13<^4YY8iHxKpPok85BJZ(_~Xzix)>iIp`F}(20 z&D_5m*5E;y`gbF`KZX$Td^6pT3lVM7Ki&QrLRwrEe_vWP~C)! zoA9&l(&9OAR|pN^F?9%!_!3d_!;~(Gct9SPbI3Bc52Bp3y-44?zN z%!4#<5OJ{PJNp>1-t>3yI88}&S;2?XC6}B_E2Q>@B_8?ZbKNh&^T8@T2$h2ZPZ*lC zg7r6_#tdC30AJgYZseGyLbWlB^!^|@t?)YdYJDWV2QXlaoDT=F?1}501Z{2MGAe#2 z8h@+~8e0xhL2i-VQZgQ=PayHIq~<=YGc!!BOf7kLco;NVu~>kpc$?9-!=a&vt$Nx- z0}0d5wkzZifX)PXELa0Y7&Kt1^c$T|>l|L5_!M;dNAci0R+hIsoSsS7AkxkdyqN(I zTX7c0z7=QjOnIeXHuukzLu_2>3rA?N|L~fR6yU_U*{{!}4>bU|~62zrcsSmv}%PvGgB! zdu$8J&mz$sBEI@S_ei(;K`i;#_a0(T;0DiWb8=@+=xd-k%R$32zI4amOFPU`bd*|z z`2#uO5z_wVe#XTH&+^j}nOh>a+KQvxzU|;~TBWyLLd59N@ni5ZaBAnmn{y<%EXv`f z=ikH=6ZX&NHT1iKn`tdC&m$o~(o3m)=dVCvafs*q2h4aS99PvN{-puiq#h+icJcWi zYW@Cu(p98%v3O5G>KHd{@xGLTzZfC$+7a@=18IRMFg#BpflROs06RmPkAySv-QE(3 zzuqCW=p3$+M@)Fay1@ZJMjt9Kl+tzi=xeX=Dw=&~!tzPnO!5S{%Ea#}@uZnTz(+6; z0~$H%k!ZNHgfmjn{YXpbiBHRG88kOf5Mp8q9$c~kz?3J`hXas*0cX154iH;H)(Ks^ zgjNcM4J`7p3avnsy++sR4<@@teRNUR*_-u@whv`9jkM52_R5?|jPpetIvz z%7x>jV`Q$N88pCm#~@Q{++{w>1~3N~a1Sj!2Dav2r<(Ch8V`LV^Y|8LkFdKA7dd5a z8PvF8E6&l)k~!AMJHkB5uY7GtU1z&f@UDZU<^Upj7FOLJw+C?mm{&Yv40=G1xFb~1 z@{J@=p3s;eHBkC~ke1k4Vr3dVLrh2+-xLRkSA^*Nxb!%edA`>MOhDFzsV}(z;u4w) z%y?~ODVGZBzW>~%H6Zd1Ir4sK4LCdx^wE7L7>QS+kwHORF&)|-sJ?&C;uUztN;EL> zY!L;Q+AAxhls7y|`~odfD=oog;yvL;W8Xox#1kU%I<-r@6Eg987^WB2 zNNI{~L07WQV(bJ#;t>M32LWQ6!;oMFny~jj_gSJDC=-qh1ytxWGV%^@&GQ9;tRKLwJhgDY!)`F~ zoIizu3gT2SKD_3xFd3Zj*eMQc+=(NL8UT8M(II~=5epV>cQbt)sa5QO0_2QmEP&jC zqZvQINK3r*m~dFZZUQ4^;!=K1i3Xc7T1o+tK+(u03a_n9JQA!GA2UmB@TO)>InIy* zh#MOvo^SsH3GPcC3#I&4nD7H%5P|FseCrUBGVtnYkaw0?;}`IWEHSL|3I`yiLK++- z9{Y29_;^J8hB!NeNh(+jY)#z=y}STK{9 z{JZ&(I&_i{tpeg^25n=i@6iMh+RSl>n4~4WflQPE2h3zG$jS<^f!H#$<{D3kSOvMp zv-pfh4^*(m>-I)-#^mUF!J1C1q5&ftCqiDcX^aCP&V&O>F>J{F|Ncly&mA3IJsuKz zq)iuCdK}u;9NZUj`wMPgo_WtJrIh{t>d_$}SST2qN3X2b>jkb1{d&Dd;?a01IB&4i z1B(Uj0|~)3*dOLAps~h3d1ZaQ^yFu(@kd8D*K0i8@W|m!hHKk@aFxWnT86aO&9?%jnH-=LL-0q7w42i*3AV zL`w|2dZ|yP;89h)FA5Yc!k_^0qqj&5ztmZaRzkk<_Y*US3IIA;m@4No2^ztWP)%i@ zXFVNT!FUkm8f}F_=EmsSSr;3h_dsA=ryYyc#K6t0!6~H*(2Gp=BvNQ2mISRa8saF@ zgR3Zpjy)2MDzh;p{wS}dYP2=xUg(QTD4O^Q8+tf=So$?=`euw$PDmE;1wDOEIj{d6 zCLBIlkm?K&pIFr!&~L!0Gc^33y+qNB$0BdmfNBq)gUyRK?+vB8iN=g;&AZhC3b|CN zP+mN;Dh)4~loM@>B|6f0n|iS(He>O&=doZ4tN11wq?jbGvf@T8F)iaR(zoJ7=sXcr zCL4Ob_;S+5m21}y58wID-}B}H(6-_jymf2W_LsU92b*ZP{l&K8942kW`I>FT!IqN~ zw&G|@PO}v!yzt#R^n!QmT={FJhwPm?@rIsvKV@&|dFMNA zLl5ECzJ~YNphvd=*`r&xMp)lx^Crgd)Kj*}sKa}Hu05Ly-|s`~5&Bk~H<%Z`?}y&@ z?X5VSw&Iko+rFXaGoLYUpLtGR^2a}}ElQvM2A&og5(>8_?0{r%Y=5zNis`zRlv{By z<3SeEDHp*!hgXcxtvFQU`i^p#*8@^t2ZHK_uo1r*9fo;EH9d=i!hB++}C1u?Qs*-rw1jb3X$|%KZHsV4almBeKVt=hZQ)^ z21cGy*@(0N2RI9FX)@V`6~1MFwh~YORv>PRNXoD}pvD1?bbl12=7Au1l(Q_Qwxkvn z2l7-Ai82s*Iw(Rp1sob}xhxV%%y|Jhj)6>|CCtE8Y`M=!qR@0xtiq{)g5fCmmx&i~ z#KY$R@oe-^3n|pP_I}n6LwBJ!{R|{guBy&YBfKJ1-iCCHlLH|-#US|~)n&xf9WHW5 z3Z+Y*!2#p)fx}ObAsbZC=wD2Ixr}UHzJdijC-%8?841Es@__6Pg^qClTwsa+-~q5u zxhKRtzVN5g3WN~1c za)ajr`hKG`J_u{`{d|P4nOrs|;Gmd07uK;V*_&LW8EFyp_*ZbCWLAd9-(Mf$i>qA?zXSjCKz9;{PBL6R5vHfS2Ci<+$@5Csx7=~LPO!NTCLWQHE6Xb=W`#h)l@R^f|jz zx(;?g>F%fo<2w)myd{Gt_%76NE6=Ta>ycDgVf}Uvfum*@n&E}&972#2z}~24#``oVF_%r5YQ4}kKg~i)PxucHVE5+6F4bUym6>-90+XYj z50EfX8R{sS@e~ZCR68bsiZBi!{AUayE8@7X5CMV00A=3aC5|WFafV@1V`Ko(HT6?z zRqddr4wyPGv_J4x;8qra5cZ2DFS%@_fRb|?9?nm&@LzKnRuHB#KpRZrl-*))1|WH5 zJ7s}^!he)g8LC>AzCUZ;yTP{#!+xsiF<$E&-fDKN$2%IrBA>4A;UK7Ww446w=ibWrzVSW5#qsQwH}mG z+08{`_i|NlkgDE^iC^0VG$!l90ZS`jD8pk33t2ji z`eFuIz^l5*L2U@$3_3Z2fv74XDow+n2V;(sV`D&TRP~lCfLvjK|oW0wj0z7w%JeW)>(t&`+|v@h%GGe$qfky%5gsGSFex8 zv-&}7?Zx*fivzf*+GQj;CutEd$^O|}*WG%1*%TtGBWRoQ7kRAg1AR{euVBXy&yM|-q#kiPlu;34DZN_yB4mNDX7 zToCJqlLkz01;Q-|vi^3eE2e3UHN=qCLhU#z^JHW=MGSZJxJAt+t-Yl^B4}X^i%jd> zI5OgqA1p8)|AJ{%S)`<4R98e&u?liwq&z#E)zbn_M~A4QgigVdUdU8MMCaxbNG4Uw z00B!FR>5v$o528e9@|n(_N3L|LODRHURluUfao3RGcEQ4xQQwygWxoc8DE}<(q00W%*!QbR2 z;~k~WPg5Z=CZEEQqL-iqQE8R`8J!LMoa)7!6>vO6f-@e;UAy*Y^xH+ zVOmO%IS|0;W5cp+4dkdIGB4J+xWg!GP%w>>W~1&siiDYQD>shniBesfsz=@RPjuYs z@4U#4;fAtT>QUhVK9~{N>@p;kORW_t9OUldYD%&43Qi{pIOO)J@TNxQ=`k4S`^nPh zJsjjh<0jYzSO%GGOvI;jfb9SX6?(z{!3i=3Rw#oXQaK(K$Um+!>5+vpP!<2^SngE? z&HHd`60;PWY}l~hFKX6O#xKM8C>ibbqqcZLk5+h|4@(n2UO^V=$DaUULxoGveS{xW zLD|RE1sr%`D}g(vFp9W9S5Tl552OnqU++@^K<;~}^##bPTVj4M(<)u2Mz`YdBfvr77E1Lf>UgWTW-~w?^5+ z#Pe2=Rl6;T)Q=A|*-*H3Xq^nZsh7X{X*7)~1t0s1Of=*1UwH%%5c;-p1!0md(k+Qw zaaMft3iPTk(ChnkzfOC|Rsp@2miQhRurp{|ajrjweG1UJ4rhcP!{5lc{iW+tx(S+1 zEMu`jYdy}Sj46tT8!;`p6=%?IdxJdoi92xD9R9@qG`@l_Z~&Til=lg?wiO4~p+9cL zfu3n6XeVyPQICq{0~1(V4Cn>ZG&2TGe$)pC+KOX8>+FwZBXo?%BE7jU3J6cDq6Zv3 zj)=D6=ow5<(EIAIVZvj^LxtZQs4RM|J7PM^0JV@+bgQHSSE2z|X`K_ERlkW;19p<~ zr7Y0G2UbD;r9t%GvIoTGnQX9IrVK4ugGRx?WI`40TDXSfs3n7p0WDj~fPzcT49?`R zpXTP6Ss!;1(S6FWGbPup%jj0QTyL)|BVqk^JZQ z8FOrIq978Fcf>46qjPdd+=}QTW=Vi1hFZyMCO$FqNPMES>n=0XSjrz0?E6fJQ-Sb0 zHY_Y1W@a9~)&&rlXkvtO?)WYlHw~1S18%w1dtQ23$CyDcJilw)k7EoUT-7=^fe*~A?e~wrp{2nyza1AfL?R0krt*r5(w=*hmexq zgB>8a9E!rdAb`*Ugf+S+8d5LAHIA@NO32hE66s+Kp*4kEv{eQJkzgMVV`6w_-r%3b zed7st%c0$vaC@J`Sb;QmUC(Y|FdQa^jqH7Y0turn^B5QE{qXNf4JuLQZf(jRGJB%jDpT?AH#B7J+KnqZ*tFXt4#g4bH9R zv^xZlHN_}XQ0J~^lyXbB<=<>#f+O*~qhxk{d|ck7&+Jrx^}j)EiPat`P*~$-;!%XT z>lKTxlmdCEtV-e9-rroW2@|Dz-D7!8t?sfz?S#O2L3kb7nQ(6}<(x6&_tHAA(FjI_ zbS>E*3P{5+R3>Kpu~EUDLEmJ9yqcA75UI3#vJE@DB8U*a5vvitZ2CO%L4MA()NSL>lNlzC*9dU{YY^{cYZSZca8 z^NuB_tT7JhvCC^{b=_sb)IEl+ILLRmWWK@AOTxVexc!9-&dqgZBmL6yZn0n#kh+20 zO@z9;rIsk_lgn7R6^F%W+$f4a-HH?P@G@%46p2ueYD#Si>t>P)ATD>UvS6${6&OMl^`w&mp7 zH9~I1!Ja2vE@V?SGI0B`Fcv+it}|sZK9dJ73bw!dMge#(OkZ4Z^Iek^Kbgm z52a#n#ewzr*v6IbK`hurll3N=Te)tg*}jS9DQv~zCYo^z&RyM#<9XS>p=YtMSQZQ0 z(6hgvc9S6%3>^R&K%+i`5`v zR7LYRzDr*e1;VjbVVSF+s@P%AmC;JRYNL9L8l@v9t_g@81{rL{U9(_ zA<)=U=y#8mPgN1eKn7A?Vs!n+oI3ngH)>*;RlVxcjop^_UWly}hoCd?>?EBr@j3OV@EIyCA?b1GD|sQnb0#O1CJWS4 z2ScZkNwm8fD2hr@@l;0?pH#-rL%516t<84{>_ENyp%?zrWE5+{>SD~ok-L<-ALGl? zYhl89G{vkcqa~R?l$8quitL$Gq?d%*V48ttCgiF}l$}V$#FZxB8vzzo*yt|?^L<}QzHp4Pvty0(20hW< z^ft6xMvI#-&6LsYj2y>tRN0MfdM782-F9^JEc++ewru-I%)M88J1OQZwx-8LGLmgHsv15Leu)&qw|zWkbvR z6#Sok}vJGMLs)acQB)f*l1|{z8GZfG64HOO6u~Cn=eh92mjOekJ8P= zkFs#uaL$4@VK(SlEGIhWusu=rMB$`G5nI)_GR?Ns+#_8xJ)7|O>x5Jf(kJ+PH7r#x z(m#mJ3RB*sA*vDy@{}~HG)zU2TZa5iR7_ffaOHteRR!dDI4%%}m1tIUBf@~AW`&Fl zz{WF8(om^(iN#k3;k&AN$PwIDeL1vmGe7c2p;5MJF|;wfsm5$UYa5^Yn$uH9Y@^|1 z;k#OG6k8**=X9f5(OfYgvmV%Q994yhYUOT4O3OV<7_R?*ezQjX4V%iW$fnYUQ5!|Y zXIdhoB5dU??hYm@Gx?0%)nw(Lh)f!SrkvLn0trZ0fd|~~p7T5o)4DuS8 zILX`DWle)xhR1NW`j9#*F6ni?>)A=FAN=}%SD#0x#P-`fkTHq_-{jC;NT-+tE^F(2wXjbJoC&Y)y!Vbvuru z$tZ0#P42^AJw(d=VJDKvK0N%Re>^(ehD9S(jxfYSHOdTcY5EF%^GoUI!+5iL?qDXK zl8yJ%>`s%z@flRktTo07uQSJ$d=gI!TWOYelUAMG){sccRY!{vQ_Bq*&25396>vj^ z0vGPo*)ZD5n3x+evV>K#B6Q>g!Gym-Hp)ad%g_CXInSP|nYnG1Lex&*;I(>FJTwRc zpK9#pPxTrPhN6~7I|tgZWGER_LV2R@!f6XT1DvU~?iEApEtYR8IiE|sQTPP=iIhqa z%_^q-{Lz}K5I!bNxRkt+ADGe+1T|Z=5jPFj8-Ziq!Ux2x@OQ@&;@~ZE^&F|=dd@9xgDj0;qM;^`P!ekOu zx*ArM)|$FzB|YMk16)4b!2^HC(q$EIv_S6rOOLuLzk_7nl^!lP5sstcJ2QkLTSeee zh#3`*j1CRJKn;P~sBd0Gt0Q#g7J$S=xohdoxY7zYW-1%gRg)v_KD`wastq%gn?Px$ z*var#x2DfXOWA#%-`Zj^ zAFtl}e)19zG}+&7{gKMA{5cI2@Hi(kFC8*3R3`eXA_6HBDoMC1B4?BRv2DH4W) zSPs(Ei%AhiU(_Q_)oL($kvS^rZ}kHH7z?{dC)hEEUi2+ zoAP*CSO#I}_CZ?fuo}agsIx5<<4!v*tEt$vN4?4b;*pFnT6gCWL&QiE*+=6>RBe;O zYiJ3Eb@dkQg+N}$1VmJGw$Y&%#&tu8W;~v`PX`aC^xGfg798osO0(FG z(Oh*8WaPPCsJq)B!)8juT8zqdqOQds#BlLsCAfEG*mp2so^W$d|| zS1-tWE&uSBDjLXs{n%P9Bnqm5jv7GwAu|1ty4a+l1US(Sa>k9I0){v`AN*NTrs8M| z4XRB@CvAf=+Tkc{^%|@2;;p-JH8ZQQ1=}S|JT9)9^xs(3(6P$v&dDyVWV>mHPg+Bz zsvDdcx|xh_Re`(&713a~pX~^VPDZdl~t{_Hb)4 z5UbINjcs>+dmMbRsg@lh@R<78B;leOYIq5ga28&)#{c%;3o&7cTAtmq4pWvW-G7h4 zH@(Oct~IRtZ`nm4=F+`XYvV>NQ{5WN$aX9~QOw<_N29hm@5flYHP?t(B8Kp`JukDw zSEGoU0e4d=t$y%+PWp{8mTIc#AOP zb1%X7&d%BlFJoKgEoND?cCwc^Z$>Ti60ywr7E9%NBN5A-A6{yVe4qfu_CSHl%>Utk zkkZFK_U1RAXDiP3EhlGwhs=o^SHAVUY}<TYM?9e<*>IDf{c3hq0k zy)C=%f;(eCf9UcV6=U(7sBdLXG(_-5<&3IkyrDc{Oo+|a?i^Ce#T*G4CkU z;4Mupefp&T{9#;~t7rpxO`*2NExysplrgG~*!j*K`142COSo=a1?vPj(H=~3!aKp% zMR-7X^MUV={>bTu7aDgU1I@+t4tPJi%Y1g#Zw<}g{|o3xx%Yj^_dbNX7y%ak2fpi0 zw|CA3aT*Scx7zEHHB~(ywbg5NajrXzYPAEgYw!FD{I7rgzL@YkVm>4LoHM@M+Yr7TTkq1B z-%D$(GwdNw?fg zihtq7HuN+p+|0}4ztM^>Qg()v)r7sK33-wDnnxga@f>F2x&7s0D^9^%!0g>R<8~l> zpAFv@gg5lmw*>8aThR6`O53*L+`5%Mj2{ZR__C&*^>+imAHJPD;{#2nJr{L1(sf!J z=Xwt6{l9iG;ZIBG9gt7HoxB77tIIRa>#8s0^)Sn)5uby4|6e|b@`dW@893{D^XFHm z`+7|pJ2!F81^G2K^IDAWNz32ysgpvUhBSN7_$0$B+gxMj39qWBAo&#e>rDK!C;rWK z(%Dy&_bsm`hy=ab0SNos1}B}oZC+1v^kdb>2Pk|~qKeBxgPx9ljMKS{JFoF0Kjn*)?#9hO;WV>nm zv)|Vc8|XPYC)<}|0=FYDalSp%n;ohIKJ=8J#8*qe7B6ZJ;CYciWkD|NiF zo!sP({0V!~ZY4(L%6iR6G~33EFDOqh6NA&$w`%+(exd0+XYE!eJD9H`S+BxmN8|T9 z`wMTn8xg*$ld%R?Dz*c8Jr38OelI(7-nD#30%q(nA7@VdXfpaLBf1OQX0}WBKHGUq{-v#<<&oQ+pUui@e{&*q%AcIVunr?H%Pv){}Y zp^a&Ss<}BW=IyNJvC#J){2RBkg&n>kZxp`{SA`wDdTs27e&1`ee-+l<#;YaWNjp9# z_{}HCUO%Ga2hJAjNxf~(q_a6Yr`AbrpVQU-qyFiCd;i2@k=(7dDBs(TzwZP0ru}kn zn!SHo{gLgz-jQpBjs?Sh#BXw2bB2{>T)lx|N{`QLjgt1OdvU8M*NcKh5wVj{*b2{C@GN!0vKl96Xu)Pb{yECANR{7)_OIDo*J<4Wy)EnO&H4I;s8;)63Mh-88 z1xLow7Cy7-UdS%@e^_yISn=#SMn!^pZ_;Ffe)%&GSy@F1@h$iO5*&m%pcZ zF%@Y}suEO8XE3bkU_hb9V#?)%Kh8d*)9)G6UJei)gR5T1fF3#Ckf|j87>_k1 z6*HQs%)MBrF*!0EMngbl1gKc(*BP^h%m#X=sC@aKNe7k2{=uM_Zx#$m8i>~wH&n;~ zKLa#H18YXkrC(<(#8N}VcxFw?FwW*|f(;e1>r^!*pQ@8NRl{Y|=C%k!ESk+5O*^AT zH^w468da4n)(|SS<*Fh%DyXm&)v7|}=U<|=g_%t}1hKD~*}fo>WiP zBYCx{>fy45U;x%wq=_DV>4y#bma3z}(WxAW!5KLf-Yx3SJaJM>8zF8mPO{!2t1~8K z8;qFhp)j5MBX?twYef@$G7Nbl0n*a4JZ~`Wb>iy+ zY0=NfEnPYnYfSvFynDm2vy0(`&-*PX>+GI8%;Z7qXQd^ zb4B#2Pi|GOIXeMq4Qu8D31~|2q93TQ-dbDYwYPx)nsPAa7I%)WEe2u`9SDZET{B;i zEkTWQd@B4WXZ&_@YIP1O){-%};IvL=yh`R)>25E`)3(PBO!=>pdg^mq4eQiA0SQA! zgqH%?6jgXI>S Date: Mon, 30 Jan 2017 21:55:20 +0000 Subject: [PATCH 14/18] Build/packaging work for the bladeRF --- Makefile | 40 ++++++++++++++++++++++++++----------- debian-wheezy/rules | 2 +- debian/control | 4 ++-- debian/dump1090-fa.postinst | 3 +++ debian/rules | 2 +- sdr.c | 3 --- 6 files changed, 35 insertions(+), 19 deletions(-) diff --git a/Makefile b/Makefile index 942042e..a7d4c04 100644 --- a/Makefile +++ b/Makefile @@ -1,13 +1,11 @@ PROGNAME=dump1090 +RTLSDR ?= yes +BLADERF ?= yes + CC=gcc CPPFLAGS += -DMODES_DUMP1090_VERSION=\"$(DUMP1090_VERSION)\" -DMODES_DUMP1090_VARIANT=\"dump1090-fa\" -ifneq ($(RTLSDR_PREFIX),"") - CPPFLAGS += -I$(RTLSDR_PREFIX)/include - LDFLAGS += -L$(RTLSDR_PREFIX)/lib -endif - ifneq ($(HTMLPATH),"") CPPFLAGS += -DHTMLPATH=\"$(HTMLPATH)\" endif @@ -16,21 +14,39 @@ DIALECT = -std=c11 CFLAGS += $(DIALECT) -O2 -g -Wall -Werror -W -D_DEFAULT_SOURCE LIBS = -lpthread -lm -lrt -ifeq ($(STATIC), yes) -LIBS_RTLSDR = -Wl,-Bstatic -lrtlsdr -Wl,-Bdynamic -lusb-1.0 -else -LIBS_RTLSDR = -lrtlsdr -lusb-1.0 +ifeq ($(RTLSDR), yes) + SDR_OBJ += sdr_rtlsdr.o + CPPFLAGS += -DENABLE_RTLSDR + + ifdef RTLSDR_PREFIX + CPPFLAGS += -I$(RTLSDR_PREFIX)/include + LDFLAGS += -L$(RTLSDR_PREFIX)/lib + else + CFLAGS += $(shell pkg-config --cflags librtlsdr) + LDFLAGS += $(shell pkg-config --libs-only-L librtlsdr) + endif + + ifeq ($(STATIC), yes) + LIBS_SDR += -Wl,-Bstatic -lrtlsdr -Wl,-Bdynamic -lusb-1.0 + else + LIBS_SDR += -lrtlsdr -lusb-1.0 + endif endif -LIBS_RTLSDR += -lbladeRF +ifeq ($(BLADERF), yes) + SDR_OBJ += sdr_bladerf.o + CPPFLAGS += -DENABLE_BLADERF + CFLAGS += $(shell pkg-config --cflags libbladeRF) + LIBS_SDR += $(shell pkg-config --libs libbladeRF) +endif all: dump1090 view1090 %.o: %.c *.h $(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@ -dump1090: dump1090.o anet.o interactive.o mode_ac.o mode_s.o net_io.o crc.o demod_2400.o stats.o cpr.o icao_filter.o track.o util.o convert.o sdr_ifile.o sdr_rtlsdr.o sdr_bladerf.o sdr.o $(COMPAT) - $(CC) -g -o $@ $^ $(LDFLAGS) $(LIBS) $(LIBS_RTLSDR) -lncurses +dump1090: dump1090.o anet.o interactive.o mode_ac.o mode_s.o net_io.o crc.o demod_2400.o stats.o cpr.o icao_filter.o track.o util.o convert.o sdr_ifile.o sdr.o $(SDR_OBJ) $(COMPAT) + $(CC) -g -o $@ $^ $(LDFLAGS) $(LIBS) $(LIBS_SDR) -lncurses view1090: view1090.o anet.o interactive.o mode_ac.o mode_s.o net_io.o crc.o stats.o cpr.o icao_filter.o track.o util.o $(COMPAT) $(CC) -g -o $@ $^ $(LDFLAGS) $(LIBS) -lncurses diff --git a/debian-wheezy/rules b/debian-wheezy/rules index e27a224..944454c 100755 --- a/debian-wheezy/rules +++ b/debian-wheezy/rules @@ -22,7 +22,7 @@ install_rtlsdr: cd rtl-sdr-build && cmake ../rtl-sdr -DCMAKE_INSTALL_PREFIX=./install && make install override_dh_auto_build: install_rtlsdr - dh_auto_build -- DIALECT=-std=gnu1x HTMLPATH=/usr/share/$(SRCNAME)/html DUMP1090_VERSION=$(DUMP1090_VERSION) STATIC=yes RTLSDR_PREFIX=rtl-sdr-build/install + dh_auto_build -- RTLSDR=yes BLADERF=no DIALECT=-std=gnu1x HTMLPATH=/usr/share/$(SRCNAME)/html DUMP1090_VERSION=$(DUMP1090_VERSION) STATIC=yes RTLSDR_PREFIX=rtl-sdr-build/install override_dh_auto_test: dh_auto_test -- DIALECT=-std=gnu1x diff --git a/debian/control b/debian/control index 1ee5bdb..bac874a 100644 --- a/debian/control +++ b/debian/control @@ -2,7 +2,7 @@ Source: dump1090-fa Section: embedded Priority: extra Maintainer: Oliver Jowett -Build-Depends: debhelper(>=9), librtlsdr-dev, libusb-1.0-0-dev, pkg-config, dh-systemd, libncurses5-dev +Build-Depends: debhelper(>=9), librtlsdr-dev, libusb-1.0-0-dev, pkg-config, dh-systemd, libncurses5-dev, libbladerf-dev Standards-Version: 3.9.3 Homepage: https://github.com/mutability/dump1090 Vcs-Git: https://github.com/mutability/dump1090.git @@ -19,7 +19,7 @@ Description: transitional dummy package for dump1090 Package: dump1090-fa Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, adduser, lighttpd +Depends: ${shlibs:Depends}, ${misc:Depends}, libbladerf1(>=2016.06), libbladerf-udev, adduser, lighttpd Replaces: dump1090 (<< 3.0) Breaks: dump1090 (<< 3.0) Description: ADS-B Ground Station System for RTL-SDR diff --git a/debian/dump1090-fa.postinst b/debian/dump1090-fa.postinst index 8bb872d..5608149 100644 --- a/debian/dump1090-fa.postinst +++ b/debian/dump1090-fa.postinst @@ -31,6 +31,9 @@ case "$1" in adduser --system --home /usr/share/$NAME --no-create-home --quiet "$RUNAS" fi + # plugdev required for bladeRF USB access + adduser "$RUNAS" plugdev + # set up lighttpd echo "Enabling lighttpd integration.." >&2 lighty-enable-mod dump1090-fa || true diff --git a/debian/rules b/debian/rules index 8e9e082..e8279ea 100755 --- a/debian/rules +++ b/debian/rules @@ -20,7 +20,7 @@ ifeq ($(DEB_HOST_ARCH),armhf) endif override_dh_auto_build: - dh_auto_build -- HTMLPATH=/usr/share/$(DEB_SOURCE)/html DUMP1090_VERSION=$(DEB_VERSION) RTLSDR_PREFIX=/usr + dh_auto_build -- RTLSDR=yes BLADERF=yes HTMLPATH=/usr/share/$(DEB_SOURCE)/html DUMP1090_VERSION=$(DEB_VERSION) override_dh_install: dh_install diff --git a/sdr.c b/sdr.c index a437f9b..f37d3e8 100644 --- a/sdr.c +++ b/sdr.c @@ -20,9 +20,6 @@ #include "dump1090.h" -#define ENABLE_RTLSDR -#define ENABLE_BLADERF - #include "sdr_ifile.h" #ifdef ENABLE_RTLSDR # include "sdr_rtlsdr.h" From aa5885b6df95e4175a8ec1ee6aa99aac20f35153 Mon Sep 17 00:00:00 2001 From: Oliver Jowett Date: Mon, 30 Jan 2017 22:03:02 +0000 Subject: [PATCH 15/18] Add some notes about building libbladeRF to the README. --- README.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/README.md b/README.md index 8870566..ba492a9 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,26 @@ It is designed to build as a Debian package. ## Building under jessie +### Dependencies - bladeRF + +You will need a build of libbladeRF. You can build packages from source: + +$ git clone https://github.com/Nuand/bladeRF.git +$ cd bladeRF +$ dpkg-buildpackage -b + +Or Nuand has some build/install instructions including an Ubuntu PPA +at https://github.com/Nuand/bladeRF/wiki/Getting-Started:-Linux + +Or FlightAware provides armhf packages as part of the piaware repository; +see https://flightaware.com/adsb/piaware/install + +### Dependencies - rtlsdr + +This is packaged with jessie. "sudo apt-get install librtlsdr-dev" + +### Actually building it + Nothing special, just build it ("dpkg-buildpackage -b") ## Building under wheezy @@ -15,3 +35,4 @@ Nothing special, just build it ("dpkg-buildpackage -b") First run "prepare-wheezy-tree.sh". This will create a package tre in package-wheezy/. Build in there ("dpkg-buildpackage -b") +The wheezy build does not include bladeRF support. From 888c939a755840d37b6695c525c3c0db6b114a4d Mon Sep 17 00:00:00 2001 From: Oliver Jowett Date: Thu, 2 Feb 2017 13:47:19 +0000 Subject: [PATCH 16/18] Include enabled compile-time build options in the help header. --- dump1090.c | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/dump1090.c b/dump1090.c index d3d6076..82eda50 100644 --- a/dump1090.c +++ b/dump1090.c @@ -260,11 +260,28 @@ void snipMode(int level) { // ================================ Main ==================================== // void showHelp(void) { - printf( - "-----------------------------------------------------------------------------\n" - "| dump1090 ModeS Receiver %45s |\n" - "-----------------------------------------------------------------------------\n", - MODES_DUMP1090_VARIANT " " MODES_DUMP1090_VERSION); + + printf("-----------------------------------------------------------------------------\n"); + printf("| dump1090 ModeS Receiver %45s |\n", MODES_DUMP1090_VARIANT " " MODES_DUMP1090_VERSION); + printf("| build options: %-58s |\n", + "" +#ifdef ENABLE_RTLSDR + "ENABLE_RTLSDR " +#endif +#ifdef ENABLE_BLADERF + "ENABLE_BLADERF " +#endif +#ifdef SC16Q11_TABLE_BITS + // This is a little silly, but that's how the preprocessor works.. +#define _stringize(x) #x +#define stringize(x) _stringize(x) + "SC16Q11_TABLE_BITS=" stringize(SC16Q11_TABLE_BITS) +#undef stringize +#undef _stringize +#endif + ); + printf("-----------------------------------------------------------------------------\n"); + printf("\n"); sdrShowHelp(); From 0722edc2bc020657ba48e1287c9d07f992d13274 Mon Sep 17 00:00:00 2001 From: Oliver Jowett Date: Thu, 9 Feb 2017 13:40:08 +0000 Subject: [PATCH 17/18] readme tweaks. --- README.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ba492a9..a1dd06b 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,19 @@ Nothing special, just build it ("dpkg-buildpackage -b") ## Building under wheezy -First run "prepare-wheezy-tree.sh". This will create a package tre in +First run "prepare-wheezy-tree.sh". This will create a package tree in package-wheezy/. Build in there ("dpkg-buildpackage -b") The wheezy build does not include bladeRF support. + +## Building manually + +You can probably just run "make" after installing the required dependencies. +Binaries are built in the source directory; you will need to arrange to +install them (and a method for starting them) yourself. + +"make BLADERF=no" will disable bladeRF support and remove the dependency on +libbladeRF. + +"make RTLSDR=no" will disable rtl-sdr support and remove the dependency on +librtlsdr. From 09f6bed7c0ed1868319f2afdcccf0a419da00fb4 Mon Sep 17 00:00:00 2001 From: Oliver Jowett Date: Thu, 9 Feb 2017 17:43:48 +0000 Subject: [PATCH 18/18] Prepare for v3.4.0 release. --- debian/changelog | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index 6a53738..9c7042a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,10 @@ -dump1090-fa (3.4.0~dev) UNRELEASED; urgency=medium +dump1090-fa (3.4.0) stable; urgency=medium - * In development + * Add bladeRF support. + * Clean up the FlightAware photos link so it works for registrations containing + non-alphanumeric characters. - -- Oliver Jowett Mon, 30 Jan 2017 21:55:42 +0000 + -- Oliver Jowett Thu, 09 Feb 2017 17:41:43 +0000 dump1090-fa (3.3.0) stable; urgency=medium