From f7f820dc54420967a713431b5b010f96b44e388f Mon Sep 17 00:00:00 2001 From: Dmitry Isaenko Date: Sun, 3 Dec 2017 10:39:21 +0300 Subject: [PATCH] v.1.4 misc updates --- Makefile | 46 +++++++-- README | 95 +++++++++--------- bin/loperIRCLogBot | Bin 192976 -> 0 bytes daemon.c => src/daemon.c | 0 defined_values.h => src/defined_values.h | 0 {files => src/files}/Makefile | 0 {files => src/files}/config.h | 0 src/files/loperIRCLogBot.service | 18 ++++ .../libircclient-1.9}/Changelog | 0 .../libircclient-1.9}/Doxyfile | 0 .../libircclient-1.9}/LICENSE | 0 .../libircclient-1.9}/Makefile | 0 .../libircclient-1.9}/README | 0 .../libircclient-1.9}/THANKS | 0 .../libircclient-1.9}/build-release.sh | 0 .../cocoa/Classes/DDInvocationGrabber.h | 0 .../cocoa/Classes/DDInvocationGrabber.m | 0 .../cocoa/Classes/IRCClientChannel.h | 0 .../cocoa/Classes/IRCClientChannel.m | 0 .../cocoa/Classes/IRCClientChannelDelegate.h | 0 .../cocoa/Classes/IRCClientSession.h | 0 .../cocoa/Classes/IRCClientSession.m | 0 .../cocoa/Classes/IRCClientSessionDelegate.h | 0 .../cocoa/Classes/NSObject+DDExtensions.h | 0 .../cocoa/Classes/NSObject+DDExtensions.m | 0 .../libircclient-1.9}/cocoa/Doxyfile | 0 .../cocoa/English.lproj/InfoPlist.strings | Bin .../IRCClient.xcodeproj/TemplateIcon.icns | Bin .../cocoa/IRCClient.xcodeproj/project.pbxproj | 0 .../cocoa/IRCClient_Prefix.pch | 0 .../libircclient-1.9}/cocoa/Info.plist | 0 .../libircclient-1.9}/cocoa/LICENSE | 0 .../libircclient-1.9}/cocoa/README | 0 .../_d_d_invocation_grabber_8h-source.html | 0 .../html/_i_r_c_client_channel_8h-source.html | 0 .../doc/html/_i_r_c_client_channel_8h.html | 0 ...r_c_client_channel_delegate_8h-source.html | 0 .../_i_r_c_client_channel_delegate_8h.html | 0 .../html/_i_r_c_client_session_8h-source.html | 0 .../doc/html/_i_r_c_client_session_8h.html | 0 ...r_c_client_session_delegate_8h-source.html | 0 ..._s_object_09_d_d_extensions_8h-source.html | 0 .../cocoa/doc/html/annotated.html | 0 .../class_i_r_c_client_channel-members.html | 0 .../class_i_r_c_client_session-members.html | 0 ..._c_client_channel_delegate_08-members.html | 0 ..._c_client_session_delegate_08-members.html | 0 .../cocoa/doc/html/classes.html | 0 .../cocoa/doc/html/doxygen.css | 0 .../cocoa/doc/html/doxygen.png | Bin .../cocoa/doc/html/files.html | 0 .../cocoa/doc/html/functions.html | 0 .../cocoa/doc/html/functions_func.html | 0 .../cocoa/doc/html/functions_prop.html | 0 .../cocoa/doc/html/hierarchy.html | 0 .../cocoa/doc/html/index.html | 0 .../html/interface_i_r_c_client_channel.html | 0 .../html/interface_i_r_c_client_channel.png | Bin .../html/interface_i_r_c_client_session.html | 0 .../html/interface_i_r_c_client_session.png | Bin ...t_07_i_r_c_client_channel_delegate_08.html | 0 ...t_07_i_r_c_client_session_delegate_08.html | 0 .../cocoa/doc/html/tab_b.gif | Bin .../cocoa/doc/html/tab_l.gif | Bin .../cocoa/doc/html/tab_r.gif | Bin .../libircclient-1.9}/cocoa/doc/html/tabs.css | 0 .../libircclient-1.9}/configure | 0 .../libircclient-1.9}/configure.in | 0 .../libircclient-1.9}/doc/Makefile | 0 .../libircclient-1.9}/doc/conf.py | 0 .../libircclient-1.9}/doc/index.rst | 0 .../libircclient-1.9}/doc/make.bat | 0 .../doc/sources/API_reference_callbacks.rst | 0 .../doc/sources/API_reference_constants.rst | 0 .../doc/sources/API_reference_functions.rst | 0 .../doc/sources/API_reference_types.rst | 0 .../doc/sources/Appendix_FAQ.rst | 0 .../doc/sources/Appendix_LGPL.rst | 0 .../doc/sources/Introduction.rst | 0 .../doc/sources/Writing_code.rst | 0 .../libircclient-1.9}/examples/Makefile.in | 0 .../libircclient-1.9}/examples/censor.cpp | 0 .../libircclient-1.9}/examples/colors.cpp | 0 .../libircclient-1.9}/examples/ircftp.cpp | 0 .../libircclient-1.9}/examples/irctest.c | 0 .../libircclient-1.9}/examples/spammer.c | 0 .../libircclient-1.9}/include/libirc_errors.h | 0 .../libircclient-1.9}/include/libirc_events.h | 0 .../include/libirc_options.h | 0 .../include/libirc_rfcnumeric.h | 0 .../libircclient-1.9}/include/libircclient.h | 0 .../libircclient-1.9}/man/libircclient.1 | 0 .../libircclient-1.9}/src/Makefile.in | 0 .../libircclient-1.9}/src/colors.c | 0 .../libircclient-1.9}/src/config.h.in | 0 .../libircclient-1.9}/src/dcc.c | 0 .../libircclient-1.9}/src/dcc.h | 0 .../libircclient-1.9}/src/errors.c | 0 .../libircclient-1.9}/src/libircclient.c | 0 .../libircclient-1.9}/src/libircclient.def | 0 .../src/loperIRCLogBot.service | 18 ++++ .../libircclient-1.9}/src/params.h | 0 .../libircclient-1.9}/src/portable.c | 0 .../libircclient-1.9}/src/session.h | 0 .../libircclient-1.9}/src/sockets.c | 0 .../libircclient-1.9}/src/ssl.c | 0 .../libircclient-1.9}/src/utils.c | 0 loperIRCLogBot.c => src/loperIRCLogBot.c | 0 108 files changed, 121 insertions(+), 56 deletions(-) delete mode 100755 bin/loperIRCLogBot rename daemon.c => src/daemon.c (100%) rename defined_values.h => src/defined_values.h (100%) rename {files => src/files}/Makefile (100%) rename {files => src/files}/config.h (100%) create mode 100644 src/files/loperIRCLogBot.service rename {libircclient-1.9 => src/libircclient-1.9}/Changelog (100%) rename {libircclient-1.9 => src/libircclient-1.9}/Doxyfile (100%) rename {libircclient-1.9 => src/libircclient-1.9}/LICENSE (100%) rename {libircclient-1.9 => src/libircclient-1.9}/Makefile (100%) rename {libircclient-1.9 => src/libircclient-1.9}/README (100%) rename {libircclient-1.9 => src/libircclient-1.9}/THANKS (100%) rename {libircclient-1.9 => src/libircclient-1.9}/build-release.sh (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/Classes/DDInvocationGrabber.h (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/Classes/DDInvocationGrabber.m (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/Classes/IRCClientChannel.h (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/Classes/IRCClientChannel.m (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/Classes/IRCClientChannelDelegate.h (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/Classes/IRCClientSession.h (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/Classes/IRCClientSession.m (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/Classes/IRCClientSessionDelegate.h (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/Classes/NSObject+DDExtensions.h (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/Classes/NSObject+DDExtensions.m (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/Doxyfile (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/English.lproj/InfoPlist.strings (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/IRCClient.xcodeproj/TemplateIcon.icns (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/IRCClient.xcodeproj/project.pbxproj (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/IRCClient_Prefix.pch (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/Info.plist (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/LICENSE (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/README (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/doc/html/_d_d_invocation_grabber_8h-source.html (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/doc/html/_i_r_c_client_channel_8h-source.html (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/doc/html/_i_r_c_client_channel_8h.html (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/doc/html/_i_r_c_client_channel_delegate_8h-source.html (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/doc/html/_i_r_c_client_channel_delegate_8h.html (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/doc/html/_i_r_c_client_session_8h-source.html (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/doc/html/_i_r_c_client_session_8h.html (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/doc/html/_i_r_c_client_session_delegate_8h-source.html (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/doc/html/_n_s_object_09_d_d_extensions_8h-source.html (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/doc/html/annotated.html (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/doc/html/class_i_r_c_client_channel-members.html (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/doc/html/class_i_r_c_client_session-members.html (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/doc/html/class_n_s_object_07_i_r_c_client_channel_delegate_08-members.html (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/doc/html/class_n_s_object_07_i_r_c_client_session_delegate_08-members.html (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/doc/html/classes.html (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/doc/html/doxygen.css (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/doc/html/doxygen.png (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/doc/html/files.html (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/doc/html/functions.html (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/doc/html/functions_func.html (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/doc/html/functions_prop.html (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/doc/html/hierarchy.html (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/doc/html/index.html (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/doc/html/interface_i_r_c_client_channel.html (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/doc/html/interface_i_r_c_client_channel.png (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/doc/html/interface_i_r_c_client_session.html (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/doc/html/interface_i_r_c_client_session.png (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/doc/html/interface_n_s_object_07_i_r_c_client_channel_delegate_08.html (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/doc/html/interface_n_s_object_07_i_r_c_client_session_delegate_08.html (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/doc/html/tab_b.gif (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/doc/html/tab_l.gif (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/doc/html/tab_r.gif (100%) rename {libircclient-1.9 => src/libircclient-1.9}/cocoa/doc/html/tabs.css (100%) rename {libircclient-1.9 => src/libircclient-1.9}/configure (100%) rename {libircclient-1.9 => src/libircclient-1.9}/configure.in (100%) rename {libircclient-1.9 => src/libircclient-1.9}/doc/Makefile (100%) rename {libircclient-1.9 => src/libircclient-1.9}/doc/conf.py (100%) rename {libircclient-1.9 => src/libircclient-1.9}/doc/index.rst (100%) rename {libircclient-1.9 => src/libircclient-1.9}/doc/make.bat (100%) rename {libircclient-1.9 => src/libircclient-1.9}/doc/sources/API_reference_callbacks.rst (100%) rename {libircclient-1.9 => src/libircclient-1.9}/doc/sources/API_reference_constants.rst (100%) rename {libircclient-1.9 => src/libircclient-1.9}/doc/sources/API_reference_functions.rst (100%) rename {libircclient-1.9 => src/libircclient-1.9}/doc/sources/API_reference_types.rst (100%) rename {libircclient-1.9 => src/libircclient-1.9}/doc/sources/Appendix_FAQ.rst (100%) rename {libircclient-1.9 => src/libircclient-1.9}/doc/sources/Appendix_LGPL.rst (100%) rename {libircclient-1.9 => src/libircclient-1.9}/doc/sources/Introduction.rst (100%) rename {libircclient-1.9 => src/libircclient-1.9}/doc/sources/Writing_code.rst (100%) rename {libircclient-1.9 => src/libircclient-1.9}/examples/Makefile.in (100%) rename {libircclient-1.9 => src/libircclient-1.9}/examples/censor.cpp (100%) rename {libircclient-1.9 => src/libircclient-1.9}/examples/colors.cpp (100%) rename {libircclient-1.9 => src/libircclient-1.9}/examples/ircftp.cpp (100%) rename {libircclient-1.9 => src/libircclient-1.9}/examples/irctest.c (100%) rename {libircclient-1.9 => src/libircclient-1.9}/examples/spammer.c (100%) rename {libircclient-1.9 => src/libircclient-1.9}/include/libirc_errors.h (100%) rename {libircclient-1.9 => src/libircclient-1.9}/include/libirc_events.h (100%) rename {libircclient-1.9 => src/libircclient-1.9}/include/libirc_options.h (100%) rename {libircclient-1.9 => src/libircclient-1.9}/include/libirc_rfcnumeric.h (100%) rename {libircclient-1.9 => src/libircclient-1.9}/include/libircclient.h (100%) rename {libircclient-1.9 => src/libircclient-1.9}/man/libircclient.1 (100%) rename {libircclient-1.9 => src/libircclient-1.9}/src/Makefile.in (100%) rename {libircclient-1.9 => src/libircclient-1.9}/src/colors.c (100%) rename {libircclient-1.9 => src/libircclient-1.9}/src/config.h.in (100%) rename {libircclient-1.9 => src/libircclient-1.9}/src/dcc.c (100%) rename {libircclient-1.9 => src/libircclient-1.9}/src/dcc.h (100%) rename {libircclient-1.9 => src/libircclient-1.9}/src/errors.c (100%) rename {libircclient-1.9 => src/libircclient-1.9}/src/libircclient.c (100%) rename {libircclient-1.9 => src/libircclient-1.9}/src/libircclient.def (100%) create mode 100644 src/libircclient-1.9/src/loperIRCLogBot.service rename {libircclient-1.9 => src/libircclient-1.9}/src/params.h (100%) rename {libircclient-1.9 => src/libircclient-1.9}/src/portable.c (100%) rename {libircclient-1.9 => src/libircclient-1.9}/src/session.h (100%) rename {libircclient-1.9 => src/libircclient-1.9}/src/sockets.c (100%) rename {libircclient-1.9 => src/libircclient-1.9}/src/ssl.c (100%) rename {libircclient-1.9 => src/libircclient-1.9}/src/utils.c (100%) rename loperIRCLogBot.c => src/loperIRCLogBot.c (100%) diff --git a/Makefile b/Makefile index 30a0360..f999387 100644 --- a/Makefile +++ b/Makefile @@ -1,24 +1,48 @@ # Compiler CC=gcc # Flags -#CFLAGS=-lircclient -#CFLAGS=-static libircclient.a +# CFLAGS=-lircclient +# CFLAGS=-static libircclient.a MKDIR_P = mkdir -p +APP_NAME = loperIRCLogBot +SYSTEMD_DETECT = shell cat /proc/1/comm|grep systemd -all: lib loperIRCLogBot +all: lib $(APP_NAME) lib: - cp ./files/* ./libircclient-1.9/src/ + cp ./src/files/* ./src/libircclient-1.9/src/ # patch -p0 -i ./files/patchFile - $(MAKE) -C ./libircclient-1.9/src/ || exit 1; - cp -r ./libircclient-1.9/include/ ./libircclient - cp ./libircclient-1.9/src/libircclient.a . + $(MAKE) -C ./src/libircclient-1.9/src/ || exit 1; + cp -r ./src/libircclient-1.9/include/ ./src/libircclient + cp ./src/libircclient-1.9/src/libircclient.a ./src -loperIRCLogBot: loperIRCLogBot.c +loperIRCLogBot: ./src/$(APP_NAME).c $(MKDIR_P) ./bin -# $(CC) $(CFLAGS) loperIRCLogBot.c -o ./bin/loperIRCLogBot - $(CC) -std=gnu89 loperIRCLogBot.c libircclient.a -o ./bin/loperIRCLogBot +# $(CC) $(CFLAGS) $(APP_NAME).c -o ./bin/loperIRCLogBot + $(CC) -std=gnu89 ./src/$(APP_NAME).c ./src/libircclient.a -o ./bin/$(APP_NAME) clean: - rm -rf ./bin/*.o ./bin/loperIRCLogBot ./libircclient libircclient.a ./libircclient-1.9/src/libircclient.o ./libircclient-1.9/src/libircclient.a ./libircclient-1.9/src/config.h ./libircclient-1.9/src/Makefile + rm -rf ./bin/*.o \ + ./bin/loperIRCLogBot \ + ./src/libircclient \ + ./src/libircclient.a \ + ./src/libircclient-1.9/src/libircclient.o \ + ./src/libircclient-1.9/src/libircclient.a \ + ./src/libircclient-1.9/src/config.h \ + ./src/libircclient-1.9/src/Makefile +install: + install ./bin/loperIRCLogBot /usr/bin + $(MKDIR_P) /etc/$(APP_NAME) +ifeq ($(SYSTEMD_DETECT),'systemd') + cp ./src/files/loperIRCLogBot.service /etc/systemd/system/loperIRCLogBot.service +else + @echo "* Not a systemD distro. Skipping unit installation." +endif + +uninstall: + rm /usr/bin/loperIRCLogBot + rmdir /etc/$(APP_NAME) +ifeq ($(SYSTEMD_DETECT),'systemd') + rm -rf /etc/systemd/system/loperIRCLogBot.service +endif diff --git a/README b/README index f4898dd..9ea8f2f 100644 --- a/README +++ b/README @@ -1,40 +1,47 @@ -README that actually FAQ. +# loperIRCLogBot -What is it about? loperIRCLogBot is an IRC logging bot made for writing log-files. It could connect to one server and log one channel. -When someone says bot's name at the chat, the URL to logs could be published. +When someone says bot's name at the chat, the URL to logs web-storage could be published (or any message defined in configuration file). -Is it works for Windows™? -Nope +## Description -And if I compile it for Windows™? -It won't. +Works for linux. Need to be tested on other UNIX-like OS. -OS X? BSD? -I don't know. Give a try, let me know. +Key feachures and limitations: +* Could work as a daemon. +* Store configuration file in current folder (./bot.conf) or on /etc/loperIRCLogBot/bot.conf +* Only one channel and server supported for now. +* User can define folder to store files. +* Reconnect in ~6 minutes. Maybe earlier. +* Dumb flood-control +* Authorization only as: /nickserv IDENTIFY [password] -How to build? -Type 'make' +# License -It doesn't work and you don't provide ./configure, what should I do? Why is it happening? -Change Makfile and ./files/Makefile. They're simple as hell. I don't know much about ./configure, so there is no such option. Sorry. +Source code spreads under the GNU General Public License v.3. You can find it in LICENSE file or just visit www.gnu.org (it should be there for sure). +It also uses libircclient writted by George Yunaev, that is stored at ./src/libircclient-1.9. Libircclient is licensed under Lesser General Public License version 3 or higher. -I see some warnings during compilation. Is it ok? -Yeah, I hope so. I also saw them. When I find the time, I'll do something with this. +## Build & Deploy -Where is the executable? Where should I look for this and how to start? -$ ./bin/loperIRCLogBot +``` +$ make +# sudo make install +``` +# Uninstall +``` +make uninstall +``` -What about license? -Source code, which is actually 'loperIRCLogBot.c' file spreads under the GNU General Public License v.3 license. You can find it in LICENSE file or just visit www.gnu.org (it should be there for sure). It also uses libircclient writted by George Yunaev. Libircclient is licensed under Lesser General Public License version 3 or higher. +NOTES: +I believe you could change Makefile to let this app work with libircclien as a shared library. Now it's statically linked. +If you have bot.conf file at /etc/loperIRCLogBot folder it won't be deleted. So remember to delete it manually if needed. -Is it possible to let this app work with shared libraries of the libircclient that I already have in my distro? -Yes! Will update Makefile sooner or later. +## Configuration -Where is the application configuration should be set? How? -At the /etc/loperIRCLogBot/bot.conf OR ./bin/bot.conf file. You could generate template by passing -g option: './loperIRCLogBot -g'. +Application settings should be set on /etc/loperIRCLogBot/bot.conf OR ./bin/bot.conf file. You could generate template by passing -g option: './loperIRCLogBot -g'. Configuration file contains 15 lines, so make sure that you didn't define any sensetive information below these 15 lines. Here is an example: +``` server: irc.example.com channel: #channel port: 6667 @@ -47,31 +54,29 @@ logPath: 0 link: http://localhost:8080/logs/ reJoin: yes floodTimeOut: 10 - -'server' should be set as described. NO "irc://" or stuff like this allowed, no slashes and backslashes. -'channel' is the channel to log. Should be started by '#' symbol -'port' is server port. -'nick' is nick. Restricted by 'maxNickLength'. It means, that your nick shouldn't be greater then 'maxNickLength'. -'username' is username that defined as second parameter at your nick-on-server. Like nick!~[USERNAME]@ip_adress. -'realname' is realname. Don't ask, just set here something, ok? -'password' is a password for the nick. It goes to server as '/nickserv IDENTIFY [password]'. If '0' then no password needed, -'maxNickLength' is a maximum length of the nick. Various servers restrict the length of the nick. '30' should be enough. '128' is maximum, but I'm not sure that you have to set '128' in here, because if server doesn't support nicknames with such lenght, you could face to unforseen behavior in the application. -'logPath' is a path to 'logs' directory, where all your logs will be stored. If '0' then they will be stored at executable file folder. Pay attention, that logPath should be defined as full path. Not like ~/logs of ../../logs. -'link' is a link, that will be provided to anyone on the channel, who starts his/her message by your nick. If '0' then smile will be shown. -'reJoin'. If set to 'yes', then bot will be re-connect to channel after kick. If 'no' then it won't. -'floodTimeOut' is a time in seconds before answering on request sent to us. +``` -Is there any other options for this application? -Yes. When you start application, you could pass next options: - -d, --daemon Start application as daemon. Writes to /var/log/loperIRCLogBot.log and syslog. Stores PID number at /var/run/loperIRCLogBot.pid\n +Let's go deeper: + +* 'server' should be set as described. NO "irc://" or stuff like this allowed, no slashes and backslashes. +* 'channel' is the channel to log. Should be started by '#' symbol +* 'port' is server port. +* 'nick' is nick. Restricted by 'maxNickLength'. It means, that your nick shouldn't be greater then 'maxNickLength'. +* 'username' is username that defined as second parameter at your nick-on-server. Like nick!~[USERNAME]@ip_adress. +* 'realname' is realname. Don't ask, just set here something, ok? +* 'password' is a password for the nick. It goes to server as '/nickserv IDENTIFY [password]'. If '0' then no password needed. +* 'maxNickLength' is a maximum length of the nick. Various servers restrict the length of the nick. '30' should be enough. '128' is maximum, but I'm not sure that you have to set '128' in here, because if server doesn't support nicknames with such lenght, you could face to unforseen behavior inside the application. +* 'logPath' is a path to 'logs' directory, where all your logs will be stored. If '0' then they will be stored at executable file folder. Pay attention, that logPath should be defined as full path. Not like '~/logs' or '../../logs'. +* 'link' is a link, that will be provided to anyone on the channel, who starts his/her message by your nick. +* 'reJoin'. If set to 'yes', then bot will be re-connect to channel after kick. If 'no' then it won't. +* 'floodTimeOut' is a time in seconds before answering on next request sent to us. + +## Options & work modes + +When you start application, you could pass next options: + -d, --daemon Start application as daemon. Writes to /var/log/loperIRCLogBot.log and syslog. Stores PID number at /var/run/loperIRCLogBot.pid Also can interrupt correctly on SIGTERM, not so smooth on SIGINT and reopen log file directory on SIGHUP (used to handle logrotation). -g, --genconf Create configuration file template. Attention! It will overrite your existing configuration file. -s, --silent Silent mode. All program messages stores to the 'output.txt' file -v, --version Application version --help Show this message and terminate application - -Any chance to log more than one channel? -Nope. - -If connection is lost, could this bot re-connect? When he will do it? -In ~6 minutes. Maybe earlier. diff --git a/bin/loperIRCLogBot b/bin/loperIRCLogBot deleted file mode 100755 index 50df9d8d9a789c98a4e4ac902d6826aaa134bcca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 192976 zcmb?^3t&{$5%vubjS=0bsPR!)9xt6-9KAWEJzZ^7 zZOz=XM~|wl98p_S7g;o7(U`MGoIQGEsD9)bGH=pn+liBB$Ve$U+T&9HbMPPA2;UiA zttlg?A93aQkDvS>EI+wwMtRQI&k~Lqs0!ELC3rsC1v`(W7_cw=#Td9R{9|CGFML)S zIup{+c{WY^ZE5&im}cB#($E>2hR*&p_#J8RoNHh6ZB2s@r@{Xz4WD^H29a(@c(8SyqRX)%hTXT zrNKXyhW?y1e9lVK{-wkY1)rYLw{Tv{JJ#w{516ErD^|gn)$ww z249zEUb$)LUk-k}=+pbtFAe>p($KjX1o~Qco71%acbfJ)(zGv2BR4%w`;}?%U!=hY z)6BOh4WBe>Dw$e;R&nO4I(WG~*6VBe%h6+MktewwEJyJ_%k zY4G2qp?`TA{NglpPDnGaooVo8Y49u4(CA+SK| zV=iE~*J@ z^Mc`qno9Cp6|Pwj>_wq6h>H5f8Yq?5vVL|Wn}+Mb28&v)Dp+5og%*cu>*tYHb$uv2 zcX3_0w5$Rmq@gFevwbZE6bz%OnnI$(mq#>TpO&ZInC zQ(vdetwEovP%t=OtElFTdd@fkT9`8?SRV;%jlqhAN~qp57*apYm-W$l~&m{OnqVQGFEv-MG!Iw)dqtw=U{jtyHhx@ zma2-na4oIRB{z&G;vh)~XZCC^7}{rJc=m#F*qex*ss^u=)FRZ;gy$`&ue00D)+Pr0 z6N+b_G4jmR(>bZ9!qMH2XQdvyk!OzVem-O5SzPG-uwU-?Km2cit52ru`9N9@eU8Qd z9n!1yp*HNaJCH(Om@F6H%3)<_hsvHWM}gWgH8n@jo6UniB<^^D57mBZ!?*qN*VrB& zqFrmlw+o!9-Dtyur2PQxmo^+eq2@52F5GFukrN5`)9wSz&z|S!NXb3taCuUHI$ij) zU3kae@_1m53-9<_;>%rl$KMh^*M-k*pCizr_zPE_`gmP_QB7oKx=KDrA}o}5pa3-81j)?MzxL!hb892Y)2h1Ilb7oIWA`82rj105vF zMJ_xHBK2u<;g3vVHEo#-?{VQ*xbTjRv3jKof0V2JDi_|J2jB0)ALDAj+JztF!moAV zk9FZ&UHIc%`0XzI@h*J33!m%4?{eXpD>tapB#EDxEI;4_xiF z7v=~=8#%>=&vM~Ub>VYdc&`he>%tFq;k_>WX)gRQ7ygGXe1Qv}=faP1;fJ{JMK1i0 zTzK7u=b4K0DRbe6IY^Y3yYTrg{2Ukl$1Z%e3xB!`-{8WJaN!rZ@FQLLCKsN2bmz0o zg)eZBC|9`fg)aO`7yb+vew7P%zCY@Z((gT`v5&F8pp6e!L5By71?@@OxbN^IiB(7ybelUfVH8AliSCJgGlfF1*i$ z&vD@=xbV3ye6b7fb>T}~_+c)5sS97=!e8jZk8$BAy6{CVyzav5F1+7`FLU89a^Wv` z;V*XK=eY0z7rxqspX9|Xap{i@h7X0;` zT7)OU)vUL6ci}T+Jz=IiR=dED5@xDnwF>+IVWv3NYJu-2%+$tOCGc+uGo`Us2>dI; zOl7Plfo~?vbC*2WyVNUq1$zDT7re@MnaXDp*AV ze?XWif>j{!+k}}KSYCl&Bg~Y*$`N=6VWt9>Ch#+anF3gQzT^Bi5%v<^E%1864Ea{O zz>gAUsJB`Let3H3@t(VTN$4LExVgX6Ux& z2>dg`4B1whz>S0%s;we{e?pic+A0uuF5%&Xy#ilJn4#Lr5qK(LhGk(S%nCd?Mkq2(J+MXu{m0SWNl?nVAVTM+#NZ=0$Go)Gt0>4d|q15sU{2F0~P%B5^ z9fTP=EluEO2s30_d%h9<6D}gWTj2GC86vHAfgdHz&}g*^`~YEwL~FIccN1nPv{niH z8^R2M)(U}tMVO(_Y7+Qn!VGy8RD!mfg1@kv{^+0|Aa6@npGh1 zT*3@xmRH~_2{VLQIRZ~5%+O_N0$)U!A1zT8HA@2ZWZ{) zgc*{o)dHVJcsk)#0-s2D2H_O~A5EB{$7&Kdn=nI;)gW*`!VERm9D%=n6fi@KRVMIf zgc(|_B7r|3%#dOg2>do-h7!vQxbP#t@xs-*@wOg)XHVI5e_QLG-xq0m+r|}Av|Z(g z&p-CwhrQYto>QTaQ9x6v1jGWTEj5vlZpN zXgxI$fZiq*^G`#6)kcrDX0djrn(g@=r!?>G$^E}*NU}usfw$(|KlCu7&8gZ~QQKB( zVzeA*d^Pko)%*YKwdGmVlfu#zg*!NRn{}saKRlRMJ6)T4cD*pw^{PI)ie>%K>Dt<} z>*1-cgV{Ba`PyH+5YwjS@7PYe8y2HelHxS70lJ*V^N^&P)4QO8zPH$YyB*HJRNrAe z``()B`)Ad6s`PC$*Mm`zsyKkuMpg(L)jdh+DNEdad8K_&|-#OlM_+t*nP_XFTBoW=fLi5CKMTeF>tZw`QW)t6K6X^&hJ9Di1)6R=Z+;6_qZ`=kh$W}DW!B^kmaG;n$?&?Si_5k3gLJn22dz5^8Cpxg zS5&BHq$swTXNZA>mstVWxSo(X!U*?#LatwC=hdI%(Z;lG#JWPoCRuyB@ycg^)s5}? zzIHuXmTHvIuCJS0A0CO9Y*o6EwXGq_|F17&n1st|~lbwJenPdhl7(@5qRka5ZQ6iBd}e~Xs| zdZ;;*T5e`?OA*YWyyLB&SWVyUhW@cg+L;&$qB5ay7#0f{)>+gdgbgThJMBZS*r9KH zd!U}N2@FYFV;l5lzV<0r#c+^PF8|I0iA6Bm9L!cUp2o07L&nyS>@;I8-6Zzfd+6C1 zx^Euan+xp8b&wy(yt?_U6p#C8FKWUa7xqaY&4ByS(M9LsZaR+OBCBn!D}y=GbIVNR zLoS`&1V`NGkQwdG=h!@-WAi*Pnxs?6ur5AGr}OPj{d#ulXB~HtP8Zspp5qLd8mW;6 zSpQ0^_V(tB?M^FucFM9II!LE7yHiEaPC3>!2kCT$-DzacPF`!mK|0N~JAI|h-kDR8 zb;LnB&9^&ku{(K|ipZO=gshjij`~~z?ahnre#?9IWBz9S?jZdfvz+cQsm8+_I<2ER z-C#@Y!A|YfX#hH%nXc0^yVD1sDHUhiBf;_aHqlySr%N}`)VdJs!y^(Bi;T?Krwpd| z=`#{U_h7+>4}m|;9F1oDxUBq-h>+vUFCM_Wc>228K6&2!?Mv2wi7A-T(3T z6~wZcpj$(_;}1gDS#o9HpKb-{9!0wE^iMAbXH|AW6W>p9%jSdbx(?7?eh|9O!d>4reJoODMYgs!u;bwxMOr+!_A)@B|F4I7ya7Z27FnLokb^O|7Ro?D*B>TJuL0R&;I z^&pPb@e40PmU(U5-b*8|s8rg%7T!l(a&s`LR`PnVYT{teu;`Epr1( z%{ndJSUsnhfMid#Ad=6Z(muxoZ;s7pvEgzoY2A3d3`MUUm!7r=Fkgdy??~$k5Nrh4tno{v07_tfVthnbVh_jttkyCAS za~JIrI#>@58>_C#==)r)VHXCDLG#mUbeJ&FH7_TTRk-njlQ z7*#W0kF>116(;^HnyuxNo|r*d4RU04O!p8=KP;0S-iBRIkjCTfQrx~>iexK_5+nW; zie8LhX1jr1{~(9tY{&Xfto5_>4_<2kb_r0!m~nwX>`M|5*O{YIbLd z5pIN@6;GScN=^zyTqa-l9I)&5VUU#ei!dW&!#{<-dqUr53dKlmqS6~*nY363ZhkwVG;w7nA$DYb0)T396q-XRbTp!YbH69*my(k-)KvZ z=SXpTmJ~@11&sIGM-MPwHIwIL)x^DQos1Wt=xNPk$aXTxH!I+cMAtWU^ESJJ6G-lH z)$+?t)h*EG2w0U$2CyK_QnhAALF_iB;?x6A5x}vUGjEvqA%Svuz=KLn;lj4 zQjtk~^EO+Ihlw`g!`LOdfd#hj&!|LMCWgVc{)}h^ObyMr}5cIX~VQOX*{lF%=;otui(NEn(A3t)4Z_zC|)=92W7uchoC8K)cJU&GDQqj{ z))5XWQIvxa#sC24sLW(jRv^(YjRM3v$#I!*yr;Pl{3w&zNed;rwQ5AM#pO1;H=+_k zn&=E`tKmOu`Il~qG=Pda46wEQ7n}Uh|CRh&H~FJT{;w3MP5y10{Px|#eUZcc_p;CT z-K5umLdT^J-Hdx7ZY=5sMfd#wif)$btb~3wC^%FdgFI1DZE&cHtZ5{+Pf{^mlAllB z;>0}h@laVJJ|4D-cUhkJ2!b2vbM=IHVAzKE$&AXbo zFslpSBKf!)MQgs%HsFUvF_E(G%|qBg|8m4ld^zIi15UknTt4?ev%E{FBQi?+o{?W_SR7C z`y|XP!)=`dOk^7PPMJs%Ok|f4c@Y+}9Tw6G3u*7A-NcL+^9y5ODPb#*1KZ-;rc!o0TY$q3A>beC;jH+_D9gU&R!y^>;P>4$RyVqx2v zG#ih%N^$#IDUz#Ez!g7)q8EP|rDAMv0+ zx`FlB06b68r}id9u6ONC{)7uu7?F8jbCJDHmcFFI8zeLrCX=a=a!e`bnjHLK%{)JoiJ4V346!aqWN1M=DHlduBwZNFa25TJyR>;Xu z&sXh%ms66De&~f6z#WvD2RWJK>t(jUyXEHYcgqEQx7@OuWBnLonM0t^Xy+N8*l!>V zJlud=I@z8WzfB+QEDWD)@q5(KPM;^%UmnUmv9Hn6lH*>Gmy0Mgrdlp9T+q>@*LP~+ zb1^iso{j6DL1Q^GX=%D2V;;hlDphUfIE>#?_Ge&My=b3KSudb@%Oc{I6Ne!+YXeCz z^KNNo#UXOY9Uj!Oi%>At?AL52*J7T#8x{Y=#Jc&xPNq+O7Lse5p9ern@ss25(@~Dp;C({X0Y*atxUVz> zWMB{;5+z$#@T`3r=qSN#1mS4u@{H*9%MV}j=m8FIE~;&jB{G9Id*N8^n|W7~m4Bm} zOEX)J$;{iZE^w@Lp0sN-|HRrv=HvsqJ=C+?EY`vF}q&KH%62w9k#~ds07bmx^{A)~@GwD=F(8n59o5oBWM(rF5y!Tto{wFD{YE4uVn50ud&dcJfts* ze`J@!v=r}S_0fu=M;T`ne#2^~01jYpHCw*}Ip9>g5BC1X>a9{8v5B372x~?AB=!_r z-;tJB3#%6?VuM=R3H|JOM|#g^!b@g73S3nR_atz(MwSd}DPpBRRrz~VLSU<|f`*c} zi;lsR==cH#AlM;|ESY2rcgAufI6wqMCAYtPDP5BIQ!BKeh(CqDP;Hj4xdDT99O7%{ zYo5gK)-*n%lU_|&?x^ZBUrd{F! z3jj{*h8c5R)mh%2U@kzv@oA}nZ2AT6+Kl}zi@>bX^f-tI2QftsW9qPR{ojg2E_dOu z5qf5T7ha^6E2|X^6oIe);Vh@~u}eWi?N5;2{Sa*G3gwSDMw?W8b~XsN#aEzBOR+rW z;_o6Yk;km=$DHm*Z};P{?#D6Rk44>&)!mN; z-H%Q7qncc`9JX$2IqNZJy4jenJxQ**Z}4t{cZ+1zZ(yNC2CKfq?Y8aP6P}Jz~I{eMJe^J z#%#cZ6`ew%v#n)Gipb7qLFD&vk%`P*Q7>|-j7YX>djl6&W}A)lr0BMpC&4AbR`yV+ z6jWQh6OT=gzIUYbT$e*+^7hrx7~bW5icj;PwqZ%?A4 z*(A9r1E;1E_>i`{`^4D?3)XLJw{^J93}XOZs#YS~fn#bipgrzbCF?t`NDZ6pF|3@H zd^TP##oH8C*c6IV6wV-p<6Y7(1gms+7bACbp})RZvlo8Arcsfi@$oZ`0TkGEi&Awv zP$w5@&0H9e^}BB!mkJyF_m{Q{(G#BzEN9;W#l;ep^llma;cKMF@>!GV_=?HKw-sOee00}Xkok*S@v+KA*O)wi8&3Y0KWBj+k%K6$QzS-&0d1J#ec)p zCb~uEjHw6TY<#<<32n8)9f~)22hAwS8)!Z#1Ne;6+(q~6@sCOp)AI&;;&K$54CLkd z)`BJbiya^e2c)-^*bcH3xhgNKV^)e@GtSDv_xt9~ zZDNdmV_W#DK>ltVIqlb@U!Ux`kxBa`;|qWOKYh_H8G3Yl9!@W=hjJ!WyaNg7#+w1- z?Lfx6=22K#EBwi;Gn#Q^h%w(XZ*XXC2_Nrkx(>ft82JV9#{(Zoj_%)aAGTO;nOV{d zU*y{2iSbnh#zyW=%B99TzUbBra}5NBA=KdUAEQla{3B0n6fC6#D%po>EF|3+kmrf< zhhTMMt93Lgt5)DR!4I2+>%K0pV4W9?`Ee(DFGloNAh!$W6|`)HxVM!IDA3j+yVpLy z*Au&s{If&zv#2w5@l1id0)6auPmEVwJ!?wx3Zk78Jn?7I6f-N-Jn>hcT3<^GdO%jf zYWR}gGWv)!H@eJYx02(J5XZwmu%{a^_8YI8&r%i{Z&;6k7{7Vu%h+n&FV9N-2x ze^Yp3v~xzdAie`aM!RUI-xJ@5U4cE-hk^68Y{ba&rDL@9#192dsv}SPS~jriON>s; zgvgsH&Vbpx0ZhlAI4_F#Y}v7yS8NgO!9xr}bypaPvYt^|2szQ07+2*D+lJKi3Ch*@ zN5J@|BNy}6qnq*NhS6_$u{`wnUQg^b@EtJrncsjK0>E47Hz<%Gg#;)BjLJMOXbPD? zqB1YH<3#zsoj=-^aZzIQcPTnYVU}DEf3xXCuLE1`;f)lFO_Um)>vn>f^`8yjNe7+vj#<+6J%Dg340~z8)UA$M0z_$?K<@d8JwZ?q)wjvwqffkd5M(z19yWzbgKL9Zzfus(s65Xb!Vm zGpvh%lJ!RZ`;$n=ubzY)oPKaqzuYW#N)P!%iU;8t;)(x@5wQA_P4$TZf0St z9ep?V$`@dV%oqH|e!B3|!grtmIPyh39CUzcYxwej@wv!(Jk+oV zp3bwTy({k}@00kBs^E+EZXMu>e~g;wa|0&D-|@s6@$5q&m^ot>S{G9{{k!8S*HNrB zvKswxBr+0#SW%d+p0YggpQ)!DPki+NP{Mkd1m7Ef5kP6Y%M+W6sh7Z|HNvdmgvE;w zLq-GfSQnx$#TRJpg+!yzWeH!e;aT|d&(g>fd9xOX8emU~pQ{n+6+bcc1R4*hC-9Sl zC+T&L^lGB4%qOX(L=N$=itT$#F3QOA#ExZ)=GLU%jtW}Up1mcFsEB_EE+~WX!*N1P z?!NMPe(^rkR|2<@Q;OvfD}(?`jMwn(CoFJpATjVII*UMJz*d&)-oeT(Y{fdTy+H{) zPmWmvHo$p~knzO%GmAR%DR1<-oWxOjbmM^J&%5^T-@k9i;PxR+_=GKE)5Z^S{@m1r zIhEi=?Irz?YI#bYDbf(8kWcB+SNrSv8%1;{VB%jz@tOGO70TspAeZ=kdo+9-M4vIjjWq_tc~N}sfW z*bP+SG6Y>^RvF@|R6XoOY4lD|gTIcxyN{!JWwcTLS-x#0c>}2T0qkr=q!sjzehO3J z^!tweOx15f?|$bw{i5%F!*;Ez-HhJtj&<542O6*gOr~ElAjUw=#}DBIJC*lXyBS$JX=LJRGmveA|#S2XOS3xGoQ=^_k;kYwL;g2Xc`vEpkGbY^jR0ZuuRL2I=Lu8i&1% zFOK|Pgoe|}?-pt6mS6a1s%;P1%|kORE3O!N8oVBP_Y;bd+NA{eeP6qBK;$G*P5k#5 zmW@4ez7&CneoBaZWw*e zp{>HxPVm(6Op1#)$wlNG8Dls`|0~EKhgpH;7k&35>wGM`=(}Iq&2!*-fv|=M_M?s{ zs;oKy=Du|)d-qKbB=6&9ja%<;j4zqG-M@ie@J=}}h`$~g)Nzq3-X%`b3}+=;VF z=Erw}PJgLI+rp2GP1|C}u)z_@vVM4HV%*A(+hWow+e|_-JZ*@hoN1U&Leo88RBnLb zYi32y7AgP4B!=f3q;f&;Hbqzis3(CGp%Z&IDnZQYmM_j*0?8*tzLG1d6%t#J7u!A$71@}1jYcP*l11(_VG$6b?+8GMZ zj&>d%zOtLA$dMhV%RWfiBRTB0$5)^$`+O{Aj}C|5Kz}%^$brf<>k_O6H6OG?iUBF^ zGhamuOQl4VZ)wgzRbfwYJ*#ukQRV9pVrm8XjqhOJIKjdVP;)M3(#>!9BucCT@6kFA zBj4v%XN7;LZktkm@0%4M3&~~4x=^yi($ErRUhF)M?3icUc`v!YZ=Q~RII}=cyHldr zi~ZXq%U~z?TN(NQg$%R-A>S zTW#I3q-K1K6MabSbNx?x^vMDYsX=ZsTk#w`|5)}nCAz}anf$q#CbYp3Xq1hcZY^Te zfo$yGkCEBB_7gH6&O%SL@K?puS?bxOnAp&eLJU!eMJdD}g%F=1$FKbrVos{XXO9XE z8aNK}Nn7z1Csq5A^z27cvL8u99)<7&pp)1@S;E(P%x@lpBI7C1CO3FdV@810yBF;B zFzT4lNa>&5dLJ1-OrCok8J{kc?9<}c!n1i=e4?Bd@51WGU0j?KzZS;QRp-QV{vsgcb)5@8#&zMG&q+AKTXo9KwXciiQBJV; z_})O`vAk6Pcu0DPCpHbscT&7{lCjkjn~3K`O8}LS;CXGuvVz6U>WSq-A$5*pn4UO) zi(g;5g+sZVmhuaF;z{ED#uvs*e&czXhbJID@@UK_K&OZ%j-l99`&M^XQN^xa|8!Mx zDz2)Ht}2>fB-If&PFgBKC?MKIwd`;u?e&~sPg5@f1?=MHGM&!qjK9fxHMx)UJ$6)+sqTn?}*jPi6!#l|De=TMp@sWY-aO%Px*8*@gPTPoTnFCf4G?4EN#c8)c2@(94qL-NhN-|7 zG%*$VIlC3W&?hNOv*g50fHg&i2cSg~yUb&-Zr}rrCsAo$`mhtcUP0XQ#ALtN8S=z_ zhgy(i@KGe^3&|p!F3Ovm0QR_p0@$zS>dEPO@Rm4$Tc?3x^B7^0UlCxXyxOcN8>AL_+AqwVb0;gYB1%MH65$!FZ>bc+Z88a@nw|En0>r9-vs; zP;YL+oT^r|P0S%mqLjp^o7f(gFnKfn*R7s4t;BZ6lajy?IRvvV z>@wekko<@j$>>TDlE_hlbmkS>Y~pV#fP+~_@-6;8rIL?OX~m4>{@W?w2*=8P<6}?k zZgQ8n(Cbf(#F*E-95BApE2d@nPoF$YAN#_R=P{%B)u7|U%Q<-FBg}FL$k%ouQv(G4 zCH8B%i~kBJ+03QkZ@aJnBjJ4-aC+ia^5Y--vM2Tmrb9pbBlubW*lm#$thX_^Ax?rh8Zc2?c%4gF4@d% zRdQenB6e}@C=KIG7=}Sa2@hWiU#J51=Nu^fU6Thk`XO10XQ}IvqyAKu7 z&dkV(zQn|n1#>LOizR&l4KnUbN?brMI2A1*QIa9ukGLQSKNTS_&d{!i5MT~ zI7-gh`1Pq9KR7WNI97}P>wqk`L=%8pl!Z$hvzMM6x4ji@H|kA{FNKwEHg%x zN4E@Pj*@z(2!;9+$3dNVg=%hkKxx#=Tpv5)VSTICIZ~y%`_$Ic@)8)3<7zx91lFU}4rHZvK}(ImjM<;bD8lqYMa-*DJ&c z`*G^|Ec9ApeC-mdFFEjd5vp7^w8dI_?)bbV14@nYd5OQ}lKo^N7j$9Ow`>91c$t~J zu&d*ksufLNXEQ%+%^17QbIYGm#kmu11XMvk_AgfVgJ^k_hy*a-m6oxpQ~ zpV50CrwjGp|C#+jxNU;C@wN$anj!x1^{?m;`QpLJO-)!}tW`H|%PYc@ZYUSai7(wkPE&izCh;rDSY8g^Oazj(IFm=#fiGd+ z!|03ej;_XiP2BCRcPt1Rs38~xYHK=~i($w@e)Y1hYY4C#9Esbjd}_2dj3+kb4n z18eU8AbW7fZQ{U%wMQgN`x#MUlcgCpF5Aq4R&h$km!~VpUnlxPZah_yxMpoejrsPy zqF5#$EaTWI!t|*aWfm)A`=soX zY-7nW$APPo#FO;8d>?oV?<8R@GE19O@rheBWtcjyI~kij#<8e1_uTD>@>QOWy+~)7 z<9q6G$jTf9C8or4r~v;-JdZ$#J;igpb(a$tZ27=ufl)I0uvc=E z^28nnpFU#?97v`o&Y$i>CEV{NN8;&8Hpcyf`=N`qVoI$+vF z$}+&|aPRTfC6{>COe;fj?TKX|-#|L;iFLx!=*el9;C)s{zOx_mtbymln}kgnMNRwB z=qFgzctXE9c=8#~`jBg6jNKl2Sp*Qf5_=aANbT2@)-Hu?6UEr7WnetpEyPEmX-aFQ z#=j=v3-*w9mNI8LJF_-^ zm9s2*DWGME8ThLh_!C|0t&}p}WR#43n`Ze%N&eedR)LKDW)=ApC6wgvR*JPgko=IE z_QZZm(H!U&j<^2aY3JW5zpxIN1N_2qclBjkRuXOf6)ikaF>n1nnk3}8ca(NEPRthc ziswCX{$tJjG2GeG=MMHq_$h34g)8aPD`4&S#C{GNo}`XtuvcM<#Z`P0reB)4k9n5O z0>k&)IIK4x`kiElx@~q86Z53|8 zl_A7EDt;-Jw+r3%#BF)IQTmOWmI3WI?vQ*jiJYJGlxXmzHS?#G%&0xsH)uO4@rya6 zl>BX8JL-6(J6u|EAGG%HHMmv7J~Agyx*kUfuQJ0=kOT&y>Xv@P zymxXkuK>4Os3tmsfbp5Vt!fJ-ACh+F>N~r-CTxq1W+%|TO|Uu*0B~XJIwo>p319PQ z`g$B3A*e2!j_8t$WsI9OxTb^`h>i-hzJBkf zxA1$`_=*7fd)DLtjC>K>QIed3o5x3bV!X^siY{_rU|e7HD@1}1@T5n#Wy!3b0Z?K* z-|<&E1VWu4qfJ88jp(Exbz9{-y_ekim~K#{jddA1* zbov_0`zSYn(ff ze9%QR;pex+C*^-Av-L;6&1?x^3izTCX6*M&e%7AtU1-%j7&F8HQHfl?`^6p5Fu!*I z)Aq#f$FeBN-*a9Un)sgLUs)UI}S3XT%?K_DWe$;uPT|@1v9BhX4Iv zgD%$<`r`Y5OzmI1o!Xa?B0nmH10BqU=L4%J)B-dg0XNbB9-5Tk0=J_8gPzzzBuS;b zqqba>h1HF@K}lWh7Jm<0?md2o2i$SX@Z7e^xAdDu7~6AOYt|-D{3T9k={NTh6Wa~| zl*{-sos>^LfO3hrZcxrZ6;^J~b?e(Zao~VJvYM+ld_KL%3y@oENBE4UuMvrs3m7@d z;w@y@1(51`T+`QsJ+a+D(pEidj>2{0e{;nKu-703>z7y*R37x!atZWD&Cz6Os*!rI z+-?ga{yF%vDxrTYlrkXi$F-aME@YV7@#PM|pmnPwIuB~NmGDA-qB)lkn@g0fceQha zfL#I%!Fm(q9Y!wg&B$3Gy~|ug%{_7ciae~x6FV9Yw#C`z_`cb2TemgYW;g5Bl-YUWZ&LaR zl@0jB*XcMr5Tdn~U@xIY&P1D9#BX#rZ>aVH8 zLRR6{`gpI>P|JK!QZ8l-ztuRl6^0rBG0k3E@ry|8NwSN5gKUvM5*5jj#Kk$7H;#<> zLWRMndzZWt?!y}Kg^ZH54xDK%4ZWE5#Fs$i2yZxZp!2$AhK%x%WP0?PmA`^ony%L} zL^z(q(m$#L8SFA(;0K+WVyxu9LBG>--~bHfTzLYC95 z`M_>1scwHjCB9~q*@g8x2dk97t>b&@25{<6Mvw`0-asc>hKa6g0y5yaa5ufKMYin< z^}9`rKoW_KG}X*Mi_Lpt|3t@BJ071jKZthb&8j+nII1zjB8Sy)(1NKGzCwot20dM_ z7U?Wbgh=9VAOY9-9%AoW(!^3dw51KmUg0Kk9Rn-7P(fbqQE`%yV?GN3Q6<yX+?kP0wt)RQmxR-*S#pIoc6@QluAX#wi?KKG0x|nGJx%vmV>SdnlfF50j zIbH5!mt1sVHc3&tTmmmNNsQ>k3bY+Yw^W+f3w?&5U8rxmt{?R{*4ATy$tlPokdo+m z@;BL-v5xQhl_uM$%#(kKp}W1%7z{~GvMa}qEVHf!ad7N)IQ|mMT2(;u9x{F)c6uJZ ziK)z_`FgNqt^-LPcgy8jf3)Rt^hDr06J0z{Oh*?ec?@4c=vaEK zm?M6iPFUqnFM%qe(H2G{d!2h?@6Ze2vVp_a)nw~=AermvlM)Ye*pkGYti+-c^Vhd9 z2K`GG*1XHd{^C+2-C;nrqgiP@Stq3;8?j;GGoQd}^_a$v73I-?PDm9f1HjwQIuQ=%C zE|VmTvN6^N$U#&2y}E9JP0(@OH!Z^1){ysYzw16$Zh-qsJSLVL;$rliZ~0 z7ar~I%hkkc9LWx{k7VVC#+Pm(mDIZ?gkF5}OUI696{O(Xkb}S2Kl7CpZpC32wgQ_U zyhOnxt1v~R#qaZ*?RY{8&L^s3Aa;02+j!gTfj1D5K!R$@k*yypaKXs@6iUU!OA~VQ z2TwEi$&C>NkFM~PZUQH~$99pC_I(m{b>+q?v_izpL&5Vj^VS4(JZ3=nRlF(US%r$O znNnSXNvQX39j5ufa`*cW=RS+`jxdc(@h$^X9>6(=M`ODjFrEt!$DIw_dkNz`1h27$ zPga8OAHLWv_>Q9_eqwycS#c%r{gf^S+PWx%(cyT!TNn0sn4u5s6Y!1?7pe>Q7VcO_ z*J@s~N!HpiMsbczv*Rx*dy@0|=GVlvyl*anh~WkN#>4_oEE9ccgjt1q)pwT@iwewd zVY(1*p;YL^d;t0I*J%7k8!r;F{SJIbn^n(CV|8g;$70A*U(z0E9)~_{rMVC`R?7AE zO_~g71Xl|$M*znAk(JC4+DZ$+zh*8(74!Fx$)CDdqmO;b6PpUD@M6tixxly;SJ}sO z-!nlA$lSii$lkljDPr{)KcHgNc2TwPEM?E=-MY-l5)l`;Q z7_s>(^d!Nqo6(O+JyZQaa!y79UxqYKAQm2F68) zIm_LkJ?uJ+h5@}b-6VR$LAtHCes6#$T;NE8Eq_GuET&i6yU#TV0VzNvr zm2ekOj6Y`UGP0POdq=b<(Mv!SqtV?fv#A7a+rQ#1GEAU{bKM05FS6pKrI~ZZwd%oA zzJj}O@B`*j4oB;0Ld%kT6ZzMZOvb3`GS9@#DhV?_Ht_3AubCC#cU#HHWk^6y&THlo z16BPTMKgADSZ^5({YvhNgEHjB*8~#yxfK$_86t?n2YF&cF_3TVc(zQPA38^SFv^@8 zLCkoSA-=3RPweFrpshD47HnhC8{uGp?ScjZr*)Ijc0D-}3#Xg(lx&B0Tx%aLwqo>?#4D)W&?<++Q0G%EwH$}XEi#TL zekH1KL+~jIm5Y{A#JL&Vk+~~QoEj4e#rmJ3t4!OhgHSvEK)YiOzY6oWxbsKcOdV^g zz1B|-^R2DkV9U)VvNvK~U6)^JZKL@tMfVlGmY^*yt4_P z?G6I;_-q1kJ05?f^7y3ZdLfG62N<2#!fl&~5MJMJJU0o)Jzr3l@@>;_!1=ulJ=sL( z3g?U~lp-00(Rp{<*}qpIFJK`*96^@koy>eM*g1^H6l+{p~C1|4F)+|9@R#G`^0H-(+z6 z{!>-OkA3v}lZ=P*=pjrg)?XGiUeqnIJUEI))= zfG(Q3ohZn&2-2`!zJKhCp4e7Y(&e87mme6rn_uz4eJ$JveKCxiz{=lCe8zgE{jFH) zc<~RF7l-}%6TF9$)A5RMX1im#$FT{c_Ql`>KRd^S8|5&zgy9e_{ZbPyzB{z~+q@L-{3qabf*KP@e87eYyD&JRs-1|5XY#M%iHg zd-1(02mv?JUO;$2WL}R}R!rKUpYa)XA=`-hDNqO8&t?B(RHJ{eQNZr!_8#u<)Aupn z%j`F($9VrHD&s$l_aPhoa~J1Q#0yijkF{Jyy~nfp`;zS+vfDR*2MDtGEnxTWxhQ+U zq`KwNZ!P+T`x=LS8KV0kCv^(4>2N-NQi?+SwAsT>7f7cju+)=3_A@?(Tu))E6Uc&F zANa&E)9m2?9fCh&iy3W#nPCHbcD`wB z_9sibe90MDH8^B`9|2wWOvI0ty=K0FC4g_-o{V^u`U04&Pp*?aHz0a#qBgqkXQ}bN zOpW&vF5Am^$Efk}^8*O7|K{>~1l@53uglmJ{V2oOj9nIjAg;dao(XSo>~a~qED=d&`TNg~i|ZJiv}1-!{Hk(%KGTa?bs$Zk*HO_kZ-np*>)=4^v;s z!&kf{<-t9&Omo`xm>q=lch1s?N`*|L=l2)*Wd!w>5l$r2ydJIFWPjO(Pn+y7X-+fI ztBDVN%zq5+Wy?!_&*!jf2KL~0-^+uENqt|lkM&tbdSRQMTIw^2DhG=GfC5tMPT8ZL zxMLCgczBSqap``RbjLonnO(W>b?9~b5563>2HN-@bY0({Q}Z=&8<~Eof_%LCqHF#1 z=m&m~|KPX<;fv)MtSj1!Y4j2+rb!Aov*zgD3gr+jp2;}k^2;qwV{uav4 zTDt@;d*^lXBYfnAqim*f`}kzYcV#rKTpP8pym3@*{XG2F5Nz~MEe_Prn}C1Z7bx_* zu)L-=Sm_PddmDqOuk#+HxwpJ39BlMX^H0=glzHpw!!=bk73JYb&0KV@s0l6%R%$hM zXwn#I2!rU{#okcOyt?vQ#Y1DHt~U=2HI+8+#pQKF!yvPueqqpC<}dM9fv<6jn=~E$ zJ%<8Y(@UpL(t1wQHNget^MfGU7z%r<>Ko_d-^c4Q|BCAJx_LowLt}kKFck7u)-+No zqg(_+!7wIY;=%~YP!Ru4a;2hqjW(pVk~h`57Y~6G$jX)w4gjR-&+hdD z{r{=IsHkzSHmWkXa8zBSw$?4F+WJt?J2Vuotf?Dn&$C;OjX|g+SP_;6^^x#UQO`k* z8#L1NhmC%}{ynY98;VrWI;tYIu{UYU<{B`44K> z%!@QCz0kx#r5-c$mWRCuqmo_L7_1652E7rX6Rr+=>+6EUo!&Kd-f(qI2sT(-8Em}3 zdr<^N-WaSaUx0Rv-pXKY5GH8%@>Vt0FObnjjvQ&Tr+p9phJ>=qYJ=ra5tcs2?qf3L zwV`_8Behuk?x_tu*xZJCVY0AWEd1)4dDZYR4UIMRjWyxL+1fboVc8o0tF5VKnsaT}{P&ErJ?OSHo(nm4}A%Q0SWa#!78L`J%~a5(w7K3s=KE z%quHL*%-X2zNSvAs;#fDoL;jaI3*I+3be(+kah+B8&c^VGS@rg3h$81HLc7)d7^gu zB6bap8gj*mAqz$fsT>(z6xPb;YBPuEBrUHNMPM6H^A3*h|k(#hwJvlWG zH$8_Ib=pk|L(ixypNrK3AuvjfvYje4Vh4(f>L7Y3`}ZQwEvN~F;QK<_bpNDM?~rm) zCj@LO%RA&sXji+mbm}xJ$1c6SR{O${g(F96)27UrT3l)ueK+ACT5-T%I(fQ(@`Y2t zZ#U3q5AO)?v`7QZ7pe=F&kK$7+B^*Rs_}+omA%34D83xe<=-e7Ggm?G!(mv9aj!tg^{nZ1I%<#2k8 z=%B}y#Bsgl5xA4Oa4N>oF$OEuplIg{hgn-+H`psIs1W77rlz(Q97>d5TpwxlRzw=% zr@~&xU5YxhFM}5ddMoR_Xyd)69Q9EAykK1ro)bn8T+mR9hYQAK4=c=9^p)nbhnlZZK^q}%abIf5p2UiMa3#5u}z2%WESN9m~Vv#+tbi zj6kP>#es;4)f1_!gyE@K_4Yq~#J~p5=v&1w$jV{Z%51 zkYX$}+}ofcyKAEd_+TzI#3TODt%b&AXJd_y zs2uJcF`}{@9<9!HB`BsbGwhLqV~(oPNbhAd<`73b=vE6UQD|`pG8+kUND)J_E2@hu zmSSiQn{=MhH4qwt;eA%D1g+6 zg(MAb7~4~%eXhNZT_?(61Es}OQ#?$ouD?bp+a6icPXx>bHFXq@Yv%+iJ?&7Eb(pKN zobF|rTKf&S~z=2c_ytA%fSAvkZ$xe=0t@9@`oE0|i>REZa? ztmo>*5`=lGG*%X!$UhbAnZngbXe@x>19mQy5~R)L(2?Bzhag08HN!as_6tKD?=n;k zXfMX01#C!vfmMnD!eDQ>w;md4yrzcyg@?Ka7AD(Zr1wJTIi&oC?cf?0 zlp~a0am5uQCQTYqQo@y)?M>wtYA|?1R|*qGSb(#xZ(JZN^gweR=_Q}ofYnuU)6?i3 zT34Tv)X;42&;UZII2xJ~<0=S29tcH|#=4OA8hS$~0Sc8b4v9EsOA19aW?wgNMCxhi z0pnpfQqA^GK>S*O)jrr;l2Tc?9<}w@?m2UUerJRt<+a!}f}h3ID^|BSX(R%SXN|~@ zVAZM{Vi7E7F(MSgrfk+!wnCqwo<`cEVSj@r%4Ql zCXXo$9?-HYyCmiJ|mu1HEjAb|V`!Zx|;C2w2~*7YC53^x}<)r+?HGFM@4-<2Y}?KLMw;vrDH= zoy}7-|785@03~+1|DXH!o+QrJ!sv`~CwEIDSUJwwl7;C=>bz&c!&Kl9qK^4arMITB zVm8=;yOVTTyG-ZV#Hl!3K2Gy!>UV54`8C_~wEja1&Zty>hs)zkRWSsICZSnc3Yw+W z)yoM@UH#np%EdT-m^KYs(Rd=ja>lgMsVKenh3Zr}4s~)AQ#NJtL^dp*g434b>C#b? z;|4iek>d6tubx*ul)_LO zQNWBLp$vDmz`ai^Ac70wuS%!dg)^Mj&l6xI7jiJIjzF|@Mhbx`C~iu8${?3+|78V>lUO(%k-Ei*O-hB{J@GDbJ3*@|Q30YXwo zYpBZ5sBcBUd4#P_@pD-GUz-r{;n=LiH}&EPff@L+93Cc4EiIj_O)V|aCQO}j*<`J3 z#?-PvsWv6xzqC}lqBIbga+x;0)ECf-ukcOQCiy1fV8mzl^j(2DOw^}OoQkK(^=ieY z7L5~?2mk-ObjJB_>He?%dXMAKSvgD1*D1?vxZtXuc&GmVSJ^r9f1|(s zf9%(r?*f|+|5*@z>hb25pNL&9vCCz4x!f*)WtacQF7L9-pWEfVcKM)PF1E|ncDdFr zH`=8PdXPVVx7)pFm+#u;KD!*Su1ItgT3V147f#oj9-b>+c@T#6&{N@GYR z&Rv|OL>>C#lU}%C4?lTqArK2K`Zfwg~-EKD8MA2WZ+xTqPNU^0&A~bveopP%c8* zf_qylQ3i0WYAwobxc{{a<@LA{*oksAt`6sBYT8w}(m4iYE4~>t2jwb!32Ft(-M{YY z+KqA#%1)FycXV~}SDfbDiFPR4e~bB{^!^dA?s3I*HOet4bMEcxx*z47|I6Nc$46Cd zVZ*0{wG^S`i!YTZ`CewheRXw*QKmisy;$4Tz6^UP6OW@^D9c|# zdr($luS8rl{>vMCeM(tkJKcjQYfv6XS&Q;Bl!@;^4|Yctp^QVh3uP+G!zf3htVLOb zGJrQ7)}Sm$xeH}A%0nn)vElYJ;!!5zM=`2VW}rNdvH;~tl%*(ZQC6Zf{)4!q44^!W zvK-|}l+`GIL0N+`HU{=l_CRTz#J?(_Ohq{bWf979l)F%FM_G&VI7;Jv_`woKE4MJr zwc`zQO{|&FB+A)kM#U1}4xa*{(d4~x_D8%7t<$iIE6+t)@+?C_Yl(aoY)JC(+e zwu5`6b?HQT^5o)^UQ}0iKM_M?Vz*g2O(U(lVcDh61^O81*M`#xyJRFhpO`)T4g{^n~U3S7Vexy7g4hzXBf_?&JNd9=x zzX<5DJ0^CA zH8dt}n>`{XaZ7}?rEyFg`X)QZ8HS;6jK${<@H>~*)%j79|57VEChih@SWM#1i0qgi zI~wK2q;88G8k4alYGO>KX{~J>lQA?Vb!beF?3hHbLImnYQk{&WvB=L~@Jd<)5qfZZ z%>}*|_%l2tO4?ti{39q3vJd5du|GVf+O&sQr*$CLYtJ$2!yG-2afZH2*q)ti&yEN< zy^ZbJ5^2q89MfZHSOZ2!TW`no$O*%!f9>E`9On2@%*&8}r;E?nm>Sc*vC(P$lXwq+ zipA7-bzR+Nz|^%8MgbY{@LarQgh4tGtszJM+N4vsX zF(x{%0cKS6_y(9^(P!5eV!yP)Ij!iLy1FrHPxAuy{?adFV+yPhXf-0+AT6X^0SObvuIN zRPF2itF}t9wuL zLi-V&r2RNLW>;hD)&~9N&JWCk#gOlD2jcj4OXDApzzhhct) z;vC-3wU)Kvv~K4{+egfpU##4iO1lW<(3o1xyUe4l&|maC_T}n4{Fk_nh}jik{nEg{ zVbRvHm;({xVyYviqZ|qz=%T*YpfB-QUEOd0FL_yMTLq`}H#<15cfp$TIM$l%Ht%3w zW&-~P@L3)bCGiu1H?St{+5o>8_&DGj@^1w`a2oz9;HLoJrGcJ%fiDL>yq{_J81UPH zAJKsSBj698hW`)X-)MkmzO=#`x)%6i>IuzPxxqZok4dd)&>O?uX~Y-+k%^E`#9F-Q zZ{*Sa^=3EvzXNh3A=j{72Z1j-4W2)dxCZ!!^Tlhx^ICxU;2qTe74W4E@QiH)e5d|2 zGKc2R(J_g0WzB#|Pu7`zz(;#Mm2Zo+02KG2{;{BM2fd;HbAhjJV3+*sfIk2{r!Vgy zeh=`wfNz*5w*&tm@O?aHl;nR3_~XDg%(r)d{|xwWe{#Y9Bk;z*>gr~qaL4no;JRlR z*F7USZ_B(nA||l#bd$E&&1`~vh8|8U-q8-gMBrnA7ypqp3mV5b<7o5$KaASMfJEWA zmR?A_71Y#o=|QHz&4s(ZO$JLt+*Qj#E322h{=QEf1WU$X!($X!(w7f~n`?Wl(ODxAu3T)3S zo0pv0H@)w`o-ReMPuw}goe2&Xy6t;$tf#Sl`Q!nd*9GO6-?YTFOV{vvj)-W4mwzD8Xfh^8>rybp z?kIx_t5Yn%odlt695Jh#0kcPlyLoclN3fA&y@Vq6K2{kaQj6aS_i&zr?=Aiyoa)?%Nxj9NgfpCtv4Bqz4*0&ItYNY;()R+I(!!KV zfiI2}ODa=*6>z#mgvq-wMLz!6Ws6AjUnoj_AJ8esq_^e1Kj?WAsZ{tLql+*^ zH=uIBSHMaysZ{&UW~H}O4*6!W(nl&azIm+lHIpIpppQR4+#*GMJM3FV)%{HV2lZ1% zWB$T;s~%B1(a5-##vUM@!H8E&gS})p|3M$PaD?+bRJJteh2!wPtqaE*jlYDB7W<;+ z;N%$BqKbiXW;23U6EvK)bmba`%yA+a%<0U(yH2=
qwBhha63&Rm_`+hsvQUXjFGHnSWnAC_@;-$i#*HKh$0)rYA91&t zVV#Xsh#RvUn5g^E^w{_@&j5C=1{^<*pyA9SoF`~B2@G z1>^Cv=)U1}Zwh!eJ0rqrgT}@e5$`x3LMXnN_$JOee8Mm-B(gjAdn+arG3GVnF$9kuxNe8$pz6S5+HgJ6@<|M45ycDDmIf>qkt-LOuP zR!J{02ed#ENEcn_adbq>Zbqd=%WdeM2)frd?gt=RU5mQe>UDTwwMv0myHyU%Mzop% zVxv}mz>%%KiZzVJt?$G)T4=Pn3wgu7$c34rom&@wurH)f!=_On8X5tDJ0vFyRqb$O1m$QKBv9Hhd>M#+h=BtDwSDu+p&j zgTd|k4*}7d4`14)(HHAEba}ghY@)?KS7_hiB8Wus_1K8^9r@EB&LMELPudF*Jgbpv z?N@I^B{sJGiEmIgABxOu|8D^wBkLQdh#f`7H)D{cMl`)3QqwG&;-pAD%7~`P4qn|h zqS`@CZ2MOS0p)C?p0{`t4Q}-WCbs?86(oEHMEh^u7?c3fzLwrvPBXaP{<~_x5zcf3 zxBZX8ZbY-?TfwMSqn4rGuKgd!scbEJwEZbp*&kF^C(3*?Xx%XBV1zG$tusw}>iC8L z)!q_H9MYwR?j6NfVuzBBux*r(Fh^ts)WOQ^|z)NQvzB)Fh8-{ZQ9OxKLIKr8X z?~Y9fJI*7p*iq)9CeBJ|>lj0PtkV}RbZkbrmD3gubc`h&=L85hC*02Ao%fC{2q!wf zpaC6QmjUkKoR4^RY{Q8$)vzwdkhD8m=->wlr1> zoP>^WKWQL4eTtKCKQbgKos}Xd;VU{Yh?P<&VHCa0V5QtixQg!kSy|>o;SVnXFVg z2@$jtU?y*O5(c5!NkjAD;SML^6nY~mn@>G=ISJzs#-toNdca9YLmwv%TMWu!%sB}N zYU0@C5RLZ%-0pO0Lk&(5G+~IGSxW(_d0cB95b9R2zMu(>6E~cPCYrS1JWa% zdNc3^(j%Svkf*@ykxqR{nCSLMrxa2qItky?Tq+wn#c5YkY;@{B4UMTpJ3mCL6DN|* zItFs$rgy+f(rgHmL3&4i?^dFZariz3k-kxmnQx9^58*TIk#x@uTm(BRIS z`w8nHvQ9q@s|az*?;t|W4t3to?sqOmDs{eQFBLhwuJ3$^u;bJ;1$;N*SSJRZ*7;Gw zan4D$<5|Lq&K~4k=YJFK;XH~)c7C65sjqDfQh-${4AX`>tYTf>hS{K0=c_&z4H1ZzRTK z=lN3E?t2^)S?6Wu3oyFNcLIaG^J>Aa$uwyLEuDHHq5I z0BIbN)+BX5i?m&s3&>**NbbXN#nP#UGFIJ|BmF|7uf#nw~i5%NaI<Z9Bjc#|q>F6$$H@9$* z6tA3*I%!G#6&RP4{3O9{x&N#n~{CQi9;) z8jm{6(ZIV7O^%>Ly_S}glE?=29Ex12?rNdbR0jH%6~`E&)N8`Z2Ce#|qKt_8cQCYXZ|o9NqZ$ zm-tK2h2(Zc|K122mOMC`E_QV%LqwVjL`e5iS9i*GWUDX5mcTT_0CoeDVuyMv#SZn9 z3-@ON`1;x8@Anl9DxCIDnCkZ)(#|)+=H*4dWJXircMu}qNV_BW`~3(>-zb6m^q)O@ zuHnnJ%jmR`b{slf)D{<&_6@bNp}zCQPYI5~MjGxvlPt~a zj1)fO_uc2lCJT7C#rH{UjFj8iob%m8SrMe3FNxBV%P9~gQT~bHr?8Q7H!Hhcsat|l zyThb*he^4xG2jh&=DRw=e3=qYQ1{glgnKPsw%UV{z~jKyZ3Tj0w&JSFOhA_aBI%?eJMNmUp#mJ6~6 ztqNXgbjIs^0LcqS*mYe~Y1nV>4?5we6P@RllmJbGt`jno_MsP}i9`#spwB86+s_4U z7mIB%SWK*Iu$Y!$@MU0{@^Yoylbp*|bKIGQxNJ&VjPq60Y8e78!5g)jdXu^BEb3gw zEBRy0A_{gxJ!&mwd(ZWNawFoYe55Y~iAVZM0J8~H0(b?$Af9tyD+~Zc?#VZ#G9QBX=>tGYMYm+Usq~Ncf?*KP zRevf5Nh*h#^8+P%fwT}3ertR{@ZUk=OmmXG;*D6t7)(?o{K?z_>oQz=w8rPdWO=Jt;;eqW$-gLzxpvlr=zDXTmDZC4yrN*3@uIYk%uQyp#j6B#IHs9ZhB-`(0ES{0X6jK< zw=1B?k`s?PAG+M(GMXuC3}p9LYZGM~8IWex5Alf7ogiHepVJ=(@CSjX0i1(8O@9Tz ztpwf$;6rAoe-5A&K<0k|JPTlm2~*C50Q4C~;9eN}Ud^NeVK%pXcw(0R6!6W_ul@+- z?6c49iS=*9o@q`r!8?>07^~!93e2!FDbExf4P-`ZWsnpMaPd{3m?D~MW$h&UPrxq& zd-|6ExPnhV34lKa@1Lja8Lk6nf12-irddcIvd>fMRw&~!F%ECM$DoDw?gJaMZ&Iox zFsN~)CJ429V_-N;+^ZbBKsEbXf6|%7z`sKu<^V9zm+6xMbYZ9Z-&Fn_@n)jEyLuyC z31Bc(D=81801O5FgvaCQ&Y9*EGsEzIt9(;k73M&Max{F3od_*BddWB38DiZ6HR;np zn+fB&U6o<(KEv3n2GZO>_|FWZ(eMB$p(?K6z~z|PsL@peag z!N_f|LFa7oqD!^bBc`5*8-V}V!}q|=VE~>fd0DOrgH1XphmAKbIVpV($PgsT&YcDZH7M zBqx~^p0YdR^>$#XvNz9}QT@hI-w5u2jFJa2v6BMC7_#LPrCH_g#Fq%5C+b(qT?QMY zMdR<3eV$dZCC_Lw(fwm^`jSc=E9L!+s6Q!q2uq_e<^8pG6t0iKZ_Q}+4mdEl7WyV8 zA=$nJYg7x9QcDqo!R44iukVOo+1<%AXM1xu!e;N@wQ=lDv?;2CERvR>R|lU2V+UNM z^pg`~cOi_G^Q8;7W-8C3k{+@;J{R=>uUpcz*{LuY)!%$C0V(2OT0H?;9+8M4aea!|{mX_($XQMbjPqhXXR^z{UrLWkG|#2+Yk+@=#xDo(D}n6*`eEGorz!j6 z_1b8yGcmV`OXJa0BuN13u4R(QMP_F+*+5drRi+Csgfb(0pK3#w%V8tPuEdZq2^W4I z68Q}U#%^i_w}+SuQdLLAb7Is6&^5 zu1>?)bz_$k=9ddU0Jc0bxw>-1FT0JWE5{wfs6$sO*f#!+u0vqUBU8ApV-0kDE4uvK zCkLq0cxj(I$GaoKXCKo{g}EYV>W~O+Q<(iTT~E%?o`jmX{i7-< z7q{Q^+`brear;gH{>Gy7w| z$}*n_a%Y9O&kAv$CD>bdmK-t;B1y9-H-u;7&Un30L1TP|3G{h#9xYM_<;4zgn^jkK z#w$(ZG3S7TlCL0W6FCRXRn}@ocfFbZEpWpV5ZaFbECi58O6G5RO3V>mJ18ccL=9Bl{ZzYXf{VwR~_W`}C zJAhjO+)vzT(NtCytMl# z0ov`_3w9fFi`{Xch}~4xm%b1Id&9`6TDJdPRwfF7>~ zkVg*j_*2xRXKGZoLC=gB2r+uS3;+-D`nWQe(@$eEd>;8k(>sN~cqPaTc^+lkG*B=m|*JoyMV)MMd3^nok9hGh1^?RU;*O7ivZA|8f zH0HR5_y%&+V)3{q=;HAv0`&Mr0`xfkOaS!w90K(CIRKIwwkqNuS81G+27`&C;amdr z_!R(oe@pbe}u#O(k9y1j+~ z-F}b&-TnnYArtz<^nhqCr?OF3^aPy~NXA(J=z0+Wy1pGi9=XKz8q_4%@2Nb(Cx<5X zYZPOO`~d)mOd2oD3`j+@#tTzNoOQ+42m-XV3_yNEZn3)`6tR1JrmL$#$R42z+Wim! z51BN)pL?igBX4WX;mt`SG5~;+#wr4wG(G_!F;1Ng2uCd?mi^?#c=Av%GRAijU~2qE zfH5AP4S+Geh5%#y697q#G*!l5G1b(_%K;PPdlLb+`4oUWa!5NT=R%f~MyAU0jdzXh z^`J=`p9jE0JT6kkU1XepJEuWr#n)t}$HRsJpvSuj(BpRr(Bpx_0np=}0L0^Ys*L-4 z)Z>rIM31vZ0HDWv0pyWGJpLLr>6vnsZO}9Rkq~3g%mEPedY3Zu&4Q@1;y&P^*IUU< zuiqg+uX~IFK(8wZ(CcFa=yjLT>h#eAX*Hx$Y z`Z(y~^)CQ;$fR*tnTw!CCyj)$V5G+@2+-rl3DD!{aRBIX2?2Wi2mp!m5mi)8MXtv! z^T5P7FCsvXj{wLchj^TjuO1&ey~hhc7mqImAjja7kR63{k}Tlv0a_Mt-3#CZSCkuO z1cWcp1Wvq~{x6{Z04@C)0Ou3}coe{k1nvgVbv%HZ0IUa)N14obQ9FTJ&SwDZ-L)GE zd6#2{s^t^hsL8)^(D4>Z>j?mO3uPz(|D(zjyoFM`0jqbpg={$ixrOr4eXe_Fnp5L; zpTu1bcLAT)#ZG+GrF4qa$?OHy#tWjTSr_+(B~E6$Xp$jyCIVncM*_$rmxOdXYLW!; zI;q4|- zV~`C!5`(2w_<=J0O$@%*7--sjrxK}DJ6+m%GgY#UpAujjyH94KgG1W505zFVepA^Z z%DU~l7Bp$!GXUH}rWEhjcy^I>-^E<3aBzM>cBXo-vjH&G7ZPBqUr&Ik{s94|dZ#J6 zTAit3LyE`|HL3*_vVV%fBfeimfWF@YAitr6wBs#Mq_2uqpX2Fs+j5F3*jL@A3PDah zwzj#!YIPJ?#O^r+X!i;L`3PJQ6FFM`GrLz=;;CTOReKvI{prP)N}x~0EQ6w7{GP_ zd1T9sY>D1REwdSb#2Na0FjX~qkvHS7pfWx;m;xSuhSI&~2J2vV5}zCFYAD!M9vd8{ z&;g}+j}0hV7y-*;KlnUiFe1DUc7ITc%L;3b#5JjhEtYd`~!72{)fWjf3GSw zkT~WcYh;?nf9-6I|2+g4|K>%AKiMSy(@>N6-w&XW4{n}RO-0lc-x)`!t4KblgrMXD)?!ccN=m+R8cA{Ub0r+6n>E(; zp44NM`sp-MxlI+x8(9y7owuyeYX77#yyA?mTTH0!ZT<;9ch^U6KE`r)ee~vF?=1s8 zS+-e>kBtC#gbmY1?A!pp@iYhuc$ihb3@?o%WP{I1u({JlgiTG8N-%uo344Tn10?Q6 zeL^=&G;%v^!CWt`BW;?~X{D7Ks$~Eo?T+aPIH#5EV3%p-b^=W64*=wmP0~7Uo~HFG z0Fu^SR1seV;q#@X`+!Okb3T|6Ja+W_takl&Cq=Q~i$34=J1d$f+8mgF<3gh79W zN;sGQmjHtvw;)WLCm|g$7!;XTD1`3kO#9>9fG9=SkP?$mBVmmH z7aDJNk+D#u47F~fFct=$>5YXhG8UeJ9(OEsk+CqZ)Z10kO>$jMpmSA?5ev=T?55~N z2|9P4Nzl6!V9;j*$RnEs`f}7H(BA@(OfOeW0cwhW9Rt&S=)MrG*`PEp(|I10ljn^} z2u4n`okDjg%?r1C@(eKNjw`90w))#O@Ol{YZ5VSckJ#bNEy*m87txl(Ox{X%X4Wuf z)i5?Lzaf`2GH($Sah0H%6g58}DjH@|6UB#T(!1(nHC;@zPcg8}q;sG%_v5gpeGUqz zMl{dgNfm`RSx)~MN(jcOubV43Lz_Qv8YyE0AG-PaaAqw~`cvXO+^L#47}ri|QDh+a zJhY7F;>*{U{O2u3mvWoV8WlW_Huy%~h5V9TI{yaUze8!>E}a$C-Y%U%6y2|6*pS0F z>Kjiyb_v9!JT;4SxO1@U>}cqpW-f<}oQizY7yx7H1L$<$^27xJabA8z z2#{G-m4(1bq?VKMU05%i2H~E{8KA!vMkc(Q4|M)gOr~cljpj4PgjZ&SSC)iVHiT8& zjd#ZtgNZ^8-+BFMh0DeBY2}2{B?o2W-6x7^p3O*wvNg26C&tIyQ@UE6%oY%mdZ|Aw5xvOce zvVl2w``=Lw5!Gc~QeU_I12*0mBMwI*MhCb$sZqN8gcRy#)jx-N*>Zr{@)Zn?;!97y zE4ZW{a}KK973jNiIM`b(N0o0u`K}`MN>*iiZWXHoSD?x_p?p`f`Uk2b`IeOL8dj~{ z#x&WbTs;WxV2jwYG3AEux*Djhsz4VpMFV94RPhU$@(szmZ$1kFXPSNro{U*amoz;$ zys{^}a#wie`LK#n$UXY!FARu&ZhH0|KS>M2fNs1JF+QNQMf+u0Y^HJRDaEs|I$_g;O@Vv1Wp2255WJka-VkhUm>^6nTrBYjVnLu`|fS( zY1}dQ3@Ds}yd85r!f3?f3?*x~DT+r=$l;4LM+b0X;@WK(*KNbNW|Q^WN@ew?RjV`w zoEd8s?XK6BXie8^Ob1=C4L%H)n<6Wxmm)vjW`5ece_1;1D9;t|7Q?!|`^Tlzo&?}~ z?{!I~%4O4KbNqjv66Ts^GC#kqCU^q%ef2hcknJ|lAOtc$N390H`8fc<|6k<}ZnrrI zhsK+jA^a~YX_cE3_U=mhYVWQghuzq~Zn`OS5%`olqpD}FujbHng!6~7MnO2u;n!GRz@I?r;>G;-fm>JGS46Qmj$d5aMc z92Y_gJ8v0C*|dKGJns8bQO5WHL)SufiWDe6;w6V!H9Z>-{p38;LbmanlV-@o(NZ4o zniFTpywOU2U%)J!A=5@{mo|Qe%o=Un+LReGX`JEKrp}N#BTj0VG>n0KkDy4+BgxeK z2AH48A%-cgEAQ<^H!~juuJio40E@xZ8UHT>@M(ZP&B$2}ljihNAx>i&i`0B#3hp9_E+ zthWQmOGFT))^x4X%Lq{7X#&*o1pwJ>`p*XahF_O>32l{i@0aHxyI)WSZ{3UG;a;16 zs04>T?0d|2$;I4dMl=a{kNPP@^KS-s&1)!S1%K(}o zvD2RdupK}i`7>)#TZM6u`8$C17$}*M@V7-JCQ9Ce`9qD?g4Zm$iVpE&^=8ohz9j*; z0Gr5ZjIxN`hc+UuWw}tSByJHiH(oOgVzl<3N&s9g^xg!3%Y_O6vRqiG62XMeYz>-CHhfkhchm;1T{8z+EmRY=&gU`O3)U zLhd_S;W_Ud@NxR!G;!y$fLI~^!Vunn+42xxd5yuEeo0A7!IB%?Jf?j3<($mRbjh|T0BnK>bkB=>^9u#gx0o=7T1k`pMxOR}V`0C-jz zMu3-Qr2z8CC6{CuqbAp#WYo*D}23IIvyDJl_4=;Le=SLfG(Cu644 zLkYcEF^xQ@a~jhQ6Z$A5{1+&_enMBnqxRsF^=}>cjEoh^C<%Q`D@@#M@M)6zW3=yx z_Y${|vwW=zoMcmPdx$Pv3-t7D0QLabK;R+(*8#{MQ63O?J*P8o1LY}D{9~1JvzxQB zLEaDxW0tuxv29@Cg@jRR;akr_iwo4kAOQIucRdT!K=Bu-p86J;@0*nppoN#m(*pDT zd`j(5T7!J2*kL6F^L_PBPxMxbK7V>qPL$s$3F#?^x$aqta;Usa(O;C_V5m?uP6Jg= zXYXr0TE%{ZSZ<=yC}x1do>~QUcbpRtGpbI4E3ZSPs6a6DAI_sfw!YVP2o6$u_*rBS zyM38zOcA~C#r9qF0vxYH#G_uwA zoLvmv1v*2^uMnedR#oTeO-yibvG^M_P56%^61>u#x&vDy&Xy~Z7i|9Q1>R3sHExX$ z499GrE!Q(E1FxV-i4_58#CoU=XeaDz$H8kW7I&JVVc5@LNdF37Q9A*=4hqk->nFSc#w!w@FL3QYQLadSS*c4wPZFNW;d{e=lNLE8lu-2=Rqc&otkT@a zO3x|*Cu>*oeY+EaAdi){(K|j?x`is}DzJNwrC$PyI z)n=6G3XTQFeHSv?ZT?_8}+vd$-+FjVy?!tJsKNtF~ z&1|jNuK=NxcbPW_&`F({@Yd!VKyu$F-kc0DnNC|U*1s|H-LiFZDCXwHqy3}n$r~g z7hBC*KsfEDApe0deit^7T=;>#W|c^y@+CGwe|GT^K`1`lVeM#fAIyc>~105j2WMDrX# z-{iLs8oReuXie%H-FhbK?rj#+7;p^+m2XajxfRHsZ(^=Qg-YC?KA021#Ot{Q0||IZ zO{8OqVEgm6N8j9taWp*p5%^&~XPNCMYFeYhSx)o-rp{i==bb|)!u?)^E%OD*oc??b z{FuD4-H)a`SY8Q#(Hai@X%_Ul?|i>%adLF$h7*$Bc(Gfah<_GF`NE|b1NmzhsX84$ z5Jz8Opz4CMrH71$k(JZ+T&VxpI4t@@RJW}0D;Tdu%>`5J`RB|^8@lyB}3h`3-MFPAO zuB9}&M{$_tLgAP<6fn5HEU%5 z)PT47+2DN_$;G$UGwSN`_FWYajTlREWRbTu^j<;UK}r?9gN=BsQl}&0C7_#ynafZ- z3bxGi0Gz!azy$!>9>8*p3z%Ih+*4JX$>!uKaJXp!CIK*|TLAVF_!-vALCn3N5!LyAJGyIkASR{%X2`qN7R z%qB1sz-9vD0o(|{f1ipSLkoGonj1O`Wyv^RZgjZ!A>VDF+`QbpYzowHU_D1QUnoQH z`dJ38-2HS`2gD(7A=$fyHlsQQL*$>9x@;fmLRlKt3u z0imb4Y{m^Rnz;u({|S{=188y;NC7U`hOKjXPr|U7YrYHC^s&IFfFpe&?S>ka#Q8)HbAcH@4MOaO{Z$C%!^&`)Zs?~&J1D!=oJ3i6!=scPtPJ(L0e=sJ zCyGis!?SyVSwq>cKzkpu>F)#RbTxq20c--`pQa*jOJ4D53$iPEo#7;QaT2?2G&*4b zp3tP>EvX_eP2PuMUMb7&AxX#JZMUM&wRw2Ikv#RL8xfew?Gd>zZw`o~++~*Nvhrz9 z(dUXEdU|mq!@kHB`~prJ*~MO7iZbkXfLP`~(3J<#z>Gyob!U&nwz!d9gfx5tbaQ&< zizuD}TjrYpVy{8Z^GtGu%J7|5^G@>w6iWOb2ZR46&m6p##?|t?HHTd@*9d|?g8Z=pk%+T%5XxLV?HzuuLe~n8;=^CYz}0c zQ~`Ig@gLXfPyb`akhAbt%2dOaerx_fZ<(c^!-L#El*lZ75|m(TbJw015T8hSC!FGs z(yk9?wi_K@ntJL0%3=O&rp#1(8P$laZ%sf5LD|sc)Lluz$>~>f5oI|lW>Pjq8S0M; zIg5Lw*aWokcQbAl@#Koon?nif?oeLB{m2UgX@t1 z%3(fh?(k%HQg%T@S+`@D?wgbpoN}HwpQS8=dkQBrWadf6$eRBtO zF?QEcG9oNxC6V3aV(dIpQ1%1!Sx@#TWn&u3N*g4(dMl}h{q>Q#vIsVrTwl^{p7~;M zm7hmycyf7CCn=RYib71Te&ChlnnZxfwT9B?q%m`0_hSj0NcpNTd%1z~7!vPY3WFf!+Y-+ysMM*bP&0@1Cf&<^;quMl0Ig zr7=`%<^jf67ieq+&MADRR-*I*w9vH8Yl>loiSjh8NTPfOAdl4WMDe65DV4mOLQIsz zn*neZ$|b-=SpXo9T#_gkp(cq!MopBf)q#eIa=qd;QRG3yV;cezDuh%H^UpVFn!R@i zH2R-cdi~y$$BrK>DL7NtwJL!q=aPR>^lPQppG#(WVlp({i;wz?3iy%z%KCt~16^{= zgXYX5I6?jl%^B}1)jiYKw8JAK(tiLw;}Aa0)v{hkv`3%J!ztB7^a3`RMk_rP6yNQ3 z`CPc&3izcE&Lc7>5jC@*fT#K*WlmOCnr<}ZG=C7xa+-gO08jI=x8OA2kX=smV?oJY zr;4Cjj&U#>I?a33D5Y8lGB&Azp5`mG>Ye8KD;oTH5$?!I6)Bmg3zf}LMZVkYTiHPN z%VzlDpQ;SnFQNAi4mFg#&;E##OokgNS)&Y^46Y>S_W@f1V$GZ1eUICzh`7w}&q7k> zci*i5IKPhu;LlYNZ+>3|1+uexoD#~}IZwK~WtUK5h7!W9;~_rS%1Y5?8xdDr3YX_x z>;mWH>=&TAJm&@h4wVnC1#=A?%d7$B1}M#FveETiQf25GwDdB?bdVOohqLX^*cNVM zJ<2BV2Uorzz->~ow}CCd-*K%`xkL#1=GZCo!Lb1Nba13k2QUMG|3&3$B9q4?IJ}yd z@Qn=ec0X#uqD}Ya_S%Z|CZh$62C|7ybI+13!*5 z#b-y~?{eZaN;|Dpu$$M+MYg>_Z8g4KZKV^Str-CPga4mxwG7&lHceN-O17!OUgX)? z=-Ii=v-1k=T=xHLCn0D@x-NIS+eA$1a`-0MH_#Tl?njzn*TvldfL(VM0QX7Gag__E zZ?XL^%JBuExn$>)oE>D(Ez<58gm`}s9(G>X{g>PgO6UEV7D!8%UXI?dcUPAixn9`0 zuPIgNdL@RQGjd02%Sp{^NcCSEM)gj~{FNcxQ>Z~?&s~oBgg+2I{C#{4y&2thNF^po zI1v2v?HkL`o(Dm@2kpsk$dL0CC}v>+Z>T)0!pSP!bfzgcQ%*1?%D7r8zriKp=MRqN0~xX0{XcRv7T_q7C= z-TwyQU!Wqv{hKw*xnfx_KbIzF4$G;;#KU{+i*~r`YZ9UQ-_}CdPrn8D*arYy4d5CA zy8*lgAdhT0_n`*=R^&V(z=86dV*+5#eM5kK<%3UxapfW~e=Zm-_Wlc?@q$e8tsvId*&v;Ps|z>Yidhqs@nnEm0!jtkv>;(ZZw=#0a z_Gl<&?vM*Rwv(_|Nl($tESJKp_njZgw>2umylSWTvIDpc>*C#^D(RKmU&-85cUMR( zV~FCpLmjg)8u%y%SLW52h0D>F!PUU51SaQJcV1p0^RlDEy$^(V_!`;6z$8I=h_PS> zz2gNX?ok9~fQr-)N+c!_{9HqLU@TmP|9Ejg^o9+>hyO=boBh!EF3QhPT?$7a7eUQN zZebYZW|zX@=AWy04nqbUI3wc?&0GE?K<+DBTpzeF`9>vmP-dzxM$tJMzSifseIyK$ zo`pIpuu?LLUQo95Ft&OO4{mdfEeT`5)S3G~8m*&0xAFp4jO{*OMcKN`70+bwTIcS) zO4KIipuIeNm)jphQ1)IGqMu~%RRw_jhMcnZ>IzV>(0U~nHy1QM8N}f5RoU&AL&49W z{X$Lrx3q-E0K5<2EC5CUFPz$F(qs81hwoZjE}BY&6$~c{@S>^YpJ+<5vg<{Y&N&mC z;{RCWE}n%TBYSL?^gpK?57@?SUX-G|qYX+Z2~yxfa2ne4FZi91zvRaFpJ3k1 zu#4eDxf1x|J`c0%s`Iqpz`;EeOAdQ)pJE)K4CAk@}%iw*tr*TT- zYm;~G3ZUx#tfX0Fe~vzqedC9~Ap6FDB*1;+Sx5EOx+ylV zT!U+nl9zx@Hk`M81}M4T*JF1;bOd!xd4{@pi)R&>{HaR!Zn98U#>;9z-qg%c4sS;~ z#NFSK-mip{uxzfdN34ckzJhcG^vcf*Jxv3TC|B_3g=)fnVyP1ANuT}h{jQH(SxZ}D zyWlMks4JF#NvN=g!{jL_LmmH=;MNB|OFt|G`mkCEKnldm=?8zqewuLbx1gR@j&hgd zYtPg5;26dqgYy6I7cbXi#?v2ya=rYfftP_+=r2#MhMHH|>(;<_7Vx(~b9z4jG0y?$ z3LqCi{wX!n7QXWk-nC>Q?{gmSR{;ERmj#4}r{Lfu;IkV&;G#Lyz4iD8Fb?G($|R}` zE_dWGSKH0bh4%TNHG3YwGyt;*m6`2)m1jpKD@MNr1dT6XwD<(A7?xY0A+Rc#g z->CGzjx~?sc(#UrN=c5jla#zeCF_l~#ID%y3^o~SJ&!?D#@b2c4eFYb#@2GIoew7e zXG*U()-F<{jI~;=gpak{p1T6#94}(GLLn1VR{!`K&;Ps#?Q%Y_9)G-|>>F`bxJB6Y zN5XveTbjZ~ZiO;k3?{xV7u4C`$k?W|{h;Mu7smKaIAf}jyI8ZC_r_u{yK{}OyBY%r z_rCVPlTAv$0rWmXS5GWwhLPb-AH2rTZF{-fM$XQYmDSy;-_OX+QX=(K)Yp?@WE3cs zr#JtyFg@O&!F^G_+?n4Pi>j_Iur+Z)rE)dHDU63%by+3$SZrxdBF}q=&|RZ;MzhM( zT>BSMoz%*!PG*%GT%#xO4-j8qwI@0`dcrs;3%rEcxBwZl6*{No5I@a5mmOXwzn>mG zjhj@t)G6eZ+U@F0B}Ag9;}@dc3$=5hMlRI;L4X%(aW7-#K`yyan}eEMsO<+J7izDn zq8hN^LhUt7rE*R32^i#>#CIG3FVuzr@PDoB!E2Jk>(GI^d}r+O)B0#Z?&F?X#P@sX zWLV`ARIbws_67_d-gO$sy^-zg39vL^OO6bn<^SKJXD0(OnwxuFa1C6+Eit(KEO~lM(0B@jG5j|wxB3~XlX)LIQB_kUdcNE$Z}JM-#arbW1hxX01;D>WUHiY^DldI3 z0E=weROX5?h=%&9p^id=v9dJGvtn?QXYdZs;HxxPpc4OggPA&G!W94M%M(Q7<%nLi zpQfrn`iT~H0ciIxwhcfwfc%CMf5VILCU(PL|7^s|Vtg|phGNe2VJ~+f&jhx6hI!i{)X;fpxV4s z8kefL(CZR9e_&K_1(4fH`;IU26u~Nz4$r)Ddno!Y%mkG#nhlYOr*fU)&sO@wphJXX zj5IuL!KCD~&k2S-dzZT6W$0Vb=4R-UP=*TF_*FP0Kc{%F%Isn=mi0%RWWCcD46@#t z2EhNZG6mN=;)1LsTtBej$qV`MO9MZOq1E+cWylW!FQ*@VTlw`b4%|xvpFPN%*>RPj zG2ncNX^*`-zELwwa;vRkV0J0_H%&IP>c;KpXU=`#;No*>-l#ld^{_^9XLVhjl@?dm|+c}0xo6Rya8{gD1$6zEB+h&px93+3Ha`{mW;S zqmmBvwSJ@nynlI!c6tBu7y;hDtOa2B|5W~*eH?S%3cw6t6nn<z|ljeEId5R~-bv@_- zuQ_f|BPZ#>9&0uelvhW~;DO8*SJ9QHlq)z}{PpVS!UqD-$wRJoJc(FXGWS}WsFzne zuR)z_`8m}Ya5>)eEdT6T?)(-k|N0lpf4Sn>AGAEU61wd3y(_Z4)^He`0X6OwnOon8 zx*=CZp6(iYu;022f^wyE5FB!)<9izbuZo5M$Umj7w1qqm;ay1f_dC5ye|uFl zTV+l%LRVU)7r;2Lims&>yec|EfLBGI0FXD=OH~AYEr*$T5gWm&#P=?yk|j!)sics1 zAkJ4zVow;!d4k-$BI*ln{{f}x6_LzbFvL;kksQy^@ZTuPOQQJ{tyapx*Kh@HB2oXGAbgwaVQ!=qO(Vmqime7^f!hdyX3N*4h-*vm&kxh(N;V7nHW*=vAm^Rn#*Q>Zz~(VrxG}ny;JK z+NDBWf*tT?&{j9G^;^(ZH?cM2BLv}Kn61Yk5FUj8Hn5j4+Xo+eVQ}l~P|td&p0!XItOwnk;awDYdEMmO0>~v3#A4W;r)XErAK}Nmv;OQm%{Ga*6UScAa4Oxt5k8YKTpvo-t^f7 zt#TXaBmq9bAMzzm3w%_64FNu?e+_`#0eVUGoa~8EFO7HsN`~=Kz1;n2{}lk<{h0v3 z|Dm$FKT+V_m*WL_A+9NLf_Y3CYH+&w9Ey+(@@UC@Ja1IFsp8%CSp|`KS95My5fQ7j zBH(zKRo`6-tMW?k3hBKI;lYI4UG5rioM2sE?Oh?S_9lIem8HDYyHZ~2-OM^(_gy8@ z527Z`9j%69d%1Sm5|KF;xMbu-vzr|OP);!xVpT70N0z=x6CM&2xb&1b3hT^ zI|xwvR{&W%l(*qIBy4%vAftHSrur{F#qWkz-l^$d3xIc&HW1)Frgs74-`db8QZm0& z-t7b^{ThI*NB@UU;Wu)^=PqL)|C#={N;P%EggE8Er|b zRAwZJ9A?!9FuT9BcTlDXbJBeNUO0Gf00%_JuWba;Tcuk27xBA-;NSwJ5`U?0H*m=r|mdN3IG(wiA-_hU%CCc*D7|%b&_8pN4wOlEo6s!$e zI3gC#_`#b{kH{b@LEW8D-TITLXYEim4RbBye@v+Jeu{w$FGp0XT&S~pU+#6*%Np$& zGkn534((z;_oeqIB5G6=Yf?GPs?wn72^F0nq9_R-t_v6aP%Mp z^o2NTToaHM_K|O9Syj-{FT~OB;fU+l7vku|pWs-6im^{BA#i%f+>>lppD^Zn9>JB% zdH(%DTuD{7u0dCvyH$x~vh zNQFYFd0x=gDX~=n-R@fDl-N2-kqLnc%rU~wTHme54 zXCHpl4SiFZ7S8)T&RApGA4r9$_~(Vw`%j;yH=?@Wj41q~!fpS8<^^*J-cGQzD>U=d zdahZzIvT$uh)6yPc>Y7H=Qzp$c7DrwaF`Z@f zHNNR7Ir(Gr$D<s=`(Q2k7)d#_%uIa5-j}; zU;Ollx5~}~3qL(}l|^HU;U{ik=^S(xKh0a3r5A&fpXRkz>E{R;Kh6JZm99f$_~~Jp zWmjPQ^V9vpvb{j@(|s!La+_UaT1MM32{Fyh7E!ThVAaybuw%}Q9vnRiL9)9T(a~pt zj$}~~zT*)?G?G7(1-YVHns!WdG=)r5ou)wz8DR5iwb7`StTy)aqba62swE|wBpIVx zrhwSA8vw*nc_4z#3@y!&?$|TJD$PTN@J2>Aw60}@crvP`=S!;|@TDCzw-x|_X(Is6 zNM}SqRfsbVjc`JS;-yWEJUwk;%5kH@MkItRXFyfEFe<9;TbteE*{%+aq&Xd>c_1YA zHHXBz(d`~Ts%2vI0AWjN6bu;NEf^#+oqm^b3kwyu5AHoDL~K2hS_Erg&h8tmRT zs3{R{_6XW*6mGAl+LQ41QbSVdJs`|#pJ-%VGBCk(=o{1rCp?=eL8Ka?BdO|J7^M z7=SSvLgX;3V?*I(bzE2#s`A)$Ed5uWm1ulNWS}DOCAM{dsu%4F_Lg_*NW^c&Ht$2mW&fzZDo)QlnV znemwE`x*q6#>gN;_{!=b5V3{z5lb-@FAAY>c1cHiWBXd)8d|ozq-1f~yrmVM!nr_#inIC3in7J3z;!{TR;*a;GOt`(25qh? z0CVTf2aKRg41(ygWv)6JQ!ul5W!d72|6%DF{{fe?B^JZ57kF~~% zisdUyDrOV4YR+QC&09RLgmh$2c}3~+d2{B5TSnC8%$>U&bi~GOfWn9X+AD1=TZ$4V zM|8(rZMJ7>2`I2!FGi&XR)Q<$tyodEjDk4WO9Hrjv*)csELQ*pMs*4mv?k~Qyq#aN zw1SP$Mk<5!r3;s^Aufo1T*|Pq5yGLpzzhN!tCAHG2d{G^S!Sy|gs={=4i^Rp7`ESB zFgS5Rgk`rMJrgU2ITgESERV454x3S#KV`aMMVOCGbE@nnQ>Fr)PyzIUDOscJ6;tk9 zV6VCcxX#4Qo?v7a|K!{DFi zjYfT2#FQ;G|M7WNvWfc3wlf;lyVv!V%IJRohqpHYtg5*F$M1U+@Uo}~xKvT2xYUJJ zRM4PNR3xI!Zot4Jgaq<6o5>3h2#F22)h)QMJhZmb7M0r8g}R`vib}03+Ev=3wYFM{ z*jm^BnVIvM`!X|^(0;$ae_EL{XU;xn&dj~vBwsO zw(Vk2#Z1xKEppe+_;Gm7WU(>Wy!w7p_{(K^MEGE`hv1hK{7AA^e7mb4EE3NL-QtyH zTUVTP3JsoAOLWs#iN}+9)cbT&P%?X>A6c6Tu~c?6vnauV0cUjK^zE0nUH{`Y;4fi`OQl%2i$r~8Ww z!=dki-Zj@YN;41Jf4)bXEJvDrL zGF(fYca~KU?JJ2ePwcl*OiD|R{ymamE&a3m_Wt7do?nYEmlcR^vigfylk@o{2wI9~jV6kI_H{=Ac%RjefE&yl_#Pq7C)sY0B;RUBI(O7oJFhZ~h)w-^*|gmlR?ty|oX2rI-H zJ>=cimE!HruvQG*E}E5{iehs((#DA0!`xmZ;+u&ucmA}?!-eN=lku7$F6mlzJy|nN zrp_dqUV^8}Y$eNP)Ea}f%j}ZqztgXD#Gfgrv|<$?GgwaO3Nb{kj-yp7ZWiMU#08tP zi8qVm3q*x6O9|L~ z`gEkk?mc2*p0uQ_Rsv(fyt=zYSvXX7#uwCyvdz85uS~2zXPWq`bCnqV36zGmTJBEXoxFD#URVt?f$+#5MgS?bAzT)qNr-Pr z*ucladDMN2_J)MGsh_m{{Ux$E-`}r7{7+c$^0{YGOkQ7-7UfhJj!j=cL+iR$h1ZGU zGFV5dSe-B3KUI3aMoD-}Nw~LP#qtMe;Eg46~DRV=wqs2~?kr~D!2 zC%P(DUrx9eg6&~mc-)D<2#;9ZCjLm(_!phYafxvG>Tp=}e`yKr6KlnwwKLw8|66`? z+Xa*EqGF%uKRRb1)%!4)gq>HAGf<4rBj_99=vgz#+o6 zlj(o!l$akR!lBf8qjR+C)DrwV1>cjP>Oj5Ua&Pq5Hd-fZ+X(e!7p?Ph+8tz?4G?!y zMQjrlo0CWFONxHkxr%TPCkhCDzEg((l0>+^O^gbMwuzD9&`f5A7?>6}B@&Bn7#1EX zj@>+L$KS<(^-- zSFND_8zQV-L70_9aoF$-iCC4`PW`u))$^%;mon9;dWQyoMT3Vb;z>O#jHO~*ur<6$ zjz2H;OJ3TuN1t|L`zxgA`$F2+vy9SGhYMM{@s*_*S9AN6V&^-Kh2X6E8Au2Z|k2YYx%Y9gc~4s^p}=h z)h^|~-@m(!4q@WCPC7hMvZZD0*Dj@kK0v&#_M7!fWXa!7k17-5nl70@J81RNdKL>R z#G+N=psnYMPXao#izhl)J+@pNksOm)DGp1Xo>)j}c5Nq}PhJYrIfKRBw3Z0->p<># z_azE0J$u1Sc`5N|r>wqr(N;)>d08k&Y4a1GCDY=PWqC4QX<|FFN5!j0{59Egj~I{~ zORriMKV2rxeTELs5|*|-m#kQL9g+WW*(&kfu5gw3J?R!=#wr^7c~biQ*fP17Tq4wz z{iDO^+al6pbw^%!f407h=^*%KXP)?8LhchcbFo&swp%vsS!EUmm%oGmmmE zTjTjX;x~z~;F(Lrz>R0NlhR*P@k)>ZGCaTN4CRKoQJ(IuPpl=(19Z8Npw%rsyMGx4 zI3YIEQm5YPWs3HlWGJs1KIl+mH_^hN%3M&tAUuL-ZlKe4LTpRYKKe)pRk`OW1`ksV zPU&qCQJyOGZc1!laQ1@vVnE*NyTtC>#gcBy*xv`CThjdS0R2Wx#~?ZcvU!( z*3Pz$t<#fd4ZH@F?;CUS4Z?#K~wf#vLO@C`Ep*E@UANQvfDLZOm zKHNVX`qr`J#k)&u+osJppFDYc+1hBC$;6Y(YOMpTFGsx4 zA?wI1B2VnUQ4CB@PJA>?9zGwX>&B;oyd{@}SA?e>yHH$ID~1+`#&mdr*pb-0{5~1Z zj#Z@oDR~}0@1#>!hLg$2M=2!+h{tl)lH@NI%Q#)S8*L6kJlHPF&`bU0@_tao>{TjV z32_e{f#q($o{rel#a`=^`NPH9@VOM7~H`2B@6`X0rIq6&HSGEn@3u8$=qPaL>b?A0TFCn)^k$Tz1D`*Vw=Igio}1qsVo0+z8^ zPql4zM^AF>@a5qpbj`J0Y@*z_A$i39ABpc#@wsH07+4|NE0&IZEP3P*v1F@wC)h~m z)KpmT?&|OyaWGYS>Ry(lYH{;2>5aT*8X8^~o*TYE*LauCy+js+p5-gvMi#J=mpx5AsmUSW4~!tk&td_hbL3qBS{ZWkAYTh~bwXx|thUh79bUea{qcS-bP zbdaP&!>_|P#lCWEOph3x94UQym`2L(zc@UDWXa({-6cCtnpqzHh^QuptM*UI4$ zhKICKj*%xD!|_CZWw<^Zw^A<*xd0xeDlQj>G!hF#E?HU_#P;E$3W{tpoEZ)$Pg1h( z93o3zN;>hYkSg9F@s~v*y)cGCdm(M2;XbP5(UldAycAFk2{<<6OZlQQ{kv!c!9VExgZ2G6D4X23q+HmY;Guy-=6=G{=a&#hGc+x2o zR!|7^tw_54s9+g&eJgS!Sz&HPietJbi;KG??x!8{2yESstTf|I>Lg&8OyK9r-(g5 z2lIsZ16_hpI;%5PRgXLy(rGmz=E|5H)RUFf@-h}#{S<8@4=!D`K-Blp*|36+iAspR zT^uXq@$2XkkxrN|k-v?Jb}btSl2i&NKGr5-%{1QAZTh!&u^j+gHlp=eG^GmpP#hw z2N)^!8BlXoOKVL_s;arUzP+KU^+M9sOv+l*^r3|`SlU3QNYm!mq*DuPTI44kWLjgY zwyL47zMY8pQ;k$TefUGPN>xglrN|VJn)Z!UYt_Pc&(cy= z^>tOPGOtKrIv`ZN(#aomIr*dz(iD2X5HU!ZP0c!nT9=%oR>}xU8kGrWOqo*1IdR6h zGVAMF=e4F~*wp8Iq*#T#p{nIVil&y)+)}qt=SJ)Jlysf)pKz4D^O_oDK-H?EDQlDq z1|7)(xH?_koT67FwNbVN3+m=CP-{Sa%BE>l5XeyVAs+>!v5l5YYp_5Eyp5K3icFJP z(nfkGk~cCj&YDKA_LVxM`Bl}`HRL++(FzKx=F(@j*@-IWD0^~@X}U6`)SRdgm7G~r zc-oY6&MYN6u#?@FzKIr~nr;eYbA45HO#{`Bl=@s+ zsiMAGTMg7FOxC z*-*8(Hlm>ABZ*~&lHZOdL!%EpIZv`eSXzAMY3E9!R+-WBX|^5;YYY~sBCO*@i-{IG z#{#y>tXH|JR=4z7grk-~!T3Z*j(V&_I4`56$Oi`hs z9k5Z)V>*~i!vXDKwRMZ7M5#d4pp;5PvtP-|DH+LYee9^MubSUV-)LAQIfA+Jlt9Z{ z8Mz>(B=B~n&J^;HA^Bu3NJlY2maxbD)r__w6w4+I%pI*SpBsX=M zQmT9DtZiMc9+h=!>y&EhtLXH=t6rH?O~&Ql8gINo^-6-zE}Ry?_o= zjq`KWKXOZ>lg~IT6Uxek5;0azcY`bp>6Vu21(aLUO4^#6X`7+FU6x@vP%DpqYC^I$ z0JS5M7HM&6uFN6HOW#CkAv5XVfvuZ})g;nxL~~6$Q5B`PYL3&*1l=4DX?(OuwaOG+*xJaMPsbEl&?(tv5ov0q zEnP;OHcdKKw#ZFp?tFdLI`13joj#oo;xsCAO0SrJjt?!h^dzDb9enA(nyR2xZrL0j zd0?SQkvTnPK~qD`n0nf?TlBxvilyb8aH~rpH*1Up}c6(Crjm2V_O5KHbFHlba}(l_5P1V)eFfBNJ`{$oXiN>m7$=W zQElMrYK_9XNQRemwKmfMG0$&|W2 zPzjE8L`lO-L1hguy@sj_YbbLX=gQom3!i{a%F^WO`kJc7w&qmL;<~gvaM5B_Re@?V zVbva$YF$8;L}sQ8Mb=vAwSUW{P5W+Zpf0upN>a(8W|p?y8hJLQDLG*R*~%tqZN0*( z&RRHg@@7hPf&NcBa5F_hre<^)siPCKI$LX-sglVf2bU=xk#jRX9qv0k!tL~pC78Zxbf$^vaKikmM+Xx`>Gq{%Z$-71R~9r)x0 zyNna2iT2&5ma6$wM`a{)=TG)Y0?VD|?zL6BnxM6D(djXj7ia6Sj(xEPeHx@#?C^-i3?OtGc;eXP~^cQQ68C^90EWp-`y%4tk;LDLa8z2aXN)4! z%*H0Q=&+V(GL|&a-6hIH8Gdbp$_;hmlF30=K5{EVDOj|isZO5Q`Rp<71a&2Q+;}b> zQq8;?s^KIwrS6K*NkHDj(e6kkw6io|I?dOIwUKIrt8SPlBPus=nL+v_CRck6U0CXT z=v5zOaZ)E!x^QikIiv1CkeX z6|*?d#Z6y9lP5G^>L$*sv+IhSTlKk4c+RgtEO%h?c|f`E90Y1 zn2x+NAB>g^0**#tqrRSfiTB*RgmY(IN^_eJf{8< zK^een45}O;{W?(noEF7kR{2+H&dVbLtN=MUdVvgHA3FilBAB48x|uFLh623`H8? z>5R$=THhMtFv7*ThOr3XVuLD#C$|_>5x_MDRmhNOmNB$~+niwGEqi6qyPUCPD!?mx z5pu^g(DZOGD)fHJSP}6JWIwUk(rgbta;B4Siu>{w0EPfY7K3^>Fm>76uPC8j1jBGZr~% z;4&72@p2<81rYX0BZ@QVK|>-)MHXqu6<-1Imm2Z20Yab@U*QoyyKnI`Aik5uCxb-+ zV8|E2%8R?uf%THm{>x<{Q;e;J05O4yU=}0|H%T$e7Idm3s0@P6;GvvgnP-_6@@N^i zB3R}Yfz>?tga3pm8H{tX!4{MZ#yd1ySjiC1(PWUn3p8V6X?C!@oM7eZt_*sRPOHa` zH`6bOu#o@L7YZ+>MRd%NSJ%@L+?g1bC!D6#^V>P?hjT zKEpx&(Mp-arY|twRKoOI=@)ZM1@L1=sTz*X05d<80H-oa(V>I+B&{_(9!1AlvWU)) zI21DX0Y75GQwVT}LCqe(-W|xT25Q=_L{Udm|?qTp>}I7y5Cu`XdxTc$EkW;nbFh>Kz6@i%{}ctMcz;Goi*I ztThsE8%ik67X3S%1w?5u;L8j;h!G{ds`$ozymkmd>4*-Qd+6TyFJxh+T< z1)-J3sMbWLfjjWRv)F#YB*=bxqQh%H$yc-N%m!#*Wgfjk(0iY;bo~VoLN#HOIvN_m zbAz=*s(%%y8nlNnkCuquX=awo079r|9c>)-IIMN79*MKpti)+)(Z8Fm;v%maAPWmx;y&id z#L|^GSH642Vaul+x5X36mQE;JIH4k|HS`;{eJi*9gYfj`U_=J}zcYSduySP={mAvJ z{SS8hw~dikM7A{&XPe`@aLC-d{x?%^%lfY!hM;Go zDMmVe9!+ssG{wMTVeV{-A@tWQJbMv0a>o))XUigwu|^<@P_`sO#R>Xl zG?mlj6r&Ggv!~M5L<>am*s@_smIhlE-sWg5VJ8KrNwNdx#16R#40&oN4py})pP6Pgl4 z>#+z0@F^3Au^GUhMP&BO!>(+F2`1miu+0Vt#gs!(_(qmOz<)KIg`YBr;CQkRHXt6- z>06oYUT*1LX(EHpS|fhen+#@Yv|U6@5l5OqfKf;*;n^f3yAt4e#s<15L1#`x2e2)o zOJ>lCY^?;iKAR35gp-OsKujMQ?7CSFk3Wv2i3~c3x@QZ4SFoCH5qy~XjT)0I$I_zz|p(Oc+A2VE2x4Tokx1s4vosXOE|c3{z= z&RGh6oyyt<2U+4Xz+(Eyfkc+L3>@{tk20fNfM6?SHi?Tk zGz31_l4TY|ky*ARLiHs`DudAP&=YOtAFTp_n+&QDV5F}c`ra{-DF-;1o`b7p6$0!s zsB(b!8dM>`4-Bdt;5LIQ1Sm|1%lk2Ss6iD1Jj$TT0ZuTeLV!~ZsvIDu!c#)+naB>{ zJQJ-Hz&b{WpsOo`&T12{6u>o%QgrAK_=1c-=JVFVZ%?|jU*Gvi?$NrF{#jG>iv4E}+hovCfF1o#1? z)IBbA&NGu#39!UWQpe&9Iz15`z#Fsa&^gvjW+lKDM#<1FV>pUqCE}Ped0h!`E~6x8 zEyGP&I4m6b26=WCAQq5h{Q(a@oyGbr!@tbJ{f1$zG>R}ltTdG#OopWyCx)JvQ;J^B~*r^F=bY=CPFssvNN(oB5`z%`7buOuZh=v+z9_m+QjH39H8MkzXU zRz=9J%-!61B4P&kYDAaJpo7^ZC78k|Iaq{3c>lyG(woen^InAP%AkYj6Eh-*nnWn= zQ1tK47R?hTCiG!4I-i-?T>$X!#x0^l=Ma5(#H&2I+4Lx&@{K;TK#?~!yeescfjfeT|R`^}uzc_|p;dg<*CWc?( zZT@9$+`aMf(0Tpw(0T2)>5{>5PHZn_+pdXn!fTsN=Q&+pxQl7zq4T=wq4Tf zZR_MVHpMMEkDI7~FGmqm=A-i9tbi=V(nL7|9%TtN33yZ-6m8&9cCf^Ox3kS-p9-7D zK85$#r|=&86y9T>!h7sf_+7A1ts0Mg3h%K`;XU>#yvII;_t>ZKwtcYUhkQ<;IPWW~ z+$P>0UgH+{fcIPMzraJ^bRGx3FMV=DwsomZ+R`I&whrHBZu=v@kLSv#@8~)5^F8w2 z@ABF5$xpQ&Y#qScdVsfm0lu$z5uM62k3OA$mS3Rv==0{Q$3K-f9(_8WTz$RrFDoCs z`L~?&&dxs^6Yc!Nm6x4=1#Cx_K9$FIJU#l<{CV^#yhoqHd-N&%F6dKn_vll2k3NO> z==08>?O!sOn6Y(9oUKRVY#kD3`*Rh~*Bw^9=!?#?wV>1uj!Mj7vh<*&;SzvSSm80{ zSzCp|Bek=(3Wc{#vh~UGVe67OTTgcBfev5kapjNq$RF>KKi-s{NWS~gn=KzD!}bAq z+YjJ9@$#mwN1sYLk3NO>=u>!)K5y!J^r@2J(WmepeZ5K#Vo82`OOJi8i0J;G=ATEO zio3@@h4=WU@Sb>j=g*_>|LOeM`sB&f_D$k!za-A~$#<&#kW0>&QR(rnbDPdndQfsE zMx{qx8{(9O8yA!k3J*76I`DRhvE|A#Vat>_Tb{3+xUwdAWJMu{ZNAXivdDgwGPZ5N z+x7w9m%l`(Qp_W_SL(r5(C>m=wS+x#72ad7cgYXq`QFue#}<@jugVA8UXR?J#@8d) zyM#S*cN$-hTt(lPy)tL)*h-u&&zD;xIHpHiYsuDW(|ML9rX>}L8YNEzFbxM8N*jg8 zVK1xFE4;1RmYcmSAyeXPdA?=o%9?0G7s;CFk>wtyY*|=l9)DGO*!F?GFMqMjJaScf zc;tH1#$#`o}ANKp2caK~ZM~_^E_sI1wOOIR? zFOOV>_sI3e*On`nn=Mn~Yj%(VTeKhE3;LmbmqO9N)f$sD6C==$Pm> zlUId@{{*?LJ^Tugn}^>!ogRLb{vLks zve=vBofUU)d^~jCwDr(=?Y8NBcTx{x+m48G!fTsN=Si5EI6(%qhqad3&jvc8}#-EGr-%~>(Qse;L)e>9(@Y$(dP}P zN1w`Sk3NO>=u>!)KJV&)+*SNx5ye5>@u}y6*BTW*g@@d6ym^4$j+-r49s+Ec5@*Zv z9Tr?!`5syM9$D_4M_U%=-L?&Q+dkm?@|Wn;{Cec}%7?5tdh@|!ubM}X++OpZCD%Le ztvuiMyf?+n`>{OVS#rI120e1sI`qg@c#m9fIr7L=@$$%3c#m9fd~LaM2ef5MoGs6{ zQ+9Anud>#Xohvq-r_5nm@O>RhCv}zH#nXfD2>_2Y#T@|PZPm71x!i1-*~=30e9O|6 zHQpm@yjhl!EcdRQEsN||X<*w1yvJW}+IZxuH1Nn(c#m9f+IZxuW#*CFYgr-&s^)}d(|@Y$W?fcT<@}cjput;=N;ww$v)=YBUdd;kG%@- zk?Spc9=SV>uSc#ozP4Ps+-zGV&X(s}mcQkgzHhB1J6CKv&$7g{WF7w1B{WRKVTsaA z;ca?+Zd-2lvV=^Dv*r1gr7LTq30)*>qDPi{$IF(5W#;i$rH5@F=%H?LulsH?SZ&?oJnC>54NPE|YP3KvbSMptrN4ZtMa(I}(&iktQ zS}*;c;!3_TfUjvPN_0Nq!9;KYzW0PrDhOrgFuqRuE-R&Rl@$BCzWPs1%5=UA94l}4i*D2@ssyq4W=d~t|JOAou1uInF z^2CC{_f))J{e)74&mT#A+Z2xZeY9r@vSB?c5~RUe;BA9}-vzm9#dzc@yhpBgg?a2% z70Dx4;XQJ_6%2BpG|yj^g5i*JroS^xyQKP@ntwSrYfV?`h=aT)F5S9__4-@C_p_@u z-?KOA~viah+@sq^rwqU+)J7UMg4&1J>i8y^py*B=j^*KV86_es&+ zY}@y_r5Ji`v*|qPHDwpm$V2CK(?jQV)28#CKF?;`%DIh8ahuNL<{Uokw{lAr3}BZ* zl>mH(Q8_`!dyN_N{%Eki=U+m@A|tL8;Li-I9N@EAvPv`Py&Vw(%vM_J?BdPLa3{C& z2mBEBRu;}))Zl}K^b{$85Jf*3wIvbC76h*m%$>&-vUOZ-@&0ENU`{re*pz_rR}sp# z3l2h~ya)$d6d3o1Yv9A2Qz`)j`)=~_rz7cc(?I;em{AE3vu0>*`~Ek)53{}}BfYlx zZ9LR(FFiuj0`L`sss#8Nqv+AIlkgea;nkc5yD3Lu2*X|Tm3x=8b^jE}@uLOf)7c8Y!3hfUnl zk2JycVT3}|hnnz}AfhKmDBDQH02axr1mQ5rce@aL2pBmB5UZ7bxeX8!P4NK&OOt2; z!Vg0W1lA$Z0)&Hx76>dlq6LT?GPHIm{u7&Q-X@-hMP@#neF;NX8xrTa2_U(ONrnck zuMfE)M?ZJ5H8^zS>!DLPe#W#f8nMpL-UsmX?`6`!AvubNPKYNd>x8y&lnv#5;51iZ6or9~to} zfDow56?(sm2mx+oR5EBC0=R>n)XeBbwx#-Zy%@HEi>~7z>9YCiSUIfrJwXXH5J;5| zAlN)7D?|&^PHP@u#N|xkH!XXpdLeXsn~5(0IG0iMh>H9SI`G%?>vVVm1AMg#G;opZ z28hI@hnN6_ai&fH5n16Z-0wI(IwZ)AJ=j6tD+FvB&m-Av67LIApku0uuao&Mi8FB^ z8D%VX52rSbCu>|1N0UAIo_U5VWyU2Z!c9E1D4yhU9=a)>WHk@{$dHr){M?{s0sMkd za#fdQ&>P3^wxNOsa6F?lA$r$FgaCVb5!#Cz);(@aDFyh6L6rl9JyL0@v2K)6S`HBQ zXhQU^j0gc{Tj!o9f5Ikwz^$+JfCgq$=>Z5fPZGgzOa(1rfDxCISI@8=uba@60DQ-w z3K6BljJt)1z$Akzv1bB)K)tWMrQ^N`gpGFWXu@#5tJ0%%g8cRFu}}{f@D; zBmn-t7oly(r#w1{O%*}7#?fgLc`6A=!pLQS5KT7O+UGEJv*9WO`20Sam~;XBg+Y}8 ze2GyyOVIn9AuRt7G=6T3aJYuBz=OG^w~%dgrv{@(L{v0^=pD^i3IjkmM&gJNJ@}Rr zv=J6P_@;{m4FCaWwGi9ieAfD7Ze=~SIej%2d=D6_OKdjJaROY>Mw91qmD@H>WgR8l zdJkXCJecN|!U(X9QU15neUnFf3}X?%)dp1vGhZ>NB7j>A%2~zm^QTOr-%f|#lZLSj z;D%m=b|AL#=&Aea5%LjWvq6;rT*4@w`{-T6PYCwR4#a=M$SMU0ZhcZg@6L!2;Ai|Q zLE4G{c707-t9j8|$yhpw06d9J(}d_18G|bU!Us(l7bVzEx7Pr|aJqtfw-FtfPILfa zq@qIyW)dAh7^3L^pA4&hWW0!{f#bxbbbyVVc7C z8qtC2(!LoUM`pm0Z2M+7_HE!0J!3*u2=IAEiJ&==LFY|F=j?>nvYBTY66avHiHCL~ zWh;~9@Z$4b4ZAe%^`}ikpZTwDa@^m8wIG^Q6A(8{IiWDs$Xr6%>1qp7%gq+0khU=I z!aRcQI+a`67d*SQP360)a%tS(Fr3C(>UXN`0A9ieb2}(#9)3ekn0r{5dqf7v31*!a z*&zb|NG74Y+OI!4;7bP0HeUe7uQMY}>L49 z3Baojstn-q2O27Xzhl&ZVC9;w{sV6bM`VDSe2}3A_%NfgsDZlcU_%XXVy;GIQ3F-N zL$p%@T<=l?bmvDp|=2{7A;Vvi9{q4<)s51Q%ARRE!x z$_q4ZiZnt~L{J*DftB7=Xn?`3MmHX5~6;!{Q-o zfLJtH)IeeJ5H&z7nk;Iduy}|XAQnv)HBiwEI2#?<6l>-kH7GFy8&d_K{5Q|@|G?%G-I8ddHZ<C3_Zqlrkt zD1@3~;2Px#o+nZ%*Qk`8FlVqaXGcZ>oW>|xR%^O!zPowwC=RE*7Xv&0#qpH5^*oio z;nsK0#+F5&zS*J(WlQqBXuuUz;tDEp1v$&;`|RDr+=`%cKj$*ybsl_+TRKt#{1v0< z<8IFj&HuuqpBcs?fWu987Q*r^COeA&eqd0}ot;`1&=v_o77Q~dL5Hi5scQ^Zu|44+ zfr6Z1V36a)#HR9HoPg$hRz^XhFEXGPnNS8WQYi^-!v?Wik$Xh|8+eE^*!^JKRQv|Rxa>9)eO3{8<>)Eb` z(rT=2)M%e4kTuk#?rd8WEofVkXN^M;j3R$sK_#vrXN}*&>GvIOy=(kw9(Ig)N^NN_iE}~#$!L}$w*kP%8_9(LCoxLhX-4NXgKSG=rgA4T z%PEEb!z8%A@T8zi;>@v2lCu4`Np=#=9^O-rJyZ*!Yz26ZL6rb3VwAk0RhB`oaU^)1 zeajVJ3i05UvPzAt9;37r-~$F#0T3EBukHRCW&m{}m;rE|abV>qZJ9X6h{|_tbj6q1 z;ytAbG9NMCI14=FIF2y!bS57pLzrYh&`R%?J9OkNVFsuJ47c<7#}po#8j%1z+n^k? z3VEm^o}`(F9xxu*(1E97@m>=;{f^W~x(D$|lfFL<)My^kS%=rJy&PvC1QKzTJxyy$7;M(Yg7AY^mto z%UC59o$?d2NzuESv5FL(BlEIJH5~nmIeWxRP$@tJo=&s?5p})d&_isA5Fi4p3DHCN zh!EiWV>p^y|@`O6h7gQwL z;sBx|(TM~g>XBMW=)j+>vSRzC=xxsw()LXuZSNG)_D>;g4;9k(aRbj245bTA+dx9u z<`K#^j!?E~gt84Ilx-HFY@>e6Mj%Y16+z4?=NTgnOYy=?S%61Rhb*8R*U@<5)#gC71C z9$FYrvW|xiJY1`iAwlLW&B~xBkJ976;#SfD7Dwwba`F-e|IDo<8_jz*b|i_jmxRP= zA<@4uEs~+4YE@#n`!B@I@=e|hv6<)CAb#yyn2$-=2G8t1RwIj`{hS? z^189I@M8ue!<~z|_m~8vzC5sLJkGi#&N&<;J6I$ALW{qN6lEMT>1a+HZ+$wO2Mc#b zG?ND};nq_{Kyr&Aajrx`vY1JH(XnZEq6uO=cMu>YGR6tur@Zp9R_H5BF9%Mt_T!ZV zDvvo>V5kv9f)a5&mkL4woM=w`v^>x`!yxIaYj!Q!C6y_tL{*}oxPqJ+f$eLu3I^a; z7)Rgu0JzzpDgpl5po(F_c;j_3z!}EDmP7`f$ka;PR9|KwzMry2Z#G}V8`V;7y+l{= z;I-V!H?lVeBlNFRGr-=;qjYCGT2dN zV<-5&S#8d4`vDJ~XO7<~RJ`|1#Y~OmXf~L6bduy%7IZ8Nl9K~C&)`nZ0A6SmRze}R zTgeKIC$dI~13cZ}j?Vx_j!HWFG%9g+^!~u+zGFgD2=HA-QC4hoPE!G!4L7JR!_?zV zaGZNEU$Dp%Bc}mE5LFiX@XwXylqARkquQ8kKJRX|H)}uGSW#&6dCG`Ai7G7XxGt{e zRv|GzQ#lac0K)8PYy=Ux2kH4d*t9dEb{_m5w;tO;veA$@c?*&|n8cSXHqA~nL5ycL zLP}(eGq+drlDpL`y)uBeG0Gb+4Bi_NxvBdU555=?xsk`q!iTf zm==$F+XZ~DvuIyJ+BBZ!?vgmQ@Ilr9b39kLnBjrZM;C4_Je&tHG2WVhTTT1%(jFXi zZKP+m@CUEJjxY<~IdI~pf1x2Mo_xHX`_sAgJeu=Xrv8QDO5wtw&Rj@1d;4mKs}fw* zhRdmquC8*ItK3dkn=3~KCSx;dtj+slwsV8=uFz)mq{g?H8k#*-_B|%qW&}G&(=-R7 zo!j1*IlwMA;VQC?hk!040GBxnX)gyh65!-71YBu!IKjP{hi*3{WdL#5_jo^*6Z#x( zJvR$q<)Lld`hJ*Y(@>dyQ}4@8wVl{#0dmZsoTO6R}i-nTiYt7%{F~x5!~U ziW$!4mL4fP=%IWyV|~*4O|d0HXQO3ygQO0HzJ95a4QqDhBv7gDM0Vg`pT>SZ}I&F~Fx8C4!c& z3}SP)3D+!u-(eKdb!5<4XXuKDOwc|JWLLqUsT?)q@qmX&FU)Z{5maW4a!^~GPqQx*9hQSzGRRBkExTFn$5z5|y zJvRz0!1i70dYleCIsxRuXgA8?Y!P2yJab})QX z7S4{_OsF3)IPhfcI-yQyusA|BGWcGEvLgj`_ZkbFi#U*c z*N~I~1eXYwxkqo8ugvC?r>hn>>)E--xz$wYJ!_&+1`tuugb2jd?6tHR z8`Gb}bx&XKV1IgocW(bx5P0`CyerqWX3!gJDrp(ONQoqLl}K!yf!mB@WdI?L=GvC! znf`yUfTXdj5L`bpr?f&_{i8gDNOz zk8hh*T4Yb0P2yecAZlYda!CU2FtSSkUd<@FKb*+iz@5m365EFTIOPgW?w0mV(x()! zC*`bS7Po_gG=0#9Zy*3WCu_9Ti~>8?j9x_F`v)(u^*rkNh|X5N2dUO~dFf_%|3foS zU&A8kWoy00fsa&_0!+uS*l~mjp!Wu8Y@TK-;Fjtrz;hTSzhPaLL2p(>Xe)GOmHK3r zdSp3C;L0lU$tv>5a`Ju-n|w=TI>3hwss!NUjM8qS_ua|bThDE+<9O(NLsEV{gP90r z2g~KEbh#?~<|=WyoaM5P%{c57I8g?0ib0hCJeN^A0O)Nv4ZOP`z7*oYt-qy@-YlcE z6yO4bssIR$n%9nm>r;_WX;B7BQ$|A(z$=YUvjO%nN-8bNpa)Ytd#GzivCocTW5+yW zM=`(yPep7i0p7?cX-9Dey_X_FfcNBUUQLMJTa2X*3}ADXXT=%x;5QKhyt5Y}dQk|R zq;x}2;R`{92|eX~&~~T{~v@?3iKf_|Vu<4iJ%+N@tk3 z-(bR74iJ&ngy?-QA_RC^Ryb#5(3{6ty15DvQ=%oJhiDKXKun1yL@%14@+c%4dWzEq zIYWmZfN+QA-!-igMsyf!3zsnnV?3w7Iu2`_32!05MU0Z~Ism*fBC`$u1rNO*kpTRQ zL8UNfkuNFNmlS-73{SbCOW776FBWqM<=u!Y7=~VngKi{(#PubMrqmWiC|eSt`W95; z3Mz30IhFfk1d%-w!NUCGmgMGuJeJjev2h!f?QYm-w=PG^}#MqLrW z1qM|Jf3GsAB7l)P=h6iNz)cp}vHc?p{ES=r4DfdkfVl=$2-))ust91SK{@3R0^&)OoVn7c}gU8R*i zrNthll|H4#yP&iJO0z@c-g5nvLo=SIitfu^oLRxsaU-`1Y0nBc_cN2cazjT3y<<%_ zlmUbaDrQ7z>(JOZC2)q)9U#Qf4BE0hAD@23ehxBr6@u$plaJ1d0QCXPwLkr4WvKqm zO4zl}a1D+6dLr0oSft!($OL4g#MyHNnxAnXe0ATYnbfBoI*u%OJYQ++lh%J5-qz~5Yjcqm2vVB& zaEwx$*00p2@+d{ruV>|Qj+Qw-`lvekr1I>Q3wUC_8K3Zn^Ux@6wMFQSH;l#hjv+6z(0$I(@u2en zz~c?71mLNR(z_gbFH8lmQw&`3r4SEpDXTPt-g!o8DZp8^c6KKqJ{eHR$}iU2-i+@B3FTdBLhx=M?EN{c;8i(RF&d`jK@)m2*IQ(ECs zTHz{9`INeQ^Al(4fP>m|d3pv1bTzm1oyLN15*OwaB7nDN5d6rD>@0yyJ@=4^%#f6T zp~asi&;faJUw|}l`t}N!Z>)!Jtg|R>J}SJnI!`U0%MolfDOv~+hEx0@=;4S8AYAdx z(lVz0X2b=sn^AP_ez|k)emxJ~Vu(82`!Se=-~J~=zIfY$KxvO(HkAB@SR@io6XcCi<9XH3>0osX1Tp2*HOFP{21MC1beR0dS1CD^idnXB6 z&SC?!*XW&Z%qj+0(TnhU?qzymZA+j8ymYI=X7t>>aJfocE@yi^g)M;#|Di*+=@6G? zdfz0DQI%{|RaTgmWzcJ8EZzD6cu_AxTO-7Q$`d@7#4!qUHiS28U-__UJay0|aWt)A zZyw@S1fG)j8V|n7EiFlaZy7#MJ;fm0@Dz`2%>R`UT?8=Va;_6GbhJ6lI3?#y9{R~n zLTJ-?LgA)Lk<&ga$}!ZZ&q=9WSTu-))^LWn`Q;R)f@%)i=*E&>>FIU#(RssC)a z$^gE{D0#dnbG9Tf{=qPo0?cM~?+$HahCyfRMMEI~IG9mdBYFo#ga8ljMTp+0h|pe- zP`aBTDFq1SbdLidH0y&EdizJb0AUaD0)#P|7rn?d=Q|cKEosCT0faqNb^yW{DZVI! z-mr)lAT(=2^ddWo>=2D*8B>g`GJt0=O3EtBpjQ?V#>qO>kdy+1ObQu52-G1%FB0#B zYz~WEYQ&cT>|m5O6}@XBLV(xyB1G@bh|u;4N*5WDQh-oSJ^_Sg?Gt+6ig*FS9^wTE zV>B;%k!i8;tn2+f)hy~qwHg;ukS9~oI?0DsIVDXT1l z-ZK%Q9d5{az>t&zgiHz{6FC47YP19BeGu^i%vS0a*I=49;{a}{xB?u(DD4({qas4v0m$0dkdy+1OmYAq z1ZoG+i^MxK0P#bO_#%LiNl6P30;Tw(40@4xCl|-E*g_+|3}6wXbR^JQ7!d+o)QixL z4>U|SjHLjfi5vh3H99`%wM4uCp`3UDX4~P;IqZNYniPOgqoal%#1bLEYz^+cA843r ztStrzP4s?FfKVfq7H81AFyaN6t<=5ub1^gAZWzk|-oYq6f#}^A5!zD)SvMP!Qh<<2 z!2k$>daBTi#5<`B@z)vgMF1g_W)mO;>PbN_67Qt)Iu`q)5nl#y6Qgt_(ED9PXh#CF zo--t+03nki0T2RpB+!e*JCT6+r;Yd`fRIU%00@CP66i(Zok*-_v5-lo0))(1@pdF2 z3+~fh4}g)Zm`KFQiWp;N$Y$Ka4t;LoRR(Z$fhMM-KEUG`rDq$x(<8z-@gExTr2xko zu1bIqsAn6!NWAl@xNCh8tRHX0&jJX6dbZJv#5*6aeZf}e7+HnjIyFMsK7)E-L;~;t zgDS~qFjDVa8iD#y!&M4!q(M0soGw?H%jHC}kOkHo!DRryWl$vm*D*@xfgJ$Inr#?M z0X|?*vjAqxa`zU=PGDEc9DB7;u00(WcaVwRhYv_gR2Hz?;?yOoC) z8InSP_ZgHEWC+d}5=XF0vI|n2#D&W*8bxIQH!(_29eTfu2<_Q~tmh0#DL}}S1)E19 zP%mNhBJpm)X2z$D_#%LiDJ!Z+JbhP#v5|PUVE-?~+mTq$vf#cf*o=aGv5|&rJatI&<>ZwI967NhcOxktV2eSO1I(7?*5Heo;ai5W4B#4rDgpRCM)~c!hDWbARKB;D zujA1dxux6%xXCc8@0M}zcM+i-3CMcRkdy+1Ou1@#G+TUW2E9nUljIQpv=Ltf5He-` z@`$JU#n?!^ljPf&WV;bx3hB;%k!j96!L*@9d=Ws{L-Pa> z#z^sWwa+{wBVK^etO?PJ>~JPDpJmK6vdREnz$huJEQ8*K5h1|(UWE1}Kts7{D~~rP+#`n!*ZVD_CMwS3G+Q3!(YkxtGF%d!`=}*K9SqW+=9=xZ#l>P zI&N>|_BL*9`a2naFSl#C{b39}^5s#U*MR-lEyiEaJ;C(vaQh+nErUS!ERSPeKaY_Q zx?eIq^0$%WWQh-eZ|CtVxQ)yAXRY9E zdvH69Tbq6)<418jhT91-^sxIh_Tx-$&*c{Dv^9o*0@Iyh@fUF4w(lN}@4ejK&+Q(e zrp)E`Q*J-w_6u%pd6O7_F}DwK`xv+X;1=?1{^0{OW?yb|x&1n~dE7p_ho;-YZRrqO zlI}M%{c3I(4A%G_Zf&kLO!qRk7qk33xLwWd8g8LKwWpT!B)7le_5*GYW&5Ub8)t7{ z`Zihe1D4m%l0TjMwtvg}@aLDdd`rMpG5q&1-XaeWpCrqLodaU*dxzzG$n7?6ca?t# z>lw{0;=hCYwtd4a`fc2gqtEAYd%mA#JmMZVzf&y!r@0S)+rDt1#!Te)lR>(lACtd( z$Iyo{^pM-ke9gOS`6D^*wx35?d1l)S{?#m}p8f0M7X0I4=D(Hsz~5x?+xj|~{wi*J zEPk6Fa-U{8*tMMX*!16Fy8F3Z$L+52zs&R>a(fT!`9X}n*DU&b`=Aeap6vOmWj@4t zVobb+#Xpz%z(0Zc;`p!Ryy@Y*+`#Sg+@j9TVZUG}>YQCC?f5@o$^Sd&ahyDxe-ra> z=k{ORe$K5;KZxxf!tF3_FX0yUf1TqthFkb!%lnk=J(T@Fg4<)bwduz(9{xekv8>0Y zKZ)rJxINF}x9RP9LLI@rXw%Q-`LE-)ncF+LeVN<0xV8CrF#a=clY423e%ub^b`rN+ zxcw8i?{WJ9x3>H^d3(mt-_H0|+&;nW&tmA08mcuO%k4OBPvF+Jr%%Zr5@9 zBW@q%_5*HheR1?p#Ly2Jt|c7EZ9ca%xwYkk?r@84ZVde+j9<^~bKGutZ2?K9kd9z&nMkCw28+n2cg8@IOnZ!&(hMZYD6{+a!>gy*^4 z#O>SM+VcO#_>Z~$jN6>A*_65;M>imb{s_jO$n7LZ{#lG}?%Xvsa?ZaPr+U*`5zZhyz^HHX-i=>9PW z==MLAx8Weox8`8ozMrex&$*4$m&f`}<@OA2r*W&LME~B+_+0iA{sgRl1MB+@w-Kj? z{=)pjE&e}oT;ApOFWlPvh0KTe^yS}IY)1~qdrxkM$Hf06#-GORncT+3FOI${Mn3Xm zF#9)=?W^Dxal`!C{=doo=UDtxnExzpr*UiZk7d4mZZE^Uack3G$#f5K`zW`Mb8FK- z&G@+dx9KZb?;LL5;r#u8Tbq8)p&Ii)++M_OJGYl|dp);5;C3Ciw!A|}YRuu>PT}@! zZf*Lz7{7+wwcNgagr>w>pY}Rd_whQT{874ZznmAZLBSKF@rnvO4i)dO#`DKdnW*L9 z;p4g&{R?~W+H<^^8*kx`C^hsF+y54~!PhmuncH>8=sx_h?Xl(AFX09~-oI_r+ppfX z-@0wnuV;In}@aJ?26aA;=M(;ouKKEf3_67F7!v7?+sogk9fke!Ty0 z4fEl>XyD&fdc2O!rqAa(JB8b6+!k?L!R-ay;-wLIs=h66In%)}tcyFw*_67EmwByZ zzFWEd1-IbG+sb9x(NGK1bCyse;dCJKJWZr>HGajdcG1T>lXIm?G^U?f(|caSjT*E{``#R{WWfX z!!2G|V9Wmpj|XG*h~O5l7qIE^Zh@P|>k+(T;5*#6>ECAj?Z@d6jd_+^ymkb6WYc3D&(J@E=MxXkx9NY8r!f~y*6m_$ z@8UL&{x#;?%I&+{{+-)@b8GY4PuISs4}JDyUh#lXJWKS3e68UgZf$*dXsP{xQSjUJ zZ=R|#Z*yxub=0QElRtxeJu;BnJ-F4_tbZBbkK28@-JjdQ`U9OU*XBDeh9CF}9>)^} z@z_sGUGP1o8+)1_!Sf68u)-e3qmiHvKS`ho|A;`Eer|kLR`F;cPbl9Hv{qE%e~gYBoI{AO?T%WUGm6-?`kv?*EkE zrr*JK4Pv=?$QJb4^!6ip)}5g#@Q4aa zo~cLbxozXtrVkmv7q`c7J28g-CdS{&?W5er`THjx|0}n6<_w<8V%r1!fV1=n9`S-_ z#Mtzp+k@$cbDPU8`0yMRn?H^ZdTn~h!J|-aVLcgcZF=Byr|JGvqmnBm+Wz%72> zWz&C)$9uTFnOppz$fobJFM>ocF`4hsi69x2dhsGy?8WB z>BH|9G!OCN!(f{iKOk7Jmydp6kn7pyL@+4G_u>Z!xw$?$y9fChAAXNuju*dY5Io_d z9}+Cs;KT0~gfGnr>^~6<4TgB}!-D<1_~AjW7r%F~?Uz3J^a<6=KK#Bx@R|?5Uy$p? zf6X>s^+m9M44yx6utr5N!oujT2o8+F`|ps8z<;M&1i6l!1YvT5e|%*R3?W1^7#wUU z%2z|LGr`e}UtO&6lahKso+%RaO_B|dY5W?E4vH9`%lOL~Uq`K!fARJC3bQB6S;6?R z{J8Fi_fx~c_o?yO`BTCtg8hPvF)xcX{R_aKQ>75Y&(`=?7{B^@ji(Gye_QBZDd!Q! zhZ-Gx!1xV}&tZI$0w?J=TJ-xU{Jy~uwns4ip@f(IPCp}GVU|!Ie?Gs)sPVm={LfeN z-8`Sh^!7TcRCsqiHYqu7{$E1)p=9T_Rr$(1#ZJ(Tj4!O$_}$fL5Zul9J0@s+HRFG% z@Z8C2UWmcJEAh#}LBRE7GV^@E@^k0rD@-@z<(Kb=GMwGWJo4cWQTV~Z>O1lk`6yAUAO9=ZP`$3t7$< zo)@gI${6}4reA%#_IED(wLFIYW~Se8o2G}I-(~z9jz91}j*;^m(+`=a<(xzLC;v9b z(7(s@4;-2=$%3`imwz9{&<`ZXeepk#@G|~mxt<{YV`J#wBfAdutfR9P{ovr)GxL=l z53~JcF>)@9!FRHpuXw$`s-y+M)r{YMf|f7qul&26@f$c#u&&p|$p3i^{x^glLU}a| zbzX}P{>buQo|&&O(t%PAe|rr5{W16#SWYgl z3(U(~G4$`p;J=E&A4!So%jYx5UbVlJ>iAHlP=CYv`{_@J!Jij{uU7cM!5uvB=dt|8 z82U?N@VCX_ABe%{#l+#~G4yXKJneT}e~x84-;bdWC?93qny<}QltVai_fmLf&T7WS z;HR*h9-jBZn5PiRuH!hI!Cw?TodY=^4rfFE$@qN^ z$yb<%7{7I(fBhx~=)BFnM$@0gb@;C_>t%qVXQ5fmK{5CfSpK@XT7D7BKb`SgxX!?@ z=`nH|nZAeD<1E(QNqD*c&aw83D`VtjV(^c|;9rZu|2YPKGWj=z?0K25I}oDJ6g^$P z&)0FdisO*s^@8hq{*Fqpr<$+9!5ppwnBN0q=5Z|37q)8ozi0WA8UNHN8vh$QU&_Df zF>>md{*~kN72P2$r-ks+FMEIQWcp2a{viytr{QnZ|EAnq8;{!gA9jDR3cVpzNkHNpja@KKu!1-YdcNL;qk5{#nAydcL1k&tFyagM*$MwLPEmzVkNY*Rfwby}>rdZ?mqaK38~l zCac+#;^(t}v8pHT{lhUa^ryw(%VO|tG5Bi;FY9eS$AOo1aCZ#-<1zSG6n=29Y^sji zah!)iecjx;mg?&Ix|+uH=xXk!T51}a7S^QZRad84Yg$|Dni?_EShL87ZcVq;w6rv} z1l3LTO)bRVTwhgP(?CK~>8iQ)HDIqgH5kW4flLv8p~G{i)`brfO0|+Ujen z)2Vqit<^1c&FQ9=*3r#XE$PwYgZifCnwDwBQ>Hh~KfOtsT3c6Nb6QJFRr}}(6UI&o zrcg6(e2}hds44mXI=Pw{IgTn^ia6wij1r*;LRclYh_r0SYsca;yY|{%#Xr(|k>FIR z?XI5b%=C}DYQ{SP@pIyY#04pw0KtI^QY0>LL6#6XaDYg;zy*a1xp43W#0m4gs(Q0s z)w2T8@=SNVe(%+*_r7}dx~IHW)g78wF8QWfp|Sgx=&ELVq#rG{u@7muAYK>cqHT-g zUgh&+h=O+Qs!(00nQr#8Km3y zzakIr$XiEy_YUNpn@2+4zWZQ*@2-4s>(;}AV|l!{fA>Iw5mCrxZkDoye&>+9Z5nvu zs_1$+icE8(5~iAxuWDuHlgaJ7hx<3=sST@Xhzl>TeQoh zYc{P0n%Q{S$I6JuXhQg@kovURq5{~Mf`dM8kmSH_Jyt_rubNe5wFd;6k7sRVL_II6 zE!|RNRi5k4if(C5tguj+(apWK(1akBk6i~as3I1E6RO0)7@KMHdD|retJPc|>l(8j z=8~pG)eJyL04?*zF5(Ub*#OWAz#0b6A#bKI6&A84E6n+Z);g2QiA-C*`k`M7Dz^Q)xi9R)l?MAx|7a2*Q2IHl_Irt2#@&Sr&Q$ln)clrCrJeV|_lz@3vI~t1NJ#PnKn@uhung z#Wdg%89(t6I%qKOV@|^42ooV~EsgFya>#dmu}rcQIo+>vO+gC^=VF(^Wvx>Dmxxd@ zwMYfwbWs_fVyW?HS)Dc9a@YHX$H&QK!OhZ&M2LhE4@ycxFXe5lBo5)KD3VA~^wPBJ ztZ{2F!`-$X?64eAPgJn+wV7h*hyzkl99CLCO24qg7W$stDkVy*7Xvi9>8{%(%2G~| zgZz-B6wC1%h5^|&(E~@AR$`78hz@cWqO=%+#T$NR-zBVhhY!#d5|{)Aip}((Y69td zYK|Pd9KByQ82l-%k!LDs420KqI<}LBPN*TT(Y0HWL_Bep4Pu(4z`;UKbp#USqE!Vd z8p=8K78H2AZ&_VYh#(JNzb=i*RWoq(HDT6fwCoZ#)4AjZ;VXd+5?xFIU&>iVlt$}h z1jInOMfU13=W8nFfNr>Ob$$tgWmqk$6-}@cs`DJK=ZNM08iPj}c%<_RsiJ@%kSVC2 z!9q!ybQ8ikl?DjSYLrJ#sx<4tf#tZ!09>fPO@i&rxZ{AH-W635VGT-R{v0CrT}VC_@3tzwPf80A(P z<`_)?Ev=>{Pzy6CINQxYnSc@v!#oRKD5S|QUy9<2GYcQhMYz9nr^_f{{oh%3O6s9>EcT~205=uA?|6;CK%eFL-+jXbq z301LYqHkjTERaghD50)DudJu|r^_blDAddkwY7NIF^9(BX-A06tZO`n;fxIH&NIGp zk71q25Ez~9?H|5j)l_8DW|_^DnTf1eHxTw`+xt6=OUD)(68DhL6bXc@Zec~{5?zK; z0@v>8ChJ>Qm}PnfI8t#mDDhugvx0H6pW!EN^Ri z?gT3ejVXkwyaU}gtEO!ETAiHqdc`e=!@vdSY{)G-^RhwH;B~?OeffDv(j$0yJ-FF# z^;RIfoM`69btb=t3%ttQ$n(Ce;~>AojN#1hd6;|&7yo?rtmXbspPRT_r-5+MwP=rt zKlr^vXo@f601N(X382>St4+1mW&;9WEtGNH~fjsXo<3Gmn?I54pAIM^g3)0Q{ zcpuu+3!dXNFmnIt_#XxN{lLfj)n=dZgkJ>#lK(6|sr=VLBTVpnuAR?K(86yiVT%=h zS&9y}gNZ9#4CN<5p8r$+$29Q45r&0#(*F1kPD6QqpT4u>?|!$Ong`25#Y{-bw1CmDw01%KLnvm6sX!3EK{o1Gy4LXdy|33K}M zPTUlKN1MifF`={k8wowQ)5*}Sf8fKkA?qacpXyC{KLtWcBRyS^|KPo$)-msebL6is zyw<;P;Deg9uUF2If3f$Rvt+AiD*t+rPsjO<@I&AGFK)M=_3Q@um`jK+{ls&8@n7*B zmSgJV9Qn6@=o81}b>{TvRG!*NigAqJ|E;G!Pe~ugtN2{Qhw=9k5phs{Wb8RY_