From 45548384d4d29f7796d68551dc3dc57b5f079052 Mon Sep 17 00:00:00 2001 From: david Date: Sat, 14 Feb 2009 14:56:43 +0100 Subject: [PATCH] o add arm lpc2148 helloword o opencd config for mac --- poc/lpc2148_blinky/Makefile | 60 ++++ poc/lpc2148_blinky/Makefile.ram | 60 ++++ poc/lpc2148_blinky/blink2148.tmproj | 39 +++ poc/lpc2148_blinky/console.c | 55 ++++ poc/lpc2148_blinky/console.h | 3 + poc/lpc2148_blinky/crt.s | 110 +++++++ poc/lpc2148_blinky/lpc2148-ram.ld | 197 +++++++++++ poc/lpc2148_blinky/lpc2148-rom.ld | 197 +++++++++++ poc/lpc2148_blinky/lpc214x.h | 364 +++++++++++++++++++++ poc/lpc2148_blinky/main.c | 37 +++ poc/lpc2148_blinky/openocd_ftdi02.cfg | 35 ++ poc/lpc2148_blinky/openocd_mac.sh | 4 + poc/lpc2148_blinky/pics/small_console.png | Bin 0 -> 41026 bytes poc/lpc2148_blinky/pics/small_dsc01985.jpg | Bin 0 -> 89796 bytes poc/lpc2148_blinky/pics/small_prog.png | Bin 0 -> 20736 bytes poc/lpc2148_blinky/run.ocd | 6 + poc/lpc2148_blinky/startup.c | 115 +++++++ poc/lpc2148_blinky/startup.h | 1 + poc/lpc2148_blinky/upload.ocd | 6 + 19 files changed, 1289 insertions(+) create mode 100644 poc/lpc2148_blinky/Makefile create mode 100644 poc/lpc2148_blinky/Makefile.ram create mode 100644 poc/lpc2148_blinky/blink2148.tmproj create mode 100644 poc/lpc2148_blinky/console.c create mode 100644 poc/lpc2148_blinky/console.h create mode 100644 poc/lpc2148_blinky/crt.s create mode 100644 poc/lpc2148_blinky/lpc2148-ram.ld create mode 100644 poc/lpc2148_blinky/lpc2148-rom.ld create mode 100644 poc/lpc2148_blinky/lpc214x.h create mode 100644 poc/lpc2148_blinky/main.c create mode 100644 poc/lpc2148_blinky/openocd_ftdi02.cfg create mode 100755 poc/lpc2148_blinky/openocd_mac.sh create mode 100644 poc/lpc2148_blinky/pics/small_console.png create mode 100644 poc/lpc2148_blinky/pics/small_dsc01985.jpg create mode 100644 poc/lpc2148_blinky/pics/small_prog.png create mode 100644 poc/lpc2148_blinky/run.ocd create mode 100644 poc/lpc2148_blinky/startup.c create mode 100644 poc/lpc2148_blinky/startup.h create mode 100644 poc/lpc2148_blinky/upload.ocd diff --git a/poc/lpc2148_blinky/Makefile b/poc/lpc2148_blinky/Makefile new file mode 100644 index 0000000..3c73b28 --- /dev/null +++ b/poc/lpc2148_blinky/Makefile @@ -0,0 +1,60 @@ +#preferences for cross development + +TOOLCHAIN=arm-elf- +CC=$(TOOLCHAIN)gcc +AS=$(TOOLCHAIN)as +LD=$(TOOLCHAIN)ld +OBJCOPY=$(TOOLCHAIN)objcopy + +#flags + +CFLAGS = -mcpu=arm7tdmi -g -nostartfiles -nostdlib +ASFLAGS = +#ASFLAGS = --D_ASSEMBLY_ + +BASENAME = main + +ELFFILE = $(BASENAME).elf +BINARY = $(BASENAME).bin +SREC = $(BASENAME).srec +HEX = $(BASENAME).hex + +#LSCRIPT = lpc2103.ld +LSCRIPT = lpc2148-ram.ld + + +#target +TARGETS = $(ELFFILE) $(BINARY) $(SREC) $(HEX) + +OBJS = crt.o main.o startup.o console.o + +all:$(TARGETS) + + +$(ELFFILE): $(OBJS) Makefile + $(LD) -o $(ELFFILE) $(OBJS) -T $(LSCRIPT) \ + -Map $(BASENAME).map + + +$(BINARY): $(ELFFILE) + $(OBJCOPY) -O binary -S $(ELFFILE) $(BINARY) + + +$(SREC): $(ELFFILE) + $(OBJCOPY) -O srec -S $(ELFFILE) $(SREC) + +$(HEX): $(ELFFILE) + $(OBJCOPY) -O ihex -S $(ELFFILE) $(HEX) + + +upload: + lpc21isp $(HEX) /dev/ttyUSB0 115200 12000 + +clean: + rm -f *.o $(TARGETS) + +#arm-elf-gcc -c main.c -o main.o +#sh-2.05b$ ls +#lpc2103.h main.c main.elf main.o +#sh-2.05b$ arm-elf-ld -o main.elf main.o -Map main.map + diff --git a/poc/lpc2148_blinky/Makefile.ram b/poc/lpc2148_blinky/Makefile.ram new file mode 100644 index 0000000..3c73b28 --- /dev/null +++ b/poc/lpc2148_blinky/Makefile.ram @@ -0,0 +1,60 @@ +#preferences for cross development + +TOOLCHAIN=arm-elf- +CC=$(TOOLCHAIN)gcc +AS=$(TOOLCHAIN)as +LD=$(TOOLCHAIN)ld +OBJCOPY=$(TOOLCHAIN)objcopy + +#flags + +CFLAGS = -mcpu=arm7tdmi -g -nostartfiles -nostdlib +ASFLAGS = +#ASFLAGS = --D_ASSEMBLY_ + +BASENAME = main + +ELFFILE = $(BASENAME).elf +BINARY = $(BASENAME).bin +SREC = $(BASENAME).srec +HEX = $(BASENAME).hex + +#LSCRIPT = lpc2103.ld +LSCRIPT = lpc2148-ram.ld + + +#target +TARGETS = $(ELFFILE) $(BINARY) $(SREC) $(HEX) + +OBJS = crt.o main.o startup.o console.o + +all:$(TARGETS) + + +$(ELFFILE): $(OBJS) Makefile + $(LD) -o $(ELFFILE) $(OBJS) -T $(LSCRIPT) \ + -Map $(BASENAME).map + + +$(BINARY): $(ELFFILE) + $(OBJCOPY) -O binary -S $(ELFFILE) $(BINARY) + + +$(SREC): $(ELFFILE) + $(OBJCOPY) -O srec -S $(ELFFILE) $(SREC) + +$(HEX): $(ELFFILE) + $(OBJCOPY) -O ihex -S $(ELFFILE) $(HEX) + + +upload: + lpc21isp $(HEX) /dev/ttyUSB0 115200 12000 + +clean: + rm -f *.o $(TARGETS) + +#arm-elf-gcc -c main.c -o main.o +#sh-2.05b$ ls +#lpc2103.h main.c main.elf main.o +#sh-2.05b$ arm-elf-ld -o main.elf main.o -Map main.map + diff --git a/poc/lpc2148_blinky/blink2148.tmproj b/poc/lpc2148_blinky/blink2148.tmproj new file mode 100644 index 0000000..103898a --- /dev/null +++ b/poc/lpc2148_blinky/blink2148.tmproj @@ -0,0 +1,39 @@ + + + + + documents + + + expanded + + name + blink2148 + regexFolderFilter + !.*/(\.[^/]*|CVS|_darcs|_MTN|\{arch\}|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$ + sourceDirectory + + + + fileHierarchyDrawerWidth + 200 + metaData + + showFileHierarchyDrawer + + showFileHierarchyPanel + + treeState + + blink2148 + + isExpanded + + subItems + + + + windowFrame + {{25, 61}, {1169, 813}} + + diff --git a/poc/lpc2148_blinky/console.c b/poc/lpc2148_blinky/console.c new file mode 100644 index 0000000..337c96d --- /dev/null +++ b/poc/lpc2148_blinky/console.c @@ -0,0 +1,55 @@ +/* + Simple console input/output, over serial port #0 + + Partially copied from Jim Lynch's tutorial +*/ + +#include "console.h" + +#define PINSEL0 *(volatile unsigned int *)0xE002C000 + +#define U0THR *(volatile unsigned int *)0xE000C000 +#define U0RBR *(volatile unsigned int *)0xE000C000 +#define U0DLL *(volatile unsigned int *)0xE000C000 +#define U0DLM *(volatile unsigned int *)0xE000C004 +#define U0FCR *(volatile unsigned int *)0xE000C008 +#define U0LCR *(volatile unsigned int *)0xE000C00C +#define U0LSR *(volatile unsigned int *)0xE000C014 + +/* Initialize Serial Interface */ +void ConsoleInit(int iDivider) +{ + PINSEL0 = (PINSEL0 & ~0x0000000F) | 0x00000005; /* Enable RxD0 and TxD0 */ + U0LCR = 0x83; /* 8 bits, no Parity, 1 Stop bit */ + U0DLL = iDivider & 0xFF; /* set divider / baud rate */ + U0DLM = iDivider >> 8; + U0LCR = 0x03; /* DLAB = 0 */ + + // enable FIFO + U0FCR = 1; +} + +/* Write character to Serial Port */ +int putchar(int ch) +{ + if (ch == '\n') { + while (!(U0LSR & 0x20)); + U0THR = '\r'; + } + while (!(U0LSR & 0x20)); + U0THR = ch; + return ch; +} +int getchar(void) +{ /* Read character from Serial Port */ + while (!(U0LSR & 0x01)); + return (U0RBR); +} +int puts(char *s) +{ + while (*s) { + putchar(*s++); + } + //putchar('\n'); + return 1; +} diff --git a/poc/lpc2148_blinky/console.h b/poc/lpc2148_blinky/console.h new file mode 100644 index 0000000..f48922e --- /dev/null +++ b/poc/lpc2148_blinky/console.h @@ -0,0 +1,3 @@ +void ConsoleInit(int iDivider); +int putchar(int c); +int puts(char *s); diff --git a/poc/lpc2148_blinky/crt.s b/poc/lpc2148_blinky/crt.s new file mode 100644 index 0000000..78de943 --- /dev/null +++ b/poc/lpc2148_blinky/crt.s @@ -0,0 +1,110 @@ +/* *************************************************************************************************************** + + crt.s STARTUP ASSEMBLY CODE + ----------------------- + + + Module includes the interrupt vectors and start-up code. + + *************************************************************************************************************** */ + +/* Stack Sizes */ +.set UND_STACK_SIZE, 0x00000040 /* stack for "undefined instruction" interrupts is 4 bytes */ +.set ABT_STACK_SIZE, 0x00000040 /* stack for "abort" interrupts is 4 bytes */ +.set FIQ_STACK_SIZE, 0x00000040 /* stack for "FIQ" interrupts is 4 bytes */ +.set IRQ_STACK_SIZE, 0X00000040 /* stack for "IRQ" normal interrupts is 4 bytes */ +.set SVC_STACK_SIZE, 0x00000400 /* stack for "SVC" supervisor mode is 4 bytes */ + + + +/* Standard definitions of Mode bits and Interrupt (I & F) flags in PSRs (program status registers) */ +.set MODE_USR, 0x10 /* Normal User Mode */ +.set MODE_FIQ, 0x11 /* FIQ Processing Fast Interrupts Mode */ +.set MODE_IRQ, 0x12 /* IRQ Processing Standard Interrupts Mode */ +.set MODE_SVC, 0x13 /* Supervisor Processing Software Interrupts Mode */ +.set MODE_ABT, 0x17 /* Abort Processing memory Faults Mode */ +.set MODE_UND, 0x1B /* Undefined Processing Undefined Instructions Mode */ +.set MODE_SYS, 0x1F /* System Running Priviledged Operating System Tasks Mode */ + +.set I_BIT, 0x80 /* when I bit is set, IRQ is disabled (program status registers) */ +.set F_BIT, 0x40 /* when F bit is set, FIQ is disabled (program status registers) */ + + +.text +.arm + +.global Reset_Handler +.global _startup +.func _startup + +_startup: + +# Exception Vectors + +_vectors: ldr PC, Reset_Addr + ldr PC, Undef_Addr + ldr PC, SWI_Addr + ldr PC, PAbt_Addr + ldr PC, DAbt_Addr + nop /* Reserved Vector (holds Philips ISP checksum) */ + ldr PC, [PC,#-0xFF0] /* see page 71 of "Insiders Guide to the Philips ARM7-Based Microcontrollers" by Trevor Martin */ + ldr PC, FIQ_Addr + +Reset_Addr: .word Reset_Handler /* defined in this module below */ +Undef_Addr: .word UNDEF_Routine /* defined in main.c */ +SWI_Addr: .word SWI_Routine /* defined in main.c */ +PAbt_Addr: .word UNDEF_Routine /* defined in main.c */ +DAbt_Addr: .word UNDEF_Routine /* defined in main.c */ +IRQ_Addr: .word IRQ_Routine /* defined in main.c */ +FIQ_Addr: .word FIQ_Routine /* defined in main.c */ + .word 0 /* rounds the vectors and ISR addresses to 64 bytes total */ + + +# Reset Handler + +Reset_Handler: + + /* Setup a stack for each mode - note that this only sets up a usable stack + for User mode. Also each mode is setup with interrupts initially disabled. */ + + ldr r0, =_stack_end + msr CPSR_c, #MODE_UND|I_BIT|F_BIT /* Undefined Instruction Mode */ + mov sp, r0 + sub r0, r0, #UND_STACK_SIZE + msr CPSR_c, #MODE_ABT|I_BIT|F_BIT /* Abort Mode */ + mov sp, r0 + sub r0, r0, #ABT_STACK_SIZE + msr CPSR_c, #MODE_FIQ|I_BIT|F_BIT /* FIQ Mode */ + mov sp, r0 + sub r0, r0, #FIQ_STACK_SIZE + msr CPSR_c, #MODE_IRQ|I_BIT|F_BIT /* IRQ Mode */ + mov sp, r0 + sub r0, r0, #IRQ_STACK_SIZE + msr CPSR_c, #MODE_SVC|I_BIT|F_BIT /* Supervisor Mode */ + mov sp, r0 + sub r0, r0, #SVC_STACK_SIZE + msr CPSR_c, #MODE_SYS|I_BIT|F_BIT /* User Mode */ + mov sp, r0 + + /* copy .data section (Copy from ROM to RAM) */ + ldr R1, =_etext + ldr R2, =_data + ldr R3, =_edata +1: cmp R2, R3 + ldrlo R0, [R1], #4 + strlo R0, [R2], #4 + blo 1b + + /* Clear .bss section (Zero init) */ + mov R0, #0 + ldr R1, =_bss_start + ldr R2, =_bss_end +2: cmp R1, R2 + strlo R0, [R1], #4 + blo 2b + + /* Enter the C code */ + b main + +.endfunc +.end diff --git a/poc/lpc2148_blinky/lpc2148-ram.ld b/poc/lpc2148_blinky/lpc2148-ram.ld new file mode 100644 index 0000000..4555cce --- /dev/null +++ b/poc/lpc2148_blinky/lpc2148-ram.ld @@ -0,0 +1,197 @@ +/* ****************************************************************************************************** */ +/* demo2148_blink_flash.cmd LINKER SCRIPT */ +/* */ +/* */ +/* The Linker Script defines how the code and data emitted by the GNU C compiler and assembler are */ +/* to be loaded into memory (code goes into FLASH, variables go into RAM). */ +/* */ +/* Any symbols defined in the Linker Script are automatically global and available to the rest of the */ +/* program. */ +/* */ +/* To force the linker to use this LINKER SCRIPT, just add the -T demo2148_blink_flash.cmd directive */ +/* to the linker flags in the makefile. */ +/* */ +/* LFLAGS = -Map main.map -nostartfiles -T demo2148_blink_flash.cmd */ +/* */ +/* */ +/* The Philips boot loader supports the ISP (In System Programming) via the serial port and the IAP */ +/* (In Application Programming) for flash programming from within your application. */ +/* */ +/* The boot loader uses RAM memory and we MUST NOT load variables or code in these areas. */ +/* */ +/* RAM used by boot loader: 0x40000120 - 0x400001FF (223 bytes) for ISP variables */ +/* 0x40007FE0 - 0x4000FFFF (32 bytes) for ISP and IAP variables */ +/* 0x40007EE0 - 0x40007FE0 (256 bytes) stack for ISP and IAP */ +/* */ +/* */ +/* MEMORY MAP */ +/* | |0x40008000 */ +/* .-------->|---------------------------------| */ +/* . | variables and stack |0x40007FFF */ +/* ram_isp_high | for Philips boot loader | */ +/* . | 32 + 256 = 288 bytes | */ +/* . | | */ +/* . | Do not put anything here |0x40007EE0 */ +/* .-------->|---------------------------------| */ +/* | UDF Stack 4 bytes |0x40007EDC <---------- _stack_end */ +/* .-------->|---------------------------------| */ +/* | ABT Stack 4 bytes |0x40007ED8 */ +/* .-------->|---------------------------------| */ +/* | FIQ Stack 4 bytes |0x40007ED4 */ +/* .-------->|---------------------------------| */ +/* | IRQ Stack 4 bytes |0x40007ED0 */ +/* .-------->|---------------------------------| */ +/* | SVC Stack 4 bytes |0x40007ECC */ +/* .-------->|---------------------------------| */ +/* . | |0x40007EC8 */ +/* . | stack area for user program | */ +/* . | | | */ +/* . | | | */ +/* . | | | */ +/* . | V | */ +/* . | | */ +/* . | | */ +/* . | | */ +/* . | free ram | */ +/* ram | | */ +/* . | | */ +/* . | | */ +/* . |.................................|0x40000234 <---------- _bss_end */ +/* . | | */ +/* . | .bss uninitialized variables | */ +/* . |.................................|0x40000218 <---------- _bss_start, _edata */ +/* . | | */ +/* . | .data initialized variables | */ +/* . | |0x40000200 <---------- _data */ +/* .-------->|---------------------------------| */ +/* . | variables used by |0x400001FF */ +/* ram_isp_low | Philips boot loader | */ +/* . | 223 bytes |0x40000120 */ +/* .-------->|---------------------------------| */ +/* . | |0x4000011F */ +/* ram_vectors | free ram | */ +/* . |---------------------------------|0x40000040 */ +/* . | |0x4000003F */ +/* . | Interrupt Vectors (re-mapped) | */ +/* . | 64 bytes |0x40000000 */ +/* .-------->|---------------------------------| */ +/* | | */ +/* */ +/* */ +/* */ +/* | | */ +/* .--------> |---------------------------------| */ +/* . | |0x0001FFFF */ +/* . | | */ +/* . | | */ +/* . | | */ +/* . | | */ +/* . | | */ +/* . | unused flash eprom | */ +/* . | | */ +/* . |.................................|0x0000032c */ +/* . | | */ +/* . | copy of .data area | */ +/* flash | | */ +/* . |---------------------------------|0x00000314 <----------- _etext */ +/* . | | */ +/* . | |0x00000180 main */ +/* . | |0x00000278 feed */ +/* . | main() |0x000002c4 FIQ_Routine */ +/* . | |0x000002d8 SWI_Routine */ +/* . | |0x000002ec UNDEF_Routine */ +/* . | |0x000002b0 IRQ_routine */ +/* . |---------------------------------|0x000001cc initialize */ +/* . | |0x000000D4 */ +/* . | Startup Code | */ +/* . | (assembler) | */ +/* . | | */ +/* . |---------------------------------|0x00000040 Reset_Handler */ +/* . | |0x0000003F */ +/* . | Interrupt Vector Table (unused) | */ +/* . | 64 bytes | */ +/* .--------->|---------------------------------|0x00000000 _startup * +/* */ +/* */ +/* The easy way to prevent the linker from loading anything into a memory area is to define */ +/* a MEMORY region for it and then avoid assigning any .text, .data or .bss sections into it. */ +/* */ +/* */ +/* MEMORY */ +/* { */ +/* ram_isp_low(A) : ORIGIN = 0x40000120, LENGTH = 223 */ +/* */ +/* } */ +/* */ +/* */ +/* Author: James P. Lynch */ +/* */ +/* ****************************************************************************************************** */ + + +/* identify the Entry Point */ + +ENTRY(_startup) + + + +/* specify the LPC2148 memory areas */ + +MEMORY +{ + flash : ORIGIN = 0, LENGTH = 512K /* FLASH ROM */ + ram_isp_low(A) : ORIGIN = 0x40000120, LENGTH = 223 /* variables used by Philips ISP bootloader */ + ram : ORIGIN = 0x40000200, LENGTH = 32513 /* free RAM area */ + ram_isp_high(A) : ORIGIN = 0x40007FE0, LENGTH = 32 /* variables used by Philips ISP bootloader */ + ram_usb_dma : ORIGIN = 0x7FD00000, LENGTH = 8192 /* on-chip USB DMA RAM area (not used) */ +} + + + +/* define a global symbol _stack_end */ + +_stack_end = 0x40007EDC; + + + +/* now define the output sections */ + +SECTIONS +{ + . = 0; /* set location counter to address zero */ + + startup : { *(.startup)} >ram /* the startup code goes into FLASH */ + + + + .text : /* collect all sections that should go into FLASH after startup */ + { + *(.text) /* all .text sections (code) */ + *(.rodata) /* all .rodata sections (constants, strings, etc.) */ + *(.rodata*) /* all .rodata* sections (constants, strings, etc.) */ + *(.glue_7) /* all .glue_7 sections (no idea what these are) */ + *(.glue_7t) /* all .glue_7t sections (no idea what these are) */ + _etext = .; /* define a global symbol _etext just after the last code byte */ + } >ram /* put all the above into FLASH */ + + + + + .data : /* collect all initialized .data sections that go into RAM */ + { + _data = .; /* create a global symbol marking the start of the .data section */ + *(.data) /* all .data sections */ + _edata = .; /* define a global symbol marking the end of the .data section */ + } >ram AT >ram /* put all the above into RAM (but load the LMA copy into FLASH) */ + + .bss : /* collect all uninitialized .bss sections that go into RAM */ + { + _bss_start = .; /* define a global symbol marking the start of the .bss section */ + *(.bss) /* all .bss sections */ + } >ram /* put all the above in RAM (it will be cleared in the startup code */ + + . = ALIGN(4); /* advance location counter to the next 32-bit boundary */ + _bss_end = . ; /* define a global symbol marking the end of the .bss section */ +} + _end = .; /* define a global symbol marking the end of application RAM */ + diff --git a/poc/lpc2148_blinky/lpc2148-rom.ld b/poc/lpc2148_blinky/lpc2148-rom.ld new file mode 100644 index 0000000..5be7ede --- /dev/null +++ b/poc/lpc2148_blinky/lpc2148-rom.ld @@ -0,0 +1,197 @@ +/* ****************************************************************************************************** */ +/* demo2148_blink_flash.cmd LINKER SCRIPT */ +/* */ +/* */ +/* The Linker Script defines how the code and data emitted by the GNU C compiler and assembler are */ +/* to be loaded into memory (code goes into FLASH, variables go into RAM). */ +/* */ +/* Any symbols defined in the Linker Script are automatically global and available to the rest of the */ +/* program. */ +/* */ +/* To force the linker to use this LINKER SCRIPT, just add the -T demo2148_blink_flash.cmd directive */ +/* to the linker flags in the makefile. */ +/* */ +/* LFLAGS = -Map main.map -nostartfiles -T demo2148_blink_flash.cmd */ +/* */ +/* */ +/* The Philips boot loader supports the ISP (In System Programming) via the serial port and the IAP */ +/* (In Application Programming) for flash programming from within your application. */ +/* */ +/* The boot loader uses RAM memory and we MUST NOT load variables or code in these areas. */ +/* */ +/* RAM used by boot loader: 0x40000120 - 0x400001FF (223 bytes) for ISP variables */ +/* 0x40007FE0 - 0x4000FFFF (32 bytes) for ISP and IAP variables */ +/* 0x40007EE0 - 0x40007FE0 (256 bytes) stack for ISP and IAP */ +/* */ +/* */ +/* MEMORY MAP */ +/* | |0x40008000 */ +/* .-------->|---------------------------------| */ +/* . | variables and stack |0x40007FFF */ +/* ram_isp_high | for Philips boot loader | */ +/* . | 32 + 256 = 288 bytes | */ +/* . | | */ +/* . | Do not put anything here |0x40007EE0 */ +/* .-------->|---------------------------------| */ +/* | UDF Stack 4 bytes |0x40007EDC <---------- _stack_end */ +/* .-------->|---------------------------------| */ +/* | ABT Stack 4 bytes |0x40007ED8 */ +/* .-------->|---------------------------------| */ +/* | FIQ Stack 4 bytes |0x40007ED4 */ +/* .-------->|---------------------------------| */ +/* | IRQ Stack 4 bytes |0x40007ED0 */ +/* .-------->|---------------------------------| */ +/* | SVC Stack 4 bytes |0x40007ECC */ +/* .-------->|---------------------------------| */ +/* . | |0x40007EC8 */ +/* . | stack area for user program | */ +/* . | | | */ +/* . | | | */ +/* . | | | */ +/* . | V | */ +/* . | | */ +/* . | | */ +/* . | | */ +/* . | free ram | */ +/* ram | | */ +/* . | | */ +/* . | | */ +/* . |.................................|0x40000234 <---------- _bss_end */ +/* . | | */ +/* . | .bss uninitialized variables | */ +/* . |.................................|0x40000218 <---------- _bss_start, _edata */ +/* . | | */ +/* . | .data initialized variables | */ +/* . | |0x40000200 <---------- _data */ +/* .-------->|---------------------------------| */ +/* . | variables used by |0x400001FF */ +/* ram_isp_low | Philips boot loader | */ +/* . | 223 bytes |0x40000120 */ +/* .-------->|---------------------------------| */ +/* . | |0x4000011F */ +/* ram_vectors | free ram | */ +/* . |---------------------------------|0x40000040 */ +/* . | |0x4000003F */ +/* . | Interrupt Vectors (re-mapped) | */ +/* . | 64 bytes |0x40000000 */ +/* .-------->|---------------------------------| */ +/* | | */ +/* */ +/* */ +/* */ +/* | | */ +/* .--------> |---------------------------------| */ +/* . | |0x0001FFFF */ +/* . | | */ +/* . | | */ +/* . | | */ +/* . | | */ +/* . | | */ +/* . | unused flash eprom | */ +/* . | | */ +/* . |.................................|0x0000032c */ +/* . | | */ +/* . | copy of .data area | */ +/* flash | | */ +/* . |---------------------------------|0x00000314 <----------- _etext */ +/* . | | */ +/* . | |0x00000180 main */ +/* . | |0x00000278 feed */ +/* . | main() |0x000002c4 FIQ_Routine */ +/* . | |0x000002d8 SWI_Routine */ +/* . | |0x000002ec UNDEF_Routine */ +/* . | |0x000002b0 IRQ_routine */ +/* . |---------------------------------|0x000001cc initialize */ +/* . | |0x000000D4 */ +/* . | Startup Code | */ +/* . | (assembler) | */ +/* . | | */ +/* . |---------------------------------|0x00000040 Reset_Handler */ +/* . | |0x0000003F */ +/* . | Interrupt Vector Table (unused) | */ +/* . | 64 bytes | */ +/* .--------->|---------------------------------|0x00000000 _startup * +/* */ +/* */ +/* The easy way to prevent the linker from loading anything into a memory area is to define */ +/* a MEMORY region for it and then avoid assigning any .text, .data or .bss sections into it. */ +/* */ +/* */ +/* MEMORY */ +/* { */ +/* ram_isp_low(A) : ORIGIN = 0x40000120, LENGTH = 223 */ +/* */ +/* } */ +/* */ +/* */ +/* Author: James P. Lynch */ +/* */ +/* ****************************************************************************************************** */ + + +/* identify the Entry Point */ + +ENTRY(_startup) + + + +/* specify the LPC2148 memory areas */ + +MEMORY +{ + flash : ORIGIN = 0, LENGTH = 512K /* FLASH ROM */ + ram_isp_low(A) : ORIGIN = 0x40000120, LENGTH = 223 /* variables used by Philips ISP bootloader */ + ram : ORIGIN = 0x40000200, LENGTH = 32513 /* free RAM area */ + ram_isp_high(A) : ORIGIN = 0x40007FE0, LENGTH = 32 /* variables used by Philips ISP bootloader */ + ram_usb_dma : ORIGIN = 0x7FD00000, LENGTH = 8192 /* on-chip USB DMA RAM area (not used) */ +} + + + +/* define a global symbol _stack_end */ + +_stack_end = 0x40007EDC; + + + +/* now define the output sections */ + +SECTIONS +{ + . = 0; /* set location counter to address zero */ + + startup : { *(.startup)} >flash /* the startup code goes into FLASH */ + + + + .text : /* collect all sections that should go into FLASH after startup */ + { + *(.text) /* all .text sections (code) */ + *(.rodata) /* all .rodata sections (constants, strings, etc.) */ + *(.rodata*) /* all .rodata* sections (constants, strings, etc.) */ + *(.glue_7) /* all .glue_7 sections (no idea what these are) */ + *(.glue_7t) /* all .glue_7t sections (no idea what these are) */ + _etext = .; /* define a global symbol _etext just after the last code byte */ + } >flash /* put all the above into FLASH */ + + + + + .data : /* collect all initialized .data sections that go into RAM */ + { + _data = .; /* create a global symbol marking the start of the .data section */ + *(.data) /* all .data sections */ + _edata = .; /* define a global symbol marking the end of the .data section */ + } >ram AT >flash /* put all the above into RAM (but load the LMA copy into FLASH) */ + + .bss : /* collect all uninitialized .bss sections that go into RAM */ + { + _bss_start = .; /* define a global symbol marking the start of the .bss section */ + *(.bss) /* all .bss sections */ + } >ram /* put all the above in RAM (it will be cleared in the startup code */ + + . = ALIGN(4); /* advance location counter to the next 32-bit boundary */ + _bss_end = . ; /* define a global symbol marking the end of the .bss section */ +} + _end = .; /* define a global symbol marking the end of application RAM */ + diff --git a/poc/lpc2148_blinky/lpc214x.h b/poc/lpc2148_blinky/lpc214x.h new file mode 100644 index 0000000..497ef3b --- /dev/null +++ b/poc/lpc2148_blinky/lpc214x.h @@ -0,0 +1,364 @@ +/***********************************************************************/ +/* This file is part of the uVision/ARM development tools */ +/* Copyright KEIL ELEKTRONIK GmbH 2002-2005 */ +/***********************************************************************/ +/* */ +/* LPC214X.H: Header file for Philips LPC2141/42/44/46/48 */ +/* */ +/***********************************************************************/ + +#ifndef __LPC214x_H +#define __LPC214x_H + +/* Vectored Interrupt Controller (VIC) */ +#define VICIRQStatus (*((volatile unsigned long *) 0xFFFFF000)) +#define VICFIQStatus (*((volatile unsigned long *) 0xFFFFF004)) +#define VICRawIntr (*((volatile unsigned long *) 0xFFFFF008)) +#define VICIntSelect (*((volatile unsigned long *) 0xFFFFF00C)) +#define VICIntEnable (*((volatile unsigned long *) 0xFFFFF010)) +#define VICIntEnClr (*((volatile unsigned long *) 0xFFFFF014)) +#define VICSoftInt (*((volatile unsigned long *) 0xFFFFF018)) +#define VICSoftIntClr (*((volatile unsigned long *) 0xFFFFF01C)) +#define VICProtection (*((volatile unsigned long *) 0xFFFFF020)) +#define VICVectAddr (*((volatile unsigned long *) 0xFFFFF030)) +#define VICDefVectAddr (*((volatile unsigned long *) 0xFFFFF034)) +#define VICVectAddr0 (*((volatile unsigned long *) 0xFFFFF100)) +#define VICVectAddr1 (*((volatile unsigned long *) 0xFFFFF104)) +#define VICVectAddr2 (*((volatile unsigned long *) 0xFFFFF108)) +#define VICVectAddr3 (*((volatile unsigned long *) 0xFFFFF10C)) +#define VICVectAddr4 (*((volatile unsigned long *) 0xFFFFF110)) +#define VICVectAddr5 (*((volatile unsigned long *) 0xFFFFF114)) +#define VICVectAddr6 (*((volatile unsigned long *) 0xFFFFF118)) +#define VICVectAddr7 (*((volatile unsigned long *) 0xFFFFF11C)) +#define VICVectAddr8 (*((volatile unsigned long *) 0xFFFFF120)) +#define VICVectAddr9 (*((volatile unsigned long *) 0xFFFFF124)) +#define VICVectAddr10 (*((volatile unsigned long *) 0xFFFFF128)) +#define VICVectAddr11 (*((volatile unsigned long *) 0xFFFFF12C)) +#define VICVectAddr12 (*((volatile unsigned long *) 0xFFFFF130)) +#define VICVectAddr13 (*((volatile unsigned long *) 0xFFFFF134)) +#define VICVectAddr14 (*((volatile unsigned long *) 0xFFFFF138)) +#define VICVectAddr15 (*((volatile unsigned long *) 0xFFFFF13C)) +#define VICVectCntl0 (*((volatile unsigned long *) 0xFFFFF200)) +#define VICVectCntl1 (*((volatile unsigned long *) 0xFFFFF204)) +#define VICVectCntl2 (*((volatile unsigned long *) 0xFFFFF208)) +#define VICVectCntl3 (*((volatile unsigned long *) 0xFFFFF20C)) +#define VICVectCntl4 (*((volatile unsigned long *) 0xFFFFF210)) +#define VICVectCntl5 (*((volatile unsigned long *) 0xFFFFF214)) +#define VICVectCntl6 (*((volatile unsigned long *) 0xFFFFF218)) +#define VICVectCntl7 (*((volatile unsigned long *) 0xFFFFF21C)) +#define VICVectCntl8 (*((volatile unsigned long *) 0xFFFFF220)) +#define VICVectCntl9 (*((volatile unsigned long *) 0xFFFFF224)) +#define VICVectCntl10 (*((volatile unsigned long *) 0xFFFFF228)) +#define VICVectCntl11 (*((volatile unsigned long *) 0xFFFFF22C)) +#define VICVectCntl12 (*((volatile unsigned long *) 0xFFFFF230)) +#define VICVectCntl13 (*((volatile unsigned long *) 0xFFFFF234)) +#define VICVectCntl14 (*((volatile unsigned long *) 0xFFFFF238)) +#define VICVectCntl15 (*((volatile unsigned long *) 0xFFFFF23C)) + +/* Pin Connect Block */ +#define PINSEL0 (*((volatile unsigned long *) 0xE002C000)) +#define PINSEL1 (*((volatile unsigned long *) 0xE002C004)) +#define PINSEL2 (*((volatile unsigned long *) 0xE002C014)) + +/* General Purpose Input/Output (GPIO) */ +#define IOPIN0 (*((volatile unsigned long *) 0xE0028000)) +#define IOSET0 (*((volatile unsigned long *) 0xE0028004)) +#define IODIR0 (*((volatile unsigned long *) 0xE0028008)) +#define IOCLR0 (*((volatile unsigned long *) 0xE002800C)) +#define IOPIN1 (*((volatile unsigned long *) 0xE0028010)) +#define IOSET1 (*((volatile unsigned long *) 0xE0028014)) +#define IODIR1 (*((volatile unsigned long *) 0xE0028018)) +#define IOCLR1 (*((volatile unsigned long *) 0xE002801C)) +#define IO0PIN (*((volatile unsigned long *) 0xE0028000)) +#define IO0SET (*((volatile unsigned long *) 0xE0028004)) +#define IO0DIR (*((volatile unsigned long *) 0xE0028008)) +#define IO0CLR (*((volatile unsigned long *) 0xE002800C)) +#define IO1PIN (*((volatile unsigned long *) 0xE0028010)) +#define IO1SET (*((volatile unsigned long *) 0xE0028014)) +#define IO1DIR (*((volatile unsigned long *) 0xE0028018)) +#define IO1CLR (*((volatile unsigned long *) 0xE002801C)) +#define FIO0DIR (*((volatile unsigned long *) 0x3FFFC000)) +#define FIO0MASK (*((volatile unsigned long *) 0x3FFFC010)) +#define FIO0PIN (*((volatile unsigned long *) 0x3FFFC014)) +#define FIO0SET (*((volatile unsigned long *) 0x3FFFC018)) +#define FIO0CLR (*((volatile unsigned long *) 0x3FFFC01C)) +#define FIO1DIR (*((volatile unsigned long *) 0x3FFFC020)) +#define FIO1MASK (*((volatile unsigned long *) 0x3FFFC030)) +#define FIO1PIN (*((volatile unsigned long *) 0x3FFFC034)) +#define FIO1SET (*((volatile unsigned long *) 0x3FFFC038)) +#define FIO1CLR (*((volatile unsigned long *) 0x3FFFC03C)) + +/* Memory Accelerator Module (MAM) */ +#define MAMCR (*((volatile unsigned char *) 0xE01FC000)) +#define MAMTIM (*((volatile unsigned char *) 0xE01FC004)) +#define MEMMAP (*((volatile unsigned char *) 0xE01FC040)) + +/* Phase Locked Loop 0 (PLL0) */ +#define PLL0CON (*((volatile unsigned char *) 0xE01FC080)) +#define PLL0CFG (*((volatile unsigned char *) 0xE01FC084)) +#define PLL0STAT (*((volatile unsigned short*) 0xE01FC088)) +#define PLL0FEED (*((volatile unsigned char *) 0xE01FC08C)) + +/* Phase Locked Loop 1 (PLL1) */ +#define PLL1CON (*((volatile unsigned char *) 0xE01FC0A0)) +#define PLL1CFG (*((volatile unsigned char *) 0xE01FC0A4)) +#define PLL1STAT (*((volatile unsigned short*) 0xE01FC0A8)) +#define PLL1FEED (*((volatile unsigned char *) 0xE01FC0AC)) + +/* VPB Divider */ +#define VPBDIV (*((volatile unsigned char *) 0xE01FC100)) + +/* Power Control */ +#define PCON (*((volatile unsigned char *) 0xE01FC0C0)) +#define PCONP (*((volatile unsigned long *) 0xE01FC0C4)) + +/* External Interrupts */ +#define EXTINT (*((volatile unsigned char *) 0xE01FC140)) +#define INTWAKE (*((volatile unsigned short*) 0xE01FC144)) +#define EXTMODE (*((volatile unsigned char *) 0xE01FC148)) +#define EXTPOLAR (*((volatile unsigned char *) 0xE01FC14C)) + +/* Reset */ +#define RSID (*((volatile unsigned char *) 0xE01FC180)) + +/* Code Security / Debugging */ +#define CSPR (*((volatile unsigned char *) 0xE01FC184)) + +/* System Control Miscellaneous */ +#define SCS (*((volatile unsigned long *) 0xE01FC1A0)) + +/* Timer 0 */ +#define T0IR (*((volatile unsigned long *) 0xE0004000)) +#define T0TCR (*((volatile unsigned long *) 0xE0004004)) +#define T0TC (*((volatile unsigned long *) 0xE0004008)) +#define T0PR (*((volatile unsigned long *) 0xE000400C)) +#define T0PC (*((volatile unsigned long *) 0xE0004010)) +#define T0MCR (*((volatile unsigned long *) 0xE0004014)) +#define T0MR0 (*((volatile unsigned long *) 0xE0004018)) +#define T0MR1 (*((volatile unsigned long *) 0xE000401C)) +#define T0MR2 (*((volatile unsigned long *) 0xE0004020)) +#define T0MR3 (*((volatile unsigned long *) 0xE0004024)) +#define T0CCR (*((volatile unsigned long *) 0xE0004028)) +#define T0CR0 (*((volatile unsigned long *) 0xE000402C)) +#define T0CR1 (*((volatile unsigned long *) 0xE0004030)) +#define T0CR2 (*((volatile unsigned long *) 0xE0004034)) +#define T0CR3 (*((volatile unsigned long *) 0xE0004038)) +#define T0EMR (*((volatile unsigned long *) 0xE000403C)) +#define T0CTCR (*((volatile unsigned long *) 0xE0004070)) + +/* Timer 1 */ +#define T1IR (*((volatile unsigned long *) 0xE0008000)) +#define T1TCR (*((volatile unsigned long *) 0xE0008004)) +#define T1TC (*((volatile unsigned long *) 0xE0008008)) +#define T1PR (*((volatile unsigned long *) 0xE000800C)) +#define T1PC (*((volatile unsigned long *) 0xE0008010)) +#define T1MCR (*((volatile unsigned long *) 0xE0008014)) +#define T1MR0 (*((volatile unsigned long *) 0xE0008018)) +#define T1MR1 (*((volatile unsigned long *) 0xE000801C)) +#define T1MR2 (*((volatile unsigned long *) 0xE0008020)) +#define T1MR3 (*((volatile unsigned long *) 0xE0008024)) +#define T1CCR (*((volatile unsigned long *) 0xE0008028)) +#define T1CR0 (*((volatile unsigned long *) 0xE000802C)) +#define T1CR1 (*((volatile unsigned long *) 0xE0008030)) +#define T1CR2 (*((volatile unsigned long *) 0xE0008034)) +#define T1CR3 (*((volatile unsigned long *) 0xE0008038)) +#define T1EMR (*((volatile unsigned long *) 0xE000803C)) +#define T1CTCR (*((volatile unsigned long *) 0xE0008070)) + +/* Pulse Width Modulator (PWM) */ +#define PWMIR (*((volatile unsigned long *) 0xE0014000)) +#define PWMTCR (*((volatile unsigned long *) 0xE0014004)) +#define PWMTC (*((volatile unsigned long *) 0xE0014008)) +#define PWMPR (*((volatile unsigned long *) 0xE001400C)) +#define PWMPC (*((volatile unsigned long *) 0xE0014010)) +#define PWMMCR (*((volatile unsigned long *) 0xE0014014)) +#define PWMMR0 (*((volatile unsigned long *) 0xE0014018)) +#define PWMMR1 (*((volatile unsigned long *) 0xE001401C)) +#define PWMMR2 (*((volatile unsigned long *) 0xE0014020)) +#define PWMMR3 (*((volatile unsigned long *) 0xE0014024)) +#define PWMMR4 (*((volatile unsigned long *) 0xE0014040)) +#define PWMMR5 (*((volatile unsigned long *) 0xE0014044)) +#define PWMMR6 (*((volatile unsigned long *) 0xE0014048)) +#define PWMPCR (*((volatile unsigned long *) 0xE001404C)) +#define PWMLER (*((volatile unsigned long *) 0xE0014050)) + +/* Universal Asynchronous Receiver Transmitter 0 (UART0) */ +#define U0RBR (*((volatile unsigned char *) 0xE000C000)) +#define U0THR (*((volatile unsigned char *) 0xE000C000)) +#define U0IER (*((volatile unsigned long *) 0xE000C004)) +#define U0IIR (*((volatile unsigned long *) 0xE000C008)) +#define U0FCR (*((volatile unsigned char *) 0xE000C008)) +#define U0LCR (*((volatile unsigned char *) 0xE000C00C)) +#define U0MCR (*((volatile unsigned char *) 0xE000C010)) +#define U0LSR (*((volatile unsigned char *) 0xE000C014)) +#define U0MSR (*((volatile unsigned char *) 0xE000C018)) +#define U0SCR (*((volatile unsigned char *) 0xE000C01C)) +#define U0DLL (*((volatile unsigned char *) 0xE000C000)) +#define U0DLM (*((volatile unsigned char *) 0xE000C004)) +#define U0ACR (*((volatile unsigned long *) 0xE000C020)) +#define U0FDR (*((volatile unsigned long *) 0xE000C028)) +#define U0TER (*((volatile unsigned char *) 0xE000C030)) + +/* Universal Asynchronous Receiver Transmitter 1 (UART1) */ +#define U1RBR (*((volatile unsigned char *) 0xE0010000)) +#define U1THR (*((volatile unsigned char *) 0xE0010000)) +#define U1IER (*((volatile unsigned long *) 0xE0010004)) +#define U1IIR (*((volatile unsigned long *) 0xE0010008)) +#define U1FCR (*((volatile unsigned char *) 0xE0010008)) +#define U1LCR (*((volatile unsigned char *) 0xE001000C)) +#define U1MCR (*((volatile unsigned char *) 0xE0010010)) +#define U1LSR (*((volatile unsigned char *) 0xE0010014)) +#define U1MSR (*((volatile unsigned char *) 0xE0010018)) +#define U1SCR (*((volatile unsigned char *) 0xE001001C)) +#define U1DLL (*((volatile unsigned char *) 0xE0010000)) +#define U1DLM (*((volatile unsigned char *) 0xE0010004)) +#define U1ACR (*((volatile unsigned long *) 0xE0010020)) +#define U1FDR (*((volatile unsigned long *) 0xE0010028)) +#define U1TER (*((volatile unsigned char *) 0xE0010030)) + +/* I2C Interface 0 */ +#define I2C0CONSET (*((volatile unsigned char *) 0xE001C000)) +#define I2C0STAT (*((volatile unsigned char *) 0xE001C004)) +#define I2C0DAT (*((volatile unsigned char *) 0xE001C008)) +#define I2C0ADR (*((volatile unsigned char *) 0xE001C00C)) +#define I2C0SCLH (*((volatile unsigned short*) 0xE001C010)) +#define I2C0SCLL (*((volatile unsigned short*) 0xE001C014)) +#define I2C0CONCLR (*((volatile unsigned char *) 0xE001C018)) + +/* I2C Interface 1 */ +#define I2C1CONSET (*((volatile unsigned char *) 0xE005C000)) +#define I2C1STAT (*((volatile unsigned char *) 0xE005C004)) +#define I2C1DAT (*((volatile unsigned char *) 0xE005C008)) +#define I2C1ADR (*((volatile unsigned char *) 0xE005C00C)) +#define I2C1SCLH (*((volatile unsigned short*) 0xE005C010)) +#define I2C1SCLL (*((volatile unsigned short*) 0xE005C014)) +#define I2C1CONCLR (*((volatile unsigned char *) 0xE005C018)) + +/* SPI0 (Serial Peripheral Interface 0) */ +#define S0SPCR (*((volatile unsigned short*) 0xE0020000)) +#define S0SPSR (*((volatile unsigned char *) 0xE0020004)) +#define S0SPDR (*((volatile unsigned short*) 0xE0020008)) +#define S0SPCCR (*((volatile unsigned char *) 0xE002000C)) +#define S0SPINT (*((volatile unsigned char *) 0xE002001C)) + +/* SSP Controller (SPI1) */ +#define SSPCR0 (*((volatile unsigned short*) 0xE0068000)) +#define SSPCR1 (*((volatile unsigned char *) 0xE0068004)) +#define SSPDR (*((volatile unsigned short*) 0xE0068008)) +#define SSPSR (*((volatile unsigned char *) 0xE006800C)) +#define SSPCPSR (*((volatile unsigned char *) 0xE0068010)) +#define SSPIMSC (*((volatile unsigned char *) 0xE0068014)) +#define SSPRIS (*((volatile unsigned char *) 0xE0068018)) +#define SSPMIS (*((volatile unsigned char *) 0xE006801C)) +#define SSPICR (*((volatile unsigned char *) 0xE0068020)) + +/* Real Time Clock */ +#define ILR (*((volatile unsigned char *) 0xE0024000)) +#define CTC (*((volatile unsigned short*) 0xE0024004)) +#define CCR (*((volatile unsigned char *) 0xE0024008)) +#define CIIR (*((volatile unsigned char *) 0xE002400C)) +#define AMR (*((volatile unsigned char *) 0xE0024010)) +#define CTIME0 (*((volatile unsigned long *) 0xE0024014)) +#define CTIME1 (*((volatile unsigned long *) 0xE0024018)) +#define CTIME2 (*((volatile unsigned long *) 0xE002401C)) +#define SEC (*((volatile unsigned char *) 0xE0024020)) +#define MIN (*((volatile unsigned char *) 0xE0024024)) +#define HOUR (*((volatile unsigned char *) 0xE0024028)) +#define DOM (*((volatile unsigned char *) 0xE002402C)) +#define DOW (*((volatile unsigned char *) 0xE0024030)) +#define DOY (*((volatile unsigned short*) 0xE0024034)) +#define MONTH (*((volatile unsigned char *) 0xE0024038)) +#define YEAR (*((volatile unsigned short*) 0xE002403C)) +#define ALSEC (*((volatile unsigned char *) 0xE0024060)) +#define ALMIN (*((volatile unsigned char *) 0xE0024064)) +#define ALHOUR (*((volatile unsigned char *) 0xE0024068)) +#define ALDOM (*((volatile unsigned char *) 0xE002406C)) +#define ALDOW (*((volatile unsigned char *) 0xE0024070)) +#define ALDOY (*((volatile unsigned short*) 0xE0024074)) +#define ALMON (*((volatile unsigned char *) 0xE0024078)) +#define ALYEAR (*((volatile unsigned short*) 0xE002407C)) +#define PREINT (*((volatile unsigned short*) 0xE0024080)) +#define PREFRAC (*((volatile unsigned short*) 0xE0024084)) + +/* A/D Converter 0 (AD0) */ +#define AD0CR (*((volatile unsigned long *) 0xE0034000)) +#define AD0GDR (*((volatile unsigned long *) 0xE0034004)) +#define AD0STAT (*((volatile unsigned long *) 0xE0034030)) +#define AD0INTEN (*((volatile unsigned long *) 0xE003400C)) +#define AD0DR0 (*((volatile unsigned long *) 0xE0034010)) +#define AD0DR1 (*((volatile unsigned long *) 0xE0034014)) +#define AD0DR2 (*((volatile unsigned long *) 0xE0034018)) +#define AD0DR3 (*((volatile unsigned long *) 0xE003401C)) +#define AD0DR4 (*((volatile unsigned long *) 0xE0034020)) +#define AD0DR5 (*((volatile unsigned long *) 0xE0034024)) +#define AD0DR6 (*((volatile unsigned long *) 0xE0034028)) +#define AD0DR7 (*((volatile unsigned long *) 0xE003402C)) + +/* A/D Converter 1 (AD1) */ +#define AD1CR (*((volatile unsigned long *) 0xE0060000)) +#define AD1GDR (*((volatile unsigned long *) 0xE0060004)) +#define AD1STAT (*((volatile unsigned long *) 0xE0060030)) +#define AD1INTEN (*((volatile unsigned long *) 0xE006000C)) +#define AD1DR0 (*((volatile unsigned long *) 0xE0060010)) +#define AD1DR1 (*((volatile unsigned long *) 0xE0060014)) +#define AD1DR2 (*((volatile unsigned long *) 0xE0060018)) +#define AD1DR3 (*((volatile unsigned long *) 0xE006001C)) +#define AD1DR4 (*((volatile unsigned long *) 0xE0060020)) +#define AD1DR5 (*((volatile unsigned long *) 0xE0060024)) +#define AD1DR6 (*((volatile unsigned long *) 0xE0060028)) +#define AD1DR7 (*((volatile unsigned long *) 0xE006002C)) + +/* A/D Converter Global */ +#define ADGSR (*((volatile unsigned long *) 0xE0034008)) + +/* D/A Converter */ +#define DACR (*((volatile unsigned long *) 0xE006C000)) + +/* Watchdog */ +#define WDMOD (*((volatile unsigned char *) 0xE0000000)) +#define WDTC (*((volatile unsigned long *) 0xE0000004)) +#define WDFEED (*((volatile unsigned char *) 0xE0000008)) +#define WDTV (*((volatile unsigned long *) 0xE000000C)) + +/* USB Controller */ +#define USBIntSt (*((volatile unsigned long *) 0xE01FC1C0)) +#define USBDevIntSt (*((volatile unsigned long *) 0xE0090000)) +#define USBDevIntEn (*((volatile unsigned long *) 0xE0090004)) +#define USBDevIntClr (*((volatile unsigned long *) 0xE0090008)) +#define USBDevIntSet (*((volatile unsigned long *) 0xE009000C)) +#define USBDevIntPri (*((volatile unsigned char *) 0xE009002C)) +#define USBEpIntSt (*((volatile unsigned long *) 0xE0090030)) +#define USBEpIntEn (*((volatile unsigned long *) 0xE0090034)) +#define USBEpIntClr (*((volatile unsigned long *) 0xE0090038)) +#define USBEpIntSet (*((volatile unsigned long *) 0xE009003C)) +#define USBEpIntPri (*((volatile unsigned long *) 0xE0090040)) +#define USBReEp (*((volatile unsigned long *) 0xE0090044)) +#define USBEpInd (*((volatile unsigned long *) 0xE0090048)) +#define USBMaxPSize (*((volatile unsigned long *) 0xE009004C)) +#define USBRxData (*((volatile unsigned long *) 0xE0090018)) +#define USBRxPLen (*((volatile unsigned long *) 0xE0090020)) +#define USBTxData (*((volatile unsigned long *) 0xE009001C)) +#define USBTxPLen (*((volatile unsigned long *) 0xE0090024)) +#define USBCtrl (*((volatile unsigned long *) 0xE0090028)) +#define USBCmdCode (*((volatile unsigned long *) 0xE0090010)) +#define USBCmdData (*((volatile unsigned long *) 0xE0090014)) +#define USBDMARSt (*((volatile unsigned long *) 0xE0090050)) +#define USBDMARClr (*((volatile unsigned long *) 0xE0090054)) +#define USBDMARSet (*((volatile unsigned long *) 0xE0090058)) +#define USBUDCAH (*((volatile unsigned long *) 0xE0090080)) +#define USBEpDMASt (*((volatile unsigned long *) 0xE0090084)) +#define USBEpDMAEn (*((volatile unsigned long *) 0xE0090088)) +#define USBEpDMADis (*((volatile unsigned long *) 0xE009008C)) +#define USBDMAIntSt (*((volatile unsigned long *) 0xE0090090)) +#define USBDMAIntEn (*((volatile unsigned long *) 0xE0090094)) +#define USBEoTIntSt (*((volatile unsigned long *) 0xE00900A0)) +#define USBEoTIntClr (*((volatile unsigned long *) 0xE00900A4)) +#define USBEoTIntSet (*((volatile unsigned long *) 0xE00900A8)) +#define USBNDDRIntSt (*((volatile unsigned long *) 0xE00900AC)) +#define USBNDDRIntClr (*((volatile unsigned long *) 0xE00900B0)) +#define USBNDDRIntSet (*((volatile unsigned long *) 0xE00900B4)) +#define USBSysErrIntSt (*((volatile unsigned long *) 0xE00900B8)) +#define USBSysErrIntClr (*((volatile unsigned long *) 0xE00900BC)) +#define USBSysErrIntSet (*((volatile unsigned long *) 0xE00900C0)) + +#endif // __LPC214x_H diff --git a/poc/lpc2148_blinky/main.c b/poc/lpc2148_blinky/main.c new file mode 100644 index 0000000..09a0f11 --- /dev/null +++ b/poc/lpc2148_blinky/main.c @@ -0,0 +1,37 @@ +#include "lpc214x.h" +#include "startup.h" +#include "console.h" + +#define BAUD_RATE 115200 + + +void delay_ms (int count){ + int i; + count *= 3000; + for (i = 0; i < count; i++) { + asm volatile ("nop"); + } +} + +int main(void) +{ + unsigned int i; + Initialize(); + ConsoleInit(60000000 / (16 * BAUD_RATE)); + puts("Init done\n"); + IODIR0 |= 1 << 10; // P0.10 is an output + IODIR0 |= 1 << 11; // P0.10 is an output + IOSET0 = 1 << 10; //LED off + IOSET0 = 1 << 11; //LED off + + while (1) { + delay_ms(1000); + IOSET0 = 1 << 10; //LED off + IOCLR0 = 1 << 11; //LED on + puts("led1: off led2: on\n"); + delay_ms(1000); + IOCLR0 = 1 << 10; //LED on + IOSET0 = 1 << 11; //LED off + puts("led1: on led2: off\n"); + } +} diff --git a/poc/lpc2148_blinky/openocd_ftdi02.cfg b/poc/lpc2148_blinky/openocd_ftdi02.cfg new file mode 100644 index 0000000..c321458 --- /dev/null +++ b/poc/lpc2148_blinky/openocd_ftdi02.cfg @@ -0,0 +1,35 @@ +#daemon configuration +telnet_port 4444 +gdb_port 3333 + +#interface +interface ft2232 +ft2232_device_desc "Lockenkopf v.2 A" +ft2232_layout usbjtag +ft2232_vid_pid 0x0403 0x6010 +jtag_speed 3 +jtag_nsrst_delay 800 +jtag_ntrst_delay 800 + +#use combined on interfaces or targets that can't set TRST/SRST separately +reset_config trst_and_srst srst_pulls_trst + +#jtag scan chain +#format L IRC IRCM IDCODE (Length, IR Capture, IR Capture Mask, IDCODE) +jtag_device 4 0x1 0xf 0xe + +#target configuration +daemon_startup reset + +#target +#target arm7tdmi +target arm7tdmi little run_and_halt 0 arm7tdmi-s_r4 +run_and_halt_time 0 30 + +working_area 0 0x40000000 0x40000 nobackup + +#flash configur on +#flash bank lpc2000 0x0 0x40000 0 0 lpc2000_v2 0 12000 calc_checksum +#flash bank lpc2000 0x0 0x04000 0 0 lpc2000_v2 0 12000 calc_checksum +flash bank lpc2000 0x0 0x40000 0 0 0 lpc2000_v2 12000 calc_checksum + diff --git a/poc/lpc2148_blinky/openocd_mac.sh b/poc/lpc2148_blinky/openocd_mac.sh new file mode 100755 index 0000000..fc54ebc --- /dev/null +++ b/poc/lpc2148_blinky/openocd_mac.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -x +/Users/david/Devel/arch/openocd/bin/openocd_r520_mac -f /Users/david/Devel/arch/arm/openocd_ftdi02.cfg -d 0 + diff --git a/poc/lpc2148_blinky/pics/small_console.png b/poc/lpc2148_blinky/pics/small_console.png new file mode 100644 index 0000000000000000000000000000000000000000..b7f073589844ebc9609cf1d857f169834a23e26f GIT binary patch literal 41026 zcmZ_WbzGC(A25E#=th)IQ9?mLx=TStLg_}4?vBx^0)h%iGa6};k{qId(lNkMqq`Xc z2JE?Z-`>yj{r&N~-Y;M;*u~)DI-m17pK}gxbhOkd$(YIT@bD-fKYH*S4-b?CJVw(H z0q?Cp&;0>D5WUn;e}MhxAT>hI0G}ase`M?he0=oJo7yiY1>7fn-IeYBJ0B0FFd2o1 z7l!xvfwG=IV*AoBNDqE;itQLoSK$BnMIA>>jbe? z(Jvg^|3~9)rk=!S&*tY3yW(OP>WTKg&e^p!g0D`Os9BfNWboJ5(@G6B#o^G~4vzz! zbim_yKH@b|w>Jf$3~hCDO6oGBOf@gMh~#>_HkqK}mGuou#4^LAbp?oLI|8MbjvZf6 zlm0STuln)l;*$|e}$AXcbK z-E8h@nsE49=^AM7VU19|Tb&TGW&WOmCEq?@V%cXU>6K(KGc&^N9eVL6dAx0%FUxQQ zeI0?qnwJ9TPAL>$sz*8{{KD)F7K`kPrEbb7ub)E>pyE;IF!mMyPImk`gE`QgKT>l} zulfix`LiRVi`9kQJ*|rszxLNEzIzn+rm)V#8#g)>&>b0TiZ)hAFk(b&3-9`~2ej@v zM|a2r*xq89Bwc5$oJ9;iv%y@|-czOiOuf}dj%?}iOLP<17Z@u06Q+`fch{go$*|ec z0mgn(Y7X_8kl6}WzVZ2{54+UwXFgGiA?BB~915*4!I}J7BDo)`Pcb&;a+J<5;t)R+ z6{#HvO~MU8Wr>>wqhW2^Ht6az15o;_vZq(4C~GS#JoEK@AHqAI3$M8&VWivExrif< z{;}LEgc9=J?xF?KF2t5&Uv8+}4jZ|IZA=rfzS5ipt_>?+LHvErNQ#szhN?AB!-qHY zk(ujGP6AP5=v*_u^V`GsPi(gb&b2n%b?MwXp=vRRP@hv(Q=SAn>@3Dy5Wy zN6=y^;e1bfVsLdtU%A0b7Iq2GPki2Czn0vBUe*QH(hHSR3r*o3SJ8Cf?cLy%FDJonfBt*kZZ?c@|qk}zqQZ!vn@lA=tB(oeGeP| zEW2@MshX{|6^xMb)O=TK-b0!??$i2VXA*mQ8je%uG=ofotrnQkOMz!XkrEaxLl2Pb zyCXa*I|xL*_!z8Zuw}53z}anju7M4_ljW<`M|jy3V%A3}{(v%%!@kp`h8}$G9Nch1 z#>kfN?hb8TOMOdy?CDx`g2cnj@7}@&EamW6sBbCTCIm*Uc)@bM{N`?ogkfgikxqT9 z<2MLF*462&(F0qW92yTu!8E6U`1bqPpJ2NUh6vM0g@?KM0~e?@Dbl(tlTepirJ3WJ zjs#7T&63SM5doC}l^fUBgO3%8GhyS1afG)Z%_GixNJzV#;JW3ev>~7%p;L=}tt*sI8u1(Z<|4Md+W)>4fQZ5sFT(3GvQ#H^WSw0O^FzPywlf- z{<)#;d*$VDc-dX|)UR1YJJLJS7DTSAwk~3&1S!z`@Q`C`PXF$JZg_pf<|!bzlXjcL zH=cN!f0`e1%U`$cvxTgl{SA{da^!ec#*weEVa8oS+zs}_e%P^&nUXV6?(iy(?z*O! z2(s_Q2ICuX^5sM%Hv&;1aRfGc2f#}yIn*Pvw{*00bP7Al;*ATnC=F0R1#JcpIm%3W zR}F&3UXHyy3Ut5cdC!v`Y|Yrk)^SDr6{g587sQUJ7F|8(*wM7&z)XQR$x+egvcn0k$9OxheILkn2{9DPhI)l`Ajx-3 zbzJmK;S_cHh&wwPI+c2NQz%Sc)93$;2()agrib_RaD?JB@1wq$Dwf*8Xtx$vsOt%O zyfJL=FrC{2$F_lz;bTk3r?bS}3f8%S91)EKZlvEp5o!bpB!h$<^&w7|yTq|W3tru- zv$H;alZ3Ee5g!SAa-);E_*FBs!^*PCvVQ-pL4Rz^-KGM`t0jualjlgvxsA^f4$M1V z8Eo>pUz9IdvR#rgXS;YyEOL_s$?yA2Ubp{Nw32EN?cR<)n@fL8Gk&+!aNo9+(MY6b zQCLbFpa^zLlkArTZ&xEM>v>gnT2PRk@WVOHsY<>kC0 zo%(#ohby-0R-0CvW@I@VIU932z1x|8B$uuyyYkOIKcVLepGd+NIkh~s z+${)O77x&r4=-R{aqqgJchQm8{rSx%MOF=)BwGh_t9)B_uy$li(X`L32_= zXQrr0!$XKB*JFkcSNVa++HcLUAgFTzOl(p*GpsWtEi$J6`FU;Mb z+4q4>DpQdJO054u#=^eLe3>yO=VDQjh|-F3flrq;ddJ}UBc}}5LVOn!@sLsT1eRV_owQ`cc8>lY{e2F`UZ}mn>R|Ig2{65vcSN$IEIS)%l|PygsG}|XDO&l_r3`9I!W?>Ge>QU1p*&KSuOAJkxpFuyq2LDTV;u9 zICfJNHL`zXrx@DML37~+po0eao^989lk@>B39fL5w$h4d%8*_g$?DGPPO+TTjdCN9 zY{$&m%E=tEy*oGo1A5KKE+V(c^m>yP&TY$7s#f-%nWDP;{z{D9~5eh`y_q;vJOMdJYRmHw4JXp3vJuT-c2OH{uA=z%S`OJ#ZGZEw_;XjpSL zyLeBhm4pO`W|5qG27ha(`i_p?BhMwBvvR8uqAj~$cK=REgn|J_`KPNx7QSKl{FvB&*>U-8Z**8SemmJCd~q{M!(bqqjZBJ7 z9dj)Y^j}Iel0EtT*7kZMNR;D{Yp?UF^)dj0QU0o(8Jy9~@T5B>{_Y&fpE>8f=uR3V z2BWo2k{5AZ^s(s38s4rPiY>e%@gnit16=6r8NYjjQT?>(+=JgZ-HhgHS|wl(TIISr zU)o+mq6r;&$F)l3sZ!Yi5>~k{b6 z^XF>Q49xr*2lF5CACUs38VXb!aYUT{JcwJ8R2lA4rY6SXz4K$;lWGqiZF#bHXJlcj zvd2~4Q~t*cotO5uj=KUf2o|8oy64f_Bf|DpQRu3*lwn(QCbOwUB&wdui7iC_l|ZkN zdjsh*!y3byJjok%x^Ohp;TQpDZjdL-xxm}I3BHe83iTrbE#%#f ziOC#(Nh1B{5Au&l?1dcF>jk9fy#x+>pYj=-)ixC}pUgF&8)hT9Jk^%td;K^U>t9di zS4FDDGP5~~G4$uAD}FtW0V6;zp||voE7wimlTOBevweykfbx`*b{kJMI?vb662m+@ zRzkMKraXdr4qWWG>U8Z(YU124_7A#xWK=fZjM5d=54ULS-3!hk=;7(%v7^5g|CsTk zzqnEL7Ypk)N=NDm_KH~o4c24Y^76)S5Nkrhk(pJnte3?_#)CP((6+1k(Q>GODg`t1|V0} z!yDiy%r4H33MTwCVP@jBA-Z38SXZVI21L|RKkb+)*Dtd#JEFeV05oZ&Zn-}~&JOSD zwdk^Gg*~%PW@18SEo3c}bX{#=O7_|a5!w!lMb?(?v+K`Hl^K z!Dy)%8S+%MhePI^GI=#+HARlv1&ko_P6LBDh=LgR<&qT)&W${DOU3Rayd{vDz#3r- zz+4VbMw1KoIKPJ4V!c2#!-~*QEBsrEDHnQQyOSVX=v*RbY%-UonbD##`Jd~cWPk7;eAnGxYD#$*s4u`kC|8`h;pvtF}4n7op>o_+j8pd*N| zLUB8@)$K4R7K%=u(>+(9vP0+0LTu%l)SK0toj8{|7WqI?hb@1yuVzuTA`8tKF_PCkAy&2udB5SI@oc>hWMD{`n8eU z`KEkXQ$a6}zLY3$m7vDv!^TXt-Q=Z75SV)Omeh^!6ET&P5Zd^aZqEV{U_2K2#HDF6 zcFsh5teQw)jUflmKqTF%^C|P}25CcdgQT;jvSmKj9D`p*tVdmbb=}O=d^)l!a{X#V z)%rZ#u4qkTNbONp`svd#nciS-G%9OCr=`u;a#lrHTSQx=IwFh`WD1rEm;aUXYM#7` z(=f`3vx%o^m(qk3K53X((v9*!}ZtkuM=XjW5vAHIX`IOh{Ck;}vUbiViUQ zx3X8G@$EJ1^>%KVp$7FeuDOELP1PCf2p&9r?JvBjZhv49*ZAD7^QRYsS8Xns`5o z3;D~&AFd9qgil>GT{H=y9Th^O9WGOn@&_H--^QIB#n*|CGmm9Edxe|N=E6q*6cuRP ztpT|KwY2Bjy69cnW1kIbZ0yz3$ke^MMAzy z_DE7M^7d%AZ!$```o;UO<6T+@N9RzjP7Y}FZaJBjCM>APfAeaDS*e4?(IXcj;d-%p$&`q-z@Y&jQW_}%cOzsbjIMuVE+S*iF{eC-z;0~F zHn*J`Vdkhi5keZ}O!vmZ(c-A7|f`ZY=r4;y{uc2*4v?g$yzBMJ8-m|NJS%n8on_A%C(Y^-vdErH6S ztOTz)&pOX$Wy7-f?)h|3?E3q?g-{pPX>N>eoAU+MtapA#DKRwb;IERe;(w)EwCh&< zxX=b0Utr&O~pz+_;`^2ogvhG$u~i^KkTp&@U)cK+{bQZjb==+*mPTAJ!?+7 zWsBC`*=yTFiwIQ~2u~xw=)HHJ1sI3+ALlu+tlJ%{AEzkY3s??Iox3eBK2|l3$qSv| zzv6R$cf_)}7lvmVCXWP_Ueqm){T3rhqmkl5%B7uToMhB?j?RzH%YdJB-$=YWM=|&< z#4DR2&)0Wg8?lSbUddcxBcIR$#6n$_cEU_pq~6KClg(8ANuDC4_dp5ei_OI!g%(3s zpAUEn4@eG4Rz{)bE3vyRx9r=B;Ta9q$Z@)oTq!2dLF6K_x%iC?RyR+9c2ex{!Z8zusYII&;g=ej zwKwI9=n0h>>&cVgYY}BpG*JmSq>635az6$#86mtI`6|ia8tb09us#1pEUAxR!FWOq zW`8hS)-|f;^}e0T80_0jwV{>ue((ln3VmyN@K<{9fu_CrNOSGZwNfYj$+9Z?cnLKY zZmOX2pz>CsFv-cxtxH<`#%~SZst8@O8?>e=0=B#+*K(p-c@J}YF?g++a+z{&%4zh) z(V^6aDHi$}!vqo((^Aftv?QOYK2w6)2|pci1dQaE3K(Rg9q&pl40n{ zOp55!`D4GGJ;amJN1q>6O;PpiDKbM!Z%6r3x7^*PBMDLTw=`ntW%;PcgH{;c9o-#e zk68XuOv<0AoLd%N1yI{CoYO zRmk__s57=2$p*;=?WoN>@ks*+)K(d#0dIqO!UAEAprf(kl7Ud-Y1e7jOv<`l6F(Qc znmF@qWN64(^{Jw=`sA^&)Z}H>`)8Cz5RDMN8RDx+0s&8XJgzZS4wAbOWAfT4xie9* z6S0#Ye>fdoj{QV9R8SL}F1y4qqZLz|R**P9fC=gU=d4zgL11iPY+z5toJBjcnOV3I zkVpVGFB$=D`)1BcFxK%Nr=OGSU|tTyiC=cg!SBOcuRncUe9MdDDu6B!9+^UIkdgN^ z<@4wU&FPk5>Wq5XyCx10q`nO?M=W>QdMWn|N#PMA#X&GFu_cj7wX$@#`_o#4lRZ*r z5;Po9$0^7>mG3g*8!i!_M?rk!bG{x8@_RJ7qhk4Gh3_?c>-y=s$H*<$J{o%R?S z-PioDZWyKL8_R+fKj%)7ndGFFq#X3M@ufpQ=zVac*aWd#;g4&6&VD{kTPG%{xka60 z*ESUB8o9|ZBc$hthZVZ$*iXd&*zs$AoHYm>3=XP9j=ue#@`;Sg&u(`xi{cS543YfB zQO5$1g&ikdB{{I~N1WhShwbF=_4l@pL4i(fUlnLh+S?jm4%O2fn(NrO^A1l?o6b90mp#{Yh1mZ9 zn?hU718lx2?%#>?r>di4og55ztXR~Oa*tSI1*81t4EG`?9>k4hg1O&+fthD)N)ZQH7G1Ah6>t!J2|M9wE5GCt~{vRlNbJ( zS#=*xFyGkj)*1(s>l7Q2<7g_iae4@IUM)3-sc&-65!Z(iIx5&tiauu{jH1)x*6H&% z6a-Zm)!?zq`GOIWm2dcw zU=R7=Czy{2-+&M3P@%U)d=H}ISL!iCfS9lANqcy?%P{-6fEU%$hQio1Qn}pXZUQCe z9vbpMS0`teHtS>t^g@rm(Y_*JAv?`H;nNN~G`#vv(XQIw)$Z0A^mT*h$Qv2F6KsIr z@@GIxrwdLZo_22jaJlQlX{a*BM-mt;b55$*+ZsJvew4MF8fN-}YrP|$buWQb61o7gOntvGO}(nSs%y*Po<+wBZr8Ki=Pxbse#>}%kI$dAn5bR4(X4z|yN)b-y#8 z0eZ5~yye6}48-&l$~p@ZpLJ`ab-KEc9jX`~r zFe4WMKm5#b9tpgVjv2EGixqv;wT_vJEOG=zu~T9=qFVyRU6U!ljo;c4v^x?q+Tesy zDj&TgK3~1%8PV`I1;GFXCfMYO%zE5iZtZWa(r)@#=vH4e^XuFz<-AeBsziGG`q3Wt z@~nsFPUw<|3q7j(Yn68%i@hSwW%K7@d!(*{&Clvw(Rr|-O5E_GGE1M43u|d{*=L|R zy2+Ilhf82SnWL`GP8E2Zs3U+0kYP`y0qdL$Fv78YbRuH&qEB?u%NMAq%@ZT0d*&4m2APX^Y&3s&G_sU-mNk+& zti#E;qG(h|xT*+j6}@V|3B`Bp<@CSdvYJp|??TZ+88#jUV$XNxqH)iOqFD?Tu#_!d z0rTW6Qof2*{`b@$mg-o$*xyR{q|WOrczIFR&NF)^Jq0JP6yqmftBE>KKY;9a zEQkKWUQ1ie1Vk!Wa8xH^gOxO(w}-Eh3{Gb^%DNG6dE%_UpXF{*mv|7!-S*yM{n)#t zL{^?sGsp2z?_`fWC@(&l<#)mURsm3@~@=gHERu!!v)Y$lIt*y=QW&1AL zr-S-@Z?mHudyiy?2EkPaPD5t`z+H^pHS;|lyEq_?s@szv$U#+jhGFCtTa^Ho=B$6N zmWtV2KSCBq2cx&6TW_i2jzwN|vgOUP?9ADtiH=QXoII+3y7MeN{hm&+kD1x?>KIaP z%eQz|tu%0!aU{ORCCUpRRtbzfrrMy~eTJiRs(+5;}1%DrFp0d-_VGaHR;)dAPX(?<>bj(T=g=kW4c-h&$gsuEz=M+Hsei zN%Fe6_F$0I{=?+0>c{NMKX8-+N)EMFvN^3Dz+Q*Z(tHtlY5hY@N_uhm^+#^lX*YoA zJ0=EAxkqju>%%tT!^A_ytdrso$3CzV;yi-%=4r#~N-VPOmkY zQzdUsUZnmcF_}GFbUyoRx8F}EAn#CRC3M(mK)N455n-lW#mOLrmIbJyYBz1*eK7bG zfYEaaCuBp9?O51|OfWiCg^%@_RK7dG`0Ysmc<+FH4?eWlF&bKgeX>u10z@bEsIpTB zu-5k2B=)frXH;!uP&FhvbNo?oT(AAN(Rl>ice<<#IgUi=*OxnrOVI`MoX6AE_8YGX zh%N`^9t97glUgMG+;%POpAQ#8AA^#wDv#ZYLcwb)IPM)=A(NN)P7QFv)=Y-#bLMAS z7P2=0q{Js|Q+`$)1me_=?BlGX9U9nsm$JR`A0a$wic<*;pzCV#q@w{VF3il75RXN& zCv4OH;jUFz@_7g#%))M5Xs?ChZxu|aS0<{|{$0)AQGCIylL@!2XF7e8drCTJm{TohNjgZ0xFX?F#i zi*CnD&R&j3X?H$lvPlj%D7@kDhq6uXZ!}7IdLD+0RX`KGx-Ub;Dy1Z!m!qRCcI^4@ z_n70CKC3>DEu>147lv4! zC_Pe03lcu#BtVnw($0YUcLo42ws=hy|D2ODRx<-sW-EOfCuYg?7jR%7<$isnp<@P+ zDK`?&vU|%ivcyw%6S-6P0%EMcCJrb_usAY|-zzoW&*dErr}Dd%F@T{mKtt0&4)jx~x_p|C5Z%aaDIRk|C1+GV=YWxhfF2O$m& zmK4qfR^<%xK3(4*Nis_XoUGA(X0#A#eJMrYOgY6|b0a2^MZxt{iZM+=IM_<&SO&hO zSFMW*R(RXY;3Kq2^^G4#$DY6Lx(Q72I{?3~9%16*a(UrFi$lZ003deBaXxyL$=f-! zw03Z$G_hq|ZP!M1&KMl8Ky-NR2#_~uVORZC(mVaXCa`|TB3%cv5JDd9BxcgZMiHlvb&nCZdKFVb?4B3UJTcVXibwp_0-I5vY z@FVs$`9TPbZkhCuAe{eK@~bEKiNCB5(_pW~ZYDf}%I`Q>a`f826cfpSy*rTY-eaUr z#R#HJcViKq^^s1*;Je1Zo*+dPmcA7_6- zfQZ#mvkY>h9+`Q07Kdn&7$Jx!l?Uzh>4BLG1C%NqrRHd7lK?i`oGJP^=Uq` z0WN#q)CCs8xhvVjld4tP$o%q6^wMb}spXJ{&&&&CBn;6XnEfCJUNN3{>2_ELGIH<^CL52z!jAJc#jEg<_^> z=Xb9pq`qbu4+``q3;|*d5=_Ni;f#k>LoEt>fqZub08y_W(#GASSFVtqVB3n(9n;d3 z6{n16>ZY(JA{d~`U=w2*Z76clm?moP2~NbYS9e(b2I8nFglGHF%=;#8TDgrJZ|y+U zPlo^87O(r_v~H*9MV#aVZcYs%0N?e`3|A~ur~@HwZFB4&Zhi#hxvMNheJ9m9c=}WH z#*k9>GrMsnEB*#x)~Hjo8$i_R7qE9Yr_a&5YfBIdYe-=b+Hs$`J zE1ELNpYuRz5!9sPnYXM$dg^jAz1_$Z)D{frM1R?{p6{{By067lvI!1Y#p!&5(Vhui z3?ZS!2@^FPa+d#kgDm%MP}RQlzWgHO2bzSn{a`;K){S84wZ{*s!=5+EC7%GQ`VRqw z&L=owaMya%9pvsJ0N;?Z)e)%==2GMV5FIC+s|9mQwcv!=Wdqnsr5)d8fD4mU$g*-F zA-iYaXgr0Nt$LNGq}|q9vyY%nxP$Sj9S#(iP4E=u_1*c~LLQrrhCIgDbUx91nvo_J z!o!#g7-J4J{u?&#cJ5)qE|%^Z{WAgN<6NC8jXl5-c98@S??~)ORDxKT5Q>eVu2|ON*>l%mbm+m4 z9cMdPBa7PBR{^9KXv`jZp4w~(WrkIJZRt|oV2EAy2!#NKU79r;#b*L&|9Qzp&zHbb zi9~qM@cM!pwfc69t;fLP^VO~f<7r!$Ou{ebFI#^2hF?GdoR7A1rsTiKMh%c=(n%0I zXS)Di^n|k!`?BI`3*qb=_}^{4p(9#pYce1PW!teQ&V%F72n$#l!G!nQ79d?{BB^E> zfJ*nz_&6qpP6z^UuBcr&{mxakc_+-PTY4!Av`da-bzss;FQk`Ss_-lrzj+D=cJOA2 zu7}quOIVAM7pa5@uLC>i?B4VH)RO0|y^%924}GiuO^Mdv~O%==EShfHytFf%!h?!p1W)|lH$kVKreO< z8~f&CTHgh*9m%MqJhRbbqPYq=#VqVaN|>=!QC8=6c)VKb?S4P(Y15Y?XsFVY_D+P& znsalcRK0*bI>@wLaGoff1uRMA8g)qgn}aVD&v8b4m)TGClkwl^7g_Z|zxD}HhcJ%) zv08y7a~mjS>`sZkR^)NW#^oqRxk`L8!-=p@0B8SJ;5GR-G{^qKOUj9=Fj!bP2&|l0 zJ^){hXg9K~5UQdsyr~!U7H?=PXHvd8a>I12vDl5v&S7vgtLUHU*^S8v{!U=k*6Gok zs9lO#re->PG{G+E448r1LeBqyv(Qa@KBt|nETSBs?6;{kOKQm0vN@&S!|Ca^JlER> z^)9;0)-Q+?M&%7vy}a=Gg#*oz~#I7Hq>nk}0xH?jR@zXxgBenH~MJT6wspX^{` zl1`)yi98|NiOx_Jk9DL9xA_K;Zi<`zx%*Q19aB%dwH1Xh5hEDZG76|wfG)B3$iIWY z4#JnfJ;XZj>M~1x#eas5Y8OZBltT`H+*7jD@?rh;I|O^^xxKb|aF6t$hp@bLVD~Y_ zc(57TW3~rL=1$mz5A*5;kU00b0P_634ptWjpgZHfjaq=yOt$!j-T9~|D416ee!>jo)O`zdg|8=g{Th` zefY^4Qo)PI2bfMqr+D!XEP?6&MX%017TT*ozdB%9a=xa+`U>g42~*Xp(bqcvCRYca zMm!e26W&q#S(+AO@$PQ{>`8I?$IU{IYbsh%StQaR(o_PCh?RK`EB>#^#=kia6M7|Y z&WCl=v1mKX(K_FC0bq}SH9ib&N^zt4b$pK)lY}{6;1NU<0+jpH(?mt=IB()06H7G6 zGy&1DQ=Cw2Yf>-Z(IbDEg^j3^yq(Sl;%Rn*mY&@&kgG@^tW(!_k@y$=*ei`$2(G%(9ES8_xb`NAM^ha&>WhX?iW?;B+eoYaKnCWVPE^Kt zG&99q@VoBB=u?#ADaPh@4S@P%_=`dGq5qVS{CiA%9J6C?SX3kmK8V zFI?Sf|4k<^QEu2fKkwFpB{p}BWx@B24^&E$wfM82b8b$QnijZ5H>G=sF4?M#ebpS2 zkS9Oq3rCD zhid@*4fC;i3W>d>!gPM|?Ln|P5odmtuyYy2SNFr=Q!ojtJLSWzC7;t177_;#2ES>4 zV2S@vJ=5*n(tij7P+et6w|o@>%CXX};bpvU(eE#^^iT@Z|Hp1n0X*k{)5cin*wwUHECskZJBrq>wnYbOc+difv)vCF{{mEMeD<7X3K*R7R9^ z^PfU6OLN8FxR_ISdmvTJ)K=GVk(w^FNs=|5k-PiT>~P<;zfT|ynJ4}MgW&=5DH#+0 zf3+lLX6B0m?&g0ZfyzZk{zv7Q-*}ae?vBPOg+2ouC`x(Ke@!Di&Z7>t-w$Cd_P|k+ z*(k&w9Mx-?@K(|pbpx&#CR{Qc0LECOp~)ju5N?8vWw-V3s7`t$fj6FaoQ?+dYW(AS zZIz)pc?f!&ay1=ixU}k-d4WvLoO9csK+#+6>8G}fnMo(!h%pCkRZCLZ13J|@Y_+60riNTyh7B&~!9=$;BA?GC=48bcxFyOqt25y}O`3G8CbM4HTE4#T%zx8FWb zT{nd}NKux6f_{ApI?Kcp+Q%1CDhNne70)2nTG7)Y{FQiHG4+D+IQ@^EZEpIozu}U3 zf?p@iG=OEQqdwFL+mP2M@HcJktjM0waw^GlG=K}BrD}?e$0~T%C+bYcTs89`Ht65G zDM>yzw;oK8mOd^AfL)*xIxHl+(l}Os906qEv0!Rq_LxoCvc1xFFd2U#jj%aRSRE2z zRU_F5h@C10@byBt_M%%EkdMyZA9AnYwq0D(y%{&F_-5oq8(~6JPvJ-!IZ0(9>n}J} z^8$SDq-_fQ(vpOgN$S4)t!4ccfb#q5Uc+T@{R6>g8qi-;Jl2`<(Ylpd^)m3cp)&>A z{om7~Mac71Tc~zq>LPz<-gT>LWx7b|I5gC$X|QtXG0L14$I7z{B82=NG(zEteOvYZP><<8eV+-83 ze23^N@`Ct`8oxt1B=UkNoH;+HlnV;19dmpY%;}OPp~XU6JcpxX%{<04f&;C(broshldutKS`>7RyL!DX>QhpaJ1#%|%5@aYxb zZ|1}Px=We~lFII$fctui#+R>9AE6Uv^^Sr%N+7}x>1Vpf{O8wo*jJvh508w5Z}$Qo z^>#>OS1&TTLOre)FMhf&ERa)M`ZG>_r*9DZfAz35>_JLN?PQ;Y5QMD(JvC?D!gNpk z+xYTxxvWfISHw35ovGRyn-?0drINBKPz1c8(kgG+T~Zj9t*d|OzubQ z(arO=YXc*>#6ZCJ!T#)YSy3+JNSHd9J-Sx*_by)xxV1Xa64g!?^t&YJe2q@}5dOaU zT@Yb?mt!oPDst&|kH))CVMPT1?s4aeKSp0^zjIKB%3XMrIvGw@Rk2O|c3Elg+@D$b z*5}2roTN%+^;EK$Wi0$tK>8;x2;}5sdk1<|1)y5l>YMyj9ot+8xFwvQV9(7w^-IfF z<*N7M{TX*ST^91e|0J{xg_j>r`XW*?(qu$@F3g1IB>akOWv#~{P1LW z!rrM){C~q2Gwt8`J)jgGPH>Inj($HU+l0Ysq{TfQm&Zdx!))zi zY?X980r#UCNL*+U_yUnQR~Yg)jEo|}FF8-Qu9`cjxQc-_45Sf$M0*r-XFWaYq0E;K z$0bNU&+F1}uP%?WsAV~P6)0%^9?snGV7PUI7Z7>-&j;tnt~D}$v#ijFs$D~LIi?c} z!V+Jw;}T#n%@>)MK0h28b)=x~N?f;aCrB^`1??Yn_TKk zFlK1wAM@N-><4}%wZwlSw^89@v8%(ZNgt8{1hW%cHKP2C|vCcE96~#YcO2NmK zjPEj<%QgFZi=1Yk$nN-^C(=E3$QqR@5)o6FJM~{$8s1&=RcypCjT#hIJ~9OjU?lhE zTNP)TcPD%rt0LRwF(=#8bQ$xAi;307@A`gbK0W$=N*5QWX9q{hlRoCy0fzByj}s{f zYvI{wkb{DKCS0Q2g`VOm2T)OFGZD0}hr;oPdp4GiJt)l${>?t`X*Zt~19-;M9G{Bw z>^HaGt0o6(!h%C59U0|UX>m2QyCN2oD?$$U&&uW&e2i(y9={jEnU&v4DZaO@ITdQ zAZ}CM)BGm3GJ3r?H&szE6v4r}$i4v}1)&LM=-jEz1Ja+kr;8Dg%>`d3W zffTKx}hCO=38sC2Rs`dyy^F;JVyxgX%!C)9VFSi{1>>X#Q^a({$e!;nf@dbh6! z(aNCrW;(n=-BYFevTTNzfAMHb1YFDN$_D&Tf9(y|_t7`+q+KQPiVF9t2Z(2B$z}V? z&}wDLcx?XQpAz?*oH6(6g#QMR%~&>dxQBvHP&h~<96Vr3G5$8uQ*_3z_^c^M??1DY zEJ>lESC?n#NdAfIPH&?t&Ww+~uBvuVGr8HdQs%7UxEJp~T}W5imtThrqmjUs5R)Cy z619I}l15L2`F)bIb2qZUI`N&n4E<>K#-KMZ!7jxNQ`6UWj~BBv)rRRxLfg zi975_5IZvb{ES@ddKRA)Xf?5)BV92fei)!5$qd(Bb}C>)G< zCXZ$~4b-nbd8Q@3^28ywz6-H1U!gdVZ2Ls_NhVZtn1|2C)eTUc?E4YtdA}8rX!7@W zY?!^J^+_DQpO4h;A4-ODDB*#gT#nwnOq{$6?7{tw+lY&Mhh^xtJP+d&{~WlujY+&) zB>33kLu-HjcwzqIhv*YxOQ8Qmv;CWmksK(VVE!v?lN>O-C#U&a&bCx5Ni_jh!u2N1 zObz#)aWMYiypj!mH0bfp3rl{mhoss)#hxCu9~ZfSb6NhjDZ1u^(u2~#>o?tAw{jg4 ztvl`kh+U!^R7^oviKmK-SdxwzQ_2U+4*|;4S}wBnI|SzKyN5oXs=2J5!Scf%TDAWS ziaVnp?n8ODU7$gg;0gdNv>EG--9Q>G0|=^iabQy22lML%BR0mLY|K-Yms@)S-XFnC zUJ8Cm4ZGYs>6pe+rHbGrHB0$;Y`$DaJ*hSfY{Lhe?Yq@c|V`*myU9XjDNPBe&y4GDTCvWd)A99SusY_ygeDx}SN+*10+HJ76nI0rR~;Apn1CKUu%dr=TBHc6$9*rKU+{9eo5bF*OxCg?OYB(ImwcUBKV$nozWyVVr!E zutvc-c&eEtB8L*#PG_v+S0)S3*6}P|*7?P?-*{?zA*gfl@*oZX~c*|sK3IC42UqJDczxcW?S)rt+TgKe=?-|kJ z+e?q1F2L0bW=D!Ej_GRF?3 zkoMiP=C!=j&BgM#YN9Pt9L`T>o?B~Z)6K?lH-3L0Vc876k)U%}OF#qjz@TVVi z%6MDAH=A-(jT>ybf&sWovs+R@)|&*C-m9kc^kn?lb>~O9SD8);BAIzb|bgC zIr}!+V~z9Mm)DZD1hS1}X!YJcdB%@A%1xBz@Kd02?r{O+oxVKyxfrJtoPYiRMY?Ys zY><0HPZF-_6Zu_|d|n`kE(F*;^gkIkuU$#Arw zI+9*x_yT&Se8hE29>Df*tsa~C$nAjMO?intK}f6}ud>7b^5K>crz2$iq;$t!V^r{Q z<1OV=#D4vP(~INvkplI^nBf+cJ+ii~L^=n<;VP&(=-+vGrRO04g+d8!mmCD^V(JgU zH>UWK^(~)gHFvCfo4A%@;v)x#yhDnQM3ZPT0p!naM#R@6owfkvyEky4B^wTb%xROEfXH*>%ZiXH>Q@1C zhpj6C_M+7TtrABtmaPO-cZ5qEfIRs^?@;%bwvO0m`{yIKN-N6&ku(2?uD=Y6vittW zZ^@xS=>`=6k&=`S6$PXbX%y*{l!hTC1Qk$eM7q0UKmnx&=^nbf`@c{1`h5M}$8pc= z$#p$L4(2@f-fOM*4y&egeX;(72#TY zmuc%PI-PrE4s04`nt=3i^bY&HdWz9YL_7Q)$;I=d;AuwqK`cPQMur!%8wmur55CL4 zp({K4Ac9iB0F&HRYh3@8P(U~?HR)aKorAgcA7dDrj9OlL`>*~f78bnF%nQY86o%m3 zyXJ6n4(FxvkEHkFSV|2pJLMk=5$`-A$35l@a5@QrKoPUV(r#QoA=o6{Yrdn%ea2Nu zica?j%F$e4V3G~T8%mRq4^!!3Ne zGxD*gf#A?5owr_ehaF5JWZR;_D z)jnrKVEJAl~38e()ukb*YsQurNXzNC&%8GJh% zV2^qtIFh34oNJ3^S0^+{OMF1)5h{-5S$J%)TaUdU)M@u=%9o}QkYv-*Evqo+q}qh^ z_ZXI?n#=ZL4;Q^^X(gmZj7+A(a>DpbdC9)7)QaUWfGz;PxZAV9t-fA)gb-R;j~FofeX|8=rI|9xiS zv^HGq@2)1EodkM9|MwiM*$x7*`JrRp`$FdRb^AMm9iSUQ!W4LVDa^wRpv6^~kAAVh zH(#~_Fw9~~e`;fmjzLlat)_L3F6Ej8-D&FypS9`$@MWdG#0*h{dpoeynEWU{dF*U_ z!3>9!0Klv-pVYAiV0T7ZPtx(g7B80iB4a7|gn|6+za4M6x0T%RHFqj*t|`wr+Y+SIpW*P~@Nb zzZZ$oV5_+?6-H23(Q!lYQd=5hq+pZQ0>^HQbdP}e(4L-pT$zuJTMqgRNsEBC*nXMX> zGh#L6)ODh9^@3iH#=~MQy_iHm($c%%GwV(+;NP#GU90B$rwb0x==aiOfKcD`?^2w& zMqX?AtAB;USo$VRbkT+5+Iq0|1K0}hy6f2)SYbKH}n?yliP7;8L22a zsB=f2XY%$Z-TopeJJD?b4ll(r!|!g+kP{RyS-v`KSl#I0 z!?IRmIiy)z0MF6X%*}aZA-**f&YUYczV6EPnUlH6m!9!Z$-(bS z_5<~>jOOj{ZIq0L1eu1C=O@cUsiHn7U zMtYVNzU{y5&s+FUcjuWEBMBe5h6S5bN)p4X_XQ0GIyjc3mGJh&2I^E(2u4FW_X8``h480I$;n(p1+B zpj+FGOqSH|x3!73i2!hmFTe~~WC^OqXFb7;?=meNX^L5rcVa;Y(F%+g1DXG=uymcu zpXO^?F`xa|Vx<+wt+$4t6rD3f)R|3;f3`+PpjH+DZ2G58&w8I@={c^%sShQ<5q|y{ zFqq8N5W*1VLx@I+&V{LWrS1IfDgEK)Ej2^X*3^6&d`P@W{Ko$pjD-k}q?9!z@VaVS zGWD|Y2azfk#D4Y-t@8M5^e=4>BO@42+uk_o_c}iqA}7(J0|->@9@bOu-{Qx$zBYW5 zqzVap2tI1vj+mvDH8%p7%s~-EXLTweYjGc7ws`rg z{p&jtn@~_HW!lf_&s8ggXXOERP&Shb>p@((e_tG|rLp-YRwF6`IhGppY&_W1{^2ah z^T~}vmqtpF{gwV)b?$cE50$s<27zSW(2rdLkr;wTt z{Yf6fkM$3qx`yHk1Hafj7z?dHR3jZz7iCgU?DwZvTA~{6c{!e#Zk?fy5xXsntk-I|oeY;G zaM*}};56w8PVyVA!-?Ric_B&R98N-?Wg5;J~ib~|G8hbYBAI&Z}Ft;mJVrp zo(&}W1)ln+FVXuJt9^r+F*ByN3ky>{yM@M02fpiQV=)eKiKdy_>~b|XCf*fjNT~o( zYQNKny5$2oiFD~Ip0N*kL(*xm1o5oNvZD9jL)0pGA@bX7kvmJ9vsErN!0q|hL)!(j z`ssIE!X{p5{j@9vIa=vuH#r|GoXqb3@AwOxfz4h9Zhw?ul7EtuBz$@?D{rBo_VFv% zE~rW3lNwU_FoZL=lH4Hs^Vbt_#CQtzd^-25!bYFj z(uaOnZWOq9(++0iRv0b0&4IH+(#Hl-bxdw(RoJz_<>_MJ6T)~JLGm~*o0_s^wI%zC zmJuQ|#AlSE{RNEDNarg>_JcvmgZOEo7CUTy(Xln_(oz)FGJwl@UH5)P2xe~EO0oOJ zYlA=k$O~>B^~WqRM()4%zAit0o*P~~Fl=cZXdCJ3Q8zYgzY?Ktm*9>uv-rIy zEE$#&13|5C07SYT*6YRPuz-EMRq{dnoZnKGUiSX@@*!m%>0&OLGSRc{ZF|TU(2bi& zDgv|Sgh+Ap%9mXm-tK&B<|2jx<;{?Hfm4V#cftY8K6l8{kyIN@MB+-f3q)m04WWR= zEgdW;DmFT;$~LZ2m1>U>O>OeE;URfp9T7Dp+-4Sy&{OK;;ucFpI}8S^&m5ol%-_Y&>b8~~)}$A4DG zI8HYg<3OkXhtbFDU$JBAZ+mDS!0~@jzURIv zJM-xq?;B&(FQJbO)q8|TQ!_qcmz*huNUbFfsV+^&0X+}|dG`vfpf&2e_cZNLu6_7@ zF^e&NKm-9Twcs_uh!K9%J}Nfv+N1TEO6mF>1I@yVk(?G+?N zc@;p=O2dFx?x{?3Jg(iXI$URJ2niJ#fO$dT6V`~uFWIHMi}50a8N2=F2gUY{#0k+_ zq5F~)=g;7A6(`{CrQL9Zz%?eiGG zRaAh0ZcWaIVEXQ8aUZ{MSETTgnBwk3#yAF0Aeh;8td(f{_X};;H$W#K*X7qf2fSR;MCPVwp*_pc2Be)z zmrQ%Rnq0;Ky7$Vrk`*Oz#V6OcO(TV-P@*Z$sxXJ*#P@9Q61po)_c&_j&sC> z^7kcX+F5DOy-^tCTaIRhG1$B{*rH2pN7&1mru(omfH^V9iRKq>T!OVj$&VkBN?%W9 zCm2^QNWLk(O{5d0)|)SI(7G4Eg{yz92J?*gm~lrEQ%kha#b7;vIY#z&utsx}0LBo3 z9tQ82aYdUo?9%K!dEbWus>)v6YQj~rNB^RyTEIq$DNeU%k8B|k;LjYkGB9385RWqAF-^6%a3wV9u>DZ^ff64c<02U4y7hB zK!m5c9Fiz2JO_ZcZVGufZl4xaA1^G#$73jOVJe@U-XEWZFfDygq4YNhV7@2o5H#nz zufJM5=sNwPEsUPq1+x*$8~=<#s^P}eyG`GpW4G;c>j*s$Pd5%Hh>QJ=VQoY~eTIn_ zD|=c-AeXh+_1olC4_H}Zzl+)!2raywrK!Tf<17dSHSY(m;t#dl0=&&*A8Juq;n|J!ABV6j$|}n$P?;@%gf{4^!Bk5~&U-?(z|1lmwI46^*WfIDG+H#WV=bKix;) z9VvRWMU=8FaQm)hh!GW-Yn82{lVMW=vcvC+ZakMu$tnU!Xs`tEEXgo6*Ka z5Vm-2!BXp6N56la{=6fftQCW5SezABVy~cKl3ek7DSScUbk!_Gg3(LjjWLZnK4P0_m0n^sC{@(Lswheq20oSDfm5AF@|BK}gqzlw3z zJN)$O9Y!6AvUaVpKR@V|ro4sRV@nC)X1eFyr>PTi>k^iySF=EV#og5NuLmDSmEon` zfYPI+C^2R?^x@yF<>+bDUFO4{PP@Hba)`PSfZFm5l2YbqvG}VyrTmwUMSjZ2oau-7 zCqYP;)ODFLzob;NC2AuZYkCrv%ArZwmC+)e8Cpt)x7=r!{+7EdxC;QxqIEv!Ffq(es;M4htspZ=TCwKqDnYSw0?3eeHdiTSEkVzS9vA- zolwOh7lgT{>}C9lm$yUj+s{~iGUTr&&yF?zBXL}tv0bbQxN^)Cq~87B_N?da`rN?E}sKRb-t6qzF|onkKs@yLt(& zMQwoTIm8E;GDE;D$J;{T2K0*BN`Tp31{KhRtFoNCr+L!!3jv^6M~*O*ieoPbK#W2K zzQ?^-#c;DboZP6VcMzR-`MHicng}V%T`#Dp9c@0&+EralOBrqiE_+yCT((|BoYSf- z-_}oWVK@YY=-4IIyuZ>Z^$3g4?h)YZ;R6_#g=dXBmw4CHAWWzW-&2eY*sAhia-Jj_ zR6^|UNj@~1^mikMd+SLSFa{_5ew9cqeCd4fIV|P1*Y?TGz6yW3xqL5K`$%G`s2S+Y z|8Fj-^Zh3lUWL`@yZQY2{E6!FtJ(Yg?zf??hV*%Ge6wN4U}mAM6RTF&*-@7l9s4ES zoLzpK#c(HG&D`8v{(0Nm`im+b`b&ZCOQ(LBaurSuc8ZdyKzZI!)o?XD(2dgQmXt~z zmr547!xnivJ-M%Ec`~qg$8t&K>`?B|!VK7_p0Au>0AM z2T0APeDv6D9`C%LGoeU_P9JM3C67WqA2e+KIpdHCxhw{~R)3#UA&nt=|BM>PXynKn zVR1Y|Y`PSlba1}78V0sfZ*;!I9x>8=RN$)ikw~b}9n1gGHS_nBoW*JO>g?5hocr|* z`|ka#Q7$6uPNNn`7!)>2@{A53aIZEf_$a$~u>@AGsj~LLC?Z7Ef$3O z62@x)7*BE<8?@1_v>_?KYiZIiU({0$U@cm84r0v>Y| zaF>oTPPaY#(sk*Q2kfE1%Ejw3A-{I{LUAJRSZwyU__cv_H8MSX0D* zr%?4lo8~)KlpxhBf%xVZ0^HHH9TW4mNKjuW<29l+1~9tQAt;+=0Jrt2ac*(BM3hTC zAU>=$2KYZ0$O|GDgPwhT(~3iU`aMp8CAvRt*=w=7=_DMFI-lEX)#gqNfJ3vUPT$XH ze28CN0AU#`B;{rmKt-nuNy#b!u3fhcsbZeN-bz3H<+ZHhVlz^1G6YW>R$XHYGOU=- zPoCNipQUc&L!Bc}Qx9cvs2F&}jD%l$e%OA}Dr96}1>g@3 znT_(LdOkjWzr%vsJra{3er;UGJNfBEYVrZ3=&-uJXWffP&kMq2r7@V5r)tl8`QqZc z=T`nc5LiF8dG5V=Xv8KU^vC<~B*b=hPSPD)~9lVt)k%G5FJwDzu$8Q!{;pxza zg|31g_`7G8w#%&S8}kEQCo4)=O7?Klf3|+3@82qjaN%oOelhuCa`ueJg+??Ykg)#F z-?dK+%J9_p6MJTY12VMi`nuD<1HlqZf9r8zAehnn$gf6wBG1(efd0|f;v+zLR<+UQELnh|_J|qFGC3dIH=vzWRXo!gO6ym66k5pS{rs%?D3GM? z`s)W%Z*d37?LP z^mKb;C($XtWrf`?%&E)Sxs6n^$ShMgdMnfxKZ_9k1(ZlcnIr)WUo)T&+_eP^PxyFFXwM@qRH};Y zji(>7xqY2`_g*fgLe?gDlt@M5tLLL*lJ@unp?h|B0}hEc=_hH+D0J}iv7qLJj!*#p zJ7n79T60@qBt9c-GP6$EEgA0Uy?EAr?B}8;nw=PcAJ1i7Q-r%R*q@)R+xLGbK`FVp z{hBMcw@!a-vNk3&Wm%~7rDWK9UmPDVF1Gw&VD(5?LxWin4btWLHTnC&FoQz4bm*3u9m3!FK>n}&lAdW-1sGs2aiUIQ}HXyT? zy`Q!`g`CS4|vt&CO5v+`BC=X!svK%r+(gpjav2YmzS6cc5V&x z$FVAP>8};GDgLI)%yD(-$JT;5CXV0RiEk#R#dgJZ%i8I84z)K*&-B?>jR2{U7@I(!Kp591=V+Q4Rvt_BTq2B z;1bg8zaxxtqZbN~tuEv(>Y=o*^fEHe2MWjMuYCA*MzsNU6ZgKojO8ckihPjhl5g5G zcV5X`u$GaI;-;^u9TOmTu-D(`?p28X6};NAKP~@G@$QetNMmPh z{ih$*-0K($+c+LveL%+ko%ii4MRp>`Pc8BmiDgPUnUcxD|MZRCHF!MB?Ijf*ry>68 z;Jhv7SM1k2kF`xTEq{$XHrrgskx1@Y9P|6TJUfd#x4I#7o-A|^oXDvB`&j(1ofOJR zz{00c;TVuFFZs88*oqG!Q6&Q~*GJ2(h6?C;qWlQ*rZiU=;ThOZ2;=a&Iw8ngHBX%4 z&9`)yD}ULsEG6!DyPF}C27wDNDfMXfpJZ5rI^dT~(Mi2P;E3(?c7<->9v;oUMSrF$ zqj`PB{^+0;GnW`}1{$ImCnf50M zbTGrBugn5Pze&GogMYQ{##=eM;K3jHA9Pt|dyq+~;MFAGo*F45c{WIDT2TxC765-dW;yj?o<__n$d^BHaNOo9knPSd3an+oabRY zLAyHX8yXFeJ?eq@u00%yD4~_Mc>!GS7gsryn!rF!Yyu#5WjAY4wI|K~b^A1PaInW5_Qsi>UbL(R6{KqLN9h;sw!T$(qoqEqCD&ZU8rUtF{MV3xc{vLErU-86@`vK5mj9i(`8R&*Y2Gtw&@-XF zDe!On)bAPt+{O<;6J8VnF1Gz*7dd-$lVGcagS2@SE(MVVI(W9F3EEFPj zsRR^EcZdD0(vy~s=DXxhkO=Zwn+~I!_ohAwrZ6~S-^i>=o?&W$TyePV2&68TW%R`< z`6JC_lfgwRcR*xLdj{JF*`5Xt$>Xfl&Tl`v1%noY^6#2h%b~#$xBb@zncl$D#&oRR~9=z-Fr6^)e z(3XqvLYTfhDt+*vI3>?WisvEAEhD)HZ|;9dxfu$_xvu#&6pQ43j<2o}i@7=kgg&TD=mKat5v%p>8+LzM@hhZBqGYN^^?az^^iv>xw?i+Atv%y4d zSM2esSCy`ne~`EufJH+?W{jWM|AFbvbi@Uos5z| zc)_Jl6QVgb~!pgW@$B zoQt?d%$(wWVuT3oKEqs3Pja#($Qc?cDtNA+YGT&W9h*qK|an}l11kSnJH2f6E7vPXz5 z|7lpNi_v=1sGohtf@0Ta8Xl}q=!$4f_ix?33XLpEDVP8(OJ@6}C)(yv(1Ha?zbQm& zHoTQOf=|ju4MdyT|85ht+C2C>n*F>tmd?Q8D56}xtIlS@=FkUc!4|k>&o3HB-$gP` z24Hq+LP*{-07M%@6NR;gFfYFbDZ?up0uWTsme~=Xlvg&0WPukpYfa~xk0HPCZ{w>z^mBg~6#kN3#s7(l}!Q@PSw3PEYl0vHGn z|3mCetj*QQq54Aq<7j}4KNjK(O+q+h_wYcBs5_nwRw%d6M15xtLpXn2mQ{fR?V zne7)AAlgD9FrcO`6ZodiRC$BdSZ&vzeQH^xPa>!YbUlkJzN3=8)@XXUKS{Ag43xXZ z{@u!kH8)E5Qkkd6JVh1^7A&kBDE$|J#rr|}zW^-5aA*~XHlVPtRzE6A|97kWy%ROH z0AL@?LXhb`A20MzDic#CvVjp7>j^Ue_C}dSBIbz9iDtk;BU9CAU-$f}q`knDcT6s^ z*V3-!n(+H~;Q>B%7ehuu!-OtNHFc{y1s%*UjJ|!O@w zYnUglJdX?zzjlB_qAa#uR^PR<`GvmstvSqTV#?WP=o|?~hx*QyWswomLf8{Hil%oz zOf!oZ`=YH1-&Jxdo z=UbxwQ`BcfbFC1mnf`CtZ`2W6HPg;5t0?_N02c8BVkG$z!0e8IsPLtm%6E|=Y04kw zUp=8)b1dqS4iUck>iP^O8FeVZ1MDh?i|rob;*UGv4Vo z{9^7h0F%hx7X#T?kz8SgPQerlSvraF>V0^|Qgqeyrwgpp2C z*qevy7DUS13E)36+-gMmpji)%6;$dI`!g`?ZKVXK3giId*NX)~YJR2y_XdpIq_smAInQXmOsgPrH?WkbmH1mJ}=@mz>t)H#|~YYHa4u+Vx@K zvA?en`XtV43govbdXYm>F4HF1roLSBl zKD@BJSynf;W7| zg)Et+B}aHucygZ@?A7BWDu{k`;R^h68oI$zLu@S(-?QNF8w6mRe|eK}uu<^m%}z<> zuao|?7>~dol2R?_7`eb;|FYv9r(8wTkgB1a7d@6}^3?HJ_aefapC;lVTVv^2_l_un zcLJaEb~?lDA^^e! z&&@dx)+vlBZD53v`&<1l;2O;h2&zvzx%Kzzxi3k(O(P-9(V9nZ$s0$ni*v&=5r_7-(HEc7X&_+!6KR6%#Hg0?JFf;s+){ueR8 zK%`-oS3W=pE-+0Yzhby6U|4C$oN-P4O*Uqk*QkWeRAjQw_~y- zjJJSFD;z%uL=#!^edSWtPpYB&o30Y82lnuk4V{;FFFQQ#m7M_0DG`W0N2LP?Q=Iu1 zW`0qC7CuGfEqY|LHMw3t<{|Vq?6SL1ta0Z|ev9?^!`WlW`l!5bz6wbQmdb!M-7witvZ?Y&WFSHeXj0OsGhNnBWq9^Hotn|>Z8z}-KacPe2!RGr^$ zQyl_8dvB=d&3pWSttN9R>5E6xdy5}sFJ(a4{~}z5uK4XUxjO+OGW4lLRi>a{q=5QL z#sow~B+cpJGC|R}Q8mH=Lt|3c&2GLPS=Zp^wd=km3|d7oW^O=I++OX@EPS`In|%`U z2=Fza_i$btxSBxNjctbUjImV0)QjLYS8i3_%-y0X^TuB98&z`EfFCG)#uo_v@3pB% zMUd0DQg|YZnrr$Y{ed~hP@^%+8!69`FE!oS{5g;>)!X`f_@vmVo#!Rh-6p;XfLRgdb~aP>RoENk@PcAu?xPIaFV-bv&H ze7u>j>R+$9@8ky(@J0Ix2ht(-8%Nc%i*NnSa)8@M3$hKln?T`0V2!bJn`IOlf4Y+)@Cp!wLWThj4@dh2ixu-0vSY5xQD9)S|y0EoKCAxMz|XT8;`3K-eO4A%yH z$Le>ea{bufW5B=%x}#PWg(j);Cd%ze_B|e`=@wEHNTDO8`<3$-MfpEZ zH-i6)mf-0Ya7~^Kx=U*XIl26IHiyd;8)UT12Nab6cOTV>Zy$Uc^EpDF#f212J#TFB zhJ7=j^w3{(HoEXXCSH&{gHbD*+*W6ve%-tsFl(exoIb3^RC61^TjL%xtY|!&?YP+( zeWtdfKtjg=T(m5X)QkbLUy`y|SEAk}0Yu=B!m_x+QRr`nM>}=@*ow`*;ImV0Ksxdp z!yEBy%&EpQZ2@n2Y)7h0W@Du*BWt|+*KbhmR`UAL?g~*ENY;737T2rTC~^Lnk1-|& z2@$1o<=J2g=pjs|m8i72Ve z!A_~+9(AYm0+S;$lJb2V^ueP)a2oD=PD~KWNG8d~5L8Ij@Ztz>iF%B$!tBm?-RZ)F z&}Psb*I3aGLiW#)s5%ZetsSnVJ?l&}QE~hr1%i)MTo$^LJX`=#P&%;!V=NKILjo#Z zBg}AmQ5P^Qh4ir5EUzDeLs|Ho|Gdy@4pIQ7*WGU2ZrFZ}orVjS*zV#3tJwz1(klo3 z>)B(>wm#z*Rp(LAQSUP*CUyYV^JojLH3ovR+Y>sWl|I)7jzwvmdux~UndbAOE7c~^ z54|={#}B2C+PB_K-$<3>M&dhVjp~(GTk?@{a~kN>k=>?+c-N5(X+v=CkvXu zf($O=@$?NfSN3n`A{#@m8iPt{du+vOukKv~XTE-Mw3fD6)o7uV6x??VaCkFcD1A?u z@%TU@dfzoNIazww=KgQ?GEAb|L?*^e&%YWN4B5|OQ?RPSKP`?^GYB*~gB$v~|BwTRP+SLT%KiFp60rA@gYPBqtD zP1I_WSU*7K$qH#I`T^j!Uk|&pWeTOqs;sfOkcl=;{s3_C+9=<0(-9LTw=8Z+TUh|? zbAby0+@}sWi==!JdiTNSFHJG)KV3{({Ms?z!LB2OA!y@qx{g*+C#oxQ*^GWQh7*Mw z!BDgcc|aa9*n%=BA~KBBdF)ArUXd2PkI4%tDKOFRsF88d2B_!w7XX=KS8V{>sZ-GD3djR^lx9 zULSXF7aj{VJ`LRtH#>8^xG;VtSo-;#ulut2HErdqcr}n;blN>7#{<7Qb*~^JZl%K5 zCamJY*cUSHo$K5e0bUG?uNW>bdFo-PrA37f1>D`C699F2p|$+2YBG|8m5r z5lZ>&jb!0o6l+?*{~fI_>Zvgw9 zze96!>+s1&Ji(15`t7w4v*&y8Ui^pLzMnLCb6-65bB+UOwg`H*I$Z@pA{{2qrSRG8 zRwP2C8z55KRH_%K$5SlZl2xJk;l1!7Gxm@ftnhj~s0`y27p0o=fh0|U=oF&*QH~_Gr?X=CR z?ncG9O*QSAI;5!#0iempM&DuAMmM4D5RA162$dlBx_#1A-Q?)Ei0&un7A^PB;?T+F zO~rj(^e)nPR>4Nx;2GlYjG@7x*9oKBSz_o|&n!zZ4+tRI746*QVWg=Pvb7s08r+4b zFlqppzn4Y+l})-RPV=$$+MfVkgXdm{T%#wMwNiZFLcqz7{ST|G{?O@mcBW0)2}Q*g zp8+hP^t#!DZan+O8Sn4scyrL*Bk6wZZPCU*(S|SzV0y$-YZ1jlt&=!Onc~VGN!SX} zEI+Sdt%x`$))3_=X(bkj5LyP0rn;2n8#)y&8TCr@yyXW1PA>M(S5N)NmIP}ePzqZt zN7sBst3QaQIw;R4{S;rH_^)mL&gicOg;TCDjoYGkMAwq6w>I}S_arAKE&iU|b75bK z!0u-}he=eJ8<+nsasy z89WxoNo+uL!0!_=$ri;6*T_-nz}>j1H(mc8dEMVDeA?&IN^z)T^@Cn^Ak zd6L8~gi_`--~jg=*Y0~L1EaWvyXRP4B;yOWpF7d>>>;oDX1YRznBDI0gv?zv(lZA7 zB%b{J0UHAgN;G1B!jXtnf1B^f8<}!Skq_)srlnf^u$LxNJ%TsrQ|z6lmzsN#ETsyj z9~E(`Z_d4sQfNZ)9T7+zy*y%Vk)$RXb+V}uq#u8?ao_bizr?SjN3%DYo)bAzi9iP% zpYX4Khp6y2zVQC;N#!{5siRd7JKoGXsn`u$k8dOH)lj%UXRq#;%KNeyg#2gmGBvEu z$}35j4}{1jRGh#KIdK47pf}F^NkC90O_Jqnyb^3v!cH2Tq%H{R(*{7a@XRsq9)%up zErW|V!S_mvDIHIaEQXxm6|{wF2+~ophgZB!szZ}gt6UGO_fT$%(MvL#keyad5YvIw z5s*&L=8rj0A7lDcB=>>o>lWq@4a#=Za&C(3B0RzlDeMFY)+CEAn=YbwS&fxi=^h`~>psQ}AofH6kb1h2% zE|co}_50(n4-~S)h0WgN2OLZLFA6C=>T#TNlm^&wei8%0Gao|@Z+qj$S!7h#*Z$ov zV6~>yWO3!-V@43s&qAnuq^A9vF}5PsX~%>Fg`H4HKUo;l+DXxBO94!)hGQaz zNZJv;fZ65Oq~w=~F6sy6R9et1*{uK-Hgix{n)=vFC$IDdHACF*_aOEzGb3-zSm9=0 zfa?hb!uqdjzS!JpkHr1VcvteJ#FFS9{RxqzAoF-u7IZdXv>+MfsIL zFqL{Zdn+b=!K%G}@G8?%Y>F=27EK{By;}`-7CW^wRiOX zb!^(bBo2?q7gN7x1Gt`E&}XbR|L>__N^IQ6xG6SO`JMsCC(q@VIrhj;@X|klWHdID zldxs(j7GNo^$~e5Q8Ybv+0xVzWL~s)E<`QprECeaHan+I*x;9#lLHPdo1ya?mSJTN zMz5!Xt3_XW?YLgp_TGtmzE&8%KC-a?dpDMGbb3W0HtLXgN z@0ETSGbxJc+0|e=#r5|AH{-Kz2)kO*g$8D+e@!m`_iQx1`@i(#Fy55ZR6mh?CC8fj zzG@t-YmbaPSpOcX2TC7GZh$Uo;cpV8r;440Ot$Ld8N&E!e806jv#`t-3Y0k=?t0dL?Bo z9|G8O^NWCN<>Z9B>nfok{n1L37Obhf9muL5`3}{GP>>Z_ED_t*L*G5`t z6sp!gL_~d%RU*2F>!!7+pXe$uoKz-m;c+c1HHgMue8&CTK2E}>N5kfE1Ia6~nb+T5 znZL0Ef-Q5hu?biSf#)itDP__YBsG#wK1<#>m4Rc;Hpr4J6V;CE!pL>0N{oq=BaQ9s z8Fk5e67}rtehs_>t@XlD!@%dvEiyrYQmDzMdOwfUy#XkICGc$wJ%{L1ne5bl6-(dN zDnJ+qtolT(`M*8*4oG)@O?Z6oL(^sUrTS&2(WV_h>|a4RDripIU#GFF)}=t=Www{t z>nhViPw2`&j;4R=wBA=v{LSv|6kQ|rxL{?Mjn$^$pY-il&yfQnKW|nhD3-{ z_#u`gk!O3bC(c_KJ+TNwKvqAXk!79_VEq}mL^k#Vn5z;H^K-}5WZg@G224Zvrl>zo z1V%W}Ho4&hi)Kz3j)XGF7fOk!jjx(udb-)3mE zpj;n+Qn$X+-41K)F@z1D69`;!&6&#fh8+dj9bt>@LZrOX8dRss{#l!YV%OtauPHnz zJQ)1oCBR+b+Qqe`Qje4~jpOVcbrtCLgC7o$v_F;bm@xNW7GFf}`vgeYr3fMMp@`6e z3sj$1jdJi)<=o7Hz6#aV8~KrC66kFOA}#~PxlEoqM`c?U_G^R2l?=7ybTEkT;_J7I z-rme6d>y8-T>-I~x=FTfH1c;LO=o4t7Q1~Y&&lJuUAIRG?}Tr>!j3**TUQ;$P<)=j zqfYh7mUrSs4OW~kL@F>xg&c3Ho6m2Te37GDOUm9B;L@0f_&OE?yk)KB0GjQ1RjOb< z5aA;c_4hbQN_W)GqS3@9y+pTEce9%4OzvFnTwzp{^S`Pb%5c$li61G2@jG9o|KBIj z|AHREc#Xb?l0#8#`!XJx{{=mKqV5+HQ0~H5bsSvG>yh3XKxn}X&u1y)4nG0D^Bf&o zv4u@MW56kxfZ1AZ%EU;<-j!Vl?j-gzDFgU1bujY%1{oVCDV~QFJ@EB@B>9!`WO_F| zPL~`AsND4_j{em?IlaCzCo~}pWq|)f5eed1!jib8l-PRsj#Nnq+ z-YH{bO}4Z8>MeUZM*t&(FL9Z~)opzK)koRk=Ayvo_^Auk&|T;LypC<1^n8>qd85Ua zZMUmDzt3}U8KNcIoqMh>>ZXEH;pG!%FT>?i`6(@wb?ZoYDYcD1W>;S)ka8~{AS^L8 z>*|gp4B~~La1R4Knx~KI+cw3$x%m&RHipKDb0l(4@>cj%!1aseWZ{f7lKkE{`cIv; z2TaI?u|)uQ{h)zWVPFnzj%`*AS~qKwvRE<>)Me*U`FFenKdbT+*(;wKVnO$A8vlD|EJ<>`Rk6njVzwEJ%P_=5n$vTxvp;a65_-m zWBR5@gC$c?McG}lpJ$$R6<#=RJ5c^g>g!_ra7rE1veZ|z_H2eG%jg2Q8R4AQv&tSe zXUEvcJ*&)cB(!3_!zP(pk)(e2D=KPL-g$ei9vj6@*JV;YiR?6%V+OaPIuc~WiX&Lq z`1#~y&cjQv*2S`XABFV-w%+@@I}F#>2CdxU-;06o(eJFv@x}~_)04Nfm#I-%oSH&c z)$~_HdV;Z|Fv1NcexzLd*VAwBq)K6s4KX7aq~(jEUM%~x*@x^*J!VPejJMu%>NBbU zVOF)<>uFz(+%tgvs@v4Zj)%-v)>aNyL41YKuV7@vd$+3=W932o=^dfLyRVF^jH|Xz z6p1_DmTxaeb54O+G!dN~Uz$m`ti;c8_Q~=shqlj1WXoO_aR&;qoqQN;xI=E5bW56Z zhk3_(?042l9wWg=sybdF=ZbuTJ#LJmwk%~1YXNrBu8KEojb_KgYD7zTp<23p+W3ZF zWQ_&KMeZ14|*0NX|gEXaI@0do+I{TJvNG?XRbF`oht^6x*sxI1> zSrGUjMsW^8*Sz~HjWSZ9Y1H{pu9b(8B7xO-eMc8F8QseKuVn}5!l&jYyRr})oKK7# zv$#Gy@49wtM)p_m>{k?R0&lo=4V7rIrdcl5NKdmMfA%?3ca+^+Cfsl}KAed}m!+3R zRPOGbuj%AQ)P9w*H#hhz2xNW4-*1$ENAaPi?1d?wdFX+^qxf`BNFsSp$%C7(lqeRXrg zK>~q(olO{|M9Ar-)UiWg?rs_bG#Pd~@@849jmwdjaYwJfKoFrqGq){W)FtdD0lFCX z=Jds0;0ZHfc;|QoU$&LsFu2oq)!;&5h(6raL&6s1{?;YaB8^w9R}?}6B% z=fIJ~Y+gNS++KlJG+;0n{(@RbLb|Zg$qjgIlRfXGl%#qsU{`D?_~jLfBu4;7GKOPtAYhu8G_GS8w#o>yJL6c7by3 z`TBv-@+Q4LfZsrjD^iE%-%if1)brBAezgKH(FdAR#u#RJK1yYo>HFCM=seNW$5O-K zP$HeC=;smd-5v?eIWEudb4SBSrGakwq!LNF}*R3(9&DKvHfP}qPfr1xy7n~ z?f5I@JRRWw-MK0?Wy-ke3h94TcFZLl@rAz+U`jfe$|C$#90_iksM40XrRXOK0CFDZ zyB1zI%Jf43;uo)F_%Qc&nC?o%x6r~DB>>``6NDu~aw&u4M#`T0wCqNZ!NwJHvq)w6 z9hQ*=VhU+MU}1X+5I=q4Lqldb!3_c{4F011O~id@u%_DI_pej8ik6yx{|LLKOt|0b zSol5yz6@VRUtKl*Gd)moeMguZi4w-s;g_t!3;xtnr@s~c(^gr&HEPd+f6Uu@{FAGL zwf-+70<&PQ{RP!|wDv@Gl;+#4OQsvF{3Qy{6`nH~5+z1&bAgFhrElmnNtAcA%Nt4x zx=s8aj>ovq0}dr4bKTjGzfF)bu9`6!H_L&h{e zar5^FZr$(d*$d_;5Yh(}%Uy1EPE|YL9;or?n$dN(e*`9q3F;}~4q{DTWZ7x*X-Nhe zQ_>mE#ym!x;ADJPe$Vabr{*2OO}F`MnCP9huZo1=3P7diSDrfT;jFP6OE$NzLs?G_q-+15~EnIe5+Wn;NArb=G5k zAU?!2ABa22b}MQU2X*LbqGdwo-&n-kpQ%3%QSf>6l%12}FI52E!~@A18amrcw3hC{ z>1dTaRRAVwoUR{!24LSCF12bp&-tQJMJT(? zqcRImt@7Zbf(Mr!<&W! zV)|aPsw`{#;`2cdmq6~#6%m+6{5WX?hFb>UlVMA2Ks^>xvnVroALITaE6?>u-KMJ_r z^rBY%$rAls302m|{%R$SLuy-G%bO1o_;v;|PO~h?*4pO%a?D{ZaJZY>Rsdl6Xb5r2 z^aR+FF_5vrd4OYw0UxEu5OUW#lrO>%;zUJ;>-BHK;7<{Nfr%|3$XhCX!Ll9^;kZd$ zjpTH^xp{Gjf0Cr$0kCN_?@8YBlW;WMx;k;6rz!mInhez{$F%s)w}X^TTI7bVUv-WB z&{1w&`1- z!@g(&@t#AQ3Ic>p4AdEgfDDO3lK(&BuOk20{nhiXVAC^NO$)ykO;_I;UEiz@w)?Yt zHLW4{X!%dTy&tKWJ?Q)U59VJXE^ed4xj7TqtPOh8tpbw(V?f;bd~;2#KR5o!j?I>$ zLWvUKNuA$~o6(aocZ)6X(y?{T4&!pCu7;W=P&VRg~a8K0xueT3wC4sqg_2x-*|Lk0m+(e_1v{)RNaP6 zUi0#vE2=^p!+lgDZVj{ZdMoKCPj2^f({im3jNM9*rGm}w?b)SSirGoL7W#Kb%%-5y zxeI*_<_{bJF0!z9vKmrp4kEss+3vN!6b2Q7C}Z@VW%qn)=AU)U!>6EDx*&AJX3nsf z5e7&6_DY{4o|90=7|guL7+I_9kUcU|ZTb6(`kg9JVP6U4u3VWL=ru4uQGDuQf~Y?f z+%iZwAd(!Y!5AaSnW^Hw_e+EQn$K`ur%H~8em8^r6%PRB5~WBIU?464-eY3Fx21 zw~Zx7HtBq-@7&shJz5x+`)x&xXuA7#zEi%NA^h~Xf~o3F^%3T<_ZyVUirFMp%_mYf z9pD|0HwsTBawUcz@jvF?WcP9(hx9Ee&e?PnS*t~gjO4~!&YL8u!xu6z{M07LSY>$Hkmj#7G`vqc_kWMf@2~Jku4TD&6QJ2&vxbXcnnv}!Q?$c2v-+G zdm|d7md2gyS{$Q^_{B|=(KAhJ{Pg?8H@9D^;(e%HODE-{JC5wGDs&ngh!K*69PaybMJHC-~GPdz3;crth4@SpB-!MK701Mp158Bh?V3N^5#YBnf2H&f=jY=S7JtAm{y>z8pHEy+NL)Ywc;;f`;HIbo@Coqo0RRSg{iOp~ z7y!Tkq`v#3hXW{B#^3lgi0_8|r@ZWc0ifAsSQ!(;u8<3J4g z@Fxre)EVQ$pY-#8hlwNjEAKK8W5@mRuLd!0+@HLDmpR_w_;*(Le`7Te6Z{>%84T|m zhYK*_0011sz^A|EdBDd9`ShRlgYoH488Z<80OsE~1*}NyzwzqtYR|#_OCC%RLjJ~o zl}+xSbU<$a<6ju_Ul`|K81G*g|6iEkU-)-gpeVpIkeL6*|6OhUcYeP`{VmsT_d5-7 zkcdI@0`)fs`R_Kt1U3mK5dUsMf3yN000>xH2_Sz6s)zyNA0Qq9G3MVm9jr<$5c`7u z=3wz-gV-Cy3n0b;F&f1BU`gZt9bOwOLA<{)11J{cixU9&0mi>og2?nM{U%_I42%WD z{Jw!M2Jo_=x(0v=0N4(S)3`o+@pIy$-tjJ1xQ~%nw_TN%N`*9GDuZ zuBF+PjE(y=$0-0uU>8^i48fxO+x_?Guk=(uoYc2{X#4Q89^2W})EBq~0QCX&0Ri=h z*@V3X(FM`A4}YYFgaHt3Zf$_}j~svQPSv!a1~ZK&#Ne>I1F-^W5F-8Odi784|1TUX z2}=!d2gd&4U@*uIF#xe*1UUr&86^BapRcd4%|RLk=`Khle<$1r4sw5F^!qPafo&0V zf4bE_A^zbHf!`N!{eQG7K;SQr>uUgP%YWPzh`?u{??1i%yr>2l7#f20P`hmNsE@ku z0{hkG1=c9-7uwB-)qXr{0aydtsKBJsjQ1E% zg;txEYr=_8@b5DDi$MUw5p7lM&T2T2qrHKxRy`Y5^6&Tm6YS?txW3sI@e#-|j>p2l z7H~58pTzoi7#ryLn@>)*q(DxDvlFe8x|6`a-~LbVUo}qe%MB=M;{m^TO#%8iP5|(f z0@%MF07*hE0OB<@z^-Ww0J5QggK#GxAUOzxe#HPBdcpCH&V|+$uNFc@OH7N8_Z^Z# zJ4U;YcLf=vy{2u!V}&Tt;!He$NP%ZP@e6Ev6o3yzoAw;f6EaHc3o(Wufn10&fC*^; zJFE!gBP1UvhKM}Gr`5%K@vs!a3W*02AaZz<5MIa-9wn_S_T>Ll1ONN=%=N_eG!XQAHTRzm0|OJ| zx5L83#K6SH!p6qN!otGF!NtMG#>K(H!okPE#ry5BaqtQ7@d$oD{EqxP2Kd7RWBm2{ ze|5X=fP4mZ!~P@1A8mf?iupTZJbZ#1!~g~alm`p*w>01zzu)U2ED~(eI}aY=kg1#E z-gUms|Mo*R9`oaGt>hYmNEU&YF7NOOC@86@X;|6VIXJllg@i>!#l&Tv$jZqpC@N__ z*V5L})zddKx3ILbwy||}bARpO>E#_56dV#779J57pOBc8oboaCb53qve!-W*qKe8Y zSanTpU42`7M<=}NM|aQA@W|-c_{8MYB4TNIWp!~h@BmNX6DH&ifI$MmB!OH{0XH$h{y>6B z0ziR_VzuGKljx62EIOuU1?-F*eF21W8H1PBtEb`(Dk9bz06ai^>*x{+Fy3=G6|zmL z5m>W&fKZ^=>X;)OD!Y9{k9W=rHz#GB3%Zw+)z*Y)YsFH0BMn<0%d>SlyRsq|PfmzQ zog2g<96Zw@LtF#5HrP8Ei1!)3M4G+OFygX97N>FMy7_pqu)Kg9-L#U#*cvW%OzJF3 zGN`(`ut9x9SnSRoT>}D|S}391&E#jZb108ip2BSC#@L{msaxam{0;N0!c~}Cd2r2? zzA2F>=O1KMMrTXi<$U^hph+A)duIq6Ej1S z^t?&&?ZuwT?F@H9)H3ZNbw~AILcedx%J!D8|oCT-;aER;AC4n{OT zLzYq1Ry66Dghfrr&=j{jEd}{Q;`^V}zcY-U?J|>SmtK~nHyH$cJU%Lf6CxG88Dj&g z%eT1^9PaSTqHDlRaS>&9p<FmtyaObWQQ#mSy>LaBV3gI$x7>p-n&xT4}miKmsQ*hR#? zH=J;9UU#;ZeYFV{uz+_U8j*a@_>QlDMoWBk`C4uZlFdKG2D!}M{b6R@(F#JffW2*p zSi;=2VE$5Bb@9o4%P2a!=nd6!%(1#0zok_enkx0OQI2!V z=k@s(Y7YuTx_M}K9c->>$ErMs7;kw-TBhcZOxk{MR9Orub?S3qno!}t&s*F*=LHB}_3bTfstV5zeZB}{jxWyTs zgx=lRy9RE$njnj%>B1?Nu85%o)B^9}-9$^n$DK@*Jl}Kl&e)w`Rr6kyc+uTmuWA7;iRc-Sev?c?dmF`Ul(dNNM727^A?!Zjq5%3H|AG)E$qCs+K=mdTFRMk zCg6=N1^f`DF7?a~uHK7!Al<}Wl{k-kSPIrmorvR51JpGqgjJMUdtjuybLflv{M zhh50*Mflwp@*DbF`)P~cF&S9isaeRgLlZ5o%FM`61bVyF#fLYpfg3fgR<;vmup$8l zEQ%5rTXWPmS2q2w#nWhqyH}_0DFp+HM=AF$b2j0XVZA7)gl5^=<_8;N=JbxOnIc0u zR~M6%>bnYM<1(l;y zbzJPYYgbmzYzeGUDrB-OuO1PWP?2oQlegOH8+UztYdtI~)wO1PkJWELy}BP)vx*}q z>;QjF2sM8VU`Gy>fDO<5mcl*m`w{XHf_FY)Ujqhgx$bz{Sh003x^Hlstm94+rms8$ zHWZk7SpA34ACHsL-?r^`skJrGa&+~0knDPuVO?aD`>8g6cQ_cpj7mQ(E1C?$j1kBx zwIiQdOB15mm5|_W*y#UpCw%oa`?`FL!|-G18@TOgA__UDZC-+I$_hy_Ri;vrQs?Wt=z{1;&yA6I6P{hZdB|Q zK@PI!A@Zco&k=bIbS@cHJt#kMAML3?ct?n z7C!Fw=JD+$wBKv*?Q>(#bu@6C;Zd_-(ifn~1x}u|AZJ6v&9gd^r*3Du8qZHn73)rX z{`pdo#%qerJu%_TRMXY&T=&*;|}fxr)P^cY_RbGBH-q%t;<;(^oXChn?dBsP*KIb zEWR^EthK0x@dC{-LsQMu*i(n0@h97PR^^tN$up=8q_ns|`=ROV{)5#53lGscB@sm< zw0d0S*hc0WGI@#d`#@MK?%VlR6G~}D&t3#uv8(TWU*^2&ESRib<_$wp*#s_#d{9J%Q`Y?4!ninHH=6WW1Nm>K~ii-Uh%W8ifPui1DsKJFoY9bQtdRc`CO=oB&N!zB zAB^utS`|%;PjkGP9?_8pHex8nPKBC8(_z#L0kH9o@Md!V{uWYSO&bE`FDkaFQlGqp ziKI6=nAWN>D+9jUoe5kfyJyj%^--hygllc%nG7|*BpF=^3+x3?YD3hxw5-jBIG}*4ZjR#Z0ebp8p!E!5sOP$J{^4rewlaM%uKCWum3!?F_kknc* zx$VpANZo#S^YyrX>B_dVjN7vK2ds#a{xX9br!EpPEwred4iA5(eaE(z8#Ddwx}%cH zukw_LEiB*DMVCBc`7v|zz1k<1CYWNzc!VTs{3t>mYqwGU6@ahxoGkeUF9wHRdi3ceNR_ZJXoQQx!S6^<_ zRO&Wk<$OCdXv~DpZB}|};E}j^+C({wUUk%}!HdUu^kxbUVzJeiZ4zLo!kkz%7W%G? zEkmR+vay(R-%hw`qML_&T4%MvzMQ)uYw#LSUt-DO1-6tFSGqQO7vAfEM^5J(fDRkG{z4ME;O0pWLY>c+`%*yPqM=CskTv^ z(U+a^Hym$3^Xz9uT~T=oz~#ROU^bc|Tb?CN%yqdV{EXIOBr0iTUL+lqkc0q+lEEKU zw=GhzsrULemJixSb)yVl6f5QhgwOTP>hETh48zK^QAx_*XVioGkQ3>`jn7S!fC?1Z-z7!p%6av-pC! zlB4hDV>#2tul5sEQvxRUlacw1Lhz-^O|oYZD^VV&b!HU1S?%2G^%MJOg(Y#_R|SxS zp@Kf~ud9W5>3(OTdd04t`OBxHl}Gna-hfljIQlh;a{rzurXostA#B?%%}(=+bW`po z#i@SO>Kwbvl}+?#$mBRjt<)p90OLDwS+qD1t>0X3Uu4^YEqzmdp~GB6-zahPN2(iv z$ad3*emF}UVH@S!z>!OB%HSfc+@iLM1{3zv+-smL^iWlVOf3WM?1R1rgkuZuwJa<^ zF=ulEY_EFGkNRi0CQxOZ9x?5=fbM}jFL(hsF+aGhY_V05m6W((@o#%?XtO(!dC|eI z>|<-ToEYcAR2@bvp2YsO`)*xcoKl9W_ox|FS<&g4VF{};`;YW2t8ZcRNY%+^QdEn~ zWnMGXGe`CEi$BZ6oN$hNp5X+Quf(F23%7ZJ5)vAD~D-LRc+JtLRRhpz;# ziRXxhQYnSjAExQ4XLy}W19|B&J>56Vvd=SNgKgk8y4n0#{f10kmxhsA4;00{*1>_M zMiRA&OBhy}*p2K7>HT15oz+3IWz5wa zsr2?}T1|NI^Mtk+Srq zys*!yE&Q+34d(ad*M+WX9ND9C$L-NF*vCg9OTG$c=6A`Z9r}w;;e^0FHA$VN*iNl>)rT+ReyKLO8aMtRO&ZjPRGL`j_qOG!ey(RS6?$*8jOyyo$ZMV|4t zX#HCbU0p4e)!%YG2jrU-%66x9YfZ$rr`wtP3B0`Y!o5^4SAGTu@==NSbE8$qq1FTB zo@vUcw*4on-jt2RW%>O`*OOt;kp^Uu%7fiZj+3qYy+~aekvOd z`5Su$7HqqSvFdumo&%lAL8-xWHYiz0cP%@1`kJVFWT&NY_Rr+IdAJn$d5sQ>y;LSz z-JJJBb+0(q85jox%(IAmMTR8>To)*t_FqO88(b>+p~kP(3VB$kLjsc)#RfxHl#+lncCF3l35I$SiV8O(g$CiDuj7( zl__*$?>@RgEx5nl)6 zoNZO)RCDXfOK0LWE|OAn&Sg=D`-h9s`AvnM0ZS&^rO5fNEOIxigD2j(!l@xy`Kp5@ zf!#?8sdBM|p^m+ou7M`vXyN^VZCRhC_I>6hk?s3Pi7T@8veMmBp@3WKe4pf_AL_(S z$&n;c84^F}Vivl@j7Lg5&#O=#BuPVuJ(lhAz8B|=##;*$5Xq}`K&Ge4eoHE`lhOuqkB?zVbRa%=M)#Vu^@5ybmkZ1`cqHz2_sE&;J!b0?1yFq-0#Q< zm_SortecwBv5FmbOLUi(!;-U4Md?&*50dWYdc8b~@R@Enmev{uXq^;~PfyEs;rvRk z>Ft(s2n$A(=g0Qyx`W#?dj>V&?dC)_@{5b+y;Qn zdiD-_8TH1N2tP)hF_`Q~sbJEKwzHixgVOHwx12Qs!qF`gPTyO?HHlqx}pjON) z8kZkCmGY56#R>;5F@`mB?%$ka*_Vx&oafpeSqT}0WEpIOs zcxGeoF2yjcJPs=r-qU_Jw%iJNUHksqt#8E1H@mstOo$?yBio+RZ7MZvy}ooG+^!kB z3I#vYRZCQal!0|vueE%lT{o+WtL()PN;A@AX*TDmC?L%L{(e@6k(Ew;JiJ=mSEDNj ze*S#0lROUIaQE<8h>f{!lv#{!c9+oZIW*eWcAmx;y6AWrz-(QO8duB8_^GLdo2Ua$zmWrg+a;?4d zkXo1j?N{@RpDtZ{YADu#ojVI^xc(DR0!f*I0rxWb#fxZlA%#~#X1>uR(K#Vr)TRlh z;fLfsbT1wVZXomYJqh$O8F~^J>M!~Y5A3G~bo{^xpRrF`!1>lwZ68hSsI)}egim8h z5wVrgapOFWa|xx7@LsyL_+JC8*_$oM)__XkNQXX;TvV}+Y0|8F zG2g(qiQ8u7TYAZic+Es;34;`0R`BDtJ@v`*yMq+;nL!NU8NO-k)A2<3$6)KLRdNff z=H7#mqgwgX%99v;1AC~p=V^pP$P8U4U-iw) zzssjF??YAoXn2WA1GiwwFkvGjk#%N^X9WFeVYMpkC7HDtTf-f)B!@j2R57^J8uC?C zqrUo;DK>bojKZ^Jk;O;o1^P@|dw=RvmuchA0Ge~F1*JJ7UqRFzi^W?M^P2m(fn^=U zU4og~AHCcQ;a{T0xmfQa$hFu=TllLVo_U=xD_@30Tv>@Rj3j;=UJbzFEN_Np7NnyU z_Spj^#TL_`fpfP+&M&LeijC|j$3>hQIeD|WsC-kN#lfju9xL^I#N3?{80eeFki3N; zqVs)@3Pv>Cl7cC#@b|xNk&U}O5zK$!m6Qs!GLL9ozqVn24{3#RgFW|=cLqZf!iaSEN#(xPJE61y0QGrwdRwHp$dO&M{?No{ z3QIe3ImR-|Ci` zSpk&}ki&ExRkgI9U@@gz&5jbUvK;!Fh}Idz7HwWWc-B7Js+^fV-$bha1KAF-Tvmctl5r;M_Akf2ZX=iEmC<&orpYrG8>o! zxW|3klv&)gmwmy`=***Mal2ys3A4EWkVXP?FWUy36jm31xz@O1KAJ~vWzPuN4{fhN zE29b*7)j{`E_~X!?FfUduz&sxu{(+HyST0D3aj3mu8kwtWx)2MykIdj@TIz}4zMb9 zgwup%A(Pw1Z`Xg?Cta`6mbGMMc_esB@e6y}F=a3z=i^QD!sUod5!@)vMURl8d4Z_y zGxM?10`4Z(Ucb9j@$;_eh5Z5UAkTiSbv+lkC_~4UdgMJ{yrK_(C%j^kjcA@lj-x4k zPHr{VyoJ%5EkQ%+zfwC&vJF%=3*4;mHxoLT6uz5Jk*;B1%rlxft9fuZgASDZk;J9y z&F&h})2AbgjYqda;)E!ty(kVp?GF~75evs8VSWi0#_NWC(kcvrUUDyYLtB&8_A(H%BUdYZ-O0RQ9pcWod|e%uiyb zu@YN`5g)O>^7^&qt=Y{0%oaLdk$pzQcob}&!S38R^ovPZHgEp7XPEh)f%YcKM^(cmhzR(!%m|kHME$O&_?;Ks+!%^1?~8OC z20Q&4`E7-eM;mSRhD|hMdwzaub)Cpn*Wk{cCSS6&#H9%bv%XRD;2w6BT6CjX z(RylVcr)&dC-}#XnzCK@(aD?YLasO3HW>EpK~ElrdeJK2!d{}8ViY8WmK;#tC)Xw^f>qrC9awUbKHovwvCrF*1UKi3Z2Zky}lPjq}w0=CEKQtL)yZIyIbl=-`(!{T#KNu zb91bG+C!vJej)-kTrlR?D08!!X_&P4S?cIQ*dxKO%=NOhRnai&(Ahf;I?5MZGoGqy zQyvSWSsg?-r%=7E{HkM9WzlZiN$0^iKi(36nqc&@+uF@u=o;;;=qE;kb2=>J^l)?8Ff&e?yY+oo6 zH?)}+rDSq*J-LR4H6+|MSH@AoD|<>=;-f_({hP;%uQlIRCAKpLf!~UZUD7a=$$S+zvm)o5eFDx@_M))6w_gP{=AvVt0*@!RjyKg z2pbT&p?##8P(6Dh<)Ls#3%|8rOlW@Ma)jxPl-)`;g&($}t=sE`ub2cl-lyeREq1Y# zGvLPND^zQlp4ZZ|WVv{i8uQ0LD-08BZoM6e6@4#}uDwYkk-9Q+SL zq311=gqA$|;;FH0Q?YR#Hk^CF`{=zv*yBhWmPc_^XUiGwTuQzZqKEiUYd_o0MSgk_ zHP6{+X6s9{XkW{|ihFZze9lpY zxzkafrW(^>m7@-+ehgFA#?UI93}=gqE*YJAE1bop5z>Ns%9KB~3YmS>n5G=@TsdX#N857QojWOz#It1T+1Q|LY$g6+o!rFT(wwGwpWT*x z|22~+>s9wm-b{Yt6aILmLyvcn`mWp@dF72er8Q8MD_r#BQD17)#d&Ph;R(a|aoVGk z9pQ8I`or$mac8k)UdaIhZQ1V?4lZ|s%<0IM;?Pe~qe$0I592$?f`%3J&pv>E7SHt)ap^AdKj6II%jVSCDs=7vu@vJqNRuI>Da&Q0hAU~n(o3yy9cmJ% zYn}`&mWk%1T2WiFV~3aJP-{hf9;&Z*u@^0L*{t(hE-Bd_OFolW>WXZ%S%St?&+$|Y zt&ZR4IigiB6I5mi=Z7X~1+iAr6;eN8ivJ<;t((!{>gP3p;m_fja}s%(;miFQO}j4= zjdn(u5HOPKd8+L=>#OeOwks5YUI*C$-MC+=+HSn$L=pjA=Q0PzuOL&Q)Mdquus zg5ztHJ)yTgl@;QaulRD<{H>xE-W#r##Cv*LX9h(J#5o6>Yj6hQEUk*sJ@?yo7Z#ki zD{Y2yKX6J$E#G{j#;A|1C?i`AEC_Z?61U@S($TS#I+k|iL-_RYm%)-6{FA{GAlhmS zC{E~1jwSw-~7f18UPI`Gy z+m5Vd=M1V-6}_cPE^&v_8Sf+e?S9>(R_IbfGb9jAb3NVUc^!4wy2dj8y#=Xx<5CR# zXe08J(cf3CT(G~ds{4rz?^5JWcx z%2PfowC4zkv4|AD0iggR{Q>Rnw@fY$-QH0mLT4?WK#KX zjOea78O#CX_>p`_Go?l2qqjk>T#1|qy^4?fxObOxVbvMh$+MN?OD0r@WyAyfF#aBr z)ROp>^yTyf&5EcE<)pqIeL=)Lcg45j{WN$gdxSs3tlp$29tifpf%ZO>h`dr@s3Te&#XyW^W_yG zY9q;c_LZtd>flv>hPZDLUzSL9y4BB-EEatYO<2iJPsUtVM|=rc<6t6ic!<6DZI}DR z^~7kT4E#s+UEI~rES#l!BwNlR?fu|nnx6%Vm9nWra>F{Ol%(AJRjnfe3z;SvC3^CU zV%mDg;kAkzc4yTvlb9>{9D|6Jq?Ov9_jvpbbSrcT0 zwQB9px31~-U)Yg^Zzj!SX4W!(=CE9h=NW{K4e4jS8}858%?)^P4OC~0MK9i;j$EP) zsk&sdaW~F-yRv^OVn`E7xIt3qIVoG z+(R{fX}>`?jz2)B9ObuGWcXFTz+r2)!Op#2^csi^Kq`kd^ZFX^hlU@UP!+uMr!p$0 z7w5UVidcHC=&!+G=A_g>F{3YMW!B}Q;u!;O0%GYR5Bm?S!A=_6!C^mOx5Gv~lcmvn z_nr7jpMM%%2uVw&Z*lci=)vCkQdpYtq>sG)^w_0OrcvoN(0UuKG|X?^Ql%Q{3^8WZ zKn~s{D#Y97lZJg0uGANk~4PQ~zN+J3s$}eDX0M{hI zW@d6@%HpSv_eX2<=$A&`1cj3#4}EY9lzSuN@3yU}x-Pi*yevLd}!6&a;Y< z{X*kya>YYCEyG9B*28(UW*V-Us|}apj}FoUkIUZ_s1=@8#(PL`^FK&G-81y)a11>! zh}k(xxd*!?J~T(f*G=CefPdo!Api&Hx7J+@pIE8&))-@ zHIKRn%I#i`i>5>AEjVsxNZV@~@5{&+@FYCSt3NPh!jh#u^9iE$N!Mv*q((pZ#uiAZK|24?lEmNJ#t2QB9CGR4~awvR71fvDFbz^ z=KlN}_xq%g*0N}*d78%X^JL3R)|Yo?>Fn!d=<6i+Q?EWJ?zz?Y{q{v!H@)E-*!&A!P16&u$YwxzN= z-JDv*3EC%aY^Cb@_diO}oW^?>6stJ+3gMzj8sIw8oKHecP>NqrFYOKbDE7Mw4d(pb zf`5oTE34r5iU_s+@u-{H0k$=N6KZ*jc_9`}F4L}`lq3|H_5j)SEK&dX<@~DBb75*6 zC3F{Uh10`jh)L{{s2Xmvs!+DSmk@ce&))Elql&ECm4@RtOn3_&UtXSB$2XF#OkM-t zI(zODm)SMdu)3(7+1nHAo`ukgne6Gi->NkC#zKLM$>@F6n)NL?s+nYq z^1LhNiW>4+(49DJypOkZ$+_`;{=SNVi#h|#X8D;*)tKUv8;4K3VBowWhaxoJ-9P-{-DaBtD3E#Wz5G4o2a;F_cH%=!4IjS8|F2{qJsuX?T@%bI_I zqZ!BL91ed#zgRFnM3@vZPT4*)yz-3PogL%y`<4 zd6j0Vz7vz_mW)tNPqc7e;icBqS%KGqW1CmqSXIq%=#K2tj>#JDdpio30b4>Bs!z30 z5x@4-t2E?=P+?&2#&CpMd1l#_6+%)cvq!YMQ|@HgziVtBsRC{ptA({#wM=T9uBAHM& zwXktGctRh#m(NTfDg_Z+`=zroQ{SNjMQS*bsQJ=^8(;Obp54&7OlWH3tAj>oRdSmK zxIhG&HQ;A^2wz3(g_4j~0f$OUGpE1&%vaC2&XXwaJ6oAHse56ju}ULW!+Q*4huzYK zDY$0)Arj4ouD|y6;gmDU(gol-hl;XjQ}%a4<>YXSxbwXZ@p?+0_aqL&>5%WeoPB-| z7sCghd0RF!6VECNqsI~cu~ACotH}WeTtCv}d%O>%VIQ0_{7`J)+}y`qg|xRj>foZ- zs@`MR!^!vXx{uikCN@Q$uarB7yn+lY8rq{?kzD#8zuchJEb=YLm)0V}r0Q4kCQR>I z?j^SSo~N{aPLL>`kr9{(SC!iOTKUQzh&o*pE8BEa6;BkR_FI4wphC7cY2ba3i4-hrE(@&rjlXpmHGJSi%PUT)tATK_gMzwyO6sCjp>^*b3P4~ z&B)Mqg7@(+zgq7b-bpX~ke5&=+7BGjr5;6k4)pNLLqnHz5q2XTTJE;KPp5B$gfOJ$ zC@;!m?(46&F2ZVzE0u5rCR|NIT8J0?7_SKMOXi8PxU*dD)YulB>5MHp&2QhH zz6P=)kEI33A{+(2l*8E1@_jDzE2S6v@ugffx5g>OLqpx|bU)H4-X##Y^U(i=mqUBG z(AEXF1Otn$NZq-~1-)F?i7yh?%T<{6d@Nt|ipiZ5?z&4^>UXaPS8L$7JT!)3OY>-^ zzx+Z)O%)RBkNj}G_l~x{JXBxpsydyWYu3nU$Wl@Nv0buf zI#-uS=(E}&aU;wHH?{6m%I;TwvTH=nhe^GePFR2!WsA_T!2qG0k=UldSbf4v7nSa` zvEjA{;b#3_t2LzsK}5$N*2Gv+xAPIFR=3Z}3s<2O`OzhU^K)#H?OAD4E%g54dIpTs z(ALus1nuj95D}&a4lMBez^wcL{fjBOmdW=4^WdgQ^PTS1W3nxLe|dKc{KvUQdOzxx zLkmz*;+_G|4*DwNh{;)LUG@x--ve8v?6mZREx#x-A8VfQJ$IZ;TP!KP8^}^$(wL5% z${6F`P{d+-yDC3^F>AMC-6_hW_Ddk-s!j*3cF13lbenN2hh0j*@N#yxKIw83^H;{K zovKz{C-sk&J>Kj)Z&LZi4@P_DjoS|`JzJ#|UXf^eChi%o@H&(tg6~oqJKVmtd-3tx zY^Ffv~K%Ilz(x+EjJh%EQewOii60|yz`L9+dpaIEW#uC5pzpYRHa+sK)5en!) zlN1nuW++%#ph*g7F#-Otuzn}2JRo@4iW(O4(S6tvb&FNtDEAJ z^En$KNxsu2IxT%+#W(i4&F-!e(*6Gx`Gs^h2Mm5Dg&ce8tE` zQ8E1BvkF`d0i+jGiymFNseB1~SN36mnc*5R@?opoN@NzUQcRiaqS}6N3GI5KA0-g= zVu@W;Y`~s_~jD|3+ZuApMR96o;cfGVk+U{s!5C39Bkm$V06 z=%Qtp$F6VBt$Wqu0^cVR`@uzjoDO0r$cCRX`ww`xRN*CxjI`;E?pF% zj|bM3iPZfk&M~;`akysDLU<|9=8{w3Ri(Av8@Pd)4^I|AyT!~fVYrf0I;o53cgBI! z{)hy7h9*1Rz6V=vh7Q_F!lZSHP0a8 zk8Zt}4EpKS`6OgYWUs(R+4e)@yKJah(D1?QUpvt=Kf|>+HcR@_CzOf~)(X!$ZXN~Q zV@PPlmnUUA^+l0|M_|J0jwiNc~un)JKA zxgp6%6*03(#W(#*7v^4F)9ULLjb9yibeDR%r77Y*yFQU~cVXO^ILs&U$z~IA3q9ut+*E0^lKN^ zUFQg^n;)ww7FND@9=?|z;4=1B}J%snCm;_0W0hajpcJR z9=}Vij{Yx!Si}?R^Am9kRip}k2L0MxBNJcm!}=Olem#4@MN#bBX4o&s@4&#Q`I1Q7 zVGToQmOSr(`O6pM(8V6u>lt?fR)Xhx-(D0m`Yh)&e}ZgvIVXB+5OK9KK?;8EVO>N` zLEqI&v{OOu-;N*XWo+E+^?`f7raQOajVt+uAM@lu+RwJhs!gY+lyX8BFAl5!lUxgp zl^W8c-g!jH<}01_q5y93CcmK40Mg#$xouw>teR7>dW`(e(^`f&)Bxv0`dEK8%&jk5 zyTAB?^hH++S%3T@!SM1eyez;%++E?U=iFV>AiAGuz`;OSotoLE>oOUAzgIymgQIZV zi0K7c*3qD#r{~n`w@UXmUjW__AGxGpd1bXZ^j?UHGqPV7#nzR9rcs|*Z?da#-NCi2 zMtryiT$rT{lRu6!9Mq~N<`F0zdein@ zUelVFlH7Mm)#{#9`yNEUgiTl1h`Q>4XR$04uoa*qg5o~k2~LAkCo_i(pHEkJWOqj_ zsX`erommB;WVZHq*f}pn$C}Zg&Di(G1+7#YPI7&J{KrlN@14P;qf%snGD+aET#FQT z(aQiOLTQA9r*3mh81ydW(st$RBnR${8I#MybL(QBn9uUmM@tv=!|QStM5WwjMUYs- zFFCK4W5l4$C^wbrhs@MFZ=B&_DKycSjtT+=WeFEtkrGxmX{w44Zt4S?o%A9+Tn_xx2`LCwctOwI{@=sJna* z|-sHm7CGRXVRL5QeEN{=(34a*gGdj6(o2%hgolf=J zn&S7YpTzTUTtY^wM`v!o5u=9}P+@Q1>WH3p=0b5;KvT$RU>=^IDFSHlP`SZGKT^TZw&wmfx&f(QJ$cz#>{i=RZdyzlPt>EC`VfmMHG!{T3LC$7@W zaiMUl_C2^e@&)tB>%L_2wC9=ngrtK9q z_j8|XtBM!7W@QGT3XPz{s)?}(Y^lCRVdxM5mD;FqD!%)*=8@htpw5M^E*a%%s^Y#E zcDOTT)`u1J2`~K7D?dE&1FHFBs0HUpO;nm(lYVuE^rv3ZpJ9@|)9TE0Cp235LM}tf zB8;AcGxQ$oUNoKk)D8!M(NQtC5(KXSD2)VmU(cuasX_XF!?!RQNp6{7s&C*@b4bTI z|33hUKz6_KBThKC{R}8KQ!*$r6fjz=GGh$=7x+)})*Q8B=kIXir!<|%yQr);a`mvu zeYf=uzCAvb8CE7IbZ+=`T63Z6V&9ONwP|gyt~}?#JuM|!!5zW;)P06*G-kwRkcQF^ zmX44I1KS!VA_EOEWPPNGBcW6uqzX-e4=vllvWyRMbo|WGL`Voo$`X}vjx+oB)<)$a zB}b(pL0+W<=Nf3+sYw$~)QLV+t+~lcyEDc>NoXs-eEweAMNzuwRAyHqtu~zrhT9}6 zSVB@hXPsQp;_K%qbCq zzJzjrOlmDnx4OH*Ex8vvhT6AQu;L*z*2~VPJYl^1{MY=obhojzz*rcjEd}V5H|Ny! zimSVKb&WmzzQRKvja^2P2fnQRkz~=Vs14I;k&u+6bvWrgPrR|gTZ+dj$rT%lxAw$#iMr3A%;hVAZhE-p>jYf!g*US|NFp2_T@4}Ww0b%jw`S}>Jho=!$n^wTu}l>1FNvkNc!j`xQTrVZNvqk zL#1h7s3?52g`q1MRR(nWQi6(92;Qg%j1LGlKK)p=OM2j@wBlS!o}^V;Yzg#f7$vtG za~(hhV;?WeT$R<~Zr6a_`I|?onXSQ0?>0ltrAdc!L+c?k8%gw+QVtwXxatQW>Bnd9 zB@f~p1$L-y!QQZX9n2o7Frm{aJnP(0(0h?z{d(FtFgPhT&>e3e}VczfRY3ASk4 zooA?3toq|~^ve2Vk6!bNYWR8DX3pl;j@7jN|34B!r~vTU3+3u2fOBy7DpHbLqkSv`MBqQa+^M zelkCJ(vuJY@}bH1QD#{<9AKYUCph|Pb1i~KK{&|(aCz^>h?J-Z+t92=yL!@yAsvo5 z91LzX}O1$4aIPq3_T6wv^r{c-{Qbz;E^e%0Np zm_MPYtVcK5^CxgY{VK#-)ri$t5vIplRF}{?z(4Sn$68O+AALws@r0`-L$N22e}6qi z+%#HwNFz{Uo;I+wg(UC&sHzYMP5=N5@GwWyN?HH{ILFdgsHrQ4> z3=EZiEMwa`Skf@8AC^e={PehirDRNRO51M=3QtG`<$v8DylM};EgOQ+xs|z=6k{RR zQ`2!dk4cC>0|uk<7MyW_<3IY1kfG*A zz|jnJNuWhT!g%pz=WNk*CUfh$o{8uFItnO8A z=+!@;LJywek8N<>+X41YhwIbcD>4vIB|{`~G1G!`tf7?T4{|v7<39QT1P|7WFljDwI0KxI&tB4$gpRBpNhETAc+$dj(!6?;Na|HeWfm)v>Qf`bVWj0tkl;Z1`}h2{ z1=nWPcU{F%s1OVrU@Oa;UzZyWN=|T79VeU-{qL{0yv`KQbg$+QXxcsmtC0QbF8Rec z1&dm(d-)9{{@rMR*%-8z5UWPHRkvp}fE42rOU%hoABn^s2`9N2(1($~cJT>i`aRJV zzrtN_$&#V5G;(wg4*%SBIKT-wHt^bT^tVQ6p}f zaYKN%ik6f07&-+0=x`VAG# zXNT}q<-wZH@AWH}x{%%xi(+aD#a)K~0Hl7kJ6iiwW?D@)noSxjZzqE#X!9g2_sLo3 z_uEn$SV96@LPAD+W3bgC`u^(u<8ySPr4v@WYgR2<46v9;uT8OzatSApM{mzx6xmjC zp^o_jAZe6|l~awhq|V1kA;OgR!b-mo&XT&w^>vJWFfsHxN%2J}3ES4x5>o`IW2gds z&PueHM(G7d`@f5x-z{KP0i;ec0Z|F$3}-#Ea!BJJv!pI0rClJT4%h>ctVbYXvk|1y zCt6RbB_OCDarkr{=2A%j4^iNej@rNwXO((KuZ0VdO=@FqGU8CQEMd^0)SMpw0QAPS z4fcw7E~D?Yhf$2gMj5-P%sErE>mi^XLx@RNkh9#SSiuK^KOv|rQTH&L%T6P=oc8Ml zL#h>`hs#fmO5tg47y(G&I#@Aao-%{T9zkoTUGezQ4bwmCH)NC!H2; ztl)Ej$T$R@D`~8e(~tniCzGsz03_B9u^zUfY_>rE0Gs>AsCLm78Y=Yy06cO(F52=s z9ccuKlj~|Q!y`QB9{!LAZ{PFLG%}CEQkA6RjAS2iq9i~X>L~>DHR4QA;7RBTAmv9K z6Q-TVYsa`Cm~Vj6l6s@Q21^RYGmhjRai{i=7F#5@3zv$IOG!-O5l0eL9iwNi63haILJ%47K#EaWqWC@>oB*`zZh~@D+QPx(L{T^l5(y{V43Vn;0CGXw%jr_dT$!w> zlJcdrw7itWLoOlc{#YgDl7ia8&mbTLj1J|0L8CF`AzXJQIaUvEU^Rl&4_;KDzDL&7 zQMEO|v2PIu3eiQTg9e4r^DzhZ*QPsz_7X5l*tJBve+_*}*(N?6d;oMo^ z<;0E^$oJ>#p{*U|wUQfCbc^N-e}&S&yXwkF?Vny)#=G9xAv zBR#TJ^Zx)nXB7?GuP34%9*=4;ze$lb^H7$N^9USgSr~2|W^>=Z6i4Akv$s8~KWxM< zL|e0ze^UM%0ZSllOnFjUsa@51w?xpsu$hi@z-d|j>jTsL^QmSuDDfIgQJPB(p&=+k zXb4I`-Tj!bfAT!5jgc@^gcX{d9md1Epp_@mHXNpg=+I zp7|s9{(8o?NWw};9^oU7`bpk>a<56R%3(bugrpF7>f{ff8o=uwVpN`=Zg|IScqd7p zT2@CvLmq|F6jYPbj3)$VLY#~OhyhB^WReO;%;R3roht^CxYl#h1_y9Gzby)Rl!XG6 z;FaMaBlpg{2Rh8@ts#A+l21=bCkKyF`j6?L(pV`Z0Ia1sAP-O{FCFoc2>Lnn)BHB&%twN7+vhcQ*~Qze^8=9irLpnz zrudslw&FJebW7+q=Ag5+moCQbVa1}9!N@0I0@xnm-Es<)5Z7B=%#^g5Z zQW#6ktJ0)8khH7w8e~*<;)OJ+aoTd6;3q1Kte_vCLCDmlo#WQZ88+!mt}WYnK0W%= zbz5gvjDPUz*#jLxF8PeF`J|Dgs6~i7)+1u}Uj4Z9iKvIH zE>Wv1(vtaml~2lw>Z(F`B@c-SAbv!j>8$a0BJia+mgfa51A>W>e76>Q(16pUb!!nCVv(8k=Fra#@m`h}yn$DCXfRT)TA_sq-lqVP? zup9x5o^_G0uXSQ#Bi7aQ^!CqXatYvmdd=#}i0qtUMCbVr(_T8JurxDSQg8qubq`U% z#xty-o~#89a!4m6>&7yG4R~)A?Fl5P05S$WJc0EZ^tP9d2?rhf{+jd+C)U-OBEF#q z9P)k7ZGA#J4%~OnbEJS~y&}D-v62Q(6M}J^{PmHrkTO15JY=8KSdy<0^|fSpOjqTe zj1iJaBoA-~vIID=6rs;_fHI?>bEJ_1Ie&^&>ju90D;P?F^&F9msO!p`NC1!lC!diz zPJ=*wX-XS{XnXB-0!kH(VE~T*04_h*LS0}bJx8fT`bttUon<~=wyXe64S9f&l=Lkj zT!fL5e!3c1N$OS=`0x~Y&VFAlDq~Sz)^!v5K2@7njPi;bRF)Q|+i<7mr1PJC zG~b7`vB&V0Y@C-VAM*H=f9w=YaAs=_zavnh+4z75>s>q39(F`#A9gFSTv#exSJc~% zv+5uPDGE|gU~&oX^g3`bP6r(0C+0shrl}?Y=}z`h6GmC!c0IkuG4G;mdX%4IoQ^pB zv!!(B=zVD<^P;UKAmHcJtc>%IrkAvooQ^-`8RsBAjv8J?9E+Y~fKizq-vHAAXrmhMU3QQ5xN&?vhFrmFh^^L8jzFc;mrNDG#r78Y1 z3O?L-8els^yKOhsA%wmgLCR#pS#h#HY8}Vqb!xK2QFM>9-Sg&o)q3*}TMF;(b{x5n zcUphjd$%?zOEs2!(DHkCN$2@$GZMlU z!S7lUgZWe3I}}T>%f=V=+MbL{X=%q;&N<2F>7~haB&U;%bDjpP`ErOgGzc(7D)T_W zNJ>B)9CChI`WzkdeXuc{=iB^sosX|7$T~@{XzWG?PDlXp`u_d3kt-Ph6p@UCk8}C! z*0TNMr70yiCn`Sa`u05g4SwrOU@1r{Do|}9vDB=nd< zl%+p~T}L?201xrk#Bq~=l^)>yzC&2oXsphLq`O1HcF6 zq~;?i8CObBM^Q@oAP(95&b>NEu2tElEI z9S^Om3L4EIaU`fC1w`Zolh5a%&$ZH_lpkLqU)>zzUh=F++|n5=r1Yrp2+lraX}>A7 zBoYDVu^emABvuI<8jWvyN-A_o;0&pj{MN=YMn1aZcgGF6{=~d{QEuu=ei5pL%}Ki2 zQ$wI-*8@^9`Goh-_4c4Q4Y(RKnr$vD93Ip-(*bXAmtjsedfPtO`y z1|?g6iXPh1^fo~B^(d3ZMpKjRofBmlNzY+`PI5ng>8uDT+t!tX08tiz>K*t`u)sf; z^3hfk+t>~=MwXaV8W|!s){3;AKm(J<9GwttB_o~z<2{awkY`Fv>!_uP=_v=1laY__ zYcpP8Pf-AIlY!KKU1Vm69=4>(rOjnH7|FmVJag~Q%SzFXGIP%f10^TEijgoW1kRqh zQkIkyybu8Q9f{9vEJsNx%7E+$NXY$ks52yb(vl4N_fn(|#1BdIsQ&=hSwm=71P`FV zkDLS4*l{WSLC&3Uw?fsDkbd@I zvyRTCNFet28iBaLuNpFxNb;$Mal1!gEm2MuuWNnp!&ic=o~|V%dt;HE6GhWTDMFJz zA4wdn$wwal06j2Oi~AH2@HF)|mdf^455}^anv>E9sX$6F2>$?jK_j2fSeJWS?Q*KL z1mN&KAsIh1aCMYe+^CGHKPvIPw@RjR^$Rd}jbW99WYp^wODM2+LN83ibM zL&P4jWPx8h!D%T7xMqOXZqus~S3^t8C&+SQu{M0(L_k279!0S*QxcAcd{vcij zDSDY5Ne9$hc;x+aqA!ILkQA)XyWK%g5UyoO5l(0xAgH7zGGIw$lhO-sC0!%w+Zun; zw}Q;5DJgbwjG&+ri4BpH?~~i#P}iI}ddG<#A^s{(+a0xdgt?(LBvURb6-Xq;sl#~= z90a!^B}9FF$G>ej7M7F}5TN2!$`X-)e>1AvtvJ%kTuBC}T6HcXItU}mlPV*MNpVR^ z6gV7bwv)REtt0@FN_|UGa;`nGqyi^R=~K#(NsP2c%W43m+L?9#07W)_asiC6u5s*n*CAhPIulUwKejZQdQ#<4 z+BG>YAs(gmJ2^>cAAFpSKDtH=ry5zWqc4;0%0F5y;Xmx<(t4?|J}MQ`)MoGj$9{9$ zofd641D-vA<5BrUc)fZQ>zo=~hJyM!i3KW3_&nregZlpfhK(=^QR*O)yk{63=|F*@ z_3QlCx#~S>MA%8=C$Q`@kbSgGw#ZQ69x={ICtlPY1tCYJ5@kG|p@D&qnEiBFfsiwh z4{v<_T3SJY8g-;=MHoQ9>dpblR+a;m91ub72Yh``wuqfI6g~E(C;)VTFbMV?^tA&W z!N55=_CGBw4s?)uQh+|V3c)<%^*YXz$RLlRNwx9?g z@D2|gA92osyoxi50EOA%u zPu;8G%auo5;q2T4-VJ{`V$a!yC#&G9uO(R^2@C~{ckVH!tgWWH*y;?w5%gf=4ymp` zEn023g@p*YL?10j?^WxJ1;AyM&%fbARkydZIO&9k4hhRrQa~T$ucFMplZ5@=?*Mjv zIR5}1{q-g>d?{(nRryl`hGH#}BlD$k>`U$7g$P(dAg8KQQVxGy{J)-#$J-0V(vauE zwVvfta#BA*rt8MA*2Je@aQ*4Scun%ikO#({bp4sQ9#$n(~D!O9=R%?NY4ZB!FI5z1b z@X5d*K0m`>hS6HmlhmpdBh{P`z(H3%#yzyx`PJe~hY!rr{{WWRt3ufMP&$W)`%Y)z zrYbv`Djy2^k`jHmKdzY7Uk)HGMweBc9a!p09#5Q<{W3Y!jjt5kwsOA;PoDg_ieYnr zTDqLf_*Lb%E>ys%?Iz>UoGwCeO-o0qCOhSq75W_|i@1B4XDukGqO8*mD+>6=l=B!L z`LKV-Qz2MBINm`4$k@l0#-a;Yo)E0*l7Z9VxT$X2@h1)MDVn@2Byg!L9;454P<{J$ z`D$>ZZdIpTLIg^rV5N+yx10?<`5fw@iQpGjDk^AZMOZNWVVkj$W)=0PE6yeM0A!`Y z=_D+u5zlOYu7W(u8ej1n0a(E3Jx4z>K6-^gF&ye&eMJD795{t9sVY~0(><}EPO_Zv z33IkoJqaH88d_(Ut*gWh>Ay4GCj=+vl0RSY(`I8}l>wB3bCK%)dLW#$LnLWXw(DH9 z%Uai|&Z$m~0yA*klPX-NLowjTWeRcU-BP$p5QM2pC)jJ29gVjo{h%LdG>yPw3-WfS zZmTWcQ{+0?5nH2CmKdY3yo?3Ul!lZM-=sQ!x^$cw1z4^jh!X*ue&~PB`hFGWz9D#1aCIv`Gwt zJwRt1XVug4(Iy)}S5VGWJw-&7AD8`xvJ7oliQb8_gPwAFj~V0V#)`+l&j1W(D(-XN z8eX75q!38fi8eqbKzsD@$Nlt4lazoklkx)|-Lyo(Ac{_dN+jBj1~LZ#m2xz#01k3U z#tA2lEI~6v+ABLsdC@Q2>GQnz-OSpYd-KeVsTBnR&;8B3LL$w4Qwf|4+Phe&IQFh?~-$~5X@>+5Qlz3g|jY&4Iy@a^Jcz=jr~@F)rg z;ZCR<>9chw64V{kuq3$PJuNqPLJC(MUxiK&Z9Jl1)@+cI4(+vN4v=#m@g@J|Y6Yfgn{w_X=9LFuPIT1)a@bw`i~6R6X6>+NpA?C}?gC%^phEHC=r%k^#?JytjHrFnp!po|R%?W@LE{w&Myz ztvZ0?OK68%bt(X*NF#y>Ac8m}8ao$FJg>S`krFmK?I6LSEtR%GaU@SOSyYq|3y2_N zKY;%LQ;lI$5wHrefN)Q6N7GMIrvca2)ZC>evIudAPErR~U_jS})1z^KkEk5ve*XZ^ zMMKI01tCqMN3N8ym@z>eNB|BK$Mw#MhG9lw$uD#vmK!d(N1c)t2=yGTq*ml8je)*Y2C)F8MR zYXJx#twTIZmzB4A?ES%Q+xv>EX0r76-^8%SG2z3ADmMU0Ab3HH#V42~ zY9dCWbvh|qK`O!E1Co+EbFXPY>gyu~M<8}c_V(A3vl1#uv_Y7q%_XuGf!0cfQUC+; z(S}-cf`o#92~v&{pO8rX{LY4=B2TTT2g;W>6=*)CAZG-ebsU}mA2W?8Vi#J~mR7Jm zJwyzsj^zA@{d5&Cp^rj^oJ9KNS^ogD>_3#gkOIzIIO6~UeY!rc>4b4cg5MGGC$BNL&Y*9wR-c#bd@AY4 z?eeJki}!N2_E>7J%}P2OSV>Hjsrb$T@>gw6Hm8Uiey)@=Tx;N^tp5P_2v%9iC%E<; z>Pr;BS-NNK*jyRpIqmYMSavS;tG{Hw1V)1+V4*7zsze`@$V+30pOCn8oan}OEr`<-{N&p@x#%V7bS;c{iAeb))x9jEL!`>iC{? z@QhDNNCP;?Bpm3>a85E34t+wG(M;LQV!iN$<)0^ZW0mu?oDuR!LFgJmVV5budhN6qOl>^|cpZbrkSF z7C`?1lzzsFHlQ#EB>GAI==tcW@Qkz~eSE2E013b(H)bk_x#!Fc@>T&taELxR6%m%9kXO2ttezrlwE;8vtf` zR{g*jz>$UFxSH`E?&X^srn`cYJI8Jm<6$Miq8ltcr72$4WMlvm6-@gMZQXp_6xs}1 zt-2)I>?JCNw%ekMUh&UA=VjF5ZptLK7krDYAR2qN=k?&O2Y7jG#qu5IXY#`bby^> zL8erZB<-}C&F>cRi?_dE!0r^wu%(r@>4FsF(h{t|0-6p@0L)h_Bk)O3%PuWIKogYABt?9W zx#%v(LrJoum*6*9Q_*g=l9=rw46W8%3Sb-_i9JrQkWj9UJie%(cdsLLUiQtdC2Tu`_ z1nVb}H9y2$d5>{rh`}*5prPe}qPuobxF<9rz}Q&vDLMiQl8~LIwsk|Fczm^eMzP^yG%!C8ZgP1ay_153`#kaTWP<5-RQyZWK}; z4w9_Ml?24LNU5Z`t^8MT*8*^V0|jvIA86Jf<@j&Bx3+TKNN2lsVYMkoyL72p zWoR2Gl+=ZEc%-yEF>viao z7GnhhWBJY$BqjcxST_7)Z*9}ITWz+K&Ci=}zjnf;+H_cS*CW$zC^1?M#dtF*lqK+% z+GL?`B!V-JpjDk)xTeD9!yU00Nm;kLxX84q8SapfqX$9~0#s%sf+j_Ck7N8R!Ms(# zJYkLT(NZq(+Yt4!OMwadLWI{xi-O&+j@klDq2+{V3dUf%Az*r zE1ST+3?}O|$poeW(2zGGdCguXKG4m`k76@eooU&x%uTe3i>tLROA#HB@Qu1wMoVN8 z;#5+cdR$2W1tjV(rg-b$yEcz9EzywNx-(9+zb#5al;Bj-$9UTlxWlk!)8AV(ZWSwl zTS}0Vl#!~6lmH(2ii~_GeXQ0WhyCZ?Dm~3bomH`J>yd9uL=J|l)W@l97?Iy)3Ox>a zi9(XL%7*|DaxiVBW9=)T_~X9pt%}*bxUW;K_*Xnz^8C0e|$FhCp3h?;pqX%8h&CDxn^U!iQM zE33FTKTHv)6m*0(G67i03G2v4cu!I9{{VeY_lb2ONHPp<%pRUwRVl!vDMPkMd zAgqOT6Vc`=Bqurc8gR8uON1m9bOIYH3H(DDI2vl=1_K^e-{ zq1NJn`uh&tX>w^CxV9RKl1HaJs{@RXJ^SgrsYX3=rs{hkgILi`aVb*J($mxkP6|$W zIpemb<2xAu1=~+6r8C5$%s`{W#UPhjI6?_k(IO+P5Dctp^ap zSj1U_qQ=BkS8ltwn_E*zsW&O8=vl&tQsKLU*q+_H{dH<=9qypr@tKJ^=3vx63RzNz zONzz^N&dX*)x;P}H&(+I!}SD71J?BggJKR@+#ELaLF9f~{AxAvBjTTEJU7}?E{pc* zg8@AYYMlWpOscI_a`$8G3{a{{At)PVAtirzYdd^QNe5c8NOqk-5W{_FXz=>Gt7wlV?yZl`GK5Of_^ z{{Sso@e8A7z_qvk0Pzn9{{WRIpS@pCeQy`RAAp^@@O5dsA%#Y}cW&T>hA&OTb|;Xo zpGu7~lG?JU@KB%$2l$c{khf0>LN3&yj;sUUzhE?Lhn&5*UE8~;&$w+L0i`!#w6f4? zy@ggNzz{Lq91b&`8;%AJMh-F+oRNS(>#E$Hj@3J?nK4CK2_+yCp857VD#}I($UNX+ z@%f#2W{rJqSdp-zErX1dfS?HHu>J9+j3H?Qto10Qf>JUyk_8V<&#kDubb*Wo0st!G z11H->TgOjH2O#G-{8}nNAP^{XCPgW106-@vfOyE##H3_)=}Ex{objcBn@>|oBvRJE z0OJFL(nrhpoq8ky3Y2hgc{m_SBYEM<7<87HnbMo z@f2kmWLbm)GLizd9O85|zTVl*!n$fSNYvWRdYcDxEs3-3nUxBiE^89tz(ll6sRm1G zbT-N=X-}B6g*u|LfS#txC7tKoD@nbk+xsfks=|*U66-fLVRm(`F7l+vkyei$nM!#} zc^}7=^jfl{x>3^GMnfe5JxnCUyvtVh>H$ruOA)4Eu0#+>%AFMoo^)m|nZ&V6G+QwV zZAmMI6r|{c!7DNdT1-azOx0YeT(IVS=Fi@2h?Hwh_7Ny;B$+PCa&f3U%hH``DO2hT zuE!kVmP1W+1tpmMb$)Rc6TDwvF$syy8HVu{{Y=|S0uxgShZ?&)}MXXW5Z%Oc_**0uMQ}b@Rr4v4#rO!i!sc}?BRMY8L^FUg1wq9v?^&MJ!2EuHd zvAn+yH6*3EZIv>70VY?QQVwwu)kN0r{y47j#am$S!60Kjd&g+#4ZX!RB*ruCN&kkZ3+_}-98-a~~8$n#ECO1i-t z6O1jb20Mn>vO?d7T$zYULv5Jlp?GEr(iJnMa!&+V;<$HZJWq|?cr9KQw$NLg&MDPC zl4MFuTdymL)Z|h?h17Mrei`?s=)9`?g=59l zqEsi~Vl_HaZQ8qS>OF;R?YxV=VsAP{)e*KV(`-wJ275A-4TR5k(1wxcp_1aB%96E0 zjyVZSXeZ+84Z(j_EgSo98gx?A?XK$O^*H8Sp&%(sBqBjjJ`kXSq7K8AbO&!QaMl;awpecq-J7gB z*4dU)_j+9m0W;o#kp;ZvNh&}QB&+dhi@{~Jbe+|v-nB-h+535JuNOVvb;WktqPkx~ z*ojSusYz_elOg3LAq@f$ggB)rdO^5V&C~w?W42!7?tIF;hT^eWt5hJvO<^)#Q?FGY zW}hBAX+ldyX;KLaQi_zN5E7BiOSHRI*s-_4ZrUokefCn=1by1nM5xF7Fr?|MsB|@W z{ukN1yW@-8V-I*H%HGZ8+yV&>v;fMH%STEUNzxG;s0z{;ziuI2smpoyURr$Gyc(Ev zt|aD`>Xu(&)1NeSsU=Asq!6H>2s+<4*#%g+==U{ma_H46wGQQ&^ETzNQd3bHjZh0I z6H(PMC4z#fP?|0r0H?r7Br6sk*{~Tym5sE(YkT7Q9Tu_U4Q_?#_mG|Pz( zI0;jPs3S7ZH5{^|u+*IeHR60RoD+fVu)GDtwCiYRBQ36AB?ZN(2`kMaQWfG-mS9PN zV)t9^2;1$yyz2COG9|aTlyh9GRAg2ytD&iIY0+M;OOH<-OogO*sY2XNPE>%B1`c(9 zcG~KTepyzP=EOgNk8@C1uOcj$a#%~~3rb1j*p5i-b+GX3<&=h0fR@soH<(UPG(3nP z`=hOMMfIU%1r-wEiT9B|IntC>_n&5Mii+q}t}c{_u!KFdbzoDr_8q z>jOE|&uZ3b73eYQRJz47sRBk-9z-gNCAR+n8PBCh=yCG)(}Q%>BYVMlaXrEiSHEvYq>iB zPMuHXP_NqFwKs1zuIy@bAOYvk)a|VwER`i#N>Y%VDJmT;ujkTp$tU#E54+RWzcr8w z{VGRManF9=O*nC-5(yf5_@6JG0hjWE60LoDG}@_A*+5b2=*Dt}$xs7~jA}iv#c8Od zDJV!MFD2X|DIYMSz~KIw(?0aJs3&T$SvaSHNE+2P+>7JG?5WjTLc6#Y6E#|V7baAw z(rfXXn@(x8<;A>`ui*rYpIJ|Bb35Z3#^tYQ-L)%U!$rtz(Ic&GPr4!@Xr;35Nb=%I zIP($@b+>?f1*@H2xKA0qyjt*kNiD4-GKe4`CQQj6nE3ccH&a5-Tl3*mYtg@wj8)_Bq~kAGAQK{=(NWOLr6KoU34L# zo}iZxexPCyAyYj{GE zpm0ud4JWMB*eI=MMH$LFQZoO>LD+qpT>5x9yO@}&p_HVt>_?8l$XZEg0x1RfT`gLmSyDs|FHzXxNmB!U#~A8S{-)gh>9G%4IyZ(kr2Q zcZR!$@2p(AsV19lRP9El&At9Qoogi(JEBE4QHp7B7=Bnlcs&86`OXiAZKaXcN|qC5 z9H2c;wWeIO-xC)lMcQ>OyOL!NnQ_3oE7DYyG#jS2*l`Gb_eugoY%HMkz1Gq~!POqb zDXSLL`rSf;5@9O_VgLd+I&*;%G&&i)R})?$;AkMcmdOOH6=f%Vv`TaU4N3P*D63m{ zY{*yCS^Lp>%cs$-IJaG9YHhY(ki|Z7a=IKTklhYHFod?-(PAk8d_u=}6N-nsyJtUc zD{$$pzj$0mt4gHZj?`h^aw$_OaLidVqQ;iP@)lZKQLWaT_*Rrp;OWLA0*pnlQXN~W zI{}>lkC-Iul%2m8v}^+Pi+hsFS!n=*qECu4__|2tx5raa4bvudE{|GzpvLS%eVHOO znGRgk!$w4CPbH?h-SY~f#tmAI;hTvM+E#Eu9;n*JkeWhaECyeOMTe7V5=;pFo)2iokVzGG)RHS>9p*hdTMhniWTo_rr_QuE=uhwwo@u@ z*g}>R-R?c8EulUDai)`O6iVC9X$kT9*wYDr*BWLHkV&W_?Cofb5xaFmi6iY zc}foeN?K6qZ75pO914@@S~^O!>$9FSwc%pk6U8@fG#pQSg}wojsS8A+W=ckfY{Yx} zC$;Xwu@2R+JDh*Bj4g+sVb8I=&7H|`Ag3x&fE>qt<_;y z>5$uMEIMQd<<})Zp9yS4Q;L)2G=qkhX9uk5&kze;)w={ZdGekm=lz_5&WBYPD{#9LZ6U@Bdsba3Q1Dc)BsjbZX<9E z6Ar|1LW_qKl(MMst~3y+Uo)!7B>w#qHn>~!1IiK}AmhV3CwRFyid8BC=JQ{sD!wCPeEbT!ttf)vu$ z3|9={{66J}ZypYo((A!4HMaY=zI`#~Z@)0=hYkm^cQ;Zj+QvE`*8 zCALW=Ly@IBVZC1zaP7612xfmHs9J#0C{H`K zW$bxzkxxZE2cIx4F5}Wh8W!g3>>R05*Eet~EUr__B-OUTs+$0mfR03w(36wZgpvY# zD>~g=HNadqZ-U#iaO+73fC4hW5fy4Se*3c|)9yB{YJ~!+9-%HIRJBN=e`kZfSD2-|`)(|(uccfm2LKFl zonMa--X`hP?+rUgNTqM)w)YdgWQ)`WTRDMrD3^drWF!p=fr-uG(0i&3W6viEYVG?q7Zf2u3QROf zFjh$(5;lo3^Q}Qk-8!PHm3pHS44REbr1Q^K)m@zJQc6_v){^vv9=8b3b>!ro8mD-R z-f9JE9YWFETgHJV6A46TpB|k1gro^1B`Y9S4S{Gb8Il{hXafalA+-ofdiCl ztyhzHggkFUecOleej_kokahUcdM@eQwHlpHeP#FR)fot4OsUmL#<4DAj-g9+)w;5B zrKw6$9>o0fn@zL+G54ooYf-KZtg1I|)tqe7I@)0qqd3Hcbhtc)l8ll8>cGYc_tP8R z4Q}y{?ZrS58B9i4f|%M4pp8W>7~o8&E?`7!%ov%TzfCIHQ@+!up22tgV1P{V7jQ0fT^B3)=@p9C4Hswyxkn&keUUa)rmp=#t%uz~# zB=VwvKmg-W5Aa`hsA~1mKkEnQm>ybI5r|o@!tI(gjzoP3G#>2xY&={}iCKY1Rgq8s z0C$SrI;9HH%#?IS3+PG7=utgNIag7}0b{~UCB(UUwL1}_j-Q8;KnG*LT6nBUEFh-Iu#Yh$ z>*h(1?Nx4xx4X}}^X0#6TDOhf{qbJ=rBYzhrB$DuEy5JzOL-|$*UGxp)_K7s>!x1} zpJhJ4>}49)%e@^4Sqcc16`}vZhwri}M(4 zbcNvLsXvxG4HMYg{mR@$P^xdJ&W4;cTsd0OJLgmHI5DmoP07{PNC&AJexFK)Lt_ia zyR_)rx{rNW7m5NDa1MU~BaD3X+^8TBtO46N9BQC|0g>x!vmYv{QM1y3a7vGg4>;5Sx zsiKUbM126xdt>v_7W?4#@18jS08J4f=}0OwwGwF{CqI@nxumNEjydBQ14{rMy$Ts4 zdQ{VD!6jHx?ezZuEh|DmPb83&-yQz|e=Qjx^YZ;DN+NajwP)(|1CfsT2PFPlqaSEx z;HzW9MbiWC;A}-Wbt;5n+%w zT1WlDxg+s+a8+q`O#;=G{jsMq?Bga?GP77_rA$k(W3>Y<1g%6Vr;SZ1Y$Xk}+kvzN z5bBIM;ELV;(fEzBknCBNDE9P8cRSE&?KbSmpA8jiOHDSkDJojj;zCkVK~@G1c)a0I z#{}NK-dxH{rgeg2D4F*Fecbn?ac#%ixZ>ZtDIjD&b_hw8mCuR}$61Z^u8cQcl*N(Z z_TYtAsL*LQ6X>^W%ZgZ>o3iV5xbHVosWVrF9UToyieN31O^Vq{Q5``?CH10;(Ckb8 zJbECHMojpu(wl)IqbF?~@+3)`hzl%7c@HEaSCrh97TM`_Xm!8|TgnL5ELfwtO}Y}3 z2_O1y2-QX-F(;n8^c%%q@XNMZZQF+ez$-9Hf=mPf8DPw2(C&BCgHEeAY&Vi(=@be@ zkwvLZqs8j0sdiM_D(UaN_hSyQUvg7zGQOv(MbJWDSww}U3JPSUvvb+it0L)#Z0s0MDFM`ht)IDQj$bahM7#whvpUy;59ACy_~= z_l1}CRVuRDm`cvgf-5UF-tDH18FtuSr- z<>|;~OsLU4Ovh3%w*uSncq1_)?*(3T*)7JUQYmYts*6jmuB|<} zG9)tJ!+d*g1(yE+gy%%0D2|hX!n3U7C6@Rj5O(QArzWz36{_1vG6;ZXHyfYn6}tNd zw7kXpZNRN8;m1R+CfA-<-3OCzE{)J=u2oFDbG|DLxE4GT=vtgRpM6=n$&3vMIpIN zt+LbTS4j(PwPfR{d3^eNgN<|76^0Xu+A}a(N)eMXmm@ZXCsc_W%E2TPyjRzr#;#m@ zgz=mEYjhUwoq2y~LoG6i4J1R!3JOt4(I>mg6A9~94|T4%6kB?qZbqofh^o!$_j+1j zNoJub3_vlQjUB|{O+4z*`(U)D$_ZMDN7iFa-e<38<5^SG;fi%Kpc#6(;6XbUJ{*C zZuOrI@ZWvNU9Tb)e%^BHo+))|E?SFQg%Q%on9Gl!;Kc}SJyN6)gyW92VLGi?SaBZ@ zaRw`oac%zqdYA!(_i9R8Xu&BuZWe-0s#3I#U>RP{-^F<1`8+*?-L&os^Q(CbwiDhk zw$zrAlCovY?6`<l9Z{{6(^|;tc`4E!T!MbWZs+8a_;-beJ(Ak+d2#JDRz~wx0K4g8i98$ zsE_<##7RK&P^1MxTcs#Kc11}<1h$ZsKF7F^i?ALJa~8qu#l^@4e`l2y%%(vojLITO zN=};sLTabRyf*E}9pcKvl5ZP8Wt%qEP==l`0>feHOK55qS}UIWMJg2GqSyAycyHSc z-HAc4T(z(JexFsMMQd;(!bDZlP|Aeq4#D0&g?XqAsY}WZKmiHWD}rosZY1M_gyZf&M=t$d34*8^R1*>buxu7b&CEEft{6$1Y;5g%{Y2-NP@NlHI zFkC6Za#T*PZsl(`hN}z0_V`q<>u%DnBI4Uhjj6V@>p~%;UbZ#MRe6>ow^(IC3lgKm zhS+j23uP#f=;}~W3AynPXIQ@qV;FPlbp#Zt}E>4 z7grJRrx0+xnpTHiLvDA;PG-<8!rdr%$AvB=DJU{!+<*;19GTvWxT!Vzf@%#R$<4SU z%w|kc*2Wt_=~HL$@UQ_K`c9;Mh1+L0X1iRa%a9w;Jj8+2 zr2(IAJL{z}oAHC;PTV0Oc{T@0G7}TH*13i2C+;ys+uUYEnLi+UMx&oP-OkeembIx{ zHMe`4O}OS=6T0 zM$_+QzirWN>a9k=kwID=koiNm5-aOwD2mdgIQzxK@D!|tV>sgj8t3-7j^`M}&LotC zt)i$%*F_RCsPfH_6B}}xn7S6WOeW0EMTjR!l*Xf$lea!~qAkh$7Q9(o7Yyoc3v27Q zT_MSe`>M5ON~cz%KOJjdmZ#FGEiJX+B$SbW58^s(L;DTp@ zobnPfL2;oeWh)?OpmiQc&s!qT8L(BNUCh4l=%nN(J;Z27omC%9JX&?uvTl`U)a|-r zLGmK0)my^;{cXK!twOkV?)rmJhVg1?U9V9rBg!goK4+8CQ^6@vI3R*JBUXRIUx4ov zo+NJNTHAGD)(t|DO50Ny~^SklvQsA2 zvRNf-LYBM!5lIOhK}Q6fEc#M0l6!zT(dNFxj~T?4UZU;vB$iO8U2^-4(hB(~^rYoT z$2j9S!B&K%D=3D z9U=M(Q6M9rCHBEAB~K`$vxEXMt4p)rVot&Bx-E+C;#KPVlXY7a zr>gU!p_I|>I?qu8ELY;It;ICh0ZPKsR-$r3c-4CT;~H+!a*tOWSb(9}g|e5PXOu&ads4vm1Z2^aE<`-JL?SC=n*RJrw#JF&U>H zkb0hQsCty8agt6j0PFzP8l*U6-P@mJwolTlnDZbzZ1>^|0( zaFmaY1gMW*>hc;1ONlAQfAbuIb*BFSwWj4u)V-P8q)LLv-xmw_1wj=mu%bXLv>J+^ zI!*~oWIX=>Sx!~b6_2PdKnZd z7G-*LIEh?IlTj&Xc==(8vr_A_QimQYBdGb#gs`aAR`D&n77c;Dduv*UQ5(+^neMlqCMm76(iE*aXm9$9-laQy9VmvS)!TFw0 zEo|Rfvca~wwpjs6Gn|zTKstqul7&ExG}o)%&8BXv?7Y>-PuczCv@XlOUglbGAYXB9 zxtC342%IWaIP&8mrAt~w*3h=yKxLmX<)^5jk*Y&>ZtW4fpLXuqRQn=&>l9foQz*BE zkz1P*)s;F$VtZ24B`&b3M+$_NQ6AD43Wxw`beK?$ zIr$lz;qZs=6z#HHDM(1kqDo0p5=c^kD%24g#CeITd(}FO-5NDIpK$GsRZm5OPgO1Z zb^CqxjEU0~KoKtZOn96iOd8lch_u(`L_@Sqk*l`Ekyo7L9l-mR zQ>=ND9(9yQ0AzVBI)TYq4Kx##1@-*1Y|8ZybL{3T5NUL?SwxG9i%&CSRuUUSZY_qK zX(i4=)Yu4kdct}4BUfEuX>#KZd4^cXg4uCRD0s82At0digRtrjg1(4geWiVu2;!VK z7R7JedB(0qt-al;X-#)5El!j?n9Lxgl_^PuYMob3z0$9?k!{y1HLH0Ris#fPM~_ja z#$q)=*v&f2vSd9fOlDUdmZ!R=n`9+kW1UD*DRpY+?{}3t_PVXe^!KgF6lv^4it=d^ zQ9_|G#M#Y;;jPyILrY*qQeANh^4n4fZAwZLu8i!-wYK{&sZs(RSjv$J9omSHB}9>^ z1~U+%0MHMWKgB)$tFAe3+&Y%pd4`vrWQ8m(0n!K=M~vi7RV<|;Imu8Yn(;kN@RLQf zAde4%2;79}~+9O>>!u&$KH;wTdj?3-CLDql` zwBptnZRXa8nnK<=l)mlG!sLoUkUS9WURmWY>F+ls9TP%Y}63AZSa*ln58 z7dB+p9C@Y?u*+dlT6v|Ypdn-&oPi2%9cq_suF;KW%eLs(2)5Gg_MNu!>9(n=Dr=6l za~tSMaM zOFqzfDXLhsxN)cyD!s`n{g_tWMha5`qPlx71$m`7=~IbyDL~03&Xdn76Ay707V#Hp zHcxSLjv~=7=4b?DhVrSx6Q{KX6{+zN&{s8JI7OEYa90>u@c2M+t5%UIP*BdMJGCiA zGaxvSw4Hzwoy}4$jg#U2KHhF}{77vs_guS`@UFA97XH}W(Batfp7>`H!*$o>ytl(1 zca`S+IO_6}QjV1?sWOF1o43?QtFdT1ak7*O#l^RgWz?=MjdJOUY*D<}%QC2Ija6}I zdH(=8_SECd65D19QkAGFdEJntW3-jtV_)_W=>yLKVNNCf_O5&}XcAWWA zlY&$g(gttcI7;&0c9zuqC(aP1t29Po-jYtRW|thL9N?v=6;`N+U(u* zIH^c#ts;Ar!ut8^=toI7$sC?=K6<(E-wt15X$fH^w1Fi`Ny<+kH3aLg!m8N4>lWFU zcBv;o5=L%Xo!|je7RGqtviDx)O|Ns%Vp%?PCCO^3SF5)5E%zJ8@JU!0QO;5id}{sE zYWDp}rro5~X;Ya$@Rb5(*X%w7+AWOc5q^%C2C6rqE_SlyND@;0$Mjp2t{TZ9ONcJwX2e%5(ba()F@F%p8p) z<|-8`Ayf`qETsh`o}ubjU=lEJPrq$O)kLhOLYz}dLX*(YLP^d}J!JchYThVlB>^p+ zAkWM9-mUyRvR(0mI!DZJ@Th*UBDUkLDL^)c%bjZ&9Q%{<u~_W9#l?+e53Z=Vd>q?13jZDidyZExS)C;=5icR$4vr!^v%X-8ai zFDMfhLZqDMB_ME;et9R4ZAV)zYu2lE=dRkLPNk;0mWN!*i|((#Pr9*^N%@^^;eD}!85ubQoab55%Cqw0jsVe84uqdtP>G*)esNd>IOCr9 z&bj9MM(bwq@kJWlW%?r1Wmrh3GTnMPnN1QWG`}?nM_Lkx&?+pxhuvBb&%>4EsVPZk zeypLjlb|H>AAwx`@$su)1hV_s;!|veEx?B$AWF%|M}$GwUYb`j8}D&9ac-U0Rcujw zpT6ZSq}y=~HjB`Q6w_uqIXx|ur9B{(93Dv|lYIOFRx38O9)lu<7J#a?R`s8ErTVRD zie*+JX)p|Ek3YQ~FB(}6PLfde+g|wt~>i+=52~#`~Zo*Wwm~U-VAtidpnna)R zRZKU#yW`8p-ZSEJRSd^M6SR$E&aFMsy8G38*Pzy`6&r%4;$>8zMKo>AUqe*onzP>y zJ{5+G&5(%2)=-SB6!j$rKnam*kvF!-a#Qr`)$?(#&b1n@R<3(LaN|_yHZ2OKsY)=P zlKPtsH-xnr=&{0&ogw@z652%pryp?uq5l97k7)!>l1}Gn_)TmzvxHj^$xCGfD^)Z^ zLX;qo3XGiw^RHU9)_uW0X6<EK4davTFOMW_|filmOE@LPs1=e4|1R;*`RcwO8f4&_lLHqC_hy5-CX2s-4|T&mFA z_pPrYpr-!!*^7bKB{xBKJUz6NMX%GNKOM%OskZlDN>vfJnp%3&R12;8R8LNx&R-OZ z%XBFdDD~yJK(lQK^oA$C#FieCx95C18tW}LAdZ)s3wdCYlq{7eoK&uFEnI!8WV$mD z(Ui7PAsLiOPP**_eSP)VcvlQ@D;QnYHG6A!+%_-K7gr73DGGn=?4c-BjL2N9nM#ug zl2a+DPsDcpQMR?HYP@aQ#m2|>7OPIBH&3q9BvK;FmmV}3ZNy=0t#Fx3P6*|a6tW$0 zL2D}^Iz8LUolfADGNUgxh^TRC0Oby3dlIu zK=yQ(S;3sXY!ak`l#r~)#z0cjqz?*)QLaz`>t8Yd0E-6GZ;7*qxatcxF1GGahZ}&> zT*}(}!cK1cy)G2x4lI@HA_i_HxWx(_`g=7BbxBh91V>d|I+=6oY`4}5oJv-tGTTlm zNlpS(=TnL$L#G=+-#-mi`&QAn_X3wvqRQLbevfL|H1}Y&B~>S#lTM~glH=hmc`f;p zs`3<%F?~u-bJ-x+c&`!{7WS!l6sbYNBt%DxEJrPY=q7d7QT7dnqT7gWuM%@1C5Ffb zNiHo7g-+2v*Eu>3D&f-Ub*Ko4+4$eP=TqB<0jH7{^oanZDYPIHl_V{^q;~57`mz9e z{Vq*rnGu&IKN_F+su4OlVU@SfnxGPqgU6T(h)+8C{+Dp%agDo=EGFG6 zZ#weGOaYl$M9dvvPnCXyIDlgq*JQZWw+sE|DDyWdw?}vqqUyWEHjt$hf ze8JSG5T2pEw#6`fI?1Gxg)6x3UdUA1j)4vhBRL8^+EgGYf@|T22(xEz$2aWpQzGH} zL|+?=ab%sG*kIZk(qR8MHJOnBK6oAZd%^Cj3-LyGL%xh^F4VcTxJeLk|_k zLKuj(bRk7bT8~@E8BtO6l1V2z)cB@3jpLkkg>e1xN|>|`DWwEtB`R%8Ik_3iHH{9E zHLk?r>?4Gl?01QKL$G01_cy?|a?y28pgC+y2~rA@GRPq1Nhyw`8mn-SAE_7HKf#Kn zI0M=gj=Md#`^g(L&(Beu4e0PwyB z*9kYo#kj-`$xd*$1gGsuY^6xekc@^sos93TY0e|!3{}n|e*#mpXc{CSp&Aiy-bhwl zz~>V=hfTDtXw~IB^NJ;8pOTMIKbD%xQi{EO^Mzn%`fH(W5E94{T7~szbdyV?NO6^V zN`V9p+>hTHe9^C4l8&S~O|4a66#9q3&vrQyW+Q1bxvr#5$YHml6a zicgU~RXHE6-tVm=eB*v+_Dsj|5^tcbp8kF7pKzGogK+T|bNd!?)l_vuP zkI&y#RbZXmwP^c|qxwR;BW;10_X?a%<+H>)c)}LGut7U-l!^D9X`@*2)xUKB;1>)i zVZc&MI#VsE@$7JWX^RWS2KLj@F}2*woT+1>Mr3q68SnTqFrMV`rf+bDA94x2Qr5G~ zsQGCE0G?u=F^rpN7Of#E=o7xtsgqH?&Az*{c9pd{d^2m91gGjwpE^laEsnk$5=Z1Jda^t$ zq9d);F6YDUH`1d5GKyIl=L>VW?b$f|^<$yYDfFo6jRrF@*k!Q82x$Sd4w1kBdkkw^ zW7zYU%jAg-Ct>o}-hFec_6>tIg)jlt!@2Y6LL`zr%%mQbV>lnn{B+W&lz$MU5D&~` z56e*P4P$ziS?N_GI#bdVag+V*;C{M0A2|phj3f|oocyt>;!*;1shJQXfAL0H&Tv!I zZ~#aE5%tkVQjkVQa54^lXWvTz&xh93l17A4MlsY4;el5S)`H&u^AZe`5hGi zg9K32dTT{l00MGzi~>$hm7tubI6PywZ51OyKDME#o#{(z&us8}fzRpk)^vb4I2jr5 zqJ-%nY5piAq=*%P#Gax`fJQKQ?aw6VT%Y)fyD9gk_IRA!DxCO#14yq=k4$o_5$9>m zwM~sFZFD-&DqG8X6b71P6s2BgTGSBP3S)>BAOP6b3`XS21PRi0jeeDK;G1;6d2r&H z?*dvUE^y!CNRXq`Qvyn(C>qy2b=8;ZRR`6Tq&#DX)T8U?JcG}^ajoKbJlUPWt8KI; z+7{#s#T1(&6Y?l^+gQkmDm8c9o`fcPXC*DNw&60&f&q^sEe@(W9=f+|r#q<{`$(R$ zC+nn1o>j4~(S%~|2c5Xgq9a%{x`gFi_(>pXu_N6o?=`5-``WTM;Wf+EiL`n>64jyY z)j2A)+=Vu)78F#*JjS=WnDnM()frUV zor=0isWCD3gT+#^mLwaNAxn5loJ7Y-Qr9nrH%o2Ti3&oBwHce%XKB~nzOzy|3z=+H zXhUPVl z<*c?8f~GoyX$eqL6Vd_X97f9wVOC3Zv*L9oP!zO`s8lT}3J?J~Vj@XY5^Jh|hIa8Q zoPUX%!j#r=Xj<;et+JO=?ZaVhcdp3Il^x(9gW$>_6EWS}xs>aw?Vk?4ZPum5w&hhI zQKp*onk4txex|Q6$qcy}N)9bivQWOF&;hZ4fCRna@}CNQFL-VbhIzPDi*+wUVdS+@ zeB&0kpN_TkHxsqQ zI9IW2hTFYEj6CZ>w4osx6z%JIzVQXXq{@f@HT$` zb2B8C-B?mm+ZY5h)ic>`2n)9vDBg%59pS^bh zHA{`bYs-+;I-Z5o5gGpgiEXZ*Db}OBq0^G2r~;6s5vw7yJ|-_YF)wM<`1U$b%=r@} zM!GH08R)PXX{OORvnQvcszpVH+EFPBUV1?Z;PO7+bXwOLar{AJ??Y>Ki*80We^h}Wi-C6yVMG8 z!%MnrduOwAs*b>Pu*&V$CMM#M7z7t(t|X%4ZWj`Qr(8+_QCS%()QjQz{iM~m0-1Y6 z*_s6|gKborcB5$ReJypFRMQ3{vm{gyB}+g{t|TqewBZONu~`7ru}dx@y}<3h*z$*W z-Kj9JnQTI&lkC8ek^v?MAS%S3GVI?0?GG5Sv3NhXL4+J0;~j?FDP>*5jDbmg<(==?aS;OY#tW)g?oz;)0-t$SstRN=i~L z4&jHcG28AW#R8V5?8$7bg%C_6k>WAoSp*T!VadO2{C{JFc5v4RaOwkeiMaOA2+F8ANX$ls(H;W6@AF%K4nF??kde|-vW}jm9Ltx{Rg%=n0$Cz7iR13Ccs)&;@Xn@dhOL#Q*s;; zBedIehLTm2$v&iv;~6KvI=$fBK)VhP!dOuuwBI@uBUOOtbP?nVhr~o_HK?&1Fh9nZ zfW~8QAd{kHjGD*0*@bS8qaCQ2vt2yXRr_419c=+gnCnOT21CHL{cGME>E%Z2~ zEv2Dg;YnIgQ2FblFl=iN#Vv!@Ymhe_#@mY4n4T4PhP{^HcuvG>54ir6R+np4DsGmk z)cJE9N_|L+8B!LJo-z^+q)0nAxN{PPMzXG#lBM*5-3C&DKOjOry|kPBZo<*d<>yir z(2x(yeJHj#J@v{1scl6aV^5yc@PXmqc4`i?)NQ`I7Pp7+!sxFu6^`erNdp>@8Sq!X z52BgnA;P&+SYbY{LU~^&o0*TJa*e;f|MaB8Ab^i8rN#R zyS`X*;bla1HLxv^!)OU%01qMVraetwppJ$5NK#rs>RQR;2iSbM(-x+%9dWj?hLlIA zlza9*`h3ZP6C2i6bu`hE=SWa01e}mg4iCOG(x@DQ5<8w$eU6@^dT75b>Zvf4^duA~ z2LT}?x3-M4{lTAXV4m3b&a1&b8k;-Mu2fz)>M2h-91x#T;~x4h+kGknf$7NrX9MJY zj+6qXyn2c$91d^*!5k5QKDsji$1dUzeiK*t@lxtwsI zIL0t}$A9{0$w<(Rsk!KDIqBr&cJ4-d>)%)jI2a&c6P`41CrU(`WbQr0i%P@1u6Ijg_z5)62*IGmr&BV1%|)$2Z$vX{KpD^&=NUR6gPn*mWohNUW8#HGhtS4x5s zv{PK_c|{6QM?!Lxtm&ef4`K|kM1rIOI?BGD7(ZIL@W4ZOZXRk645ykDUqM^noMM-b3iuafL;ho2#Br{T}p-PjTB;Zz}6 z8=L*6teF>OS~X_>08L4htu&u4>T3MDWN_*^DhW!RLR6#BuxcUat&$3wc{+`OBXkMd zZ8znq<)yj1d?M{>L46>Y_JR)OI(tbv6%n`LH3aWRiVKSO+pEffTD9vH4rmipTv*LpgdVW1RL_YhTP)1760bM z^C=NmEE$`7OI2Dn`$Bv{DsOoWf(DB-VDp7S|w@~L>MUWC3Lx@fRY?HX%rnL}_zOZQ2d&cva&8*EnHFi~rTT19u75q|X zJYz?CFzQoij}gF?U^x0RvXmt`#}nJ3cGec)l$GXJfkb8iBgB!EfFpFCaa~3HHQoJ< zz9q+9v$wcuvuc8;n$~zRArDiwwo=n6v z%AvHLf?D|Ag}T#=Km;`%DtjKF5%|u#xoYh^N~cHt_;-a=Yap&jZ0Nm20-q2b+02B`Sey{R{C{c+q=RSKgP zkxzq6gvB;WRZ5ujW_p&G?T4KRY`FW1Er%8A>m=n$8ljY%@+zt>)st#QtR^Dl&-hu8 z*6&K6X>GLg?zFI_c?6+JNx(i>N#KxrUx2NgxUgNymOHeJpll3{PUlT@5_TGxuaEx# z#ZPl%ieZ>TZK*dQ3R24ByaW`4p<^mQT0%~53S_A0HmvsD(;5};x3w8fN4I6$H)J}j z)VT@P7ctbzWoUV9D})503CJfL6UP8w9m3q2if?;@_J$^hg1>0?kEvX@8AcaC-5}Rvx95O>fPLU-9l5-Q#je5pjRYJODH+`a9TDBo7x+w`v zh);R|NXVHGAP5I-&gRJMt*f}QY#LnZwd(?#ws37)wPM?~B3kjk-Ninjn9^g&mh_h; zx?OqID-IBdd2TC<{yO)$|M~NFcw|ByFiAbPNs(DqFxA&LcY_2$I6$QnP(xf&z znhH~D^A-nSlqCrb_%6-syh|3fv~RobZQDc~!W6YAmsP5SIH-((cwvls0Ds0Ak@tRckCLSB-N>RTU9C@G32pYtp5OJ zYr=~SYZ>z0lkg#y)N%+*ib2AG!Oox3_or_zZNIA0ZEJ#)Rj93>GFwnft1w#gkc7DR zQWMaF*k_J(d`GjKcMdIGx~7XMSSlf7Y|)@l1oEy~wBr0S^=f6bIF*sHO!AnNsDbf; zT`>Kc{x9i%9w-&{J#VV1PQR|$w92h*G^(XsTa7`dA#FHf)8oGHlf_u)kT_ZI$>pX5{G3>n(3V>K>&m$3Q+W?l5jhnPYf-f(tN+d5&}|@fHB6l zCJ5ENx{L0sJF5~@K$Ex2+%^$ZyhiE!ryz`|PJtp|d!+pQ>+045k`DvF8Ob^yCQ3&I zq@;CcE*_pS-2VVwJ-)bvD8`>4G!)6E^C&^49YxhXRN53-DkUlD^#TYaartU8sY@zK z*i!IXK2nxf)TaqJ{73cUT2mi!Mav%l#-RJ%PIr| zfK{AeW0HNpo}+0`E2GR>QUVXDIKq|OasC>Iw?QCJt*Z3Ugo1r-ObL#wFD*m`sFIe` z**QD``V*!!{GhE}AOd=b&Q3Kj%0y{HSv;wqEqGFZ2LyZj5vJ8aSW18#tK>P;w1cE= z{wbQ&4ONKE0+4f+cgJ(0(Z{bH3c^4cAPoIK@2c|B;yBwImdJK8Y&aEZ753A(!}HB2Tyzs zbgiWH@IWN}a8Ku>C9yCEtte$uB9veOoDY^j&-B-hFgW9@InNl;k_N-p)QJGqG4c6$ zCeZM&x)QwJhwE?}wPOURf=t)YhdsObNq1a-c&)6+qHUd{Z#Pt(<;;@mq*GTNA&6!y zcH1d>K~k2brRkFrmQ&K(X;*HwDCsz3X?uySn^vHyBgkb6SL?Q#$1N(^X5hEroK5nk zr06q)-e{PXxdJoz$^0e{#Q?gu(=+DW_6^>f0q@ zNgV`RIM5-?MTDum#V99LL<5+Z5+`n*JmQPO$aDEyfwe|=5|ILAkOw&f-=ut{7lm8u z;oVs`jb*Ak_d8o_uyZXNX58DPOrg~$wJLO&FxifYF1Uj+#6If8rMI4^5<0Nb#)MdY zD<(0y79F(J3aL<}*>J1-U2a-7h4m`pyyvOMDoFUr@m8Xl^(IVZtEe`VgoG62xy5LA zt*x>eSfA-Lu5E^gXxCnqc5@C(uUxRAL2PWKf<&c9GLC>G$s0Sav4D1>=_6p~t z$J*B;)~dHPHa!}>N4m`+dA2$by{7(P&JAn4MCStZqq;w6g1}E!(x|H2E{$ zTb1DHwF7FM9T;)4(~#x3;>)4dQchHyVVt815@P#F%GR9<*;+38k2}+a`l|CfM1cZSM zc!uz|G(Bv?X7RQaE~dbg;ZzB5WXv)?5ngK8d1-Y@X;LJi*E&*#d=kTG!AUi?sk0XD z-Ozsj0BO2y=@sQjfl;C+u*F(s2jSBMs$|G7z+vc!Q;(JzTZ`&*%X6fW>elq&r!DXv z6>9eBVMts+A~h?3Ab}@Q0zrXXCEKfay{LAlb7^mC<4(3!I;DCgptUJVLGb$olAOaa z2`5o8g_{FyYTKi1T$O5FajIkr)H4eG(jwwXSDa_<-M*qnu$}Bx=I$ z4Cd;$HNNt^w%w>a^=4F7+wvKR?AeY=bqH_!s6v!bg!?549@>EI2N7=T5VC26zzJH2 zjl3iX)b-cgD`Ect4V)Emg5VhDA$JN(uG+MP0%k+WQi6d3PKhA-s;tz=(P7(^X>O&+ zQfE`sO_MFQOKnx7qBwC(ImQ&8q$ePLx|OX2MyFG$li{@UH7T&8$el6bRN~SZ0V!;p zbf5!(5CA;)*Cyh3_ld#FNOA*;T2%+yNL1x8bpV9O*ua|lr-SfT3vtJ;Vh^wsSW9b6 z>Xfa<(iEUMA8HQ%B~^6Xs#V20rvdllO$e}iS=eGaN|K@o*GotzRM3SsR@xK zkfn6E$`FT(*iQFOKf<^CHEJ5TA8b%dVW%`n2}}@FBmxr#PUMXwiupaqJ&N{+!hCyu zi{IO}?SoHui*c2M1x^E_WhGFPGLj=IRCW~c*u!9^*}QIhR;x;>R~^}fKe+5rskK{5 zBpRCMy&Z-Y#KIbJW;<;^m;<1t)smIEl_@$HxDivGxYZ|VPR?Sanbm2G$fPjq(+Lf{ z+kl4sVG2WwO4P6JDOuw>k?hrgo-uJMJ|LDxiqEn@8vg)M2?boF_;l32?N;ja{{Rlx z7k3S%IiI=N0RYOgNCE~@7BZ3eeXVL)wJ%-wrEQgOYqt9R-AZQM-qnAHuUVEOm0@Vy z^*3Wjh~i(56$+0gQ;dl1DGMrDKx`D?jXA9?uD*7joqVSB+xwQw@^0I@wrlVaEfDaX39aAzJ7MW_I?(rQY{e=%PyQt<YjNkn8dkW(SV(ZJ2q#~b)a8#UEg&`mmC~L@57Up(W4?(- zoYM{*DD*8kAdGZ<0Pm~qo#Gn^CzOABqukr9l}A7AN}Zj7{4kF-(}eo45^?yHPhdaG zP3nZTIG~u$2Rc`Ux>Rs*ISJ$XkDiH(UX`*?f&noa^E#98A6oVwY&*cUj|kuP_|qzF zMKG5w=i~(rui-XHQc=bZ6Wv6gbMhLDYV#eC&_x<+P7)a;us~&(6>y;pWCD;o{d3z!nn=hXWa9v5f%MTr4IsqD7GVGY zqDFIo5&*~R{Pan&gpvU5lg9`0(NdB~6fHL!(#FO};{dDYfsHCkaoC=DKH%u6OmDRy zoM2OSPe35tT+FiMsR&qzv1$Qb17 zq-ZwfV*c>$QLuK_k3pl}FJ6}YwzO5Mv2DAWvmT2SDjiCv9-C*AU`aN1LEfgAg^sTA|^%nP~+ncKjB}Mitx0Mc@w;YsW%JPJIQ&FTa%0sb>k4j1~ z0WPZ#TWe!3O0@f*eB)S`-JP}6Ccg38`*O{vF5cX_gj(ARZJDtuF1)6rA`3F5$(JE* zAxc+X2S^Ll3AYO=akktUKqREhX#ki&XTLBsI?w1m_Xk~a%`V)(;c4P>0}!m>1e4V% zNg#;_@o6;~_>;WtP1fE^YIUA$oy@eYjkbYrQfAzDBBi}ORQe31Ns`jig1Ij>Hll@q z0S`!w(DKxRywqErhzwDLbZzChhZS&4p8ZCZU091!VTlu5OTAwRjHR}zg*`1R)Rh$$ zf}Kba?kP&dye_zrI~3`^!e^h5K6Pfo*5#fU%MQAvC?-fL&>tBhGi)-RQMFS!Zpp4z z>FiOe^;JC@prYL(qS9J6^N4k8c@4kRLeN*x>B3WwJfI|m0(P0S)`3--N~qnjH#pVI zWT-uBT`7kh#H>nETueVbu-RWiKy0L}rL`3V^j?yWzz{GS$L#RZl43xa<%W)lOX|RRGeVXgJZA_?>;@s=) zM!M=oQ?Fg7D`VJV+%)eP;`TVI8)>%{Y*m>c1*NtUxJk&8JHDyOVs|mDP(~Z%n zQq5hDjH60%L_`ige~9ct>e81Zx>SId6tn~_Ae+7wiCNp(Gh>LQK_VtnNRVV7`c9zr z6|DI4gYgVo9>jR3h97B3g%kujfV3wd3QSI!&@w4J(xc>RWtFn@%Ohs?o~>M?yB7AU z)hjaVMv+c#O-`6%O=3H7>kw>DGNdKU2~~Q0fB^&q0UJnsl`{{%yEP|*hxY_NGT>k%7du>tib6pR}RQ6 z+QGXzySODp_s%@9qKH#$xajaG5&|;BE0&z9S>4-WeWLZVMV~cQHe|$m?x_lkDwu-I zSDk|+$z{c0g6bBPEDWV+QVOyTzf7uJNvK1kM6ACudyIyl(?p<&3TOnSrpgrAZKNas zgymUK8RY9!VpvVH4mXBA-h82Yl;t7_%t(+xI_o5zH=63M&-+3=OT#brpNF_DT5(yF z+LRnQWyB!>gp`$d5~#``9l!>zMSc2K)LPWdrXzWX%=)@q zdX~SxBi(Wq#ce2Uv^5FFn@}IZj>1`twwptKNNp?WDOp+5zS*j#^~+m+lL{oc4_s`b zpqVlRWvZU*RYs+zGrd5G2hVJ`gTZe-z|`MjSIjrXn3gMNYNp!-05kz4WJ;5jB1wrJ z5js!Cq5lAh=9cI1?St@At`fD{1+rHoD$-WbOOgQ1nFa}sR1`JmZe!dQWuLZG>p7jr z-Myfx)OQQ->Vq3^V=67G{7}PbTBS7Hw-qW+nuMheDaMo=Xcei&goOR^D_Obky`Hut z?e6Q|JFg~OinDdvB>Jz%E`>^nVxgC+G3HgKNM*$~r`3|g6UabqcqKgzd35c~nz1}( zNNs>fN&sAhcZn_M&G?FmDo6z~WLL}9u=lY0*09Vr(M7_n%6UY1lv^oOLSiz20*aDg zL7A<;{e_!JX-U}&tMAGC&u#7n$+`{G6uWxdiknFRs3>wQb0TBSp~+niEyW?UsI-M7 zk~)*Fj98S92>V^Rm#uE4T)APvc0Ep*ZfR}5S(qZjP%I_5%1}XiOR8-ND{;jYm8guR z1ClXI4kLGruDFRsrP-HV4M0w51hj;c?Qgi)84_Z)`xllf!kfU9l9v*e^Bl@1AucGC zk&tOR$vO!dnAF9S_Uvvu^#+)^Hd?}|#FQt!pBFb0jU`SyP7W3aJ>%b$PHE+!ImLc3IgP|bA5d;W2p1h;o zRcuDlm0Kmo^9e9PAdO>fzdC(KsDPGN<~RY!!8!F~lC0t}?R09T2Ew-v-_9;}TCQp|-{JN`U3RrzEl#Z|n>N!_#2XAcvt5#6b z64Imwq^Yp7z)(`gPI9x@e6in1yTk!$P^mGv>(k%#gG8~z{`nxMp59)*bjq77DBvt9 zXir<8#0qUCS-?L&o_P74NA*dqm93(+C=fdOK`K@<27W_1UGg{j-uaUrZAN*41DpWC}9JQ5fSm$>$yM zqj5*DPI53w&OW+21c5%bq^QQCjH7@+PCI%|mmqyO1C#Ch`sjfpNZ5St z7~~Ln(xIPh5Dszy8d^ZmP|Sm+XXB$Ml6!o{k~jbfS56cUq^AI=`)BE*005zr2DAtE zrrqeTZ@rgnDXBAISX+MWW}wsw3Tet~(>&sdD+w7;X=W1oI4j{f9a$W__<*dnTHMQq zOmig1`^m(#sm}S*-EFKk+ML3O3L&s?4hC`Usa^+Ys~K9Ra;1L%0BnxE2Torr7Z=JU!Dc8@qhq+*ZYHHDy^9v|ZH*H`O(|9l0Css!L^J z24k}G?j`9pBqdE2%V8;X>?PHm8;Bcm-Xl5Cf&@T1C`MW7KFmbvO}KEj*9(^xnNCwA z9~PuWRE2BQcu1Y}-h0~1D$}}m&u<_nZ>{Jx*h>D`Zk?rT-jXhO*22|Mc5EuOLZBA# zk>#b=RB6qrC{dl}IGiOKuYM!93vwtm9m}^@6+3HZUDa>)gypY%)tsnY7i8tCu1xVz z^Vlke2SNk}Ql{Hf#!$A@a-kISJ<|axWkO77ss5k&x7VLuvr@QoV(Sxai?tOTp+GQK1>isRX5aAq~jPd>+!3s01DLgTB1$ zqx(1Fyip8bZa&$!&xrCpc0{R1$nijHVJ~8KqNgdX!hBR4Vs1 zy;F8v=H6PUcVl&0i}{%H%Z@SvUGmf!!kkiZl@FNI<#_m)x^}`<^J61#?AwlqCbpZ3 z->=M*RF5UI3_p08M6wzDqBQ#uCEChr22m%Iqn zf2y}vYn%sb$2Pn_iy*qfVc?`G8C0(6ZH0gpASj_kp~*4bm?TwB8-s1q>?o8LDm8&H z*b;1&Q{vA{n`t}m2OW9(n&2q`_o@wfZ~nI5@R zh|AC_uEwOsqEO<)5uJXZx0{TK?KJ_IGpCYWQ|~Jnz9HGO&~a-lQIJ_!dB(Cjp7pYzQVNoMOJB3%04W6~0V1M(W%m`}x8g36SV6hJs2(al|O0Ae~5pPf$VJntL%FwiOY{Pr{1a1$4)a6|#tQ_T)N+taOa2 zDa!$BC;mcsB$9UCti-C{&|X5(0JwHHZFiO=IqB|3@BwJ%Mg zV|uvWDrtARBPB9x^cw9j?nOpK3yqDVquR8$rpIQL5<{@+P*g;K*P7c-^)25huzgLH zIFnQNF4wpwIMSgm4beJXVwp;bTB6$yiBnYc$IufJYfCZW$5M(?0vp1-)Sryvf>FH(OaQT69_BG;Ye&rol1ZQCSa0a5j@7c5aYZKaXt-i?Che z+L^sBV@#=0wYyGAu4qeM>BRrZ>x z1{rWE5@f@gfSf7SxX+*dI_ z+8w!hwP`Jt8fz;=hZO8*!_B2=NAN&KNCc~ai6Gf;fdA5t_acB#5(6u*)!ctar-MToY;~ilZu;q$ekb;4xRh7dq2R_ll1S&$fGN$J%}yJ!jgmpAY`4k(kD((YIdUirCv5@2q}%?mvDB?Z?+%D9VH2A&GVtv8D%(a7dF~5hg=7ar4YzJ*El)Q1+!#A z0Uz=>PfkkoDXWaztm@Kd%^)9|VE+JbI+ST&ZSRYyD(IhA**l3~0;J2gU8K0LU_e6C zj^5*p{Pg~%{kePp0My#5yJfT0wWp;$aPA3kRgyA2K4BjEP_bDVgNq*YrCm9u4G+1s zY?x>RZj)_Yp;+1=3HUFWx>SuE|uxUo$t)toC*D~4exX$%Fd6)dO{K)^y0 zqE0!}a+UVYcsZ_uCtP=3xZ?i+h($)-Q_X^S2dTAk2eBVMK6+jr&CS4ZO*B=JMI?wD zL>N&Uf)Bou;#goMS-{Kz6Z?T1%}I9m+DqW>=Ribl^0y+b(UbS9FVkHF-~dXIf%=_F zw7(Pk1#_i8+5P3)x`1B@N-l`aJiPn#tw}!q`j(KwvbqX=;E&I5&VWMHnQvcl2d64| zvtOgvW0_QXy*9BOK7%HiQD&gRPC9_h>cfjXY?0L{n!Vm^EIaq>u^kfHRIy<}`7# zl2V@Dz>|#XzLe#G>y=oGfQ@}^Mx%@EzUa{F{wKHI;C&){G@`3|hvih$6~L&BA)w)9=|cL*S4m5rob_-L4y1I~s zBpKxqn2>%yAB9@@*530F;hZ|d4}B}{!hY{06exfQE6Xb+s$xh++7lIjzRx-pwI&^T zH@sU?1zwX(kzLzpxAcV5Y+Jr$x7eo3ZlbcRyYTVXB)1gw^|-VW6cR?Sr-?1-pxGD1 zs}jhgZMCmhduyZFQtvBXknMJ&h_h+V$*j}baiqHjI$xC}HeM~d@I&q`K?*23Mm$;m zZ2Il;tV~X5GvblB+CD!DjlgU#pSHHPxk7{^Hc&uG00K4SRWL?|HjPN6HkJEX+nUu5 zeY?34?P|MMJfht5ZZ%GmO>3=fyAU>fq7d^C7(#-;Ne>|&fE?D&=+@@aZ+_TpEwVPt zb*>8?nl-^!sn_hgnH8EX3Sp9?J~d84qqwKvckaX~k^cbWL%;$`(p4JMLDUdXth>q% zVFgK;(OoLXj5h6pn8X=CX+d7n{7EpAkaFmBlODKTQer?pR0@LcmvKhAPvicEHl z6euAq#!|f30#)U<2yseq0xL$3+M7mY2_uwlQ|6yPfdfsdefzYrhbdv@h)3cQli_TC zR?=f`r=-U_YV~rjI=Lm76)W9!M8~E-E(DgS26t1PL-<%2>Iq?eASVH2eD!f#p-z)U zlADiax1xO}D>7zOV^C|ztFS{s=aTEGb@Gyyl!8f0aFn26bpfAZ_O`3V7SbFEDel2e zqq~F+3V|7>tFQ&$GuXw2-S!Im%#!+$`b#b$VNbY5R-6jR61Xq`DpCR1#R;fw zts0F++m@(QOX{s#+y|pc`?l7%{Y?K=n^Cc>OTh5FNX4r7efxX6E)v0N_jq7nOB+&MXnOa zco!}ZUr_}?Dp4gleXT&sCs04qMxwpir)qfJhA(M_VOBYC#u?6(yo5CSZ!K#^K+sSt zZNz}u)&YerL_&f{s`tLwQSDor=%C8p*fZzQ?xe0viZO)|!P#==W+<+n>^#YSPd2|}{s)VDzDQkGN!>d&W-mY$J3M(-47nqgam zamh%GSRWSXoZ1kiA(D_5k^*`fLNksMfCdJoEwCIr5wuOs(|MMx$63-~5R-&S{aS>`-zYolPRRS+xpx3fw6Ru%6Q{tS#|O7XJY60$N?u zWS9W5l!BEVPE`V*`CyPWH9uLKb+%IE+;j++_1=Wr^;&&Aeb;RX%6@%PZ1!a!IG0k= zP|})05~i|;RO-N6iNe)j_PASCt#?qr@2OqxsCNgd$^~% zR2G$GE`k$|Q>g4V#^%=jtH&P?wwDxprw~+w;Zgz1v4o{45PT&=UkR<@#TK6(LDVf{8q&e1-*XJyxw!pw^z9I=53OhKQ`otk$Ge9%Z-XHtVSibCcGv z6r!R@IWn&g;u-b=&u)12bqLK0*kH5y?ij&)`GB z%wHO8(su4eYSf{}pk5U#va?aUD^&_3Q6Vu)g4?nqd?HKlI?!5_8VW*Bq!j{qxxO#H z$IY?u{{Z20a(AYczgt_lGpxEIYmeJv)2!91a^F;;8Hlvm?#p-KuwE)s-Do71&sZ4* zYNg}H`I_vF+YA<5jH@p9uVyGvLtWcyN+&c0Eq*1+N>YGVQ>cXZY$1o-?*e5=4ThT4 zLo&*hnOjPL0uvBPAvK_O>W(o?ZJ^>5+bo1O0x}DL5Uzc(fB^5tr0Oju+J@X`YEIUq zKK(H-Dp%gmLGm4OJx9w!WFZJfa54!w`s&+=xbp}C*bK@#$Olb19XZr{8C^a;TL5?U z6jrkq&Qol?61{T6eXyRGpM8mmX+s`orELuGC2h*muYrD7!P18v+2S8Fx5w3aCXCSn_k`7Dt}aO41SuQ9wWA&wl!sQw6n@ z0pSPskC4)sAwfVWnLksf>-tk3@VK95-H_WQ=*{&7xRw>=GU*%wQj>x}ILYUes47j} zA(RE=sG$KQq0Y%4gmmM->#K$c$a3E-k7)jz{`FtQTrEGCZC^Wi#J@y-v`rcwQ?>cZ26ix{VS-|a+u7e#~T1vCjN>8~M9gelx zW4XV&WB>qg?XZ-fpUj_()rAiiE!uTPNlyIEvGj^;%ymmE&I#uL@J>5_o}1E~Bq>A; zW1cXbJVHnkO$?bnDuE&_6am>_U=N?qMq;3qWE>Bff z@1Of=S^z(x$o9^%1aC+y0M9S+UcFqBdC#{aO^c>vdVRlLpE1uWBq}tik`_{u5Qf-s zYB)R`1e4DkX)mEAg@Sa0NI@xZ6z?^`uIgL&W!ZJz_pKUC332XQ@pPJ7vucgCSyYFf zO4QtFxGP&n&Olp;9S9l7$pFT6{inZe$k&Bos)afbS8;%D16s^zQqp7F|K122&5_jA!Ty=^#j^_20 zFL?w;<F?5XKJS8k^DMs6?j5sLv$pa`0yC163PH+22SO60pZUP#W^UQ$qg@vjA~~^d zTdA78$cB+kwrgpiOpwcLt^WXqk0C@h(FjY)Q>823ZoVM)g`> z-tEAHRb`5N%Cv{*l2Yw3L##?esCD+!9r7@uFk`kDS6)GDsVCA-o|G>TJHczqrLhwC zxhYhmie*0EOvFj0%bLq6gr&SX6qou~SCEjd5{0NCKox2UJ>zzvw$uq%iZZ7#IaA`z zyg)ikbBf&fo(q9voMNndh%LgMWA1y`3f3HGIJV10GC-0+%@PWGf!gHnk^u%p})6HaAF zvu_8hbuWl=j~Us?l#=SwmLs|kTGBe5l_A9C2}*Gm-GVLf*Aa*i zhCcNnS&L#0k|k1nz=$J$n$^d!dqat1*p;YBQhvd72v4@G-O55zViKih_K$@;&eH0# zx3_Dy3wo)ye(c(IuZjJ*y=K%ZbgzoI-P)?9%_dY>l9y1c$ELRAh|EBiq9UQjQyi2j zXl*4aP`8Tlnf7$nmoQ2DId=KlokCB=JX-N@J|ndRC#hj>85G{7xts)*1p-QmJ+*Pb zcqfMOTrstl`TFSL~wh>cXhN9<)Hn|@(o&VIf@e9+n51Pof&@n`z%kSPp<;YSui^6scZ^*t z#U7Uyc946rfK<|~WeabIL{M`%AN*0)LaUG7|)8*nXptVGLpEl#U)Q);mq zaj42nB~jryAz^N3pW%QKk5R@4d~0dGC0Ou9ad8H{&h6dHe6uEz zL#i<;ho#k>qIH)tu-mOAVYH;DAS|AYXnWfiQ^mJeEI8_5HdGq!vZw`-_r2i@Da;UI zsZmH!fuhrFwtnbYTYa6ji)Cjya4fAOOg(7D?&LbGO&&r68SG6&BWrtVw>N@mXmw*$zCQgp<;M-c^7SwGqw&R8(*?rX@z#Va-@7?fWl81acKR6W2c;3`O43S!f*^F|x6faF zA*DYe6LlDmEerA=@_=k|-%?VbQZep5`}3oUe6pgn%VojkbOw}#wzMFAF0QV7@%7Wk za)X!&2lCpPG(r%RDC!SCm#%aU>71vibIYDu+wzpA$tfKQz~Lza0FHS2kEW|yYJEXS zB_SbQkKzFFoc{n%rmWZlN9^TNeXrPi>b;G*mf;d)k^21VZP?fRH@9%s{{Z@du(u}o zrMm&6OgnLVv1dx5VZdZec)HU5BM1rst~2w_wh6VnVfIGuby__s>$}9J)yb+p8ljuE zyAEipg{Xu$$Zi{;B%Yjy6qOFK!Q_ec-CwhA{lU2Q1f>DI-Vl&TolNLY!~wNd&AV&4 zZL~6#1sEi#gC#&t;1Q_kbTz%N2NHY$_)@d4D??{D;?Am%zEM)XE}NqCi!P%oNj3rG`OKQCU4i9BfjHc2I8WQx)4{wM(zj=Omc5N<`$&g(C-?IFsCDWFC8b z#;B=URQlAVed5%jWI>WaIuJGldB%>m%;!7H61sT(_f8Zn=OdUNS7)@QKGQf zarrV`3^2k+DpJ;>5|BP*<64#RarT?-?%6=E+4~zZkGVUC38hA<+~}H=ZHC{o_@nCrYpt5STu;ql_c)j2wZ1?fRV-VFf)W9Or-!AD{Hm zw~3%;F(QjJda_1190AThV;WR|vPtUBc;s@Q_0~WHQb|1NQX5tQ^?G>#bDyS^4pI&e z;qUH#M@v8yl6s9l#eFKrBw+XI9QM^@@qcuiGs9l-+yUheBaNx>w$|o+l_g19n^pq46{wDpeO)g%ZP0I8MLI35aBf38hgGgmaWZPv z$;f;qPfaL6@)~Q_K`g0lp~dtd6=Y2`rLvInz(YW#6CFTFR$z9~MkAQ!MRvk3a4cUL zPY2pDaPB3MZ=^s(LELDlzogdDS>4Egd(@;{ zF11&`Y0Q)-%#?>)^HUlyZEgoTnn+X8(o#~|vgNxdbS0;H>U8_kkv8I-U|ZC;o0UMT zGa8JhN*{v-Aw4aI%(hrexM*?H@T*dnl1OrKThs|sxg82nbO}*9jHGT7JjsoPJHz`s zv3#M6G#t>-CATgc0Ikb5!8$zO;dx|e0#U3a6Gf!iJr@qkTTk zRDCRowHZb`s(7*&@k$E9!s^xNz3Xw#(AURl|y*}WC z^+sGq(%SszW3;6ylBB%a(wBl1pyEgxbKH0C(O-7uB39Dv)pCPYq^N&vq|CWK@?xe; zHWJv3!raPwon~Bx05UxAoR9!Z)-blsllO{Wg&BNDU{pqUf=BHO6grO36W3~3Jj91fsVH~^4Hw&46(hhWw!vBlU91fOeJ8iAA!W2c>RZ*P5%-El?W?JEGiZrcx1 z5>{5^DN1mInM4JGr72JV*I0;%u(VGG^_OlcREc|McUaC-P~~O~$kZCuZ8V7tMse0z zVTDVOg*fA(gcYx;w4SAOtN@c9Z{>lyl^x-##i?6Y^h#aD5s9=ag=)#IE=BK0gA$)l zpCvLLWWJ=dTk_QNAxLPbjHDEeL1WxYfnzSR#gYO%X$fq~R-yqaP@M<~G85D&&bl=0 z6A4EQ97$soLT`9gCPfC|+Y@Lf_ZKl*=aZW~)#|!xAi)Qn@Xz7*dfS`D`HyTgU;m zNMDu0N!F-pH5xs^y3*!S>(H(kqif+!ZcB5c%9`7f>T?}bWg#s#wpP$7N|{j0Nhk+` zkSLsI!uWR%J&P+2M|NFlrKuxO7v8*;0Wx4f_D=fiGh4#Pw9X*n{>kuW_>J{kJNAo) z(x^xXX{1{Og@omqB;}Ey1WYEJ478}tEwY4!x#|i?Dk;wcA3^#KG~d5kgx!{hQBZzF z*;APKm?({gA~cz8A-<>QvfmRXMY7+Wb{Qbs^&829pshY$F^M1tKf~9NNH~MA!Tm_o}C|$Vc1LDRD*o; zZM>p_-+7#=N<+%Sv29GLeb}7gDoRp8166{OR1!eZB_;{p zVDj%V;u%0~qM+hkTbXbzP7p{3s~ji32kW8iRh@=d9U!gv?Vvc}1(Y1Clma-yc=zOY z*7SPZ2999{W7nRatx+0%VcAK9$CsDOoYZ@J?mpt}{XkS~3zDyExju(3->JyAWU3qU zpwv(rnHg^*)#SY2@SI2^tqM{}DN=z+WM6f=ij1c#EwSf9l!gT0l(6j7r9O~GJEyrI zj{M_|N}Mjs`BHBhOggB{M&ya#-9G^_Q9}{BIH9#BTN51wgzcv|9#rO&HdL84lrt70 zi?5{$b!#epfzX8$)IxzIjPuVYLcTs^a%u6}ZdK{zCq<}Hi*!l(u_CL#3+Yaf*L1<-2fuMPC}$tegy@7wujPg-oH zYFtdff#!p+<@r-L972Ln3=t$Ba+B-hNh!5CZ827+JuBf+3b2}kE;ywa&48oHK;WL^ zKG{0kKZoD7cXWI=?80`w%eU;BldROAsmHjkluoToWImLDmSQxdHPDcR{{X~U$sMtv zV|YUG2bgg(0v1)vT*)FQ{;BuCuVFZYcF0m4)Dax_N&eq0W~+wrc>D1);yOa;_igKV zU6JYz`B3c23YBeIg-SRH6sRC6^XwApm!FZ;nYG>l{6+5KXw!F)&DvePY$j|QdZ7_8 zE0S7J;c)1Q>GDd){{Ws?LWnsXdUJ>1?6r2=34;EmA|xPeR)0NCrgEkxn_`&rhS5%> zWo&8FH0uM%^Y=-etF1VtM+!&>usnKxM@~q*C%EeGf-#@VT79r!R?JeM!J{nl6T!wa zjOQOS`}t_IDo+?u?0fJ}*F}TMf~5d`c~J(*9^iE-1n1oQ`~5UQ3pl~a=Z-V`?WN_~ zX#q!LN|2(ik=u^PBRckxgOGS6XWR`DDfv5`o>eiz z?T5IM!JNQL&52Qjj}VfsfDK8meD{Xmv}n{8rCa-3yf(GNA@*OUR;qcCMUJN9D2HCc zhg#Gm#vW2i3R0p31U3l%#09g(RhLa*U#NQ8cd5-Ko}vxc#e7pj)*FvZ%Fca}^r14?8xL z^;x8_^yuXdAQ#$itu1-IZKSWLp+qMRyNh`(>eMK7_#10Ppdt~chMcF%M2QW;r$7-A z6;GJyc=^vROt)Mv4yC@7l#tpEt$2q3Ti!kPhHh4pVnG0cbdH8M5$EMxsl$D><9H4x z)+OBnrrgiracBg|R@#V@F&;){g4|n~L%3SH9hGF$;8!jhgejD|#Wls!(`rMGnF)Rj zC`=T@2#{Q3sY_)`NQ#Uo6*yM@V{x{sEN#J^MW9}^Ni`~a6z#HrF4IzhX~pVoGh3@k za4JmIIMaO%rL{KNRQrokR1(`dgu3kS5^BMwaJ#SyLPv-lK!AKh#12^lQVCg7rU0$o z!+*t-%;KxL$Ju#psDfolcS5UN!z$nsP{V|%>z!bY0jEadUKID z1Su9heyYPZwN|HhON|A09EW0sbwQ*2O6nd{O!Y~53`O%4I@YwcD9hOEj*!dCzwRpr zzXpp5yMkP&<<+I$6-hOT56N8#5uv5Jb8w+_6|QT}Dd%}Y{b8g;uZ1|pls5iExs_m) zr9c%YFyAtYQa}k&2`UhbpqU1zZT|p?+#y(c?GxRp^`N0jTTmrT6s(1yAxoEBbx124 zsHmhD4M%ZzdXGYtV^PD`vTeE@*(TtxRB0DO>8;mVeblzZsH!Uki3nv5tf>VFTHG1N zNz>jHN||}?t+yr{wZ*}>Hx25AHOsxo&D{y4nM!emObw|GA=1hLP(p%A^MxJ`laC<^ zODb(%B`H~kQ9i&D2<4<7`gNJD%h)~-idbS8i?^!pEzxY+Qa~XnQts67PTR}MAOcA# zTA~1pjkr5`QoAnNZt&0`$B{>=T@)H+sck(9S}$9GR14A_l9-rNEk|i_!%9@C4ZP@e zB?u@BSaoln=~#7|{{V`ase@6p8D3Q`Y7CS{embNoNlR!% zmRRdSQ;X>9HB=`Na_Qw-jLnrR!ldeNJ>&xyvZ`PWhY=kvvHRlVQS*cCf)Wv z&dUgC8G#BaE55T+j(~}YX^^3rJmoR%3hm_lu6dCb;-Vp+=@Gf=(p+d=Umr(7uXah zn=L|v2@a{)h>Y-dU|PN*Yb!*S(BqCMsVY}aE{BER6jsEI>Az!GG=03=dkVZFvHgp^ zsts6@fu}_HbWDi!aO-7G5bs)67C}%dQOcQM5Z|iB=M1kZlb}vmDhfy>nc6`h z&%<3|+R@@(9PIo3+^x%Y?p{60R$NnwDP>HkqyU*f-98+pN`MI_w$*NK>?)MNnGvi> zF&2)d=1{k~jHu4GN>UV+JsBjDbH_*ke|YK?@ts`0B;A`cZCaa=Z`%s0vrLC%h}ZNh z;`OC7UY7dnvBDs$$%`1X1(!p4Po7lYSV;f_@mFTc;anc)iI(chZBkqY5+O*`9N_3r zvOGGKZyFwb?6Zzv#(4I}340AInOlv#+R}wImei+0r0AaQE9b0b0FrA|*KX);e$)7n z-1Y^2^WBJ+jUu0D)9clEty8LY+<7Z@q|6qZiRKkHTXmJGN=`buk_v(WRHtHi?%iuj zjA(TlO=hu0id}w{YurKFl^TG#3RA8wBX2@VQtO>dKB7(m=PJSLUe0kY49B}J!P(+8 z{{XyqZMqZ{k!`6$K?h-?ighPRJDSiPrSSI@T=tWS;I8{FX=y51X~aejFR8Gi-aU8&ooUZ* z>u_x?!MUn$&}$bI88ipqn+Abdg-5KY8HL0yGNiVoIC%uM(pFLlAB2rmdrf}_;yxxA zJ{;i;lp!Q1Ay5JpA`D6MI{kLv2w*tx3HBGLy{iLzHTy`lJ{_L`q#@)}{oqT$F^y zRM3?nv=Zl(tYupE$ANH6V%4ll?-ctx;m{U=oQD#ZGb1oaAb_bOQym2Bb$=PXx4jLf z$+w$8lr2gDO_e7qhzD~JM^ha3=1HPV7S`&*1Bl6KK$YN+S5F=I?gz2cI-t6X-D-xE zEd>fCDIpG&D+8#Lz)wgWj(I!{Pj?NMb1&Hk)YMqGQ9^a`N5_Pp7D;oTz<0xzflERENXBi$zIsB)1)=P?R>VvIa&7NYBjsd;FH=t0`s! zhbScc_w+hYSiE$)Nl2Ij&IaDTG;s~grp%tiqY=lJ_)~$042BR(cu@*T!RR>!K%9|` z<4K&B9Bs1E{vuP?&;Vtu`{aA8j_2pbbS4?^5SJ1+gRX~fuhN`2_(IAK;&%7)9<-*# zOeyxBb+FrNEh(}R6t0By6P0QgZ4Ua+Q$eswii!x&*Esh1YR8AB7*JlPPmfA~y;1KH zM%(+guZ&h>Qs*@;L0gR`GTC_y9;Z?iIzcDfk~q^z`qEKPqc8h`$he<=Lu!_n#zD31uLY z@j3z5UR%bMy1RPP*e#b}!0_*~)>hsvDDq9(%?YV@W6A7FCOzgpf_wFK=bvqRquUkx z%C5NZ+L2J3EzdGs$JV8x1xF>vojl-YB%Xd+n!|9`IDZaZ)zYQXC2KpMAWptRsjB_u z`Bey*Ifa8Jvbq~Y z0?c) zAwzLX(}H<91CfKs)_$Hr814B3`JELhk*y&_KA zOMYZava~6-?N;imL9yI<6^dkcR+#ZzZNyNaI zpNC4jc4=m-&OO4K3vD1dGVFI?fMY!Al6MDjrD|Jt?u%+oZpyc&RCo1M2df}f;oRtG zyG3ZrZ7O<{)4-w0K14L-$8wP4Ndo~SYPN2YC`#IzEof33dgi`2Lc3R0&swItChVV2 zgtV~3Z`9rNx~`<9#|&_gRQiH}$U3rc;zh;V3PsRbbTCs32Qqh7k|0EN0(FVm-LN%@ z;kG!n)y5TS(OQdQ;?;7MjH*-=g^-yAG73{LNA*>9N)MKj7DBpkut)*F*V{e0(1{f$ z;HaQ6K11UuSVIOpagYB1s^A&_0NM_>MTMgA2SY6>DLQUrrov?WKWgKa@ca9QS9fo2 zw-ACeDF{-6XKcyF|QC6B1_1G!#z&PC76vTDeH01;h+!9kTc)qs%^qtw_4h`NeWKm z&*(>?QkKn^o@p%)Xn;NP2DN?dZN%GqI+*Pq`PogVy(@M+s*tV9s6sT^lH7#rZbwUs z=_?6+T@0Wkj)tLufK;%klEI_Er(HJ1^I57urkaE%uI9YQoMKF-)hX6rODj`@%UdI< zDamcLA)=sF-0C%9F5G6nWCBo-rDaxQl0pE(Ks>*QBa(>LHzbag^jC+t?-SvLy=il8 zbemTeOJUUb3c^&PM52m-^{*5=vYJF#clwfp9m z{e!t)flsPUMdL=MPogx$WHP3eK6^~TXchFKmA;;n*M)Y;jBblYks6tG&80(}#WI6+ zKW{~Oa_O>ZRmgsHrV5bCA2Ju$8Wgm_`u6V>O+!{_Lg3mvFmwRzv7M~_Mx>tn|R#G_mNw@cbzZRFIKZbh0 zwbN4dVij4(7Tff>Z=sm7kQoa?3Rx>pT3k~pNhU`m-~l;=@r$@U!_5X1;uip@Mq!o* zhItKl-+Jag)NyVK;zI4I?;E~gtte2{vI@%ePGCV&j1nO069ZP&+u$dA9AWiac7+Nw zng0Oq>{BJ)45EQ+N^vpfzU46twwIg=LrRJhFuTy7P$fhxPps@F>}>tLQ@1vrgH@3_ z>$~CKb-S&KlQcIiS0Of}yGn;0N_BG?aWDS>1=&vdjHGpEtaT{vae{7ev4>+Vt>%6-ywnrWlB6gk zVQRQ=_Z;Dkw9XpaCf%gSB&ZanDU7KAc!q%~6FN;*aR;y8xmZiNkPw#IftE^qIoF#= zQdHuMLCmdn5*pX)CDD96+Z4*Ft3$ghu2d#oaOPAhjiy+N`dOt&b_AA?%W848Jm?K6 zWgwoQl6kBfn(H{dq+D@xuz6%-{9O0JfmrFUee zd$fY39b?)FItQlS_*K34BBNwc;6b)qs$JzSGfJI$K%!To$8By2G9*Tpwo;yiHtNC) zr_AUH3hFr3*ZV{EmF=Xx?bwX(PX6zupv{YI+BRF1B47@k0YHT*LOZcIlu$(>jJk*w1tH`4k&dv9%7*{tN;kW^>N=kYRcvtWZ;Fek?zyWl~&P- z-86GH^1goWeJy8nXFS;pg2SbR7Z%_zAuS}3GN3rdNF4Fby`ysi%1g0YSx-`cOoBRd zo&h7+AAK=*1hP6dlAn*QYC)`S^(IuXuZKvir*K((DJ6%9=^-lkq+kqlp4s_+T8d`Z zUzn#va$f0C3QHb_6P)lp&*%MgyId;X(S86=J$ZigE1Xv0_Thir?fF*0wl8YD2UV=N z%ifLmyd&RrSYgSLDOT-D+qdmyscpEFFzTT@@h&zJw$$r{G_Ns5DB&yB^|E$L?6jE0 zu^F54#;wb@5b^lSk8mVYX53Cb@?KMwKvKe9DJcj-074LgQ_?{?xmnm@E4NCVxe8or zoY_DoHYN#yr<{|_Mz+4Z;`QAqBG)5R;VA)RjkSV*=FvJBjRjwws<1pL+t6lGwx%A- zDVv4nmpT;|r%SjWt0|{^_7YI*&aFWX0JI?^0ZB;%DHygit75NLTT!W0xw8sTmXL_? z)TWzA03|v6DM%fFz#lCsyxXPctLS@kyRqbgWyqi(bB#E&|JfG*Bb-0CU@) zI-0GY5A`XEW&5H^DX~cbP$DbMn7(*Qm-tiqXI4^+Yf-JJKLJOA%vMsLSpzRTu02ax ziL4?mc{mPmK9(-W|YGhaf!o`_e!AMw$;krlGipDM;jVkTIO+ zMDAF8DRlQDL;pTNI1?9AL*k_E06%^Ac5_T6b*EtsLqi^8W|w) z4{_=D(!`{apH2wCC!}Zh`DtKtq|Yi|$j<}5a0u3O(g?`UVS(8{zn+Se%zEiaCU^C< zcyJ`31p~(*X9EMBa|ia4?zPCD6_>PIX0tw)-45NS+0tL9z8PGW+i9t9MqW86^PCGQ zJQXBy#+qI&Z6yk9!ht_RKUl5N{667USkGz}R=9&f#zI_Dl640vBu~Z-Qd-Mzm zw>?s`cgb=(B#K3FS_-(3h_KpmhFeOII=WXO*P8_?KBD3E5UfDk(8VI1Ywb0;60a7s zaX_KTt6qf-rJ2y?&2g2q#H1x4h50#H^Lm|1SA`Igl) zkR*L+$8Arsg}0B{;Yc=C>bpZd&SfY*5M3eNWF;veoTQj40BmY9+c*%aSG;#Br47J= z87pze5T{v<=Ey@Tcs8C?P=vXTpI0XY9c`uhZ-VR5ZBD3M6$>rJ!BSO0ra*a!@E&Q_ zzlOw<6+!l%XgH)P^!bdbX+cw+C2DKOSWDMf*na3b+ev8|97*Sr;eC?f&hQbpdhK@?Yq_^ujD;>#+8R>ZQ;Ax#p`sF!BP)ezf{`g{TQ%VN zkb>24gYV>=V$aZaVay}|l+FOjmK#?g54KQ31zA!dI3X>TMTG}MHrY+mygTu@% z(4bN1^yF?Omp0gG`k(tTszIsM*_y*F$Cl%dsVAWZQF-M6-$`w4rJ}D<6~=K~cM55@ zaGY7;;y_Xm=~0Owkd+b%Iv9u==@qq{vcz$WQs%>s_)^omQ%^XXhwTtqL!HxVKyhsV zLuqh2l*-DMm<2$mSl7j`h93_*IZ&cgcG^W^WoDyiqUx;6mr!X^ZLc*hmLfPBLR(s# z2@a{XCn!h&l?8*UDYEp3Zw<@a+DgP`nW$W_U7q1=mYHRj1i32%z7o?bRyDDBdltoU zTYN=$&Cz_@s3bU`kfI6+AmsoYqzKcmy16^G?h3##i;f7zFpMpmD~wPrPcY7K)FJlL z+R~LNL=~ZBM_q^mX{)igwqDy!+g+uFP^Q_>R4ZFyaPE!7Xcx45cI%xwM2DnPTb#c= z}%2u%xH2q%47oO#Rt%UzYvhNUK~n%?6)psui;dTwQ_Y!06gyGi9 zXszW)ZM7F$9wmjREP_Dr9K$fookF%@_GHm*>gR^$t2X^QELv;##OTeKvP{P1DTa_1 z=a_rtUf$T&!<)2O0YAdPN)j+r+oCd#bN>LlK(w)Qxdrj}n#|~CdHidZyFy$NRP~K!T>6*V*R6ARRPOp#B>T=Pxt!EZogEnGi^fXj}cOeRV~CU z1r)TTw%8ohgu_FIABZ)W=% zQ=UQz0bgppNs|(1?$SWmK_kUAG}Z3O7Cb9y>$AgM!&7R>sZ=h>RmSR)9;U-~dy4qw zrW=&bgtVlROk^!F`n^F3Jn6^dPNhSwzhy?Uw!-h0^gAVs%C|wN*s|=JofZV?uE=f5 zykxM3T|>xJe}#S^=<@o)l%*u+VO-@=Y+`DQl8{bd0XbBZhzW_xRFTYT49FGDE5Yuq zE)<(55-nv=0*ogxQjF(1$poHYk;t0ZpN4-4z91lM-rL;!QNH&thjVgM-Mng6ov%}^ zQCWHE<+BmlC}sBWw8mmS0@Kx(Ri9uQo-DSzeeB93*LLoBmcF+>@vYLjq}-J|hOO}s zDOBg;MHHqKd zqHJDU$Okgcq?w&&X!jVBu@=(9#6ltf00FS&<^8B~>lavAF45Znf|Z2ANbAoBo}MxX zx6eb~s#I3m(I(%H;8_JlQF5>c0Vz1h7~>yZJugYr3S=5g1c6B0odJDfRj(C2K&2>- z$d1cgjz|NXV0^zabcxe$xB^#h7W!K~P9fF#idISBb{rA((lY{Njrx2jfdEFnw5OKa zZM_q7uSy-03YRy}uD-TV+cF!D>uE!4b!9HNpoHKcj;oH^X3$|@PaFhd})U2uio|!>E z=4xu)s}}4K`q%fxWI@{|UG(Nv1KbTUl*$lQ(I+DSr>D}R^uhM}>&Hnv7h5Md$KpHvheE$G1k=OK5 zvD-`5Wveatt+6s)wNIBYHrQl`U5LuvBmvy0l5_Lb6Ny&haaI~ij24WJQk5hF8&8Pq zy;<;Fs>L0`JY)bn{eGG(!n51B0OvV6G%GB6 z`zZU@&`Tiy{~e3z{mr(iI>7Cawe9ra;$bfzzpL{I(M7N;HQE@ljb;t22wIeN^nAb^cCTY#crFiY{Z3aq0=e+uynA9TUFF5T! zGSnB-g-Tchl_bbmCm}>@D&wiDv00T+H7OES@`|RtP?6?7MvfB6`WIA8&j{<}rfdOx{?bH;&rc+&JPBm1V`DOH!5w zhrCOHXF&&+rW-Vg*QzS@$aX9j>M~iRrhQR#=whV&NYT~;-1h+?Z=i4qDq27UoNK_` zoy(@A$e8@p#zUc{s&ymFjufCuP*zX?DhW6lc@vHuymAVLPvpV26G(R z&ZcLTaIOCU4&m2$ixa^hX6_!)tSb)*kea=f!B zU}bG*^~w%=@tsQOc`81Ro}zkqKs@`O^w#IM;2zF+(+)-MC4$TcOCd84X+!(qqMSsK#h%Gmx56f{7g=P8n%wDm?W$k=r`u ze%$y2f_M?u@a`9}MXOJ?ryU3?g&D{Xh?vkukSn13F74N~Ue)m%40p6FS$EIbK9n%0 zQkg;}wX7VePHlBFu9{VXwYI{wRJdVVlpA%Ll}&Fg=joC{T8!v~(xgaBj<`S#p{7^Q zRyuzPMs)b0H-f?Wosol4Hug&~~}Rydh!3?LC3wUCr}W&IVd&cpXj1?w2bA zRV6vxNGgz1o264JYYj+r^plnPkWW!YPq^)#bNcJk4##!&lA@!9dcgGb{JHJMKdz2j zB{_($15&_Nr=44m2aqZ1-g{nMO4++_7?ku%s>z|)(@_@US|dhr#X8f=Y1Focx!M(TV#P)=2KWJc%iY5sR1b@1Atpb zN9KRWNhVTS#IH(wzIYfX3uu2spmzsB9<-w+phYLhnYJ7nnp92?JndK;lV;lhU3EEB=jK-6{2FWr9jHGF znwg|B{L?A0+B)L4g}BfmDk^au`baVuRh#VG8@2&j`^2X#!a_0vtjBUxKms6v@6)7k zZZ~%a?8?szxOFWsZJu!o%1f(v?Zv;lP>_Iz+*-8f*UF^YN{YB+h!g{Y^=Bsa)TR(Q`gn=newHrdXYRA$WyNOVd^m?%1pG!wOI zp4qX>tNZIL3jJzg>6X$IQlO%>cOiL+0(@&I02%(N)~q{}SoBE~DG=7RM5aq}3}U4c ze5RCJZ6oLcQjzonRWrpehF5$?z_w}WyBBNwp)dXz6+1qFBP1-KY zo~a7|0QhQqkttMJ_OlTv@m+Lu84k3!9ZRJsDoPMQ2`lR4fvYJu!>-Fr7?-rWcK%h! zU7G;~UoXPg{f%LqHqkASaD=Hu?*u@B0DWl}IHn{ywOHlbA(x0=$xWjN<$VZw;>ClRO?C06% zvfC|r3+{^j!Ejb%)1^}>iMSOU!hng4syu}y4K|Xssiz!lDMx_nurq=ndY9QF;q}*K z7*{stQrUIoyxchTI1(eq>ruiI6&I+4q=bS_aFLR9hVW*?A+GSul}rv{B0RJM^P~R& zv{&f4Q{f0Q0E3%gN#tko8J{6dIiF+>%`9R*<8EAkahUYESoY&BCrvp&W1iiW6-3?( z-J#tmk!@3-9sTgM=tlz(a=kwE{{VV&-xc11Gh3p3l%dne)u-_3_8)C@JA%#JtD|`? zYm$*~TrJilSBpf-k(meAT$ z(uR_egoKZf0|P$8T2~zJUB+E;(hqm{V@S~|B%SwBKH&nlUIUcjZ8`?70JE&>pfuQM zDI9{7;{={McpP^;XG0`(^bkGB_S8s3_(!d(Z6{GRTA~!3C)j$4Cz5}7(WX>VdO#`z zut@4T)lslP8v4?##aiW~EIdgZD;>Lb(Uu(bXSgT%XrUw-pIT7Pf{U=CMsdOH3b@92 z8YJ3|NI1wH^P_-Z6YFXjI(bso%CI^|u=NAT_vigIwJLBZoD30xj^p1%N@PjegrZ;( zL9VGNiEUQoxTPToq`nH!aHJJBq=FC6)%^9(ZTa?nS~be!wdz%J>vd0n?o(QBEmkw1 z-cnXj8(K)m9+EMSP&pQi2LWCqn*F5|tqK4~F&dCg#AzI(P2vQ{Xjq>EUJ-|7%JLz3 zlb8?`2m~DpNg9acIzfsi{hM_fkdfu?1wxe06l12jN{3u^D*o^A+sEcqR1eVVk$9@` zxqSF|+lVu&JB4W7bUK}37OXm0up-B+vF9}Nig6O0ZA(Z(5UxV{fmp#DYWIO~d$>x) z$`&%MNeW5dRe`3Y114k;YEy}SiJW(jgIE_5*f9A(S9b0|g(T#R-W;kSAQ%LZ{+gp3 zC$am%z59h8)!7S5yK&tSA4KH4L;@Tuai*L~Q95+>l(P}0))IW@mXXv4PE~+qXq=5pgM;4=Iu7>KAx3U3Zkj4~wsZwX$CjdYJcvJ0R1P!X`)(+Q1j)THm!9k(*3y}E0=;I7?+Np_yiMdsRiW77U1^rbE(WF-j!JoEr^b!Ge_?oCT+ zcVBO}YMFi8G;5y3yG3r98nd_WTqsAwt;Uj8m9peF)zG&cKzS-cT}ycYj-jXfeZ{cc zZEfOrtq$oa4dhg)Ej~3UC;(?R(X<`wWp)kOwdi-5p zLr`=(R?R$K`2PT7#RZ436a-l5qSp4Jvt6uQ-etoY9kX#cP--MtZ$(5#Q6u6*EIOG_ zOk2HRGTVI(r=V(=b}pG$okrg*39YkDd@x`;UR7c;pNR%S-k2M3mGwAfAa#zEA1|aQ z(lNuVBLJ~o)u#@&>sGll1QewxPGq1dIY#6vKvC5|1szGRp}a}iUlj0P0$SpjzBOrZ zlzr0MWS11`l={|}b5DeTp)mkN4K%0?*oy?L^%bpttoG#OAI}>0)DD#eB}FH=LQYaM z?sW_rARc4|u}R)D9xjSuTwb8~pFwJirjBuB=xItNqW41gs1vDo>Hqh6g+9(fqa_<_%F`0XTq zpXsK`wi|5}v_4=N^`&Kb!b|xlB)*(;#$+}zoql<1K6&cEQl8H|{{Z(WALXXT*lw=0 z;Wq|#KD3I|&)V?aHg|{WWGam0!1$Yjdu&Q|CB_*gl?N8$MtbQ)=SLYzrg zSV{_%nCL`F5@L7Kx*H4)Ilwj#-ZC5su)PQh%ml9K*jXw3NK#Hr(46HHAR4o~UA#2? zmfm_>Fs0F`c5dBNW7O$zZD{bSj4oX|n8F}WZfX+xkuB*6_@{q}pp~pP=^-lC-RnPT z4SLd}+4btBF5@-3-dw81GM8Ppgi6{LR~?ZiORJ2A!en(4kkXgwYpA4kB$+%K?%Ll1 za>DeeWdxHRA{7Qy2=x)@jBIRyAoTb90ZPiA+$ZR+cQVvH*!O!dYXd{r42Ls>S zpWn+;MSSWh42-06{{R$?$f?I8@c#hHa!L8){PdOBX(N=3_ai*x{`whM8=7#IN}$hA z)0dSZR21NPRgf|YN4Gi0@;b(vd3EGA(hHtq`VfSUqTwe1068Z((3a?IPQslvZJ30C zCVdKUS8S@)3M3hIILVHQp!rRebvS@O<{sYKW4Q;Dfz*2+o|;-;v3SZ~VE7FFMk)2~ z7X6dzw{&>m80rWIeg6QxBsBG}03mrJfEy|!<4Z1p|pmSYXcj_hTbZn%^@g4)!a_rdL+!%{oL0D;^Q+mbb+ z@r5PKQsHP+g0lz8YkT0RTUb@P7yT*UeTMWQ@N#gD4h~1q=xmOn72M=!q;ba{-@f{c zD3diT6m}I@;@~8AIrU?)AD)gfuAY)fApRl8KOw4vK*z6Mg<4irccO9CgPeoZcsbAY z(a7f*1a|-ojQsR)nS~F3(u7W$QFd2>&m$edz#1md7|2l1u{`$nIv`0p$E_$N>l9G~ z3C|oJ6Z8G?rA^>xvCkb}331^r}^ZN=7Ob5JFr#f5Sg2*H78}?Bn9gXsGYq5-s~ieeW8*d^T&UqEM>PsKv^! zmrx#JT6MIpGE|g1l=Wi+I=U3V8u42MQXO;cRl<#5IHjC^$mZ$^e|&iIMF<9#at%-u0y=X5b$R zj-MTVk@1mHwW!ZsRy(WZ3L*%Pw?row0hO2Zd4>Uw)DA^O-6wh zYpy*lpN?@$TH7ir>XNQW*SNmk-sPZ+lm#Y7wFF2{pGn@Txc%Gqtuig#QdOROB&5U< zxFfI9rWqa__D-giiTh7rNDmyif3oqKB;z05NXKt%chxlCj{}xP2Jo;qi)%LSo~A9T zu%_Sk4LY9W*j36*+{b!!XxS?Bq8AeCkdMTK5)+i*>6~AN@U_}4#ux!Wf6ndXBBbyhI^qj!l-pcixT|#qBp! zaa&;U#o=DZ-A%uv-B$gzUD}`agKyPstGbm_b?Ti)mZql0LYP9-7$pn%ezx5xN$Dy{ z9Gz=(?G5nNQrk_zw{63?l{@+^B9dv;Ig=^knfD}E>m?ByM_T&Z3UNd!N-7vW+7RKJ z3=Yfr#ggY-y6Q*<0iCDa?yFt5Yg|*rR^zigPb%y|FCfA~kfRDQ12>8Q_KXVX+wA_N zeZ}C*VCim;;;g7d3h;URDGSU zTlHL{Hgv8u1c>g@q;e_*jKfh8(z=rXU7g${@L<52P>ifZJQ&=M1Jf!?U6~Mf3+8@RmXQ%__YQ(p)Ht|9fxpRt? zp25U~laI?^oY@;>gO{d}o&b1qf0m*b##pI75Rg69G>!?v0s>&2I@T3zg{&}Cxwsr3 zX5$L|^m;`~^dNgpqD9XuU_r7!{c)*tpOXs4AoJLU() z5PxS%A?+2V23%Rpvn6jvcs$=*>QZ`!2*~<oUkW>vVBn<^sxXSdP5&_0IrRx(rX+&`H6_PzQ|mI$GGul1FjxlgH`$=*USappqv_B9!nDLP*XtjN|FA zW;;s+`Ay>(`~ZJFIcXIAYcJK}5uKLeJK! zSiT)<+8)FZpS>xG@+BkaYPonz`#tWz5*D3a>8Zbc+HFW_5ADr94&OO3jmu~$#7lM! zUR#XQ(iu}_A+@*^;(@^ca{mC@-vIs~?;7pW--r6f`&*TYe3xiwt=<-Vt*xR|)UI@M%mn0t$&z_5>tBNl+kylLtU% zDxjM+B>=RzR7uu85gunkXHPIi6TEBt^WmcO+#Q-;;a086od)GpOUjvO-bSNt)ThT= zZkJ2VD75+N^2(HXDoG0&1tKBb9mBqNPU1IK;$2m1#^GE$hqxIt>b4N*hy9`&jaWl8V|nAaXIzp~zO_vf3}HE;kh<{{S5MkUG^@j4<0ACgHZN0RV|IdC#4GMY|o+x0I(v+C_fzc~Ue!69c@Un8 zg;o>hc`+lUmLra=3}6hNPZ%8MS^)b}Hu5Ab$c;61UpdxcxgI=kh3HF|aCKzojAP~R ztzXAjyR6{IVWxyB$k4z5E+_IPw?AfBA`cLog*Zt|VC$*zAtdwVFi=yeGyQbLrrLbxESuC7!_8Q@_$Si;*-XCURyjP)L(O6rR_{XiZ5T6Rzs zy+?)R5IUO7q%fs4jHOF?NdPDN-E{+x-_uAJAE^pj&=OQol&d_FW~lU#J^0Q(x^C-Q znA`kO+gSik^-{N1+G^_G?+et|p*1=@8;-kPl@;QU*FzB>3Q~fBNdT03aC48Ytdt#_ zw{8bnh%8%fruw~1Akr1 zWcx44THoHH`Qa)|N5T)*q<)^1kVsc>J;?mE zfoZ}{MtS93fYez}I+&0n*Gj;$fK(4BxFqNL=_8>XM4m|ONXkaM5KSnVnntvd_<$gC zIORVrCU6iH+$0`7IMDmKI#+_H*SeCq!g5AH9IHHIA59}rC#xq3SNDQ=$LwnvCtAj8 zK&0Sy>KV>+gWvwTMzAtMmF|5Y=UE9Ht0F)YCP2X_JxAF4eE`tMG1Zj=oN#-n<4K66 zf+tEDBdhTAj04F$f;1*b04oCn1cEpN>#t>#OF=Lytw$gvdt~=N%SGd>ws1i_dy(?z zRMZ2TDBi6FTIok)k?aX2Bb@$PHq(QE726#^{{XM=^3jr#Vm)m_T8{qeFvc(l0|4Nj z27f&kWaQ@r4`Gah`u>_SKs$Qcf=`Nyws22Af-*QD{d7gYY-A4P;~DI9Ai3T`K22UnKS<6oIEHNd|fU0E%vB368aoha$#JAc_ zTz>NLVZAb(L!q{=Ge?SCLXwoX4W`&hPt(vy$9(H!_F~t0#jKubLxg+cH2(nZHC^Hb zMjW((ynM4H{)6LG!jZbW(`QrLqFXz!xVHTt$T5*hqF%LHWi_U`9$Hvw@Pwz6=|}^g zuAGi|knukCxgOJFes@*7RunYTqEHyVs!(aM;~;dUgtXey0x|v3$LH_WX!|nATlQ@! zV9ex5Gp4$xC+Ax0?GEOIxN?p8{eAw0K-JiF`t3pbtx-|mn=B{Kb++1!mkLsp1r#AE zPH>TvjHr@HB$7q9Y}9g`M=K{7=pkf%JO2QNrrWt}Ab3bm&ObT*X`)?7JxA>u@7Luz z^Q-;#e(l@W4~gB4qPrPKdLPD@kGDrDpvNE@l&}cf~ zZ#gIq9)Ny*I%UC$DZ4Q#=uR~OqBskw!9ZPd0Jl z<+^z!e-&^PpH374r^$2k&!;-F*`)oMuy)D^{73UNz9J*Kn1OgnakwBX z4wZnpvK&zd*q)KE(3>H)JiItn@M;NH7%P_Y(wzQ>>8CNz*D7nQ5O$GX!;9%chzKcZ zhZ4Tn3YfFjK6&>40Mc~bxo%jt>kwvC#MfDqRc4mTAjMqg%Z|%gY;-4_e+^kz*H{QH zoQcwDK}kT&s*K~fYd$0P3Fr|Vbj`Et^;pp)ASKnI$nO-Wr1B3b$j`Sr*v{8m5~=Z@ zs8k~^G^`k{A;fg4DDF@Bep-Y#Ei%R+&{vI1Y)6-NnLnS>ueklIuA_z>DU>43!#xSR zxq<8Vsf7qg=NTjs^&0R%NzVWif$fYPSMn37tcAwa><@gX9-M+W{rP8Mm56Jh@ zWrKh@PdO(U(n2OpXE@TZEus>lRn_m3c=>;(kh+ixLfbr?jFPP+q)bwRiRD;4!G$BF zC=S>hj`~FEfhq-D6ZvE1tYwV{t*aTRbHCms^n!8^wlq23kVhF#a!BL({{V)tQ9ixZ zkf9p-+J`^f_wS4zPK3TaK$FPefG|F~@lT2l)U>KJ_5=O$m^!r>CCS zIXNGw(gIA1SXVN2s;q0Oa@j9{g&ckU`Vd)oCgmx1$VW2e(l6 z$A8{VjxsV50=>pb9Op*~k89S{60J0&EO16Z0P%uPIx8JrMK~GvIUF4k2?Kf>h?wU^ z8&*h1{J!Jd_x}JL6>US)&HxxB4s_`$00`eo0+c~MwxS6+2^~b_eDV6}Vn-kjPkj3w z9SPPbDmk^JHFrc>Z228QA*f4qC=Pf@&+qB2W?egBx7UqARQsOBwJY;qQR|gfphcT0 z%$~*7Agthg&bB86*)Z{W$5S~E0>^+etB6n&%e8+wg}KI&w*$B4b)$+`ne$hFh7mw+h#+T8|;mF>l+| z*ODF>$4b!nbvWlfoE|&(8jWRrlRGl$4pT3C`kuCx)X{kmssX;^k3xQWlxGsft;9EQ z7B~CEg&taF8B|BUXif12+B`2d6|UfvoqETI@*aI^?|2~lF}D8zXg3m(y$|1aHO*AB z=Q!oJMt+wTn@w%?vZjQI3rSmxDDw$QQ_?enPqw#X9i*iICm6;(iiWhW8e-R2wl=pf za)lrS44{DnUS#e`t7It-uv0LUrX-elM}TxW$W&HcDUt&y{-=dV&f6 z0CJPS&-@h++J%70o} z2CfIer9_eb;fyN_;WAu2{<+aQeOa`(PXS#DPu=MxU>+Ng=Oe#=@zIh9G~GwSbml)w z%NnA>(-AK#Etcu&Uta*9<2lDU{(n6(FB*g?5$Fi`dW4>uv}tIEN@Lqck5XS@QEB4!0qZ3|atQ@F z13E|(1W_{$B9f?%tYq}|?Vr;cMCy_dNe7dR_9OS5V=Q~C#amCUsT$NWew^p!UdDcRJ0%&WPB&g&PaC%dm z=R%$x_{awY`+@t$hEuRKM5w9=^|cCg9za*WAxS*_G%89|Lb`H$k_f>%$Pu@#sHs+? z*Gj6cp&lg8ZuHeG3!bZ zSvvaVO^fmMMzre=0hKC0mB2kmsDb?ksj_2|tn?g{p5H&7ws!=jDYS8Oy1zkM!;TbH zc++t{AJ_YHtf+=CQU?PdsHZ2B&IYq04gl#$RtI8mJD%k0V79UV1J>289BKw-4Jmkt zLHr|w_{J)7dz{^yfc4IL<&5Ow`FFgYnbXuXS8aqJ!|(oJC*-KOx6?_Z?Ut z(0A0p(n(fG3IOLh`RhsJD=uQMl7A8Wh^_I1BsGNFB!58q3RD?w?3WM@Mh90o16h#; zq6jS@;0}8q-vdk%RV5>8kWx|jg=9@OC^;=7lbmBb^V>o$7tu|nOL4FpN*Go#!Ok#0 z$4;#hw{8&Hj*^;X@N!Rl>zhBcLNeoT`ml19(-KpY z>m$xreO$Qpzy6#`NA)JDU6;D0af;M=p?{@ra>$;4vlfGVq#}VvK=lF-Oa&hLbVR5T z@PsQF5b}HH5#Ky}XpN)7ksOE6P~LaOtjC}0OJP(=5xqoo2&1_K;v34*7_|iiMJZ6g z_+#I{OgB_9_2)zg0EnTLfv*0AWMZJCsxMNHND&9(<031H{{T%!`+;;WgZ-71%(>C0 znwx2c>HZ!jKDT_nlzET8=?cN%kW_K~b-0wIE|SVx}hv7Se@Me09t?enytN$ zI6s!)s0V8{=i=+i*Whc=NCcCFs{^Gf{9pIig(n&7{PW)*zIB|2MEcsRfk%H_s|QIr z^pk~ij{g9zzb_zwIl<%uk~5`*k6#K&XbU(j2~gf zd+Wh4W_7P;8`38M8NvEv9GwnXAf8Vn++#Y(Z#S=XV>lF%M5HSxpMP_q&m?ClQO*eZ z53Z6DMuM`HYpo7+aB=A*{P|b;XgkVUcu`P2SR8SIq!b9&iWSa>KH()Cx3_=9@M1A9YEzx@=lxMqt8ZF&;Vs z8Erp@kDtuw(h^Te7|&vTl75wvB)Qd?{)Y6b4QJ9P@+p z?WJfzN{IYHU5Ffy`fI>I6J92D29)Cjq@V7BaoF+y0BuIQhbzdXmO;m!=t%(k4o~T+ zj2WERgGuurr9$Iw_jqfh^fg%?{v)gI30DOE9dp6m zffO7Z=l#v|{(3uT@Fhc_{U~=14)Fo|6a?!-V?K1MEcF1$=Ltl7V=Cl8aPj=~zBJW; z2=!zSD;USMJx3=?%LE@>s6eEvFE}5kuUZgdV#sIJ$nuUe+Z6R5^VDs)lVLQP1CN2HME_PpGM*!Yb1z#(icm z~ekRiLsU16YbePCJ!y3GP0c!oI{{ z0gQVNdw#mdcA%*=RIWe*qOIq>EBkM?_oe-BQ0UhT`!0uHX zWz~m+Xjhhko|P{FN=W2G+m+%P;IZxslnQ-|NUTz=>w4d~D-BM(9Hd>>Sg)+15v^Kq zh~j5E1f;G|QpZ9RlYyO7G0q^n!JS%KwnK?ZTTmrs1kZX_4~0N0D?u#*Io(=PV@cjU zns!%#arKq6*VvoZ?l|qkOG+)!@JL745W>^<&8VO`c&BevU|ZSSxbkzE3A54=L#jY2 z^b(R&%2k8he=S7Yw|vgq>t+>JnMQ+HsMW5TeX9^ws_LLyl$Rld#YNK%lJKqn|93DrXbqG?@ zp7Ci)lmRJhsUd5RVFgLds2POKM1y~8ZSBQM^_9295~%g%TXQACuA-x2&V8$vnQtk` zH4cPGd8sI(H5T^kk5Or@5cL}EL^VE6<-@~Y1myPFZsdw%6^`~x9+q9-k zj2-yl9m1z&CMZy7qyVM#g%C1nZ*i5{5*tOT65(a10dd@|=5h2h?SzsW1!X~HAdo$n zgIx!Q{{Rp84Z_uS?lE%hvTv^~REujc?bvS94}ScAyQ##3cCg57+oftkOM)FL1t7I! ze${BrlSaJkdyUz)#kWYf_Y&ihpE~E{t3X8zdpRe*Gmn0Kv7wJ-AdD02LFXDlLcOXoRWu>sGJB9aC12gozK}jr z5~PlztaFi%>#QXPAX37>AdR%DksV|P#z^Oc4iv0uz{lnSmD|{3whpOHpn(MX(yg-~ zk6fs4TyK z>*f9^M36P2ER=#WbB~^JqOsIf=?4KM5>M%;C_ywi=|tI3%7`bB06FT%x#L8dQ6(gG zVI#LEKdy`$BSS(bl@(wh<6TrqY2OMxa=~F-ea#T(-ILvM>s*D9@XJAoKl=cno_3vmanSmy*B9uLeN zXj|=Crij~#VpKW+Ou9?xQjc@eTRA`D`s&fg$SUEd712mP_X?)=UUG4pDclsV{{R`Q z$7M?MEt^c|gTq-46w{q&ke^#pQV)m@oaAYzuR@J7 zw1JWcz$YZ+}^B51CeT)H`b*K_4PO&NH5@=@~|VdfJQ@cQqOB9i>yhcAs-B zdLrSqS-dP-rL{_OqWYuLlOkkS8D&p6l&MKTQpQvgq5wP{R*m2A?R;Ms1=RH>pSH6i zUp9@SZZ~&alH@gX?OV3fs(MU{Q%Q*Gp7{R1EQTM7pc@@!V1OxHRl`@<)^lnbRG}${ z2?N=A1zIIqx88>lrm8>yq{4?nb}`zo4)6hCILnt!lse<3cBx5O0n9n{wc>TJ1<%-= zwSUD4YT&I&bpcH(<;Yr=^Q*u~b;7VQl7LA#{W1oj9r3X%7xk?}g+qyMRi)e4?H>1X z-n*W0i+by3mgCMlOO)zacp(x4fOR;_s2x6}D^@&a$;?LzxU*p?D_RHvUdbeA6#&9c z$3v$hwQ8Qv@!L)s<18;7#1`UNVdmDQG68idNfNe!QUP%T#DSd>pax{_B5D@GT#|O) z;IJ+`mX&8w?%Rr~c0EJe`cqXAXUmsyL9Wx2O`RpQHm0B^8I9x^sb$|VEF}RU1Qo5c z8;xb{+#7nUP1|kmsx^Gqt|zHGqTFausmxU8$&$+Ha~h{Q+itjBGUTP^6_+G9(@R1S zj8W6U*t;(?ew8%oO}}!hWd!}5P_!*5D(=*x0WL!FfC^ghWy~w0obAtoaSIFn8hN|h zL_La&=J8fm;l$g_!^}APTTRPN1+603Espg{S{%EJfZ=UHzqWoADfAhzKiXS#%f=NC zZmqjgoYWf4P9-XQx?I}a$%bt(INMSfA0G?JOt9~%g%E^bWxF%Nb5Aoe;!{*Jeo5Uo z?=-98RA}$Eco}32XTU~fPdW=VA4gUZsX3_A4T%{|O=2-<| z10)4bRDqg8K!T+hB}AKB-^K0M`*C-T*cY3^UV7gn9n&dNE!Qi)O4Qy`^QvEUkxnUD zlGA7kLv5h~=Q_Nt#SDPA6tFl1WRf$X>rqf6p0E7JCtGtNJJ%2(kdQrcq0XofIUIf? zp8o(MG%fWHpHj2iu^sdL^n%$OwxT6`$)S#@06p=^_g8%klB}fhlkA^h5A5h!b>FQV zC~Xx|qaL1+l8^w%CyZn3qfy8wf(}4EyMFVkVo*rTJ#ALvt!T?i8Ak+Tg%R`7xWoVm zQ3M_VV8jo61GXh{%MGz3Is1SP(WaP`|`fAO?C?^m}^|e&Ev2lg09&z;*5fqcvl#C8KmBv20(vRBROX+KC zYUxi=REbd5w2UZazMu*E^y<;aEtPP+%yP^5DK$;(-OQY6XlH!m{=-%(!z&i8o7R$* z{{UxbfoLP7p!^$vf<3YF)6x>sq{R7RCPyIg3H>%=d$cRaew6j(OYX`1M{+v){b-zZ z0)&rA9#dqV#1TwcCpsXMj)ROR2_TH%aZ4J{N%gfQDNvA+uo3xvWYY3FQsK%}LR}$8 zoMM`QH6HFWmeZ@J#jR3jPMgsxMK*jIV&{rCL}+PSt`M*gl@&Iet0PzvWRo6$rj$m? z`{bn%J~8NMMAek=CJFI_;#DY74YRctqhTauq^ZR#8T|&g1TcECG1fXlIAe>-~4xEAqbF6M8BxI1HeSq)#<4%fT zMO6U=f-3+?7#Y9^0QV=~SWl%{;NTO;$^L)7+VWFA>R2&Y2_*Fb5}y2Y5ohvi68bIJumDQdSdlQ44XGvZ?DL*9~ch5gvXCWI3SXSE5rlry3!C5;{@}bUf2sjw_Jm`C?0!h=AWG|33HTM*R zI<}G=SV18K^p%`s4E}i2a*;lK`fE}uaFF83{9sDHpkMABbPK-xi2h<7ARy+3X{u(ksB2z#rGpO~Y6Jc369Ovc-@8_b; zC=d<-9nKC2KV2CR2EMkSsFSS}Wn%$KJcIbN#y(mi(Hsy}fIFTs`{P6zBiEG-%uyzm zK}Z=H$vsEE%S+I6f>n|RG3ymbAzKMBoAJ;p_!Qj)|HWENzO2?M>y;?0qzk$9u!9jYo$3D?UH}TR&E*~Vkz~? zsytX!FtwF+A5l?SQ;J$O5~QKl{#q<^8K{aiYn* zumEjihyMWmHY?$82_J-D_dcLApVvuCU<`1sliYAdpGKP1K_*qFt*aS9={X#C3dcIb zgz^#r9nMBFf73|I>*YiW)&(PUgd~DN&m?C*%k$C&b)*7$ILOH1Ui^)C1d32129$-z za!EJ`JoJocdyXR{DCHUX@O7BwS(6fdZA0BsJ9Z>w5ONNOtwi-63XgQ2;~eQQD)IdmrDwju+@Jaws`S#JM(%wAeXBo~ugIeV-D1leC2vUbi zFx;nxM^HH65;A?i*G3qY@<~V_j(H;|jA_U@QzE>iBjKq7tN+Q&^!3U^hoObQbiy~XWz>cBP zMtgjQmKLm_`r4boD#~`EO-Og3E31`bJa_G-$dvE^g#m-pjB(iLnbeab*42Q7ktfUa zrA^Ctr7G$f^D%%p9O-H$Jf#7UKA>pwL7!ZxFbD+Fq)dCL45zr~9E|g&h?w$FPEtuF zIVs8360#Hrx`w1AX-gWI`A=6+$WA{G<^H-_#Ftgn2^jByFgXK7O4LO2p_G7Q*1*K>i}_v27b;YoDJWkigrvJM725;bSxw-x-wKI#00Rd}Td{#LagFVdn#N_h%b zO1}ue$kwBN*4Gp^?`mY{_^saMDL%t7)ty{;$Hl_;Q_z3pnxOCxhmCOf{;2-|wN)|O z6=}bAP)AxuX_U@D$NvDz$QpM;s?72kJ!#>lhi{cF!~SPbnJme8{Ym6a z9lL+KM;vK~xQ@9b(U9VgN~_N@zMkt!*=wj0fAlAjgU5YfElDOT2SuSgkM^q{_I1j2 z-x0ntA6ZFoN3>Z7rx;JcsaXDJTZC$3$B#%E#sK{_SFu`wxF7MI{{ZAwZ7w)Mf0@~i zUtz<)I~#iTxi17~ud+b{100$OUNlMf}np#jK`sGL;nErFrGJW|N@7qXBx4m4Caog%Y*Fp{` zqc=bCOURJ8q0Y^b?r<@xAKvmfu&ILXF1`RPSODL%SZd$feODaF07nDz z{#rn}(h{ao*|yequf8J&Tiu`G~c)@twodRzJcdyorF7r2)#zJ#wl_ONA``?k?%eD-4ajxH= zt)G@PH8-=d3{7r)R`xF6Y>M=f@|^Rp9ZnyW23c+P2;>d|fmp32WO{AHT#%-D~lRZc& zA+nHB+*V?ne{q{=p-+E-M0S>co(aJ=T1N}@^q11XLHnsv0s?(9JK1M?IUqN{!8=Ex zMh`?Ash;mG({GWXP^h-rD5#U?2O6ZU)$?O0JF<5EtZ+U72Nw_Q6_Tq0m$B|8hrdz! zb_Y!NNE6r1(rvnEI&*0M5qrR7^bO?ZBb?{%L&4DUCSn$pN81cqaXk6cDL>bn_q+gx z9G48KAq8^x zhSVmC16tL(oSW8Oz9YN7&w-Z)((d8*KNfRu$Q>&|@4`JRHmmkIhkQ6j9i z#PSxYR#MG;#&IS~KaaC33E$;M%_p{` zo{=!sC?6}c)(sh;_!EpO7}-sE1@ycLMntgHFFlk+v)b*}-UOa$8uACt2oTeRIdeVmTA z|50Y8ve>}(IPfD%H<#3BtY4WiQrX{bF5GqO@r<$~I`J|sLqf#CVpYyas?_=62w~zJ zOQXyV;Ghg+eAyhm$vh@iK!H#m3oStF5SbAQ$AGxb_STz?88o=KGpOXLWu3i-ZEu7o zuRfu~8<)YV=Bm>_-yz!j1Cv#mkJ5jrdb&`Uh*eoXIl*aAX+N3Oqttl#J*GkioEWUFro!UEI~}R9e|CFE(Pf3)Od`>e(j+ z^#rhJvay~PT?9z%XMvc3`tM-%c!EZ!j{~0cwq{tfW>P8O^}zfxL8{=LwAkRE54b~r z6;ymJriz68eV?dcL}S|6e#(FlyMP$uB=SV>VMnTtyVfz5lRU>` zltC-#6Q_x+nXH+AOnCk2h)^Ek+1kf?8#CCxlIPBOBn6q#Sw~2Sh$HAGwI< zpwSZ_dqOyNQn0IxR_|3H-<0kkVh!~`HeSo#^)y~^z6qL{a4<|*tSVj{g@EP@$w2cc z_uLEK$*OXzM`)tHzc06GkNGtXlJgiWDK(TdlzI)~bE;)*zQh1k9z!_T!l!<^kk3%0 zIFK!?o7M_hWaG`pd$P8jus&~Z*!u;EqYC54JoM)06}xZ!HVn_C^0S5U675(0rr9}$ zwyycBMGnGfFZ^X9mFa~pvsZQrey-!3mAJ4Cw@?mwn-Na|_7Ap+LWyGW6&)1;rs&?Z zcy{u6evQ7l#71f@qYIC{=0?8p&vs=I`4e1UdB5@su{@b%3*Ut|wSkDGs5r41X`hKca!xh-7g)rCJdYOW&Xi0%YZh!JS&qiO zs|tJ3^_dKq4Dj|4(28Yw*KxiUe*hCXb0rcZ79$>YLp9z#S{_kYZk2AqW%?mG3=CDx zZKYrtb5)$(jN2+N7qGs=y|>%9?Q;c>)Uj9d77kJ&3!OUQphJmUSz3`URlyQ21J(QE zWHP1M2%-`ZW*16q)S1lhUK4&on>NW@!su|Gz;b6mArcJ=!q2RSv&SLoFN_!N zAW{!b4!bDps2?%LPOI+-9`gO1)>u4Tx`tKNUe7L+p$%h)=6kK$*6h8Kk4_qmi+^Xn zw9_f1TnfxJI1){0X?VLW`N_UgG&Lpq!y6%(7yiQ>%aJ!gMp)}KY-nGTs>@Hb_9fp( zJdf<2hu%_&-DGizWp@hFx9~@WM+--E#wFTT-o~T3BP=hIVvV`OP0nYg24nWwmj_{5 z;|@;}fQmBRuuZgbb2DR*dC;`9GC68@ak_muZYHkohvP*|SxH%mi%g$DUs->86z1Du zra%XP+(r7~3ndyJSuJ<8H8EfK{d2m&sJHrpxldY(>fSWJLHl@j?&oaCB91REua)f; zvpM)#=SE(j?_a#63VymS`N%axR$*_h!D}TkGcD-zpp8+Mc}ufBAwGz(9hd-hdFc{2 z2!y<}c@a*fdM84=hbA$S|N2uOnhU+Y@FuVWhknpBMI@4Oj@(VIBAgsQ6pL8A?1Ooc z5et&)J2pCPN!`J}g1fVq7rIQb!*n+QJ&*c>c&cdL?n!V#ls?aFly4CpZmKlN|C^#h zfw<$-(&K%lL=GxtC1-xk=2R40Jt3X|z5&rSF=T(aGjdv&NQ@+cu`(u&7GyhfXrn9k zpjw|I8cn}n*cn>9b^0Onlp?l*+SEzt4m`9zu%el>FEC}F>4rFKc0-&Wmqpe6vi8te zH&W_qgO!ff5)-&LqRVXx61Xa2 zHX9R#;Vt=cHWZVPBh&#Wr9rh@u^&L+^Bj?L6|pa zH*Y_WE%8bW;%Ln?sb9HgN7@%Z7_vI0HUew}y(k4QuFpMcZ0|lPaclemaCAF1>Q0xj5e&E+iT9i4h1?miLNQYtmXlKMaY~aOAjd)FP`ny z5XR4m#zxh=+ixf}EN-#C*|{>UExKV87*hr2XrFT&2LN-~!?@)EU%O_`N8fkaFY~4g zNsuxP_9MLZBPVX~O~xueS4PmW*gco8E@r)?!l;D*_Ml>5m%Up_`BueD@q<6Z%u_4p z5-1TvedT|)d2`ZD*G-P0YuWa-sQ@ZTp0GENZZ zBk!z zRPByAdtC^rX~oIow3%)pfjU&KWpCIf^V}@vH5q*M<8v1tZ53}9$U`UzB?pI(qg zwh%g=4|L@-#r}Q$5m&OxKC=c>Ujgcle2DmL&#pNcdlFzn9`zua0K%kc%`i16L%UOW zV!K8fQ`q$+yupU@r(uv7aU|8Ra{*h9a5AK7U8O3!{r-1$9bjQxm~q309fGZfmXl6B zL-5KILx_dkjG}9xg)0w!4LQtB2P!v!hN?2>`3o$5BSaTkZ)O|R*7v^ugyJ)59&VqW zCWLHy9Q&$bRE`-je%-^HG2lpqc9`r9yl0n<>MW35$-FM-MMd}f$M;?RD0j>)hSlr4 z7jPQ)O;t=nXtRXbBfqdn5cm-6oxXq4j!Dt-61B!@6l_#zd&i%Nm{g!?_)e z-10!(qvSC5JmQYN2TH)VkJX7W)A&>8s)U=Q$F22vc{Zb-WrUcd8Vnw?^^`4?zcwx4 z62HaU^)=BeyVj>9goFj>=wQC9;8jp3*30`?jAfLq!BW zh`i@ZlCJhQj=c(u(ZbI?YViGd*>%?r^bT5)C3qGC+NaR)?-4`k_A2+#5*+2F1^fsT z!e41!qdS2Id0%hVMXZkoA@)srPWo?f^F&8qxR7S3-xItXvs{bty2Kn}9jEMJe9(`) zXF^=(&c|P0;u{A&TS@vrTUljk5o-GEUY3%v{Sx7>fPG9cXN@G26ONqcLYD=!>#V)e z;v)3AKk<^oy&-po2oiO*Aco`jvUSoLk2m+}>u!1Z0bEvIOyP_zTgVlsz33EScZ*N1 z1cgV22NX&!js8wejpMsV@imHZ+v!VGd+Y2&04}vgE zIZIX%KREvQT-?BR;jSB-fSVUFWXPO7%;EH!^6J8_443)Bg#XO`I3ZAMVPErj{ZS7x~%&C*|pl1<*z%R(SB_A z$*FG(aa@cJ>S$I=WxSB?9AL9`pRq{TW@~OC=2DKW1970!(W?Vil}e6)3$5yRZ1_;! zUi0eaV+`lJ6yDdm6u@s$k>=3E+oC&k7p!?(c%Ra7{c9l2J(7R*sfn2h{#8kgO~LzD zMN?fH_g@tr?h>5aucUsJ@#z2f*Pu2y;Htxpbzm~dKIpbo-vYi^lG)D*EFLhXHCv0S zDZH$>m^O@dX&(GDOWyE-zUn#(lq5l|iKE~2lKN@OI)5qioMOq~U-Rq`=ilD# zof8vMa5lIhyc2H(muPP$#67*eZ=|9$X`n%?FM$=GOLN9KC4E+U`it+#C7j++Ubj-JK)(n@fZnPRF0mm>vqh@qB{&&g2ns*f%^F zzKEJghQ912@z z+*fKQI1VA$sb;`4wUcWjHLFw73(i+#7xs&<20)oR7{r8m?{&t2Og+^Oy(6Egkg1p% zwddYGGfLHR??4T4-+K|Yv(d(GF&Huxbu}thzltq>_WT4(r96y-CSRN%Lr}Kva08*d4$Q}0KcDN0By>9N5`!&z8qa)-0 znUf&E?swJai=^H{gyl$jCE>E>@(Jvv{iuvfjvqI&r}js$*!n?KG*%L{N8Jm|Zs%%I zXc25-CL3Ua&JH`vCd8CN@kl84?dC=1r<`#IeMJWG;^-a|xjWM4!c|^y)}`Zl9Wr=D zeU>^Yr9hgV-VdesmcCM8!ESIfBKUK^-Z#NdtjA8k#Qkrfhs=eCQQxF;A98rJd{*)g z3UA4mvZ2kF;;wnNR^G**QK`yY zf5Utp$7rtEq#8nZEvJ*KU5ZsomTU@f_441G@&*vPl=*$Er?u$5Z-!%vDaSK>Rn}*W z@8H+7Oq>f?5?i9}uz`oCUErY=sIu9ykbe?*TktppPji_j{J~#QqsNc1;C^G|vnvRr zmVPH^D)&y~`^H-j!Q5hBt7o=F$HC6lQECdwUvpU{d{)#>?c(& zW4o{{rIJ_Z(s2j*67!NkhZOwHmfm09Xoa77jt1_ivi93fm6r3WL|b@?NH6Vowj4%q zCA6;NT1XFgdOJxY;hOG6;>NinPC5$thEmp056GLIe2Js zU%jjDYoARb7xIF3@DNw-TIk)XRnMOJ=zF$!$K_I((Y$s$3A;$%)EuLTd~$ zO_iDtNE{fFJUlSO8)GkUEdas4L45Pvy}j9h&n=cDx*QZThB#j1+{N+E^)+_=Ud&(N z>=K}Wu_GQvcM)vgnOHXDBz{Ku*2d-($6e9E_=~;(v_HZ%DrqvQM(A<(;=tnQBH;&v zbemucj{K09TyoTQ&rOYg<{H||GMf58J_chX1iZ4s3+b^ zNE1y=N*ir-ubQ{%DVzUArB!(ISdqs~Q_0+ELZ2axs{SQD(|1WS0+%$mG$|k~^6v%p zvMR~0b4_l&r)(cZB0Cib=R9)x=Hhy}H!T8mzPAPJCXHsq7l&?et=52PmKeV#Y?mQC`G(WJmK7`HEPSC=5ogAIDRZBVIN#doDugki* zkz!@TgKdce@sq9%I}*X*Z#8A>-9smXkrKYjL4}?j0~gZkwz;8Js73_yX6vXFh0s_v zlTolN9Uscd?ky2^PIAhcf@fG)Y)Yapj zzFTc_jN6{0ceSs+Pjz(CvGDR2dCo9;*cFVVHr#`Ap7EFJ!{x$j?#a_C54(BBj*}&8 zFXe{Tq7#6J7&IqBhTZL4t!T1K!HC2mFu^o#kzBH0vdS^3+t#_JHWT*&CW#Mj0QpLr z$5!_44d8QGSwVJ)q6AjqiV5Go_=WzYvG^{)e9DIS6Z-vcx2u2?! zjA58$n8KodnSJOoP)Kb3?VUC8Lwh{hoQrL-TN|Rw5;(Ru11FRPyF-xab+hANBKHM5 z&o%l@>C;WD30_(8WNLdxwVChQehH;tHFz0%7e#kB+hnfhDNSGM%T75@GP=TF-X@2F zRDNp1rjm?c_Yn8y8UJ$O>P1U)GI|f;5YvXZzJifJi+pr@Pf|6wo*CbF{m!50PWxNtD>-KWV0pU>aGEC0 z)*7gU40KyD)B5tTdrL` zodO#NV3E<();{OC(>)Dy&8kt>On<2$6+*@f%ay-(XhXzFy~GoSzdrV@Fk2P)gv`rF zCwavPR1OK+2{3LDxx76ryvPZ+$Kg4ivF)EU$#3(A!r zg>oGo4~^YXO*j>Aimbazrm6=y2M&84m;_fSnNkHhA<2E@)UWi&1*Qw}A#d5A>8NGC zwBd(j2g!rm*njVpd+MlNf4I~-OXdppJz8J?Ch>f!C^%+AO|OX8hz1Jhi+X^U$)=*C zb881(Bd#;qH9%7Z?t|*XLt7J0+Um=N7aTv)F1o^o^RLY)s@bcbOj9I=%A{(5rxq_XT;$5JnlJU0pT8AluIwX5+*-Rnp-VUrXU{P?^gX4nRgSUE3S(!V}!nx(8(sMWks?>03R1~ zAXal#Y>Kf@A0SJb@Gbi9o8hv4cDy5z5k-c7k4OOUE51xQPnOMFicD@M?NoD~8uOAS zBHFCpioPL-T(+mWnHnrgJsHjJW!StHMKJ7yiz&O{JTgp35o4}nwt=<|KSSMI_H!u7 z#Y?6*3@-<(cf@99LM>DT7%ckkG2j+rO_!@xNc&8`*mE7w9IpQd+I(o(>1)bE^8q`W zNIr?TugD0`$-o552WP0@5)#zwX|k+hj< zXGu)L1@Iz4V|Djsq+S?%OICX;6I1_PZMBPq)8IY7VzEw7Z5zctReDwKYr!plud*7& zMN)PiMYiAEc$Ggwsz?btC7yQ|F+%Zaba9eg^(7@@e=zqHgGolo3OMqJiI;gr9$*Nc z|FECK``o}s|5)*3%7bm3hwFO$c!zz|l(OF=o|kYPHuUAv7y``Ykf(6Pgg~_ zw8}2aX)9jpt-hk8byZo#W@>73$|4a%iDxQqqHKDChjgnCJcY?h zgpD2O_o8tCOheEOj!(B1%MkAGNh9)Z7o>2vOOZpQhFNb!IrF3Auo0p};$&MUTEZo% zT-0d+F-#2h2qp%9nX+<|GhF^ko2C1q9A(Znn3(S^j&b&PlUf@O#`$->nG-~kw5~k* zymaD%*OfuUVO`r7=3VLW1<7suDo4MTf5s8*;e)yjpfh!KPELdB>Z{bU+|>8Y-~D-C zjYqZ{`JkKkcGZmZK8172$*soQn@LD!5u`YhmOwuNuP^JBf)1eho}9H4H>2oWL8a?Q zUAZ{LDfhm^vEK0;vToCE@@`YA1tt+vPj^)J%i9~g6qo%Pn+i5>8>fG+M*2h=U6eDn zF94>9Fssh<{T}sjF5@h@=Js#$bODQDU(dW!CKdqyaU@kK{!2K9|7$mOVDY~<^-P0Q zAkUjC>F$S!!xOa7Yh4~(N)Dx)7 zOLz>)9w^DHCnEBG`RV!AMHzhj4<`G!EdEkFD3a-8^*7rL`iTM|kW_gz8 zZl5Mc-Ws6PXQHkjUuoC=*z;{?D=$e?gxgDWt*&t_s2cFSGm#j~avGL|#vJD=T6^0o zLF#NA83D^jqRZEu&FOsanGo{YzDftUlq;7xxUa!@#8eB^!{jI^*aps84w(N9X|%}= z-TODg*bx26j43j>PTZBD7U{JpFvaXT&TkXrD`Az0d*66tu4b$2Rb#vg_DPqOYK@UH z5R$G4oU0NxGK$y{vQQy+{@6Y8d4?v&1FEQmUhY2vP);O0E>lueb#5O!Cd z{CQCUp@f@-(-hcd?EJ@WNY7lS+k@#2GQmH39>4fwa?P;v&W!n9)v4)0&H!NzR@TUx z&nH7MqXZUimFCV;Dx_KatS5o3149jzym>{I?O<(itQbc!^kMNVz?9iE^vgYa@4@b4 z!oXNHIm-Ji{!;j=Brw)XBI{%8W1C|x2_7tX*2^tRzTtok4!`tPVC6C)QXG}($)+Y( zi@V#5OJvKaBpAdl?*+mF*gv4yhi>10FhT#^>E3fdRB+T7-Z8vEj{RXMg3uE|NHj`5 zN<11@+EJQUs&pW7Dsm`7xF6>AU_VS^Ggo0F>>zJdVcL%*sOA{9(@C-L3Z)y!D_!O}LmYc?Lh(a_QS$4zvfpe%J_$`v4-Zav#@q`P(WcvIBIHahJK zNNlHtB`GQCl#yO7Y!H)n$nM~ExU|~YKi=tw9$f@+D$-~p7wZBCm&i-&x7`&rxCArk zbfb@szmEy4Qo`mAf2Y+z!0t9!*!>@DzyBplpeT;&XgPL#p5l%rc4R`7GCihgf#ZxKa|B3ZP|W~GA5h(ZQcE*4UDz%8|V4IX74Ao9o9 z8+`0&@7>(JNEiq>{&e;$Y<5AM^WPXLt8$UrEq09j(~@*$)K>o&`756)Na(;7A!uO< zb3}djEe|R^s!np@^3Z?sXpUv;JYf3DrYm02Fu!ILaQJ4mtj`e7$`L(JLu53~E=QC;Pv&FVCaCHKn^snq ztJG_4)wc%X`L>GeEbcKLwc`=)7j=7s>fgTb)x7T@IsAMJf@2j6UX;QuMi=+@gd1zX z{*SOwucr(#zmmdxoUX4ddtz}n|FPmHe-h06Enp^xSQ&Kkf84)d@#A~q0KHSI*HAKB zUV!|2Cj|zfW|OA!1-xor^9o_&@1A!-)kwmjA0we6;*4Lrmd-6sr^g*1zHmsE%rJR1 zDf=0(;=`AS>ZEvtPgEts#|ZOtX`WOy8p8Ngc>;x}i|sv)qc2o9o|mDA`@Wb-T2(YrCGvst<)@ZT5%_YEaOR4#IVbrhqQv6S(;0@{1#Ww+lQ_8i6 zhpFjaVQf!2rdAsnYNDDOvB*fjmBpgoBEGNL7G>Xec5cJ7W0 zF(DoKmSho89;po@h*3SvDa=3Y&SaR?h3iQ3_|fkMaVr=}eg&v;&xHJ2|2O_trk)SI zG(8`>N9+8MY!bU8A@v+WZ*GC_o`iJTCU&ZxUe8=`U$QcKJS=S9zuR|gPK=uB-Cbr4YQx<*=Yfv4>A}hy0p89E^?8=HS4(?n z&n`wDIZe;R1srNdZEGeU?ySO*u??5JkmXP z|0a3XZmA)uUs6QgD?J3J$wJFjPw*S{8~Gabjp~Y4N0JDPt}V_)|D<MNsee&&(ZpS@wf$jic z`>a^EXU4TbNZ7gA(52tT)bK17NcePO#=N*>qOPF?Fgy5+azuq9MC+7gQkbUY^=2y# z%NG_a88bBv8x0=~c1+ua;zgUr%uMY>&j6mP)SJSnL5oqRaleo;s}O^Pt-h^~TbdU0 zJ|2UO?A*e_Up&kh1#ACvg!PY2je2OC{GoB{uE_KaSG(wAmA&&$wW zzg5}qzke$tXo-jQDY1C}T`1Y)P-c`pyM=2fsr=g`b8z5ok#kq@`Vnk38q>7dq};sM zilAr#pum1zivKwngB+|M033WWI;U)%YT_!_<~p+j*ywC5|LXmGH-6SOD((-Xuy!4_ zH)m;aZf9(B)<}*MZELb1`WWLjg`u-+u;{ud!$x!8synjtcbi;j_aKOnG zV7c>k@>%W4Mb)y`6-Rt3o2>7Q?htxC^hlXXRsnfb`;E%){_tnXvP;%o!Du2L`LM@V zKTB10G_GF9d+lU`uRfg={KTzhtaKB+lH6EOHLi@Q)u#g&k{Fa~^W5-K^L zKeB?J`j;{xxj^F-gm0Xhve_i2>_ujh_q0wOi=yuf!P%ar-P4I0sSlQ=tgN#DRA<`M zTZ{K5-7%Z2l*d!dpFMnM;LJG$YzdoBbL1-cMev<$q}v zfv~cdAC$OcG#u`S#Munjs4D0FQwtRN{bb%0f9*JG`0jf*yj`T^ug8Jt@!pXrz@?=A z=PZ$Rzo|8W^^ZntQfxqj;DJ!hvCsjH_yLVKbEY5j_&ZO3g0yGygVDrN)cj=8THWE@ zJVoN+TcjIoerXE8Bf^b<5muspVYCiiO)RNld+l*t8Sd4#TBN(dGCxD2X%Hw0}ABC_HpareTmzhavj^!=?TbbIE#44nl({716z? z^-Y|0S0c}4N}g$dVIIGJO)=fjh421V|Le_A+KuWiz5yb(SKxSN5z@RkvQj^%bvwi( zw(ndJbELMK?X@|(G6C|pwMUKTz=m*!ta+yh-u><@uX!}t9o)}(-^y;63 zhR$2pjA!H6ikzU<+T%|4iNJhZ1HW{=+aA%pmj5prM{XjgK4} zhk}@fm&m^iwAf814HyB#9qUGvSIez{i{Dr!#+?yxt6{^tiT^mfTsDAyd}E-9 zzf2Be4Py+GJM%nT#D|nDKE+xVh=1K3QAQD)5Im#wlq0^Dv)3%)if9z<0+pf~5-7YJ zC*SmjvawlEPW1l8!JhMr)FvZ&+KCQU`!6ULN`RCcTv%l!suTHaUmRA5O~V0WbBb^q zCm)lJlDK@T$MY>5?UX{hT6As>vYPEjVcKaq61!M+vHDRFoWTeu@2SBmFIR%QFLVzA zoR9Lywo?L%ONMhB83v4(%3A^BMqZuyeisB1N+zmxwd7A5x>yeD;Xz1KPtH6>|ttsQuZe^re?tWj};MYFpTnyBVmZ|)v}Hl z?xy0V_NF5Cq#~ppH)}w;l$|5vY*a*UIqGDNa5oMSk7z>>dXxK-2aw}^eXhfR?~9iU zP_R!LjxffjGt$Lvac*;Nb?%u*T5^Jpxs&2O@vDvTSWen8;;INwBo zo~2FB-)oCv6v{&qRKzOS4X@$8LmbXuf=cv#$&~7n30Ie3_G%~rP{T$O${Bgxe zVt&}Ho*d5!ZxA>DwX}yxlfqv@9P^)3boy|LkiN(N0k3Y}MTXo8WBCD8{=obq)`j%e zLSI!v$ougA(P;2PY%UEsNs-E;whOr9Cr}YZZf`SS^-a!vCK8!9%s3 zI?!ZWkR9qTZTTb)pdPc>J)G&?YDVjt7?+POMJ~KEa(nI<{FCApg~nY(JM&Xzlg)9L zKZAYFN>&m@7rPW3NwYGCe{AsGePSV9@|^o)iY_)T9{(eSK6{QLUCY}at#rczVJ}p0 z)7O|ceC#IzbIm-@DJq_rJu_*H#eE5&0rK`#U`z$Sta6`^ZiRl>k9BCKY!9E=t93@^ zOiZW5U6LM)k91MBiS3_jO#jIMDWNe7D^!`((<)+s4_ztO_s$>81oT#01uo(M%qgrD zy!oEGj}85pSz0ip{5SV*L~fd+EN+^??KyJKfw5}>Y#nmJ0-;{f0e+FNutn>;3-!%b zD;)Bz)8C{FPz3FsvjM-Vt+>4IFO_!)W~eA!A^(0GzZyh!qf~p^Ja@lO2gJy#Hrg(4 z2s{s)41KXyVgzxReff+LJa!y1iVOyL6EkKpd4mQON~{OfB8;!s&YIO$$NNAu3F>IG z#hRTZ5{Thk_z6nyU@>ohAW{zadgo2go1NnRbkPOTh}d(r6Y7(gB4p36sb`Gpk2BYc z^=yisYyG^^5{Bn*qxMH*JFC!X%kwO&jQ!{oJN$)_r>J;r6n`jIa2Vc|^y=%NfCu5M zz7*j2CHu+a{yhH0u*$RwfLe;jS#ubg@)`@x0sT2icpUu6)K`Yn^m$d!8~LFpuNryW z2;AjEduLfkIb_@^`W5rsk&3#=R<|7MOSVO2`mbOv*+CFys9zsMRG*%o@I_GibK_TB3iOz&#C!>*iF;lerjy7K!#y(On{ z>7meo39h@HRno10Wy_UdUp@XD)`|z)EyA7>b#Y%V9Than zDm}Shy=>jZ`awLcP37E?C{p@z_CTjw#kH`(@Y<2!w~+>U-^1i=1}XBM!Gv^5PRa|} zz4-<&T6epS@Wa#o@zbFuohD_P9DW)77diMMj?~FTJ2MqdU(yH+OUiyu5Cx>(Lbbq* zg}9pG7NY=<-;Jiz>N7qLgK_NB3u7ezM(;Q_=P7U)H14g@`-fZ(DzHGiPn>|Y-XcHu z%G6#|*pvj?5!7kbrPgUtG15;fijmMfrfK8-2%eI&jI&$@|0RDEsI`nkuTLLGuRksb zn?M*GQlae^l6@%EdiBZ8r5Es><18KC$LtP_$`$w+?{uQIKZbOy465ygHrD)BA=X+< za!hJd`=Vb}@x&v#FYRRv4M<(H>;Ofb50{%#os(l|BSZRXWkwI;8?o z&|o+W1f(%E7=EC{{A5_4dCpO+Aw(eD^h+RD8;|o7e}Y*0*gZ;NXrdssoYupr@TJbo zy<_$D)>lhIe#OSvsG0mZ^~qx2k<0x2=|duSJQRbd1J<**1#sS9r%KFu5jiWzg+MOmY4$L(4|>Fq1Zs8 zeX6D6)8{Brf<>Pzuct8c$vdyH@A8W<~v z1DM_JRgYKzsyeHz8c)?PXNk2AT{Lp*s%ku>7=F1~sb<=ezOvI!O}V7G^tk+dElbrg z^`5XMZs*zWLNoE0za!hJ+wTyeb=$LWQ-q5AO-<`iieyRAZclYV^)f&&PmgA1sVQ}j zyfk^+u??)2s~k!?2kttExN{Mw5tMsCvEorQSk2*}42kOeRp3|?`?uk5`oskE&tyFt zCe~L4cgYE~AEms!rX8t)Q^j!mJw2OGxV z1VJx?aSXm=lL_AVLTPsH;zkD%;axFls}8Z{D=7I%OB9eYQ4WR$4TA>5Fv-hsfYLX> z_&IXQ$*PciisqT<3^61+fBb(gv>E(i(oxDkV9sNBzg)ExXSPpWLF`Woejc5_cY)Tl zi}y^kKcVmn_WZGeu-#ok*pi-(L7J|lJ`U?LX{At6QI3?cC%QwS zKk61Cc>tI=$YJN7M&fKp6`tAG)KAat$}1^PcMY}9w@$aRLVhFXTD}mjDh@_aPcthT z?j3coHHL`UK~+U9L)-hs6|Ev%Jw)KfSyI!{vYhukHI=4lTq0en0v*+_n4%#`fe!I*s8FAY)2|-L54ocLF#KC&{>z_-|8Ja#7D*p&sumqP)Sg4Hkq3#{hw+Q29r^JcUt@>V$5Y0hxuDz=alK zH`JqKUEScrRRYy(byY;}PW!AJeNP%Oh#$%1ZQx6&AP{A|LMKlTC1tGM;AlvUo$TK0 zR+Dlkv}aD_O|i$0)EHt5sU0$Ow?GumrjHEPi@a7Gl2Ppv79ew?U#H>*8AbY!u1 zq_gU2E~}8E@VQx^`j}kE#@{f2Bafp>;!7yv2!4+6trcT+wYfYYCk^yVx7AedR@zbW zCy{lhu_)&w4z`UbL6P-<&5m+Wfq4w;6?KK`3`XdE_>CQd{lQc$b~n{g4V?` z>NY?M8|5U>0<4FNNRU$8C}F1={?k`l42YgM(k(Dh@jsan2(o~9kOnrfK+hc& z$4HG6jZYlC?R1`_g6P=lKz0y~9**AK43Z!nQLm@c<-w*qyfb-x8xaGxn)}5t{M0Wl zo2>L3<{@oDGiTLvEn%)(WyZk&!-V*C1Oig}$@STjXobZ*PXplG&os#GKi#-m^}+TQ zO|6ByUyTy=nX1fBP1-EwQaBP9>u8TN;~3bL6;3c>ja@Q|u2HM;Xa;-Fdve*i6#JQM z3x(sm*XdfgM|R)yyhi0VdkqT;r>@tdyk2KkV)&U!#Kh%c*y%Pl>w@&7Y7zBzLdf1# zX~dMT8W#uI`mz9sT(Jn+hX; z5P@(aDkXRw;|hl~)w735g^!&%t1rg4?eEBfyI)67le`BXyho&VTX9M7d288|)W-6O zM3q|VkI9YT`C->PHeh#LcTF@Y_sztm&arA-{128D|~Es0_P=)cQJE3W(^B z$bjj4x^smc{I06*g|!~Nr^H6JOa0?cOj1bYKDVJZgibEGvsn$DZP>+e8zz3=^E-dTdA$FJ&*T04yk5_@ zC^yEFU0!L4lvYv4HI^Nga$f8D-E4g#sWV5<;mSJe@*(F{3*Y~K8MJ~WP+IC6N7K7Z zh9V3*Bfbn39jGZ)6(-}uDJ|*_pXV-PISVJc-lJsig)$}~aavC@qhW2C6fov;dezJn zHK{eWI4ef3G^-roTzqqp?%4C4b>xP*BlZ&Z3RZjU6x+|>g=nMhcqqT^$?V~8A*Jc> z+`W!mD4!9vu_iUX?+K%#VcPHZFt9 zV#=K!dwM^+QtMsksb9`TRbVvNh|yLYfy!6WS7{5|e{udW;#r1c->}`;zTx}c^p{8L zwNn~umv|;&X|&t4DVoCTReFHy$5FQ*7l+>tqwH7e^6pgEGuz2S7tME~r}EkxGou*L z8b?tj4|{s8c4k`_@h#Y-tQsst#Da$MFIhIMnBlL{*-b}H`H%As9IrsH&HYJv^Z~kz zoU<8{+_oOQc9O$8v0vcE)s7||yy%X-w!7|-wT3sud$B&L*~;Xy;p4;`cU~6o#&eZ! z%@f*8pdWOFZ7ZfSd{l*krW`c+(jO=$F_$R6TD%^%d^Rn&$m;pfAw_AR ze;?fhESbA^B+)lx1HC!20eaPQv(X~dSbJDI^uU|c^s&Se)1AU-8Hoz5V~(&P`(t%< zb(#tSt~yD6dr%oMk?vv8nMy3%B5Yj_jyOL%v{Tn!+)izYf;r%laaf$4P(~B1B|mpq zE%P624NqG|{G~PBNeaachJ5B>aeEe|Ir|G;v=s))hsijNCBEU1Y zyuEG-VIOn;h%%iPbf3|8cATQOx3gBUPTjfNCJ{|B>CWbubVr$31fxlyGF=fdaBELjVg+aYowT6m(OnqZMUEd5^f1c0p{_B~ zhrK%`dZT@{Ut{a^#=BMLf|x$*5}H`qqEm+#$#C74?+;^W{!Dp&BH#dRz3|Tt4}jg= zMgL({ke58YkNlUY;}SGD91S`6x}dPpGym5OyVxvFuuUp#cyJ_3#f!j7s9s^D>l?U! zgM(MUB(-OJDXRK;)Z(67itCzSA!;`rapDkN^YXsh*};R#C;9Of%X#2?j=N-5P&v!d z=1`usbl}Wu!QNlCid{*EUF&sw?jp%%{&<75 z;m!o1U~WEaG|mXxi{@(v?H==~8xWKIeDLv=&AjimbT6nkKvKJE9On87aCf~f} z#jNG(!B_}ClNz=#5Df$y$D}NcwZLi#TPl=k^y>k$4c4Bo5#?}bY)<4ru)FP<5tQcX zI8x=M9%Q6?J+JiGG-LSF^3%6k(G3M{ub{dlWKZ%#+Q_Q>~{Jg^`b*o1MNJr?(B>_&t1 zI^gN45qAR(@sg-)x->$7N(xE?LQb-yf!_2{i)r~$+tHcw2*0@yY8hA>Ed3WuZS{_+P*B>6UBspjKh%FPkWVrUlO|1~@y^o)wa}q zHtTI5&~(N(fYfF`EK0W6n!jy{R<>qEfFLU28sxcOy09Ggeyd)lqlEh~seYFKuUo7C z-k$jXXanQWaSy1rzF#UjlG9^8+6?9C4UQOs8Qt8A7Tasuoo51)*-#J@#7gSXKjFR^jt+sC@%T)GO zs6UQE7j*k-b}7=Ii7x>elara5@ieqXEjMKe(p-Yh-sck+RGHNN?1KUnAvrfuIm%uow5qTZ9z?m^E zkun23(HRW~cO!UufW?fCQU~aCiW@tni2bfuuw9=f*E{9XE01LTUiC7yGvQGubIB_C ztS^nKv9|a4>Vxi|mWtGEoAP$RK#I@BjWj>~4dUwC#AlwKts>x7A?S>gE2iARkNiJw CoC$RR literal 0 HcmV?d00001 diff --git a/poc/lpc2148_blinky/run.ocd b/poc/lpc2148_blinky/run.ocd new file mode 100644 index 0000000..f56e73c --- /dev/null +++ b/poc/lpc2148_blinky/run.ocd @@ -0,0 +1,6 @@ +halt +wait_halt +sleep 10 +poll +load_binary /home/david/devel/arch/arm/code/blink2148/main.bin 0x40000200 +resume 0x40000200 diff --git a/poc/lpc2148_blinky/startup.c b/poc/lpc2148_blinky/startup.c new file mode 100644 index 0000000..58d96df --- /dev/null +++ b/poc/lpc2148_blinky/startup.c @@ -0,0 +1,115 @@ +/* + Initialisation functions for exception handlers, PLL and MAM + + Partially copied from Jim Lynch's tutorial +*/ + +/********************************************************** + Header files + **********************************************************/ + +#include "startup.h" + +#define MAMCR *(volatile unsigned int *)0xE01FC000 +#define MAMTIM *(volatile unsigned int *)0xE01FC004 + +#define PLLCON *(volatile unsigned int *)0xE01FC080 +#define PLLCFG *(volatile unsigned int *)0xE01FC084 +#define PLLSTAT *(volatile unsigned int *)0xE01FC088 +#define PLLFEED *(volatile unsigned int *)0xE01FC08C + +#define VPBDIV *(volatile unsigned int *)0xE01FC100 +void IRQ_Routine(void) __attribute__ ((interrupt("IRQ"))); +void FIQ_Routine(void) __attribute__ ((interrupt("FIQ"))); +void SWI_Routine(void) __attribute__ ((interrupt("SWI"))); +void UNDEF_Routine(void) __attribute__ ((interrupt("UNDEF"))); + +/* Stubs for various interrupts (may be replaced later) */ +/* ---------------------------------------------------- */ +void IRQ_Routine(void) +{ + while (1); +} +void FIQ_Routine(void) +{ + while (1); +} +void SWI_Routine(void) +{ + while (1); +} +void UNDEF_Routine(void) +{ + while (1); +} + + +/********************************************************** + Initialize +**********************************************************/ + +#define PLOCK 0x400 +static void feed(void) +{ + PLLFEED = 0xAA; + PLLFEED = 0x55; +} void Initialize(void) +{ + + // Setting the Phased Lock Loop (PLL) + // ---------------------------------- + // + // Olimex LPC-P2148 has a 12.0000 mhz crystal + // + // We'd like the LPC2148 to run at 60 mhz (has to be an even multiple of crystal) + // + // According to the Philips LPC2148 manual: M = cclk / Fosc where: M = PLL multiplier (bits 0-4 of PLLCFG) + // cclk = 60000000 hz + // Fosc = 12000000 hz + // + // Solving: M = 60000000 / 12000000 = 5 + // + // Note: M - 1 must be entered into bits 0-4 of PLLCFG (assign 4 to these bits) + // + // + // The Current Controlled Oscilator (CCO) must operate in the range 156 mhz to 320 mhz + // + // According to the Philips LPC2148 manual: Fcco = cclk * 2 * P where: Fcco = CCO frequency + // cclk = 60000000 hz + // P = PLL divisor (bits 5-6 of PLLCFG) + // + // Solving: Fcco = 60000000 * 2 * P + // P = 2 (trial value) + // Fcco = 60000000 * 2 * 2 + // Fcc0 = 240000000 hz (good choice for P since it's within the 156 mhz to 320 mhz range) + // + // From Table 22 (page 34) of Philips LPC2148 manual P = 2, PLLCFG bits 5-6 = 1 (assign 1 to these bits) + // + // Finally: PLLCFG = 0 01 00100 = 0x24 + // + // Final note: to load PLLCFG register, we must use the 0xAA followed 0x55 write sequence to the PLLFEED register + // this is done in the short function feed() below + // + + // Setting Multiplier and Divider values + PLLCFG = 0x24; + feed(); + + // Enabling the PLL */ + PLLCON = 0x1; + feed(); + + // Wait for the PLL to lock to set frequency + while (!(PLLSTAT & PLOCK)); + + // Connect the PLL as the clock source + PLLCON = 0x3; + feed(); + + // Enabling MAM and setting number of clocks used for Flash memory fetch + MAMTIM = 0x3; + MAMCR = 0x2; + + // Setting peripheral Clock (pclk) to System Clock (cclk) + VPBDIV = 0x1; +} diff --git a/poc/lpc2148_blinky/startup.h b/poc/lpc2148_blinky/startup.h new file mode 100644 index 0000000..9c414b3 --- /dev/null +++ b/poc/lpc2148_blinky/startup.h @@ -0,0 +1 @@ +void Initialize(void); diff --git a/poc/lpc2148_blinky/upload.ocd b/poc/lpc2148_blinky/upload.ocd new file mode 100644 index 0000000..6e57080 --- /dev/null +++ b/poc/lpc2148_blinky/upload.ocd @@ -0,0 +1,6 @@ +halt +wait_halt +sleep 10 +poll +load_binary /Users/david/Devel/arch/arm/code/blink2148/main.bin 0x40000200 +resume 0x40000200