From 60294709c75d390b49fa8c7d6eead24f373a31e4 Mon Sep 17 00:00:00 2001 From: Luca Borsari Date: Sat, 12 Dec 2020 17:29:55 +0100 Subject: [PATCH] Ver 0.9.6 --- changelog.txt | 20 + doc/30_Standalone_Protocol_Serial.md | 471 ---------- doc/OLRN_Protocol_Serial.pdf | Bin 0 -> 435038 bytes open-led-race/AsyncSerialLib.cpp | 339 -------- open-led-race/AsyncSerialLib.h | 101 --- open-led-race/SerialCommand.cpp | 74 ++ open-led-race/SerialCommand.h | 29 + open-led-race/SoftTimer.cpp | 36 + open-led-race/SoftTimer.h | 23 + open-led-race/olr-controller.h | 1 - open-led-race/olr-lib.c | 46 +- open-led-race/olr-lib.h | 10 +- open-led-race/olr-param.c | 9 +- open-led-race/olr-param.h | 10 +- open-led-race/open-led-race.ino | 996 +++++++++++++-------- open-led-race_0.0/SerialCommand.cpp | 74 ++ open-led-race_0.0/SerialCommand.h | 29 + open-led-race_0.0/SoftTimer.cpp | 36 + open-led-race_0.0/SoftTimer.h | 23 + open-led-race_0.0/olr-controller.c | 75 ++ open-led-race_0.0/olr-controller.h | 58 ++ open-led-race_0.0/olr-lib.c | 197 +++++ open-led-race_0.0/olr-lib.h | 103 +++ open-led-race_0.0/olr-param.c | 26 + open-led-race_0.0/olr-param.h | 77 ++ open-led-race_0.0/open-led-race_0.0.ino | 945 ++++++++++++++++++++ open-led-race_OK/olr-controller.c | 75 ++ open-led-race_OK/olr-controller.h | 58 ++ open-led-race_OK/olr-lib.c | 189 ++++ open-led-race_OK/olr-lib.h | 103 +++ open-led-race_OK/olr-param.c | 26 + open-led-race_OK/olr-param.h | 77 ++ open-led-race_OK/open-led-race_OK.ino | 1065 +++++++++++++++++++++++ 33 files changed, 4088 insertions(+), 1313 deletions(-) delete mode 100644 doc/30_Standalone_Protocol_Serial.md create mode 100644 doc/OLRN_Protocol_Serial.pdf delete mode 100644 open-led-race/AsyncSerialLib.cpp delete mode 100644 open-led-race/AsyncSerialLib.h create mode 100644 open-led-race/SerialCommand.cpp create mode 100644 open-led-race/SerialCommand.h create mode 100644 open-led-race/SoftTimer.cpp create mode 100644 open-led-race/SoftTimer.h create mode 100644 open-led-race_0.0/SerialCommand.cpp create mode 100644 open-led-race_0.0/SerialCommand.h create mode 100644 open-led-race_0.0/SoftTimer.cpp create mode 100644 open-led-race_0.0/SoftTimer.h create mode 100644 open-led-race_0.0/olr-controller.c create mode 100644 open-led-race_0.0/olr-controller.h create mode 100644 open-led-race_0.0/olr-lib.c create mode 100644 open-led-race_0.0/olr-lib.h create mode 100644 open-led-race_0.0/olr-param.c create mode 100644 open-led-race_0.0/olr-param.h create mode 100644 open-led-race_0.0/open-led-race_0.0.ino create mode 100644 open-led-race_OK/olr-controller.c create mode 100644 open-led-race_OK/olr-controller.h create mode 100644 open-led-race_OK/olr-lib.c create mode 100644 open-led-race_OK/olr-lib.h create mode 100644 open-led-race_OK/olr-param.c create mode 100644 open-led-race_OK/olr-param.h create mode 100644 open-led-race_OK/open-led-race_OK.ino diff --git a/changelog.txt b/changelog.txt index de4931a..ad9715e 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,6 +1,26 @@ Revisions history ----------------- + + * 2020-12-09: Ver 0.9.6 - Luca + ............................... + - Removed dependency from "AsyncSerialLib" + - new class SerialCommand() + - Remove delay() (blocking) in Countdown phase + - new class SoftTimer() + - adapted to Serial Protocol 1.0 + - added serial command "@" - Enter Configuration Mode + (still respond to deprecated R0,R1 to enter cfg mode) + - added serial command "K" - Set Physics parameters (weight, friction) + - added serial command "W" - Write parameter set to EEPROM + - updated command "B" (Pitlane cfg) to manage PERM parameter + - updated command "A" (Slope cfg) to manage PERM parameter + + * 2020-08-26: Ver 0.9.5 - Luca + - Version number format changed (3 dot-separated integers) !!! + - added serial command Get Software ID + - added serial command Get Software Version + * 2020-07-28: Ver 0.9.d - Luca - Tested OK on Arduino Every - Configuration Values NOW SAVED in EEPROM to enable diff --git a/doc/30_Standalone_Protocol_Serial.md b/doc/30_Standalone_Protocol_Serial.md deleted file mode 100644 index ac6dea5..0000000 --- a/doc/30_Standalone_Protocol_Serial.md +++ /dev/null @@ -1,471 +0,0 @@ -# Serial Protocol (OLRBoard←→Host) - - -In the present doc the terms Board and Host indicate: - - ***Board***: OLR Board - The microcontroller managing the led strip (Arduino) - - ***Host***: The Host running the OpenLedRace COnfiguration software (PC, RPI, etc) - -The Board is currently connected to the Host via Serial interface (USB) - -## Implementation characteristic - - 1. Local Communication between Board and Host use plain ASCII (not binary). - - 2. Messages are kept very short (lightweight protocol for “speed” and low resources.) - - -## Message formats - - Messages are composed by 2 parts: **Command**, **Parameters**. - - Messages with multiple parameters, the char **','** is used as **"Parameters Separator"** - - Messages sending back command confirmation uses "**commandOK**" and "**commandNOK**" - - Example: **CNOK** is the 'error' answer sent for a **C** command - -Messages end with the "EOC" (End Of Command) char: - - [EOC] - Line Feed = ASCII 10/0x0A = new line = ‘\n’ - -* * * - -## Commands list -Command | Description | Notes ---------|---------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------- -\# | Protocol Handshaking | Host-Board handshake on startup -@ | Reset | Host send a Reset to the Board -$ | Get UID | Get Board Unique Id -% | Get Version | Get Board Software version -: | Set Unique ID | Set Board Unique ID -! | Send log/error msg | Send a log/error message to peer -**C** | **C**onfiguration Race | Set basic race configuration (Number of **laps** for a single race) -**R** | Race phase | Command used to Change/Notify current Race phase -**T** | Track length configuration | Command used to configure the Total Number of LEDs in the track. -**B** | Box length configuration | Command used to configure the number of LEDS at the end of the LED Strip reserved for Boxes (Pitlane). -**A** | Ramp configuration | Command used to configure the Ramp in the track. -**D** | Load Track and ramp defult | Command used to Reset to Default parameters (Race, Ramp, Pitlane) -**Q** | Query board cfg | Host request the current situation of the Config Parameters Set -**p** | Car current position in OLR | Current position of the car in the OLR -**w** | Car Win the Race | A car just win the current race - - -* * * - -## Commands Description - - -In the following sections the column "**Initiate**" contains the id of the board sending the message. - - ***B*** - ***Board***: OLR Board (Arduino Nano) - - ***H*** - ***Host***: Host where the OpenLedRace Manger program is running (Computer). - -Same rule applies to the "***From***" column in "***Response***" - -Some commands may be originated by both peers (ex: Handshake command) - -The string **_[EOC]_** indicates the EOC (End of Command) char, currently = "line feed", (ASCII 0A) - - -- - - - -### [#] - Protocol Handshaking -|initiate| Syntax | Description -|------|--------|------------ -|B, H|**#**_[EOC]_ | **Protocol Handshaking** -|| | Sent to initialize a connection (Board and Host) | -|**Response**| **From** | **Notes** -|**#**_[EOC]_ |H, B | The connection opens succesfully when a “**#**” is received 'back' from the peer - - -- - - - -### [@] - Reset [To be implemented] -|initiate| Syntax | Description -|------|--------|------------ -|H |**@**_[EOC]_|**OLR Board Reset request** -| | | Sent from Host to Reset the OLR Board to the initial state (before handshake) -|**Response**| **From** | **Notes** -| | | No response expected from Board - - -- - - - -### [$] - Get Board UID - - -| initiate | Syntax | Description | -|----------|-------------|------------------------------------| -| H | **$**_[EOC]_ | **OLR Board UID request** | -| | | Sent from Host to get Board's UID | - -|**Response**| **From** | **Notes** -|------|--------|------------ -|**$**Id[EOC] | B | Send the UID strings - -#### UID String format -Unique Board Id (UID) string format:
-**^[\x33-\x7E]{16}$** - -- Lenght: 16 chars -- Valid Chars: Ascii 7-bit Printable Chars excluding ‘space’=ASCII 32 (this means ASCII chars between 33 (0x21) and 126 (0x7E) inclusive - - - - - -#### Examples -|Origin|Command|| -|---|----|----| -|H|**$[EOC]**| Host send a **get info** request -|B|**?3179c3ec6e28a[EOC]**|Board answer: Id="3179c3ec6e28a" - - -|Origin|Command|| -|---|----|----| -|H|**?[EOC]**| Host send a **get info** request -|B|**??????????[EOC]**|The Board send back an invalid UID (if you are looking at it in a Serial Console, you usually see a bunch of question marks or other chars / non-printable ASCII).
This usually happens when the UID is not set yet, so the Board send back the contents of the area of the EEPROM where the UID is supposed to be stored. - - -- - - - -### [%] - Get Software Version - -Used to check software compatibility between Board and Host program's versions - -| initiate | Syntax | Description | -|----------|-------------|------------------------------------| -| H | **%** [EOC] | **OLR Board software version request** | - - -|**Response**| **From** | **Notes** -|------|--------|------------ -|**%**Ver[EOC] | B | String representing the Software Version - - -#### Software Version String format -[0-9]+\.[0-9]+\.[0-9a-zA-Z]+ - -Two dot-separated decimal numbers plus a third part composed by numbers and/or letters. - - -#### Examples -|Origin|Command|| -|---|----|----| -|H|**%[EOC]**| Host send a **get info** request -|B|**%0.9.d[EOC]**|The message from the Board indicates Version="0.9.d" - -#### Guidelines to Assign a version number to the Arduino Software: - - -The three numbers represents the “Major.Minor.Patch” version. - - • Major version zero (0.y.z) is for initial development. Anything MAY change at any time. - • Version 1.0.0 defines first ‘Stable’ version - • Increment: - ◦ MAJOR version when you make incompatible changes - ◦ MINOR version when you add functionality in a backwards compatible manner - ◦ PATCH version when you make backwards compatible bug fixes. - - - - - -- - - - - -### [:] - Set board Unique Id - - -|initiate| Syntax | Description -|------|--------|------------ -|H |**:**id[EOC]|**OLR Board Set UniqueId request** -|| | Sent from Host to Set Board's Unique Id - -|Parameters | | | -|----------------|---|---| -| |id: | String representing the Unique Id. The string contains 16 characters max. - - -|Response| | -|---|--- -|**OK**[EOC] | Board sends "OK" string (ACK) -|**NOK**[EOC] | Board indicates that something went wrong - - -- - - - -### [!] - Send log/error message - -The software running on the Board use this command to send messages to be written into the Host logfile.
-The Host will log the message and decide what to do with the relay race according to the "Severity" parameter (nothing, stop it, etc.) - - -|initiate| Syntax | Description -|------|--------|------------ -|B |**!**Severity,Message[EOC]|**OLR Board Sends an error message to Host** - -|Parameters | | | -|----------------|---|---| -| Severity:[0-3] | single char| -| | 1| **Log only** - Board want to log a message into the Host Message LogFile,
Sent usually in development/debug phase to trace the dialog between Board and Host | -| | 2| **Warning** - Board send back a "warning" message
Sent by board on 'not blocking' errors like, for example, unknown commands or parameters | -| | 3| **Blocking Error** - The boards have a Severe error condition and cannot proceed.
The Host will log the message into the Host Message LogFile and decide what to do (if the Host is running a RelayRace it will Stop the Race)
-| | | | -| Message:String |ASCII| The ASCII String containing the message. - -|**Response**| **From** | **Notes** -|------|--------|------------ -| | H | No answer sent from Host - -#### Examples -|Origin|Command|| -|---|----|----| -|B|**\!1,invalid Car=[3] in [t] command**| Board send a warning message about a previously received command - -- - - - -### [**C**] - Set basic race configuration - -This configuration is stored in non-volatile memory. - - -|initiate| Syntax | Description -|------|--------|------------ -|H |**C**start.nlap.repeat.finish[EOC] |**Host Set basic race configuration** - - - -#### Parameters - -| Parameter |Format| Description -|--------|---|--------- -| **start** | [0-1] | OLRNetwork Only **Always 1 for standalone OLR** -| **nlap** | [1-9][0-9]? |Number of laps of a Race -| | | max 2 chars (range 1-99) -| **repeat** |[1-9][0-9]?| OLRNetwork Only **Always 1 for standalone OLR** -| | | -| **finish** |[0-1] | OLRNetwork Only **Always 1 for standalone OLR** - - - -|Response| | -|---|--- -|**OK**[EOC] | Board sends "OK" string (ACK) -|**NOK**[EOC] |Board indicates that something went wrong - - -#### Examples -|Origin|Command|| -|---|----|----| -|H|**C1,3,1,1**|**laps=3**: Each car will need to complete 3 laps before it can cross the Finish Line -|B|**OK[EOC]**| This is the Response from the Board to the previous example(ACK) -|||The message from the Board indicates that the value for Position,Laps, Repeat and Finish line has been set correctly as requested by the host. - - -- - - - -### [T] - **T**rack configuration - Total LEDs Number - -This configuration is stored in non-volatile memory. - -|initiate| Syntax | Description -|------|--------|------------ -|H |**T**nled[EOC] |**Host Set Racetrack Length Configuration** - - -#### Parameters - -| Parameter |Format| Description -|--------|---|--------- -| **nled** | Total number of LEDs in the Track | Ex: 300 for a single 5mt - 60 LED/mt LED Strip
**Please Note:
**After changing the LEDs number ** you need to reboot the board ** - -|Response| | -|---|--- -|**TOK**[EOC] | Board sends "OK" string (ACK) -|**TNOK**[EOC] |Board indicates that something went wrong - -|Origin|Command|| -|---|----|----| -|H|**T600**| Total Length is 600 (2 x 300 LED Strip connected). - - -- - - - -### [B] - **T**rack configuration - Pitlane Lenght (Boxes) - -This configuration is stored in non-volatile memory. - -|initiate| Syntax | Description -|------|--------|------------ -|H |**B**nled[EOC] |**Host Set Pitlane (boxex) Length Configuration** - - -#### Parameters - -| Parameter |Format| Description -|--------|---|--------- -| **nled** | Total number of LEDs, at the end of the Racetrack, reserved for the Pitlane | Ex: 120 - -|Response| | -|---|--- -|**BOK**[EOC] | Board sends "OK" string (ACK) -|**BNOK**[EOC] |Board indicates that something went wrong - -|Origin|Command|| -|---|----|----| -|H|**B120**| Total Length for Pitlane is 120 - - - - -- - - - -### [A] - r**A**ramp configuration - -This configuration is stored in non-volatile memory. - -|initiate| Syntax | Description -|------|--------|------------ -|H |**A**start,center,end,high[EOC] |**Host Set basic Ramp configuration** - - -#### Parameters - -| Parameter |Format| Description -|--------|---|--------- -| **start** | | LED number where the ramp Starts -| **center** | | LED Number where ramp is centered. -| **end** | | LED number where the ramp ends -| **height** | [ 0 - 1023] | Ramp elevation - - -|Response| | -|---|--- -|**AOK**[EOC] | Board sends "OK" string (ACK) -|**ANOK**[EOC] |Board indicates that something went wrong - -|Origin|Command|| -|---|----|----| -|H|**A140,150,160,12**|: Set the ramp centered in led 150, starts 10 LED before it and ends 10 LEDs after it, Elevation 12. - -- - - - -### [D] - **D**efault configuration [ Implemented ] - -Reset to default configuration parametrs (Track lenght, Ramp, Boxes and Race Laps). - -|initiate| Syntax | Description -|------|--------|------------ -|H |**D**[EOC] |**Host Request Board to Reset configuration parameters to Default** - - -- - - - - -### [Q] - Query current parameters set - - -| initiate | Syntax | Description | -|----------|-------------|------------------------------------| -| H | **Q**_[EOC]_ | **Get Current Parameters request** | -| | | Sent from Host to get Board's Cfg | - - -#### Returned Parameters format - - -|**Response**| **From** | **Notes** -|------|--------|------------ -|Board issue 3 answers:
**TRACK:**a,b,c,d,e[EOC]
**RAMP:**a,b,c,d[EOC]
**RACE:**a,b,c,d[EOC]
| B | Send the Parameters Set -| | | | -| **TRACK** params | | | -| | **nled_total** | Total number of LEDs in the Racetrack (**configurable with "T" command**) | -| | nled_main | Internal parameter (when Pitlane is active: number of LEDs currently in the Main Path) | -| | nled_aux | Internal parameter (when Pitlane is active: number of LEDs currently in the Pitlane Path)| -| | nled_init_aux | Internal parameter (position of the Pitlane entrance) | -| | **box_len** | Total number of LEDs, at the end of the Racetrack, reserved for the Pitlane (**configurable with "B" command**) | -| **RAMP** params | | | -|| **start** | LED number where the ramp Starts -|| **center** | LED Number where ramp is centered. -|| **end** | LED number where the ramp ends -|| **height** | Ramp elevation -| **RACE** params | | | -|| **start** | OLRNetwork Only **Always 1 for standalone OLR** -|| **nlap** |Number of laps of a Race (**Configurable with 2nd parameter of "C" Command**) -|| **repeat** | OLRNetwork Only **Always 1 for standalone OLR** -|| **finish** | OLRNetwork Only **Always 1 for standalone OLR** - - - - - -#### Examples -|Origin|Command|| -|---|----|----| -|H|**Q[EOC]**| Host send a **get current paremeters Set** request -|B|**TRACK:1200,1200,0,-1,60[EOC]
RAMP:180,190,200,15[EOC]
RACE:1,2,1,1[EOC]
**|Messages from the Board with the current cfg values - - - - -- - - - - -### [**p**] - Current Car **p**osition in Race -|initiate| Syntax | Description -|------|--------|------------ -|B|**p**NumTrackNlapRpos[EOC]|**Position for each car in the race** -|||Sent during race for each car currently in this Board. - -|Parameters | | | -|--------------|---|---| -| Num [1-9] | | One char representing Car Number. -| Track [A-Z] | | One char representing the Track where the car is. -| | M | Main Track | -| | B | Box Track | -| | U | Not Track | -| | . | .... | -| Nlap [1-99] | | Number of the Current Lap. -| Rpos [00-99] | | Relative position in a track in percent. - -|Response| From | | -|---|--- |--- -| | H | No response from host - - -#### Examples -|Origin|Command|| -|---|----|----| -|B|**p**1B1.95**p**2M5.45[EOC]| Two cars are currentry "running" in the Board. Car "1" is in Track "B" in Lap number "1" Relative Lap Position 95%. Car "2" is in Track "M" in Lap number "5" Relative Lap Position 45% - - -- - - - -### [w] - Car Win te Race - -|initiate| Syntax | Description -|------|--------|------------ -|B|**w**Num[EOC]|**Car 'Num' just win the race** -|||Sent by the circuit managing the "Finish Line" when a car cross it. - -|Parameters | | | -|----------------|---|---| -| Num [1-9] | |One char representing Car Number - -|Response| From | | -|---|--- |--- -| | H | No response from host - - -#### Examples -|Origin|Command|| -|---|----|----| -|B|**w**1| Car "1" win the race - - - - -- - - - -**Revisions:** -- 2020 07 28 - - Command T: Syntax mofied - - Command A: Syntax mofied - - Command B: Added - - - -- - - diff --git a/doc/OLRN_Protocol_Serial.pdf b/doc/OLRN_Protocol_Serial.pdf new file mode 100644 index 0000000000000000000000000000000000000000..44ace3b052de499ae9f2fcef6bfec210e9e6a530 GIT binary patch literal 435038 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%0DXyDPqKskJ3 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⪙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

i0%<9p+g9N}aHK$pv zy1gtq<2Cn)=4?XRF7hhQrPchdmaMC;Npdv?2Xy%x1#G+nHv{fuY_qi#$tkp!Rh%*) zdM9%Qv#YLp$&501cry1;dJuv?c#TX>`FR~5M)~|sYZmRB3rw$SadJrg)6+0dgAYyHv4iHgSDt0ojEMHA(0TLk+J2ECY?KK+-$!G4%tJs4@$ z8~K~mGT0gYH-{s9%_XOxsa*juIN7K|iUEL!@BLF_ z1b6_SzEX2qq5IMGaDi+;;X%?*>0&VdDve4S~jnx(hLsI4IS$kCvu=&-Y~M$l-Myzw2#Isx)*`V`2B z%d{4QSdo7V00=`1IIr#Z=*Q@02}P%=@mF(=!QPp%NxyZ?xF5o8>nsrg%!oB{sqTUe znEo7^n}b>y7h2Z_ zt!UFEGglrn-HVG6%QzeIxneY{F~p6PWoHrIm9@we%i5K14)=UVX7Cp??Dv-cArQNn z%==PX2^Tt9+D}cVoD2JvL2D(CjI~QRM=Rs2kbADWc?--B!a$3AiC43-T9=#`;<;F| zBKl0BIpk4oiB4Q8wJqT??uj8&m6yRpw8#M*`;;=~TGo>|Aw!*1UTsGUfAw!JJxNcmI!gp?&Mq$qRe-|*Xo_vhfdb|MO?5g$uwcpo z0sv|^Nr0m3K+GqQ$5fVoL+m6bNN>V{H{v_Xq|XsHOkN68@qJDo76+nAvVjxp{H=gG z4uDTg#$M$<1KICF5pQ~J^JoPX;F^Cs(N%ZE-Gsfl_t=4-B)@z81(@1jPq!{J`Xa5M zh_;w#S|JE@0_nh_Dd5_)!om&5fawlRH8vVA$^1JVgB+Vqroz{PZX>x{6wubIccBlc zo`nGXvZP~XXWd3Ung-Hz+*_#abSR|1PAeLyquterBmAfSNh?glIY?LCV_aRKZmdvq z3o^vru*S735+im8@iK6foi!0ai{WWKh2-n%>xM(okos->k0#m0=o)5>M?06Wu&(WlK^MnHD)Zaz-*e4C+I&$7 zc>0y?N`CtZ5VI`$-QN!>d^-q5dR)o(qX>)(`lWQPbS{4bl?o)*o6eiFOXq(=Fz4A( zljvXWapb?dMok!Yi7usQ%NZW^MZ2B?S=FPyqmhQWzSzA;_NdCG)Gyf&s51@uk_o2m z{4~GGiYSJ@yw~J1OGdRKqXE8igrYfr$gPsw`EzmNRCB?^TR+=G0oAN zG(W2X;;urqffelMfgA-Gn81a<5UHZM5#{~<=Va#mPuQOe<(ve4isXGU z2|EihLJGE*P+lz-;F`>(<1^VK!D=npQp^;sn~P4CKr+-{mOwCR3-z+<&MEP5@%>WT z&=ybG2r*pD{Y`DXoF>pDcftyOMyb9A{00ySg;ne#R_Pin5vDdV!|_`~E%Gn*n#5{t z>hWjE)tyUspNyuk1X{-2lVG&eB2Y^)^+AuIcj@D9mmzg2Cr)UsT^-4cRP_nT#^(IA zCbTzgbfWROgNdOW4^a%|jcT>lzf4PoI5c;TI^ zw}kg%BprpW3d2am)j+#IN&36vnvU9d-P<*ROJFv0m>rvi5(#Ui~M5x$(=tJgwPZ^FL3UL)u@<|a@sm3$VZ~yW+&*up$C^7j+yqtTY>e#& zaeIFDAk>JmD7!f8`?hBjC>Xr0o)kS2XzrIfNSAI5*DId!a7;!xF~-AiIgc4r%~pN+ zx%vKF=;o6(40Pgl#!oebew}3@HS~aKenU+zewcWFm^!%gYpx-<OP z>|5W8w_mAfD=dxa881t8xs33&11Bhm7`%6IXh+TH$~)jTFX9zBLn{ohY^1osnE@$h z}3HnPoqQiKN#n^wbKKRk{<4UcQLLoskyQTq10s#`(r=#hhdyq;oj&J^}0M0+k zP# z*y|dJh}q_-&f%L46}M>hShrv%Kpyvjs;`0W6RmyGtyNu0DYL?Yef_*et^@Ix?LqeJ zKjcv3R+*IyD5C|c`w9xx$db6h`#H8P6+bb2OFa2$_rPD)ZF`6g%seQFZ({wCXa1|s z&-yA3X_*%lMxN4zvR-};#fPVFSxR`Au1=>4bLW{t&$6&rikM%SeHznC-)0{#qL#RGvEJjStYa0_GAdXUhwvlGP#u61K=UeN&-jVY z-FuLYZ1Dk1P(!NM(kIYL3eIfI-6E#Ti&ZdX_?X? zk#rk_9g!&{5wQ`eM--U~CFPq-kY>##LJ*j{)qHxj!cO{28I?F`NWomblsb;^hNv=D zp#=GQjqBqh_O#ovc9 z#s)gEI~HmYZ|vJS#rYfoKk|sgMA5;2vFWZtUhLOhz>nB|Kpy$1J&4c7VotR8h2C0p zcK7R{8YslKUnL6&#^Cv2f5u{qUkM3p@Grcc68=Q`HoFHV?d9X{HHt5w!y#Nr z;gzeR`*e107e?NRn{wk?Km;b^cvo9e|5s_xB?=QPp_@AaG{yRB#uS?KD9W5JwOJC7P@u#|vK_$1ln+JlQs2 zk;}jqI*JRr-Ws0My?^!(r(n=4H=Ga}%Pe;b0`79VUXj2Slb`g8!3658&u<{(Ty|UA z%T&lGQXI3ZQ0h;RT`jJ$6VLxr2IdcsR}15{y00qdGVm~WgESyKc;x1-m{t zjBhqlSJn_+!2M9%Wap9?%%3^bqsZXt)N$N{c6lOq3QMZ(lTrUdAuSU-%Bl#(1Iag9 zle9xK`yhN+Z^Wq-vrH967Mz%sU6_dXEmX!jmXzy0Q|o`YJI>(mejA=%o?-;I;k6J_ zc+@)U9uv;4U-=SK_~fav+sz8{!{{3@Dwk>yp6eJrhZ}$ADi9j11exV62VWha^}&%Z zH{-c?CXya-B!~!gt8~sW!QEXE-;&bHEyG_Fm)p;ZyRuKnQvA8lI4Dh)uGmG}` zH7a@=BZKaDv@%u>Q$+i3*>r3$7mAjxHs5&Bk)cj<7h9W9dzzwH32s-fOuH?|>qRS@ zd;2z6%yn0A6bH#YMoUDBDGW8S4K29RW{&3rp2ur#-1GF-hv)#C39+)8!?cf`#q`hy zx#Y`EZN({hc<+kgNCGD_v$7$l+pl~(zTP;ZyqGqnO%h%L(p#0XFM^}0GNJ;M>!Fym zbY@pOVJbUzMcrM$ebKv(j}?EhphKZq%b;VH2Zq43^L=j4&Z~}}`wpmdc#t?RS-#_m ztSm6X(iAh>Kpn(Icq~aj@VF~z=T`-T9Lzy#w?)owDm;0*U2@UE`W8L7n~mlSF4piP z>tX#gvM-$tzVw3K4#5?}3j-6yF>AT97q=LzGtD)g+c!xQ*#?=hcde7f91T=)Vfy~; z8knqAt3LV#>UU`$Tjz?Z0!(OyD`r$vj+#V3>U9u>1`5H^)w>QS6T^6{G!F_PehN**$j#L16ATEhy=eB^GFDst2Zr0@41BJGZV^FggGJD! zo?vo?QpS3)XvqiH5YtuPaUoURxndS)sxLo9&sfSuGkSty?x4qPWYoG*~DNcmQie(`xVg8AsEy{|k zN(#e>k*f3bR2l5312>Wv1@D;CajJTzD0+J_Pp8}1fr%s|RxO-K;wRcvKRgG7a6kPA z)U>M9T(j&StY-O&-e>3!p3b>a^QM=g?0f-}b~@&27&|cl zyA{T7_b*MOgE^evPCZjNT=()x3<{ zXvYoY1qafx)5*@gO+`HOY#qrCq`$)l?`e1dgHKsO)MWx~g=;B$Ms*u7HV24ZySe6O zQl+rff!D@eE1G7q(DJO6CeE{yyYFJTAn_g9xg>}~;AD=yM( zp!8n_0mN6RbH4$~V1dPQ6$O5ZE6>#>Sfy739tz-O8^t1A*;qjy0A>MTErt@YUbtin z*b^Ul#bg^K(X0SyiK~OfO@YdhA^-x$P=aiwm~4gQF)_4K{JS<`3WS%(N|>#pv?a*! zI}zZxDR6lXEZIu2+()b61OUp!0H+esmgoh}R_CLzos0R4p1}|RToQ0X2ExtG0yEeX zl-2@P{z!WI(Uzc@20uaBF7W8$TNXsL3Sz8q zPjdM|Hb@pTB*6;kDlkaEQ34niQp9jcawD>@Xj>0J61I9|hw)n%0*F5SSNyv(k?c;X zHbLl7)W)6~kjj?C^a!go7pefDN5$qBPJL7V@B>cOD*Sv!wtcngnIV$30s;5vxcoqv)2^#S zz&L1e65UTPOSv1QFCPT|sStZdGwT)Ilb`&Io-3D%uF$V1&aG!sF4Kuc#*ay&_0#B@ z5};vLD(shD9@_P1c-nS#aCg4qH9Jth?bPN++10^_89z)fx%84>_EKztQf#Qe^GfP` z^eCfeWa^vlX~5K8Mt#-3EEL!rJuH+Otg@@lZ55;+?QuyS(0W|vzYyXts4iIS@;mliIiaR+OdHAVX- z&PBfFx8`P-@uTQxaD~sW+IF@g(pNWL{Yx?(DKhWi`OmnQ$GxusFn*W^EW&nY2}6HL z3=a}NHQnw6)bJqkKHKmgDvIiv^sDIEvN>YH|IioMFTF*SUV{9~SSQUYYRDHrZ44GI+4Jt-`9qp-Frh9Ps=uO3!wk?;?5w zIE-!42UMpl-i2Mt&_bRT)M`mwb^+igXR57+Sx+7T%`3&|V6xG{N;;7svWn=F#~L6a zJd$eL7zg-&^AH0~XiiyT^bUX*5MbKv8`ryCXr(BsyMa~PH`P|{Qi{0`Sbx6a!QUV& zD(SA!>=r;#*<(dx%ePD7J|+|WC^6YFhNR-`F+V_PM;$an^_en6G{%qeUd(-l2_BXa zhV*gyWWZruO;jG}=Xbyz9M-6WS)m~ld|1Xx;>I^6=EL=!6nHP34t<6A6bT<5jy9Q7q0NGUQ%NfbO_b3~&_%1`;X? z1;)QZl>`Xa2?4QSy$(RNW` zkR%;l5J(7$NCvnbNq`Ron46m*0~cZjNVdI6a9y+Mta8toYfMSHOmRtF?Aq)kGCN!_ zMbO|5$pXQ^q|FWmNV_@)Dcphvo}SUQx@I^C2>=g5le$>pI9f7o9Pr#lB`*8tLh_#r zpKqKUnAQRGuLmy?tTK1FW);*7NcXb_`!9UdpxZMyjtHq-D9}Gg?POd^3+WIEp2sPv-0`r z!PiNOKWR!HVfL-c4VAZkA01SFHTiR&xpMz&{@b^l;USgQRn3~`Ec_Ga?<)PJZ-&Y) zm3;oC`#m#X;BC0wXzDGFdlFHt2RNErw~-$C&8p%Tc?}~KJG((E_I>jM4ROt9JYJ5! zk=MX`^Z6|V5&8$e=!bibSGvbaqcqOoiXOyQe%1E9(U<#- zJC3=xjVj~Yr>#kWwZ4lQV`O-yspWmQ)q+poypYmVB+1DSlW8mU?Au@s4b-P+Y3?zH z$MR2a#{cra@st{M{Z2%|IL~up>%?TviddV?{elUjcQZ&+%Tt7`!;?y`*C8eI6u^Gz z?g#iv@z?f`BDTHs8fqF^GHdJZ`G_4}V}`fmXHFwAlQ z&-uCEbbxhh^36)X!DHju&L<|*_+wBmmjo)XF6lGbxA@E#QsCCE8kA1-+*ou zP)soCExY3~Illxz=~y})z3EHPlJ(|^^u3qDvWGUmSFX_AHApvccrih@-w#(Ybab{h zFz`1It(BHqE;yd0sTd3tlI=QZIG$!`$SPyM&GS{m`F(z-Rv5!)TfNU&{Z~%9lUaG3 z^rxvm4R$_6Pm)tf!%St#k0VWbMBz<0KmE23ju6EkLnP38iC18E>^t>}9p%6Vcfghk zJdNf#pj$-P{a+@Swk*$i?1%wPKU96q&FQVa8{iC3eU_p?(iWk4#r)!cZ! zF1CUkPl#1$#WQc*Yoy zxu&JW_Qbh4^<%46Xyt`v<~8k$3<>w%+v`eoDB;XHuh|SXFBo_hBWZUq0aoywyq*DB z`n7xu@JE9;gFPJ473&=q7o(>pXf5+Z6Mb3wG*-VE^_?Hewb3^}9ZOPvN$+BQ+MTM) z-1xPg!>)ARzsO!T+{C@TBe!K!S_M-aMzg=?P{1YbHRW-g^q zx{|LLm?H>leo1q5^0@5LJs+3%H-lKiJZ9pRf{LDv`FD-PC>wCet zO-`dgqX*?bg**5j=eR#yR?Fk_gwlOv@^p&SeLb{q#X2)o%&V~zV>^a0n} zT;=|Wwd-4twcarI%=%UikMs5Qm~naPCi?KC>TT;}`aafUdP$#rKrOBm6JRy-H9wiT z(?rg$?aNcHQTG2ZXhAE-M38p-znp1+fljEmVpt$su~;OZFqp&GN8iSBWzE`W+^VP5SuRLvGbl zhj?-f45C*?wicKo+}Pb8RH{T}bDe$P#c(GCggp z`INg-!Tr4Ai(!TF^+zD>z@G@*i+QP4^CAQDw@MAywGaQuaemn<(0uzgz|}?kt+f4) zAfCzlW!#`)@5)%lc4b9*1m$jJ7UJ_$#Jlk&EQ1%ApdfxGl(DlpU87*>y8b7==`c^u zPkpi8JzDG9el&P<5>3}JZ27duiRa0)e)EU3c)%S-xE~$8 ztk1+9tsI6&`NO$Yf)nQ6vpyFv;j+)ca-Z39av!?~eRz3o+$3gAIoD%KB-}I;ZAstd-#AU>x}ldZVwi3*>1{ZBz}S;ERa<+= z5zA@c{9fvJ>_y$D*R`x*SHhO!99PC%Utdb9ZYmQ_s9w$e>YaYCTyO6^ z8vx(5nDJX1>2S9&DO%(|dq(@tFYWbB%w1TyPqDRPF+nntOx0H9#_3SDao-zqwOXO; ztT|bFiQxNGy2*XypW{z`l~{UjW^H{6QxWt@iAptLHoyDfhCPEvP(Y!{TBC#9_l)3p zauE3%hE2zuszYp0*qb}W9eotad+AE)w3)Z>(ctEJF)B#pnm*zc?@Wh4t%U$}9DV zNroTwZQk!x_Ubxj>2c}ms|wa0buRJ?)9=;J;a8d1m?9ugX0$@`QbkH^pViSE7ucpd z&MNL46)v=YI2G#;e6MzUobS(~)iKL<;qsrVRx9wF-ev|TgzWv@zWW|sb_L_LXM3IH zmqSfo3ktQ@xJA(tMimxZYeB!^0gE3WUW*gh=!L3Mj!dZ*QU%st)u-&SR)`^0rI;d41r z#Yfb|aD&Cmn_BLZl}sSRJm?f}lJc8dGP8+}YKdm;#Xhb~3fz}eu=i9?25>%UPa892 z4@TKLS!TpG<%C_Ht=nCVRgu1RdBmB)`98g;_iMe_yI_N!DB@`QRQ#7iJ+7pBoFz!T z{P#D0Q{`cijwKk{KRfv|U4zx9!#9Sasm@Yoa;SNR7;)Tr z&GivmE#*Hy-#MQ_fheTec{yKChAv@5Q`Y)J%0_HoeW^Ldj!Z$v^HCzVmV92F0C^De z9+E&nEaG`*BbXrIa|^^a>W11}r!I_EKQ#LDG%k2skaW21%=GZ8@#IQ!Eq_MH>)7%U1AD zu~4_mc~9)BpZlWrm_!C6!TQ)K#B`hAT1x)6me$LLtBXe*_@^h8uq)kn6H?D*ty_A}ja*j!Ulp|AN&eInIuKbFMCA5@)#%qJ0z9;6!54^NQH1@TY-&K4Zr8N6OdU03xFD zqO-$Ifyq*S<+4iYw-M(LKcCg#5Im3`j{0-(Vex#3hR=9z;LXUM&dCX%X6Jar%XhzZ zs0kJ8Y0$67Wxi*1S-F26%A;dU^zP2Ne!m@a6TgY24*Xn|gpE(Be8L>l_4+-_$ynye zP(wH^R-Q9vXqC1h&Py=F>w%I0@*S*U@PdY>=gzPt(Prqa5^lIia8^D+Co$#<&LwFNNB{lss$)laHNGT@5?fR3ZW- zsfo7ssV1+v875!;WC=~pPG!9eT&e zB83&dhv%FI?jw-abCHly>CusoKiN4{xzWnE9w&)$u7146VWZ~LtOGoyvx{TkZVW)wWOXJ5EPzILtn z3dv!#V@dA5q2Msh>rH49EB@Dq`myhB14(L_%DtRWzXxMqhUy#=hacC|Z}9qPx)O&@ zVix0*a+Ip_M}#f=9}cc;8FjQP*$qxSQl?Az)lsgmTCdon=pC1Lw%oiZZ5}CL${7^F znzYvKo_*@Wm__Nn^f9a~vK%};uMnm5j*(j{vzaf(r&5-$PvwKAaw1;;7N6>CwIcE| zKdOo6r)S9WyEZYQt?hSf7Wbq&E$NKteipp(V*1A||Ev0|p^>T!t*Ma{c7;Era{wcj z95Y*v7sgW>xyr@wKaVl*<1i$>k@3=O0Z%xmAKZZeiWyg7yDeVgZ6Vmd`WrXNiWp8l z)j1Y?ov8735??fvQ|J(aHM)mo^D?cb#`fP~sw#VG(rC1JHP1zRF^I`hcp>`W1tf$w zm2VD}+2`yMYK+&6kN(l87g4xuSM$0VU0W)Yf4N2Dcy-cSPfCbou~^+Pz_QH5OhmGe z@!e-B0X5Gn<~-!;i8tRcpnFr9YnqN!|IJkYNIlQyEYVNgPf&l-{e7FsdEVp!7hhM| zS69}*Gg*vix=e%)|3jni^_@f8oZ9v|*t6e1)m7PP-9k_h{%1_5^_lwCi@Msu0XrW? z1&*uW4J+C*0j#U$6pOAcXkJ#W46|0wEwS&UXY`+5n2l;(oSRWyc6Dr-xTO7+CahNB zl7E1IurIfx9!ime%-m6{(e`zZN%B`L`$&rsyE1u<5k!YtsJevGGAdqa$@@2*@E z0q!S5X%|zjqy;@RK)KzWHuzkF$!OZ%v>?_HN{lSucOJB5w7#Q~w(!x``?@@Hl_GF+ zd4@aZD)DAwdqu!jx1_`O74pKbbCKuHms>wOvX>_q>VLi4am2GMcZs*vA;`x56^F}muCYa-b6>T@YpS0%rQfgg z*^9Lv5wgK~h%e{4>x&Yz4JYl>lAMZ%HYkyi++O7$29Kmv7X3&5>2DFwqLFvQzHM_rzHEL|eU0nm zd3vhx3(4M)-D6B8)}=POezQd+^({kl=wM*UWj^IXHTL^#{8d*E#py@a!qd>^WrDe> zuOg29^X;}?>A#tAWg4D18QnL2=U&fYlKgE)1fugcc0?B~OtF5y!Tl$9_MmOE6BnP` ztA$p_f|4sP>0XWQ5!J&tmsQAYo?Lw0&1F`h{CwT6Au~1fz}womcHj7|@iluL@F~Md z<7Kh^6Zjt{?KcAcc|#=;@1n$*w$82p{zv9nU)T%tv(e{ps?ETi>I(3OI=qZ`8hrXo zcW9IDo@Qv^tp<0FQ>l}j@yxu#-h$!76N}N97W%I$t`}{e9;ar&%+{Kug*P5>JMmpz zaL?p=$!mb6(wMib`x7XJPX*E-h0VM$tcz&k+*qCjI{%o?x;L+63jFKv_q$dqK9c=2 zHIk0>dQNrs^PoS9@J@vnjBCHL6*NOz>s{_IckF?=7Vo2fyr_g3{j>hnS!Po$dBJE; z$~tbr+(=ORZ1#Fg|9AbXv7>m?_<@xfQk_K?tk{{1N72;X2+j|duX&QK_ z@Wd`xTl&-IUa>u**&fEGsxq?W`&fCy`ob+$Fgwkl2BdspG}iFM%~56Yar7->qVB5Z zmP^LAt+5Z~gh63*=Vlk#b3UNrBn!UA2=`s{@ZJINmzia$5~L>8Uj=aK;)5ao*d4p5 zW)Bi2C|UC(yR`OoSeKB*C)K|h15D$CuWDh4=+zkl7`Ae&&`%W3$}OT!ty6Lkt9+tWQqJ0OlG>sbz|V^!7BKsvuf>hr zuE_5U3hF$Q>UYPz-JnP7-xA3Qb~QRPMO@hPHW)kf8}MAAh5Uj%v>J-ooW22|Ztc=f z=1+7-J-Ld12k`%J`9A>9$icw;-vH0@zX6{0{}14QQ@397>M583Z^a8&^A`r3()ioS zf{hx)XB19GG=Z-<_|-r(Y%;+cu|&o{f=)^fVTSfHZl1)DFy<@iQoab$BEE zYKYr=xUD^WJ#+kexxDZ)vzAexdn8`c-1q1i&r9cj-ftR=3!>`{L81fKtZ=Vp*y1rN?SfpEN4Pa8d z#xj~rZo>pF1Ss()+$%zs`V^723V(9*x9WVebP%DPV7B0dtGr~XL>bv-jx*8k)<~t- z8zB=;|EJxrIhiF)gm5^l7!IlKfIlX<3@%&Z~<=Lm0n_$X_BuuNoksW3K@Sz zfO1Cg!;uZtPclD@(*z;oze~vD#-$|c=o%fiXMzt-mCvIKMm@}%{NUAm>5SLn6)d+O z%j|y;F1a2I90PYnL!jLYk3-+@Pc<4McZ$w7ObJ}wA+r-~A+pBM)O00$Kl(|7`%-3B zWuqx8n^kw0dw9x`s0&vIbJsSt7^(secCA*wd3d=~58g|mbDuiT;nptVN4j*lG+m8K ze?D7YwGi0n83|q0VjQLkE`pw}s&b z1sD{mt5um1XV1+YN$k~1sIrZRdx=X|TDYbE$aPdH z!`|sbs?nmvTF|*F%4k{b6>uEpl48cZ30kQUp($N!_;3{>QVAlnl%qENl1FK>F}@Ln z)L{D87GfF_T$5npPW%D`kTJ?3O9*8N_V3kXb4U^-am2F_I2>%fwws4#Cudd^HWOeh zC!co}!2YTR4S#RxbQ2Wxqym39^52(&{)E)q)G|rW!*ij`ITJ`LSXUZH{XSH|oseiY z*1}O|2LkigBK&Fj26qAA>-5PmBQC7v6+MUMPr2LBC|3t9e+CC!v2^M zO?wjjMEOtjMx8wyvI`F}gUDw^ER1&w`l9SnWU3g+{nl@Ycb3%gAQCZ=I?nmbx;f48 z+(__P;ns0%n?|HV66JviSg(h!fT5+9)#jy1N^9=zwZTwbUH%%vTJ7<7FEJ?THCDFp}640=<4Va(j zWv8SJyqYMHJ3pM|&#RF8LEclI33DJD1M|m(IYiIj5$?kg{>!|Ddj!?Wl2YozpZX;i zEzfbG8}HZT-TSUN1OeMYdGA5rZfPvWL7#(kB3u`Ui5f=AoetXGc&hcWY1lIdU_htT z>;`y_IvUX(O_g8ULddNg@9#a}Pp`bKP3~2)BPx)eOR|nqDq2YQq#Dx(Xfg-e3a!Dt zim>f6=3D%{Y1fzdLd+yCe)T~x3awjY8_B6Y@R%v&&Ap2K7rKh(uuf_#>sD&q*Q&&X zK<3?*Ujx-8hBmxhX9&l}6)haQnp_<+34N!%gpgG_6D&|B&PGo`8fYrKM6bHf`C4j0S(N81E z#C4T0Eq|ImGh0RNQofeJsTDJvFvgY%$x;LB=*3ps2uZ(In64gZXS73oMlGhYdf~KZ zV;x8xiL905gaRTztWWvYkMx8CUEsHt!+Cu`6IKP-5EhTrKK7qH|M?J*F+HcwA6S;# z7|OC|Ufo%sFCi|;f9y1&R#Z3Ow%bs$Xy^o@toGV*yE?yIR=w|L8RJnK+F-O4>ZGtb zPmepLELD85MMRgZg=!1(%O|@=ce5Hu@$OzSdezNoI@mH5^JQv+)w;v>0lzfxNqJ(D zKzg#WDdAXYI`pN_;t*S+oN<^=(Q;3vrp!1P*eJ2x<|lPXy;D1qPW0)wjqLStvf1yP zP<&Lh(+p@Br;y}7g)D?rStakN>>xPbSSD~}av*|Y+lj?r5UuUmGUq7NY|2-%3f*E9 zvg%+{-;W#ryX?BN>WjrCV?;GO>&G8NJkWlC)N(Xc9ci~%I0s5uX|l3Icz-F_J*G40 zS{y|E!FLytv5&pkoLJ*_%ANcWl_^T~y!cb}?p5PmEl*_ndQp<7j7B741Yoh`bpA^C zxYBnaYRXNuc>ycKb*5P}LyXM~zg?(m{p#0L=VRuR7L}2elp)-ko`ei65X2syM zAg=?&+C?6kydRURi!(3>bW6Z~Lf`f4;e5#bzk@gTc4)+~8J!*x$lmV=_4Nrrv_38l zO+*4EHi&gwK>;f2*~BqmYmw_+6Ct#QDut=##W#^W4U_Lh_Pql}V*z6x`a0Z3?TWt7 zDw0`W*jivSb4$JfJrV@l{~fXa1LFT8c6N^cA-S{vZ({$)9rT~9KwTOVu^X%?-7~eb z9R51IS0FHeM6o*ftxdoW^e5FaQTQ}*+IP?IXo>~Il267IU`A1U8!sUK8W~UvpC@f_(dQrg&oI#IutsCCKEH zA631$uR|gA8MoT{G$Fl(HeKr!C<(V3Pvdq@@O5`fu|cgVbvRW~`1#6()}jgTI_~WJ1E?aTSmG3~1*)QF5FDSOC=I9XJdB zp@**rHJ{hLzRMa-M^NjdRp^hhv64%_l zdF(b>*+u*uZCB|h=BY=MlpS-wbS;K`nm(}3xD9w7bu6s7g`{*+1XJ6x2ncFi)JWY$5$sk-b1*sKn}qL>n2e2071fl~a4pQ$>V`TJ z9vsSL#oN-d+=NQpYBWeeiAjYFfrE`m31@}T6>5h=qxz&VqhCmNla`NX!IXrV7|j`< z8jy8m%gCKn63`GC{S-;-GT>U2`tt+R$-peUYso}6COwLI;$F@RjmrQp+?%KB0a5_bajbM z-92`N!GRgM*xXErcFAg4+zURgSeG-9&WQ|pCYO!mx!9hCP;A(;4799)u0&Q@wtt(< zL4~Zi2)dWqbJBJ+W{(qTRREjHXk57Wu5yoIan>(Vn>K03;?yOxwmUm968YXQ+?o2^ z^~K9MoJA)xyRQoe9#Tb(2iMXrV=A9C)KPc&s%Y9dH){DWz+f40DrvaZ*6!R7jKheU z)(2A7!u_2p#3WXMNsw{y&xNRnTd4G4L?5mR&B;)3+PWC7GHjyGb_sNXP2oanf_i*C z1SdX83B1n9%dC8vhFl+3Vcrp+{rRSl9j33#AYH64VZT7JkDY+9~< zR+KH8J(P%A*JmPY*jghmW$GtSNs6s{Up5jy6DaP~8ySzqx4O2m7rna^6HfVwsPh-W z%57s@2;*Uvm2-(Rt9zP`iA5@%O5^q zdhLtPhZGZT8bFRP9)$wY>916g#vR-a7}13NQWpD+DW~e^hb8b+XMwwi#wdXTAZlt9 z=b2q|Asy@5o4xm&krxxEA>o2XN)Bow3bn!4lmuM+fA49BZV|WWO4Nsj(jxl07bAKaHi&SrSN{-?34Af=jCbqpo@9mLwtXNC{M zf|e@J{?S~37A)=^Qp|?YXWI@yzdUFhNKLEPJg{CPA4(Lu*i>G`fu3tGey?msCsaCj z$alA-3TrX3qpY$3&tTy5$%5OniRZx7Pj2lSL}$~X%evAv8NwL5$f4e&XN zKEqc@FKSl*3f<5~38HXMm%#Z0R;H9}+mTjH9hy5;-4_O8p6a?w$cyN+l8L-GBc`z8 z)@$VxeC*lp^4|f*f4Pbo=~?LipCri0@V@|q@t-mOe*%o^AHbkyf%yT9GNyTEhbQss zgpSh6_%=Wy2lu^UQV?` zhqw3A)a#zKFYkbeudlDep;x6e!nDNfuih}n?|0#6&OPA{o|xy5qm|U$9(M(@#R2Yv77sj?f5~R60MDd<%6Ogl`>1tw*V2bg zNfU1|s5PIRwkDGvw1c$`b{X0h-cmZ52aGM^h$a*54F&T^?n#(v#`m(UO8Da7QVz7e z@>5M|>X%ye;@5r*4BvkjR?<#<6U(4PiG0atJb)l!k z?wrMA17_#$7YKMrDR)j@PvdkIx+@<(oZEB<7H!Vp>WvBWr%xZ_vKpz=W68v)d6dB( zT|}_E{qU~^2}vDcWM8XV_g%FC765K}Cfp|CwRGo@!8?kE% z;_V?~gbVgBvPGKpn|O%r_il!^)o9TVu^d|F<_)?iNs#=edPU5BVLgf-aCB`0y0*%+ zHjybSpON0nnvQ#7$CNtSIcjQZ?v59@YNS#%keLcPLYF|{!la!a-t`gAg}+*~n91gJ zxTrF{0PdZ|-I)Sl+x1*s=LaB{fMAELmgc^RY?HGQ{}v|g1t}k+^-rIWirkRaqtW0? z)!cQ^B=B$C%?7Ulk;~OsH(E3xF~G~NpiA(IQW}cbU%OpQo$ zNgTuWIv^}_l$q$FNkoT)s|7CYUUw%a(w5T$EOQ+V!U9zWF$N#hDFY^%W@T6+*`8&@ z$cDz!+;Ph%3)QuX#Ml7rR(BCnv3ieb>65rA=AqqwDC9f{4Ak9(Ogs%r=#%Vc7BT>E zKpsq@8AiAGquhsXYs?rva|^_V`xZUQSs?dK+o>sHN{{x(>OI3GC2`#c!n zY?wX%dNL1mZZ{FU@_y)Ni2Ys#H%Z9B!oo zl%WCCQk`MJ-@-)?Sl*z0%B29RcJrxF3H!s1I%1J_w^PX}^#9DCSZ`zgp z7_!Oel-))&oEEGlM^;i9c>>bcToaPkHFa}359MsVO=<W778BTH6039^RVUFLS!%vR`pbm z2kFW-?h(dT-fUom_dD4x$mCMgdV;b$|^EZ?-=6}$*on%fi6rHq`UK9{{Be-2;!sY>>83kaPB z&VkuCC06Gh%#NxGF2J)VsW^G0cF0mWX%q;m3az%MMvBmU-6aC*#~gs+Y=l!gP1C$s zR?Af z;GlMECT{B7wL5F5pgdbBH|7sm_+y-~H;XUp4if^lk1fYH0yd+pQ8dT`{xbKJ2$lqf6;Zhh$Ep-^pP-9*Z)}7jx2G;4 zpC962lh3=wdap&_k^TmP?E0MgH^lKTkocFRLC?ze-^9WEzlr0Yx#WK$j%H1XN+L0& z?sK)pwHxMkI((3MrLn)6X1J62=}KOh($Bpwdp&&h2T08o>(Lf(SPS(g@GwO z=8eJoNyyAc=iI|G0wZe9BM`*}Vr7r%mxP$A#H7)9n8!Q^iOnG?_iSbO1b$Sjk#!hW zA09wA9FUmU;TAE}-CHJj`whaETyVgMa1}0M!uXGu*Mo!rIb5FrA90%lmMc!DR5PUa z_GtC}R8B&rv|JkFv5yap8eoSp)>M-Sz-d$y*po`jJ8CIyx zUhD}#QRQcNVvt-D9`6t4kIQmYYTK8W!@Y~g{nmvShc^dW4&#JOaOiIr>#vMRSj-2R zK~9v)E18QV-b6mMhhf`UtKt<5UY(?#v#7`wwy^O@kuJTRzt>aIYEjoyL+R((am4P6 z8DsIYnx3I*lkxFiCH;?jczjhFz1YXFZ4uHCb#ummtI>B%b)s?n{U^z{FV-;8{X+-m z*yL@%*?&3&`(mFN-Nm4}YY3X^K{3k}&FH!H9>lHRA`Xl+GD%9j;|s3N1crs>^&lj6 z8nH)auv#PVA_Ap{pNk55%=X>K>%sDKRc&EunEWb-M3d27XwkdeOgh9?@%+AVb(~av zUw}pV_+wsTkQJN2=p#u80i-=1OkTkMIL7E22%0}IuNRJZUt{say8isd{+x=#e&KQQ z#JHZKrbLR$6>dFh7F<VM%wcKism|WrL z*`payLl0}1ba*u^%~I&x4EHvI#UUX9@O`4%9Sfn-qyrY&D=Zp(r_`;10IJCq zGJj3WU$~O^0`MH*$Mo)^nAIksqRXa-OUg^CCHeKs1O=Nz@B$pz=M&Z^t9Y^cBuftX zl9~*Vq;{)U_`Us>hZl+60H0q*a1&*7(V(SPye+^lfHB6HDd=9S z7Sg%UZwDj0Q@u&~*d%_rdo7R@65hcjCe*O5ACA_z9k{FXys0|LK9;h9gjdIea6n|; zw?SaQkK`d-?3f86eD66AsZ4b->;5D*nEUVxg7LjA~vxuno~Pe?t-x z^Y(8(f-*UwlPVE}0Z;yZ1WjlLnVg26JF`Y}dV6%AtbIE+`U3EW2=XOt>)yXGPhu!+RZX6{M`@``q;Nqo8Zw(QuA<_ViX&2%}FWL z{<_LSE=>(ZMLH#g;_MuirSD988orkhS+}1-#^B_tIa2pRJp>u@Cs=@MfcAm1JP;uO z8Z%#z{a0%3DWRzf;4h8xd8ZOt9!7TCk$p*OVw^wqP~rUCk5ORDEnqF^i3wO7L>J9< zwCsp>Vw&oG4oxA+)P5ZVEb?OWkzKj0S7f9j$}I)^EEmRnog;TvQG**u)1!}@OHgz9 zjG^TS1nw_?Nva*U2?$lu_-x4b&Qsih0=U`3)VWp_7yz>3+qgjh`V6%?D-}Z~&L;L< zb)awosf29|PU+LotVZVlTpZ&Tzs;MP+LlP-sg41OnkJ~Jal!6IH6ppBA+^ra@)72&%A_dCT0yKdF#oC+!um=xJ!eqwhOE57o)-1Hli0f za%o0RJEx%O0faTR;hBi^}ai%Z~Nz2X{;Jt zuq(#qC0qYzFSyFiT9yH#e@u_G^rK#6xz8#f;@!K8q{iB=+x>S8xfaT@_I%ZOJjIIE zXKyfkQoY;ieA-EiV#aXFSdq3H$I?K^wsc>b9H0 zm?8wy>9b=vgo{>Wq5)ZvE+m)(_V)#?>EtR_3E?weJ7wxOy?mpzwIRk^#wa(2ULo)V~{26v%$Nke2OVvNA*ltsaRTGfX z%Chb6V0W8cLTMcZ^}lXORz*f}I?H(iu-!F*6cWq?XyILA3S#@h@Xi8u)WWT79KJc0soiirU{X`pCvVw~wsINaAd zd>674P6nQBaHHsoZ4c+P`U__oS1%If=tRt{V+BT?IX_7r*S#c7byPHuL^MTOO1Fc_ zx7iQy`S<>0YpimsFUR1Q+#uk4eJ1As@`0jdh{A5*A$gI)>rxI( zRv#ROM)c4L=B4e&`uJQ^44!*xLpW9qL7@B%<*+FuiN_RJ5Wu~xqTY)V9)5K6t>%S3{StmNCchrw3rMx94oZLS9L z$O7>*A{(ccfor^POqh=$ikvNaFfZJ&pGA_}*6UC|zg56*-}e0|Eb<=lZAD(3NP zJ+O~UQH*fDne&~HqtaNso_BgPrkG*)N8FEtG!HNa#Yi(gW3D!FAQ<{#pw@XK8*aId zg%Et5?RKX{og;42)PcIL)b>4N1Av)iH7AD|Mm1F@hZROO-J^_zvHiL(I;UdlbEv%Z zCGABbrzP2ps1DLfXd9rh(`2Ic>-C za+}Qyi9xcmugP%P_34dVIcr(q26q zQW0u!{k}fW-(yEsM&L91ECORRVd3a8z`Z}ch50;^ET!NRw`z9{_m*^}J96}g!RzeN zk#8KGaD(fJBm;@jzS1+BSCqQx(+2{WGhQ}p$=ulm;bVexLSH(cnER7KB=e{eMo2LZ z#4+^GPC3)pc=-$L>*WsK@=A$O<7C8B+HA~{`sV~+-iS5bV%lI(errt6%Mbxq_FA~6 zEY%)&^vO|mG0zm0)=ImNpL${ypHEluTKIPJ-f%?OD;XjtdT6+I91&H>smJ_ePVgO& zL{Y&%Z)&6bM9``yH`SRH|I~eFk2%)gR^8PYZ&ud)*+s0j@7lE`tYH$DnN)9!rZ&?} z_R$tYOvp|2rhO>A+vn(Np-JOO8j~|9&fp}N=|H~_2Y=d%UqNiyeZFq~fqq_VU5ST5Yfz zBR!r?V&X9l8m+CG@d#hGN<;vI?}}5-Vpf4nK*%y=0Ac)9t>zHxfevYTk(_tCoA-zRUQdZ+eip- zm<+34WG0_ukW0Tdlw7)=Hyn#_J-ofvkRBCmJ1)MiT3wq_4|7H{aF?cLT9{s@3u#mi z_PX1|eH!1bev}m74X`nz3#*4EuC8)KT~n6hG%aO-PX+Oef`zs>agIMc{DP{kqRc5Q zf7WgIO@1GA{HJe87jRtl$=HD{dI=4`lH~y3F#3Qh&m^m%ZE|nuXxlKCfg=i&&1~We zxwAAEtKOqxZbDXgQz_TxVdmrw+k^QRN&_e{lw1_!HMaPV|LzwK$lyr}{rjHMK!k8Z zc*jn~;k4`T9Da|5P7v`pTa0k^TvD1{Yvr3ErG)^e$Uja(L-nzthHq6O;d42i&{X$JU1Qe-R( zGIED^fDt*L134-WRjYD?hFXiDq1LIZVHw2%(kx};8kTt9*TVRgGvf|y7C}j^7gWug zD0CE2Ew~aa7QrOP1*BTgOX8Il-*6O(My^Pd>c?leE=7|F&oH0OKb*w18`pR@_IDh=<7Cx??d zK*?eEy!kqg^_S+Pn@aJ~am-tj<8Z3!Yq|f{dBNpvQ%gG2JTwoUcApK@(X7U&tcH26 zC}pS?h&C@)#RO1 zs+77md^H9;Eng~ZHA-+J5}&E2^^0>apK%*2CZv1VJcEm)BQOSNeFG{^7Cz-CHlaG; zuj!^%4IuxBR8ib7moLTS z{uV?(DY|BLFqH~zer~dS{`N_@Pvc|w$esiqxz9ta|3IMDLZv_M>}|ESW{gXCceFZ=X?W=oho-uS7}I6 zx`a{6{Z@_n!Jx0bq0wtUQzE`Lf~^??m=aA_g{p(^Sbjzr2XSrNoawrW@V8OEAQ|Vo zrSS0prV5)C-V;z4F{aUGsk~YGpFiqcAwC_2324b_5?Cr{A(d}`Nlld058J0MP?~%n zho;Ac3hR~Dx0b@d>u_&#>Z*ciCdd9@28FFp*@-p2x4=DubbImA<4tuE z5^{KarqBv5fz~>91?*vqaPut=mJeJN5-UQdE-^xT@Fc^%Az*10$qA{_pVfzg$#| zEF6sg4?mgy$yEABp8W5aC8mF-q5la#4>iXkiN%n*R@4SH;s|!o$$=bkW@Quu;9_iv zED$mR=0tkFD@; zm_Ck0;9s7P?dW);9mLmv+rF^DjNjw^qeMdAI%M&oXZ&3CHWh`XB0COuxv^%Q<^jS| z09nVFHU~GH2nAd<&j}2jv%s70&uU><0WBk0culsH78qfx?u+ix#}$91zbG|;8NXDb zjwTyX#9AzR-8qimCwz!}MbD`Rx`r@9IzB0UtBq=E+V9>FSxL1ktjv>`Mnex~%3oL^ z>0Kb~;vv)z5^UlAetdH&R4EX)d$}T4d&ZdkP}v~^hUe$|es%a074>Q80MqN&vf5{; zee?8=#&d$a@_>KA*{*g-hJaC;Cpm^Q`PLz>1ElU?U3$MJe!&c}M-r%C6~I_wCGat5(46L^ zVS@q#WC2Vt>-Z@#+kFk8I3>QI{c8wW&AHr!Ps02lMLL0<$((V)R6@;91Vu+Nas&cLV{F<70Y)Alu;vD8NDv|HDru1V34u;JnQBRrKp*2 z)JjDY(o7Wk;nZ-L`n{v7Nt>g=rzeA-;-1;ps$4k~=nr7^)`q(;Qkk2fr-uBw;&}|9 zpfQo3HgWE9xcEcIJ|hdTaxS+MIthSms(*Ei>-_zWCs_AP8PHOOy z%Geffryn9blqRz_a9Wpju~S=fJEFkV8&qx6!j}v7hYp&3Qbj~Y;JNB!1$H&Fr{iZC zs%c_nj-;kKeU7^5t*68(yw7pq-XjKSyt5fHFbc5Qi5pqnHlV6$KeD0)h3H>L;l|6| z4h^+>Xtuuxy(#2J5x+LU?`R1p5`_fEn%KrJJ+s5rSrNUoxj7mOwb_JVKk?|`KK4SN&Rh{1>v zfGN!BEPuQUY3*@mUYvLiY0V5jK~0h}p9Om)U}X}eL6>kmu7>jDQe;`Ba3^g@UG6qQ zi34iU5I8D$%s=3-EbgDL9wQKoC|QVi%L(-&U0A-_%ISpm_m#;e4wqsblS4c@L{`77 z(wG8E-90%gLth=k9=iPUFGTb95JR;*HZg;|_Zp9lXeBtWEpoMhmmOerNj^Fi{_7Oa zzEwS`&da+@OR$;Em`FB~Shu4zQzNzf2TR??gZN+T#10Sw+F(t&vZGCp<$&RV<8fC! z6mw3Ed@1HCN2eTYbaM=6$r9jeL+V!YxnnJV-!eYN#1!M0GbWafi-v@?m|s3LL}Ed| zUx}Sx{^FP0k|J&%We$y!bQ=LFECYaE$`+Z1lKKoFq}|V_Hp|_^ClOj)@l^M+fNwbU z>3i+8th7hvS=yNp=dLnJhy9-BRuycu3n3;eOu&mc6C93rzvIC}~s*F=^2_D%bVfhhd+A3W}7%=Xo>m^rMLN{W^6%C73ked;)> zzlL@KKa3J?-YP@B@n?nQPyP%gI{i|Oz>CRo{v*!`gG3vOM9is?1?F~@TY>ewY^o2X zQvB%Mlyktt!91cHwFP6jB=8(4*4~`xrkXKr+VmcZ){^u~ClZdu0#{7%cwbDczxL0| zNRS3c!;4Zo&*1t5cYD>zi?_tURi32Q`wKW|5{-t=z;r4#HW>eauj)vS*n*VSE*QL1 z;|q1GA-0NAx}^+P>rH<0wv%hj4g2_s3;c7k>jmraH_>QK%}*AR)%T$r>LqV1GD6tn zJon|+6S9A6yY9Nme!5kCp}t`k?V&vS&Z!Kf!P*sAyfOO3Gi_Dwwwjga?M^)<9Z>J& zM(f+2awY1_N6(X!GsO&YpcrzQZtFn`sp{J@RnxgQ#h~l%Sjv)?4xC2H-Y)XJY2)A9 z!)xHdZqGF?p61$!N;U|&i+6R+=X&euj`t52H*Imt(iDNkGaG(%BC}G3Kf73z2i3BC zsc)@lpX1u7jVX~!0~cn^8e2{{&@X{*I4wF%n_8vrh!xt2iaWQH8t9gx-#Qf0xTdS^51wMqOw&gyQ9-tsm*yi13RdEJGK5#q1)W(u->(R zIMp@zpxAEA;Ho1Z-;Cx!i~QH=P$w2|<8Swt(SH@TP@Fq%aL{A+^LmgCI{baNZ**$|M~%}>l@$)cV$MXWlE3IZBKweH?~E!gA>G zZt3sx!zRUQwC4uPRnXayEx%;crV9r!GluAv-Cei-Sp&0 zW%A54=N=E4aln1nGYdVjZOQzUcbitkTm%RKS2|G(*mMK$RZ8x`xT6Iax$h&-!{T3J z$+FXAOZ|HM-tV5i?zW&SA7Xn7UBmh=eS_v&5n}noYM%mv5TBuI{MJ5^(O8Z&nRRny z3a`BFKkFw;73{k4y3%HTj&b~{ugqstZUO_krLWv))2$~G9=tK0_m|4n5i2?yFXCJ@ z*3!Q*NvD4+tmoi5$!6j1w-80v8s9=27<0?d+h-ICz;gU*${0Nbdg}obV>#)&VrO@p zhUO@x!_`Ps!7Zd;piwBnhe#@U$r~*Ipl=aI6OHKDeG%+4(jMB^M;(0KqjSQMz~l)C zGjRbsvXTW%7m5?aNdJjBj7DzUlGcm4xTAu>Hx+ncD$ff*2W3}>Z*IU?$xKfhlMm2X z*t4;Z3z@xRTZPJp--uTN+hHGZUS7?kHz<=a+QvJuUtBo-JYM<)ap0aDfzg5tiDXN` zfcFe1;Vm~1rSFC_$1uAu#a_rP1^(n&*>t%I3vc z8=cDnL~>$g*{UPwJvao@Ua=Q8me0Q(IbnBpij2?S zcZ!t2k}Z$Mpr#>h*C8l2is(-(Muo#o zk|(6pzp2N2jjsuJX*Ipd$wksJ^w^IsD&C_MMwB0Aa|A*|x(YK-p&FY;OEc^wE~wjH znvqrvXya#8G%@p!C^_$RX>#)-Vw2O6i|N|uF#B63*11SPXV@^SN8S#V%WrNB%Hj$` z(Zi3;u$ZD=NJT*!MV#>21%ZZjzGiEFRI{y4R-F2)(7TAfqxqhJ|9!Jl7g7>isUl)a zJyHaFy*^wK+R}v@%eu=Nj&mAK!?9Z-vuA%b>&fT#%E{aEmnb0+uo=^|sQz)M)KQKbe?|YNJ@tN?|{w2#~ zxg%Lytpzaag0;~$u|1%1QaKHJg~RF9t~!X+UK=@MUz#|?ywSL;DZeB?HxBFVJu66} zHp|fgcPm{{G!{;|Wd~*r`t?Yia!^Z>T=dv`dM4_8eo3WkdyVBx=$HpwjTgOeT7d&4 zWL7&+$j-DyF&a$^_3}g!;I=TG#e(vInBqdXyq%U( z*yy=*ukn|32-rQ!oG2T+e7@}1p)XqHy?4Uxe1)jbsaV{$dWa1mv{=HH9Dy3 z0g8g0-D#PPMu#QSa}FCBSoDpv!GOBvCb*NEVVMq&9V3*BMfc!le~K57CW$6CVr4s~ z(oj1Z?5d5B=l-Yt0)WpWwL%Pq8d*&_rhaQjonTS@a6gUc=h%${w z92=5Y%Gu?PCtWwk zZpT<;&W8$a-3@|jxQ|CxwS(TcE-tXE!=IGsZhfcBxnf(Oh;hH6-51eE)sSBQ4`c5f zBk7yRYqxD{+O}=mwvB1q#?UWEcmJxYr<7E3SFU_P9Fh-1uO+#r26I;S52mFrBgkUdK(N*ooTXRl(bm*1UG@ptFVraU%Db_ zlM|Ja^h8SR4(h{!nB-{=p3S>jIEjA311?;ErTAG2JW2sBJjCUO6hnZVuy)DyXJgCQ zn`#n`R*2N~7)XW>Fc#XSEx{y$R7z{@jnw&4gibjLPaxzWyD@Ebt5(5NZ3TcpnlXR40q|He&VH)ovkhV!a0cMy~<~6u&M7$Jn;Y0M*}CaQ!?6eeNr` zd_V0Ha(?O(Dk3G|i)jadG*1PLxx9z4A9%TuncEEbz5{x5F;~ss9Y0bN#thDVub%_& z24F%(u?5Jz%T<@`iI;P0EQ$9rHgpSiPDBsdi%)sHg$|}+a&3)atP@Grk3aeXZh&yG zUO*qFUJn*1e%^2AqbE0dGc#Jzsk@7Mrf0pSXjHlF#PZ`y8C)>dbIqS#CH#W!eLlTe z_Zjo7W$$vH#iRsu@upJE$K#`Tb}#Cx%LiF472GJF+P!cqF_ZWF0h*^rb6CS)#-=ku zj|HW#^nH=k$nqhj9qG3g!$mKw=3>(X$5YqT>RTj#6SJ656Vh2>R3|g|R&MFj$%9n9n7tM9zhNE1=~LX}IE(V?eJH+u*9Yr@|@7T#lWuG}M>20~wD9bP2on z%fUs7UGZ1vw-ZqBKb?U2-^wZB9%o_US9i@%TKX@Kw}%WiXGIE1rY1Y9c(h%>L5QKu zbrk(szY4k@=`djNs&fGH_jA^!aIze>U(p}QoFX-WS&Li2DKV$UA)Ur%p()n3ZX9RI zg1DUI=qFyi?L(3k3`Abt!(c6{(tgqUu(_+0CdN{u0;|z9i{@i+>XF6Atj^Qq-PWhZ zH|{avIEvG@71Sj>Czz0;i7vh0(jK{%w3qAR>l23X7#XNri4i%$|8J+jj~$3y_78uG zTtK9fIKB6$(d#2%DHoUbCuhaj%Uw&$+tC`lRiAF$wD__#WR`qI`51{o5VTZZHblQo z%uo565$v$7yiTcS<3&S+_bKAgj2XFIjj3z)p8iS}Bns#Ud$@+%BUh%gx0P|qolw^M z8+?30ua*X=)@_~#f$3aR(twio%&n}Sy)#l8Du$Fa+h$y|bL4>XvzCpI$yv8mxy05w%1 z+K(+E3VsbWtwqUQ6TST*=<}uQW0xnecO|4Qeyod{t|oR(I|!$%8hTBj&#&U9 z`{Oi3Y3qvT7S3&Q1(TO7f+#3+cqS7U(b$60Y@vfmRYQI z3sQtX0F7Zp$CBAHT$Drrg?yVF%C9fb2+U~42w?yCH$ChT^I2-({CMm$g%4Q3HO_C% z$Hb*4oHh(O9HF2g;ozho+Q8=PSEKTSG)7{pnewLbfHTkD7c;Sqiy08*3`|5&-ZB?) zHF05X8eIF(=w7GP5GQtv@YQN32USU4zDNsIL%XC}dKcn30Tvww)>H4{WlnqhHH?lL z04kLJ6NCPJv(Z3uvLL1dwH%oqB8t{V{YcnoBtm@5hb(yb%!qFjE~Ld+ktseL2XHi^;NT-nKQ2RICEXw}lf6#<@ieOu z#n)E09O7YHmL?g%w=VkPy!2qN!7iR8;%o-R8l4sKXNkTrq_uK0K@;MtNe;qA29S$C z*C(f`^&I44)XHFOTQA&RpAJlivP%pS>4MdI+bvqpBk&VXbF%B8CQW>5m%x-^{-FU- zF|)x>u|cQdeOd`0Qj}RbAffri@FVKrNgD78&tIa$q0B9#CPkoU!W%5hA@Y%7c6rq0 z&>9g14!d=st{LRdBQse%YB(yLO1S4s$P9O}r$xc2bF-ep^=To()#vbdNF3D?ZASJS zg$`DdZ-4Nzi0&~af;RQ9p6nXzFbzjVEVnD@B?HxQYvEQrf^993Fd zAU^b2P-`AI8nsu%>x;ZOh@aR{eJ(VD(x7{7e>WWJG}ff(EP911Oc_MyxN0=CJh0dVvZfg_FffO(OY#a?&qwspVc#~C}bFQ_l&Ufehxv->NX>wf#p$XCFo zDu~=7je@GL>p8PW5~Y8_zWnT?{C*%jg3gF3pgIin5-jY4KTDdN^@Ev1b0~W@*uJPX zKGidaL&I;IZR>?H_z(65nT17Coy9M0rq#hvn!CxfdxBa4F&KK6RvZa-;b=%sSdlQD zCxuXHX-4CK9g54*GOK9%r5v(hS96{nG26|UA-vE6zpwI}l72VmcTD;`+rc0nYNxYc z^A6xCXk|_MtG;9V7SJG*@>nNsA2qc4MyqJ*xW-cc zFdy6D1Sl!}y^vG8Hd7sopzRB z-2-vm*X3-msvD!+yIp$@^1LMM2_~n>oZD=r?{xWA+6AjL&6Z|5sl}6QdXCAs>|E=w zp=q2xil_IvCJ(cKLRxKbCRfeN+STqAFha^lsU6rh8mLamE=t4CcDhe{pj@Y1l`cUW z@_&}mF`S)v(&IU|<%~hKuM|*37RBklbt~@lu~i)9!@3>@YF1g2u4`YzUeOPgfPuTaaGYnt0Z zYrCAgg9dRY64qZ(F?$3Z6MvaM5ia4Q{G1<~IXVOKE9mei^*QJ{SxpUpF!ye0Qb^G9+;I>gDx3G*w5>+oYu+Fq zKw}do*mH&zXGA#kEBv=wY_8e@FcKDaWJ)+Y3vr*%4JD%0aniN;Mfk7iEFe%MH;M5~ z*l8I&Ywyro(N{IKS$vphcBEGh-34d?@xK&FVFlb z&RxM*H(eiE=D+9?%I2*47hPPx(d7_u;Tv5x{-R5PU5|7tSgcl>L|M*Edlduejul(k zspnZ$q;<}FQ$&LQJbvixJ{hHfE)PL3Kd zQ{kyT1mSfO0-NA%;$feeq=8=ulzGoY$U1!Cw6fm|kuNbPa`5uV%O`hBk?oT?JzX1o zTRxghj}g|mC!GLOCbQ+ZOYuxdAtYvUnapL9lu%AQtm{u-rwRAYP!{q>>_%d7O;K%UNG$FDieFfWcAMfe0zo^m>;gL1IW>-0Ya5?a4S&YhF~XQzitvM z&+82EQ7SgV1_KEi2{JV(x>$O5bBTW7@N={}%$q+17A%I_d8y+$`&LyZr~W<}(S*R# zOvpws4Y1CE&!$(-#NSRksv)}A-7`l=K-Lk@QgmaWLIm8mrUsV*4!X{`JJYb3I0CmQ zqHH7JsQu1^LaHf8vognc-;s38zYU1xYxg=JeqB^zXBhT08tk}A(O!8;dkyS)u(?ca z=$@6ubH;sMMdmPsGU&%Ko}E*n8b;IzAAi~pK2ZFj>6PRClB#^1*fArk&dzB??Xmvs z!y=)OP5QBA>N`o+nDsL{rph1*A2@j_e_2HAkq{%g`VOkBX z2=mllbHLguQg!vqZgjr0LVnXfv!tQU=E{8cW^?0J@cCtzyj>cgq(BJDu=`j!yTnkysj}A1Ev8i1PS$r>7mZ%jJd+Qv9-Mv$2e4U z54sc_F=i3sb4z^K&8G@tX`urJD#G#lg1G+t*yVJ=fEE|2mfhgmLz<8w<1w3m_oNK5 zU7Y!mc)cbZ%5ibeM3P{@JZ?TTT8~s-_u5l9GN@-=5bWX(nGhRzu>#q2LExbw_T4WB zsv$!kcKV)2mo`HiPG&9GzAWfG54I@@fu(7!?u+~rsij111`f5>Bh5M~I7L#&Br!a~ zkEHhPVf=Vj^bJn07XZB#O^hE98A~J)5eq+_P^HY56k)aWs#*RR3|AJUb1;*m2G-%2 zA{Cn2W+x*KnhCe5NeNWv$gu_nS_NT`jk#145=9Kd=`4VHhS0THwiq6i`|OoR5}`7+ z@7+VwZKe-i{~F@D!qMsWRz~NylitFH;PB?;^lc%&oN6{s3qA6faZ&$dzci`xzvLnF z<$y-KMny=Vi$22>*wU$9N+x8W^BxeUcgy)hqt~4Y+E#qvZ}x}umrs-W&Ae*GJq;#c zz{XQQvy_rhZl$Ek3jDf}EN87WPkU{^hB$Y1Q-e)2R&+&pJXbB-A7K}@i?PF2u$p@s zHuw3YHdc0F_Bz(zOO>!^2+40Y*0&&CrB@6ulIKbZcJp3_x5KO3F(J^{IO3LB+-UIu zP2vtoPAzh{X--FeltD>Gd}+L0Np0k>PbOP8Gm06j#p?Bx(&x+Ou(>%-Ts9Z9V3kDY zbC-lHcishm|Bsy4H;^|YPJc;G6d-opaJr&}>xv3}Qizw-(%`y$LUl!jK;IIDb@GcE z1-}at^%Tr<2G|6}=Q|aZO-k5RXZ_Mssxdn$ zyi4cH?b5Ece%w9LQ)0;ASFAeQ0*Jb^Q&;jKw^Qn?i`{DSix}*`iJnY8ioScq3k0m!#8odtD#A7m7IKhP|^Awx}x=X*Q`ViDI4F7?wx7 z+BEmNbF%`$@^k0tR3Pi;%L=S;9a{|}a;T5CradXEEy*(-D4@l6kycx19vm%G<=he% zo;`OQHgq!f8xFuAo68A}vhs6YDpSeS0COE`kxR_ySalx@%@wzX`bp!r6$@txP)87a zbHsU%yTH^#Q?`Q@5bdb9jj8}*a{ZnfV#hC(Ug^ip8%hayhC)_T=nbT89+ayF07uf- zMj!768vs0#?gGDZ8S^}{;#oA*ATO(M8mYHQtAHZKTT}7j_ssaiOhvnq)MmYsfZrT} zv{uW;29=RVo@wC$olvVSJUjK;nNGWz_Y>2^ZJpf@?RTsDo|OYAy{A;O_$zeh7`ZTY~`6TAvsYLz>B@+qc);lPU?w|8b5hdQIT2Y7>tf`>_ke!Pz2diH4 zn}B}kF2R$J9h*)-eMth9%f(Xe9WO#VILSE9u|pMHcSR6kAh%&+0rU^o#ie{!Pb0?7uMEKPdK3vy+Ma-!?4f z|2Kew`F{zZn9!7nF>3i6jOS(stf;;Y2?11?jPjd}40fOXn#Ki)2y(ma`KklW)~;Ya zA@EnPc#L74dgVa{Ww)wWs*mTJv*Pn#AC}U$4{L5IXY=!B}N^w~NCU=9}6Y z=X~wuv%i?Wg;=ezxG{G}f_GOfIX#|AV*eN`n*T9YMCp&u$N-YUvcJC01zCMND=_8T zb7n;sD2%v$ToO((y5L+ieNwu-uEiSKQpT+>NtCcXzp<^4$LU*Y`x4;nOm&7#8Pt+) zL)_XAjaUh&taV_mJsSG6^enq&-0$Wi@v&JJbKbWHs;wklZU*;*a{}V=;)CcKrHnWQT$*j`5ZCb@xmE zEsMvOGym{@Gq(1zcM(eRkH>zDB&TK#~!R>m?L&V4*~P!UVR_5i>SM1 zj;sMC^SCE-+r@@J*tFC4Rt=BfhMLRA znx2GTfy0~~`z!9wMG6c*qEPCLjF%Ea?1v7>X1-Xj&Od*RDEG!5M9Zym->61L`wyz| zvb=nw+AzJ$uW#wChd2*UjOabBNYsWPT>*hN#6J&@{gjze(&IMQN<1=PQiLdTfy>x79as_toP^f~7W!u0*DQoz<@8 z^`=Ej{e7U5Zo@Ar>REui-mo(sKFoRhtW#JlHeqIOL12cK0D+b4mdEZ;Xp_)g4}wnA`|a2D}RUbUFHS|O_Py#=F0l` zVqam!9u-S6pga($3PW9Td^VfjC01tgRg;i{X$cfM1Z+Lo;m2>nMK;l&xz)XnG)+Nu zPa$eInWMN#<%FiVg__|bzy6C_0`aqh@wk*yZN4$?N$d7 znr>e^^BL(b2S2#L!|eTfq8muil)<>_hS@)jhLXisFX{QvI|16&6BQ(%;m=GiQRot? z-p%)j6IEVt%eOVh#9^9ZGbHq+hO4i=2MF_yIt)BZK=zqCK}xaE>4#>=Rn@|`I*as0 zrEB$jOb;-s8)>ahqmyx)luS;`btOQFSVt;yHdJWYr)t^lLG}|8ud8Rm2pv+eF{dUD zkCRgeOJXdtGOIXj4V!?@Q8JSY!3Q(?gXSIRj);WX#OPZFmWrh}@3zUSt$6wRv#@vosl%mxBtpgOdL)CLJ^}zjg%);th zJUeDCel-fqG}mFqHcr~^P{Tz$X*Zp!nH{?SQiYW;cBhWA^=FqYNMoq%<|b8jqjtz6 zzk{D4-e{fCDH;v`dBODpJhtnB2c~p3Ojs7`f=1TeY)|hbO2Y~B z{!u2o-sXU?4?%}}L`S~r&h$o4x`(Hd)trMj(TlGWu+@CMhp!9pT9w-aoJ$vEKxIoW z$hq%9H?kDHm7qH-n-83D(QQoN8qsKIm-<#Fe3Pq_;EzRgg_i16tW6i*4w{$o5Ak3t zKDt@0VeJzy)tz#D8bVwzwC&A{j}_X^2*0G)E^WBntYt}~q5$3E!^NT&PjQ=SIS+OcrBnw0D}PBmI4{8`g7Of8(+yyG!(@ zqq-y^6-3YMWu0X7(UkN1ZfOB4?xUw(vG3~Jg6os3lxPw*oYn@0Iz|>Ueloo7r?H4* z=`2f>(46-EE22Zbld|dbKlQh#SQ(%tDS(3*D`Mz5E%1&V(fv$nJ`$+B& z+S@V9Sw(p^XEpeDxX2Og(UO-du4d+a(=S`hsFQdR9`*SpHip&lM184u%BUdPfMMyV zHB+D*eZ;nF&AREFxc)L3(sT40#=J*n>vEpD8HQ8xc7G#LT;TSTz^W_xP4TY*<>UjSp{! zriU3I`{UQ`%=H^LqN{2{z7lvf<@4i)aHZam>jYLHQ#_ydJ5DUF{;%5fG*OuTWGf z&Gx04(C7z_LWJSyq~j+G+|1i^_7e_Y^V=bIqXB!G8^a5KYJ5iE9Hk4s*3|ReIRq=x z-XkHx?lis*N%=OC?dN?P$rjNoGt}FR<#Vhmjg147U|1{t&Uks^+-4|-D7 z43|S|c(zu@eK816F&omX%W+cG!OkKs4=8HtaZ!_$9q{U?@KlwKM=c9a%j5BnHPyV7 zMOvPriip2&f}1uW^{~A-Wr_#(tt7LHJ(?q&JHqc^Bgnxw2O^e->+Ar^8}~^L)0+4W zH#H)(=f(u+pa7GY=sjrMS@842Fyl#E-d|4tvBv2_&eoR3dh8jV3DyNA3tZch*AufJ z_i-FMe;`Dvu2NW?bMd&$CT z%bBogf+@oKfn#2p!9UTVf8WM#9lgfbtm>LO;F8xZf|J?vNw{P#*Eo zCB>3>9DQU}4WvGKDppqqJO@+=V1>-kzNYi2;ik8QPB9`;E=^A?A z+A2wNjEb>~Yx6Knb)?+IdCUEZI(bHAPvg@>ncA( z4QG&a%^&F4$)kN49HaW-I#ClY(8;{g2{h`7(Evnp)UY6~leZ}Eeu3irZk4`<;bhdh z+NIGF5Uaw1Qm1pR?1o>vKc$#zqK!AYDvs z`;UwSVtH;6d`q)l3{9DKrdXTS?UVQm!`Znl)nn-!Y^15ipHsA9UvL7+)_4?fa3fa^ zWDPh*6$_*)y<;({nC8!{B!MKH~D zFA^o+4N#j#@i3+A{EeGx0=SP7GGn0Gq}u8NJH^ozBO9~6+$b+9Fz1pBj*}VBtB&*9 z#M3xzOt@W-S#kbuEL!H(411O$|Y| zRC*$deEizzK`UX2-Mt~Cptwk-OJz8rz>1ajE;V{zY!TMm}AHLL^=X%o)&v0wSXb&0J_vZ{VlQez005@!sO-u@oSK;SKbCv3DD2|yIc3M z_l$5HZIuM*5wH(ty&gxCsVek1Nip6p4Wr8LVT6i4h@OnEmayP)n$WGx9$$Z+^tyPm z$5_^-cB;mNOY>ltre6!YnywFYD1Mk3>3z~i?a6daVNU!UoxjyVvWO!*rBb~FM$QL5 zYm(zN+_|^!sm!%s%EL_jU~5qZ_Pr>u)+RbMDpTnLe`r&N9Nra)_MbK<9Qs zEvu$J-II=Dg(g|vy@W!eyM7di(gOFd@ylhaqC&tL-@})!3aHiLhBAa5Ol4^z+jP2T zzqP(T*Lr8mP1ALM`Z0=qQjx6?h?P^@tLmXb36YhUj_ z(BOZuo)>+O6j8N&j}*=P-!c!ZIF<~+RwhiW(05J|NJtJ~PoytjQ>=A8y5tpTpan}t zQ=Pg>C1p92v~TwZ1I4@JpR5NIn#{fXhoctXclwV{Fys&KkEx8iBYF{fGcNCM>-m>W zzUvRfINhlaPyd&zf09NUBo)#uUcR-Y1i121xu}eA^cImQ-Jje9aQID(d(LbL%2^D( zIXYb7cz;VgUudejZH}uZBut)_#-^c3-&|n)mkU(UD=RW_c)brnevqXh%1+zIr;V1$ z&N5a4&TEs{0mq`bjEupk$2X?U3*^XT&;QB4RsCnAh~5g>miPv6eK8t-%9wY|_^>}A zO)fB;w5VJm_*kOu8NSgL5HZp?ca5w!&xAOY_lxJ_02t*qgV(pMbnX4+Y;EuEq9nLb zt8h1!Xv-zBAK)rv^@1jT{>vah(Yc8Q!6(?16um}tFyG?Gxb3P z)MNcHAwlis*i0%Wp^coaUu5OQ7!s-kmvZ9yg*OMv0R;vmB<2MK^FXzyyy7=vwhsbh zm&vlaiGIDBARx&x=lIv_yS<%)Xk5}&B^1mb(5Dr>`=sx&f;Vkd!OF_RG%CNLmROUn z$vg;a$l)IhEvs2i&HN?ppg^DBSx1K&Z6|U#A7L&xR?!;%Hx$8N{i zKT3tC3E9gV_Kfrwpb8qHG8mpiOcEkw1n2N4s9<<*r}}{~uyaPhF2pvf*BMo-72K%9%;<%NGFjbH#MK zk5k8|nON3B>z_MM3X7cHyd7 z!jyMMF#DOmQTPC6jQU58$d1UDOk4`JvJivI*xyB&i@1{-W)_jaXwdTsf`>RaPWGz4 zqdFBB+EO*ZOa$*3&Sps#SI%{9%@%n^wYdV>gaBGprJ0x6RS0u48In?~!F$8}Y%4|> z1pWsf8-dgi7}TaTkQ!|4uiIsLd_bFy`qFh>1UEBK42&eL$Ksb9uT7oorV{-Ok ztC@Yx7E{RU5viSoyE+Yh74~17kZWe$ka-HNBizt2JF3sAssafxIPL?T_I;hpMc`G_=Md6#l=QSS&+bGY8&Q9eS zRBKS?f=KD?)$w*UL)&Ju6)SdLi8?NtAL3xqM>`fZ#Nai?VO@0_IX1WS6>^ivwVYq7 zE{~Ktan5q?xTO$7Cu7V6w|jG!1b^LM(}% zU(F4-OIeL}q@T0y_t6YOUKy-a5j#rh-ruF)jYn&{NY-lK@!f#ioz_zXz11QQ zEkf|Q*-+tuG?(yoN6J4ty)=rr&qdU;f*da?Ks!G2_|MZu_tDnXp$sF<>Sa*x)#MJx zp^0^3JN*jvjR%rtPXa%PI9C(y*tO{L@(x!S<6=ZE#*i!!D7lAYT7^OSg4h??LGByu zW}gET)C?=t$Hgxsj0S9Cd*p7g59LsMh%S)_eJdBb^;QxAx@9Y%#3fu23W>XYKv!*) zQ2Fa6dxWown-kkIWu8I@D*V?;L*=@4di{tB6t)}l{Nd#EZAJw$^W2$(z!ygQ3J^OX zDcO)AzguvxUQ72yBDi25K;N}x!ETQc2u3XEeXj8LXmP8nMuIGZgaiv}{EVO(@x!(g z=PVlj>x?Zgvfukzc3L9kP6I?@U$e1HO@oJeCGh@iPBDP50Vw>|n{hVZ;;1i9B>sup--*kw%9de4YSJhStyIj#L&qg*@j z(0V{}&}&k%Y~EcVK8_XaZnF%&uN+oPx_q_Rqk z^@{M9$75gfx_+nSm=>uVGSl{0Z1U2V#VqNH40P^t7>3o!pTo^FLo0Ca3ZpqLaf;dj zKHF9Q-XvDR#YAxuH|moX6EN3eD75=^nOGLgld^y~xm}~*V~Br{6O+N>bJfBKjk8Oe z3hJ^1FrN*l0@(UbOX<&))d5OzORRlC76_EIQ5$diSsx(JK2q((|bPgC>x$rXs z_St$Sg1Z$+gjb8>#LgC0lCMjzA2cxwfH%mDI6}^sWeC}QBdh8cOzkdcR;Q1zSV)S`Hn z&LG?8RxU_^ObLiqKy*O$ECw=zZ4QJNaJcwqGf5r;d8hP1na=kfN)1w81M7J?&rNYb zijrSmNOSjy6+hF*_QpTKkj`STmR>`TvezXizPZeoUjGfG{x#0T$jJV0#R1FzYjMsNf}?jJB|JeUCXAxRuEN^ozdiI{OKRU*omayQwTE z7!!369?tCPRrol`xj^LkBQcVgR$Z;IH0(E);15@OG6zYjflD;!sB=;*bO@o(nzVkiPWSSJp+4t%3l zdPi>oQf>jg@ZV5n5bJG$h{axdKW{cCA+U1%pd$lxxw^3}tGrcT6_uyTqhFVS zf*~4p8f5v`*r}2Q^ipML|Fq$fa;z4Z&zhavw^#VU5Hkt_DBpNkEn+**_Iwu91lqBd>3Q1}3il=4Y z&rx<@;D&kJGr{9n(`IRu;LG#LlNRmkShD&P!xN}t`svYh%f7{(fWBIsuGX! zqC{aM4wo!P>=zGYQtC@d%lIe4t%*{D(hNKe%m(D@A;$J|+UW5GS*X|GRTHCRtLK#C zkNdYvvN@c_PAyrc4J!sKW{4ZM#jBQ%%mxgEJq+_Z;Xb zBkDT%1tw*&Dvr{|`=1|bm6h5NCkn5OlLz}!BL3_v1`o{8@+T~^&N#>4Mc4&(Fxv1R zY?i4`EF)p#l0<795|*AfCiH(J$32A_Z5j%GtYh;6W5ED%{{+pZ3iu_q*7e; zx`R7%Qtq5QP#SHor*kX9a;tKaa!y}5GJce(j*fnStnpS&0y8LVDTqvJr$jZ}z2SK| zS8yP7urjU94v5gnoX}Y9N~U0v~R&AfOaiU2w zX_~oXP|Bi_y`9qV8*WYMYs-nNUcTqV^|tUI#U!0F^d>z>+v}6b;7w*~UX#JY9vVMz zSp!dV*|uZ#Hsx-+2(j-gX+{~O zd^RjH>XFrwrU-=(aNt29am&~;5+G-U#B@Qc5}~s0V9T@d80C0wOS9xS#}ZZc%1R+s zJuqT0dz$eJ^UFJJ(smWBL%~YRCoa}XB14y|aw%T*pGp5cCfYi4@f~%Gn_vSA4`E?q z4Ul)5YXQ26Ag&9mX!<*wUrVc79gD1Y#GjtZtFXm-DrPOu@4za}H}|5aag=M%^5_bd z$uHv-=h?b$DoWjX@jI2Skk1)o=P%92b52lv|Nw#x7nH4Q+VXY5WofulFH< z#qX!&m2^VgnIZGo+YTZ*Ek8EfJ6*QwnC%?BYnknsUeagR`74zSyH0WdEnhn#@A$b& z;_s>sUXc2$c5A|4^%U~Yjt^l6WZsnTV^ELhqbq{Fjr_X@?8iiD_P=g`vg%1oa-Slv zDBam8dnOu<)fB*F;af@ zjpzu*upy1qZ{Q=6xtLj#jibNF3pCSFu7Ve*7tXT zb$jVSsIH%psreqLb|d;IW2(*_vZ`$8VB6Sgs^uL2FRbwoLi}H^JHy}S|K5jU`PX*X zzl%03|BKgs0%t6m=x@;`uK|#Pnzw!BH@}|;G3fQgA0Q5DhsdnowZO~Yn_%kj@q<3{ z-z9ks7#C5L$U(!diuA5SkkBn%ACA;}+8p~pKY@I5|Xw=s5bU*7(}pYN|%DfF2` zLLjcUp*eH-zMm(4IX2SJH+y9tnFgPCxBYB%hsMR`>v^9Kw)Ih7(#BDXS;fGuJNg8$ zz8{~lXubQRiSQ-4N0pH!0*9HuJVrAE;7uhxmuG^)JfnFNt3txe*4HCSnp<|;7F6wP z3;3wNlDnh{cVoi@qI798z?cY4F19+UqZnu~e#|kLVr5A5@yaE>P3Q^KQ&CQj?X#?+wRNx)5kNC1i;tt41xOudbKoV{BJSF}z)4lq((w+V@L=6BN3F!^$ z=?>8iXq&rGkJ&EdZl)_8ap&lcp%crDuy-2I2r&d;IAV61G)R>fYJiW=du)KQ%=e8- z(VKDSS_{iNV|_nncSIBg!9!ve0PDl)nJdQudh>1I97wK!*6Y@-u5Yds+O9IBL;)Um zV_kjQeLh&uc0$Ds%lQNocCRMV_4nW#bSL}qCJ-d#pM|eXZ7*RJ6keUzzgb{Utv=(kkJiha;nOM~SqA z)14)@*Q)L6qgXzV0VZX?6R)UNj9-1*=#3ciWA1VxSs270Bp?k#J_HL#FB;~AmJrOj z&cweZ_Y9PCpf!&Se?IRvvi;GeSK3i^$CkeA%PWg(iIv5`E zi;AaWN^r~7&|erhNZ=L!kZxg``ANJ5uR^ELszZ{BZW|ZSBUdz0KNNtre z2S}T0!4JnJMjE6tV8R26P3Q)|aDxers+O3y9<+CeI4Vr^HPC()k8F@FYu z5>Z=pn10kUD!%!)fig&Olg`sfjsM~>puz3Ga0m!eTIz{J?$9M~6!yM%gX>y-yb+(S z(l~yww_f_<9qw;bCD`EEM24d`S(j~~D({;fRt(L z@GFJE?`^G2V>#~_%w98}_F;>(oy=Vf zYp(Ac(OTy>CcAK-_Hk7lA1a{p7P%xj;67~YRL*Z7(NeQGLoxsQ{+TJgcNEY!wNyy& zzR!eMQP21518I%i=L3hMl^4Wuop%ZpOju&tuZ866cfUUbG>wwx`(l>b?e2_{iKkAd zT8I)`40amd(Wb5)V9WC@kj1kzq+*dP?EpHoszgYys3V!{q4lXO&ku*BevZSoj6%ZU zOx8^W^INICcXGLLsKxLL}%RQxBxvhWP! zqB(dCO|+$iXJRBqUz#Vy@dYr6u+FfVtUJNh8+KG+eVWmUiDlA1{7(U4{IBtGmh!bu2I;maOR@#|v<7CaLPPM5L$O`q@{XU$Av!{SZHSs|l zt$<{}Pl<}S6m7LIspfs}{wT4tGT4Zry@phVLW$kVTn1gxFD-lCGPNBq9q?N# zlqjjPl;Wt4dHR&6o&u1Y5W}ETE(x8C7czsm7`7`KiJ}Wc40v?8AcHnSdy!)iyPDKf z{n&K&zv(lXRto|2OFfdib$M3mfKMS?f4VH>k?L8Fjc5&z8MA}$(D!YW}XB)D(){(&1Uc<@Hj zD9bvJxw)WzSV5seg6*wPH$i-*aG$ zI%XpjlM||FRVhafbmn4j5M+N><1Pc>x{Qs+kN5r0fqh!Vc%|L8@8Qm|I05YtFv(F)1Ziq-oGhTW#O=qc?xGEj&WnDy?|r=M!brjMJg z(`BAKwI+BIfzl5USCT3l{n88k5=siqPn4OYa!I>K0_71|S~-@(!I1nt=L%G>qzEez zoh1Hie)+}A$Xuv7KV8(_n{60o(Hqz^tiM!<$}g^iA+WRv#gjNCMJ&*jp{)|#%{?)! zaMUeitp&_r#@d6@i4$4pJ#6)5FZ^g>&1jBw5R|}*_#5f@t5NZqJ?Nhl;U74NphQeb8u*M@_Fx{ zd8$a+UHy4Yd%{W4YUYhZ`4eWqKAE<=Ds|hgfl`)>E(J)X_q$Tr(*!ig9i;}BRr^Mr zjX<4n1zfp-JPuo#Q>9=j`45CnLt{<|7WyL#Q5!2n1yZSAXpNdzaxM~d6Et6*iU3k? z%iT2zmZ3q?EgOtsLT8C-1Q6lrEGg@ja5PmtZg)c&Vt|=7jRPt|(?YPl&pn zN;5XwVa;g+8`2T+zw@uiGJ-MxmM{G@^~O-cTgTIr3I1j2YBKT>9Lq#0Z%i6*#C1q1 zT~hub*|l1l2#3DsrFosd)1JK}Z;Wf#tdu?9XnZVKQxda?1Llv z1l?3fzOHm0a2;t7>{8I%rzaRM$h_4gmKA~yl9ECh_=ZwlQt6Zy>=M7TwyyE*Qm;CjP$U{TSL%r#nhck@&x4)KE#;4Xy-e_%p`J-% zK!UGhgZhZmib?Fov)`&xPw3KQL2xWfLmdxlqFOTc%K6h`NxY9* zPwuaG^vr!+|6Fj_{h{^T3T&aIDUq>vLzm@{h)o&4F`rC3_nG~P`oM%%+3oln>XjVs zOlO#+=`0J)5W)0-1YL|Yn-C#huHvxGd%ZOD+n*-7ROsfM=$8YZ{d{EPrtwLI@X!PE z>hV!qx68W|@ww`BDp{IEGaZV+Q_X9**k*h93vam5xsz^!7>?Haz{aVZI5?`Y#UR)+!$JXAfKDSqya@Ke|C#%4Iq zC+HXg!NkN9Twn%B>jyfuLE;ZU*v2w519$D0W5AIEXElrCf!W*KnrGDs(WRbMWv_BU9-m9gsSyjhrQ|X_~{Y?PX9r zR5ec5JpqO!M%D0=x?SIJG91X=C*{drw;K+PTrQKWS+%D6*kHp&~1?J9QsE4*D9%kTll6MWYg`Z9}LG8dg3eK_Y8^4?*rf-1roLTeZwNIMQZST`D-An- zhcVe-H#O(OST@2-%RUV*{hADCjks>4d~Bwh?S}fhd~zlX^w3^M-9*T!7yvdwRdwb@8>i$Ys~ez*5ewS^7T|yR zWCKLwCHd!)1GuwqC&3{!Q6hY$@Gc|(F5ALIzd9B)lbGY)3G4@Hk4_rsV%k=EahxWDHRY>`&h6NrT^|*kXYaUxDAL>W{dADmGy6 zA8`YAujlO!Jg$d|_*q&OsJ~v_g0?cU`0Z_+LfMi$?w8l=-`txV%`F7DzB5BMuh-W@ z+#T$%`+WF^>xmwnOkSFh+^IPnpOJ`%&lX_s5MSWa^SaM$v#-y)30K;)(&gOAJTHv~ ze>z>cC}DQ2`V(NagPX%+;OMzgYVO-=_xkjYL8_xwE~SxO{ko7#Q^dndhX?sY8=)~I zgd$A&JEDkr^~JL#M7WI^Dv3CD@x`{Blx)@Ejre!#oa-^TluifMeazv%f$jE^NBrE^l1tDn;QB>ZE2=6+H&g zbx&R`M6S`a=O&gCar}x-Xn$7ePKN)rE0j<)d%qO94Jr^K^v^ox>`Gd8P4NTzoG@-% z`kZEs;T*n4Tl&1?u#rc1`WzAv>gS<_gl*ouZgufPdo=jZH37QiFNqc8U60J%y3(g@ z0;X?jHKY#~RY#Pn3tsm0y5qZm?v+<@JSr8Z0OW6}^#`?T!^Kc})7@r+su_SNE_BSeLd)*sFfgJDQqP(Dw3@H1F#t=M912g5+OOft(NOp+bd~EbO>?UrJ!JnYl(w>9 z4#RL_WgsCtA>6dJ=S)nAPvRV!{e>m*gbd3vZ1tY(cTE`%0}_+Ji05io2Zqk-ue>Kp zX0a-Y-X~;bf47_{F%eY2(e-$A0!CyES06WOr;kW1{6|gVc;}1A(%Jgld(LgSlu?3E zU2+hiac+yF^o8sunZ$$AXjD>S z6k>ZYKqb_iX~u$)-!$aZgpOjn4Db=v$(~HVnz~Wpkg4k_X%c&lxNq93H6l4zatFKBxxy0@Z~rO;ny<& zgGmKrg^G`eU(SIZN$BU(vTJE@d<~E8E6U#*8BqLAfoO*G*C7Y0iRIr_*tm#p4v=<(gyypJtvK*z^ zJspLDR?5d_OaZC_L(X}1AS6kb!Bl8siu!B`*M}(GEKS_*15rh08kk}d%(5Ka8f_Mz zWTP|o%)pHzT%ZE5CCXj8U(tPj%~7)3=GSpX(^De6u@p56Hi{mEejknzQYgj_vxU zkV)g>tVOTNc4%ytLlliO4Bytv6X@FAbh?R3dRV$2Q&|*)?;_GsRHYDAH2fPEGry{P z0U5IM4WZ9f9cCnX3C=P)k0mNsK85^`_eWar3^l$#d6p)mfNOuXoyKs!WWYLGI< zmPqxI7!qvHAPiw?E}yb}n>l$-5j3cKHrhi0&is75Rn3XG?(xwj`=ThGN47*>RTXm~ zq&5)#mPr7)^B>fif#9_tUgnvykygbOiT-(L)bAiCB^=<6owC^hO=1ISPkIDzud7Vnwu2jzx^IcL+q#T9Nq4hY~lWzz8)H!zQV7ihHfW2p#86U}O?Bwt6p~25X2&bZzte`L(YcLok^&)<>i*oKPoO-Td5@GMk$$v?-bybZ6svfk$z8rb?iSrs+Y?WiJ+4R@A*Fi4PbWvwC`g9*lk=jbl zG*~!k4XCX&X;v%BJ%wk%tnN@bTN{=xTZ?0|o^0mqUvZK# zYyeg}O>L0}_^cIqsu2!TB00)yOZ`OU(`fZRS0PcZlBP8D$cohaJK7L_rdIS0uK9c2 zn9f@>k~PO9%Ls*{fst=lD$6StDzR#(yu=%2yq*+1;(*#M=ln2J_q9jjAu3f&&nZpo zZyNMd4W$O$1w{gri)PRWxD%IZEJMGlPf)_|qc=pk4GS$APdrfgT_2rO?)Aclm+0Lw zPkMSq*`?=heupV2(9TY_E{I9D7$)*6Tx;D^y1qS)GKSg9C=D^#cnR2BmvjScZT4j@Ko(;^Ut#gr2#}-6dX? z>%)`V%|n5CZlq$(_k}Qs4NpfJ-bwCJMuUqN)Ps6D2wB5sLkyc5TX@ym zUMvr@9g|HF-=rwv_EX(!0!bJ=FkmZe z55Lroxk{w-(aT(P^u;>%5I0&$Ktxm`Cz~wk%b51#6mYsFXFO6A`}d$0JE$slT;;G5 z>4A}V@e{kT@#pNqwH|_*q|FS_x-Rl$+GzK7G~~#TW}2E{NW6!M?%L_P#W?gj zpKpSfHk}mig?Gps*jr7t8Gmn2o)6*Oz+O*6yrs{78)^Qn%Vwl!WBWfN4a@(Xqr&pP z$x#{lQEL-2KWyvDn-+pxM=Vm1i<63N`X;kAw$l5G03$l?J-bI-Iw-GQ86btnCte=6 z*t&!@WPZ85c_ZG`&1EkkM{@qqs68$IlA&^gEy~(PD&X4g>#Z+av z)6F`_$GeHF3s1ZY4%4n?w-O1cw9ID0q+Y4b-$BXtY0K$|Q;bE-*cziw^N0lss8$O` z87k{m3-i&|0%m=y)nT!!=@9N^0dirHc2UtsnEiMCB5L-{!{HF+N;+yvWjDj9QR(P_ z?L*8pOl?O+*ei(M17?t4t-C9LnJZ9A89^l=^)NvwBNZ$RF z9nXTm^OD6xz<6r%`OL*i)Fcv(qlsr(zbf+sD`GHic2(bi`s-x)R#XFjj5YcmpZ0He z_(Mcf4{r+%tZo#Oj6F7(3}&d`X)))$X~MwA?)NyOC~&^2f#ndZlau}02LE(UYN6^gd6p2qL~dA4B)+*Y`Z<*c7R(@Q>FAN&Fktua(<$9BqIT)i(*LDX zh5xxS`0FqCx#QX0`sFd|YjSSq{ z9E|L?7zk8sZz)E^$j1YjIx>sJ&a(~>KbEGQB4622Wf@IFN7lB@y`Qz1)H zk?%i|#Em6J6?L1?!Taf`11g;6Rn1$M;)}yBv13MPr2!;uSr)AthnhZ|2(B_KVPHX7 zZhcX(jlq!9cI24(f9fE$fX>ZT`B@w_`d&+v-BzWB{u)%bL!BL|Z9$JWwG+FiHJxBw zQ*`+qd@Fcx@;f*XRyA}NZLDO2ypdtGQ==6icaE#Ct+Eew8iJ6szIm#&$TUe~>|DAH zPzMEw7EvXa<6ozeV}fEe#yG=HF8YjUPM2#awuDlcJNO@~X+)agmshvdCu0yTA<87_ zj&1xnA6t_IA2rg5Mr=kfMX8lS+DWz(9yuADTl1$EF}Nt0#40s&>hxf-Ce^cOccxOk zRodChg)UIS-|$FUzcEuTirw2z&rx+$^6ogh;ax(-|GtBT4FUSPcP}G^CWW5C6VF z_aFxTogg}pfsQ>djoA0|Jl6~Y!Ojq>!Aggc&vIexy9Dp0Om%7EbR)?AxI1jbS`N&C zV}@bcP(-Wy=2<>}i*3B?$niU=hQL9=H*}C8m=YGbc6>WkLjI}}QP!bx;DJUaJLLjU zUQFcN8(1ysYe9y6*p2X-K3G)osml=FVNP{`OPK4X9?(_`o#6YdD=QM`-%a^D1KJBV zg562H?6dI#XQKk5Go#E2w^=C$-s?$VtF}r1)T9XZ6QbN4m5VxyVI0}AbygNQ_$-7% z_~+YaP~$;U|31lZlweGU;@+dnkUS-t^O_>dx(3kT6zP1;8tH2r1#oH~#ZSs9QW7oR zop#{v`YAEa7t?vwx;@tmc&jewXYloM|Et zzu6eG`7$yXWJ^zLr;9JfRiRAtHffE8H89I1LEf^HZC|t-bu$Ym##xhE$Ky%wl4bwq zL>Lc@ynd^v(I`PP!LzV{MArq2p$*}?e2jeWvMwy7gO_^rU5=ZUEz9q(Uj82 zspI>MyOqXPU&_3L__jiUCV2kv$9RnLh=;cZz>DV7M4&j`thRsi%mzG9k=SOZX9;KI z@m!hmJXfmN>6HK6(+ObJ`^<6NfuV8aI&RLYbM0|UaJB!Fzia4+|7ZL?I{4!3KEB=U z!RK~Y^*AKVtVmUYt}UN(^g|gYI?ilEgy0(p%BnZr>*TLkr5OQ!4_o-4nU~~}f+tad zBw^jE`1IGqNuM;Xk#~g0KuxPSKFUY%+sW(H11bMJl=*+@YyQ=){QuD^EdQYmvHaV% z{-3{US^m*D{lCE0U6|6ghAp>Ox_OQOlvqBzy}$Iv6#O>lF;4X7G!szyoB15acCNi* zy$(Eyh_5k*46Nm`reTgF7zH)3_im0C{=h?hw+&%G;{SNm2XK41K0iYS{$%g+eSf{I zB;1eKh3Z8=-JpQK-d}^iRT9z^#*92U2ERTp)bMhZ6=>u$ggmw|N1z@6u0gD0r3m^4 zfMI>!P5`a|7)&tQu(zAg1Q*CUl2AP+a){Ifa9jN`RoMQe%dNn$KuYY$sW8paga`Q} zs&4Gi)6P3UWlN_aPCHeMZ-XVywN?WrYeV6tn0TJMhf#}IFC}rF6-pv~G>~7wgp!=K zp`{B^0LuqPc(p#ciJUDXLBh^P=2$x5mZXaq0TrUowXw8d0G3%&OB?1TPe8L1(2 zB>cM2;68WsV5N&L6|%s){pT#suNT2h7Tk_GzAf`3!iSq%P{0ZQL5g;F)*{;-boPZD zBGQ99Xb`BOWGl2)XEoMUU``St-1qyDw(+iXbMMFC7MT7Wn`&ljlmO^v;Exjl2kHQsG zdjaLmWcWFp^-K>X)ANw>Q=5TqDOmHP2)4<#wh8X2f1 z)I*=%RV@+>9XW0Oul5i6@nv^c;7UD$EI{tYUMmaLCq#LG+DN+J=VFf9QmSDljpveU z7VDgj7A%=P5>D8I4L`p6!p*Ka@>;@-d1&K?^YBS^Zz}6#^oZaN(!0YUH6z&R!nqdx zT31c~RGJ^@FtYzqRyq>qPQ%(s2|o&&gK3jd8LCKQ=yf`b8S)!S&h7czxYcSnH7aSRD3lD=rE<{eK4TK3pLz18?pBY|OT zj0VYWI46sFALd4q7ksExqM%vdgegBcFZV#yjCpd)F~GJB+;%FlY)G|C$d%*T5~b#Y zI@Z=~uoqB3>m8|Me*FZwW5N+Ca(JFG6@sXX|AJ)p^1%p9%vuQbT_Uw5$qX3rY)hkv z(VFmC$3-FegCpnuf!3|U^@Q!Sv*wcOts)4+=9#f^#IFHi7fx068`0JB3l%ZoBKeoU zYsLi4sZfl%8Cz|?nYog&1=Slh(l#*E>mb|Gjq82C1IDZlEkf2BTtzN5NNp!w@!)Lfp|$CvZDJ&pN!h%7Ef2;H7v_o*9EptC z&pcA+wC4NLW6v{jCz+QI?-Jl2YVDG-Ikj}zp5qfvr>j>UhuX2QTZRK1hoe#^L^vnd zTUkid%~w%okOo$T`)fZ5I5l~AE>1FM6J=314Jx{&x!IT#lpJl%J38m6^>gGTb=ocD z6G_tJX@|`TB|BptJJVMy+#VnxC%R$|>Pb%ZrDtdzq3!ximDtHEB{s9?pD7iBMaSez zWydP}GP^_JQVdXiq$SQGg(?H}PTiGo+*DphnvS z9nT@_WT0rwKOm_V6dMgIE;AgIt9X;gP}|F^0dfU_ z&g(BKTaV%=Kj+$Ww&3@MD>H}E-*`5`u(0ihy-rBRROX$u(y6jnrilu{M{|UJpfO#h zT{H{pX{oX@fl%?l_-mhHudC?oN~Nf%rbzFE$Y=58_c9oPSVyXNRr}6st*3=0Oht}r zQ3JNhgb1jTK}rAzqcnSO5|Tej28=U>9O6Xz^KA1cwFr?TKsRgZ(`VJfW3tsLB-{R& z3iYqhw2Qa&so`0LBT}Z6Zn~*VcaSC|^1N@t;)e)yG6o<`Z8-ry6FCs^ zp!q^D*AcUK&hoKrja3-MT+kzlub|qV6xYH|2Mk>{fxIdK-yRkl2agMOY&8&0J9sVq z)2YucNw0=7$2Ct>F(lxsgX8Xk8JO%!x}~YQh@zXRr5ld)UKA}W?9cYiuYY|@qF}}4 zi88t2SWS$)ts;skzL{S6=fKTS8`Bk0^j0T+Ss7Xgq#7uxm|FvC^C3ox4ZOGl+Fz@} zx;1Oag=0L^YuXA_zuQ@p4p<`Dk>2bw9}QvQ_-LZeaD7Zx_RZMLPolD3EZ#8&v92z{Dw%7UJ4 zT%d<(LpXK*(pycIU^taObwc$%J9(_U)6t~2Y7Z}(Qrl{Vu^8dB9y(*FX5%v)UL+n( z)>^T09HVSW8QZ|n)lhN=r%A@7QBlMmL!BIN+rZ>oqq}+{$#Od3)FjX2|1_6)aq&Af za~atrv^E$8ny9}woMVR`*SZd?9tmsv)D>cF+gM}XH+Du0co%EX@?1R*+}WbKHuP>) z&o&lj_@#-mroFL!n?lBQ*7 zYEz7#C!B)H7G-n`Ej}}!Fne>8QoeM?k!s`jk?dm*kU>!alAUQGy*U-O@K2db#N4U< z`~0y;P2_^y#Oudf^(>9Xq)c-Ax^+$CH*@vp+4Z&z+s^l;uS9MsTqmi?9a`ELl>?Bi zdfMK#gCa`-AjOM2|y>NPQVzK?l<6lXT~^XOP<9v*DR9WJQs;Rs(3?)+Sk zZ)a01`V3wWdna6EF1-Befkl8NIlZuVhQA6kB6W8iHq}5mT)~pq6e%*8u-MS*Hu)>; zcWS&kQ<|`B;_DCh>43#TY8+SjqV!K1&c}L&9#An{Fz@J$19W`&-^Z!ptGr;vhwJFF z)=x<~_jkpfuQxT906>Q6ZC-nGja#ilmRG>d=Jgb=68FL(;SaIx!1{b1KMmp!#Pq;&Cc%-?vk5e9Ue4Z~G;3oKK#H!s*UP&(&GH_f+<87w||#2$*z zn|B3jAh9>d{`=zzkc=bkd?bGtR3ovhXF}1NGTD2z6m_$= z-55u7b9_39gLN-X@LlIg1Lw^?d_|neFq&MMHLiN%QBR$28Vo5;YezH+hT^V(n4>!; z)IFOkx~N{NpXdaAl>COEsyRril5#YQOq?;~N%I0#%KW~6NjBfbYA7lxoo#y_Y)>(r zDAY&*bU5N_Q-C`9A2Dpy)Mk)YqE|WCVQ-_zM%-*#(1jluzq+L%4-!R{zKeorLDM?P ziWXZVTApI>w;8xDe@~%hfj%jq$=o$8WZ!PM_7+7E8hBT@ba!h^mq?hKv0%>;_v9ZK z8wDJ)C37c-jJ>OtD3UvL)x{aSb1<(ZXizcFgv(P4iY{SPc@Am5o+e$1zwWac=+nAZ z(R-epdEE^z-@`h+O;A2{^{&Cx8!IHvJK#pK#5`3}2k4f6D}=z)VBW*>TG7 zgXXs{wn9YsSbnTgKuOpC9nb2C<>d|e#pI37Ew~`53*B|RB3hz%+p)8B4^-f=Wq97B zIH!Od?`(K=c)!In7G1r9UH+kLlngS!z8>VmGyUU+VXaF8R&@jr*DTY@_4KT#h0B!J zDYjdFk|_3(fXtMdSnzF3HxQSzJuA0);k1h1ApgS==ohGUe@#6^bf@8*FoFP&M4zd6 z9V!>Jt<^IbXLq^64}{CdUz6JIl{yl~wj|u|a!ZD2Svq_c=8cfkz&D5bnUxRl2gakn|%-b*O%>BKM8QDMYdpFmlY_mTp13c`1ph6&yjNo9 z&Nf7|#p1|*I_ABuEYSYUj|o30lYu*H>G^)HT#UX_MGg=)v)<*F9C)^$l!4RR_H*&_ zr_^29>Pw}P6Xze?kt@PsmPnUKexWImga=rDrZYtz#Lx7|)SkWb#{CCXyR0;=rUXpP$MvcM_8b~n z%qY1h6F2X)eGi!MgSHryN$vzMNruDz`4BpffT!#Lu)py^_27!{MMotbDCeSF_e3CP z`BQO&Jj|&?Kh$OxNfL>xCO0~5-!fQls{QK5jp&Pxij52KgXhdp@Cc8{@*qu^-Zv_F zw*g~G3KH!(J+PB?W?Y%rn?5sfCK{$vE>IB*_6IS?EGLy1HOxQfoD(jL2zma4_4NQ| zM(^qNeOOtY@~oRO9m*zuHhX z1`GT_clu0uD1rxgSM0;118c7`JE?nDwLP`rE~S9oQZPoS50^vh>+9>U7)-7ptkv@& z%#nl87cJVKtdiwQ)ZsBG4H)YhK9g~K=hzfY9})CbZyxDM89;Wj7Xv_C@DaPa%W4wSNK*Oxjrd40*e zKH5AcuC88OG|~pK#q5aIINyE0vPAv#lPb@N)Xx6uG0fs{+B?0s$pJTO)@dp6@GYS_7k!(L6iv|hmsc#4r34Iq3@v_T^~S}|W6u@|jEg}ZU} zI(aMP_kMx=V6EbOmUNt0V|=564fEgE0MDj)(H!R>G0T!mt%ouAE!O({8 z>AQArnI2 z0}})|@7AR{XDnLawC)eY2~V^NEtYFz%Lo#!dPWZ$u$w`HglNMfCKXfh)!;qUTtp?b z6=V@4l*F`8j@4>jqmS*as|^>a+$09i_z5XRRO)AFN)~5;Ao@c*1qNQL;xSZSoCGDJ zBKShyj#WitEIr-MN-E&2-i$L5EZlLF^Q%G`a7u%5iT^au&by-r<5 zzfu;}4~pX&>o}ErxkB2nOd<)vedWM64BSo={s8_yq!*eA(N~5%2y!Hc3=-Z{5YCEx znTu+W?u|ZsNSd9afeEy}3{oF5jGYi`Pbci6@lDQ8>lBwdh7~Asr=W$8be%%42CrKa z{#*~t-?c*jGHN9cwYyt|=O;t~QX%4}9Cpr|3CcXo@&1fk1VR>W|Q$sfk81noa4o=Utvp*+?t&|ME)JzpQcWZLC zCZh+CpmR~maw1P*GS6nfS>poA_(L0W(Fi~W>OaRzU(3(&QjIpiqr1_!Ku|Dy+!411 z&_;}pR;y*SiOt8+Axuc?>bm92(qs=Y@1k6GB@F2YS5@rJ1BOj=c_d~cMU!uf)&c!n zp(?5mr1{1W9AMeM6C6O12V$EapvoT*DD`#}8^A6>p(8-3(Xe>;AafDG*BlIhq^V^4 z8wh|28skIH+c00fVwt4PIcPxK=68LjUG>CVQbo`P2-qO=Dx%kik& zg?V8)aDY|Ig$m0cExdCRyw~oDAs9aOHe+DC5^UzG`BrXGlL_a!Bbc2@%qE~;IP z#7pJrdt3L#O(&jx|EI(9b#*W7Jlr~$LlfPhE#%4*79+|hN$?R1ur+7P2$S}eWrdca zaO&gZcVFYadkTX7QcdWVWW}}_w2)cs`jBF$qYgivo|yY)yJ%f^!8fvL%w@Xk@qSDQ z3;zpLWJB=Ttc}URc)w)o+t-_#k>1j!x9q`;7IXxc5FSQo z$7!@us4=8=7PXG_g6s67kR1?O&0}KY078$yJF$YIJRvO9080y~TU?u%MCINqkh3BR zNTz?;CT&wk>*KB_GyfiQZB`GA zek`HxcSWB(m(FzuL8y6V9dhy6ahmpLXz3`v_sMwM{-Q0;Q2LeOOIvWReF}aB+9)2t znR4BQhVJP7qJy{LGg`O_4d7(|y*=f-T#@m#<>^PIRa2nWjj~#8--U?x@gtL@o2(zX z?nL!PzZYk}soCGpN?`cJqW!0+&2Knq&>$5u7lAj)4PY7jrH-e03#9*fA8CAb&tdyU zjSaiM7lPa|+het8lq0@`hj6h&{b;NJu&b_`;r*u2Bin7L0UB<28LaRPOeRHs>C52W zzMTr4lXri#ROO&7Xli6vYySnpfgLHQ&#u_g>D^Rbc9>Nq+vfhz)P+_|aM+oA>#9RH z`Z*j@gI+5{>+W(rLOn1^6jCx}KD=BoH*ZX5Fp`tefw$nq zATKlExpla)K!)XsF(7d=!-`Plj>@>lpm5?m+VYdQ*nG;t;U`$ai#0`|*ucK|Q$9Z# zK=v!_b}|JTt(>1fug9SJ59%i5-IWva^GO4I0V8Pd+>tJmT@@HsVV;e*K%E)sY+K58 zXd&=Y@1GUPYWkvg;fEPZ5pcN2a+@>Qo`Ewb&L!E9T0{Jm&#oiqLa|<&TLeOMYYxIy z#AD{+LeZ3YbXF4}Ts{8p1ijLczcj{~7!3M7Zi!*c!Lr|)4Wv3wwS4;MT!gqE=(Ey0 zZjab!n5Q`&fS?$>hR|N$PA{~;y5=1JtyTZG{GNf0{eQIT|Ay!Mr&VYD-(-Phsfkx$ zvHtp(C|{q0;?h4)f7#bo2IoNU$G5JR>AN%ZLmL#^I+M1w3Qn^TZ}KXaE|TYV+JWEU z2*OR#s_8Jxi`hCa8Nj`6|Aw2LJAS+lxc5FGNZoe%-p}p)b9tgIYE-!5^QB|<#qQ07YwZI1T_4RaCq(tB823Q*%93Y0G&$u&r9WP?fhA zaMYKi;wBsN(=gI#EkuZ?Ig;dB;l_p6RcmeL0U@bt^8$`poo+q^z<)Ve0#q?Wxv)H# zEXdRYE$4%m3u80MOytWn=WHM_7v^rQi@_P!$Keqars3!ya4#7w4@Bgb91YSb7~%yP zjoQ8h&Av+!$d3x8{P2e_$z5pwIQMYz<#qo|cjDT?DYPN)6MF+h^OTAF1oro>!pt@{ zGzeq;TKS}5DmBDl3B-t_t?-Da0+Jh}WnzC70B-);)5DB#{ed@|CUZ2jUzeVK{4 z(MN*~6hGlPd!aQp0BJ&SCSG(Qm|tG*v>w9ewmpcxI&D{+(c1;=-3JFSMnL0UF1Rt> zE}AKt3_V!msb zLc#1rsX1;V+uxj2*HOo@$p?1*3>XFRED{GF+X4PTpZV={#e+r7?*6XGnCi4szMS5r#;Kt24(=3kSZ{0vuOp_c7TtU^IU zGS~Aq>C}lYAsLcm@}>D*fe67`;j9Q$U8dQlfS%Q*w9V7oFyZZr=vR)fnmw4- z0aefrK_kSS-l`J4xPC{>?h4%6Z47{KD*#p_x5GJ`$mYQ^T`$7;zPEf_xfl~u`1>`^ z*qPOBbBn@945$`}ZNe0Crscy!ULEv}gAo$ecZ?8TM@`~gYcroE*GTP*5v$Xd` zbJizNqUjI$=nko1iLBRViZ$ppA8NqTYwjK>igRT&Oh_ULak z2zlP-vq^IiBfXb|t9dD&8AH)07r6$7Zm|Z{ZUph>*!tIF1CH;hvvM*!t#bkiy@nIw z0y=qwXvvx2AeZRW!!Mwtsu^4t6>n0=lAMCJqVsN$a!#{%;}@74EnWb#JBfPWFrU`t zKqGO-q(78DTuRk!pKU^ob=HTC9#-60W>RFW~&&yM0a*YbU36Ij+BEk{q>_u8uTI%`%}9E!ciL${-J`TX3w<&Vnasn z6EmPtR-Sah>|^`n%^??Am2~amvyNFKxb>-ZVo<*^QPl2s+3e7z=%%U3UBN3m=@wD{ z=qw}&7pvmbM*EFCYYqw}uh+#nu>%?lyHCb+^6U<<%VcsM*t-P57OmgNvQ=revq*m1 zgH-QJcjNhc{B&YMwU2gFR95jHa=lluFz@1E3H??x^?^x_CJ)S5mD@fot)DfqNJbih zl{hHuF^9~CK;#B05HFs8^>GH<er@-p8M_pYYWZ)7Jl`TKuaB{G$t?XJTXhXa8TI6W0Gbg^2ZklS0(> z16BLW0`pTXM%#J|Jtn|lfNuxcADVjsxRJY>HuBA&ooGMbi^RCiMjR?9ZRpWsND+wd z2!*{1si*ILTw1)OfV|Burp{-PT&^XwJ>4HKTc_7(?ohnCKAv?~7qVH4rjBpWU*gYy zvirNv_~_ z<8wpQBla|)eyJ=f3gl4h(g6rlTEGYUJ?iU(HAoj=7Ba5*M$}A^&5>_ALB55sNFD~j z2@_yenQ1>vVsRUTui;-se}q0`Fa^9m=9b(p33v1@V3SdEJdpSZtx6g4hEhV!JHze! z=F;5v=^YmK?P&zGxeFKjL)vLJ8^Gg^{#Jo8u)kwUQOtf2BA;ELU6I%6<_1tcXAxU? zfhp~bTpN}Ynxl=3hA?)c63qsakXJ_XI+4|RbNr(uU!q5qFj{`bLncsr1yUQxUCl}= z=V-_1j)G76TxTXnUb(<#w?#eZrpltI%7P>#0BH#IwJLMn#}bgJKi03hiFY zycvua9+8C4`mnOS9=0*)bYJKZM%2vR*~QunB`p4MlR*eel^eZ$fpuj5Z3To>#-9OQ ze!O1q%wZY{iHNWf2v{qq3noNUW}(Hw=#)T1DiSF@$;RkYkagA0i>WP740$~N+NDAs z-z?1nWRh7EiwDFc`SCJ2<2S0JU)CPcI|*MilQju)n1R1O@_5i6`8-Yf+!GV3dy!2W zMHW2k;7V?FQsX^5V^aeb$_(TIrLs;$kGLRgO~J#5nsI*{zoW_eG)?q+2)=NY59Alw z!Zh??Cw`a8ID!GbAPVIHC^fp-oO}5wXEMddV>sn;T9N#GP`BWDTgv2t*8=4406>_s=whffpSE|MD) z<8^z>kpryq$3=O-LTF_L z7qt03&vdRG*H~Wi*Ef_AnBZWGl{WAp5HOk;_7)tq%CWehDOSM#Xj$Tf`+ zq%=rD^CiSG{kFIPR{^b1mgQlPCxK0f3f|;&XH!gd%mg!tCqeOIQ=e}M z@53r96jzxoLj(-k=;t|zbOQO@Hmc0JCE6DN3D2?Am13%3G;B#tWQ~+jtA$yG^3uPC z4l9ONDTOwf+N^))5yr*f6ti##${@C+f^3|Zt0U}PTPagvD%f+h%rCLuD+sdN4^r~c z%bX+F*5dyt%_hc($6kXH75=go!t5{vdM7t}20ZzKlW&e&p%1gojGe zuTIX7i(?40J+<(UV6{<4;3KyrNWs9=uzBICVT;^dy?ZLB%WclnpESsty$EuV8DnkR z!phw-LV|V)mKAn*xoj7FY_206CDPcGCy%W@B)2}Ss~rtcKkuWSj#9RNpzB(Wh=@^{ zL0FV&wow94$b>^Hw(Q)07)ey9ql1NICo0PJ}O4U?ee5h4ry%1L~(0t5OYhpdj z|NEsSk|Ka&QZ=l&LZhwQBJ9~=9M*WcM6lW8?NK&7!h?2VR4P}3W~0>^1>r_mSW)n+ zpf_z;BSf4_^!-U;`u13fhK4C+bpLTjG4JRFSk+FAgVJ9a31JLzp(CbRAe1?YPfD+4 z{CEZi<27Qwxb8(CapytKaI@8PJ5SnaM~zCREQjItuv%ETljtDREQLXhINtW}(XuV5 z@t2&+(Gm{b#V^=;TT5g{zq9|3vUh-vtXuniW7{@6sMzVSgN~DqZQHhOql1oZ+qP}n zI(hg0_P5{f+MvTL?OgSbyU7T?qwQ1GxH+5x4=uwix3+ek!K-De zb5aBc3#TV`d0GVo7Atzx(z1krFCl8RH5BOO{zB$DD$g>cX}2}O=x|;wRubS|o)orK5*c9fErxhpK?;|t z4GvzAs2zhtQShMz@Qex?d81f1QpUn7IQ*u6$stg(koL2+bwC0AHErFqkvCfq>uW3# zoJwHb4plF6)dB9=dPTF59|Kc??=5~id(5X?4BPRafazZ$lT1vk|4tBLWc+_-h%hq# zpHf5sl7?2s4knC5Z0u|t-@n7yJJ=cOTEe(w>~pBw;4V5IUVw!6yI+%ZQDSJI5JATQ z0bi5PkO}jEh2_(Q1wbF^f|7L&ijkP2#E~yMB+NDZ8VNg><{mbtI5uF)EUqm(E51`` z4Lud7aLO>{#*bcix{GZ{E8cIqw&&8XKBP~oD;l!;K2u5Wbje%k{;+o2^hiHqZv0cn zFT6|8;=(~!vE-fuXiEx6FPmE(gRov59%{2sG(%gHW1Zl+7*-a`CmusOGaIo(cLQvS zefzeyU;g)#b7zq$XjNx42yeJpNHsB<6A@t=hD`D#@6dN)BpK2T8#BX-s|uky;tsLv z*+BbJzO4?4=VWBeWY|Ip>(0kRW#ms}p9U{S!}c>WnGN8pw}>0%#h<0w-(R&oLpB9p zkFfms+)|PDs3xj#=mt;WMdGnP__X$vb#$abq`h7nR|gyT`aeiLzW+!IbOncN_45u( zh~HCmNi+T6W88!KKKqn^B~If4@^ER#1Vb5>!LftraX!>bWzT*XH_|LDxd@kC(oxbz$Q@}h zcDWwvzLaPxyUIw+B;N_6km9rY1E}KLQW6x5G1=pv!A@40aCYR|4312K>HLueNCoY} z>so%O1%-ex&<($KG?KZa*+h8#;1;)%(_yatVC0)JKEz3}*D82TQI zb8P`yw6S5yEIX~$?IxxKd)wezZXUq1Nl~2Z{Z~b@SinRW{`ryTzSRKkbMDy7ZLNKH z9Uy_NKsa}&@wg06f(VJG$X?1SP>4!|BKS zOk3<5`x7e81WDP}zCEMwa*Q!2aTK-eL@l27=GiLlbTF?(qUSNCJ6LGmcFgJ-$?eZ8 zBnO9WDdqRW)p#ucN<#@w9CGm(b?co|j}hENIgUp6eCL4UF~{+?6hpIRyhsd`J~XzO zAtEL)xMaVXkSMq?Re4x$y(bJsKSB39q8_%v*@XU?-`5W1fWuM^ZGHK2v-k$pgUcCm zBHhJ5BkmnDbzv;5MT(M1D9+eTqQy$Avhz;f+}J0u_x&7xh1-&sRZB)?8u^SxBE-{F zZo=3I;i|=C`($Ikm$qp$aqsI!6d=Wo%Kq# zAkjTAr8avB)^)?v+gRA@#aSgv1d-T94Z9K|b!{J(AB*qPd-kP%qLaxXDWnIUu3{Rq zH|kZ7&l`Bz^39V*Vz3t!pXrqAZN#35oP)n`aYw{fAIC;HX?TbVYcS0b0FIgrkFt*ieRbxfi*#fn?Dm` zksw0lnKBbh;}A9Dh=n2lgUcq}2kL^1PxpJ5e>8%Ice$=(7cxHoQTdd50GsA^(YP_} z7Ai47_~MQ9wj1*Ss`j~G6;A>kYD`}i-s{O~>;UtOVS7+vGC+n!U8n8kLBAABSSo zn!IJeE9hKBcK1GV3V^Z}ribo^-*!Ce%=dhE+(F*pK!#oyp@;)mwr!wO2)H3r7Mkm< z%TwaUIK=6PM2eJvL}o~1M#3?!zrID-+{G-PJKz*X(ihIk;-z@VLDhi;Ea&mrLc+ht zCi$;#5Z?e&4V^6wwq%tbRjf;I^^KHztH<(Vb-nbHAh>!2ayodL-l2ttT4g~quioHI zmOtLoz$ri$8?Dun}SCxw<+Rqhi8?hn^$-yc-H#Z8(BfXTd3NG8%+* zF@6648WfNGxbPH`WSQw|QjN0bEM4;zld+bOv98<%u&QAt*ZLA4*75A}V0qcp8Q%2d z57W3wL6=7zes1t>k*P^lHbg~B!-uu?7P2Lt!w zyGQG)?=TZP=S=*;ThhTwN1WoDw;@}gS1IQVUp8e-r^Ap}hmRqRh-ZL9>WRlG?U$uX zDK)~PBk+Kih4uh5E*WF83!R8sI(yHOy^}ZmBR4!fD@1wF<8w-ufeNAA!{6z$XK+gT zk@PObmUYTEGoGr}vMvDYI&V-8a~D#9@Cf;-fqySXT%I&ARi9~yXOah{c{PhWRsFur zDtY8Irc>W3F0>>qWLj}o4H1#HOsYewrYm^Kn5LrvAgLbq&xOZ2H8IeqGroTpFE%3|0^&Rr-IJ>2j&LB01}OR6dcH?!na-4T;}VP_G$HT!l^}^-gr>G)id9e@hvgJuB}G~we|~XYMyC@OSCwp zL--AYgAn{(J|=uPc4f0&{TpmoL|PTxPwDp;1V@p<`*Ur%PAA#VT*&ld@AIFPPwL$? zcj}8%&02~R62~Ena)oLM9}A;T#4K8(*dl>f(qq1iHtw>S>in8)z5}5M{2k(o7P-?V zKcvd|lWEU?2?@DlzZjRP*r-_d&b_LbrGzz-_5f_Bk6|D$ z?e7t)*I&7?Pc%gJDQkDVlV^L5n!dHX-L-IDy!t=8#7`{9&T}9=;9vd>UiTG}AocB_ zP`B{Xk8x)>IDulZ;Tr5EL~W-$+WqoXH0Xb3rr&RG4{X;<&TU)TBNmc@GOtz6;<8fv z<97NrY?I$THV&^!B37LGL?ciPK`js!5c-rpMQ%l5-$hrK&G%&bT5tE6a84IDnU?5~ zE6NG+mE8vSwP1v|Zp(07VH=Wa8VDW}l$H zN-=$T8i88LRL&iH<#Dym5eMOTA%E9a2Ix^qI&(mJ$09`|qot+Rqu=V;|omTH9p$3pZ6wHlr5gz{eruNuQQ5x`Y3%@zNDJFrYkZc1GBSw>gp|p z-HR)1E9+MotGGqBuWG}k=eMxY5e?ZK8yyUvR1dJ%9noY`iH;Oo)t3;Knoxey5eV3MTdm68t442mW0g)52iA))lJnN%aN zDOP1-f$2DJ_D1&k_6T(Wi)Nad9pFAn!2`8Ai*@u^V?P_<6ufCl%WDRAfXQmuwbPtw zG(rRCmO@}HgsJVK6dsl?*5`;jlHSK3T0YLY=I*xiH?^lu?v)mX;3gyQmrfC}`gNx< z;3RmZqP9dYk}iUxQVrBU#6E&$@W>!T8y{uU`{P*DUI~tH$`IjQ`~}FBuiS3ODYY_e zc+BwM!0yiIem*~UzK;Vs-dcg3+1Ru0u%>nunr-m7>)x-DnK&+bc|YZlZWyzWxwnWe zHs~$1dkEjHcgV*|NbuwhaJGW;gEfpE7%!Q#YaO3n$zRo_vW+xu&F9%*r$QFD-Lc1d zkoIEEw#oA4tUy(jKG#98)>GjdMEbrlfZ}!3g48zA5-RG#FKxHMn0JFI|4ISH^$-no zMDiyrWNjkVA?bclqYo`jNG$qEo3JkUi%21<& zq{+u|TSnLlI7v>EQta!hBGB{H=!5b;bnK~M`L=sLCE77MZE4Mo7uU`Q$_@cGGJ#T=ifF{maqb$lr*^UT<~@O4|whT_Mv7et0lHjNQiy2)+QtmQ_%1I}cBW&g)EV?1wtSl_mYagRD@#R9CJK;e+TMOs37S>`4!1FM3jKvW3DcuMcX9Hi3Z1 zD-o~VKzP^P1Bl06N+=DYZP;g6fQHVvt%3;dqCuHuQbhH5%yhji_DqnMtCowFM^?Mr zS#!h(R<>?5BX-6j&E)mK+})fb$YM!Ik_IIpLeuzjcPM3y@H<8PsNF4^rGC7q;YAHx zYTjUtdVmM_|_(}4YgX$BMPo(od6_)>}QQ$8p3kw6wzY{ST8UN;S`Q>V32oSNh zau7DO*S9mZaj>@g$F8)lr6J&#z+W#KMLkC=2S+JuD{DG&2VDzOeHegr!n7ZJHwK6~o$Az5?NuK-5%bUw{|Wd=$bldC>7BH7si@}`{sAobANHmH zG7kOw_Wmmr`|I}pw^9HKj(QG%$>x`xqv1b}3hLS${-vS+H^G?N**gfC=-Lr|t*NB$ ze~lTLU;xUd1`a0n>Z}Y5ME`#`&40?{-_rfk$Y0u)hXMSuRT#pKWGz zW59r(@PUfMGRCID|1fhSeZm_;7RJrqUe0;0ArhSlE(87?O3S2bBwql9G+zH4SzS z-=Dj5Tem=PYeHon94VxG&r>kVPY}2+RLb;G(XLpw3S3x(ItD$xVCE`_yG4cxR^7reI2X@l238Y0VO*2eB+XG2H zi(~Aa@(E6C4Hoh9Psxp-PFpY2o$95vI_T*?nK&miHgzI%DMlmHru0wF5on8t z<4lG1pRJ`~qZ)BZM7LUSb_(p7)|mhYosif6w z8CF}wUqX;oKM70K3>7;v#8R5csVX@?@%0iLGKvGxEyvoz1eMxXRz&bbl!X-HOS@It zYinEc+W-8?Yj2fkae7{j&gS&)^1hnH)aI&rdw+Ki>N`)qJo6%T6K;Bo-cUA1Fn1?h zbrC*c?1;Gh@ojVGURPDkeQXK&w*6sfXsC_X&q9e?S0BC9wN-T?B_ofFy*sItM%NH` zwK{FH;CZ+~W7HG>&&F|L3sYe0{G;iIXEMtK%?&R-_8^OY)-3 znda+r^O`kmBMGT*UN@q4>hn$HsI|r?cdX19Sm97AKgX5u+w(ACh2s11`g!)-%iPR$ z*S0>YcBZG(ohW-l$9sC(rPvG57N^;%V7gJSuE9c|;A z);S3i$-=~lCFklNsrK_)6KhIa2>>i6JM zqPK7DVIi~v>b~rAenSN(0XQu<+``Q^r8WXs<;hVKALdf-A8mwJ_xQDzyXtOyzUPJ~ z)2{cVt&bl9VW@WSlmT0>q(>xoH0c_j`opFY1RS0}t~o<+)O1DMu%o&;DnUW6NEqXx zZ*t8nfdCtio;0rC1i6()Tq#}Kux6F(h>PxzRk~(>OAL}&_^)#%b@^R31;NXL=5ev* zz6C@{@n5UwY}?JX{n3X_*>>*-94ozD(Vog+BlOWlCq27I7oK= zOmd{<$99z-BykybcAyo2e@={o-=Z+*ViSxcI$i?v6wHjezC(#RS@PSgq{dhOE&h}i zMYEM+BR$xb?fgg?SEz7(tP<4F*x)!lh!T3t8AzZO;$r%_h6it>mwe@3ipV}?xoe8^C-oOc$yl&L zEem6T@%B7MW+>Ug!&@6Oy7l3#x*NHxpj>kHsca zahz&NisQ%Uq@<)a-T9GpF{#%BmeIP)tKaYbq9PEyCaUrfXTe}(+bsD+2(w83a1$cj zb%MCkn1O?`>HN=lR73cF;2~SIvPYuBcon|6%4+*)8t4&@D5hw1phvu+&JdTLE|b6O zSpIm&gVU`%g>!mTe^5Invs`3#Ww;Dz)g2O)PeJom73PP{KxOF#jN9&-edx9^W3flL zfgjjPb<>WZFx>M4+R~fG)1Y=-&&(yyO>syE7-#%e2seS)4p-m!Y}=Y{@phqGl|6#+HGRg;0*rN(`i%V}A?XwIX_t(6Opa$>O5BXIeWwnt zi|){9lI3tP_j|r9g021k;E($!BmASX2?HbB-zfB7VX%M4q<>S%zkyorpFk~dt!M3E zO($q=Vel`MX8AiwbABNU9n%*{GcmAo5HT{avi(n%{z9n#B56hj7WTiP^w*rfqx4@h z|4%Iak6u#$6N>&-j_%)3#KiJ{Wog+~vpxo-vwQS!fPUg-V=;ZOZF)%h8zSlN{7DN@ zL`i*W^ly)AZ8_i$UOU0j_A+hS`fq;N9y@W={d5rtxB0uZ zSpsN_)wN`;b@;{lH>wj8(TwfezeCFUSxU!hfK3U>TIuLltUGwaz6tk%`_Av;O!QwrP#L(CkKyesia1hBh zU`%~6aGYXjag3;PJYurHph%8#>BHh29hGHu`O$bn9|I*8>@_>+ryT*xf%oARFvo8t z+LHlDnjNptA70+?ZcMzFiu0w)m0F7JZk61Y<;n}Fu*XESa%Rebq?PY4n7B~HqENu1 z=O=8bbe?>$qwN6L09nbrctNB>; zGZ2VV#H$-CbQ4+f8hSs4aFTt=I7LWY;?{=pdgNVBL&(*a^5Kq(e zuoz!)3A&scL|9S>WZ@|m^~?AZXvwR)_(|Ui;0d?mXGLF_nQBEM37FYpchlD#7G^*!%E^KEzen z%i<2Hweh(joH4kD@(4;i#*H89zM?JT11w2bhv`0(E|}~{Z(NaH`P}D;9N?e9A3Q?d zAm9zjz^WHVcbD|{BD0Oav%7Hj5N;UcHv|xN-nH%`%u_3e@y9@B#yo~9NZDf|IR-MP zgd2!F;a!ow4KoFtEHcTAp z`qD{(+SG|8=NXM>T-vZ)#-0J@Hny6kU$qhU1M~;V9Ag)y(osuES*8@7eIy%V~IRCj2l#fqu2LBuEl?>8FeUOuMvL#gW3vSGcrWdk%go)kWkN8X~2uLeOW&wpN8m?`lX!p8>BNLyr^cGRaY3ZPJ7oa!GoE zB2l=|yNq?5UVmedUPGEl3QibeyNiJ77-we<$$$aIXrykymiBKx&#(k5!W`;XXA?g& zf&HAI*;!Ur3$FZ_eU(thvC64aCRO@#%AZz5X!>R>lFlHz-xeA0p~v`darh=Ik9)!< zu#!0oC$s}_HqoLSX+=+4B-61v>5|^c6D}?tmiGPDkO~szN;n;*>>?%w$#qM+;is(X zC^Fg9#6OfipXGZHYR(XvyP_>vzW?~hO?%or5dkp8$W4<2uOne7_9ZN<$o5=g)2t*X zhtu`2a_CCc9vckUy~nDAc^`D0ndzak(v{^%?TqVD*Xrf}VcYnYq%Qpalm4VEwLCoM z`ew4yB@FD<{ZT5WV9?(H1bTcSWW9E3q$Z4u<^)Ht1E(0_y+WWOW=8)flrhI%Wf7vO zQ7{h9EREbQl$^TiFS(W}Z7y%q{)8qXEDH z{VG?J8BvcZF{XW$@aWRN)3zrv=#_nhQRb*bEFv_1@o`HR&QI!&m>;l|l68;gD8^2f zp-}TCRA}$kU<;34M^y*PDVT|a1nR;di_}f3lB4Ax&y-@fYiw6O2ERqxNm7?i4g4t% zHsh>-E4h8rpyMiJ6H_gsh>JQB{-I!0#z6$HWOYWOMp%>tCon0VvoD?3>7ZLUutsPs zCVRuln44O~)K5RHlEYa?s9$Lzl>7%_y;(+%#n>vNgzO$if#X z8kFbSs`;Rk79?lMLmlU+M1h#JKOiB&FjMI8n;|lCjs0;>_`xj?<&PyjNCj<%peusE zAfS7`E;6^;eAs7y>WIYD7F=Bw$j88doM z&W!2nEeG0#<(TjdqqRXOzem^*mdip{S_IE1anaTJTH`qa6;&1FdH1#JgoAs_Y?hUG zdMTghrN)D$*E-_)Ti-0f#ig2Em(GN6(`0ON>e8^okA|Bz;!v!RUeo;&Atf3B)bKp9 z?>>GF>Q&_ljJyg~6}Ol#J3GTv(fDbOWP~Omg$&{A~NlP4Czn!1q)M zv6#I(GN+2L{o}_bqt`lNv`_mbZ|*q)o5?HIg>j$wTiE!P!;Um@zaeXiWd^$aZck5- zj?Gkv-ve}>pOvx=1lTQa1?{Jp|EO2GZeuL0Fb)$F^B+;AT4ptFL_;ex20jC?ZT?MU zu8ID4ZJXX|L}uG~6!KMR(c^2J_)$R-+;n*iy>(5krISDefN-1aZXgq2&vm;AbFfT1 zpMk$E&{rVWC-OSl;H=@!1CrbKXWS0Lfy_?O=hb|&c5im)>sxdBMXUGiA8x{>z6e=9 z1-@X1DrVOc===DM#;A`)NWupsE-&p*aUdWtQXYcmgHFtCtOg`lfV`81Hag^s2DUOzLrg{X$u>#*7+h4V+%dzEOo8 zj{gv-q=Gw8GF`catHGAijOQKZpFe^+Xyp||P=ec9tEx82ycbu#%=6~5t$AD=oXPrW zWw|ob9r5NVv-@*2s<0bUy2}4@x-~vo>!FR_n{vZQ=lew5{D=oeW`NM9bLQUf3Zo_5jm?WD(0Mob#D|6`*}rgVD-6AO$5He z1tT)^;Tf?#{&;rujAjb=GFf~lJj@8+$#@kfXqHl?jm9R0sxUA|7**3O*7$hZ-gy4K zZI!wd$apK{r$ZSytRrP5ZWOn)XVA)9Ol!~>8&QK~>wGAr{M}+aILaerPe|%}!oCmz zI7I^6mLPO|6*r9Cy@@=>64M>>6=^MnbjmL%)M9h!JiOy)t7NM&`nsz!xeo)ZL_Sb@ zAmUVkN&i>x`>nyv59hrT)^YL4gRU3SPJC`UR?mkYj)@RL)7=I2j{#byoz+cT`_rui z-*vYBlv`_7%^_exSsxoE#|6#RyyIbqc=c$5k<{>oTQ^ zmvAcnv~LQ<^_;atEjQXZ5%<4f2`T6nce|AF-(bN4aw-rYJ1={djUSE{owgS=Y4HSM z^}>|K8)!m~2!`OqV^L>#n3;li#%DN#2r^v4?o_M&BsQAdFQq)|?6hWXz2b}@0KX+s ze2u!>KdFx5_5G^sMLMi!_+}HAVR4UD76jMX8(5LmhZD&J?_R97w3-GS3wLG6?+tNh z#P1Aor1Tx>LJU}1W}8U79tqW1H3LP)1`R}k=L0XLh`a8)?pfbkaE0qDc+>d`(QEH~qs8S}n|p5>Z=?hrx%OpJ;lgvd6wyGM9~witQ%@5RWXfNm0}(pQl%FfN2i13( zS>^b+t29ZKt&aoYo1VAV&a(tn8%rKi>Kiq!jb)k4I3TOup0h@qanIox)P}{RqS`YW z4d)y6>GD76o10jSUzWxqVCfOe8ywS()H!6dxwf&KGw^0H)|g{7{r z(ed5|47}u+Jb&?SsZC#7SZ^qJHqn9mM0&CUYsGMSov1IjK~|%xs>|ZLY;YhZAJ=7< zVR9WBNRqc+((e^p8|GH6xd$t3xV;mHQ!R9c(%MfD%SR7_e9t8+oSs7Y&DNmOMV2(!zbW&n;wK;sB6)Q|%oj0+Dc&1YQUQpI}<2+v(P6SOn1 zQmOd-EtXkVDa?ijY*D zLTD~YBt~Dvcrnxrynqv?ZY9*QyrOJ1jJi-NJe5>N^mHtTYN~?)P)LNUo4n|csZlB3 z_mYFk6O;$Al@>|6A?X78b$zC14yU^HiI=6eHI~xBjJS+ARg9n2FbLG_5rfsB0^v{!M%WS}iGJdFSv% zx$s5H2r8qkes`O4zS7A;0kJo5^)jpSd(MT=(FXm}+u7xl&;#Y^Z-s zD4e6g)=?b9s}%hZph-~X#AGQ1vcQz#G;2|XB9pz)`0sy3i7!eCHnfV!2_X^fXIUy+ z5jc6Pcs}hN&w2+(XE#{2?+=_qJT1;z)6-xt%IJXQ`+~*xS9^-8WTz?X- z{nBtQO*BQwV}uSOhnI-QGq!JaFbfJe?pMp{ALgXvRto&@!)8i9}(R zAKlegl}!OxuO*5D@1Q-J^xL34ng|1^fCA^+=(NxLh_dFH5skWOg+u}OWY4!2j3cgw zl~eat8MB9kbNAV8ZhKv9|2VNw#aj?nuI3emtlhfSg0Jei|pU^6;;%_{m$~ z^>!RCfoSdhIj)TIOj9`X<`^3{nJ(EkrdL-N(pJq?7Z_aVs?uw{hdq`XNjr%Ow8jJ? zAvsT+)~N(vpYd&-krx!V*+JRu?UjN3VhrEnBXzUJ`S#SQX!cT0le-8m@?HDN{Hb-S zCYc(%Y<-KuxcBygKi!zqyVHEiZ4ew>C^&5;*&zKC+ zVJ_u>ci($XN9jk-Lvbbl!DN<)7vb15*g@~glKyOEyTBxIa9+Ih;bz}g7oQm_u5KW> z-5rgLLCc065$I%hP`9s8G4SNc_|w$G;)go-1{Wtcu+l=LaChEd-a%eUo}M~0T1Kv@ zdXi%;m_y!?ofed6rf;pn4|}d=JY_rG=+r)~AQ2ZUQJGdKyY7n~p1}R>xkj&Emf2#= z_?`e>JU@C9uB&kEH5>cm0NamT?8_R+$uV8T4VUo-Tw2`7{^THQ$-RCEzJUzJDy8Gc zC}Ohp1bXfWie)sc^dNJ^v~hDvdd$LAkCxD;6A)P(pB^AEkS$mrR-jL)u4^D3R3A~0 zDr%rbh#YdDSt>Sapk(3~y08t2>2u&BxUM!JF<=gSAJn>Qpza2sBYZF_U`!tcV2&i6 zNJ{`>7g$(N6s)uYUc*@~-73}TOn`}a9ccS2WU&U9Qm&*sNSDKGk~*kto_Ic)fEJJ) zC_l){$j{0X-}arHvK&VsULT&|E!viE$ey>T?ty-_!H6$2f|v$tEC%m=S-Lu>TQXa! zH5@4I&(|&t>28Z7=8gH)3Qk(rTbZwzqDq@XXU&% zfLFHDL#mY0j6T=J2Ml(aa2}D?b+(N9YHY7`gKF$do^4y@?$wa8bLd3480IY#h(0DA z8oGG6F{vYZeJuzFLw-?+JtH4hP-!E6M7lQzE4!?AD84G>&_g1xR|B~12?0u`t7Yp} zThbX;Xy)j_08l*U;}2)9%MF+NwDd;jKR&o?WBKIwq+Sy;uRC{S98X*OiDMDY(RiF6 zg~^{WA^y!+kgj9wajIooxdSLlu=XuFwyt-eKyXIEsf*8!g$4LaO8l1}1dEK!8YLc( zeL76FaQY0j;uxsk>D7rIt}0ku=y%JwfvRf8?{}d7)Lc-4fduEe&}3k zgYY7Fc{Z8W+&x8%$N7c(fic%_RmIt z*V(4^a#~_&=9*)|6YTx%z=6|k!*JajY)f0=$_k;PebopM|q*ruL7Y znVXUV`jgyEU%{w_-fbwh7y`GgpvX(iIOU{gA%WuO^kU-{b@SnM;RcmOd*=ar^t==p zCIjXCR&59GE?P-W%A_qIhR|9XDQ0UTcoHIHyXi>ON{H-fbW&84U?@A=JxNPU?u{z zFb>Wm4jIT5l&khTA8Us8vEFAo>!ITf``~&|hxfINN>Oa7qI!#d{rzz)0(p&~y^|Q< z{qiOS8xxq9Q084Ukxc}o1(7>^AOFhD@(!>3%j_!zmM*FF6Ur0u`)r2$4ev6;s1E^8 zGenBd)p<$=Yn!Z%M&P0-rL7Fd-*nMLqlu<|0%X#ai(4caGES{F3u{}3>sFzO7W2fz z!#lzU&|zH`=x*R5UGVO~aI8#2OjE=V^>njSWZtq?dw4^EZ*EBesULlJp~p_VifX{f zO?&o3DUW-1&X?Q;C0kD|w|)I)7HqSTHux1QHbD29#0{4iG+SM_lxO9{FO_1>7$?qron>ga%PBvBdVAqof0+K2IDa`ILb-kFLl!BxH?r+#CydTm| z5Sc5Ht*6eDhAA~!Cvx76pE)tQpLcY>6xO zt!mwClZ3>>2KjoZVsWYaV|cpdY_$Q%IaM|xyj(WF7avjyyfO5xy?2&*C(k_3nt3Pj zb>xZgquS>4j7qahKV|JVctNcF5uXorusD4_zVT<>AT!{RR#A|OU`Vgd`tPctCZy@4 zK{H9(tbkdkZegRYnfpmmn6LvYNKLxlNb0b5hwV~u{6zF=NZ}V%L4_28+LV}#AVDjb zs{M_M7TARWLo1mVlCVGY)YRs`gsfcPMt-z zVAHg21>Yz>w4RHja`32*i`OYWaVsiQ%-Lld0#N7rdjb}=jbRoRwJl~FJQx!Tka5#v ztmQHY3vk=^!6dlr(Ru0jKUz=l3f$Q87l6Ouvi9%3L%J1A#%yra_1w|jBms>5nS3<> zhPdjgA8Ntb` z^MUKx*TeS9JAiCubEA4orDU>oy(eX#^rc2_*Ezy|k7Z{ub% z=IybxPE;kFlS>_auurn!^??YO7JMfPAB4}dtoBJ01Z#!pQq&DMNH0i&x3=3>QZw0i zVLnXQU7Tm)ir8VY#69X_`n*J}(1fJDA_Q{VjK(jv=bqtTKnVR9=i;?N*g~=(tA0TK z=+!(KCG^VgxG^^g4Cf0t?sOG@|JYkRagMp$r`}3k{H}y}7Trzm9RP0gPI@xy4F+5@ zzqwoT2)KvGN_M%JU>}$yNv3MnspgQ9PTG%?5=N84JH1xJqEx`Q;}YN5isiU7o;9Ix zn4jQ#CCUN|Cg46f+_{Flp+C>bmcrw)Yb+9g5T(PB{q`Y z6!2Pqo!opBP}>A711dBZAJ>g6D-eqLy14A%>@#D-GIv8`+0){oK5YtO*TOf~x^&tN z%`%@UrS4<`998owHI;17wnwd6ZF*Pq_cDxgNvIXG;l0W8?=bqvz$yylgi_Ko4fAxqMvoyTi8iY|u^WH0 zkx;s^18)VrWha`N z31|am2dIIaZf-4R#&&*Yofmk0@sLYMpVXYB_ism21zQ;~+jv?=b41+6I@ zj6Y-!qh5|X=``IhN+zq4=3xC12;hw;@hjgIV;Gs-;UGDpzJqyOoTz(MoAy4yo7d?N z%9dBI^O#~j7T~m0<=Pg%1il<+Yh65lb-AuP^deXTct@RzqtME?h{a7C9Pl$-!HwSd zQHNsEo&Hdv>#?wnRiUhj7al_DrURkuX(aKW=z%0@qwR?&;VGJ4r`;g0aU{VKZcHJ^ z2oL|^73lk6mZIE`*w+~{aK0l-;x8P|+Q5)f5cHvBpuK=)5E@@a%-$^UR{um6c)Roa z!^&_5oLK@!7>gRj1hF~j=Q1ktIgR1l?R`g@r#v}i6;OWR zhrXD=av!e=>!@S~H7^l5`^{Z)nNhEMF5w*D{oQ=`9&qeMwH8qW=g<7J(>X=Xeaj!k zXBxr@*BA{y+yoj^R8LP2;z0SdQ>-!Eud6qX0^t3WV92^(R*LoyfPucs=};wf2^hMxpERiaJ{ z7%=n0zWv8 z2>44D%pD{8S5}#)1JL3u@ULlL4Ic*>3qZDX4pW58*`yy3*p0@-Vi*efu^iBxWXX zAUac%T}D9epke<2)2noIO?Wt_ymLPub|^ePw)a$qA6}iG5mWv4d_sq`p3%UqWz-cV zmvK_Op{0lNwI|T0%&6zx&bPgMLk57tShG;1Mh=Y*<@N;KaFt?EiBk#SzB^VMc}2J|DKF8`>F0I{>BT7`<#43Wp&8;Wde6rDHoJi6^pq` zriS!WLT z>Tr4VJ2(dyQN#0|{FyoI&(Wnf?fQo4iUF1B9>L7JY`S)jMy*<#}5 zrT7~l`j4WdO3cZ_{S@lmk#ZTN8Sm{pB$cwE0E@bzzEI^RVx z$|UGd99OJui7Scg5Sp&d)vHESQ??nlR`G%XQfX&YuSIi5i`5XGAl#j{>;FaBIfqx) zZ2LN$q+>hjq+{E5I<}pTZQHhO+crA3JGO1-uKvzG`|fkkx9_?4k9rET#;BTO&05cT z)~vUFuXIhw2r7XsuZWKsgPXE^%2(C*kNDY67cxX5j0RL12;Ud4M4ib#USXP;P3=rQ z@iM`W#RDfG`gJT`=|<Sfo*Az> zTzFkrdw_TM|72>wih@86Sm?WqWRzl*43@-AaVCnC4kPL`(WOcbO%8n|Lf1&vXjbEG zl&Yn!=l$??M|ySLYMftqG-EZS%zhDBem?HE#jx;Z(`g%vdwnV+2Qwb^K>R#}Et zm|CjOER#f6;Se4kMoz`knwhHA)@f%g%wn0E!ZtHEG93;ds0kk5?0+53Ct6FQo-(bP zNL_8{&?Zen4@%F6K2gzZWmt35ZD{Iht?E+xP705YA+M#miM25L%NY6Rc>t+-#_7aljj?Bi-nbD zc1m8;)YV8GF+gn@Np@(c(!}!PG|jAWBaaO9c#m)$hY(~ zm0>yTTI@<|OS6#rm{qKP%avi3h2}<weH6n;|4yG&XO^NS_--?dvgMUsIR zW_?Z)(v^RxYbYyR5B@OMI6Y0T&9>2Uah)42V%eL)u!3F6tCQ82YLqL3nfJwpWR0e5 zt7{~dj~1Y5HMvj|K#@=}XfWJA0jzMVs_N=+Gi147LCw&}n%zWd>SS|4Qxnr4*C#7j zL$GnpxrME;=}p7iZ5-H)6lH}Eqe?3%xk0N)eSzj08VKlWm{x)`<$3IpmX@)lt*t6r zj!M#OJd}-We%&{*|iVbF(%9R=6jGGk`D~S$fjr>#@j4D~^{O>6FHg*|! z8qyg1PZ`(OG_sLWu}vn@4W@?D5~pEnuD|R@EM|q2x0+$Qmtx%HMGW48YQGQ4Q=8%= z)&(`lmk9@q8ZZeAZCUe-^p~Ur7ly}_eZ8iv?Tj#2f}RyQ;+A}FiZP1w$6)-GnXSW< zgf_5GmU~`b%LL9oPY~U@Y{jkzZl5$FP{ABeX4&kg8EO|0yCV=VPf&pAYD#Uu0M~tZ zXybLJ7ZwWFb1Rp}^|tr(xL7?a+ZmLt#-M%ZdhLq52&%_hkR~Z#ACOnZG~{srM_@{3lz#jz!vfY6rDh z6(Y^gIEB{!s6E6r|13V&!%wtgKEFkRS~`&nOAoy_@z89Wq$zl>>`N;OFPBBC+!R)a zQ}A4zSxj?e9@3x@agU!`jmEbA7BwZo=%pT`oGfo1kF(?q(kWuvJ+T}dVdxoUNKs0n z)sH}KP*zK~(9LsLj<70hYL3{2#B09O)dY2)|JcTLA*CX>X@QNwIa?fE!04`w-qy%8 zP^nNf4Uwc#at3)Gna`Lvq9ao{E3SKTI#&Bjd?lJjgs?G`E_3GP38q=j6j{A2JX$=S zP5^&b6tNL(qWg3=P17${_d>>QzL9yEpfOcdY(EliXI-+eGQTG2%Y>OCXtX01y@2qCZNi*>V zjliy~hGvq|JSA4?`VYG7@n2I)ckzOi)-~1hgWSZVH1-#tZJ8u00cJKeDh+VMbx?*G z-yWY2zUZ{u#VnB+>ER1!wK9nd?K~)8FJ*8A_#aRT67IX4S--`|9W5>g+_O-~B%Ck= zN9lguIn;%>H|?spj26~)dP80cJRSfI1kLeD=#O~1lpK#x2!W>=(82wXCge{EyCQ!I zcggd~dAI)Fc?l~08+P5ZrWsxoH{~!B?3u|!fo0{<@!DjQH+<+t8V%fIfpkTNZV~xb zS}}XsPVW+u=XfeR^6LF~PA~gjL6(Qw>6Pc0`T^&hd&501S;@^mKFmG5v#Yx6?9mg_ zoANVn4|hNNF#e|d^W1vhn;L)L8~?p4nwCx53w!y7SGyPTiu}_8MLB*eb;ZpJ#~#3 z@ocz~Gdd)k?rb+^Wwc&O(vrNWO415;zQ5dYT1(%iY)4nW@auQ()%w-%>1=iTRI%!@ zy3%a(%WmZ!4%5sTX$_y~<@nYLJzi0(-dfI{SM2@t51I zXZrYZ?qa69bC^gHlm>qaQrYJ^sT|NoVzLZ~KF^MZc>*;DTCH@Xj$>?iV@Fo^93NJfpn;V^`?r5pMTSyMPcwn+!)CBuz35Eva& z#NX`{|7(-=A9{eE{$G`C=o$WBd0ff=zy~Bv^$hKF9ZapQ6m+fZ|CS(N25cAy5VwqY z^o#(mlAV?P-vI>dbO74+pC~Q^J^jD(0|2{!gAe?*hy1^yxD5Xt#bsjsAMt^Bspu6t zgrLi3R30n%@&V-ZGjTE`=R*LCF+-=phgMmH{(n{!=f zj2GfhmgsYOs)IH7b!@9$Pb+`+KnY$0Wyz&x3H9UVP8Nlvp|#!Jrhrpjw&+vGB=2bV zW<#%(Vky?FzGA9R4rkqq;BeQMTJFL7YaXfYK4zG3^13z_Ew&+!?DS&^d)QVZZrrw( zb=v5|l$*<*A$=%e2g}mgD6JMLsc#2HEddrQe~jK$ZWQ1-+~9k1w}q@0?rOr#H80;$EsHz4>tiKD4Juy#ZI{q(7dz13tccBD_Fz1%AN2 zqrZeRymP+=e&jjIe>TFsQ$8hJCHLhSrEb7yNa$jBQXF5();mO)SCRI&7Icg7O1vb0 zvvK3al6l`e(wDAAo5HexG}e@K&pu?M;K<-0Oo{S>@IG|LA~iU^WM!^V>QDKP?H?ci>;q`~Q~zW8#|PU#eE+B2zg&a*(}(pR=#!{geO07u27A?0~iVpSFL^`yW34*&k5<8~6jz`hUV7e=W)XW0n35`ONS?lFtlu z40Qj%p#O0AO!SQZr~#tP$ndXJ$a$KQVur+0jxDsb&1nE$@A^7$?|SCo@gO9qvokE( znjdGc7NEtyyW_2s9xh zE#ElAp1~eaL#-TG8s{noJ5Wk0zO4}p3L2VEX<;aG4~B^qq=4?rr74gohDlIgfr-Jh z&XU7$>EXS8)&}Z)az=xTOHod z_w+1~>0uO@I$L)fY6_?i;HS}^zW%R2f9~sn)YR13gQ%*qv2%Ss*3RNF()rwbALyP~ zJnFOpr4VIWT72w^-*&fofxele4$Bg1NPKJl%SO#z6kOZ7P1b!C2`XwCwz~RsiB%$%=#FkI1=;ED#uXRs2$ZbNXlc6b-U` ziU&s?-iLc@)H8lMLNzs27Z1SMCb|)alddKUML= z@aM0#i*X;?gL819HX3d;0A^ps60ECX@}?$*3u&6+{SIN9^c$8EGntm zE(3vGBxj75A`zM3$Y2}DBXQ^L^rEec!&ZPus+Yx^d9qs&VM3;Q;C`tI2q%;3(>9e2 zKMJe*ZprauN!yOTJ88fiAj^qmk)P8kqax+@*h zfv?w%fP1cfrQ{cC)P^K@d2S@+C&GW99z1F+v=Ky!#K9~4;_#yK%clMV=hNBIM$m&l z>66XDDx@N{aEuq&``J(Ovz2qr+fnS>HwjLWu_c;e*y}|P;tLy4Ec44;RSwXFL!HGkW9kGXz$%+ zJ7W=re;P4Le8U5RcmrnQ54}g{zj&SgRSjZ+CSzZ6$BIGw)0=F(K6oZ`+OG3wBPQ>r zpfLJx$-Ud6V7mgqk-PoeZ)so_dFJ`7#Eo#|t;hLuF1baF6v#Hj>p4L;~_^3w&T4xl9zj~tk6m>Zh!q`?Z?srvQkPN|{v&rf>$VfFKuZTz4 zXwYg;F`F7``}!MvDuVO8>v^mO>682B&D=^?5{z#gE&PI$I^kvOAj*-o-KgK#@n-X@ zuss_Ww}_i~%V6Q`nVE3P#}UV>;qgA6svak2L~kZ<3mJw9@*4EFb`*tJld&g1UC3Xo z5QTfzj>YJ}Zom@2p1&0j+KHu7Q*=_8?qh3<_Uz=eyf@p}!wkNBcOiq0`yL;=MA6tX zWuN|Sn%Fa8i2EcF^=Hm+#T{E)-9C*hnkJDh?0OM}*PF{LJgCt$hcka%=F07`JVgD) z2|mnR;56Pen(-lX1`%BbW;)rr4RqPt_4=At`WTCfGL1-sSketoowO$5wyR|1&v;Tv z;527i2>J?`3{onTIm3LQkgv6llou}!zqT!E<4~W5@!61szNAage2vuF_B>eS74n0D zoGGYBf@o_3B*?7rkdB}?~|7N}TbYJb z^Yo7mg-qHMS>vI}T61P-PB|fHE`(J05hrK?wKY_1haZz|2u<`G$l5?$roS8|#i->D zwn%p=Du)+18-w@PlyVCaUdOY%HK)W_Qb%XfOV7oJR9z>Lk&pj$oO;E$2k+u+EOdp$ z(rN(6FO^%-{vhLwA0G=^yr1}4HsptAU6^~?kzy%_0g6=h)YD*ve4Fd0etmg+DnRmq z4?{ldx)*{bX=&k)yYk1uc3x2)E3Il>ptmgIB=q_&wsqh|Ldb;M?@w|use<3(lkVM_ zSmR$t`7*$wm|GUgLAUBb>1gumV-^;gKHNBKEQcg!Y8qj?4+zDR;mPbDs*B~YE@35c zFwUgp@HQsHq_}T&(T7JWvc)NAr$KEMRGZp7tiqD-gYmbX(X0xDW?o9rCqrZC!;2E% zZ4;Z?B|d!oZi?|nkCi%DG)j|;bZ|kCO&^r0kr=D1ov|(8uiG1*_4!|zM|jrU*CsY5 zzV(rgwtjo_lUw>06l3FyE5)dHei9-nTPr41st1V^A&$vuhEY^w};om9E=zi z(l>6agFsQj=X|}$gbf$sQB1Kp#y0|Qg(VN4w0V$-X5Z8VY>n1XeO+%xOZ)ByHKQ-I z@>0q_>Twj2X51sMB&zo6pyH{cDJ_lH!OkhACux)}U+&UU9E``@r^iji4L>jk^;QvK z;S@|c^keGPpy{1Nx0)wY6Jtat47}dywAZVVaW@tBhvkIwJMWlGJ0E2>j;&aK$;DF- zYEw7w>`{>eNo<7!@Bn|%;6k*mhcvqvA`bS=mQ~w|#-+(VFn_fE6tYXRZwax8@U4& zsn%)N^#frk3a+Bj;xt-rg()H>-W=qP*I|5tuX`A>hP=${9|!j6E0JfpFTZSWgfy|w zJyx=CqHD2f5@E|QLtR)Z3M@UUeCJC)8<&7ag*Jz5!)c%DVUsn7{lU7Nu0{%7`b$Vh zX}z?8()8%Lg#1m!;65 zf9F}4Lk~V@HgvLoULc|EnQl3Ml&U4-0Co+z6_Zz(a#pph#V9{XwOZit!EZ_mJq}$# zd=f79L>NZMTnxOXZSjc<+lxr8Nv2H0=F0)PC*Ls;1=((SO8&qAHDdN5!w3 zM7RtGMn>M1(bFYDX8BwlC%y(v7y@R7lfxh?&gDLQ{Hg@-I+mhPto5W)EvH;3FrO{V z#zl!TtdwLj6v?YhY*JY(n7TPppT7s33DIKBWa|0~cVtucO^;&J>wxs5GDBNe4KnP3 zt`X0PFE4#aW7{)bi{>15fpX59WAG_SPqm-vt%q{>!HH{msuw?qCD7Z%t*Xs7m~gvA zOLb!z*zH;sO%nt4Jh#iX87)QxLNQ0B##WU?iALz$S&#H|hY#lER$FKRNwXezQM9_k z&D!t7-?DGLb?$^voy$RLWu4F&^=1E>kyqc*0~Nf7wHl{A7iFSX5yHx$Kn%{6Ze&*& zT=NR4 z1K*1fsm;p%-I^mEL@d{BPq=*%1DZ&zlvK&9e4ZDNexi0v-gaGN*hbJ8>oDiG$4&Im z<~az@=@DyXQ;9?4$2$z+55%IbIQ})05Ler?w^G1={HMZZZosb#k}vJu&r(aYUeVL< z`8hsDpCp-LUx;Yj4mLq{j>34lv~U-t%CVAp+qHz3jrn&=-@bI5bCT;utX{&z1k@#d z!`$k+QueI#Yc{|u7F)?|Ey%>wkg^pM`t23R)cl)HP%4%|pgcbZWGupGZh}EsXz7`r zjwoLO^BlU|F!(qcC;XL`n$jpEClhIW#XqXaCk=CRdw zRUVedthJh}0Ux|TDaq4CY{3+1j%9nR3Yk6f&A#*pMAJ`bLN;v!lcMn|9Bq%GJ1;ml zH9h1jf>(JPxEx=jwH7o{1IwCuNzy1`iGwsrw+I&1d<1NU14K1MOe#hx*R;6`G!MDe z`RY1GbY+Z7XOYvJ6HkRJC1@*;q94Sh%x@k;#bNx=_iOlFKI8o2$F-~t7fhMy`v{^q zr0A2o>#n-;B51$AEbL?+#iD55QGR0U6Sw2Owe|&|@aUd8uzcA6oCsJ6UmN8W+YLuog=#&1ivw4v z`;4H^q9)&oRI?iDVJqp*6z$wu5J0%DRhpC`QNG?HMSvxNrQBvZ7|>@Ct-&>Q5Cjx$ z*ACUX3lChhg=*yzB{?@GgUcIJq#H(6>nZUP$`xz3imvl+1Wl<%F5`^kyzMD1CfJ6h zF4eB5ko!`+a~Owne%W+vjucV=d{mU1Qm(37;dbv%d1BtkCYXR}#?<x~v%&}l2KR$0yV|DU z<;*PF`jW9JkJmDi#YuN7g7ox*ommeyWY=|F-Da#qp=H@!VWU@C0GVTZCU%K8+z0N9+CW3E2V3Xms+IPKZ4BKinwvAM1Xj z6-s`kjAm_6<|hrD0J2=ZRQ-mq48Jd4nGjdTOVyUM52hCtxc(k<0$Q#v{|nweUYt?-PvKiTw+&H;Jdl~Rdv4IW&d z0wzC6Pt%HXUCNQFmw|MXi33A<(yFZuJvEN>-A2tp;Z~SEYr-Uo4T{p_Oq~di1k|I7 zYnX(oK%1=|)?3}Ic)T(;i^-H-nd3qeFJ+faLW;LePH=6Q;gdhex%Je`&^QM3fyWVoU%U>rdDR3B zJurzU)vT{<;c`2OH{GdJ~hR;n3Nnc1dc+zUtyun3NGZsNmgs zRQMTLTt&N1V^-=8#&;ck49mji{VbUXC#u9k80L0|csMJ9rkFgHoT2aiLQyVtPX210 z1sbN{RB4{o6Yqhf$h~Ib^_7TZ#^Xk221f^FBjU#*MUF}t7_lVyK|rZ#BhnN+Z#UFT zMe=c)bpgb-Nv{chU|5RB_Sf`d-*ZNhvZCC-#$PRwE{P@J`?tPkn$>MZC1XE1MP7D4 zUsZY)8y;npknh{z#b6IyOMnIvD~U#gB| zO2W@ij6boQe8lADFqX^M82f))Vrg&&P{}yDL@){uz#o za5xt4aO!R#)>LwomBN%H=`p3Z<8U>$E?nha4fh)Bu>)+aMLQKEMksm?ER?u~-w)6C z3@Pr;D-XwnL{|%RVL6~?1iq>mTVtsBkV}=a!OZNx$gKvxuRzm^@gl$OajsfStfNV( z#|enI@synOwUUF}v7?nvIA0~Cx@ul@m`z2V5#iSF*(BojCwP;?Yu3JP*H%UyRFIid znro`+ERb2eQAqzlQowk{EVcbSH|RZoe}?{5%ioLt9UVvPUQnZM-5%JhkHT!;(CU$& zJ5!{4f$`ijTvjBxnmDH=&KrT~OQRz%iMgRaLOFl^efxAi#xb;T23Y?IzLI6u4`}Zf zP^01)HHUPhJ@}I_Pxa`NxYNsQwll%H$sfv~1>X4Q9_&;{rX8Rq6RH=u$3eIyU_Vdu z=rT%XQoT=aI7m@o7w4Wc7|W+VAUk4f4&{lGighi8rxE;vcu{ooj(lFqC*9Zh$!%WB zCNr}am@*m$4YFC1Twr`wZl*=*<5NgIH1$^*LMB<-+jG7Vzs864iHyGaUkDjz9te0P z%lKnvq>~m~y*B&eTC#%%!~M_$3&0H&gPpm6DYbFokeko^@$zM$m(1ef(rXQtttnss zD$DZgROk}MR(*ah*w@B5^Mga7*ANG{z_x=JI03a5zQa*{og+EYs~o9QPvtWmCu!@zkW^?O5pMbV98Qo6k+f57#UAv$3TIcboEXJq#9e$R4zDMf`K zbC4~(`?{(Xw%}NExf7>X!M+z6P7!!7jW6i0hg?nciS#wfUBwFzd&gE0qC5v*yEdR( zDd|ER7B}I! z+f1X{E;pGC2&t_@H}Nm|JIXn_NJ_z)Ijoxc5Wt$)zN8Dd7l#ayC=d9+)OqbXcIqPF zZd0NrZNU5i{?i+In>AHj)hEqqGGWh|g%!s|%Qzc$=dI7}M>&z& z&?%;)X{{LUt6;$oPHKuUi9zlve#cmh^j62({GwH4(QWbu?OX|@SZ2IBTlh3vy28R( z`C1!yQ)v+&;WS%ix6%9s0dGSHs%s&k)~K2wKWA}X(}K8f&Y#Cl13mMpSD#WKF{})s zxdxtABhopY>bVCmkwjdI_6EaLX?WRrZP%j729x7;3iiw`9Fp}C09%z7B~}$lPfXzu zm@uk>YPHUD60m(H9l#KS%rpo}MvGt0mc=H@u=I+>@}=HPb%(kzx9v(-#%>FvZ}#<{ z8i~IrtEhz=9TN2s84n+oDi?tSZ=iuMD207OtZ7}U__HhS3R^jAc;T(?RvOCa{P@vP(hJ^j&# zgvl!IJ*YOe>&N6QOjW%)snXsR-qvKLo+;3@o_NpZ?>%@O;Bd$fl|Y^}gkn%o69`IM zcdK#-EQBJ=Wi|tF@Q%cnO0&@5IPW-72*JA8cOa$OdC~Wd<#=8RaV?dl@M@dpOmns{ z_0aR@WX-rd9@^9CXDw`o2>#!ZJGY;A$;j6Go(LG)2UdC&Pke@cDd`n0a>+kNP1wn9 zF*Le4(ZK!2BqHK@LYr_D8$gwVN$hlkw21@FR>B?kfc@3nD5wA9HnQqeU;nMi#Mjy9 zm?+MUcXffYiGqH5^WtkF;y3D^X!>3jUu_LsWHbXK`&=cNT9onKz^nFx*M)(Sb(~&zzp5%oO7gwn!6tS0ZAB0(88<*UuH9vf*|!E;$xM` zze}jwEm*SO#0x-HQeSGBzLAUmu>1++i$QM*d)Wc05{m}nqlmnH(rb&zbW2VYW-Eo} zHNBYB#A5jctG;I?{e%k)UbkxaIQN+1k;w}-e|0~2=s#8OVC*(Vycc@!&T~N4=(>?ME$AV}>#{GFLfTc?q;!}v8Q&}iYC+m~& z9mE)L?FLgc5LsX1VbI`}Ja@cGSVP$s?MmP1_vi!g!3KY-mEe5_4)@sPoBzUfE$z6! zIx#y9LX{>9ReFV7$13)1n-}LJNe!|^N>C|rlsLc|Hf9bU2g)0wE$9fLc0j9x@^*%R zzk7CQtuD~P{xJF}bnE;MidCc^JIdUx4$JuSmQbfC+Ny}3S?+gr`aMuBA+(hd+$haB zgFt#L*7Tvy^9K#4p71L(sbKmC< z_=(M11T=y^3x5R2j?AcUr^VgQ50Gcq0);pz(>Rmkn#|0zOg!XVqLq-|sQ0{=A2HGP z`?&H>hi48&BR$d(iG1QwR3uuG^O-!vj7RFY))9-eo2s4iNhS=}-}ghVfWQkzg;~B5 zM-|z!-sd!MgBG@=Ci^DKnmqCtt>;K|CPZSqfqYUemu7jm*{K6bJRVB~r8VcsuE5`ld0e;L4_5m5cM-BA!pk5i~BDol8{RyP#d zhnGPEx26sBRb*0>VBCo_cwj>V{ra-N^Q+ zPMO9z%ut@$N6V8*FWwThx{;C^YLrDu45d<*C0NADeruSL-I@qBbp)S1hK4`2VuY@~ z62WnBmQ87Hy|^`hF|kDvrs`(Z=4cLfx}c{9GsiE+)??IeoM;W>Y@IzwraPND?MoosWgGnkx-@f9Y9yx*A(8H2tt2Vp|f^Zw>LY z|IJED)O6|XP^rOdVG;t77K>mI7rJc5B%rR-1ec;BOoKQu08=#!?74%7yL-v_hB-|RM4+b zr*+3r=$JnF^Ga&hO9-|O#sjYQ(0k--MTh>j0GkIc+0o_**9^CS<$1KKTGj~i#oagS z1uIr)4=dv~E{u9XrlAdmy|APh*EQqDEGHT7p(EdHWpuvgAI!7%6aEd-l<>)4my}#~ zFEIkDRi#ZlsmpeoFNjMzOpWpwu+y2{?!CbAocH@19p+?-aHqe`RQGLpIzFLEkX-0% zm@v*ysm8g`d_1*pd$40!!Y98*>yIr3Hygor$Sk8?Rwo>OTzSf~UgB{O3asu?i*|Yv z=`2h+UUjma6ifDk6(JR>OIiXQf#*zP6ImNbK`6P=nXg0gX0i`7JRFiDd& zp?C`>4ZfivGT}Pwlowy^_0rfN)7)j^r1Ll{=toHnR(MckQF$D1e$N=IR}XMNhmu=0 zQSdb9_Zj(}mrGWvhzY?(EaBb^I_iL0hAbp*r{rzJ0ShBLC&0|c(PLp`CARXBW#le) z36aZMuGKANQlZh=`m5N0zWHu=(0ffGQ8-g=26O&)64C}U;*XQ_an?Y_1os{QFZK9- ziXfq>{6nRTd^rZ!w5{?8K35zpSP|WGcm9cLfGo1z%x*bxYQqIaQ#98VR56>KK1Xbz zj|=0H19Xj)LHs;jdJ=dj_*DG7JMQXe&A#WGo(T_0-NPnUV|f(T3RUea7DagAMG24n z#xiBz`n%1Y=|DlwE)KoD6QOA$^pDAkniDty-wSHvpN!jB$PJXDatG`xgX89FF0TxZ zzH7Mmq_jL*(fIc%Dkn(ea`Y}+BqW0uaMsKkzo*X1W=i>lnN{lU=ZD)~h)6#}oA1xK zeS|qFOS$HbJ3$Pp^;T|>WRaVH<3b^ z_wPFso}SW(F30QNdJbr^N{y5INEVK9TbaqU?83^Mt8@g+^sr9acu@p;k z0wFctL7Bt1>^R1hiR9zAX|w6Wo=t+~>~GS}%yPR&1mBM;!B7ipUUHtot(T5c-_6% z*WkSiJHJ|tz36TSYgn!o8jjp>wT}%`?E|&m)sIBI1*x0!4`#b8-t;2X8`S@xHVi>| zhN*SgN$b0(2E{-AdeFj3W6D;p0TN#z4SQV^#O%`O|<$NXM>tqxl z4sBVJ2A`8Pt7gaF_AqY`{VNhTK6HS5bJmDV*ve8~kY6G@=%l+<+M_OWlX4OK3Y7E9 zBecV1x`exNB@&J(Dh7sv6ghe(0>e9xj#+&mL-YbP8U}vK9WjrNGcNj~d(d;ytMa@G zlzZNuKgpqYVspyrw1?#&?>LXLJbZ^O1sYi_VS?y_tGCw>U!?L?B1hElktqXAEQ^IJ zE(^1uN8UHiS{X6_az)jo(tX8Vqsfdkp;Oj<^oXE9;^h~LLbBe)7}_+cW6Ij3v$^@u zH!5Zk0{8%!p(IEeRlX@0jD`<{m037fXIF>T(7Ayp8cXH&S7F%D21XZ@sW!b>b zz55=SZrsSCsrf{|bVl5;R2wH{g=l=lK?JFs+FhxRP%LhWJ7h?J{TI4vM}^m{sUQo{=T>xTIgIuf;@x(lXnDYj=h8J-#{{mKbqy@XR3 z=&7^sH4$1lgAEiSg2a<%8~jB&#FtzfvHs>h@TU*jfzkp+T1ITr$HrQA%Yq@p$!whS z`r_0R0$HY&Wv*{zC87uTS8Sv0yVLtN@$_?sr-?L}`h!@?<;zEJcHZk#BoUyD2^2WY z14jmJUj$a-4%hJ2la6ltX^KJTa2ay9WLC1DiVO{R4er8#x%94^M|h%(chjH=zG@Iz z&>RZZk{Q&?5WEExaoQPrlzi)YS(u<`8_Dt8vw~IH+{qgSwj7pTeCZQ=Ei#+XGPLda z$OwcBHY5|LqLra>-2Kp%Xhf|zT^kwC9bz1FZ31Sa`Q*P1@V~!TAn<9$a+I^HAoS&8vEYQ z(}dddi*(*VCwc^9${$|}@3Z6(rLlq$Zr=!5;1Y+jGvD&Q@@r~x=~n~ZgzUjbM*~xWJyg)y zUt~km!laKC@V&Orl+n>Fdo67B8xf%I2pOxyb>U);z&zSpA_kht1}fkm)=PiE7IR(( zffMdt68i9%w{Ahe{c3MyIa{o_Zm2g?cl?GzrWu!mTIb4TpD`xy4h%1W;NWNt!{}cf zCgvc4Nhs=|n-xr^ytnWF68BT6M=8`7|4V}?&mo}!5%ngk<9x%93*Dne`&}LwEE(^# zk|*C=x;Wr)DMvvD8e$}0H6ftLSH(IYtjph|RwEM98Pn9Wp53uXA~YrN0+i_+WjQ(OwWWVmNGGp^$o4-6_x#+)%D3&@Tzz2 z2|9gVIc?l+2W#^2wWzoxR1-z$5_BUUdynM?n_RpB^^vrE4*q-jaSDiD)fbI|N6`2q z&N~4NE60(b@m+>&dnZrdifAY<*mHWUO}ppt=DWtWACZl(4z73fdELuly!vQ(t-?dK_AH!8uYR?V`@T4tS3HWK+4WK{LDbhu3-3t@3;6+^f(|9GBdL z9|yaPvUx$!=976M)`Y+Br{S#67vmgi8XgK0YgML+goV zyDX{_40d4(6TakDp;->1oWbTQb?@kGM2;4DAXB$Ws@-G z0tZ`Vb4V{+yw#&W-TW1h9aM;{PQ~UWe0B%ofoyz0JNzsq=~T2dehZW`eQc+d7{v64 z=PQUh&%E`$IQ1j{7hAV7pZW4ZPA}Q!2AOnRD^034xGmaWU=N)t-8Zm4IIJZ4Bh8^t z>Qeb;LR!n7tAnu_v0HD%991%5Q{Qi;)e2uR#dI+#1-oI2Lzt10srlMYDo{NU5Bif2 z2r1p*CMT~(o#4hjJLtNHV)$#tNLgNNN8~YBcOjmf3$=NFx}@$;_7t`Sblsu7F!h!Q zcdS9cpY5MI)HmS@yjG;I&NYR#L~HJ61h@`~)D!i=G>u4~mJBI(|ClaldJXK0iqx~f z`TlrwV0-QVl?8P(r{vC)cL@r`i5zppk!)g>kLFWxUBxzG(nWD9BDjQ1dVP&BveQ9T z;r_-}@RG4Ox7|z)v0WjR_`#Dc zAMx)^g6Uq6*QuYcShelk$-91qCf{DLA>@J!uS>-5{JLBNzPM&M+Ow-*iVzh;M(vhB zwUIth`|9wZB{@D|M(!!3ivpKj|^1cfoaAqESNmqC>-k(-n*{0cn0TQRD4?EiJ9lTS~z`Gu$cs=9eXO)%hOl zq(RoPR0_Tg3C0^**>h9R?&NbOzouHshImKronK?{VD($y8w+pzc3=cVTs(P97!UEB zY}nHfMA1Irz{z76l1^`+3cERBaH8)WOx)GuwnM}egn5PSEYA1kxWyFPCmez&OWiM& z#8VzEgddNEW!ihT1_(Ne^0k3+{flG^iaH$#bPc5R7c4i!S`r9;{GsW{qJkl_}%L>$_c zA4kybfixlBWFZuj^8M2$ zgb1ZE7aEnvFvfsgGYI31{4!{)6H@oS;n8qkXKfOKaY&^>l-NH81y#+8)%cZx2rM*b(Q)Op7)X&-i$E`lSre}56+iq4F^Wg4tM+X8wjc0yJctBBXK-k#5G%zgH8_J zr;gXhC-A2=)lWSTCOaG8RV;SZPk0T{C(6GiRsO&be?eLdOe~Cldi<$C(KGzNYP^X2 z2c#vaYvrJ8XJ}y|Z)ogjp=mQ*P0H(zNQ1<}H%luoR7j_na8pwZgS`6%r z|B7h=?EY3V5#aT|tGqD$ca;|w2A2OxF>zkXYLyP*>sF_9u3;Ml6&$-V3m1qG>b}&g$qWLdaloY*whk% z8B|MWB|=|%QLCYw2A#yR(>>nB`|yo9}U;f6Vl*aQvPc?jBZ z9f99X!zH`>5RPP$j?w4g?F*(erfx?CJ)~& zm5|>pVW2rNE9DcW?9Q+Z&E&M|0_I*7%ZDb1GE#(M(Ud+pjj&}xkCRnI@r6n8pTd__>)NAFW z|Gn?7m)CT^PiNyjS#u%CLnCSuO4;{urkH-X1WnyLq)LB^ZnAlkU=$Qg?dH_Mj z2nE=NkH-qIVPa#)V`c}CWB^o>=?`W0hxB6pL!UAKhfj8ZJp=oHlmWJkO!NRkj13CF zOyaRH0>)rtz+?I26X5SJ8^Bs-1SAF)W&nvs|Cj9_%9D-h&pZIM8Y2^+KO+=9Kzx;v znF;St&IFhrK(-K%i5<|NmFcg<0w~kd0mx7mIsnr42T%KRBmcMv$f5o!vjGh007ihD zW@iNq3~Xp+0X~5L_}2d4+Ew&`ApQ@6 zp7d-i?Egj4bKS$;LqVzOO8YQYMJ7v1It^@CYz{q%#{_F*8px8|uPFgI62kJxUpW`j z63F%^*=Ps~qM}2FobRbkXB0d{h>wiT;Lw^J%BFt=VSdSO2?(RVcJ=g}^?7Ciib2QY z<9kdBKd4Nx)>krA_o?0c? zW2BJVR+iy3+Am}NOIgH1CZs~`-v5iUcZ{;EY1cK=R;6v*nU%I}+qUhjw5>|pwr!)* zwvEnu&;EAzIs4nad-RWm88IW~8e>MR70-(2zOS2jWozHY=(`_;umlD8-JL8Ob!K#` zQX|Ju1q@|4SRM-*4Qjek59g1CwOGVYr@VUJWJ|hQh~{uxkG-bV2#iIbXEc)iY(iUm z)3<70I7>-W*K4=!m`BYRH7lB&+67%qS{VNbhQQsCZ&K^J$k^z7UQ{{+x8b!54vyV`^bRQE%61mjH$9`6uUG!;ZEr02L(Y4Oha<<@ydI@%6FWdmRXK+dH z?nm{`#De#iKK6*n#MSQ~_zI((xa*Np`3P+i)5Vc}fntmLz6uNAROEAJxicK(JyXuSPwWEuBdvV^7 zzooqOVrj-$e;s|>XCe2On3H}?2u1g|!M45A`(<_sAMZIjiKa35=d^yetqalM;wu>& zf0_}pf~2#+9N+}z9kyvV-N_$Lfy0|;v9$8AdJoP{YfD?LHIRCU3TF6+2NUm0{0Y}@ zkp&loQSFi5VfqLwe#-X6;stFZg4O;`$-`LR*ievAFjbT$maB|Rf?d-2~xv!{_1%PA^#)4 zNV(k^C5$6SWJ~20)e~q{v}id>rZp-kQKi?i^j!(H@IAqi2W8cIQeE~cW{MjvuOM(1 zw!uJ%RToGjdO!?pKadDUf2mx-=fvk(s2m4~sGGRZD_Y-fK+xbNqdhDLZ$`% zyHZsBG&gJNu-`P)YBnWy1CNdUay@M$N+OJ9sVGYf@xs758CD8UQS6h>i`Zal3(8mx zFPa@otX(g3d(W4#%}rQ)OMb7GYC@j(Aw>-KyQOCcU18%6KZPuLHu|YZXh8w3iQ4DH zOtcTs+V`s_MVl% z^o?I-8M$h5?Bx2@DZljR^YGP!lH8^%LWHylA~xQ{YFhA-kJ8Pi3j$ZroR{pPeN^-eAk@K_6I>mc5>$LLpa6S?S-NS z=@*YuzNDcLiL^tatjG_bVA45{7`o`90A4G!Qg)fJ(IXdcXz{klWM(0&-5pG_(xyo2 zltzI>C8yb{2q_Nh{@UMU9Q+8%NsN;N1x+sgophk`$lA~_$Sr+|s^w}e5x9;8A0pRJ zpetw@mX0G~_AJiE6pc`y^csRu@6BYQJx@yj_FO5Ba$C`Gr$t z7T8L{tkOjr+mVcCwwLbPmdeQzf)Eiu0K~Z<$IHX{BV0h2tbJ-Ez8pOV!=p zH82h~N?g)|0{Ya6gtoHo5>_!aa?;(wOQm3_Z(Fl%T*?#0UcQ!gfy zCxzWEV*Y?k*%%~?zFr0uwmVQK{r^mEB>cTSg;cV8$8kQ=c4BOR}(fVy_sX# zr54))!_^U(RC(S)JCL>}3Quplvx-js7UxG6SlONA@(qoxniyaki}}QvO{;TDHwgmb z5sjZ~5?JQKc_X~?B_oa zxqFct{H)uAG~q1`b2@{5QJWzIw&n7W+lx$fqM6O}Sh-`migU-35z~L?bQmnw9tzIX ztKvD4;d>wurfy#^{X`4Nc9iZ%LgZ(58TK!lflrqd;iSZBPLe1L#vD79^R!hAqh%$` zx44Gi-OdQIxRn+VVOH4Kw#-75y_3$nIB4kPnyt#a&|sF21)TMidup`LMWyfVjgV9r zeV28uKCmn+Mc_!%87~eV*^rMEkzlad4^MUr5P>DT#jais@9>j85RHh@u%>sZShRhJ zp%#DA=sZ!Wekhsoxa>-Mm$(1(WI5RLv-lbm7LHwE>nrIw+zo!{5Tk&Dolx6S=y#P= zU?GDM0!S+ZalzF@P_|T2mL@(l1boJd~bx#~D zf*4M!D$ZpuN(S8m0v<0=Q`i!jksoZvQWEq@qYb(z>*9veFprP9Ni-N0mJ!9nhs9+B8 zrNga6N4<~NsA~C}dD*JA{uwGyc2iw+1J1*`e;$2QbTfVLz9Xcu08K_*=K_8lZT{1M zK|~A=V#y^7=34~9Nb=Y^w-iZp7+9QBL^nahk>AP`!ms!t730iK)e_WR9)vrDFATH478itP3_ zRzo|guG}eXUu&VFs!`(pCe)guSIQfrFIAg*P3GJ?%^f4Q;XK zjcVnSjHyEEq?pnk+G2(TMe2Ets5LXZgjaTg1F%sxCH8`~8KMLBYjxORCGRPMW^fIf`EayPI7fCfO9VXT?heVB6nU$X=uCY?7Nml@3I}(lA!qhE_deo#?>%|$1rK&B^AM3&9g})`YJA=Thx862n~n3CFO3xMp@e`y zF*KZt8PJy1T`E(De$~pnUVt^CJQaC4sIF6p2iq?lpaw-%LyyF#Om0`ynw3^fPm;R3 zS2D(&g-wpN3>(N;$!IN8e48!_N2N$FH2nL|s>2uN6Ah#`Vykozz?Emd_kmivs)}xp zHXZJr&)da(Ure3fFpdXDXmIUSi@EAQ*4j#{^wyp!B*|9sIId|yq{D^)H+h`F2iaF`yu*|%;f&=EP+ zFbbLShs~~k1apP;d-r%Top7V@Q(pOPAt4t4-lON?aUSb+G##bKv47!9Wh?l{v7ZpR z9IwLHXP?bOG+B=1v$X2hRtx6S<^bJ)xOVbM;Xu7lgA{? z{3SIjPtu@SqA*w*;zScCj0e;78ID(xq~X90?D6oqw9C}U`h}4nti|qvI?2X^pSiA` z3gg|lx=KX1(}LOTfW7lpnQ8C+pPeg|2gTCTo#)U-$;eo9ou_0R2RT|qWbBtlbC-IL z=C$=TgUE9mqmIVXJ9di`0%X!x6VF_*{(*gAbPTpJz?CZ{KK&1ChJ(QEa6F8lg?G?D2qCHIMGy2aV&WZnlG(|*7o(>C7s zkPpeqRLT?S%hctHvZb9hmya1cQ$)7mXW1)`{oU}5SN^V8mW#TRiVt+gk931xG; zthmvx8g+g%vjCUC)~VL{i-uDPFG=DOq~$LrpC)AuLpQ-vC1^@lC| zB&YXoFkR?pb3;vK;X&DprLM+LSW>R*fx~vkDkvFL)Z|acECT0(t;xE)M>P`Rg2(hnjP;{PI*|Z*Q%!8sIZ5g z8E|x7pOKv7Uz1){o#!YhCCNgbQY#Q>lt8|KQUxs-`UwKa<(>eVgzgoJLan$VJlM-a z6{&4jt3$OtRtiE(a5e7bszYxmQXd^*j+IewtQPw{mb80Ih{ZDXI^QsSq~PxqN6bC= zHt5u??tkN68mieW@w`&^yN5IquF2jb%=W{CsP`Nb&Wfrpdo4w?e|T*3%=Ke=tn@uo z&jtoyl;Ji&qY?8&i7ziX?WJ z2ZPIG5ss!R*W+BUrfi^S9Z!%9qJ8y|}A)WL3keXQp-hAxz`u*kwlf73C;F0Gw=rHVuecwj=C5d&jR+e zHMlc2N7nR4MSb<40~z?HkN7fHNjh0pb~IQ{J)9nmKDV5Ak!*o7=lixgya}G7wV!eb zRs9ILyu9#CuFgioi2J9>~_OKxc3g_*G9Z&vBVcaIiOHa-p5dSu!)(`4dzRvT04b&g$I}Mcvd~q6)o?@2jK0*Vk*0p$--(x_xKGy4jBwZI^-blZBwT-vCz!DSiU( zcNR)IRRbgy2#+K=3cI`=L?++HtU%jYBCS|~D4I17+B+l*#y#oJi43WrS+qxj;%*pi zmZ?G7YbP=Te+bpD+pSQ)@eQqZFUVnTJTOX)G&Z|D_W>&JTz@7J%dd0(#l&GJh((jV>W3*QNw^wI3wCwji= z1lqQBYgVL*apw(~6DO%v5sd`9UBi&g?0M^ulQNObne>B@g)$>9K$i)aWbgfuWLb6- zklpruK4j+(K!h9nLFmx@XXsvONDf(k`cd0KgQi*6wMd%|eGxD_{A5;+eI8^Lb^;kl zr&)5nU?UQ+*Of?{_I=|rVNBbc;DF$C;Nf29jzHW}D`R{a3PMPx&@MxRX8XI!tUi&8 zfqS(($d;Z%kTHzeHKtq{NFJGfv(7X`ruyD%&|P^qh|3HkmdrZm>a;i9 zy!Q-fJy_sCH3r??8@zf#;oKBdbUh9gv)j@sSqHI~ph$l0&L(;TLFu<#jkqDa@w~Gv z?qvIA4~{tsM;N}vGc}ai2dzQqlvU)&vv5ihS?dSj@T#Yu>{laL8Lx4X9^S%+$$T%Nns7MYLWwx@*oqvF|=2JBV8Gt&rq=qGu) zGz2BaFzXVX9FaLMb+||YYq*F}E4w=hSO+4qUAaRLT8<#GLnCa-w6t;>Np?CIDl0v4 z5R^{^{qdWWb|3AM*^->I9!iVgA;)PPMcM6N!_L#jrM{{$Y;@=@)tIQCuMwo{&c@Xx zcm_jt`-9Kf{rkULro=2}uP|XmD)IGt%vk+tVS|GKzxTx_5ts#IFn*h`8-!$;kTV1t zbTRv3d72-CMcUHo!5uZ;=G=eG75Tu|w}inm_YGV~AL$}2XL-IJmAmu8?#S8jYyh7Q z*hK1c?Wb)+O{{1Ogp}YM#(@@#usMYZ)||~tnPkM;*qN9KdA4opiA^H}ONnEijv~{y z&YaGHjFMl#`I{fp_livjas>=ptVRi>Xa_7>Z5Zxv(m!JTtZy7@8y@S{2hCqJL%EoO z;qk5(vF*V?d;#aFji?|FQhQ(eQ}I^2DwAFtl~*D-Ztp`gZ2}AY4WuH%O=Sv{ktYV|nb% zHn9PAw$OOLR&;54_4Kn&%Ugw0bwfI!AjAq{3i~$|x~BE4boRM}aW1-~c5>}*#abK@ zu*fvbUZksFz^u-V4SD}%gXX#D`S3Z}MZoGYgM)d;tW5(rsmz2Y8}m&d-%Wd7PdGmX z&Y_djB5lnp4c#0|=89JBLwrJxzj2_ZvQ4g4!!$^R9+og$<*biR0>?GQUY)l(5O+N4 zyF@gSs*egQTFpwG{l&UaTWK0T;JEow6}S6*<0Pi^iDU$xo7bP>=C3A&1lODFC>lZ6U|14oxXO{P|czWb>!_$ z?%b}svzK~@5a*5CQ-9sw8r_R7)kQ89d5^&&I-7OiAvyh?$5h78>@=%oCIAz zEFa%b@rRxqOk1_Pld`IZ2TmR1Gtl7ii=mZu{vxpYsFT!v$4p>X*J3OBX($W`*aS;~ zliwKF;oSQCgp*RZIXh4k(jcnGN{D#`8sL(sh{KVBy;pvFr@BqH-M*sIch@_Mds_#p zIl9x;K0d43&6?Q@F_qbOTnC0Ulg{=r$>tqKeP-b!9N#G_eSQV3MhPUL$*Ha;Jxeg` z34k{+Vu|?}b{u=YVJUvXD1gaV9*)4`${IVHMAnvO@t!J(!(7p|@$^+!TMM#}R{NAw zc&FA|92aD>&ANM!a+@ah0W%}2`H>ERF4}F1O@)QwF`;5>*)IdPZr>RQy9((iB;YbZ zoaa6CdkVnU4_@lRof0SErj(gxz~SQcYjA(%0`Y9 z?GfFokXk3?iUtTPqzo)d(hCPLLOPJth~tadsRT@aqbh*d z343YHy9XY`G)bz2e~D|!l_jx*G|`U?LU>4VP}si}qLJ7XgPg@NE)(+yE795i0&#)d zjFS=HC`YtPa*^2ZfJ`qa86bI+B!(lHBKF@!oMC7ZZzm=o=WkLXwHFGQ)lxc*+nxJy z5=qP|!ABf{ocL^rc%G+3K*(PSGN{lxP?^*u7Fsy3&`oTRpnj`IRK4hE0y}`yl9BkP zzr&a4_t|Q{BW&NF3t+gjO>Tt$Db~tn0^jcsijY9>w=Gj*?+gp$JH<6be}Xb1jP$I0 zauw1&#lnztk4U+v*vmKFsV{Nus8fy-mb(nt>f43!D-VpY22?0KG&fTjHo)!6OCOr^ zqskb3+ax&~7CX>TH6PbPEjk2JgY(cT^r0s7AcmXTol15m(`fkkM@a0*aqO5V3{RXb zYCT}=SSk|?X6d;eQ3VdO56}^Wpjf2Vl$koZiNP~YX)Tg?jl0~gTkHAtTo)dgQ+Q-; z>X6;&d_8nEygj4>_zfcY{d*E8aN4P$^O&U0E~d$)EfRW`v(L24vnMxe8eE+2x{ zph#^H`aLMz;GTULdPNKd4!uQWEdqlY3`t0C-f+!g?(7{Ha5Y1cG1^;*DU2>IW*J{P z(63!us-;vWe4S!kJw!haK)w=BF}MCm1$aCsRN698jFK%-y?GJNq-;@LCZ*h7=+#nMUayjO8#6 zn>ZUdkO(-M1?9MkV6tq)LOe%+@BYBGa})J@Kw!TKUhzunV~joZOwRVpNWWn48UTLb%Qx>IbB0(J*PN|#8{=x zG}WJu87IM7Q}xZ2<8}MmFs3f}>a~cxf0#1oM7YK>8w{yY#617>uJMH!otrW2dcP-3 zq55OC^qpNUh3k%Q6bC=mjJ&OAId{wrF3|D0?ZpG0Lu)wH1h9earv{(_B!}lW1`r9Q z*8(;LkO|vE28cflbe#ck4&PG+uz}(C0I2rEuLxiP6d&C$9>55+2N!?rF0(rypm&Z9-C zr!F`kKys^_Bq~N&=l=eO*Y-3;5>9E+{s~J|6)mMD&sH~Q*Hvxt6R(5K?b&;$ZMNrA z_;60-)#g(wyTfi$BT^t!5%_dQEwlM;B-J>%s84v{p!NAm4Hc+v?{@uz-ZF6Lx**UF4R=RHD6of{7`*H0 zPEo`U5eDCA2uyCT^3WJMwjL<%h7)~SU=f@6%`d56Sww-k`K6OYBTZQ#bR%!6AauaC zjz}}TGq3#f($@^Bw-JG6aM;msGg5YGdJM@xe48x;tHyiA7pKFrKa#bLD!$GXLl=CM zZLl=Cj-!~L-RPWcug6TG_RH}6fMTw%e7lo>(nLSc+W+C7P7F_*2YZV`-?ZakhS8Y` z9YbfQpVcr~G5s~}X&d`6-0NE2}BgVxPMxiZ3F>&Ky3RMHPZ6~YiP z^kGnWO(5tr^zl%g*Y&ATZ6pR%*9!!rh%mT82l9@yd(eS?<)SpH1De(ZOyUE^U>|7o z+JH*a8w4|aiRHZyLA_O8BkYj@#xRu_^srL35sKiP3{}=7%u0t9vI;LuL3DmkPeY~O zFu8=i*t=(7>LYqcCl>Fz7Vn{?bI-i1V!MUW*3{hVVh0hWPyU9L%;&>e=+;9KV3ECD zDbq;FRVQy=Q68Cl+ZxgLi{>zbP5pl|pmMc4Q$AfJ+|;JJRA>U*Z9DB;YI8ahZo&WD zXC(qUdBi7&K#Rmi63SYYqDiB5Ba7q6nyqS*jQP#vTDa7!O7i-LbcMD^Z-nGLlz#7S zJ8!IY4NrAvp~nyjwL=a&3eZ27o)3@@8i>p%!FY5M7jO!z4n5GCIq|1KZ_u)z1t8J7 z^@F}?*NlP&P^~NPSlB}@XF2wA(z*?SYHHVPf`%!c1wf%8%i%xIfzl}iiE3y5Q9dkl z9n|Ur7{W!fa_p7WLTE)dKlfSYtg5H|-f6LcRBDOC<6yAYy%W0Z90AfH~3I!3SldZI2w( zvceDS0WU;Ci-+Q2i?P6Qgih8d7(clWQ`nQo<2oN7L4T}!&GleI?oeSSzGl~Iot8g^ z;sOHox>*9Z*>vNft>WBz7?$?l81`=Rcz~~+c9YzV^r3j;&XTGVBWJfLSq!hmw*5wQ zS$Ucmj?fmEV+xv^lP1ie@472`$g&F6=TTqT(|*ry=f%zAZByh`WJ_jcL-*m` z?^(A|12&}lc=)4^0CDdt8)icIkwS6Lh5N^Ul-!I3EKu*j`NXBYV)+DH(@2e^|ACP@ zHcuqvh7oyeJGqy<-*^1F5C(7TIs~RWIVZmL&1i+Xe+~H=27^>#1t?AM_|XR=dR%v8 zqnwe8tUsTT3%_3k!-ue60g6-i5TT6^ECt4#F*9Mu5<_OhPAQ}q{h7{aMM!^nWWx)i zNO9$ckxdDVe*8MpOW;%C@M)%&ZB#32gWSR|2?U` zbz7}?U+-ryJ9R&+d&&fX>JN@Sn6&=Qc}6?YeM81(;Y}h(d5rzsUNvc>nL;ektW^to zv+%(5dp}_`Eo|+N84q8p(2jv8SiVB7$jP7AlF5mKmTA2yOrEaMGEcvB9zKSNbysa3 zydUUt*G(O`fr8=FHUuxh{nu4mo{V&h=`Y_URcVh@o+|0q8?rf5Z#^*&pA34bgt^?>OY_a}EzYw_?p$T^ELgli&xQ%j=>1K~4=_>prK?R=n#W|b}?*@iLY6&7t1jJ&Y%A_67gp!UN(<)+j_z9ZZvELch&oTkO?v{>a&U3iGMyrw*1GGF z;lf=zW2)nmtx7F24rkx>Pzuhqj^T^pPtvSN+jc8-_AltKcirFvaz0*e+h5g7_Eu{nXQJ` zg&W->#Ue$9)jp#0vZ;eHN^Qp*M<0Wbs2_@_#pX~$6YI9Hs-un~=zG^y5VZD98L3N7 zLD7+obHvl}WKo}uBHZj5t@d=1l#M!IV&rosQ%mk^bkeG`#-H8OjMjxGp6FH|t8M%^ zYpHD%HisPUlW-(%D=Rm&_mmp7#jQ$Aj--|^5+;mDX`oaj(w-GlWncPnLd_`EiCm#n zDu}qavjSo4Vd^+L5iMK^sb=ibQtv5YBtE`>dAKx{yhK|l*IMutUnY=u)a2qkA2Rnl zKK}O{Gy-yNED(&q>9I)^hUP{=b#?VPBt21mb@#|GJ<9z*PDv$En) z#2kdrAoklU%NyG}^BrsFqz~r)tS!za6Xy-A^)qnX6;{?(MITiR!XR0_e&B15?lu{ zTuZii4)sLfQN!ROIPlpz!f6PB<#&*#hTYV+O!4lvP)V44N9|Xuouewq+i%G}hJw0= z_7ZN?h-fNWomK~9dG^vI6D5fs3bdcKT`Of~mI^4^iDPplO!9YGN|xhk7AM3evN@#- zLh?MyBbo6a=y?Uyjz+U1`v~Mi(PkCxCGCdd@&%Um_R@<|3jVm}3_1)QHbSzC0>~YG zYVd}oX+mO&6@=O_WjLBB@iCSCH|i1+Gn~nK=9mJ)HNKF$R4sQx2s~q#`XX!s9O6G1 zYO?W)Relw=5u+`_c!DGs5&1AFq=vgi)VR`X2Tu%Xke!e!)^vd|kQugO7yuw zEywJAx>YmsdC~@+;QEmZS4muJ1{IFaipi5>=i0r*ajcLl?J_J0{?z?7P3yqjBrLWb zGbYU6qEa+yb8c?jh$@mammP>ukD)}`#R))KYuGoy3S0BbF`2 zQVF#RA(_*LiwYc*dlS8tg=Lobgs_?SSWI+2v3#Dv+mK#Htv95PD#`L6g+y6{1>w=8#`wzlNB>r$ z4z>vM#{g=?rMct=#o$JfT5SD};sVtXW`P%5W35?*)XF#Eu-c%ggzfySRiRY#2A0wt z^gULR!sPu5@=*CD1u@DrmYK!P^u&FxdqgHWNd|(-Uewjer7`U_BB!CvdBRtBT;M3MQZ@1*ycH6;+cw5A%86~BXE zhkfu{=@V>;!_fwDIaC5tzLT#SnA#)a?a`G{iCphB2P$l@HOytI5`Pm<4}LAXC03Is zY;P;ivh<8A?Ax0-OuE8VG#&)1SW6()&)!WK=@6zjVr{ zZ##0`^s`&x1KFnYep@*%z7?MdHo8D-M6hzSSQM z-3aZOrpW#_usf!Mzp2_r8Hl*z1?mrYsUlGJ-GAfW2l2v}y6(7JLYQ8+J@821+;}~V zV{?BEGu+wF_y))l$#$GzY6MSz*kVR19}1>^X6#(wwPtTK^^>WB=8TS&bAW8>UHXUP zIzSMHZqM)shGK&_$o)j;T5+QHkSmC(1dqYta+Ko&k(g17%9Um19=-6oT}i-JfJ@Jo zVp2|fV!7OVyhY+lv__*CE(fE_w(8}?zpK*oxxA*F&feud@N_xYkqyLVbeX~TbBqh%P&e>J-wic0R)#be7rQrSN#@$Bn{N6J zK<8<1(GhP$GwEve=8l{9=&}^bZDO5ky`{bB(Bra$XxVUccNKB9&SgBAX7{4`z{7$y z@P!p(Gufny(e~bI-{vK4b^e(N-C1!_dIJjE^XK>1Q`-$DE~qQ=GkIoIpXcoKZ!J$` z0eSWXU(y!RU%Qb`DxMtW65MIA48sT0sre6gj?5(~^t-Gq$sU+Dt=H)m(~ZjR*)Pi* z+pR?w1!SEItfE2}P=)WA5b!2lnbkW)?;1K*nXtX9FGOVl^`XY!p=tiWHc<-4p;|B3u!2Q) zKcEKn$rCov8Ba4VUa}qm5BH&iW4?Q(I(( z7r_p5Gc%D6P-uRQ^x6BH<6z= zBhS3da40_iP8IP_lKVe$C5E3&tpB%M={pJkKNI4WzO@l_BDOY8fAvES=5|iD4*wj= z=vy1p3H&>z6petbmC?UdEd7-^&@i#F{sl{Y%a-VwnEro}rT#YjZ_rZzr1JkC+5P_p zEycwCKWUZ{rfqiV5kjxrq43&6DQ^bC`G3VeD-y%4S4lhp3K*=2MIfcwZC@-i@!C>7 z0K8gFNAiZ)cX6M?`J~?I>Yqp3s2ue^_5K<1JkI239p7e>F2ig4S-Icd-t@o7QmpM~ zy*a~0qqk3PE*brT+?8)P`#wf5n#bDc@50<4o49+gZaGEWm#6O)zpNS+Iyr|qc-K!F zJKMDCvf;hCa1VzarCy+(-K1pVDp-`-YF(R4FSN`)292fVE0pTDsu_>oY)wu46X#ps z=0niS49(7z@scxXp>C#g4COg0+KVVPACTSiA z^+P#AUO?X*mT}=CM%w(ywhDK29Xm{X=On92C2IzHw!~=PX_gnR$sQN3s|#dqw;0I2 z&<^))({^l0&^|>h`nJSyo;7d$yLUK1e0SX>K90}@zRuDyKAJZ)1G6Rz1 z$+}XubscyiKZ%{UW#4rX-lObpx9I!3celi@tBJurlb^;Hz9hh?r4eH=yMw=oD%w0D z?7a?pM>cK;;5NOxO3gFbC3(I8Hul&5Ej8_1*YaOSGM%Ecfz#h%t>oZr{LlFQPwCJ9 z>wx~Z>K|tI|BWB@m(#@hEsXgW@98h2=^y3Kx1#4?tfqglnEsykm(}!7{r8am+vacC zx5DN>p8l5nN9{i~?BBioJ>&1=Z}~sOsQ+m7{r(>U)jyJ(?_U2o=UXcCul9dm|Casj zL0ok8ynQ$Py26VH2-`bC_vFE*(%$Z8`>Hfe^21Qv+DntX#a)|^{pTJ zA7nI4Y;6A<1L{EK%T{q2h4-n;_QfFK2tgnK*gYne4%8QtfZbAT-ALRIW=KG9q)0m~ zT-qRgV92Gb2PA5Ml~9&Ounb>uoR}k3uCa6(7js9Fg;buu*+sHZg)*I^l4@5~byyKDAGXlo7)jGX+5Mf1%a(IJVD-1`9qmTx9ztj=Nw2A}BN3VU~H6h9DossCl z@B{#wdSuvvxNCq<&5^W1RJSQ#kqbR@!@9uIa|OFrAR-1*_><6)M@eeJ-hr%cQPl9a z0P5plurt(birK_RsJbW^-vpPMnA51vPhA*yXBr;mu!y*2L~tT27P6%5%+Au}TD!(I zcjgf_eiOycELnbh0w7UE{U8f~%+WNgnZy!k{Zn3VlH&~r=G`SihUAVpE0%DrAJAzM z&?y2GnPbm5S}SfSpj_-)o)Xo(s_vLEU3I3x**$fka@|rV(tzDji>xUHRk@2&5|@1WQXBP?aey4+Urqow2-i zQ(tkKurd8)q1A|%phmI%;Cg3d+l6@By?Ra_0HvPiQVJr4o{_{DjD*PuLx@rKfz4Qa zty+}7JWFejL$ga`)w)x!NLUmEhq|Owo=H)-&O?E1F&*N#G-bhj(A0$3Id3tE@gY9W z$DGKpNt^i-$i)z>n2G89^2zjpy__B>{p=*ND1 z@A-k?`xG?ExnVKxaIt3GNNGw%F1(8VCrL!lcz8{w!7;U*_Y$=qC~;^RbYmUA-m5pF zrWB1?(h{5rq zC@HIsD#`B~G|=47RPy@x3MF^Hh`jH&<9WwXRsF;^GV=F&U&Q-(5zE7u#r1saRTLKP zdk$QFOaM@CBBK3uB6}4)mooo#%0rXsb`(M`Q^eb{=*ZxKJ2@OmjgdHYQWrJ}>AJe@jSH7=KQyiS8skcF-+FAss3x-39N zRdp64*A6bF26_>19ivR-Jc#E4!3B`5>Q8R;Qe7-dA=jB{+qL zcd5}h(u#O1W#Il?T0vEy@SY4_)~(nkZ0@X^@o^1s!}4HAryR@+0^R=3ntC!{bfJJN zXH#Iq0@hM&P?I?RQ}C6HBqhvA9k;vNULm`Og@@_QcBgrcg}k@3ovN{-?iX5zl(G9E zX88)@gS>BYejWB(0(HV6%{6nCw}euZsDyGt>s?C;WxZ4}s{b#?74n$kyxw^|>gL~W zcHqcV5Jtj1kg~N3#8eI_=CzM7R@@~TE?nJ5H5VIwo}=|>s4KKME1l0g<`vG|g6SKV z&ilm-OZ5a^xt>A=Z(jQoER4upYs#hyoG10`E@}s|S3ZFmoioW+GU8cS6pSQ;VZ_g?cq<%yT`Xx_I{bEofd*~@? zK;JFFLzwEt$lQu5-oU%*%_degtLzo@m+;z3TfJ%aQ_PpV?i_aJd`UJ3x0`-J$aKy~ zCDgGr0F=0)iR&d)({B$aAqVRYH*SbYR|ACg(c9I^{As=GH4?~n)TMyh_Y+C87j*g1 ztt!Zqloo`FVz?dYM|Xa12D_A0j{qWRQCLidnjgn)NVu??01tC52%N+E03&rTtx*lo zK0%GF z^6$UitiAg=E@~r~_6%M_4bpWZL_hqub9rBXqi!13*&Bl?p1{I4J&Fp}x{dG_=o`^v z#sr75hI#}F*6Q(L;X;ArYjp6IGzz_UvZpe^S>wiix^c}NyTn9Cx4nm?P+?ymQ10Syj&$i$E+FSIWi;*XoVBobiOioEYSY{tS@O?X{zeE?r z7V*jKgf?_jqFE3G<{?^JHnBG`9-YEtJiXaN8Q$=zAc6SaJ>3y*2-crQ>a;gDUuEhH z1FxO_5Q#BNWe7?OiS)Vgba?FW&HOM4lthr9IL-y@4+9Q?Kbo_x5QMHu#rt5?aESz_ z(cSt1xaH`2vo_w{-1TahtPG>V{|k9WnYa)!@n~^qO`;v@XZbeQYRgn18UdGVCswz- zA%0$YV^>`&QSIBhbh*UOc&_M!LQw3{x31={si`;ztNY*~sAvbc2WOtnp!|)Ci)>0F z$xX3o(rJb0TX^s$qjzdHh44+%=nCO764gU9enoBPw5a@msbm;5vDI6Yf~*${8E0C; zn+3;0;^ei#K}oF^$=OF7+CDApgIyY0lU8y%l723OR8g3_upOmd1sG_$14_{xNBJ(~ zELVH`#0Xw{hVenijcM&EBDr_8$6T${e;c9w%TR*x8^!zo2+;n&`bo(BuK-QK*1*=u zmPXu3-^$$ZU!fW6_saEeU?(78>!wM={=eKLzDcI^|13dS{tq{aZy+!f9lxWYv5nLB z0+sojn))w8iEj^z?q=N>2!zVogM{>(a4mL%qUq3w%Sr^h;WzBAI(s^9i zcB*7|aS(ys(^JskRGBye=?|!zD_wNu+ zhQSAQv4_i?V8G!m6Abj5T%ggGaMRB<;oCzwXSaACLeK4UJTev}ZN>E7lDTcs2&C;2 z#t=phEIRl{pJ9mit3gXIH-a?2r*N7Mvxm!G2Gl`F44n?M+NC`!iB>VX#>u9Yk2o)F z5#}JNwoZ2%oTJO$)=KD7O2O5|8+hK(9ubIK$AmZB`fc1M}|M!^r`|-n$6p09LWJsuH==qJEVUl(Wy0388a>K*T(0ajW;+yL-xV(|e$c8?z3yFCxAr1Sx* zzS5yrW*>9z009bd@@9OW89!XRCj7p{0-CYZHTkr^a=`hldcM>FBvw;$t^xcWeSzr!AU?640r*zC{qX?a@7W*#{NQ{8@d3ym*!p zcX6CAVN295Qm?gA_Hi{zz!e=9`M~|jpk03!bvDGM(f7s4?uxkqTgwqfX< zwMU*aiF1wbFF+O0T=PSA9A&n6T}zj5QHQZ-5dwj+-P578S^Jz4(`S z5nX%L$;57QL{agNSc6^x53^``CtfXE{+0t^Fd&D~@XmbMB8GNn9N`i%TfE4eB~5N<;K%8{n%SBb^oGt&rx+y!9{Akof0--`=aWs zpz~2D{I);iDS&WBTdr8qW-TLgYltfPsf8-6yA}}=SKcZQ5;y(qJ$=in{63gZl1K}5 zii-J&`%q}w6@y_gW-1l~MIuS&Ew2=5LZ^POu%*sNv_CBB+2mZ#Yd1qoUi$%hwUDH# zqzu%`I;QHno0`j@RCZUqfu^ zI7`KCs7il~;13F&rBAV-Cb=g@J-|T2gk&yRh>fQ>9^9p(q~eRdY}6}Cl3HBGc8I$$ z#^=yDI_l5*hhLU`hJBxot~AqGPAUGTDDU!d42f6R@#hC5?`9p8A`Wq-%60AfhQDIs zhhygwhKb_V2mK~`VuZ_Ik7wsbvr%1UFi+f`tag`HgE8ZJUG)Ophfa6x38*F^3p9$O znzRk0X;FwaGP^#4C)ic8-bGM(n*{`|NWW0-`todgaVj(qFXXU>Sb4o0MTP>mHBm$= zaF-_(}%2EgF>6ei5;MOL4JaK zh2CeI^s)I-!jZe%g?&x}x@-V#@Q0{eKH1>@q-au1+{t9&+5`=(K@=>RaaZl`IjwHW zF#0#=sUgg$*q*E`^!(cu9x9`H@AmDz(Ap!~aFvJ4VOaZHu~b zW^CJ@u{C4cwr$(CZ6`CfZQD*}Y$rG0I%nUt_uAjt>)dvKRMlJU9dA{&RwJoCdVfZL z4m6*E1vz88S2atnZ%OWuK~0Pxq)T@`t;^!!I7Jh1!+qE^}?sQ~SNsuRkh&5%W!V)YA>oykFVd+kT{pXseA$SIYAdi6>KmLUl?wgPeUt!V4( z_8vK7O-!++=q270yMwRqGa67;dudVuW(kYV+Z`=po<2Ef7t;#BqNk3hyuMsVWo$ce zQ73oGq{+oH$I~K~>Iw=4`uhxm^3`I-U4Egf6Mc$KyHXfWZ+H~kS)aK#hGZ8E3mztz zt>;Y*JpT|xDSPoN?y-`2z+7p9Q$BHLM(VwEppMp$UOW@oOwB4a<^%rRwH;?tZQzGV zVd}PQDCs)Uukxlta>0~cmzgUm##xTG2+nf1gco<^^%pJzj!NFxgXjqv>2Ku7iT9FQ zwHBoxI~E}@T3vfxHh*QZq0|)?XZ`?Tvc0s}x6714QOaQ%?(Xx5c2L++Bb|4^5HD|R zHEf&`TI)XA%<}Fz_jtwF>j=Rc<%cRyQ7vZiXkGN(oVvNHEr+EUX(qztFjaSYpflLb z=}*AbpAR?ft#!6}*7alCcCb`P$a(=x5|H4^x zc8l)sVJUZ&Z#vgA?9+UDUsrOY_nJQ~)BQ=)Szx#k??g(U#s*0|H8$)|9#J_~N24Ef zqJlhk@QYbAoKdWm!`kG!0jqv-$`2(>sfa<8_2QxC&(>-PXmJ}1cJsD$rZ(5nPSxeX zeBRQPVR$1&(L4k%Z!DaYOE?7B07^H2tT9n>>C-bq794tL(rN=YIr-4wc-y4$5huN~ z1N5~g{uMw%V99WaahICvV4iTc2_)>UG<Pvmr0AuBQo;U{yw>x&^87uhwW?DsJ3Fo zSEFY2rFG2YDwJ5fcj4tfGt5h=mb4i$YH>Kurnk&jLe4$+dJ9X8B{|e85b~@QcW~!4 zSw;s*3z1fYyI`JtA#XXlTEo^XM73nQYH6L-k0Gg2yoo;rrV90>D6#8dKGo=Lhw@be z^lK$k-y@shsh(yN^>vYXTa$YLuw+&tWc{$+7(1E$i0OFOeuN%**kEWfOrZC!ch9T4 zxenOo-?Z+J4dGjZ)kic_hdy}7-d1dF32FqRNb%V?4(NyRL|u`OQYfFSZyLa_zttZ)Q7l9wDfv${uN+=3VlBz|2NCWi}HK>7mhxgEPJ7(Si9T+7m-q=<~ zsxP43a+jyd87597@3P*{_U=P(YJ|6JQb^2LpHTGAMQtwWLv~jO90l&Yca(W&a5;wQ z`8&2cJ%Tc%tVI{>x)rLB52fH<)U%uLXI#6lc+@O2Jy(lt$o5=0y0(uLtTxEmrotv8 z(z={a?=Aa97K{IFk)#1r`@_f(BO?k2wwOwmKh%;eGi@blahbEv{?1 zWEA#4cI0ZBQ31mrxe0WpS2YfaTa^X*G7x8Zy4na?yi_hm)n_YvzXU9dYMxMY)zExC zoXmg4u8=0Y#f^pvaFC=5vZh?sxq4FS8WrOBg|;OZ9NM8T8FCU@KMMZc^x^>_jlkCLP?cSHNho+eJ0*uO0XbW&k1HQbaX|JR_F^>syHO*uW zp_WW4gF17F;qs;=2}K>9U6Vo&ajKL}#~jF79o8Ifg5thni-&JzPe@zm?uYR|5E@@X z?}oj0L`?L&D;WUPO%u2)o`tHN@ksb#N-;YZ%YgaCuZjet0`zLZdOz-}wAeYfPHxA4 zCY}Ey=D|V{B!I(Uj00$D>1p%ThVuD36YYk2;Se0l+=#-{fk(Y{Gt(3iKsAo6sJ~@a z74LeZ@K;-8cz3k2eUeK89KyS(Y|tIqcLaJbr-Z=rtoVklVj+@#{kgA2%lADdDjx(LcP+QCw_EI--0wNltqhDYaa?h_Om?$&oa13)3MUac^mE4 zZszM+hwx4W4^QhyC3^21el0UJWu=qB;ponQ`D&lCf335)`&B8f<|)2Vrfv~A|r zCm)UWTSY~&YE~$SSzs2f39JmpP*1~`m%66YMC)9Ve z&f{e3J7)MML1OJBQM)=>rf?C2gY0J8xp6MHhI5{{n0Wt)4$}`x0xpGlph)`t4+$cPeUP#LOKLxR*mF|Wh>-LLD(B7&sJ60ytqAX$aP78Qk>%as zOQ#qe)u{Y45~y4z400(l6XtpjRavut$irFHwiO zx)funOC~q9Op|VZ=>60J`sjWCNxL~jPm%l9HI%zMo0e>KH&+VJ*vV*kkEV1y7|C~AnKSi8}{_T zLsTc;F)WBaWixdf<8l(=Tg{1{#d9iuxVepc$-6d?pN|?QgEf@^+Yp_ggyMf@2fw$ulRF@~ojv zhCvtW@AGy&NJFnM7zeW^P2<>y52@KhUK!P%i(;|A_tXf4vomW*+|alvzDSgf9ZJ%!{JhoNAxm~WE)i4y(w(gr zyN7LvdG&(ur+gzgG{|CtzBv+S_x4(^X^LL3kewyh=P4Br4LW#{=IlkV-&8bhcy5Uys3!s^&!dOW%wY+N){mn>DX zp8Jr!iEz93YUYQ7M=&simCc}02$;OsYa2X`(bcS=rdXQwka7y*pL&S&-1%z<4d%&o z$IA9zO-{*n*Q!C+@mQiPM|I?TWa4Ra>Dh7c8~R2T*&;)^?A%>bK8~HArxUj^I;8vw z%~oSaAHYYx(7<8Y>6P@#sgJ3rA_)c-fX$iw$%52@={hvNu`w|t_()GT;^xP{X7pPh zA$3-N1IJ|mg~R6PlLN!~T#8!4yIXY}X*wj;P!Eb+x^SXP4H}|$j=EkdOBbKh3Q|~M z)sza2WHw62^87l2KMpWMGDv35f4{+v^ym+ zDQuJJD@xb^@d$;m?qdF|KzDGOW5^=~`;}9&a~Y(CJADvN5~#{I3R7ikoDVCn~SsCd08VYc{5?m*zb|K1zF);H+V7WW&0t= zOhOW$CTJnhWb2xR6vf>UOwPXGQ;>ucvT{?eSv>Yr6Oej-ygvtr3@Y|F`D#=j^+<$x zf_#dh5nq;JwV8?lZ zF4lO!V44?o&vWVN=o8TaQF~XlKhh*Z2CWG0hfZFSEr%&#(yzCAmn!b`+Mym|w6mg@ zD%23}8(Nbtr_!j0`i$4ecHWY! zwL+2=(I-GIJAs!YuBTAnmlBdzED|buBPM!9x87&3&SF?Ok!TQCCLXG?U_t~f47ZqV z7z*h!1%=0M2p9$3GG~X5Gp-)#kLILT_g!;@Dy-d~%y1G4Sh`5!zB*&SwlKa-bH#cp zCW|7Mo*|+u&$FWeqUk12WC}9U;4(^^Z6dsbx4kEGFZzl2>VBc?*?ox}+$lqQGTy;3 z=^OQfT*|;N57aGZW>ygztt8!%OGS5G7Fi`lZqc}8fDI2szkTeAvzl7%=SaZxxgQcM z$0OH0KB}u%5*f5sQ%T2Oq_tkqQ+jDOuVEl&<4sozH5S^C=F8@y5A4-<&_)i5@nObL zE8DiO;PpBUvOr)@3jLOV=5Rq2(z+BlQa-M(LP8a=J1&*wcH`Map;WNmsZ1?L#+#<>X5&wt z*`CiZVvi9wIu?UwWm7JLOac3bh5RcJ{gutC%*Xh5u&EYIR#?awlWzqmChcBVI`z9Pr42&KF*~s4>2fdjqS}s8O&j(lk%J*k zgW?Tq5?My*X4y~l4k|+lNvv<3gi=0MKD2lwDS;F%E|yi6f(D-lNq1;dg<_Cuyv@Um z5Ty(^w#*?+&^2{Z3_8(tF~obd`DMfG3Ukg#gqD;TLhH2p}hfQ6pIah`*rY zUG~hbGbi)~8KHh}@x)at@-e-V9$SQ$70i9xePmf|Lo~M!4;&QJrDS1s?&13ioS9 zr6-A6+sK{=s+t_xakSZyb`VTh(o$-I)Q%3LdgY64w0@u)w}Kc z@mGO{fF&UE36;E7;paOGpEk24Gk=o*-jHO6x%b?))jFB(MwrJHo)J`zIw!@N=M1?n zi6`ZheR9sgBl@ zo}bwtzpWTw%4@T!Rl+GrdI0|hh5SFE}?7F*}3 zv>{}PuhxI7q)Y@uKA_O$@OI2~fun9?A!O5R zy?3p+-j!V%i*BZ=E__k>z1q$Y?KK1wLIUcQ$qW5Kb@jfh@(S zWwD}|ewLKiVOl`%7H8|iRq>*xJ>b_Ig_#ZK51Z8Pq-P)kr!s%lRFUbTT)+-jj;iAj z>OG}QD9d{8G>SB!_lC*Hu1aw4>hEV&;_Q2YQYVlm)W=;MQ+p?GE~}c=Pnde($Ko(~ zu>U0PIQIr= zyj@<%Na*>&4?rcyRj(a2*_e#c3*Ou#|7V~9XYuIR{?`h7q~Mt)-vK{qHK*(!V%|Qr zvzX;}S?6m=H_JSt=t&WAKv)@V=@^<#4a1H;wy_k|G69lxbj$!A^7<<}+4pEPI5E_h zcDC~=V-p&gb(g^LkcLdLLBp)=3JQi6es37oTME2{Yb!&8IM9aeLKY+0VSkDL zJ?AjPAmq?z^D`GG8qd+U5IpkgmY;%^TvFxKcf{GF*Z!^^Y=C~cMDpniXi zJ(Mz^BKupChzFM6ux~souKsKsQrV_Jp>4-iNE@GM$HFss;(<}ReG}r8FQ)yRC-SKn z{&diahV<9r9B1{Zz=*V(-TM1}v*BeS_@88&nuQFI`p@Qde&s(8?@f))N}#GO#+q#e z-v-^fUm^5H)gJS-K1@LY#h|IJKbW8DCdIEZ@Fu;akekbk22NB9JE9{XJL3<;=O7vz z`Xt#gElfb-Qu~l-UF>3;f1={ojJ_qW|LM_zQ8D(YG|Sb29pS zoPv>+?OV>l_T5UK@w;t3Jw5CHfK&X>dJfkAgP!9b)$@NTsQ(@6&iwCKiiFANH9F*= zCpSpik_frI3|?XWICOMk)DO8do?oKSNM@phNT?lNUYB+nWl%FFZ<=orPFdD)?fq=j zr*OPZBF(9HbdOt`#qC#_?5*Q;q{@=KjuP0XJ}y?r#4wG+!&Y|7{jS+dXT%>EOV$xS zsU=dpSsN+DAD14-AvgNj-c~Vso*mP7CGBl?^lEcV#V*Icr!OW#)`7rkGURe zF`lM-?rXMs?!Ph9S2PW}523qzTD$5ZpCXJ`v}bLs4-2}FGc>vnhsl|4|N5xUKfk`z zxleU^w}pK&slG?@B3^x=NPYor|GcN&rJlumqQ3duC7Q*{=Km6Byhr;UgElGRlU34v zqBg7Jb)wU!vqPIU`0?Wd>iGcU*kw((Hetrx70O3_#nI(T;O$SqY?sh5Y{A=G@sXKu z(x*4@G3a{6-_GyF0-f{cRgiGsD zHauxoBcV0*u&k)N)5e6w7D08H^DyrA$4E}+IpWfMQ7B|!A*G7)QYsJ)*$CP7vwJ_n z2R#IQxg;*xD#9DNFjm)GT2ax`e6^|0Y|r!fFMt@6%d7Vzm#Nm{iHC=UN+lTeU3Oc3 zCKY8WKz?k1YY%|AG>wYcq6FF&gfEoV1Mwo+E)Tsk8-Qp&u10<{0}}S9H4}hp6}bdz zbMsHQAc^^D$AFha8&m|~%A?vWu z-CrHhw0+IHG@?CLBRv3IkPL$OP%6Lt(IfeOc!PEa@%Gg0l3h!=f_A~y^v3x1V!;R1 z^h()7xo2`-l5O$^)UO;DU|CJH5phYB(39mTg=h(cOX;(<3a@-0y0fbx!l6u~<@QCRBJ z5Lp{Cpik4_>9|u)aM|xuyW!T)AEzYyL(@g7Sl>fZw#hV(WZ~S;{YvE~o;Pue-_}JR z%Y-8%9@9K7Mkh{cQ&yn>*MSV?Pt(;>Eh`>GdQGpt1OFh1bd@Z|3$s@@;^^t{l7K8q zDS~+5P%`yy#qd9izMDu*UphT}4WwK&(?UEY#?2Ix3wyBh7h<-~mB|>nf0lM3M=s=a zvIOQJv1N&P+~DV5`YGW!Ed5i?hyw?jK3?vRsw{uGL_>C|1f`2<+cm+&`#ZhkUI(Wu zAhsiq?5`}icz14(7Q{<;{vpCY+j~|SV-ilZ1!6`_uHaW72QCES`344tuiU%`zcgE2 z<#v}732FAvi)!&<1u^@lL=?tQWznajtPsR)b(x0U8|FP)+YE!LA3s{fN%q(bsmMtL-fZS-c@E@N}zjoGr1sVR%midI{_w-&-SM zqM=2kv(6!1xeqAz$CB2C-He@$(>>`}EijvpOrpjnu-QgJ4Cf!>Euf?OkFU`N3z}@| zs{s+%$bp_L>v4Sw67FxFOT=^v>Prglv}~{(AF|s(qN<%6G>17nX3UKrc}W@GI3v~Tdun`~_31@ZA2_ll+rEkD&j>mrIcK{Z{M~GqpYztWet?GR3VE%?hJRI7-oq3t!IR1K!1^0b<-isaz%K0R`Da1PtGC~b7i@O~|D&P#k(u?1?Dq6A5T z2Z`~1pAkWl=+uB&!tcX=N98IMr^fJGb0w-IrT%NB@HX2XJ5w3gIBB%S_~eoVhCh&{l$-%CJnvK`xH3Zdv&Rl1gm;{Q`waJ$Z z%}+LVPnD|F=cNi&qB@L~9EyW1rz$N~rP7K}9M3b04qF9d1cQH$DKbNnWLJg0hhLMY zWu(i^Jd*N=(q@pFpR|}MNlF}298smmZIRPv6eTLF(v&R$+WA)RVarN{fDwJ5AMSu@ z_E?=EY{U`Lg$|PlnyG>U539}GWP_3_>H$wC!}mm zu80|9q^+wAlSExhNG%HtY0aVXYaD_zQiIn-GzRfdwez{xnB%26B3+vjhU7W=m;Htv)Mtq=FY{b&6$N!w5LUZB-BB{z*)@5 z*G76G2v-57i8jBEoV-!f7-4xqF;tng*59fj)e-8jCX)Ic{F~_j3O$dM8n~(xTE+ld zsuE4>;1F9!&W%2Ya!EJ5BlEb$zftW;Xx{~DglRdGgrgQsX!s9NzCz~i1FB%nBc=Ht z71+Za8Fz(=c6<&eA2e_TE#V-u;odLfT@3^kr|xh!L)S>AsisJ(ML{R=iG&(`ltvMX z=)LMSFVmqSeOQEdX69r2#E|-zE87|XzXEN`ZK9{H-jOHW^hV+&FalabOr-aysFxcf zrda-K&7-?#9TgY1Me=QDVY>liH+^qC% zEdOIk@GS=WCtyv_%Kp9im7d|7kN&oEu`~S3g5aNYHOpUuzJJ2i^xyISKjG@{>;4aH z^*=(Be_0Rw4O`7f|L@iVu~Oy(bkIRhJVD9xgF6E=)&6;soUuYarfa}#P4SqR>*P~} z%{Av~O*27Jxb8Ww@mvpZUe{_}@(sYosh+lh78@gkk!)}H>Y!8Wo=OkR5n}udoaYup zMQ{q|90c1f&BklHwpV+hto&WE0=Ig>{ljLu+?EtxyZ!_ML=9jeNYic%r>oTDR8HqO z&0bqEk?$B=Pl37R*0ge#jxD4HagwQWj#34AoH>m>JD(2=LFi;}W}#U$oJs|WN9swh zk2lr!Dk5pJ%I{)e&P02P53tPA5PQI%*_4BdrLSFpq{}uNe>)BSKa$jc_qG3R@XYZ4 zV$_V^{x!z$*q4=^>2G7u|Bg+62hsl;gMK^R{#y+C9cTX=Y?|%c<@TRr&6JWJB*%RdSHicili z*ET!Wq&TxI1uvX0jEhGv-Pav4=RQv?Ip<0DPmAlf#Il^{xi~i0&R?p3g0zb@)z{DK zP(@sEZnGbIWFEWlxLF@5;zHZPs=~wNOh}nDU7Z5?rT~NSL8YpDwOCs#vA%a`AMoCig=QG!Qv?li7=8$ld6?- z2-4@*oyi;Buu-nzMRNlYFOVu0-#aTwrS(NtqsuRq15FR4$PpXCXjU<#&m@NV18Dt5 zi>tmXzKCa+ZI=YVGMxBarX~$Pce{{4JYVREKIZ{4yM>?&i~$(Eoa7cTUFdbFP%{C^ zZ#*5odb`2<;;T&jGZIg}?Xfy_#5foX{PpQ_b#r;WzM|d2q>VA@+!PIov#Hr?y{)K` zWD6T&c^MS=ld|{NZgnEFOz_*&wLn?qZ}elq3G$S_3m%<{9Ee{gLNAqeBXNfZ zLK&ox4+6GBJG0lNja1&#FY+cU=>9Y;XsQ;ux;cNDB*;)(MF*UUgWKOd5Ry;NJqW}F z9zxeYOG5>HCUM3JspHfX$!s2H5ByAVayXZ0~XpjmU z8xsm+DClNGqz;rNBms40DkumF)S*oYK*)Z+g3lJ7Mr=zR? zW9z$rtT@U8OCn7u1;{`qwZ*Zx0LY7j0r>!ZdGMzt0ih(CCBH}M9M;E4&WXl(mM(TRj0&TR-Y_{v8|QS5sD#f< zEc_x^h-^$LOogZyru+2+FlUx65fglQoJ+lcXEM%mh!Q2F?HgNqHaB+!BKG4Z@~=?o zQWkchD{KmOIdEL+aT&O!!B-O{EI8NELP@uPhl^WZnb3V59|50(NSkY20GO!u@)N*x3l^3O1^$6*EOA!2)IOs-!H+WL!+b;bLes$ zXg8NJZBazA25Y&*wJ(pp`wO37Xy#Hu-TL>?I-&t+DG%&eHZqOgWDMPt7CHb;-<$?* zBsDsOpehU6>9sjn>QiZnoZ#xfgVkGEpSl9C%CzwcH`o7yJH_}@TGM|pUrQJp@j*q{ z%I1pik<|a^XiwHThybU5;Y|yP9G|pZ+B=i-7^xo#%AkLtvDYtrfR+MY4;&d?Zx~Wf zG1y;v#0B}DAAFFEoJVe;f?PYwm;lya1qWEJgXS~L4Va3Lxkaecf3cjefEZGgPoKF? zyv0ZBP+QB&GBmC8$oxGb{_x}ikI`nMPB1My-u3f3@-e4aCq%vsSig{w9u(n-Q^7k2*U*yPy&yD33i;K#8Zp8*}t@{{9 z&lh+vpV#1cW<6fXOTr^M4AUqwV|3y{>IJg(wz?mMHI>3dQ7}uXT6Fu{b2T}xd&?6J z7tNj*Y^+fZU%1D0J1FdZKyUa0me6{>+D`Cc!urIBt?+HvqZW>!goWT?UZHN6a54KE zkjS?ss=aJ_>Xyx?mC{p{&1`Z!30wJ!W=_gkLN=|_<@IV#$`uK|5Nu>FIS`hlNNf^P zq@CmDr$>^T?wdc!&iw_M5DLD2JZ+i=db|LMxOD1v2v5+f-27l`ah^0}U}kacw``14 zg1T{)aGF>}RN%yxzJ<^VnzpG0`RL%;=SKH-zfY)N?XJe#wSuWF?Z=2>R$ZU6etAid z`7~T_#aZB4U-Fjdnw%)8+I}@=Gxh8GLuJ9+sd(<=I7Wq?rZNkkM5LF1- zXuZEohxs%sw(tRET!}6I)@eXTyBRFfT(GB1P=1MZ$6IQENW?u9PNOLWiX6wWjA&l9 z5FvZXuQRq-b9oy+&^O{hP`>ayhcdBf;|QA1@p1p%!m_k2pZSO2r*i2cbp@52xycPe zh+9u?nhIrOxZ7NHR!OZ7BY~B#9J4#)Sf}IzH3?w*ax~eHb716#_tOx}o?diGcfzL{ z<}z;-eX>rBOcCPX0_6huH3_!F5tCOwbKnD7U zkgeVjeChm;pILzJjXwp=TM>ysVSe1YTWWILH;7xTu5yHoUBNAL{<)r%JEc$FDUMTe zOjx8Dh>Rc5r`-8j*hlWNPBc|T^8?5q+??* z(ES3M1i~&Vh{a4-D;-5n#T@|XL_9Ih6RHq5iaP0x!2Uz3d8$2!6*blqZ_#Zo)+%$$ z!=x42_S*Jk$I7~DP1G>!P9v?@>&`UK2HT+PSz+m{K|%!X**BNIc{pQ8l{DPLvi0-KDgvmpSq+W`SD{QSlNnM zqrB>=mfgB!m=rH|)b;Z^?_Lwb^Y~Dvguz+PeHy=Cj8dk^a$;fR_K}_>q26W8FIUd0 z-C_bbj}N?qI{OweamP1}ThJ+j4h2wB>mwNxGwbMrfCBMcHs9(9Y=_v}B-t|yw*}wMOF#)?{c^k3#0X}Z*;12PP4ZxT~{-+ zm-s>Jpb;v$^cw^FZcwKHYd>}!@ppO4jmWK2Y?}B@`n(Xe@}i?uoGU3OUt{lbA`=pc zfX$yw;6O~rUm{8dt-VU~ikH^a6lWJ}D3WUv&b9PigA*YeJhgfHE??CH))oDoR0Yi{ zsS=>gS|tt;QA&H-AG3Btg<=*Hy}q3rdb3H2AQ~0TFek<(7%5%#0}!cy`q4eM2j5g; zPy~N$y(mW|4!qYjKbIBHXmH)G2++!65pE!61Zd~N;xd~Sv=#M^j<$XOl$kNjR-lRq zr!z4p9wfYpvwv=&%s`>1>NmDyyQlb_2RZzPrtNWhhC#K;Uz!1xC?8hjRjj3))mkme z@8Hr`qRg?FmA}$pS|CyFh~ z0R=i);rmL-_I{PPr)7zU1XCcQZ!KY`ZF0u)a>d1#1)iSCBr9s5EY~S#&ZbN%F)A0B zvd*a6f}szUHg^_-iHC+k2MSh}v;u>@OYbe37pU>;M;@737#90*szppuRH5cCb)PMi zO*J3SlrYbVexO;c3nyW55HT)T#8c9^_ev_Njvmrbq&&sVcTrr(6Bg_!a}&^ky?sBl zshiJnYH7Ni)EdlmHr#9Xl)yM@5T!4PTdkOmyT2Cm3M*kpxxU!IRDA~z&^DP>Dv_K1 z{O#qD@5*bb<$<*g$=lyn0B9^E5-Z#xf;cC2rN*ihXvCePR=6hv)yYv_N~w-VSw6Lv zzx#XlGhFz=q<8oQJ!;y-Kcf2c^>rX@=Uo;*r@-z&EP zkX(uKw?0V?31$^&OY^P^qu9>;Z6ZwuJBud)nAt@Xz|pD+%P zGnjO^P(SP-eaNmoiLlsI6cTWY2<{_H=bFC4IH|y|U02A?-fXY1{)+dEgjk&PdG(aw z$Y%4ol%%G)zzT+c!F>Tex}%&elrMb{ETN(&N6%L}JL!K+T2!qy)bJvqOnP?xn#or) zMeWnMcwJj=>k>Dw(G=6^47aGN>=cr}#;+dqg2I(E!!zRb4k?ztV+NkI@J!7@=Qgzgirc~C>A?OqfmmB=)D2rK`r3^#(sv@v4Nq_xXs=Al+rbBve1xto(9DtPMQ zQ&?ZmHL{VNc=CD4!s~ddU{ThrVYI=|6#*eys zwt9w@*x@{3I`0kVik8C@u^7^&;#Y^z=F@(?>E%fc2-%ggPwNof(gTtVZ=L8E^cK^T z^%P()lP~3|YAfy%`6zt_eW*Cm9n8{d0fQQh9ODBCp2f;h=8a$zuOd$P-oUZNM#Z=8 zGENs@Q$m1Y>^Gc%st0=OsTrK4>pMO28UBL*As?(y$KdczW8*Sqt6L>;2)HCr^7 zoB?i7;1N4yda`R|M!cT>?ZH8VmidHjL$vKs*o-|=on1u)9&=ETTi{FP;_??1h{E+?wpK^TWW%3 z0Z~oCJz%yjxVIpgMR%UJw4c*Lg;^qNC9zN5135yk80Wlx&nCw?IbXY6R8t;-_htiL z8StWr@Lp+Q2eT7#hCGbf6GpIP!wezu;EYeiB8+%q(T1?ZA&fy(BTW&hx6j-eI%D-P z?0tur_6DtonglM~CGL;-esXhk94u{IW5x+@3~vc(6Fc@g#=5O!^W7a(^)9WP3Am>t zj?oP!!C-c+60rHiDkJvOD39CV?vUx7M4DIZOK8-n3v8ssJ)Mkw>?zwt(u;RC`LkOUSo;} z@pkm4K(DuVWL*pXE{*$-ROnx*5A!#9^UrKP^ZzaCBmcj$`AYgu){ah6Hr6&Y@a|EGqQ->3dlQvdsc|D4qS$4Lc8BP(Tm zw(k>vy}GcOrO|h(;2*i(|C-ci{_l_vBg4OKm=Z5#6F>(YeDxlV-7WyS>yQL5FQF0E z&%@M&_X}yBAPOGTeP^4tsaUugvOw8O$ihi$Zo{^4wwTOl8 z7fn#z`|f(S-FS%_9?s*UIf(*tPNi&vBVhYJO`?*4K_YwMOyUuCJ5Rx%Y&!V7h$R@e z(QmQF(_W=teh-MP##3=Il>{GQZzUrpOM=-(104d!U+j-@=iMtr^6{&v3o&*;s6 zYryh9&9A>NAAFaC{&yRezu24qA2-Nlp93SBcSXprmf})|3n4g3G|Eq_E<61+58WUs84{GL2;54Ej#O> z^iP14U@tt$9Cn*EqxB0*fKM_210gv*Z9l#DBU}J2C|gfq1ZQ&17s>+{d^`>RD2UNRlQE&6w=YJtV}0ov(cznU$~#4d5hOT*w_Ybhrv#$jAVuYFATVprR98ljA8ESqOa9V{J-H_!dIwfBRO$Glb`Yh~eE!e7@$QDv0kKZ4Fojk{ z4fzoQlQP+f_;IcY6z#5|g2lw5njM1f=}5#pTla+nE*|!Z(Im@?2IX$$xkLAbW#l!# z5Zh`wdB`hAr5MEMI7-mh>Di4bs95U)s3#^TC1XJ-g?07K?d5u)V|+0r0lKclV+Wph zNyD0>C){{M)ES87$1vlu%vdt&ii+dd<>zBX9jvYW3r~7NpMnOnHcXRl;`2@X3+*M) zvxtm@#A7uS_K&EI&BUan3}L2nvuth;v3@+e7`nOSg4JP-#K)bFB1W*sJF8BhG7?VU z#N(Ikhr~>c3Wpj8mWHLYnUIMB-pIpsnC;`(6|N~Va+J_RfsEM5@;#(x3ZG1EQ;$a_ zQj>2eZsrC=^Kgv!xKdQK^@8j>U~}t=8WP>_*uaiT0U%TXJYTjnaa9*%a+9DNvo~^d z@*F^jRV3sFH9;L$wupqg+AfD+{LyV&6%nosi&=$X2&h&_0R9uYjY z#;?y5OH79z_zC(48{V*wvN9oG{kM}KuV?Z`Mxn7` z;Tbi3IGu#Lu(`NvDqkM-url3XaS3Lhf&#VZsa)V9{GSE!V?+@x-D*taUa^9B?<2icjWq3uDZa9>r| zSsHEtP_PCGI3dzR!eaqoa(f;KP)16{V>(wF*cu1NTYcbn75=>61FBW0W*9B71g~^B zp~;S#S=JO7UbZkNh!}k@fN3_8YL2ey7YTnNo(#o44J79{<=aEP^z&EAOhE0QG0JRnPud;HJQt z5-_=!6c37oBs&D49iYq_XcpzjGR&cip|O2Zsb)Bkmq&F308IQEOk-1^ri>7uvY z)aYEz;TuW{OXpX;d3SlW>&4@8vPyJLONs9QLg?1R)t~Vzl$zI;QTvv(KVF1;?`V6_ z0)>oOl);JoKfc>k1bp{%!Yc^JXs18zq2D(Vw$2wgV+M4D&T2Mj87_B>w!JC~rH|dJ zg*>wT1MEeJOe~zoRH9L}5lUr$_Fj|XZ8vU&@Tthy$l;{i=viiI@ncy@$qN5SM}Nz9 zakSZRIdoYj`dw>^z3T<82Bc~eb|P81p%GFp9~fFU_;{D#)>%WJz*n7;kVIQF$q%}W zVHDwL|00?k4+^rL9E4;L$2gZNF1tFwnrjc%!o~2jH8sLYmz>w@9*;@cb7OZKTxVyW%YvIs%H5t%0{&i6jw`)Wy<-0t?M@j95& zfLAgyW>-Kso|omjJn`W`XqH0VAWh08?CoX(f_A{-P02%|4P$m&((3K#_ZTkkE|XU~ zEnUq{>v*p+OdaI!NxQ>wyp%l;kbSvUe~gtMQ)^*u?GEH&$9#m1XFWWpvhM z>UtF>4=MqIj_}_3^v)rWlc7Wcw97D=#y3x2AtpI;HzXm9gHU`!cE})jXFy!~hJRM^ z1$1DbqIF}*|5*TmVvcBn8eimo+&5BI=EIsMgu43~%7WF$K!w-cdd4C1dG}HjDI2@ou^XO`0e|0>UN*1vqrLFs&vN@sK+cri2+vy~!JTEa?ZuOUx-sT#iRXRxkr4 zS_y^chtv(&*4J>Gy|Rj^sJ9-*8xeKh$C2||+9^SM+LVvE8Egr|&6zJK{D{a=Wo6l; znPL<3GI0bM$yhaFq`b7h2TGJ6s^J2oa;13218}AZmBKWu_RG@Jkz2xBR^uxR_Kmrp zZ6n@@a8-Lh-?m{ZTlfZ0AxT_>38cl?2E*_nUs$8$(fD1u?dt;#zgwzDg5g4n7o%}w zA;hHHS^M96DEuAWBzY#I*KcA6GBpEHSbsQ*cVIF3`NV*}ARX>^5LS@BqLY>)<$%8QEQ!Xj z)k3}$zrM8TRVTmMW6~-gHhU2>>D%VicWT1t)~_1vAROpGib9r?jUNuxRcR5@Yp>W~ z?u_*QnbwFJh-5@RRCFf7GW~O~poQ_LyF0P4Q^S3mT~OK9=Plh@%THyP_a60X?GsNQf9*yr;Sy!t^z#nPmnWV-Iw1AQv^QFT(3Be^me4kcn<#_|1$ zpapKZNJLGgZ|`PR_Ip_SetG$RKPY&yo^xzf9LE!!$~5dW9AUt5;!`z^tn?)zUWjc< zI9O>oHLUMsaut$R=V2yd@Wgo1QtmIZdE}V;yDvpR*Wa`-F1b`1mP)?p z4kE@_y-HRB9wIUCb}3Ty!V|oUN`dzGN1?!KVVrGQ>Ymjziy{yvB~r zsv=<}s8U+6tMm(!CsDWSR8T)`%W@qumF%143Xm~t(5n-*Od+@XhWq$+BUuj`!tB&Ex)*E5XFG0q z~u$VzQPRJ}Vy5#fA1XowM^5P{wIxkvHC^==n^%bv4C{-{<_un&?Z>36+GxA7NvDLci0sZJPi(m@uC zK}Z5Vsw%SE{`5z>COZ6etKy`oUk9>SWP5Sb)aC%pj(*f^IodRofncb7D&{fOp&0t4 zb;3qf#R=nv2FJaAhVtv%4B;Krm`C=;9<~>C;LoLK%R8%fJH_%FPIT`G3=u|gg*v*r zO%}DXV+YRyYT#3X9V+!jFtI~_W+dJ)=}jw>-fo)Y!nE%Y&(@XD;piEA#&&KRD}dG2 zn6E)mho2fTXY+Ys>%?na`cIASsaicRSiMT?1$dK|yX6)(_D98~Rc^Mc%^v3Skm%KX zrFUDW%RLd3ZId>6b|SdzMinJ3@;o$?ulMTny-6dL6$nP6wSxKyM*D-aV9)jpqB38f zY^#7Q&M($__Sj*uT9`6J%Z_98DwfvJSSlLJ}r# z4oI}$I3_i?J9xLJqaLA+-YUwyuU2Sp=+v1jTXMa8V(EkVR$AYC81bmx)nrtR7*Qd1 zP!M@^2d{@)gdwWI$jC;DJX9g;P8VGFB;^Lp&N9Qr#fL^hdPVN)8>dqRD1Q!UD^z-Y z8j1I0EZoRFb39j-UfgUQP@&bC%h+Uk=_JT=$gQo6tvB!Yb7^;+J)|Xv-86`^)63ZF zn70c?o*4#%74cSj4z*U3)#$t`4vW=*2hlWm){#OsPBVr~a=p0Qz2`c|wLoe~md9)r zY8tIQ5^4B)P9g+7RD^K~Bwm=h+a`JKRUB1b*gZW=&z1x~;8L7#%y8i+XQnRDRMucK zQ_b{AJ`yXlI-2y&$W0|2A`tQ$cQ?B;TQ3XkRM4W!42o#ss~B`Bks#Pu4_oc(ZPmBo@Kwq+a3VjN_h8YUUuH2_G_DwEj^<7`uo1grK){PwH5{_#D*@ zvJKi>HL?xOO0<#|SO}QDzZz1Qv@BPjdO7a%<+v=~WH-I*OyuKvCw#sQuH@T282$cS z`<8D1=dG;rHNDgRNY64xLtO+!qTJ`R2d^afnUEji1wR7?&40~Vc;pOK!@~m)TV0`% zn6jpA#P)eMj5)1p^Z7D><{~y-D9ugH)+ZfZ^sQpNcwpVpB%aHR%MeKRJ_Kp61xeP)1CdfwhVbHmJl8))1OdlQbM4no#y z^m(rZ^DuqH8=QxjH%WdFXpN!j*ll-BbD{$eJEG|KY+|BY0SNqpeEqUz#8n`F8gNa^ zF;4)@o`xh@?qI8@kE&k6|H|Pyc3eEkW{rz?woO?_A9swCzIPfAF0)7XIU@LbeA7YWT0If&JGm;ymD9Rt zpVe=L=3X&!-0#I3`jdtqggMT{l`|PGMq8bto^?=`akE1T9S(t8>Smr-#XfbdZlxWU zJsORsB}seG(5>z>=!-O499%17r|Hu_Tkf8+Y|dQlNSVFUn43128H6-E-};2C-``Db z@2964J3T9Q3d^0>=EkLTJ{Ej$ukmpTc%gS?zZTMM+pT&fu=B9 znGIIhdjk=Cq<~2c$q*d!lX;Q#AN6!6Gu88osV~;4;)!|`H}vY{L{VbW5V=z<&roD@ z_k{{$^Pc!)Und#{qsow@2|V==sN{XsKMeasAe#lX$@PBe?8er49z1oJt$6$#>vM-y zHfG_!fOu#dGCHMlIowfB$18S)nlYR|!ay?b6%NWN399QKD3H`YS%+?765{8kjG<{a z9Fb2|A(#`@otF)G)_u%7(0l5h=w%Ns5Fr~-T1{d&#^n2rjUjXhK>?MD<1&dcm$hEc z(IUm0wA*gPb)>aD#4^{rD6J)l+$DxRghm*}6r+I~VX^4Kx95~(`+C!7bk*K^WG|ZN zeVLn>|JZpXB-ng1jU9zwmSjieM9m;g=zJN)CB)_RgEIGiuEB1KITOI_ds&HlZzdW; zIJd>!V0ufY-!Hxo}^w zRF&F)wKQSei3K<8J7< zZ!yk1*sy0K62~GwKO1@xiVwO#*=PBJ4p=m0Lt56efeOs!QSm;B_W5=B$l0?UaY|&X zpjVnci1-nOZy>2DbWEHRZ;vk-y%b;wlN~Ef* zey^%pW?ME?oIa1u@yoexan*2nsS8&bKC8!rBTn z?1(n!QOUR>KIioL9J2t0cz%u$O@9H5LPx6=gCE0;O$ zU&-%@zWdSKG=yN0X06{&!-ej)x|>rPI|TCA0ig%00j>`=XuN}|NZ*e-JI;>F)1H9hlr(VV$NKNr`a=)(3tiW>5 zy0Wq0Sbu}M?T!Yu=fx0)Op}Jgv$Ep=pd$ZB5jFS8SF{z_p zp>{KmaioYZ`aM=2V2;g@m33qmV~NVHq{362iEw!((8 zhR%WpkRO%+fggH7lAjbd%&_da@yE@&{Uy}PMDu1;t`YP8rPu@%eJ_-0h+m2J9e>_m zOw#zwZ`a%IB%o169dDJf7xYIyrA+oDD2=B*8B0?XB;X&)57&Q_ZZLltrjATdiW!-# zW}{8xQT}P>oTJix6JWNnSD&20`TS0cX+CYS04EK3uMie7t4zmDUm=P8P-(kQ!bNBQ z6N1J8?DA7%TPj8V zUsC`7rx@11kSW|eKwCCo5`SRoe<1SuH+}zq7sdMjo%kQfJp31o;lIKu9Bl0W8=Ug5 zu)1M9H#=H*e>X|Zam?r)sEA`uY&d#q_4dV?lftUBj-TM#&{B3qx|ioNVK2+k*6uQ) z3E+tIPSJKxz{ODB5m&@C^CZMpSK?($XN`7jZgX!BFm{hJx#y92ur;@86ODXZe=-#B zHF{H3lgu3y;r>!1P0BFeU2WV4hVT&6rzIw+?9e--k)7$c7wq@JMDyHX(?}Ss;DC<^q)7L^K z@8fC5>h7y8~q75Wz3-c>aqy}uL5`o=`& z`G%!Me{fDZj=kCead!tv$xk#+!Z#g*opXLot6AURN7uW@=Da-Lg8LJ_UAgs}e{k+c zC)v?rw+uP~0FmrZ3x&B2BiV`);=l)rRtK1yN6*wj*tWYz{PE3smw&sP|3AVt|K0BW zw-GW9U`Y0#Mg{CZ{|GJ;P5_WR|BnSojB~O9Df0i=2HfqOzzFN#HUKcr1pvlq|6a2J zfTw^5Xm9{z!a0HAWDZ~&hkslH+X2A-?0;!?Aeh4jqNW@c3{8>2knd$2L}A z``@wuxbI)$haFgeeSmfLziZG!|?|6SzmztTWJbpAgdBf!6*fq?h> zUm|a;KVDbX)1PbmHRc#4RK<-z7f!-HOJ9YV4;l` z0GUkEBWe#5r|-XwwGN8{)`Pab(R=cq{b@ZZcyti$uyxsN)lqJzHc@J~m^Lt4ynh%z z{pb|p@7~=`!s^H0j|uAEmyy|Eok7Uot`C9&gA0AV=idXO1x*8{5AJ!n9S;3g#R0;G zP}c`;DN67`2=Z>WT?Lzlf{g?6)RpwM)a-wzw>5qoMU)Ct0l;;6^s z$g}^dr-x;a)4w>euySS4n30jrOyU=UOaZdJgMJ9@_Z$QXqF?<>fBG})b$nqGvHLOm z$FfJuXB!sCw~?`xXT3^-&$&eOKQXGmlu4P8CVf67;|(esKM_DMb#iPQkt(M^y#ho) zU>l{ZeH#60%g%F762JOJN@~k5M;drMHqySi+fYARUhQrS=Dft zA2Nu_C;k)YmyIrA5Rg0PkS_+l&=8^*7#1QaiS%2Ga zf$givLC!O7zq@?U5H7bL{y06wiV*4A!lYD0)v=FX?ri;u;78~t%v$?wLd`E46ICY> z*ofUYeTlIK{nM5ADU10f{7e8vX&rtg!(O2n|1Ad@;uq#JKT0haJ~zZEgy@?Sv@xSJ zGR50t`DYDzEkbd6#F!{FT<8a;gNvs*QBT+E^uj}zYZl4u)}!8COghwk0J)XO+gUC- z`$xnDL52Yc&Nw#IfDByXz=hFC97`Z4y>X9~NCj0mq^&fZ!1Oq^oR|Dl26c3keVFl* z@_?Rwo?C58$Lv5eZWd@cdMX-cK?Bn1lO~!21iJCuE^Nyev|pP038%b#uVo&tR3x zOc0Cuaji%zRTw`Sn#HH<58Iin@h5+TMSHV7hs`0oDm~B;IL@e}^E>)!R5}&*%Zr;A z0ciRM1&sj5O4-*#g}gD*CYG2tlJ{pR8JUKYYc--TF1>^#eTg*u8*539^FZ zR&;;F*6-%UZyt6uv@?d^FXeq=o-W}jszbh7hZ@S1i1IaV*hXctNTXMytDkE-jv3LJVs}B^LW{*bU@=P+_@$ILgS*{l=fYA6uj?t>o<(44Z#JCn zWm>l!9%&gYysV5ky6z3`oCDN;=`7N=+;&Nsp@0ryosWfoB`$iSU}egi%{ZRHrww4j zbpDiLbg3`^tXK47jQCA7LVRs|Q4srVUNT;oL)@BCtfj1Iq!L=bvA14~QdYVxdTQvi zHnY3D-nUF0$ z2YjyEm3hiWHmJNl4d8>9LEcTMOx+hEIn))5hm?MPlBbrLr zG@;3kPw{(FjmXt0jXEA^5fB#*ve4E^w26MMcg{Ik5J?UgzBhld2AjmPwKO<9TZ!Zy zOMdFhiaT~^Pj(O2SoX8HhEJK8gjLOL*(^NA?zlzD`vEZr%`2rasI2X`y`DsP_0vSj zrt4URIY2diS;R-HL~vK%#nPXM`3dDXpfQdN{)9>pcbuW4U$Vigr90F6k7!Nt@_b&L zcMiuIP_B{NMqqG(=mnHR{;KVPpj>hb4fvtbFMKiKJf2D|wV z*ve{C@9dGZBx`ZXFDk1g2kK5@yv(`f(JN>Q(l=-}-%<&;vZ=>Tnj;pN;-$a+3N-E- zWDrWTh|UOpY9#)QoZ~Q2$o^F;a~?Rt-5V~xB^zGrB8wDMtjew1&d7UI(SAb%qw6k6 zx1frU{=k|V^1gkG_(E90ER3aX>?=(xJs0HB^v3G7l20_hiuxgkSj8t{mF*XCQERpe ztwK;_Xt~=t%MzEi7@g%UyoAStVh{2S-iyb!3R4%HVqQK%26q$h(ZyF;h-NMJTjAO9 z=VnoS;%y1G^x*al-XzWZbIHc}CM>NlJd>dcuiwjo{wjBN6m5(IxXVU8O8+NIbja_v zkg}uoR8lKizQX-yh?v`O%aP|KjGS^7H$VVFJ?kFuk6jS4lKzL){Nxh+o zA3uRIQ4!VRb=j9}T!PuX*%-Bq!UO5TM;AJ>-#7)tKHNck>tyVrqdXS41}6ZW z{^^9De~SAsOT<)X*f5Wd_v#E%`=L)FF_v;%nFd0kl!A6Iap1s|5_B!d!r8X>AW~HM zgV9CZeR$og14fV8csl!|t#`#jguotOPI2no#2qOZ1L0~1ZD-a+Zes0^csUp0B%pof zoF!`|W3)_Od$dex<*IHqFFD@v2}ekQ$;9~3W#qR?GnWQ8wWAdxM$ZuqzS_1r%%oLu znSEG@{b`m_@kHts{TWkuMYDznMGHWCm(9LVYieSZ*7WZaJZA|=Ulfe~syjVHV{B44 ziW*fVtlC#T+6{1A?RtOY=-imj?{;y%69>>#MmbwbY0Y^~KFJtb%M4A`P4*=yM6c<6 ztNNDg3J;$YrRf$)Ho5J?VWlk+sHRsFQo@cWRwIJ70;~4o6JsQ?bWuS@LAHOw1F#jZ z*)9q>r-lmqiCLuR6lHXA?iHV z#X?sg*#KK}(_;=9xA|uZ3&q{urKv=-7M!xqa>Rx-bYH5?r8~9H3D$$T*JyhMPI!yp zoixN4jHw#0Tzz+19eQ=xh7a%>7)L*U@zL6{bP9 zNE14SdN+1ACmk-9&kgDQ(Jf0I$H5zvY+erO!~=-YELMGRS)kY8ONfS=9BcE`FnrON z!)9ksN)*nI%T=)LHDU^o>ZO@{A8e@v;HLA0D=-ilWwOjc0N$Y-x;(K}+`34r8Q7cm z@zra(p*CN;5s{VSGb8$#aDu2NtY0-1-Ief^IvqnGJa-FHzUro?VyFv9(FrOMv<(a{ zA{#x&Z>s-%7BPCGs!2`O1)Ci^TziWDBe+a+WVRm6TDZ{QH0IbsAIKTpWd-%Sub9qa zon5s>SR;wP!eq6Gkdx$xM-08Hsq(YZm+ysyL+>d4HuZP&(%hvK-8tQbzw=_q0a@n~ zHXk~J*h6g|6W{y7*7CNh{srrrr>Lb~(RWMs4Ek`eaFO}#! zVCD3zexz;&T)vw@8mw)-G9<;4Ke?qSD8JlWnv3&&(@id4;%J9;gq!VHB%((`O(l;5 z$%n}p=J#PbALN$N+-%j?!mzBU*pjwxq5Gj|Y<1f2DrCn8$Mlt^yKKleY7tNDy_S9M z_XADj0lSYF_s@{KopP?=uEOtjU(>Ux+k}5^1;BGn%nkUZsgoD9Oekv-3L|x_o}6Hm z*~kKP+^Q5QMk)jN`ZlG@1j90G%Z~jSNwZdy4|c&_`X;I5Yfq0Q+SIzJ%ybOGBy)^g zFzB#6bPrUsy1LvdK@sV=vX_isrMi(XvN>@GnY!O$xZQ-rZx;VsU`&VgDw=54LUImU%!re0YvQ8IIGha3#BGDn#N-IE2nkElwtdnXJ^@JHs(o3#(N}~yl)OS+vfIWd9|1^um zw=NHUsbC;?rIU>9n!JFH(p%44{aO_&Ue5=%<3pa(HM-U&G*dVJ%f*jt0A+f>PNJvy ztJBGT0L5#+$Iv6A%byy>y|l7pviHN4Wc0W>2%eVbCny5G)u}-_hg~y*F%!>Gj57QpG6imhJ#jXSmP^*gx!zRO zD%`mYUN;;VG}rMU+w5HsW%&p4^7&!RSmMmERW|Cf18Ge;t}hF0p_>5zbYB#6Tso|d zUqvUYxA51)bBQ*roky=`!bpA}I97C#`*>oF@H@r3q)PoD=?j}+{MA`sl_u1bc$agO zuTzu)*G`j<9`=CM^AGVW*L_8=4p4i(o0jr%JW8WGhorQ_O%Z3zrfUh}LA&`1WCi*M zv37_E`5Y^bU#^5WFpmal_?_V;tu=4~FLY`!{^B6ME7WsI#Zkabf7L93Qb5ZsWwZuoGip*W_! zxm3m&ITYDME0pOY1TC&+9Qn;J?Fr{ZzDIdM!eFwjWYXjd-x-z?aU`vfsWTNJ&z$%d zbK(ISs~(GUSD(^f;D;ygdpx=Z+u6Pctr~uHm?_RFyD)#f3B&I^n^3qJJAJl!)O*;9 zxeSNqq{d8{l0cTBb@c0#K|D^BYbq$+dgcxh!3-YdL_nM{g$j9LwsxxF@Dw{l%wbni z8gQQ;MZ`ZlaqNQE{W0kU`q?x$rP*}CtNN!u66#Jhk~OgJ-Fd7tkKL)zVrXLuS63AU zj%rgI^V-k7$`)EjVuHIwSHDpFvR*A++jIQIuASUzNegq-?B@5~)*sDXf}G4aZT z{n;92#B20yf6V^HI0h%jBzwH>X@tCgB~j~E+`%#J*KP0cn6_?$@~(bwOqUL39%qyF=9tY+-4dM>CaH?cpvXTMV1 zfV~&0_OvgPo4$53?sWVj_rWc{h0_{uF`4U_ZF z^6y`KoMb*z-4D~oD%oOe-*67SgC$XM%o4)e6II{if4D$8XrMwwARdc#kmhCF`IH@m z6s1i*9K2$KHa(6d_L-fl%GunN%y~3Y8mV_3KlWawI_q|?IC3g8ZXvCwB&n@p3KSv2 zX_6m-T7msJNNKoqz~gS3=gLY^_R7q2)KN%BfL3Qnk%woO(P2L3POgHxT(fq09{+sv z@v4n9O4sw-6QPn^p~yr?Lcu)TcxbVy2)IBek#-V=+}=D@%If*9V4{0;DAK27xIz@1jUCZ5>6E22 z(lN+Fx@hOqy8TNXGX#$StPHhB0E}c_(i01}t9gA?YDG@&ngX&y^=pv%{fKeD1_3~{ z7hDoLHLo&ledH)tJP>-~N`4S98%=#&s&KD)@xsNWk;V(1zUFjwRj{|06%^K7gGjqI z5`Q0wnyzn}PtM@(oltX7#AuGq5>5*?5wY1n2eIK|>HL~Q``W+FOi@!S(@WpKTr+g} zO+yhqyjX2FxvNyts|c%!uHZWp!ls;2E^Ld+EjP|!%mRjnX*(5l?N@WhGmZM-m+1}} z#*aPgSOx47Bx?FdWE7=zbMdCmO%i4d%E)Zw6iLqkxB^aSnwcG(X_nrsVoC!LbllPPvo^uA0v$j+PZ9`-Cd~bxnx27qdfkGh3D0jkohsf*X}UyE(95}1Mo)KHQSfJoq^58PS?;FwQ_5Z&t5i5D8S zhM{DA*fI!eK2|@}JpV2vx|oCsYFYY~N_~y*2~&ha?(#UvNu`3Ku+oTDWg$ME z#0%0u*nQVh)EuqPp-u=JQ*H($)CEr`J!IoY%aaXopNQ?wl3z5zGz~j#rjav_9BOb<8xA|V;07qL=-2cAtlGb1exoKN zHm;;`6^JhAI_r)-Zd)I~=F$&7&6lKkc^14)^}ZCrmIr`|(wgR%#cBQM*^Ah)8}w`m z$M)Zv%!)`J*!lV7{hhXz8Dv#8RCSkt@~XmkovNCJLW;Qv^N@Z$$ERKUX%X8z%#BKS zXQh3_`!TZ~j!7_AAVf2g$BjtckldFJh989o$1mNJ6~#%_+A5r;My=^!#-;og18Q|| z%aEr1+?w}JE&d{d;i=VKBw>8unSRb_(W%d7DNt4FXphl8g6>rmIfPyn(-x zcta_3+Ydg7Vn&_vPO-kZL^TuX^GOX{dC^N|Z2M5mrog1Fb;VLHUHwT{#eMwu-lRxj z&UK+2(sH9S(dRn?`Er2&yU05GS$Bo*cXZ3Oua#J;GXN%Pzly16g>)nGFDF_P1Fly`)A#FgssST^pexk1qVly_)YaAX<5eY-O&&phAxD5j+dFumvAZWJ^Nak+;%q(o`Jk{4KaR>No)hixW7F4H%zueBy(GM6&v=n zFEe&G7jP3^do92v@jA(0;hn~^3_NFLbQDBMTvX4gZoRbnB~kxaRF6_GSvRO?DJEhM zbjV)=mYyi?h--`Uy(@esgo(%GUAAHx8G>u?+SINLh zKjLPqFaQEV8Q{lV*S8>| zxUZsLhjy%=HV68;^;SX8@Vz#g)jQTEG$$IIy5%|(z^EeE+enWBcqg&Jqxjyu=J1(PRAJtd6edJPX?VMb(MDgqy;S zUtqpTO|&VK?)0&cXx@Ru>PUkiWl@xMmisQ=+R27_FhVa-itDb!8@3!d;IAj^-Zq@l z?SXcm6~Y>z3OG(e%D$#VV#J4OpHw!(v6KL=Xc6L?vvlB zi$z6o@bJ~W&y-5;?xc*0LAhbSvY=BejcfLco37oFVrH#Z@uwz4*tKaZ(RYtEP}nQR z{6|4jovJ`uo~O0Q;?;21sBcJ?=5o=H&+pR&F5^Pjq~&_i0hRI`V`V!W&_4-hIxe4f zHAW=;KiV|?e#i)WodoK|B^JbC|4grIpe8#0ym|hFf9t9Nna73lCtuelu`l`r+1;9T z`geirf5cM%;T*uh@*k3e0)6lQnS@aVm|p!K(C*))osJgv&UTLfsLC7Im@rHKC+C3w z(KP@l!1$}g0EVC0xPaCHtbqTd#9;hO5eqvRnbRtYFnE707@fU? z_p)L<;$gFDAN}Z6F=ThonV)v=WxnUYC6r|}+U55+gcEtZs#JixYL9w7im6%8PsXI`Rky`?8*?Q< z4=3*x|I+G`{%XEeYjL87Z}9j7{~58JIyu%x!UuG&>rVg0bKUObYR3*Jo6rGjGMrAX zII=#FvRtl1VhXwf0}HyAzTYwH_1rz4O86H2!2ZMpiZ=vMU--CT-UTdS-{J3+kFQ*| z3qI{po@7j~v1mu|>hAPXKLT1sd}n|o>#=}cG=a7Oz_P6);v3=$9J8K1r?>rUPH4+7 zSg=`0@1<*&RJ#yyFZAkQDkc3;P|l(MK5uqqP{q~z>2)KjFO=c^9qLYH_u$`d_Wzk> z{#P4;|9)rxTagAQ>pw*re=%e(pg@8H02E{Zcl+NR4*(uCPWHd4{yBl|e}xjj&v}62 z33d(=04wmbzrqQiwE#OCD;yikU!4Lc5QPTX4*;z_*x3Kx>#y(v*cX`Up926O;R1sB zTz@SJfIsv=`t2uIt~3H~#T__*ZQDALr~p9ld{pO#|2d zzlk@v*tq{G-e6?`aIpNh>WxHIjSQJ3eNqTSh$j6gisrVqHpmc;%P5Y^%gde(%I3CU zkRHb7`0Yzs-y7md_d`RbL)$F(*TSXCQk}BWhqhPp5{O}}@8z5Oj2k;r{UcaRin|7BJvDj&TO-Se#EYBoH(JtGJ;G*!MTC?z`;nE+`rh z8(EOZ&+*4A;sqPV^GwZTrVRoZMiE9JpWmjq1fbD>vkot= zUi_#Jg&D@&7M>cN1p95aV+hVtXI}@FlFGBv@$pzQ+gL~fGUf{~I5&RWiUPr*%qXw; zWR$)~Rz@i9d%XC3v4tB=vd35Kh+oCd0~%meZT8u~Xr8v6da#_|d% z(KraamJzzTUszczk6&yL7Q|0k&}AO~4v<0;=zQNWHgKGRPt0eoY7iWo4=^>5ybZl> zDE;~m_+`*YDqm1&znKT-Z3vctPcSAB@;}VmP%PiyAjf4vB&O+w2?#FyB&v8)Ny(zC zAXrhoDMQ1r>4mj3NIaeGIly?{7(x4`PZCMKBUM3Mqxn*XrtF@9e(4X=gC#3`kw&5Y zb#aErfWqjC9!aw@33Na}!zpO}@Nqhrj1{+zMRT(qw*wX%uyIPwH(er|qESwC~(qwlU~r@D^IWzRcV!9|uri>2G;K+$*2>?`AXhA{mK# zCqk20zn6%*VHE++Ab6UoexIo^uT@W0gT5RJb!GMilL6!(L~>MSCed;X*$*ZAW1< zemvKq1mPoW3$x{+ju62}z)956bzY;n6kt$&3F&@;O;3IBTjbGQU=k9#piIs&7fiON z0nc$ickv+z7s7CYX|>m){lcv#w!>TPQ1bj3(b;ePIK@m;tBJP9Z-G`4c5_p6huPJx z`j~`L!^4W2<4SbbMcn8ZaZY8Z-CP4l6VYxHdOerPKVS)qeWjBmuL4!|>g7KrevRl; zddVC=b6AikJ?w=3$h5`wXD+qw=yK=+a}uTH+?S^c1sYGAnF8m zUl!kBd$HC%?6?;^PIiD#vY~i)^-CPSu!M567`8eFZG>f`hXj&X`w$F~H|Y0wQnUAA za$G`nRCb>_8ip+^tzZV7+af8u$OWl4bYGqcnj<9_x@%;K-!8M^uVj`pa<*heNZBcs zYu3%O9?wB~#~2oxwh|`8Euz66uZ#3@^bwl(NH6bstF~?p!?JtUDf)upYHK+FjTNZ{ z;j!i;D)2>mIl@+iqaeL>n|aUm#9344@f>+K@EI`~3^`-S+kFCj3XI7r2; zPj+_RtB_NiRQ2r_*VOi%V{I31V6&@!VKvK`;J_AF`BQbVFMI6|Ymx4Jz67>p)Q@Y= z+gH%?U@r9(eo?-Wf#yTWAAviRG5$0950s1X|XAgW8wxw-0EGZ{j$GNbzm} z)LO(p%=htYaSVj$VSoH?yA(+RKiD@~x)CsmAk_TvCpDJKj=2AOSEqYVGa0~q#v48% zVlN98LCYL8JF%$=!s*0iXNpdUydop6d={nW0PO_VM_TN>{aM zhL;&51r=E->^mD`1q1P2b@q(VS7YqGfPg@ZuLa<+zMKbm#wTVQkhN?a(o=86T>7Oj z*fOduWC`tZGgaadTDFjCr7aa+0MVc1T=|27)%Jg|T-R%sd)(o6F=Yoed9-Th*|GYt z9Lx>2*Ji!!HU+{R<@l3^GxX0N3EU<(#)O&PsNUH&DVxKMi@d(0YwQ0EwR3wMs2CTb zSpVpRQH4A7H;MID`L=d)lvc_6vZo16Xlk6f-cLNCm!yYbC^I8%#7bG|6S^?=!*6K7 zYaI6v^#Je%t*ufBc`eUmYs#>#`swnN|ICH&u!VV$g7~5i=(PF)p#!#5ZK23l`ld!L zQe!C<+-uia;?$J^RAefx;XY(8fV;+pp zrdUF|{3Qj19QadBbv7FQ_A{z=dJ1OwYo?l5*9jXsUmGajfYlkY_C*`#wMzshp6e;L zKfOE*3_`nG0;9>lu&8&iEq??xx&8c4iaA1+y_A-jKO+HcXLQ3Nj*X8a6h_oOpZ6 zn^Z;^^*Ad%F|TIA9ywuNl0)6TQ@e8=YLG z-6}hK*H`Ezy;dd5DIW!mA;q;BSm|8ZaHA0+6iu|0@>Nr=FuWXFM6D0a(#|h=O-`|# z6mg662Q1%P@=m=D+LQ5ORDR>Kii%@Wh8IDLB*U1i;Oa8g%>J1Ts{>#qrsxc)RHNFo zjSaoOA1^Sh9K|J$X^`=9SBp1 zQ?v2rr)DEjdbh{b@uC|s82*-K9Kg>i%c5&3bpN1WBEx^uM4D8Qyw*C^S?r^cFRu9z z;0jA{p|Y4`S9mT??R0*qO#Ztp+L=I_yH~@r-!@d}*j5nQr&2c;B>6J|lZn@{juK7R zUHS*-rIuhD&7tqr23n5wsePS1lNMySWJpAV=L^|f+xNn`@Yo>NV?}O(q$4`T82D>tMzk8D2Ekzifc(zIJ>C(D8f+^ErCI6^kSsD%&$-d9-G5 zp{)Hhs5GIK^t>Q}e+>WF4?PN_d6&nQuF>{Y-wv9AE0gXS?t7i~(IcN&rf||p5~509 zhN)k4ten75hoqTrkY~sXXoXZgfbnD1wZ1v<7@RKC)vT^bkIfxR%iKPXxs4!kqEaDL zD&Q7V@0cz}{sA&9bbj}2XALnU;IOlWrccm|GEM}Z?!wlXenikm%CWif;LWtBFlij= zA!eU!GW@K9*Y-$k9MwIcsEM`Y`kv!SUJZP2m0A8TE)&t?W1l(C@~XtzEL^!S{4 zr%-Q;5Nv!-t4^7KoQ)_|lQo1A8^rSBSm+5(8Zs6aphCULG-j~Ua;qBZ z&;J#P1Hbu!ktRQ!JPh*l%^Si}^}L4I*L>d$EEu!(U9fkYI0!aoFG{tn7aX_4JVHAs z{6b0kIlW;D9T6x$zfI1ebQpdFUmL0T6}?ZNLtV`QOL4e4Z##7SOqxpyC$)%EhDz%S zot{8GPa6AsCRM#if+eiu-B?Q^{71O1s6U!u!nN>2XQfHq!7wC4RsVTKq-@4uQB@At zmYM#`wK9rUBKs=^oJozKzu7r=2~F@5%`-If*l!LBEM;<+8JY%eHW9Xa^YYH1IQIY$ za>(h+5Jh)yPPo~Htfbr-{=AcpRhbV7Y`Hmr+xo!cwk$SnhmvpkmFYu0m8k)^L0EC? zp8<(0NE_u$A=Q=k{T@;8GIG@Yj9Xc51SKOWC1lH z$4a)9VvTj_pR7u^+TwDVveV`DrC|$yv={uDr*f2#S2!0})Ci)z%ama0R88hk&wu=1 zjJ;!YB|*5TJxOL_+s?$sj&0kvZBCMjZQHhO+nyLZHYUlJIcMD;=iGC@dwL!b!+|vNM0r@DZr0V5gzbs|$dFB% zq_giidwk$TS_Kn)^lfK70+bPctBy0y3yP{8^<>jvo&h{cc1rXm`)0Eq7uo9ioB-R; zC`AuH?x6A=rnib?=aEx2l~my@p1nJ0e3YJTf&nO9xZkXcGE179CS@&|NXZK8T*aM* zVO8J4*t=Szsv)TC895iom7w6R_g)29%*-B&R3$|Px_*Bnob5x{!VjNcGiA&BmWCd) z9yAP^hhm#z_+S^| znN0?bfCt00Wo_>C?fb?Xe8)nCys4h4n$?w0a0%K6ndv&IwmZO~T;U*21;edYSw4AH zE~9yxZ@csS!per3s5T@%Ih>7f8M$h&N#wN=68225-X+jKLN^oRR3T_t>s+HkGT`Zb z&~?jf{Lio7?)@4{qFjmj9+kSf*Q(VSsj4;6d&5t|*$QAzp~hp=-WRv6N?EkEi~}r~ z&;nMH%@h>XK`nP&+aO{B!chr(b~9m+9M_A42%=b>jl8CZ%xl|*an48W_+v)7zhWqX zO4psYEd-qu4%lId`TJ5}G%UJ3_8X1QW{O&ep!4zT;hb|%6S{-ZqRoP_3MDp$e&fmo z8}W@q-ldPM`B0)EmVZpSx=7q%J{|BcKLpe6`GXe4Uh;nddip z@BD*s<`R!y_>d08c`lO|&=iW& z=2m*e+Y3oj9qqko{5ML?07)!oq{o^81nJ*h%=676}dwd8~sTJ|}W zk^0Bj%7@Jp1WL6?)mOBh+A@jd1>uTa!d}2z+dJKaEhuf_@N}=JLfQTNpd5KS5C#mw z3Q@L8i#LXb1ukB^L5ZzZ5Sq)wTsPj6V7zfN;z!5Vm}?hHGDnYxr@~1~lWUV%24gI6 zAyPMZ5kp|NnR+N{5|q74vT(_Th92}Alw-fHM)|jR9u%+a(T;7G!60I$4Jb3cseu6f_XUu$}9{S`@K z+IOpme^Ha+@LMHRhCS({S+)Z0o;{oFGLxGckBF=7+1%!uhjvrO97?v z+ebbo{&vN}QbWD1KQ8Q(BJW$ctz5O+zAs;?u~DI&I3(2}^caY8DNG+;$_w^OW^?#P zvNlmwYR5@D68Srsc2(v_p5s2Bo^yx~sT;N~mm!tP?_Z?e7t;8)4ekjfl#oI5l*VF3 zSF-6#UV||*4_%)d3C|*$r3>YLC5Z6hUQz7<&*wjopr6rT*~f^Dy0-OGv1&0g#>OhK zER*iv-NOwP=0vi|KY$z-?!CmY&X(C%j2_qN%l|{a%hc#G_p@}cKk@n~njxjG%x*u) z*xKi4PyvjS_daM)^!D*6dFUzwMrH~@GyTD#>V8JzcS)EF2?s)&e$HZmLxCjY-ahkD zj78!COrruKJo415pNSXnGAR%%8v^6bLaZ%|TsA@}3pX^5x2uAVsD|y#*6B#&S3(}w z4dbxxRtGWguPZ9zV)&YcO8|vc}Ce9^bG~C^Q&5@ioP&H`{Y9zHPAag`l?K!X}1u(puqyNiBsb{&e309BJZn z7d93oZlCeL{sr)%4MKTC-X$q(onSmr4juYk3N@s1<0+NXgM zn?t&dGxjX8u*mnePU92*LRj9@K$~q@_J`d+b_OB`I0ufnL1)Hvlsz+dcE>$@7m+i3 zm1Qu720tet(9SRMRN>e4r%fpEY3;Q6^@4y}TLIQ>=>F`y%JwB?rszFk+r2)#(G20J zl->bAQ%b^xtK}B|5X&zqo*#od`-DiE7(mxGwp7`xgVgD6Bx^<~bOwH@m%yjSl8Rly zi~YO!#hCD_G<4uva#uY|*TB85G%seAZW0`0cKUE&!}lO@cn{6_?Z9MKwOAGx4E~=( zM2^(7+Lx1&ZJDmQ;R}ngyDX+%5%P<}4+YB*fzS~v63cpxKUyTfY-Cd;`RH_^1p1YT z!RYg@MqFnJ>T%68W7(}tou6$;+aa&JtYkn^0^UYLFh0&43d;r|HxC#+>RCVF6FrNA zZu179_>Q7e{qZttwzo7N(KOJypy6^2tfLUCSqeEbD9^OFYpj*#ty)eT84$>QuYQdS ziz0{yOG1GQYeI_?@EclyS3oBblQkTmrnVb@y@~%eaqpjn^D$TA-@tb%rYOtaFwe*g z$$R!eez=TIHEt`)>g+N^QBH%@JyVA<kwWShr7<%Yt6)5cCbO18r=a#ku$4MUTm}Sc8z07#hJZb zYI@Rj_5R4mPHb@?Wg3-W`s*!a0}o)wdK-RZPuFgj?5Icunj}v=sw)oVa(M=-j7pHa zY!#7(hO`6DVB|)%r)^yC;^GNx17}r}?gFxhF0q8YuP!$V?~~WOF;qJkre8d4pttTK zb|LcNFd-MMqt=mKywH|wqWTYLS{5nvkZ`ItW}#Y*4K^E12UYYnP#U53^TO3Fu1H>nmnNJ*4ika!Cc?eErnw`~XA^J| zUTh`H^G0QDJF4691)>W=0 zkKG{!RH+b#3rF$Shbq$skr#{Zq54Fx=n!EqnQ0n{Uu$``U)&?8j3lCtAR-Xv(;k_s z*{)q}sXkdY2ehFWbLH*4kN_TkrSNbfjx0PO_g7{rOLjB#H(fxIdksjPJZbD7bSKj7 zG6ZYCXItdW8!kVzkW(sZ441sii0D%5}cr5q&p@ z?L*v4A+-SfG|O=fbDB~4%RVc2u-PIrp+CrNC=7vDy58rlWhIpu>mWL=4~xUjv-8^` z-}FuEbnV$;clEA1HOB0TgpuW(#RE==eUE1H2Shj>ggxc zPGXFl2CsAv?&RB?%a$C7g8_ zmc3~Z6_F(nznq$p7bIKSh<2{ovaJ&hKOGmIJog3(COp|Pd=NRa@kI2!;)2v5t#vd_g3to zwhr04-!h9V;%Yw1>Qh&|ORA6NqzI`}6@gHPFB%Vn0KwMA&y*h-fNw5f$KbVF^z562 z(4qDD?IBM0NAIEh0>{g|=P%u*(l4H++{UV;IlLTNo7IUptUzmr)X@n^;>`7n0ZuW1 zc)+7bbs!J5Ey;(18f+KP860H@sBlryQOrjHcj|9x)ySbJe;>P|!5cun>QNrVI_hfK zzH{cuSB;pW*^88ABxefH4#RSJqlHNfCk}X=9oTPljvm!|2*{BotEpICUp}n(FsDW%8DUxQyycwpvs0OZ?;#__25xi}mE`mAuD9 zG_`6Hds)CY4!x3%Y=lTh5Bp_wpp7=U`2%NQ&_sZv)$*LM1KSg`6$JX~%^G`cK9_UJ zH0ayNA4Zv=0d0YVH_Skjn`k*FMf5<@3rL47hChe7@cH21pAQ5Yg~thZxusmq@JdLI zr1XIx3;kX}cSA?3T{1lB4Ow|hcFeIgp}yvIWC!q#wRP?CMC&5Uh1GnBj@-j3IJ|7N>-OV1dWNMZ{k(ZWD= zaAXAIap3R_Ao{z2X0K0$v@9T88B_!(`EbXg(Bp}p1XJnvBr`A^=cd4tQE}OimE>5` zT^i`p^$L)>)SeNH(++dTcmA6-lbVW7r%9Ee#U;v=c{5lG8Z~1+h8#p*NoD5lA$8ob zPP!4wcnvl{y7$Q1weNDcwlvw6yT4|%T|&G0unA`b+k0J#c!;9C$+tVGI9j@kIKmfZ(`2kd){%kO?len`lrIBkv4itr} zIk!K!@jd2NcV(%5vN=oPV}qipC@8Vr*-6e*Quv0AExeBSXmpBn9epRXP|mI#ny!%i z3-g$F0qWtz@!{<;qR)ZY3iZJN_B~T=Q?p~nk|;S=ivpp9P3;x$=gdl!M5EF9*{)_T zWm#ARN25sm4CgOmveP*pmZ6lEFyCUG3G|XoVPn~xdVHm%)4P#c-+&Zxhe`TXp^ssw z%{D1JEKJ(We38G)dT-wq`onP}SCetjNcUxO^|NvXknWowUj^;N|Op-r`uyu?i)>KTRP1mJ`5Tdrr9hvYEa_f&YA{LVAA17T9ge z`M!c?xgIeNpIzmlXOGsrxxV_#*nOfQDO=}7!7c&-|L$#B^m5E{@g?tsRjgoVu< zx{SWt(fS+OED53cE0*X!PA<8 zSo)J4Ytc!D1Py(He^Q7~c=k2BVI6Pvjx@2P+QM8R=OZ=(sgFR#3tMPrY{Y92+8M(o>=;r6+`UGZYXrR8WjDgM;yxd$!ei&l;Gx_P>&1(Lg6psW&6^h|}Z*`ye33z)f^9f6z z7#}pbP-K8lY5y~*ijCk)h~{K2hW}fRnn3^JgK{U6MuDND*=foyB=`;-WG9wZYpp!Y z@?{4COvIiq%s{b|Vw2X`4wUB5k5q^58-^QQ=C+TE7l~VbY!Vr% z&KCEl$~UOAJqEA^Bl?9dteRqwCsAyPMe#Hxc+9=<7mmcbwm7)=<;&UAMXuiuCvO|$ zbIvOiMhS}PsFH;!i`cjgnXyPb>6RbRtzZfI5x=Zp|71Shu9u&8ZDt^+Y@5);V2kxY z_f_H@-q(w9HU#88MpI*p;y|_58CfU5sB0vNbf*P5dyUxc&^ZXfp+n3hdA}a-7onGQ zr>KO*Z2pxVidq4IqwBZfQ^Bl%i%i1b6p~uU?K#zUnZv{WJPA%9bMgF(%FL-1l5VC2>~G#MM9}JN z&*M0$M%@x>4ho+TZrWvKUa#K@#nN}$7Jmj;5&{#24qs~!{aX5+e@o#-_5lVwde7kB z#GkZlU;q(|hz_MeOPVL)Sb+IeA*&7NDtD~Mew`MH^(|HrN z1lbXWGL28+wIi6i&Xihd*6Kvp+JG&a98=ZlTxhKkc^|3D3h{KGr(zrpxnIt)?fW2x zP6?_OUS1YWKnqQ#gF!<_$i>;|v+}uyX(zK!VNA_uRr*&^_LlBm4x0DY6{4U!GS&LC zl05q^S9cPEwrj&OZB^tj^Y(~zXk4_|I4k?N!^2eGwWwHj|E*~Dkkm9`MtIH`RJkbK zK07)PMkW^-Pdm^j4%t=g8=N6<( z=Q0;{IJt#**h*1lGmN@B>1m|%v$Tn2AF4%zX>_*CV9)3;I6 zb#Due-e9Wj>b6iiH;IwT#JUndW$K5X@66kcps&u_KHu01?Ca=e#M|IxwBQ@X$Av0U z0qXQS(*GQ1v(uvMgaKcrW4vg2SKVO2ci^Tpo`h;JW!{l=8?h zqt-c*V=8l#Xi|cq1FODwwSXZ1Djin%DxpPv6MQbgZdnO(>HM^MBeBe_OizzLoN1-w z*mpi6EEgO;yDH-KGTsQ|dh{GP|2{UNpUo^lbTRJ5zNnbou4>yFxP3N?5B`Gor_NA= z>H_a?wUhcG^z}C3Im?zQt#@Gdx8lm3(D;0ravv{1V_dsjA3i}&yRCtwzukI00_shf zG=W8X7=_a4#K^wFuNW?xF2cXzyMJ*s2@ya2i|drafFszi&DgS;Mov%Dyew@)9_wOf zsC^uku~JKu%_<1YIxWA3P{^*3+U*sU{dFcEO1X0DQ>#(l=3%e6E@sk~g=k?(y(-JO z7=tTu&^s?<)!=T_edAZdFl;{haFo#Ac--zMAf8okEb4aF$-awCnH)~g zWfos}Kwng)t%iTT!%*P*qDTK3Bt!~iyYp%pH?RUjfIuJEYd^HTB>X&>wM-&?!?NpKImh0~`L$gpb(Q>mDY>7lBtHB5TtHx%93N3LK zdR+V}{Vh&6PTBBRhqtMD_#z0&#PmjvfPCu_NMXKaVb0D{v_1;8%7^OpV{va$_gi~qLYp!+_p3I8lT^V_vz{DZdF{c)&` zR5T5Zfm_pMcpcRfZ3admYKr`)&Dt9wkAag=wJ-C@j4XulD^u{(irq-r{L-K_4Y{_6pgg3(Tp+r%ji5X#tEa%VVy7d*IGPFTA~$j=%Pj= zRzG5MewB^Sh3PWwyWHK2Bit*2t*Ot7-7$vpU+n3mEXB<%`BGLGR^aC_Dk^X{eve;M z9SVPvdS!QHR->TUqNbHv3K6Fl2-(^gnV0Pw%8={pBfDX6C~J6pmh@}{$K69Q6=6bD zfTaDgMQR}~7ON`j3e1NE_c)Dt<1Gt&Sl$-@FqXy8V-o@?1L`5r$$KkjSzzDQb>JzK zw6%nN!m8K7lb!!{pMS-_`b}6RE79rkhCu6MGS^bfH`iu3o*CxLYS_3bmDw^SuWv#bhX6?(*H_qLvtNp79BCi*Vwrdw*}H@@KV-V;2S(ZaMK9I# z=Otx8R~?8wnRj5!LBGc}ZFz-=sq0acM}xQpY^g|@l(6kxo>(_3_=X8$xzH_=swkkc z5Lc-y>=2ctNvpRP2!L7A73)C@k`Qok9OQV28reu|2~L-SJ@zz}k&zntEh8I__qcK< z*sctf-jK&jNhtg^y4o20oQo8MjQBXFTMw<^!jpBfbg&ey$t)xH@H%%QVa*E_ZJ9RF z`rdwEchfuxQQ_b6;AvTZV;~G1kVu{v*1Kzy=HqK69dtqW{dS~JzP)vJWv7p8W<(*L zPd{yl;UU?N&FM!5NdoNC*k8!RvK-$3QI8kdBlJ6hf;5;s`*^jqi!6C{dOzJMss1B4&WpT$RqK(Ht>i z{AUn7(x35T(Z{{15LK$~2NhMR@)%#k?9RRT(?do~6lvL>+;pxI^rl&hSHm#3o>Lb# zQj|h!q&#^i^ZQJ5T9I@L>7{r{a_fnM_+B_ZD5InyV37*%g1AAp)Qqrg5rCN=oBGc) z+Xez|eV3#Oi}9{}|1~>mMfYc(t+NP;#~}B%o%gC5gbK-LJT{+Lp}uKuu1|KUwI}J$ zE~*rXNa0Da1bTCod`~qaNuiSIB)j^EOeKuKu#jk@pv{;t&9+X9=a=^7^dANS^|2$a zZ)^kV{4LP>7rg2x%#RJZr~h$f{Qt6XGBUD$Y5q)XjsGzr(2Q*VuR2bt|Hgp`+F2X_ zuZ(j4#m33}Wg?_y`ce)uGJSah85sfpjRE<8B|rfGCj#VuS8=la?<&r(rSJbY0wi%F zI)fikwNO8GyD@)cz z^qbMn)LM&$xvYUKz0Qv8E-!cS&%$H-i`T)`#*1_g-BUlOiV;#RPq~>lT-%WkrpgtG zN1rygoD#FwdW#UJ=R{+@5;kcaKN&sWbJ>Z9Q^x3?e%gDdbaIuX=H2?q7ws6mGp*4^ z;KM3iOUKJgd*ff~XZL8LCQqBvd03m)7#Eb{_MTwltYejSUflA349L^paN1+3yN2v! z#fHSAHZ2txtwToybd#JwycM@U0ouQ$Zn;()w*7ZnZND^~(>t*Uf2!)2Ubr5i-Q@@l z-IjrqfsX#V2?=vnCs$uOPI%kk4_V;p)gPl1J^k*yo)gY@5wrOnOZxYBoYW6=4$Rkx z>Aao=msbpXwtKhndwK=CQ@f;7J;Uy(7rVZDdLH&yE4X)_+r}@QCc}Hx^6U-~ij-f) z!#%xo)<^YsF~3eRoI5diwxb%>`=?RWldHIl!FMpTyq*!_G@bl-22!8isAL>dT+D) zec<9)+@%&Dj?M~6&Om1(>kxco8|^dXOZoMHux^ru{*MpU|GyOUzv3qUhX?3?WK94Z z|AjUAC-h|hVnJ8|U(!zYuk9DR!3y}|O#U$-UknM;m!R`M&V6wxEME@;+dnxcfa8l9 zVS{Gm}h2vk`|E#kz{S$mL5(1e1rRrma z1~C7N_0^u`AM3*MpU1y=6qc`R{)25{`6m?p$GCj)CSTtJ@Wq>Oe91>yn7-n%azL{J z0EBG+M5XLs<%?nY&we<*_?9oG1RiOVTxaEI0lm5qF$bW@fzB>Ew zTp8onjs3sCElkWDOzgb8&`!>dCI&Xp?wJ?f9@?2pT~AlsGt4*)486UuT1Wl{1dzY^ zA)(-eK+Ok9jcJ7~QhO1LL75GL_2-v`f#Fj7-OYW?mgUXxLdu5s;Z4i7x(k+CRvRmw zRm(+3M(aRVt%1%Rrz3+fiLQ&TD}t-zJJaF2%pH#7maHAu=}AmMp#fdVTp!Ye4zFI6 z(Ft)mqWm1By2MKzqK6s)-V}s)wLS;mr#X)Vn8`21vNYs0MFg-5{u;Fwnw|ehJg>AiyHA=wh1d{#j~$`&O-iH?8YaL%d+X}zkvsk-{l|U;<23%Y zHtutfiFV8lEoMbvHi(_raM%VTuduQL&NYNkPw_m(+{@MNLvJiV-rH<1OV|qe3*|~R za=*hEmYx}juROU2FQBC3_5bkmKF!Xxp2N?zE{d%W%deSfw9vbE=^pkv#lxf~Uv5KT`4TVW?D`F8Qyie;FbFDEvt1Iyx1lu&bMb84rcoYH*#zAs*qZTuemZhg)|_rSR; zC2XGQz14(sES;pw;Di*>t0-RtBn|Nh{kW#shOBPMnc0|A`g=7CJ7@YVDIB5~j^qJl zRmg}>$?;gaIJ!8!{Ge4E@|Bz2RO>q}PEk7s>IuW+x{GtsM>R@;vpC(v zt7L>RdTQwx`16ZG&{YcIr#Yk1V~i7#Vz5ui<>Btpzvr%xF0RthQdg1$l%j_f<2y+S z?fs`l3w|-xQNH}H@Nv?f01y6C1Os~zzY;|a?W zAg64nyr&(vnlGX+SVf{5W!iI#Vh(py^tkIr#oO3)nJ;J+6>}8SDrlb=t(Zlu0 zrbqy!TKHch+zFC&lYHslHD39b$2@M4JxaW5aFfXo3vP2zBNR(%l+h`HiB*!Q*=6%t z1skPYrC#DsK3h;eUEN{?vppuQllE;lX5>l7ZOHO_6$NzPr)kXPh|1X4Zmx^dA$P8sKkI=93gO`R&;{P=_Tg12P1hqdQXw}H12 zw^Fwmw_3Lj?o-7y^1(?w<5}Zi<3xwY?RPFD{>TVSN#?sFcd2d<`MIHh>w)4#4Uh)%W{_XP<{OxpmwQ)Jp}QP ze?p;5!53s*r~k?aXh3}$t4wbbcNrJf)dxS16Z#Z!itdU8GcR<`t~K1U za#@<=3%%Y`$Mgtb3yw_vF2eH;c~vuKx7sv1;Pl~D((8;MGsiVK4XuuLyW47;V%u{m zutl`hbE-Q_AJ9Z!(t$MR$Imii0I_xN zF}}dAyR;zHdhSP?Sr;N96v~h@XFp@)B$=8hx+L#gC3d6yRDyxiB#|5=t~?RsM~C?N zRnGFXZGIEmmJWlV1(TuvTP8IN2?qrOfo^7cH5Z!EvFY*2+KsQo znq`z@$%VpBg5H^9=CeRl4MXMSbL&&Zfgl}&qFIm2wnOjpd;NZ9yL{?O!}3Gr%-VIb z*+nJBt={u@)MBpS)9fK*^rq~yiHSwi5^UeRu`=2ED&Pi)-p;|f{J_YMPSM`CAJ*WR z88DztYuhV@!5S&+xVCFcfc4F#@2>kd4i%Xdoeqa4Ech4*4EXY^N3fC18_++$jV*Ut zYZDh>Nd_@z$xQ9SnxU)^(qOQ7dG^}?H!?En9i6zwC;F{bTAaL6GpPq8===pMey7&@ zs;m+YmhyJvw5#ILXJB{P&I@jIXhZQ#-1GGM3*3nZQ_<1a8wsV5f@h5$9j=^R%3ukQ7nIIa!VA9mZS*e2=uo-)Je$8SM zqh;Yda2W>MlJ0OO>9N*I#$md8Ge`<2&M*Vf*T4`qCWuOfY-UOBY$ENn> zA1m^$M!dl5?uU!II?0U&;)7~?m)}Kn-At?v@y%&9=NTGlWLJ*F@d#lv-z*G_cF+AJ zlJ6Ifx=jp{Kd>gYS3QBEX292~3(Gt66w{4mnUY9Dpp@AP3q@voxz2Pvi}-l_5LLi! zzlJfdxf~?*k7qghfOc{k5{jYkN?QHN)lNn;(XE@Ce&Wm)4AUg(k=cKg^D{^m8e!?3 zvN&~p$DdIzkVQ>SDo`b>GMb~KhqLOJ13+0g*Y}jQL_0)z66Sn1vdV`zJk>q*$4*dIOoOzlfxSOpSL+?Mp<0_<-1mR8&W;NqXDs9VECP3dtJQOWu2Ezj*p zs1!e!^e}C5!0$6h`3G-KLn{?2mRT|XkbaYXlL6;hkoZ9{1`|m$yT1ot{!L_~u~16{GRQT4#rst}VrNvBskZ#q-bHxs4}YxWm#} z9tQBYB5RvP+t_*2DeL&df>qL$-`}tFw!bdUPPAG*s(Yh4!>e4Lu$ZFO+B5Gb@9L+g zbak$^CalJa$*^d#a_G;eRu$Y$c4e>tX4^R)?7){v0u!>6hoeSkA5qV^Zqh0eBjI+% zcD>KikB~2^Nrj(Loa1c;I$28E-Bxwb(#vJ1Avcp_`TI-Gfz%5vN5UMXn~9;~!?7dg zp}J!~$7fo>!9il((7~`ZGDq(Ek+z$wqfj;1L_i2n1E-rJG*3Au@}z?aVNP%QNga)+ zej>=gMe{Jdy0SS9BU%O*E))bZsTgR)&)V;9hMq2hN9~rXTR-eJ<;O6!wBtLbhIJe2 zT$*jzdSseSXdYRIt=pZ9WglX?xkx0 zCkvIQ5fuzgg~1*L)q0)J2gVhdDh%(kokN5cd`*X!8QEMtQ#a6>eT0k1e!gvlUZJElpxIyRL554*n_Kolfsp3`&*9{MSRRa%ii& zu29!@=qq#K-$r&jn%f_tK zRY%K6w}F8ldv@UFf?TG+NmsKlABO8{BMNx zBqcF z>yQeVK0^_UGF2SuMpDy;3iV-=xGOoi9B%KvR<0t?hs)_2-R=ReqRX%Za@#atr&qob zIq4oxfe{|XQy(BG1it6_cFo;+2Ubi-om(0k{!hI88d8qxzACE)i8p5h@1GpyUUDT) zC+*H&E=H-d1{D6pq%UeeH}_zoLqHc(k7DNQkvI`a4_4e_=yOd42X9ImhsLdnyJX zPgfy6p_4L-%uJ1Lt@TIGUf;i-kaFdOja&tX*|AaEp^9U=p%8@<^ca66?N9Ui*3dF| zhnD~{zPLQsjPXHeMZqrVvd6iM%r}xCYOq37+Bgq_GyxIh+ifyPNEk{N?bFaGw_PZu zO=w2zNgI2l5x=Yw{Sw5Sli(!ewpn31-Z?mk50RgU&zhlZ;1u^qMb8evsaV;jCR0-T^cO{rXSV2^k?Nw z2voblKI`j5lq1tjf2%vrQ-TVkIuJHZN5h|nlA1AviD|>gch@$I40m2esyS>tR)dW{Se)R%Vk^OPg0g&-y8DHE0hp_8%vA<@c zyy7e-$nyQ@>XGL2^0@y4fXBz}IQ}D$ZRTqID%YMuk@fRyJReoHycC_aO=!(*1uLoK zLQ&JR-dILLPF7lmSjv!!B*K^#D`9V~`PsY^bq0W1Vm2mmN|Qc4|6=d|!&~lG6YmnX zndYXxwwX2a_^_dr$ZfMRrAIuat&^c;p7EBb(W%m@BIgWFAMFnx7BRx8x}JbDR7+_vl+kBb|;9xjb` z)1DJ+&-2iI#uG)**CcE=<0nLN`$JXF=YfL<>rM~(Yw;z_s^8D9b6uyRQ*0pXDZ~l< z`(1I$Vah&Vtjv$%z2AmTVNIky>HzC@#V>m+wso^|MwKvC5{z@Op$?eV$mQae?Q7j% z?M{E2+H1R3xoenjill4!6Fcn8p3O@(4Jp*3!fui-hQMahX1Xx4wuSSh(*B{#&cs`G zj?=C|+IxKeqCqC=1`Suuxm15LEZktpz{rki7Zi;Y>qXg4rTOQBH}(fzx0`G*NP_Q@ zX5@+@4&}ewGb`5TZ8)<@UyWg6FpK;-RAqavFYm94YfQb=S(ypW%hEq=j=s{CJ}eMK zU3kimxBnU3IJdH<#xZWee->;tIk|N!{$zWf?r3r7*b3cHfVd^if^WSDR@ORGHOf&) zQ&w-PTc0;1Qm=gjoE!%YxW7<(GAsZ#)j7a^9EKDj;hXsrdS&oN?o`(bO4-nspD2QMm0{^W|* z*-ILkb!`JP0MMpst(6m8J1QeoNE17s7<~%3TUn`sZ!6w0Znx4q>$J)e(!8#9v)DL{ zvj|aipUG44N%0H2T14`ZYFBu2Sq#M3B%>;u#8QiIq`B!Fj3yNl#a=tSXQ?kL)J&rl zsb}i2W*WpoK2L~jOBiJ{h1ocub5?4tBD^QDh$I+7NgTGTCUP?r>?|X$4k!(<37qh7 zMBO+P)EYl(1P6iuNmSb=+GpB#JQqFt%SkGR$~CF0!dXe~_Uh8S1Qo4D3;Ler8!Yu?y6D0#L z?M@ONWR2oz*N!?#4&i|pA}z`3u*>KbiH?Kb>^Co)fJ}l6zR87@R6s`8k=DMQoCo2R zeL&va>9ifyX55OByUMuAGWA_|x?MS~^>WK#j+t)CVtfbFOl*ptvU-Mmf>wgse&rb8 zWZ!wLSi7T*f{31e#$t5FDdh(WUGt^vh6_TUZ&y;J{`}F)( zV(`ShN5Wi=ENaT0AvTbam#vO4CniRQ{nltdQkv1#45W2*GWnqCV9TJJ>eoX0AA#=SkHD?E<`4+qw&)zUoO@7MDP4=g(jq2EDWfY~3H33(ju_1b7dnz%5 z(t>{&KU8dgGbK5ygau`^oLivFt6>I?w~Z}BQ=64#h0R}GTPKXfKOo%_Y$2_n)Xh_A zwg+;GKdmMrO(oN4DdgHtFSX5F+PO9qF2v1h^62Q%y5-n+aRy`)MLHs!P=*ii6eP!>vMfN~9_Dv8p4;J!X9ZoHVqXn+BaO4oEWR zI$?L=uYF5e!CT!~&o;+^^YYfInT8b$myp%!7u#WKW+kl*2V#EbY(ph1q-gsf2%T@K zZFGI<@*{oXf_UC{)9&6`t*8u}F!r3q=%FV=b0HO+px;ZrRbSO%kIs8ZX$k6`$OPW9`0zjI5;^nPBpk$51$WRBd+n6vw+ z^S#8NpPxn({dwUgEMTV2*p;k0<&*Zej9zWZQ<~DRkcmvZVor~2X>RHl&fMJ#+O_&PpEvf|?LFe)ih^w1sokVK2U8Ua%2YG*F0_YK8<)B?PP}J$ zJ_d$4XRG*}=p#(iyNx=#ewIcy(pbR6SQIX~EK7q$oroH^ppUnRz=r(ht~ zDUAy@O`M@dULRAEhN@+)phL0%+_FNzp&{HdShsc{T;o=~USL$B~G4=v#{n3R`opT4Ij{D1K#P!MsVsx z+qb%352-5~x(oV2iq>|JtG(}rZ{mTwFj~sJqLbvSO04Qc9a}{DC{HzAs)4&Zk=StH zIg#LS!G6rsbNbhl?74l{cEi8H2YRshmh_(i`!U$CpQgP3jvm4M+x5{6+|^?h`ucc~ z`l^?IYJEk?*ZP4wVxw}80T)~qZs-*`;w|YA3{KscyGr)wdw0s-5;p96#0m_1oS1K& zS|Hju9X@)k$aR}SAV-cJ6noM}=Q9>u@Ki(&Mr{&M=`RjkFz=8ZG&|hgGIDVrbQzfi zsO<4G87nsI-*^?!X~gF&?8zH9X!eK^{;??RNKA@0tzHi8oOp+?c4RRyt3=m+m3_FM zWFW_Pm=qpbfkS_K_{T~es_w;BtMyPL8IyHUX zzBnN$hR+?WsWW7@^46YjV^2U$j3=IPa@G``O)KCbs*KciV@S|@J(Zq{_9n6g)< z$msr@yMd@0VBYmd#Zi>*Gjs&k_JzBPZ7Sn4yOyR!3&9;WmmoiaVWjB&$)?(H8OG`* zS4sS2*rw2M(m@b=W$HRa(k4K+NRY@5E*nVLp|-jW<}G{tL(TRANnosvmOD_Ek?)Nt z1&I3X^3pH#5bb8@M)bETm+9ea;|VQ>?&E^146wdC8R_-o2xKM^c|WTgY) z7UKIz>VryNlh`P5xf4liR}+HO&wUWz$hpJp{c0hfC)Z<^+8PCQ4s&BGGK4$*V?Z#S ziga?ta`5jDCS}udQ@B0}^E^D%g^{QzY?V!4-8#a?D^Bq^s{}Ters1@yY^xZOVH7 z{!xoL<-tmk->7Hqc9fc0R@JxGb=?HgXBQ1ogMneO?#c4z7ExYesljQ~fKTKVk{UI4 z2YYA1dye9PF>5#&Lq2n&lip;6dsN;f_DqG2S6*w-((IRWt=ZEH6}lNAvY(q9d1379 z{ANlLVfHbUZU+9FjhoHQq7AKr>%GAfHgrz=KA6{q_y=E8kFCtGYoCF-di!zW>ixXz zr?tIpSc4O25%1F$L_RsArmI z2($c{L9{wM_ok6EM29nH%ZZrtyF|^no0JyGzPWR)YsYyWXkh9vv(lo;KAtXkSz=P< zI65<@@$=D~g0V}`vM#HP48{-Ok3%N;0Wh4!}`1&1Kr_FBV<5ri-lEYOF z77F&9$C#U<)EHx0BRmP4^cq~{D~LYD*;+nKCnuNIwn|?5E4G-9cG?V=Hb_{YAtzoN zGp70Wom3)*`aGI!MCocsdHUzOJxWGrJ3AcLXdY)fTeG-2_%;-^J3#vUepdf2xyC{I z=n;2!`rvUc=AAZp^~dSRgNKQ5`tWIZ3p-`yYlmnI$8PYWsQ}gVo>bXZGCFB+Wx*h* z7}}P5+ML{q$l=hv2u9zKIqzPf?c{u>B!Kl9-*(Cj+-v5fv3;*|GEZs6iJJYpvE+C0 zj^!(~{ytOUbHuSgd+E$KT*>NYbb-z-H?xlw$+cr)B%y zU=|Ga={+xACkHyzI-sUR%j;L>PS;=5;VESE;3;6LyzCWosR8k4>!na+=yMFX+?>ci^l=0DZiSnBz=ud1P=R>_l@DSwv z%*8&r(k*545X}ArEel{)0=&M3yhzLI@IbbUxVR)8x+~KvE~~(#sFn>`d2b1Qco7IXv zJVJDl`0#77Pe6G+USZyTe|4S7xhYzIysT!Tv;~ z*D_OJdk>57s87PMG+(ar(HHCX3;6#r_Kv~1d|kV5bjLPVY}>YNtt2bXif!9mv9V&? zwr$&XcK*-v)_cz0``KroFJtr^T|MjWs(Dve&mPzHW2@JObN?xdIl5H#=o-+87hr5* zb+yrb`&`YjjelF})d!j-SW@Nu~ zOYbXB>1#7Md&62vbXIn(t$iAnVrT=1+0dYGIC>UC+OItzbAj0b224m< znDDO7u8+^)J*zmUbP-r^`@Ee$bGGWzBev%QHsgMFqxf0~ocM(k>c=u49{Uk~`Rdzh zFJnLhl2uhABO_^Wr$L+zntXEd=vk)q84-8C8cPicnkV|$J7eWP6TpZ!y~o`FBdbp7 zYE9*O3(e*atqrHG=nwA;Wob*+R%$p?E7R-kMQ#^l4jG)*%J}14My%F`mnanBc!7bU zQ?Z7I%sjC#Sxr}JE^i^6#_Ta{%bNR&G&D%KL}EMo1zQBuyxhUaa%;K>*raW*UkDgm~s~RLmmp5D&L{7!9!u_{4`EiOWFJK^HX=@HbSP z@dRH`5N~ty3g*#{a~qBM2?zx3wNKS=!-B?@6(*BPV%f;)YW>jlVU_b74w|vVV`DQ{ z@Hd2T+9n9+@)7>!mEiYZ)lJ;+;I#h2fyZ?=0(zQReb?j(vO&b)0)FD;Y1#`W zTJ`k2hgD_{w+pw*w+Q>iH@Mkd-lOj;*>IDeR<@6(0d@R186PX#=TqROK5QIsbv^%w zQ_nunrU5Hg2%h&botmK)88Lk572b@@p3s*kWk;cblggmY!DpgZ#Ah3$%Xu3- zIo7rwHG}y?&EPw0zy&w`k=hd0q24xh;d6l_~mKd%nli#Ut&}FNEL6 z>bRrO#x1o{nt3#;>!U}BYK7K(k626WnKw9@Ei1`$k0|Np2gHq#9Cu5HCfW^cC!*Q2 zuA4m4Mf}5ZA|ve&D=j{3)}NAV?{n{b)RpyL`dN9R_m*6JXOu5=QikvN2(lwCG8*No zmy$1&VFmM4F8QLJNvqQ&&|{Wn(6U5bp2QcT3BH@yl=>=8e?U>}!c@_>^`)s+`B+j1 zuYVbyi|sux$rThiJnBc0kixXmi&B*tbq5aUEi9TP(UXyR90=OS3wMHjfZT5!J51Z8 zcqouJXI+MoNH6dWTLQTUWCRoK$Ko6~mI`f=m?|X;;6#%Q?!$_QOP68q?W@-6=8%k- zs1S!(CBnr~g}9423oAEyJ_J%`ow+#m$E!UgdInh$P**Z8Ez-q1P{4Ubv=hW1{^26pqM5ed)giDE z?Qj0$f^yhj`d2Jr{EJmUqZ1gtOHg8sU$Oc7F${BHSSph6bH2m(xoe|oINw)nr%18c z1ho#@=F{p7!Zib^F{I^a12%`= z#9`JtaU~@{nimmaP3aCLr^MMb2?c&y^-9^h_`Xt2QZ1ARIyt0>3=~5q?I8?ekpn&t zsp%L@AgO&Ipf?IW5{q;M-f&jFAb*`}R(h7c#peaT9{EGQ;S*5t^`wEH86Pbt5bmM$ z3b=}4HIcUQU12+Uas-Mc!Hdfp5ZsH^OCoDQpS3CIoA>=hi}aYr7wf|OK#5z&=Oil} zfpVPwxD4gYv{7?s+bx|2688gNu4N%0?I^7gc@551AYRn6+-4WL~7gF6Hqv~vZm!QJg z6zcu*;81`2{}Xb|KtFAB zj0-xzsPIn^w1Y(*68I;8{a3~Omk!_RGpne1e6b5G zhAYG}D|*_rN}b8^)wigP>62@VrB{dx&n*kfXGk*pP!&&Xr&4k_EM3S^D{b5T)wDJ0 zL6S~_hc+8HiGrkY6V698)OVe8eK3CGUU=7!O*iD4lT<3rEjuBT%~c&z~7*OAy{ENU!%Mew=uNLmEQQ zsfgi_nr|h^@pz3>Rml?x(8sZddtK!?`lNT(eIY*EsIg@Mw_}*VVs^!yVA=G zhiv900UHs31gi+{$(vsTfM%`vX6z1X%DMr6h31p!$O9+7b%v% zS%OJQj8*ZDFWmObUs-=j+dfDA{ugqY=%$$D^MX`zoMOfeRW3=pa50Kn)6%sxU8|{V z2Z5c7Tyy=k!XVRu6sEXd>8vPer?7HSQrJ_2XVdZ^mad)GqJbgJUicX|*Kk&6SG`zDd34d z!G7OH^Y&_mpPZ_TlQkOOwxQukkYex<3Zr-+fb2C~|F{4sgPm~BL=d<_6ZAr{;rJEY zXyRZa+N_=$bkLy(eor^`*5&@Z9qFtCpZChKm2=TEX#KXbsUMq7x~fC;Sc{)jdIn36 zmwcNZ?K=j=O_ZKtb&`1c_vcv2*#~108M1r#R(C~@H>Mk#MZ-i-c_zihe~t2TJ3DSr zHJ8RmEvooI>)a>HGsi53&#^{uySv0KW;=*oIF2!64?xvn=g#Ne1450%0geFUQ7 zhhScgj$UY_T0@m@1ADo;Rer>mlcO3!P;M?D$=O!Irq4Vpxf!_;>kDPw6pDOez&DV- zk&ZdkW&MO`AcZMP$fPzOtnZK0>SI0A?rXtmYP?f`YU4G1)Qs)wugy&Jl6^+li#2nd z8YQr3s|t5>fWCw&6bYq44|%2J^kVS z-fD)GN0_BNE_A>^5ajv`=)B(B4}@J zU`6|nxJ6dwKgwI!zWd{8nZFz2zab7x-<{|z?7H-ljs{ldMuOI+R>lPXFL}#%_dNYS zNR@wRC$vnA-~0$+16v7Wb5k?Ne_i;W2q)iD{;Ti&e`!Vk-w`KF>>U3$flJ(&Tt5M7 z@DmSU%#QKIODv&iMC12tP>P0^FS;CcSYhC-=$783!F)eppF0H~o?mf;uU@O=c!4et zbV$6gFvw}89Eh*GfJIt~F3EN&)S2-qSX6KAqAZ|gVNWTU#{I5gVI>ov&K_$!Sd?DP zU)6m#B&PMwt_kZ7z-%^Tq^7FVdpzZKI^n=CEK+Jj?WNiBaZKt1chv@*rIZn<*iU4@ z+5xn72Bm>DghroUWSDc%mF5E?8La5}xY$J2$r>Heew%@ujl54|8=e7C85hwFxDDfo zikl+bBG>}wBiuqd!n!5h$B(-Tn{u?l=^ zwtr=&Z(YPc$N%Ji>dfCv4|XP||33cb+<%ZR{A)e`&s>gg(Z{zY0s32W@ZYMgZ*9o` zE?xM)aygj4@jWd6vvdK<6;-wItHY_Rw5{w(&PC{PRE~gzk+2+z%MT2MFia9MBA`f; zi$nsw4#)tj(a$$$I6fy75lsOJDXs_1ZV2Fqh4#lS@)Z|NbSSjlZJa|$>3ynWArmld zH?O(*^fBk?LhHi$_Ojtn_P6S{EitH8IHY~DN~^^p-@~>=;51ZVb;U314xT*y7i!yg zaaU?%);g-A327?P&~8q5!^Moj+P!=-48r~@VKW9Qmo}-7&sG;qp}uWgILZ*1xKMdw65=#vJXxww@Et~30Y2od)g#O(wY^<0uR z3~A%&WfMb}*AHh$_=uROxX4r?LE<7}qC@vFcnl2I3Z6o{vXUbK%E7RBY@YqY^XcMI z&P9bWSm|+`);zCWuOZ3`I9%{mDKkIn;jV(~n3_Gwb<7XobCODcE8D|k_E^^mnj3L+ zMT&EbQMlwDuOa0HMr_e?>p(*2c7z-e2Qi~BT${!Ak+S>n_wQcVK6!kQ;SSE86FeF9 zLlQ>%gyO1kHv2{_GvM%qb4%cSLQkg+ZUK^H;?FhhP+k&p@w~^%e*pJz4&~z9GeS87 z(PcBp)`Tet>YIpic@@{C!EfX@&YsXE+>z=z%*TAa4tq1sp5V`1(VyXJu|n2R%f?LV z;P+j?Mwx-1+KPBFfy^30(Cmnnzz+;dGLKj?;83Q^XGB^c%our@hUsQYBHc79hHW=x z&BE(}S~HZlF!tnb2vz&U&qL2QW*t<(N|B3w%i8AnHL&a;SN9FE(UTK<5jQ{X0s7^s zP)1#1oc^2$_AlLvSX>}iZg~J#>@f9sRsqTmoJctfvTLaC7r<#6@JggoGDpgyutfjrSmae>nUo_#O#_xbw)>`6u|LHnx#cik%#SE*J zDN*C3OP5V1Rc{Ba<(y_qIpYYi&6wLq9Grv3GWENnTfg4=520yq)0$1ppvkqkZN$So%IkwbFGff@db_OCieE$Irqh0z5fJa%0w z91m^VfS_K`ivkYg`26GvF5*Xn$%e_GsG+f1%Vok!u>4Lqu28)oEe};WFoOWE7 z06XJZW2S+AiHF=(-o5m|9czjNrFLRO5Q`PFmFT!JM!6fl*=I}Emdxca(2llRA?ULE zR)>)U(xyX&(fMj?wm*;83!@#9VXj*pf$2!NjKm?9z?#6j@H`ncFr&owX4cJyjs*zi z5^`jx2P79tu+<$FqE7`jBDrs1&mm!YMkIxUxnwwm#MEG<pWS`0TF34}%F`$f#p9yA&84X+ zW^=1~8>-f1X1&XE{Q<`MO?XXjd1ayhx6iX52L6c!$PbeV9T8Akh&ad{v6)FL7Xpn< znD@D3Nb;YwF-#4~lPaounRsDxybWbMx{S-ozNXJ4buYwv)&cyT&r)S(U%kXAov6Qd z1A;j|!r+lm(9>lW+4_*69JCUR=FJ~covDJQ@l-&L=_VC;OtgoGktDu=aI(7)Ib37Po53brw$lt;?S|;R#d2$@I#2 zrz*Q-PdJ0cxavcwML{=1Geb8+8<%{Hft`$*@+bLEibk>q#;Vo_{j0Vgc23_VOi>yW z2NzkGmW2q%$NnkXl~t}6n!J54He#~`p@>h z9Q{Xn~{T42SoZlgO^m zZvDV6LJd>xgS|EDZxaBd-;Cmp7l%in{`ntqiwtu0EBlce7UzgeC7;n*XF2wb6s9Fj z@bWw=JU>r-7lFZ^l|?5s?(1v~c4inU$60L#x6^hq77X(zV?j>r)b9>;+t}EzER+++ zDm$9iYk9wxAVTmp?$akHw`jN++N0WDCZ4vwZ{lg|OX)@9g@|K6wHbJ-%hhs3h6e;? zd=H6P`cVOE9oCa(Cn653$|-urj58B0m9$JxXxOSYEpEk(6%*-$35&GjSM}+GQmbNB z9YM#mNEZ7^jE0O@KmiKWY?@o$rXi;+@oxXeYOi*2V}N5uUyDW z4fOZ~*E$!j&JV-(K_bt>8Z%y-shaB~{n>ik^L7d%LF&`c8TDIctw^LnRHNiX>I2N; zvm)ubLb5%jJ+gdRA%Q?WhGSXxI(%na^i85?N#~9Y#GlX%Lpc(-BO~oJ{T6R$c?A+) z1%!hf-7MWS+97$U8NH;pVZ99Iq28eef9#sgn>lCFf-{y!IKvWLpyg)%+F8swVa;+F zB~y-_*Q4iYU(>GtiXS?H65ahJ8|NHu9nPZ3zrrxVGLd0Q+h?rPqGC|WfT4|Hag=_T zzLeAENc}(!XBlZJV>$kGmi90aTv1eUnE9F+OfDn;=Skbg@?+Y4;WW$71d@ygvDkN2 z+$f{GZ)CkFVZ9;hEVu#wvcs6XCYP|Z(VO>ldT7D1C8NBaWDRls?e z$W8Q<6@_XwIZh zf@+R_4HMYnC;N%r?e*yi1mv6J&Z2GwSprjzpcSq5LXV*FqnYQJ@m?bbtsfEa!ek7I z%>`Y|&^28!eci`>o+l;(#HN2aUfJhD-bTjTditn*hmn!>%GqeTep;ooT4y@N({3Pg zkX-IYdtxNFo_PO4-L_p6;Z&#ZlF z4@)Q6-fq#qmHh}&Gl?(+0JewBK>HP`0W z%lSC$d{SF6P8TSJyoGcJp||X=cy>GVG1>e+xSOTCumGYj8mo|H{_ztVySm;*p}dwY9m(_BwppG1ON1^KyoEAOw1YUgm2nLdSlkH`U1$VbH{dc1`)v{blD! zzm`@L2fvG)tSI61@9Qb~K3uFSEZ3C`D>g?$Cjko>OFBC+RXv4I%g>iFK-x^IQCcTR z%zX8f`3{7_x3`}r775@a0QLq5cJJOUIIcBrR^meFATn?}ResM=~E<{U^9Db@@68&1XqnZ=T#qo8X*W*f?Ps`Ub zhfzHjTKyyM-j{wapLf|6LGSy{&kq=wOihDtr?#pUX9}X-pu|M;CYkXFCUG|Utxk3@ zw+~%dfDd~PMrJ^mYW{+)8W8_|ge{k3NJV^sbP5aZ4Dx-V8vSv7^)eC(V<lTw1NBW~NBi@@HKN66kILu+W06QwmS-H8EhB_yQhNxEKXY1KWd;(|04EaCsb7)}E zKpM`l2)z+E$UMia#v^vdBZ@mR#mVm%w*rLqC^yHq;*n2awu4>3gExY68G`-*ocfrE zW~kqcVd5l{;sGpNf|e|2br;|G_#j@+wfW3CO;-*JBRV&_zbMmM$N<{s*txhPGpATA z7PinH4c&Etz?{~-&&IA_$Z`ss=38ApTX%UMpY6Bt51CN=nGc*(yugkNx*sB;ez^Mx z%`Dx|vF6$HRs#sRUY>PZ;AgEsQC&!+tF*u@w(bH%L18`}v98m&nAj3_l&pk}YEWk# zwouZyXojPc^j+bJ5zGEFw|B;MU9U;E1+_p`y@0Y#WRt9x54HoigRaE7QJkg?Z;N-= zcF?Kb1J@yreccdQ2)CI(@QQOdb4#hK*XX@@FC3v~SUs>EObkmqaK|C@u5yYQtScx~ z9F57h1A61o{zM2(4NUx3!s0S=1V>1LyAU8yaLUjwAzU8eVvRNjSnxl8HmHvFu9RnYoch1A=rjOm2 zYraifv2H#Z27|;QG4)aytx}KXPMF$G>HRrsZp!`OcA0x|8e0VTBIloiGqt3l%fe2E zG!5`uLN

e-$oSLV-N}#IO;2Tj0k`F_y6tX$5PP)vokj``c+z^>GZ4-$4yd|Y z*lH4HaDFIms_}JQM6CqbsC8b8y;XXJq&4x|>-WGkI1Lqf1;ahXmQ3eAd0!uul&ITC zS!jNh9d6uNoT7_~;U^xrz|*+RlXm0~zDE8x$(cYf#sHfdj&*vkx9m0X^B5kJd9X`*GzCq}$Jfh}fXUqL+<_$bZF|a(P-V7A7RpER`7(CkzS6P)1y&${dYBv#1Xo z3J|8X`Lnj2->&Nis`W2uc7>p9wOnA<#<^sP)0VJ@-I1v;!(6iacC8F*9-@_o;*@+Iqgo#x0~f5qe)A)cDc78l@!F( zNuULib~||CmSy(a-o|8`a$8S(85OSLPp=sRM?GFkN7~lyd{@_%QwXSK&*e|2>#r_q zM|mBV+`3sFha2E`QofUh4Qhg@ENY6Vp-C97(G_6zAmYPF^`hj^e=r&xoyv*x_!oL~*?CSm3l^S>QG&9pV>LB6bXe{8ou7Bhw2j_70)OT3CB|S7mh~szu)* zP3NGv;^t5!=d$~+KZ5*r1)}B@XNKx&Ix0nLs+WJy^CLhbx5|Z zFgy~_b4{#rtJ$)?PKUG3 zXJ=>tflpUm)9(U-?yb@D)$ril>q2U6wy;d?%N}de=aZ$=Xs2K20PVnG(&vMi`%1IP zvY5$RX|c(s)6LEBF`RDYn;CJ%5#MC^JFQOU`twjJ2XMy<%7cEfcxa`FxtD^?3 zUFxtEV8^5c5x+=LNr1ThYJD|kElcWa$M##jc?3KjlC99GsU!w!ayJ3pag`8cCx%c> z5Wo<-pmkI7}qLMI!|5z$-Bg+5JBDc6|wK!3%+Ie%I|@clj; znEMqINWnuy1~ZF=%wldD`kG!;6H0Qjw9eMK`fPfyp8H-8w5jG&wo^dVi{Dz&Wv1j5 zo238ZefMwCn1por{b;-q2N6uxzuN-VVpQDYCamPsXce4c$KlL_D0U3w)AYSz68&nB zk0-c-^g0r9iQZ?e&TO_GQy)WHb3-$+!wbHglr^4h_p zwt&CerceilHI2XvdqKax_xouO)$@{E;WRo!e85OQ0})*^uCfH!$;J-5oL&bcc+OFWA_OFbcB zTEP*=L~9%GFh<{eufey6I~z>ZTy95;Cfez)-M)x>WSI5@#5&X{H(TeI zFtS`o96fDpJE!hyG{mc`t)%k}RZI4Tj#EuOfDI({Gj5(|Z84(^q|Xw~S=Ke6AZhtv ztp}~iA$}EsA_Dy$ehR%1e=ASSwa^oeiA9vYHV2??T!&_@V5Pt3e4!w)GH1S4x=2XD z>^n6vJkQ(2qewiqcfoM!XuLz&UG0vFcXS84NtIJAM!NVc6}nCF)XHM2OPiW?Z-vE6 zJXR?&TTh4h0>y7h{0=apI61qya&@lwG|^GmB34AVahULrxuc2hZiyni(AC`3%D@L< z8nUBE7DR{Wm0F#K#+K4|hqQSY%*OLCcca7dUHw&GH^QFvpoeQvcdB(SLYXFTneqW~ zn}cs=NaHE)e@%6=f9a?9O_~!0FDrpNa2pICCNCyYtA#eglRotEQxSK*qjoue@^}Z0 zc*WRYh-~;W z_}ytAP*)fF!|nt8~rFb*X5e);65X%pGyXN4qBnFYd6UYyR$-&eux1^;U!pBbMMPsu`Xd z4Hpzvj>oeFIm^YQF2ghrT>#ta^rqt2g-_lMcQH-rQ2ywt;m@GRtf|V`{;ThK+a~X= zuGO_Y8Iw$-U6Roo&@31L&o#&3&1`QoMl3F)?>!j;&c{lSrA{V}yZ-oGX5xRXws-zl zbig!G$8zER?|}ua18;vGx(551B1zh5> zA)g=#4GTkfs60^5yb^WH61eB;eQCUuMYF$33mv{NK7}x=3AQ6K!R=xj zAm)BDCL)44Phmh#(Su%=uk$Grh`ua2%Il8r&zAJ?>3m+Ux8a;EQ_a>MZfa{Gd&Tmy zp)=umdE0Q>8)Fegh3n39^`+yC;=u?W#^R4@d3k}TKH{f8ler^+_zHkJ8Mf&&HG6+4 zPD^rm*A@^b^x!p*{BaME81n`Bi6D6-MfQO`laZc;-#v+zmK%pFIOtW zIUf$87~=3%zPI~x)9gmdtIUsV{%pXn1tF6;c7nU)$(5hPK*2Be!-_;yc8@6KxI37L zvKT>FRsPzMnK>}NA3?CFl10@20nQ&O*mXbu)q*$$4zyGU>>Ia7 z_;%<$q1K7@J9>3m`3nKzo*i!Xd9CkFdy^m9Hs9sr3zs@gORwp%;!C?72k1~^xH3e@ z2*uFBXe82d?A8m$*+P>qUJY|_DYMyYiTTc%{`vW76k_ycMW0@GS@CT@uBZZr-y7!b zqi`3YcXBBhUX!b-AMcd^`aHMJM@Gh#o7mxjz6?F+5$Apur79aVmSUPKl`MHcl^+#& zojjj)k}&SDqtgd5J8U!*Oyn$5eqRA|T3;ln zte@DO>}!vOlHumDrpMYzNSJpCX?eOv!L3SMMIUd>1c|QHL+EiYEA-`Ej$c))D6n7I z(*s2{Yqs7~pi5C=qD-oe5|i88&e0Dm-glj&mfFAx{gW`!co!`D{ zCP&Y3)X6rh^_~OZmkkxNvfB6>3-t{WeAV}YBt|B*sPL&`QbmhnaRiL* z)&<(_vZ#|RRc{7IJAg$Dw-jtSO8ar)ojlhSegECKxx(E51QKLZ(n-|wml5T z{~9>(v*-{8q8I0yKZc#@zD0LXQzS03hNjGK6z*h^Ft%gR7!K4c z@E%awL9)v*XW6*96C$uC^PA9G6JGR+HkkvzXhnnv zXhPhLe7rv-BTAjLOy+OAF^-z6-G&~^Pwd8mPc~xIT4^3{vwY4Rq$_zg3N$CV#;b*_RtwkhlQCv}6QFVpoX#k29 zx_ckbohSeb%vwG4djtV<08$!X?!RXqD0B%#9x|t3KM@L29^Bl~JbXDMzz z&lOO2WR|{-;+8804IEiBxw{WB_v`b4O6!39CAgYEY4wt^7%^6YX4qFcWE!x$6NYCHbDV13( zwUWDz-TV8-P?9P;hQL$~;-&j`=tP3Nf@g_}W-do9lT8JdhywMDQp}K=WIQX6qm<7R z#Bys+<`+R}fQjK@3zl$SxsVjUyXKCa&qk8m*Wl=#Zeq^+Z!>V~x+o`|2k&)aC_%AGCtqA%cQfjkEV z_8^<&f?gx8406`SR_v5cuw?YzF3MTbHyFQgmLS;-IQw~{JArg!uUk#+!246;4Ki)) zqn?PSI#GPswVz&dkS4vGSA?3ftk5OLZXA!y>yxZ`R~8B@TQkQ=_U6;^a-(OW*YM;y zH7XceJfg;gIetLGN3v78*lf5rF~N4Z0gMh#(GF+{bI+P^($#*ie~ftGe}5>(oaRD4 zv;kW$8#2mB1%YF4PrAl_CB6PRfoK3cs+C*#YeDjl_X(+Q4;QuXwxeX9kzRxzD#sL3 zF&doSwB;q8skSB?ng{PPY3UR&UW2>crAyEHS(*KlBo95{8lF42oAoWKi`Cn#-9jekO<5-pzK=ij*7L7D#HNE9XE`okM7E;E)UF2Z7>0}2@&l8# z@}L6>hyH#jQ5|Oz8F;PcJ9kQgfO#yM9d69=L z$VQ7Hjyjj%tcQc%Y0Dg5$B$$b_bN;I^P6^Rs?8st7&BUVsIw{R( zO7{1S1>L49KH@*E?<1XKpf||IsY{Z zO)H(EBS4&n6UFcniNxn;yHmX`G}Co?7DP9|YNQn1U+Hhea`4(K4;6*$b{TVEO=~v< zj6^pGL$Sew4)>AtyKC!g*lwO=BxXg}qS)DfETJo8N*HsCeXgGk;^9jRSH7j4pSL-@buOqhfWQ9xi zRnBn-t_u1k{o^XUQ8*-U%OSheUd)SM*68dh>Ez`(Wi%Him%tZplfbVSj)nv`OOQXE z(!2vNTi~X+HL2H$E0@aItw<5V5iH>2 z^ey#>zc>8kzqkA{JbQfT-X-6I-({cGBJ;T&TxKgcUz?$W@NMkY7`Mo#rHr`}@Xm?MuNyBW^EnV(2vk|pzk!Jzsam)m&fM@k3(-V-MFgSuI{ zKq^6QfaRt$GmQCkJ*cU3;Q8RFySou=Q06&HGET1OxfQGgr!Da8+Q^Z8!b|gm_qZP* zO%Y#TW91jAJW3jFs<$$@eR*N~Z4D7$dm1;~w%(@A2I2%+70SM-yvUgM?b!jr_wTt- zHBqgZqYrT3$Y?nkct(p#)TQ%91Y&U21p+m&ArYKN09D9>z2~g3ZIKje-A^pCt83v7)Ksbwd6Gwmk`63Xf?1*g zvy6?NL++2*_Jl;F-G`MRlNgeY2Tmnmx`VIi>M@LeVGu+&jw+9u7L`(TUm;0XYC$3i zl1E2wV3CU{VueTyBexxY40HqF@W zs-*i@r8FDj*^`hxdwlOKNUTPYSzbFo(?-Kk!%%C0HE!V@+o150?!$c!-8t z1EcW+gwXpOO5xyI{&+~zIO?0W2k_lN!}0O!q(?xdNujTORx5s=FcR;f*y03I2*$#R z1V>@RhC4Y#1Z6Jw{;4sDXq2-e;P~k`-Y(P*neASGK*3yV*^A{N)tIvKvK{*8QatUL zd}-+U+i__Y!TYtZFUQ_! z36Sn#cj~#MOGzJcoYSM7PB|bEBOA{C1mkg-P|&a&28X+iw!i4>w50kxM7*pk&z+29 z(H}D7#x$?3M)PppJzpHocjYM1zQL{it>fHs^_g;hs8uRhp>8y)IAlHM=BFf?hN_Kun8rg$x$SE|RQEny67T6G6{K!9z(<#LJcM#rKss4@vHMBX(u)xh+lP2e9A?5^JtK2=tkm zP4#i(ESPr+7@e>`LFG3A@1sT+<>!~6Yz3?DsB>_q^f$zc?(1##A{_b*bP>s*6@_cr zB|TS?i7;!|!RG}lx5>Sc>&98Fkre__Qa43+J==wMNUi_P6NuSR z4+4zz)pMV7aCph!0oOs|Ec6B!r8#Sx^Kgfw&w(b#J6fA}h^UtPlxIi__0sGX_iP4o zXfMmiXdZHiJj)1$3Lop7vyoscj{1Ab0=$>*Kc{JftKpgl5B6X28l04jjG9?16vgWE zOAAY_x=D8SYO0d$8EmG}8S>f-BQKX+E*Cm3=IxHUON8~7xt7)k=clEb_N`^_++5L4 zQ_g6t!=wk5rJ9#qE2?M7)TR4r!Kn^ZQv0)~QtF~fO|pJvrF0#wuhDwN9qzeB6atV?L^QdE~F?T6G`&X_fsr9cnz z((PJ&GS_IQ9H;(fVc^hz0fp}!*g0TZj-Ks@kEWfjy1V?>-)Y zkt%s&iJxcYwmpnjooyYUfqUKLKXDIw|EW8=G_Ipa-m?FyrT({VR@Ea!N7wm+B0lk` zvZB1iXt$~)VQizp`j4erMH#e44CtmG?J+nqDCf|~!$NIYsbVE?kYLDZ>H|RyG@_q0 z9dI70nWp~bg+e$|Yc?5k0D~H1UGAo=dF-oW zC@5>nxH&~(;&@pJeU)_ygdr6*56TRdg{oq2HJsCQRxJv-dMo7;GIMO}ZL^+3{|qNe zspSC|`!TSVI?&%Ak5#E@$Pj&t3W7`0rN_%6ccVSkm1hDA3X2Nb0F+kEp;?QTN-nud z%RiiJx=Qj@3ZJ8;N4_aQX7E%~)Gj1in7T>JXj2so)k8cj7mnpJ=b%p>tUpfV83N^-HLta;R1MAh=Ws zp@+9XDv~3q?`qCM_W}2GLFTuLB%K?4)Q@fI&0yBbcy66KU&iacQj4&(Q+^W_uOfe6 z0Li!YielcN>2PWbXOO+1waHFm{W~mYnZV@O6zwQ>I-?rAJhkuLHHVv&+RpR(NDx!~ zu>2Th2HBCxs5$4{ewZew(cXUKU$+-506@vQGlP|qo|_u9()b{9B#VcQ+B72r{=?oL z=HR?sQZtCb%z*Cf6pM;F-xr>ZlGtb5l|xo~YIKq+1D)L11nscuazQ zW^c*=2W9U79a*>Tdw0inx?|h6ZQHi(bUN(VM#r|@v2EM7lUsTBclO!m?DyPrzcFgn zT2rg$tg&W|Q4jvV{vkRwnyPf#T9PY1;&6OZl&Nvhotc{2z1yel@3FA%a ztK#SiCg;29)#icf&Fl^yU{$e+nHkyBU}fP$G9#%dq*2mo@hp)wI~f5iic3d`!9twj zBZEVL_!fakq&5@1@<&vl?D!^yha6~%=OXZAMCOf_^R{o`yV^%e+Uka1K& zBTID*gQFAw)T+(P=W5D!7aXz4z_wF){csi}Q4q8}(qa|*!+{}DVwrD&A+@hOOD`LY zqNZNH&(%E63{K*&GaIHx8In-JK3QIoHp&A>>>j5tZ4K&_qN*tm-zDV2{AX@C6f~1b z>qJ~J9Jo0cm_t(5PVT7Ed0~z(u_XBhYes z)#dcD2PA@a8>mAGGLs$%mvPG!3#rYAxY@^H$CKE%q1?z%vEfhff{0uy#| zBNOs;)QTHl?)@aAC-B8ywd};N{}4Zsb`clDH(RYeItr2$muS2XMT=7A`fdJR9^%%Ca_n8GgQP&!C!ru5rDLn03*tn z9T+~HEzMox?@H}J_`O8P-i{esng7L&O+wIdlQ{SFy!v=C1+!yq(v-$4Q9$wte3T>4 zb6z0XoMu$`BdwOgO!~-KcYluz))oY$FErreo zv@R~&mwEKu;GqJ$@JECKIEr%5N#sS7=T50`csB=HW9nEch!aU}wztNHTL8nn;9mWD zF66K$w;T@;@t@M!86TRus9=}5OKs@YCiM-CepjyWtstJ1b`ijjd}-JTv&@D3QcH@@ zDqg+?6a2D*^(z-c0bztcXT)Sd`d!%%Pv-D*j{;c=KaF{RjW5{F=gbPtiBUM17Kes{ z8-1{AOznslCF5FlvzitQnzaF7ZvjcS{#?5U4cnw(*mmU@ zOqUO4+39=LR}@QT-1E9!W)!9mt2iAd)#@c&8c{cg+H;8bh+ynG2B`No%01QY} za51A&PthF?X6dDxUsy!8gvNEa`b1IFe5QmNr$zAb;X0z3WrE9G;@YUL@(T2YG4Ym^ zW1TJeONF6R0v~QtFz+vSen>SlV$A%^wX5Mmn8@n8`3Z9_GO~stn#GEr}k&(Hw`^57=J4&NnH42tr0hRNnZpTe}J8 zI+j0tD%xWei_4E14n0Ivqvr1Hn4*SquffMQ?}8Y<0mA&TT0F`&7q3|Q*O z^mmG_+n#e>xCW4y+At{e9g`SBDY@b!_14u7v&TURRcZ$(bN$z=i$sAIM1NA4>0Vp~ zweVQCcT5vjuhai_rWPvG_;7o8w&#j&{6n9L{n0L{YC(mb~KFhyZS2-B_O_PX7sWzJ2 zGoEJ?DS@7^q^sPXM_($dqilNJFZaC`XU?VFQHwIGrE?@MNn)snKPs>}Insv>)cc@W z1&1|oP* zlb;9XV*h0s2Wj=jWaUyvrQliWp83g`W!(q8=g2@HyQBbDBI6>QJ#|alxOA4`fQihx1T7-cs`3Q)z)J6NAGhwkr zJJEt>Fz>wTiQ4S#{xOd2jR%r2oMTJ1XnCRN2BKxM@W$7yS}qL58~l2TV$PCxM#4E) zN9LIw!n;f_wR!5|D>DDFxG;y!@bNfk(?Bz*%|S00TIhCzVjK_!@-%q4qCn(dFdpAEGQ6_ktsgJco>n~1`R!{SV-GuL@ z?3}WM+k{?cz|E*UvUs`O0(q%Dk2B~>jM)= z*L~$JdNDh4FQc^*Y=FUY_+CzJk{Y%?@Rob0q?!`=S_4w^VAgfutRtnB)#8*tx82@U zt5R(R6S7F&4a-u~UAi^1^w>gtOr6^@V}0>VgwpEbSgr3`XLiM(XLhl?;+IG6xXhGYj1qSa0w|NCr zscsb6e$W1L;dN*AD5)Zl*%pmGW{rz#9*$)QCu?QDVLcVvVab#-;=K98!*rxD)pd-8 z&d%do#|7h$xMO~WERV_h!ILai_*fe?_}GuWJG>+CIsa#Zr&t}PyIGDlYF{Z-BNMvK0>+Ttx;7H7QK6+~-Q6|+54odp#{-m>kR zx{9i?le`+L$4k!7>?ac3@AHinx7te&t)-I3&sxGrALet!kay)YYfUXzmBlpT8-&`; zNgyA!rBX<>)hAPJk`cQ6?@eVYN=e`a3>S81K`J?;0;Ug=VH;-8eBcq#q|_4s!Stb3$C@0@t_rZ& zGC-!i#7UFXTrn)!T{w1w1+KRG1Ocvg*YjVWJ#zx?7zaH_ePvOaHStg8`=L)zYFIK? zL9NykMCQu?BB!TD^_fgvfdvXRP(<|;DFTTUM!y8oRehV? zsxKu2sdS{iCBy~>!s+XysQ-=@2^?jOaR*~iC4hx0?vy&FiCZ4o9UsXP!JmUFRv1jD za|jkN(VPif0?iY^-wPX}Vk1`!(ZtV(B9|YO3TzUI-X7Uy0Zz$|)ECjM`lpqDJ-#&_szXByENoN-;uoKw%gXs6k~w zJeN`$44?|5>k2jk#SEl^MzmFl?<(MYR5+g*!z7|R8iTnG}8aBQyizQO^i{t{qgI{-tp!WYADf=#Mu!-RkBybOL{1M#}hz5D>q zN!a1~TZMvu!dqDwnEnOc3Xl%?XPW&F1fPl%4(4`FwhpwPMHzi-V_Knqh+7C5 zTj;AeE9%=g{;jkHJsp7gNX^9ZsX@UGcw=B>_#d?`7})+*+kz3Gbn!3R7Jz~OleWdb z!&?DN%YQCH%Gk!#$qc}XWcc5-E#lWAm+24!FK$qpS9Qw7Owx^F5Rjn5dWC(J8sHI- z1PK#}ptgQCR!(3wYARE*4BUsmjYYLD;e%|D6L znr^V%XRG-btH+5GzU1bysqMshzNyk64!h7lW08%zHJ^ba{UBHO%Fy6-ek1mNuI3K9 zy5foKe4Tr6OeH>XUVe65JaFXpDX#R<*O>@rp>n<1VQ=z6YvUEk3XO2gVG=yCHC%fv zKBwhTH(uh%dkb#=x|S32y;M!Gbkp7CsSKjI$!HWMS=y`S6B>>Aq2;aU|++6R1} z>pE$2*VP31$y)ZBlkQ+wwHCjV5%W5UMb@X@{W@$cuG7np#P{j5uMB>tU?y>t6@4L+ zVO6~v@U9q|U?5rmebEvf*c#se23}M*8dR-54C*y;cvp&a*;h5TbebpKQmUq3CfCr}s(pFVYocOXxSCv1aRHQ<%tS0EGO&c)_kRXd9^za;>} z&Ik21cCVlBy?fsf-mj|<vjm!23?HPc(<)Jy}M<-b5WW* zW))oKEfSj8Lh8g+Jos)j+oNq6cW$@^Q?&f;PW!(TUH?rBnCuT1we593x*1yyngooB&B{5TR*Sa7(eSi39;+|*%>-IC>8+Hm4)H6 z5rCBiG=6^2XGccB@p+R^F=aZ{+-(T*Kfyvl|Etn8)_@t|4MD8rvu<*|5f^A&)w1u`5@ua-Bd(XmuRHM3sH>_ z8q>d0?FT)v+okYgeS|F<5lw@!c)x^|q#6TA>H_w#aqeveF!HVJI~Q>@yyZX{b9Lp z+e1qHiQWJtrIWuncF?>0(Wzr*Sm}7l%?3QM<&73dy18Npg7c%j3YdIi^)@Nw5~&TQ z5b=oyEAY+k7ZpiW-vbrE#A)cEb zp7iUkoa4Rj(e@hkUdA9ucobk|-${vH_oz+{az*hV z(v&Oxw`f!1vbqGe48@WkA=`Ra=v;n$PoBJtuPX@ZjC+9_SaSo3@vnlkrF}y8XwK60 zL#&InxQ2a%wLe!<7RlE^7B_B@GVv`=OGmW6M^iDH zR;BPx33XSMQ!At95Y^ZVl07mNL&U+&xLPsZ@p3PN|2&>}_p~EIG1OjSCcT%8#@~20 zKrnuz$RWhgNV^tu>rELhip+O-6ATQR9Y&n5*G3d_AN5Y9EKyt2L!^XrN|XVku+m8h z>=yKit|Us34i2Av0TG9|c?1%;Y4tci7t0K}NIkr6`6MYVb!|>rrFBg)T9=ZPqht|5 zi6Nn;MPZ&U!63Q??xlC?Rgw@s5lWRhrcw*&U zA43Eu`UYEh&H-mmV}ZfC@Vr2rptL3e&VH9ek1bNRa$Vwz0>!!EibGCrpTc;0yJ2SJ zxLYeKya_AEGS9J>lZAbD4oI=p@+=OpS=5bMsmElMr^G%@iHsoRu2?dcp&^)~@gn`+`NvcQvEQ&HMM4bz- z8}mtFQA3gsQ`^)C%UnhjP=R7qi`DMT>=7m0IIH!#C{(1H2N4s;B14ak6&g$Y%WX(< zLWcGw&^f$A8ne$4+W0nF zozy+suRDj?lxin(sp&`cU|&u)^uUa@8W@jl>9^M`YcCuZS?V0<RPk6w~MTE?O{wmtX;5D3TMZGQ}#g;qWU#>>d@(Z<~X$saoQw_UF z;gQTIOaaxpa5$CR+9EV3a~Pv^%`i$E^a%?tEL1;!ayoBb3U-Sj5Ln}MVi-dtr&%gj znzjY|Yw*An;jltnTEEClPfZz-|DIOy+_7dA`cOBMA9ipdLaNkKf@wyImOF7z;Z*8M zkY!;|A7XiKg>wLfD;d;R?#cwehN?QEq2YNTj%@6v`%sbeX)A%Ka0#T0QEtg%B++u; z-l=1q{w90w=82Y!Wd?riVoh!N=qO3ez9RoqYn+6^^?B!WXc4ZFGwm~GNVQbt-eCxb&O9d&szZA2&*>5Jb}kWB#TGElcr}Pnc>S|9BLPmm_LWFQ zg;BRL4ujWtm0|y|;gG9bpi#Bxwz0L5z^fHMX^CxqVuVNDOv7F3Zd62p-)1}eZA8fA zl$vtsS{4f+*1M?@ZQkjb$q+>(mDd;0&UD{Z#BZ1_rqaKlA06qbKsVnY3GpyHyVQa+ zbfarwWyQo;?B0#xL9UPSH#iPbUuh zPCc5UIY_P1v`AiH0riVeGQ(h;s5k|y^Fp@M_dLQqYViRUhi&z(JUhEYcAZ%JNmjkV zw#D_~wI7%>*m4kCHWPidx_51Nt*LE}z4NFd0X!>N%GQZ_epFXOE_wy2K$Np6vyEaD zRfQiTWHSb;&*_U`i*V_TI?OlEL=|WX#8fWGZL1hY=o~aaCUNUfoK?6gv->tZ1_m@V zp*6?vI)cQy;*eOWWZsJ8_IJ=_kFVbP6On@L^;$BP9SUVg)5 zFGGX!sxO9O!CFP}`@3pXHwWfcU^=B413Q%Hv5d(R_Fxh7Q0me+a$K(4!O!7Oq~m!? z$CT85P&XHJrS78F+X{v1<@PkBqna{fro;~9R7l8)L214d^709@KKB#FSF)rK0%viW zS!|9IdsrLq6~vsZ8!vW}t<8np6|M$}64=L$K?TrSv~{Da)f&Y7VMd<7Z~u zZ=2q>=f^#5CDMapAzY!SKfKiIir=r3MM4*+OODJ5_sKu1`D_Rv9_{Px_T=AURstZEIsq6pm-3jYws!)DLP% zRN5WSwG$pk89$tb)t;Z=)nrPln>s~XzeN*GmG!5L6X%iSnaA$T+V_*lVtuLHPvbVJ z_ah|dgROFkr@RTB^hhMHg$g?&b55i=NGC2%C5X*uL8yCw4RrjDGvY?YTz{@}p(@D$ z1vNrBHgsWfdGMhylC@FKjYSdm(UPjUb#op%mcR=^I+dj~*rm>E3ul{Iet<0f3ldVC zWSxn10g$ke{3X8VYsBL26dL}SNo^lS#GbxLhE%a4HLEg-Dfzxoxjhw?Gf`|a@reEN zK~+l%^)B97rK$PCm<7A5cf)xKitQBuZZvQBIxKn|0J^L~mwt ztX6MJW-p_sSZAM7&CWZT%8Gow3GVjy<@gw<)qR}-mMzCz?l|hWue2+?$a*{*Suf@F z$e{AP_E#0#@Awtf>GEiHM~K`1+=k)e%che?l&r{P z68k5O+9IrPyT+>ev>L0rh_@jcI&pz2eM5k%4*dYk)6(f%%@Bbzs6~TX$bi7?;Fxx8 zbYG%PyxRuBsJxr1(!%U(#vW1VjVD!JsKdV6H_gZCxWo?Tr^!=MxeTJ9xzD}D)<5Q5Znn%yO zf7q(6ZQerz)3v14@;XT)n3LN%~>b#<#Q`FVR-?WOP3c`tAmcuqAj8RfE~aJ;ECH-Xp%wVX7+ zG{=#yv@*WHj!a7M~! z3Xe=DrenjKh?Jr7Hbqhlq@?K7?l}G|C&kCFt~$LB3%*Eq+N^joaXkcWuQdBIk!DFu zU51X#WL}kHd+xYQq+PSIR3^&kD2ta6HZi)08y}fJr%T2CxhY6z(tqb7kJ~gSpoxn= z`o%Ac6d=XT!BsjFmzhcMqo9WnQW}U9B0Ah>=e~OwTT_cu&DW;w>@;UMmC@Udoal6y zVL*qVDnnFBhKAh4@8s#Gw@^KI{(I+57kmx@IGpva0hs6$IZN9a613TobjEpaM&C8Puus{H!je?rcBh$b#{1( zY()(mJMrs`GtEZLEZU~mwV6sHU*?J>3)wQZhvE5lXZLlmi=8zQZ^8CD!ppN4 zS}l~vilviF-+2Xl!JMTZV?*E&DxQ9no3LCwHbsHVH+$*y`P*!nr##^ z$b}1~%ovI_LuJ$bHzM^hme*(z9{wU@4a4XMI5T57z3j2Mb-L{5QDsjG&8#=j{-lgA z6Wl2_9D4{9K`P&AHf4!lUym>=Z$?DHe5zYn>E|sCzm&k1=yMT|CXIr0R+=$mV8j2E zIJ_)!i%bRpSPR@eY$MM`UAS~^PAat9Sm-Gg7vspiZkv@K53dH~4|e_C8dd^c1Sp#F z*hy-~5eiuk<7Q%K@U^7|dYo&9j3)8N$|S$0Td;jEgu^UgXsMVsHh;$A`#!Q;)|`L) zMODVGxi?Zvrs@fa-EfRS({Is!()exZsS4l!Q24r=k`)Jv`*N^%xtDu6`%GA1D?(A4 zR*f2o*5}>-0@pgEZ#CR~qC450EWzm!RX{~s!Jc9je0+bjGTU}2dcTNV6)`u|F5sY= zZ?6dmL2LDfrKYwT`HU5LMiTj>0^_|hqb_TNKB`r|5RO!*!ieS4gSt|h{v?)@i$kaM z;?hidMih#noiZ%iXdfgvTQoTt2l^s zTvn@t<7#X{sVA!tn>f<n8kT=j6JIHu}UGvoSOjQ-OlkN_atUSmAv0`v_ zHfo&;{I@z!H55f5`TL5`uf|DV6}v(_GCe&3kdkHwEq1~bEN8e)*3yLQhm%tUoqLNpX9xOm-0I`AujNT8c4IWl>@uh)S# zpekKdThTzJ`W=_)K$e@Smx`eC0yHl;eEQg<3fhW#+z*kgavb8@mnKw>>OprfADo1_K)) z2)u4aH>+Dz*_Kf*WW|rlyl&Q^wsJvP2JZrD&}LBD$g6;PcMs-GNzlR9$xDa#Eu=AG zBPf*qo!QS1f;a)?+xPE@tGn4$p!A98Kf6K>QFDQHe1A`H+9jbKcgzvm<5iKP{Q?7v zMmzn!0;LJvM`Ft~iHq9)=3{?Xr)TKuI{95sNLLTzn46Yd(R#IsEv!(A7T1L4-))3Z?@^rf3@ zIgoe-Bm7?OWPM#Rke-%~dM#O*e(^gFgth)Ts*o43A0O}X)pNUc*Sa2x^Q{|r8;{gC z6RN|oDkD9(-m1pV-yU{&C~&{yELG<>jD#8ueuW2kG=dO>xAG!fikjiSq8ZRaWpAy^ z9nxS(xSD-gyAkz-GI?CVK90&U6T5wWLt`YN*u^}}CGLh1Elj_81`}ZWc77)!FR7bX zMT!ASOHHxd;%u3%S{w==rVx@E)?r1}LX9OSLC;rzdpB>m_hLQ=rfzPIP+os$V2F0J zBXA%Th_9P|JO&yFje?xqug8W#9uDFOEeM9{jUX;y53q}hJ>k@k zo@4u&u4F^OvYOHPn?ZM#wtTdedej6sSCOl`p8_F@%)ZZ|;pftcVEDcPrH8=TJ>BBS z^^xgx-NiHN5Y4I3mE>7SXqjrUB(IOaAm&Z%@Gj-kxyb}X?Mf7jP(a}`N%uBPP0QG= zfD!sl&Fg^0dT_3M|A`^@^axj;V-@@ja_w^dXid4*_`TFXF%@>Z*#xZnyp9ZO zbAs=*(Gs`WYa!Zmvjpb784p5bQ^*5DCxkyH9A+!&Mm9&)>FLfSai7&HN1xu0npxNk z=Vg?0P*pQM8YBV|-tEa#kZou94u;Q8_JQgeHyg+d*3g8whF^bGX??3fW7%>e)F?7F zwMcFYdeCA6(zPpB1L9DC3y9~(RIg~G3;{8zia~vB*m|MdB$ABj0NG%J6YTwQu=Sxg zA>x(UmF90BG|)f1guJLofZ?^gc!P$R_s!u5jNQ@y4{VO@YkEjl+=+B^!-Q6I!-w78 z5=Xylq+`%k|5fA_@Q!J}vOTVMviZwcr8Y}X<*!@Iq`v!7N}3f()%6yKCn#ENdm0yQ z`}`%ESamz_>YOn2N13Em>yP)Nyfek~xQ0?@U$Yl)$hx=lIN4<${K@+j46_$B66?;U z9fuX;?#8!kxQ?@f*SxVy9QroaCmg_w{T})HoO8sA_6_;TM=`Se#^7;#QdkG$1PeOq z>K3!ebW~}ZA)S_Y0)0F&3!8W3gk!I2l$#1S$v6eq<9^Gud1qpH!husZZl`cpQEO^w zQheO5=4!V(E=d;3ejsXZDbKKl=zBU{=4PSvT!hN+_>LK4o~PBp>JP7Dv~jWV z3`W7nn&qv2>(YX4`nJTfLmlXNt!>c6HX4X26^Q%$IEEoSGD4SMJOX{2fF#qLu`Nweu0CmyB0LQ3~ho9jxg)M>N@J%CkbHfuIJ`{ADV8U&6z*Tq0VV@V{5b=hYD- z3Z_-}PWJ0lBI2>6Wv@=^FPbC31Q7`4;v2E)HCZJynGMIV*lY^&Vfei#mJ=B6ZcWXV zySqCZrVb@?sL#~t0N`S$D$nt$3q!~440Yw27dXVb_!H-EFWCkz8CuiFiJYdM$40zB zNT5LobmKVne1W7$5klZMhr$M5c7?C6(a^>W@w)Qk;SgBFD#eIsgG3Dj#NrJQy?}pK z^GZYrkuk%gc^Xw=PjQ(=35kO!=d8IX3C$hI^CVvzJ{y2tFB6&tK+!J{koglRebt#F zkEwHcw7n48(*HYW>0fTOPv!;-JHRXWPxt`a|0{As`X5mVQsxH64*E{!wl<%U3Dp09 zY5Yfk0t+C{;4_RtK)}{blbVHv2>{;!xDn|YnLnMG^i2OXKmpJOMa%yW;s*Qw9lt@( z^go0s{N+IWZ$8C;$8P`}u>V_#LaelnKOjWmA-#LV2~i&z;#WZQG?5t9bM7?Gk3~U? zVzd!9XdB%qQtNygz70Cte%XnRXeGZw(wpM?mo6&)X<$))iKF_NM}CYh`ag5yMTniY*KD zAUrcYURI-``-`1R1vFobu|?iNF2X<)`!u3a*~ycwX}j+Bp~U;#$4Ux{k?D?gXO_{PP1VxXsm)?-PICAYb+Bi+K2>usbK$lX8pVy<&8C zq!GfUC|@Xw%<={vwom`i8>+lTG{C#BzWd;DIE4 z2bfqKaIGDyobHHDZeM&td~gLkc>^U7oydPQ%SHGLSY(^Pj(8MY{a+o7z zcB5tf)b)Jtdy~y#d<1EOc-Zm6I50)yfBce(z{02D)`j|Wz%H0R8-D2f)Pwe=U=6U# zHl(CJ$`83~3{B?>&Mo;z4gq9n_Dpczl%Ln#!Dv^8b|{46UAkRxXikeWK$%Ev+er4T zynYL8XOrnRQ<4?ob}D2~w=b92uhw0O~pb2HWyC^0zU%0Go!0O zDWFujWqq$n#RPF-{DFKQudO()+P|*L+K_wUy~0zusPZqJ(pFoH?<{}qkhSfz@%VlD zZe`^HVcd33F#(-vJ|Vma-5Ltl6jwF+7S*=n!`_Pf@Mw7&wm@%-XS-a@jR9$kiGg*v z;jxg|vChf*V5K0irk#Pg7YTc^(%EnxS?}xqlA5@$_q(|Iz0|qBQM_?JWNw7Qd%Z7g zctk=nG>pq8iSKue2GO?~t@=6z`TXd-dnV>-Ip>+}%Ov*cxi`2}vYe>tL6Cft>lYHKeh)GhoDkC?`pIi}rynYAlxpdm}^w zX6B-9mT0+%Vl$#qrNl} zwm+QLqs(Qa%suk}foTXN34;+bpI%WWpJ>U%6vc+^&3frOsO9jGvntESj0DiFP2%z+ zKXso3za~1cSv(nt*U%hWX``RkC&HbEs0ow{#8D_*RtlD=pHvp7Cmnq-u;^*fu_te( zVk8C$x}ygnR+E4eu*m2y^1?b);afn`_czlGsN*{bAJ3wQo=UAG?fVRr z1iEF)EW57uHx)8wlr4(L)cUfKpK7a9H9zrvD$K~fpEL;SHRSmXqMK1_rD#aM6)s;A zM7c0-mC&5lw8+uKqE+`M^ZFgw1c>6+6aW z#8E#1F`SpL3R@@2N)ocjwPV^?(1a<-cIO6zr@S)d>*dpSH6P+ zqZI7@T@DkW<@7;u!59~sh=(E8x0mEf;z>zBs1XbE_S`%>ag0B(A_F^H9k)Y&@P!w6 zqi_Kzfm0txu3{rTtwYc@FRTnIS^^@v0D3nSEP+Dz-kYh>5AktlN1%Zncc63?22nzU z322rvQ_hl|NF#*kod)*n^g2v)VixPznMX!YDr1KfQJNUZJt+N{%`Ad&ril23tMa<| zKgCcrA&-S}meFxHMh+!P_bW(oWcVwHI558Z9BteVB|vf!6Ng1{+>11G;#4f}nvhc< zmhrYiam{M+*epfe)0?=}A$4Czh^+tcg;JC;h@aFA=gWv(=-tAl>GU4f*Uy1s-gNIPPqRc_FiJ=Vry$D(ns{ro_ z3EzS4RqFuRyc0RxFx-&1-!Pmip(<@W=96Tn_f0vlG>ZnY-!#eZt%2qX*W1JraBJHc zE@aNz`eSW{H?PLyc^CIsr_!>AFzwa~995py4a7OCJ}=z;Vis0ICDMMBAP+=$yV*;4 zDUxefQ)BdPTSn`FHPR)42v)hlB-SD*Yfmz8tNi{7+^JvRr8YQ?z@sfz6WV=OJaEz< zhUv{e`BlkIYFBzpDNRS*bVu8@4`?`0j3Q~)5fOqa3wdOZOws`+Wgiy z;0NlZ8wa>==^8cMsR;U*A9q#vTQu-@{MU5g?>)iiSsZqdvz{^>cI0K3ufu*L0UMt0 zyMOko8g_NDn}E)#%bhlb?R1Zt0Qa8D?>v@?C>WjPq2@;}DV}c1TuPIUAd%L<)fLuE z(@Z@g(Z1qEO-!5oi1~Io%o#7Pn$H=RSt&OP|I|*g_?rU?v|8Zwu`jEf^Z><@iuh7r_1ko z27|LMmQG<7sj1n8oXWu7`bOH%0WlJm5l*rUsIt@CCH%;#F&NT>o^G`5Dq#eweQS9$ z&o)dgm~%DDVk(TW#kXY4vvvHi)M*&@QgV#Nsa6*|sVUNZbJf-DY7JK~C2)or_j#j4 zH(Ap9d9LQ3G9ddoT_6#92IdxAadWOWd}-lsDl^lEveHF8#nth@8e%O}A`F-5T#K8! zW_~XHMrU3_NgX^!hxKnaRopQBiI$n6Ac(tCj;_T~ZVu_6K;);1ElBLdRdDi9OC52j z4#TKVlJ>2aJEu@uX|6a`Y;&Dn-^0rw9TnQqdK|Q{zn0^g!La0)N`D03G!x^=&n|Ay zdl02U9(yX;FVx_+y^IegOoc@1CdOW6@Sb>M$E;mpqb&4w%~3XEdOj#HksLq~P8Hmm zK-7`YQic?U7+(pQzfIQWc9l!uI_(7Skij7j@U)d7@!1!JltT1f#WDG38L87G2vG!j ztxsrwdcFl&)4pW<`7@+eydNv=la*{FM`I$x2X%ez#+m z4SyFD(>h7h7p2;8tYwSB8#@r478s%TJ2EI8Wa0N@z)t@+o6+_($8dKKN|D*{&MyMG zdG3a#ATHA(D5F(utsPo|2Bm z*1DValpa|8Z)}xY=|<@*ChdBf^N2DWPi^py8GDFCP3x=cFt@Kyr@r>801}srW0odc z#unItGl31;OO0c{mDD9vUd;G)HF&OmM;w-lyA1Lw&`DKYE_XP$sO@1GM@xxf8dK$} z4e9h+Bx~XxA`j-OErz#TfO3cBaIP^rdNU2waBaag#-cN>XvL86ju>vwhR#7LNDNwiDIO@TtjDCeMf&awXDARDZ5f^swv) zokh5Pr;C>OIw?hE&A!sw?$m@a_108PcQ$wgOd&IL5}@{;Caei?%y zmyV&|8B-KXm-(|-LCS3M&d~Z5T4&sOR^>Fr1s7);q)qveE^IPt_?Nbr;>VtdaELn^H~>bRX6f8LFMvJR)~o6Fuw>9WZ*1d+19WEjOR-@gqn! zdhm}452^~7iOp`s*o-J+EW=aBb3eeBo2F(Ldq6=S&?t}F$<842K_;_*==^PQsrmih zir<%d;jH_-A7z^)YGAV&=8`*{z?ahFuy!N=iIH+k`5ttlpMwDeWFx%CXj1)xWJM1> zgebf;Zy*uUTDMpWm}#ANj9=j~z84TpoALrKFWDw<)=d-B0M( zuP}(FE@Ov`G;XRss$?&@3J4!N85~y+7iHglAI7P39?tmG>efw&O!+? zJFmkilPa5bDXkkRRpTwLsMNtQ2a#@Dl`7OOpmcRU(k^WmbfJ3siSwWc4Gh_BE{MiK z8tbv1?IDsudd2g(b}2$S@sql56+ZHZBehbT-OKw}TC7bm)!y(ek@3iylYPl0#X70KtP5B3$509>_xgf3=wY5fK{vAKaqk5TYVXK^*bO}a4m1w( zt>H@)q}{A*JdQJc;jP&nR3Oj#Yg5(TUf54x->kiQ=+5fN-eZ zYm^HjQZ_IwTM{EgqtpHRVY{b<>Lda?Lr02n8qD_lD=cimFG^81aB!wk?g0F}E;{L+ z?B8GpCOsfom@tMiF+&7j4#CDS-O_Smm-G-`c>|y==nIRar8X_VWE^Rxre$)!x?o_f z{h~1IsxnN8vM$sYwHS5Zm1X|(0kjPb_P0qQf0ot`99EW8xGmXS#jD-6Tqm=hYcU|nF zpVU$I$2z%+G#B5s+l4>tq2T$zCW@Fc^W)}q_VBq$TKu<$ zjl^(AQ9~ZfoDMlaAd%M;$wrbZpzUZQHipv2ELSI<{@Td7kfJ?{oHh z&iDRNW7Vov_oy-Io@1xQ)B@4e4uxg>ZvkDK@p`KzwVgnos+NxbG8Os%*d+9S z+wXswgZ$4F`0`|-F^HS}R zz3cMb^UyJKO3G}@#}tteGc&{>%|H~$rwLfZ^UfyANUaK~A3x`;$3OKt)Oj5r9t27& z!PA+;^=_*w%j|>N$L0H``>q_!4L%X11CVgUmmwH6 zlbB90M+X1>Q5X|~O`sw>B(sDvf&_m0D+KyKHpL>t$$fPO+h8~?+~cJ3vXCpa)OCdU_f1qa*8A8NP8sRGw?^Ll?XL6x0Am2}y7;~L3n%C=89 zIUz+iZ~R79bZPneBWE6CCicqT2FbWP%~Bb6fH#bQ?qXptBYZ6jYjM#%Z7_hPT3L%c5F> zw_#WfUfw;lUP>(`84k(7(k9y@+G<0?r*hWqtA%lh9J=8Zg z!2I4Zb69wU(I@kM52SeAXd0=V({8zORbTkPKei80DYJ_|+^i}Y#dAF-b7*;*=a$MQ zbgjKnmF2h|Aur@E^JXPtxuBd73!A(f8vqc)B7JIPbqQBrDBgVY-6(B^fURh;|4@cG3Z3a`?jCyTAA;w)Xobn2n_Id^=x>Aq%m{AqNN=i| z6LS-#{nLqbGV-Eq{m$8>7TbBd;9KU0x-!+&PwW1OA6b;Qm3v-`ptsyzo=EDx8R~Y7 zlsmA9D6JTkqPx=s_yOxT*e+ntdBr%sLtBou$jQg2`zkI*iZRxLgGE8fB&@QNt^n8R z1W+&v7O)0j6j&DsmNb@C zp{!3)@pTW-MNudCX&@N^$dF;E`QBw$mA(vI(QAmJ+^4l&7;4Kkps7BWnzz#L!Xe$p z-o`QuIeUDaFVs}@+iNvjViu`#bOwpK$ncvv{inza&#&xG?#zgp^JftTBx?4%#C?a@ z-_b*D>TlIa6C|_btLK+zXD4gZ?)V*+hr3ROjC1s{c}QtfLVBwL#IHXk@tI)nk|E>q0fSkVIwg=4+odel-vwEy%G^3z5mwQ;Xl)Mm`w-kj0gVOs1hA&6+ZP0r4#< zA@}aDzA38P^)*;wz*w&FJl&d{;l)?mSVyr4WV-mB7ZV5;!H;{>?B1G-(rWW5>jKnZ znn1?OZ^fQZ5Y`sR$1N7e8l})~2T`Ka1u<%=#yl^OTLgsLs7 zBgzuxLBIYDdc*l!{iLJf@1I{b-*UiW?4YJ>81?7Bc)L%$I|^9`MLoqLMky%RtZ9DO zWj?PFbD>=zXTxSA0|dRt>MrGHlN^Gw?-VRU=v_M%qcVE2VY?3RCdrh&Hrpnhmi}dc z{6E&}|A&D1mm2x&8R_53^h{qZ=L}yh=gfb#p?@7&7}@?l{}-D1@9_NRGCSLUFSE1# zi!wXg|5|3JXJBRd=k{?ocMY7w#3N^;J09emSe|dhy6||nbX7f2Z!8h6Sa1*)-LY4o zBO;gsK2UMz%cd}vxBa$y)_;iGOj$NG0FKB_=%Lo<^&K_0?alzv-9PyNX@FIl)vBc2 z;mQPTjWJgwP@C1`$Aj}{oBv;khRV7j66+_;$EkB?1A1309i zQeGeXpDrD=+OW4_1L&#{A}(-0g5}k@Ndz3z5YI<4`ClO%BH37zxCBD>G5m9RuIluK zVW3r20)8bS{OHMEE)raee)`?Bz1#rnK;#*+>GQNDlg}+v*IEg2{b=~H-QAGa#PB(Z z_=Acs10NbL_+r^%muUw+023iX=yy%g@NX=>(W#N$JpJ4m-^6e25l_JZ)zl)OZ?RPl zV9X4Y)f5dv>4kGRvy2Rp86z2qmNlzqYqH=hM)rgzXr!$eatwB4X^&kzQ&TFAsmH}DM5SI)xQE|Hr-_vB49=FI%{0UBCn47lsPZJgB zm3Ma$+N%Z*=|Exbe^jO@k0>439(=b8c@wCijc@;^(lQ-}o+XD`A6MBW>XK*-zZ zBL=Fz`L-qv#$fuJ(F4ZRS{lR%>PBMd@u`g$-z?9hxE&Q2se|O6|qVBo9 zgq(m0#`mCBu5*TKSw?B~C)4w;hfnmbxFP`)Kt2vJwhMtI85C^r}Dkjt*JHQPGC&SgX zvvxMgrEr=jScFp%YiWL{L4gE6Ns<&)j%jsukz4I6uxq;_#pvhKEiQWDzMk&EmqJ{!qF_-X51oE$jt_sAg^ z5d)_2$!_&XI+^w)X~g}WL3}qr@`Vhv$e7d#ii1o-s-Q?Zibbzkvcst({bFrvvDCBa|+_J6SEf3Nz@S=jK)*{{XpL@MaB*k*3B2ODHy;i-Q%A zwEf2|DuyU1O)~BvAa|^~7(-62d>((@?!22i747Hy4D&Td5MYT2iXkpk!ixtwzc%a-oS;(klXLA zP@iz`5tUmr5%Qql#59w6GI&ESFl)&;Nta(`VhD3PNzZicY~NE<8r`C+l88VywUbGg z=WmwW=D}Vx_GBa(si_|moN^D0*+PMMZk|6*^o;N0&npM>AJiC8d?Zzz zPop^+As3CqxZM&{4V^~LKy7U=BL`fNEwMk2*{6z9);ldFChjaM0Z6*3af*nW3(A&W zF@rm{sn<7zF?CMf9Xm?|Sr0rT$OL{X2o;VBU~L-;EY?HEGL2q(Nc=GHiz@x;yYpV; zE2E|s29f{C6rXQ95(;x9fUIjHkcb;Aw?>g)Kw^rLAXG*E<s%SQ=Y^H~9 z%Q7VW%9E<;p1)nLM<0Oo_;DmWQiY!R>Dvy$yiQsGHj_X+-V$tXYcp?g{BZ+A2aD*^ zumg3{PZi(+GP=i1+ZalnaKN`@;>#!FL*hr@403!ciukq5F*?0I#>+B|6Bapv%6PRI z&g2=h8WZrm>gMGV>KTT9#qBr^+hhv<0>}OI+Xc@~Ng#M2bf6@ld~*Wsv5dLHwow?R zy3#yMvv6LjAj?0Ev1(I|$a+=xcb1!r!7iaA5=!Mf2I(Vklu9Wac=5qpNeTw87O>rY z%F1Y{Np%Z~;+%;r@iHm|RP!pe6^-B#fn(|_GOTCRlwKyV&B4z2UFOvXdEB_}8_Fy; zV~&7`vyb<_4rtB09i!&ML=wl#D*T^nHIv@vHYYW4{a@W^)+<_@$(z`0*rIo+dK2{d zrU#&lV_borE;P_0l=kx{RKl$k;tk#BGLBEU2)(v1kzA8v<=?q_H68lGtyp)1P^>VW z`TOBLt%@D}kCHMawDOgl5`LLrh##~y<%3XEw8R*X2tiUNt1|GasQBQmPBTj@vUO)q za%2pbVy<3vn689YI!|@o(UvK9SkdTayL}`|u03|CCbtn*?d2VFd*i-5e6z-`j7z5@ z7_0sRTm8vbD=M%P($j4^Z^mp;ow2Idkd?(o>6)a#j6(Tvr!=XidtU!ik+;}mRT)+ zB2KwuTtOuhk`|7$-Rk&8u|arojro1-{dF7YcF4Rh6tb&@%KHV&T{H7bgldrub->|E zaeN-p-FVKLNmY@VH7pGNp|FTBNU#20Tf@l0YQV0?Zmu86(nPJN4{xC)luRp5cFc6n zl^I*C>ev?D5R;JEuY2evTCv`Eo<`54TvGhTcDrX+t5(a5>B8E=sEc>i*M!`)AxHV# zZeFmlkq|iDzIYmM*7UUJlsZ4rKJ}60>BlO{)uMP(zjA&|YU#x_R#bN!2+o2-pQ>@r z6(4$Z-z$`@WW7**&J`JG(4;>S!)J0%6#yGZCkyq#$D=|47RQH_R8g?B{Gf0>Oler@ zx0fs@?2tGdrTg}b%QFO16XqhX2tUu~m{>gx#peibV9E%r42zCchY0cq<(tZ%E^?Ad z>&{QI*KZEr(C613Uk#jd932Ju$zBC^PLJKs9VZq7b-LUI%p#%FW!H zi{wQXRgoZi#cr7i7W7N+f|w*g@V+M!_ru%t0|mp;>H0{4ia?0Sy+PREZ219C%8h=9 zC}#FCkx7ERPt&RsP59nHWlEMHFmqR|)d!*nl~&+}I5lqCFZDsiS-f}}*>6^V!0LeA zC0)d5oTBKJoqBqks@g%{w|qE8hi}^*0Qw7;;8*vN4;G|`LpL;J1bg=-&xYNSV=H#EF`Q70P2Z)Ks4m^RNtfi;akQurBp5(sa2~R&3n8i|U{VeUH zre30!9#+ovKZY%2X#PkhfU79VfRIY>%iXWN>?$^M*0MittjsuWrHAHOO9IxNGmd>U zY>3M(-iDvoZ)rYS8poqVC_JUg78waawq93Q_8UOzh5n=?6;> z)g&R{n`;4P>U`)yc0rCv!2%kJYNOv{CS9`$~zbb z@C}_RsNe3ZAd9@~8>3EZsQRDxFU4pF=S9u(1C=C=go5OE9rjNqzIVcL9vZAc$nfHz zR55VLHdxXN}YLfwCg6Wg*but=aX6OfMbROz(C)DBX*$`h`jj z5eOq*u&gin7Z=z2e&n2WB;6@OH`mo>xz^my8-?V3OM6%+*SJsyHRhkZr|+He>k@Yc zse7|K5UEzvN3$VGa}2+f$`(xbA{h?!&+AOlXP{igS~n*wT~<##zTNI}OBsJ`Yc6}g zhIrl@vA>F{Pg&bUZKQ7YfD-KdY7mF`K4z4UGQp`Xf}Z+^d7;G6f0LEK<%dNtdotIx zRE6U`Y5km7SiVL4D$jhsk@Q%^%WS=b)BMn$hAyYx*gy(vUC}HYE>XVDL#)86TE_`6vGWulJ z?qeW-&`!HAPLkGytXsZ?p>h)u`R`6_5*`dSpQ>#|Vs+3eR0}0#gl%aLr z#~b^*HbiM8cKPfG%8RvRg$#|fI{o~`Br0}yY{bu>l{eR|b7A>)JSL6n-{BrUJb8{bfnV`{|#R8uTIMc+{nt=B2HyC%g+$L1GH# z0@DWcIpdAHo`yxhKP)R5k} z-FEM2gB)#LS{^h*`OK4E{VDn<^-?fzW?R=oM-#KA$z8*fd+~y)*#QBN1aUj|Ole-xeP`YB zJJqNTv@5ss6*1h%)0>iQB%Z27m9Bur%!4)3u$ck3ZrKvV$gt^YhW$Zvl*hPr1cS?d z=*LLIy5}c_AwpAZ1AGa>Mt0pT(vy+4r3f4r4JNf%;Tq3LEr>5fkG zNcONf{Gbx1?n3^$?+@nvz(wqlo-oNVGpgVu^CRY>=F~qMmIEtfFwQQ zDS~SFfrvDl;BY^2F>o8d;w;*GSf@d_om@SBpyf3U6I1n^En+xUDDIW20pc<@hjp=V zV>UQoofbU7PRl)OqrSI%gMmQWNcI&Lixr#Y(jbnU=_rQkO}%t~D48xdvt6uT2;ErG z+L|yhXw&&&iqa3F7Md>`#=%yM7pAuHw0V=px`tGLkB(1L8^bylp71Ho=%o{&8rD)O z(Ks5my?BT-l-b`K_Uds6V%4pw>YRtTj-oGQ*EA6?$R?=%H+IcUj1jTpM@P32Sl1yu)8UDjjRNl}^4<0b-lu(6+ z(YkYb}Cfu`01+XJ}f74zpP9grAgKvu^yu%{iD>bE*V4lk0aa zGO!CUD=<5wgQSlX@FWZ(##RVW9%>?3G2%yWLyMxVXL}sc#=^71*Ooa8jfC=jsp8L#rn~$f9s_fhjbdDihrH%`ep2pIzM*Gv76{S<* zyQ$JW%!kA5YU8iF8lRnt!!M$&+p~i^_r{bKgEB8-NQ4oxZCB2R_CBLhd*egrYn-%~ z7n9G8`KAh2&Fr-a!1KOU78@16uh7}4@1!)>$=kKL=iov%{l(tq-4rV*{^a`rOAU70 z#bFG-)L&0BKo6&i_hokKPRL#~7j&Zze)}TTB&R&}s+B%N z>crD6GkZ5zw^#9t@B-Vy&M+!@UYK%HnlG|Pg+EMz3{^#(OR?j3w`o39*$?Q`5b^g= zkkeEEvk*8-%)aR*xy`SYQWR8He~k(p(Wh7h_iR4SblJ9v-UhM`5AI$UtX= z!KdFJ10IG0aWGz*#I^Q6`3ogwscV=?hDp>Njf{Jw*NZhs(>JOmHw z0UJd1L(CkNIY$TP_1JWAsMmWeCcDZWhXpo%Fq8w=h&C`vjNn;0f39s9~#Ur+sRpcCHOv13bha$U7!IoO(027?GdvmM|!hVPxCTk37QqyHZC> z`v?;qhP0XCX}k>813c(Jznch?hpcHtnC*W4*kPKLY~Nu_Z0rd5q=`BY0tRIM87O=x zh#A`mrF`$l>I^bCdn!YX9B(Q={XBkOOf#&gq;G?Id6a^-mm3}Xz$DD?DXDhzR38;J z%bhbZanbauV^=abh28>E>sD#nUpbK^mQH=t-MN6lYZ!j=?9wTceencxx`^!=m3j_r zJc{Uub5!=URS{6=_)M3fs|{&B;t;Y20%!s}p5knQ;h!tQgFlxDhG9ytSj%3FB>@`0fWXEpf z(5aQ>AS;I1^ygPTT<)0~vfu||6vQ#6^yt;cRQ_k3t(VfLky!ZTjlyqBv?uwf>BRc+ z>`GL#=~9xi*ZGZsR&!~!)03lygpyiqix3!)_Z zPyI(0L{|ntRRTMDU5V}F1#hnr)Q3ZgCP24Crp>9Ln|3DjJ zNW)o)M{H0C0&yT)_C@A*xX8Ekum1(Y)I>jL~(E z+%C}koB*$q-vIX##ifo8ioK@E*+09UAOG05!2n+5DG7?_d*>-q^5%YZkOaXdcK#AU zC-!lf4J`AHe19AIrER;SK=2f?H26)(6FOQu+_hW+o3C_ElSGAJ>D!2ug^<{{bS&{WwJ=$~6sb4Otum)+r*O8_ygT2qOYyY~Jh{8$655_#> z<)J0Cwh>cA>HEyq-T6>?>r6S}4|YuHR%wRV_${yc-I-M3m2BK9dz|P^$7MM{mU7*WjuKH-6Z%oS?`vj<1>V2L?CbN#5QTA z=I{CEtr3OS70wnN)|71pP5smlAjkKQ48d;PXNGGXG5hq7#WVJ3W(>7fjY;P^L}%a6 zu$0ml8@Q&{L(P7i@18r?*WoNeU)-O%G}U0`8~N9iK*Q5l+E?joOibdH4bAF<=zlw; zf1vXby^g_~VbwQ?806Y*j%AKh>&310!T|=I_jLV)K z+-N>XVm&@y-^m1NUU%N@@z1AeV%A#Ok9@WFthgosiG!0M=-!u770sl@j!c|}{Y^qr zgY4%#^6+yYuVy`DKtxoONsR4Eh!`E5SRfW}0MOfPXFx3*GH5dw$_pJj>I`?iURzy` z0R1NqD%a<&?R77KM1eY!I&`#4?Bg4Rq`=z0Ec^fam{KKjdb{y+I>2Kp}ygkRT2#L(2( z#NqFS|2Hh;zXQ@=M*IIkx%}I>3PwiO{|yU?leG4ygA4isq;Z@0!ME)b5#@x#=li&r z8u58h<_IGZ!QHktX&YBa&w1{aYc|{ap-*qGErLiq9OKP&k=}Lc{astxz;{5FdcYXa z-DJklXTHWjLgZdrF1h+%TfCG|`Cm<3PK2uutn*4^G=J;GDC&Vfpt#^VSsXf_Sf$16 zq51(+DrR!jF)44H-G;<>vYOejiI?PfsQv-7p$z+@P^A`)*)+wnsN3-Xh8IgP@n?D= zO!twuyX_!#vX-aQWU`nxwxFtGj;cw-l?T2X) z&)sR{H$;cWYiXzUdqlQ;FJy}xgn$fTNi3uyVS@+loT#-ojNvnGVab-~BDV+pJjj;k zA@77U?jnv?>1&OVk9bhc11EEr3f9MLTWCl7$>=aV$O)(-M$9KqZl~I1!A(G{Z9&q% zjK2RzD*JzqwtvZ;F#IQY0{A!o2d1yc`|I_$|HHreJTUwPqtJi(Mtq(BHR)x#+d z=$E53U~%lvr)KTT)hIKY zRIAy2<9uLdKuI|L?)116#mV?(2t3(w=s3mce74-J6LK^{ryIIFgAs!Jg$kx1-k|Vx zFVmxwEgO;9CwXF^aKz-kG1mq>I~l% z+3|%%Z)1kHBGoY0h)13~S97+t(K`7H-;Or~jQ5ZpU&1?s`Dq#hblLqZYiMow^Mz(c zb=adUbGfH6YL{vwm${@x24#qGBf&?`$oWdK3qFQ_x`8Rm zrR$=JC935u7#=a!!QonuPmWA5rcysIs)DoJe0~;ih}end*|E{bKzVA})sTe*;*uDg zfR-@dN-#-!zI@8TNZ#B7xn^XLLXM~#gs*KAYR&RPAjNyV`?UM29N)xA?ujzoko08{ z7}s!%9+CwUOIEtLjsS+qZ}P;AuH(4uP)2WSnHOba1 z1fY{iTmxmV(7=y5j6Y%wx_IgW^~xuP=*av#@`ZLM`c5n}v5O_)BU<#u1A$8a$D7Bg4YaA-uop(bL=v2Z0{CrB~anh0ne*y>S+M0t4eKW$GKJJG8`O^ zd&jah%7In1v1ICwQlpU_!39_fjeWxc`$JTW2`BVlX9u`hj0T2ANA=hZVkJ6Q1O20T@VyBsS-WpI)wjShRnURsG`*8i>U5K=U$^`J|(cvO1 zu2=;r`KU$Yz9>nthO?+rgdb*^@~p7wEcJvQ)sx34JNR->W-ydtrbH+>2#|I%CB&wI zFU`iq?)e+h481BrR*CkCBFai)gAQ0wMg*wYrx6i7YiK;cMpo~N`fxJ_VspO>?|pUF z+Hxy8Cr@miM#Yqe>M|Vb!^?m34=R@JnElG1CJL28fYLA6CDLXei?#ef_MFCo(^x_` z1|4SaU5t)c!#Wh-xy^9Ab_H}A3r+A}%Nc8WwhLf8o(~?oE>227+ZrMrq6&RT$$UQy z#@7gg9>!EedUXEbYip#4%hJe}KX$^a9v$J5;b+{>jm*l<+&)2WGZ{(( z(jVQ4m6#Eil`_t9IpmwQiFhM;?ZgWzlIGu3i`$?)XG?|LlufB|+WMuyW~HSSPAFxV z5@hDR$u+3&(-liZ<$0Wbh6cweN?9M9-d-Sfa`Y_B&xI46Xhdc7yx17ZOyFH1J*;gL zqSN@jQ+`S*nQ@#zY%&C*Ncqe1$FVN{bt7CJ9)3U)F=%c9HO(R+0fa&HLbPIY4AGWw z@cq23@u23U2*=QI)wwG4c#0=0YKPQAu25#k_@Wd*Z5E zIfyoJSG~Py5g|(nN8Pku1o*+jQlYRo3)3V&Eff2o3@+m)M2rs0IIB3<;zUDzne?$v zvzGisBPu2oTOH?8LM+A$@|r>%zy{BsxrxECR^_7BK%_`}%i9p9W_i4roV~JL0T^9d zXzPL&9<^zy@eYu`(Uw?x*#va^N5xr!$%P&yWBWf0Vv)}VP4_~kG(@Vf=IU#P1u3g* z`clhXx)K5J6X~m2+toB{o3jt7pyL!>e*i2vud7)|Hgh>DLcL-lC4?gIrumV}(=u+S zj6Vqb>Xmts>ep@2p$1IlSP8xxrxHhrODRZ@Aw&Cfh8aYs{8l26itmS)$L$ylF<_7_ zLS_D~G|!kC;Rr`OFCXHHeyTzpBkwj0c8Y0dnSWGA$5Dt@AsVKej~I`9VV#-U>L~w* zobzH*>7_q(Z8mUQ??T9Uw^5E3tbnIwWr=g=Q8YYqFW3AEV`odl*UGMvhgadHc@oQR zh%v(oTAOm)Jl-WSKv_S850BuL?qvf9k{pDkiOoh7=9#-O$_8I7>qb`&YkPy1e_O4P zOGYSBlGuMQR`7S^kz#umAk}`^Nn6S(sc}8IfWW92ZGs?0cPOetUBnWaektinsJLXi z?5PwStsAS1B9dc>6&5SW9xC7viYxahxy$`i+4}wBvCGAu4a{*mA%tuYgCX-Y@ zYUXsT#t24B+eph-(QIbLti~eDaEawz03rgE4a?6qXKPE;J_pwbGEYL zbN79Y?g74r=gYo!du^V)BNgF=fnVDrT;;9hXU2Jb0(F+=%kk&a&udey-S&W$eTKTz z!Osc$ky{l%q|158a>)A$lDc7D+j#Kqn5q%xJ@jR&;^ZE^COWr8y&0THSFP;WIZD9O zo$D@3$RC|~h+s=P3;z)KH33gizwd0`t?PdFFFTIen)F z>-D%B^Te~&HC!CC4ij4|bXM5#=fLn%FfI%j#g?eRfgF|2BJ-IJG_=i@gL7pqc1X@p zYlqxP?~(+!N%8SmU0 zR5f+d4XA1$up;AJoa;mxXTtKjumpjLARARJj# zO#D|^s%Ne0VdAY&>ib=BB+|{XY1Mro_}ph{7zbB)<8)<6goP9p-NwfTMIpeXiF~Dn z_>c!pd|S)9oEIVi--s(WJ8~W8&fSs!IG+J=p3+u4zhuTgs*jFRNvPYq_ZT#S)%q2{ zS^68h2{t+41(57iVLA#yO!;z&N1Mki7}dXqVArZNsFfMMb5&e3eH(IVP7dzi=yy5V z+s4M@;6S~N8S)Pcj&^}R4iXU(C>WcLne?mEl;DbG$)()X(hN<5#JPKDJ-(Xxk zsBg@y%kB#PH2>EzAMkaOuW!FYG$8SUdg2B#uC!rrdsX0 z6PD#I6*=OxB||J8*G-%$k1;r3GH|Pl;c`+GbEY0%SMPN>-gHH%oGfsJYfpgi*(3fbn1bAfNxO))d0zbhr_Vewac)Phe_BSl!J>3ZLk$JgSiat zPz2z%^B03BcprzNoMo@`?M*c4wrQfChraTHMl=m(zOUejuAm%ljHbQ0Fd=zZ+<-hr z_Y=(`MN?(IXt0H}n$WwmgwhxyjEs*ksY|qcaYenCj5QikZPD_to*A(!bXDp+)!hN$ zLez*gB6{MY^paQgRMNOo*6lpT4U5Kk@z152d17}0V(KK-jlV`LRT;qv)km4H#dl#bY61in? zgiOD|Ml&=uSfP&A^&&(1Ry2yWEL0&WpIZkxl*t*Sl*_Fr%6M+~JFvQw+i+p4z|%{q4DmJS*4K}7?LjF|e^araNa}vde``yt@aMKqV`nR*G-@MBGwaUu2;$2 zlB+1$To+;vUC;IWaShNH#%~ef)qA`($s}UnF~%NO8iB}0l!U_2FeD!30gnk+g~(Er z+bPHo6oiEVzev`~0(42}kVu{qw-o(~!3FxLL!FU(y}Hswh8=6*w%@vYK>ieL-yY(s;OSCDf5EF*p`kNWvbuu;C2 zM6}gDfo;S!uJ$~a!zpaWB2#pDt~KBIAYs>NaeZ7XR5w*kc{J59SWAIzMe$VhiUH_IjxA0{H3CEc_3}vc6q#P0+QjwS@ zjeHb^w_p!41As9el|6CM?+y1{44{5~pDHHiAZA`8-*cjp*$pe+!R5P4*}>(tXbOmE z-PQuYwGkc!<>08T$s7g+TBV!^;R1fH(QO9-*6A)Fh`EG9AGO3X@`JgIy+J1xytyIu4j zf^W4M*>1>wTnwq}Lt85ENX1&~Fy4&v?Qpk_S^T3ff7#2KQpaes84=!g7l5fqQAe_L zHGQBFwZK)MI^i`3LaVw}4<4neQw6Sv4y6VJn1+EJZ{&#rM@7G*Bf*w(Y*NXY1UZ~z zwQVzGh21)EkG*IOJ{~-6@<~Q;N-eA0%dSUBu{ixPvREto%!GMSQl+MHSyFoELQ%$X z4_kIpr9Qpf48(h2kvJqD2v5$PH7MquT^oBetX3l-nJ@~+DQj=WJ7K2UP%Mu`QWo)| zQdbQ5I~bZX;-sev(t=b_lKSIK+15C2fG;xTqxZELwi-{ag1#$S8UcH4<(oAvqO9aIr%pxIvil7@;S`MV|-prO9d?BoO zi9`w)bS}d!otZM-$a4RBg0?~;oLPg|xz0DwkI}lKs4BeHykBxV4%sWWlY!>a*^l6< zMHj9+>9p;QmyPe>2m0L!Z>P>g+-|Prri>My2fxoyMt{}2qObgHWkAE0F$5m_i3wUH zYgD7^&&Bb<6QmX>XV1f$vZa#%$_=?JAu2iMYcTP}P9=;sx5qmxfcCa*fkCo=_V2}y z=N_f@6O9G{UG`=4tJ4|dzjhyj1}~3_z69f+zy{te6;VNj%bN+M4;WxIQ&nIG-n=lN zLNq`yFoWIb;exT5Z0AJz2jY$&5CnsQL*mrtnVO4WgthSOk{+6J$O_1uQ zrdO_z>`bX;4qf+Rwa3Tgb;Q?bA`k9BnhISU$s7mvIQ*JUrh|xe?3}J~BUuxFbWf25 z*sobNion@YVNo7ucJpk3;I!VVnH`^?_w5ZJW$MvIIWY$5f^H{8l%%urYlapwm8SzX z2GR2iNA=G?PDm~#Go6=e$kyT_-W=~pdWneXL>h(;&1A#hBu+{U(=$yiepTvaX#FOJ z+9ldJFjXnWj?$##^+djyY9A`CaU^rNXB>yiVC_}t&zx$ZmA%kkgQWtfbM3n&WWayB z?P13cc($?Qs-FtJza=E8a$phhI*fg&6i0WK>t$O|Bwh0_#c0jR$lXb^E3k{V5+cPJ zdviGJa>*+Gsb2jMgc0?^x1`8r+k8s6^mgJ4U!h#pW-MQU!lccvq4V~B?ijt1Fs_YJSw3d~#4Ega2J=aw@DzZ(kw-jPj7GO1h7pO$$Fhcz{7^ z62<6hc9l()ReE~Wbq&r|jTgUA(4imBOHGVSHHk}1Rx2#6vUQ~3ZRCc1Bxs5{dFW`7 zR={qxGTRB;A>X4^%5u5cyH1(}d-H9dcJukUN@~+?=-i*(dYv84n(V1x`{V8T^X(6< zwu{rw`qw0TqqCefk#mBu0Y;~g7bY`OvJ-tOy-|cba@V5xd$fFAmlv$Kf^0%Vm863S z=gAG1AxqGj?G6Cr5Gf8J6txXA81kl61{h#m%p>DTYe!&5daK{14dwP`to~xdr^q-F zW}d2AEpxV9hbh8n*jZ#W{%NdO;5*`Xi6b2aNU!fYj3io#=HfR#MwN+y5_rGr=*i|B z-t+-&dN(8LsSWW(s9;Ij?^s2wLH<_!>HW5nQ)I6L@b-~{f~4^?lclw_Az=v#lM^gP zIC)&kEC$Bxs(QN?&3!8tQpR5MhYEFAvf2WiB>X0gZC`#gnenm%q?yetZkJ}_qu+{IR zKSr;49!*DW^lYD~l+3N$HUoD$-k>13D6afL1vI0sIRs<5o1}a8lk4D7; z24hr2qedkrii#qNf+7|qC}I$>i-q>T^B$XhJIj~v4>{jCaKv5i-kIObojdp5nRj=l z>$y#v>U_`iuSq-UIVBXXOy>)BoG`sM>63o`uu$^et+7? zvyCtB>9lK#tale)$4T7;W0#n}U;3x0A!tJU%&2u!hNSXcvj$groG3T%`g^xWP1$F6 zXEoI?Ixw$tveS^$Q|s^FteDr3_xfsjyw{6Q{hJyL9c_=-oXgztVLUZAI9$E3g zIlcd_-}{MnJmgX3{rVl$6x}*yd#Rh|DE$gzTlFZnYk~d?jNhGbyWGv|klU5NZjb*w zuwjN)+JI5Xe!mQ;zqI7~JKJgEhOpUonFp^;sGOKAthY+t`R9mB1GY|I6ZQIV#kbXK z%o}b+n4fuCQn&75O^op{nf46hgx6@Co>T5A}_P&mGwcD77m_0&My4y)2gm9B_lo+ zuQlFnF?7eYpm&+#<$LCg-4}J^M(@tvDTWop<9vpEmh}2C*YLXyJ45p2vVGqX#EE`I z%O*@;b9`xD(&~Ex<3aVuzu3`qcEVQkPBN#j2F0zL-OXdPb@4XCn)%M#>SHblUzDD! zZOqq6Xv{hFAw#bD+Zy|+!9zb*6pwp#JDq+QRaJAgIH0Mq3Q~@PVQXUV1@pnww(}jo zshYa|;l<2U`=f_Cn@nDIfIls$*?QlQq%Ei z$8NZp=)5n#FV7qKy_dW7syFs&ww9}wn>l2Cj45-od2Qr1wxsx!TU-yXGdgz}rt@`Rs$MH*t zUg)*`!8Y@wJC}?zG?B8+O|5kF&43lXAzfu;y-qAa%@>Z_oK8 zm=@ZJk8avB;O*6twZn~~^g8m7ncM8VJ#Tqqh*`$=qJdTMp-c1jkJ=^5(-~K}$*)U6 z_4j@wQ~C{A@7GtjK1b#`Ief&_Ye$pHmpCPz@Vu6>(NFJPw#L94yyM%V3!Aoh+{iM_ z-k$cuo!rQNSA#qp3dW^1jWRxe@~WW1J<%!&jNmrI?D1Z3BrMb{zjkzEo(t69H?wTY z_bcv{2VCkdI;0=HB`DC-Y0j7g!))UUy{GA-ot9gJ7aL{ANA04Vl8CD@H8BHk4C{U( zqUgQ+{l)ljtuBePdHuAFFKqDbWae8U^b5~1-FwX6GV!K%&xP-kR=Affb%^C@SAF^6 z`>N@_Q>Kpzy{P{cWJ&ogNU)D{%|Ge9ae8pi9`EGgS_^vAYG_QiGqGwoe{+fRD4!|w z;q2y{7H)IhwtBd2_PFtG=9Gth`gXJmc{ui8umhR8)4G7HA*L>u2#e^3WjLk_nQVeR|Z&9gf>xOBXv3 z_R-@>U7aI6FZ%Bd{oH z_t<09&`_p7ILg2+Icj0g75hre8howXT)Zm!`Iju+mL{KNK;10t{Z~y%;)JR-yt|aV z;6{okJ>_BlWX&oolf<=U=Pa5wJ$0ORliC&Rwl|$G(jKx;wAI!`!)ov1o#VB&LaQok zR+j~rEM02Rb%xgUqQc($`&n9d+hCF4)$pff6@8oZ^~%UOtIwG0 zYEC5f63=~|ABklN>=rKb-T#2qU`KOxAk3OyQh8e z(}m*FHT5065?^(Qa?J0bM^E~kIsN9Xl#C&Vb@r}3rn`3YS>3&Nu9PkvPU@FZ)su&M z@UH6?E{~i3xO&)f1N#obagMsDtsMHK>2@5GUAKGf>-^6dd!6NH(siC5{9||2iX#{6 z^6g%n&+I(6YCz3~z?#%Ia5WTsb8L%k=d|wAnrt&i+jv_VA0%VOxsa}7`A;{8_D((i z-u2+tae2QE397bf?D_nfuB@w`ck=4;D}F1^%6<;FU(?I^%VnGS`%!Y#zFtQL>s@y{ zqi_7|jxPU1>M!|gYYrUpD41jDmMrie>0NE(m=<>ylA~(1T*AlXewN(`8?f+#$Bp4v zvc9;-Z;-Fk_nNpm-RkGfs( zJ7}A`PIjB#I7)x)Po2B`b-y%e@NbYD6FJU%;;yUchk#i}eU{v($G^1=o|%00 z*t=WrZ%rO9usU+#enDb^qxn;^XQ9XBm05FgW!rt5a=zK<(|hjuckhJ)L#Ls+#UnBr z8!O%EZ6_DIrUYLeeB0)&tI3zD*)-kLaqIF`5xwgkew>*Y zR_WXG+Eqb;p?$q(DBrr?Wl~DaH${(s8}iaRcHFBeE^fTU?xjYjeUoZj%479*TSR>6 zy~eZhH;o5tKZdU_9dhyRle06!GcHr-Ru8@Hx$17gGpX~c^x6J8Gk16P)2aPN<5B+X zj~OeQa_gTyHm$q5=9!VG%6x9qU*-0pm+WVM>_(Pbzp#F}va#3jq3aeOC>S`QgW0D( zuU<|WpV>6$Q)1C9enR>dAB*coZa%MO4mhX%`<|>0p;acKDZ2*szdY{p@F&?%p5=_b z%wIPzX}5X3>Dz{9J~7$Rwa*6B{q#P)cBg+s&iTlPi+8@BP@b?#S}zzdHWx(F)_J|qhv-tYv&Gp6_WEH z@k4x8cI?m#gYwNB!gC&UnfzGiWW$6j5`Qz7sPZ3&cU@;Ne4$q9{Et0jVoS>wN&b)*{LBw@-YM^cd552mJ?WlU_-FOw=V7+dW{oko9<8(4LAw{z;=JQQ9s|9% z95~wX%N~bz9hTia?pLe*^*Z-?RD4)%kJzcP{P=;le!layR#i=vZ`Hlyu6_K24|lTn z?&C#dCHdBD4~hu&^ry+vh z>p$m)Jw1Oj*L~oOffn{28>WBnm;1*6t(qh=jUtP=UlKdJPLyy4c@PSRQEHe{V>^iW+vL_@EjZONNkNNQm-HqcQ!60umBQUxdBD3d$> z@u(f!7E`MJOEwkCWsypRZAzwsaxLdlu?ZdVav(A_L z`$uf>d}qJktV8BX-Jb>oURn0wF0tvPOaDDVpLV=nKHq10PVR!}`sZC;v&Y}R;nk}! z@~y_jE=P8)aT^vIR8g1w=*Ni520c%_7hS*UaYXNpX>#d>M`WGtp`J0n{$Z{Adu;b} z(H@zf4XTbFiFop{i`lPUR}L7gNTlAy&At5W$CcX-7H#SApd{;%_0?H_E*fY#;+N@% z{585477uu}_N>)rC$ClY-xv*xtSwF1>Jt@mJ?M$GTjGJuJG5`etadsEPTm>5fzBIU zZaCj+`{sF0<=<|9V^Y!MO-k$z-q2savsxTjbY}Wto|S95E~oR-u-J&@hsPr2Jzwy|Afg6 z_h!9Z55FPWAI#ScKX3AunCln*Xr-|5(!NiR15LXAzA$32-JyNY2KDWb>D;0&w(?Y; z|EPN{=2oGbn-q8NG~bnj@}*Gjlp=2m@c69&zXCA6nFE`v?jxk^0T14 z;uq<(BHv0uYw1-z--?}VDhCIN;07uPg7GS zFB5vjW=!%ur~1#81;~N!7zQ^Vp;|y%eCMc$09TpZo9}F6$9I#(%Hdf;O z`Eo%}&Kk0SP!(h9oPnS3>=z{qN2!}^`&?wv5euRMWYN$7_OPbOvcM2ObY~b!gA+@| zMj~1)hAY9uLLr=~D3FAR+h{#^z#A7dRg8Eq^TMK(l6A!+p#c(pUXtI*!u?LUw*kf6F>={)& z_FO6+J6b&ENGcZ|dkPg#%GSbW{P9@LK`E?E-EbpX^DA-?Ep9aYbn4hZglKWJ@hDp;t zwFJI&`QP~SwwYTA!KYcYCSPqIMU(&cMhc7%vy*~0PteyA zok9Ymy?Kmr=m_fc+v7$sIFP zH&+PE9uVJkfxkR1QpTSY5x&-e720UsLCut`K1!L;+`!s65L{|74}jo@3R2#SFf@`X?R4G=mm9P>4g^w+>71?@CW>kuSQoxFo zD%HGgtkh(6Av0T_ZG}Zp3Rps^QtYHw_Li0kLGM+B%xtx`6&67$V8u$6Voiz?wk09s zVP7l8mOxMnSWp{S;8X2w+pH8jwg^fAODk0hhi$31|H4WU2ucAfRjL$g z#g)Bn3HD!DDFQ(?!@}3t{}yuda}=c}w=jYJg_UBU6tE(tO0gd7pL_c+tQ3i$6tIL+ zrC9&@&#-N?Qc?-HG7>>Cup)5IN|j>0w-S~lNZd+sucKpj)mkxu7$`+=DWyu`uq~+6 z-?!B$9w4;_7C|XsX{AavKc!Qul)7OG0j&m128~pcK6&IV#1(wn`zl)Z2eyrNjtI(OZh6QW$JYz5N$fN{pZsun-+8 zG?{tU;-c(r3n3iyXtS*@Oh{8^N66 zPF?oVbX)t2uoSo?N3F2s7n~3U3p5P3Z2=Xt?4uACg9{lbVvb&6xU_&&$8B3g#o{6? z1um`BD>O5)S%j@N*(d#N6*GcTh*_dkD@>aSkpwr)Y+^y{VcFgysOH|%0;N{ru#{Se z!R9fv5te~cz=FamCNBnymh?d4>avJQqu|0?`^o)6BZ44LB?yvIn$uJ?`BNih;g$jN zkce<^Mq_x)6bWAt8p>n-6TnWz^bpxXS(I~>Y>o`2UdW;$Zm|i8jtupSvxx|B3z3J) znDh&jBg3EM7an8~A~$q&8^g_+5i$83iUy$~rgpY=b^-wbcSFNJff(MC=+_$FLuwxS z8`7cR@F#(Qg7-AZzEZ%9{-zKg;z54{Bf}?!_h2s3XChm8l{A;LK{RNbb(G9c9ud_H zEvA*lnCh8o*qori1pzVzA8HbXs)nX8Fu;eJN`cX2e$i*m%>Whw0dxdU2o#VYUK>BT z%)rJNa<>FR5oEKSWs`&?|wip7-IXs32fi^*c zmqb6jaF&MNqns)9qoj!ll>Wn|L0NQAmv&O(pIIBaE~{7E|2p;G95;vX_QvQ<%6;!6l-y5p!76>*9Y?+r5thjpe%{@ zOSv={5?X}U2bbufCqrC5C`&2KrHqkw_>OpzTIg z8ZAZ}C|nwpm7;Y6mj**gAz!IN0|lcn3{pf0(Z(3ghZ4S2X(BPonBmf(EPrNN|CFDn+}vJ#0w`gmEIM9;ao^#Lx0($ly!5!|aNR_h0d1>=LVkV=P_l}gq6 zL5N7SfZ<}0Fcr`ej!P2(AFc-?f`kE9<%6;?ZB=QA55@1Q^+DIv^omrQs~`ffEO=R| z0GB=BLN2yCAKJN6!6ijf_37 z0zN5j4?s{%_@Y`Ca-G%sK@%jVYfzTNZ4S_24T-k}Y`fYR(GuJTKv^l;zfx@rtPQdG zK_U~2=@rmKC_5D^3%RyxG%=yp4+;2QH9i_;e33UMC=(+v!-8Xtik z-Kb)Kt5v5_Xl;Y>sm*D?kf2Rgj8BUDK@#E^iJGj$G_I3K$MO0=O@(SU8#EI4gTP0s z`2~ugQ64$BeMs$bKL{!=z;y^{OmweW79uii+<*^aE*yiR@o^K;64)%n_<$zH210y%fkvp)2(>W+i%p?DK&}ix02Io;z-hSe0X_*H zClV0Rq76gUvS3Rv`N6{)=4%0}d{VW(0Uv?KNI(Mzhhs=3czjAgoP+BIqT#v*Gzo4e zK_g+|fMI}^;&y|8;1Rc1h=$Jvph@u<7&IILMGQkE1jmolC<*Qd2@xexua6d}jR)A% z7HBkjl%OJe0?Y=c_YlF+XcHdeQ;UZP0=~O~*)!QuBSkwQKqm8u29H)M+u_=E5--S!|f!j4AkOXpn(ffD+`lf zjRq3LX+m%e7>xkI;4&p(Im59-@+iNMP+1iE?viUrybSF#@LeJzAQ6TA;*BQXF?>!0 z`~_`*@00NzZFt^1Q=!zFuqCXm?7#>~Y^_LWIbkQZwy`4w))2Z_PSE`CEGXv%wu`KT zWdZY|7liTnG(lL}z&3-3w6n9KMOL;w|2l{F9x~ph&6a L$dR^F?KJ-n&i=ds literal 0 HcmV?d00001 diff --git a/open-led-race/AsyncSerialLib.cpp b/open-led-race/AsyncSerialLib.cpp deleted file mode 100644 index 64d120e..0000000 --- a/open-led-race/AsyncSerialLib.cpp +++ /dev/null @@ -1,339 +0,0 @@ -/*************************************************** -Copyright (c) 2018 Luis Llamas -(www.luisllamas.es) - -Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License - ****************************************************/ - -#include "AsyncSerialLib.h" - -AsyncSerial::AsyncSerial(byte* buffer, size_t bufferLength, - AsyncSerialCallback onRecievedOk, AsyncSerialCallback onTimeout = nullptr, AsyncSerialCallback onOverflow = nullptr) -{ - Init(buffer, bufferLength, &Serial); - OnRecievedOk = onRecievedOk; - OnTimeout = onTimeout; - OnOverflow = onOverflow; - _startTime = millis(); -} - -void AsyncSerial::Init(byte *buffer, size_t bufferLength, Stream* stream) -{ - _status = RECIEVING_DATA; - _startTime = millis(); - _stream = stream == NULL ? &Serial : stream; - _buffer = buffer; - _bufferLength = bufferLength; - _bufferIndex = 0; -} - - -AsyncSerial::Status AsyncSerial::AsyncRecieve() -{ - if (_status == IDDLE) { return; } - - if (IsExpired()) - { - if (OnTimeout != nullptr) OnTimeout(*this); - _status = TIMEOUT; - } - - if (_status >= MESSAGE_RECIEVED) - { - _startTime = millis(); - _status = AutoReset ? RECIEVING_DATA : IDDLE; - } - - if (_status == RECIEVING_DATA || _status == RECIEVING_DATA_OVERFLOW) - { - asyncRecieve(); - } - - return _status; -} - -AsyncSerial::Status AsyncSerial::AsyncRecieve(int timeOut) -{ - Timeout = timeOut; - AsyncRecieve(); - return _status; -} - -AsyncSerial::Status AsyncSerial::Recieve(int timeOut) -{ - _startTime = millis(); - _status = RECIEVING_DATA; - - bool expired = false; - while (!expired && _status < MESSAGE_RECIEVED) - { - AsyncRecieve(); - expired = ((unsigned long)(millis() - _startTime) >= Timeout); - } - - if (expired) - { - _status = TIMEOUT; - if (OnTimeout != nullptr) OnTimeout(*this); - } - - return _status; -} - - -void AsyncSerial::AsyncSend(bool waitAck) -{ - AsyncSend(_buffer, _bufferLength, waitAck); -} - -void AsyncSerial::AsyncSend(byte* data, size_t dataLength, bool waitAck) -{ - if (_status == IDDLE) return; - - if (_status == TIMEOUT) - { - _status = AutoReset ? SENDING_DATA : IDDLE; - return; - } - - if (_status != WAITING_ACK) - { - _stream->write(data, dataLength); - - if (waitAck) - { - _status = WAITING_ACK; - _startTime = millis(); - } - else - { - _status = AutoReset ? MESSAGE_SENDED : IDDLE; - if (OnRecievedOk != nullptr) OnRecievedOk(*this); - } - } - - if (_status == WAITING_ACK) - { - if (IsExpired()) - { - _status = TIMEOUT; - _startTime = millis(); - if (OnTimeout != nullptr) OnTimeout(*this); - } - else - { - if (_stream->read() == AckChar) - { - _status = AutoReset ? MESSAGE_SENDED : IDDLE; - if (OnRecievedOk != nullptr) OnRecievedOk(*this); - } - } - } -} - -void AsyncSerial::ProcessByte(byte data) -{ - LastByte = data; - - if (data == (byte)FinishChar) finishRecieve(); - else processNewData(); -} - -void AsyncSerial::Send(bool waitAck) -{ - Send(_buffer, _bufferLength, waitAck); -} - -void AsyncSerial::Send(byte* data, size_t dataLength, bool waitAck) -{ - _stream->write(data, dataLength); - - if (waitAck) - { - _startTime = millis(); - while (!IsExpired()) - { - if (_stream->read() == AckChar) - { - _status = AutoReset ? MESSAGE_SENDED : IDDLE; - if (OnRecievedOk != nullptr) OnRecievedOk(*this); - return; - } - } - _status = TIMEOUT; - if (OnTimeout != nullptr) OnTimeout(*this); - } - else - { - _status = AutoReset ? MESSAGE_SENDED : IDDLE; - if (OnRecievedOk != nullptr) OnRecievedOk(*this); - } - -} - - -uint8_t AsyncSerial::GetLastIndex() -{ - return (_bufferIndex - 1 + _bufferLength) % _bufferLength; -} - -byte AsyncSerial::GetLastData() -{ - return _buffer[GetLastIndex()]; -} - -byte * AsyncSerial::GetContent() -{ - return _buffer; -} - -uint8_t AsyncSerial::GetContentLength() -{ - return _status == MESSAGE_RECIEVED_OVERFLOW ? _bufferLength : _bufferIndex; -} - -void AsyncSerial::OrderBuffer() -{ - orderBuffer(_buffer, 0, _bufferLength - 1, GetLastIndex()); -} - -void AsyncSerial::Start() -{ - _status = RECIEVING_DATA; - _bufferIndex = 0; - _startTime = millis(); -} - -void AsyncSerial::Stop() -{ - _status = IDDLE; -} - -inline bool AsyncSerial::IsExpired() -{ - if (Timeout == 0) return false; - return ((unsigned long)(millis() - _startTime) > Timeout); -} - - -void AsyncSerial::asyncRecieve() -{ - while (_stream->available()) - { - byte newData = _stream->read(); - - ProcessByte(newData); - } -} - -void AsyncSerial::processNewData() -{ - if (LastByte != (byte)IgnoreChar) - { - if (OnByteProcessed != nullptr) OnByteProcessed(*this); - - if (_bufferIndex >= _bufferLength) - { - _bufferIndex %= _bufferLength; - if (_status != RECIEVING_DATA_OVERFLOW) - { - if (OnOverflow != nullptr) OnOverflow(*this); - } - _status = RECIEVING_DATA_OVERFLOW; - } - - _buffer[_bufferIndex] = LastByte; - _bufferIndex++; - } -} - -void AsyncSerial::finishRecieve() -{ - _status = (_status == RECIEVING_DATA_OVERFLOW ? MESSAGE_RECIEVED_OVERFLOW : MESSAGE_RECIEVED); - - if (_status == MESSAGE_RECIEVED) - { - if (OnRecievedOk != nullptr) OnRecievedOk(*this); - } - else - { - if (AllowOverflow) - { - OrderBuffer(); - if (OnRecievedOk != nullptr) OnRecievedOk(*this); - if (SendAck) _stream->write(AckChar); - } - } - - _bufferIndex = 0; -} - -void AsyncSerial::orderBuffer(byte buffer[], size_t start, size_t end, size_t index) -{ - size_t leftBlockLength = index - start + 1; - size_t rigthBlockLength = end - index; - - while (leftBlockLength != 0 && rigthBlockLength != 0) - { - if (leftBlockLength <= rigthBlockLength) - { - // RIGHT BLOCK SHIFT - swapBufferBlock(buffer, start, leftBlockLength); - start += leftBlockLength; - index += leftBlockLength; - } - else - { - // LEFT BLOCK SHIFT - swapBufferBlock(buffer, index - rigthBlockLength + 1, rigthBlockLength); - end -= rigthBlockLength; - index -= rigthBlockLength; - } - leftBlockLength = index - start + 1; - rigthBlockLength = end - index; - } -} - -void AsyncSerial::swapBufferBlock(byte buffer[], size_t start, size_t length) -{ - byte temp; - for (size_t i = 0; i < length; i++) - { - temp = buffer[start + i]; - buffer[start + i] = buffer[start + i + length]; - buffer[start + i + length] = temp; - } -} - - -void AsyncSerial::debugStatus() -{ - switch (_status) - { - IDDLE: _stream->println("IDDLE"); break; - RECIEVING_DATA: _stream->println("RECIEVING_DATA"); break; - RECIEVING_DATA_OVERFLOW: _stream->println("RECIEVING_DATA_OVERFLOW"); break; - MESSAGE_RECIEVED: _stream->println("MESSAGE_RECIEVED"); break; - MESSAGE_RECIEVED_OVERFLOW: _stream->println("MESSAGE_RECIEVED_OVERFLOW"); break; - TIMEOUT: _stream->println("TIMEOUT"); break; - WAITING_ACK: _stream->println("WAITING_ACK"); break; - MESSAGE_SENDED: _stream->println(" "); break; - default: break; - } -} - -void AsyncSerial::debugBuffer() -{ - for (int i = 0; i < _bufferLength; i++) - { - _stream->print((char)_buffer[i]); - _stream->print("\t"); - } - _stream->println(); - - for (int i = 0; i < _bufferLength; i++) - _stream->print(i == GetLastIndex() ? "^" : "\t"); - _stream->println(); -} diff --git a/open-led-race/AsyncSerialLib.h b/open-led-race/AsyncSerialLib.h deleted file mode 100644 index 798054b..0000000 --- a/open-led-race/AsyncSerialLib.h +++ /dev/null @@ -1,101 +0,0 @@ -/*************************************************** -Copyright (c) 2018 Luis Llamas -(www.luisllamas.es) - -Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License - ****************************************************/ - -#ifndef _ASYNCSERIALLIB_h -#define _ASYNCSERIALLIB_h - -#if defined(ARDUINO) && ARDUINO >= 100 - #include "Arduino.h" -#else - #include "WProgram.h" -#endif - -const char CARRIAGE_RETURN = '\r'; -const char NEW_LINE = '\n'; -const char ACK = 0x06; - -class AsyncSerial -{ - typedef void(*AsyncSerialCallback)(AsyncSerial& sender); - - public: - typedef enum - { - IDDLE, - RECIEVING_DATA, - RECIEVING_DATA_OVERFLOW, - MESSAGE_RECIEVED, - MESSAGE_RECIEVED_OVERFLOW, - TIMEOUT, - SENDING_DATA, - WAITING_ACK, - MESSAGE_SENDED - } Status; - - AsyncSerial(byte *buffer, size_t bufferLength, - AsyncSerialCallback OnRecievedOk, AsyncSerialCallback OnOverflow = nullptr, AsyncSerialCallback OnTimeout = nullptr ); - - void Init(byte *buffer, size_t bufferLength, Stream* stream = NULL); - - Status AsyncRecieve(); - AsyncSerial::Status AsyncRecieve(int timeOut); - AsyncSerial::Status Recieve(int timeOut); - - void AsyncSend(bool waitAck = false); - void AsyncSend(byte* data, size_t dataLength, bool waitAck = false); - void ProcessByte(byte data); - void Send(bool waitAck = false); - void Send(byte* data, size_t dataLength, bool waitAck = false); - - - uint8_t GetLastIndex(); - uint8_t GetLastData(); - byte* GetContent(); - uint8_t GetContentLength(); - void OrderBuffer(); - void Start(); - void Stop(); - inline bool IsExpired(); - - AsyncSerialCallback OnRecievedOk; - AsyncSerialCallback OnOverflow; - AsyncSerialCallback OnTimeout; - AsyncSerialCallback OnByteProcessed; - - unsigned long Timeout = 0; - bool AutoReset = true; - bool AllowOverflow = false; - bool SendAck; - byte LastByte; - char FinishChar = NEW_LINE; - char IgnoreChar = CARRIAGE_RETURN; - char AckChar = ACK; - - - protected: - Stream* _stream; - byte *_buffer; - size_t _bufferIndex; - size_t _bufferLength; - - unsigned long _startTime; - bool _sendAck = false; - Status _status; - - void asyncRecieve(); - void processNewData(); - void finishRecieve(); - static void orderBuffer(byte buffer[], size_t start, size_t end, size_t index); - static void swapBufferBlock(byte buffer[], size_t start, size_t length); - - void debugBuffer(); - void debugStatus(); -}; - -#endif diff --git a/open-led-race/SerialCommand.cpp b/open-led-race/SerialCommand.cpp new file mode 100644 index 0000000..553e458 --- /dev/null +++ b/open-led-race/SerialCommand.cpp @@ -0,0 +1,74 @@ +#include "SerialCommand.h" + + +/* + * + */ +SerialCommand::SerialCommand() { + _initialized = false; +} +/* + * + */ +SerialCommand::SerialCommand(char *buf, int blen, char eoc, Stream* stream) { + init(buf, blen, eoc, stream); +} + +/* + * + */ +void SerialCommand::init(char *buf, int blen, char eoc, Stream* stream) { + if(_initialized) return; + + _stream = stream == NULL ? &Serial : stream; + _buf = buf; + _bufLen = blen; + _bufIdx = 0; + _eoc = eoc; + _initialized = true; +} + + +/* + * + */ +int SerialCommand::checkSerial() { + if( !_initialized) return(-1); + + while (_stream->available()) { + if(_bufIdx < _bufLen - 2) { + char data = _stream->read(); + if(data == _eoc) { + int cmsSize=_bufIdx; + _buf[_bufIdx++] = '\0'; + _bufIdx=0; + return(cmsSize); + } else { + _buf[_bufIdx++] = data; + } + } else { + // buffer full + // re4set and retunn error + _buf[_bufIdx++] = '\0'; + _bufIdx=0; + return(-2); + } + } + return(0); + +} + + +void SerialCommand::sendCommand(char* str) { + // get command length + int dlen=0; +// for(; dlen<_bufLen; dlen++ ) { // limit transmitted command length to received command buffer + for(; dlen<80; dlen++ ) { // limit transmitted command length to received command buffer + if(*(str+dlen) == _eoc ){ + dlen++; // send EOC + break; + } + } + _stream->write(str, dlen); + return; +} diff --git a/open-led-race/SerialCommand.h b/open-led-race/SerialCommand.h new file mode 100644 index 0000000..da7b3f0 --- /dev/null +++ b/open-led-race/SerialCommand.h @@ -0,0 +1,29 @@ +#ifndef SerialCommand_h +#define SerialCommand_h + +#include + +class SerialCommand { + + public: + SerialCommand(); + SerialCommand(char *buf, int bufLen, char eoc, Stream* stream); + void init(char *buf, int bufLen, char eoc, Stream* stream); + int checkSerial(void); + void sendCommand(char *); + + int overflow; + + protected: + Stream* _stream; + char *_buf; + int _bufIdx; + int _bufLen; + char _eoc; // EndOfCommand char + + bool _initialized; + + +}; + +#endif diff --git a/open-led-race/SoftTimer.cpp b/open-led-race/SoftTimer.cpp new file mode 100644 index 0000000..40e7e11 --- /dev/null +++ b/open-led-race/SoftTimer.cpp @@ -0,0 +1,36 @@ +#include "SoftTimer.h" + +SoftTimer::SoftTimer(unsigned long tout) { + this->set(tout); +} + +SoftTimer::SoftTimer() { +} + +/* + * + */ +void SoftTimer::set(unsigned long tout) { + this->timeout=tout; +} + + +void SoftTimer::start() { + this->startTime=millis(); +} + +void SoftTimer::start(unsigned long tout) { + this->set(tout); + this->start(); +} + + +/* + * + */ +boolean SoftTimer::elapsed(){ + if((millis() - this->startTime) > this->timeout) { + return(true); + } + return(false); +} diff --git a/open-led-race/SoftTimer.h b/open-led-race/SoftTimer.h new file mode 100644 index 0000000..55ff24f --- /dev/null +++ b/open-led-race/SoftTimer.h @@ -0,0 +1,23 @@ +#ifndef SoftTimer_h +#define SoftTimer_h + +#include + +class SoftTimer { + + public: + + SoftTimer(void); + SoftTimer(unsigned long); + void set(unsigned long); + void start(void); + void start(unsigned long); + boolean elapsed(void); + + private: + unsigned long startTime=0; + unsigned long timeout=0; + +}; + +#endif diff --git a/open-led-race/olr-controller.h b/open-led-race/olr-controller.h index 05d4399..87fad3a 100644 --- a/open-led-race/olr-controller.h +++ b/open-led-race/olr-controller.h @@ -1,4 +1,3 @@ - #ifndef _OLR_CONTROLLER_LIB_h #define _OLR_CONTROLLER_LIB_h diff --git a/open-led-race/olr-lib.c b/open-led-race/olr-lib.c index d259323..653fed8 100644 --- a/open-led-race/olr-lib.c +++ b/open-led-race/olr-lib.c @@ -3,9 +3,6 @@ -void process_main_track( track_t* tck, car_t* car ); -void process_aux_track( track_t* tck, car_t* car ); - void car_init( car_t* car, controller_t* ct, uint32_t color ) { car->ct = ct; car->color = color; @@ -63,19 +60,22 @@ void process_aux_track( track_t* tck, car_t* car ){ void process_main_track( track_t* tck, car_t* car ) { struct cfgtrack const* cfg = &tck->cfg.track; - + if ( tck->rampactive ) { struct cfgramp const* r = &tck->cfg.ramp; int const pos = (int)car->dist % cfg->nled_main; if ( pos >= r->init && pos < r->center ) - car->speed -= cfg->kg * r->high * ( pos - r->init ); + // car->speed -= cfg->kg * r->high * ( pos - r->init ); + car->speed -= cfg->kg * r->high ; if ( pos <= r->end && pos > r->center ) - car->speed += cfg->kg * r->high * ( pos - r->center ); - } - + //car->speed += cfg->kg * r->high * ( pos - r->center ); + car->speed += cfg->kg * r->high ; + } + car->speed -= car->speed * cfg->kf; car->dist += car->speed; + } void ramp_init( track_t* tck ) { @@ -115,14 +115,30 @@ int tracklen_configure( track_t* tck, int nled ) { return 0; } -int boxlen_configure( track_t* tck, int box_len ) { +int boxlen_configure( track_t* tck, int box_len, int boxalwaysOn ) { struct cfgtrack* cfg = &tck->cfg.track; + if ( boxalwaysOn != 0 && boxalwaysOn != 1 ) return -1; if( box_len <= 0 || box_len >= cfg->nled_total ) return -1; cfg->box_len = box_len; + cfg->box_alwaysOn = boxalwaysOn; + + // Update track->boxactive + tck->boxactive = boxalwaysOn; return 0; } +int physic_configure( track_t* tck, float kgp, float kfp ){ + struct cfgtrack* cfg = &tck->cfg.track; + + if( kgp <= 0.0 || kgp >= 2.0 ) return -1; + if( kfp <= 0.0 || kfp >= 2.0 ) return -1; + cfg->kf = kfp; + cfg->kg = kgp; + return(0); +} + + int track_configure( track_t* tck, int init_box ) { struct cfgtrack* cfg = &tck->cfg.track; @@ -135,18 +151,28 @@ int track_configure( track_t* tck, int init_box ) { } -int ramp_configure( track_t* tck, int init, int center, int end, int high ) { +int ramp_configure( track_t* tck, int init, int center, int end, int high, int alwaysOn ) { struct cfgramp* ramp = &tck->cfg.ramp; if ( init >= tck->cfg.track.nled_main || init <= 0 ) return -1; if ( center >= tck->cfg.track.nled_main || center <= 0 ) return -2; if ( end >= tck->cfg.track.nled_main || end <= 0 ) return -3; if ( ! (center > init && center < end) ) return -4; + if ( alwaysOn != 0 && alwaysOn != 1 ) return -5; ramp->init = init; ramp->center = center; ramp->end = end; ramp->high = high; + ramp->alwaysOn = alwaysOn; + + // Update track->rampactive + /** + boolean rampactive = &tck->rampactive; + rampactive = alwaysOn; + **/ + tck->rampactive = alwaysOn; + return 0; } diff --git a/open-led-race/olr-lib.h b/open-led-race/olr-lib.h index a008f5a..81f84e8 100644 --- a/open-led-race/olr-lib.h +++ b/open-led-race/olr-lib.h @@ -72,13 +72,19 @@ void car_resetPosition( car_t* car); void update_track( track_t* tck, car_t* car ); +void process_main_track( track_t* tck, car_t* car ); + +void process_aux_track( track_t* tck, car_t* car ); + void box_init( track_t* tck ); bool box_isactive( track_t* tck ); int tracklen_configure( track_t* tck, int nled ); -int boxlen_configure( track_t* tck, int box_len ); +int boxlen_configure( track_t* tck, int box_len, int boxalwaysOn ); + +int physic_configure( track_t* tck, float kgp, float kfp ); int track_configure( track_t* tck, int init_box ); @@ -86,7 +92,7 @@ void ramp_init( track_t* tck ); bool ramp_isactive( track_t* tck ); -int ramp_configure( track_t* tck, int init, int center, int end, int high ); +int ramp_configure( track_t* tck, int init, int center, int end, int high, int alwaysOn ); int race_configure( track_t* tck, int startline, int nlap, int nrepeat, int finishline ); diff --git a/open-led-race/olr-param.c b/open-led-race/olr-param.c index 02966ef..81290ab 100644 --- a/open-led-race/olr-param.c +++ b/open-led-race/olr-param.c @@ -11,13 +11,16 @@ void param_setdefault( struct cfgparam* cfg ) { cfg->ramp.init = 80; cfg->ramp.center = 90; cfg->ramp.end = 100; - cfg->ramp.high = 3; + cfg->ramp.high = 6; + cfg->ramp.alwaysOn = false; cfg->track.nled_total = MAXLED; cfg->track.nled_main = MAXLED; // 240 when boxes length = 60 cfg->track.nled_aux = 0; // 60 cfg->track.init_aux = -1; // 239 cfg->track.box_len = BOXLEN; - cfg->track.kf = 0.015; //friction constant - cfg->track.kg = 0.003; //gravity constant + cfg->track.box_alwaysOn = false; + + cfg->track.kf = 0.015; // friction constant + cfg->track.kg = 0.006; // gravity constant - Used in Slope } diff --git a/open-led-race/olr-param.h b/open-led-race/olr-param.h index 3f990e7..3535077 100644 --- a/open-led-race/olr-param.h +++ b/open-led-race/olr-param.h @@ -1,6 +1,5 @@ - -#ifndef _OLR_SERIAL_LIB_h -#define _OLR_SERIAL_LIB_h +#ifndef _OLR_PARAM_LIB_h +#define _OLR_PARAM_LIB_h #ifdef __cplusplus @@ -19,7 +18,7 @@ extern "C"{ enum{ LEN_UID = 16, - CFG_VER = 4, // "4" in V0.9.d + CFG_VER = 5, // "5" in V0.9.6 (manage "permanent" param for Box and Slope) }; struct cfgrace{ @@ -39,6 +38,8 @@ struct cfgtrack { // it's not possible to implicitly store it in nled_main,nled_aux // because, if these are different to the default, box gets always activated // (the software does not chek "box_isactive" to draw car position) + bool box_alwaysOn; // added in ver 0.9.6 + float kf; float kg; @@ -50,6 +51,7 @@ struct cfgramp { int center; int end; int high; + bool alwaysOn; // added in ver 0.9.6 }; struct brdinfo { diff --git a/open-led-race/open-led-race.ino b/open-led-race/open-led-race.ino index cf22a4b..bcd9cfd 100644 --- a/open-led-race/open-led-race.ino +++ b/open-led-race/open-led-race.ino @@ -31,22 +31,26 @@ */ -// 2020/07/29 - Ver 0.9.d +// 2020/12/10 - Ver 0.9.6 // --see changelog.txt -char const version[] = "0.9.d"; + +char const softwareId[] = "A4P0"; // A4P -> A = Open LED Race, 4P0 = Game ID (4P = 4 Players, 0=Type 0) +char const version[] = "0.9.6"; #include #include -#include "AsyncSerialLib.h" #include "olr-lib.h" #include "olr-param.h" +#include "SoftTimer.h" +#include "SerialCommand.h" -#define PIN_LED 2 // R 500 ohms to DI pin for WS2812 and WS2813, for WS2813 BI pin of first LED to GND , CAP 1000 uF to VCC 5v/GND,power supplie 5V 2A -#define PIN_AUDIO 3 // through CAP 2uf to speaker 8 ohms -#define EOL '\n' +#define PIN_LED 2 // R 500 ohms to DI pin for WS2812 and WS2813, for WS2813 BI pin of first LED to GND , CAP 1000 uF to VCC 5v/GND,power supplie 5V 2A +#define PIN_AUDIO 3 // through CAP 2uf to speaker 8 ohms +#define REC_COMMAND_BUFLEN 32 +#define EOL '\n' // End of Command char used in Protocol #define COLOR1 track.Color(255,0,0) #define COLOR2 track.Color(0,255,0) @@ -58,21 +62,25 @@ char const version[] = "0.9.d"; #define COLOR_BOXMARKS track.Color(64,64,0) #define LED_SEMAPHORE 12 +#define CONTDOWN_PHASE_DURATION 2000 +#define CONTDOWN_STARTSOUND_DURATION 40 + +#define NEWRACE_DELAY 5000 enum{ MAX_CARS = 4, }; - -enum loglevel{ +enum loglevel { // used in Serial Protocol "!" command (send log/error messageS) ECHO = 0, DISABLE = 0, - DEBUG, - WARNING, - ERROR + LOG = 1, + WARNING = 2, + ERROR = 3 }; + enum resp{ NOK = -1, NOTHING = 0, @@ -112,6 +120,7 @@ struct race{ int winner; }; + byte SMOTOR=0; int TBEEP=0; int FBEEP=0; @@ -126,13 +135,20 @@ static track_t tck; static int const eeadrInfo = 0; -char cmd[32]; char txbuff[64]; -int const dataLength = 32; -byte data[dataLength]; + + + static unsigned long lastmillis = 0; +SoftTimer customDelay = SoftTimer(); // non blocking delay() + +// Used to manage countdown phases +int countdown_phase=1; +bool countdown_new_phase=true; + + int win_music[] = { 2637, 2637, 0, 2637, 0, 2093, 2637, 0, @@ -145,24 +161,25 @@ char tracksID[ NUM_TRACKS ][2] ={"U","M","B","I","O"}; /* ----------- Function prototypes ------------------- */ -void sendresponse( ack_t *ack); -ack_t parseCommands(AsyncSerial &serial); +void sendResponse( ack_t *ack); + +ack_t manageSerialCommand(); + void printdebug( const char * msg, int errlevel ); void print_cars_positions( car_t* cars); void run_racecycle( void ); void draw_winner( track_t* tck, uint32_t color); -AsyncSerial asyncSerial(data, dataLength, - [](AsyncSerial& sender) { ack_t ack = parseCommands( sender ); sendresponse( &ack ); } -); +char cmd[REC_COMMAND_BUFLEN]; // Stores command received by ReadSerialComand() +SerialCommand serialCommand = SerialCommand(cmd, REC_COMMAND_BUFLEN, EOL, &Serial); // get complete command from serial -//Adafruit_NeoPixel track = Adafruit_NeoPixel( MAXLED, PIN_LED, NEO_GRB + NEO_KHZ800 ); Adafruit_NeoPixel track; -char tmpmsg [20]; - +/* + * + */ void setup() { Serial.begin(115200); @@ -192,18 +209,19 @@ void setup() { } track.begin(); + strip_clear( &tck ); + // Check Box before Physic/Sound to allow user to have Box and Physics with no sound - if ( digitalRead( DIG_CONTROL_2 ) == 0 ) { //push switch 2 on reset for activate boxes (pit lane) + if(digitalRead(DIG_CONTROL_2)==0 || tck.cfg.track.box_alwaysOn ) { //push switch 2 on reset for activate boxes (pit lane) box_init( &tck ); - //box_configure( &tck, 240 ); - //box_configure( &tck, MAXLED - BOXLEN ); track_configure( &tck, tck.cfg.track.nled_total - tck.cfg.track.box_len ); + draw_box_entrypoint( &tck ); } else{ track_configure( &tck, 0 ); } - if ( digitalRead( DIG_CONTROL_1 ) == 0 ) { //push switch 1 on reset for activate physics + if( digitalRead(DIG_CONTROL_1)==0 || tck.cfg.ramp.alwaysOn ) { //push switch 1 on reset for activate physics ramp_init( &tck ); draw_ramp( &tck ); track.show(); @@ -213,116 +231,150 @@ void setup() { tone(PIN_AUDIO,100);} } - race.cfg.startline = tck.cfg.race.startline;// true; race.cfg.nlap = tck.cfg.race.nlap;// NUMLAP; race.cfg.nrepeat = tck.cfg.race.nrepeat;// 1; race.cfg.finishline = tck.cfg.race.finishline;// true; + customDelay.start(0); // first race starts with no delay race.phase = READY; } - +/* + * + */ void loop() { - asyncSerial.AsyncRecieve(); + // look for commands received on serial + ack_t ack = manageSerialCommand(); + if(ack.rp != NOTHING){ + sendResponse(&ack); + } + + // PLEASE NOTE: + // DO NOT call "track.show()" in the loop() while in configuration mode !!! + // It would mess up with Serial communication (receives only 2 bytes - if the + // string sent by the host is longer, it gets lost) + // In other phases (READY, RACING, etc) ONLY 2 bytes are guaranteed to be + // succesfully received - So "Enter Configuration Mode" command is just one byte (@) + + switch(race.phase) { - if ( race.phase == CONFIG ) { - if( race.newcfg ) { - race.newcfg = false; - race.phase = READY; - send_phase( race.phase ); - } - } - else if ( race.phase == READY ) { - - for( int i = 0; i < race.numcars; ++i) { - car_resetPosition( &cars[i] ); - cars[i].repeats = 0; - } - tck.ledcoin = COIN_RESET; - race.phase = COUNTDOWN; - send_phase( race.phase ); - } - else if( race.phase == COUNTDOWN ) { - strip_clear( &tck ); - if( ramp_isactive( &tck ) ){ - draw_ramp( &tck ); - } - if( box_isactive( &tck ) ) { - draw_box_entrypoint( &tck ); - } - track.show(); - delay( 2000 ); - - if( race.cfg.startline ){ - start_race( ); - - for( int i = 0; i < race.numcars; ++i ) { - cars[i].st = CAR_ENTER; - } - race.phase = RACING; - send_phase( race.phase ); - } - } - else if( race.phase == RACING ) { - - strip_clear( &tck ); - - if( box_isactive( &tck ) ) { - if( tck.ledcoin == COIN_RESET ) { - tck.ledcoin = COIN_WAIT; - tck.ledtime = millis() + random(2000,7000); - } - if( tck.ledcoin > 0 ) - draw_coin( &tck ); - else if( millis() > tck.ledtime ) - tck.ledcoin = random( 20, tck.cfg.track.nled_aux - 20 ); - } - - if( ramp_isactive( &tck ) ) - draw_ramp( &tck ); - - for( int i = 0; i < race.numcars; ++i ) { - run_racecycle( &cars[i], i ); - if( cars[i].st == CAR_FINISH ) { - race.phase = COMPLETE; - race.winner = i; + case CONFIG: + { + if( race.newcfg ) { + race.newcfg = false; + countdownReset(); + customDelay.start(0); + race.phase = READY; + send_phase( race.phase ); + } + } + break; + + case READY: + { + if(customDelay.elapsed()) { + for( int i = 0; i < race.numcars; ++i) { + car_resetPosition( &cars[i] ); + cars[i].repeats = 0; + } + tck.ledcoin = COIN_RESET; + race.phase = COUNTDOWN; send_phase( race.phase ); - break; } } + break; - track.show(); - if (SMOTOR==1) tone(PIN_AUDIO,FBEEP+int(cars[0].speed*440*1)+int(cars[1].speed*440*2)+int(cars[2].speed*440*3)+int(cars[3].speed*440*4)); - if (TBEEP>0) {TBEEP--;} else {FBEEP=0;}; - - /* Print p command!!! */ - unsigned long nowmillis = millis(); - if( abs( nowmillis - lastmillis ) > 100 ){ - lastmillis = nowmillis; - print_cars_positions( cars ); + case COUNTDOWN: + { + if( race.cfg.startline ){ + // Countdown: semaphore and tones + if(start_race_done()) { + // Countdown done + for( int i = 0; i < race.numcars; ++i ) { + cars[i].st = CAR_ENTER; + } + race.phase = RACING; + send_phase( race.phase ); + } + } } - /* ---------------- */ - } - else if( race.phase == COMPLETE ) { - strip_clear( &tck ); - track.show(); - if ( race.cfg.finishline ){ - draw_winner( &tck, cars[race.winner].color ); - sound_winner( &tck, race.winner ); + break; + + case RACING: + { + strip_clear( &tck ); + + if( box_isactive( &tck ) ) { + if( tck.ledcoin == COIN_RESET ) { + tck.ledcoin = COIN_WAIT; + tck.ledtime = millis() + random(2000,7000); + } + if( tck.ledcoin > 0 ) + draw_coin( &tck ); + else if( millis() > tck.ledtime ) + tck.ledcoin = random( 20, tck.cfg.track.nled_aux - 20 ); + } + + if( ramp_isactive( &tck ) ) + draw_ramp( &tck ); + if( box_isactive( &tck ) ) + draw_box_entrypoint( &tck ); + + for( int i = 0; i < race.numcars; ++i ) { + run_racecycle( &cars[i], i ); + if( cars[i].st == CAR_FINISH ) { + race.phase = COMPLETE; + race.winner = i; + send_phase( race.phase ); + break; + } + } + + track.show(); + if (SMOTOR==1) tone(PIN_AUDIO,FBEEP+int(cars[0].speed*440*1)+int(cars[1].speed*440*2)+int(cars[2].speed*440*3)+int(cars[3].speed*440*4)); + if (TBEEP>0) {TBEEP--;} else {FBEEP=0;}; + + // Print p command!!! + unsigned long nowmillis = millis(); + if( abs( nowmillis - lastmillis ) > 100 ){ + lastmillis = nowmillis; + print_cars_positions( cars ); + } + // ---------------- + } + break; + + case COMPLETE : + { strip_clear( &tck ); - } - track.show(); - race.phase = READY; + track.show(); + if ( race.cfg.finishline ){ + draw_winner( &tck, cars[race.winner].color ); + sound_winner( &tck, race.winner ); + strip_clear( &tck ); + } + track.show(); + customDelay.start(NEWRACE_DELAY); + race.phase = READY; + } + break; + + default: + { + sprintf( txbuff, "Software Error in main loop switch()"); + printdebug( txbuff, WARNING ); + break; } - + + } // switch + } void send_phase( int phase ) { - Serial.print( "R" ); - Serial.print( phase ); - Serial.print( EOL ); + sprintf(txbuff, "R%d%c",phase,EOL); + serialCommand.sendCommand(txbuff); } @@ -363,7 +415,9 @@ void run_racecycle( car_t *car, int i ) { if ( car->st == CAR_FINISH ){ car->trackID = NOT_TRACK; sprintf( txbuff, "w%d%c", i + 1, EOL ); - Serial.print( txbuff ); + serialCommand.sendCommand(txbuff); + //sendCommand(txbuff); + car_resetPosition( car ); } } @@ -403,28 +457,68 @@ void print_cars_positions( car_t* cars ) { for( int i = 0; i < race.numcars; ++i ) { int const rpos = get_relative_position( &cars[i] ); sprintf( txbuff, "p%d%s%d,%d%c", i + 1, tracksID[cars[i].trackID], cars[i].nlap, rpos, EOL ); - Serial.print( txbuff ); + serialCommand.sendCommand(txbuff); + //sendCommand(txbuff); } } -void start_race( ) { - track.setPixelColor(LED_SEMAPHORE, track.Color(255,0,0)); + + + +/* + * non-blocking version + */ +boolean start_race_done( ) { + if(countdown_new_phase){ + countdown_new_phase=false; + //customDelay.start(CONTDOWN_PHASE_DURATION); + customDelay.start(CONTDOWN_PHASE_DURATION); + strip_clear( &tck ); + if(ramp_isactive( &tck )) draw_ramp( &tck ); + if(box_isactive( &tck )) draw_box_entrypoint( &tck ); + switch(countdown_phase) { + case 1: + tone(PIN_AUDIO,400); + track.setPixelColor(LED_SEMAPHORE, track.Color(255,0,0)); + break; + case 2: + tone(PIN_AUDIO,600); + track.setPixelColor(LED_SEMAPHORE, track.Color(0,0,0)); + track.setPixelColor(LED_SEMAPHORE-1, track.Color(255,255,0)); + break; + case 3: + tone(PIN_AUDIO,1200); + track.setPixelColor(LED_SEMAPHORE-1, track.Color(0,0,0)); + track.setPixelColor(LED_SEMAPHORE-2, track.Color(0,255,0)); + break; + case 4: + //customDelay.start(CONTDOWN_STARTSOUND_DURATION); + customDelay.start(CONTDOWN_STARTSOUND_DURATION); + tone(PIN_AUDIO,880); + track.setPixelColor(LED_SEMAPHORE-2, track.Color(0,0,0)); + track.setPixelColor(0, track.Color(255,255,255)); + break; + case 5: + noTone(PIN_AUDIO); + countdownReset(); // reset for next countdown + return(true); + } track.show(); - tone(PIN_AUDIO,400); - delay(2000); + } + if(customDelay.elapsed()) { noTone(PIN_AUDIO); - track.setPixelColor(LED_SEMAPHORE, track.Color(0,0,0)); - track.setPixelColor(LED_SEMAPHORE-1, track.Color(255,255,0)); - track.show(); - tone(PIN_AUDIO,600); - delay(2000); - noTone(PIN_AUDIO); - track.setPixelColor(LED_SEMAPHORE-1, track.Color(0,0,0)); - track.setPixelColor(LED_SEMAPHORE-2, track.Color(0,255,0)); - track.show(); - tone(PIN_AUDIO,1200); - delay(2000); - noTone(PIN_AUDIO); + countdown_new_phase=true; + countdown_phase++; + } + return(false); +} + +/* + * + */ +void countdownReset() { + countdown_phase=1; + countdown_new_phase=true; } @@ -477,8 +571,26 @@ void draw_car( track_t* tck, car_t* car ) { } } -void draw_ramp( track_t* tck ) { - struct cfgramp const* r = &tck->cfg.ramp; + +/* + * Display on LED Strip current values for Slope and Pitlane + * + */ +void show_cfgpars_onstrip(){ + strip_clear( &tck ); + if( ramp_isactive( &tck ) ) + draw_ramp( &tck ); + if( box_isactive( &tck ) ) + draw_box_entrypoint( &tck ); + track.show(); +} + + +/* + * + */ +void draw_ramp( track_t* _tck ) { + struct cfgramp const* r = &_tck->cfg.ramp; byte dist = 0; byte intensity = 0; for( int i = r->init; i <= r->center; ++i ) { @@ -494,262 +606,358 @@ void draw_ramp( track_t* tck ) { } -void draw_box_entrypoint( track_t* tck ) { - struct cfgtrack const* cfg = &tck->cfg.track; - track.setPixelColor(cfg->init_aux ,COLOR_BOXMARKS ); // Pit lane exit (race start) - track.setPixelColor(cfg->init_aux - cfg->nled_aux + 1 ,COLOR_BOXMARKS ); // Pit lane Entrance +/* + * + */ +void draw_box_entrypoint( track_t* _tck ) { + struct cfgtrack const* cfg = &_tck->cfg.track; + int out = cfg->nled_total - cfg->box_len; // Pit lane exit (race start) + int in = out - cfg->box_len; // Pit lane Entrance + track.setPixelColor(in ,COLOR_BOXMARKS ); + track.setPixelColor(out ,COLOR_BOXMARKS ); } +/* + * Check Serial to see if there is a command ready to be processed + * + */ +ack_t manageSerialCommand() { -void printdebug( const char * msg, int errlevel ) { - - char header[4]; - sprintf( header, "!%d,", errlevel ); - Serial.print( header ); - Serial.print( msg ); - Serial.print( EOL ); -} - - -ack_t parseCommands(AsyncSerial &serial) { - - ack_t ack = { .rp = NOK, .type = '\0' }; - memcpy(&cmd, serial.GetContent(), serial.GetContentLength()); - - if ( ECHO ) //VERBOSE ECHO - printdebug( cmd, DEBUG ); - - if( cmd[0] == '#' ) { - ack.type = cmd[0]; - Serial.print("#"); - Serial.print( EOL ); - ack.rp = NOTHING; - } - else if( cmd[0] == 'R' ) { - ack.type = cmd[0]; - int const phase = atoi( cmd + 1); - if( 0 > phase || RACE_PHASES <= phase) return ack; - race.phase = (enum phases) phase; - ack.rp = OK; - - if ( verbose >= DEBUG ) { //VERBOSE - sprintf( txbuff, "%s %d", "RACE PHASE: ", race.phase); - printdebug( txbuff, DEBUG ); - } - } - else if( cmd[0] == 'C' ) { //Parse race configuration -> C1.2.3.0 - ack.type = cmd[0]; - - char * pch = strtok (cmd,"C"); - if( !pch ) return ack; - - pch = strtok (pch, "," ); - if( !pch ) return ack; - //cfg.startline = atoi( pch ); - int startline = atoi( pch ); - - pch = strtok (NULL, ","); - if( !pch ) return ack; - //cfg.nlap = atoi( pch ); - int nlap = atoi( pch ); - - pch = strtok (NULL, ","); - if( !pch ) return ack; - //cfg.nrepeat = atoi( pch ); - int nrepeat = atoi( pch ); - - pch = strtok (NULL, ","); - if( !pch ) return ack; - //cfg.finishline = atoi( pch ); - int finishline = atoi( pch ); - - int err = race_configure( &tck, startline, nlap, nrepeat, finishline); - if( err ) return ack; - EEPROM.put( eeadrInfo, tck.cfg ); - - race.cfg.startline = tck.cfg.race.startline; - race.cfg.nlap = tck.cfg.race.nlap; - race.cfg.nrepeat = tck.cfg.race.nrepeat; - race.cfg.finishline = tck.cfg.race.finishline; - - race.newcfg = true; - ack.rp = OK; - if ( verbose >= DEBUG ) { //VERBOSE - sprintf( txbuff, "%s %d, %d, %d, %d", "RACE CONFIG: ", - race.cfg.startline, - race.cfg.nlap, - race.cfg.nrepeat, - race.cfg.finishline ); - printdebug( txbuff, DEBUG ); - } - } - else if( cmd[0] == 'T' ) { //Parse Track configuration -> Track length - ack.type = cmd[0]; - - char * pch = strtok (cmd,"T"); - if( !pch ) return ack; - - int nled = atoi( cmd + 1 ); - int err = tracklen_configure( &tck, nled); - if( err ) return ack; - track_configure( &tck, 0); - if( err ) return ack; - - EEPROM.put( eeadrInfo, tck.cfg ); - - ack.rp = OK; - if ( verbose >= DEBUG ) { //VERBOSE - struct cfgtrack const* cfg = &tck.cfg.track; - sprintf( txbuff, "%s %d, %d, %d, %d, %d", "TRACK CONFIG: ", - cfg->nled_total, - cfg->nled_main, - cfg->nled_aux, - cfg->init_aux, - cfg->box_len); - printdebug( txbuff, DEBUG ); - } - - } - else if( cmd[0] == 'B' ) { //Parse BoxLenght Configuration - ack.type = cmd[0]; - - char * pch = strtok (cmd,"B"); - if( !pch ) return ack; - - int boxlen = atoi( cmd + 1 ); - int err = boxlen_configure( &tck, boxlen); - if( err ) return ack; - - EEPROM.put( eeadrInfo, tck.cfg ); - - ack.rp = OK; - if ( verbose >= DEBUG ) { //VERBOSE - struct cfgtrack const* cfg = &tck.cfg.track; - sprintf( txbuff, "%s %d, %d, %d, %d, %d", "TRACK CONFIG: ", - cfg->nled_total, - cfg->nled_main, - cfg->nled_aux, - cfg->init_aux, - cfg->box_len); - printdebug( txbuff, DEBUG ); - } - - } - else if( cmd[0] == 'A' ) { // Parse Ramp configuration -> A

. - ack.type = cmd[0]; - - char * pch = strtok (cmd,"A"); - if( !pch ) return ack; - - pch = strtok (pch, "," ); - if( !pch ) return ack; - int init = atoi( pch ); - - pch = strtok (NULL, "," ); - if( !pch ) return ack; - int center = atoi( pch ); - - pch = strtok (NULL, "," ); - if( !pch ) return ack; - int end = atoi( pch ); - - pch = strtok (NULL, ","); - if( !pch ) return ack; - int high = atoi( pch ); - - int err = ramp_configure( &tck, init, center, end, high ); - if( err ) return ack; - EEPROM.put( eeadrInfo, tck.cfg ); - - ramp_init( &tck ); - ack.rp = OK; - if ( verbose >= DEBUG ) { //VERBOSE - struct cfgramp const* cfg = &tck.cfg.ramp; - sprintf( txbuff, "%s %d, %d, %d, %d", "RAMP CONFIG: ", - cfg->init, - cfg->center, - cfg->end, - cfg->high ); - printdebug( txbuff, DEBUG ); - } + ack_t ack = { .rp = NOTHING, .type = '\0' }; + + int clen = serialCommand.checkSerial(); + if(clen == 0) return ack; // No commands received + if(clen < 0) { // Error receiving command + sprintf( txbuff, "Error reading serial command:[%d]",clen); + printdebug( txbuff, WARNING ); } - else if( cmd[0] == 'D') { - ack.type = cmd[0]; - param_setdefault( &tck.cfg ); - EEPROM.put( eeadrInfo, tck.cfg ); - sprintf( txbuff, "%s", "Load default" ); - printdebug( txbuff, DEBUG ); - ack.rp = OK; - } - else if( cmd[0] == ':' ) { // Set board Unique Id - struct brdinfo* info = &tck.cfg.info; - ack.type = cmd[0]; - if( strlen(cmd + 1) > LEN_UID ) return ack; - strcpy( info->uid, cmd + 1 ); - EEPROM.put( eeadrInfo, tck.cfg ); - ack.rp = OK; - if ( verbose >= DEBUG ) { //VERBOSE - sprintf( txbuff, "%s %s", "UID: ", tck.cfg.info.uid ); - printdebug( txbuff, DEBUG ); + // clen > 0 ---> Command with length=clen ready in cmd[] + ack.rp=NOK; + + switch (cmd[0]) { + case '#': // Handshake + { + ack.type = cmd[0]; + sprintf( txbuff, "#%c", EOL ); + serialCommand.sendCommand(txbuff); + ack.rp = NOTHING; + } + break; + + case '@' : // Enter "Configuration Mode" status + { + ack.type = cmd[0]; + if(race.phase != CONFIG) {// Ignore command if Board already in "Configure Mode" + race.phase = CONFIG; + enter_configuration_mode(); + } + ack.rp = OK; } - } - else if( cmd[0] == '$' ) { // Get Board UID - sprintf( txbuff, "%s%s%c", "$", tck.cfg.info.uid, EOL ); - Serial.print( txbuff ); - ack.rp = NOTHING; - } - else if( cmd[0] == '%' ) { // Get Software Version - sprintf( txbuff, "%s%s%c", "%", version, EOL ); - Serial.print( txbuff ); - ack.rp = NOTHING; - } - else if( cmd[0] == 'Q' ) { // Get configuration Info - struct cfgparam const* cfg = &tck.cfg; - sprintf( txbuff, "%s:%d,%d,%d,%d,%d%c", "TRACK", - cfg->track.nled_total, - cfg->track.nled_main, - cfg->track.nled_aux, - cfg->track.init_aux, - cfg->track.box_len, - EOL ); - Serial.print( txbuff ); - sprintf( txbuff, "%s:%d,%d,%d,%d%c", "RAMP", - cfg->ramp.init, - cfg->ramp.center, - cfg->ramp.end, - cfg->ramp.high, - EOL ); - Serial.print( txbuff ); - sprintf( txbuff, "%s:%d,%d,%d,%d%c", "RACE", - cfg->race.startline, - cfg->race.nlap, - cfg->race.nrepeat, - cfg->race.finishline, - EOL ); - Serial.print( txbuff ); + break; + + case '~' : // Exit "Configure Mode" + { + ack.type = cmd[0]; + if(race.phase == CONFIG) { // Ignore command if Board is not in "Configure Mode" + race.newcfg = true; + } + ack.rp = OK; + } + break; + + case 'R' : // Set Race Phase + { + ack.type = cmd[0]; + int const phase = atoi( cmd + 1); + if( 0 > phase || RACE_PHASES <= phase) return ack; + race.phase = (enum phases) phase; + ack.rp = OK; + if ( race.phase == CONFIG ) { // accept R1 as a EnterConfigurationMode command - DEPRECATED + enter_configuration_mode(); + } + } + break; - ack.rp = NOTHING; - } + case 'C' : //Parse race configuration -> C1,2,3,0 + { + ack.type = cmd[0]; + + char * pch = strtok (cmd,"C"); + if( !pch ) return ack; + + pch = strtok (pch, "," ); + if( !pch ) return ack; + int startline = atoi( pch ); + + pch = strtok (NULL, ","); + if( !pch ) return ack; + int nlap = atoi( pch ); + + pch = strtok (NULL, ","); + if( !pch ) return ack; + int nrepeat = atoi( pch ); + + pch = strtok (NULL, ","); + if( !pch ) return ack; + int finishline = atoi( pch ); + + int err = race_configure( &tck, startline, nlap, nrepeat, finishline); + if( err ) return ack; + + race.cfg.startline = tck.cfg.race.startline; + race.cfg.nlap = tck.cfg.race.nlap; + race.cfg.nrepeat = tck.cfg.race.nrepeat; + race.cfg.finishline = tck.cfg.race.finishline; + + ack.rp = OK; + } + break; + - return ack; + case 'T' : //Parse Track configuration -> Track length + { + ack.type = cmd[0]; + + char * pch = strtok (cmd,"T"); + if( !pch ) return ack; + + int nled = atoi( cmd + 1 ); + int err = tracklen_configure( &tck, nled); + if( err ) return ack; + track_configure( &tck, 0); + if( err ) return ack; + + ack.rp = OK; + } + break; + + case 'B' : //Parse BoxLenght Configuration -> Blen,perm + { + ack.type = cmd[0]; + + char * pch = strtok (cmd,"B"); + if( !pch ) return ack; + + pch = strtok (pch, "," ); + if( !pch ) return ack; + int boxlen = atoi( pch ); + + pch = strtok (NULL, "," ); + if( !pch ) return ack; + int boxperm = atoi( pch ); + + int err = boxlen_configure( &tck, boxlen, boxperm ); + if( err ) return ack; + + ack.rp = OK; + + // Force Pitlane ON, so "show_cfgpars_onstrip()" + // will show the new values, even if AlwaysON=false + box_init(&tck); + show_cfgpars_onstrip(); + } + break; + + case 'A' : // Parse Ramp configuration -> Astart,center,end,high,perm + { + ack.type = cmd[0]; + + char * pch = strtok (cmd,"A"); + if( !pch ) return ack; + + pch = strtok (pch, "," ); + if( !pch ) return ack; + int init = atoi( pch ); + + pch = strtok (NULL, "," ); + if( !pch ) return ack; + int center = atoi( pch ); + + pch = strtok (NULL, "," ); + if( !pch ) return ack; + int end = atoi( pch ); + + pch = strtok (NULL, ","); + if( !pch ) return ack; + int high = atoi( pch ); + + pch = strtok (NULL, ","); + if( !pch ) return ack; + int slopeperm = atoi( pch ); + + int err = ramp_configure( &tck, init, center, end, high, slopeperm ); + if( err ) return ack; + ack.rp = OK; + + // Force Ramp ON, so "show_cfgpars_onstrip()" + // will show the new values, even if AlwaysON=false + ramp_init(&tck); + + show_cfgpars_onstrip(); + } + break; + + case 'K': // Parse Physic simulation parameters + { + ack.type = cmd[0]; + + char * pch = strtok (cmd,"K"); + if( !pch ) return ack; + + pch = strtok (pch, "," ); + if( !pch ) return ack; + float kgp = atof( pch ); + + pch = strtok (NULL, "," ); + if( !pch ) return ack; + float kfp = atof( pch ); + + int err = physic_configure( &tck, kgp, kfp ); + if( err ) return ack; + + ack.rp = OK; + } + break; + + + case 'D' : // Load Default Parameters and store them in from EEPROM + { + ack.type = cmd[0]; + param_setdefault( &tck.cfg ); + EEPROM.put( eeadrInfo, tck.cfg ); // Save immediately + + ack.rp = OK; + + // Update box/slope active in current Track Struct with values + // just loaded (for show_cfgpars_onstrip()) + struct cfgparam const* cfg = &tck.cfg; + tck.boxactive = cfg->track.box_alwaysOn; + tck.rampactive = cfg->ramp.alwaysOn; + + show_cfgpars_onstrip(); + } + break; + + case ':' : // Set board Unique Id + { + struct brdinfo* info = &tck.cfg.info; + ack.type = cmd[0]; + if( strlen(cmd + 1) > LEN_UID ) return ack; + strcpy( info->uid, cmd + 1 ); + EEPROM.put( eeadrInfo, tck.cfg ); // Save immediately + ack.rp = OK; + } + break; + + case '$': // Get Board UID + { + sprintf( txbuff, "%s%s%c", "$", tck.cfg.info.uid, EOL ); + serialCommand.sendCommand(txbuff); + ack.rp = NOTHING; + } + break; + + case '?' : // Get Software Id + { + sprintf( txbuff, "%s%s%c", "?", softwareId, EOL ); + serialCommand.sendCommand(txbuff); + ack.rp = NOTHING; + } + break; + + case '%' : // Get Software Version + { + sprintf( txbuff, "%s%s%c", "%", version, EOL ); + serialCommand.sendCommand(txbuff); + ack.rp = NOTHING; + } + break; + + case 'Q': // Get current configuration Info + { + struct cfgparam const* cfg = &tck.cfg; + sprintf( txbuff, "%s:%d,%d,%d,%d,%d,%d,%d.%03d,%d.%03d%c", "QTRACK", + cfg->track.nled_total, + cfg->track.nled_main, + cfg->track.nled_aux, + cfg->track.init_aux, + cfg->track.box_len, + cfg->track.box_alwaysOn, + (int)cfg->track.kg, (int)(cfg->track.kg*1000)%1000, // std arduino sprintf() missing %f + (int)cfg->track.kf, (int)(cfg->track.kf*1000)%1000, // std arduino sprintf() missing %f + EOL ); + serialCommand.sendCommand(txbuff); + + sprintf( txbuff, "%s:%d,%d,%d,%d,%d%c", "QRAMP", + cfg->ramp.init, + cfg->ramp.center, + cfg->ramp.end, + cfg->ramp.high, + cfg->ramp.alwaysOn, + EOL ); + serialCommand.sendCommand(txbuff); + + sprintf( txbuff, "%s:%d,%d,%d,%d%c", "QRACE", + cfg->race.startline, + cfg->race.nlap, + cfg->race.nrepeat, + cfg->race.finishline, + EOL ); + serialCommand.sendCommand(txbuff); + + ack.rp = NOTHING; + } + break; + + case 'W': // Write configuration to EEPROM + { + ack.type = cmd[0]; + EEPROM.put( eeadrInfo, tck.cfg ); + ack.rp = OK; + } + break; + + } // switch + + return(ack); + } -void sendresponse( ack_t *ack) { +/* + * + */ +void sendResponse( ack_t *ack) { + if(ack->type=='\0'){ + sprintf(txbuff, "%s%c", ack->rp==OK? "OK":"NOK" , EOL ); + } else { + sprintf(txbuff, "%c%s%c", ack->type, ack->rp==OK? "OK":"NOK" , EOL ); + } + serialCommand.sendCommand(txbuff); +} - if( ack->rp == OK ) { - Serial.print( ack->type ); - Serial.print("OK"); - Serial.print( EOL ); - } - else if( ack->rp == NOK ) { - Serial.print( ack->type ); - Serial.print("NOK"); - Serial.print( EOL ); - } - memset( &cmd, '\0' , sizeof(cmd) ); +/* + * Send Log/Warning/Error messages to host + */ +void printdebug( const char * msg, int errlevel ) { + char header [5]; + sprintf(header, "!%d,",errlevel); + Serial.print(header); + Serial.print(msg); + Serial.print(EOL); +} + + +/* + * reset race parameters + * stop sound + */ +void enter_configuration_mode(){ + noTone(PIN_AUDIO); + strip_clear( &tck ); + track.show(); } @@ -761,9 +969,8 @@ void param_load( struct cfgparam* cfg ) { eeAdress += sizeof( cfgparam ); EEPROM.get( eeAdress, cfgversion ); - sprintf( txbuff, "%s:%d%c", "Parameters Loaded from EEPROM Ver:", cfgversion, EOL ); - Serial.print( txbuff ); - + sprintf( txbuff, "%s:%d%c", "Parameters Loaded from EEPROM - Cfg ver", cfgversion, EOL ); + serialCommand.sendCommand(txbuff); if ( cfgversion != CFG_VER ) { param_setdefault( &tck.cfg ); @@ -771,6 +978,31 @@ void param_load( struct cfgparam* cfg ) { EEPROM.put( eeAdress, tck.cfg ); eeAdress += sizeof( cfgparam ); EEPROM.put( eeAdress, CFG_VER ); - Serial.print("DEFAULT PAREMETRS LOADED (and Stored in EEPROM)\n"); + sprintf( txbuff, "%s%c", "DEFAULT PAREMETRS LOADED (and Stored in EEPROM)", EOL ); + serialCommand.sendCommand(txbuff); + } + } + + + +/* + * Custon Non-Blocking Delay() functions + * customDelayStart(unsigned long timeout) + * customDelayElapsed + */ +/** +unsigned long customDelay_startTime=0; +unsigned long customDelay_timeout=0; +void customDelayStart(unsigned long tout) { + customDelay_timeout=tout; + customDelay_startTime=millis(); +} +boolean customDelayElapsed(){ + if((millis() - customDelay_startTime) > customDelay_timeout) { + return(true); + } + return(false); +} +**/ diff --git a/open-led-race_0.0/SerialCommand.cpp b/open-led-race_0.0/SerialCommand.cpp new file mode 100644 index 0000000..80fdfaf --- /dev/null +++ b/open-led-race_0.0/SerialCommand.cpp @@ -0,0 +1,74 @@ +#include "SerialCommand.h" + + +/* + * + */ +SerialCommand::SerialCommand() { + _initialized = false; +} +/* + * + */ +SerialCommand::SerialCommand(char *buf, int blen, char eoc, Stream* stream) { + init(buf, blen, eoc, stream); +} + +/* + * + */ +void SerialCommand::init(char *buf, int blen, char eoc, Stream* stream) { + if(_initialized) return; + + _stream = stream == NULL ? &Serial : stream; + _buf = buf; + _bufLen = blen; + _bufIdx = 0; + _eoc = eoc; + _initialized = true; +} + + +/* + * + */ +int SerialCommand::getCommand() { + if( !_initialized) return(-1); + + while (_stream->available()) { + if(_bufIdx < _bufLen - 2) { + char data = _stream->read(); + if(data == _eoc) { + int cmsSize=_bufIdx; + _buf[_bufIdx++] = '\0'; + _bufIdx=0; + return(cmsSize); + } else { + _buf[_bufIdx++] = data; + } + } else { + // buffer full + // re4set and retunn error + _buf[_bufIdx++] = '\0'; + _bufIdx=0; + return(-2); + } + } + return(0); + +} + + +void SerialCommand::sendCommand(char* str) { + // get command length + int dlen=0; +// for(; dlen<_bufLen; dlen++ ) { // limit transmitted command length to received command buffer + for(; dlen<80; dlen++ ) { // limit transmitted command length to received command buffer + if(*(str+dlen) == _eoc ){ + dlen++; // send EOC + break; + } + } + _stream->write(str, dlen); + return; +} diff --git a/open-led-race_0.0/SerialCommand.h b/open-led-race_0.0/SerialCommand.h new file mode 100644 index 0000000..bb3af55 --- /dev/null +++ b/open-led-race_0.0/SerialCommand.h @@ -0,0 +1,29 @@ +#ifndef SerialCommand_h +#define SerialCommand_h + +#include + +class SerialCommand { + + public: + SerialCommand(); + SerialCommand(char *buf, int bufLen, char eoc, Stream* stream); + void init(char *buf, int bufLen, char eoc, Stream* stream); + int getCommand(void); + void sendCommand(char *); + + int overflow; + + protected: + Stream* _stream; + char *_buf; + int _bufIdx; + int _bufLen; + char _eoc; // EndOfCommand char + + bool _initialized; + + +}; + +#endif diff --git a/open-led-race_0.0/SoftTimer.cpp b/open-led-race_0.0/SoftTimer.cpp new file mode 100644 index 0000000..40e7e11 --- /dev/null +++ b/open-led-race_0.0/SoftTimer.cpp @@ -0,0 +1,36 @@ +#include "SoftTimer.h" + +SoftTimer::SoftTimer(unsigned long tout) { + this->set(tout); +} + +SoftTimer::SoftTimer() { +} + +/* + * + */ +void SoftTimer::set(unsigned long tout) { + this->timeout=tout; +} + + +void SoftTimer::start() { + this->startTime=millis(); +} + +void SoftTimer::start(unsigned long tout) { + this->set(tout); + this->start(); +} + + +/* + * + */ +boolean SoftTimer::elapsed(){ + if((millis() - this->startTime) > this->timeout) { + return(true); + } + return(false); +} diff --git a/open-led-race_0.0/SoftTimer.h b/open-led-race_0.0/SoftTimer.h new file mode 100644 index 0000000..55ff24f --- /dev/null +++ b/open-led-race_0.0/SoftTimer.h @@ -0,0 +1,23 @@ +#ifndef SoftTimer_h +#define SoftTimer_h + +#include + +class SoftTimer { + + public: + + SoftTimer(void); + SoftTimer(unsigned long); + void set(unsigned long); + void start(void); + void start(unsigned long); + boolean elapsed(void); + + private: + unsigned long startTime=0; + unsigned long timeout=0; + +}; + +#endif diff --git a/open-led-race_0.0/olr-controller.c b/open-led-race_0.0/olr-controller.c new file mode 100644 index 0000000..1b8e55c --- /dev/null +++ b/open-led-race_0.0/olr-controller.c @@ -0,0 +1,75 @@ +#include "olr-controller.h" + +enum { + DELTA_ANALOG = 5, +}; + +static float const ACEL = 0.2; + +void controller_setup( void ) { + + if( DIGITAL_MODE == false ){ + pinMode(PIN_VCC_ADC1, OUTPUT); + pinMode(PIN_VCC_ADC2, OUTPUT); + digitalWrite(PIN_VCC_ADC1, HIGH); + digitalWrite(PIN_VCC_ADC2, HIGH); + } + + pinMode( DIG_CONTROL_1, INPUT_PULLUP); //pull up in adc + pinMode( DIG_CONTROL_2, INPUT_PULLUP); + pinMode( DIG_CONTROL_3, INPUT_PULLUP); + pinMode( DIG_CONTROL_4, INPUT_PULLUP); +} + +void controller_init( controller_t* ct, enum ctr_type mode, int pin ) { + ct->mode = mode; + ct->pin = pin; + ct->delta_analog = DELTA_ANALOG; +} + + +byte controller_getStatus( controller_t* ct ) { + + if( ct->mode == DIGITAL_MODE ){ + return digitalRead( ct->pin ); + } + else if( ct->mode == ANALOG_MODE ){ + ct->adc = analogRead( ct->pin ); + if( abs( ct->badc - ct->adc ) > ct->delta_analog ){ + ct->badc = ct->adc; + return 1; + } + ct->badc = ct->adc; + } + else if( ct->mode == DEBUG_MODE ){ + ct->adc++; + if( ct->adc >= 60){ + ct->adc = 0; + return 1; + } + } + return 0; + +} + + +float controller_getSpeed( controller_t* ct) { + float speed = 0.0; + if ( (ct->flag_sw == 1 ) && (controller_getStatus( ct ) == 0) ) { + ct->flag_sw = 0; + speed = ACEL; + } + + if ( (ct->flag_sw == 0 ) && (controller_getStatus( ct ) == 1 ) ) { + ct->flag_sw = 1; + } + return speed; +} + +float controller_getAccel ( void ) { + return ACEL; +} + +bool controller_isActive( int pin ) { + return !digitalRead( pin ); +} diff --git a/open-led-race_0.0/olr-controller.h b/open-led-race_0.0/olr-controller.h new file mode 100644 index 0000000..87fad3a --- /dev/null +++ b/open-led-race_0.0/olr-controller.h @@ -0,0 +1,58 @@ +#ifndef _OLR_CONTROLLER_LIB_h +#define _OLR_CONTROLLER_LIB_h + +#ifdef __cplusplus + +extern "C"{ +#endif + +#include "Arduino.h" +#include +#include + + +#define DIG_CONTROL_1 A2 // switch player 1 to PIN and GND +#define DIG_CONTROL_2 A0 // switch player 2 to PIN and GND +#define DIG_CONTROL_3 A3 // switch player 3 to PIN and GND +#define DIG_CONTROL_4 A1 // switch player 4 to PIN and GND + +#define PIN_VCC_ADC1 6 +#define PIN_VCC_ADC2 7 + + + +enum ctr_type{ + NOT_DEFINED = 0, + DIGITAL_MODE, + ANALOG_MODE, + DEBUG_MODE, +}; + +typedef struct{ + enum ctr_type mode; + int pin; + int adc; + int badc; + int delta_analog; + byte flag_sw; +}controller_t; + +void controller_setup( void ); + +void controller_init( controller_t* ct, enum ctr_type mode, int pin ); + +byte controller_getStatus( controller_t* ct ); + +float controller_getSpeed( controller_t* ct ); + +float controller_getAccel ( void ); + +bool controller_isActive( int pin ); + + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif + diff --git a/open-led-race_0.0/olr-lib.c b/open-led-race_0.0/olr-lib.c new file mode 100644 index 0000000..7e2010c --- /dev/null +++ b/open-led-race_0.0/olr-lib.c @@ -0,0 +1,197 @@ +#include "Arduino.h" +#include "olr-lib.h" + + +//void process_main_track( track_t* tck, car_t* car ); +//void process_aux_track( track_t* tck, car_t* car ); + + + + + + + +void car_init( car_t* car, controller_t* ct, uint32_t color ) { + car->ct = ct; + car->color = color; + car->trackID = TRACK_MAIN; + car->speed=0; + car->dist=0; + car->dist_aux=0; +} + +void car_updateController( car_t* car ) { + car->speed += controller_getSpeed( car->ct ); +} + +void update_track( track_t* tck, car_t* car ) { + controller_t* ct = car->ct; + struct cfgtrack const* cfg = &tck->cfg.track; + + + if ( car->trackID == TRACK_MAIN + && (int)car->dist % cfg->nled_main == (cfg->init_aux-(cfg->nled_aux)) + // && controller_getStatus( ct ) == 0 ) { //change track by switch + && (car->speed <= SPD_MIN_TRACK_AUX )) { //change track by low speed + + car->trackID = TRACK_AUX; + car->dist_aux = 0; + } + else if( car->trackID == TRACK_AUX + && car->dist_aux > cfg->nled_aux ) { + + car->trackID = TRACK_MAIN; + car->dist += cfg->nled_aux; + } + + /* Update car position in the current track */ + if ( car->trackID == TRACK_AUX ) process_aux_track( tck, car ); + else if ( car->trackID == TRACK_MAIN ) process_main_track( tck, car ); + + /* Update car lap */ + if ( car->dist > ( cfg->nled_main*car->nlap -1) ) car->nlap++; +} + +void process_aux_track( track_t* tck, car_t* car ){ + struct cfgtrack const* cfg = &tck->cfg.track; + + if ( (int)car->dist_aux == tck->ledcoin + && car->speed <= controller_getAccel() ) { + car->speed = controller_getAccel ()*50; + tck->ledcoin = COIN_RESET; + }; + + car->speed -= car->speed * cfg->kf; + car->dist_aux += car->speed; +} + + +void process_main_track( track_t* tck, car_t* car ) { + struct cfgtrack const* cfg = &tck->cfg.track; + + if ( tck->rampactive ) { + struct cfgramp const* r = &tck->cfg.ramp; + int const pos = (int)car->dist % cfg->nled_main; + if ( pos >= r->init && pos < r->center ) + // car->speed -= cfg->kg * r->high * ( pos - r->init ); + car->speed -= cfg->kg * r->high ; + + if ( pos <= r->end && pos > r->center ) + //car->speed += cfg->kg * r->high * ( pos - r->center ); + car->speed += cfg->kg * r->high ; + } + + car->speed -= car->speed * cfg->kf; + car->dist += car->speed; + +} + +void ramp_init( track_t* tck ) { + tck->rampactive = true; +} + + +bool ramp_isactive( track_t* tck ) { + return tck->rampactive; +} + + +void car_resetPosition( car_t* car) { + + car->trackID = TRACK_MAIN; + car->speed = 0; + car->dist = 0; + car->dist_aux = 0; + car->nlap = 1; + car->leaving = false; +} + +void box_init( track_t* tck ) { + tck->boxactive = true; +} + +bool box_isactive( track_t* tck ) { + return tck->boxactive; +} + + + +int tracklen_configure( track_t* tck, int nled ) { + struct cfgtrack* cfg = &tck->cfg.track; + if( nled <= 0 ) return -1; + cfg->nled_total = nled; + return 0; +} + +int boxlen_configure( track_t* tck, int box_len, int boxalwaysOn ) { + struct cfgtrack* cfg = &tck->cfg.track; + + if ( boxalwaysOn != 0 && boxalwaysOn != 1 ) return -1; + if( box_len <= 0 || box_len >= cfg->nled_total ) return -1; + cfg->box_len = box_len; + cfg->box_alwaysOn = boxalwaysOn; + + // Update track->boxactive + tck->boxactive = boxalwaysOn; + return 0; +} + +int physic_configure( track_t* tck, float kgp, float kfp ){ + struct cfgtrack* cfg = &tck->cfg.track; + + if( kgp <= 0.0 || kgp >= 2.0 ) return -1; + if( kfp <= 0.0 || kfp >= 2.0 ) return -1; + cfg->kf = kfp; + cfg->kg = kgp; + return(0); +} + + + +int track_configure( track_t* tck, int init_box ) { + struct cfgtrack* cfg = &tck->cfg.track; + + if(init_box >= cfg->nled_total ) return -1; + cfg->nled_main = ( init_box == 0 ) ? cfg->nled_total : init_box; + cfg->nled_aux = ( init_box == 0 ) ? 0 : cfg->nled_total - init_box; + cfg->init_aux = init_box - 1; + return 0; +} + + +int ramp_configure( track_t* tck, int init, int center, int end, int high, int alwaysOn ) { + struct cfgramp* ramp = &tck->cfg.ramp; + + if ( init >= tck->cfg.track.nled_main || init <= 0 ) return -1; + if ( center >= tck->cfg.track.nled_main || center <= 0 ) return -2; + if ( end >= tck->cfg.track.nled_main || end <= 0 ) return -3; + if ( ! (center > init && center < end) ) return -4; + if ( alwaysOn != 0 && alwaysOn != 1 ) return -5; + + ramp->init = init; + ramp->center = center; + ramp->end = end; + ramp->high = high; + ramp->alwaysOn = alwaysOn; + + // Update track->rampactive + /** + boolean rampactive = &tck->rampactive; + rampactive = alwaysOn; + **/ + tck->rampactive = alwaysOn; + + return 0; +} + +int race_configure( track_t* tck, int startline, int nlap, int nrepeat, int finishline ) { + struct cfgrace* race = &tck->cfg.race; + + if ( startline != 0 && startline != 1 ) return -1; + if ( finishline != 0 && finishline != 1 ) return -1; + race->startline = startline; + race->finishline = finishline; + race->nlap = nlap; + race->nrepeat = nrepeat; + return 0; +} diff --git a/open-led-race_0.0/olr-lib.h b/open-led-race_0.0/olr-lib.h new file mode 100644 index 0000000..81f84e8 --- /dev/null +++ b/open-led-race_0.0/olr-lib.h @@ -0,0 +1,103 @@ + +#ifndef _OLR_LIB_h +#define _OLR_LIB_h + +#ifdef __cplusplus + +extern "C"{ +#endif + +#include +#include +#include +#include "olr-controller.h" +#include "olr-param.h" + +#define SPD_MIN_TRACK_AUX 0.8 + +enum stcoin{ + COIN_RESET = -2, + COIN_WAIT = -1, +}; + +enum{ + NOT_TRACK = 0, + TRACK_MAIN, + TRACK_AUX, + TRACK_IN, + TRACK_OUT, + NUM_TRACKS, +}; + + +enum status{ + CAR_WAITING = 0, + CAR_COMING, + CAR_ENTER, + CAR_RACING, + CAR_LEAVING, + CAR_GO_OUT, + CAR_FINISH +}; + +typedef struct{ + controller_t* ct; + float speed; + float dist; + float dist_aux; + byte nlap; + byte repeats; + uint32_t color; + int trackID; + enum status st; + bool leaving; +}car_t; + + + +typedef struct { + struct cfgparam cfg; + int ledcoin; //LED_SPEED_COIN + uint32_t ledtime; + bool rampactive; + bool boxactive; +}track_t; + + +void car_init( car_t* car, controller_t* ct, uint32_t color ); + +void car_updateController( car_t* car ); + +void car_resetPosition( car_t* car); + +void update_track( track_t* tck, car_t* car ); + +void process_main_track( track_t* tck, car_t* car ); + +void process_aux_track( track_t* tck, car_t* car ); + +void box_init( track_t* tck ); + +bool box_isactive( track_t* tck ); + +int tracklen_configure( track_t* tck, int nled ); + +int boxlen_configure( track_t* tck, int box_len, int boxalwaysOn ); + +int physic_configure( track_t* tck, float kgp, float kfp ); + +int track_configure( track_t* tck, int init_box ); + +void ramp_init( track_t* tck ); + +bool ramp_isactive( track_t* tck ); + +int ramp_configure( track_t* tck, int init, int center, int end, int high, int alwaysOn ); + +int race_configure( track_t* tck, int startline, int nlap, int nrepeat, int finishline ); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/open-led-race_0.0/olr-param.c b/open-led-race_0.0/olr-param.c new file mode 100644 index 0000000..81290ab --- /dev/null +++ b/open-led-race_0.0/olr-param.c @@ -0,0 +1,26 @@ +#include "olr-param.h" + +void param_setdefault( struct cfgparam* cfg ) { + cfg->setted = true; + + cfg->race.startline = true; + cfg->race.nlap = NUMLAP; + cfg->race.nrepeat = 1; + cfg->race.finishline = true; + + cfg->ramp.init = 80; + cfg->ramp.center = 90; + cfg->ramp.end = 100; + cfg->ramp.high = 6; + cfg->ramp.alwaysOn = false; + + cfg->track.nled_total = MAXLED; + cfg->track.nled_main = MAXLED; // 240 when boxes length = 60 + cfg->track.nled_aux = 0; // 60 + cfg->track.init_aux = -1; // 239 + cfg->track.box_len = BOXLEN; + cfg->track.box_alwaysOn = false; + + cfg->track.kf = 0.015; // friction constant + cfg->track.kg = 0.006; // gravity constant - Used in Slope +} diff --git a/open-led-race_0.0/olr-param.h b/open-led-race_0.0/olr-param.h new file mode 100644 index 0000000..7d930a8 --- /dev/null +++ b/open-led-race_0.0/olr-param.h @@ -0,0 +1,77 @@ +#ifndef _OLR_SERIAL_LIB_h +#define _OLR_SERIAL_LIB_h + +#ifdef __cplusplus + +extern "C"{ +#endif + +#include "Arduino.h" +#include +#include + +#define MAXLED 300 +#define BOXLEN 60 +#define NUMLAP 5 + + + +enum{ + LEN_UID = 16, + CFG_VER = 5, // "5" in V0.9.6 (manage "permanent" param for Box and Slope) +}; + +struct cfgrace{ + bool startline; // Used only in OLRNetwork + int nlap; + int nrepeat; // Used only in OLRNetwork + bool finishline; // Used only in OLRNetwork +}; + +// +struct cfgtrack { + int nled_total; + int nled_main; + int nled_aux; + int init_aux; + int box_len; // used to hold the Box Length if the default get changed. + // it's not possible to implicitly store it in nled_main,nled_aux + // because, if these are different to the default, box gets always activated + // (the software does not chek "box_isactive" to draw car position) + bool box_alwaysOn; // added in ver 0.9.6 + + + float kf; + float kg; +}; + +// ramp centred in LED 100 with 10 led fordward and 10 backguard +struct cfgramp { + int init; + int center; + int end; + int high; + bool alwaysOn; // added in ver 0.9.6 +}; + +struct brdinfo { + char uid[LEN_UID + 1]; +}; + +struct cfgparam { + bool setted; + struct cfgrace race; // added in ver 0.9.d + struct cfgtrack track; + struct cfgramp ramp; + struct brdinfo info; +}; + + +void param_setdefault( struct cfgparam* cfg ); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif + diff --git a/open-led-race_0.0/open-led-race_0.0.ino b/open-led-race_0.0/open-led-race_0.0.ino new file mode 100644 index 0000000..b3f0431 --- /dev/null +++ b/open-led-race_0.0/open-led-race_0.0.ino @@ -0,0 +1,945 @@ +/* + * ____ _ ______ _____ _____ + / __ \ | | | ____| __ \ | __ \ + | | | |_ __ ___ _ __ | | | |__ | | | | | |__) |__ _ ___ ___ + | | | | '_ \ / _ \ '_ \ | | | __| | | | | | _ // _` |/ __/ _ \ + | |__| | |_) | __/ | | | | |____| |____| |__| | | | \ \ (_| | (_| __/ + \____/| .__/ \___|_| |_| |______|______|_____/ |_| \_\__,_|\___\___| + | | + |_| + Open LED Race + An minimalist cars race for LED strip + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + + First public version by: + Angel Maldonado (https://gitlab.com/angeljmc) + Gerardo Barbarov (gbarbarov AT singulardevices DOT com) + + Basen on original idea and 2 players code by: + Gerardo Barbarov for Arduino day Seville 2019 + https://github.com/gbarbarov/led-race + + + Public Repository for this code: + https://gitlab.com/open-led-race/olr-arduino + +*/ + + +// 2020/12/10 - Ver 0.9.6 +// --see changelog.txt + +char const softwareId[] = "A4P0"; // A4P -> A = Open LED Race, 4P0 = Game ID (4P = 4 Players, 0=Type 0) +char const version[] = "0.9.6"; + + + +#include +#include +#include "olr-lib.h" +#include "olr-param.h" +#include "SoftTimer.h" +#include "SerialCommand.h" + +#define PIN_LED 2 // R 500 ohms to DI pin for WS2812 and WS2813, for WS2813 BI pin of first LED to GND , CAP 1000 uF to VCC 5v/GND,power supplie 5V 2A +#define PIN_AUDIO 3 // through CAP 2uf to speaker 8 ohms + +#define EOL '\n' // End of Command char used in Protocol + +#define COLOR1 track.Color(255,0,0) +#define COLOR2 track.Color(0,255,0) +#define COLOR3 track.Color(0,0,255) +#define COLOR4 track.Color(255,255,255) + +#define COLOR_RAMP track.Color(64,0,64) +#define COLOR_COIN track.Color(0,255,255) +#define COLOR_BOXMARKS track.Color(64,64,0) +#define LED_SEMAPHORE 12 + +#define CONTDOWN_PHASE_DURATION 2000 +#define CONTDOWN_STARTSOUND_DURATION 40 + +#define NEWRACE_DELAY 5000 + +#define REC_COMMAND_BUFLEN 32 // Received command buffer length +enum{ + MAX_CARS = 4, +}; + + + +enum loglevel { // used in Serial Protocol "!" command (send log/error messageS) + ECHO = 0, + DISABLE = 0, + LOG = 1, + WARNING = 2, + ERROR = 3 +}; + +enum resp{ + NOK = -1, + NOTHING = 0, + OK = 1 +}; + +typedef struct ack{ + enum resp rp; + char type; +}ack_t; + + + +struct cfgcircuit{ + int outtunnel; +}; + +enum phases{ + IDLE = 0, + CONFIG, + CONFIG_OK, + READY, + COUNTDOWN, + RACING, + PAUSE, + RESUME, + COMPLETE, + RACE_PHASES +}; + +struct race{ + struct cfgrace cfg; + struct cfgcircuit circ; + bool newcfg; + enum phases phase; + byte numcars; + int winner; +}; + + +byte SMOTOR=0; +int TBEEP=0; +int FBEEP=0; + +/*------------------------------------------------------*/ +enum loglevel verbose = DISABLE; + +static struct race race; +static car_t cars[ MAX_CARS ]; +static controller_t switchs[ MAX_CARS ]; +static track_t tck; + +static int const eeadrInfo = 0; + +char txbuff[64]; + + + + +static unsigned long lastmillis = 0; + +SoftTimer customDelay = SoftTimer(); // non blocking delay() + +// Used to manage countdown phases +int countdown_phase=1; +bool countdown_new_phase=true; + + +int win_music[] = { + 2637, 2637, 0, 2637, + 0, 2093, 2637, 0, + 3136 +}; + +//int TBEEP=3; + +char tracksID[ NUM_TRACKS ][2] ={"U","M","B","I","O"}; + +/* ----------- Function prototypes ------------------- */ + +void sendResponse( ack_t *ack); +//ack_t parseCommands(AsyncSerial &serial); + +ack_t manageSerialCommand(); + +void printdebug( const char * msg, int errlevel ); +void print_cars_positions( car_t* cars); +void run_racecycle( void ); +void draw_winner( track_t* tck, uint32_t color); + + +char cmd[REC_COMMAND_BUFLEN]; // Stores command received by ReadSerialComand() +SerialCommand serialCommand = SerialCommand(cmd, REC_COMMAND_BUFLEN, EOL, &Serial); // get complete command from serial + + +Adafruit_NeoPixel track; + + +/* + * + */ +void setup() { + + Serial.begin(115200); + randomSeed( analogRead(A6) + analogRead(A7) ); + controller_setup( ); + param_load( &tck.cfg ); + + track = Adafruit_NeoPixel( tck.cfg.track.nled_total, PIN_LED, NEO_GRB + NEO_KHZ800 ); + + controller_init( &switchs[0], DIGITAL_MODE, DIG_CONTROL_1 ); + car_init( &cars[0], &switchs[0], COLOR1 ); + controller_init( &switchs[1], DIGITAL_MODE, DIG_CONTROL_2 ); + car_init( &cars[1], &switchs[1], COLOR2 ); + + race.numcars = 2; + + if( controller_isActive( DIG_CONTROL_3 )) { + controller_init( &switchs[2], DIGITAL_MODE, DIG_CONTROL_3 ); + car_init( &cars[2], &switchs[2], COLOR3 ); + ++race.numcars; + } + + if( controller_isActive( DIG_CONTROL_4 )) { + controller_init( &switchs[3], DIGITAL_MODE, DIG_CONTROL_4 ); + car_init( &cars[3], &switchs[3], COLOR4 ); + ++race.numcars; + } + + track.begin(); + strip_clear( &tck ); + + + // Check Box before Physic/Sound to allow user to have Box and Physics with no sound + if(digitalRead(DIG_CONTROL_2)==0 || tck.cfg.track.box_alwaysOn ) { //push switch 2 on reset for activate boxes (pit lane) + box_init( &tck ); + track_configure( &tck, tck.cfg.track.nled_total - tck.cfg.track.box_len ); + draw_box_entrypoint( &tck ); + } else{ + track_configure( &tck, 0 ); + } + + if( digitalRead(DIG_CONTROL_1)==0 || tck.cfg.ramp.alwaysOn ) { //push switch 1 on reset for activate physics + ramp_init( &tck ); + draw_ramp( &tck ); + track.show(); + delay(2000); + if ( digitalRead( DIG_CONTROL_1 ) == 0 ) { //retain push switch on reset for activate FX sound + SMOTOR=1; + tone(PIN_AUDIO,100);} + } + + race.cfg.startline = tck.cfg.race.startline;// true; + race.cfg.nlap = tck.cfg.race.nlap;// NUMLAP; + race.cfg.nrepeat = tck.cfg.race.nrepeat;// 1; + race.cfg.finishline = tck.cfg.race.finishline;// true; + + customDelay.start(0); // first race starts with no delay + race.phase = READY; +} + +/* + * + */ +void loop() { + + // look for commands received on serial + ack_t ack = manageSerialCommand(); + if(ack.rp != NOTHING){ + sendResponse(&ack); + } + + + // PLEASE NOTE: + // DO NOT call "track.show()" in the loop() while in configuration mode !!! + // It would mess up with Serial communication (receives only 2 bytes - if the + // string sent by the host is longer, it gets lost) + // In other phases (READY, RACING, etc) ONLY 2 bytes are guaranteed to be + // succesfully received - So "Enter Configuration Mode" command is just one byte (@) + + if ( race.phase == CONFIG ) { + if( race.newcfg ) { + race.newcfg = false; + countdownReset(); + customDelay.start(0); + race.phase = READY; + send_phase( race.phase ); + } + } + else if ( race.phase == READY ) { + + if(customDelay.elapsed()) { + for( int i = 0; i < race.numcars; ++i) { + car_resetPosition( &cars[i] ); + cars[i].repeats = 0; + } + tck.ledcoin = COIN_RESET; + race.phase = COUNTDOWN; + send_phase( race.phase ); + } + } + else if( race.phase == COUNTDOWN ) { + + if( race.cfg.startline ){ + // Countdown: semaphore and tones + if(start_race_done()) { + // Countdown done + for( int i = 0; i < race.numcars; ++i ) { + cars[i].st = CAR_ENTER; + } + race.phase = RACING; + send_phase( race.phase ); + } + } + } + else if( race.phase == RACING ) { + + strip_clear( &tck ); + + if( box_isactive( &tck ) ) { + if( tck.ledcoin == COIN_RESET ) { + tck.ledcoin = COIN_WAIT; + tck.ledtime = millis() + random(2000,7000); + } + if( tck.ledcoin > 0 ) + draw_coin( &tck ); + else if( millis() > tck.ledtime ) + tck.ledcoin = random( 20, tck.cfg.track.nled_aux - 20 ); + } + + if( ramp_isactive( &tck ) ) + draw_ramp( &tck ); + if( box_isactive( &tck ) ) + draw_box_entrypoint( &tck ); + + for( int i = 0; i < race.numcars; ++i ) { + run_racecycle( &cars[i], i ); + if( cars[i].st == CAR_FINISH ) { + race.phase = COMPLETE; + race.winner = i; + send_phase( race.phase ); + break; + } + } + + track.show(); + if (SMOTOR==1) tone(PIN_AUDIO,FBEEP+int(cars[0].speed*440*1)+int(cars[1].speed*440*2)+int(cars[2].speed*440*3)+int(cars[3].speed*440*4)); + if (TBEEP>0) {TBEEP--;} else {FBEEP=0;}; + + /* Print p command!!! */ + unsigned long nowmillis = millis(); + if( abs( nowmillis - lastmillis ) > 100 ){ + lastmillis = nowmillis; + print_cars_positions( cars ); + } + /* ---------------- */ + } + else if( race.phase == COMPLETE ) { + strip_clear( &tck ); + track.show(); + if ( race.cfg.finishline ){ + draw_winner( &tck, cars[race.winner].color ); + sound_winner( &tck, race.winner ); + strip_clear( &tck ); + } + track.show(); + customDelay.start(NEWRACE_DELAY); + race.phase = READY; + } + +} + +void send_phase( int phase ) { + sprintf(txbuff, "R%d%c",phase,EOL); + serialCommand.sendCommand(txbuff); +} + + +void run_racecycle( car_t *car, int i ) { + struct cfgtrack const* cfg = &tck.cfg.track; + + if( car->st == CAR_ENTER ) { + car_resetPosition( car ); + if( car->repeats < race.cfg.nrepeat ) + car->st = CAR_RACING; + else + car->st = CAR_GO_OUT; + } + + if( car->st == CAR_RACING ) { + update_track( &tck, car ); + car_updateController( car ); + draw_car( &tck, car ); + + if( car->nlap == race.cfg.nlap + && !car->leaving + && car->dist > ( cfg->nled_main*car->nlap - race.circ.outtunnel ) ) { + car->leaving = true; + car->st = CAR_LEAVING; + } + + if( car->nlap > race.cfg.nlap ) { + ++car->repeats; + car->st = CAR_GO_OUT; + } + + if( car->repeats >= race.cfg.nrepeat + && race.cfg.finishline ) { + car->st = CAR_FINISH; + } + } + + if ( car->st == CAR_FINISH ){ + car->trackID = NOT_TRACK; + sprintf( txbuff, "w%d%c", i + 1, EOL ); + serialCommand.sendCommand(txbuff); + + car_resetPosition( car ); + } +} + + +int get_relative_position( car_t* car ) { + enum{ + MIN_RPOS = 0, + MAX_RPOS = 99, + }; + struct cfgtrack const* cfg = &tck.cfg.track; + int trackdist = 0; + int pos = 0; + + switch ( car->trackID ){ + case TRACK_MAIN: + trackdist = (int)car->dist % cfg->nled_main; + pos = map(trackdist, 0, cfg->nled_main -1, MIN_RPOS, MAX_RPOS); + break; + case TRACK_AUX: + trackdist = (int)car->dist_aux; + pos = map(trackdist, 0, cfg->nled_aux -1, MIN_RPOS, MAX_RPOS); + break; + } + return pos; +} + + +void print_cars_positions( car_t* cars ) { + + bool outallcar = true; + for( int i = 0; i < race.numcars; ++i) + outallcar &= cars[i].st == CAR_WAITING; + + if ( outallcar ) return; + + for( int i = 0; i < race.numcars; ++i ) { + int const rpos = get_relative_position( &cars[i] ); + sprintf( txbuff, "p%d%s%d,%d%c", i + 1, tracksID[cars[i].trackID], cars[i].nlap, rpos, EOL ); + serialCommand.sendCommand(txbuff); + } +} + + + + +/* + * non-blocking version + */ +boolean start_race_done( ) { + if(countdown_new_phase){ + countdown_new_phase=false; + customDelay.start(CONTDOWN_PHASE_DURATION); + strip_clear( &tck ); + if(ramp_isactive( &tck )) draw_ramp( &tck ); + if(box_isactive( &tck )) draw_box_entrypoint( &tck ); + switch(countdown_phase) { + case 1: + tone(PIN_AUDIO,400); + track.setPixelColor(LED_SEMAPHORE, track.Color(255,0,0)); + break; + case 2: + tone(PIN_AUDIO,600); + track.setPixelColor(LED_SEMAPHORE, track.Color(0,0,0)); + track.setPixelColor(LED_SEMAPHORE-1, track.Color(255,255,0)); + break; + case 3: + tone(PIN_AUDIO,1200); + track.setPixelColor(LED_SEMAPHORE-1, track.Color(0,0,0)); + track.setPixelColor(LED_SEMAPHORE-2, track.Color(0,255,0)); + break; + case 4: + customDelay.start(CONTDOWN_STARTSOUND_DURATION); + tone(PIN_AUDIO,880); + track.setPixelColor(LED_SEMAPHORE-2, track.Color(0,0,0)); + track.setPixelColor(0, track.Color(255,255,255)); + break; + case 5: + noTone(PIN_AUDIO); + countdownReset(); // reset for next countdown + return(true); + } + track.show(); + } + if(customDelay.elapsed()) { + noTone(PIN_AUDIO); + countdown_new_phase=true; + countdown_phase++; + } + return(false); +} + +/* + * + */ +void countdownReset() { + countdown_phase=1; + countdown_new_phase=true; +} + + +void sound_winner( track_t* tck, int winner ) { + int const msize = sizeof(win_music) / sizeof(int); + for (int note = 0; note < msize; note++) { + tone(PIN_AUDIO, win_music[note],200); + delay(230); + noTone(PIN_AUDIO); + } +} + + +void strip_clear( track_t* tck ) { + struct cfgtrack const* cfg = &tck->cfg.track; + for( int i=0; i < cfg->nled_main; i++) + track.setPixelColor( i, track.Color(0,0,0) ); + + for( int i=0; i < cfg->nled_aux; i++) + track.setPixelColor( cfg->nled_main+i, track.Color(0,0,0) ); +} + + +void draw_coin( track_t* tck ) { + struct cfgtrack const* cfg = &tck->cfg.track; + track.setPixelColor( 1 + cfg->nled_main + cfg->nled_aux - tck->ledcoin,COLOR_COIN ); +} + +void draw_winner( track_t* tck, uint32_t color) { + struct cfgtrack const* cfg = &tck->cfg.track; + for(int i=16; i < cfg->nled_main; i=i+(8 * cfg->nled_main / 300 )){ + track.setPixelColor( i , color ); + track.setPixelColor( i-16 ,0 ); + track.show(); + } +} + +void draw_car( track_t* tck, car_t* car ) { + struct cfgtrack const* cfg = &tck->cfg.track; + + switch ( car->trackID ){ + case TRACK_MAIN: + for(int i=0; i<= car->nlap; ++i ) + track.setPixelColor( ((word)car->dist % cfg->nled_main) + i, car->color ); + break; + case TRACK_AUX: + for(int i=0; i<= car->nlap; ++i ) + track.setPixelColor( (word)(cfg->nled_main + cfg->nled_aux - car->dist_aux) + i, car->color); + break; + } +} + + +/* + * Display on LED Strip current values for Slope and Pitlane + * + */ +void show_cfgpars_onstrip(){ + strip_clear( &tck ); + if( ramp_isactive( &tck ) ) + draw_ramp( &tck ); + if( box_isactive( &tck ) ) + draw_box_entrypoint( &tck ); + track.show(); +} + + +/* + * + */ +void draw_ramp( track_t* _tck ) { + struct cfgramp const* r = &_tck->cfg.ramp; + byte dist = 0; + byte intensity = 0; + for( int i = r->init; i <= r->center; ++i ) { + dist = r->center - r->init; + intensity = ( 32 * (i - r->init) ) / dist; + track.setPixelColor( i, track.Color( intensity,0,intensity ) ); + } + for( int i = r->center; i <= r->end; ++i ) { + dist = r->end - r->center; + intensity = ( 32 * ( r->end - i ) ) / dist; + track.setPixelColor( i, track.Color( intensity,0,intensity ) ); + } +} + + +/* + * + */ +void draw_box_entrypoint( track_t* _tck ) { + struct cfgtrack const* cfg = &_tck->cfg.track; + int out = cfg->nled_total - cfg->box_len; // Pit lane exit (race start) + int in = out - cfg->box_len; // Pit lane Entrance + track.setPixelColor(in ,COLOR_BOXMARKS ); + track.setPixelColor(out ,COLOR_BOXMARKS ); +} + + + +/* + * Check Serial to see if there is a command ready to be processed + * + */ +ack_t manageSerialCommand() { + + ack_t ack = { .rp = NOTHING, .type = '\0' }; + + int clen = serialCommand.getCommand(); + + + if(clen == 0) { + // No commands received + return ack; + } else if(clen < 0) { + // Error receiving command + sprintf( txbuff, "Error reading serial command:[%d]",clen); + printdebug( txbuff, WARNING ); + } + + // clen > 0 ---> Command with length=clen stored in cmd[]. + + ack.rp=NOK; + + + if( cmd[0] == '#' ) { + ack.type = cmd[0]; + sprintf( txbuff, "#%c", EOL ); + serialCommand.sendCommand(txbuff); + ack.rp = NOTHING; + } + + else if( cmd[0] == '@' ) { // Enter "Configuration Mode" status + ack.type = cmd[0]; + if(race.phase == CONFIG) { // Board already in "Configure Mode" + ; // ignore command (will return @OK) + } else { + race.phase = CONFIG; + enter_configuration_mode(); + } + ack.rp = OK; + } + + else if( cmd[0] == '~' ) { // Exit "Configure Mode" + ack.type = cmd[0]; + if(race.phase == CONFIG) { + race.newcfg = true; + } else { // Board NOT in configuration mode + ; // ignore command (will return ~OK) + } + ack.rp = OK; + + } + + else if( cmd[0] == 'R' ) { + ack.type = cmd[0]; + int const phase = atoi( cmd + 1); + if( 0 > phase || RACE_PHASES <= phase) return ack; + race.phase = (enum phases) phase; + ack.rp = OK; + if ( race.phase == CONFIG ) { // accept R1 as a EnterConfigurationMode command - DEPRECATED + enter_configuration_mode(); + } + } + + else if( cmd[0] == 'C' ) { //Parse race configuration -> C1,2,3,0 + ack.type = cmd[0]; + + char * pch = strtok (cmd,"C"); + if( !pch ) return ack; + + pch = strtok (pch, "," ); + if( !pch ) return ack; + int startline = atoi( pch ); + + pch = strtok (NULL, ","); + if( !pch ) return ack; + int nlap = atoi( pch ); + + pch = strtok (NULL, ","); + if( !pch ) return ack; + int nrepeat = atoi( pch ); + + pch = strtok (NULL, ","); + if( !pch ) return ack; + //cfg.finishline = atoi( pch ); + int finishline = atoi( pch ); + + int err = race_configure( &tck, startline, nlap, nrepeat, finishline); + if( err ) return ack; + + race.cfg.startline = tck.cfg.race.startline; + race.cfg.nlap = tck.cfg.race.nlap; + race.cfg.nrepeat = tck.cfg.race.nrepeat; + race.cfg.finishline = tck.cfg.race.finishline; + + ack.rp = OK; + } + + else if( cmd[0] == 'T' ) { //Parse Track configuration -> Track length + ack.type = cmd[0]; + + char * pch = strtok (cmd,"T"); + if( !pch ) return ack; + + int nled = atoi( cmd + 1 ); + int err = tracklen_configure( &tck, nled); + if( err ) return ack; + track_configure( &tck, 0); + if( err ) return ack; + + ack.rp = OK; + } + + else if( cmd[0] == 'B' ) { //Parse BoxLenght Configuration -> Alen,perm + ack.type = cmd[0]; + + char * pch = strtok (cmd,"B"); + if( !pch ) return ack; + + pch = strtok (pch, "," ); + if( !pch ) return ack; + int boxlen = atoi( pch ); + + pch = strtok (NULL, "," ); + if( !pch ) return ack; + int boxperm = atoi( pch ); + + int err = boxlen_configure( &tck, boxlen, boxperm ); + if( err ) return ack; + + ack.rp = OK; + + // Force Pitlane ON, so "show_cfgpars_onstrip()" + // will show the new values, even if AlwaysON=false + box_init(&tck); + show_cfgpars_onstrip(); + } + + else if( cmd[0] == 'A' ) { // Parse Ramp configuration -> Astart,center,end,high,perm + ack.type = cmd[0]; + + char * pch = strtok (cmd,"A"); + if( !pch ) return ack; + + pch = strtok (pch, "," ); + if( !pch ) return ack; + int init = atoi( pch ); + + pch = strtok (NULL, "," ); + if( !pch ) return ack; + int center = atoi( pch ); + + pch = strtok (NULL, "," ); + if( !pch ) return ack; + int end = atoi( pch ); + + pch = strtok (NULL, ","); + if( !pch ) return ack; + int high = atoi( pch ); + + pch = strtok (NULL, ","); + if( !pch ) return ack; + int slopeperm = atoi( pch ); + + int err = ramp_configure( &tck, init, center, end, high, slopeperm ); + if( err ) return ack; + ack.rp = OK; + + // Force Ramp ON, so "show_cfgpars_onstrip()" + // will show the new values, even if AlwaysON=false + ramp_init(&tck); + + show_cfgpars_onstrip(); + } + + else if( cmd[0] == 'K' ) { // Parse Physic simulation parameters + ack.type = cmd[0]; + + char * pch = strtok (cmd,"K"); + if( !pch ) return ack; + + pch = strtok (pch, "," ); + if( !pch ) return ack; + float kgp = atof( pch ); + + pch = strtok (NULL, "," ); + if( !pch ) return ack; + float kfp = atof( pch ); + + int err = physic_configure( &tck, kgp, kfp ); + if( err ) return ack; + + ack.rp = OK; + } + + else if( cmd[0] == 'D') { + ack.type = cmd[0]; + param_setdefault( &tck.cfg ); + EEPROM.put( eeadrInfo, tck.cfg ); // Save immediately + + printdebug( "Load default parameter values", LOG ); + + ack.rp = OK; + + // Update box/slope active in current Track Struct with values + // just loaded (for show_cfgpars_onstrip()) + struct cfgparam const* cfg = &tck.cfg; + tck.boxactive = cfg->track.box_alwaysOn; + tck.rampactive = cfg->ramp.alwaysOn; + + show_cfgpars_onstrip(); + + } + + else if( cmd[0] == ':' ) { // Set board Unique Id + struct brdinfo* info = &tck.cfg.info; + ack.type = cmd[0]; + if( strlen(cmd + 1) > LEN_UID ) return ack; + strcpy( info->uid, cmd + 1 ); + EEPROM.put( eeadrInfo, tck.cfg ); // Save immediately + ack.rp = OK; + } + + else if( cmd[0] == '$' ) { // Get Board UID + sprintf( txbuff, "%s%s%c", "$", tck.cfg.info.uid, EOL ); + serialCommand.sendCommand(txbuff); + ack.rp = NOTHING; + } + + else if( cmd[0] == '?' ) { // Get Software Id + sprintf( txbuff, "%s%s%c", "?", softwareId, EOL ); + serialCommand.sendCommand(txbuff); + ack.rp = NOTHING; + } + + else if( cmd[0] == '%' ) { // Get Software Version + sprintf( txbuff, "%s%s%c", "%", version, EOL ); + serialCommand.sendCommand(txbuff); + ack.rp = NOTHING; + } + + else if( cmd[0] == 'Q' ) { // Get configuration Info + struct cfgparam const* cfg = &tck.cfg; + + sprintf( txbuff, "%s:%d,%d,%d,%d,%d,%d,%d.%03d,%d.%03d%c", "QTRACK", + cfg->track.nled_total, + cfg->track.nled_main, + cfg->track.nled_aux, + cfg->track.init_aux, + cfg->track.box_len, + cfg->track.box_alwaysOn, + (int)cfg->track.kg, (int)(cfg->track.kg*1000)%1000, // std arduino sprintf() missing %f + (int)cfg->track.kf, (int)(cfg->track.kf*1000)%1000, // std arduino sprintf() missing %f + EOL ); + + serialCommand.sendCommand(txbuff); + + sprintf( txbuff, "%s:%d,%d,%d,%d,%d%c", "QRAMP", + cfg->ramp.init, + cfg->ramp.center, + cfg->ramp.end, + cfg->ramp.high, + cfg->ramp.alwaysOn, + EOL ); + serialCommand.sendCommand(txbuff); + + sprintf( txbuff, "%s:%d,%d,%d,%d%c", "QRACE", + cfg->race.startline, + cfg->race.nlap, + cfg->race.nrepeat, + cfg->race.finishline, + EOL ); + serialCommand.sendCommand(txbuff); + + ack.rp = NOTHING; + } + + else if( cmd[0] == 'W' ) { // Write configuration to EEPROM + ack.type = cmd[0]; + EEPROM.put( eeadrInfo, tck.cfg ); + ack.rp = OK; + } + + return(ack); + +} + +/* + * + */ +void sendResponse( ack_t *ack) { + if(ack->type=='\0'){ + sprintf(txbuff, "%s%c", ack->rp==OK? "OK":"NOK" , EOL ); + } else { + sprintf(txbuff, "%c%s%c", ack->type, ack->rp==OK? "OK":"NOK" , EOL ); + } + serialCommand.sendCommand(txbuff); +} + +/* + * Send Log/Warning/Error messages to host + */ +void printdebug( const char * msg, int errlevel ) { + char tmp [80]; + sprintf( tmp, "!%d,%s%c",errlevel, msg, EOL ); + serialCommand.sendCommand(tmp); +} + + +/* + * reset race parameters + * stop sound + */ +void enter_configuration_mode(){ + noTone(PIN_AUDIO); + strip_clear( &tck ); + track.show(); +} + + + + +void param_load( struct cfgparam* cfg ) { + int cfgversion; + int eeAdress = eeadrInfo; + EEPROM.get( eeAdress, tck.cfg ); + eeAdress += sizeof( cfgparam ); + EEPROM.get( eeAdress, cfgversion ); + + sprintf( txbuff, "%s:%d%c", "Parameters Loaded from EEPROM - Cfg ver", cfgversion, EOL ); +//Serial.print(txbuff); + serialCommand.sendCommand(txbuff); + + + if ( cfgversion != CFG_VER ) { + param_setdefault( &tck.cfg ); + eeAdress = 0; + EEPROM.put( eeAdress, tck.cfg ); + eeAdress += sizeof( cfgparam ); + EEPROM.put( eeAdress, CFG_VER ); + sprintf( txbuff, "%s%c", "DEFAULT PAREMETRS LOADED (and Stored in EEPROM)", EOL ); + serialCommand.sendCommand(txbuff); + + } + +} diff --git a/open-led-race_OK/olr-controller.c b/open-led-race_OK/olr-controller.c new file mode 100644 index 0000000..1b8e55c --- /dev/null +++ b/open-led-race_OK/olr-controller.c @@ -0,0 +1,75 @@ +#include "olr-controller.h" + +enum { + DELTA_ANALOG = 5, +}; + +static float const ACEL = 0.2; + +void controller_setup( void ) { + + if( DIGITAL_MODE == false ){ + pinMode(PIN_VCC_ADC1, OUTPUT); + pinMode(PIN_VCC_ADC2, OUTPUT); + digitalWrite(PIN_VCC_ADC1, HIGH); + digitalWrite(PIN_VCC_ADC2, HIGH); + } + + pinMode( DIG_CONTROL_1, INPUT_PULLUP); //pull up in adc + pinMode( DIG_CONTROL_2, INPUT_PULLUP); + pinMode( DIG_CONTROL_3, INPUT_PULLUP); + pinMode( DIG_CONTROL_4, INPUT_PULLUP); +} + +void controller_init( controller_t* ct, enum ctr_type mode, int pin ) { + ct->mode = mode; + ct->pin = pin; + ct->delta_analog = DELTA_ANALOG; +} + + +byte controller_getStatus( controller_t* ct ) { + + if( ct->mode == DIGITAL_MODE ){ + return digitalRead( ct->pin ); + } + else if( ct->mode == ANALOG_MODE ){ + ct->adc = analogRead( ct->pin ); + if( abs( ct->badc - ct->adc ) > ct->delta_analog ){ + ct->badc = ct->adc; + return 1; + } + ct->badc = ct->adc; + } + else if( ct->mode == DEBUG_MODE ){ + ct->adc++; + if( ct->adc >= 60){ + ct->adc = 0; + return 1; + } + } + return 0; + +} + + +float controller_getSpeed( controller_t* ct) { + float speed = 0.0; + if ( (ct->flag_sw == 1 ) && (controller_getStatus( ct ) == 0) ) { + ct->flag_sw = 0; + speed = ACEL; + } + + if ( (ct->flag_sw == 0 ) && (controller_getStatus( ct ) == 1 ) ) { + ct->flag_sw = 1; + } + return speed; +} + +float controller_getAccel ( void ) { + return ACEL; +} + +bool controller_isActive( int pin ) { + return !digitalRead( pin ); +} diff --git a/open-led-race_OK/olr-controller.h b/open-led-race_OK/olr-controller.h new file mode 100644 index 0000000..87fad3a --- /dev/null +++ b/open-led-race_OK/olr-controller.h @@ -0,0 +1,58 @@ +#ifndef _OLR_CONTROLLER_LIB_h +#define _OLR_CONTROLLER_LIB_h + +#ifdef __cplusplus + +extern "C"{ +#endif + +#include "Arduino.h" +#include +#include + + +#define DIG_CONTROL_1 A2 // switch player 1 to PIN and GND +#define DIG_CONTROL_2 A0 // switch player 2 to PIN and GND +#define DIG_CONTROL_3 A3 // switch player 3 to PIN and GND +#define DIG_CONTROL_4 A1 // switch player 4 to PIN and GND + +#define PIN_VCC_ADC1 6 +#define PIN_VCC_ADC2 7 + + + +enum ctr_type{ + NOT_DEFINED = 0, + DIGITAL_MODE, + ANALOG_MODE, + DEBUG_MODE, +}; + +typedef struct{ + enum ctr_type mode; + int pin; + int adc; + int badc; + int delta_analog; + byte flag_sw; +}controller_t; + +void controller_setup( void ); + +void controller_init( controller_t* ct, enum ctr_type mode, int pin ); + +byte controller_getStatus( controller_t* ct ); + +float controller_getSpeed( controller_t* ct ); + +float controller_getAccel ( void ); + +bool controller_isActive( int pin ); + + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif + diff --git a/open-led-race_OK/olr-lib.c b/open-led-race_OK/olr-lib.c new file mode 100644 index 0000000..653fed8 --- /dev/null +++ b/open-led-race_OK/olr-lib.c @@ -0,0 +1,189 @@ +#include "Arduino.h" +#include "olr-lib.h" + + + +void car_init( car_t* car, controller_t* ct, uint32_t color ) { + car->ct = ct; + car->color = color; + car->trackID = TRACK_MAIN; + car->speed=0; + car->dist=0; + car->dist_aux=0; +} + +void car_updateController( car_t* car ) { + car->speed += controller_getSpeed( car->ct ); +} + +void update_track( track_t* tck, car_t* car ) { + controller_t* ct = car->ct; + struct cfgtrack const* cfg = &tck->cfg.track; + + + if ( car->trackID == TRACK_MAIN + && (int)car->dist % cfg->nled_main == (cfg->init_aux-(cfg->nled_aux)) + // && controller_getStatus( ct ) == 0 ) { //change track by switch + && (car->speed <= SPD_MIN_TRACK_AUX )) { //change track by low speed + + car->trackID = TRACK_AUX; + car->dist_aux = 0; + } + else if( car->trackID == TRACK_AUX + && car->dist_aux > cfg->nled_aux ) { + + car->trackID = TRACK_MAIN; + car->dist += cfg->nled_aux; + } + + /* Update car position in the current track */ + if ( car->trackID == TRACK_AUX ) process_aux_track( tck, car ); + else if ( car->trackID == TRACK_MAIN ) process_main_track( tck, car ); + + /* Update car lap */ + if ( car->dist > ( cfg->nled_main*car->nlap -1) ) car->nlap++; +} + +void process_aux_track( track_t* tck, car_t* car ){ + struct cfgtrack const* cfg = &tck->cfg.track; + + if ( (int)car->dist_aux == tck->ledcoin + && car->speed <= controller_getAccel() ) { + car->speed = controller_getAccel ()*50; + tck->ledcoin = COIN_RESET; + }; + + car->speed -= car->speed * cfg->kf; + car->dist_aux += car->speed; +} + + +void process_main_track( track_t* tck, car_t* car ) { + struct cfgtrack const* cfg = &tck->cfg.track; + + if ( tck->rampactive ) { + struct cfgramp const* r = &tck->cfg.ramp; + int const pos = (int)car->dist % cfg->nled_main; + if ( pos >= r->init && pos < r->center ) + // car->speed -= cfg->kg * r->high * ( pos - r->init ); + car->speed -= cfg->kg * r->high ; + + if ( pos <= r->end && pos > r->center ) + //car->speed += cfg->kg * r->high * ( pos - r->center ); + car->speed += cfg->kg * r->high ; + } + + car->speed -= car->speed * cfg->kf; + car->dist += car->speed; + +} + +void ramp_init( track_t* tck ) { + tck->rampactive = true; +} + + +bool ramp_isactive( track_t* tck ) { + return tck->rampactive; +} + + +void car_resetPosition( car_t* car) { + + car->trackID = TRACK_MAIN; + car->speed = 0; + car->dist = 0; + car->dist_aux = 0; + car->nlap = 1; + car->leaving = false; +} + +void box_init( track_t* tck ) { + tck->boxactive = true; +} + +bool box_isactive( track_t* tck ) { + return tck->boxactive; +} + + + +int tracklen_configure( track_t* tck, int nled ) { + struct cfgtrack* cfg = &tck->cfg.track; + if( nled <= 0 ) return -1; + cfg->nled_total = nled; + return 0; +} + +int boxlen_configure( track_t* tck, int box_len, int boxalwaysOn ) { + struct cfgtrack* cfg = &tck->cfg.track; + + if ( boxalwaysOn != 0 && boxalwaysOn != 1 ) return -1; + if( box_len <= 0 || box_len >= cfg->nled_total ) return -1; + cfg->box_len = box_len; + cfg->box_alwaysOn = boxalwaysOn; + + // Update track->boxactive + tck->boxactive = boxalwaysOn; + return 0; +} + +int physic_configure( track_t* tck, float kgp, float kfp ){ + struct cfgtrack* cfg = &tck->cfg.track; + + if( kgp <= 0.0 || kgp >= 2.0 ) return -1; + if( kfp <= 0.0 || kfp >= 2.0 ) return -1; + cfg->kf = kfp; + cfg->kg = kgp; + return(0); +} + + + +int track_configure( track_t* tck, int init_box ) { + struct cfgtrack* cfg = &tck->cfg.track; + + if(init_box >= cfg->nled_total ) return -1; + cfg->nled_main = ( init_box == 0 ) ? cfg->nled_total : init_box; + cfg->nled_aux = ( init_box == 0 ) ? 0 : cfg->nled_total - init_box; + cfg->init_aux = init_box - 1; + return 0; +} + + +int ramp_configure( track_t* tck, int init, int center, int end, int high, int alwaysOn ) { + struct cfgramp* ramp = &tck->cfg.ramp; + + if ( init >= tck->cfg.track.nled_main || init <= 0 ) return -1; + if ( center >= tck->cfg.track.nled_main || center <= 0 ) return -2; + if ( end >= tck->cfg.track.nled_main || end <= 0 ) return -3; + if ( ! (center > init && center < end) ) return -4; + if ( alwaysOn != 0 && alwaysOn != 1 ) return -5; + + ramp->init = init; + ramp->center = center; + ramp->end = end; + ramp->high = high; + ramp->alwaysOn = alwaysOn; + + // Update track->rampactive + /** + boolean rampactive = &tck->rampactive; + rampactive = alwaysOn; + **/ + tck->rampactive = alwaysOn; + + return 0; +} + +int race_configure( track_t* tck, int startline, int nlap, int nrepeat, int finishline ) { + struct cfgrace* race = &tck->cfg.race; + + if ( startline != 0 && startline != 1 ) return -1; + if ( finishline != 0 && finishline != 1 ) return -1; + race->startline = startline; + race->finishline = finishline; + race->nlap = nlap; + race->nrepeat = nrepeat; + return 0; +} diff --git a/open-led-race_OK/olr-lib.h b/open-led-race_OK/olr-lib.h new file mode 100644 index 0000000..81f84e8 --- /dev/null +++ b/open-led-race_OK/olr-lib.h @@ -0,0 +1,103 @@ + +#ifndef _OLR_LIB_h +#define _OLR_LIB_h + +#ifdef __cplusplus + +extern "C"{ +#endif + +#include +#include +#include +#include "olr-controller.h" +#include "olr-param.h" + +#define SPD_MIN_TRACK_AUX 0.8 + +enum stcoin{ + COIN_RESET = -2, + COIN_WAIT = -1, +}; + +enum{ + NOT_TRACK = 0, + TRACK_MAIN, + TRACK_AUX, + TRACK_IN, + TRACK_OUT, + NUM_TRACKS, +}; + + +enum status{ + CAR_WAITING = 0, + CAR_COMING, + CAR_ENTER, + CAR_RACING, + CAR_LEAVING, + CAR_GO_OUT, + CAR_FINISH +}; + +typedef struct{ + controller_t* ct; + float speed; + float dist; + float dist_aux; + byte nlap; + byte repeats; + uint32_t color; + int trackID; + enum status st; + bool leaving; +}car_t; + + + +typedef struct { + struct cfgparam cfg; + int ledcoin; //LED_SPEED_COIN + uint32_t ledtime; + bool rampactive; + bool boxactive; +}track_t; + + +void car_init( car_t* car, controller_t* ct, uint32_t color ); + +void car_updateController( car_t* car ); + +void car_resetPosition( car_t* car); + +void update_track( track_t* tck, car_t* car ); + +void process_main_track( track_t* tck, car_t* car ); + +void process_aux_track( track_t* tck, car_t* car ); + +void box_init( track_t* tck ); + +bool box_isactive( track_t* tck ); + +int tracklen_configure( track_t* tck, int nled ); + +int boxlen_configure( track_t* tck, int box_len, int boxalwaysOn ); + +int physic_configure( track_t* tck, float kgp, float kfp ); + +int track_configure( track_t* tck, int init_box ); + +void ramp_init( track_t* tck ); + +bool ramp_isactive( track_t* tck ); + +int ramp_configure( track_t* tck, int init, int center, int end, int high, int alwaysOn ); + +int race_configure( track_t* tck, int startline, int nlap, int nrepeat, int finishline ); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/open-led-race_OK/olr-param.c b/open-led-race_OK/olr-param.c new file mode 100644 index 0000000..81290ab --- /dev/null +++ b/open-led-race_OK/olr-param.c @@ -0,0 +1,26 @@ +#include "olr-param.h" + +void param_setdefault( struct cfgparam* cfg ) { + cfg->setted = true; + + cfg->race.startline = true; + cfg->race.nlap = NUMLAP; + cfg->race.nrepeat = 1; + cfg->race.finishline = true; + + cfg->ramp.init = 80; + cfg->ramp.center = 90; + cfg->ramp.end = 100; + cfg->ramp.high = 6; + cfg->ramp.alwaysOn = false; + + cfg->track.nled_total = MAXLED; + cfg->track.nled_main = MAXLED; // 240 when boxes length = 60 + cfg->track.nled_aux = 0; // 60 + cfg->track.init_aux = -1; // 239 + cfg->track.box_len = BOXLEN; + cfg->track.box_alwaysOn = false; + + cfg->track.kf = 0.015; // friction constant + cfg->track.kg = 0.006; // gravity constant - Used in Slope +} diff --git a/open-led-race_OK/olr-param.h b/open-led-race_OK/olr-param.h new file mode 100644 index 0000000..3535077 --- /dev/null +++ b/open-led-race_OK/olr-param.h @@ -0,0 +1,77 @@ +#ifndef _OLR_PARAM_LIB_h +#define _OLR_PARAM_LIB_h + +#ifdef __cplusplus + +extern "C"{ +#endif + +#include "Arduino.h" +#include +#include + +#define MAXLED 300 +#define BOXLEN 60 +#define NUMLAP 5 + + + +enum{ + LEN_UID = 16, + CFG_VER = 5, // "5" in V0.9.6 (manage "permanent" param for Box and Slope) +}; + +struct cfgrace{ + bool startline; // Used only in OLRNetwork + int nlap; + int nrepeat; // Used only in OLRNetwork + bool finishline; // Used only in OLRNetwork +}; + +// +struct cfgtrack { + int nled_total; + int nled_main; + int nled_aux; + int init_aux; + int box_len; // used to hold the Box Length if the default get changed. + // it's not possible to implicitly store it in nled_main,nled_aux + // because, if these are different to the default, box gets always activated + // (the software does not chek "box_isactive" to draw car position) + bool box_alwaysOn; // added in ver 0.9.6 + + + float kf; + float kg; +}; + +// ramp centred in LED 100 with 10 led fordward and 10 backguard +struct cfgramp { + int init; + int center; + int end; + int high; + bool alwaysOn; // added in ver 0.9.6 +}; + +struct brdinfo { + char uid[LEN_UID + 1]; +}; + +struct cfgparam { + bool setted; + struct cfgrace race; // added in ver 0.9.d + struct cfgtrack track; + struct cfgramp ramp; + struct brdinfo info; +}; + + +void param_setdefault( struct cfgparam* cfg ); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif + diff --git a/open-led-race_OK/open-led-race_OK.ino b/open-led-race_OK/open-led-race_OK.ino new file mode 100644 index 0000000..f306f3c --- /dev/null +++ b/open-led-race_OK/open-led-race_OK.ino @@ -0,0 +1,1065 @@ +/* + * ____ _ ______ _____ _____ + / __ \ | | | ____| __ \ | __ \ + | | | |_ __ ___ _ __ | | | |__ | | | | | |__) |__ _ ___ ___ + | | | | '_ \ / _ \ '_ \ | | | __| | | | | | _ // _` |/ __/ _ \ + | |__| | |_) | __/ | | | | |____| |____| |__| | | | \ \ (_| | (_| __/ + \____/| .__/ \___|_| |_| |______|______|_____/ |_| \_\__,_|\___\___| + | | + |_| + Open LED Race + An minimalist cars race for LED strip + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + + First public version by: + Angel Maldonado (https://gitlab.com/angeljmc) + Gerardo Barbarov (gbarbarov AT singulardevices DOT com) + + Basen on original idea and 2 players code by: + Gerardo Barbarov for Arduino day Seville 2019 + https://github.com/gbarbarov/led-race + + + Public Repository for this code: + https://gitlab.com/open-led-race/olr-arduino + +*/ + + +// 2020/12/10 - Ver 0.9.6 +// --see changelog.txt + +char const softwareId[] = "A4P0"; // A4P -> A = Open LED Race, 4P0 = Game ID (4P = 4 Players, 0=Type 0) +char const version[] = "0.9.6"; + + + +#include +#include +#include "olr-lib.h" +#include "olr-param.h" + +#define PIN_LED 2 // R 500 ohms to DI pin for WS2812 and WS2813, for WS2813 BI pin of first LED to GND , CAP 1000 uF to VCC 5v/GND,power supplie 5V 2A +#define PIN_AUDIO 3 // through CAP 2uf to speaker 8 ohms + +#define REC_COMMAND_BUFLEN 32 +#define EOL '\n' // End of Command char used in Protocol + +#define COLOR1 track.Color(255,0,0) +#define COLOR2 track.Color(0,255,0) +#define COLOR3 track.Color(0,0,255) +#define COLOR4 track.Color(255,255,255) + +#define COLOR_RAMP track.Color(64,0,64) +#define COLOR_COIN track.Color(0,255,255) +#define COLOR_BOXMARKS track.Color(64,64,0) +#define LED_SEMAPHORE 12 + +#define CONTDOWN_PHASE_DURATION 2000 +#define CONTDOWN_STARTSOUND_DURATION 40 + +#define NEWRACE_DELAY 5000 + +enum{ + MAX_CARS = 4, +}; + + + +enum loglevel { // used in Serial Protocol "!" command (send log/error messageS) + ECHO = 0, + DISABLE = 0, + LOG = 1, + WARNING = 2, + ERROR = 3 +}; + + +enum resp{ + NOK = -1, + NOTHING = 0, + OK = 1 +}; + +typedef struct ack{ + enum resp rp; + char type; +}ack_t; + + + +struct cfgcircuit{ + int outtunnel; +}; + +enum phases{ + IDLE = 0, + CONFIG, + CONFIG_OK, + READY, + COUNTDOWN, + RACING, + PAUSE, + RESUME, + COMPLETE, + RACE_PHASES +}; + +struct race{ + struct cfgrace cfg; + struct cfgcircuit circ; + bool newcfg; + enum phases phase; + byte numcars; + int winner; +}; + + +byte SMOTOR=0; +int TBEEP=0; +int FBEEP=0; + +/*------------------------------------------------------*/ +enum loglevel verbose = DISABLE; + +static struct race race; +static car_t cars[ MAX_CARS ]; +static controller_t switchs[ MAX_CARS ]; +static track_t tck; + +static int const eeadrInfo = 0; + +char txbuff[64]; + + + + +static unsigned long lastmillis = 0; + +//SoftTimer customDelay = SoftTimer(); // non blocking delay() + +// Used to manage countdown phases +int countdown_phase=1; +bool countdown_new_phase=true; + + +int win_music[] = { + 2637, 2637, 0, 2637, + 0, 2093, 2637, 0, + 3136 +}; + +//int TBEEP=3; + +char tracksID[ NUM_TRACKS ][2] ={"U","M","B","I","O"}; + +/* ----------- Function prototypes ------------------- */ + +void sendResponse( ack_t *ack); + +ack_t manageSerialCommand(); + +void printdebug( const char * msg, int errlevel ); +void print_cars_positions( car_t* cars); +void run_racecycle( void ); +void draw_winner( track_t* tck, uint32_t color); + +char cmdbuf[REC_COMMAND_BUFLEN]; // Stores command received by ReadSerialComand() + + +Adafruit_NeoPixel track; + + +/* + * + */ +void setup() { + + Serial.begin(115200); + randomSeed( analogRead(A6) + analogRead(A7) ); + controller_setup( ); + param_load( &tck.cfg ); + + track = Adafruit_NeoPixel( tck.cfg.track.nled_total, PIN_LED, NEO_GRB + NEO_KHZ800 ); + + controller_init( &switchs[0], DIGITAL_MODE, DIG_CONTROL_1 ); + car_init( &cars[0], &switchs[0], COLOR1 ); + controller_init( &switchs[1], DIGITAL_MODE, DIG_CONTROL_2 ); + car_init( &cars[1], &switchs[1], COLOR2 ); + + race.numcars = 2; + + if( controller_isActive( DIG_CONTROL_3 )) { + controller_init( &switchs[2], DIGITAL_MODE, DIG_CONTROL_3 ); + car_init( &cars[2], &switchs[2], COLOR3 ); + ++race.numcars; + } + + if( controller_isActive( DIG_CONTROL_4 )) { + controller_init( &switchs[3], DIGITAL_MODE, DIG_CONTROL_4 ); + car_init( &cars[3], &switchs[3], COLOR4 ); + ++race.numcars; + } + + track.begin(); + strip_clear( &tck ); + + + // Check Box before Physic/Sound to allow user to have Box and Physics with no sound + if(digitalRead(DIG_CONTROL_2)==0 || tck.cfg.track.box_alwaysOn ) { //push switch 2 on reset for activate boxes (pit lane) + box_init( &tck ); + track_configure( &tck, tck.cfg.track.nled_total - tck.cfg.track.box_len ); + draw_box_entrypoint( &tck ); + } else{ + track_configure( &tck, 0 ); + } + + if( digitalRead(DIG_CONTROL_1)==0 || tck.cfg.ramp.alwaysOn ) { //push switch 1 on reset for activate physics + ramp_init( &tck ); + draw_ramp( &tck ); + track.show(); + delay(2000); + if ( digitalRead( DIG_CONTROL_1 ) == 0 ) { //retain push switch on reset for activate FX sound + SMOTOR=1; + tone(PIN_AUDIO,100);} + } + + race.cfg.startline = tck.cfg.race.startline;// true; + race.cfg.nlap = tck.cfg.race.nlap;// NUMLAP; + race.cfg.nrepeat = tck.cfg.race.nrepeat;// 1; + race.cfg.finishline = tck.cfg.race.finishline;// true; + + customDelayStart(0); // first race starts with no delay + race.phase = READY; +} + +/* + * + */ +void loop() { + + // look for commands received on serial + ack_t ack = manageSerialCommand(); + if(ack.rp != NOTHING){ + sendResponse(&ack); + } + + // PLEASE NOTE: + // DO NOT call "track.show()" in the loop() while in configuration mode !!! + // It would mess up with Serial communication (receives only 2 bytes - if the + // string sent by the host is longer, it gets lost) + // In other phases (READY, RACING, etc) ONLY 2 bytes are guaranteed to be + // succesfully received - So "Enter Configuration Mode" command is just one byte (@) + + switch(race.phase) { + + case CONFIG: + { + if( race.newcfg ) { + race.newcfg = false; + countdownReset(); + customDelayStart(0); + race.phase = READY; + send_phase( race.phase ); + } + } + break; + + case READY: + { + if(customDelayElapsed()) { + for( int i = 0; i < race.numcars; ++i) { + car_resetPosition( &cars[i] ); + cars[i].repeats = 0; + } + tck.ledcoin = COIN_RESET; + race.phase = COUNTDOWN; + send_phase( race.phase ); + } + } + break; + + case COUNTDOWN: + { + if( race.cfg.startline ){ + // Countdown: semaphore and tones + if(start_race_done()) { + // Countdown done + for( int i = 0; i < race.numcars; ++i ) { + cars[i].st = CAR_ENTER; + } + race.phase = RACING; + send_phase( race.phase ); + } + } + } + break; + + case RACING: + { + strip_clear( &tck ); + + if( box_isactive( &tck ) ) { + if( tck.ledcoin == COIN_RESET ) { + tck.ledcoin = COIN_WAIT; + tck.ledtime = millis() + random(2000,7000); + } + if( tck.ledcoin > 0 ) + draw_coin( &tck ); + else if( millis() > tck.ledtime ) + tck.ledcoin = random( 20, tck.cfg.track.nled_aux - 20 ); + } + + if( ramp_isactive( &tck ) ) + draw_ramp( &tck ); + if( box_isactive( &tck ) ) + draw_box_entrypoint( &tck ); + + for( int i = 0; i < race.numcars; ++i ) { + run_racecycle( &cars[i], i ); + if( cars[i].st == CAR_FINISH ) { + race.phase = COMPLETE; + race.winner = i; + send_phase( race.phase ); + break; + } + } + + track.show(); + if (SMOTOR==1) tone(PIN_AUDIO,FBEEP+int(cars[0].speed*440*1)+int(cars[1].speed*440*2)+int(cars[2].speed*440*3)+int(cars[3].speed*440*4)); + if (TBEEP>0) {TBEEP--;} else {FBEEP=0;}; + + // Print p command!!! + unsigned long nowmillis = millis(); + if( abs( nowmillis - lastmillis ) > 100 ){ + lastmillis = nowmillis; + print_cars_positions( cars ); + } + // ---------------- + } + break; + + case COMPLETE : + { + strip_clear( &tck ); + track.show(); + if ( race.cfg.finishline ){ + draw_winner( &tck, cars[race.winner].color ); + sound_winner( &tck, race.winner ); + strip_clear( &tck ); + } + track.show(); + customDelayStart(NEWRACE_DELAY); + race.phase = READY; + } + break; + + default: + { + sprintf( txbuff, "Software Error in main loop switch()"); + printdebug( txbuff, WARNING ); + break; + } + + } // switch + +} + +void send_phase( int phase ) { + sprintf(txbuff, "R%d%c",phase,EOL); + sendCommand(txbuff); +} + + +void run_racecycle( car_t *car, int i ) { + struct cfgtrack const* cfg = &tck.cfg.track; + + if( car->st == CAR_ENTER ) { + car_resetPosition( car ); + if( car->repeats < race.cfg.nrepeat ) + car->st = CAR_RACING; + else + car->st = CAR_GO_OUT; + } + + if( car->st == CAR_RACING ) { + update_track( &tck, car ); + car_updateController( car ); + draw_car( &tck, car ); + + if( car->nlap == race.cfg.nlap + && !car->leaving + && car->dist > ( cfg->nled_main*car->nlap - race.circ.outtunnel ) ) { + car->leaving = true; + car->st = CAR_LEAVING; + } + + if( car->nlap > race.cfg.nlap ) { + ++car->repeats; + car->st = CAR_GO_OUT; + } + + if( car->repeats >= race.cfg.nrepeat + && race.cfg.finishline ) { + car->st = CAR_FINISH; + } + } + + if ( car->st == CAR_FINISH ){ + car->trackID = NOT_TRACK; + sprintf( txbuff, "w%d%c", i + 1, EOL ); + //serialCommand.sendCommand(txbuff); + sendCommand(txbuff); + + car_resetPosition( car ); + } +} + + +int get_relative_position( car_t* car ) { + enum{ + MIN_RPOS = 0, + MAX_RPOS = 99, + }; + struct cfgtrack const* cfg = &tck.cfg.track; + int trackdist = 0; + int pos = 0; + + switch ( car->trackID ){ + case TRACK_MAIN: + trackdist = (int)car->dist % cfg->nled_main; + pos = map(trackdist, 0, cfg->nled_main -1, MIN_RPOS, MAX_RPOS); + break; + case TRACK_AUX: + trackdist = (int)car->dist_aux; + pos = map(trackdist, 0, cfg->nled_aux -1, MIN_RPOS, MAX_RPOS); + break; + } + return pos; +} + + +void print_cars_positions( car_t* cars ) { + + bool outallcar = true; + for( int i = 0; i < race.numcars; ++i) + outallcar &= cars[i].st == CAR_WAITING; + + if ( outallcar ) return; + + for( int i = 0; i < race.numcars; ++i ) { + int const rpos = get_relative_position( &cars[i] ); + sprintf( txbuff, "p%d%s%d,%d%c", i + 1, tracksID[cars[i].trackID], cars[i].nlap, rpos, EOL ); + //serialCommand.sendCommand(txbuff); + sendCommand(txbuff); + } +} + + + + +/* + * non-blocking version + */ +boolean start_race_done( ) { + if(countdown_new_phase){ + countdown_new_phase=false; + //customDelay.start(CONTDOWN_PHASE_DURATION); + customDelayStart(CONTDOWN_PHASE_DURATION); + strip_clear( &tck ); + if(ramp_isactive( &tck )) draw_ramp( &tck ); + if(box_isactive( &tck )) draw_box_entrypoint( &tck ); + switch(countdown_phase) { + case 1: + tone(PIN_AUDIO,400); + track.setPixelColor(LED_SEMAPHORE, track.Color(255,0,0)); + break; + case 2: + tone(PIN_AUDIO,600); + track.setPixelColor(LED_SEMAPHORE, track.Color(0,0,0)); + track.setPixelColor(LED_SEMAPHORE-1, track.Color(255,255,0)); + break; + case 3: + tone(PIN_AUDIO,1200); + track.setPixelColor(LED_SEMAPHORE-1, track.Color(0,0,0)); + track.setPixelColor(LED_SEMAPHORE-2, track.Color(0,255,0)); + break; + case 4: + //customDelay.start(CONTDOWN_STARTSOUND_DURATION); + customDelayStart(CONTDOWN_STARTSOUND_DURATION); + tone(PIN_AUDIO,880); + track.setPixelColor(LED_SEMAPHORE-2, track.Color(0,0,0)); + track.setPixelColor(0, track.Color(255,255,255)); + break; + case 5: + noTone(PIN_AUDIO); + countdownReset(); // reset for next countdown + return(true); + } + track.show(); + } + if(customDelayElapsed()) { + noTone(PIN_AUDIO); + countdown_new_phase=true; + countdown_phase++; + } + return(false); +} + +/* + * + */ +void countdownReset() { + countdown_phase=1; + countdown_new_phase=true; +} + + +void sound_winner( track_t* tck, int winner ) { + int const msize = sizeof(win_music) / sizeof(int); + for (int note = 0; note < msize; note++) { + tone(PIN_AUDIO, win_music[note],200); + delay(230); + noTone(PIN_AUDIO); + } +} + + +void strip_clear( track_t* tck ) { + struct cfgtrack const* cfg = &tck->cfg.track; + for( int i=0; i < cfg->nled_main; i++) + track.setPixelColor( i, track.Color(0,0,0) ); + + for( int i=0; i < cfg->nled_aux; i++) + track.setPixelColor( cfg->nled_main+i, track.Color(0,0,0) ); +} + + +void draw_coin( track_t* tck ) { + struct cfgtrack const* cfg = &tck->cfg.track; + track.setPixelColor( 1 + cfg->nled_main + cfg->nled_aux - tck->ledcoin,COLOR_COIN ); +} + +void draw_winner( track_t* tck, uint32_t color) { + struct cfgtrack const* cfg = &tck->cfg.track; + for(int i=16; i < cfg->nled_main; i=i+(8 * cfg->nled_main / 300 )){ + track.setPixelColor( i , color ); + track.setPixelColor( i-16 ,0 ); + track.show(); + } +} + +void draw_car( track_t* tck, car_t* car ) { + struct cfgtrack const* cfg = &tck->cfg.track; + + switch ( car->trackID ){ + case TRACK_MAIN: + for(int i=0; i<= car->nlap; ++i ) + track.setPixelColor( ((word)car->dist % cfg->nled_main) + i, car->color ); + break; + case TRACK_AUX: + for(int i=0; i<= car->nlap; ++i ) + track.setPixelColor( (word)(cfg->nled_main + cfg->nled_aux - car->dist_aux) + i, car->color); + break; + } +} + + +/* + * Display on LED Strip current values for Slope and Pitlane + * + */ +void show_cfgpars_onstrip(){ + strip_clear( &tck ); + if( ramp_isactive( &tck ) ) + draw_ramp( &tck ); + if( box_isactive( &tck ) ) + draw_box_entrypoint( &tck ); + track.show(); +} + + +/* + * + */ +void draw_ramp( track_t* _tck ) { + struct cfgramp const* r = &_tck->cfg.ramp; + byte dist = 0; + byte intensity = 0; + for( int i = r->init; i <= r->center; ++i ) { + dist = r->center - r->init; + intensity = ( 32 * (i - r->init) ) / dist; + track.setPixelColor( i, track.Color( intensity,0,intensity ) ); + } + for( int i = r->center; i <= r->end; ++i ) { + dist = r->end - r->center; + intensity = ( 32 * ( r->end - i ) ) / dist; + track.setPixelColor( i, track.Color( intensity,0,intensity ) ); + } +} + + +/* + * + */ +void draw_box_entrypoint( track_t* _tck ) { + struct cfgtrack const* cfg = &_tck->cfg.track; + int out = cfg->nled_total - cfg->box_len; // Pit lane exit (race start) + int in = out - cfg->box_len; // Pit lane Entrance + track.setPixelColor(in ,COLOR_BOXMARKS ); + track.setPixelColor(out ,COLOR_BOXMARKS ); +} + + + +/* + * Check Serial to see if there is a command ready to be processed + * + */ +ack_t manageSerialCommand() { + + ack_t ack = { .rp = NOTHING, .type = '\0' }; + + int clen = checkForCommand(); + if(clen == 0) return ack; // No commands received + if(clen < 0) { // Error receiving command + sprintf( txbuff, "Error reading serial command:[%d]",clen); + printdebug( txbuff, WARNING ); + } + + char * cmd = getCommand(); // clen > 0 ---> Command with length=clen ready + ack.rp=NOK; + + switch (cmd[0]) { + case '#': // Handshake + { + ack.type = cmd[0]; + sprintf( txbuff, "#%c", EOL ); + sendCommand(txbuff); + ack.rp = NOTHING; + } + break; + + case '@' : // Enter "Configuration Mode" status + { + ack.type = cmd[0]; + if(race.phase != CONFIG) {// Ignore command if Board already in "Configure Mode" + race.phase = CONFIG; + enter_configuration_mode(); + } + ack.rp = OK; + } + break; + + case '~' : // Exit "Configure Mode" + { + ack.type = cmd[0]; + if(race.phase == CONFIG) { // Ignore command if Board is not in "Configure Mode" + race.newcfg = true; + } + ack.rp = OK; + } + break; + + case 'R' : // Set Race Phase + { + ack.type = cmd[0]; + int const phase = atoi( cmd + 1); + if( 0 > phase || RACE_PHASES <= phase) return ack; + race.phase = (enum phases) phase; + ack.rp = OK; + if ( race.phase == CONFIG ) { // accept R1 as a EnterConfigurationMode command - DEPRECATED + enter_configuration_mode(); + } + } + break; + + case 'C' : //Parse race configuration -> C1,2,3,0 + { + ack.type = cmd[0]; + + char * pch = strtok (cmd,"C"); + if( !pch ) return ack; + + pch = strtok (pch, "," ); + if( !pch ) return ack; + int startline = atoi( pch ); + + pch = strtok (NULL, ","); + if( !pch ) return ack; + int nlap = atoi( pch ); + + pch = strtok (NULL, ","); + if( !pch ) return ack; + int nrepeat = atoi( pch ); + + pch = strtok (NULL, ","); + if( !pch ) return ack; + int finishline = atoi( pch ); + + int err = race_configure( &tck, startline, nlap, nrepeat, finishline); + if( err ) return ack; + + race.cfg.startline = tck.cfg.race.startline; + race.cfg.nlap = tck.cfg.race.nlap; + race.cfg.nrepeat = tck.cfg.race.nrepeat; + race.cfg.finishline = tck.cfg.race.finishline; + + ack.rp = OK; + } + break; + + + case 'T' : //Parse Track configuration -> Track length + { + ack.type = cmd[0]; + + char * pch = strtok (cmd,"T"); + if( !pch ) return ack; + + int nled = atoi( cmd + 1 ); + int err = tracklen_configure( &tck, nled); + if( err ) return ack; + track_configure( &tck, 0); + if( err ) return ack; + + ack.rp = OK; + } + break; + + case 'B' : //Parse BoxLenght Configuration -> Blen,perm + { + ack.type = cmd[0]; + + char * pch = strtok (cmd,"B"); + if( !pch ) return ack; + + pch = strtok (pch, "," ); + if( !pch ) return ack; + int boxlen = atoi( pch ); + + pch = strtok (NULL, "," ); + if( !pch ) return ack; + int boxperm = atoi( pch ); + + int err = boxlen_configure( &tck, boxlen, boxperm ); + if( err ) return ack; + + ack.rp = OK; + + // Force Pitlane ON, so "show_cfgpars_onstrip()" + // will show the new values, even if AlwaysON=false + box_init(&tck); + show_cfgpars_onstrip(); + } + break; + + case 'A' : // Parse Ramp configuration -> Astart,center,end,high,perm + { + ack.type = cmd[0]; + + char * pch = strtok (cmd,"A"); + if( !pch ) return ack; + + pch = strtok (pch, "," ); + if( !pch ) return ack; + int init = atoi( pch ); + + pch = strtok (NULL, "," ); + if( !pch ) return ack; + int center = atoi( pch ); + + pch = strtok (NULL, "," ); + if( !pch ) return ack; + int end = atoi( pch ); + + pch = strtok (NULL, ","); + if( !pch ) return ack; + int high = atoi( pch ); + + pch = strtok (NULL, ","); + if( !pch ) return ack; + int slopeperm = atoi( pch ); + + int err = ramp_configure( &tck, init, center, end, high, slopeperm ); + if( err ) return ack; + ack.rp = OK; + + // Force Ramp ON, so "show_cfgpars_onstrip()" + // will show the new values, even if AlwaysON=false + ramp_init(&tck); + + show_cfgpars_onstrip(); + } + break; + + case 'K': // Parse Physic simulation parameters + { + ack.type = cmd[0]; + + char * pch = strtok (cmd,"K"); + if( !pch ) return ack; + + pch = strtok (pch, "," ); + if( !pch ) return ack; + float kgp = atof( pch ); + + pch = strtok (NULL, "," ); + if( !pch ) return ack; + float kfp = atof( pch ); + + int err = physic_configure( &tck, kgp, kfp ); + if( err ) return ack; + + ack.rp = OK; + } + break; + + + case 'D' : // Load Default Parameters and store them in from EEPROM + { + ack.type = cmd[0]; + param_setdefault( &tck.cfg ); + EEPROM.put( eeadrInfo, tck.cfg ); // Save immediately + + ack.rp = OK; + + // Update box/slope active in current Track Struct with values + // just loaded (for show_cfgpars_onstrip()) + struct cfgparam const* cfg = &tck.cfg; + tck.boxactive = cfg->track.box_alwaysOn; + tck.rampactive = cfg->ramp.alwaysOn; + + show_cfgpars_onstrip(); + } + break; + + case ':' : // Set board Unique Id + { + struct brdinfo* info = &tck.cfg.info; + ack.type = cmd[0]; + if( strlen(cmd + 1) > LEN_UID ) return ack; + strcpy( info->uid, cmd + 1 ); + EEPROM.put( eeadrInfo, tck.cfg ); // Save immediately + ack.rp = OK; + } + break; + + case '$': // Get Board UID + { + sprintf( txbuff, "%s%s%c", "$", tck.cfg.info.uid, EOL ); + sendCommand(txbuff); + ack.rp = NOTHING; + } + break; + + case '?' : // Get Software Id + { + sprintf( txbuff, "%s%s%c", "?", softwareId, EOL ); + sendCommand(txbuff); + ack.rp = NOTHING; + } + break; + + case '%' : // Get Software Version + { + sprintf( txbuff, "%s%s%c", "%", version, EOL ); + sendCommand(txbuff); + ack.rp = NOTHING; + } + break; + + case 'Q': // Get current configuration Info + { + struct cfgparam const* cfg = &tck.cfg; + sprintf( txbuff, "%s:%d,%d,%d,%d,%d,%d,%d.%03d,%d.%03d%c", "QTRACK", + cfg->track.nled_total, + cfg->track.nled_main, + cfg->track.nled_aux, + cfg->track.init_aux, + cfg->track.box_len, + cfg->track.box_alwaysOn, + (int)cfg->track.kg, (int)(cfg->track.kg*1000)%1000, // std arduino sprintf() missing %f + (int)cfg->track.kf, (int)(cfg->track.kf*1000)%1000, // std arduino sprintf() missing %f + EOL ); + sendCommand(txbuff); + + sprintf( txbuff, "%s:%d,%d,%d,%d,%d%c", "QRAMP", + cfg->ramp.init, + cfg->ramp.center, + cfg->ramp.end, + cfg->ramp.high, + cfg->ramp.alwaysOn, + EOL ); + sendCommand(txbuff); + + sprintf( txbuff, "%s:%d,%d,%d,%d%c", "QRACE", + cfg->race.startline, + cfg->race.nlap, + cfg->race.nrepeat, + cfg->race.finishline, + EOL ); + sendCommand(txbuff); + + ack.rp = NOTHING; + } + break; + + case 'W': // Write configuration to EEPROM + { + ack.type = cmd[0]; + EEPROM.put( eeadrInfo, tck.cfg ); + ack.rp = OK; + } + break; + + } // switch + + return(ack); + +} + +/* + * + */ +void sendResponse( ack_t *ack) { + if(ack->type=='\0'){ + sprintf(txbuff, "%s%c", ack->rp==OK? "OK":"NOK" , EOL ); + } else { + sprintf(txbuff, "%c%s%c", ack->type, ack->rp==OK? "OK":"NOK" , EOL ); + } + sendCommand(txbuff); +} + +/* + * Send Log/Warning/Error messages to host + */ +void printdebug( const char * msg, int errlevel ) { + char header [5]; + sprintf(header, "!%d,",errlevel); + Serial.print(header); + Serial.print(msg); + Serial.print(EOL); +} + + +/* + * reset race parameters + * stop sound + */ +void enter_configuration_mode(){ + noTone(PIN_AUDIO); + strip_clear( &tck ); + track.show(); +} + + + +void param_load( struct cfgparam* cfg ) { + int cfgversion; + int eeAdress = eeadrInfo; + EEPROM.get( eeAdress, tck.cfg ); + eeAdress += sizeof( cfgparam ); + EEPROM.get( eeAdress, cfgversion ); + + sprintf( txbuff, "%s:%d%c", "Parameters Loaded from EEPROM - Cfg ver", cfgversion, EOL ); + sendCommand(txbuff); + + if ( cfgversion != CFG_VER ) { + param_setdefault( &tck.cfg ); + eeAdress = 0; + EEPROM.put( eeAdress, tck.cfg ); + eeAdress += sizeof( cfgparam ); + EEPROM.put( eeAdress, CFG_VER ); + sprintf( txbuff, "%s%c", "DEFAULT PAREMETRS LOADED (and Stored in EEPROM)", EOL ); + //serialCommand. + sendCommand(txbuff); + + } + +} + + + +/* + * Serial Read/Write functions + * --------------------------- + * checkForCommand() + * getCommand() + * sendCommand(char* str) + * + */ +Stream* _stream = &Serial; +int bufIdx; +int checkForCommand() { + while (_stream->available()) { + if(bufIdx < REC_COMMAND_BUFLEN - 2) { + char data = _stream->read(); + if(data == EOL) { + int cmsSize=bufIdx; + cmdbuf[bufIdx++] = '\0'; + bufIdx=0; + return(cmsSize); + } else { + cmdbuf[bufIdx++] = data; + } + } else { + // buffer full + // re4set and retunn error + cmdbuf[bufIdx++] = '\0'; + bufIdx=0; + return(-2); + } + } + return(0); +} + +/* + * + */ +char * getCommand(){ + return(cmdbuf); +} + +/* + * + */ +void sendCommand(char* str) { + // get command length + int dlen=0; + for(; dlen<80; dlen++ ) { + if(*(str+dlen) == EOL ){ + dlen++; // send EOC + break; + } + } + _stream->write(str, dlen); + return; +} + + +/* + * Custon Non-Blocking Delay() functions + * customDelayStart(unsigned long timeout) + * customDelayElapsed + */ +unsigned long customDelay_startTime=0; +unsigned long customDelay_timeout=0; +void customDelayStart(unsigned long tout) { + customDelay_timeout=tout; + customDelay_startTime=millis(); +} +/* + * + */ +boolean customDelayElapsed(){ + if((millis() - customDelay_startTime) > customDelay_timeout) { + return(true); + } + return(false); +}