From cc25da3d12f0babc1bec2484627bc8756edd97e3 Mon Sep 17 00:00:00 2001 From: Edward Emelianov Date: Wed, 4 Jan 2023 21:10:31 +0300 Subject: [PATCH] add I2C to F1_testbrd --- F1:F103/F1_testbrd/F1_testbrd.creator.user | 171 +++++++++++++ F1:F103/F1_testbrd/F1_testbrd.files | 2 + F1:F103/F1_testbrd/Makefile | 2 +- F1:F103/F1_testbrd/Readme.md | 7 +- F1:F103/F1_testbrd/adc.c | 4 +- F1:F103/F1_testbrd/adc.h | 10 +- F1:F103/F1_testbrd/hardware.c | 15 +- F1:F103/F1_testbrd/hardware.h | 38 +-- F1:F103/F1_testbrd/i2c.c | 272 +++++++++++++++++++++ F1:F103/F1_testbrd/i2c.h | 45 ++++ F1:F103/F1_testbrd/main.c | 27 +- F1:F103/F1_testbrd/pl2303.bin | Bin 9532 -> 13280 bytes F1:F103/F1_testbrd/proto.c | 42 ++-- F1:F103/F1_testbrd/proto.h | 9 +- F1:F103/F1_testbrd/stm32.pdf | Bin 0 -> 125592 bytes F1:F103/F1_testbrd/usart.c | 16 +- F1:F103/F1_testbrd/usart.h | 18 +- F1:F103/F1_testbrd/usb.c | 21 +- F1:F103/F1_testbrd/usb.h | 21 +- F1:F103/F1_testbrd/usb_defs.h | 20 +- F1:F103/F1_testbrd/usb_lib.c | 15 +- F1:F103/F1_testbrd/usb_lib.h | 20 +- 22 files changed, 589 insertions(+), 186 deletions(-) create mode 100644 F1:F103/F1_testbrd/F1_testbrd.creator.user create mode 100644 F1:F103/F1_testbrd/i2c.c create mode 100644 F1:F103/F1_testbrd/i2c.h create mode 100644 F1:F103/F1_testbrd/stm32.pdf diff --git a/F1:F103/F1_testbrd/F1_testbrd.creator.user b/F1:F103/F1_testbrd/F1_testbrd.creator.user new file mode 100644 index 0000000..8e09c0e --- /dev/null +++ b/F1:F103/F1_testbrd/F1_testbrd.creator.user @@ -0,0 +1,171 @@ + + + + + + EnvironmentId + {7bd84e39-ca37-46d3-be9d-99ebea85bc0d} + + + ProjectExplorer.Project.ActiveTarget + 0 + + + ProjectExplorer.Project.EditorSettings + + true + false + true + + Cpp + + CppGlobal + + + + QmlJS + + QmlJSGlobal + + + 2 + KOI8-R + false + 4 + false + 80 + true + true + 1 + false + true + false + 0 + true + true + 0 + 8 + true + false + 1 + true + false + true + *.md, *.MD, Makefile + false + true + + + + ProjectExplorer.Project.PluginSettings + + + true + false + true + true + true + true + + + 0 + true + + true + true + Builtin.DefaultTidyAndClazy + 2 + + + + true + + + + + ProjectExplorer.Project.Target.0 + + Desktop + Desktop + Desktop + {65a14f9e-e008-4c1b-89df-4eaa4774b6e3} + 0 + 0 + 0 + + /Big/Data/00__Electronics/STM32/F1-nolib/F1_testbrd + + + + all + + true + GenericProjectManager.GenericMakeStep + + 1 + Сборка + Сборка + ProjectExplorer.BuildSteps.Build + + + + + clean + + true + GenericProjectManager.GenericMakeStep + + 1 + Очистка + Очистка + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + По умолчанию + GenericProjectManager.GenericBuildConfiguration + + 1 + + + 0 + Развёртывание + Развёртывание + ProjectExplorer.BuildSteps.Deploy + + 1 + + false + ProjectExplorer.DefaultDeployConfiguration + + 1 + + + 2 + + ProjectExplorer.CustomExecutableRunConfiguration + + false + true + false + true + + 1 + + + + ProjectExplorer.Project.TargetCount + 1 + + + ProjectExplorer.Project.Updater.FileVersion + 22 + + + Version + 22 + + diff --git a/F1:F103/F1_testbrd/F1_testbrd.files b/F1:F103/F1_testbrd/F1_testbrd.files index 54bc9bf..26b3859 100644 --- a/F1:F103/F1_testbrd/F1_testbrd.files +++ b/F1:F103/F1_testbrd/F1_testbrd.files @@ -3,6 +3,8 @@ adc.c adc.h hardware.c hardware.h +i2c.c +i2c.h main.c pl2303.bin proto.c diff --git a/F1:F103/F1_testbrd/Makefile b/F1:F103/F1_testbrd/Makefile index a532a9c..1675bb4 100644 --- a/F1:F103/F1_testbrd/Makefile +++ b/F1:F103/F1_testbrd/Makefile @@ -10,7 +10,7 @@ DENSITY ?= LD # change this linking script depending on particular MCU model, LDSCRIPT ?= stm32f103x6.ld # debug -#DEFS = -DEBUG +DEFS = -DEBUG INDEPENDENT_HEADERS= diff --git a/F1:F103/F1_testbrd/Readme.md b/F1:F103/F1_testbrd/Readme.md index f349a26..5953a8a 100644 --- a/F1:F103/F1_testbrd/Readme.md +++ b/F1:F103/F1_testbrd/Readme.md @@ -1 +1,6 @@ -Simple test for STM32F103, blinking PA0/PA1, two user buttons (PA14 and PA15) and USB (PL2303 emulator) <> USART1 echo. +Simple test for STM32F103: +USART1 +I2C1 +USB +5 PWM channels +ADC1.0 & ADC1.5 diff --git a/F1:F103/F1_testbrd/adc.c b/F1:F103/F1_testbrd/adc.c index 471ae9f..f451bd7 100644 --- a/F1:F103/F1_testbrd/adc.c +++ b/F1:F103/F1_testbrd/adc.c @@ -1,6 +1,6 @@ /* - * This file is part of the Chiller project. - * Copyright 2018 Edward V. Emelianov . + * This file is part of the F1_testbrd project. + * Copyright 2022 Edward V. Emelianov . * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/F1:F103/F1_testbrd/adc.h b/F1:F103/F1_testbrd/adc.h index 00fae0c..0f0de43 100644 --- a/F1:F103/F1_testbrd/adc.h +++ b/F1:F103/F1_testbrd/adc.h @@ -1,6 +1,6 @@ /* - * This file is part of the Chiller project. - * Copyright 2018 Edward V. Emelianov . + * This file is part of the F1_testbrd project. + * Copyright 2022 Edward V. Emelianov . * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -15,9 +15,8 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -#ifndef ADC_H -#define ADC_H -#include "stm32f1.h" + +#include #define NUMBER_OF_ADC_CHANNELS (5) @@ -40,4 +39,3 @@ uint32_t getVdd(); uint16_t getADCval(int nch); uint32_t getADCvoltage(int nch); -#endif // ADC_H diff --git a/F1:F103/F1_testbrd/hardware.c b/F1:F103/F1_testbrd/hardware.c index 8dc878f..d32b736 100644 --- a/F1:F103/F1_testbrd/hardware.c +++ b/F1:F103/F1_testbrd/hardware.c @@ -1,12 +1,10 @@ /* - * geany_encoding=koi8-r - * hardware.c - hardware-dependent macros & functions + * This file is part of the F1_testbrd project. + * Copyright 2022 Edward V. Emelianov . * - * Copyright 2018 Edward V. Emelianov - * - * This program is free software; you can redistribute it and/or modify + * This program is free software: you can redistribute it 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 + * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, @@ -15,10 +13,7 @@ * 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, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301, USA. - * + * along with this program. If not, see . */ #include "adc.h" diff --git a/F1:F103/F1_testbrd/hardware.h b/F1:F103/F1_testbrd/hardware.h index 8f3d641..bffefeb 100644 --- a/F1:F103/F1_testbrd/hardware.h +++ b/F1:F103/F1_testbrd/hardware.h @@ -1,12 +1,10 @@ /* - * geany_encoding=koi8-r - * hardware.h + * This file is part of the F1_testbrd project. + * Copyright 2022 Edward V. Emelianov . * - * Copyright 2018 Edward V. Emelianov - * - * This program is free software; you can redistribute it and/or modify + * This program is free software: you can redistribute it 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 + * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, @@ -15,35 +13,12 @@ * 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, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301, USA. - * + * along with this program. If not, see . */ + #pragma once -#ifndef __HARDWARE_H__ -#define __HARDWARE_H__ - #include -#if 0 -#ifndef CONCAT -#define CONCAT(a,b) a ## b -#endif -#ifndef STR_HELPER -#define STR_HELPER(s) #s -#endif -#ifndef STR -#define STR(s) STR_HELPER(s) -#endif - -// PWM LEDS -#define SET_LED_PWM3(ch, N) do{TIM3->CCR ## ch = (uint32_t)N;}while(0) -#define GET_LED_PWM3(ch) (uint8_t)(TIM3->CCR ## ch) -#define SET_LED_PWM1(N) do{TIM1->CCR1 = (uint32_t)N;}while(0) -#define GET_LED_PWM1() (uint8_t)(TIM1->CCR1) -#endif - // USB pullup (not used in STM32F0x2!) - PA13 #define USBPU_port GPIOA #define USBPU_pin (1<<15) @@ -52,4 +27,3 @@ void hw_setup(); -#endif // __HARDWARE_H__ diff --git a/F1:F103/F1_testbrd/i2c.c b/F1:F103/F1_testbrd/i2c.c new file mode 100644 index 0000000..8999155 --- /dev/null +++ b/F1:F103/F1_testbrd/i2c.c @@ -0,0 +1,272 @@ +/* + * This file is part of the F1_testbrd project. + * Copyright 2022 Edward V. Emelianov . + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program 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 "hardware.h" +#include "i2c.h" +#include "proto.h" +#include "usart.h" +#include "usb.h" + +I2C_SPEED curI2Cspeed = LOW_SPEED; +extern volatile uint32_t Tms; +volatile uint8_t I2C_scan_mode = 0; // == 1 when I2C is in scan mode +static uint8_t i2caddr = I2C_ADDREND; // current address for scan mode (not active) +static uint8_t addr7r = 0, addr7w = 0; + +void i2c_set_addr7(uint8_t addr){ +#ifdef EBUG + usart_send("Change I2C address to "); + usart_send(uhex2str(addr)); + usart_putchar('\n'); +#endif + addr7w = addr << 1; + addr7r = addr7w | 1; +} + +/* + * GPIO Resources: I2C1_SCL - PB6, I2C1_SDA - PB7 + */ +void i2c_setup(I2C_SPEED speed){ + if(speed >= CURRENT_SPEED){ + speed = curI2Cspeed; + }else{ + curI2Cspeed = speed; + } + I2C1->CR1 = 0; + I2C1->SR1 = 0; + RCC->APB2ENR |= RCC_APB2ENR_IOPBEN; + GPIOB->CRL = (GPIOB->CRL & ~(GPIO_CRL_CNF6 | GPIO_CRL_CNF7)) | + CRL(6, CNF_AFOD | MODE_NORMAL) | CRL(7, CNF_AFOD | MODE_NORMAL); + RCC->APB1ENR |= RCC_APB1ENR_I2C1EN; + I2C1->CR2 = 8; // FREQR=8MHz, T=125ns + I2C1->TRISE = 9; // (9-1)*125 = 1mks + if(speed == LOW_SPEED){ // 10kHz + I2C1->CCR = 400; + }else if(speed == HIGH_SPEED){ // 100kHz + I2C1->CCR = 40; // normal mode, 8MHz/2/40 = 100kHz + }else{ // VERYLOW_SPEED - 976.8Hz + I2C1->CCR = 0xfff; + } + I2C1->CR1 = I2C_CR1_PE; +} + +// wait for event evt no more than 2 ms +#define I2C_WAIT(evt) do{ register uint32_t wait4 = Tms + 2; \ + while(Tms < wait4 && !(evt)) IWDG->KR = IWDG_REFRESH; \ + if(!(evt)){DBG("WAIT!\n"); return FALSE;}}while(0) +// wait for !busy +#define I2C_LINEWAIT() do{ register uint32_t wait4 = Tms + 2; \ + while(Tms < wait4 && (I2C1->SR2 & I2C_SR2_BUSY)) IWDG->KR = IWDG_REFRESH; \ + if(I2C1->SR2 & I2C_SR2_BUSY){I2C1->CR1 |= I2C_CR1_SWRST; DBG("LINE!\n"); return FALSE;}\ + }while(0) + + +// start writing, return FALSE @ error +static int i2c_7bit_startw(){ + if(I2C1->CR1 != I2C_CR1_PE) i2c_setup(CURRENT_SPEED); + if(I2C1->SR1) I2C1->SR1 = 0; // clear NACK and other problems + (void) I2C1->SR2; + I2C_LINEWAIT(); + DBG("linew\n"); + I2C1->CR1 |= I2C_CR1_START; // generate start sequence + I2C_WAIT(I2C1->SR1 & I2C_SR1_SB); // wait for SB + DBG("SB\n"); + (void) I2C1->SR1; // clear SB + I2C1->DR = addr7w; // set address + I2C_WAIT(I2C1->SR1 & I2C_SR1_ADDR); // wait for ADDR flag (timeout @ NACK) + DBG("ADDR\n"); + if(I2C1->SR1 & I2C_SR1_AF){ // NACK + return FALSE; + } + DBG("ACK\n"); + (void) I2C1->SR2; // clear ADDR + return TRUE; +} + +/** + * send one byte in 7bit address mode + * @param data - data to write + * @param stop - ==1 to send stop event + * @return TRUE if OK + * +static int i2c_7bit_send_onebyte(uint8_t data, uint8_t stop){ + int ret = i2c_7bit_startw(); + if(!ret){ + I2C1->CR1 |= I2C_CR1_STOP; + return FALSE; + } + I2C1->DR = data; // init data send register + DBG("TxE\n"); + I2C_WAIT(I2C1->SR1 & I2C_SR1_TXE); // wait for TxE (timeout when NACK) + DBG("OK\n"); + if(stop){ + I2C_WAIT(I2C1->SR1 & I2C_SR1_BTF); // wait for BTF + DBG("BTF\n"); + } + if(stop){ + I2C1->CR1 |= I2C_CR1_STOP; // generate stop event + }else{ DBG("No STOP\n");} + return TRUE; +}*/ + +int i2c_7bit_receive_onebyte(uint8_t *data, uint8_t stop){ + I2C1->CR1 |= I2C_CR1_START; // generate start sequence + I2C_WAIT(I2C1->SR1 & I2C_SR1_SB); // wait for SB + DBG("got SB\n"); + (void) I2C1->SR1; // clear SB + I2C1->DR = addr7r; // set address + DBG("Rx addr\n"); + I2C_WAIT(I2C1->SR1 & I2C_SR1_ADDR); // wait for ADDR flag + DBG("Rx ack\n"); + I2C1->CR1 &= ~I2C_CR1_ACK; // clear ACK + if(I2C1->SR1 & I2C_SR1_AF){ // NACK + DBG("Rx nak\n"); + return FALSE; + } + (void) I2C1->SR2; // clear ADDR + DBG("Rx stop\n"); + if(stop) I2C1->CR1 |= I2C_CR1_STOP; // program STOP + I2C_WAIT(I2C1->SR1 & I2C_SR1_RXNE); // wait for RxNE + DBG("Rx OK\n"); + *data = I2C1->DR; // read data & clear RxNE + return TRUE; +} + +int i2c_7bit_receive_twobytes(uint8_t *data){ + I2C1->CR1 |= I2C_CR1_START | I2C_CR1_POS | I2C_CR1_ACK; // generate start sequence, set pos & ack + I2C_WAIT(I2C1->SR1 & I2C_SR1_SB); // wait for SB + DBG("2 got sb\n"); + (void) I2C1->SR1; // clear SB + I2C1->DR = addr7r; // set address + I2C_WAIT(I2C1->SR1 & I2C_SR1_ADDR); // wait for ADDR flag + DBG("2 ADDR\n"); + if(I2C1->SR1 & I2C_SR1_AF){ // NACK + return FALSE; + } + DBG("2 ACK\n"); + (void) I2C1->SR2; // clear ADDR + I2C1->CR1 &= ~I2C_CR1_ACK; // clear ACK + I2C_WAIT(I2C1->SR1 & I2C_SR1_BTF); // wait for BTF + DBG("2 BTF\n"); + I2C1->CR1 |= I2C_CR1_STOP; // program STOP + *data++ = I2C1->DR; *data = I2C1->DR; // read data & clear RxNE + return TRUE; +} + +/** + * write command byte to I2C + * @param data - bytes to write + * @param nbytes - amount of bytes to write + * @param stop - to set STOP + * @return 0 if error + */ +static uint8_t write_i2cs(uint8_t *data, uint8_t nbytes, uint8_t stop){ + int ret = i2c_7bit_startw(); + if(!ret){ + DBG("NACK!\n"); + I2C1->CR1 |= I2C_CR1_STOP; + return FALSE; + } + for(int i = 0; i < nbytes; ++i){ + I2C1->DR = data[i]; + I2C_WAIT(I2C1->SR1 & I2C_SR1_TXE); + } + DBG("GOOD\n"); + if(nbytes) I2C_WAIT(I2C1->SR1 & I2C_SR1_BTF); + if(stop) I2C1->CR1 |= I2C_CR1_STOP; + return TRUE; +} + +uint8_t write_i2c(uint8_t *data, uint8_t nbytes){ + return write_i2cs(data, nbytes, 1); +} + +/** + * read nbytes of data from I2C line + * `data` should be an array with at least `nbytes` length + * @return 1 if all OK, 0 if NACK or no device found + */ +static uint8_t read_i2cb(uint8_t *data, uint8_t nbytes, uint8_t wait){ + if(wait) I2C_LINEWAIT(); + I2C1->SR1 = 0; // clear previous NACK flag & other error flags + if(nbytes == 1) return i2c_7bit_receive_onebyte(data, 1); + else if(nbytes == 2) return i2c_7bit_receive_twobytes(data); + I2C1->CR1 |= I2C_CR1_START | I2C_CR1_ACK; // generate start sequence, set pos & ack + I2C_WAIT(I2C1->SR1 & I2C_SR1_SB); // wait for SB + DBG("n got SB\n"); + (void) I2C1->SR1; // clear SB + I2C1->DR = addr7r; // set address + I2C_WAIT(I2C1->SR1 & I2C_SR1_ADDR); // wait for ADDR flag + DBG("n send addr\n"); + if(I2C1->SR1 & I2C_SR1_AF){ // NACK + DBG("n NACKed\n"); + return FALSE; + } + DBG("n ACKed\n"); + (void) I2C1->SR2; // clear ADDR + for(uint16_t x = nbytes - 3; x > 0; --x){ + I2C_WAIT(I2C1->SR1 & I2C_SR1_RXNE); // wait next byte + *data++ = I2C1->DR; // get data + } + DBG("n three left\n"); + // three bytes remain to be read + I2C_WAIT(I2C1->SR1 & I2C_SR1_RXNE); // wait dataN-2 + DBG("n dataN-2\n"); + I2C_WAIT(I2C1->SR1 & I2C_SR1_BTF); // wait for BTF + DBG("n BTF\n"); + I2C1->CR1 &= ~I2C_CR1_ACK; // clear ACK + *data++ = I2C1->DR; // read dataN-2 + I2C1->CR1 |= I2C_CR1_STOP; // program STOP + *data++ = I2C1->DR; // read dataN-1 + I2C_WAIT(I2C1->SR1 & I2C_SR1_RXNE); // wait next byte + *data = I2C1->DR; // read dataN + DBG("n got it\n"); + return TRUE; + } + +uint8_t read_i2c(uint8_t *data, uint8_t nbytes){ + return read_i2cb(data, nbytes, 1); +} + +// read register reg +uint8_t read_i2c_reg(uint8_t reg, uint8_t *data, uint8_t nbytes){ + if(nbytes == 0) return write_i2cs(®, 1, 1); + DBG("wrote address, now read data\n"); + if(!write_i2cs(®, 1, 0)) return FALSE; + return read_i2cb(data, nbytes, 0); +} + +void i2c_init_scan_mode(){ + i2caddr = 0; + I2C_scan_mode = 1; +} + +// return 1 if next addr is active & return in as `addr` +// if addresses are over, return 1 and set addr to I2C_NOADDR +// if scan mode inactive, return 0 and set addr to I2C_NOADDR +int i2c_scan_next_addr(uint8_t *addr){ + *addr = i2caddr; + if(i2caddr == I2C_ADDREND){ + *addr = I2C_ADDREND; + I2C_scan_mode = 0; + return 0; + } + i2c_set_addr7(i2caddr++); + if(!read_i2c_reg(0, NULL, 0)) return FALSE; + return TRUE; +} diff --git a/F1:F103/F1_testbrd/i2c.h b/F1:F103/F1_testbrd/i2c.h new file mode 100644 index 0000000..c652d6f --- /dev/null +++ b/F1:F103/F1_testbrd/i2c.h @@ -0,0 +1,45 @@ +/* + * This file is part of the F1_testbrd project. + * Copyright 2022 Edward V. Emelianov . + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program 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 . + */ + +#pragma once +#include + +#define I2C_ADDREND (0x80) + +typedef enum{ + VERYLOW_SPEED, + LOW_SPEED, + HIGH_SPEED, + CURRENT_SPEED +} I2C_SPEED; + +extern I2C_SPEED curI2Cspeed; +extern volatile uint8_t I2C_scan_mode; + +// timeout of I2C bus in ms +#define I2C_TIMEOUT (100) + +void i2c_setup(I2C_SPEED speed); +void i2c_set_addr7(uint8_t addr); +uint8_t read_i2c(uint8_t *data, uint8_t nbytes); +uint8_t read_i2c_reg(uint8_t reg, uint8_t *data, uint8_t nbytes); +uint8_t write_i2c(uint8_t *data, uint8_t nbytes); + +void i2c_init_scan_mode(); +int i2c_scan_next_addr(uint8_t *addr); + diff --git a/F1:F103/F1_testbrd/main.c b/F1:F103/F1_testbrd/main.c index 8f74723..77b8521 100644 --- a/F1:F103/F1_testbrd/main.c +++ b/F1:F103/F1_testbrd/main.c @@ -1,11 +1,10 @@ /* - * main.c + * This file is part of the F1_testbrd project. + * Copyright 2022 Edward V. Emelianov . * - * Copyright 2017 Edward V. Emelianoff - * - * This program is free software; you can redistribute it and/or modify + * This program is free software: you can redistribute it 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 + * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, @@ -14,13 +13,12 @@ * 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, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301, USA. + * along with this program. If not, see . */ #include "adc.h" #include "hardware.h" +#include "i2c.h" #include "proto.h" #include "usart.h" #include "usb.h" @@ -47,8 +45,13 @@ int main(void){ usart_setup(); SysTick_Config(72000); - SEND("Hello! I'm ready.\n"); + USBPU_OFF(); + USB_setup(); + USBPU_ON(); + i2c_setup(LOW_SPEED); + + SEND("Hello! I'm ready.\n"); if(RCC->CSR & RCC_CSR_IWDGRSTF){ // watchdog reset occured SEND("WDGRESET=1\n"); } @@ -57,10 +60,6 @@ int main(void){ } RCC->CSR |= RCC_CSR_RMVF; // remove reset flags - USBPU_OFF(); - USB_setup(); - USBPU_ON(); - while (1){ IWDG->KR = IWDG_REFRESH; // refresh watchdog if(lastT > Tms || Tms - lastT > 499){ @@ -81,7 +80,6 @@ int main(void){ lastT = Tms; transmit_tbuf(); // non-blocking transmission of data from UART buffer every 0.5s } - /* if(I2C_scan_mode){ uint8_t addr; int ok = i2c_scan_next_addr(&addr); @@ -92,7 +90,6 @@ int main(void){ USND(") - found device\n"); } } - */ usb_proc(); int r = 0; char *txt, *ans; diff --git a/F1:F103/F1_testbrd/pl2303.bin b/F1:F103/F1_testbrd/pl2303.bin index b71519ec9ca466ac1eeb2ffb27962a4c2b5ae4c3..289405e3311f88ad706e1eb48718d35f5d2d2e5e 100755 GIT binary patch delta 6750 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 DM$DCX delta 2977 zcmbVO4Ny~87Ctut8<2leg%HSlB(#x$rh=|476XBRNf4^GuA)n*KcQ@A*VY|%R*Acg(+7qU10;JcmP&PZ*4dZ& za?bhgch0@<-TO{*dECuo7IPXXBu#MXNN_gqZFz-VUAgxsHVZ;k&Juar;ZI`5lw zvGV^fIyqTi{Damge^B9r>gW>kEz!D)B$bjUwE&!y2ml&l2nM48LcjnTFMu8l5_7zr zWX0PY#n97;y3BuyWx$nrRS%Vku%XS;W=^#4?8p}hNwlrB7Ys$$h8tGd6!s(ZROF(t zS1k&Ai?ry=*Jxh9O4rx~pW4uBd$vSj1F3X$8^pC3&ELMOt+Zb9 z9ok!2R=MPo@2!J4s{fM@1hu`bAf#VyuSjwY`<>2d{jEN{HC;|$njJ)OoQQHCh@ah- zwAedAOdV}7m774+2PFGI%nX3IEbze~L>v2Z?V$UsTk;Nw?~jA_3pb=n4k(s0m25Nt zGiRdq&*L-s{1OmdLB=2RO-|qY#hp3Nxt+iTM-1aRmQYjD?z0McmR9${h543qx0*u} z1P~AVf@(<3THHNsaK6|yz3IhW2Ym*P?>{_jsC};s{qjSe3RAp~BoWuyK@uUo5kWB0 z{kjX%eSMY`LVtpb-x4GTl6+EqxbBdf@Ek7anc(j{-NWDvGh!*IO)|H2(I%&-Oblib zdd(BeoOWTx;={v2ZCls$rWcxOJaLvcckORdG;Q|8Vfwq{xt>_GN5&U=pogxGNto-# zH;bK!3<4ZGDVz#qyD?^`M~VJb92ePJC?kenFWnrKcAqlj?s5wQ;|Lyh~k$b-5nsPUNS~6#%hvr|50s3 zdjAC7J_hQ4)PUC3r&s6EC*o#eVk0Kzph5^pFfnnAn&Mc!O_(?f=?xR~^J8>doF=L~ zaO(O3gN#?u9sl79y4-7Iep2IXj5W0XjE6FDwFw<%oTB zYkU&fLtl&E7|K%LphW&W0oM+B1#ybq)9M;JjtuIgA*Lc740Q;Xu1m$Ijz4w$`0;Ic zp}Fr;-(e<9&JRZmSor97ymdCpX7`VO8B4<+2p&o*{Rh`M%hZ!N;UucO3xfpkU0L)9=fcuXF3>7({11 z*&kaNoVDt2j4QH+7oPQHYid2lx^SJ-Thp%3E1C^M74?^{&k&2r%Kz~({&3v+UHJGE z`fakB%*9wsQm3&0sqkL7%dVT^uR(tWq*&FSL@Vz}wyHd2UwuKZsH(?X&^&C7Q?Of* zdlbBLCLXufM?n*X!NcgcpfB^pTcdb&U3`hl-*BrUOzps^at@3Wbdf zMDstwu?GLxwfR>6wcyB4M@gMgsW8DTr#GX0F0SUuDa^|DN@T24n0f8Fo)BJ(HP-sS z!u-6uV@~hZb|=c`-KD(C+gEv}^C>7d`+IJcH7geH51`M?yQ$b<@bSv&ktq?8a27 zDa0IO-@E&jtqHbPVgD}@OpaoX-c0)?al5J>`G)+M)n{p+pamNkSds%{4hyi#do=iv z5gmwQi1mo8h?q3j%i5(Rk?C1J)3Qlfz41hlIq2s&GtzRnb>6Q>mD#bZwu#oJctB+n>!LB+K=={)$AauVdOf V*FK!mhG$5?kW9b;@CW9};NP{&;6VTY diff --git a/F1:F103/F1_testbrd/proto.c b/F1:F103/F1_testbrd/proto.c index ac21305..54f0124 100644 --- a/F1:F103/F1_testbrd/proto.c +++ b/F1:F103/F1_testbrd/proto.c @@ -1,6 +1,6 @@ /* - * This file is part of the F0testbrd project. - * Copyright 2021 Edward V. Emelianov . + * This file is part of the F1_testbrd project. + * Copyright 2022 Edward V. Emelianov . * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,7 +17,7 @@ */ #include "adc.h" -//#include "i2c.h" +#include "i2c.h" #include "hardware.h" #include "proto.h" //#include "spi.h" @@ -121,21 +121,20 @@ static void hexdump(uint8_t *arr, uint16_t len){ } } -static uint8_t i2cinited = 0; +static uint8_t i2cinited = 1; static inline char *setupI2C(char *buf){ buf = omit_spaces(buf); if(*buf < '0' || *buf > '2') return "Wrong speed"; - //i2c_setup(*buf - '0'); + i2c_setup(*buf - '0'); i2cinited = 1; return "OK"; } -static uint8_t I2Caddress = 0; static inline char *saI2C(char *buf){ uint32_t addr; if(!getnum(buf, &addr) || addr > 0x7f) return "Wrong address"; - I2Caddress = (uint8_t) addr << 1; USND("I2Caddr="); USB_sendstr(uhex2str(addr)); USND("\n"); + i2c_set_addr7(addr); return "OK"; } static inline void rdI2C(char *buf){ @@ -151,30 +150,22 @@ static inline void rdI2C(char *buf){ if(!nxt || buf == nxt || N > LOCBUFFSZ){ USND("Bad length\n"); return; - }/* - if(!read_i2c_reg(I2Caddress, reg, locBuffer, N)){ + } + if(!read_i2c_reg(reg, locBuffer, N)){ USND("Error reading I2C\n"); return; - }*/ + } if(N == 0){ USND("OK"); return; } USND("Register "); USB_sendstr(uhex2str(reg)); USND(":\n"); hexdump(locBuffer, N); } static inline char *wrI2C(char *buf){ uint16_t N = readNnumbers(buf); - //if(!write_i2c(I2Caddress, locBuffer, N)) return "Error writing I2C"; + if(!write_i2c(locBuffer, N)) return "Error writing I2C"; if(N < 1) return "bad"; return "OK"; } -static inline char *DAC_chval(char *buf){ - uint32_t D; - char *nxt = getnum(buf, &D); - if(!nxt || nxt == buf || D > 4095) return "Wrong DAC amplitude\n"; - DAC->DHR12R1 = D; - return "OK"; -} - // write locBuffer to SPI static inline void wrSPI(int SPIidx, char *buf){ if(SPIidx < 0 || SPIidx > 2) return; @@ -223,7 +214,7 @@ const char *helpstring = "A - get ADC values\n" "dx - change DAC lowcal to x\n" "g - get PWM values\n" - "i0..3 - setup I2C with lowest..highest speed (5.8, 10 and 100kHz)\n" + "i0..2 - setup I2C with lowest..highest speed (5.8, 10 and 100kHz)\n" "Ia addr - set I2C address\n" "Iw bytes - send bytes (hex/dec/oct/bin) to I2C\n" "Ir reg n - read n bytes from I2C reg\n" @@ -268,21 +259,18 @@ const char *parse_cmd(char *buf){ return TIM3pwm(buf); break; case 'd': - return DAC_chval(buf + 1); + return "DAC not supported @ F103"; case 'i': return setupI2C(buf + 1); break; case 'I': - return "TODO"; - /* if(!i2cinited) return "Init I2C first"; buf = omit_spaces(buf + 1); if(*buf == 'a') return saI2C(buf + 1); else if(*buf == 'r'){ rdI2C(buf + 1); return NULL; } else if(*buf == 'w') return wrI2C(buf + 1); - else if(*buf == 's') i2c_init_scan_mode(); + else if(*buf == 's'){ i2c_init_scan_mode(); return "Start scan\n";} else return "Command should be 'Ia', 'Iw', 'Ir' or 'Is'\n"; - */ break; case 'p': case 'P': @@ -320,7 +308,7 @@ const char *parse_cmd(char *buf){ break; case 'R': USND("Soft reset\n"); - //SEND("Soft reset\n"); + SEND("Soft reset\n"); NVIC_SystemReset(); break; case 'S': @@ -345,7 +333,7 @@ const char *parse_cmd(char *buf){ break; case 'W': USND("Wait for reboot\n"); - //SEND("Wait for reboot\n"); + SEND("Wait for reboot\n"); while(1){nop();}; break; default: // help diff --git a/F1:F103/F1_testbrd/proto.h b/F1:F103/F1_testbrd/proto.h index d8dd42a..28969c6 100644 --- a/F1:F103/F1_testbrd/proto.h +++ b/F1:F103/F1_testbrd/proto.h @@ -1,6 +1,6 @@ /* - * This file is part of the F0testbrd project. - * Copyright 2021 Edward V. Emelianov . + * This file is part of the F1_testbrd project. + * Copyright 2022 Edward V. Emelianov . * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -15,10 +15,8 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -#pragma once -#ifndef PROTO_H__ -#define PROTO_H__ +#pragma once #include extern volatile uint8_t ADCmon; @@ -35,4 +33,3 @@ char *uhex2str(uint32_t val); char *getnum(const char *txt, uint32_t *N); char *omit_spaces(const char *buf); -#endif // PROTO_H__ diff --git a/F1:F103/F1_testbrd/stm32.pdf b/F1:F103/F1_testbrd/stm32.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e041a2cacdc614c425010989c371ed49b2fac547 GIT binary patch literal 125592 zcmcG$WmH^C*EM2@b(sg1c*QcL?qdw;?CzInVdL_q)ID z7)@8LsyWx*gAUcRYRw%IIbjhR23i&<65lU={!mQ#^!PRgpP{(9@#&-_cmu*wDtv7@wCH%E8gzSls2r-(2+?Tw2*ex&UC-N#IM$Oq6zibwX5lbFzWmv~HIFzff&6^S ziH}3I8;$L?(C4MFf$n8EtH1p<(EI+P;uZY$e6IajVLAEr=Igc3N#T)&I7-FQxX<&F z&*klMjf3uI$WbphELkg_ne(e-HeI|9ozuMsp83Ga@XP(duGQ6Kz7TLQZnI}T-KX`H zCsPKy=X1@cz%_e|(dPsaCLUVc*HJoM@0Z8dOTOod*QM7hpI6=2)8wgP*{U15_NP*1qGy4UC7*R#`2*>l~Oe!xsJozK$_+w03W-=s$P{K z;tplK1wD1jD2#O%?~H>Re}Z&#mryIZgj-OLhW!o zh}bY#MzuY9>#<}54@K_JyVUcpsp$sObMB_vHnX1)v1@BVSdGSProvGe) z<8#w))J&o9QVHLcs!f^7^))tHMd%kHjgG?EWf;M*GfM2(+i}#h6mnin#u|c!TLfeC z<{Z7wo_3DzP}fZ+(&Z;Mq9(AAy1VDW_MPbW>&QmyRa`TdUE7wzg@f=!ZtyJvby>T0 z)1u5*s7)%^5JWbSD{|rKPI~L|wxn~c4SmyOqRPG`fw9Ah>7d+QR%`whz^)?1rp6v1 zK~Q{4An4SM8N(2BEi-DNj*YO_r)vzuK(A6_T&oeZ8DDJ~BSJ~4CWMShlP=iAiPx9~w_G|kv12eA# z19Rvo3S4x(5hRz@_+7Fil8BkPY)uL0b8y)VM{35@5M(=qOi{C-gqJyLhSBTt5XLy5 zb-b#0t0^5BuwA)w)ELDIQOQazGIPH^H}mFO@OlQ9f7G=w4)tqMO|7DEu@+Bl0~LdA zXseS352=y94lr+EP?qA@S8*0fXlxAi=7%$+Spq{G7VwQH3?ME z3rJ?gQO~m7YYW7db=C8579UJd}RdK?`-q6*XJRPMs#7pIlK3)p$^C z9fk0#ub#0bvLJ^cQ*1pGEA}t#^2H@%#p4*3HrQP1VJCi93Z;;nPeuC%2?|>;0+FCO zEf^+T(`^K>!?B0>PNXG-qtX%d|&koMS`ZYL%^RkPvdFKYA<%MKNVqK_Q_L}}W4emY7V;{yB zWAC@ZgYm);*(B}x1&K?*p!V$N%lfLWu&GxW46wSzexP7zo)4e+e(OU$MAoh& zL?QezuJ#pWFoBKAzK$j-{Yu)3=hyR#)RrR5W{0&<)K2bgcM!HD#;x#y@Bxh`|Hats z>!hph>~}Q<{|mLh=mys1`6`R9Gwe4wCP8KJ4W22IXu}2FG%ZyRAGH+VT|y!RtBmpl z?~SL{E)c)s87~Mt%v2+Btdyb+{AeRVs5>&io0@hWrgh%5Trx^F>#hbi)nEAXD4iF- zS7^25W>%<7aS4-70qIn8gilj>g#7+Nv%0ox+I8Fs|FAxic93=ow5A=_&~Np*+KpRv zdGV-h)f2ticDl`6DDxPvI(TjLkX@|zO!AOjIL4@kL*Me`w&4(M-xfiN`F@*eAbuCr zfI0oyews}uRVkd#emK=lbO}F_T2yy?m8k}2H+03Xg#H1k*mlKsak!UX~l;r2VWZI%fI>r}~7)1sh{$Y^V8z=Qj4%>9k4y z`$eE+rYvf7tZBu0)g`nWNy{ik8|z>JR1G%+>6hr2Zq|N!=I0ihaNYn8 z2{*X1&P{R}nmwV2NSY{Mi=)1oxt*JJHdGay!_gK#V+kaxpdG?_^Eo?>%$t)NR3Ux~ z{wHoTxDZo|f<8t~_&_U+Y-}O-9c|rEbGIL!@gtRC6YwNcY%&lCs&*gOO#yD@^4OIjTgUyd2&a0?~fck97@%t>8~dGNPWK8$gn zoidyIFD-$BcoAVAw@&>0DDk5w&?bn^;}l#UgDIN+E}p85_#}g0Yr_HBR%_iMeB!$G z5>j~a=6QD*urgVyF-zoAc}~=W<~$Q&AMoAzeO&caUz9N1Y-^zqHnqaWCaSAtwlJq} zN@{RH_hX>3BDpP?LWMZ1Z)nWAq+#r--P1*>pNwm8*2pkT%rh+S_SWXIx*$9yzun0w zJ6-eQ#Q)k7xFT4AJQs6dFP3@N&>?&JtfFhNVA_05!|{@$xu#z$bLf!Xi>br`PGD;gbUbCuK2hJNeTv| zTt~ZBJ)MxlKoQVPGz?%@UZea{2H!njz4VR`R_F$a!XF+1)VF$a|zG5d3%qLi2RMgpFsoV}M^nHB5`QCG{m z#v&4S7nZ!y=X4PR?WWDl;++n%o|HdT*?iPv*s~0?RJjg0Ca{E@$l%F(*!&WRm6Ft1 z@r%XBmz#6(MCIummn}KmC!DrJpj$tf(m2*hp7vv1YLHX+6HVj0=tzt-ER0!l1W+Q# zF5`McL=3PsqiZaoN1AKH9E2DUBmpmhpoUx z9a+oUbVm{+ZfiOr0PoS9gSw?j7(w{#CNbS*F0-oV=HOuGvz`JL;Vo{)hPW6R;7pXg zBKFpWhddS$d?a~`+KFqi-l89|6V}AFx^J)>$-kpN6TkWIq<_Kw$wv2{ts7Be$@*$w z=xjgV#5ijqY9*^1H|bZ9w5+V&Bk&Sm#ArHZ|FaNN|7CtElKto1fb=vD{A3fEf#Ou) zYV%#!W@ZN+?xQr0OuA9*7yyja$9&gU>m36(ke>={Z?@~&#_TXMl%2YDKQ#i>#O%ON z3xG;8fp1TZ{E`{P9#1xb8z@Mfj&%OK>o}9~P90l{)PBF@%t{&uL7|BZ+eUFJQnkgd zCohYGK;|M>U+h7GoDK0$EXZpS!PeNfE*|2q$bbjQx5!7li0v(MC(2$GD{6m-CI21$ znRto&hxBjQpKQAC+4gSWN;?kMAMc=^_T?LDrKBQdIm{dUPue+P*5=Aa5LO$lnF^46 zt<@l^qYSrVc5Ynmnl7=X>%?3{Xf`Vo4`y>%vFlT;jiZm^HHoX{Tf=%!C{TmR)Tn`7 zYV!H1qYg30SlU<*96OI#gKnIz>jb#96`^IW^Zj?(G6o1bu;m~i7_{gm4v*B+lBX;x zW?0dM3SY#jih2r5zmbudpB<-)hmA`iGUQ&tVUU?X7)eWzBe!o5;XJ#gIYUTK!%!Nq z($$Z91WF|Xf72wkM~@+%?2U*genD4KEaGmOVkC`bIq{|LT&koW%9|t^#~57V*`OkA z)ZFex#1+cky^@ukG4uH^3hb5x2`v-Wuo%_dAc zozE!CLDV#Eg@o}IA>@Hl=Jl$DnjnEc8RqUg;${==cdAggeISX6UL`9T?TZ7dqjWUZ z7=JbfV+Dw2t1(U;;VO^zw=6e}yav_Tv{Z3|uYSUXTv4Al3WmOMcb^~TDf16aNbPZl z+S$lGabKH(UAmp?gOip$ObK7l8cKcgdaT@>nHpM$oO+@(PL6;Jaa9^3M@I-Sk(=#= z%hrm+3AaZ9GnSu~Xd(tCoLfk|zzRYPp9l6c64w*|T%ZtT-%48s9!9|bDmaBZjm`=Y zjl|v)yd9&j#HErI@@)k>ZYH$Q1i{yz*v@j*^(6c<=_Je zhcS_(Hb$Q0kNMF*J&ctE3bb%@{QI6#BuGvUff^;Ip!z5O#mv~h)V`~{daj`sumk~D zpL}+v){$c!YT36eyX>mHmc!?S>YR#>s5JD}Um2lY)jX37r0v`qSW)skJ7$r0j~} zag4Vd%fh6)ADH#jG2_h1!=e=3Q0h?=WWgwVlz5cET|FuJqBOPNU`tIS=Qayzvf(JA zjqtAP0=|sTXDKsmA8RiuRF{IksX~hcuqBCJZq|E*enbfufM@ddtgKHkMfGogxSQFRR^>8%SoBegbS+?TqsFI;)0RG~oXlnj}3=Jwn* zQ{Rq%sa4goWw_AjNw=rA2ssv_nTO&n?&4bbF!=4KhDCi#j52laKW{vb;;(18Mlol0 z9~q*@Kio$x!1MK}As^?mE0C;m7Brp$H4U)NLvLds)p2wmVVG`2>BFLXltVu2~gaZ{e~NTGxc-n)b{yka+u z?Z-E#*drTaIiNU_y}~k$gQ1;YV;0?Esa`oWGIbrpeTq`6?L4c}`vkXyN)jbQX2hWH zQLw%w3Ax z2o7U^gW-e%sy-iu@S~s-@`W;*%)G>h1-EIl)MX7DDG$Yd;jKk-5)2CR{P07_OF=DJ zW{Y*VIDifa?do951opH00L^XMyw2Y6MqrTv~L&i<9(88 zt|NWOgT%+|m@4f)9<4Eb5UjlpGbG+sPBAfEdJLsp ztgN+nNnB#l$iPh!e|`P7hKL9C93v;CmT1+6x&kNdSJE9%MH%(-EHh-tt!=x6o;?RG z*2ErDS1n=+VVTLWzz5B55f7SE^9K-#d)sU{ICO@pH6v@ zL!tKC>`N>N;4;HHk0~ku;-$}N!V&5!45b{gYLQ81Uik_2+47fL5K@C z1mEtBUS7%{t%GpokX2}cKpB67$J!4z{+29A8nXp+)di{hL48x6{M!6VvPTG?7azFQ zmeig<)1AUI{gd-q%0%K6^JS@88PtyNDZ&sE9>T&FhrR`W9w9L~R}~D%W;1!69&E7@ z=*OY*P(<;=^6X&Gt2KO2khMzJyl+oVVbJX}pUMt7{isk^|1us+^ghM8TF@Ji-h5`SXe9gHM5n7R+v(WJX1+Ikn=PBXyJ)9)I%CUDT6VjQ zn{@+D$~Yb#vA} z)cAbdsX{$3@p9##du%1uz=mVkL2eWMME%19nnuwQc zMj|xb4a4~70lvGl^^uLv)NcPDaPVW;xal0+><+HByMIQRg27GyFB2!6+>I{(bH3HV z^$d_=jf30ucdw$`pDh^tbs;zy6L{xm`LRrLB zKfPlV_2yMd5J+Zpu#eUm6ATy`{Ok9+@&ycu!Axi+Fae;6vhlnJkoPYGK7@w2ueL8DDz_Kr0|M0`O!LY%+8jUI)+E$YB!nUCY)FTjBX zqg3q@?BHiVxbWou{DgpD3BZv>PYc2v(I}=Xt})EIn`J^&IX5`SR>XSXS^7TZ`+-Hv z+ku55GOLF~e_n;QC&qZf3s2+XKXHN?KjB4_vd|V5BL5XGWX}aV z|24`%JZ~@cg=;vt969@3>Y#l~sjFS_;gmhz^(0g>{brm(3z%`*M{)zX{CyTh!u5L% zHm3l4poJheis3qPxtoke_U0D$N#K~&D^0IIEg+|%Ip~X2Q;~GC;A>Eb7tEbpYs`)gEdtArY{vSODB`^ZGiQ+Ull1g;qyV za)1g^_KcVr3!+BkTlYF<;xlor&RaAqDOeKw7GXk`i3lE&yun)kj{cc==l>@C3-(X8 zxHmp8b$0QINOUO-{3-&yGf(AV{QPl;wXDG{@DIKSn)J`fCak%sqh=;dX$ui=-Q$T7 z6XqK2x2Rr{>FeZMgfVIl+bdTR*63d&nQCv!n*+CKYo zj9C4HcuyoXC%1H|PA)!!5vjg=v*UEBb;)YQKV#e`+q-@*$AhnQZNs+8n^K&HQ4!k7KGPt%;pQT-&wZ1;J!b|7x)=qLFF|Q zv&IR#lEy}G?e7n)Tb#a3D^Z#7Ggn}V8t_wa%3hj4@HodKNj!MpO?5+-05d<=lxH*G zXB?zzj0=f!zT0$`30-dwJ@EKT0`8PEJdhM{|55NW;kV&bW77`#004(uuKi5ISn%hx zt?RN6yh^eh-@e-bQYfl03Ki`PDX($jeJ8L%x|qnuL_d$4Fe7Hhgp3ps%#D5P;v!;3 z2J}h3MXusz%x{qhQTC*mS<5>t`S0k@#BcsP>0dBd5kddh2|Z$FEkw+SfS`U7<|z$+ z{V&yw+?YyY^XDB=vId2~Ts)x}@JCPVtPYggX{iw=q`9esW+sep-2x$|_{kAR^S6k0 zR7&J6GGb=J7?nzXgB?u$9sQYj=l>@C3pQzH!kmT?Y0@Xjlsh?cceNTz2RSMtSQ9&8 zNz9D(*1aUiUJx^DdykR>Oo-khR>ZW(fL+Nqn5X#f=%0yq{%_L1U`E8u7?9E;g3~0~ zgJNdx_NVJ8uGsjQ8ej0>ZSws}I9djb=?gN4Qs6f7OQtX?o62u61Ur-6njz|4_M6VJ zwoYwnWP`a@jcv)!+7Yj zSWWlIeK-Fh05ww!Dno(8+VgS@pSOp7tklV(S*(L&)~(bShwdte*O}wo{JKj>*#iJ~*U=?6Z~QIBFguq5E>asz z&p_-5KLt-VUo-ehBUu1)o3ZG;DXo5|y9xFSHpn#5$oY}4nDi2mdh#SN;Q{{_EwJ3L zh=zE8-w{3{D4_WklL{w=wxVe<$&^X@>fU#lu5v_~!Ow*leK6$Jte>y*m-g_SnmmO7 zK8E?YUt+8vcg3#;hHu8wkcA}=ID|xUrTEK0EBM&LOCKnTj`7tLbX6%1(etjuYAp}4 z12kRN3Vb_McZehs)@e3gcz%b{8XH**Y)f>3zs1wsQ7fxj3m+Q1@`*ePc!m{-1fm{xJdnsM+;en8{ z7Ir{FYz2RXW>5IjXgyH2jbx4q7J078SHV1!uLk1AEcw(kbG6rgxC+>>aK%@jMgZRg z%`=u*n_V`_GK84JOHbtm1{<()CtnWcU24bKW-Y1YE7)Wl@DispF1VcAW?80}n7rm3 zwrV0I@2L${d7*{xJspH74jYTCaNKsA7VxQ*-TL3;_X(AVp^wGblgrwCCvXhOc0#4`BnN#TCpvouuw{JFyiZc);^mC`L3w@u}uYy zVr6-->5K7$zPx`>Uvj&(2U>^>b4m>F8>jo@*@1hYc%7`K#-LJSW>_-6u z5n-)oJh%&PjBPc+3gdZ_F$)%!?o*6_nPqTB=7AIi;%lZG5SF&XR2A`1_-PCzr)2~F z#JUXHNK$c(kyh>lNWw+$b%Yy1xhW=!Yv!AbmPxQGev{E4sIFsg-%ijkJKk9dijXc&K z@V~t$B>F(U(;!{C14c~k*b=(#lWqTB-$yz}OmRN$=~n;HFEAM^grT*2Az6maxBc_} z150A(NwN_O3MXAM=tp+U4}C%I?Qin<34oy{EYbiCQkQN|=L@hwP4D>?eDv#g_4+Pr zf9qY`|Hxu@@qZ-qKeG6LXz6$UJL$K`epk;lB7)(u69&Y!T8J7E0ZD*wop)^<9Yl=q ze`w<3<7gfaG<4*U7a1k;DJ3bKh0-zvT390sWiwTU@`(Va(A|5vG#K5qEPF zmNfOORj!Bs62O3p0^fT@A^EM^@W1KYch&s6jPNdif0rSClite^zpD)q0jxyXqhe-1 zh-)z*tz=Jdp4sVd$8Q*R2kw*UpbG{9t$F*>RbTSkgvM=|OrZ)=#D~}| z&-WxgN&z*)gDa;0Es2kfJCPaBg7m_qI+2xL^{Rp{=$88AWR4WYV&T&nWz-iEAPQna zEg=g23h<{u2iAGP=GdVJe8HRx)AyQ#P7=?kN-KD&(+AS$5~c{I$Tx^@Y;y<53@}?E zWEOn4)Um7pFttGx|MJs=>Jy*`Eh41;KywI?!N&+=?Ml=bJ4l_#g@3Ey;bA|DfI!er zWZ(A#aRETmD*O~e)vFVC|VWMGgrQ1d649$TK3Sy8%rpDiMA}X3Ax@J{+iM5oie-)u!w`h zwfcZ^vC4!@M!&2ooZ2odel$YqEr{QS+xLrl(0ks!MArl80Yg>8A$yO@2 z;m{uS)`z#H4-CX}jEyb9p1XXZA=Y%88 zdU=w9@v#$s6d9oFC}zfpm`3{_eFlgk0!WFn58~cn+J8p?;r2dJ@Xr5D`WNh7-@RoM ze}myB%Z2@bK<*)?>dqyQ3&?;wx*~Swt-Oq%-|3)@He@Qi$WL7`Ght0jjWjXIee3cv zGhvO6B)>&~;+*AsB*IiPIpS&l2BRAtd5``~0BV5$kp2bxldbKYFMEo!6Zf{@@@k+C6}v?N?2dOZXD)&yy_Y_~n9t$xHq-w<536D!RmhH5Re_4XUle!MA&9 zGDbFv?Dwi%*v}h>%(yN4DOPkM9v#8+NxGPe3Ic#EuYQKpohah48>HUv}KEz5~f9V(^K!GTELHhacOwqtOGd zV?Y(PLxEEFo)FzD_zDFGYH>^yj$A$yB8$flgIGf>%lL^GAHQ^~f5Va>bDon+MR4>F$W+6Sl|h87=~2kGYS@L9P0O?#^1LL2=)y=0m72T2 ztu*l$`8wl1`qH6qjV8<5u3CnpB~^FO+6{GfAU&hHR(PE@JSg-_T2RUAr#0}A%VvYO z4>ieW`sI~@kR{KL;Ct;Nrv);!TBT#|{OB2x#0)=0WLo2F;_74VL3{F5Y8nGqiA`~n zqupdlsP{@Lar>1qzNp!JwuW!vi3L{3cuy$vfqw!`t~jl5g2OJ1qMgEMOWIiCK4?8d zT)Zzo0o|`b_^RGCHF=;QcMY&zZ!+Gvhbh+%mOaxVV5ICt%!Jn7U|$4%Z8Tki7@zbE z>bi-$n`)9Neq!XKLn*!qnM5p|8Cr-k2E zL~*v?Ud=N-+8!8%&e+*bLBqe0l8JHyB4oEtq~4$MaJDzX%foTD&&y1)iOs-vFgJzZ z;@CA77xtOsqIhG7aS}S)!@w~CP7&d>49G++*AclmOsGvhuGSm|XCeXm>7t!aEY6@P zBMcnD+}pl5VpX1JYXdgCbJQP?7y35;ippq;;v9e@{EpF?~lNNJ31q-=c|0) zn&+OiJy4-6yQo+Fjk8!S-r@959OZ~i;! zU$B3&(Y|NfYVJkZATe)pCA|>dasCOD4`rZl-VN9yr)AWqUcCi2MpK^1Jt!i zDojP${Ibok0zNwa%Blq%@NEJX8D17~zyY6u2{HWdWoA35aw4%pCSK4eEn$>dz9vAL zr{I&sJh`yMJVX?7n*8?~bZHKa*+Ij|B?4;Ku-@DVjjml17jz-Y&l+FcWP6QYce>ZU zp9U%qiI;~862rAu^jtU!l4jwo>`5v5=FpIE7+AAeKs(1_XCpv?uT>G->lR6Dx7B|& z4_|yBjj8HO>T`4i32f&s__Evj^BR=ND>&0hII-P~6obXf8$QK-?Y-DRD)*1LmT#~15MhK_` zD-wNOA2LESku_kj#a9(k2SF z{?>cA;>lAf`su!CZ;HRYJAPvNK@Y*}*}2-Ea=A2M91hHCJeF_cr}_?&4=)5{HgFur zvtj|yMSqU_t}KQXf_j&4qVRwKM_5Yk@cby-p;YDC{}bl<9J zutNDzdlS}JLoU7(OIPs_z~ZU?g53H*^2Jx7tufPBC*?5JlxFj+@7Q;5LD7q7r%BN0 zZ}V1^b7#A!!xQ$XDftodA;9LHG+@fWROF3iQo=N|ulssQM6m?TS2=Dd?wlJ9e<#XE zMp4G(++3-f{bYr`SwOR%#li4=-Ob@^ zgD}Ji496ig`3hmm2!e?4i_g&Pv==3671;35i`$JWFd7x{SUtAQe!RouDze1H+ADW~ z+|!?6JkG8dJf>J1S6#=g^MgKItDZT*UeI$H z7JfptpP@HghfcY9S|Y8R7;A7ErZ29)9j&^#w`BNlZE!^KHG4iD-7yK$g`HUg3cse~ zbDwgh6<~u(jRP?X0UBz9EvQWBdo0sZ@bp7A-70ZCe4@2GeU}HCA#(StCF(e4Bc9$l z)5lc>c5c(qvlFe#%zW6u@lLq}qBVlrz7K`>aA}9BWQ>vlZ1_F4ogs+s%S>fqDQ3MB z#Xgbhn;(4AHXxH;H@bB%%xZXnK%WQ7$zza>D(onJY;nX_C4VS;p{@94F}_-IPVMq~ z)Qb5Cmg+V*m`M{ee~*i&R%J(yG94KyR6KDqf8jcwn`yV!o;n%h#|Z}nkFMX|H$AxB zGzB^e< zd_54552PtNxMj6J9RR?=Q3cw85qJi1W5;B}kCDFra2zwYALd|311f7i{QA_-=Na5= z+ZFmfypXD^6lov^Q3*nu)CA37s;4Bqp49Ry;3SP&{#QhUJemY$TZB_>zhaZTLCB_? zEM=q6qJ&$x<-){_^B0517_R*9p_q3aRzlbyamr`tR62{Jo0 zr!{c1;Tcq$S6;y}+m`Iq+F0*@ZtYfe*U;uQeus z*-|(@>+XJ|byUFN*6mRBbqEyNEK1b?3vexa{$6WJKwBM$AxPsv>#W$M2eci@8~x}T z>oVx#J?f-Ve&0K%{^`a>OWByW@OVz$EhDnQWglZsz3ImxCslZ>{~`5+^iHC)fVfW7 z`nb{kL-Z0TiKJhFX9XO>xOtn^Y+}Bg7{^k=hj$_%>_xyULEJNz7>6zch+=oZp!D@{+-$2t5FD#m%K z@m@=%y29oa)uPH9vfIKsfglTqzB|TzAjWhaq>EsxB^#exn-)K7ZK zK;7*MdE)ZX&l%EL1peK0KXeJlw${D@V>1fho4=z!jU&IwFu*3@qfa=j(|j`CUvrdy z7^xo1HLSyFUix`c{bp)r?E4Xo$H6|d9bmBefon~?IynmP3CBl;wA06$(cx&Rx0~9A z0{VbYST{wiI$36wuAF#L(qo%Wig-bC?x_rFt2()yLuU;Ia4(|eYk0pe4a?rHw+JqDP8-+aYyR%9t;xlwG{ zWRo%cr{8Ab1hsEz>MLac)3Nz3%n~2Vo6|V`0P=^)7~xQ%Nt8MVvjewo8V3@(%xE6t z@{jjKHNs=XsWp9*<*ApIPM>$V6TX{775+9Szk8M8M$-e+WJlAT;$=qDV-%V8z=z&C z+DvRf@w*@Sk5T!VufatRwEW=hu*1;iIBw?Q`&U1VQSozUd*}&l(>j$_ij*?eXyV{$is zHZgo~7~3uh#0%`Z9Haw|vrlg}1KSK>-NgsafklftSn)%T#@Y>I&@yrNWhi(1xP2kq zih<9{CLjZiZ$^Wm&rVU$7zTjSo%A&IRX5;(6>mI!i`;Q9nSH?=PHYE;ptCrgGFyqt zv`KvUvV*YI;fbdbwrdR-7&Tgfg3pS08l*v0+Lnrr(yEBsQEL$)#+lmj$|kd?B!h6kEp&9#@-P90?lhWNYi5Ph0 zH&$s(6*+O&={xc5;lAS{FhYPAgM%T+b>o-7a$v>Jfaw8J=eh}C_728oWq?=yW}3AZ zPd5yMGp?WJ42*bp%eCmHdlcK`8bd_!iPC1kzMV?KGK-0UR&W+Ed(5pilvP zD?6_7=unj_msZ8NiQ<}_Z$y-eU?#m))LQq9RQ$e@gB6)Qf6)fkyW<%qtkQ1z@FViX z=Q?nkx*3kG#u*z)Zcs@ksviS+5qm{Hj?S2u3@F7;iL7xgyGE<3YpUv-v~`I05up zMFk#LxF)n!&jV8Thtxtf7xDg*edt*!M82hKXVTU_@l=46n(r4b7_#9`0hh;JjDg)c8x$;(r1txq??`;Im0rMR6qZOSwb)&66>ec5P4uXf?bE%Rf~Azvafz( z(RW#m86-`iB7|Q;5J;^8yuYgoRy4Yh#dxih)SJ~E+(5(^Xi1GeIS57&BWJ{QL2#Xq zsgULQ{Q!BB8oDyeq{mYT5v<@_|FPT17umdoNjpzBHJxlm0;*Hc#ibzNc2>B?1W zym^&;qD$>co6Ih7*GBhrb9zZP-1(tVo4(!BH!e$KOxXlQOndJhEg;PMw*3zxOG+F!4?7_n7WcUpuK>y+4Ys7}z?h9!cj>3hh| zMrRtwEH;7Dx>E~Aef6Y`7j-=Og$&WDzSuJ)ByT@B{_2Jb<+$n;oe54H=ip--MFb1k zt90(QC*=EfB=3jiR^W19SPgwKIe?lD^f+S<=NMCdt?g!VA{l@iyW6fabXV(2JjfE}> zE8JOPG@+nm%XF3=Pw7QqG23F(Uhhk?)R*w+qsPPNTEQ5;FzHj-qp-}DlY#Z==GwuN z;@rb_tliso&%23r^OQugrE&6chR6@B+h70R>tpsw9KK+o^@+#82}f`N6RSQNAFq^8#B$&KNghma!(h41%*wf!Kq{MesNC9 zX8h2s_ENns-!rL-Dho8nv#lvR!Aa|9eN@W@z?d;7-sjt$yWE7m*WdWedx5T6a4kYn zAOy!}Odw%FQH<=mqk0_k6Swu()@{in?or=-$qn`OwiC2`sRe-q%~N9_`4oLTwQ#x; z9YWemeNx6Gom4x27_G1tKmI5&hdY&Vf$}FY1r2EV&+0!3@=2_@0)|LoLdeB(KEN~W zrJ;Z%#FInd%OiuR0e%wvA-FW)_X$w4=LwW3_50&uMU-Qe?#sxb<zwnu?Hx+&@Mg~0SDkYVH+Gm#fMx*!WnGTK=117sEup(PbF*O?(Fk+V z86{vPJ7_>p^4e3i?2Cb)BG zg?98*i%hXBN6ITEZyPcTC;d-9;{qweX4bZtlxw}@I2#-KJhvmEM5%2Yg;^}eb2d(C zsFQ^N(I3)nL3um}o*5rX7eA?od_K;hoT9x|c??@63(HMRnlqqkEo>tR^ILn!Bp+}K zmK!PG1i{RRAO*$66Ujw5MKQ#J3>1b|WrN|@xmrlpS1W~t8~*y>I&taqY6GVV?t1=|La`Sz7RvuDdJgJ+%2O_`mBZRN25&gH4#1-e!Ai__~eME z{*e!G_?w~raixxsv*zztv*9O4lYhPD!uHEiCR0%+vkphnKj{!PB%1aGHg08Hm*$=) zxU*O}Iq$kkfTVUhd7hIye!Zl7ib#a#^W?cS;ekFaHC=swy<}Wdr(BP;*JQfYWCps- zGTF>By^gu>j=sH6bt*F_?dWiVd&T;B>UDNPeH@;yR&D5bNpE&GWe8r#(Qd!vvgN{s za9ExN7u<9~bxoS`dIpd>!{UqyqQLHawgx7|970($Ar8lW1c|d7Kq@6ZQIV6`wEeUs zA8k?MVpsDmNxDwJ%rmSrxFg0E2I=j82rzQ88;*^qXtzSxkv5c=lgsA34PL+RKFiG?{#YT!WgIG z^X7K&e)27Sx`WKF>`DEsgCUq5e#wQv)b7F0&gadq;{6oh>P@CdzZ_wevzN4owAUZK zmxz~DAUJh76b;xt;PK&8@$rtb*Ja&huxIh?^^aHIUj^-1UI3}zpPQ2kLL{PmV?UKk zyRzKrFFcS%;QINq+3TOivJwPbYBGiKE8uTlk*mhI|Ngv&uEz?{ z{9MCW`^mxQ9aTJLiZcngU`!$&UsJXB`1;ga06|;!bXTj=LfE1!uedVpkc~ezpV1;e zi<)e(_2ini)rOC2U+Id4wbw7JJ_wVYG&~e7dnl>*CX6lN!6-iv>Atx(|M6)844gv$ zF>wC3>+{{`c^~(W2ejth4*Ko`C=mLOc_8`CBkIH2pnbF1}E0 zxT6c=H*e9_{7A9Axd}s>dV~pTZfdXDTNiGWT7+ph|1D}_u0el`!Y4-zm}|7&U`djH zM}H=MTLIwzV+GLtkAL8gM*tvKME}Q=0>ST(7ra}d-XAYe`SaWX-G3f0`19NVz*6PwOds#Eoj3b z#{;KDXgn^6A@cz0y98$6H$hc7X z(=lQWfKiGqVMyBh!LsQ($;Y111KtEbhhxwwH4s4%w8-Z6D1&{oH>JRmUc{O0b=ELc zj`&bTTHcYa(lhwT01D&S$iPyboTdJl)*<+Gt$=G zz2Z;Pz2eKt={>2N#AC>0b_MLAOugdi6f&F9o5ZWgWap}Oh&EyIcO~qhY`x+wfN|-6 z4?F>wUw;Du%)b#8zXwF$fv$@0h!@H~%>N#EHL^qWQ5rj|_@2I@tMgB?-&g$`+SbB6 z>gxUf5cU>OaW&nxDDLj=1b26L3lQAh-Q9z`LjwsCg1fr}cL?t8?t1%6&iB7_?!E85 zF{*pis=3x&vwHN{y?52#tJe%UujkSd1Odd!)Fs^8Y`1})Upk~y%n1Za^~YvF>yneq z0o3E%-gCjyY~z}Fg9H?^C~^9)1#n9nS?f!jFRE4{NHjI9O~NZz-T2WWt0Ws;tH>gH zR##>vA^eHFrWf~A&*Rws-Um&WGxXg?IE){bo{Z7Qe6IyJQ7r*lB{G2jM zWhCKb-*=yN^E~y*A{oZBE`3`meiCjy1=2hGyw)WJ9*;v0L^ZhM+*1SI_aAw(!s93n zUIP*Psv6k?gmTkG+ZMxv&Mn9sipI@L^_;$#N0T?a@ApVoeGsD|pB8O|=+-|GJgjBp z>Nic7^H%LhKaY`JGX>nV0So^89*f@}e~ryBEyES6XwR84TlqO&<%{ocVFw$lGGIO~ z{=95&dAr~`Hyh3iZK@VCq`d1cte#j1nrH`(LNN>qAL%N}nVH=tG$zd6vKeNfvv=~}GCeQ>wClP%iVBshvjct2M!4vnsF7Kx=jaIi*< zTs*bSl)!Q57Sz=xHd!q$r=8~tFymW7V~A8qB%@cJ@~f98^3!L&x@J8|8JZnUOV{81uu)Y4Kzyzo|6SB0>;yIbLxkv@kztrcjKk8k2p!6U*n{7Cr`9b^e##2?o} zN2Ex4yBAJqQ!YbC1m!ozkIx&&-=(S?UjrxpM5;N$_PyM9Z$9j1Mkog#w-0K|2~3Kc zwCr_PQ3gY4zGYp7QL(we0h7rgvL41%htMT*&=**&#w97Et)>C^hPzT!hn@#PXxZ*w9OeU z4G}M_7^=*q`Dja0Zx|R!Q2H2*lpbKgtn*(xzaF%;IMIncUG~(d*&(>v>F!kw@Z znfEm1Qfa$sxNvH_e(Sltz|D~|kiqsXFCNjujBi3&@yzmdTh~er!OfMH%hZB#Xf4!$ zf#&n0(U%K?9D!_@Rc6%Jz3A**P-v= z#U{LtX&P{nyvJMD7!0N=YdkOOFu2iP?byboYMtgf9^PEL{;Zpb`E@1Rf8YHQEg`2- zXd#0uj5-&2Ap$z|AZ`DfXAPYx7E~yuUcD@7zD5)!Yk{joRlVIb*;(GP+SOvJ=K%C> zLeiCQ1-#gW`r8^f**x4%1jNZtk{%pPk`ssmZr&fR6-(Vq2c(7?J8HF_T1#%J^jr0; z>z{UO`(!tr&QNL$H3y-^*|Q!ZaHR*eCw=;%P$R+8PVv6QxPerh_(E!JF&C3E#X^P$ zkENap;1oNm<%L~rHS&ehPUkvI4IBSz>~d*MmkMD?nxjpGZVI zso_nrebxM)m!qA=G=T1n!>SqA+S<9xzUc{GRffu5hdrh^NK?e;C{uk^Rx++=akE9Kv32GMFF@bJ8IWu zwbAIe&ubNfnxf;qucKLXm6mt_hHIi@xn5bFd+Ck5tQ=L5ipQwq4W+u)=vva0s#V&+ zD#xKN(V%W#(!THDpw?E);SrB>&nG#i&Y@n2_3OS5U)gp#)_J|WO@@n@s{V=c%tp`h zAxF&WfLADl`mN=?8z~HdCUhQTQ~0ZPr=o>~-BHB{ciu1z@5E~>ZO;!38-HO_Z0w4Y zJ#HqYh^3boKX{g|7%5c?3ZySOJ!?CN z57v5pe&;1yoqQ0c2WEk$)wu`}(175aoUY#$A-5^!aZ&u6ZD! zJnOUzc6wo{g)b%wS7`;VRo5JA*BY}eKNh}J>TuOp)6xp1W?kl==hTTbOk3Hbl?Cb19iMu=MpFxY;H!rc4 zL2{wnX4;`le>NOG0!gVM|K_%*I}k^`I{vWaA-t;|p#+UnVwo*CItB(^hulg}ymaW- z`2bE>1VEy-WnMC|={b^n)HqKq!F#cvN3se>)PtYrUpIjkzjyiPed1TIvT!$pp^*iM z*(nhvQKLLZ(-ux2QlgI50FQ%Q1fS-P>D^45xnJ3Uou6O!31Qoq=-zDJm?~mARq^~wBO>`~^|@+_XgwDzowq2y`L)}p z^54&6)*NY)9Tzm#MTDX}Uw@+zB&R}SiT_$Axha`%m?&1XL{skpYhJyj`vS|MSwLH&bV_sqV5W5gK6bnOr6AQDsJF%&Tyx_O$J9?VDcA6}p-?SGpvo{NFH}>*6SGD572*7hauulK=(kKF~yyhJ+ zt|CO@jAok48J>*r(9+`bX6x;NSnhhJJiccWuM*+h*y0m!yD!+*V!wRxX9)^(jwz+?SR_|l!a%jx-yn5N zZ5D4UNbvAAWRR#>;*lk*>!K#B>mkV8zJqGrFV3c!LF1(C$@u4nhs-!Y5z0<0(em~E zUM=5kkBlV$CMs+RRBw!Ad4RqkV1>Fec^XF|Vqda4?1dd}=xY9K&2sD3zTQzMcN~zW z&8<;|Wq%!W-4*pQi7J^#q0FN|JN$#&)ofW)CkT73s!q;@-W(QT)OP=yR)si%^;P zQ9<|qBl9s^^5KD3(tiLCxP8dD;ZJ0T%@){cXG5T9y~uF;TGA#V_?CE6vBEVoLU_b_ zIpWtzl;FcC%d6oh@B+gn+p6KW+AgLD5+n}>pM)@ya38!vI33}EhYD79DO0Gt(X(T904BBWu16`B~A zZK{m@CiOXd7rKXe!mbFR1qB$TBd}Il|J*?k39{)30n){(U0Rk9t6Kn{0L59y?H{_P@bqFM`S8zHrl@lF^`O!B3 znuxMAkl$l*Kn2O|Py|tJHEU14$IJM_@FKN@&DOv{ynv}qj2AFOZq{FQG5rpY15W$%S$Zdz-F^D5w zIE4AsbF3Cr7(evMF(rbp@F6VmXg&F&Z5CH;E1NErJows-bwg>DrFtHb)?CiW(WiMI zff_M&YzlK(CrfDWpxA!k-#)~#Ef#6oQ@K$l9DezIf!l-UhaU-gV4&z57Cm+)-a?=& zmLhqa+KVzM8ld9|(!n~dZMgVk@DR`@n3*T6+CuHWZh8Z;Yo*G|Yj;u>&@lgo?I zf-WnRkHe|`bqSN(p3f2@Bm71D@+-O2`)J`Swz@5bN$Wdep=Allyt zL+^Q7`|?3|gQ{?-97Imt(36oO4cDeGklso~f2QtQhIx|*M9mZ1@q$*j z*#qx3AOuj>?rd~J?_Hi4aT+L4;t;0iqj5XP1HH8#Ub-42yV4xl9}&C?VLT^t&lP)y z0^!=!tCU9lD7fKNH-quItyZ#G9in@r5nbASbYFTo%9KPcSB0myy>>-VX@W?l;C_ z1`9wb4^I&^T%sbnocD2L-*Gkh1dN`oZ#cI-G}$uTX^*{Y$E;%1bz%MATAED&gZZDf z@cxe{uvNY_=)Tyn{At633X&45b?c@il@bft&SzwMgqh`6jd>JF6t*lzcb$}=6t*=? z>EmUnRA_I(=;@bGsMMRpB$_mVMOVzC*e>CXENzDyf>ExE@jCUxjH4VIFOuU6oi&3^ zh8#0&MDh2H>Sch-OWz7F#3ZuU#8tVycu{Gv?8Ig7Nmj>uF9*#dRMHSk)98efLI2Cf zUulQb=Xb&d>XnumhWSRW=@Rds20&q4n>QZBWS7Lp4ztMKZaxW`A4mzASr5bwS$F*U zku{5Znc~g$^1w&M9rp$Hlgh6y^b$1rLRscS+8*&zPxO*)g~BMVMA~)nQi#8ZCzZ;t zY-vmfGPU-|FIS&bC^Mu}4awAkBmW8iKMY5Sf8(0}H=ka9{}pC%Qwv zVtXVn?5AUjjGxJd`HI2+7eiN>sz*Er0vK2M-+h3??>T=M{woMLuocA%t1&0T{GSN< zIT=r?KjfE+bCFzs#!sIOW*Ej@wRzSf7doIw@a>Lx$oeSAz_Ex`2P#G^qzpn2@|j+t z^O<@v{ZQ8VaLg@NLNfMtZ=dIoo}7; zuf@m|B13(RCP&?OX2IC-BS909OQ4LDiNH%np+wtC|JVaAV=(&iqli@ca$txcW%^Kq zF@-3Gz=;zod=6R(LCxw(uF$*c-&`kYZ;9~HNedab>RfHi*2#HkZ&}9$Ya-a`wu3Ik zi|9V%MFj57@F0qFONlGGIwAzY*d(g))|RwXq=4F4|w`2Q)EEEBAw67Sr9u8!bo(6-7xB=B73y z`=Z8KWEO9X)Z956jBMO!tqhY%nZlZ=99-ZDHOW$!f&HB>2zjO!>T^Vy1}Up#3TugT zYNRMT*wR7iNNH&pkzzY$rITDMgw5fq8aXZ+phj$>K~j{#^&CYrs6`bfO3<()Wr@6% z*JI|I6KsojU$K(t4Qsy#(7ifLZFYXEwU5M|!8au_HPQjbt~H(vOVzW=VfmX-zP3tQ zff1S61IT!#`%J#YK(F&GiS18hgaw_$6-MB2wI1Xlp4OOZm>Jk(ieguY-|7V>4}_m94F+HmGp;Ar209!Mt3Z9L*L;LC5N@=8FR?R^G>#2%R?u?zu`H8C?t2hE6-$N(?H z;CAN@_B$Ebw9gf6%dWgO!nXENV>L_@W*Q3NN|X?wjZKKyVYQ8o#2+4}nO>HA7FZIu z_J+prmthIgrE9)Wy@%)ohpygjLISl0Ndih(0v$LvUhWjr3nKRmOn<9;HeW8a z9i5^=?FETArBS%L6lbif&BgkH4gbSCY$8t>I@!oFoD^g*=;qj;Yh?i0H-y2+<*TuS zm9$1bI;uwIR0yK=B06^-2n0nmr2`CwO%I-=gl)s}iMx|Bp!J{?GkVvw&PgD{=-z5BZRMxe zRkR+ODX3z10KU!11mv}SrVynRm83n166}*<;yx}6k0lACL^{&#X!9&B2+by%uf$qv zR%&Z-?c4FW2=@u-OKQ-KwjDw$l;9Nqkx~GrY!91;wS+RFZ3?b3*xvj=A7c~_@cFv@ zrt^eQ-sG6M)8Efnf|a=!QO*_=4%HtwjoE*Ht2{8RU#$ zfgRezQH}^hYB{JV?~vnunk{<&yJXO(=ww@XdG&BmAeeWDqnv~|Z3`)A9GZU2XpkXs zEWEzLWqw?H$tV&8-oowkejV@fJ|FBYk_VPYB7DqM<2Y5-J=@uCN)0HlExZ;w<)csd zkQXs1_M)9x1Ed*Z4+_k@x1or;57#Sun<pf05B{DVr|LIb_Z7=|GcijPiL9d=6!_5Rye+rRhtSH| z`);veAN1<^yK~!%$Ljfd^IC^fo6nB>L;A{E*-8%KR_@IG21U(=+>9XAl|#i`8WT)9 zEeH}e+og^&g!8$NDn^h`K6hr9(#F0TnAY(!(oVkx@G#P6ccFjMNc?H@dDH$Qa78ex zPOzj-@Vjld>--=x--%ObaGidq&JL%AK%1!K#a4HM&2~lpgNmzHIGr~>zy2X7KZ{6X z>3X}T99F37M|4AumYUe|haC+t-tZ|7{C`T80 z<6g;_=R$;8Yh#Yc>TrCWNJsMpsjCoC@f%_9NntbDHzvoYp(|ZI!NBTKDaW}zF`GHg z@EDgE663YN(c&TA8XgYu6DPva^CShL?GmeFS00ju)-dZGMLoe<(Xvq~1X;Hy7;!zp z;37ui@8yhn?&Y+OaCU4)7IH|8+t;Xyr@-uIe&D+aV%>9lZFcz!WeQ-2Hhc|Iq4J!y zrP?;A*OpdN9P6?&25%}Ps5DMDkqDyFY*CWqq3%*h4XG3k)iu(xGrLa46@UIw1aN2z zrYXue>(SeGHDwEgGa+?yqAjbY0JVpRbFsHZ-cEZY*zxK9tibi#Xtr5U&=)*=xWTra z^B>I>GGRZnw;R>6Yb>&ByeL<$19jUJlP`{JQ(hWQs7*aoSAFzv4ggUr+kvYUFFunt z@9Q_5FaV5)T&fhc^xszbicvn3V(NveRKGe7hPfr=nk=|!&IOc?qLR1QZ#EkjNgi?+ z3e{s(sU+B%kjFQgU>xmj>$6+@EJ^j#VtFaz07Kc{%@qN=Lgy%2Hj6SrH*f$9R)05@ zelc_p`i@ZS*5ks2#@{laK92Yjy!35cRKle{Y*0S+3l7H9lBC)ukeE0ua0!YmA(6^Q;dqJ|Pbd z*YqAZy3lR3u@K-)a4W9vaXY2&^y|f;TM$qIZGaPidxzWU;&1PSduh-s@AEGw=gVq< zhnhpS57`=Kp_|#jutk{x1DCv`?+{YVRoV)f+K~E=w*B||freE?%h(g0jS&Vy1;wE5 zM5p7}SqnbBRTstdN6_NvHUQ%}VR1B@BDMv9ae`ZKbG1;JWL5XQ65~d}kK8!^)?m z2)I1SdmoNQKX?cbdVkI~_&ACe`q=Y0D(D30?&`~`SI4XbodLg;STRP!8t2gf0W-=G z=gBEo$Wg#){myU;s;8QL5++%bN`0?|VnCFhB6G_~7FqFt?p`RZ4M5aXLY1D!gwBjd z;rrRAGW7r2S^XuWV{go=p}0(g`8_tV)~-Qh(SEHOZNt=(*o(8#DFRt+kQQYx+>mB6 zwDwx9+;9vQZ>eqx7@@NEd%#cSy3jBmURH# z23milGQI(1t!i(iu3}5zDcg#KWPj4I9)K`Q;rFzYx9K z15aPicbw@{ZbOy>%2rIY;y7~W3vUxxA3w|G!VK_x|M2u_vej|c(JH4q4|Fj5l=q}n z>SAkic+67o>g(583ZC`$;kGX?4goX9Vqc+>+IgR~IE)PwOo9U80LPIcX^tBVaMf}r zHkf!krkQ+BaV1>LrZ#}42)U+&+l?-wHu|ZB_H~}p2--9R%{`_%3x&It#s$*3A2!ns>nr8nvb$q|P|s%lg=D?Dlcd!ZM#7194|7wun%jQ{waVnQ`V z(LGQVNk{M&_Tm|8Luwiw>J>2rq9z2p)XCBmfma|n#@i+Lo#su9r}Jb=vh-4)i^F=A zTTDS4q>c6X-Mr2(;@=i0$pd=Oj5}tmVqfr*+1uZ+^$Qw)Z~H~&&->I9$y|}2QJ%+h zOSL(3oW~0+M|Cv01)MUR$LAZaY2sGm&6TQ!q;V8?47?>e=@iLPI|Z25V;`Z(t`hr1 zzL+4pD=O8lCFk_9IRAD%CcXAxZ2W=7#vP?M?fgnuO_-9qf2tvJb zh0s-zq>@RS(?GsvbAE0p%_qQMzZ*s<(b_H+_*2NUL_a&))+u z&GsS#BSK;iSjdJPC!8W$yYqr>qUgd>Cx$*L3B*M1)H}i9LPuS?P8+L@#{?eNn-1ey zU&_X~dgHB>s`bN$^Dgc?`};;ZGcq|FGJv!6|NJh7aHi~kn<_PXcdI7Y7bo!SAU*x) zi8mFE%#V1f7V%q9${K1IZ`#j(FCLrQDsvKM0JLsEW|TuBr{uqzC@kSW1a_!%q` zy09IWh}k=FF+i!uyP9<~SZ6IPD=tI!_$`HcyX5E>7lp1)O#1K3uMj#_nn&Jmpz7p< zc309J)rS5^j&YPjI`gF-)cH-xezW}ZhjN=RdNh`Bl~gKo#A8u?m|C_hof@Qq;!JGo zWtSMTPuKckI@p+kX^;Al8XB?ln84A3IIJD~D%kO0)cV@f{QFYKPBQJJ1D5a-0%f^I z%cq!uyO)@TY2H9UJsV(I9F;R=8QFQtvvP(Hd+W95-Ane;QD{-wfT{hLH9p4O1x*2J z`TOorI`mrleO)Is9n7Q5hXSk*OOkf;yiW{0NZklwJeI&idz`@HnU{$`Y8OEmU(7aY z|Mqk(g+9}>#-Mbo$6Rw4jc9k4&FY5ql>=wtn_Hn4u~h)!|93O`*Wo`MtAK_&I0M?P zmi~?}tXq2MX)I@CbwAh!Gc4-!J@cK8dQJ)9Kh$RG*p@5AP%+xIf&@|=oTj3Co4AFy ztSx9J#$zn>fJ;&4AFI@g7Y8jh;XLZ0x2X1o2Z^up(w}TwcPcCE!wAANmE$AG*f}v64|G6!h0Knj-tLaiOteou_!-F8@6>{9xzM zX!i9XL%pAP9()p|%Q?v{o z6$I1RM=51QhiA|jKvWdN&vZ46zh8h2DVEEV@>MV)t-!)f<*0vk>CwJR3p+@<09H6t zrJ9X+0Lbx1Nx)N2hvKWPrTKy3C|lF#_7JGB8A5;l`dlYjbwfYhHq_|_SFV@V``()+ zcl#WfzaS!69ihc$aUSBni<>@EqM7(eH1UNgb(VX^DznJfCw8VjU+w_f^(f|0MZ+Un zpP592XL(>A+qEQF<%Mv%Nb!@Fg?M^v!)T|OYl-czrTp>JsUo&~xwW6qSc-K9NNuo6 ztTdw<0A$Bj=$!mR6u;pv7Vn$$ZI7w!yO+ap8$s;bPyRl)KR%#RBG%i}tc4xYTqGRy zyY5sZyj)e8IKd0)nbb7LZ>n*bU3UejIH4a@9nF<(H^ihSAPIQ_HbSumo#K212djjo z8j1a%C-aCxca;LXQIZT6h|~6r1KuAe177u{hj+re-WL5in9(A!KLsVS4-zt8w^Vb$ zNc54KqD6fz=)X*;C6W~wkuyWlbjMJAgsK&L4v{$|+B8qT>_lIIA`L7=`81>widJjh zi#UBxLV^0WlQEAfkig^&Kg?j*S(l4c5C8*V&WI;f(-%V*CPs*^Ya4$Pe#DS)Zv?ju z8MUdSgbTH-Nf+Y8FA16j8J+~<1~U^K431{xH2|5uxy@6E00!@vfPO-L z4eoJ%-AE5W$Kkdp3?ECi{WP0~lSMp6+#ZX;xH za1G5N26eEZfEmP0tu`g8|J?w56L&-r|-LO;_ zkS9#kP43HR6ohorc@bCE_FNZSnHp}wFNV{jzv7xFPwh=b9jn<2xP zrKd-v*$`|o1C*CEj(WW<;pM1b7&Te~+^2 zc9dhwTw2CPp^wIuupGPP<68JnFyBZcHhos-+l+A+mZF8f%fkSR(Hf!r9-S3$7u|K3 z2ab~`<3EXf?en81_k{7%ziY@{#xI$D6P8X{SWr4D=|BL09pljOYyeh?h}={b?e292 zNphDcT%VZKikLok#zV@YMKJI!)VYv^z{U(GMxsJ>ldlrGQ?g%Anh7gRl^XqAf$~?# zeD&uH|Ci4^ZNqIkMh^aiL zX122U{y?MdM=Jr!;kPp>64Ln}&}fwhXZY`fH<{qDl|tgenFX@WPxZ3-jQEfwf zR|eJl|D1Udq3FWjBemd65E{rH7ym}=&NNu_Yf#tsjkds*GuXSK9J&5YTgRmQs!{EG zmuhPS=IID5(o^zvmWw7gyN@E|=wQAh+>lIT6k%PwH&SyyrfqZcD7?Dpj=zu zGhfSxi%xrr$^32+fw_W;Xkyy9++hq6Bwf*bh{6b(|BroKvygW$p zqJ_7ka_qIsrw)I~mNsjBH|{gho=&z82A zOoQ15o3cFdCkNy?4rEg|mjLbjiXaRA5R*Ts&k3_Pm%faLqMe%6Xqwm3@<2&x38-v_ zfIFVeS;z}WcExsXLncF~3B}{Ii5PPzeUD>VjQbVCOcYqiZVpxgK>{WrOp!tsP@z8o zVuBDXE%rQsr~=1{@58P(z^bB{w`wXpW9B3Ef_xuqH7G7-jrO`KnvDhdwc= zg)xT3{9#d6{h0En=MqRt6W;LW{IZZ*!p=^sdY>IuG-)3H-A0}IDUD--292#t$YK{ zZT-n{PJZ)eX16k1V8IV?sRj%4)aA+xn+m9qELr6T-|rOegcYH49=XN|Ww@#vPu_Xr z9@vzHopfwJI@>fZvYyZLf#`Og_aQZMc;~7>T025rTlSlVaN9HZ z$upayUI1{_#9*W3f;U0$WisG#miWW@Lv7yHbMK#XgaD2K`1Cs{7JV#8cNiwiNyU0B z#tX#!x~wINHKX=T7pFZ(K@}cP8iHT8o_$`V>pT%R`JI##Cy|Lr`R%7%Ec)~!G1xYg z1Mp|=#_dyFaWrvh@YQvjL4*mcj90G&zKrJ((jdk@Ea@}efX6+e*OR|FNHgb&TE^OX3;~K-ML$kps%d za!l10ftI6(Y5rBWT6N_?@sDNF?al zQ~ivY38!w(EFfh2;C2@vI-)odPby)Q2qOnqaX@Xp^bMg1zAjFx1>PIgPZhWcije#acMY1ySk1b^Fij23$yijQ3D$OZ`_s!J zRc&U)>*%iG>CUmDD(oB98Qlr?^i@@qX=vF7x?iTc8V?%oyv_z&?G&yjbxENKVYjdn z(QbX*50Y<6?Q|BCM#ht7>7Kxa0gw70b8%C9j6p^TsZ8Ow6f+jZ;;1h?Y111izz?Hy z5ASNQBM9ecOCkObmpS0Xy^VV+WMJ@#X`s)is1VD z3~|SX4__Ke)KEy$FI4kkNifbIhG-(^#Nz&0sRJ0n^*i)oBmrz;z?E5y(qzpQGogS7 z1U|X`F{Jb%mI)s#qxH=8DOJO^%3*lD3lfuKA?p5z>My;0yc4ngdbg8QDDpEpLedTj zCSd_1C*gP%bSmurh5XZ{<@My5;wY=d=VI-et;j=KRWEpUc=?pGV`zP}1XlGjGFK)c z(1X7T9}-^Zmhr^Y2=WsIIh>LxP$QSPG?5~sLj7KUH0jT|uBxfY`A@xxR7XXB{%G082@AKAE5T2c&6!X+(cj?Pm(f%z zM*v<&XDr4Rg$kTmrFmx!LzR4~9d;x-<;N^BFGp)o#7__?OdV35>z>BqewNG=ZKKvJ zSYj6ZzS%14&~M3qbDPNCZKzk)DFOf(c9q}q9iQ-FOQc(U zUUBBz#KLBSD4ai7JRTJz8W={xa|)C)^o6f7^7PvM;1JkkE-t*()QG^1bCY zURB1Y>BxWCm&ZaxzbiSfm3@9w;BSaQ^COZ+98vF(NePAEzxI?Ak!M(2ed=(i>ytzwKL9cV})G(c{bc+u(X%g@S<9waF}4eyLgkCBu;cpSBM&&g#Om(?-vvA9^RDDYq9h^t?3<-R z?65z5So#?UWY#*9nb!q$+s1`15fC$H3m9<@LXVj%WsK+kF?@P$;{ulmK61sUE)gP+=5dr&$3gTZXlOEeR#o0~%oeszd#cx<9}_B7n2|C*(h~`*#w5 zwf>Dq`&aAVY5&*k{-afsIXjx+(YaZgl+_AZxEQSAh=yAW-DxQ}Pn|WuTgl@M``h&cQ(elWAjz2hCT2L*jPTqxj+n*bAmqlxIk#PSR`Z-$${(<~kTEvcP zN@1AKOz*7@-A>E*NSrOJS<`1UH;|V|6vC3y8iY^kaon(T-2^%sZW95&5R< zAhhn0bn{Fi(Abid>Q0SIadm*v@GcoWV9aOEI3Um7iOr;tz2UvgEEl9!Scv-09{#!T z8w}}l3aa3(*ZpHY%1NYq7!*hU&w_6sv}Qx98g<`Q^;W)dLzJaDQ)`rInFybVj^>BQ z85cPITzTMDWAdu|P|@OmurWX>e|wOqZXEs8qBZ9a8SKUnGhg+=402-7^?tZv-}#Og zT&o{|GU5$0q8;$K62GG%rsXu=g+4N35&~W)2%RD+y@cc@^EhSyNy7!DV$j#4h=?m< zgdhKhe_yI`HD#|IObY}_5xO{xhC5Yg6ozPxW)#ZjdHD?LW&6;t0v$V^^V98vQgr}k zbr9_@qfX!S=Ug&m-7)w$n^hc3>jIRnd1C_yiQ{l#UYFbX}m-tfKlpDSO_|U6A`10)RA)IRgxUl?zN20JZy8nLpOs~u%p}@?NRXy zz)`Lc{V-GqEU+q(3&$~3$2jHB;(%MGgaMOz;Sa4-D=dYF%+X@dPBPeF*s}u=W;8!Y zStSk7`VrXK@1KO%2pPpiHye!kEGB|x&km_^yGIkoJDfl2=V#g;l0XablMy!E>M zF8HwzlAkq(@TOzP7J**cq=1FuP(UJx!9*azJq@d@dTFvfe5$W_lK7wiH~ND7h42N{ zjZQ`0bB#Bi+QoBLvSAX>%zmEQrA{(4n_&b%oxqcpKgRMUKN^%{gdpgtmDW)_6MR>S zH9S#t{}!KhkTr#8-sWZ^t&AJhEUut%Y#h}L2}2{QEuDJNqQdT6A0l6@6;d4lof<}#0QEH{&jQrFk zg&!;rYS(_$ug!BQ^_(&%a)J5C?#8~w*d_PA*Q8XEmd|VKj=I2-Xbbqot0O0y@X0EX z$EqVU!l8U=tWuAcMcHnZDhp?D!MqjF7Qm*|{NpBNrE=^K{tqH`Cn}o%yPyo2LpP43 z+s%MsGM(BV32A-|9%RyME{HeY&24={7|d6}=`4A>3#?Gz;L17Z<5*J>p2;Iq_|oH2 z8XFQ#N%)E`#RB2C0Jh)d?WQip6=hUePGjDTc;CG$tregYRyf>z2lyX{^c{ur%pB~1 zBi(S!9XBRP4L&XS)ptNSVSNrKRONa-UV|`QkKlO)1QCl`Jsl*2#F|ktsVJsbr;4`O zX9zSdyCKtFexsn#GfiLIQyq_~SCTvd0C_*8$J>v)J@(a=W3esl9GO|2RfR5b8=C3b zs*;6AwGE4ep4|JATuE7t*6!7M+l>50ZaCQ8A`OuiA6^eO$Qt#IQ$y%kMLM_s)aS3h z;e>g>UuN7vzWme;FH$wbbAj_wm&upw(=CLdFCC*A3;@u!Qy!6DA$Lrd&6}%~0MHj* zscYwN*1vr}>6DC~lRakej`!Gl<@RL>wk)9g5>Cd2viQK22c-4N$b*<#x`8Ha#iN4Y zVt^({rO3{gLv&mcfK3p2;Kuc+RtMn1WLgL!k0bG+)2xLgh@b;aZfMaswEQZ57%w@4 zSXW8>m64BhYCRI0bK+2|9SVAsYwz676^E@`u1h%M8xqs1jdO?ETs$A$yHUBd6Ucw=}-kf2(UJ3}2{Y!-$()NgHTpJILfa@hXDsKXSZE9Z|>4D`i}AXc&TVpyfQ=;_!LdC zMCpmIoq@dIjbn8Q0oi_6+}w_h>4Y;7TVG?Crgp0*59yF`*Jm`QXZP1pJq(Jj<~`3* zZ?#};hqZ>}(YgdJY({zIAACMFF(nv-H zMACeK285P9@qaVUfo|xgEmT9!N`DA|Uciv1zwv0MEdhb_O~8=9UX(-5a(}oO{^j}~ z;Y9!8h5YZi{|@T}(m(9oSaZJkNl zApKuwVBWvM{`Fx(NQ$fAfM&ly^d<`Ak{k> zAcj65-S@~Ki@6}x0-%OIVBPm1foEXd`m@)$E}({IcZWcrQs|?Nh0tNhoB`SNMw{mK zu1$n9J~~!|e6R^5JK&}7z7KpE5NJXaYLW&Wr**zi5Ws+O(@ZSf;$zlp(*-a7(5#sK zK&DB3vrfP`;$ua;!&?46*cQWZwv*%Mt&2f#uUy@(1~;m6XY5sGM{jyKuR`TxLxFq!1 zvHLU4IEeK;0>WiBo8g-aK@$tNtWTMjL20ax&2tvV?oj8*_SMNxeH<|mmD}YgxQN6IF8}ji%x=W&3C>7Sn;#m0f0(m3t9_| zv^LGKnuP0es+jXy6op>HOb=qpk)&JvZK-o& z$$|nbt6F1RE6>dPJbJFNce2@XW0!@pKz)m2fhYHY6kJqukjgfWHI{~g)c<1ZE92VO zzO^ezk(MIGr9deJFBG@pCA0)7Erfb;@R@#37JtT@pZZJlzk0HH55T@dzAVtp{rYm zjq*MJzS2bNQ)u9I5=rUH#8p9UUQd5`#pamAahYtIMb2j&hqj$17($p!rD;C~3qlqG zwD0-8xw{Hf)=#?;*o3O(XZW5o_M3tjs~DU6r{8DY3wHxi%>BAf$^p)!7lv&WK}jp= zmy_cyQzObzBqP|Vo|%mM@at?wx$20rwb@EDgnf7AAA{`6vQ5&9ZVC?Q4V#sc?~5AM zdgrQ!`uo&TiEM|ZuE8|Rd!r$A`xxb=Dv}F~iDIOW zoWADfj>|MEEM<5#ZJM&uT zpmJVn?O{;t^G7E;9xft6p-cG{pB}*s5|AM?nI+hJhr2Wy7-rlv?PQoDOt1Xm$5n@Q zOEBJF_^%9*vtfd(QCiV;jK&d9-inJ$6nuPUg?nQAdNIndMxSKxiK673bc!B{h3fcg zGR$*{`k6qu2Ec-N65qBR-WO6=<%l2U#F_Z;a=BU|%Ye@|;$FYn@tC&fCdGndis+(Q zM`L6F+2}=uxVB~cX_B9()Dk1LSV3}Sjda2Sp7B-K|Lo&gon>Y8Amw^2>Om)~V$aQt z`xah#ZOdsl>0wrqaKo=5x3NpV@dPp~tL<_vp+B@w2+%uZ?{b{5XsmKQ&M7sR*mIwN zQ5TG-BwRoF^QotDP6Axw84$^l}wNEmzmSYv`ug#!f?I@kUAnNF{6g?%J62L5=b=K$QCsX>+-yg z19eT|_D>Jm+nL6c$<>Hc*iMvs-LHEc$1~GK^ovrMc$a`QD3&-`cBz2B?h7>;W#)S6 ziLX}WzclfXn?On97|3=lk1;rIkIR#O+J9aCb22mt%G_TGtmJ2l#SUU{CuG8qrP|J}b$D0$8PQ)HGg!}w18F;Yq{Zaf)$X}udEz%#w%i}5|=pMyGaFuBR?>uuK zY!LpX`v;)uXaXA47yQNk#}~~;pmqPA;eWH~-+2c8HN}5i(ZKu3Uu?g>#6RdiGofei zAUTdWePba%^^;iLlbG-XB!SYV~Cz?W3(3oHNgO()% z2v5$>=RprhfN#aE()g+zt4ZgcP&cqdBi!;bGe|yka^@K_RR0VJ&1CuUO%?Zbwizbz z3ci$uLnkuqjUetirYWtsp#DsphOx3O&I8KGwoYb}tzv?lIxmf#`c}aXG9SyEE3=Jj zMUu!O6a5$gnq|(Dvbda>jyArYBN~k`f~AsK)ZK0%C!J-_gz&-+)0?7u=l9h2Zf3Z*GrGfTXi^u6SzVWwX5RRC921ILV0otSIha z8|$k53{c6W&nWIAz=H?&lTV6`QMrDqD4(>W|WdrvF`#I5gA)vIOn zDw`Jec(eMf9essP!4g&$b6rIWJ2G#uF3f%SnhRF0U(eL>U8$GlwRljnwmDFb&j-j? zwlm@mPuriMgBZc^exV%A!WlxpLY#(^<;RqP^rH!03y zrnB~CggYN!W1}mTj3D*&aQ@`DjES4~rjYFVC1#(cj+H5oYX_rF<1NzC(Z@R|4fIMB zGG_k!r_gYMz+pt$oY$hCetaFYmP3wZ7R!Yrni zd~2<%m&I{4!3XS{v!@x9XdxSv@RQ}ff6{ilCe3~SzU`I~^E8@dP(q6P-l6T*$}15m z4jL$Q{pw6WCcL;GUp(r_TjEFk1WzJs?J=nE+p5%|Mt|^DhT)0-1Myin3&->UfFJ7- z=Ay}`G*VUfgMd{j)jdH z??%&}^Wym{I>38z)fn%fmsjs4Pre7NGh+71&CTAS@ zg2y94afARYFGyfCL2x~yNsed%%VMg(Q@G}69THB^6yO{j)@-l%(Y~K28gp1JVP+BQT-k7Ga5C$63(a)Mqnpfc z(kywu@6^iLul2}A=0(NE=d%u@Dotc{aIBt?mDkqq;_f+{HkOTohdWwI|G2-WJTW!e zFRUQ1rrpWs2D7RIPEIplIVTEY6H+b%qRpK1%0cCu3;6CeO1O|-RccJD*P5D(qHPYl z+U-Q|94~B=XnHYcC(Y+aM(d)m#2A2LNj#$!MPyJ(TR$y2?C#R#TUMjPm-l}%l34Db z?dllG0mRb-pNu4)R(@JOb3Kem{F6-^NTn02`TBBGYAN6GQ>mR18DrN)vqrJOS<&qG z(Tk$QysjH4X^r)P5y-*cRrA?iuVu5a+QB>-dC)Uxt0PiZ`6vA0TY=fc&DX(yhE;L1 zork2Hbq6Nq_EV@N6>lGQA<3ytp1|^wZRtFw>zV1-@%I~+m{tlu5eTmjA&CWa7c}>x z)&dsO1AJ%G=KOu)Ywao&ci>wJnkn;g4LWi$NsLw8pyuMR}d4Z{~!ke>-72u>sn zs~nT4=k>FU4MNZf(&4>XbRH`3b~n+~~1 z;n{|OUYuIpXDPgvu=-u$MltG|`(jB&qAy?I4k=nDnWi5?>4R@xD1I-9BN~F#SrQ~e zF+J4^Ika)lldZlYGvSubRUs^SDj4BBN1H2CR^!d+IA+pHLQBoSfeBSmmK2#R5%q zOL{NIk_cI`c%iOm1|=i|J4{CR+-*6%Eq296|3W?XrwLY?n+o^1+eMPPOda$sz0NlDV1f45}{Uz9sJ1;$Vl?xyWjn=-9@m>>QuurbV8Re8*2{nQpe9 z?l+07SFOf&O(EO+dEt{~f~oe9X@QCsVfW^39D*)|;K`pgAN2VaP%luxKRzq$Ctm|F^gqodHhI@DC0nSx_ApO8 zm?X7jQ%!7;7tH#;+ArIzBXUmj;CY<@akgROGfDgr`_dv>pOT_DXxM?1dWF56I?{u` zM9eGVu&jSI#Upf8PBw*N&jwblX-{Z9=!2hjs)fejOT>M=^pKaG}vCLuQ1ctaEia#e$ zXA4`=HNDMRcZAW?cCQ|@i~}9NtS1(8TqU=+w{9Q>Bv7HiIyZevU(OY-Kw`m@$Uwfg z@8~HP@r z9SL~s9Z6?N&9iL(5-Zt3+7`O0nDT9bgJ=O4#qj!8H3}2N!wMvS1|&4|U#r%3Xg&UM zOltnHW;U=_H#IoXn2<8d%n13YMaEG?Va}|a%D5hi@F7SXRJQ|5-82- z9yNmFy{_x$cG|k;51=4TQ$c44UIhrY-~FJ}dDCs1b$CIk_4%gVR@BvCny(4s+{5it zGd~0}pFB4#rWD`h)^yb<_kr_{mXt4B$)=|zl@ei}T{22eSWYOK95H`iyBuvVf94ds z+R8e1Iu+$n=>)E)JrR{*(PxuCn*1gOV0mLa3q1Q&P2@hR(QfgA*D#sXoA0AJ7HlE5 zEI+}*5=O)^q>-IBvukAuqeLHSDiXI|4SGf<=I`dBYoA#b*&~uqfu+*zyStj!eAkmY ze9gH_inrzJK>nT%XCnD(xh-`$#xPpu#GO{@uSrg>$c0|69N? zd}pN=qb?!;SpEku=3hEm>6X#+Sl~yN)WO4t=TEn-E+(WXN1m)vSc>vSntwf3CY^?; z6-8BPn2DT9V?z2LS6+#}tg~f0BDvY$Dj>vSVu6$SX+y|5_ul0!f$WspME#X52k-F6f3ObF4`}E)MZ^kuI zSS>V}G*%StUYX{Ci(5AoVdZxZK)dbYM~Bz*m-_EOk_CwY)Yt(p9h)Ui)H9n|z=Kxp zhC%@R!YUF|Y@}7Sg)X&FtcI^@a}mBh3*M&?s<)38{TUo+fjGa-y+$ASvVm#qNY4p3 znE-nRRhxG7K?TZ;-^s)rwrX2-EBy}1D}1)7k6R8a_DCuu;MY;aZFlol)2?PLa}7BVW{)bWlxbM+)ts>MUEd`_Hf=d|rW zzZfoJ+?+uLLOnRugExG5etuUwCG2IJ34T3L&yB{i&4W1t3Dg!y;`aE`^8RYC;Qp#( zYU$2H&+m3;_>afYPE*clXZg5+&`H9J`vetWQ>E&EjWDOT2n}FCsTkZlHjto| z{nh5BtMR_D`>VT{_K;((etoTqp9{eW1qU7aTG}32Y<%e_T9hpl9iEeo6wDLnCgWFk z{@HIbe*FRXyca*xx^5e!Xy2ERC!T_iwLfyEym}kh z=q(M{*r3{dIeQ#>2#N38`V-FeIK5#{;PC#G_c;EX_aVB@ph=#~we*lM{m=MSo{upK z=SwPe-6i<0`K>x8l&P@tw6A0eu&US;9OcBVYZg3FWDqTN{L}Oo#eASQh|CXsi!5}e zkL`a%$Hs4|01`t-HtOqTDDDMSSG=W^Y)ThWsg#GOJ~#YUk<;74b~8=$|LUkHBvFCo z61GvaET{||!Ok{Ii__2zL^+F!6Hn3m3rafqE+i!58UzjgU?UiM?Er2Aj(Wau$~*4Ybe0_v(7r6Xl;11@=Ui+gREJqtOT?`F8Pbe&!#^>$s&ynWL*x!&lo@SA zg$l{;c@39~gB36IO}Lu}Jjc{!%T9bBAb((P@SW*20HpWDVed7HkJ(yTQ-)ni!}5}eP<0F0-> zC_n3v^uAS8$yce`d|0BGe`CdzlwKT-6)7FsEl59pJ;Y{WK98rx#VK7P+RYo1UWrg> z__|?M>P&z;RZfb#ZdU(w16`qvy3}Y#ra<+WGI2{EG%tI9%U8@Bxr(22xjM;SDsOW{zg-pE5)1Jl?0WlGhNZ_6>nF_72Ge4aC6T3Ihh)ke9#$b zup_axOTC#t^&g#UIO?GBPYQT%L^|amZak#JCaU7Z&uk+!e3=Ww_H)?n)JdLm!gXnF zJFZW+`ovr+#f0aSpS<;?Uc&*NaF@{sujtL&vX6$?KVy2;kv2DvU$cd-RT=d87)EmoS0HE zMJ*(CB6(%3yHd2aPDg=DC9y1>x3s0g^{{FPiwhgTWR^17@CzdPF~;c3~Mf-I&vb$i21xysi9wZA6D4bM-sl4GI@=#jz~7J2OYB#b6UY) zFajU*u4KpategyX?R`)X2hJNEKQG`4{(h}jSIzKXjPt0y&YE^|PM>QtS^rXNiZ8pk zVNcUl$g#DInZwPc#8IF=41>TV?`c^9w*1j2VcfIlii8f)KNomIM$IwiPb0E=2-oT{ zgj~|z8m5i{uAi24@JxItPV#go>$_zx)A8)r65Tl5dKxHD4BLL%G49tT!Am|oR#UQA zKASCopVXG>_G^slb(qJCW}_l)5V4m%`OPLRNran3Phk&!9GcOW>T4%D&``EniSEXv zF?#$uZIlyuWDX|THZa@H^ELZwp!y?=EH6Gwz;a*7+Mld(m_Devk#2O0>>*o_8`h(b4t3rDhYnfQif^!*6{O5U(aA3_Yyj{All}>+(H2p zv5Gl+@PI}5SMQlT9s#HcGPW5o@MQOWaPxPG-FHcO*;5%WS%x4(@ zA%#kRSOg0b10yiB_gkgtp-@RGk2_2m5k4b|(#-6P_}L})Xf~4UxPG|Z{GA^?(9m^no{H9Doi)uVc+)O7SU)j8;Od&Urb=;6IwXyDAg!zaH)IaMArK^_=0!S5tT zv=ZW2rZAh_(aMe8ioLY*ptSaKiY5b2o!5CKT=+t|NOng--k&QuZ+`BZD0BP{K9N0p_h9~@eWGsMy?t~qU~A+Zf7jAujBV& zRqVxB`j-3A5WrHe$$h7jjj)30YToKn^vidul304CglK@a>|iuE{W3Dw5eT@8cv72p z!`Q*w6tn^uiF}ZdOdgG(HI!LF_+Ll!?D|oeDMD%3P6zC@YtKo8&QpIMXrgMEkJydx z%}F~&n&AtdZ=wcKtzdBLdEJ8D$W+&6jy^SnC#<@I<+S_*-R-6*hr3Lp%R<+p;=Aw- zqj$gd;*l(pD!98wzpO1KD2Pg<=KEK&Qxj#g4mQ&B73bXs6h~p6c)e19i>a0g*x{jS zaeex!MolSF1aq`8eXSgy*qtHWeeb54odh|5)418JogXHA)92XYN7qPol_IisH;_bO zt7}EG{8SffW42n-GpUVSEc&K}gBnqo6kl(fsg)e+)wcpjrwS>kGpBYVSt|$ncN8a6 zo9(S1eZi0ENNai+(kOVnc_aoL0pDV|BT*fI$tMOy>dL7YtpkSMt)JsAO$Tby?b94m zYZvb}Qe>{s1Da&(>AY;Uo|rCT^4>>4XFn^`jrna;4+IsS{2)*1^Myx$bwI@H!W!g) zQ&`iLL5dLjT-r+q6lyWzld%p}Qa(RtU;q!elsQMtj0|8~|>m5 z$sKjVn7nIob5#+{zH8yn_v+DI*}L#AxH)1ngOrhKvdLv8N+z$v5*n($WKO76MII;F za~z!MDlXkU)m3cdD6zNUxId=5N5@grOn-FvXjC(XI~{J{eXdmxMnFTIZg;aTouY}_ ziCSSpSpIZdB`@u?SPB{!;r+4z0~EM5CA1D81gcj&WOX)gYw$u?@g?l(nBC9Ra%Y>y zS9PjTc1522so!JKr8EVh`&Gn?MOGH5oOAc5%gwB^Orlv!dPA_&Mk|;vcxW-wgKuuQ z(2NVHTy>x~x$kp}{*l$5*hfNCss;{gi_}6bZDshNJheY<592zXt~9I9goFK!`!7ox zX0HloYX_T0hy}=hq->=)C72wva;w&SW@NpOvXR+nocVUXR^NV|R8}UUT62FJB7r*Q zx;HLl&1GT*aHuF)h63L!ep1!Rj{QTF5T96>TP?$s$HYp{p>h@TFZzcF{FfN>l?A1Q zc13HX{&fxd+Z9d5u?+3MqyJQsr#yN7w@8;#hv2Fo06x{QX<>vgk25^n#zidiY$6Q6 zyzbD(dEDf#4GjmaB;82xjuYEB;`3edoQg9Mb=?!}^!`2+>|3Yx)!ii(6%ZrXqv z+_mrR+_XSIL`buWQ30VFcW^vOw=}ox3Y&#q@bPoF40&`bMYl9X@Ub$Nl%-`F_57ji z!=#Ewcu0!J%A1#D@=vw40ho;h<9LpmSkVvNNTX#RMr((Oa*jPR+*^GkWxZO#1alDO zoCsKcBZo`7C*U#2v;JmJf1Fn+DzVy32zY$ykIT{-QnTUq6Nu`M(Z#89_p1p(rJ}=E z8}|MF^F)fTvD`wbVlq|DI%~x=b7+eb!{Nr-;W;3XKQ*tZF#hll^sQYOQovJDNleB2|TtJ!7xmCWE6to||rRS^7?->p3`opR=4) z(+QmS0X4-WcP5uauHdQhV89`=Tq77)Q|W5)>YX0A`-rGZasI~D>i+5akbdSaOhZ)+ zaXm3@Vr?=~66qT48Op#JRh*R7nKyukqFP!s=vUeu28{eNNXj zwePP|SFP`_3hvGC$xw{%D}eXCiMNcpC($--5|vE?>m^f*+~Mct^@xzE?S<3~Nvy%WwGFJb!LqT(?RX>o zvY>ayj_I^t4<5&OD85_eco16q;MF2gj0YYXJPfVHc(wQ_#v}Zl@iCTZlQ*GMqwLEH z!Ap+>AF=46X62UygzuY}ULGfY>C}BhWZ$<|@eg=FWdHCl3n|)yMbvn;#3+yX>Ky!{ zR|A8{9_Me9f9LyI4louA?R)%Ty!ZQNJ-_SHRad=fCi?!@S^sALGX)x8{yX2_Q=ly= zUphxgfeXm}igZ85V~W`pG0PBRcC2UmQ=s>e}9$#}v+?eB20^eN5IbLTpzuOWT48TA?&OVYaZyn_E@t zaM8_u&KjZ0xu7wjapuahK-#_g$2Qr_aR-+9Yv-cv8D=YiAKQk;JfRlXA30f0GQBTL zszjU$Fi-vY+cDl8)v?7GFqUn!DS@|I=91te{#2ZtAbCutPb5 zqphL#!QLWKF$50{emB%&{0rI}(nxAu4MdCQ4zRKI49)}X*n)PNXrFHHBF3UP#b#&E ze%TCzNNn8XjfA;&ee+Ml-00LkTgvU|JK;2E-Y`<@S#Lg!2rRgil_1g#jP*3K=e8%& z`Dl2|;ontbaINRoCy*+F$W8nRq+4n6>CsrMtLbUyI3`gQY?EBZ(zyhL)^=9itBFV;{-(HT5 zJ-Nd&A9)eT3r%Rv8G|XR$T;tqtIT3n^s5{vYRW-PrC zCQ`Y5?`utPaV|#Seh&+QDAFQ0JnCxKR~BPKAb4ot`4 z4*7KVMZ7+x!)I#|!)L+9W{BMn62sen4Zrz>9#vN1@nceddx&fPUTx|Q3(|@6aQj0~ z3YHVP@Yfz-EcvcZip>1_!|)kJ>dx^6McNKt7c6oz8FAT{E@OTztDU;zaCfbf!@F=i zb$#BJEFQ<}ghD>8Ayz< z0wWGe)9L0Xc^ja7{PoZ`@=ls2qdC)U9Lb50{7x8)`W9zJ5w$>mDoim!q!iP(s2+y&n zd)KyhTA-ETmt=g^(Rvf)p?VWWHmnUyGULeV%fe3M!N;6sRNkR#4cWtPSjox36>&mezgs1x6vgVl?~DC->&Z zLmRgpbJ{J)Nsv%(0aZ+j1)4c!ymtG{y(}4lfsCT?nIb zpmOSZX7Qp_ONARZaWzbKNTy!#b z{|;58afqw7M)_d{I@a^er;(xGNj>@>22$*7=GaiQyqY)r2cP%>C$3B%g>>O>cH(8i z?sw-C<7!aw+qBV7PDV)+M(|^zfGA+*hY+ zP8%=(nil8A4mn0mKDpsrq)~3&nRO*O1(oA(N75MrnrMc+E5$cwc=%&1;s8 zpoAUBXQFs1fe{-RxB1I19Rd{ZD+DO&PES96rF46mn7mk#E(nv4nsk|^-?&|vU#eZb zj=F((PoaEL$51{hq!$;C=)OBrmeF}t4Xr9r>M1g&y4GlCS3f#)7r!O@yHbR`O3M!b zPIJAy!>r~Q>RTw~ z_sD|#>$xw7uv=)$9HDnD@0FeT$-?k*V_KiPNZg^@>!pJaEpy3e!=>F8_P^k7*7{$p z*h4oAuB-1F%IC~Y7 z=CUXW(n2b>eSNZ%aHPhPU zt&jNbCJ0dRKl2$6M;I-cdwlWsSFJv!{A&5^xvBAkl?BBm2XIt6!RXLP?a z5f~|$>A-9^x2TOV9mDnGZ`cD$BVDp-CDhGMkPvyhPemM=Et^X81 zy@rZYeoWUBv5dGZ-IoewdqLX<0F|amd(no~#?&$1#&ZQcn5gEFYz65@`aM z&o;#Go_RPOkfAasY|awku0B&NT)j>E0P-x+`mGNAhb~J8{q{HnDLKVD*|Hpx(Z9Sv zxSB7~e@01NH>_)>zQ%d^xpVSsR6A+^X;Ed{0r} z_%W(BF$Zo0uI!e)N@BuA*OX6M(+J0$eVps5x?vS73c;f}yaY}gxZ5;rO@DNQb?U0x z%?)t%`ndyM6JAR#F>li~osjf|EbyGi|VLD1Jwl-NIlUPmz$-G{HkrQ2*zIg_focj8O z5Q3XjmiXYbbNY2tx)mGnMd93Dy1ch=_&I9MOa>{HJ>dqMf;O8kcl&h`dx>S+8hA>z zK^oTyZV}kV8fT4h0ShX5XW|Z`SB17MV;-Gqw_;(Fx-PAJR7}~l-=P;&HJd5xcr`KF z7gDy`9LqOQ-szBYP0@1M@T*J&2uG=( zt;MWbg|NTjGFY}p1IY0~Kz2)3{B^XKNf=Wba&@#w>53^icdx^ zBH>>TF0&&pN-A;ryi{NpL%(o?J%%K$M+9>9;?BK0ROLOFSgog{xcZ%a%8W!>TrNfL z2?UX6R4JiALpF_)>983m2u%IFME!i|`VcTeu8pNPYBs-hHOk5#rYJmcV`dp=GzRnFTIwa~@^7+wMJpy*IXmmcG-n#>=epfa`yy6-XW7*$x{}0;4t1+i11k=0 zJkEkAy=N3a_M%M14HXFoK67!-4k{n4-e5-=J7=o?cnlvDGTciIgoYq}lK>mZ+|?>}^mAXZvcP>!0>F440|I z=i>EO?0*z6Jv;N7e02UB9FyiN&f!+&b;%J;T-`Zvac%!C!e-f7F?RNk?=)QO)b6Qj z@64~!j?^?luCRKQMe*rv~6JaT~>VeyApKaJa13uq5}Oa zpXnFEvkdZ(_&+ynr7pf*lUpsqYd^QgV682bH(R4B^w!FCO?2n_RjBKr|T(<)hTV$I&JOeZ}hf}3tFl22&697v4T=_ zYgi92Fj2c+Lb$^KXK7u*fk6&nm#lW~J(0@(=UkbqMwal17JysJr@72;P-n1h9&`jU zpSS7Td454Ox1?y}$5r8@@t6!e0D%RV}13Oz=Rt2Gw5XJ4>!MGGa4O%*2elO*tt)Y+B)=xOE-i%!9v>sKYPNq;(KT4Ze7(i z4LTPxx%4UQZEJuV;fDaQ0!%B(kVq|&`|Pt%b@lkY?PMIf(o+K|M>d5``<^@b;aj%v zY(u`zX*Cvvg-WHoumM+iwn4M}JB2STR-!)d!8LUQ!=&zsGqu4NhfY3|*kvh?eg&i> z&g_j{7DRu>RJM2tst4Te?uE)66uC1YlSG;lvbv2*syAnxo-(tdyGp2($$f(f>5AQ-{nW1`w%VXh{r~E_Z!4P_+#JMM)%9q=r6SnG#}` zHkQ6rk7s5t;dw$kY~)F*Yb3&wQ-0=(QGQ3-XdxW3q3yE4-fAfQ{49!i?wPsds1Q5I z2zt(aDk~Yyo{`Byi3zmKO)W9T@ZoD$<|oVu1RbIos~4sH99`ymP>p{_PKi{ zy(C4q5f7@emtJz;&my*1h4ir_m#s60s7OW04Awin;ylQp_UZku1sVL#5{4+eb`s#C zOYP?Bu~3MgiHxmHc+yq3?Q zuDnmL+-7iWTjJpO&g(We5jl23B`iK&q7Is2Fh9557;KRp-q&5n2YBszgr`<`B}6;w z3I(==5yA;tGP;BU~4s)>BXTVU<3P?QOuuULW_Z;Q6`MM&>?F(S{n=&JJM=iC5IqL*8cD39c5)@~%#%TcMs#GD zyqO_TdI_)jpFG{n6#%HW4prXSts4O;sjhp~+5QSb`!J-n6u%n~#E)$YWV96hvbmFquJgQ5VMY`V*Wv+rtyRh3q zDle2_>oGLvhawf6-JMK%m|1MNt^59bV=^#2JISSF%KqU9csjxHoT+`IeNU6PG}5`g>z%;#iA=ein;Bv-axwX!pKMWWoj0Ueo*c1i zN>lQu$7J+H9Byhs3qG|QzK2HX-&{)CPmJ-~PhzFmxqvtW;f}ZiHxX(UR++${e5_bG z3#-n7pnN&@=N?vfud^vlg9_!E-+jt4HF763B@5{F**d+> z3c&rl33$+g>$TC#%Kcq_1-%yFJiFrvxv6e7tz+3w$ixQ@o-hUcnqHQPwP*hIrT0|+ z$u1ZSEk75GRo;Uh(uEp#c|YmGod{Ac9&MJY2w)LAZ6Y2Nu3v!$bmvDq#xRnJYg zo-?QBYM#Vgekzt`md+(qSEt{3rmp@=Op9zP5Q>*m(mAABT9RQNKa$uDFI>`?XX$ZM zDYj+kll8RwSRU~ly~`tDU)x9?v!H)H)N%}MawL1*|7Lgn2I?vg30-ZKqD~N5+1^9v zmr-Ta7oQ4XS`!k@J(VnJE|&&7agks)e95aL%QjQsGl6x^xlh}7uJfKN`nqSbdQ=4y znxrtIy4fr7%^S+#c{-)5GRwc@`W77Ctto?Cb|0J^eh^i(zm5dR(qf?Rsz z1<{2if>kGoi<7;w%V2ajTXN|dngyJm{V~K!ApG4A#j`4HG#3frzGrWAX^i<1Y+svX z=SIn;Cfe^_WRo_&5R%5N?@?Xnw%%mNuR4AMVnjG--mkGzK|gw_8KyaYL|4T%)CfAH z5M6pn@>V?601IIUocdrvxcb|(>Qh$coBH!m-t+;xEAJWv99@RtTu5=^bNLcqxOsVp z(l)-4f#>-{oiviDpgci&^GZ%vH^Vsvvh-?2EnM$UL(zG;u#BZ$8lVNngeZS^0vAD< zMq}HGKdLyL7tzp38J-hEQ8O~BG{Nl>qw%ZOu8+%|3lYXM#a%|ZKHwU?h-6m7=l}HcSz9S7M$Sj65IzH+@0X=5^M*uWN@0?&k#wTAb=E1WH^qZ#E<1pqI_vHY1J+ zp87jg{eDSWit);kL*^#E6KT{BCINco#Eyz#3<$_gr#@ zp_GbZn7tn^_BYAfVV$ynH&_Vsf2|mTsnQX={PIXDqkJM=uUyrd8;2%5!hvzoOVoAV zn}Z~*+v}lsgCabVz;FSLp;1WcSPRBH+}v-@p6w`sU(0ZOxFis~PLukY;_ub-s?3sR zHK_4wCweC}#Ahm&WrH5^i@35bPOG+j#UtKI$(4m?XHhTUBc8U9$OS@kDquu)gg#ox zi%rZ0bwtVM1ZqFM_Nk5s^_A#u=)=`@$cXW5za>TU&K^&LJIk0QjRjDmZ#mU zIy|huK=8{nu^3*cTksgpCs$rXRKZf^f`@J5fPLMC@8vg(PqUSauwnx}e01@6E~R%F zBwLD;+@Ui47`bfANMus@`hDx@aoSyk?n|A4GF&U>nG(()PU}$EJOqfwBY1F?e`j5O zBrIc%4`Hha6Z~zqNhT_KEL#|aFFD$ikmq8kaA(V333zG&b@SkRrQN~zH^EsP&$I2U zwt{UJW>M-(48N51=4ii>D$IgEp8ndZ&L+Z_2Bwk85p3@OCWJ#98`#38x>1wZolDDF zgjWogL+o8%-b)(04_Sap)G|bdCAOKLU!>Zr7%w_6pTJL*t9xtu+x%2ua1nyve%z2ny><6`H{TmHbX@#+u1bq8Nc9h0RGn)n zt@ch)L|(*0xuOpb@Rnoj_m(r`cl>g2V)l%A*NU?3hcCoF=HBlCx)6@SsjXbsL}%>9 z@Ab3^S#-oFJm&m}Vva$a7+WJ+hZ-T*K-XEi{?z)q+&She-X2*OV~xHAL%%~S?{K5p zp=)5FarJmTGWx`qc85gr3{xG=53RDh2<}L1CeYrZJ2p4qw=vFO;q!hCRUpc|Wgq)I zUx`q0cvz~5{Txwu+F6^B{Dfl8c8CAm^oW8NZBFDzdG_Anqfa;ffn^rzNo5ODoxNY3 z;~`XtjigSb#lK74@oI)KlWm@@9Rwx&jtN=>wq*?daz;PL)}POq870`nxfQ*5@tJ*h zjzw^fC8=EWWt+pPMXMs-c!Q2+@Jb?vT9Vq-j|{_DFZH-f>3ySmI79XN-)*z?HUT^J z{0UTsWbbi2M3X&U*>?baxp5jg^O>YmhEcwwc$Q3eB#rr0Z5r4urSE>2+VSoI)Y~N9 z*5q`ip1X0To99pt84~ql%@`{U_??0M2`b2lLy7l9k#AsQ({g1eWz(iF{ zV2<=DS=pNIWdIpHOG+78T6C6;5gy)2D0;7j@Ht{=-iz)DGXpMXlcRc#bkuS&FEiHy zFdxre#p92)I@FD+$ii=BQ9`+%q7d&ydNktJX}sFPuYMFNflirSfp*6_kXfVI2>k)Z ziz~8tBVbHtnfy-JbvgNJTtj$PwYA3gc`r@*$C3yT$GP_x(_f+AX1fJ>oF7|9Rifr{ z%|@NST`F%A8-CBi)-N5x~KVQMB5RhrZm1> zO1%cM|I~_cG~9BKJ%miF5CJRLqtb_*V>XJU4XO0J!D4{BS|FEC=lGT$JvHGDW~D*& z!#$epJq^`PJz>Z&uFQh>wG8S*!ZN0eddG#B|3Z7&RQ2KYTQ`(3;9SiLD`1R6{q84@ z)H^&wxLf;2mC+s~r7bjSth;n<>p4Hm494EfuSEni%AQ)N0Vv}H?!yQ?`}}c_)~LS7ovtlN2Ahyn>wjZ!r>VhBqjo6 z@$^jLjUu3>x+p-p5P9iiG!sZ=onDOM^ZKO6<5dktbXa2+{_xCWO@?<9TTHks9Eeu+ zFfPzFCg?sdRlSLx@bNTra=y3Sluqr`Y{<>%AM z<|M)-3W21>drRRwboH2JiM1W^zX2uY5CR`Br!qqdV|}i9*T%tA%IK&4mAqrDmks*g zFVM}zqT6kuQk5tY8wU#f+W?1rrqleS+2}gHrsf#Oj8Dj?+*F1-E7Hnk{Zoz2G3+cE z`F%d1)bR*=gjnMkj&t&?Wbt1-U&Z6)%$WJbZ0oj+io8&{n)-*i?x1AA$PeHOCwy!o zq9&yeIjo1nDq?;)`jiqAjY>3%XWnn){bJ5CC@lR0hv*IuOG#B*ycqzb@mXs7VcaOg!p}BP4a_5%br z0l0{s#37-L#rQ^9NEmWe^&A2#i8e`}xxLM`n(zAGNKL2eA@kaya25c4Xo@S0ippO3 zR;?8i9mRa3Ya6*Bm^3iIaU6SI}(dEN)|{GbtI+Fg66{2l#VQX5SJ5g?q_+ld3g zt`|?_i^c|{T#ptgs1AT^u8cF5N0T8b%M%%IPe8l*zW~^OfeW6<@J627kSbkUwqY7| z72BHlT8~6!Yg5=@rSodgp|4}+i_u7T%?}LVI-!&O%+>12i`O{S%Y8D53>I{kZxbDb zLgsN`{suzf`x+y>-W>R%v5jHTz(EzGq3S9n@#E+$%1@ve=IyD5LN9ed-J~6hC66=; zU>g>}<|~e}O~Tj@0L>2b;A;yp4jDo4qzv5^u;KZzprJy-=z)sx8p>{@V<*Akb>8=>h$ZCcgB!|C!LJM4+yQ|cvS{B7q-=>kSQ!{- z@xI~f@ADAJgBj@BB59LxJfs97(`mIwBu+q`mlfqct@L4xkpWjsLw}|ytHLQMt0X;) zA{eRrhL^|UL5XT8_R;H>yZW>+IutkH?~dW;h$xs2ZfI)1FS3d`wnF3P_QtJx)vbJRy^wdY#F9-<5s zC03(6Yl}QY!~+0I$YXTkA9h`)a>BpF^^8%nQ+uS;Z2VEA_BPJTB;760Vk@^cdQLox zJht!osoT-14#jreUY)n%O?gWN!jxIOS(z z4LrXo=ELmXpHqFjE3B#VIv^pgD{uGv%z{|BpSPjw56IGrh>G0ip5y{_m)v73Qdy@y z;W+u&&jp=K@&}x+voQmem(rZNu%8Tx!J)UaVhq zqxm{&wIiTY)qOJ#zI<-guS4bKuf8q(HFL23B~!p@i~74zd)JRh0e`4c%I&E_B>eS& z&CMR6#Q4I^vYbAIkQC3f!R+J44$#H9eIcmYlsr`p)9p&!J^tHEVpMe z&9u^+t&QxB9L?N>zdORTm;R814jbxle99{K>>P&x>gg{I*Uz6A4Pa(c#-UoIlJ2x1 zoT8s|M@otd{b5lN{OBBYJVTa*o_GWrIP{0;dwu=A9^f3a$1OC<0$eUM`-7>k?#O*s zMLqcA$26vk4SO0#l@Iho7m`J|2P{UQU?1%YN;5v*6;zL_=Wgz`WA7e~jgq))ZG-Bw zR%^G$^m+s0ZfN$e4^}zxEs73Z@QX1$@RtL^j+@ql5ul_W$1_&mVf?u7Cn_Qylao;~ z&GulA#;6#rKb14CAiIP};$O9TX7aguoX;bD6=0vLS(kOI$8j)0mc_<>isW1ghSP{fUqy3fGdqXE9~6bhOtqif)wlR)B=@O7 zDp|NQ8MT8VAyXa^#`d7ubSj1WJKFigdwT1s%?nYTg*REPPHk$EY%#z|51QoJ!b0AO zHLo6qVHm5rVVDeMh(!{10N~Wa`T;ATgpqE5P#OAoEvAPoE+N0fD)IacO*zWFL_a4? zZUWml@)iW%SCU8}&aEH$;sOX2^gNJsIFr!!o6?DI8z#XWV;ITaqIasOLxTk07~z+l z5IpNq^dQSR-rgLa=`&q}8g7guD>%lw=Oq1is_{%Anu1&65DhBO#vN|NPq?mdd#xd- zKr(m_+k1Yh5{%H=o<~m7IegBW4G$dmc2zlRN*kj(3bU@&i}#UEaQp?CE!JzgjpNFcw6Zpf@oG}K^KtfiPlU~tf}5?tpd&t<$|FsCJ?S17GURy|xPQ_AGw}BR z7rlp_Z=lni$NrzQZdvU0y#C`)^RIuXy&hYH@KS{By%I1}&~%koC5xm1V`LgzztUv6 zi>veCo*dfX?~AB6(}6*Dd^nv4GXK{B(!U5sj2(O5WUd?8x-LDU0a3lSv^VvnGUF5K zu%>TH?`~=hcA)?VqP`1hxLXs?cnWX{#-KAj!PMYf`ROboru2^aX3u1?Gdkvx^ZAeT%Y{K|D!j~ZKd)Go0TxNQS%fDHNIlAEgQ0Y3Sd;Ap89w)^fT<wyNv?QrZFKcEfg! z0&(R|&NCj;tj{#EMYKA5c>P^AxiEx+APN9f|5ZYuWB)4|4EYfny#+WUFJT86t+Y%D=+llIPy0oMmtAZv z^|p#(XlUThlhc#cb*oHI4>$aE=boqPVAG8(u)qWKH(1;_(&m{u#xSUMd?SS{)w5@4 zh3YXzVt7sj$K{V}m{l}a0Y7f{`0&;5lD?lzQNL373iAx7YiN^C(WPiRN*TQ*rMH` z%U^aWpIogYg!jiV2BD?roHDE3ADWXggcrR2MA*Gy<&{S}uNWsq6MFM(Hg5+Qyo-1* z5>~SE)aIDQ+H|d>^z@f@I?lZJVUvP$f`2@&Isu!zvRl>NFUgsoE5kmx2_%QhUFqm# zt!r;T2W)j&G6)L?_b-!$5I+#DXi&?DS}A+}0?-6t;$U=$p;5VD(n}cD;c3*(%2f=w z2G2>XuOOuzU>n_kwB-m0H%+=Gw^-NA^4p=dG)+~fQ-&x+ zOr*`od$&~tIbkfXfvA}d|8z<|5vQomMrMAuak4XgyWK_W)#e3LXD0C1q92P@O0f)H z;m-%LH;=lEuj%@8+Yx+O7?y}LO4eI*)3M%Dl%_P2RHtWUs@CnV5zHcgB5%-Nud1#? z>Mu=$c41rV;gS3#$_eSc*5KQi<~rm9`XK9-MbcovVsl;1o?i18B;y^UjE=C>Qz17f!?n_6VF$JQ^^bwXJDh$gd?uE2fB!GMg7gRpbhfIEhH z5wAHD_QgTxQXt{)VyAZ(C0>7}>0YtcWy#}vW=B+dvh(!ED3!4|nuXvZg39oNy zBguBOT26bkZbuafpK-jk#;+P_Diiy-R!|cfjo=iKp!BZS+!eR<^P-ve7 zTRLnAc0wPv(SVY4^(EeVBU^P{Z!pdp=67vw#C-W8#PtxC0~e>h++FIQ)8i-~&{v;o zM%?09g+LT5%vo3+lBRZHAZEHeynXpsf=8TMk?Y-t`#7)5oyUa_ryrjo{M`Jyf+`H zaC->fhrdVb6KQ^N`P^W?0~;!-HIk`6$?)JnG7b*zjic@27f2FRR!&o6rueey1T_NZ zQ3^1$!SI4*=7<}?eyAeO-@2}=)~BRmha)-2g9=T!!IB&#rUK%8(BhGU?yO1voMOQ< zjpD^VYvzX*0iw?XT%-erES#e4w^WCbISv3vyz3ohO{kK{vNwPsoUMpFq`|OPq!S`V zL~4(@@Hl6@O1-455hQ6|rk}Zh0Z%h>J_clQ;&L-1GBVQ`8;i>#uScf@<%9=A<8E1rB!p|;iCI-PdU&y>eB zmM#l}8&#(3UqUm{)`BrR826wQc~7PBP^rWcXw(T{tv zk-_nJ*lEjzNTW=YoY3Fx6k~X%>o+9 zD01Jz*xDbLXc;5+cMyif9d?M6Ep`xERJ6^*L{^Zid5z{T43j{S5J z{|A{fY&Z&fz!ih$U8|_j3*Ztafd4uy?TZWfWD|F*m0icSo);*#*lEt=F6gc;TfO_F ztIhy*ca=n!*i+nPn!GLDb}5kRH4h{(b{_a+O+D-D8$Bc2-CCHk^AlMOoZHjOYUDG| zFqOtx=EMBbIp`<)gG$(4>0UTkW!WaKAG2d5mwY=ha<_~I!Zieq(xo4m}3@l`h`sl-T4$M|GK)&y)EJQXP6v2XHPECEl`aIfdLSW_P%4`!Ia3iC;z26De!JK&m*Ooa0J$OG7xySYixHU z)Tf?FxO6*pZ5y$-p*^3fkLj=iSL(YhPr;(`On5%=;3hlg;h1&E^RA+1g5gk7v3B_3koF`khGf53N7zy767aSqlV= zs9s!wUfjOZgkYTOT+Pf6)7EM)(p>~{)r>oW8Xe}av-|J zJ<|&smdD*`%9HucpCzuom{U%CMakCsFE)P`=)T#nfw~=qW8YsDfL9I3U6fg+Am2h15`~HLLBbxo!zFBrmvqG~0zK9gvgAM-4#at-oO^7g z;^F)#<(_=BOy-!&WkQHzR@WU=Ad}awc6Psg5EU9cX%|lA-@h!1SWn%Jo@Jn-T^PE) zvb`qLIl3fsvfI%CHD+v>C}FM^2Hno{a3#D=sea$~ilA>m-* z>7!BnY7+&>e<_RJcZ$jSZ1wO?TKS(eR+im z#?|AoKhNib$m+z0L_S143Q^sd z?4^F1dKoPHVkehwY74!=hiV6-ta76xtk?1sP1c^Y#|Vp0rqB0 zxs&1Dc6mCzUvzsNDR_e4jADC+d!zryQ;u%qMa}nB>o$|oxz=sPRqJCg*=r+PGtL(U z4F>nzBvImUenE%g1pYTA+qEA%37uQBU21`|YyUJ4f<)*P!ud@{{k7v!>hhDQn;(;D(8f zSw3vC__oaEu)RyT?%YyYaj|K@*|89;Pa)nvD^R5FR#A61*JjE&eE--9JbO6-&tnRA z`hqWRIDl2z4&EJo7rYVCiiNB~vr!knU2b1B2h2O}wo$L<2Vqq9Dt9_P&Wnh4IS!j* zLMd*R2iT-vN}<)|wtyC!>gP%=E zMQN{TdHm_-^XStT2llqV<>#j@=j*dM^n(Ap*|6%}~koHRQW-Y+^`^uq$p>t_NF zI8Jb#>LX3s2$CJW&0MfDzod|f?;VB>1JZ!QfoXeH>zFgnN0FB)D%(0aMd4Z#*Vjw z1*FS>1#MPoP=(PFjcP-aSxCW5n5k^$?R#USQMQf8hk3=C%`VNuQ3T!&$;1YoZDmnc z+!jhY0vgRQL_285>^H!sV0k>US>~k5*PJ@S2;812@k?~4`@dC7!EO$c$D=*rRJ%N?%c1Q`y&b#lEA*k%RRf3$uq7p_zI^J`FKx zic5N?JTg`j`&R``7RDjBa?bcWmu^pcLTc_NTyLD#?SW{KG{oPe3lvByqRl;i4URWH zIMh+AK82~~dUE)I!{K)tnt@5q7evggO%)%mr*Soy6RJwdbe{;0H?dBDH)%(3XzlZtk2 zY~}6Ul50$`kRAj_CJF8nCQeEY*X$EEFut3>p9_#8X3;iU$;O!3g3YpHmlS6RTq1?;=Nix|9+D6P->CeF}&Zx>3(h9M!+ zz7VUU90eQ}jMK#D&pKT0r|+n{aj{4bu-#4_u5%3RT@+0LbZ|Z*PRO^S5ir8>BjgUg zTHx{KLSWqLJBz?361a4%iTuKs@ONkq$5BZmUc4-pjqw#0I!e!nT;k<-p>*=O0EtL0T%jp_cZ&ADa}#Mv(X z5y}q&4P+Vd(+qz_FW8yn=>>Fi(sP)WBr3Iy%HML{@+~*HHVV zWDY*h5N}lJ$##4*Ei`5}#E?r1jNi*C;065rznDYph_oZ3vQA1pq##a2+EJ)^uCMLF z;P$E>p62WqylQr`Ra@+-z8PtBCTl2WmqaD4$%YCyscuQXr@OB7J zeDki86hw?5;jX9U(hPQ13e2_rSq;`h`+(+aS=Fs=aNDY=JoD-`J3Z*mt#>jVJxzd_wo?@sL5tn}i;o!AVYZs|oc;Vs8$@U<#~|1I&ISd=5{tosV; z6Y*USIb&K@K`UJ(7+fN;J;T3Kc~T8b{)C;yeuVFK0Iz=ebBTPT3b4T{AKn`)?U1q* zK??RzAT6@V#oL`w-?2BiHM~nFEpm?Utrt$B*~`kF5&SyR!SrPtQPsDN%y4A(=r&OF zTUY~o9$9|l`LO!<|_Z$_jC3V(Tm)z}W;&D1dd06C9ssT~|QRb1hGbDY&YjVP8 zIY4d70ew;xyemg)SS&(iJ(`_A@)vGc=`-_b4yA06RMke9p{dbpp8 z?v+W8#7zCsf`0uHRN``!b2CMi7A16cI1J&rMwc#+HLqJG%A(q=5Eo)==?%ObVRJ`e zoYo4-u*Z&m(XIbm3{XIjG;Y<={XxpS%4AW=TnR{S_fj;F{C3+tv+-IcV5BL&gQG~i zLo-hK)!$=*ykcgvNJ~#8*m(6VOM=FsOI*x)Ui^{Q#}cAuD=ewi`Prd9$D;l`#4%C$ zG@+&*O2jwG)n%m}EPe0{hg>RP7U!oBn58A=1bS@}hyGNbQ;it{{Qh!B*XZQS25Tuo ztEP4QLB7<8L4rONlJO8U!mr@`RUG%EChJ%|>5@Y|20*!YqdS!>fgE>p$ckEa`e1^C zZTAxgd8;#mFRKJuQR{}cLS_^8BUul|ue=#{0IdY_A^u?y9WIsXgfKUX5esMv&MQap zX8@VOKBiJo*B=yovA|kIJn8HHk3N@T$OJg?0nKS%^|2Bcg95-Gx!89TxTm>vE8>dH zp>g(@)SKi|J%Uj|UPQ=utT?BJG%LL_{{c4s3&8vruy008pf9Wi7VkmIZobbYaLF(R z&9hS<{P=;{4i|GHVBV!S3Z+#Y=_!UAXXW8ExZH=+2hGXB!(B$eS*bylMpS91=MNOLMl0y zi3o2vo)pRQns*vKuhwS9dF&oJrRKK*81;=uoOcHKB_d33oWzLE9SzKr6_s&YneXXLjk)aV&JmB(_ ztD02xjP5L&Kff_DVe1G<_Q-?zKa*KgR@Yn|AyzLuMn`#2y~2V`t)s95F3zezW&afY zURg9&OzNWfKPXOJ;-2VqWlxq?CA-jhRSWZw>kqYCDM-fU2VBq4H&y7e5VMpM>cQSP zlRdyDp4f`7uYWe3O&KV&`sdo@|6p$!kp?p~oO*N#x|(@o@^kpYxSG)%kH{>f##M7r8=6b? zj70@y5+n0-;QVjk$3FmCOeWi(@SBH(-=LS~B^|}O<*zcG4ywmVsQ@32Xd_ckuFPKT zr^syOHs-e%KJ&c7P=rn7#ou;xR#|^^L?@X`+K`X z)7_Wl=WW+Z@f9YE>tXSmK#eNJogW&%%k!okg)p>6%WU@Bb@EH{Rsj%lIXg|iOtE*? zvm-BkRwZNr*iMZz`dwpd^}}zkoRxR39`o^A_bC&Kt6gG`Z?0#JL5a=r+}M0jzlzGYKJ6Mu*n#b}~7x?Ea91 z@{@0kyK;hp+P+=u5p58H7BAIu?i3wqHU^!-4P%kf__)Q!x!bSIkV4N-8_TQBai0_} z!<8d6p1P!;YDGShdh|5I$S#0D*I+@H8-(yt7aG6x7KLeQ#D)F z3T;dLYDL98-JDEKkY%}eH-0dszlP|dgB+&4j(3gZ)b3^>er=(6=|bXdJek71JKG#Q z2pI3^6#V>E$6Iyn=Ey7)Z;W2vp}aixxq6P**lT5&6+!WzR92qck{gfM&=j(KcP4xC zI*Qk_)yI4imwUMn8ZHM?s~$@HKh(%4ET+Cf27NcnoDkpGIn>`gzYf}a|PDkA^*WX%hyiOMkSmz-uRilhL z%v%x*N1Sq%>viB3VXKstF2boS#izzOtOt@On&A+ zYT2I-W%t@C=p4%oW;b9%8EOZ_dN7EGR}sv45c=#!J)%`;8sbr*iywQBvTBG^ zwH`~Dl>47Gqxi@_Q5F2Hm2B|C#8yp4JZt%1e0U;O8s!6_X6V;a9` za0R_@V+omNM0{Twy-i};IuCY*c2u`&rJJpCzz5CvdG(V=*`eA9ZEXtlxsYYVrB*X< zJzI+XdKk(hbgP+@_nEDjE-rryk2HjT$X=BJD8@C)m|kRu9%uR1vkQ29)9A)3vP7e! z?4oM-lO32_FRyYLwI4{G@Jo|ssk;2cn-=ewPSFLX?YY9)=ShZ@P7&_DHBNW#3+|G4 zG%b5YVzgPH8b|BlyHd>!AxFjSl7*rlXI1jzeG(nLG$B)|vR8+^M1$Y!35RXK@bKb1^Sd zsnNwG7(xKrkg+idrh6}wk>8F}%$@=tCCLF~*WVf%%Up5pTP-@EKM1R>nj3$a9TRG6 zRVRL zao7IXb+>;2;4>cKow6ID8n!R$rI%nLbf7x_p5Mo;i(z4J5terafA1!7R8Cq3^aJpl zg%sul=Tc{}t~c(7#gEbC#p*D^ljWx6Qcv)CIP{Sr8fyX~8wu$OXoo~?!nwTA?4=Dd zeaZZUy0*V&I7qj4_1SXk2#I!^xRC20#E;!6I9tOLK z`yd1_`4>VbH2y{tjP=#|4WCutS%NMJk`f+K*)@QsReoKc&Chr6vb-}8n3ycLamHf{ z%gz5jaVtc{_Q6*8@LvN*pKF z;9DEY;n=QpYegUE@Y&J3p14KgxB2m^RH>)g@x(mm1fLgAd1!yF?iyZHCN(^~gMOkI z<9$(vs==s5&C=Z0k-vvxHEcOwy#^}y%A$3kA{D7=rdXnCnTLW)k}GOHxbPir#vxy; z%`SJ_;ucyZjE;mUal9A?>?Do+mX0W1AEy~v{gqMic+l5 z+2+%XD!KY~ts+|H@SG~>_q4@F8Xi;1GGRVjD}$-!qoRyJnEjj;#a|;Q6WOiGj4*46 zOoJ0Sm0bs>DWuRvmCGHH{9n~8CN8XrpC#5yBZt7efBq4gh$S0BD%zW)iurJJmAEK; z%8=hYcWkoxsLO@|96qdENRI75zY&O&wwI2RsuSRXXl!l31KIMt{KfNriGL2BQ>$A{ zO=D6a+BT&JyR!^o>}<)^29kTCKnwX1{f@a%aEOiJMZyKgy-Si~8#~;}nQJsE)aAFun?Sx6uqncg$ZIjnB$V{l zK=!51oR)GdELzKfAittlnu5K`^4fANbU_YaPVQ!6W%R|K1-@F$RyiW&)h#k9~zzQ3ZY$iid zG4a|lswS!x-QvIIHYg^DFs@^36;TxMKT87h^e>(_7^`iLveW6WF4|ISuM*N3_=SJF zs4R#lO?}lIC4~&753)EWvgz}?vjeLQL44$8lx(S3+4oR>|j60*D zg{W5suM_SCJ^OA;DBJ=#G)EClLoy0RV&y^5cy*ZuL$@{pq1ia+7Dq*8!jVt3`%^NR9g%j~%W;c0`}lp|+>b4R-7=Md4wJCNEI3Y2UbNKh`(cxv|ZbWs&lJPa58rjY}FJIWS%z5D~dd%f~|9QS*?x>|QKTZapHzE4ED ztnuU+WANl4hN5m9w^IeITyWdV`CK76Zq&scrGRSOMHoFl7I0B5Zb6Vp3B;C@ zIf8CwkWOl->c<(Vp^d73uotyLI;asKVv#>0>)jnOK`{T|C2GNs@&1GrR?N%We}Wu2 zR}gB^1l@)q*$nQtPOkoGa!4m}SWCUs^$eY2&uvbTG~qlI z9fg2ZrnkRo7C2*v6vBR)jI(>DY5Lv#`pVJVIkNXKBWS;IOg3jfBS?jhF4qjg@ds!O zk=*CY#2Dw%Z~`%k@;bbtMUq5r=jguTVfqwQRU>-L+?C3E>tUR@seB2Cgjl=Ja6k1| z#S`#KXVf_j#i!>w4TX&9?dOk~6<}Qn4kKOIG*}`K(-M-W@&~aFFK9Ts*7LeRjMus1iRRZAUeFr%QENF0#x2x|GaU-AUfbYr$jWTYnByoo z%ey(Wl=qHstZ3Gw%eRU2tg(qa&A8WDX87(D**0*Ms6`;L{^9c5QE6eryl3^p*p~o3 zch!KCeE=zSFE6Ur?%H-lEyELvS0D{YHI97W?=AdUa4u{8ILa+P9SV*R6jp!loejn zN0{0FI8m*wx(PDwdO1WR5TtQ=Df%J3tufOrCX-GhF;hGJtwg8wKzrbPD?~hIAW!fU z&^^@lBap~x=iG4F)6Azcf`9KD8xZ@U(IFeYHUiIRQ!_%7XR-W`b+;Iq7@l;r)DW#R z$GBWUxs{eN)>`U^YtuOo*_Qx=?3TBTPT$pIrmixhthK{ zaP;n-rQLjhTEp~zpE)CQ^4OyrV4IQ4|WRtQrQ2!SIx)5Ei>Y&zg6$+E2WvH1iM-|x; zK9|nGqXYH9a_!a9*)FQ~m_BJ-$e|=Mud$G6CzquOxmH>}F7yxYyJ*nM(O4DD+* z7M^9W)s0rI{y-#$JG&g8s6AXIo=?(JB+DU_%!&(B+troYYI7M0rmRC+o$X{}`E}KH zS!-&D`);-EgllZ?=cjpvguD&w9FR~HMHPGOV(U#myQ}Gn z{u{|U5pUO>g85=6u2FXG<&{bp86JgEwwu&x0*mTUy+EUsQxH@c9(y*P18 zS)=8B1^BaY*=gRVEf1452pXbx`sG-l)kR5#YxhG-gOSjp`gOrr5}}qDK68kmzoh4c zJcbIBL1Q0&&+~8BEVygu7t-R~&%4`-(3nUzh49_6z#{v=Yc+);40M93?wIL(G|_PzJ8|62cXiTkh1HJt4}%m|iW%zs>A|G#Uz zvn4`phOs&Fl-?J{;43xt&2{~e1HSe^rM+PueI@!iClY>e^-QWYDp)w~c%OMsNncH!o2DvIHAW zSb(XuI+?EFdpfvMq-SqYeASQ@4J1)MCHVSc5qzRR5&SQX{-2M}7vM`-6Po;BN;j@h zzW$i6ie(>Dm4Y&zJ&8A#*)S09B`A5`7ZPoVkEW^CE1dXH%_4C1LaPCkmQmR&a{Q6L z4;zG*3lpqH(?C1wpT(*_j)xdl;lf{qex!(p+@uJMC-MPS+p}0Ponb0BO(7fPmi%NN zZ-5#DL2XF-upPN&G&%dFeT@0Tc!YBdxlCW|R`rI$RK(B2q_7%@nBil)j=Pw}MmnJq z2rrG1c=!4mOiKA19RIMJ>&Ge8)&@cM?`E=@X@$B0X@dz~H?SiHdj|!TpLF51r-GSL z=gUM0W2F)Oiz}(%$V0#PFz4NVo>9wNFeEdrCV-p!qm88*i1+@&NrO(a*BWc^-H^L2 z$iM1ObnW3ELVe6{v_rKN986gSAX^`pzp{pxd?1y_))vIiiyvH-yX67KK{+B;KX*WE ze<`J8ZKHqG{El)L>iMeg@QJv@9&dy+VSaH%4tR)teHU7IakUO-6X=Y))}Jx=d7 zY3k{b=oV| zJa{0uyGw9)OR&Km1|Qr98|2KB=Y7Ak&)$2j^P{J$?z*bFf6Q7l)pzw(V*Dd*+i^G^ zkIM6;Ab;FX130WKlsCTTc7^I=U3@<_zSx)zG+qiDU-A|}u3%gnS~>YGwf&eIC5!l@{?bH?rqjX;&k}r+4Dkv+y*f>1x2fN<=JL;fktNk%VI{ouHc6g; zrywpCp_2GUmS|#RsjIkY+l*e03rs+)cGHaXC!Uv$d%IHH9r9El6>6%*Qk5_fK^{b) z3{GUx;W3MwmtWF6Dn6cSWAtgTCkeHJD{wP~VA3K+&%Y5-6FbkhTzi}Nfke)#)_&DN zBrC|Rz`M88axGC%hlhwdxF2e5>L0mfVQjG`2ehPYIPDe9KFW~;gZFm7uXkkN2>1t4 zI#tK+^SJ`X@MN8;F-K@{G0A#Y7)t>bQS{QZ>%joWCd@PNCfgXG8!Si4v@mBKA&pOJ z2FVjxwTl{p-HWEWlDvGg43m z1tiKiL1sJ2|tEqnh?VULK?;;axc zHup?=_&LdzoS<-ZIyrErW*56q+t{l?F8X~plNP|bY%=?&T^3mcFa zc>byfJxjL9`Ctl-&g}mE$>vj(puhm7>~}Hz%-zBypXacg%IPNxx>}VT~G_NIk+2N=VbS2Vx}ga2f7rXYNZWtYx~W>Gpk;1%}G&?Zc^u7M%vAYD;eH$0WvtTqdh$rr)zkA6}9^ zbThb|nG^Od@e;gls9L@3bjjU1(iz$iF(ZS=(=?V>mbp#R031#0ExZkX1ejTI=l}{a z;AU;H4mAt!(%l~x-F9+#I62CuV<{-(wFTRD!7T}(}M@QO7~a#7lQgC zzGsQ)LIY7zOORov{G_2#(kzHimP4@N44q-?hMC%61=h~a?&Q;YI_WWE{Yy2VP=;IV za`xuSW&GFpOs6kj&VLFZTZs2&gC)Dp^)i3R%e^*LL>Wqc8_h!T4oZMBl>IhZkm8+> zDEm!_(J@@_B0^9t@@rG9zXljY_piYgwRaIGsFwD%sqDWVl>haB8F2r4z=Fa;`H8UK zu)$(ezJnF!|FeqV|B8f#@C!8h{|iR{cZdJ`zF@1s3g-lB|k$72l7q*6N<*tg8Z zbzeY2%1=BG zx5au&T;Qo6c=fYlWyk6M{YCx28Um{Q+A;niR9Y>?>n(wnXE5pfOWTW=XebpA~8j+@JD+e>#-G;J|1ifN&>i7_-- zNuZQ8A<9Yv^46LLFV(6<$4;UkBVE$dI@6zHrY+4{YWOEA=To0f8O;cQjG{|?9WJsq zm4nOcf^Vq;o&&b;_ZUB$zZ65;wD-kt!QRO_M21X zC@Pb!yNsJ{Chhx{uWX$?yisJB+0!%z>G-<^y$pG?I;H9d%|UB^gIVcM9)QeO%EjS= z2V$tL=?M-_0ZxCK7nkKQYO5;H6!%#H$7!Bui#LejQNeC;S~S00^xxI(6Dl*(g&B?a z9SnBHKG__I7%6HiyvDRyOnQd_fY9f}MU)&N>-cC=BI(+iN}d*hX@-`I_wOID)^^;|Oj-hrZO zD}}!TG{UGC%ed{LnG7HMe`jk7-aU*Me|+Wi_2PrJr>X3Iz2|%N&OVwTDqB-@cNQD> zN85-TD^eiTt{Ow~fIN5iJ~~yNKcM}oqmb(-L*KRX3hu2G2);JZt=4UX@D`8G-Nnp% zu^Am`bMa^0OaW-glbAqLE#4k@07{qb!CzsUvUdbfSjaRGYt@@~iMRJoH%aTjv=PD+ zq}Z8bq+8y32n%L+$+{Ik#Dj0`_P1*}uN5^IjXjvBupTLo z4P3CUbOK1HtD@CBt`m~lPCv5kIq-?0@G)Ey53x3o0rSO=PI{XQy+bhy;zH}Ao?Dee zW-htrk1dRJT9Xri_cc1#tejP=eQN{F>G$}ZQ6BQW?Z4aFRfZ(aOstmLwUTG%uH=PG zSMvcLEjNRh3)Q7b-q)#q-}iJnf^P4d|sqDF?cv}pm`p9(7SdeI$T|YXWs3I^JV~%8kD+Yf5t$c+TJS|o}7&&Gu?wlZIkkRduGeH zuC3ZpALeNRrCMK7>8KC&w2-}+NZ!g~8Q|Cb?$HE;Q2sT*Ao70=+=Ki!kskAavr5Ll zhNA!R806QD{Oj?rf#qW2Mxvv>*wf;P>hCK5EApQZY+G6Xf58C%?C}5C7i^V(45qU3 zgu3Zbct~%`P#8=@mC@dDt0&?RNyp160ZzmjCB$3N*{zA(grJ&hSKXtfdtWwdjn{Ek zn`~Im{wQyc@ZuOc;oLUnD1$gx3NVym5r)$pr8DVb7M73N>YWT9m^c(tX+fB1o8c38>Y@tLylNOY6L$sIumCbX~J99c4Um*T2o1ORFqq{?5H2zvH6%bO`InQ zBL7q^=M{0U#!`5ZP>+5?mzBeOR8^bst{>Qq-lKBSSinh(nx4vc_1zClIizxtCEwFz zI{PeP#rn~LvtW@#VTko3^7{Kv1X8Qp-_ykM4dSPhQApjb2lwSxm^nUK1b1S$85zPp z%6^tdO(L>D@>vgd0hMd9I$>VF!*MqAHkE5d%s{eiq*~j%HD^{&Q`dLRCa%8<00puFu{RH> z{F!FCqk16|LpxNibn>i{765`G1p0SHV&kkbJiFs}Z#{@$%|$)oC8F*5sI{UonM650 zISvi(FA|x!8sn!T_bV6QW^#O5@lZXD+%s|IJ$f%mz|5EA%<)MpBywt;lxJ_hbRnI% zuoN2p~7+be(|NB8?6{4@Ix@KRt4q9>NX>UbN7EP6TlIoZ zNo78EZ_8z}FmjS*KKUrGKq&!`7d*a2TVY`i{25?x&nr0yc@Im zRlP^1<5Az=rL8Dhiz$Td)~xVN$D=S-D_+{uQ5YBNuNLaW7B-tiR-`bzT!z%7OXXj4 z3s;i8DmF`OeUE^-!QRRRAx!t8<(iFlmof838q800EZGa$rmZHpPp}n?_krY9rBHP!EYlEy`ZIpjh$1_&zQTtgssx;c2c7DCmSQa zn=7pFX!fz7w$u53as3g(KYX(%tMr*{1!{Qvv@m!)qGjs78_CfgdihX1(l~THg7>fP zJeaEAYBE->$6>Bn%?%qQ^-L)y?kmukIB~n9cPHos-2LAHf_2Ehe9P_^wz7e}c2X}% z%6cdDz{$JsQAx5qR8{6eNgi5few}e&nC(_tL4F94%O4E`9sG1SyCBWxO;5x&Lzm<9 zfg`uvrqYV=No?7#-)~CiCcviApTeqVcWolt_Ep_&QwxIJaWzlN#m5yl0b!le<8HSXfi!-2SERU{$FAkp_MP}oXd=>V00X8Mg31!f1cGnfo z1kPE`t^bgHS-#A7*W=)r^BM>=E{pz*@S?o?lb7`>9$?JsXpgtI^;(KlqoB~4_h$tO zErW{npVBxg+o3>b%najajz+21;iLRrIi*pC%8}otbCW5|vf!vl%lm~=1I9L~qx+5z zn3Eg{)E6-tSRRocz*4XJ{oXFG>Ak&^i zsY&b8qccgw3naSXrJ|$p0>6(6@PL#;TEtoxtUnO^K4Pj)9=LbW9}ZY}C&6dM_`%d+nMjqVCBxPkVr|tst2%^>T*J`+cbQveNGHPxX7$d zL^9zL#j>6bg`f~c->z!!VYH>*b`}YWr(u6hp0Yce+cHJ%ZejxCCa9Fbc?Js}Y!G=o z)Hk)vJKYK=h?1bw7Nwi@`J6S;@xq_Fc8td9KrZEVH4S5K2%%>Tv#}asTp4FAHqR>~ zK&&+)574nO7%y9rm*C6y{yxCc7`Z2pWV?2O;MPNP^*Feq!Jl8#uj8o7>#$<|x!wM| zW@oM_8c0cmu`@5o>F^C+w5mfX#c9cccdkRfEVsG?L`mul`jFuO8N=}|qu+OII#l8o zv49aUN^judS4As813M}ry500$vOZ#t%GGddN=S)^SLC~Vrl)W9IWHni#6h#1XUcqQ z$GF|+?QaeuMZ7_gQBssSMA{AiO*N9Yo*%eAaeGzd;w1{<&37w8d#a}hNxl)1xG;ok zEvTvX?0S0pFyM#i>L&f0U^B$C3%Bhx*x`2mckLwEWALBNOZ6QK>82}v*8L8X7NobWga| zGegUD(G=KXO`u4!!VW0va20{6d0AxiTPFFmc`Avo=PTQ%R9{k=FTNHnm}oqy_C=Hx z;?DFZSq8_eJo#`oT*t#@q5x869=zkuVS!X#C;sJE|L zxk9n1a=vz*rcx5X7PBvqy*=+0lELcv3J6*=9l zWRuY-BB78Y-7*{E!t_1l}omgc7Yvc~pZ9a-2z3G5~_ z$ZWYrbs@fcC%$0gad$ywwvLmC%|Wwd{SljR<7|j^nPIMu^}mwr@w_!o`EI9+ zfz&{_TAu12L0`>c=XJUg8+V?8wP@#Th<6z(LLoosD2i z57gh0X%-=n5+J#A|7gB*?@bL1fReY(KbLerKc)n{tdI*mpC}Fk1D@|Dxo-^#eTBr% zTMIW_q99cA>6o4-)0d~~e<3-HcfMgpE|2;!5X^+y z3;vG@<-gvd=dH{H%Oyl90zFwy#TzBt@O#pkeR`aa;YuYL!SRxFGrxT{QAj>k9rVYWYPAr4PXDA7*lhDy7wP#Yr^`?k*;A;)X6Ksmp`x7FzG3i^Gr`!KRb)Lz%HWJfQ9iVCF!eR9pL zd!)~`?+L~0=LO8Nm|jaoB^a7w$oR{ntsXHCP9`97;?WK85^D8vzdc<>133?&SFwa7 zk7yku-V#^ji3^r{V;f11qOpnsKcSgp_7=5SE2SK+CZ#J-K2;w*)VO6mjbzav$wr}< z5)FpxaY)%HHMRU=+4GXOI^BDUddi)i@3o(qe;V$Jw8^9Mr*ivN(@878(lyz@Vzqn| zT71%Am_$Xa0VB)xOS(~1mO-QXG*WvQ?El)YXP(xj@Gbsq!CbjFZU!Wwh&tz0+sP zqQZvP*;~iNh-Uh)7MJr7(g6nNri=vm`V&Cw6a|x;as9IuNupjDCG+I2kIrDSFtO=k zLCk>cO?F*o_8Dl?SN~>T+cEJV-GVU1kwWGy+hb7oHTXCi4awtJi1pZOlPOH_r`pDH z=Q96I!!)7uPMfKO!GFhixj*jxgxrQ$kq!`ujr`#IW zSxDWK+idssGRU8XFmzBSIF7{YzBPP`wLG&4(eprVe0NW5ckev(baeW4aT_hKt}Pju z6~AyP4Huv-v#F}XijkuNjqhF@900YBMzqiR@347DZnFja>`qj2UOdaPR_~o@&~OVv z3~RtA;9rA%0fS8II3yjn2ef8S((KFXS z*Bs(qxTUt;6iV7ExpltSrOcFnr5)K~kFvXcC+Rq{lppNv4EGS?8>R!)oh=o8VhPG& z*!oiKqJ{tg@pcQju@i>jYt#>Yo5%B)z#<)#-0W*P z<5g$#sz*q_jibr!qMYhy-CnLSB*7UMeI&0d1<6(l${~=mnRDs$(tJ+%c=1zvjc%tDqGjUqdw{SM?AM9x|R`=azV$4M$ulL(IKcouT4iG8sc#Zywy_B$GeZS0lvg-1bY?B*;ga0VfJJY4_`^IqTTiM z^|WplkcCEe&BM*_=@~wmEamjhr1RwZHt#GXLPocGJBgDR@(EKV!^ba;81Jt%SNsj< zmdNI`p>}TmVs6hDaot*O^Ni*mQ74?qi&{Mk!6`1NKvE;g%^Wq3R13)k3sb3ln?Hg-ot8CAA3q*23Rgac@JC}JVM z+xRE@@mq15jn_|Zmc;GoA_McX^_d|!2+hdcFU--3Zy)Okl#k^3C^hSMGp2n(*FHDv zDXG-gjX~(v9=oGrRt{V5Krc5s&;B7Njh=!84>o*0Bc6(QU9-PhRmZ8F%xNaZRQv(; z=AWmR+B`X+VE=CFbJ{(I7m(*w!HV0o2*fz)t+L9YTbSpt%OF3&N}41 zRYpT?QA1a8ZRJ=d;E+gR=-UpwkzP$>;aH-fJv3WOQMPwLaDpA{c@wAWH$(Z3ou^p40 zv7VW27MsVDfX{q|fr1yo_cN-J>6JYRbwx}1MMuGL@8-tyXuzq> z(Fv~gMx3Xf_L|%TBXyTQoQK8(jak-6zV{7(SCWatUc&4x`QC$ERF@{;>|&&;xJI%F zQR6{=N4qE7oo0<}mKci+p)$tOahLYb#g?e$aK>k5jl%YgtkWkmY&)LGDO-g;Do!_- z(CT_TZ1MKR#tjFo9+TFB$iwiGBqeo-d4}x(E zI7Qy9usJ1Tr$7=-VK+1TJ}t5QiU?7q8T=7Fdpyuy-5$xbP21=wl*U_X3N+cGIJBHk zy!Om<>sR?9BO|lvk15SKnV1Mr3EA2)7!OZYs(1X=pdTGPdA;Q%s|WVCGvn<}NJ_ss z!)bjGx@yqk%*j8-#I_a$c;hDII~i-vA*dAB7hW;3FfEL_C84Pv?3LIl+q@f@9@h%C z6RiTVV_N$u=R&k2b;!BTPMsKtnHoXF{O&rSY;5-{dk)JI2$Ldb@+-z{TQy0mL?t%% zhI;*QZha4v*f=84G<@rl-Kwruxwzo0#t~7ReCxf#qHZDpC0)AANf?{H_2`n4^>og+ zk|~>M@iPzfsPwpuX+jI!k9sOcKPV$;_MK%VvqbJUV?R^N_fyOy5|^}7l;h!xPP^}g?3{t7}R^WA*)EXDO3DXU z2MVHgGNY-!9!Sb=na0)hhQ0IGBMf9RHjAc7TG(q9#q_K`=H)R(?qOW=>(7dA(Z2~{ znR16e1eD+l)rPJsue*&P1f>^U?+|zp384@1Db*E9Sabj~_4*LLcA00-FMeV;q?EA& z_zB`6uWO+d59$_JbkB+jH10CeM!O0%7OmBt(=ga_G7iuIIYsHV0XXFM2}2B@8gY$B zxju2U{Cc0%g;L@!c7DK9+v#)uBWXibX;k!W&Z6QV!Li=}ovO^Y`(@j#L#N7twLq7O zX%R$nmCXo)xGZJsI|`zru*bsLkR3&x(Q<9n=J_igSc*!zkQ$Rf>-o`%7c^eArYM`Y zv*5g>iS_I0X1aa&DGmVHSq!SF^>tc)9RHyWUVB<_g<^*7>JrkBSptJc;9L(gd*k&d z%TQ;_+c!SnNxsTM9W8Gc7H^b81T%06H`e^3GCX@twgwPQ7uKfK1d6T@D9y_&cOltm zzhb&p07MHHv5%aYdzG%>s4P7bvSsLj{FcPy&?piv|49gId{1`J@)B7>Rhj@YOQH;B zvj3x~{HuhhG_i>?>Y^0c9yI=Bf@v^Zm*>fjOih-aVTZf(;DUlL>~!>^@n;)Mv_~`K z5A@+g0*ve;pbZ+Z#*2|4)nY01u)u*wMe3VlZ0yZKHz(N{dUH+Bfc%_ z8CjjOHjkfmvg^k`+`e4V*+Q)eZL@x!D1<|&oxtaDG zO|qD$c+}g|ea}2`r0-dp0J%10*cVlhx^eP!HNGGAp6w!{BxOT(MO+vTT*%mo6`~4Y zfeS9NO~p%2_f}!GVRGq9%C`$H5kwj> z)c3-hwQ)r|$C90iHcj$N7O=Lj8{R3=crpOeC6`dX^<meIGi=zQ=W1?B&$G=;D=z3p05xf5--EbuiVZ6>RS+5Y~5+sPDsF29vjo` z&&?<^mRpxv#?NUnpvL)N`4ulB6Km9Kr2~3lPq^%_ z3+6?fBEIBzf`U8AJxwXo2iu^ofKGNe8}%BcYs<9@mMQL&;Y(uY@*TEM+Zkg0WWh7Ct53AyIRos7%3MyJLjso1reHIowRq`Z#;0u|P3uE~7hnWLj8VsMVnOU(Rg#>Fk{L9px|_k_Q)Bj&AXc<9z;chObgKnwu)`HT*< z!}4oO?P}5M31!>Y_NyOdz{#&2{9%o|TF;Z|MUOsjM@&9+(u=-4F2orgR99?X01vYt z8pc)P&H`0BT}D4*&IOxw3d~v&cfeXaA27-(a!3qIkt;UTJQmiwz3>(*Uk^~rFb>ll zstc(!R2`?n8is{BMaOPUIk20w%IOUsVK@52aT>hVbxH@?CL=7Ec7bKx{q}r-H%(N zfr4ulWCsRrinrx3A|Ao%&cpaq^*GlW??RtB>c1w)m%pa9na;!PQ}tWdnzj<3Il$cnn_5ij5*_pb_m>==gYg#m#Ju#Bg zTamsxOszG+KVIR-PwopW(2hp^p#tFmEplIQlUYvlTC8);&-NILZ&ytl%I~YyJq(Vs zoA)0&oJwuhcy>E~wkWOpL{*RRu}$GYUE)!m^hxSN zQRiyOZPM%#Nc2*jj5A)Rn|%ki69a~Nkx!}aWl1Cvx|13-#tx*#^9HLB!5z*qOf~Ta zKEp`Z{`m!Yu~>h!6v8nmKYNLmg*XT$cpv45Pk~xBUf8-n(xN6vF+e0v+LB_S7gFI% zc{OPNCPl75Xs6S<6W8i##_c>Z&bKk>UPo`7zla$lUs%avj7!p?J6Mlfw+^#u{JGx2 zSp0~g=EDe6?DX1F&h6o?TjCjAQ}p!5PdqZJ{q~8mK|T;Ek|OINhN+JaHC>_DpugY8+*{J|>nadpXz=TtOo6=LsJ%CCfT{8{6JXj-MUy*}qlRtY*cB zHUN}e{8_qnIDq_y-rwqMclUSa@4Yi!Wj!`So_?-1-E!Ih%PZk^pwH4xlC$nFGe-3r z(~;0Q-HE0K=%XZXy};FBe&s}Hx!bcu*C{#e>xS7F^DwF~A$)+{i?If*m0Kg`bop^CZt_9@K>wNJiPN{ImltNbMW{eXC{@(A9@ zDmd4pwPL+pf{9y~%p-2y`&Re!#4+`4H@J`l%Czi)b9S+s|Ag|=xZqJ{6O!twL_@?t zyD8F%!`{F`+2OT(L`MmP~ z0kk+QQtmK{1Dosx=skGNt5s{Q?VM;=n_ea->U?Z29l{;GxiV{P4K6ffBT9(PXj?;|63t9VXH~pCp~{du-U4wi~yh2NFr~=3{V(r zyUWLh$sn5-RbWTv&72-1Pt9S~GM)LLG3?MUpx?ze>b9K*SIxwfP=I<@t%ZPZi<@2@)VJW;Ee-u?ln-NhfW5vu5YE}^86BOjYAyhrb|c&}b=ALGCQ(7}>? z&Twr|?uOu`38i;IhebRX63SEQF@Gh0Nhz}c`@0I3Zo=^AuB?{6hjQg{-Rri}daWlg zaJAN!jJ^KNvuogQr?Pk7+2C^@BQ3&)Z9rQ@AqS%d&C{Fr)%|d_(?73xGuiVt)?@=& z6OCG8oII{&Q4>)*C!08`3(##e?pE)8$#d-T9@5~ZRrBW{QYc|&?i=Hljb9$~^KFRZ zcOc$2RgN~>y&T%T9yO0z{Sf!c{O>n6n~Yp#`Aose-mE~HP5+&R*J-82O)SoL84UUD zw=WAX;1>F4W%va()T;%j=TcFxIOgUb*d_=#~)$&_Wt? zj-r>5SVl?f$WP}*yzuqPp1+{L2wok{R%1LBt~dX5xb z^79FRKDt-g7WM}FqHj(QOrkSNdwtR$-vfC%yNB$+Om+*o}8aWy@r2V|@OYyBY2 zpoPVCvM{)or~ath0O%FlM2de+p}V&A8W6mYR~ej=y5Zk!uT4qk>|g^H2V&}RtS?7@ z=Cqk~B6p>a?&vS2F6s?2EsLzot8AsJXINonAFlL}=(z~y0Ef*;1NIA%-JuefC}gl9Vh^zzy5uZ35fk! z^xLH(g~XzL2Smn8CV90&*aT@E_p15M;e=;)zJQg-X@1aoH+@z^{?YcxhJKxBq&&6V z20Dc~c4qiRNak$etX%MPd+6d$XET4q#@_neT zY&oHa+2R9-@!&B?d3GDt(XrO4Zfr*^kNAoYEa<~MB2adFJC*#2HChK9?2!<;aMT&V zwlG}7j^dDPpeTNw8%C|#JTM!>+))L&dHhHx#QKf?i|_d%>C&^o0uwsoJC7uIP6KWP z!MLW|(TIbU?k8u_`&i?=MEc`X*);anbomXvBf7-u@LX8ilcM;1b0^a#R{tu2k9qa! zjTAM_<{ zS-0YT(f@j|E#Uh0%4_u=|M|%m1!!;)@c8nQ66b)ok|Ve)H7a;^vc5ZHV=l;3aB(Ds z()Mcmf;3?Zo&f=Fbe|uYy0}Q-4xDNPr@mxaA;*-S;EkJNboZE=QXsll?c{=Q1 zfCd*yxfSVJ9Du|+g``bE6wmF=FL%Yd{$=idtQO7f1_E!~Ua}|C2-LXQJ}I69<(CxN z(fst{{B;>{i??OuQ^~6RQ^E%|~?^PO+S zOWr)0%nu9A!A}{c=ZSm@NnUr3FXfA_4kt@w@}QH!pNc9UPQew=K}DzOp!k5Ug)8v8 zYy$0c{Z0GR+cP?TU}vNc&O`IplIxeN6m%dTA?E;9fh#aSg5E}qxz6g;WQr+FpV`}) zD4KqjZ!fWv55CwEQ{Kd<)<)LmWOYS1)(_t7-Wn9!2+nmyvlU}woE;BI=gt}*+GBKa zYEiL$33q9ED(F5t%iHs%>^^Btg}fg;2_XDjP6*SJ|KOPaD#gLd&;v1)e8B$u&gD_I0wvEGYW#f~&?!zi#k&FwT>r-v?vqpr4mEjqW zwr7RUIcI0TypiXwF-Y&$16AHcRjABq3|ZAyXE;+Zp)OZva2mPtFa<22s2%#{F3kDp zp8V9b%}9(LA0GMPQ<+39S*-t!C02wJ66vR%&JTDY#*qKEpq?qQxqGsM;bMVsheKA03@})WC=;_+&VOUe03*Xy4dRQPEE$;N+}kjnnXMiZwUH&aq$NK z_GaC%W96Ou?EXv!hq($n`_*_p2tRU~s_~%Cn5snE;`UFHLCi|h_an2G7s2&*k7|tK zxrDvQe3fq8>Wx3%5Y`;!v+76om6yAy&fgXRCV9~9aVw~A|G?98J5(_EJ-EY*zXj;Z z^@MbrX1}+Y`?=urkKRkA$fES4;VA5jL{#*vB6CbiLzgtkBAd>T^`xR(@_aq8F?w2J zjKfRh$NmKpNTcbjOCo_E)4N@X7ukUEubM|^)RYT}Kei!OkH11-#T-wAy+>D6KbzBP zg%ff8Bb^XOuHFsTrf9w`25-zLR|g^U^AbYugPPQMp59dQD_73y;C3=T9)24ROvE+u z=-jeZ6ard&*%MFExL}WvcMUu`;dJUMZ}g9|iL5V3C1~hK^K)g6Bca`&oJ_{ZZsXgdA>1!c}wm}OQpRC z>-GCnpP$q~h6N)u6Ml}>_IF*@SF4C48St0#370#}0vGx7KFGd#9Zk=Ezruu@yz<)_ z-+r0xz#@ARu@aETRoj+E;O6;sGwE%L1uk>R>j?Y7W=3r`e#WnNhvt8GllkJy=--=; zeE0|S3s^f_k39C8J9g&jW$(n!on^)DL$8<6U>48u^b3&P?zTr=+pM{NLNpGC!2^Eo zH*u-R$H}KVmdM91GECF!{9Bnv=)AEl1dIv!G?57mn^Paw_#iPeN0?`%yC;`?f*!w% zypi;0>P6LnPxE2Q8m)z==Bs&jfW9;&0R`ce)MTF}E02yHyP6AuBB#a8a13#%p0W++ zTWQpY>7Q(&r$MFHzjn8qZ_1#G*VesVeJxxbPdHLT&KpMXhTpVlUt>;E^!B~JjD!m} zEN>BoqlDW*)Ow4GO5q`liGsS%Z1$tnff7YS;lUtCNkJc^_M^?M81FQ}iOCo<_?K^3 zV2@f*FVlc0TvGl;FSFFL@O?#as{LCW8LaOs(C_aF7#PJF2W5}2PpEX_rmZKvLNLm& zzHg)-u2TF^tyKeyYI0XY%AdE2E@ac=S`)dmz`|A#P#SdC=YpgQmmj{}zYF{WZ8x68 z!3Pt9T>aJ9Jrw*)ZNjwviiDv#VeB>BLe(n{*hTFNG*>ml_dDv9v76E+6CZgFcs>QN zpwyJP#meHPGWst5`) zPEVF;_hp3R8*TO1t9{ znpRG!nAg1*Nr0es3I8aJ>L<9f9uHC*D<>7f3B`CV4Ul!8BQfjp+px*OdIn6Ncf}jo zF?ytVa9Y?(fH1eXPjTVj8`(s2i3Gelh{B5NAP4(ZOE6U6fM za2t0oM-3FOeu}Dyu^Vh?oPVwPgf6?|?8))@yiSLdqKLpUse!~M-cQ$(Ph$p}h$x?^ z@3rq$#_r8xqwRXkETIkqJ0%* z7>1;WqR?ac*vV6QOyNg5DN8V&)c1eJEuGYtf5w@;bKz;QTI&mZV7`{jy5B>U7~IQa z_*u4=NzAIWtL7&aDgz>K*BTxb=hbr1d4VPe67mW#5Yb@n$lqPZ9|sFtj0}iI@@ERg zJ>Lf-B=~!yC_E`o1sRj&KAvmvsbGQqHsK@RZ_fNqHdC!YGoFzOrb~sGdCc$IO20Az zqT0IxZdZZY!&gMJ>A!G=EM%Ffzo}jz$x3eg8euX<5mxt;!Z4-`rbvCA*&$}G4#EpY z(7)E_2tA+AF#77}$Moepn-*yhwt>Rw#A$K$%Y)ngolDm%PU~_%jxb)bVO$i z*$4G!gQg2OUH=#7s*70GF3=gEqtNpt_d5R1Rd}jX=~=3iKeg90?|7)e*OqZwX*zWo zq=PbM{SLr$IP&gbDNUpWa1}!fjR` z{1TTbdOWP0FV2~3xjv|0&Y%Z>Hqt=9tsDaP$7!?pnrfiKCIRzC$8qaTj*3tpjcu1b ze+?Il^HBSY+sZvp{AYm>Fj?H-)z1QEm(&VjRw=%nDxFR zA+jI<=P@dilR~Y-FMNrereh?DPsRF&;?W1F0K|s?>G|?0oSnDLhW?>-6|#Y_)$6Td zU^?WUF66vFmemrMDYqgyw%CeYivV*KTxd*~gsW`6NvO{o8en`2P&^oAVX zw@2F_wk$u8q$~xpg|91UEC{^&I5KEp#GpI}r8!UW$cm~Olf#;>T6o~LA9v&rtwic}* zix-$&khNtmmRX@~7Q4)gvMg1TPpdUKfW)&;*V$A2mQ)=eD@9gRS%7P;sePb-uvSdg zw>*h$*Qa6^%&-286poT`!(LTJ_DP==p>)-dp&4QyN`uWh<6!Q?bs{tS$4WI{fsAV2 z{vlMn+_2bYIjQd8W+hWL#y(2r&^hj-JH=e%l*zA-j=C8{b|2+B4exyVDO3i7Q4RXrj;A z&Tl%wIN3dsl{jB|e2*DTheZBbOeznPHx+-z)ibw?DxI9$)hAY1e|NbqLhki~DX>G0 zHznJZhpIegV|x(pj=UAgI6Z&Eyn2iUwWuNi`R6L1HB`yJ&>O!k%w%UKq2U?%a*^xi!R5bM(+=CU#hV~# zheygq;_e)ZX1iXCI|;mr%BxWtM6;Q&+3JT+ZpZwu?rJfO1de#tFyiIv1CEH3jv^!) z8xbTM&GzT~)Fs!6ac`1@!`xc^y1l>3S0qhcrfbMD#Kp-(*5VtJ+~k#Q(X&oAs6|n(PXS$h`#-KXONXzf{iq zZFm2|MIZI_5MhQiyg++jh)6NWYsq5wL{EMSx^NYBF6x$8D<}AVS#u5A9{#13 zRB~?jn97?+!Jl+HQ}%&_(zRpJn=RA$tCsj3@GlV}yGs4Ka2&sXreWmT-r{iX{d&E9 zorDe#naO)e3p8$BAnt*eVBH~#j|Jge{t?vSBR18pZX8;Ind&ai8ru0~sg4j>sVEA` zQPFjIaZ(owwa`JPrHe=E59*ah0(S3%*Ubn%N^Hn8j@6Fw+werS9nYvaz2tNkheJkm zpoo;$eQF+wViCs{f%F-swSpY?06acLQC(EeL0e4O-U;)&=_RfF0Pl1ug9Lxoa-xKlAf8>oz0WY zpDy&0{wIY4TL-MN@vU)-w5;Zi(eowTKFl}#AVTANb)jfVY!jcQDuhcQZ14DN-O(5F z92q(u^*dqG>^Tj8%aP?C)G`k{Yc|s@cQ!%ESRGw~r^UF?MUiEa!Cm@MMFL(6rVO`I zQ2?aDs2NmZZZ8kj@)wnHD(c?NhLYHVsBM$8=i8 zjCA4}gllzca+|f?e@Shoag5t*3R6b#*Q!+7f=!KxIk3u^7oaNU9ef{S=Pg6jjBw6! z?T%(!5OasT+{9idV`ca{3qFj9GnOG;x4v}t_qCQizaBO_;41pa*vTpRDR55P;PK_V zS1<#M1>bnv?xt0<+vlV^17@5}^Y@pH6>%yh9JqViz2fodpz;DY5C7)lS31dWb+)Ic zJrmRZ+K*aphu!!no$;t@xDZtC?7-*(Hjk$1C@z3aI{RaI8hnec0=I2XU%`U(#@G>s77elmr$q%a*v zd9?H2E-|)aiXlcCt^nq8VAavxP8G)$Z}e2RBW@h-36^X!lAP^X z)UTm&OYGB{Z9Z3iB8;|z7pbBqy?J&@qqX5QRf(&@(>}V=VME#=ScD1?55bkHYrd!2hbR`z z!76MTcU`{twL&-sYm34l7dV;oT6WYfF-sM3O~(SAvnf&iP6fb1$I8^p9rG%1mOWH_ zU*}%PCqtZ8P#SR+(c>+>Rw*x*tb1@f*a$(ab8u}fGdKMlKL07MB9JL-CGg;3cIdJ$ zhU^>eYePmbaDrLH<|7RcMq5^5=s91us_(jRt|&KT!bN4>!{H%gquLpBy1>I=TY45{ z>i5Bh*)5~f<_FRq`Yq-y5hMyZDMQ6g*akyL6lDL1(y8Bti7Y&(H&%b?qbgA1?fI2$ zTgkBSGstrB0T5Gu>TkJGt|rTRIL_2smJM~F$V;oU_#cC4|Nk+F^fx5dv4R?K-SEUu z8+l%m%Tlxv8#yKSYx|LSmS#@JoZvL3Ae4W0vE?#8@zfq`4dcAT|Av-?oc0gH5L6Cqm&Il586M}YNhK7=46h%? zNzS<0uFB;iSA`%I)#32@wBK{Z1}Umis-CmWL-^JZwA%hM%qeOHzSdIo#Q5)57m<*`*|<+6MWLP+orcX zUD66n{4irL*W^(}Or{HU!H_2)bfz+(Trm5HpO>Rj*@CY5khWT%t{)sjliZ)Y;&LO^ z_Q`ub9#~tPJ|aADWo!$?Fc{hDmf_2k zR3yn|1?%5k_hiW)wz%)e6uqkbd=x5~V3Mlz@a~;mT zY>bG*yvqyX-**YYZ1W#rV#5zD2*EJvBdnVpgZV)Pg&gG_cftnSM)_mH-{O$7hZ0Bv zl7sgIR@u(vxdlW1@P=|F5J>*bt=Jt3@Yk4*0m_2^tf~w_^((k_EuzJ>(`>+>8d?5p z&a~Hk;=uNl2hJWlR)7 z;t96FXD)<#b@u~NbFOFBx+<}{h%s#haEy7#1`)&)&|Q#EC)ag40`2Iw4g3iU;KkXa zZm0ZpGejc{rr1Xnf^Fcz-k8h%)F=Ofy2`Tul9BZ;Xb)ZT@gvIUHXz>bwxHZgkG;Df zQtatRCBQckAXp;B^B6PbHH1PW(Og>V;aD@h_hTvhig;QVH5|u=7*TCn27azZXQO7E zf*}`u^lx2FWopztPLr>`9TQb2y|Aw?ns2{dI(ny2#9*}OS*iUlQLlM-26W9~=% zR+hm$GwV+7CCK{_${W?ug<24YHHi7`aWl0QI>b{cC*MyC#4wS*%GDZk$>VpK@-aSB z=~M@gj1`yK|Di1Z{YP1fIjywa?=4R)SD5B#di;6Y@DvQ*WMd0aP$<`S(EI#A`r02f zlD5QbRN0W;W9@I@Kq3fDkL=>OZg{q|cH$`O>a+A=R%bD;{ z$+_*mcazh@9ni4kg&u_8h_xZKO4pf8ST-iW#w^CR!S1&(!n}>s$`QXy{2pLhq$S$1 z!BPK9a{mR|qWDnD@lad%G#qH-#ceiMZ-@8D)H0N2zs>1Gl8N%1Aap`9J=#4wVET0lysw@#Di|qqz-8%pw9edBV zyHq#_i9Y1h73~A5jNX`s>%$j%E%-pMqxDoKOHjCio+&qq1_Ty|lSm+=$08#FBnQSY zgh_w2l(I;cgYJ(XfLudj<9Ru%3$1|#VG6IoJI_anFQKn6Lz6MmS%Szns|sG44J);r zNc9H2Soqy%TsBdRexjUGS9mpM1i&Wmt-SHFZbx#rFI~R#5X^gZM#G#U^qunW_Pb=awj59@hi~(s0itgyT z6k?WJ#czW5ALsO?wxrjQM2=j8*V%s%ky5yKG>gNwsg!h5X)VBE46d>(2IsW@aKww( zr2UVzis{F?1UNHBKrb4vEZ$H24EnFbZmH-+OClZPs5~{Dn?w*ko08P4M?a z=T(<5za|MIM{{6QGH~ZXGbfNxVEJy~wRz$#+pAVXbtS8qfX^$_V8@?f^hAO`a7R1G zKt#jb&n8jj&te3c#||CU?-G`dz+jSNh&aX>qR)znWm6hd$ZAe3x!#e>b`%=7&y65| z@A$Y`jJ=l19Vp$y^L5{nh*?v}B->xkO7ui7m36iZIrLKZ{xXVMi9FsMeG+3)UKfiB zP}vGl;0p*9Z>I4NJGsWl{RyUb$nB?#tJ=#C1H)Y0@Gii!gY!d+TA4GpKnQS1OLa!| z0{8@xNk;YkpH#Lb!i28)4nJQ(9hB_g?K?5V@WO6Oa)yR0hD8)Q^i$y8ncFAt;?BG2 zpJhv4=U=w?nCsyU(8T|bw27m$F zs`rVGD3Cy8G<7&oxGm*Vp!QWt>GBJ!O%^!k_$9Eofo!B~tVj=L9)8TftPm5bf^j@)(=rTu_4^^Q?Jf>w%`OF05fGJ8zXJhF4 zxOfCbsL)mJFaJaT+Z;Z?F5Q3_qftSWW747~#gqqJ5$ngexl)V%u)>Z|U+WFi+ZtYBf+`5v@cH|k zL3XxJ1k{3l#;d^|wk!YLw&@ZZ^AmF~Pt`gcH;gIe?-(MqttfVzs9YV-lwsvSTQ_M5 z?mzN6<8V%y!LH>^maOihIGHfl1Ob?(Ros$3hy@XDHUWj+$UzDQ6sEFNvB_9I>)a=`2$9}je`6AErs@o z4;1$tCVtR=*$oswa~m?xVb|H4*guNhp=6+3hfdd8B&9*K8>V1YYz;Dds0Mk^5vIXE)u|5BnUCVj*bOndSrcnif?%&WGl%}|L#+&Rur zxg8dO)H<_ddO2*Fil77g_5(+Lk#$NW?`EinQCtNQ4}fuOnS9nW44L%%?@{c<5{@_u zBpSA73s- z!=<>SOqJ- zh_INE91JZ}IGVq-=Y8|F#8$ty?a$|8+MN?4znsobFm$h%UYSUS``es(AI7V+V#lk_ z^K@+R@!5F4?_+Ftsp{@<>8CDI3u5QjM{Mx#butD!1n>e-lD|Sna|723Ro zKEO@p85Ss;(MbJJprI31F^C)F>KQWp{-=^oL-rlRMS2wu!!kVbar$>m)}&&G4zs`8 z@`MtUZnsVYi_P-HVhKV`B0SS~OK5~uYX4iLN2g)IcA2heob|j+w|X@_m|@uph`4NJ z@7ZQb@%(dk*y^E9tafF!#Zo>}BYJGIfJz}Rc#qvjR>n7#KZQcVaE?+68} zE@be8-&{BU2QS{yFV3$v!rP8bhF5FtJh}k!yShi@8JQIW+ZiI02c_?Ynf+ydtw@8f zgoqeW^$S181P}0IB5y$6C0Bi#k?HS!ojH{s;@zNfNBqBXKuL^x+6BZ60~i94@GZ?3{G@(ZEDTdP>9$5-V8l9!z){XIQxMq;}czYSocYe9UQqyKAMi(8sdL zJSUO|+fT~1@i%uc%}oGT>bM^hn_qPXGm#kRfNcAUU#r3rbR)!ap& zpDg;)2-RRaA>aaqr?M^zkQ9B(OOj-&1nBi&FK+GtOsd2Dr1|{P3Rh^({tZ#be(tUUoHIq(j z&16j%H<26!+L>R1U7FXsCvPd^j&sdNxvK3+yy5Ix$^tYo&##j@(X6Wbd;~%IuvwvA zIZbS9&~MwFwbk~b%dXVOIb?J!X%w`5ilKN7`NL_i#PxPRj8JbF(|HlH#{C5x=A@~;J;CbYJ>(E`c0Xtm7R)k-f!C2qy>*y1%{Cc>ryU@4# zdD+bvcv4?kKiko|3lH3ig9YtutrJ*%LgvAL+DY%hAfZlZM1}Zd%!KiR9Car5#O$k2 zhS?3ni6MZCV=9iWqMe82fR>#yse?ZNPl^ldE7#*?N0}7IOh4svF>z~}-kc^FC81&p zh=CIn8pSU9v=;sZZG?HS?*4+^qtToNp4Y0Q(Q6i@a}w8v%c_Wrby5^Kj5fz2e;$2y zc{YfKAx9A!9ps-fn9}egBmW>0BNs4;(qmCE7u!|Wy)OV(z8mtwtsiacna1#4BPgjU zTBkAFUy68}ZtKSyU^v!bC*CThhLe))`XK~$CzD!VAnb?FnSxqj8Z}I?M8v%a@^&h^ z5~5^Af<<*B6_WaJ030bt1RdI~%4IxWqo(PETee}ClOm6xsem-HED>f2tiSA^7`>wk zqN>(30U&&|N!Ueo`4TOOPqOq4JzlTF{Qo%rm0bHug=9}!i{YZ1gDo2Ds`^Ds!JV3c zc{JGeyhLo#_|c>=VicVXsu8cUn35#1HT^KC;Iu@c>E}4~pqO)l@%!YZ+2YHp;TWpe zGy6u8x{UMcci15o4Mdm~=T_9PwbW;^ERHyoLF;qvBeLcyUGeriO?3@}7%~tTaN}na zosX+vYhaGBP*BZ2^T#C>=;$HH{{+Eu8Uv}V5q+__TG8f+0fy0jSC|k3KS`#MR@X{0Y0ISZBUvuXLe-uQ zM+9(b0od+qC=BQAm1DW?o-5thQvDK5Y`0q4fLI$Uj^qkvq-^Mw`% zpkeEGmfp-jb^;g7)aWvz_wq8*1N!|s^enrKrpms{p|R-sO>ExY%{(N4vwKWE6a;CT z$h`_v?rA0ww2hr%yy-1JLDtW-dAIRTfz^aQH_oq0A|jB>=RKsI>JnKO18fsJ@pSrn}^NVvaUx4>$cJe7A-c(B@i3AYIFscBwwB`MzKJy5ahy3M*5vk#1+X!W2TgT?`3hv#F4(^hnz9&F z3X}+H=LeG=)I3DmG={r~UDa{NiLSv)QLIk3>I_atIeP)K6$}M4*JAESqQujSy`(1Q zw28;jONQK!7iT3hbDjT=7J2Nyi2qL9CupW1YROQI$r%<6Kxol;r5F`#& z-rI5$a&*DVZSS<$?;w2pi)hL7O}@QEm3QQ4``c^&%XpJtw}Q=8|Gc>lBvZ6UN0aE= z;uC1`9g2jioko)~wNK+|Iosxl)jU+Hvp`^=d&+maIs?Yr$PcJA41}TSs%$ros}$K7UapYx8()YnzL^&Ep9s^V)uWRY&I*gitf%f5NLU7@5fj6{}R|P zZMObPSeR7(JTq651YXu2XRPqJi4XZSPK{@FTuWTB*M$rRtMq(^28g|kQ8I6pXJh=l zCX}Eqd|p7jc%^t^t7YkGE4t0D(_OjeHBz~_<#is<^>E6_iLtqXtlBXLB2FJ#7IQ4z z^yDYD^3L=I)xY1ddgCV!1KkM{hcgo238)UCI}`Ke31&4KzV2AF3+CR+i!P|)s@e!q zJp-96<+lFC$K$Pw5pq3zc;sL~9ooxhLml1{n5@w_IcEQGzsujd({k6H2mYb#%7UBx zmn_G_f39IKrx&ilyBIFlCi?m_+s$^$b5prMSGKh?bEh-Y&YiQ@opblbp>OvvXnY)I zY8)md1uZiL4UvJelQIQfi9gS2EU9>O&^JT-#Tw5|$oz9rGDO>4RqQ?yuBQpChBKYv zo%-;GMb}6CVNtnx18p2HCwZ=IR!D6eo`xUlW)XN}H-rflL1N=%g7a&SPrPFcm6N1O zwU{JM&_ltJKzZBA;?C2jw*p%buEZ%hZ;x4#3sd&A6Fo9<>W>oF`GXQi5%Z;~q{Cq! zbrx@s5*IEaxf$f7&KA@GCip8A1}Z0MsXln26Mg0!r_v0JGh?uzu8aTB?!d!$5KCFl zD$5$2*d{!I_w_ZLhPSa-6hn0&Bjd6+?*eg}itn;{yAhV@Tv+veM! zL_@1pfDvGE1HPl%SNo`EQ}$sGLunV}PWf!#VK1|;0yVbVrw^fS(g!;I>N2g;1{YL5cKZD;WHJORH*l3cYb0pP<)vL6IcYBSRLT=oy z>WBgrj@)~f5ku`u<15f};W-sr?$h|lr94VnP?ykE_PC9P^t#^*2QSEjbPUAe?f;aj zdP*enWL!B)d8yRQMz+nPoT(P86YH9#n5$6@_sgh7Do(k%ClKUus=(xkT0am zz@fD>L$g$S_(whwZ5*#?6$!PJbwBPb>UDn{<@l`oBz1o@d$+8r_>?oL@SK_N!H<#Y2$G!fiFP|TVxjp{v#?6sSQ$!&X2#}N>X!pnKdMl5%MhSj9M=# zBD#87^tqhvyEK5fG@wRcdkLbt?yH~`;!4&#S3saIH=&BhSZ5-hW@#OJ!p1QGO5 zwiK$dxFlBSAbYDPq&AeqY;P(aw2j`y49V+ zY1ls!)lwy|o?5f;SV*{Xkt*Oc%y|EM&j*Rli%UCNf>e3fcc zskMDO!t4}nv7>Cd==_&_E$|%}gYoJd={`shO;xh4o5-v(wM-h<35Ga4Z?S$e5bR$K z8f|s05N$+Yh?(HkLRzB@)ENvJU?l?JN zn_VmJ_?)rr5$g=wvQ@9;!QZCP)D~-n8E3cVdkZi;rOHcmj+|f13mfLCV8S}6KXcb& z?J?U&A6Xxw=A>!#pOeX}&oN|yMy@x?-hw*Q<%3Y>9U-H7gFgW!+a}U9|3yz_;SHGL z3B3!j$nD*Oa{K#@}yh(2!b>Pq+8?A=shhVy`Y$$M`6>a~pC|%ZKP0ugk z5eTu8We>Kdee~^%r+8-Fziao&7x#^ih>OcMlPZg(Qd2QHeGtiR^}?320*7wh#CeXV zCBNdsjfEx;hUH6+g%f!G6#*E5+@F!kjnlP~deEmUm#N&_LJ-iCPftEIPyF!^(KZm% zw&y~lGpge!A^{S$mJv-T*ecF)g03IbSkV$x<|>!Mr%DR$VQnd36fso)MKXzgT0a3w zwsEMVNGB^)5zfS>ke&y-78N=-85NXFjy|?lY2AZWkSSe@@YZ#5IWN2`KIWGPz21C6 zcOaD_fvaU~wRGxI9pkqbVeq^8JgWKpDB}}j5cB%c`hx}OgXJD~^y6T_K7PT18HO>6do z(w4}iT7OUR{j%F9PPAUXaGWPpCIWRntBzLB{2^1tePnP%nCF|N z%XWX5DH###j9*}we$Gr0u>>l*{s<0J&~ckY^O}i1ohM31Ft4Awx11IE?!@_g*F(k zQZCX@3gPbsjL{aB3uJS>5xMm2E7z2w@st$O4HVQMLIwH>auS$nDr?MTN8KytofTY` zVKAT0sjns2CYfq-$#{AU;k7jCK7&`MAu$eG8ivaL?9ld$TtKy+UM^6zd~e+h1z9g$ zpPVT~bRTcuK$bbHZA-nDA$M2BZ}gelL*}QGyDN72!Qb>soUICT@aNPPDjVH?30CB` zAH2b{{06p2^b=tMCVT%8g&RxzXdca$=<0hDK(~x-&*67Gnh82T57^9)BP&oC; zwKdoZ(uSXP2Jku&kgFz+Wx^@lF47(*>ajhnhVvUJ$w2urJ=P3$fsZ9*)|Ca0Yq?Nv z#e;*T1j^XV9*${+_LzSynPrhlFVf{Scw*Ls(AvFf9LJbZJdt_5v`vJQR`-WK=(u7S zMz>pfGQk_`Pw+>|&+dm7I=@a_6P(vRvzLQQSRJ>1V zw`o^j-aq@f8nix3v;hz>FIicuTkS0|K9VqW3@ZdQvs`aqojLZs=s#yOPE+_EdAxnbrM9QmQfzn z4wJ{MZxP%VD{WX<`tno>ivR;ihwaW);Hxr8yGF%F;zOkk88gCM0q(}DY8 z;H{P}DeTs+7!ZgygBUd74W>TT2Q*;oojYevEW0E2(GuV6Qs9 z&p^1DYjmp9YvG#a*FU;x3ZBp zoESBW^p9qwGiO~8c#dvtBW{ZIvO-&&b;E_g_6HeGj8&H&M-NMTt^D7$n@Q|T6SoL( zyWO{n)_vqd1rRt$vP+o_R|?wGCB*Jt2j$*67Z$h1m%8FEGzHyg2@q3t8DKE2#9||qv!AVDQw@nftWG# ztG3`l`z^ArJyA8XsDuB4vgGiFRoROjSNE$bNgtscqHlIj@mP*Wa592HV*%cT5QK}U zxoAX`DUQakFDCx=-VN|_AoU(42jB|NLWdEh+{JaS`6$kE&hFr^;1j5_=+#RoSrgq? zmrVMTVjhs*1#~%b)48_!<|l|uY7sw$OfCS(=L9BjCBp7)lE({KqVa0`y0n-j4KXJy zjx$rhEFHw=`LpIOd!Mi=gJ^j8E4D3}k2qW*wFmG@yL%vZ_j{YX(c6b?Es zgT#s%cON63ZFOZe%xaZ+G@kTg%AQekk1T_hM%sJatm0#swhM6dlQm94fs2R5Due>7 z-{Gw`30~ss9O9`~M&)q-!Nw>N;7*eS6W4zMnl|?!|Gho}X!jbte_he3cTqSlPyAWOZPEjfvP$QjhhChegknoYW8CHWQpjCZdAuwL zhcqj~!Afbn@D|xuNpdQGa?}WQrJ*4O8!5cUfWiq?@Jw*`h46U0k`G+rN@$LuuZ{hl zeLefJkV$Bx`0YgUFtV=9&^f7Tr>RH&cHik3<$sN1@A{yJ;rshgaC0Zxc)%CN-hc~Q zRq$OjyufIfgili&FF~7`S;OM_d@ms=94?^6(Os!BjhCB#((^kCT>RnlKd%9r5~|D@ z$h9NZZ@6lp4Qe$L#2{=6nr|Ez{}AJeDz=a&2nIpNQYHIejg=quM-R|k{uUI3D2KH@ zx%abwS3R!KHlVm(TZn$OiE<|XVeol(r9$A()ED#-7g$D zZsv8NdM}eT?|u{QIbDE~Jo7J1x$~o&xG@<^8q}B>-TN&lA*LPkf#oa3f zFuoR`-L@g{>0cT|?|G=v#XEC^-0g9T;xjweAC0O>psG^kZicy06(_|ZJN2^KY3}19 zkgmZdt|L zCe#eBAwBRWuqZrG!#b|UF$R9{3?=iK#zp@uB~N*@?8sl#aVOtLAY&ey*qKayYG3oVd{Sroqk(L(nD0S68< z;ItT|=q6AO=OjR103NECp0ZTZ3`egvD0GbWjbBN*7wAu&Zxd9O9aPMM(^+g?!i~-i zNx4Zp0s})!lciXY#J9Q0i*D°7+biF%f(=*vlm(&#WqpMy)aiL~%jr{zUgJ>Sc9 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 WN1?5(7udZ8!c1e|zJq8NjsE~g0dM*M literal 0 HcmV?d00001 diff --git a/F1:F103/F1_testbrd/usart.c b/F1:F103/F1_testbrd/usart.c index 5593a01..679ae7e 100644 --- a/F1:F103/F1_testbrd/usart.c +++ b/F1:F103/F1_testbrd/usart.c @@ -1,11 +1,10 @@ /* - * usart.c + * This file is part of the F1_testbrd project. + * Copyright 2022 Edward V. Emelianov . * - * Copyright 2018 Edward V. Emelianoff - * - * This program is free software; you can redistribute it and/or modify + * This program is free software: you can redistribute it 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 + * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, @@ -14,11 +13,10 @@ * 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, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301, USA. + * along with this program. If not, see . */ -#include "stm32f1.h" + +#include #include "usart.h" #include "usb.h" diff --git a/F1:F103/F1_testbrd/usart.h b/F1:F103/F1_testbrd/usart.h index 2d17edc..13d1042 100644 --- a/F1:F103/F1_testbrd/usart.h +++ b/F1:F103/F1_testbrd/usart.h @@ -1,11 +1,10 @@ /* - * usart.h + * This file is part of the F1_testbrd project. + * Copyright 2022 Edward V. Emelianov . * - * Copyright 2017 Edward V. Emelianoff - * - * This program is free software; you can redistribute it and/or modify + * This program is free software: you can redistribute it 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 + * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, @@ -14,14 +13,10 @@ * 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, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301, USA. + * along with this program. If not, see . */ -#pragma once -#ifndef __USART_H__ -#define __USART_H__ +#pragma once #include // input and output buffers size @@ -58,4 +53,3 @@ void usart_send(const char *str); void newline(); void usart_putchar(const char ch); -#endif // __USART_H__ diff --git a/F1:F103/F1_testbrd/usb.c b/F1:F103/F1_testbrd/usb.c index 2a9a7be..7380bde 100644 --- a/F1:F103/F1_testbrd/usb.c +++ b/F1:F103/F1_testbrd/usb.c @@ -1,12 +1,10 @@ /* - * geany_encoding=koi8-r - * usb.c - base functions for different USB types + * This file is part of the F1_testbrd project. + * Copyright 2022 Edward V. Emelianov . * - * Copyright 2018 Edward V. Emelianov - * - * This program is free software; you can redistribute it and/or modify + * This program is free software: you can redistribute it 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 + * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, @@ -15,15 +13,18 @@ * 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, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301, USA. - * + * along with this program. If not, see . */ + #include "usart.h" #include "usb.h" #include "usb_lib.h" +#ifdef DBG +#undef DBG +#define DBG(x) +#endif + static volatile uint8_t tx_succesfull = 1; static volatile uint8_t rxNE = 0; diff --git a/F1:F103/F1_testbrd/usb.h b/F1:F103/F1_testbrd/usb.h index e06fa0b..27070c6 100644 --- a/F1:F103/F1_testbrd/usb.h +++ b/F1:F103/F1_testbrd/usb.h @@ -1,12 +1,10 @@ /* - * geany_encoding=koi8-r - * usb.h + * This file is part of the F1_testbrd project. + * Copyright 2022 Edward V. Emelianov . * - * Copyright 2018 Edward V. Emelianov - * - * This program is free software; you can redistribute it and/or modify + * This program is free software: you can redistribute it 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 + * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, @@ -15,15 +13,10 @@ * 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, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301, USA. - * + * along with this program. If not, see . */ -#pragma once -#ifndef __USB_H__ -#define __USB_H__ +#pragma once #include "hardware.h" #define BUFFSIZE (64) @@ -35,5 +28,3 @@ void usb_proc(); void USB_send(const uint8_t *buf, uint16_t len); void USB_send_blk(const uint8_t *buf, uint16_t len); uint8_t USB_receive(uint8_t *buf); - -#endif // __USB_H__ diff --git a/F1:F103/F1_testbrd/usb_defs.h b/F1:F103/F1_testbrd/usb_defs.h index 1ac3dd0..0b98f02 100644 --- a/F1:F103/F1_testbrd/usb_defs.h +++ b/F1:F103/F1_testbrd/usb_defs.h @@ -1,12 +1,10 @@ /* - * geany_encoding=koi8-r - * usb_defs.h + * This file is part of the F1_testbrd project. + * Copyright 2022 Edward V. Emelianov . * - * Copyright 2018 Edward V. Emelianov - * - * This program is free software; you can redistribute it and/or modify + * This program is free software: you can redistribute it 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 + * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, @@ -15,16 +13,10 @@ * 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, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301, USA. - * + * along with this program. If not, see . */ #pragma once -#ifndef __USB_DEFS_H__ -#define __USB_DEFS_H__ - #include // max endpoints number @@ -103,5 +95,3 @@ typedef struct{ typedef struct{ __IO USB_EPDATA_TypeDef EP[STM32ENDPOINTS]; } USB_BtableDef; - -#endif // __USB_DEFS_H__ diff --git a/F1:F103/F1_testbrd/usb_lib.c b/F1:F103/F1_testbrd/usb_lib.c index ee5b7ad..20d5633 100644 --- a/F1:F103/F1_testbrd/usb_lib.c +++ b/F1:F103/F1_testbrd/usb_lib.c @@ -1,12 +1,10 @@ /* - * geany_encoding=koi8-r - * usb_lib.c + * This file is part of the F1_testbrd project. + * Copyright 2022 Edward V. Emelianov . * - * Copyright 2018 Edward V. Emelianov - * - * This program is free software; you can redistribute it and/or modify + * This program is free software: you can redistribute it 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 + * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, @@ -15,10 +13,7 @@ * 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, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301, USA. - * + * along with this program. If not, see . */ #include diff --git a/F1:F103/F1_testbrd/usb_lib.h b/F1:F103/F1_testbrd/usb_lib.h index b10c10f..f938b85 100644 --- a/F1:F103/F1_testbrd/usb_lib.h +++ b/F1:F103/F1_testbrd/usb_lib.h @@ -1,12 +1,10 @@ /* - * geany_encoding=koi8-r - * usb_lib.h + * This file is part of the F1_testbrd project. + * Copyright 2022 Edward V. Emelianov . * - * Copyright 2018 Edward V. Emelianov - * - * This program is free software; you can redistribute it and/or modify + * This program is free software: you can redistribute it 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 + * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, @@ -15,16 +13,10 @@ * 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, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301, USA. - * + * along with this program. If not, see . */ #pragma once -#ifndef __USB_LIB_H__ -#define __USB_LIB_H__ - #include #include "usb_defs.h" @@ -185,5 +177,3 @@ void linecoding_handler(usb_LineCoding *lc); void clstate_handler(uint16_t val); void break_handler(); void vendor_handler(config_pack_t *packet); - -#endif // __USB_LIB_H__