Mercurial > hg > monetdb-java
changeset 0:a5a898f6886c
Copy of MonetDB java directory changeset e6e32756ad31.
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/ChangeLog @@ -0,0 +1,31 @@ +# ChangeLog file for java +# This file is updated with Maddlog + +* Thu Sep 15 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com> +- Improved performance of following JDBC ResultSet and ResultSetMetaData + methods: + - ResultSet.getBoolean(column) + - ResultSet.getBinaryStream(column) + - ResultSet.getBytes(column) + - ResultSet.getObject(column) + - ResultSet.getObject(column, map) + - ResultSet.getDate(column) + - ResultSet.getTime(column) + - ResultSet.getTimestamp(column) + - ResultSet.getDate(column, calendar) + - ResultSet.getTime(column, calendar) + - ResultSet.getTimestamp(column, calendar) + - ResultSetMetaData.getColumnClassName(column) + - ResultSetMetaData.getColumnType(column) + - ResultSetMetaData.isCaseSensitive(column) + - ResultSetMetaData.isSigned(column) + - ResultSetMetaData.getPrecision(column) + +* Thu Sep 8 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com> +- Improved JdbcClient program by fixing some resource leaks. +- Extended JdbcClient program by showing elapsed time information for each + query or command when started in interactive mode (no -f was used at startup). + +* Thu Sep 1 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com> +- Improved fetching and output speed of JdbcClient program for query results. +
new file mode 100644 --- /dev/null +++ b/ChangeLog-Archive @@ -0,0 +1,404 @@ +# DO NOT EDIT THIS FILE -- MAINTAINED AUTOMATICALLY +# This file contains past ChangeLog entries + +* Thu Jul 7 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com> - 11.23.7-20160713 +- Corrected PROCEDURE_TYPE output value of method DatabaseMetaData.getProcedures(). + It used to return procedureReturnsResult. Now it returns procedureNoResult. + Corrected ORDINAL_POSITION output value of method DatabaseMetaData.getProcedureColumns(). + It used to start with 0, but as procedures do not return a result value it now + starts with 1 for all the procedure arguments, as defined by the JDBC API. +- Improved output of method DatabaseMetaData.getProcedures(). The REMARKS + column now contains the procedure definition as stored in sys.functions.func. + The SPECIFIC_NAME column now contains the procedure unique identifier as + stored in sys.functions.id. This allows the caller to retrieve the specific + overloaded procedure which has the same name, but different arguments. + Also improved output of method DatabaseMetaData.getProcedureColumns(). + The SPECIFIC_NAME column now contains the procedure unique identifier as + stored in sys.functions.id. This allows the caller to retrieve the proper + arguments of the specific overloaded procedure by matching the SPECIFIC_NAME + value. +- Improved output of method DatabaseMetaData.getFunctions(). The REMARKS + column now contains the function definition as stored in sys.functions.func. + The SPECIFIC_NAME column now contains the function unique identifier as + stored in sys.functions.id. This allows the caller to retrieve the specific + overloaded function which has the same name, but different arguments. + Also improved output of method DatabaseMetaData.getFunctionColumns(). + The SPECIFIC_NAME column now contains the function unique identifier as + stored in sys.functions.id. This allows the caller to retrieve the proper + arguments of the specific overloaded function by matching the SPECIFIC_NAME + value. + +* Thu May 26 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com> - 11.23.1-20160601 +- Fixed problem in DatabaseMetaData.getUDTs() when it was called with + types parameter filled. It used to throw SQException with message: + SELECT: identifier 'DATA_TYPE' unknown. Now it returns the UDTs which + match the provided array of data types. + +* Thu May 19 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com> - 11.23.1-20160601 +- Implemented MonetDatabaseMetaData.supportsConvert() and + MonetDatabaseMetaData.supportsConvert(int fromType, int toType) methods. + It used to always return false. Now it returns true for the supported conversions. + This fixes Bug 3460. + +* Sun May 8 2016 Jennie Zhang <y.zhang@cwi.nl> - 11.23.1-20160601 +- ResultSet.setFetchSize(): added a dummy implementation to get rid + of the SQLFeatureNotSupportedException. In MonetDB, it does not + make sense to set the fetch size of a result set. If one really + wants to set the fetch size, one should use Statement.setFetchSize() + instead. + +* Thu Apr 21 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com> - 11.23.1-20160601 +- Fixed resource leak in ResultSetMetaData. It created and cached a ResultSet + object for each column but never closed the ResultSet objects. + +* Thu Mar 31 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com> - 11.23.1-20160601 +- Corrected DatabaseMetaData methods which accept a catalog filter argument. + Those methods will now filter the results on the specified catalog name, + whereas previously the catalog filter argument was ignored. +- Corrected output of column KEY_SEQ of DatabaseMetaData methods: + getPrimaryKeys(), getImportedKeys(), getExportedKeys() and + getCrossReference(). It now starts at 1 instead of 0 previously. + +* Thu Mar 24 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com> - 11.23.1-20160601 +- Corrected DatabaseMetaData.getSchemas() by returning 2 instead of 3 columns. +- Improved DatabaseMetaData.getColumns() by returning two additional + columns: IS_AUTOINCREMENT and IS_GENERATEDCOLUMN. + +* Thu Mar 17 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com> - 11.23.1-20160601 +- Improved DatabaseMetaData.getTypeInfo(). It now returns better information + on LITERAL_PREFIX, LITERAL_SUFFIX, CREATE_PARAMS, CASE_SENSITIVE, + FIXED_PREC_SCALE and MAXIMUM_SCALE for some data types. Also the returned rows + are now ordered by DATA_TYPE, TYPE_NAME, PRECISION as required by the specs. + Also corrected output column names "searchable" into "SEARCHABLE" and + "MAXIMUM SCALE" into "MAXIMUM_SCALE" to match the JDBC specification. +- Corrected DatabaseMetaData.getPseudoColumns(). It used to return 12 empty rows. + Now it returns no rows as MonetDB does not have pseudo columns. + +* Thu Mar 3 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com> - 11.23.1-20160601 +- Implemented method DatabaseMetaData.getClientProperties(). It used to always + return a resultset with 4 completely empty rows. It now returns a + resultset with the possible connection properties. +- Implemented method DatabaseMetaData.getUDTs(). It used to return an empty + resultset. Now it returns the User Defined Types such as inet, json, url and uuid. + +* Thu Feb 18 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com> - 11.23.1-20160601 +- Corrected the returned table types in DatabaseMetaData.getTableTypes(). + It now returns all 10 table types (as stored in sys.table_types) instead + of the previously 8 hardcoded table types. + For old MonetDB servers which do not have the sys.table_types table, + the old behavior is retained. + +* Thu Feb 11 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com> - 11.23.1-20160601 +- Implemented methods DatabaseMetadata.getProcedures() and + DatabaseMetadata.getProcedureColumns(). They used to return an empty resultset. + Now they return the expected Procedures and ProcedureColumns. + Also getProcedureColumns() now returns a resultset with all 20 columns + instead of 13 columns previously. + +* Thu Feb 4 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com> - 11.23.1-20160601 +- Method getFunctionColumns() in DatabaseMetadata used to throw an + SQLException: getFunctionColumns(String, String, String, String) is + not implemented. + This method is now implemented and returns a resultset. + +* Thu Jan 28 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com> - 11.23.1-20160601 +- Method getFunctions() in DatabaseMetadata used to throw an SQLException: + SELECT: no such column 'functions.sql' + This has been corrected. It now returns a resultset as requested. +- The resultsets of DatabaseMetadata methods now no longer return a + value for the *_CAT columns as MonetDB does not support Catalogs. + +* Thu Jan 7 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com> - 11.23.1-20160601 +- Fixed a memory leak in MonetDatabaseMetaData.java for a static cache + which kept references to closed Connection objects. + +* Thu May 12 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com> - 11.23.1-20160601 +- Improved JdbcClient program when presenting query data to console. + It used to send an SQL catalog query for each query result column + which slowed down the interactive response considerably. + These additional SQL catalog queries have been eliminated. + +* Thu May 12 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com> - 11.23.1-20160601 +- Corrected MonetResultSet.getObject(String columnName). It no longer + throws a NullPointerException in cases where internally a + MonetVirtualResultSet is used. + +* Sun May 8 2016 Jennie Zhang <y.zhang@cwi.nl> - 11.23.1-20160601 +- Fixed Connection.isValid(): this method should never attempt to + close the connection, even if an error has occurred. + +* Thu Aug 6 2015 Martin van Dinther <martin.van.dinther@monetdbsolutions.com> - 11.21.1-20150807 +- Improved JDBC driver to not throw NullPointerException anymore + when calling isNullable() or getPrecision() or getScale() or + getColumnDisplaySize() or getSchemaName() or getTableName() or + getColumnClassName() on a ResultSetMetaData object. + +* Thu Jul 16 2015 Sjoerd Mullender <sjoerd@acm.org> - 11.21.1-20150807 +- We now compile the Java classes using the latest Java 1.8 version, and + we tell it to compile for Java 1.7. + +* Mon Oct 7 2013 Sjoerd Mullender <sjoerd@acm.org> - 11.15.17-20131008 +- Rearranged order of returned columns of certain metadata functions to + comply with the JDBC documentation. See bug 3356. + +* Sun Jun 9 2013 Fabian Groffen <fabian@monetdb.org> - 11.15.9-20130619 +- Further improved setBigDecimal() method, based on patch by Ben Reilly + in bug #3290 + +* Thu May 23 2013 Fabian Groffen <fabian@monetdb.org> - 11.15.9-20130619 +- Fixed bug where PreparedStatement.setBigDecimal() wouldn't format its + input well enough for the server causing odd errors. +- Allow PreparedStatement.setXXX() methods to be called with null + arguments, bug #3288 + +* Thu Apr 11 2013 Sjoerd Mullender <sjoerd@acm.org> - 11.15.5-20130412 +- The pre-compiled .jar files are now created using Java 7 instead of + Java 6. + +* Sat Dec 1 2012 Fabian Groffen <fabian@monetdb.org> - 11.15.1-20130212 +- merocontrol was changed to return server URIs, and lastStop time. + Connections and dbpath were removed. +- Mapi protocol v8 support was removed from MapiSocket. Protocol + v8 has not been used by the servers any more since Apr2012 release + +* Fri Nov 23 2012 Fabian Groffen <fabian@monetdb.org> - 11.13.7-20121212 +- Implemented type map support of Connection to allow custom mapping + of UDTs to Java classes. By default the INET and URL UDTs are + now mapped to nl.cwi.monetdb.jdbc.types.{INET,URL}. Most notably, + ResultSet.getObject() and PreparedStatement.setObject() deal with the + type map. + +* Thu Nov 22 2012 Fabian Groffen <fabian@monetdb.org> - 11.13.7-20121212 +- Fixed a problem in PreparedStatement where the prepared statement's + ResultSetMetaData (on its columns to be produced) incorrectly threw + exceptions about non existing columns. Bug #3192 + +* Wed Oct 10 2012 Fabian Groffen <fabian@cwi.nl> - 11.13.3-20121016 +- Fixed problem with PreparedStatements and setXXX() methods using column + numbers instead of names, bug #3158 + +* Tue Aug 14 2012 Fabian Groffen <fabian@cwi.nl> - 11.11.9-20120911 +- Fixed a bug where DatabaseMetaData.getURL() did return null:0 for + hostname:port. + +* Fri Jul 20 2012 Fabian Groffen <fabian@cwi.nl> - 11.11.7-20120813 +- Fixed adaptive cache size used when retrieving results, not to cause + divide by zero errors when memory gets short, bug #3119. + +* Fri Mar 2 2012 Wouter Alink <wouter@spinque.com> - 11.9.1-20120418 +- Password reading by JdbcClient no longer results in strange artifacts +- JdbcClient now returns exit code 1 in case of failures + +* Tue Feb 28 2012 Fabian Groffen <fabian@cwi.nl> - 11.7.9-20120312 +- Implemented missing Number types support in + PreparedStatement.setObject() + +* Mon Feb 20 2012 Fabian Groffen <fabian@cwi.nl> - 11.7.7-20120224 +- Fixed bug in DatabaseMetaData.getSchemas() method that caused an SQL + error when called with catalog and schema argument. + +* Tue Feb 14 2012 Fabian Groffen <fabian@cwi.nl> - 11.7.7-20120224 +- Resolved a bug where JDBC and Control connections could terminate + abruptly with 'Connection closed' messages + +* Mon Jan 2 2012 Fabian Groffen <fabian@cwi.nl> - 11.7.1-20120111 +- Implemented getMetaData() method of PreparedStatement. + +* Tue Dec 27 2011 Fabian Groffen <fabian@cwi.nl> - 11.7.1-20120111 +- Fixed an AssertionError for special results from e.g. EXPLAIN queries. + +* Wed Dec 21 2011 Fabian Groffen <fabian@cwi.nl> - 11.7.1-20120111 +- Fixed overflow error when batching large statements, bug #2952 + +* Tue Dec 20 2011 Fabian Groffen <fabian@cwi.nl> - 11.7.1-20120111 +- Resolved a concurrency problem where ResultSet's date-related getters + could cause odd stack traces when used by multiple threads at the + same time, bug #2950. + +* Mon Dec 19 2011 Fabian Groffen <fabian@cwi.nl> - 11.7.1-20120111 +- JDBC now implements JDBCv4.1 which makes it possible to be built with + Java 7 and up. JDBCv4.1 is a maintenance release of JDBCv4, and hence + can be compiled with Java 6, although the added methods obviously are + not part of the java.sql interfaces. + +* Sun Dec 11 2011 Fabian Groffen <fabian@cwi.nl> - 11.7.1-20120111 +- SQLExceptions thrown now carry a SQLSTATE. Until the server starts + sending correct SQLSTATEs for all errors, server originated errors + without SQLSTATE are considered generic data exceptions (22000). + +* Sat Dec 10 2011 Fabian Groffen <fabian@cwi.nl> - 11.7.1-20120111 +- Fixed a bug where closing ResultSets and PreparedStatements could lead + to errors on concurrent running queries using the same Connection due + to a race condition. + +* Thu Dec 8 2011 Fabian Groffen <fabian@cwi.nl> - 11.7.1-20120111 +- Changed version scheme of JDBC driver and MCL jar to be more standard, + from monetdb-X.Y-<thing>.jar to monetdb-<thing>-X.Y.jar, bug #2943 + +* Fri Oct 14 2011 Fabian Groffen <fabian@cwi.nl> - 11.7.1-20120111 +- The embedded monet instance capability of MonetConnection was removed. +- Bump JDBC version to 2.0 (Liberica). JDBC now implements JDBCv4 which + makes it possible to be built with Java 6 and up. Java 5 and before + are no longer supported, and can use the 1.x releases of the driver. + +* Thu Sep 1 2011 Fabian Groffen <fabian@cwi.nl> - 11.7.1-20120111 +- INTERVAL columns are now treated as decimals, since they can have + sub-second precision. + +* Thu Jun 30 2011 Fabian Groffen <fabian@cwi.nl> - 11.5.1-20110907 +- Add so_timeout Driver property to specify a SO_TIMEOUT value for the + socket in use to the database. Setting this property to a value in + milliseconds defines the timeout for read calls, which may 'unlock' + the driver if the server hangs, bug #2828 + +* Wed May 25 2011 Fabian Groffen <fabian@cwi.nl> - 11.5.1-20110907 +- Added a naive implementation for PreparedStatement.setCharacterStream + +* Mon Apr 11 2011 Fabian Groffen <fabian@cwi.nl> - 11.5.1-20110907 +- The obsolete Java-based implementation for PreparedStatements (formerly + activated using the java_prepared_statements property) has been dropped + +* Fri Jul 8 2011 Fabian Groffen <fabian@cwi.nl> - 11.3.5-20110720 +- Return false from Statement.getMoreResults() instead of a + NullPointerException when no query has been performed on the Statement + yet, bug #2833 + +* Mon Jun 6 2011 Fabian Groffen <fabian@cwi.nl> - 11.3.5-20110720 +- Fixed read-only interpretation. Connection.isReadOnly now always + returns false, setReadOnly now generates a warning when called with + true. Partly from bug #2818 +- Allow readonly to be set when autocommit is disabled as well. Bug #2818 + +* Wed May 11 2011 Fabian Groffen <fabian@cwi.nl> - 11.3.3-20110517 +- Insertion via PreparedStatement and retrieval via ResultSet of timestamp + and time fields with and without timezones was improved to better + respect timezones, as partly indicated in bug #2781. + +* Tue Apr 5 2011 Fabian Groffen <fabian@cwi.nl> - 11.3.1-20110414 +- clarify exception messages for unsupported methods + +* Mon Feb 7 2011 Fabian Groffen <fabian@cwi.nl> - 11.3.1-20110414 +- Removed XQuery related XRPC wrapper and XML:DB code, removed support + for language=xquery and language=mil from JDBC. + +* Wed Dec 15 2010 Fabian Groffen <fabian@cwi.nl> - 11.1.1-20110317 +- PreparedStatements now free the server-side resources attached to them + when closed. This implements bug #2720 + +* Tue Nov 9 2010 Fabian Groffen <fabian@cwi.nl> - 1.40.1-20101110 +- Fix SQL syntax of inserting BLOB code, using setBytes() +- Added propery 'treat_blob_as_binary' to simulate BINARY types based on + BLOBs for applications, (e.g. Hibernate-based) that rely on BINARY's + byte array mapping +- Added code to handle BINARY types +- Fixed implementation of getBytes to match the specifications +- Implemented getBinaryStream according to the specifications + +* Mon Nov 8 2010 Fabian Groffen <fabian@cwi.nl> - 1.40.1-20101109 +- Java 1.6's subSequence() bug has changed into a slice() bug since + 1.6.0_22. Revert workaround for subSequence breakage, since it breaks + operating with the latest Java 1.6. + +* Fri Oct 22 2010 Fabian Groffen <fabian@cwi.nl> - 1.40.1-20101029 +- Fix for bug #2703, allow to have multiple metadata ResultSets open at + the same time + +* Wed Aug 11 2010 Fabian Groffen <fabian@cwi.nl> - 1.38.5-20100823 +- Implemented ResultSet's getCharacterStream methods, since Hibernate seems to + call this method for retrieving CLOB columns that we now do support. + +* Fri Aug 06 2010 Fabian Groffen <fabian@cwi.nl> - 1.38.5-20100823 +- Fix implementation of setBytes method of PreparedStatement, such that bytes + are converted to MonetDB/SQL's BLOB notation. + +* Wed Jul 21 2010 Fabian Groffen <fabian@cwi.nl> - 1.38.5-20100823 +- merocontrol Java library requires Java 2 Platform 1.5 and up, due to enum + and boxing/unboxing. Bug #2627 + +* Tue Jul 20 2010 Fabian Groffen <fabian@cwi.nl> - 1.38.5-20100823 +- Implement missing Blob support (readonly), since getObject will blindly + return a BLOB instance as String, which is causing applications to wrongly + believe a BLOB instance is a string. + +* Fri Jul 16 2010 Fabian Groffen <fabian@cwi.nl> - 1.38.5-20100823 +- Fix problem when using the MAL language. Any statement would return + an error with a typo that was not typed in by the user, such as + ioo.printf when io.printf was typed. + +* Fri Apr 16 2010 Fabian Groffen <fabian@cwi.nl> - Jun2010-SP1 +- Enable the merovingian control library for default distribution as it + has been in use for some time without problems now. + +* Wed Mar 31 2010 Stefan Manegold <manegold@cwi.nl> - Jun2010-SP1 +- Made compilation of "testing" (and "java") independent of MonetDB. + This is mainly for Windows, but also on other systems, "testing" can now be + built independently of (and hence before) "MonetDB". + Files that mimic configure functionality on Windows were moved from + "MonetDB" to "buildtools"; hence, this affects all packages on Windows, + requiring a complete rebuild from scratch on Windows. + getopt() support in testing has changed; hence, (most probably) requiring a + rebuild from scratch of testing on other systems. + +* Wed Mar 31 2010 Fabian Groffen <fabian@cwi.nl> - Feb2010-SP2 +- Do not to throw an SQLException, but generate a warning and try to + perform as much as requested in an optimistic manner, as not to break + clients that rely on the called method, but don't really use its + functionality (such as high-level generic programs that call any + driver and try to put it in a mode that it does what they expect). + The following functions no longer throw an SQLException but now + generate a warning and perform actions as far as possible: + - Statement.execute(sql, columnIndexes/columnNames) + - Statement.executeUpdate(sql, columnIndexes/columnNames) + - Statement.getMaxFieldSize() + - Statement.setCursorName(name) + - Statement.setEscapeProcessing(enable) + - Statement.setMaxFieldSize(max) + - Statement.setQueryTimeout(seconds) + - PreparedStatement.getMetaData() + - PreparedStatement.setNull(paramIndex, sqlType, typeName) + +* Wed Mar 24 2010 Stefan Manegold <manegold@cwi.nl> - Jun2010-SP1 +- Implemented build directory support for Windows, + i.e., like on Unix/Linux also on Windows we can now build in a separate + build directory as alternative to ...\<package>\NT, and thus keep the + latter clean from files generated during the build. + On Windows, the build directory must be a sibling of ...\<package>\NT . + +* Tue Mar 09 2010 Fabian Groffen <fabian@cwi.nl> - Feb2010-SP1 +- Set JAVA_HOME to the configure derived value, such that ant will use + the javac compiler as found by configure, and not the one it was built + with itself. This solves the problem that the JDBC driver still fails + to compile on e.g. Fedora systems even though configure + --with-java=/path/to/sun/jdk-5 was given, because ant still uses + gjc/icedtea by itself. + +* Mon Oct 12 2009 Wouter Alink <w.alink@cwi.nl> - Aug2009-SP2 +- Bump MCL version to 1.6 for fix. + +* Fri Oct 09 2009 Fabian Groffen <fabian@cwi.nl> - Feb2010 +- Bump Java source version to 1.5. Java 1.5 is the current J2EE, and code + from nl.cwi.monetdb.merovingian relies on Java 1.5 features. It seems + like a good time to deprecate 1.4 now 1.6 is about to become the new + J2EE version. + +* Fri Oct 09 2009 Wouter Alink <w.alink@cwi.nl> - Aug2009-SP2 +- applied workaround for bug in Sun JRE 1.6. + +* Thu Oct 01 2009 Fabian Groffen <fabian@cwi.nl> - Aug2009-SP2 +- Bump JDBC version to 1.14 for fix. + +* Thu Oct 01 2009 Fabian Groffen <fabian@cwi.nl> - Aug2009-SP2 +- Fix warning messages to disappear when a connection to merovingian is + made. + +* Sun Aug 23 2009 Fabian Groffen <fabian@cwi.nl> - Aug2009-SP1 +- Bump JDBC version to 1.13 for fix. + +* Sun Aug 23 2009 Fabian Groffen <fabian@cwi.nl> - Aug2009-SP1 +- Avoid "ResultSet is closed" messages by disabling the use of + finalizers, bug #2844202 + +* Thu Mar 26 2009 Fabian Groffen <fabian@cwi.nl> - Feb2010 +- Fix configure handling for --enable-{jdbc,xrpc}, by Yue Sheng on + Monetdb-developers ML +
new file mode 100644 --- /dev/null +++ b/ChangeLog.Jun2016 @@ -0,0 +1,3 @@ +# ChangeLog file for java +# This file is updated with Maddlog +
new file mode 100644 --- /dev/null +++ b/Makefile.ag @@ -0,0 +1,28 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + +SUBDIRS = HAVE_JAVAJDBC?tests + +EXTRA_DIST = build.xml build.properties release.txt + +EXTRA_DIST_DIR = src \ + example + +JAVA_HOME = @JAVA_HOME@ + +ant_distjdbc = { + COND = HAVE_JAVAJDBC + DIR = datadir/monetdb/lib + FILES = monetdb-mcl-1.13.jar monetdb-jdbc-2.23.jar jdbcclient.jar +} + +ant_distmerocontrol = { + COND = HAVE_JAVAMEROCONTROL + DIR = datadir/monetdb/lib + FILES = merocontrol.jar +} + +# vim: ft=automake :
new file mode 100644 --- /dev/null +++ b/SQLSTATEs @@ -0,0 +1,56 @@ +08M01 opening logfile failed +01M02 redirect warning +M0M03 illegal arguments (invalid call of internal function) +01M03 illegal arguments (invalid call of internal function) +M0M04 only supported in SQL mode +M1M05 invalid argument (user supplied) +M0M06 savepoint is not MonetSavepoint +01M07 unrecognised clientinfo property +01M08 read-only conection mode not supported +01M09 transaction mode not supported +M0M10 protocol violation/unexpected server response +01M10 unexpected server output +01M11 server-client autocommit state mismatch +M0M12 matching client handle referenced by server not found +01M13 concurrency mode not supported +01M14 scrolling mode not supported +01M15 holdability mode not supported +M1M16 multistatements not supported in batches +M1M17 result set not expected for DML or DDL-statement +01M18 generated keys for columns not supported +M1M19 response is not a result set +M1M20 object closed +01M21 cursors not supported +0AM21 cursors not supported +01M22 JDBC escape syntax not supported +01M23 field size limitation not supported +01M24 query time out not supported +M1M25 failed reading from/writing to object stream +08M26 invalid URI +M0M27 unknown error +22M28 invalid BLOB format +M0M29 assert +3BM30 autocommit mode active +2DM30 autocommit mode active +42M31 user/role already exists +42M32 user/role not found +08M33 connection timeout +0AM34 Java generics not supported +42M35 sequence not found +42M36 cannot restart sequence with NULL +2BM37 dependent objects still exist + +TODO: +JDBC 4.1 suggests the following SQLException subclass mapping: +NonTransientSQLExeceptions (fails when same operation executed again) +0A SQLFeatureNotSupportedException +08 SQLNonTransientConnectionException +22 SQLDataException +23 SQLIntegrityConstraintViolationException +28 SQLInvalidAuthorizationException +42 SQLSyntaxErrorException +TransientSQLExeceptions (retry of same operation might succeed) +08 SQLTransientConnectionException +40 SQLTransactionRollbackException + SQLTimeoutException +
new file mode 100644 --- /dev/null +++ b/build.properties @@ -0,0 +1,36 @@ +# Default build parameters. These may be overridden by local configuration +# settings in build.local.properties. + + +## +## MCL +## + +# major release number +MCL_MAJOR=1 +# minor release number +MCL_MINOR=13 + + +## +## JDBC (and client) +## + +# major release number +JDBC_MAJOR=2 +# minor release number +JDBC_MINOR=23 +# an additional identifying string +JDBC_VER_SUFFIX=Liberica +# the default port to connect on, if no port given when using SQL +JDBC_DEF_PORT=50000 + + +## +## General +## + +# should we compile with debugging symbols +enable_debug=true +# should we optimize the build, preferably not for debugging +enable_optimize=false
new file mode 100644 --- /dev/null +++ b/build.xml @@ -0,0 +1,385 @@ +<?xml version="1.0"?><!-- vim:set ts=2 sw=2 expandtab: --> + +<!-- +This Source Code Form is subject to the terms of the Mozilla Public +License, v. 2.0. If a copy of the MPL was not distributed with this +file, You can obtain one at http://mozilla.org/MPL/2.0/. + +Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. +--> + +<!-- + + Build file to allow ant (http://jakarta.apache.org/ant/) to be used + to build the MonetDB Java libraries, such as the JDBC and XML:DB + drivers. + +--> + +<project name="MonetDB_Java_Drivers" default="default" basedir="."> + + + <!-- set global properties for this build --> + <property name="srcdir" value="src/main/java" /> + <property name="libdir" value="lib" /> + <property name="jardir" value="jars" /> + <property name="builddir" value="build" /> + <property name="docdir" value="doc" /> + <property name="jdbc-package" value="nl/cwi/monetdb/jdbc" /> + <property name="mcl-package" value="nl/cwi/monetdb/mcl" /> + <property name="client-package" value="nl/cwi/monetdb/client" /> + <property name="util-package" value="nl/cwi/monetdb/util" /> + <property name="mero-control-package" value="nl/cwi/monetdb/merovingian" /> + + <property file="build.local.properties" /> + <property file="build.properties" /> + + <property name="jdbc-jar" + value="${jardir}/monetdb-jdbc-${JDBC_MAJOR}.${JDBC_MINOR}.jar" /> + <property name="jdbcclient-jar" + value="${jardir}/jdbcclient.jar" /> + <property name="jmonetdb-jar" + value="${jardir}/jmonetdb.jar" /> + <property name="mcl-jar" + value="${jardir}/monetdb-mcl-${MCL_MAJOR}.${MCL_MINOR}.jar" /> + + <property name="mero-control-jar" + value="${jardir}/merocontrol.jar" /> + + <!-- + + Cross-compile for JVM 1.5 ("Java 5"). This allows the driver to work with older java installations. + see also https://blogs.oracle.com/darcy/entry/bootclasspath_older_source for details on the error message w.r.t rt.jar + to get around this issue, the -Xlint:-options compiler option has also been addded. + 2013-04-17, hannes@cwi.nl + + Update: cross-compile for JVM 1.7 since 1.5 and 1.6 are both long + since EOL. + 2015-07-16, sjoerd@acm.org + + --> + <property name="jvm.version" value="1.7" /> + <property name="javac.flags" value="-Xlint:-options" /> + + <!-- full target --> + <target name="all"> + <antcall target="distjdbc" /> + + <antcall target="distmerocontrol" /> + + <antcall target="doc" /> + </target> + + <target name="distall"> + <antcall target="distjdbc" /> + <antcall target="distmerocontrol" /> + </target> + + <target name="default"> + <antcall target="jar_jdbcclient" /> + <antcall target="jar_jmonetdb" /> + </target> + + <target name="distjdbc"> + <antcall target="jar_jdbc" /> + <antcall target="jar_mcl" /> + <antcall target="jar_jdbcclient" /> + </target> + + <target name="distmerocontrol"> + <antcall target="jar_mero_control" /> + </target> + + <!-- jar targets --> + <target name="jar_jdbc" depends="compile_mcl,compile_jdbc" + unless="uptodate.jdbc-jar"> + <echo file="${builddir}/META-INF/services/java.sql.Driver" append="false">nl.cwi.monetdb.jdbc.MonetDriver</echo> + <jar jarfile="${jdbc-jar}"> + <fileset dir="${builddir}"> + <include name="${jdbc-package}/**/*.class" /> + <include name="${mcl-package}/**/*.class" /> + <include name="META-INF/services/java.sql.Driver" /> + </fileset> + </jar> + </target> + + <target name="jar_mcl" depends="compile_mcl"> + <jar jarfile="${mcl-jar}"> + <fileset dir="${builddir}"> + <include name="${mcl-package}/**/*.class" /> + </fileset> + </jar> + </target> + + <target name="jar_client" depends="compile_util,compile_client"> + <jar jarfile="${jardir}/monetdb-clients.jar"> + <fileset dir="${builddir}"> + <include name="${client-package}/**/*.class" /> + <include name="${util-package}/**/*.class" /> + </fileset> + </jar> + </target> + + <!-- a convenience jar of JDBC plus the JdbcClient utililty --> + <target name="jar_jdbcclient" + depends="compile_mcl,compile_jdbc,compile_util,compile_client" + unless="uptodate.jdbcclient-jar"> + <echo message="Building JDBC + JdbcClient convenience jar" /> + <jar jarfile="${jdbcclient-jar}"> + <fileset dir="${builddir}"> + <include name="${jdbc-package}/**/*.class" /> + <include name="${mcl-package}/**/*.class" /> + <include name="${client-package}/**/*.class" /> + <include name="${util-package}/**/*.class" /> + <include name="META-INF/services/java.sql.Driver" /> + </fileset> + <manifest> + <attribute name="Built-By" value="${user.name}" /> + <attribute name="Main-Class" value="nl.cwi.monetdb.client.JdbcClient" /> + </manifest> + </jar> + </target> + + <!-- a convenience jar of MeroControl plus the JMonetDB utility --> + <target name="jar_jmonetdb" + depends="compile_mcl,compile_util,compile_mero_control,compile_client" + unless="uptodate.jmonetdb-jar"> + <echo message="Building MeroControl + JmonetDB convenience jar" /> + <jar jarfile="${jmonetdb-jar}"> + <fileset dir="${builddir}"> + <include name="${mero-control-package}/**/*.class" /> + <include name="${mcl-package}/**/*.class" /> + <include name="${client-package}/**/JMonetDB.class" /> + <include name="${util-package}/**/*.class" /> + </fileset> + <manifest> + <attribute name="Built-By" value="${user.name}" /> + <attribute name="Main-Class" value="nl.cwi.monetdb.client.JMonetDB" /> + </manifest> + </jar> + </target> + + <target name="jar_mero_control" + depends="compile_mcl,compile_mero_control"> + <jar jarfile="${mero-control-jar}"> + <fileset dir="${builddir}"> + <include name="${mero-control-package}/**/*.class" /> + </fileset> + <manifest> + <attribute name="Built-By" value="${user.name}" /> + </manifest> + </jar> + </target> + + <!-- compile targets --> + <target name="compile_jdbc" depends="prepare,driver"> + <echo message="Compiling JDBC driver" /> + <javac + classpath="${srcdir}" + destdir="${builddir}" + debug="${debug}" + optimize="${optimize}" + includeantruntime="false" + source="${jvm.version}" + target="${jvm.version}" + > + <src path="${srcdir}" /> + <include name="${jdbc-package}/**/*.java" /> + <compilerarg line="${javac.flags}" /> + </javac> + </target> + + <target name="compile_mcl" depends="prepare"> + <echo message="Compiling MCL" /> + <javac + classpath="${srcdir}" + srcdir="${srcdir}" + destdir="${builddir}" + debug="${debug}" + optimize="${optimize}" + includeantruntime="false" + source="${jvm.version}" + target="${jvm.version}" + > + <include name="${mcl-package}/**/*.java" /> + <compilerarg line="${javac.flags}" /> + </javac> + </target> + + <target name="compile_client" depends="prepare"> + <echo message="Compiling Clients" /> + <javac + classpath="${srcdir}" + srcdir="${srcdir}" + destdir="${builddir}" + debug="${debug}" + optimize="${optimize}" + includeantruntime="false" + source="${jvm.version}" + target="${jvm.version}" + > + <include name="${client-package}/**/*.java" /> + <compilerarg line="${javac.flags}" /> + </javac> + </target> + + <target name="compile_util" depends="prepare"> + <echo message="Compiling Utilities" /> + <javac + classpath="${srcdir}" + srcdir="${srcdir}" + destdir="${builddir}" + debug="${debug}" + optimize="${optimize}" + includeantruntime="false" + source="${jvm.version}" + target="${jvm.version}" + > + <include name="${util-package}/**/*.java" /> + <compilerarg line="${javac.flags}" /> + </javac> + </target> + + <target name="compile_mero_control" depends="prepare"> + <echo message="Compiling Merovingian Control library" /> + <javac + classpath="${srcdir}" + srcdir="${srcdir}" + destdir="${builddir}" + debug="${debug}" + optimize="${optimize}" + includeantruntime="false" + source="${jvm.version}" + target="${jvm.version}" + > + <include name="${mero-control-package}/**/*.java" /> + <compilerarg line="${javac.flags}" /> + </javac> + </target> + + <!-- + This generates MonetDriver.java from its ".java.in" equivalents. It's + required for importing the driver version properties. + --> + <target name="driver" depends="prepare" unless="uptodate.drivers"> + <tstamp> + <format property="TODAY" pattern="yyyyMMdd" /> + </tstamp> + + <!-- Some defaults --> + <filter token="JDBC_MAJOR" value="${JDBC_MAJOR}" /> + <filter token="JDBC_MINOR" value="${JDBC_MINOR}" /> + <filter token="MCL_MAJOR" value="${MCL_MAJOR}" /> + <filter token="MCL_MINOR" value="${MCL_MINOR}" /> + <filter token="JDBC_DEF_PORT" value="${JDBC_DEF_PORT}" /> + <filter token="JDBC_VER_SUFFIX" value="${JDBC_VER_SUFFIX} ${TODAY}" /> + + <fail unless="JDBC_MAJOR" message="'JDBC_MAJOR' undefined. Please follow the directions in build.properties."/> + <fail unless="JDBC_MINOR" message="'JDBC_MINOR' undefined. Please follow the directions in build.properties."/> + <fail unless="JDBC_DEF_PORT" message="'JDBC_DEF_PORT' undefined. Please follow the directions in build.properties."/> + <fail unless="JDBC_VER_SUFFIX" message="'JDBC_VER_SUFFIX' undefined. Please follow the directions in build.properties."/> + + <!-- now copy and filter the file --> + <copy file="${srcdir}/${jdbc-package}/MonetDriver.java.in" + overwrite="true" + tofile="${srcdir}/${jdbc-package}/MonetDriver.java" + filtering="yes" /> + + <echo message="Configured build for the ${JDBC_MAJOR}.${JDBC_MINOR} (${JDBC_VER_SUFFIX}) edition driver" /> + </target> + + <!-- Prepares the build directory and sets some variables --> + <!-- checks whether regeneration of files is necessary --> + <target name="prepare"> + <condition property="debug" value="true"> + <equals arg1="${enable_debug}" arg2="true" casesensitive="false" trim="true" /> + </condition> + <condition property="debug" value="false"> + <not> + <equals arg1="${enable_debug}" arg2="true" casesensitive="false" trim="true" /> + </not> + </condition> + <condition property="optimize" value="true"> + <equals arg1="${enable_optimize}" arg2="true" casesensitive="false" trim="true" /> + </condition> + <condition property="optimize" value="false"> + <not> + <equals arg1="${enable_optimize}" arg2="true" casesensitive="false" trim="true" /> + </not> + </condition> + + <uptodate targetfile="${jdbc-jar}" property="uptodate.jdbc-jar"> + <srcfiles dir="${srcdir}"> + <include name="${jdbc-package}/**/*.java" /> + <include name="${mcl-package}/**/*.java" /> + </srcfiles> + </uptodate> + <uptodate targetfile="${jdbcclient-jar}" property="uptodate.jdbcclient-jar"> + <srcfiles dir="${srcdir}"> + <include name="${client-package}/**/*.java" /> + <include name="${jdbc-package}/**/*.java" /> + <include name="${mcl-package}/**/*.java" /> + </srcfiles> + </uptodate> + <uptodate targetfile="${jmonetdb-jar}" property="uptodate.jmonetdb-jar"> + <srcfiles dir="${srcdir}"> + <include name="${client-package}/**/*.java" /> + <include name="${mero-control-package}/**/*.java" /> + <include name="${mcl-package}/**/*.java" /> + </srcfiles> + </uptodate> + <condition property="uptodate.drivers"> + <and> + <uptodate targetfile="${builddir}/src/${jdbc-package}/MonetDriver.java"> + <srcfiles dir="${srcdir}"> + <include name="build.properties" /> + <include name="build.local.properties" /> + <include name="${jdbc-package}/MonetDriver.java.in" /> + <include name="${jdbc-package}/**/*.java" /> + </srcfiles> + </uptodate> + </and> + </condition> + + <mkdir dir="${builddir}" /> + <mkdir dir="${jardir}" /> + <echo message="Debug is ${debug}, optimise is ${optimize}" /> + </target> + + <!-- This target removes the build, jar and doc directories --> + <target name="clean"> + <delete quiet="true" dir="${builddir}" /> + <delete quiet="true" dir="${jardir}" /> + <delete quiet="true" dir="${docdir}" /> + </target> + + + <!-- documentation target --> + <target name="doc" + depends="compile_mcl,compile_jdbc,compile_util,compile_client,compile_mero_control"> + <javadoc + destdir="${docdir}" + author="true" + version="true" + use="true" + windowtitle="MonetDB Java APIs"> + + <fileset dir="${srcdir}" defaultexcludes="yes"> + <include name="${jdbc-package}/**/*.java" /> + <include name="${mcl-package}/**/*.java" /> + <include name="${client-package}/**/*.java" /> + <include name="${util-package}/**/*.java" /> + <include name="${mero-control-package}/**/*.java" /> + </fileset> + + <fileset dir="${builddir}/src" defaultexcludes="yes"> + <include name="${jdbc-package}/**/*.java" /> + <include name="${mcl-package}/**/*.java" /> + <include name="${client-package}/**/*.java" /> + <include name="${util-package}/**/*.java" /> + <include name="${mero-control-package}/**/*.java" /> + </fileset> + </javadoc> + </target> + +</project>
new file mode 100644 --- /dev/null +++ b/example/MJDBCTest.java @@ -0,0 +1,101 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +import java.sql.*; + +/** + * This example assumes there exists tables a and b filled with some data. + * On these tables some queries are executed and the JDBC driver is tested + * on it's accuracy and robustness against 'users'. + * + * @author Fabian Groffen + */ +public class MJDBCTest { + public static void main(String[] args) throws Exception { + // make sure the driver is loaded + Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); + // turn on debugging (disabled) + //nl.cwi.monetdb.jdbc.MonetConnection.setDebug(true); + Connection con = DriverManager.getConnection("jdbc:monetdb://localhost/notused", "monetdb", "monetdb"); + Statement st = con.createStatement(); + ResultSet rs; + + rs = st.executeQuery("SELECT a.var1, COUNT(b.id) as total FROM a, b WHERE a.var1 = b.id AND a.var1 = 'andb' GROUP BY a.var1 ORDER BY a.var1, total;"); + // get meta data and print columns with their type + ResultSetMetaData md = rs.getMetaData(); + for (int i = 1; i <= md.getColumnCount(); i++) { + System.out.print(md.getColumnName(i) + ":" + + md.getColumnTypeName(i) + "\t"); + } + System.out.println(""); + // print the data: only the first 5 rows, while there probably are + // a lot more. This shouldn't cause any problems afterwards since the + // result should get properly discarded on the next query + for (int i = 0; rs.next() && i < 5; i++) { + for (int j = 1; j <= md.getColumnCount(); j++) { + System.out.print(rs.getString(j) + "\t"); + } + System.out.println(""); + } + + // tell the driver to only return 5 rows, it can optimize on this + // value, and will not fetch any more than 5 rows. + st.setMaxRows(5); + // we ask the database for 22 rows, while we set the JDBC driver to + // 5 rows, this shouldn't be a problem at all... + rs = st.executeQuery("select * from a limit 22"); + // read till the driver says there are no rows left + for (int i = 0; rs.next(); i++) { + System.out.print("[" + rs.getString("var1") + "]"); + System.out.print("[" + rs.getString("var2") + "]"); + System.out.print("[" + rs.getInt("var3") + "]"); + System.out.println("[" + rs.getString("var4") + "]"); + } + + // this close is not needed, should be done by next execute(Query) call + // however if there can be some time between this point and the next + // execute call, it is from a resource perspective better to close it. + //rs.close(); + + // unset the row limit; 0 means as much as the database sends us + st.setMaxRows(0); + // we only ask 10 rows + rs = st.executeQuery("select * from b limit 10;"); + // and simply print them + while (rs.next()) { + System.out.print(rs.getInt("rowid") + ", "); + System.out.print(rs.getString("id") + ", "); + System.out.print(rs.getInt("var1") + ", "); + System.out.print(rs.getInt("var2") + ", "); + System.out.print(rs.getString("var3") + ", "); + System.out.println(rs.getString("var4")); + } + + // this close is not needed, as the Statement will close the last + // ResultSet around when it's closed + // again, if that can take some time, it's nicer to close immediately + // the reason why these closes are commented out here, is to test if + // the driver really cleans up it's mess like it should + //rs.close(); + + // perform a ResultSet-less query (with no trailing ; since that should + // be possible as well and is JDBC standard) + // Note that this method should return the number of updated rows. This + // method however always returns -1, since Monet currently doesn't + // support returning the affected rows. + st.executeUpdate("delete from a where var1 = 'zzzz'"); + + // closing the connection should take care of closing all generated + // statements from it... + // Don't forget to do it yourself if the connection is reused or much + // longer alive, since the Statement object contains a lot of things + // you probably want to reclaim if you don't need them anymore. + //st.close(); + con.close(); + } +}
new file mode 100644 --- /dev/null +++ b/example/PreparedExample.java @@ -0,0 +1,45 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +import java.sql.*; + +/** + * This example shows the use of the PreparedStatement + * + * @author Fabian Groffen + */ +public class PreparedExample { + public static void main(String[] args) throws Exception { + // make sure the driver is loaded + Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); + Connection con = DriverManager.getConnection("jdbc:monetdb://localhost/notused", "monetdb", "monetdb"); + PreparedStatement st = con.prepareStatement("SELECT ? AS a1, ? AS a2"); + ResultSet rs; + + st.setString(1, "te\\s't"); + st.setInt(2, 10); + + rs = st.executeQuery(); + // get meta data and print columns with their type + ResultSetMetaData md = rs.getMetaData(); + for (int i = 1; i <= md.getColumnCount(); i++) { + System.out.print(md.getColumnName(i) + ":" + + md.getColumnTypeName(i) + "\t"); + } + System.out.println(""); + + while (rs.next()) { + for (int j = 1; j <= md.getColumnCount(); j++) { + System.out.print(rs.getString(j) + "\t"); + } + System.out.println(""); + } + + con.close(); + } +}
new file mode 100644 --- /dev/null +++ b/example/SQLImport.java @@ -0,0 +1,79 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +import java.sql.*; +import java.io.*; + +/** + * This simple example somewhat emulates the mclient command. However in + * it's simpleness it only supports SQL queries which entirely are on one line. + * + * This program reads a file line by line, and feeds the line into a running + * Mserver on the localhost. Upon error, the error is reported and the program + * continues reading and executing lines. + * A very lousy way of implementing options is used to somewhat configure the + * behaviour of the program in order to be a bit more verbose or commit after + * each (sucessfully) executed line. + * + * The program uses a debuglog in which the exact conversation between the + * JDBC driver and Mserver is reported. The log file is put in the current + * working directory and names like monet_[unix timestamp].log + * + * @author Fabian Groffen + */ + +public class SQLImport { + public static void main(String[] args) throws Exception { + if (args.length < 1) { + System.out.println("synopsis: java SQLImport filename [autocommit] [verbose]"); + System.exit(-1); + } + + // open the file + BufferedReader fr = new BufferedReader(new FileReader(args[0])); + + // make sure the driver is loaded + Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); + // request a connection suitable for Monet from the driver manager + // note that the database specifier is currently not implemented, for + // Monet itself can't access multiple databases. + // turn on debugging + Connection con = DriverManager.getConnection("jdbc:monetdb://localhost/database?debug=true", "monetdb", "monetdb"); + + boolean beVerbose = false; + if (args.length == 3) { + // turn on verbose mode + beVerbose = true; + } + if (args.length < 2) { + // disable auto commit using the driver + con.setAutoCommit(false); + } + + // get a statement to execute on + Statement stmt = con.createStatement(); + + String query; + for (int i = 1; (query = fr.readLine()) != null; i++) { + if (beVerbose) System.out.println(query); + try { + // execute the query, no matter what it is + stmt.execute(query); + } catch (SQLException e) { + System.out.println("Error on line " + i + ": " + e.getMessage()); + if (!beVerbose) System.out.println(query); + } + } + + // free resources, close the statement + stmt.close(); + // close the connection with the database + con.close(); + fr.close(); + } +}
new file mode 100644 --- /dev/null +++ b/example/SQLcopyinto.java @@ -0,0 +1,111 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +import java.sql.*; +import java.io.*; +import java.util.*; +import nl.cwi.monetdb.mcl.net.*; +import nl.cwi.monetdb.mcl.io.*; + +/** + * This example demonstrates how the MonetDB JDBC driver can facilitate + * in performing COPY INTO sequences. This is mainly meant to show how + * a quick load can be performed from Java. + * + * @author Fabian Groffen + */ + +public class SQLcopyinto { + public static void main(String[] args) throws Exception { + // make sure the driver is loaded + Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); + // request a connection suitable for Monet from the driver manager + // note that the database specifier is currently not implemented, for + // Monet itself can't access multiple databases. + // turn on debugging + Connection con = DriverManager.getConnection("jdbc:monetdb://localhost/database", "monetdb", "monetdb"); + + // get a statement to execute on + Statement stmt = con.createStatement(); + + String query = "CREATE TABLE example (id int, val varchar(24))"; + try { + stmt.execute(query); + } catch (SQLException e) { + System.out.println(query + ": " + e.getMessage()); + System.exit(1); + } + + // now create a connection manually to perform a load, this can + // of course also be done simultaneously with the JDBC + // connection being kept connected + + MapiSocket server = new MapiSocket(); + + server.setDatabase("database"); + server.setLanguage("sql"); + + try { + List warning = + server.connect("localhost", 50000, "monetdb", "monetdb"); + if (warning != null) { + for (Iterator it = warning.iterator(); it.hasNext(); ) { + System.out.println(it.next().toString()); + } + } + + BufferedMCLReader in = server.getReader(); + BufferedMCLWriter out = server.getWriter(); + + String error = in.waitForPrompt(); + if (error != null) + throw new Exception(error); + + query = "COPY INTO example FROM STDIN USING DELIMITERS ',','\\n';"; + // the leading 's' is essential, since it is a protocol + // marker that should not be omitted, likewise the + // trailing semicolon + out.write('s'); + out.write(query); + out.newLine(); + for (int i = 0; i < 100; i++) { + out.write("" + i + ",val_" + i); + out.newLine(); + } + out.writeLine(""); // need this one for synchronisation over flush() + error = in.waitForPrompt(); + if (error != null) + throw new Exception(error); + // disconnect from server + server.close(); + } catch (IOException e) { + System.err.println("unable to connect: " + e.getMessage()); + System.exit(-1); + } catch (Exception e) { + System.err.println(e.getMessage()); + System.exit(-1); + } + + query = "SELECT COUNT(*) FROM example"; + ResultSet rs = null; + try { + rs = stmt.executeQuery(query); + } catch (SQLException e) { + System.out.println(query + ": " + e.getMessage()); + System.exit(1); + } + if (rs != null && rs.next()) + System.out.println(rs.getString(1)); + + // free resources, close the statement + stmt.close(); + // close the connection with the database + con.close(); + + } +}
new file mode 100644 index 0000000000000000000000000000000000000000..6ac85a733bcf33556961662141bb1bcf7abbd996 GIT binary patch literal 961144 zc$~!jXH-<%)-?*Fh$u<PQ6&c@RISP)C^;)R8^}2$85GG`augJhoKZkPRDvWC0g<R6 zk_Aa3B7(PpKF_<YT9){J-);BLY5TNo-}bde^|9t0eatbrlqIDFpn?Di*TjeJK5`N$ zD}>d~(30fbIT9gdM?2%|MkbD|ykbU<c7_JdtdbT^&KB0zCXTEUb~ZK!w#KY5K?s!9 z)XtGr&Cc4u(ZY!p5QMSr{tIgZXA?(OeO@(XF;xkDK0Xp52}ctHXFEq$UTH@I8xti1 zD-%angdjo?Dac16q-19-Y2a+a$}4#mfIy&72m}KGphy_{e}EQtw*UD95C|NAK;cjr z6v9U$DoSEvYrM-E_8<0=ta<<|gjJPQNLxpj)%Loz_5b;w%m2Z^|1U6z{|gNAj~FNt z!3sc7I0)1q5hyq-6b-`xpz#7wxBv`Z01_7fh2TXXKoC&82$08y0(jpP0tUr}{5kNu z5ID%AL;oE2JqR3x*q_6`2Z2FwA%Bkg?$g6Sc>Oo(iYB&Z&gQI0G#o)9ByC~6D=8uA zU1>?07}*({?Bbl99Zd{u$Vp^FthL&sIorv<SJQBb0iPrel3bwdXuF)U?&Y$M%BmxD zP<Kj?Bs(--bCB`s4X^DF89zcx&+qJnmi}mHXgpJ|t5_=9_p$WGjcwwCcVy40n0kB6 zmm+)nR^7H^{9E<xE|qR-NO(|P`uzQcia*Db>Xq>C9yd;i-H@L}AJ4db#@@%Hs1(?W z)rFCrdIv<y#2HTpQ*Y*r5Dv5|I}tuoy5lN$?AWM>_YE6z*~2ec$VU3?<!-erP4fh? zAHBm#QKI~`;KgUM+R3r}=yZ9edI@;1+B_sy=anGYC8Z%+ehRf1AnWqclcwyVHi}`? z5Cm(!gG^-28C7CCa@W%-YQ=0+F1OB6*36O6X&<T(3eaa5o@m$R?u@1VHramq$m13{ z{%EGHD<bZ4?ZWMcN=)uQk-rdSX?}PFra=8*zPx$)9A|`sz$HFfp3u#352IT53?jPq z{y=!<5X*rgCa<JR#@f>AQdA?Zqnr^OzQv3VJdV$K!`~w-wM6XAD|(8XS=)7NyDhYG z+A^0k1<hmAw!c$Je(rj<EJs(na`*~=?TUZ)R=g>+ATNa2ea-VS(ll+0!T|HonryP9 zE$CGyJTN2g9WO%hKB4dN;*bRwv5!*$TUG9yrbfER<B3Ui_Tef?(T_QxwA)Ol4e$6{ z$%n2ROHraOMc%hFoOF)YzS>@}x$eaI_{q+L@p97w-I)P_Ykt(4v`QMulp9`U0o+qt z&Gr$~Zne)Tq{wEAOT>-m27)!&*D2Uv6MSM~3(S9Z6jDlU9U=H)_9}#hNbXw+)8&xp zXSO0WqG#R&4)D9Enl~^8%EI5xB+)@;;B4O|o5zzhI0C3MpU-8#%4j#wI;a{e8BZS0 z;xnGPLq2bBd3QdqC+9k(O#9&%Li$tjGBF6L;3=Z|Nk7)qPY5WSD#zi`#cb0nC9(o! zrRS;={htxPFd445brEA=UOhMV*x^LpbLyhF9rbj+b98pH;vt@QPn{|pyV(#ytj2M+ z)XC65)QGrxX6?IjP@lz==b_Xi%rXxn%df;p!GJMQjkbcBC_ahw{L4I{Cb3DC)NXGF zXF6J}r_MgBc1lu85V2oE4q2a6%k<hh#3N+&T!Sr-<=xE_9NF0<7A`zVA9ch|6p~Qp zXNStkXGolW`n9H^>6Yt7wSK|T&nc<mt5+&(OP(_?miU$}A4xHKohJ-@l<f1m80r&o zM%BWEkV8_!^p3V#p$>y+Zpz`yV&p5{InuAQJKc!;=w9omtK@!qHQ9MY@rB1loBn&* zliVSrhh91z>6~AG`>x`JU)6GXd=-&^8#6mal|M_!RHF9b1&7J)^7W6!FM`FDwuI#? z=u;nPl97&38A;W1%AZ`8?K#*2O<tZ1t~9W`OXRtYF3;qQZ8~?ey`QJg@7j{c<#1%D zz~LS=n)_%R>6-nWvb>9HD~+~>3bmCCB(V7iHDykTk;+l?P6b)(bU4Se%Zhym8ggpN z%iB)zOuvzJr0P>fB_Q6iF*=jL6sWm)j<Hm9dXqm=yjMW2RRx7gpOs3@%^mQ3beCDZ zJn-HDxw)wil0tO)O2wp=*-A~EZ^MSEU%sPBsXxZ=eB;Y!Kd$Y$lYYi9n(f}+!9iQC zOU2Yg5qGH@vgp1?4!$c{Ih?0UAh_c`XjVn|WED8{VvQ_h*2U`f^%HEBM|iCwm7aCD z-nnqT%T_3U3)LGGFyUX!0p(CFAIeeHXI$2i2^e2lJACldi+K+-q^*_HXiS4#YLrbZ z$vf6}jtW3#W!rN@@`6*b3lZnLduzmpo=jdKe{Wamn;m%U2hZ{c&GP8ZmyK;D16hkb z_gAGpGF^?mLCBnyaXT=}mlE=MsdemyZKs#mg_W(mnnC?(<RQ71i*%{Qer|S(s@`qt z3yZIB-M0>BKYWI(?0r`GksGU9bY_x})brGDZpamSY{R|<c&eon7t(LNA@F-if?PVx ze<GZPRWHY2X-1vM`ej-Cl$?eB#h`e1Dzi@)hivBt0mYb#^MdYYvl5EF>4lz5?1}jz zmh^4s{4Msb$yZ`KrqWy~zEizVd;I-RvBcZ=T|032epI%Yufa_*?wY%t2T^DP4v~kp zMBACS;YCC5FrPQF!nwxSD}d(O(_emcc-`n!T)iB-i7ZYCl{zgGrEv01xrD*yvu^YU zqv~>Bdq}t2=@bO8=54Rqka$qWW-fhtC|ACYozA&<W4eY<+UTpjpgb(~l8<$VS5%IG zxMDTs>m25In=r8xQdHdlk3*SjW92A@xT0IJ|2dC{QF!B>p^mpP;oqYD<P?)9f$0D! zlZ-xzU5koBQi^*6g{`3vO>Gjhk!CWYa+XYz&qL_ghKQnPc_Wqjqi33$p~M-OQ<`G_ z#8pvm>Jux8rwn--l?$OB`6%FI17U${PcorHSU=QJ^y@JF0OX)PL(B%y;qjqhRg_6* z>M<|RN0W!ZsW)>(Db4od6-o8+g$fnN9vF8$K4Vl+FCfT5|EA-NAnIAvmFaJR*MH2L z?6`z`c_c?Qndc@x(qDJj08V`^jHmy6QFP{UEU{26v%9^;yer4Co#nUQFTA}U)I~+d z(saCS4PLR{v^C~&MFFo*&(ByI=OLP%KQMZ^BsVszUtF=B3`tR3gRee+*Cu0x02mY9 zb4jO8nAI{d62a0cPyi=px-PoAsfvlwAo<aih=tG1ZWNC_iVe--k5%+~d-PA23y4K! zjde(d+<hI)Xfh$b!Q$69Ntakc%_~)J*E}kHY+5iyzln32xH!{9?MLyU^!s1fe9da< zNf|vIN2Y#s<eGg~3mZ5Zd3?>-khx)H)mkp{)KLWd#u+iaVNrr&<TpF6ybJK6GO?1K zTXf|tStB+>6qC2N4?kYG9d5cn@&jtX5kfjGTgd!`HiNI~<Dr!HVt7zxZO@#=c+?$= z<@+Y=n}roZ7v{>~LevYRBS+CQd<+Xo5tP@e%Q<<xGNjrXiw;a`ek06CVyd8f#g+d| zH#Es^`kCxy!}-W&@iyiMti4(^{5B7Kmi07e76w8J+IS<B%80U-W^``Si8V})#blcz z%O7_>pY$(6iWygCM~qD%44+&y*7JX?L-EODK&gqdjV_1BVeRX>F%oftMYxoulzQ25 zIE0c+3qeAXgNB}!5R2>&nKC@hC(S`O93R>3|2ST9Az8D`OD{>Hr0Y5PyC=b&%g=5G zOkPvm%E^cj(0Qmr*f6!C*KUcl=>MX3w7{;`<kTSq`TJ4+SpAhQ$CDNc3ly46Tqi^n z&eiD{Tn;H2T-kWzxJ5}o>+&Es_7ky40b)XB!(CjCyzek7_WmvHuQX3%>_3Vx7?r(W z3be?I8;MFf-r{rOX)NY>d((3_NU>|xA)#}5tG9+Cqt0vBKiQ#yF%xOFJuljDmrwPP zhB5cJ5&I<@HW0Z{B+*{m_J`1v8r_@~@N?>aq+c}Z|5YzIQkWqzYElJqw7@1w`o*T> zQtVB6bj9fTik8|^EzVcgeXTl0jYE~Kt6mCCfdz<>YR=(Hn!>9uEg5d`3o%|NpQs*v zl~R4_X0}?!`{zgWtK)=@&Q^0X%SmKf^qn7k9=`dAlVzv*BkDzHj-~&YNsICr&#*<E z%1*0Gym33#L|Nf$qHpJ?-=Ev`(0VwxC8S$Hp46tTA;)-)`P`9bBIaVv^_oR|+EYsG zR&OM$L=3AGZd(<7n}-*fMQb%Z5V|!N-N-#*pVY6(n>DAzTsfa-UWpD5)UDghCwnQZ zwaKoemF22yo}>J7tvA%X`Mg1<bxe=ZEJN*qQ~Xa=DwyAvO+{E#g>|f7r4cm`9&)(p zR57-gQrDpIG@LVnNpZ^au%eyXo6kj>o8qkLbJspSW4!W~zCM)QjVawRBA9=k_8P&L zX-`OT&b+XotIf9I*9=YL*`_4UglOJqT1+u12j8HIFXCRxxrNt`bMCNO8G)2R#wW*J zZ3weICNzDve)B1L`C?n5(b0gb!%Z4Dl6xPiHC}ArI0*50ok06kucd;XfcPWr8`3u8 zF_IeN2Yn<r2gc*YiPLi&i)c9&e|$=jnjkGq*DPDHB}y&VylHQio=a<8ujgx&O$&Kt zFP|a&hSK}Y-H6F2yg-r58QB(Fm+FIn$u~^`ZpDG9a<hy@nzO|@3wj4GnUN>u<mRp$ z6+bnw+Wk-64o!PzOT@gSS;lBZv}{=AcDeQv=^W8f#)grWIQ3^XNsa6hEVoKdSA1-= zhR4jMKHDVAFK>o>a9m_BMO;;E3PT75YFx~D8?GmHC*ex6kyr6IQ>N37R}|y>o0|@& z$}%scMD=b4C#RH*)rE9idEUKp(2Y#5ENL*;eOQxnIuEJq!gFIRVpQuQ_cLC}z|jGC zOZJOWKtsm*MYxIlW4SALUs?tZGFljYO<;>D8eR`OvRIlR3<PRd(#IE`J>hdmxHOH6 zsXB0lvehT%n6#dV(;SDbY3XaKz(|qm+M37qiI`5>Fh)S%I0$-?uSvRCtGwx`K;}A8 zWH(9mGG7(cwvv<78hU>)^qv4;Q`ihqaC-J-wJ@6^g=Fsb_T#8C(eT3Yg0=fHYn77~ zM?|_*Kj;v!Xa>CxJQkb6EMeMXIdLQMeN_x|>a&JB1C3AK<PY}4%<RXKO4yXwB%fU9 zN~5c1b9^{=fT^6=R$8wATSuAsaLdyZLmHj43@yVBbwr4fQR3M)51&|%?Wa@ml&!?) zm`!h(xSV;PseP64NJLxXg|ItFrUC<ITFiV`#nHknjPVG^5N&u)$%b_lGz`)0w=S#Z zbn1eWVjX4OZS@z^50*xpzoA{#3aki83Vn1gm=wDvdp!$Y{~q+ZtMPIiLW_SoZS0Ou zrX)$qQ|%_nIN75=0zIQB2Sg*O4!rzw8{iVpaTbz#3b)c?m%5pI-Hei{ETtow`_xKS z_iV#8+FTAP<U3Vk7`N0lj^wA*d=)DR?2*xGX4%~E`x{S#pqHuv=A7xzVVoQ;3Y6o> zm_&AC{#3<K`v}iC`%bsGAO;aT8j+C6`y}>|e0K3>18VkEDBD45SQLjO@}0Obj9c=i z+Nn=3mx^vr)7l4#bsHXPk9&FmKuYK@Cpxk!-x5x%ZJuT@{?PsIKn<+Qq-j~ENLBZ% zki5RIzI`%U@ks4m9gF-}R|c|TMKZ!IZbQKzn8O2kc77N9*5ikW0_{H!ZFLnLUVm_3 zs;!!_Nl;brMr8Y0B@*VtB{gDfR1@#!1M8J}JCj~6-F`(g<hj{sd6SgRkHkc?WZhiD z&Ef=M=%Z`yWewUVhY!0R0j`ruxjkvrCCi|cd*MRDKdxN?E7b1Nj86JUI$0x?Bh2r` zu1EHTWN~KU=E97`s{rYupxi4(LJ5ghLBbRf#g@b$jt*FqD`{3hpG4kkR?m^|bw9iv zexjLS0w}yD8g}lY%gInu53PhTHI=dD#<<x9rWB%9iyL)PvD=2nXJ<Y8OG%efbqYTp zFPJ=Zhf+sst=v}HdMX?3>D8!Hqu5o4;rFtb*U+eYAGIctJfb!HeS1~GicFZpmr3_+ znV4%*!Nk2+VV^s$sZU;~@LlSspDt?5pK`rbb>m6B$}x?bMRy*OwlTL39h6uJJbWjg zBE;a9TOfOllfT34YtyM$0^C5Y%*C~GD_K{?wv_Zz4c(1nf#TOj4x5_2Z9qKgdsz6+ zg>2h^hx@WxY)Q!DU|PEJ9M{pAY|n6@q;dgBGdZ?cD@FXiE11=xFi@0Qkb7#{nh-`` zZMU)AHaR{T(&F-d++H%y=hECY%F#pp+O!9^D%iX!&5qg@b-RiWw>3pwb%=Pzvoy?} zxp+&JBIe4~=67_%HC6P6TeS&Zl<51a6_CzP^iFgJvTMUnf{nh0N)uYoB6^73g0=gP zGd(+VpyhSu@h&oNnDWEouTqx|k_Zolw(|_pzw4oi&K_$%x)dta_>l(K**P0$_~tvQ z9GQ)&O<#|LsV7^N3BN`ADeqkEK8`t*Q@zRaNcxGSM_w8m4$}Q&ksJ$v$7ZX}iqb;e z(-fA@GnGO{0v=Q!k>=GK^!1krx;xG=(>pZQ8TKqMe;Ov2Y83XTQ<Jf}xE6qRv7gi8 z(Qejhv=DuF)M;^5LZA6|$937KC$<?H$lE@>CuDlPwZc7J<Vnu>+JWI1x6TRYV3!HQ zMWgWxA$qe`eaGl%^1R3HUud@NvziYz2&i;vGjeT=s?iASJ|_tn4xCukR^&a#{q1A3 zd$U77fp~%3i;L#G6O9|xRZr)rbCSGS2A|URANi&`F-|C<?-z0?peXygV@4@+k6xp* zg>IL(`Xer*ah``_jA?yLvVr0Jgln&Bk3cs}pzsYMlfc7t9wH1#H<$-k2kX7N=`|AN zkD#6E%vp9XXir2`*9s+!$=-YIlkT9*;xsVaN1F;=F3RC^;gdgL^xzdQimcDN?!2}c zbSe*((3ZKGY%}fp!fA*#H71x&hk^OyT-W>)?JFEvs+;c8_k^VMy&v`kuPPf4$4ecL zG(LUQ#2qqh8_jI5c)`EfWWL^d+`@p@IArz~#yjyTJuEl%h@9TFg5D3$;T%_A<dYcd zqzg66ImJo6s?P`y(9?E}Q7+AT<$2yTpK8ZH*(ETh&$%D|zOlV_BaZk~a>D9*3tWS* zdeYveN0UELGo-F7o`$A1zFarzb7tfk(c=fNKBS%Jp)g#Tr%YB~mi%$%%9hPRtux(` zz^2z~gzLn8lLkiL1an6@^*k@=W12?#>tDl$O(D*nYcDnr8U2W{2t&IF%^*&ydyG~F zSfG7&{OGRu>}*_ZxO5QczbHWCF6Jw@skqF<;Gb^PnAmK?XL&8p6{3JC5)xNM<ylZj z)6Q6&iHn|=k2OjORwAybl-~A%%9`<>niwsTS=G3;?HJ4qV@?`KW#v~Hv5!zZWt$B% z_qQbFTr+^nJT@yz&N;$0l_WSE6f_*}7!ZmmIQdD4GsvWq+3Lnfc)oc`uvmA1*$v29 zCBf+&KrZLBLnVsmOqg)V)|+8!W>~F|y^F+Blt_Gy-q`{8!UOM%ZNkXN8`Eb==`5&L z4t04<vfOBHr_r9SDu2J)`+N}j=Ej{9HaApM%330=Si;AxgsRxp6J<y5>DfQZk9ddL z3D&~6ZV=U5*AfPCt)zX432V_bPkj&h(SM>SPkX7kT$foTwuwyg;h_4vv@r?gsmn61 z3>vTnPd4=D+jh+@G2Di_RNaF}&0{To+fp)udb;;d*9<K^)Y5UdoG^M-9Q~+n?lGep zH$rN0B1hO#oZ{ttoLodrp1bJHctcZOMdZ82Nyur%8sE6^c8U~P0o!m|dv^MbXREr` z+hHUxd2CZUX@?9I6OX%ko?Gs1v1YuObo<d0ZL@nF#vh6mDY7~wT_8FyV2ORO>m?nM z^|CUBEKf9&&wcpXR$QL<g>3vj+sID0OaEu2En!cc57DInme&+~F)@Q`v2T@zulZG3 z(Tf;wjJFLp`|>|5_q+DPd+aui+z`d>!L>%lmt-?)fd;isH<cT5SoOu|A7;!vEPv1^ zafqIfPw9eepo=U`=%?oEBy9l+>;A;D_o9w##I<)NZAB=;2~XHqSQA+C_39C*3nIcF zL|xXrpE3US!+_MF9aCYBY!zo_#K6st0GS1{<CJl?RkIb_s&#V-dW#|L592=uWogFp zIFuSck5807T^}>a7JA^g4s$LqZLVyVwCu;wo2(7;u7+Mx6g_#JSL9@37tQre2x<u= z%`|Ogg%4!j``Rr_rJ~Uj%#muH*>Xm~sH>UrO2JKMIzDfogy(Y5j+H@27W1!fXcrFM zd)OtP_u;ka(rxxvAyX8yk?R%x7aRK=tln}FR1<p8Qx;?<1qKT$jMbC(P+gWgoN_WG z=59(_UVLejiFn@$T~CUjaKS_pjZ9Hudp$QQe{O2HV~l}1e^YiYBM-Ay0++s4$mAiS z5``JvFxe4KNV>$)*aGNEq7z%={e*l{j&VdWoqk#`+c+nQk^@CB3-37}`*R2C4XFi+ z4Ark1NAo5Sz~PkiSB%M0I1ZWAWk(0r#Pyg_+K$1d&Whzd^f;Nqd~xoYlMPRu8fy~z zVQaE%yb!;Mai+ey!I?h!dp9tY52B<!MrG8R15baASWXU&2%2rIQNB*f=fInOI+8<G ziC{D*4L15sF1T*$P>AB}jBdt(%+1$3q1tW>R4P(>JSAn<c^|zI$R4I>@)=XT7)a+R zp15;jTbb-*jUCyiLq!7msSmm^_uh)9usfgWX>4V%A^!5R<4~;wMd9noX7gGBn`e;@ zY$8=Jo*$Hvh(Z{n4(RvVM?|Wp9k|u^s3QJ7O)$UtJMlE)QDLQZ`vQY%xJAg3n+*5w zhNZ=baa!KEoN*vCJ>h-u=T6ncQP*3NbVWyERZI^}+^0S>S|RblOxKX=DLswvQ{@SM zDiV^K(^t}^#Kn&4^R#KJ&VK4myC)NNC`Pvvb^+pGc`TWCP|d}?uDMl|x~=qJK2N!B zSGl73mtoT}A^U0MhlNOoFO96xk705VU(!XqK3K={b+MJ3-lEo1QXHTkT0dP^&zE$q za4Gq~8M8ox7)n|Heu|0o<vPpRZqF~bg~mKwp4eOo+K$@3_jb`teCmAV*p?}DtE#ps zA0tkD-g+I{NnYFO__nfe2l9Eu*PHQ8>d-uw-sKCu8L*bM>!`BAPmmYczDdWl$R2gw zr!_gYtrSEDOBXT=XrtF6)wC2vab=LUKN8W>xpSrvmK!+tdb(_Oov$;|=7~X9*~r6f zgYGv`O(VW1(yKkI7*kLOhYY?3#MRcTygWMSD|ugze`vYF-P*@yE4O8*`053U6Wb3u zb}FOpk_DDEJ|X;~=s0)2sCB(s$2X|$IH6)cgM>MK8B64Bg~^wJ=5=jeSqrbbFGs}X z9j=Dk-5&F<-?`w*F-YRs>l4kiMX^|)r~buyhc@8OODXq?m@kUAH*RMoyqpdQ)cawR zx~Rq1Y3e;l@%TEgwE3AQ#`0=68i~2h7twZA+qF*hSBFb3FX^>5oj7JzAUP?QV?6oD z?^@?d{>LiMZ>Lu?SXSLf?B0C(Xy+FXm(hJsPAN^h`Gf7o*va&_AzSN;tKVC57WIfn ztv9+C3r(70l>?QJU!xfyoAQX<F8Y#u;8L!`tvd%{9kavdQ<|0s8`$sHEO&1`As{3; zMYYAgYkvLovHsTvL;r3>8>yK%v+4;cOG>i}shhYtvtA|<lD4yTX5Ibw(f})T*UD5S z5t4?p0+79b6cr^Al5%sFQFGq4jd%Z;j2e^`fd2e*GHL)T0Q}D%{6F>^fbH?Y_v7sX z*f!t(Q2(|1<n}14TR2;ru=0xSnc70qtN{9dDE<!y+p_)7-vmGrtWXF7=kI}Go3{VK zpkb^~D6XLj!**@4AP`)u6NYWu{tiJR(YO$7+ZG!F^0#2ywpb7ZfD6GB(p?A~jtjvP z&s_)r@+{bHJvId7S+M<jEC>|jS@47(4P!-MkhuK~_@j?N<30-<fAkS(+-HH~k3Is0 z`z&z$(MKS0;{wMYeFOsJ@$p9=0S9?}{Lx3iK^`A}^bs(S$HyOi1OW2*e~CU6_wf;b zi9Q7P@ezNCK8W@a_@fWU;66SAfAryK+{Z`Yk3JkE!yxcS9}bdX5cs1H2gxu9{LzPl zWEceg=)*xW3<7`j;UF0Xi9h;qkPL&wAAL9k_gRqmqYnc~N=W?Chk+y|B>w2bK#~#? zfAnD>NePKR`Y@2Bgv1|x7)Vk=;*UNIBq<^BM;``~lu-Di4+BX`DE!fffg~l=U!o6^ zVNidGK1hZ^;g3E5l3`HzqYr>&7!>~K11Q{3qVPu_07*(H{Lu$Mk`fAk^Z}5hgvK9z z03<1)@kbwk;XXbZfAj&6Jch;}eE=knq5l$nkUWO|OY}kV7#e@{p&)q-jX(NOkUWOQ zAAKlD9z)}gJ`^O6Vg9n_2gzfY|3?2;=OGLYLGPpUut-b6X+)Ny;iFcWV`h$Z;8N>5 z<B-VYa;{>@OUU>azB#%;B~3mXpK!|6C$ooBj_JrvmrXf_NM@~kT|V#@9`|;3JLuuP zh56`v#vQU+&MgSV7E;CghFObk@aqE0G!iIypQ_^9fpZFvkmtH6{2T4cqJC)9MV~TH zxX(~ktX<+r{-dVk%&GAo91J@-vngiijx$MWC*y=}%y$IVp&o5Lksfaw5C{mmW?q}m zJOO<hMfUcM^;;FP&VI75L?H&|RYoKspEl(ws9qhFZT(E!WDjrpz*IFY-p2FF9?^PJ zTR_d};OGadgwE^yUF#><9N?s?#H7c4U%h7}rju8e8ekbaEOyt|;ogLpuKDwFB{m26 zi8o}OefkYLL9}63=;f2au6H`$Uq+qdIzi++Epc)*Z?V?6@rzi$Gor8Dgi~}@JCN?F zu=UEpWrHM^FWbBXQY)XVs=Aa8Axq;84kkqw9vUC^T~JcqAbU#qS>%218<qi??VBHr zZsmkPFZ2*<$$E`ZQ7M0^ksKf+UV$RIkpawp>;nfh0-9_*S<0W%YkcsX7abhH+$<xs zoOPEK@WtGyMl-M|U)@kKJWOR6e3QrQP*r%>b7!R@8e=*J2Igh;vO^4W2LqpyyV11} zcKSlBje<?D1#4+RntQ$ao|zcZ%DTCnovD(Ws#dx*_?bV<`P>Mlk4<m}XCwJ?CtZ&? zXKlm^byW_L_Y_IUlEZ6(##i(R$CZ9!SpJ}GY8u%qSC?1E$O_C3QQXg=mW+JH^|9y4 z$TY>>T!L6Jqj$|&8`Z~ssqADLW)W8psMg#jq3K_bb2}DM=hxt`8QvFN`$9*x(&4*} zbFq`*vKWD}W1JgORf}Kb{v&Pg8y~YYE@`jREPtv!oXeN=J<~_=O3cbblcaeqgwNNr z)7^pJ99&=`iMsRr7F1p-*?fgouao#WytGegr`WVU6+kG&a-Shp-zjMDtouw6zQcIK zKbzIokC4RohRP3u6A~sG<fnfyU1jzy6!#?Q`ij!Nijs3GY6;DHXDSu5Cc_L!pVO71 zx;-6!-}*=M=?^6RN|#aowxnm94J>n(+!$IPoJ%XP-Wa`RDSiCVfMM)SGw<xzCo3K> zG5hMi$*ncm`bN^9#ojMyLT^tv`r|Ag<dIxYoRp?vTp=)||NaBeE{ASUjq&e0YD;3R zP|X`FV^gg3KyXPeJu4=-;d#XItkQ}U4I%3+m3KP<_5GXdkvVLuIfOYG;@@Aq%Hg+o zMVngJWf}gFKvd+Rwf1ls`6sut@9l;SIuWsketOJsn?jv(fkJPq*D9!@i-ijz*Fz6p zPw4q3%GP&@X7o~hB9S}anPGkQb6=mYND2jI8%U{9f6?phaFHVZqAbO9uFNo&R@h69 zA}EcZ;8_{%tmRh`6XIkqrI)v*g@&ZL-T9G4;#>!x2e7WzdvT3akp$|fRG!i24~7I~ zvwxVP<6877NX|cI_2sar<OVAsh-y`T?(eo1bLZ@Fw_;^}w&~6z0tzIV<5q9ZCALoU z-<61$dwr#_=m5O^8Rdh*g{70k#z5xA*LS3kTL+|;juMHwMjF0SR%g!ClDNy^W1^uZ zWTF?h_H{Ea(?iMlY-`H8(X&S9tT|PQ?^kEHQ>Nh4#=b67q=h7p#3tT(m}@^Q?H<kL zDpP%Rd`#G}ErILoWr`7^;gj<1MHV{nw#a(IyKh&0X^UcFF(-+0PJeI+UXIkQ%&{q& zW;_Ke;8$NPG&viCS;&9MMDj6xk&4Ow+8|Y6z9Nc8-MyW`jxw_;$4kI5sqi)2cH}-+ z&?X|5Yf2*Drf4m2&Qe|x6W@B}oiGcz;=vSnO{&$=^_j{0ANgNpLoX>^L76;ybk^^2 zp}X#<W1IOO*(Z1fk39+|+A>*L44ZW=vg$6`38@hk_4ad+$0V3Ve7}^obK617X6UFO z_j6Qi{W}dgHqQhI5&OMQUy^2WKT5>N9SW<cF&*psu5Bh1F8kDkoFTvZX=kqfSucS? zuQd{mjrm@KJ7!x&A|i($udEaI6}jfg-JJhGZ4+;lhZ+bv*Bu%-g}LCRnD@Y$mqoij z&Ew>}0r_p!v~@GJaTy-?*ZlE`IJGC%CNg9>L+`aubfl0629Vpvd>=g3A>~7bLe4)6 zNV;4>PSXCO=tPYj+v0VaH;C<zNe0{bca1I!c+T|&a$BuFle?IFlwv^XMy4~9S^f3_ z>9=ohUIgfKrR?4)6kHKZ;R$;qEal_lFky2AF2|kg#C&)1LVP)Q{xD&c74*RaUr$+X z2{)&wX?N~CK4}x>qtgEI6V<h~z7pXtbq0w!Zq&n^Qt~Np)h(Mot#@8Sf45vFP(OU( z`g_^=D9JC|x7USi7VmswtR;O^iBX7im`^kQ!PFqQ<q(^ecdyDVbFrJZLXHXPztYtz zo!&1{9Gkm3^_^^yeMb4ImVyMI$(G27@$%_Z2Z(lPMZ2mCUrpqVk;?KKr3x?fDZx9Z zTwG;18XAn(nQQAAUrSE4N(>qKE6SxuUZj7q!^;e%y(xEv{B4`5pVjfpr(Z6?>~yDd zPeE5K0n$_4g<}Kfw{9mVn%AZB3BHUgyn$4&O_fxmU?qZSR2Xb!e=DumUKJ85;IzX$ zdUapWMY$(dq)@2JX2!wI{=tBD=An?5d_En%DD`vR=VUH&l{sHGD0=^PSon#aD^WD% z)YL_vJG&XwNkmYhhbG3i*LF(4!sFcCfUTF}o)SOMb;%Q!y$>I~ZMq(Oa(=;$nj+;# z#7<RML)WHZfy)w1JfTjhU`x`PP_WKPNFd4{^-_Bq7U`p6*5l!EKICL0EzLoSS1kfR z5dD{oc3R4Hm8KnNO4^%E4!63p^%yW-%o;I2`#vBdt0hfU`@^c^!>=4E0WdF56q~~X zpCBE@>B{$k%jY}oiSBiMC^yTG^^B{sJVxy>dE@!pJ|Zo@Df38=%4KBQb7RYL%YYs@ z$&6ZZ+|!-D%kak%S$*wZ4Z&Nf`s-@Wml`bEHSKt(<_sSm6aw;7yZxI#=u>S)H@YW% zKUw0i=H=_6_1=-TL?YC4Vd&t4^<<|V_a3^;0ZxNMPfK;PpZ4mM^faxCl9<8OGB-c( zIM8*SSI&-F(UITik$BBb<#bwb{J8|&pEvyEiC5hM{cQS5OWfy3_3n&HZm4|Mp$TLe zlU_+{eRJ3+?7%JHG(WVdd`fJmuXXEa%M&ks0s4>2mP!3y&?k}8)o0o`X<k2dTRMLJ z!5|P5d(ioaE7{;Ck%4b;VHqmyBuB@BXtw|G*O?6B=$OQKvP{za(z+BywytHHV#tY4 z@~Q?5U%pYw&8Oc-WScS99GZJ^!;8K+uT4Qkofj}Xb}U0Bna+)7l-%K3t@cjTnx)=F z=A)TQTU<3Aru3TJsU5N5hw?}`N(IrcSK0j`!&Fp-3aUF>i#^U8;fJ{M>p8WV)<37s ziOzg}?lev6^NJ+xMO$@ldKa4Gpdf7?^!C{0uLa(eD4w!#$L$8$Wel3)`f<5Jv(2jk zg@_q~=LZ+g1<W1eOjh+uP=&CE=$7&yaT7CnJmfW6H7nWa%~5GL@ok=9i=#HJ_I+=! zCtV`(7w7U@{cZy<JJK#n@N&0)dUn$K%IG7r27dE$Xqia&x>q)5Pmz<QVZr*zT+)f_ z0+iR>H{2Dk8|Z3Av3~XeB-<aId<B#}JR8M(a74%Z{X<biZij@BVWuX!p44W_;DqjH z`0;^I;nD>y4IZnJHN;NZdQ9JV!d!IYOIaV}w>1A|k-4_;o?dh{{}J7h2co2dOU>jb zZWF2?n6%RX$+AX^vJ+q7hi9QRs@E9xXJJCH3$5StXU+}j^PWG;5B)?dO>)6-<rO!r zLz9S~jWPoIQga2`F_x#Y9=+g_JKNVv(KWyv&TDcJX)*9{q`0sB)I?5PRid_dY6}^( zVO=!zrI|M6A}~tmQiD|a9-8$-#xmRdh}w4!2U=UX+8oMyo&)t3Nj0tygsYw$&NDr1 zu_~$mz0uuK@Ow+eRJdkbeyA4bfmH?1uHii0u&yJW6q{LGyuBU7k*_>onRiz<A2Mqe z%C!I5E3h_{HnJnKQDh5Td6rpY4Ci#Itv8rg7-;26Z#&D`64cb4MoP#tRDtj}zI0MA zcVfNQTJNd8qiF(1TFRgvOyzEN!?x=Y?H<(wQ#95Ewr6Rp8~o4k*uOb)X=9mmgLbtw zKn?bJ?#*Di$CuI1MO<eeo(VkUQ&Y@fb)=77L(jT|K%sku(biwLh3nNh&mj|)#|M*% zP487Zekbz(Kx$qb>ak1~0~s0jIUF=|giWQ+2QroY&BL`+o>u7S2`;D7mw~7H=fzjo znC`U2D)lH@EiRwXzd#<?<$C-Tg?VvTWA<ENkn6K2-hzX{pU&J}X4(|#NlkivZM3tm zsm@2Om0coTSbB<2p@1Z+yJ<ue!@0VV#bmu{qx<1A?`A3QO1FfSQ)ujWh2%_r`Af3B z!uA(D86$(2ADhc>QYG)0)s#y->Rr(<r<ln(M;}iU93mS1hLr`7^yWXEZS|<|cnniE zYsX~oq+T3iF+KQXBV;rAL!&4st%_1=78$E~HdBgJQLRU7^m*}nd}|NRQk6_%4rpmC zN0SMSWn;d+hDly9p(0W{r88?Q9+|MJSIblUdc*1lT-k|Bio-KP)m^XenmyS$nXa<l z0;9qqC+4<~2}u}YagmlY8(|XLk3C&xsR~*+yT;0VCVr%-TMB3Lp129js~6WzGMEG% z>wvS67@bMz))RJ^IO=Pg94_U&<#%*EEgfR1KY5+81(AEJyuft8+k~vjPc~Jv#(o~o zSM9oyX7jF7&!%D9>3eX1PL5q`EjtsNaqP*mjHBANVZ645XKv8XIts$CIPi(>+%%TX zW6yM#CNQAWxRpiuxwfcBMu552tf)k2d&Z)FTYU13W|L@#(P*sY7z4wN_R^fD<YjdU zJ6^5u){MZ6=QqN6Yps2!$<H?pd?1$aX|QpZ8;Y4^i62&!)i635$+cE<LOX!#1VYm& zo+SG;@IkSmK*OZ=xk+tP^o#46f+mM-kW777hzk<y+fH5kU^UWl@uA<?4*fL(^pj#C zTyqlh-=fD~%}FFH2KLLGM6+Vx|38?M7_0&X2C*NT5rh6SYPS>sQg6Xv@It`6yj@EW zKL+G<Bm{~d15(z4LIC_2kh&HW0>h61DQrO@aQqmM%GR#=iXQ{^4)6r^4=&*Dsad=j zkm42;g2pZHAW{3N?ii~p*^NNR9&c$KS(G{%^IG1J=beK&%$cF=-nxmli?a0)U5<93 zXv~+fD2l0?MZpj$5z&~aYzB+Wy3+1&IMPruhL`PV`(TXqDi@T!AnP1kxQTK6bXeSr zp~F7JTe-6ely4WS{G&4?k;cm-#|g|B^@=pJ(FZlCxxx++n0!tZ75V;sg(jCzVB&lW z%D(Fr;y^Evo{*F3DB*%u8m!=h|2Mans|b<Rf%hEu%`Ei3J2L%HdQqkRc^K`#DtKXY zg_T+84vh;^8#rC3>Z+;BQ%hA8JYZTsX);HiVSDAFOpev(v!)n=Gw0eVM0_7m-;b@8 zcv9&s@Q%PwEEVlAwHYjzUm`(UTysRl>sCRAr;2>I%4&$+B|8^!b>b^KkB3^r+!{Kl zUkP1R6^XtUN6*_8A^oXDXZ-pxU7I}7c6rw6p&yB>8V%4%vM4R6u7d$(&_K8OpxUD- zzc1u25?+eWzEw!I$ue_3P+PaFC=|E4rOhID_H7rj^2O_R+4iI1cb-SG9<24H(qs*o zBw-__@XqkQDKX8q9)}EcHMn)_G~;ukA^*96HGQHVY@u#^@ztxGw-$>c3SJ(ErCF7# zx0TFPq-^;hHBOUvIQMd$&wC}zrO=~8DSh3#&BNMOI>LJR_Ivc!n^U)##r4BhzjC8b zJ$9_nx_3%G&A(!a*go@kmS|f;Ls6J-%Y<!FK}?nUw-n>!j!KVdKX}w?dZOYBCRJ)t zm0rcu+bpkZ0_Na8kAq%u2z1<Mjh^=o)v7H!+c~*7Z>&~mwe(#o^{E@x^MfP`fvQog zy_AQiC#=rDneo4#rQiF03z8>rTXi5zp=CK(fWFhF_L+?Jr6)@#?be**t(RPeS)$*s z>>v%ANZYE8`pq%3oC=-IARr`Qnhm}J(m(>i{J)x{e@o0z>{IU0y@T?9P0dj3v+n!E zVg9RsW!9haClOL*)k8yBp|GEa<dG=EWfCFH|LGwSy2uKJ!m!#&puZi1|CJRGXy`t& zg1UN_ZLAns{gT>O?c4Li?|z&)c$$svz_x8LA&G@#Jd63UJiG3}En44#yrCf-&vR8- z&hn^gSNYuB?9Z_=x0ThhL?cc{&50%-?Y?-rBca{czT3I@PA6HTRsGtNRyC$rCvJfN z$1E$aH;-Qlh@LwB)z`mH^IL@d=ja9>>TmDoy83>|%fdNh6_n|yBT9o5RQdF?W2T>n z{<xt2NS##j+g;dk`{|eEVg>OJg|qDaCe0vBS^;mY^=CX_Xw;0cZPsB`OqR3c&0FJc zEifTt75|UC1l$~M%4a)t4J^wqoF@GQceUNowvWA|;*jn@*XlsG=q&5Bdf~*$2M?-( zcnQ_5tRL3%GL9Qhg}~B3hp<@MZgD9c|8TB`<`^_=L!R99jWl)snF7?Sy2fM6p4t5R zBii5Rb{LYX;CJULi2!MeLzAC^%ic^yISA2NIBN;o$B%yMeOr#nv=UT5JQ2nmOh0R| zWc8rY>AV@LiTngWXSmj4$h$n@oIr155^q(gmS;WR8;FVEdnSo=3m$s9VSbXm`-pym zWGYiD9d(Sm_T_;s^#d#O&1NHCzR-W9temNL^2m>_zVIVblIexk(TB?HCUawtABI1+ z^bP-1GV`{HQpEBj`uOzm?yybBwWW^lS`4+hm7ngn+p1{DeCnNf(kW7|wmkWy#jEmu z>W1=#5pSk)D?bPg`Te{3#eFW%Ceq6iwObZ%mx$hp8q0_*tqO7$5M|hrxM@)E;IWd{ z)ySZkCXDTv&0G`#A;I&!Q3?>z{x)J^|DyfBTTVftC~Wm1_orI)|0V9XWtEAOGb^tQ zLJ)&NqERS55+QYWdlOb6F<V<ZXA&W`>xRyI|6kF<)`~<()x^k|Rd09kgFry{T2K%u z<Yf{eaXUw26Gv9P-LwJueToJI4@m$4VMT$oi$DSB{~svsHgD`wgkuo+DdJ?m|4@V? z(X2=q281H)PZTl8{ZrhXB(h8KZ*LL)H;Q0uy5GA9{|`kJ6u|7CA{_OTA_9${BJyt( zAs|c0-<l8qLlF(bp!ZJ^!2F~Lhv27(PcXX_5g=wf6!?Q&P*4PH{}iD=<pKu)ycDsU zBylMsLF57hkqc4~gTcT6=)Nh!(7+x=7zT!);@{+gfPoCHfq}>cC5S-$!!Hqr_}TRa zL&EVB{F_+7+RdOa5V4^4!i@QccL@8La$s=$DF?f=6Ne%k4U%$TAYwuP<2!`>OgJzo z{)B_w6pBj_Y$FW=kqUbE9RkSxr)>a@+@lC!P<Sa~ca-8%goBJ|f`dq9k0K1Z|1j^i z)9g`1VenJ@n^fQc*hnZ4si60A;=fQtKz>q0Lh)1ln^@o=t=v#Jh**A7g#SaJVLuZN z0LPzjup41<D8kSn2?q`;mR*XF{mTV_{?s!7;MX&D7cDMDB#55jAacR{o1UTQpL&L3 z@aq}70T-7bNar3D0U{R6o>)+b{ZZT-;D%%cfZfS&_!kh^-MhFH0T4YSK*X{~5f0nu z*LjyB9Q~6b68{1MyY&~BA_Q#o+<z%5v;Nv#|GrO#{O>+_Z&UqqpNv3Y?~}2+f`21` zL9ik*AY#St3&sZR62b-j?H7#!`G#Wm24nwC2owkiyE_;g1PA+@u=|5?KqwHsVRs1Q zfRG?RFzg;-91t8N<k(%pI3NHdPS}0I*dVYDW+-;2Fb)U_k{hvmg>gV2oxf1*Zebh{ z6zrA%<re|gWDCXa7{&$xXpo%*cF!;l2&C5#irqDg1A>FRa_qig91vJd9=mfGM}!!V zw};(3i~|Dc(u87n595H4U~doKFXE3gBEf3;i2c;^!__+-Qz0~OKc4wSW%fLjlk<4z zxim#U>Er7c&e84SEdblIR|HjkPnKF(6}gN1B1EcQeiY@T;KMw=VlQje$VS+BQ|u{` zfAr0c7+OqJ`&>K$#Y(8Tc@&~8xQCVCC7N73c%V)GXcn2+(G|gt%yKEUOA}_<j&B@j z$r<K>U?Iv#^!GtZyOB&&XiBbsPz-Q@(&yVaai}y?&be&Mj7k4`s>oLPduL3SSCq{Q zMw(73-+hOmv=5``zPWOZShWAZ=(8pcKQ0wELM|FwmN$1UZgB9BI*w^DI?EA_B!*mN zII;*|@8^-4k8Bq<)vJhkO`Lz-%6F7Fs;@nc^m%=1W`4&Mw?#$8(<cmOCpUPaRu<U~ z<f;V6_vP7WDoh<ABU+o_A+1iFp|?jqaql(}xFTFXyRtS4FRaiVSbDb7esW5<Uykz} z%-{;*{jh=!p;@YlX;|~w6qY{YOTr3QLLC!FOe_bsG#_01^i)DE=Q5&EgF~OAL?QOr zvqnF^C4#Un51WE9<&yEjx6k4cT{#smWtOv))`D`pM}{p^?-9&%UdoX@FaMpRz*#O$ zGDDLkBax-Z?7ET9w9a-MEg!?v`+N%q%cDmlf_Q@7cfGT&u+W{J*dgU->T~u!tj7QT zCCyMNd1ST758IDQqGT7sbGTY1Oy8BHA(M;8OZ10FX|tZ&W2}dL7>l+^*%+wRFAbKO zXkO?m$xG^bx|ptTKWanw(Uq%{IVCn)T<>W0iWMD`w4EQUS$e5?WG~!~k@jT~IsdM5 zh)MU!^jmTY7Ws{&oy_xY5LA1Z+}q2u)QTKTnePm2Et5um=sfXW)>QYISPXk?|3lxB zV$|&GS!v4Y;M&CF8SUo}k`b`KHq-?v0iyn?ZVz_y6TF%)Bn^e^>GmH>``8`s(7i7C zzZd(^AnPM2<lh#VNW{-YCK8E%k%`?O{~O2M?*|%erGW<7OF$vJOE@HK|C@<j^K_3R z9RIEnySpBTBMJku2tb2uCVp{*?7!NFg#O$%A_4r{M(o~vT#jIqgwY_oiJu(N(0||v z`MGaILh<h#u{-;5IU+!oI2e!(#U4i_8ohsxh+mZ|#9t~^7<`)9;|Nx%!hkCVgF!=K z``q>Hazw&^)yMJg95H{>3<_*nh53_a&`9L|>!t|!Pt70@_%(yw@PW$_0-_nrA2oyc zmskToHG_cR*9>-h2@Xdj$fR;8223;1f6I<=%+KmG0*ZI@2w-=n;4(zuu22C8m|~!N zZxO!Fw}^tX!qE^`0I_!j7C*<oDFz9{RW$$sQ_LPm7##QqF9i7Ih2T{+fZY*;%MpsJ zY5)SJ80gPJ0puUdkYAP(0<Wq8>~0zyjtG$DJ^%qz%rB1r@E(Dms)obxsv3a&O)&^G zuBrhDxMKdL;IhjR@>A7tC|*?q*n|FYIfC2{06_n!86@f-O68cJUqUzp@0Sq3X`aC0 z2nW#&^iP^W1OH$v?VcUpE9ax}YX<w80bGs%h-RRF(hM5-hYSuw{PIMQ_%(xlNdYcL z2#98&V44B`(G&rGnIbT}>stWFaK~l{2icDUV0Jqc__^lUCr1>V6$U}>ofd^b@m5g* z9KRihBS?`80Q1{_a>PLPxt>75SphWqCr1eWFCmWMj>8e8rUrl+?t2_jP|QB}3A-Fo zkUfq78vmCN$8pEu2vWiWz#RAg;kf^b`R+ODJ&yQ|P5{Sp$KeQauL%HVxkF*Qszw0& z&pf-~*mFi;f8qEy&A>ov!T^}(zQ+*-NA7<OzWWaMI70Df9vsshha&<c^MIM||HE;g zKHc60I=|cz41QhXxb8R{LEKIN%ys`6Ycv%84-U>RdjySN*Eq&I4o48X696;be{w|b zch$3Z=?~<Wg@a$$IL<o`M=-zhw*fA@77p@%Ega15=&Ico8O;A$IRDe&D0Gn(fT6HF z9012!|1X1G4+q351h6MA;eZezUmhHX92*2OdIP|ox`YFQg6vXojBYFt*hDA*d-4(v z2rM(;_|@1TkiG-}d-@U%2oCll@cmMDK~Rt%Gxh`~Y!Dm+_V)hri-3a+`~a}0FyVj@ zAa4)H2F3<~xWEARBqkgX0P^;5++1uB$l(A0dm0lq2!;lE5jdtSHVEXH2!K722?qqy z@(19!uh<}vCOiPgeZ>ZWw8a59?kg4uY-$XE<Gx~pKw8HD9QPF)1X3acaNJjH5ESH< z<G8QbAP_4Mz;R!(Ku{1X5WsO?u|XhKAb{h({ulHI2MqYlef{Ntp&^icIAC!a3YR`W zjyKF`eNAHTA1tSCl`%iyd+ijwP~@&i(rW=Rn_eZ=!R-y<iwn08>6X)HQ{9M4-aMCM zzIf+~0I#mrNh!wFBka7H2dIDx_rGYqbDy|#<#2GO@l;EjS0rVW(F<|Oqb<=F+Ub<7 zqOKhbQti&5buV74P2ub&xS!n;h-Mc%vTXcmQz&`UE&As4aMmp&D%PVn7!6f|O~P~3 z$IGDhy=Q~<=;WD51L2cN_ju!ypl0u%MJ*f46N*1=cByVxPq+L^e6QKeaP`ci137Jg z0pEqg3Px=Nd@M8vR%Sd9_j<cmi(ZD-Gc|_zHXlA1P>-y6I#KdvNY$=FUrTmM!MXIt zQl+DKKxwrSivQB+GA9ptg3dzMcdtNR?%9PA1d~p#XskEclF_YhgGSN76OH!0t&*3| zTVA%kcVe@aSgiV+lpV|MFTR<CpYHAq4&)cC_sZ6C53apc&s~HZM3KGEL2EtqP>+{( zt<_Zc`u@;Rk3pzyQso=pf(TC&v3jDT{5q*Jy_0W3uInoK6yIu&7O^tg8P6(>>ONb1 zS*hN@?p9}Q9D|S`>qf00Y}+tRe@;Kq(ywGqL&Y}!Xi8!DlZUF#o3q{HR0TuT&&0#F zZMEX=1e8Tx$3RW)NtN53H8`ATQz;lJ5ggV&u~jTk(&f0CT}gGPfBc8T)sG$S5#O#Q zCK|JcTrH?q&Cj=5aJcE9vYC0cD>x(6Wc~f4!SuQ_2|Av_Y|0!r(dqevCi4@Q3S74f zyQZQc2O_J)%JLZ{4>R@mkWWy3xW+)Ab&xnGu8}^Gg7sKr%n$YZ$(uKI!-FMysbWP1 zgcYq;Z^vz&(^%41cya7D@$!9{?qhu!g=f9LmHUxqpSLA9F(Mxsx3xD!V>YY$*7S3? zdjeWFZZ3SeK;7{~c(AL5q^om5D)9vIDH|6*Cs(?d^ZHCIox#V3hi;RfHa@iwYUM`V z89$%SQFu1OfnmiLzIAC%IKFVb?Z9Y~D}^bu#&v{@iw==?_~hoy6q~GR=>;Y4#Y?Z> zUD4S3-b$k)J^nC}DqPmSS9I&gAqIlVEgEiIKMwe<W#RvOKMuedgtpfn@mD_%_`SE` z*J>BOx6?-LfA_UdM-IRlr1oEye{$r2-@77y=lBm!(*7Jd0A~yvHb*c=4*0#F;x~@K z{vD8gI&uKc5H}o-AdVdHdnd+!IHCa9KXBZiBM0D&fWzSk;>ZENPl5Zz5%F*JGX(0_ zS&+ZfRB*<};V=Y1Rw!sN#q6E5z`*xexktfS5x;6Gh`-cSaE8y}a0IKVpurTgcSryR z+vh%e_dWjV9!KEs9tUtn*I{!+f^?4qXfVb6;<$eYWOusj9!CJbs&NM2;c!HOs2UBX zm_3g0{bt8qw+r*L4*54n4rgp04o8rigaI_TV)i)xgOh~*<t||Gs~TtM9u7w^M-KBR z&7d&Ie{gB`>BwRJrWsI24g;<k=<c=J|4<m;wd8h#4M*Vr6k`4+8c<6P111{ezkaUa z&|k;AfWL73n`jUykk2&+Of<+nix|3p+i<tL^rzj0U)Y$xiDvg?ATCER(I9^oOZRVM z@79X<3<eB-VPg-Dz~u<CnS(*VMDz1KLiS&Xgdu+#3@{Ylk0A_u=maiDDA){rFwy+t zxc}q>ga5J(5qO0S!yZ_H!x4_b6*dg=C(WSXko|uQcZdA`H0AJq3}M*AE^s-5w1UGR zf7A>bx_`rK&y+)>{$|R-um@$}as)BuU=T3P{NtIq-Bsb91%mzy!@ns84pJ+ILBSM* z`gu-w|Ek`tcI}q#0Tf<U!?33t;Bo}1$ikptirM3c`G>Cz0RL$(00{i5hW<@4Fpv`( zFesQ}P(L>c`?qO!ebqgV_$@gY^lyrRp+Hm(1yc;_pBj<&Z^^;1&&1<$1hM2`P;kXy zFz9`6752_lA%C5z!uutJLI0*1FiQ>w{7Ew?1a$xHuFzj65TW=_Ai{vZX$H)ag8^Wg z`Nxx{yN5yd7$Wei8u*)H05Ho0_WS6OU&Y!#8gjo*QVCt$`>gzK$iZ+f+xahpKNxZ_ zoV#|gK_G@448ZrR{(~V0!*<YdKp=)34CjI#ED!<>l7?_@=)neo7zi+&J9@A|AZLkS zIJfj*gJ2+U59gj9Y!KK@H8?l*V1d94IT+4eJ=h=+Lk@;>TMsq}#E^sG+}DE*0ziIy zI5+lSgFuRUFq}Jkus|@7y9;1AxAtIzP#|v)=iVM{5Xe;&Fr1rvut6}8w}*3g4>kzw zx+9$1d$2$NNVyS)bAJyu2xRy@4Ce+PY!FDpFAV1nA8ZiFlsFj9Ek4*F5JL`zbB_-; z2<&<-oSS^GKwyR(4CgK%Y!FDD1%`8*&woLGFyvsrImo{ZISh0^hFnp?GusjL@xUdI zP)rBW3r9)0xJZkb#hekMTiQVfrH+M5)SWhNzisTg_C=URPOsv_11V33gQ;sP8Sl?a zuowANFVP?QD0qRFZTu-)%Ms&~VugMh%OywN?a&?&FDC&Y=gp3r@qIYTDw813i==r- zf&TEooY8+k>FvkbCDRrZiIlAob%NuBBd_f(`>P4l10%PPmx+0eo^!O#soj*NPB4SW zw8w}&V?M)H$uQ}6SR%rSPAp|o@kr@=r{J`%X$FUrbTCOWJq=gOp+u#(JsT|UNfQeS zE55<`T+;l=k@8Vq4)-wuBJ#uJ+%p^`^;RzHv6c#NeG4+iEeB9*CY3{R+fQY>X9ANM zr*DP{j(@7nQEj?$YW<4VouJ?Ys`cePjZ#9duh^yb(hP9L))?!%Psb_o-`ttB{g{0F z^D~L7bZ77AjyzsU%{l$?;h1WAf6MJ<S^1db$)#7UwT^mbj%L&wF@KJj@6Q~1s9<wv zyoRB2kjT9?Nq!hnJ|-N>W8BntNoFUmO~*rA(W%l<@GAk+9e*W5bOfA{{)0<tlu5jo zx(_q^O9}n$yG3GRD-ZA7BYT*>ao_fR)w{&cQgq1mz^Cb9W}{!@J+9=9%T;7Z)Qni4 zvH8MSWPHbc<*o_b8q?kVF{Xyo?sJu8dTV1#^789q?^ksfB`R+bEs6%uj;}B-ghZ&j zS#?g5as8;z&Ewsu+R=O48^UrCDQv;;LMI`DnS1q)qneAip6DkJ`47F2_AAWXgfF_I z>pc2TAADJ1U%lY!hg{@)osp~7)GQsFlN2}A*B_uNOSkRl>Rns=N@s|XKP>2ZXx@}` zgh_MgK(pxVC!+jZYfPB~a5g`aUV7$9fu@x=gfCDB>8NSkrRXrA(U*)|d@>(>;<DmP z9%z2prgrZI*DlF7Ij{1iqD_P2&PRVBeJo#XRHv$N<0~dzSe4t+TJF7o`~O4STZU!T zb#2=SBHc<#2}tKzGy+nJgh)$?lypdUiiFZiDInb;Al)e<ASewYEhR__e4BCI@5?%u zUU<LHw>>}oamZjX=UQ`)u^(et@X~VV?mXk4FwA6a;ZU5hJ%_Q&=<_Myjo|ghoF@qh z51*tBkhF)a1szOQxaMjdZk6EM2OViVaF8Gl%#>(R#CfHrnoh%hNG0(&r2AS;igk7R z$UP0=fw7}C!Y7Y#S@AE|F}n{~-Ku@JzO!&fpP8lSkty+<$G7KZ{)@H6^)A^BZaT|q zPlLA~d2W;J`SZHS%S#)6_K;PZR2AXak_~b*`LMXE>qvpxPn~$hii;|~Y*lLK`y56* zj+k}i@*m^`<ng~>{(}Hf5D4s4O;8~)F!=KSr<3(bh~z&%>j!vz`h3>+QsZ}k3J(AC zZ3sx8oOmL?D>XvkV7DRuzbZ9;j}d~P`+j<bL;rjm0&*)zF(SYYL2$6!&|miHfd4W) z!2fJ`fB<<H<Oo3w4-hz5{y^a8U;6YdV_^J0*A@KF_%;Mc${@!GI?ECyf57*bM%3?c z-%nHBAB!dsV1EPT2*GlzaFG4N_sg947X>otuVU!GWQu?Q0aA=`5M~krh7bIVQQ$Ay z+Q5Fn+pvGh6an!8<QPE^O$Zo1@FPZk9{$sV`Y;~YuOi-`-#b8j069jm`K@61z^~_c zS_uA!tq$?C_9XD<T@AzskYfY^P$6LWz^@n~e_{QD3;c|c|Id2{hz}sg2r_jK0)`L# ziV^x37Rq1EB%yzXw;@1)069h;kUawi5d4S{!Sfg9Z72lttI6P>_Y4pqK#CD;)GY)I zAov+0<Zo<sr>iqUfB*q<j39MJ2pB-X_m^f_$gkWg<X>{DKzsl>La^K_7(T%F!>|V7 z|BK2K{AbMs^5=$C5FkE)93u!A4FSUke#OXh`uy+r%ll7L-JieJKzsl>Mi34g0)`L# zh!M{J7i~Gerv`sEL;Ulu2I2!qF+xGGZwMGZ@H0k%(^l}l$H@DurzGE>cQue6K#mb? zus9e!@FPY9?_XdTd;-7hi9CPa)j)axIYzLYG#EX=_sh`x7rp#WS!V>&1IRIgrNF`H zfq$OkU)U32Kfi>0|8jZ+(gVmbf@IvGVDtdrUm8)rJJEi2MEqlfP#`;i6d?p8y$=Or z2l#%N6A`?pKi~5G>SW9J=T5dzAUl8@BS<v?3dRob{W7AS{tf=UhsTc?dH%Sop+I&3 zIYzL#>|pEwALK9Z@W0xF@cy|y2oy*TAV&z&9s~+T4)8&K*5&^qM(D5Jl7A+vpg?v2 zIYy8~G8Bv*_!T4n>EGYq8%Y0%5%S0P4iv}^AjJsQQx0;%1gu2&D+B$zD&s$1KW>E| zBh61%8KFQj;6wz!sWL)=zI`MS2x|oe*7uP_Ajc9Y(0z|20_kiC1y<>SA{a<{2nux3 zBZ)vTWhk)LjwAxHDM5i=cq9?n-T_w3kwhT9ZlFL%J5U4#X+8r5R=$x$aF7Q9^ra(- zpkNQ;UseQIl@SW8a3hJpb~UiV4HQ8@dWt}S6>cOENX`oitZ*ZVK)P-~ffa5f5l9;h zD6qnfBm(J60R>jLfg-RfBNSNSMiPOz44}XYH<Ab>8wUkexRFF4-3_3?3OAAn1dWFR zE8IX4FGvar3aoG=i9qNdD6qnfBm%iILV*?T6QbW#8KEaC-2d4AAOfeUGOBgk4e*>F zKVV<&H@GYj$*HYdZnlWRi5sTL%i*8)f-88XIHv#0*V}s(FV9<la3)$7cIb_`b53Y& zWiY<6V1xYAl=5>zUVPi8l%a_sA;sE?HGUr1isZ8gS`sX1#6b-#49d8RXOx8=5kCy! z>(z@1=nF6-T@;a^SSj+o8ja(hNtS&4c>a}#$J5lMH-@&dEJ0_VojDsp7wpdz5^Ty@ zvnYI(njkG7>v{<3rHIFL<eXRbyAS3{9~ZSo+Dacjaw#@@KE_p-N&A@LGyk0?rL30{ z+T9gZ0;@e*32*G78u$lNheLIH>wE3BZ)~iuj|qPrmcVpZ(knyFk~_=CO%Xx*UTeBG zMzvPI|9#h|R{UGVK2)lo25l#gruGeeF%yrEp)79b!}M{&bOx^tI_3I>F0@dlzY|lx zT<uplC`}>qWxbMlAzc8=Qkr?e;1gL@=TZ%yi{{kSG!vDO0o6*GL)24K9{X|^C8-RA zO-iV*Lxj?CcDx08W4)zR8mGUVo=B{ei*rfckY0gadRiuyw4pB|C&$8>T2MSJK>oJ- zd%vwP6I*dIHQF4N%1w{G=HN)NNBtGlwwV0WDUv1eOfJJg`lf7LSeY4G)ziz4y-Qjm z0yi7;l*l&t?4T{nlohVaEE?|;rTfkNuT}+1Ns?`zQ&czBy-Zy~pG``*<NY$5tY6G{ z?nBa0kKSV+zi7Yn+xE}M#4_(s%eT*@%;Xvxc1a!`T*ccj2)heu=T3I@%$(OqbZs9% zf2n>0&Dl+CY9%bwX(U*9*f#WKvhm=AX^=6$k|QPqo2`<;qbm1XLHESMRCr9DlE+$d z?vM_YkF5mWQ-zL}h&HI^YSZKfw+vE#tnUvf;Jq-A?CcjMkjr+q-7~wS`pm_?#kXxA z{MD)U7ni?&{p=z{E#51vN_V+G+xsG$jrP&Kty`Z>=d_{>$3zID&(t_?>iCorr#z$G zf^acA2n2fi){B(uPkXn@2S?drj2uN7n6G}pmN#>|rSEDaqPyQG9~5P)vYgqr;Fr$x zQcz&6Pj5e=rZQQ^$oY+-hesv9UZdMLiR=otW%G`Rs%7V6@k<m%-XC``biZ7Weta0z zL3`#L3Nr>|2e~{5JwcEB@0SOmK*j|6gH-v~@*otfum1mkhhixBMdn8e<@A@WQ+g4h zK(OV+Gx=SC5DEpm%KY^C!Tut~UtI*@f9@g(1tKv>F(SYYaxk!~%uk1!!08Pba30=Y zCBi>ntbs5Ma*QB+6%+<``G@~)jNcFRKb?MmzP17zIUvUfcH)GAUH;)e96=Di({s=; z82p#j?~gfVD6j_va*(_r2L>3}ruh}*X;<X;AR)gzYJV<SLxJrhkb;B@fUQWdUGpnQ z{?pgDV0=HlEHKEQ^HIRsKXQ-=kmDp+?f+Mh(9;%XeiRCSVdcDkG_yc~#ed`=VIap> zu;Tx(AW!YM`B5qS<x>0eEHWst{*N3aNMjNxSpA<5@mHJsdyKGOlfK}8{%ip2|Hv_d zfVj{TJ`5!~$UjIncrN81O#6E-1r7)1Qh@dS6A}C_mjaw$fFuH`!9symdL$7DNB{-S zF93?bDu7U6tsO}OQj&uL=NBM}Kt>lsffaKk5d`GI2%KMlBmx=Z2L;x>fg-Tc9#G)? z0wfWLaTp4$UY`*C?ivR+zW@q5&D2qgNJaYu9>UhO{qt_;pNjXPN_-?w5KOu#NUdEV zPvFlMs)a^DXLh(!{jFGX>9#x1+Tr%fz@=NCw~xG)zT!5bMbXi>VmgqD&wqf7YB*Mh zpfrj?&}K}~f_X2gc@s<JG!A{rd2&ATD$~qpImK<rmd~M-T6C#;@Ga?wpW!BB$JAn; z#n93_StRrf9Sev+e$`75!c@|G*ftPmSrhCo)+WqBtQTw~w(eLc+XQZ(WRKD5rCIiN zQorfks>`0DpR}M~`<Afmx{jyR))pf<+IVC|AmrsxWL{lG-oZ*FkfFKWEc#X-LV#~J z=x-+_@rX+Jix822cC`E2g!|g)xw`#i=S(a*fqRK4H|aihm1|nK@SfNAlm9XhLNycG zDIJQ}(GZfEw#>}}OOd#zk$u6ux(MIMmP7DEEqwOMgOJ{qZv6Q#{;BHeH(n1vVpN5$ zj+(Cs>Umx<-3%{6L<wts3QD26UQ6>NZ*U{E+~?-ld;EuU%x@=F#TZ^%z8iUx*q*rG zIQT4d@3~rt>)<p@tk(6$jrMI_BTtte2J{zCEahTCW!x_>1Q#Xdi8pBU2N+X)eX5+Y znSDf}kAj!b*9>xn_^%uO|4-f<fbanH=YR39_Xgl}fYa(uKv_z3zjn><UdsPuwZFfV z`GGThp}_9{Ct`qu&nAKb>-<0w*lZ#wu!sK%(f84HV6T-E)%stXofm$Z&CVDuj^lgf zy#Lyo`fFvh_dCf2x$32;+|(o5_vIW|A2j&x@8#cr^2le}kLYZd6Nb2R<P`QD9yaAl zY2HUr<z?1MY{@C+oZ`>0L<tS~*{L;UEM8BI^^8wZ``Wj*tg{TX&7$39+Fz`Vz_6Rm zjGsnD#coe-H!s^#n6Q+-Fqs@^YZvl)!GXsf-+?M+bVG%K#N_kZ=)*cxT$HU%7DbSy zd;&4}o2C5UEn46x0O$|s;NKS?u<n0a-3fX{iSE~5|Hq<*|5~)X|JS1Zb$s}~Xa$g} zGQhh2i5Pw}Pzws|*$)(fE?Qu9{)Ff^1GS*Q&ilZh1OxFlLxDARBoT;B77Fa24-|nh z7*JrP97zQ7sfGdj;3J7Z>OU}G#T!Wk;);O*yV(Op5RjT53|O~D5`i4RVZfgBNFop; z5)4><MiPM(SYW`;@<0(E$k7)DtRf?cK)?_f56J0Afd5p}oz!mFkMiTzE~~H0I$e&I z4USCIu3mA3mkygDk{9V0ePT_ubv;z0qcZ9}&q#b}XB=N`O~u4?c6PpUX&8<vHX&Dj z-{<ZHoJ*v|x7cDiFHl(&VNK-wt~*iicB&=NnV9xI4L78RTxMYH56!3CwV=9s2{rT5 z)MRe!Jz94S@fJ(E(yLb=a!w<RZF5@rOw{>EMuNOZ+;JG6ybQk@U&?qctxGDrjXN)( zk`}Giif%F42gB`7afgay_iDX#9<Bo^Z$5Dfqd5zH?Yl;u^{3A>{V#G62@0bSzUbx| zKl?4&i;|RY-q8@ddbg?yD;9-dd}Hx2O~Z8MQ0hEqahF@&h^m$Ch3h@t1^m!*>J84> z)wiRK!~L$ykqPB3l1(86_jPn)j1zCnyt#RnC#)T1Jn&oN(q%US6bL>q&hl-9^JAiQ z%vNddWswHkTF#sv)Ve}!h}z@jk!tZBM%%~x@i+C9Bh&4rH1NI&qt~?7QL|Rlosktg z_;j^NGVfi_fm6K>$(xGZ2YX>IPzT$cJw>*;l}xb)#1Xe__W3@n{=&D3HF~M^G%=5l zg`84*7k5=xqjq}jWugzP{Ew(i^_rL|+;{Qw9pBQq_i!~BNDgQ;;$E?2OK&?edKSJf z5bR$T=RFeNhC4{GoHk!`Z*ijR-NPJejPp|JG!KiZl3C4)A%~_I*f6YHX;WH)s+N6t z9tiJS-S1oAt1Jr!)yw$ava>AeEidd`5;1%VDbKa`dl(W@ClBfD$upl95^Wz|3<%#4 zoa0ewRm#s#dm`iXoPgkALIhW6d$lVXi%(J0_DtiuTlXz#EjhCmM&GFG2Qyt4aVfic z$4o|LaMd^YY@+<Yd&fG_<K%4_%Zg+kTEovB{<6$h$F^!MyRic`o;Rd+OCMX_z)C>t z>bRt<kER-LuTmYZV6^jYD2cVxhuquz4hnuDFGe_l=fxCensXeYg+}g|uLaAO@()}R zBRO6oZA=Og4TjJgc$h5BzNQ{<OI}xUz;m1w;UM(>lwfAi7$O@t{N?7gB9`dz4TdSl zmiVoU*O@&x%<%6ESo`RhBPy|T%j4PJQJ7&Snth8_a8ah3uTgUl#E?|=o3rf{x|N}; zz<$xgxRcmg2E9k++*!4kn(t%%%QluP&BNVXkA!#-m`SdsNvq=VWv;{{%w!(()wZ7t zn{5aL{DsO;pI{y|_U7X3%vNE}SKdLuzqT5Gp{q8a{AxQwviZ4?Qzy?%<5?o79)|yj zJ6@Zv0M)e!6yK(RjKUfLhsmWPM5~z6)ZmL56`9PiE%&oH$C%&P8&KZ#GP@$5HDEk{ zb!-MtxBp+q4sPl1coFa4o<U$hPy)t#s)RcX$V!}22NmE0oIwQscyQ+bPeW)JFEE<{ z15y+xV))I$83v>%fFiIn2n<M3oDluy;0yy&6iDGgLB2RZiUKHtfHXXT0VxV35lDMD z7?7es5`jGkAVmQb@qs;ZAVq=n^uW4Y!+;pY3Dx(}IpC^4t%)B~#z9qoS`<Gb1i>$0 zK#~GELNFB&r9f7JtqUMaf&6=c{;WSOj2|kH<QNP{Qy{BAoFOnEPJ#RkK~hODAWwn( zG(c7Vx;8*yBN&jVK>oczf7YMY#t#(;76t<{6-ZA53PPH~fKUa}?**><)7to<0_ocf z12zsoR)LtyVZhD-$SRN#BrsrE7wH*-|6YGu8$VPam>dk)JOEh*`ZWG+ZGb<Ge_I>i zPviey8~<cf_;?Ygx*?2yH`{x>S6@#@p>E+QtSaNKmK#7pf5-{f<-o2WC~5g1e}7|% z7;*4bsHUShk>hR9RcPx|0sFbv4{$BhDk_|CEe{^h`(1j-@{mGCu1z^J?O@^Fh1$ao zmOG~RY12FE6qTEZ(n4FXv<CG{0_s(Xrk}NOs1evCAIv0rv!j#d5^T57Yt1Oq78FF# zITYWD{%C!ht$sg^d?aj@Ff*F7u2578!H!ZE_9WWhF1pdn=W3p8Y%0_B2X+fw4J(!{ zeasIwP^?PHsiz{^79d()nOSAqEaB*K=W`gmsfSb@<{=?yH<$SQf*@0iW>)@u2@{ls zq!g`+2acn&2T81?*SQ$$tP*6#aWgFU8En?+BcH4jLh~fwx^U1_7;p_yPKG6n;QE=B zPkfch@4lh?&BhawnwaDvC`pPTi6RSmw0=E(Q<po|mvwA8V=K4Dr35E9q`csaxwRKl zk<R{#m-P6-*)h*Pc)%(phGY>gfzZH#-=QwqoM+=5i-%)cA6Cc-R)jE!{4WVVdm8jm zqv>(c)}Z($g4vAS8wl<GM|fxWb-APJh)rTEzuk%_qL=V&M{Oxb*%#%elY6QhF19?z zV8l0zRk!!_{lT@JGmmhq@W#@8gksh^D<r?VdA@wbMNUSeKqw_~hwJhlY9Ln28zOnz zsP`kpk}6{p2b|Y=-j3*vtdOIrQovE>`=?XrbWphhzE&phW>!MSeIa=%7=mdBJ45`9 zmZhI@oW+ZW!b<gYyf65Fc;vU*lw#|xx5}x)n87NO*x}zM+H%9}oEuNG;>w2}xd_JC z+ZU@zOzBjsVLhQ}3#@JZWEbUwiRSIFYS=mzN}IiWaFZAWdQiJw2?v+AU3eUK#kE@) zMW`+MW6Tpt^Wi&{d>$RFg>3cwU*zXlxh_PQG)R0#h;F@i+zQb-$~w$>a|70nCKxJ0 zDetS>Yh(pOANF~EBy&9z`xBHYTf{4M?eWZH^|x2Lx);$F4*S=r9mO$CBzyy@t7>Q+ z7LA;En%`*4Q+}+^N@1|)ZvDjcW$r$zzpv)Aq)+|_wrWQM-&Q)Jux{dBekt~iY3)FA zG-l1$=|WdK`dzG>8rLr6<0_(W;M}NgQ@1>5hVVXV{F-9^UYZs)E#JJTWaoCpxcL^U z@_nzp{svdP_%Z*8=gWs&Yd!T!!Bd!`h+9SzeJ`KkcXvUzg;jTX*W~N6w+`NabW|I3 z)q7=NVj%V&wqtM@T;rN7Q!4y?h%kjxhgspmjqqCq8_xu}YnzvK>Ii&gZ9ms0pzq>d z@_$Np**yy{?P^D`v8kgu+d86gP@?t2M(4(g=`|7S%L^UOaC?q&ChzMeI)YRct0Bgv z+XHXY*q<Mu_4H<0d^IADf0=bf4PtB4Wca+H-fCwxVgAfr#vW%!Yy&Lvsl4X(3tfp= z!pTy8Pf2q>TPRJt`tLy>v9Y>ips6Q#*VFD?p?nN={i5*hRyoP?WqIf*N^q-_;Mla_ zrS-e1>>_8Mp0yp*F41Sv74401dDMJEB7M<}x5{<GJ2dNkrkK;r5Z0=@!!s|HJef)o zWj8s7ZBJ5GY;}%n(^j9jw2N|5b8#y2Z&H-6ELC!5Cs7>*=vAv9WAUKWy^CN0xdxp; zK>ptWq?0!y$d8_yzy9&FsP~uGBjAh-80>V{BOoGiS{?7nx&rK<fjGZO(F**ht^k7} zU5|hS#EBSwlcI$I2WS9Apw}ZH#&AOPn-nb!I6wm_Jdn;nFd&Nn6oKV+VZZ?zKoJz| z=nMo3kVGK7I1D&I11JJboC2``BoQCj(*vGz03tpRg98j${znplv>S%OLDHGL5cp~G znf_`wqDJ9A^O+_kxN;slu@>cKj*)Wxs+mc)cF&nc)Yz_vGZmH|*U^c0eUU+sb*IWs zO;7uH)8$SLR%3{(dC<w;Kvm$E^Jg^U>Qun!p1MI)v#&!e{?O<#(WU@HguDi>`RyV` zrq*)``KWLBE!d{LY%%Ay9P`WlCWv^eiHbWG4;(+-AFR8$RFLGszS@{GWvV6{%fzd} zHF55if9c1A7N(FsR$+7k&BRE?aEeEH+L!&m%2^*fAHJ$Q7`Rx=j?z?pCDM(5JIN;Y zF&b7Q+Mev(B!4z)gtWeYDF<W16`Mu9_^C6p8c)}7)$Dii<es!}^mc^Fp7AmGgnpCH zSLWsv{l~;k@=z%TCej3(EKdzR-rZ~7O@tO*p+;?UlP~Z-Mn`E#%VT47)sidey*2Ws zG3ayl55i&$S264@@xgkcU0`x4joBT|_wj5X?)59t?Hn6tE6HYXgyq8V>DV?or#ZsI z`~)uG_OnWMniUVt>0Mo$tb5h!RVY?p5pEa9w^^3l^o|0>Us&eBwmZw1i#>-ygottS zP45OfVyVRRZAMN}O47^>rlPn{B+K?84V2>&yR0iT%hz^{nKsySlSVAwDa9GX(sDTN zTRXKlEUf2^XHgkFPzlq#ZkB#7pgPvn#Lo>Q^isyolCsWKB0po|J@@mmbS%uP5>Gzn zjb5m-zEwSv8)Lk?ufA5tNaL;O=Yz^v)8cin+H$G?+?_lAdDM<yc@{`}hqftnv3&i; z#NEyfj4nU<^Z;w}no;OR=+d*QF#^Y!fgo;Lo0qijo+GNL_v01@x>N|NwZukhoBAf! zs49X~2G!;qRu8QQvGX*%TXDQq3(olVu1UlkC(kLrTHm%zcj}2kOTJ+@?BrII_?9?0 ztcGPq1-_xZxRRaWL_->W;8B>{w}V+|HNCGg>n$Mku9<Sjg097Nbiv+;x{qIc{~L?@ zt@{M-oZe$y#L)vU&k;aS-sU@uu27RydE^<uGIY$zO+?d(p_fTso7$?vD{t*^3Bm#g zUz*q*&ktsDcCk3h1r}D&)~w?%S2^^#n#&AHcl!E`80b0*-99+$`~ikX<D)xN&XA?r z>=|?+fq%nWDt|vSA*I@f(clQ7L~3ZH!#R)1Zm?we?&!%x_R)Z{LmK)^Z;R~y_cV9S zuikRB%&w4JJNrBiq8&QoQ7{ToQ7Q2;EL>fZJ;uad%F920<=m?+b;z-jpM6|>$_@=i zZcVX{hQ6-nPR@AlI0@H7VMU$DAd`ni`L4n>Z;dMYo<ySE&2zC^WW_@#{1S8P(bYjJ z7Lqgr9o|ni?^gOTYx=~NrN-YilNgt4C+nCp&<sMyr*E4pz(Xk7yE9eZti2gySJ=C* zxJrbloAvtseS4qoyZzV4y9agIBt0zx3N$4b3Nk$dGtd^`hl6moJ?_zkuM!hE<KD+y zm|p~gZoJvK{=!bH(Q^2+PJVj*f-_MI&D`6%XN%6t@x?4p{UMpe1|rU1rOyYP5y81! z%ON<}uA}M}b9sxsHjcn44(%)<9tlUsVCdar$d#*2xXzcv948AQPP499qO?|+Xf|6o z-1-4hd%<L6t4U^rqdF_x86lOcTr&^vJ{(HkFlA2t#!)bUj~Kk(!OwLgz;GBt&+P0? zQG@!No*r|dQYa$m)h>T#bK~K#1Vf;C@o^8{ULXGqvq9|4<45)zPS2yiicu!+jN9O( zc_i;!>dwPy9pg$b_qcl+FU?=j?t7XdfKGEaxet+K*?v3JnU^lW5Yx)8%SkJmm&7(Q zsl?V+QycbiYZi8wB)F%AjDM44&kGe7g~vgy2jmb1|8EhDe?3I~#Zd{!VZjimLMdP{ zz>x>`N0j29H1PK$4+2<~h5-q!6EXZQBMc<8fFjT%50KD0A^KfL7)WR#g$I`T0}@(D zA`p@eh5#Pp03tAw4hHNJf+PZQQNj3u$2gz}1P+A(aUCQPNYhFfkkvsFf#u<V9XpUj zAl54wkjMdwKyyJrA_qwXVw!{ji5#E^thp!**gpeF1k#2Y#{VxX0<^FI?1F(Lf`TN| zfmjQY2&6|X49K(~iNIF5z`v{rK9I>2Fd(^tBmx-`2m_KUNFtCf7BC>Wf+PZ4MnG}} zNd#ipg#pPGBoWxw0Fo<6B9NXyFd(^t^s?kf4i63_SCB*?#tS$Ph*yvo$^$>mj6iiw z`!s$+&w2HAmhwC2Y)h?Q8DAd0W|{MGBq#r!a0eaLjVpKfn?6li<6z<RPUCTx6XvfL z){DN=KhXEs-SS_NG%-jRjx}*}4D}G|bgxbyny4Dlq7~hTmshy4znoour!Y0#Y?b(7 zlv3d$NAK4wbU|Mo%aZ%<%f%;`!yV!LUql?*57f>}PCy!yxJTXIJ`hPKHbjJdM0sar z&EYR;axhpmjvDJ1(ERqRyO7^x1OCU3o||rdB#3zL!!vE7nspuoGW8=q39Z|hUS<|z zAA0qKs~^v=@Z*m$mYCzvE#Eg1Va>b~(6Dp4a7wXjcd;qo#DBbDc=yb1(S1HzqISuA zKNW}PwPOT*vr0T&_JXfs&cL&;A1Myinhwpm>RzUBl^%_}|K@T7(Gq2RX|11OiyfaW z+UPn@Exxj%)*ilmp9Hn3mReM-s`VFMsao=MS^tN7SLFsj#(a?|8?f?iIod5xyQX|R zq=bh$aczM{X?g!c$lZ&{jgbtBT~F?Ny`gV@SmgYLH(5B8xS7m3s4{diVuVCA)tS|D zmqly)+Jzx<o=Dvkqx&j-@n3Wg1gjmr?C<A4))Spbl04VfwkBiz0*|jBI(UhXb;;EH z`Mrm_nvJ{SygH?+Sqm8^WiSj4g|Ap8B!%`U*J_m}a_>t`=)1I~^Jq$zN5HwhO57U9 z6<4NC5l@%WS4xV^E0M|ankkPJ`C3f%<>pG10_$OLE81)sQ@bwRCKtZD+f23Yr*^jE z2_424OHiIRw+>fTwhf}y^Ccv2B+JNDnWU*-o`*?}J_t|lwf|h0G9k-d63i}&GJmVA zJ&=ET94G1QRP#AhKC(59hp$Y@u6D(}jS5_qc|V~|Z4jH66&|qFL_4d1VVU#(wuCZf z2HW<6@&oMsYwUfdaW}^wp)#V}&%JvlFFZ5nOs8ZD{Jc2dF=eg6$nctbEZGAGK85fe zy~6vOVvBnQMGr{T-WVX>c^vb3P2b5gwS7{hywfdB>pEOWDT1;^658=LP6e?|LK}7` z3;U&BF&QU)>7b&pX4E$+>l>Lf7Ekj%iBsc;gmR+MNyu(WWBH-(Q#-H5r2FN(OHszo zbY@|Qep!ESKeRsb9$odroGY`aH)B=;1!im<Idba~af%4{=z;~*MZ~KzTuJ)_UytT6 z!d_pvNNKU$f>ot7x5mG#TDmr$*KTg-L2sES_SHerA${U)LGD#u-7M7FYFB;}p(b-- zM1R}%{oxY)lKMpMm`5)xrze7Bb+aV)X)(oX+B_I6>Bd5Cs!uc1KUA<;IY8U8W!Zt0 zdsv4ZNV^&&)UXabd%A=JTfDGCRF!iM`<;y|KI&_I_Ax~Nxh64%v+uhrd={*}x-1Ab z856JahZ>CwV0y;q>l@Hp(g~N}RVOw&;^tAevr9=nvXawHdYSCcj;SHb-7iK~n|y&r z7H7OeE=pi8S%b;sl1t{^gUJ1hk)}OGm5<@FN4|5Nl<2cW#6C5qloNdz-)wrWRz8N$ zS!2Ey>DpJp7xAcSmtk(U7pfw?FIks_HeL91nza91OMO2LC*s+nu#;#^(L2}%%_V(d zO>zGSI5{1jE|ef_p_*vKmn$fDv>TFPOIm2-MPDl`{lvTKrj(AVF@l)OKBZ0xFH%I! zf8c0mU>41VT_00bP}H~F1)nuIS<oqZDg3>+z~P0+hV6tY*QVD-S@dWUP}VO*evg`6 zG$^z@6NB4k5ItGUv9|j~BqAaT1s~@R$j84(qJOw87vZ$jATpb{a^c?d#9J}_4lM-g zh+FALHu6ew%_8_aRmlyQ+{P|X;4-pHE~LrN6T{Wf8G>Tp?Js1BUAQOcbVM77$*;bg za?5-~*(tf}J0MQnjpc!SJAw23w;t2~QPKqtL=E9Qr%TBqP7*7>zFogd$^Mgv<yN4B z^S}W26F3k;JQ2fhQnGL$ga{OY-A~{={C^PrCM638Hl#rc4}_6~pXf*P>pKlWoaQrq zOZkTN7#(5lCi@(J_#M>GA0L^+Ek|T)p|T=*uFrLc-j1}Dn5pmWpwHY|LZ7I4>LP5+ zzx8Q)FGjMS7#|-K?c4=2r3zG1$%0SH5kZeo`Lo!~=+de9A3p5r;8n<_d`DjG+Qbqf zrPHz`{l>Y(72o)bZuIRhq+*H&8*!65HlA#Cxp7%tnz6IK@R-o9rC_?afPFd9EYnQp z8qu4VpNGw#!H;=iiN;izJytVrWUs1bmOb`4U1(dJY4mu!7(OhNR+7O&@a+Mj{@XR# z)cTAA@7|DdSNX~|MOO#O^#Kq3`YJ1K(M7`7JfFXjB}s)B8zjHJ`3`ptvT@J1XCdK! zqlHC)Yt`K(Wku^zMvZSI7ZN+6-jIF$o)Xe@Q}T(t-i9SH<IGfZd$}iu7mZk#&gmu7 zC<;)?n=p&*9&xs!j;r<Ek$tA1KV<G4cN+p*3UMj4J7`|E5Om^9)qB6_C8XkX)}+2* zwOxOqF0&pL7X{uB@e*W%p6K!O|Gq*0Vow5l`@nx1CH`$s!hzJ<X>}*aVI{g>>-)F4 z2E>2LD{x+<y?mln^B-RX^i;lxZhT)JLaCk23r<*<V-<YLEj*+v-n^;g!Ms4yNY^%5 zv1H5_<u?C`2i0g4jX^lL&j$+SpsMWBx5!ElP%7uum%UCi`JuU0yR-z~?h&m|S%0xo zyUv7zeC+#8!+X*;g7f_gci$_{*tiU;Ahs6ewj(<BAKg`}D|2b-dPrQJJ!Z<;$3#dL z(0@)fQNT_+r_1n-LX223g~wTP6nziYcVKJeza1m|UoH&bn~3*RQ-a|@=I*pQUckcm z$FKwblK<z;{(WKmpYZ<^1K%HF_}xn$NaF!Tpf7nKjdw!yyO%tW#zP7Zr0xa>!gxRt zSltZ{Wbu$hAa{B=5XA$EpdhIsIFQ5xiXb4+9~=ncA&EeS)xd!q9+C*e0}2OXct|3U zzKC!jg$ESzfk2&bAcTh`0=d(}feaqf+5<76!y%xrzf)b$L)AO&M)?VAm)V{DRd~@> zKaSmL?`(l(^Bb!6G)AFal{imqMK5mlZD-&Lg6#UW8174$sTJ?X3+a1V)z(BsTow8X zg=GZTS8bTL-I?V)GNW?GmyAnYclw-!O-i-%sW)9#{0%;4n77X)Q!&5EK+V3>s)HZI zr(qqQ%j{T9mLHomqo?B*(L0<e9ep^s(<73#$-lH&xtxE9>0l+A_ayGNr6)(|E24P6 z%yu-ywM71hw`sKe3g$J<KX3Q$5F}LBhb@es3-!|4dn5AT(58|~NQT+weeq_i%l?}r z_gN--mg!YN8@8g=N8GbZL`~eUoyZ(jcJUJF!sVmi>!Q+-b4<{YN9|x@2-mROrw`@F zX6DJW7IpdBJ@T+Y4R;Ft`G8)vdD<pzrmhs0(<Lznk4K5AWHav&P>M9E4^Yx+1JvNu zmW5JNx~;Q(<TtQ{H_J?1K1mZL&1MUHYk|ADpeLXGeAL{-Sui2y-WIUbGhl+M$DR_j z+7<F7X8lR*aGh0GhI8E)=az|&)3y9rRXocNRtjohDmsPAjcQ$#>K^P6bUnk2y9#X! z1GQNgeIf~Qk6p~-D=WX<9&MU_jDr#=lW{xwN&l4LQ~+H;8F9KxFop9|9?ffg-4({n zcSiipNXauahk3#l3OWNPDh;kCP$IN*(*&}{q)8e=cnF?ZN)_@6CkB_)aLtNqRTJLB z8>}OFdiBh>MjXPrp|9QAE9K*D(=%*$*HT}f6Tu-%-YW>wW{@XRdHNRHBjiceCYf>o zU8C*1xp_D}K9(Edu%dFua0vQpY14-V`oYmR?iN?MmWd*;szlATwBSOUxO3JdPY6p7 zQ<w5C+6A-ir&uN^%ybtluA2@j!EUSuf1_K%#Y3C0)Q(ILxg+HhlopPTDil0O!8e?S zp>ekUT!5Oa-9cz?fZe<C?p3<#<U6`|3y5DfzK!=2+`~g5Te`=Qo<A01R}qa9mY7Ny zYfxnvCMm%n)<&6$J*^a0;`dOpTgp#!?nP7-w{VjCG)F_#Iv4Xq1+^6;k9p!D)vhS% zk++iHws^CZ_r1#`=NV;$4bZe}IkL5d2YSi&Ul!7#3@iKcO8IIzx0K!VP`vkCD^RdG zQf*{izTvho>}yW}YxkTis<~Q@Zd9GPpHSpIlbq<LFEj6CRg&$8bA3mikLQ*wCOBH> zG9{U-J#$))wwBuCdhS$JjGh@;OGgo^<Cc0!KYyXDEAXa+*W1e53<uAm12Odd&00j+ zMA#Z`DI}foUz!}Rox-ze^m>tBexA}dw=G*<^4v{QnZ^LVt%2fqJ=n}rlpkNnq6x81 zMToPSr(<YR%_$DdW_j<lWQ=r}y~Cmj_PdglCc~9nqd(YW>>s*!9ae4~7};Td{ki1c zd6G2hn2Bd^+f!c>$Fg_(@+DB%^;Mirx&NUA*5qzdS-*0guO)tb_8zI1vZ+bxBg#6Q z>$(E02?0?8GOOKMm37ff&)7Z&euHLvhZjBNvFa&qzItsyJ>&3FGrFU!w4>~`B^JsA zDQ31xuBpVc6L0v2NnWnnG~LRY_Me#!cm5nb6lp`H-PPbpKLClmUOmvjC8dMgGLB_? z5qFTJOw!LkBzI?@u}4ew%ZppF_VH04KGe(f^}5g`_4c5rn6Y;>YQKn*Bb!6XT%PT7 zzc{Q+C;$%%rg~YlOLnumJNgpQV~z2PGJBoHjvr93uNG4enRuVwMEA>ZeuSCat5Hi9 zUy1(eV#OmR!dXabK&cnyk}BG&Vu5?*-WStzvQ79UZ>WU4rd!Y9Id!F#iFD4G&9`9C zgo!rfWalf}j|jg`pL(#y9UUce4k9{HUzx7(nb>O2%x<IU0l^z$u_h7HVRsM4X(OCa zrx$z1FblWrIC&C|>oc%Q#nsp)W`k$)fzqVkEOj4~y>q92@iF2!f`a9BbT-=F0f*EM z8yx#Vm{m$`!p+8U^*b14Nw3qz&tfdQvU#C+ee_eeiMlk=IgPJJ)X9`#k$|6yW-l^= zMtM<SoeBM^u1t9xLniAMt1jcWJb?qODV(yh=Tg^*bKn*6cJi+*t4gwGyLS~wj@?%| zG<RXFn5^h}`CpP=gy1^*XJ;>K;a5=|3nsnKeoC(j6ZC({!Yi;|vF&x{97;{{m3oj9 zD&)UCq5cp0(BVMr8xA?;xs?}i{`_OZ)PHUx-_M^=9^m;Ch=ZSq;WtH4IFJShia^hw zKp6al=r=`BIFJQL3J)yF07Su&L?GSR;Xo1`D1w1hdf-4197zOH#)AVnaG(eZQiy^B zduAbtKpJtvfn(&5L?G>E;lR#UKoJC_ITsu_Mh-~?(uoQV>|cc>0$WBv$Py?5Ys3i$ z5|&6JkVc$v;Pfe^RSwd&8V&<#fWXItIL&OlQ1u&eY30P@2kJ#F0_AArJRAd23KI^I zn~|Yp0w$MnDDI{qB>3IS+K-P^v#)tqk2BX6qsyk>9L#sSp5mnCe!Q9aR_K1nTa}4R z>!{p#4AyZny6j}_t<9brhl&wot_L%hHrMUvR;C0n5sPm|-xqx>!-SuaXVI^z=MX)h zWwTv1T9)d*|KzIAu|0!B#W%O(vl&g^7PAR9WK8;2$1_a?rL#v~A?+f&Hd_9+HCUIp zgC_GUZbaQkc3HNmkjs;tjF8DLjnsIyE+&8TcHHH?d=v5T0*~#TnA-&v1|P)^ch`NS z#l9U8VQAMcYk%bsa{sXB;dfl@WfiynPB=G`Ol|2_K0#A7nd<h18o$!u)W<q9ljBWk z=MPar44=ujdG@`#Z@4vhj^2C5B9%vW{qwU!EB<E*<#9|3Jq>hu@`r5{oP$K;{MQb& z;*)j7uB*T~!&E(nN&*#A)x#Fy3!0zaP#rL1iYb0xsI*R2(!ki6^wCZiZhYSoXOS+@ zKQcVM(0bnIe6I^>KEJ68Ro8W<4{H+ST8{eFsaetP83SwInqwv?`MXLJYl!Ac)mlHh z`y4-;LtP#*ia%f%jTPdZhixyX%y^7DGMn99{&*()MI(`6?ku7;+3<P7^sT-RNfM^x zx1G<lc-n=R*M}Nd1PE+AZX&IJLlh$^%`biBMdy&VOafi-O;l-AjIhm?;~Oj*8Ms03 zsK0zTj}}zRyR|exTVJA6@W{;=i>%QKO8DZF(c>ap=SCPR!$T%qw!S{b6z-2B5n+DO zfj7vH?oB^`jYSKYyd;0m?H<)O-Olws94!aNy!X53N5|LBcSJb{E-FU~)g)^vzjq8` z33JD5q-l|}TCmll@3M95d!qaFj5(p0K4}_bscge>ozChvA6hPK97^?J!YOYF@3fW6 z&ov2gs;}$&@y~f(Ixl43#!;*X4@Z+9=*?9ib!DNjc&vwF)Ti>UDRI2m2;-;>S5os< zMqiIyr<K%Zv^aaEg~MFoq^C|q1?|znd@}+27qaY2*Bqz(HB~efS%drEX55v^6u}kg znU%deRg@#;#&o^5Xjw7RL??O(n!oJw#6HxCyHqR!hhCpeJY;<5yi}LehMQ2o+7kBq z2i%M@H=-DtV7fCJH`1yT4$EU-r_UC@JV(=a7wgMVZK;3im>gEPMN^vlYb%WO@P_Vu zC*^QTG&jTba!)zyHW+EVi}1}wiwhChs|_!FB{|d+3EE@w>u$1sq6qk!+yeExp*3B! zfSNWdcV1o4)oI05Q`<2B&An!t{mxk2&6c?abwLPvIcfMgH=9>NIK()F1-yqIM&q`) zZZeVdq!@%od06__rQJB|>;kTI+VI*gJqw^QE@8+EB26p*h~k417++WC-MVl=jty}p zu1hYCr#9iu9ffu>5fa{<o!eh@?{Ipi=q5fFcusSdJ`le&VRqY8xxDmV*zp5@j<5CJ zS!8tLXVslY?(|DudX&b(0r#ay|9C0KfSf1Tc$k_vKsEeoCt8S%##z{_s-VoH9yPW( z8no7u8Rz?c@vSm81Wmz055k+XT2;%Vsz#i4LeAsomMz7Yf2c~)zZk43NXyH0Mdz+q z1(EY(Z&|IaRxfwg-I5m`m)b|ODCl1H$1YZpp1aeO->F%i<V(zpPL-(ge!#8LynXCz zNVJJnhwDQLlTp8&dpn0TL+CUcC^bqG+gyg#ut}S7gt_<l!!D|2ypLfqc8#dm?ipPa zO+19n6qwWaY+Nx-!dEG_bnt?4MFYy&{pTL?pkHmsZe||E|A?JSu6cGT&7nT!5y$Ls zthPp?jCHE!=mSWxWs6IC8E!i68KLXmkk|K{{8to1JX<S$GztAT-zHOq5MxSk9^|kJ zWp+QdZrpRiD+<xadnxOUu1US*hgP_}yZervPnDobeYrErOa*GmsM5yx?ZMSMay^I1 zE6T0Gm+vIt)uCRV^s5Pt*fC`@xJ{#-9mB8Bq!ULdX_cCCEt*EJea0MP8=t?!<4C>c zNMQ65?#F7k*OQZ@{`V{kcnooH{YK0lU+-<X(Kj=LL*w~SRAfT3U;u+SK2!j^Qtuvq zond~TYql&p_Is-rB<9pXqg2GUYquZB8kH`FZ%g9{G@-`_vC}$y)}BWQtmn=cn_^$% z)6IO*BNQ_KMn{0ULtxH1fp}lK4_%7!)q7LBXOMDIg~JHGVq5(_8isQNe0uofAt6LN z*G(cV7Ew?<f?oF9O3OMVghTvvY<SmLQf`OVERwe6b;k~skL@;M;4!->j(>70)W=YE zM-RNKTa?(JE1;!w0S(O)t&@C4bPY|HU$fk1(sHuTO>{yd(FQVsUtn&gWYuSLJ}l5u ztNsI56X&&Y8H>xZ*iKP0hB4#L9u-uCB6~cS$#`W$mQ$9Q&03eAm`AZt#bq2W(Y1|I zs3oaWn>uH9wD-HJS&F?TQck=2q?je~QK*Nyd?9)a4$s_ZGH0v0i~aV;#n)kdw=HEB z@GwTjJ2b`ayu|A6d8n2=iY6nVrkNX~`iRa3aXCwvJ%T4J-ouHyyFJ9rYAuc3mAU@a z{#kbV*DptW?K@Nw?WgOKR>{(ZqokW(HKg_3kfBhyg5trRsn8PC>F|`v>zE?CG;EQT zttQuDQ@$Osr|5D0PTL2;vH{U5wXA#RdV0FW-%zZFt@@koOy1+9qRzgsRac89y?O3T zd+Eax%C9tan0|PMGRt#(UA_z<TNgC1wDU%^VtgzLG@G)m-~B$L)Aq&;I>^oCgy-Ua z>*fNqW58jjYAOUjVOdq8`*ouFZRY&f&;EXMfg@$kfkurJG5jub4m4^2MW8nqpi$$5 z=y#cOpiu)UJg}P!(5QhV0_mI&2O2eiA{a>D891;{Ba#S&yMx0)yr=?vr|HOUp?bq9 zL6C5KlU<`r1W&5Tol|e1EK~DqV#)Ohi8E*J6<;NKGB@e;g6PAW&bHX}r+u~dg>BH! zzKWBc{Y8*7ct+$c1{aN^16(?r<jz{Izrq&vFrvrHg|kSw-S%%cq=}J|HKa6h(MY1p z#ren*_?&WRkWx6}Ao)@06A8!4G}e$#L=T4jZoR9&9kk6A8gANnGfUG03zL&zuy85` zl}_i%rs4V0BL7}S`I2`NPBNP;_p?Ol@^HJOm6yDSt+npLxvzI?o7$Qci$vs*1y%cJ ze9~oSTGCY9Hc{Ah@b0aOgII8_GthJK(1)3>MBHl9zufKtu^;?U#$aY+GFwQ_Yd%Kq za+u)MH2M5C`PC5Hw_JRFTICG9N+IN7Dx*QnAD?5UafU{}qrtGgEm{0wY?C5)!{BZ1 zaL%g^neBD&EBEq^@jEIw!US&iq$ccsj_4eo@(dG+(DHDo%pveLPOjt|Ta(au#VZ#~ z^p&r3*j~UE{jQ>fz+H6B*|7u9t&!dG<)KpLUCtv^=2ncWUt(R#UIt0ocJWy}ih3Nw z<nryy9*w%(`I(RPw392TbZPAAy(P9Kt-RjrX3S=<(5S0>uQ1{a(3B0~Rs<x-CAWTJ zQ+h9|?N;cp@m7dU%lz*9a6#g!nf-6$<|eMSxOH*ds5{b@q3#qlP|p2L**6lfkuyHy zU;7n%OEs5<6ZD6}FNTDKrmn`&IAGi>_N9L+%*^ajZt(^6wz5!%f<#daPFbG%nw=lT z7brfLbk3XiOCG_wGDa%mVVDGY#zN;eocy2PK;?;sng;d^4)NYeE7l9zGKkKzBVV^b z-`Ojg_viIL-kyHW&HVX|;D+s4DSF{obQ1YncfxuezSiZY4nl3XR?3Smw*GWfRiVJz zp!I@$dv|%xSsxh9CEkQ{F?zPDqs;o;ZbZ9yvr~eP3mX&Co9=oxx<JaX`xU-1s)-zi zf79o*q0^!@HnTghSfKBmVz@lvFD8C=xNbj)`G~{LZWr%f35%y|#CR$hnnJ@D&xty9 zk7v0ZO=_j%uWr5O(rud$*u<*3{7NDlJJsK`KxV<#i&Wi)$AMPDH$gqrC(&twULK{0 zjWFG|+;+#bFr|{{BTf2p2s-!jc-pX$d#`pu0?g|9vg>e+Oo(WdjOUz<P2cL}rM>l` zuCEQ5I^i$lUOr38pBmj-FFbpkQ}fEUwqn$9tWozumE1s@R3ioy|J(d`4u|nFcOJ-R z=0tbZ|E<pqu<<JVhi%~BKQlnG|Fk+dAh8DfW51byvT5HxPY5XR^K^pw|EJ^yJB@9h zF}xeQ=?bpY&fddnivWeFvVlblj|*dhLbl2;s4qyFp?gg#Bj~3mE{4<H99}`Uz1)c2 zq7O~A(dEU1_VX#dQpIeN<*c*CiL)Xd;P-dif6x-BG9A6Wo*`K-xYPTdM|@Kv&u&O$ ze>9P{nJdNrn8Ugy`$lC^hP(iQ`iTE0Lb;`pqNYsElzVv_oY=N)NB*Q+MEWQ%@-Ih& ztrPfvxlaDe6#@Kg{V+V7VnqPcXQ$Kw4GSl9Kf9NM)JTDjh101{SWA@Xel6PH9**Gu z=WxUi^tQl(PKFZ^{O)iBbTR-%pob%%lL6^>1v?x8oeW6ffnfzeCj(FfiWLBz3_uZ> zofi&tG9ZaS?7VQGlL1KtGIJ3QbTS}`K$?8RfldaX2y8AP9Oz^~5`hc~gae%nNFtCn zjc}lo0Z9aw6bCvPfFeGyzZ1~OfFuI3slb6w1|$&}lmT=yAc;We6a>)8fV7`Ld{qcw z4^AWzh<OBYf|~u0{Q(9!mHpvAZ6sON-f_suMVD1T&8kPAI+ngP*?zp;&{3AJ7JJ)+ zamK5jPJARXp{kRqgoW7I*%^gg0p7U0gQEb~X^@jcl_rn4{TNF2Vz5!rxfEBop2R<D zR<Ps2USb5x1!$~4M8W7<tPuZ8EOMiwZ12hL_9?EKi5!nYZQ`CeVIq#(xYbGbOg0|` zVD#s8GK<W(?8;8`=u72#n%+koRDDC4;Foj~&b;~H>}@V<U#0coFQb?^Hwf{B1wu?C ziJvk?w~`Xfj`?C09#>WA)E!!c*Xf{^@A%NsPJKW$WidWtOnu5o+c~Z-t#(Gykf+I% zG(xB0={mP+5sD*xPAFjT;*m6CBvucEZ=RKo=hmUmZR$P-?e!@+1$x}4Eiwfh<sB*e z1|CdP*Nqv&8!|dfjV+F3mgwXt<gUu2J3Su@IrEjfDtdv4G)%_%$(2Y(*fs~%lcz#) z{>>I#sr(j0yWd{WZnO&}1XA=$#9=p(_Km&0n;pFAe@!vWjh6+*Pk({(BW#i}P43R^ z$pE6+HbIuDXBgw6(GyR1bS+eCZIA5YR5r`-)7}mH5Nd?;a#T>>YMEJY?nyA;WIscT z>venlC~UH;D(K4H4|##8q0RBQ<})MiW2}V6*=(D!fjPR<B{Fx^yGMl6iYAv7W?YoG z-QVUM3@k@8to8fGVrpV`5tj7WhNa%8h(C+jM71J{Ua3UjI(g;ngBMiW2N^5*ilsRH zLWoR%sF5w1ZoZmp0OpxIKhm^%|1Y8T9CR)Ae4=eJZ=-P*x04<>z{d+zQ}pPg+buOM zA{JA#-BgFd^GRM-O~Tn_oF}L5WFDwHW4EfF37WV&pw(iJ9}p|U8ckw4s&q%9)E}W5 zV7#ijLEXa=m!LM7#I|2j+}Rb5uU^HDfZcVOW!VyU+LBmGg>Kw)lU|apR`mB6Ld#() z-iK>!XT{elD-z$!d|80uAcXgTaPP3utSH-D<e}*#RCQ<Uoi@%=U0&Cbw@+ch5Tv9q z-p{I<S2?05wRMm`yrPG}bC_W)q)0`Zn6E53pcR{n^Me_UPVnA0G?~@I`66x;*-zXo z1%0b3fd$X#b{`m6rm`X=b3X^_^?9b*8ipCz<jTYbeJ!ef&-o>2(S+-;N4LTwxR&XQ z=Cs&*_Fk4KIVjf$k|}L(*EH9crh(;equ#p6tHidNpu6Yj-E-_^5Fgm8X^X9EWa64P z%;V#THuv9A(98VfLL~n3f@SceO73$xd0!Qp%nkkw?c8W(whXh^0%B`Y2KL8z+m7TI zL3i)&LBmng7eaI?Et9@VkT#|eh3Y+KHQTxc*}}}*uo}gUar*Q`{7|pIP<9VzOK3!7 zmB&MS2}7(VTu1sPwkvlIH_TEapRS7Ret4QzM$If#w4Z3gRgAXLZ`ztoQkvmuHO{Ec zF7`@zMqu1Egl*DpmmEd1&yeQ_a|F3vyz#lCD7@MEFOlI<3oXGqy^ma}oj&ab4>|Js z+3dI;g_5rvS)Lnwi`Wb+xWCMl7&Q5HTC-=er#VTD|FPl#235g*jUg%vmnqk`R+E(0 zazc}+xd!S7UF}$2!p0~~J=q+$RH>7fzL2a>^f2+c#MeH*C|#|1S2rv(NpYRDO(d{_ zDyMEtos!5$eyP;cyx_S1t9FMx#sS&>H>+sg=~bmD_}wEB-XJe+4U>vA2xg$fQ-K4j zaW4z4Fxe{ZjLY?}Ghl6Ik)>u~QW}P}`vv3PJ33Trc?pe}qiHvt;}V<4A%>3w<%p|m zxw>9HMJrFf%GC&O7+N{+DE*3pDK7YWsfP3O_HEWLW8HS9E0{3$xy$;A*_(4wSk?@; zcZm=4smc};$~qteFL+HKN8K2?>v-#i(?zP0P!s!k@pHwR<XHv8D26KqoZ~i=i?n{? z4x(*oB%kNIA69u`9+T;#;O?xDA)mexC)z0gPdCK*Z;TTNplJcY13S$@8v*n!oLYxG zgXe|-mjD-x7X}mHk~B52xn<^HVZ<eAVPJ1>WY1+_b(c%d%E8Fa*uc=p{&Z7Y;JkFa za0DHMm-qV|#Xn7LL7X&2{0!&&urDq?KHd}Y+%&Q<a4@sBvNtue;c~F%lC-w6GBR|q zwmWT1h#!tn2oy@k2mj;zWjH?{;9i0F<E<9)pP4WSULY=l08aQl@n`xCE`s3Y`?Cn_ zUV#A8{wGAg!9@^2)E_B4kfbXD*qs(h1d=~R04Mn(iTIEy2?VeQEs_X?$3Osk&;mtZ z?tBCgiANHFog#reJdy}xv?l`CgBD2y;wDA_sdu0V3bu@Z)H{+0ggiz7sdpq12*iN^ zQtwD25Sj%6q~4K4JYWyvUseQI4=4nXdPfq0^!7&psdpq1NN;}xka|ZFfehtE0I7GN zh!12IEdofrBZ)v-R3U)WJCX<jCi<5Z!3Q!B00E@lkzQdS*HZ*I_0E497N|x2x>FjQ z{5uO2Js*03@v(RM<~>Ny>lei)eNl@NZ6!U?-Z=bbM;>DI8;`?CGFJq~$#I{(a9i8) z=U?s{R)l=a>n5@#Hu)r2(2RB8_km!*#eC`c&AwsS{Ra@eFbSDj{3Mj4>a&{-PsN%Z ze(h-GB5$z~^P&-X9uoFJt;D8g!=Gm<b$E3{`TR`qd@32Uo`Bw`Cs!ASU(vXol~Z29 z)(rQ0=H(mpAotNF`g7#C;R$--gy}PTkNO5L@)XFl>=a*5!t@krpTU($fzY2ZhD{Mr z^3uD~>PpVxbJ+2R>_54nADtc6TkxtpoF{i>FotJB&qoJwlbz;m5=%FuHX3zPpW6A4 z%BaIP4+)fGs4mq_Pv3b&azpZ&GkyOpj++9xSD9#y)HE?0l8Ksnd{^JPZ%DSOddPZ{ zaxX2V;f5DHN>CyT^65^*YUN71&FOh%VD=^#Oy0Y)GcNrIjeL0)h0#l`0vGH4hLYxm zKnnBxNG5%GHSYa|dkkM^Vk=#&^2p}yv$A`XcH!8^bB5xGHb<k(?XXDh#PBxhTM91R z|7dWh#?!Z5Xj$RgvrUI=Z?l|@0u~r+c-OdN0-5TK8=TKSW#MSewp@~nT5282AM5(? zU@V?5y0A<S4)b=@{80CSB*v8-9wt9D)@>K31~FUiu*uTD7ljx!6z6}DES9I+TXp~K z-uuD|^#N|ubF`&JjqBdAsl-|VOGf6XTADSSMx~MW+1)<)zRe7rC)i-L*)w@Kudn`* zUVdt~?Y2rQsp^BeDLQUNy0~b{d+~))<fz|T87&@&oJ(F}YDA0lT8(6m$myWvxO{OS zs}se+6H>7;<6Ugy-SAwyHp9I>f*{F&n^rVLYy|bmT_rTWh$Wi|%SNV>&+X;!1MKG) z7)RNo&V*m$UPu#D+zdbu`#4p^cPWCCQ%t<Wxg3`))AHRdjiN-QK#y(iuEi_fZ7yoT zi~~YvF;JBr3t*=mD|^?{4Deg`IXuCP^7FoseGjEUfy;KF0VB1CU|8syO>b4RBX<g{ zlbOWPpr=Z$GMs<2@_jOtY=!O$`K4EUvZWda-Y+e;iXQOwI=0r{Ucr(LmsTRVGDdL7 zaOTqvS_k5$N&w_ae5QfH!ebihV@&Gaw<#D7?yog*w#lgxcVs@EF)z+AGt++<82HA5 zn))Kf#oN|0?Mi6_7n<S)p=<GkYX_MO`FuGU32Q?MT&)(#=iP`1ChbPWp3u2-Tg<nS zG*y(YzW8P=Wj0VdBRno*e0f^lM@ibz%-@2pPKVOEK6#C3^M?AabD3F6$WGq9(bro? zp8E+e<$K68W9X^A9u9uRnotTGJ3mc$u1-C}Te{Uxc8U=59kw&I0|t6bJ!ibGi;}pa zt^g<Y#vSffPyWXiv^`fa_(lxEUQz7^-Q70S?rar#K2Dokz2b(R+1-jZiz?5*^Z7hw zGJTMsvIutGRSvyQruElCbDeJ}brj|YMiaQ}KZj{up6nY=X5cq-rQ3J(I&d7rQ%qS` zmJ@$;Y=J+RxD(hXZp;%FC}VgPkJ6HN&%wphpe^^33m<K2%~NXToP_Mn{I1(-uU2Vv z-hS1({@%y8*;r*nFX&6*(Qc-LvnAoW`*!%Xk<wM@lSj>%7cQ|+H-AxnR#iYHTQ^E+ z!I?BdQ8oE+r93-Na?&iWBsAo13N@8ucmShczPcsVJ#z(Gap#MT(u)3UgYg7Db2%~8 z)u!n$ZcIP8oTm@}{QoicmSI(Heb+Zgw{!?dN{BS9g&^G>(%lWxB1kvV-O}CN-O@-m z(kb1%$G+;mT&#U<pZmR^`0nqR=UPr+oO6yb{!Z>Wk;;;+7cDPC7DVhqgvU60N>Ux% z_r=q#H&pAzY7ix$Pj$}e3~K;Z4t&7I#xcP1m?Vyj7#&-FV?*PXOh1NRzMJhtbnubB zdCrUNgHyC2>Lg=)YM8NGBMz_YOm5~S3T(RB_Ls-G(ugWwVN;{{d1a_-kae|TmpFEL zVMksmTI1CcvhLk@5Q~p|wLeI<%vjSSuQA*8OBfWP7|(URq+UG5c9^HIRD9h&?DB>$ zUuH=zmDAiFA-(Q-_8oG%nz8`rWQM0BQ*+~32(i}7kDU)Q7*d|T8j}sz_ons5zLnb6 zmn`m4ef*OxaDnM_yYGz0Q_F7Ak?Z`<(ku;=C+icts)y(1Ry=o+7^A8tcMD>Y`L>RA ztNaR=_=v;>%o@Y<jjayagWpGI7nHHGvibOB4Mxqm>?X+ZHDi71Wu<xjIhQuNVXA9V zYQb{XDXFHp!L2<)C0|2zhnBUi<yy(hQUY`Tr?7#!DZKWOh&vJ^#IUJj9+(%;|F(br zf7^>EsF@z{duDn7Xp8#qa!kKkSpfe`dH%_54e(#-U;rzql?4Fmr~l;{{^Yg>0P3d) zg}}a5f%@rxf&S#S1_0`(fAV->ZfgLbetJ*{+-(g2)KC8e0(Z;~>Zb>VSizWP0HA() zP>2N_1nQ>;g_yxi2?l`r>7PLCV7@(2Km8Mk1<V%#>ZgCQBRIf)CRQ*a6~O*GR|i?j z5`SDBwA?D2e2U~`D#SH(wl*C<(4X5OU)mu(@Qg4?%BQQ(un2p+_kzyzkE)uV4K@@b zA%5wBCc9ls#h|t9v!o`&FXJ55hSbFRrRkdNgn&a;N{gO~;UTnXRK4U?g0Ysd7KUAH zTP2CX&Vstt>f|SkG6)~rt5z;)tNX%`nd*w4kvnuh<W}61VIOn}Y_vPljNS&XD)pPz z9fwUE4La#iAdiaURd9p>Rn)X(?x<7gkKpJTL#5l;ko9`Dv<5hkF!o@P1oph$&o@sd zPQK&Xoqfm9`1CHY$?3!X5|YX;QFFXu{$+dPJ@LnGie##<6gsN=mQ=dW>yvD4p}rOk zxxmWc9=~w08JHzIHCiR)VuXJu67cp2oubaiwVmWkG!>EHRIN|bjj5$gSqy<FpK)~g zx9z)KMNDoqE@DbL#D1CvCh5<@Q8a2k{yk(Gk|fC^A>6^Rueu&ThNI|wW_85%Nvl`; z>A^BA#-)OHt?phQ5&o6&=dxyN6Z2!8`}NKn?m4!J4~NrmilUaOSuKolGdw|<;zhfD z(!t(s6ZR&H0dI)R%%jnr>8pkF8zRqg`C`<speitq?3?}754TK!KlfsalOZA@`=A#l z2aB}>lo%&ZYxvuzx+}3S9WvGSwil9XW$e<kTiVDe28sz>7w3g|qI+I<TM9&Fn<#1q zVz6nq-hHs++kOvIAor$z(HvIlmB)tNhZmmVFtjt~ip66QNh3!z$$)b?e%jofj#d)o zuW@SQFzzY(*{|%Ks;72KqVuX`kh8JJNlv8{<IZnbqhcWXGcNN?uv9W#KcA+Z=WY*G zS}VNYk8~DcEIcTQR#&aYlZH*m7M$c9I7ZYghCDJt22!;tM41c(6`a^=<B7gK60gUp z7c(e3R#qrWw}}6cE7K68Vhq`iCbQS*l2FSc>b`~Rl!0u>5Mlt^T~L$3v07=lSl~TW zTptE6FzWC7Yz-%NxVS_n+L2U0%ew`?I>f472$CV4@mMT3V=!*!Ks-jB;fs>aMDJYh zIjQQ(10Qdh%D$<8oo~IJ69k*x5LUT|2o3v$ZKkM8sB7rJ`|oqHdBL9#O?ao(XU{k4 z4&3@MY4Qs-4$IItQzSG;Lbm-@Ri`^MsG}iQo{bb-j4j2zwVotuh`v6EXdBr(z+r(e zRwIfIsV|WX+@<>D9VXk#I}=v07|!XFGk#6{2|0#=kW$qGa2`RRRV;a^Jgx`JPSbo# z`!W(1M|5XKilm%tOfE<#f{ZH6;~hdpb|>aqTJ->BNPOQ1!tsLS^WnElsMy+l<1v%r z?w*top%^iIuPkNFnyni;Si`La_f)F+DO(L;I!>B2IF}uhq8wwl3^<5XdIo$02`YW@ z4;{buBG6G;eVqtNNMYp2gn)Y`X?jX8dW(R!1|g{eOc8puUiy{iNIV-58<siq$(&x< zK~XG;$Nb*4L|FCC*seM}z?jm3C-4K4xJhMzN<1%?BSVLx-inWAqzSnwzO16SSF`iB z+H8>^eQ!~SgWnwmTa0n9jI;GK%>8({^;BPciH|jSm#Zzb1`4SreuiPTx0$Zqi%UaO z7gc+hrFM97Aq9buqCdvmgbGCzV~LL9NqTHJU#R>rpG^(hI&BXVxJI8#?>20673CV0 zWYiYQK2v(!s96ZNH5jDq)(dQ){FW0_A?Ext2B)aFxys!V?kAjFAX`=GyXg9N_)5C8 zkdNwwzM0PuR0(IRZ8S(MdoKz<t6~`Qn9Mg}S^Xe{iNHqn!Ghyo_3OfK?%daWE#Or1 z0f#Pd{Ti>2JAo8Q)^3`F=rfzq++doEuYJKt5f?R7+))Kiw~732$~SCVG3ol+j~Syn zFyz-EWjMi*mYck>S!ZbsN3#sJghqBacUy#);}2|;>nQKZ-mfyY=kz{`c#YJpj9|>> z(%72b)V&C;kRf}7qznx7JBok{bUY<;Jj01;{2cfZ-j6aTu4ZfQhoPkZSB68CVZ9qs z&aBUzTpa;U%(yO6ax`QRa<S(Tv5EXO{4s|DTO~`i`nIXQNH|nn4|X@?q9g2EHRv%* z32%dMh1wAuZYRHX;U5yk>07J_FiSPwk+T~c3buVq-X`&Y<gH^9aJHF?G6`Aihh>LN zy!MuYNgVi@ci4n;@O<TJwGH20l>e%D;4<5!XB!0}fjy=4g&3#Lbprt(#6h4ZR5=gR zD}O?c0O!~9QU~I#=D`B@0yt+<mmgT+=p?@OyN6wtS&C%Ny29Bn&Y;kD<t+kY^vTp6 z7$Gw_D9qnG$VlySL$>msjH4_uxzH~V;5t#Ntz00-5}u}@Oj1oP9(F?ERJ+6ALCh|6 zV1d!SzXZwt|Lb1x4!QrX1P1N!2mHNW>aQj6ueLY9zqzu(ToC;8R^SgQ%LW9MvY_q$ zzdXaAT@ZlU$w48oQWmt`{}<@bE(kzP<4+zBoa_TNjX#0Fofv|e#z7%AFukh)P}BGm zhzZOwBdBQ{6k-Kam<a$ije|lgV5VCEKuzPI5Hr}7z?jCFSvZ(~LtrK=58AG?<1FsI zuFF!udDhaO5OW)oSYn?|HASYFN=JfGF`6!l0x5prdatqajD)5?Wth%Fo+9A(?d5_u z^+&Dys|kH9u0cht039JHf**2(Sc-(muGQ+zvqf%q&*9|CW{U@STj{-@xlIK85Gvzn z!yS1oPED7$>Sm|)&e!^KKkw>!meU?}u<6wx5sHkH4UTOc{^1nD9o8LvLC5LhQBs%= zNrnk&MwaM0a*@SSaR;z@-c_}E*~5IKkXi~M#2fK}iZ9YQi`LuWefYPlYpA!0>+IP5 zUkYys44uP`zmKb{nL4HM&xUnsM*FkDm1eLmw5%uwb(XVT9$Sqx7>~VMXQ<wq+L~-g zj-;TawNKc!>~xYW7n#9#gn4XM=Aipx+xX!mec5fb`bGxBSU!omgS;-<_dWtm{KK`3 z>&*Ff!cV_Uh76XHB7O0bx&aa*icpiBOLxTCpEE&;G-FPm9Pp<;>$eQ@>mpO?_BwaI z@Pc*2aX+pMzaw_92&R_6h*3RBk?Wb3+x0ntI*LAp{~%Y1N;GHtLR5Sl(Y78Qn%s)< zN2Tno+xzWx2g7exrNXHl1UVnZsOzg{Wuc3`$G8H$9VAU)(ec(_G@B;puJ$@vFRd+h zZn>|bm>ZTJRg|qZavqD=f0DW9O>xnH(!KQ7OBv@G40l&-idu<RRra|@jnho09Tv-$ zxOsOSdJ1e9c7h|S(`OSADCotD@)5-L_z<DXL0ladFI>XIh3Ww<xkQ&V&YL|h7QsG! z>hW!tkIIX@#Z}1h^ZbRedj7LYefgv0=*JI&&voC=w9YiE3W*ssDpO^2UQN7cPQ^{c z$wBL={XEU*<msJu+tMtlyQ5xroPy6!B^-<_LJ??fFk>X87OQi<BoN_%vW8O0B>pIj ztC71|=N=LMeTs|$PF^AiX~AWB<K3&vCfxHSqeC6lH6KRlQaQA{@;!g3Ju_voGg>4{ zJR|in#PgHlDgow4t+{)+Rco};EP|_>BjX#B@tHKi^-qqmFMNJX&cwba=|;Y)#1YA{ zxXY+a=(r3CH+w!W2U#0W8=cie&7TK5C1!*?D<|lkret%B?s|toku~7WqA|dAg~fF* z?JXRZ4>9B2_MEdwM|SSk@jQ>}y`<Fm%CpjOT3dvg(^DErF=Uj&{-5{CT44haRMO+e zKbLvtU+BmRWMR1P6_{OO>NULOKX%ni0fxRwV!w(REcXpNn-lukw#qt0C8IIrUf$NP z(UFs-&wVNR_GXj4T7$O6(s$u>lNf2ezy@YSRY4{714UsiD~0(cQ75TL+)%reBk-i( zU4$E+p5c=<7kfAjr@|}?X3Bfq3oMq2$As5+C@&f3$+YmEyH?w1uwTbN4?3!<oa-Gz z1GFI$f9L(cu2|sY-PiD8I~&T%9e74m5UQ6L2fQBm(3>#My+g5{8!7=opeQst^+JmU z&oYWLWM&8GxZu;t`C=!~Ns4FYNAk?^8vHCvE#9%*piGly<g}g^MDNUKPCn!1xf}Wi zM>+kY-0fXQ3yu1cO<myu*4D_E>aVV;O5*e9lSOIe7bDf&mQ;pL8IvsGl}Cs(gM|)! zhb}F$cD?E%2n@6O=!GOYbq^q+J@u_nNl|dn?A*MFiAoTQUUsEJR9i^Rf8nG9ChW@D zBh|G;Ix^{fhDDk1!~rB(SCQ-z-kYS`l`We)R++tT@u<5s<1BJY>sY9zuuX!eZDhBx zTwC0`u|lyQXPf&8wAgI>uBtXjUdq-0S;J<<)Jw!y$<3%f+LdwTu>7w0dcR^58Zq?U zh^?`YI==77nh&!2r$Ch+q@k>|=v1gRW+uoz>!F8F^#*XEr8sy25_zpTuPU><%;6eS zfdoyg3Rk*1u3dq^C|#3YpI4}%?jE?<cdE=KIe8%;s%hK54pUkU3>u^XBU6L7_AX9@ zfV@0sA(Wzk_|g$2{J>XyI&*Fq_RDrPYE>4ix`BP=lALKjKOzQ-e#-8Nuh45p&;%Hn zS-dW0#%bvcWO*}QzvpJlz%>$}iM7N4jYFxr8Z*A-38i_wsfU!SO%oXB@?+ZNs>o-Q z+fLxQA>`Pw9kL~oe)6*8M<QH`k%^C~X@%=W$sfDX^OF&9o!<8mO+zv!ZulfiT@ii{ z%U{@dC6SH7wnlY}!p)T7UzfvZ&xl66B0eY-BTMz}WRMn{RiY(?0dXChTF7kHmod<? zbkrAc<9YBZk(^<?!w(*<D$%(<cqL+(bO<L1O&0Y{aK&fMw(^ZXx^Q7W&6>qh7kn6e zAM#0(1^JYUsgssy{F_(wI!57Fp4jyZ5;_>7HfP8JXu!#dc&qIozSajq{D;Jzu`Y>m zj21=A6)AHjW=H;^?hx;Gb7cM5l$&y)#hHwctd>R&D)JJNk*;EIN|l$$f5Z$>t*Yj| zQ`#Dk7mMrykP_^U#3`*%^95V0B)rFR9Gc=MNvB9xtm$f_;CoYu%YsnaPaGr4G+|}2 z=OcR9E%=sGkpsmZZxP{aROUXZO@)}EE!RP?vDfBk1l29vTPY!&k<B;F5&DRjenVR; z=DYT08C}pWt-q+~4CY(punFe7KIwfFxEsKfZD$wj=ro12Xe10%@)8EuxD~gl{%Mp# z<PYdCU1eBkGBRqNFK<!R&X=T3q-5s4?vU2)F0ldbBhWSt3Kqw=cSH<((aM~g=(c0$ z`Hc>r`&n>Ev8Ml!N64u;uh@Y<g)A&~3EG+HZjQ<fe!pkJoOsWsm3h_E<dBP#d$dBb zM|mDQ4}rvg`h!dmK?FDz#B;vDSG<x>#FyslTI-Qq<&WQnH@u=XN2v16K_lgMHO%GP zq%#AdJyARrOlU5Bri`P0aA6f&*n4M)HI1ViEh0GG{oOvbRTYl3^MQnVh1kMSh8o8# zC$lZ35kq1mCH(K}j92uI3tkv!KBlvFQ#uoPa&HA{zh|;qz^3EAC?cge7oaeeIw7XH z%DEs2CYk23e@Cp%I?cdFJF~Nzy!M8nEINzCi@s-%Eq2Ok){@T#Nuk7x#j8TE*0D<; zEgE&*2yrs={k<+dn##JgA?Gv^^>?bxeXZD(?Ap|VvOKbV8=Zk?sJ4DD-5?9ERwt9C zPt@`<Sc(I~tFJ!mqt!vj4Ex(KvQe9SJlfo<uzAftNPY82FddPVj_3EYdAaC;strP* zY5x+;Tg`tv?DK!(tp+p%1o*u$4*)a-^b7ZgUmM(%008KGkKd$z(d~b;eTe|+IXHkU zEbPDK=lWxq77GAK!pzP{!UE*@j~=sM6Tl>Zf0hV?zj^rQb;BR8YXH!(ZvfDFA-{aw zKf8GV4dH-7U|-ij6F9#>e|GZ#8ozn+c#Pm6&=*4x2<*)R=)4e6h?N7(X97*xJb}P@ zYCuyqPatq6Fwm3@D8vHp3I;S~^W^^t%tTxOXv*dZ1kMfjOUmY7mk3P1<8=9<ED<%& zj?r?eyaJys3=jF-b>DKoT+?x*9KXN1nr+xK9Y|nABmY`HGv)q#9?c_KSeiXoL%yVZ zls9wvo-MDN{pO-mJow<b=~w_YPPu3`x~gthdMI%wU~hZ=QrM*2?Tf8vZ@p-d0>XZ` zT6TiU(aIEikRq}qcF}b1HebtU+DrY<&-?ZAQvx@_f>pQ~zC^Lnp$2EeROI6}gy(jT z?8$r;>@5;9kKtJ7ow%Wo?0GZQDtt7hv&25GnxRLIc(sg}^j7hQUOvl4-<0*tOmsKa zKt%l&(xu>Tkc9dAv!T!7z4tkUd)?y(((LOVNJu!lk{47N7|x%}<`UzE`jA6-=2!*3 zJ85c$oWnXHUiUdUc`i#pQ&L)^+@q@`7wx`SqHY{|y=hcyy{EYtvN3Z;1Varg6Ejxc zS;o~@uul>|lD$)KQJ0@U{j+yq7x=}*<9j|A5kVhRX>YD=mtsewz{~-hdzwDqZNgo4 z(L?vV{)laFZrilwuE6cMy?U0NBWkgRJ5)`%Hw`e)L?JgC;c6`Wow7-cy0{NR0$c)h zCTm@4ok~gQ?Pqrq&Jfpqv?i7NGa?2nz=)x;ZdpV_X5N}vGqv7z1>Cya#@>EomF(M7 zae>Y0eQ7eD#b)Qh(8Y&)a%;<75lQ_C8`fk(VNnGHw|4x>{egR8vga8yr}XbT?S?jU z+jqN+Un-N&ezY-Ea>o}LF*}hZtIy7&)_BX97WAC`Gs^Rr0aEDa2#8<%X*`75aR+I9 z`c{!xWQ;zq9F%|3o84HsWm#?UT5_tdTu5btm2bH|>;=qZD;(j+TwOG;es*^<Wie5$ zb5$BRIe6Jj^g35+H_Ynj$olbmS1lFy@Nv1x{qkXrxJ@eg9x|lx{C=x;FSt;NBg#+q zn}e_A0nivX9jf<)iz94dvG@DUI$CMgD_WLAwF13-4Z0q_HB^-M1h2js%6?(cGUq(2 zvt<b&Nf>M?bbd+uY)EaFA9C9uuC8J)-vQy^3tZ%8>laIWMR<Yl8g~In8ir+`3C$W> zlW%+V)v4)M9>{o>i*cRl{TYzZJf(UOAx-m-J%Za{N5T_OlXMSJCPzrZrH`>jOW*jD zdSqHR<WCH4MTT7<Ps|I{&pQ(i8mK$Y>(|39ke$4S&{e!cqyer}%~=f75gHLnK!s9P zJfMBGQLZ^aBHt?6=S_2hR{y!V%OB|6l)y2pnUw5jvK5(wrL`NjK6)%GYP{wCGF!K& zXHCGMi;B8g+gDMDR{A(9cg^MJu^k;d&|PTlt48vSP{2m2NhbEN7AEFq2U^OGz25@D z)|;&H4i}G=n@NUVSpTT<z`K^^$phu~d7KM^ChL3AL<5};M+)!sDrYNpNYj^Ln!Zt0 z7D?z(Xt1oB9?SU_1iRQx3$YAz<4h;1<$Rtz{>}py39$fD+;Xl`kK6}VDbqPr25P9V zSRgKYnwG3Wz>@pj@%00d55;$8)!jmmc-EfqG)+nhIb_mR^cZw^;nj)!TNLb3FTU<O zD?O<WJWMO@rU9JL`Q_nQ>9yJXLOD(mj(1@vT<we@3f=rswNgT1Ul{^$;@`f@^&ttt zX;C#g>#$EAQuGsF7R)trJwbaR%bL9>iGR6?No_`D0kL!}NsGX_YkNHRQuXB#>TS!5 zL~R1P>Q>+38$fligRdxZXe(C_)gF%^+>zRy(~NLW2N0dTKf3z4v+Gf|ulvjcbh!`5 zkH-KG5hHy?y>#4n2pA`l@f6)l)q#9sjD$L=pE80hj3(`;gxTSElS1Ec4ZUJY)xrJ{ z(GOJcqsK4}dT;1^EdMoC6fyr;5W5^Q)q>nQC3p4%Lyt>4ZGpr~b>vRx=Z8GJ8}1kc zx7!pCL6E8`)6)D@s>i9KA1xy;{hDQFT_l!rmu^{=C-8w0*!%Cs*hh^1zJ}P9ivCf; z7yXme?07GIQCcp~rA)|F!K41SGA^B}U#L`s9Cpa#ph62<Q@36}3=iF(en0MwL4UP= z@`0Mcb!+@X-8%txJj~W$ky4MIxBlnxz-*?LRQo{jwr^*NI>KcMq9N_1#tG0!y5W`K z5?=U)5}&orZ;;+K@^&bT;TULQw14H9Kf(66m`s~O2T}+HkVViNpHD-xWV{hI^TDa{ z?OQ0jG5;Hf)s58N$UEmn?jQw?^kAWoUpHc&=v5F^nV92L)V5`=sL#QmpRMrGhS$Z! z^<!HtfwY^Ah`=&#Q-}g{%A5;spC13`!yPXffk$lDhM+%`bDgb@6&U6GOH%ZImva7J z5X+!>QUJ$q&D8_^8Y%rZ0n5t5_<I7DorQ#%jhTdn5kSJs&hj4x?5~+|62QL&ox$BV z{Ns}04*~m+FY4bP98^vH`v?9r$3JL7^$ElVMi_x6RG&a#y2b&Z3DqYMxC4FAgeoY+ z24>D105qZc1On3l4g^i8K7qhI9uPF43JS4;(V{>`P<;&wfl1v08A0_m2*d*R@%~~* zFoU^x0sb=U;lJ7%es6x5g!Me|dCQ*iwkU2nzuZx?Wtxeno@dBq^aZa()sQe+so?B! z>oTc-v;kFLj(=A)kkF0gbVwk*_42Tl%jd!Em|y#b_&h(&@7oCC=4Hpc^ATX_-gwjh z!DwrvWoh^xIn@*|E1}hNrE4h@62=o_Dyi~Pl$-EME^sMKd5=*y`mQ?TN0lA|dfB$} z9z1cjiZ2XDshd?xI}B;}3w{CvCW)2UA(5~$`|9hB&vOt}&A2@_yb0QEk9}d|6x6ov zL`HmiA6f*y>IQt0_hvm`4NrU3jZx4erdE9QU>7tl6prV7|Kiooi6F0Ox(rvOek&pi z8SEHsiNUlNzOMAH6@!FvmqZ-Y?x@y-U$F7c_1XcjPYKz(h4KCoNtIjm)(^>e=bHcf zspHCqg+Zr!3oeRE=t!e99McyumML*!^K#-gDrt}MY*>^R)E-o1^8I}0ww$zb_~g`G zj5?%Jl5M5K_zMh)bt_9RB$Km^F)isD(Qy!HV7%04^2<#POuO#bkW4z{LyjX{E#;Jm zvI0f<6H748iAuint$4i*tER&hjCf-J9dCqcxB_QaNv-&~9n&};Raso`<Y4_4?W$mR zL+p&F?^xf#AJIU4N}qE6-VVU+Wf){_&OvzgkeCg#YMG5YC4Bp~w@`&3YJHU%Vo8lB zJ8OSVDV{O@^{Sz;F?P&K_4jbK8MW@LLX4onPi^;B#t>FZkVUK1;`Qo~!JZvG9p%M> z+S*^(53++^hjP}IN1z-R+4KXTMXN&WzO%Rk?(|CWEJP`;+`LXE9k<lpyLc`^N9PGY zmLZtvc`j*{GN1+S9*3{Vpb9yxk=Pcqk-dRXTH!{;@y+Up<7|&%XYw-{s>|UjZwSlq zxA6X&{*pvbA883uV=`{ib(>&yyJJLMiyLJcNNBA8gANCaBJyfICNYv1vAH?mP1cr= zIfT7sXL7TO1PevH-=lnYV?X-r;V0B=13K)JuJNv2hzAYWJkdS1<hD^<c>_SrMi<5L zp3%S-3^3SZKKZETc~3>nn8T{bbqRrlxi;btZ+m|pQGU<!QfU9oD+?%*Vq>}Ky#&aZ znPN#dq&*a?vpBeX!5uuzCX8aBVXGW5?s%}tPb$gdwSvf<X!@^P38Q7tB#%D%vR9B% zs>|6%Sr+x#v(;@Y8vI0Zg}5<mJkveksVsHJ<2cdkw=LpZSjdoQkM(ZoXPM@Jx6v2l ze`xZH+kV>>qa~-l@ko@d4<CFgWNCLoWL0OBv+Or<E*#Ll`PGO*J?_ZZQe(Goy8WX* zQvdtT*K{8_J-xzvV~y0)hxw~S<MXW-f?iMBVpx7Z?+go|thrl`?Nq*Mb2Elk6&-QS zGbG2ZNP1=9!QEb45xZM~XewzBI~H!C<jhAevM6NM9D%V|Kwa6>zSbZ*foz*Tr3i0N z*wDbAUcwd#bJQ@E99%}-p)?`2<ae7B%a$9O`Nd{T@vB2nSaD?a9t^u=hW`L`<=_Y7 zt@_z<#-z-d&>^KWyw}Q7eC`|<@nHvEgwqI_Q7`fH&!bhuF$TW|Ag{|&MdVrFfBM`M z-pLrGi?CiGu<%ChfJ}I_c@ZKU(pY9R8CU(9jIT0)khhGTCXr8A`xv?Ag037hP-|7t zYftQwLfP@%=E8^lIa6__z7lmeuIjtd8rOJkK@Wx&GfY#fJ%(n>lkx;X*k}hsHjN+U zRvQ7BoiB73OjmQDWL41?zZ7GaY&WbOuK6USat)qszjCNdn)FTWW~kW_5592?&$fj0 zTBofB9;E<IjG;y&1n`r>8z5`AIk+KE4cyF3z1SdIQu7|W^&bGDC)#dUSo!XLX<X;6 zw_!Z_+B*!dUm{9`Q@X9U*QRJrFL^)Y=}k_;U3tDy8m(9NQ6XG|XgQ7FyxxQ;vnA_N z6YC72eziQ5l^&s?NKhA<J$pLLf?~hxVP)SSsjeygW?+A>W{*qf)|C9U&api*7tIZ3 z$yOb4gDJg+^ov>BxzVcBq>)O`_2CPTcB7MY&RQ!V)0VBi6{?@GXAMAXYryRD<@H{i z`@=&Pm7(|=o6BZyKn@=PeOMv}@iqo(#J!9MB*d5qhul-?2xR>4Hs}10`lf-Pv%i3h zztxNb1RekN3-`xCDJ$Dk<ppG7{BKZzU%E?VN&fK{{ZCIk0soq+24n*DS_47DsJ}eH zpY-wpLBpt^5DU{&?FR%6qk=-r9AG35Xc+Yg#0ExOfre2*Ato?qt3c2&>Jtb|^bp7d z=Ae%m@LOh%g+FwXC`QYk^06qIF!F8xVe<wP0tU%U`%LgV3cIf~b4IZl$YP-p?mXva z6&rG>NEH4|UMh+P)9ZyLr49K(^WTG=;tJ~C6}@M|Ds0F@DzzUI)ZD-QKD7J&`);?o zX5QMa5jLVL5u&+<;i_se?J}0KdRc?!cSV%ox8bG4%4q}BP6zkp%eWVM#mOau?%I<Z z(?|yc#6I`ka~^NcaA{-1aNV^&dyo`tQj05wOrVl!Hmk-o)Ysiq+#Dc|H)`hhC{@#w z-Ld)pED1_iDa^5r-eZWj5a3{kp?f1qq~Mq~P<ym|zZJGjKlRpUyrdfXoRB3_k*;d0 ze^<fTp|({vegF2{W}C?{dmyY)iYL;ti10-_1MEb*(vm_`fiNynJszsb_5hA6o1qhc z@b>TuBFIy`?S%rWY&cYK(gWjy^gV2K4%gxFbnK-;!|hv(PZw+!KO?+Fny_NeZj%<> z=A|_sUvmd;q?`9%e8Tfz2e>{TaGaA}VtZdSUf`&*Bx876O?2X04lS}@m8JuAblI7X zi*|XrK3d(Y3m~G^y1mfdm9@sTgS8kO@<32<Yq6+p+=-3iSwcXhGou~$lyAH-gc<9# zx%_yAdw3IE>sbqDJEeF~wUvx5SUVO|+6!sh^@feoIs&!f&Z6q=qNYhW9vJ|Oq{oo$ z2a}`)W6ko+l#XGq8<I4fq%s^s_YvChm+;dG8z)YC3#kqM)kDbLku{GP^L%FP?23yR zCi>*q2dK%^pM$8&hw}%k$|W=U?nCcvP>x&?C{+vC`b!=kHaEna!~}?17dzQQ_H#1{ zhKLAp0!+!XPiBf%ctu{bQ{UnbKz`40B@A_<?&r=ZBVtctvJvc!;*NleXMDS~e*+~k zao9JduskSX;dDooW990hly+*CYyIWYed5q&A5i=5RNtvH%zwvdnK<+o?p3Ue!%Tmc zCnefM&T`l?tW}4s)tvsIHEJW=nmm;-V0=tIz8=PAt7$AZBrhACXOoimu}oE)k9&t- zQ5o@4Yc6~)n!o0*)8U7vL~7Z$138ru2S~HNruX}Cz0Z-;Av_6E{GOwJwbdiY7w*yE zuGI5hXQ>p`FLX^nPa%Sb*4}wL3_tEF{-&d`gD8^e^A1%abiVTzw?XBee<$O)Ka_b_ zY0zR*oTac+2j#$;{g;h*B9`>u_1y7EoyD{1EDPLr;i-rqzpct4CJ<j=+Te+3RqP~a zu?x5W7M9v`+AGh;8}uKmag#0x)S?wgLOT;ae%wBkhFuA+Rr(~PJdmZeTI>pipv7-C znwP8otT!^wcd)&(@nIa(6#ZVqj&_d=-*IBnj$5PRvrAJ{j%J~(YT<X&h;&@4VO(K* znJQIdc);!I>)K)l?T3d{1VJjm!+hsY%N1MQpC1_{t6&x&iwGASV4nZrp_}}0*SHe& zMocRK(I~ej-AnkQClhLMG|Xgiz^7rnlDou$s6Z#u%CmkAR_JW8Se98%v5L^J^mW}u zKsHkZhGA=l!|TA;H+7Lkg1z?LD1kqklYV}YDS!Bh>UasYzZA!>=s-=3qyQPhgOm19 z6g<RI(n%Rj+NNpwAkbK{Vo6bjIBtPgOj%W9RFybd0c%2v^lmR;3PWwG7_}cIX#2&e zmqCVp6}8KVN&mQtK-o;GNkHscP^byb>oF!x8v!!sBO|V+z3xV1<l_?>Zz7GXVt-Pv zAqhn2vzjvc)PN@FNMRU1X(`oAc@cwW2}WcLJGPHoqA}M?LC+3ebKA;wJnkbi#F1`e zS>U`+dhLzK80=M#84;(Wv0$9C=9OV09B%sRB$ED;2cWh2VKAunJ(NaLAkF58^j;*- zYk>y5v219!B4ytVD6-Fr<Fo$$b~f>7JV1risw8GcmG?tYWh&}Un;M=qz{Y)Mp08ii zW9}Q1))udwpbh%9@$=-*R3A3nZ}<3H6iDp8L502-NUKR3RCZ~Yc5eZOiF<SAA`c@) zv$7gOop!8>tx5`fvxjsS^mc|6P#?Le^OAT~p=7TwX)8c>1&bM8wBgKGA;(HRGj2v3 zcZH3TH)12y>&&Mb7`hYm0;BjFQoCJf`3SE0lr{l9FKW+jETsaA=-V5j%Vx((y$n)O z2@+NRBHaaY(R$&X_=RxzmUd_gb8>INS>Ut&SS58>Q~WF`k~iK}2w8gJv3yhgfB(;> zqgtqhx$@bWYtKTI8a~@EMA-R4mzM9=zwEuGdbl!xoo7VdK8r|chu)i0yz_o4^;sZ0 zpk-Ty8JK9iX!2T16j6gIoPZn~3g3@=0eNP)?v=UA7zC#XHW6YEN1$|lByMD%6F{G1 z@Ypzz#kjURIF8?gLg?8x9*Oo;v#!TO)}@e$M<V3OqT2MDFQpI!pBVupJo5tMbCOy7 z(u!eR6v&g9kwWNjTZ|N2N(PFEBdeYY##>dd+ZTnaLhu}gVYiNNt2Fh_`ypE_b1yDj zs@RE-SZ3(eBOvLtGD&%WuLy|cLox{1n6o5*5U?|6mGO^JE$Wreq69B|p)eQFhWm)- zebYmxN?Ve6rD(b>t`Xx`VnA8Qq-o=wk&|iHV;8zGf^R8ovrZCVjrVGR5e+^^FW!@g z9hpV+>N&oVC?iql4|Ad7$QKx&$r<^kP}<+SP6r58yboOq(4Jy64jp{k@uSFqE$6kB zXqGd_dP3ksGAVaD=ST0b#5=ppyW`F8=08pwO7{8B0JpjvEo{)4N91o`*1X2HlxOss zGINfjVN6_kYvL^t<Z|;WD003n=T5~xZfi4|#mb0Yv&m@l?H<c!5Ic+VSwejVIa4=E zV9%RxA@oeRTl*agI<}h?HH>lRzV#IZVzgGWU!>y)(OUtzsjug#>;@8mQ8Vqz{rq}c zyI;C8hA418zbfDEld}=X2t*3hm!t@NOT`4xB(o7+w&Y)%j126mAh@Qr68*xj7y6Mo zH}!QFi`{_fsrzs~6_*nMPl29cxlUFa%(Q^?-+pjqy`Lql8k%8cmpuCcpF>6V=8vD; zfVe+?a)*Ywr3DclD_Oqvt?49k8fP)*wOPqAI+2}Vd_fYol-J0r&(`@!OP4{nWBX`# zX@pu^#Jg<D^sNi))HwG%YrRNWrLk$9{h<5}YNP+>X$fz+UfMyps4*rQ^0a!_vXd8b zBn){xJyJ$pl?IOec$-eaUVd$m*~Sbq%Y7!?<(_JfD*lo8$RV42UOlr6M>xKk89xd4 z&q7!v%C18U9@hy^h|QPuQI^f6R;#1l(et1t4b7B>3A8fM-`+cI1&lFjdP}<?Axbi% zMIqnN)^$v?inD!VM_+XroE3jl`prUs?AA*$kF^1@;5pQm<q0L3o1#447!CKlfwRLF z>VrG~+%-bUsty|W29o$0){7kcjn_;@=%>XT+HQt8FIa9nT=`77w$$xfNUt%_m2Ccr zp32?H^qu$nOo*Q7oFZJFJh%}ywB|AB6Zz>r4|tF_GqL2()sJ=Dd3=4<#+xOYQn_J} z!a<3K+3J3KX&3U)L;x%Bya&p<m{IUEg+NwHJTkg3T-aWt01(Yc<?C4lvNQg4o^@*E z9^$=v7yb6B00tGjfVTlwa-Q9q;Hl1Vc5LdaKnR~qUBB)xhuFY>{Oi}FtwKs)8A!AX zkN0@4wizzk6%wTwqWBFBgK}j^p*aJOk?$2}?<o1I;;;N6pddChfBXdVp2zfm;)>vx zw?779CIAVL`G5IU5VVyA$oyMQ8z5*g%kOf(juIyM#|y}x-UIyeE087uGK1Fb0zoTV zetCvJxd#A(R<?jbY+#BsfuNNwParU!6d-723n;`2rV|qgTG;{$u>ipw>4R3bJb}Pe zwg7*rZ24DH2@CMIrWQ%q&9gsmIaNM}H>C3;X`g12PL|{vVkIh^@J@k}<j24WGC=4n zc=(K~a-7{K#XtuC?Dop>avuBKX=z>tZE~3=>}LFupXW@0;93>^y7{<f>7d8umgywF zb@o%eHTRYq>=7x-__t-km7ZZF@8_t|WlPCTA}4MmoNqp*6;H7S@}Jz&QZN)!lRm?_ zHzVpS#Cok3KCwH$NsKl6oNbh`PbJzTb_gy^@Y?Kjv2otRlrxMO$0tI&&3eDr6a%Zi zHAgjEg>(69dUQr|ms;W#tJpm&&1Mb(r<gu;=TGD?Tu3cOnM5PuvwfxKe!lhRqDyRr z4)42soHXA^lo*-=Y%>HO$v$mKzP;hEEaKHB4z&7dHC<{VJcp}_P#J;Yu-{NKT``+Z zH*4WiV((6Ojy_B<x!-L$p9DirxGW?6jQpLoqhmt2qj`u5+Q2kxfJyvU1eQug2we{d ziwpS#MSk(6cp>DQ!5b67URFxDrQ;M}fN;`f@^KC`l5j&!adH19mPz-}y{f0z++3M6 z6zyP*sh}y_($_|UBE=@cG6^Hv1%yI!TC$AGsn>`ilW6{El>^_5C~IN+->jg%3dq4i z^mN9#p%7%jw{e!w?7e(xwY*-iOX-8g)GsWFmrsiNF~fZ0!$F%nynn*vN9hlgLSZWL zz!!Kj&6B8tm|71S!TlM7qCUt~i4(eYk|n?|{y!>SGC7+CORVa_&W~6L5I4;6)6hoW zxb~nC+U;>SG<Lp_HW3zMOgOhnPegSt9u1KLb{J&pH!Tk?F7XcbHQ+F02wPmS{9x=+ z)h!{4sYYz^R8&r{>tpiJz(cRo6hqd|-(v~l5Nmd4iw;#OdCnh6DN85{{}_gB1bD@a zXV08_8km>+J@Q!viGdKaF@!p$9c)?lR?rWjT^4>eLLw$^_L%Lx%0eK7w|QusqDxgB z?+sj?UGLz#3Xh3a5=hpmjicvs{!I#S{A|#k-V5>X<A*Ujj#}J=lNiO?`fBW6sK?#7 zl=vz{3e4I_7|6atY_&sbD<UL>(fee;Zfbc~ePex;a7s*q1!-jg+x3b^A#eS3<;0V7 z)lWeyH$c8F>t$b8%a=07HTkpEu;ri*T}La{M>w=l8ZOu}Ph@xWZEZ^DH{v2xQAe3f z+wNSx>uOagt!cGLLj8&sgyo#9NmFAuy`O>6m~!(NKiJ6bRxbuSQ4o_U$TKn%N{vR? zJoVvcBH?1G-_)Zau14l8xqU0Invx3_q&r!~e<c@GPXt9Be*9xZsKo&HDkd~GZ7o2n zY9H8l`XvO0Gd_DGoIAI9FkG3eD?HuTYpv&#WWRBUzox%b4{C7ATSWQ2z9vz*KEn2I zeu9g2J~*6OsW#1QCWCVc1;gUOP^nOn&JU=8HC8ShXV7@Pn_jOBqzQ@UYoEWo;=(re zfB7-{g5RVmA*x2CRIT~tz&^>x^|$Ll^y3q_<q*&K9=K!+tavtQ^d1}$-6Y8AntbEt zXS&z7)ITqDEj9$q8o$ub6I&{2&cDaB{FWyJCGrMw^!qK|7|g2fNjn9>O<Gf5t3UGf zVJ~0A4b{gV`H$W1cQ`jO3G$zDDj|$!yy5IB)Tfuc@nthd9dSOk<<?Q><nWj0mXUZ0 zTYCBIX3p62xvsH7BU!8&ontdY_jGtyTaDGWeE~|8vc73biqElw_#k<nSpM2m%iX6& zm&b-hl(Oym&X-3r%94Pwu#HQX9^q?kk1BeX65OmSlcl{Cv<_~Ty-_duHDVO;u0&vj z22$=)ws16~t#O0fv;^fSy*|vGgZb%Td?ZZ1qJFCEab6C55V~~m7IqRHBTXaWK|f}F zV=J5gR-`Eb3==f%5Y&ZvKYnK?4}v=dBW_(&vaZ#3@uJz-mn@DE%V`=36Ty-!zl0S6 zfTSUp(u|y@?PP_o`iUnA4y&f^NX-G967k?b;%d)&>qQ5f8$fE@nOQgcp8tACXv7Or z)NU3T6Y7CnR$;M|&lGOO_2II8H)DAH!w+VlJriboXwpt+VAdD9A0CV^w$@xvy5P~o z3}NSL>{uA@c1)-Wd$`r=<E5f@81DRsqmboN9*NW>TYHG?ed=+B-EKH*HnNK-tEkwL z)?WIktZ<@D_Tk0u6Tg*9Y=?ulH*4q*hb#kLU^Xg0(|cbSf%u561ChooX9`AC{Zbe9 zKRTY^e?&=vc8mf4)>QV_iU_o3?6)~kA@lFtpB2snSwNM{Z&A#@*3<);|I57r<}m)B zC-8r$HWtvdC=j%?<(DV;6Z<g`w6O&g0%t!4g3dX8@>#(hk%RWKJb65DP6yCl7ElPB z{TK+^%kl&Q<2na|_OgINtYGTTfuOxCPatM+U&MdfDSy&94+QOHc>;lx<e<GQParVX z93W^f%M%DpO+65_m*ok>3~r^r*b!jWHE1sjC<OK*2z1Wr6A0Wk0-baE1Y!rb(qHTd zW>#=3{l$&|*P;((`->gH4DKxmG*SKp0yE7Q2%0E=@;d?uW+l)>`4b3?UmggWD1QQh zy9NbKls|#M46y~WgK6pkvi#O$Sw$&@dB*3>x60clEZ(F3*)tQE(Bis&3DI>EP@Q}> z(K;XYb&#kZTN-0gn6wXIRL2kJYpv6sQSGg)*bnzNpa5w^+u+F)k(k9`OfAX~Ln~HR z8cC833Q0&mraVtDp;hR>&;7(-fnrb$C5#Wfah&oFMtSwD$0EftAn2kVgDyEX$I?<l zvYNsed!dM|pFe7zy<vDb9oD!7K5di&64t|x(1$FfVx9>0y)$Z=?W_F6=fzltHoac9 zOLFkJJgCOA{ggSW25sA{&wmh(TOnj7a-oZ1O40XyXCs%O#)E>-45Uc%U}3Tt&_PWs z`kC5cis()mp*F@!dfO)N@a(|ZS8K*4L}!&Yn;%l;E<?6g>b&T%Q4P^-$EOQ}QHUS2 z>rSeGR|-##EXV6I>jowAW=FzI8y&TrjBX}C9<yt2^7yolAS>*`_lv;jvilWj6Eev` zOm{VuUJ&hfsPaj2Lje0+92csxgX)xwP<4+b#-;#Fe|4z`U$?n0y_x>u&6$6(_M(TA zn=5NK12*ySu!#sfMI>vtsRL#ZRpN;*|2=Fs1P$~lqR0M6T)Tlu6-Xftb`<t5)TU)U zhL`p<nAYq(Y3ipYCNA2amUl>l`s>1W<vJ7kkG{?6EvWz0OKq~n3#4L2J8cN$rCP|Z zveq>5EMA903Z5!;*5pulk3*FsC*!^k`_*zpXEJ={z4-l6tX^UhE30f)3-3sD^RS}H zEGOImj{a5~KC-}iCWOD<{IQj%xpEN|3_!B~F&tm3%uQs_Lo2GRG6;Dv!@+T9sG@A8 zgIX*CIA`+qWYtOuy}ay%FSubJWjD3<B1z=a-uID6bvWh~Lqht`m&Xcy%dBB__LJ_r z2V)5WX2RL-8RV4Px)brnX|S7zCwOaSA*~g?oDm{D8-UgtiS_;dv;`|oxv=x$3&+gC zPoA}zo%u8pmDC3dkbON$ho8IrO&t_x@2Z!0?Xm1FlKT_=X#v`poprvZ2fhxlt*w4l z+7N8rnU*c$N6+XbVMel@r=wd_*v_Ze53h^VzNf_{CiGa)#T&+*0W-?gCuTOb2DIkB z!x<k4>}*b*KN3G6GD1u=AN7OLp6vg#9U#AIPZkn3wtp$g-<6x7We!00-zxq9vOg_P z7vZ4i-~h0)F#lc+IV&p(69+p96A<vnl<WWG`u)55`#0Ul!t$R^`~G>v_lIs|=K$4> z0MK9W?0?-d0tA5mdT0OZmJuLm`tTR%Pg+KRpwYu8j|WcqfF=*0K;V=Q0Q3(&C<IRV z06_oXgF@hx4`@>G2?S30fF=b&AvSQz2Q(@81OlggK$C(`AaKeDG%5H50;haHlY&nm zaLNZXDfk2er+h$@f=?iD$_F$l2nw-+Q$C<c!6y&^%#Q|WQt$}`ZtsE4<9Y&t+k2q% zxSl}Z_8#awE>MUC+};DtPdtIZ?LE+WTu&fydk=IT*Aocb-UCfLJb}RNJ<znn6A0Yi z15G<TfxzuO(6j?6#0+llfu<dvK;Tq2XxiZk1V(jpfTkUuKwwli2WZ;i2?S;q00(H= z;RyuhPYuT}X@`I4djQ~fCPo&;4BE~yV)<RVA->s=l%rT~wjkLF-|>BQXy0y6%Ikrt z-x%w$dEi1Zi{(F9@PhFz?)~_+Tj%IN{r%auQSrCP8-3{k83E4J((fkWjdvCdhY!5{ z@dje0z3hQ}Om{h71epfdWy@`;)5974w=9k%e|{J;rzF5?fWrBNg@#0*9Uc&e#7a+E zVgEVkT0`_w`2zkPzxqX400q;jZj{9jowSD8V7oNWikMC>4_UPA;~jDyM6txLkilXm z21_a_o|aJrDKuULSVCuC<t4fpTzdoWG{dP#YkfcA>;}uac41F9%9)5~h`zM6kG}op zlu>dbzmvSb2|T&CQ%2f4F7~*@zjWWsP;yqBt6FiLsw=8B23*xB;*w#GS=iE`r7$2| z^(QeiC@a?}YXpV>op`@nZ0(BQ(k%x>(Kb_KFHh!1)Dmo3%?TaU=>!<*92bk=2v+F_ z%O>vTOWD-m9Jb{mXekNF9h~dJa_fJznjJ64g3@890Yu|>Na9#);OI|4w%AtVgcMVE zFDbnbL9yC{S@5yyq^>FtHd~D44n6d{=%<?Gc1`{g*go@hor%EAKIf`%=bIO~FP#~7 zhncpnZC3a-(20iLa;b=R4iN@dM6EL!@|_OkLK<JQ|Fx#vP)Yc^A42WMzIDiLWtOAb zMFaBRII~<xE&cK1)@GD&M-z_ytf4goc`gaRMhQ<gp$8AXP3x*qcj5YZ#pXija{HKY znlY>ZWq+jjPB=`y<Ly;~;iK-|PVYoB=P_AOCnO8<nPe1y$TGu$EBW;IB@&z(tWIy; zu%w*?*&8$o3Eg%ni<Id%DJ<z1{CE_c0N#_rkDPp5?9Ejje7up2k~bwE!<udIo|n2@ zjQRmw60;6?_?(=Y)sYY+R1H{i>NZc6Tb_C2p{P=!Z>uQ>E2(N77U&rd5xuNQ?Mxu2 zTj{$<!O)!@l6EVj(j^X50P-JE%jcC)_#LQ6rgz=cyJr^kcOQmZPO~O1ny=2>H-*O( zfA4%<ytQh5TnYgNfkZ(P@l>jF{E`Lwe?h8qfX+wa_`Nwt9H8@&e&PPsO94hxa)6q< ze~SYC(%2?T@{eC$e|o~p@~?az2P3Fb=KwW)|MCQXa>C02I%NnH0;kkDK#kqMK!0+= z%K>Wae)4$WzEx0THz>pm<_ML830%UA1^7Ex>{ZGV*6ZwlB+QQUuoye><*}SC9RV{i zIF^{WDkL-BQ*v6>MAJ$Qi|)(#krg!R{4ROuf>XWDAGDIwdAV@nrfW%vonQit<*3tr zV6du1$}NNa*S4H(t|4Ipt_4=1qf$nP#SdVp!)tI(vBlouh|}t+jo#k5*eGkgV@oPo z4BFL$#V$B8o85OjkY?R;`Dr5+?T=JEU^I3}-!jZIM*MZ{m8`^8-?Q=45^6S$Z`whZ zb`^&aqQbOTsi|rv>S9M-U#<#uc4aKgi6o0)$`PSOvJ93quUFU4j{rvuM%x;yLnM~w z>m}TM&Yl5q^^GSvn(T|Gd!H`Pnr1b>vFcnGAGFjSBzn>-4-M|ImoQ{_qld@cJ=?JR z5VP=QZ$zxb#cbl?)nS+t?YirknhoJ#+-9lp;e&=P#D$|0286<gn}E0^qn{$DGl%5e z?&^rR)F+)vcdYPwMi2^F(N!6bRMN;?Q}559gZ2E*;n#=QR4)QA+|Ws4FqeH}hl57e z4hu0Z6~wL3VAIPzJJYPlOLFsS%b^$L5NHjIEK%`8<r+U}md?X$(fO|TDMHkYOww(C zugYC_t#!61Wvs&#TKnXMr?K-6qBx;@*Bfrba@zi&K+|cx#=H}KDpkk>gVFR3THmO7 ziv7c6Zb9E2!fu<JW@Yf4uF+#-j=A8azCf?eBxL4y(mc1h2b-2}uHF~VwcQQwfi^l# zW9MSWrHLCA*EJT8ln8mV`c*{`?b4h~?eS@F2AE9HC!*MC{x-Xe2yLVt14eEORgJZV zPV>^U){E`~?Lcj-X0{0qJStR+UIH20<Gq?i*7*y!aBtN&4pP3<Z<KVY_m^7E7i0VE zo030_6O0$gN!VxDs*OXC7jL{WBcx`PSFVm%RejB{#zK$(wx&v<+bBsR*_>Qlo>#QX z%)t2}P=c3y%p))FEEy>>*iu3r^`ba?ONAQ2;5E<MvxXphc+2oc+QAz4+Thxf`-9@e z2OT~sCDk>hA3x|Gx+wK|KVc|pb@*gCwlQNh90wrrvP2h6r6v{=VP|!Wk+PLTC?l8- z6gudM<x3(}5A;L6K_VXh_66ZQ1HGN*O~2fEvcSRdw|Lo^cmm~Xn`Y-d!OH<Ha(@$H zJ52ffcQuP~4BGO%Ur<^2<d7pQB*I~}f<)Ew^xABz=;V8u-ll7@l6@AJu*Hh7%R2}O zdFRH)>msJO5h=dKiE7fkur%|id?2@nx-$`;dvp?48(MjF6E5!?vtER^=S`H?!G#)d zo_#T?z*0r02Vkp_?n@cp#p_BZ<Zwr=Zol4v<&C44iPObq@Gg`sPt&foOn$~`Lu0b~ zk>Yp;;?0*#$F1vVA&Yi90D}LEsw#H2<L}SMcQUy9M`xkQzh_5@D(9k`MQ)Hwzh*;@ zKGJ<Z%!rA0{MFSb(ICu<`X^$X-}>0h%IOzchR7KfR2!Mg0Kp-2Z0b6?q@rz~*b0v5 zbxd2>YP=F%mFaR8p^w15cN~u4gyngN+bVK`Mm{yxl3TJ!_6J|1M<J$f$qmq>$aVC^ z^;dsTi<{xnLOFDBn=t#4TIysPSwnH)zOo+9nSZZE@MU2?8WlIqTjABWBDZzI@}dod zq3<$jpXK608)(zY!i=RVDFsYRYAR_&^t0Bw#!v=)14vs96mhw?FE%1babWXF-~0G` zu+<VPZA!^YGiZ>rw`s&n9BDLE_xs(@ws(?<|6mQa>&m#M<E9Q0O&doge;_nNImu?s zf)h1`aU8|egW4gFC&zKX_{^2=qDa4O>wq`X#z43_cbFs>n|ey~vT?vSjO6e*GYySZ zI=q$m=Jn#F(-O}!WQgEkC?7Bi;+JU6|NVeJ2k2lo4yNB4SHbb?Y`6b9>SN~sGX3^Z zA2WdY??-*W{}}M+_;n`Sznv=r7y-Yx7zgv;7W-q&!Cx*0rn=y7pA7K3)dj4Ke_ss9 z`qzuG{OKqAy|0ml5%{;oSlF2UaxunVbr{FLjTixUV)~C`(m!<A6MrNJs6X<Tee=ih z9hl<=4p4vO69~+$GzX|Z5)=YAuaE=OANd3VJT1lI0QE;cf!M&T1nQ4`0<nTw33R00 z69}B*108Ai1Y!cW5~v^rfmp$*SWvsk69@=yrN7t_tYAh&a)265o<MBiR{Dz_!3w51 zgM;NSb_6S!0h=74ev&5;7;i2IsGkHBVgWPNg#*-2@&p1i<d6f@Px1r;_d^KkCjo_+ z!FVq?SiwzoVPgHAK8r6(>UK#$EVnJ?ZFDC+MO+G<%l!JPiElOYQZuH;$=uX67Eu@< zJiC(ITSagKm>eVFUU&|lb8fj}2o<i}=b8s8N%6{sKJ$W)j7|p{=1sLT1BbjWU*cy_ ztHUBN&m#n_rpVIiM=yH!(2~S^v=L6tvd8-xn^&7Ugmf8*!;r74rY8ymL}QT7>U~l+ ze4=EB99XUsG`&8HCqvQNU?`wUSDcdku!vlQ!NnJ>K{UbA?T|%$B($OVkoc7*q`XYG z1!_9&nIAphIjT*vc$KdR*%&VCt=MSCHaQJPC`<zy31ln1mw8-<JvyVFosWNnZohP7 zrK}En0y8SUq4|M8SaNEc7ZtsgUO4>GWabSTpcN@fz*<YEpPXTn3F-f1?yTRUT)T!1 z(v38TfP^3*%nU;eEl7uiGy)<Z9ZGkHq|zykq?B|^NhlyGC5^PSAov~b<Jr&qI`_Tz z_Ir-!hxZRSkGW>%nz`4tu5+!`TKJ9o&4@HtkYj|$K{YDrForLVT;%D%S;iBZp#CDZ zA{&FU0V@&;w~q~xZW=Z0+}92$LTp&YTuki^vnY0~Z1If49}ZSqtqi_$moPPtcYCbP zo#t*JnCwiCeMO@^g5;|p88ol5C%fNvX{hb};1q*NDC^Fm&RVe(YU{XE+~L((&923J zRb)A%n3(%GIL-1pV<$!Sg4-W4)6Q#_xkg9HyAtm9_VRWz@OWy*=VjEoX&4A^R5~T^ zNHFHzTK<M7=yT`7vCt|fwONSsw6y5i)3Kt>jjW8#ie&{4X)W#yn@E<jqU|@w6)yGk zFQ^J!W&4!f3!gpmj#}G1Ze7<*_Key#w0I*>cG3KPTC!10v?;JHnn)7e&(r%_&1Z@1 z&}-c{g6&#zNZiNm6&Z|i8u72`LN6A^gEcQ5I!B(SKB73V>~uX7o*I2~IZ?#hO#N;T zQ=t1K^JM}mPv@=tFGHQ7v~zr0w&tg<5rw|xi=#YWD{z#tbCh%G^&i~})@$y+-XG?m z;d1Cm<Wx16&)MNGWt|8!yK&lw=cH#&?{Pqzoj%lm@R6t1I7uMf$4(J3i_LmH%N_UK zxZ6^0k>4o9V8xU#ijnSMBkNX%b==U6s`BA$8pY#1)zwoPCo%$%cH#$>0kf#<=AWJ$ z63vG3v^-clIP%smI{vJofYrm&*kaFy;yhWZT<kpiPA`1Nb32vl{f8x`fstH0<Jz56 z*B{!8_MF3~$(VK>H|8JGIn?xQy<ReEbetfJOO*M_ahodduA{)5A}t^8E3d?jeoGIk zZgZ4J%dV}BE7}akP@0d?FU2lAFys|qs3<0nQ8UDKVy0i$Nc|Cp(^Q)d8<;cBh#ue} zl>3-CSQYx2%`M=YxwYtm_Kwu}b38bkXRXsGjAyY_{S!^9dpD)$>OKpQgf#P7sq;~s zU&9a2<F?Eipyl86MElrILNmAFT<m0F@?tO1dw==L1!>oCjJ~tEs&jRnk1ExSEzJkw z%blSL)d{iwkS9CZEOsw1sYX!BuaQ4+X<#R~m)H`?LfpO1MW$KnVz10wQ>ji!9^Y2; z);c2^)?;Dc`POTQ^xYN0Nx@dHJ*`~0wUq{6Umri~j=B$Q^03GzXByL`<ZCMm8j8Xl z8XJ(<8~%Uoq8)+k!6D$kb<vJMR^fi(e&*r8u3QnwF5K@?$TA#&0<+-|$Tr;XQAjT6 zzaCA0l_~r)J@_+1<%J<fsK}PwFDv+~R2;G;hYW#6KFF3F00MgqBU^IF5Lk}|1hORu zfI#lH5XhDs00I#K5WiS*|9apferwcliRPdEs|HjJ+Bgx+QX35xG}V(B6k#5??kd;2 zof!Ic`cn_rc4M+lL;@&m{Mm9>j|K<$AK^{1?Aq?2Z*AOdqaz`th4~ph35->sixuO4 z*GPnYg)ce`gS&>orrU(jA1{G=lD5|}(Y{;GLSb#t>d8w3FOG~4JLv9jC}`Z=H7K06 zE!m2&PPLyeJFvLvT0dw$tNeBsif-qR{kDV!eR<96g?#-dVU~$&617avjcIQb6rd+t zB<N|!wh*fP*wa?>HTS)LhgvQhdsp;g@9XNp_K{`ec)oii)O!5xV88>yP}hpadv*_W z(oTAcE^B-YO7mjAXt{Vhl|370H(pgVGNT!o(YoQqZt!fk<g(UeH~guC%lF-CC((GW zZ1I~I-NMt0dG|A<Iou7HU@SJuZm>IIZ&BKRj8zoPjOSQ$PD>ms+$f363-#+>iRoWi zw+>l(<s|}{)#C2i?-Hr5&6l6X%ip{F=E`|8#)XbEc-UI-z<);KCgLNRJdQkx(iY2O z>S`YYRoNj;SE+#9$B##C?OwrOVxN#=OGg>rfu*+3+y4l9`?e{(Q8XcK*`4N!?W(EE zp#9{6Jp=C0-TP`btW1YivS{obY?2m-(Ix`L<NXpe6-iwsoF)#**0g^2LJmoU%}2yi z#6FSn6*)T|%3Cd9y`uhXOK3dqZGEepFS%Bj*<8xw7LJ1NWS@KD3w%?&LBm6B<E1=1 zNw*&cApyn@cW_vyakpmNw2OxxSx&4hoU`Jamod`$4BId?nCKfYJ3#upJ)|=HI`Cum z%ARv8;T2rUG86URP1%U(kWG%HB@W8>e<=6eSh`s}gL;I6TzvUELH9k!Ge<4q&(wl@ z`Y*AA?`ln<tcz7=&b)<9V6bHgX8W{49ze$)xu3V-#a@e{@$simvZ_?^hOIB_ZJ*P_ zDw(tLucwf*kTd7_zd-d8M)RU=Rvj)>Yt5}bV2QU`?qEui50=W?zCAdzvA2@W*%lK_ z65*^o5LTn6edSWIS;&z!g-~ID@n+mG{@Ztl^B5vx`>jTzCOnZXah4Sx6-*JMgcl0< zJvJU+Uz9W_RWN_5?)6E1dkev)Gtl!EmR^(f-t|+c|G`H-;)wjnXBKOr4i}3>2OYLC zG%D&Qx<UQ+1@c}^YBBetAGo$v>p@Q>42%7o==pi+<8?bOCR#)r`_kuV&B)wn&E6f@ zCPCFRPP~l?m5$bzgJiF@x=m;Fb^5%COA3jlYx;OO`bE{Y)mT(9y~Wgu)I8rL$=AlM z<T~xW&&sSnww!i+P%%-emP&U)o}|C%u>S|LSjf^Wg73E~MiI!~>@OTtfRBL}q+$Vq zJc{Y}s9#iX6^4KP3;$L21@S+=8iJ1(`Pqg%qUo0v{DlyPK(_jjAs&8^gWoSo-=EI` zzTc4us<o8trXl!0CE<1aP*(X$X8Oi54nFI)Aro;wV=QimDzd`aDcjnYVrrM6w9`{u zQp43-Ot(Z|Flrbze%?O9oh-xk-PUQNeoTYT6J}&eF@v=`-abv_kE%D1m2lNM`A)KA zE`gp{b{E&@t1>|Zmo1mqXMz&NJ{Aaa=rn0daJss>$riI0Yp2*v_0T>)4_bcM@UE!q z<cRf<s0o4MXhI+>Y;qxrou^wu?_bO-U4tiH7>bwhxxhrNN7Z<WM3Jl!GOv=>9rT#0 zNHDSvZ<p))-q*9~!7<}oB?L=(meFH_g<(|+R19l#J6uig2rZhq_czuq3w1eJLhWC+ zl7%E%Ps<&u2TyxxB%afMa6%K;PP8z{y9Tp`7q1l*WS7iVL=kz#%Rb`}Rw`yDfvTrf z<qcJ`bTSP#*xe@&uIuiIVW%*<briTb$V+k=XiZ0TccyY)QChQ#duvDN@ic<9_|e@C z*^wBCXz+s%S;hGZTjdIY6}kBSagEYhTsU^zT;akWQqXx>L{0JHk^~&W<k+~)Qnn+q zKVS>2B=uKt7{en4rA4k<D+s^Ujg~!q!$vrD{8CuIBi>=>cG?28RG=sVX0}!IdI0<S zKBQC9qLpFcdHa|`!o)|octb-#KZ^4@XC$>$G-hb$n@p-k2^yYtUrbr8C$^q6wUqoi z8p4UG*7?Lxgy!cn^tQCZ&WL=&XGy_<Bu_f1$BZ%QD46o6v+6|DBR&XdR|<0!+>#qm zn?G};UZWaha}Q*mT)IuwAR)@L?i)q+#8bwWd#=E#K~SB7CH99^3AI#oz>BZR-6?ml zXyZthx>M>FZkqKFZBWewnHLC5iPU6ka*ax61|APfZ>dtE*i)ijsyyrVO=uvv;VEl4 z^6Jbf^R30~oyKclc70Y+?a-ur)JDGGkvEc~45gR%Z$NvNO6*|AlYCAbbb`a{(s3it z<8Cfu#_Lr`YKag=R{6<}?@0GAkLqxIx>fzA>#QZ?;9)rb?N<?r^<hdk-JYa%MyDrr zda>{IrJ|GXl`^IIb3ek?7n&+kwzcQbrRE<eo10RX_(Xh0D*POOrU>y#=y09x=Fs~Z z8(hyCfhRGOvd@%nI-ds9u)8v*Jl*N6;qLXkLVjJaT*~0}nx{a@Y_YYgl=Qh&(PXsL z!s5ud%cOFeK|7@dJCzvi*jBT8b>0)>@MKq!HCAqVYL=1RZyVow^4$i1JffAi`tI=R z(1`ZfoauOduVbN_|Fiq^Mjzge!K_y>%{WdDg|kBg&Yu$t--<W-gZ=gYr|k#+oB#L7 z>Mer*x7rdTknP)FxW8%_hd|bEe~<cA>t^`ZzwKY1WqAKR&>O)I$hISExxcL7ug)^a zS}rmK)?^Oxi<bN6|2_ZjOm8kp_+xsr@9r77K%dZ~pxqv)>CTVuk5#7A>0lz}q%2O| z&Uy+;X9svO_Zi>a_jqT*7=VuLjna-4a=vK%X2E`*g4S6DVq{c@vWbzFvRHQNqNlHq z^SQj4gEr=qpJV<DI)SD5igJ<9ug?87@FQ(i=0wRSR#IOdos=Q`3^?m4N<6DxPuEyv ziOzL2GFk3Wyof(i`pDH{J-<Yo)+JY0nkISW@Suh*&%m1gS^w>k*&KNdMc<y+=oXGE z*Exp`utt4C$1v~Wnd83rMz_<@<X(GL-J;JK^fb?4177&-=^3OifOyfAtXr+DRm3JG zikPcRu{u6}jd9@!YM5An;bL0#x^cGl(Ye!!h;-157%mq+l}(JA1BSvaQ}j!GnTThX z%2X-FlU8vUU*7fZlYNv)>lFVHozQ_@JsKP^Le;F`ELnVn`*oga5pC}o!u5&{0*(Ij z8D7A2Nys4HvmvfmM<!RaO*K-r8Ey3$JJ>2mH|m9Ne(M}nyt0&`mf4I!%X>}xy(P+r z>nxu>S4N~Wcq)^B_AuLVvmbO{eKK1ub~4LZK_<vD^2}{9ZOm62H{*$*^OfQf%e$OG z*B&ESPWLMi@1a(@o?k9rCi7@Ynn@k7&jhUvP>&@c>M2N9oz&;~3WTdk*z;m|`0u6j zUNhooR}*EmHHx2zY>S5+yt}lUa2|As65A1wFIYM_MHE+g$t7PGa+^zhG#2`RDnsck zB)@om{DDa9vHkrE0-?ve@(nNFzAx;)mB<x-@vVB(xD0`pf665M0A1R=@;3cO&zaWP z<z(#e3%m{jO59s#-Vp-n=AYWKh+nX}&G##3H{o1U-811c-@<!mYW-?xh&nQ-+a6!~ zM+4zU#MN}@H`>lq$EOu-roH#h4}PS&GJUvTf~T+~{MkXku!6eyVV9ubx41-7*83II zV|B(}b<kPIFK?$8v`;oq);8lcG~f1zgpyyyv$ALou)eQ2CL?@k%_gI@P!iG-wj_bW zoaZ?VVJ9q<WJtq89G^3sS9vE>{D{}Ld2g#iPRoW-N4;h@6fw4ksUiGowi9PIlX|SK z`+jEZ@psJhG`Pe3uwKEu3-igjvRneUq10|^)qdCZZHHu&(~+BEyt5V)!qT_Lw8+ni zupNYaA%VqE_K2036fawkJg@PXh`?Y?Nd@}lWrp6flKE~7pW9kr1tNlCO~?t+9_7Q_ zSGg!`x7r41F=5o0SlxtJ7&=Pl0V3o(9Q8D<Sc)Y(dmG&$a8Wc}?C|Q*zN!7N_h+NA zbEB;oR48>e<&q%(`oD<x{|5qoWIZ48hvfgy4*+CC|93flq{I|I<Zpxbe?{y+|I7sd zi75dPFBi)HJ1sAnqnZgjAozhUVqKB9N!pdoN6NnAYF6F|E~>^rC%24o^}^>I*O{Mk z@y{@u4#>R6T<1@P&rOk4Nu{@8e$}F;g19qE-qRs0Qz-l^>ennvk&1`B@S>&EsHuH5 zF~jXp#+ULB5qfi*ai0R+1s?IUeR<NOGh2O2tgHEw@)9eQ-;}uEhJ#e{fm_qCpk-Bt zi73Cd>K8}*7KlbzA-ei^OXYQ@HWbQ|+aE!8kidVcPX31*1o`17@Oxe)auLFBbI3_H z0VG?H7i0h~0=W?3Hz}l(BtPPBBMbijIY}ZQ$eR(lK;f4a{FP6MT%dpqf%=rl1qy)o z3YPFhE>Hk052Ruqfn1<~41pE=Adm|b01%j)fLx$}41rb5BajOekRcufNcI4^Kmh>p z0Y3;R1i3;1K*52t3!o6>5(Q)m?1mT$L9S5%P#~8JPzdr!2EbMVf31Jm7ElmV0}25h z%D@Nzon%Iwmd?+vRNiZ^KQqNu7@;(suL{VdTNKEZBs+HxqAA@W;UOywjk|tv&Q*>_ zSGhIHO%nF#gI((bd7teE-c9kB4M(|#XBm4z^a?Ai$@?dt^xW(y=T@**6nrZ7)#j}W zyk8lYNf_e3Tk15lUKsyGs^6A%C4(}0?t0_ga-;I@g)3j;bCRuwshuL&Ydn$jnp1RG zo_LnpSNvSAIX6yOv+!LeCt-=8J#MMCoX+T+(D0$6Wi?%|t+SKj58)?<gJUOnDnEwR zFInr3XDNk`=`VZ>Dt;9BoG6_t+`D-L`>HU(_fpoNC*1Kac&OT`UWCQe-!Z+3WrP(j z>J{6rkVf)TMa?<lV}F0gw#0tr;X`^tD?LTci}D7>A#%ynD=~#?88pd0=Wi%kI->9Q z#xv)vcTpW-Xmr22N)ai2$`f^0)p&Wz92>Wr*lZ|G6@9R^nSqf`%JGiLYWH<L>po{b zB9l(sfn>KZo%&HHtuiy1NnQ<>#JCMSL;p*Y(AFTGEk=2~OI_kpM}dpoYlnr60|Eo? zcD`ne3O6l2-V#(U`39m6l6)UpdDqY+gBKm$*;3+!3=E7gNd2SjhqYG6*FV);9=mF; zbz#0_zsTg6vC(8}SzqcHl;|!qcx?LMehAB1ilQ)l_4b^vYC0F6lREF_lK#XuFVhDq zsCqm7SP{1Z^KZ8HMKQX+N_028-tTTRr(QGANc*8C632d^caeBM7s}WDXmW_MPP8tV zks-TTRiPQ?aN7#s9Q|G#SMz+$M`95*%(tvl1UgY)+5^5x8fbP)KI`^65HDx&3}h;J zq`4yFs>r;=mG~@NwkxT>_{`P7qHQCXcuexD%9of0|2sDa(XXXWZYl2UKg$W@Up~^E zaDS;q84HiHxm{57R;#@di!e-VY09GXI|<f}1(av8T-?_Z<K|?Gup+q2mD+eDJrlMh zaMG4~qYUt0qZG6GnOwog^tc0C#0(oHeu_xtP)FItkAeB#v$ztDEo7R=p!RsuG(m1$ z;4_?M0Wv?AxG6bx{jpkSM9g<=9cFI&{-Tc95N8yv9|D<_sMlenED`snC_-wwMlfPu z!rJW0(BzoMCf%>*5Z&p(I5YZI-5nLT_%5txNJF{+E80it)+^DSb3+<QHFW>=d2zXr zFQmcl7;hOWBQok^#r!tVZ5bWxNr$m*^PTS+nfC}sSkjQx3`W=0Rbh+>i-(O|WTXZy znGruxn_+b1W$2z^EZ=iK-gq1Alvr`TluOk7Ow>*=f;Gifpw#l3u#l7S=L&4XU1w=m zyOHJ{x;L2Sh4_w+#5*$$Z{QrLR?#s_FB41WR@=0Ljx>za25RDqVO^Fe9RXg1S6R#) z7R&n7Hp`|mt!^|-Ov9YNy4@|#D*J(zt?|T6;<P9$XO)+C#<>7bvKu9}vKLE`iuiVY z=yvWC|MjSw1opYN2)jSxDeAra&|;kSV)9F!_=-r&IR~+S90Kj?*IXa}(`jxWVWwpF zP6%fGO$bV^R&csYp~bTOj6cdqP_VRyiXNv{EX;cZU7kTm4Lv}rf_wMsN?}&DXpi2; zk=N3z;q3gIfr6ycTkHPQPvTD6m1IRqu$28&j-Iy)p#EU49A_o%MD;H4ORG^4NWE1A zSJZ90tp9FR@D5F0wyo?(-9p{nU`)xT^sF1|?}xmDaqU?k`L&c$M{IRD)UWu_ahnCx zlq>J0TRZt>*4S~iNXzprOzx!#-Do(FK=kdA6PP)=v-RlZYMbCl^^Sa`QFMEezfg^? zkwODcX~m)0_Qz?K=SjMvz$4AE{z+D-JWL1D*sHN;FUVZX={$PRD}*zNa3>0aCLJo? zkv7T~w;n2b0|UMwb1~y+mfP1e7MNKwTfHhB2sLFU?GuPzJI)jC(;6=FlrP@8_@F%D ztX#o=%i+eoDh9-YvUwhYZ=-OjeCN#kSrC?tJ!fD@w%gF#N!-Ua=kUrc6I?CMx>Dju zt((vN;<ps<+h2cT{88~(c|<Wzi~p$UL){Z<pEEa>b4HIS4jHtkoB8!~wUkw4`LExN z*t@@~AqpuHe6g<@ka1tHTZ87+V`%}?9*yj%>jRmg{ga+j#5t-a;(OlljhHZj=68iW zD*|L#WaYyy%bG5!W^#Elt7$(39IEciNPdHqzjMv(iY4*96xzq2V_Ck-dW25T_5%lk zVuRK}1q_~{kpISThyUsrT_^;(76=OYy-5#H$giUw{*Ydkp!{42E`F#0f|pCu{Gt7Q z3rA~Hu0NJxV`}U8^tW7CIGq2FyY`>&2F?fhI~NuTfdU2Q|H>lxVGM8{eg+tn=jU4f zVGTg9SqTc~LU6%(Ap+3<wTAmo9@;*A_{h=1&i40K!2{!GfWu%6a5$6!&hz(L@GphU zDh&UMrT+44EAa0`B@_ZhKHNef$Q4k(Zi~O@r2vH>*FXU<urmb|f;`^hSL`qPDL^5} z11^Az1WBkuA;=>x02tULH7Er7x4)D>#A47_L;Mp4q839TFvve)P_RY9p#OluK~EUS zJ$`{057^g@+~OCA!N9(5*gx$O9?-xaSyl&PARaFif~>0pFc?T111JPpSO;QIuu~Td z<fat{g+YJgbdsyp|6-btV)lSTTSv8!LeY13>P_P`U1M5ur?CdbHYdZ?7fIQ&LAkm+ ztsgMB#QjMcmolbg8NzzJ(mZxhom}2GMssZJ2!=G|ZJw6xcE{Drb<b!D=&gC}G@ZBU zZ>;LEI<2gYDt(?RU{;>_j>6#_b<Z=Y+|R+=nXb7}MC>@*X{qal^uWnZ%G(Ndx8|$i zV*4M;>5m*F<>gY^6TUSsVSHiy@zJffJt|%DZOrMw;AejO00Bmw4K51_M$^#`=Hz*G z3MB*29%wIjtC~%-MDAPGe{CeX_5QsPDZ=pbBU_CY@%)G7XEM9Rr<?a{vb8yNNZd^c z=B&RNd6&FJ)eOQP^f_$7i0J#$(nBelRv5e_?;6qM{lNo~J-0Agc=cfX%6!~Wz99Lk ztijRwYW1`g+Cb5h+KK)R=~lfQ4F#LQ7bMab*fyUsiZ<LT@XeRwW3D(58{NCJoH}qW z)pk{imEPDUIjwgZLrM4s{S{%B%&cbp7TIRPfnwY$s_{;Pr``2U;|{n`<!>JZuNKd@ z2z$<lJ~HGJWEFf7qb>g^A~!y$WjJI)s(zul@>Yf7_Q@4i>l6ykP~qY0*OK&hhq_BY zU*L!acBhlTK0a_APmk)!*Le6`6Ai`dB<JnS2c!2dZN)1mMcx|HG`7}7`<&V?u%&&& zdHCGJK9l0G?ujNz;(*qkzt|}mON0s<*E55zz&oo~UWG>&R1$0Gge$ki_;J|#?&<mB zv9G3AT3^wJ+`z4Jup_OU2{f6$ukn;lqM|D5#hv9ICPpT@?15rjN%b&RRSSK%9_d5% zjvp{yVRbK6V*Ihk8V16KZsS|SetOjl2N&l;iu>EIUve?@l6xn>{I#W@q$o4#UZ|Xu zc3)6_!EeDhHN~H&D^?F_w8WR%FWw)hRggXNim_1jHWv<ICipI!Ltffqm%3z}>??&Z z)S?u=8VfO+Sif9#l3>MaW9zNOpn%0NhTmvVkp7N6UMNo|{7fdAahj>*6Vs&=F5Hr@ z$Mq7ucfL>lRZ9K^PNH?{F(c+!-5a?k{P0ih#-a6O4}x|aZa#FBom6o_|LWQ}75d)( zIcBa#ON04D6KTrR(crj3ViTGx6f72+=o@Z_QO~ZW6jZi#i3juU6o?=W9!s*#>^<OL zq#H;?XgE1?onJ@|L6(UH4K`7(yA{_$RcVuO2d^t`Mj5Ny=DEH2%pkuUzk$ni9K2C! z7M;{+*Uvg^Nm$p15v=TZ&6`YMC*y|4d{|jgF_8dY1-p@{UKzAEjPQy1C<;W6)*TLc z-yi%=)0ZGuz!eu;5WXoCKDT%-aBkCba{IMV%k$)QY_$RT^;PK6+n%wJFwf^^8E;e? z{BJwIDwjBHDrwNFQt*;o6I)ymIL9FBu?!W?#n3=aArF2M9{eQW6MwGTtU$rG*unS* z$~MulAoJqKQ}&pSluc`by@PV(3(_-530z}Qw)fuI8$sgEw4W_{aBtkPSkF$4A!;Aq z^~kzWuzB|K?1y%+G};VRSXOj0IfZYAsvwK{5vhJ5eK&TwYo^8y2MHThF7qAkU;{1< zlUbs!{08)XS(=U-_2$QWH>VrT;s_slZd4y7Sf^N2V&Z#T=1R7`PC`&Eef%2WiV8~~ z`nEJnwN9f*!&hVNSqkxocu9WItLo`Et>&#u%Eh#$AHa5<Ij1A$NX0jQ#MMJ7WBQbx zygjojC*Cq-))>7)dYQ24wP6ty?fu@B=)%z-(lpF>;*?{{UXwUPXoU&TB=+}=daxtB zcim%P`sq3hk<>Jg9kRy?^tr_M4_Bm%Mg(HNslUGMp4cewp7@%aV%cZ}>$RZ%R%E@V zY3#0ok~mh`J9HQEFV~XG@y&0OH7c=mU{vT#ilQ_HyEk`~8s`s7cPT^5NmX2OD{Lj5 z*oaDAx4mM76fMV39yTo5INkL4&OP+Cbk(F6k>XLOLhNi{P>i0?oJUeJ^)!Aj8s7~^ z!b=R2eKUzIb5v9O8AJWUA2<)X6HID(KOG$%1}wn7ruRqlH+0mHemM>}LEr9gn>3b3 zM`hAU3FIU7w0X~A1QBXe;2C5W<EVa-H+_5JHrFs4_U*#<;<7uBu&x<GLT`57Q~Fp= zkiwE5$9%Zq5B+rTti<@M-rW%1b03Mgt$Kyc%44Pr=T8c^-c`cSe^5;m^C<@MJj674 z60B0uEOPBaVkl^u?vUNl&LqK+AzLnymiKvA=aU+ir^|S&Hm8N8tNG41XfwHny0qYu z@QIiRC98+7(s*QEjjp}vt!aVv5q=x^Cj4J#H3eE5dACR!A5Vml$nqWB*v67+zZ=Q% zc;)+Q(+8FW&q#Gc)Vrd67Tz!zq12;GG%Y;{Q$*hV<2NBsPvv0}RbME&v!?mS8tS9; z9b-Ev1lohPT1&+0!~)-;n`f4_UY<;J!Td<~r%w#&^2=mJq}5~W4`xs%deQh96H>Xv zYNQ{fKOfsq>9rlwsWZska95S5cMDQEyYi%YgtE$q|M9Ik%COy8MRas;y88?9sc4-$ zwpuQ=Cq$%<K~LA!*zXL&o-?-GXXaBCDcOJha%caY+10G4DmGEl+48=&1>-@?2OsVE zupGItpf~{>G@i73zK_4kZ${sHW6La+b;U~cD()7ZO*2Jim_i}hXp_RDM-n<PyDd(m z+zK94Xt%OoGiRssbJUz`X=x$Fgp*dqEQHqKZ9QuRYH4pyQOG98?&Xm6?W~*?JTLS{ z&{+DYRqa1gbZR%ont5aTBZ7EV-0VEz?KGiY!=VIUcRN8&bY$S9rQt>-)z$EZsMj11 zP2Sqa-cq@DJvy7})wUffCQ8GMPBhrL6ZW6l9{=&MiT|G?C~_Gc6vFdc9>~8AF8_1p z`7=cO%R7`mCj|aH^zZ-=J;+sdzb@o2u2G;6<T^V527c&4uC)6V`-`g-C<M9I4!B4V zPaO(DuC@bWAU7jW2y(q05QBieH^89>3F8$2yGB5+xdURL2Rh`cJ0J#9e+Y#j*WCdz zkm1-+2y*2e0D~hy7x_=S1P=a@{OvA5fEQ#!A;|rlff)El@=v?uXHo<N`=?#<Gl>C$ z{nIYt0ex@Cr7S=Uq~947f?Uf2#6UWpK_SS!oq-qx?2|;UTLEA&ez47jT)6_oK<*-; z5aikwAO;8fbt6}=05Kl0UpI373J`;WegXfqOQ4`X9OO>VKn$ds2MR&%^$f&7Hy3iZ zXCMYLY849kMP2{%QWEl8$Np-~2TxN4iM@VS*3K7dc=`Ia<bAbaP5z>|7Cc8;OGHK% zf{#gQKYMvzMtn!0`))=JxAf;K!A6<J;ym-ECT|~^;d}?SzUPv}cl=>wck#zY>Rsl# z-*39$tCGzN-B9xh>3wvChe%bT0$ZgCqc~C$f~tbMdHT6zb~D6eqK_u5>&00_-Ncx) z*0Nl3UsvKO#c}RkJ9+9TqY2lQI$_<;==ZJAx=IK0&ks9P&|7I87M9rVD$p3U9&FNo zcH4zG;^jw&F3D!12}}5iW*$-c!%U+CKMU*)k7t#u|4<Wf5oF8yM*St*Uk1x~fi3?H z2gHz*It0a5%kK5q$kSUl-5rj;N^@smQ2NDM-aFcwVYvL5pA;ioSnd3pLP5Dcb?lpq zPVpQ2>5yCvjt_&^E)>rr8$bAY^iE^F*+*qRl4#7+OxNps^;F?@&3XRV57T(FYXdvQ z*{=xQ>fH_;Y47*n5d0vuR!e_X(F5A{xb}Vz54H;#3$~a<boKxpgCIj(GaBBa=BLIv z$`7*^;_N(oGL5xUYssAZYR-azwrXZHctdUR^T+iyQ+<^-tBk(PB*#~&s>43dwy=3y zzJ4MQ5vBIByD;g@!$4wjp0&_ABfR*FJ4`HvWFpo6HtzlXYiK9XZyBFg_58F1Jp}vZ zNTN@!>TKDSoBhaDYPlKtoniWJY4mcA=xQA9gC?df(Z+olb{89NS!@XnCGIiJ4u$b` zPpqtlM<taawBD~BEGi|#YCVm0)CSnTl25qD9c?jhhUh21x+*H+V=$0TNUk2nlQU;z zG<trI?>xIXb{p}ngDun`CfYT?GcanIsU-0p)wc$_4Y{c0P3_AT&!vWgj&=WrYgv)_ z{HD5FJZ|?b=ML07#tGd&Y~v0EShl`GiS$D(ZsxMRcpcPa6{}erT=i!CTb9%9sPf<< zc7@~`H;wo9;sok?gaOwDM8}^bj>4*NLNJaOsJ1K|22|Rtjjl(w6OzfOzN)waiwzlw zK)>k!F5A}JX2Lr5?pC=AjG|nj=gRw=WvODK6lt2LyHOZvigWsppLqoGsXF(4A6-ay z-AyOtZTU*aF4AOl#pr5lCTZkQ4XJNF9SNzK$XxAVl-)6Aq&?ipkMLr1?4x*=?!vmD zh(&P2m?YW#z@E~}^$w*<#S_`#`Ks@E5y@7Wiu$fHG-#ChLQ{RKMF||P`M2wwY6u`N zb!+{uIy32|CcLY&o9&U-p1k<TZfkaI+Bs(xFxW3WUYZB#ta6z(;t)7!&>>*m^O;+= z4@zIldT4UJ54+gSHrUr-6=$np?5gI0=O@!J8)5rK-JVC~V_8ji;n7oAkIKbig;e^6 zt>{!Jr-+U)uu%P%T9*HIb?bi?pYs78E`OBH{6>7vgB+jp{H<{J@0*A}0`!0Nm-}TU zfCtb2Uddl3{P_S69%Kxpb`lEV13Y+;F^~=wPzZ7tY9I#EqXG&+mf?XI1T6GIcHsdS z_+<vN3=hOW!xQ9g)Ibb0JV6%Uff#6bf~>v+FgODA)&6Ohz(KDUkh@X?F*xWa`A@q9 z4g>q%kkwZp1_gU>$mS~m1Jll+5ajOEKuiEE&_nJ|4a7iC5y%~?ff(oy2f0Tz5Cc6$ zAUmQ!4D^SCtcU_I80h9gHbj9K=nn^35d~s=U|#@ow`w2;`olriL4g=ZdtxXASqKGU zpm9C25(>b;ir}FTWGNJgfyVX7S|||X1N*v>#ZVvy8rLI03Tb}+pZ%6>*zTOeM>cyv zuDh5K%;1MUz~zwQIFg?}zGLlamPOTd6Dt7guIK)VmjqvLF!3Z6b!&mgOUL>6h~e%A zZ*8OMTel-fOzL~3@JY$;qLX*HSJ)<wABo(dx@}lOT=-Iwtj&c|h*P}(x`{RCgu@LZ zf~A#q-Km4y^9rgAe2pD(b;rW<+aCiTTS3n&JOjU#7qfOw;xHvWaeF+~BBa-%+j`rt zr@NzNw+>xu@5_y7RaV?#aza|&*fXiB4($&TR=Q*l`-pR%zf*W#$;12gsQGmclT1%B ztC?R)y;9|Y<ng@ds#+X>&}l~8yQl1q?%Xs(oq}JV#_-jY9G^GEtlUoA+`ejy5*Wzp z{4$`rf;GlRN+<8hjb-5v;~J`=))%5E!OdUE-&9;LUpe<Snl&ej;CdHYnvz~ms#cO0 z`r(FldOz_itl=1avJQ6!vc#Lj_qU|wp&aKN*qU2+Z$8$dBeba}xBNWK?Uu3{!aTix zA{<4Uyi9#Bx<fR<FZpfgz3R$0*s1YuBroP2-hGgLIFXf9{-`4?q?z<dYR^idU%W}l z@Hty)EzYsD1!Jl6l<<n_H_CZ}ZK|#ur-z+<#4p#|bC!;Vx-$m77l{ZLv$4W6WqLiN zGDxA0zB0W-q`DXOs@7v?_Q{fLpLC4OdK@foS69&T2i5WN2{UvP*>jMVXmrpDHZsx) z%q-1r>l1iQKh+nh`*y5B#5J>9!pyLE{!q(@U*0g|I_0}mw$UU%%=%GAMfnSTde$;S ztm7Nc^?0*c>qnSw^A=eY=B6ajY!#_(%rENa@LELnwWfV<C}{VLKD@OXz{Qh2&Au7$ zHnHL~d5-CkJ@qlc3mR}tDprh+Ia;RohL#cUF&5punn*s*8+rvAoQJw6*CaB{F)&L{ z>mE|41#^4e?(4_kO>N_k8dWWwxjFgzd!*3HhtY4{c<X4sLbb`F!rUe~dJT~_gN5z- zd;Aq2vU;OuC-G)*jG@`nN3E~bO35u*^My7C1*!}M1|MuB?-Xk;CMRZ3crvkeoQ`;C zZI@jXJ$#{y5_xhWEB?H$Lj}WZqhXPFOO5x-hRL$-hP|b^DJ1D2`{+!_S(YzjS1C5~ z`OwzNm+!VUPd<w-J}-Zrh>0TCvp^%h^2vee(~bKxR{UtM>XrluHb`l^aLm_tn|lx2 zg?$yX4R%kdrexO{#IV0Hz*O5rZeB_@5w!=CZnw#r8!ZIt-}g{`h4utHydsRHvWy<C zO}jH7X;eLdhuLP{Lr69m87H-`PcWB`qfe1fK7KPvdvJUEL^$%>(-$|Nd?rz{hgWp) zW#uG=4V8&ieCAuQX8rN)>5V(NZ%_DWgFoW(k|<VpXMD3V@Wi6`6*@w({H#<wEW0kH zR0(|rPtvwZHOgiWq1P$6cXRxU%Vi%tl#;jO_P3t}`h7CP-@#4;i2rWE&VS)F07aJ3 zp%BDx72o_Tp#R^e0Y3QOW$XW)qW^gsfI|MgnEzP`;Boc8SMpbxa452?4#dDR;ZS5* z9f0xjfjq9D5WwRK34;rOJg%U~4Z(pJ*pUT_+z%Xxft@{|KnV~T1IuwjA%LI;3F84v zX+x2le*-a)$rw;5a{F%}1{MoJksE*mF&HTJPrHN%0utvzfdU*71_PPS4TS;)IAjbg zsDT0nIAjd0G6V_~;E*wp#+6VgP=G_m!2ByHP=G_iz^3j&p+Er+83Q}(Lw^zA{vEJE z;lB~Ed20SSv-~r*DG54?T+G((n(69{y4WcA$AC06i8~}Bo@~q}EI(QrwO_ng?5135 z_wsC<uZ<y}mf98LBA+IBZcHA|96P`^SSe98CpEopM&A5GlBY{^n(gr^;&B+C1goMP zi(<DXf$KKoEoQ3ta>Mj&-qzXa02dLSa2NKm7xT`8S!LFG4PA+2BAxeN__N=}4Q*%$ zcg?0KE?7Sy7oU=1R|p&}@oj~ME3rRIYgSK|MJwZvS$mW_B~m9^p-mQ?ZuE}8!)TNH zh0V}QYSM5{Q>9#n5!Y8aEaawatqED|+Wybqb6e^@Wy(akE{W<w*k@5xW9i}=tFKA+ z{^d+nv7`frZ)Z{+CKW8*ANLmC)=0|h<Ml)<Zy%SZ;f;Ylr{5`UjSUD6-;Jm_Z-3_S zaV+f#PxH{)nJ(LL7TdFStz{7t>#6>bU`%JZS^HofyRzvD!J7KY$zwxw?yP<Zj$}rb z&8rVe$g;xYm*2L>k2z<l8N`okJqVu=^p$QLoMfwQf7-DvZi~W}fI%N+h_&{Wov`j} ztVhk!Rf&gI!+A~OVUH!k<Zi|l^ZS;1I5(GCeK+R9?b>C?w(~n0Wx$h*SbWZw?xTYT z&(vpRBJkvYMP!8I!WQKtOIIZ-NAG$!2Toy`t#&om$A!+JFHp>1McOTTqan^ep+0ob zDO8StKISVY%S|3MCrknpgxC=|-|FoQ+>+Lw_d>AO6yjKJ)#cmvsbAZ#TiZ1=B^K8A z#=c)k%Wit%zvwh%*NfwoW>oj`6ZP8bS{~&B=k71{>0<ZprYPR)(Rp}_-P(*>TkiHD zyk+Sj?fhn;lH##HIa8(E6QZH2G$9p^XCxuyY6L%oisfE3nS?MV5&Io-u@offO)#Ni z;IlZl_I3<W+~T$p!td2p-75-uKKW^+SxQR^ZI)hv$m=~bk!CRe``tzYH}or?ZNuf* zwd~kx=JoD1G7xD`N8xXl&HBMtr%)WJKX0dWzqv*u<vSk5Gc`%Sl#37&pke5Y*4pvl zb!E)8v{1f%dpbu<VkS^X@a-wV5Fxbrnr`p?Ywr9V2f+(94<5J_I8-0>k6`tAV3Kdp z+ue&2R8HojL|1{Dp(hUIgrru*pkO~h9c+z6OCAyrUKMUXU<<Z;Qx~-M*1L3eL{fh} zj#6mNu4wjplYL|<{d0s7tHRS65w3jsJ4~?1!V$#e_0A*_5|Qo2!%rtOc~)AA7mr=G zLSzWL_aw1Z40VO?Zx1(4*d(-hG`e+}CGlLXG^8GUXTYC&FleTAyTN{)V`w12=C(Qc zbMFmjg?XWAMQxw4mmEC{eP5pvS@gU${*JXMhKh;uu}=eJjvo~IiwpZ-jk*4R!YqL7 z3Wfb%(iIBuU4NVWrDE`BfQI;=l2p)i?Vlq+eg<eTen5bR+`jqOmHbt@7K+@!8Hj<U zkD$mcoPikF{Vo(>pCDtrV7HP`<TlPg3@oDt1t=x}3@i@>1t=x}3=Wd4f&vs100sla z{&olbF=7rRR{{knCde3E02KSDT>=LUtO1G%00Z;tp#a4MfPodbLIH{i00WtP2899? z6J!i*L^c!(P)q<AA1L-uyMzZ07JLE}695M0!9W3u2>=7jyF%e088sfn?+m<&h*eS# zfDi}oek1ol@5z^wJ*~4G8>W6tdyPnW^M*RpBH1%yr|&0RL-%YdC`tHsTh6yI1#(SX zc~@h`10^v7Q3GP|LP=2LS-6)KV;AyJ2+x8#hiH3<7lfAJ5#nn}&q<`Ian0%`3{4i( zTT@1+a3y@&;*I9MF><dZ-!dEb8R1{=(Rtj9h$O8ZWm=S5*yMkb^_+=CU%n5W`4pc4 zn_S75YA>{iVk0-_MY^2-aB#5>lt?0eE4w21VXCX$>c^ooFXdf!y_7!D=yV6Z+Mt{_ zPDE0CdcxBc#U<|w3^eQ1eTWM?8@c+3CW7wic?YxIx6jwLB~!k@y#DruG2FaEZ*0fr z0_yT;)7)}aCn0K!vwzT2ol)DJvl+uwKCmZ+L0dDoG<s%#m~~lve_mARdk#;-vkQ?; z&e~1PJnii(POrvhNAowZcg;4oA5LSpczm#<4D#645Y|<{PBF?6e8Hq^kzjfz^&rnj zEMD3`C^j*5s_<xQd56rWYk7`(Y4?z+4F#o&eg*8g3I8wTD*nTVCBO)R!hbI(0R>1w zzfS@OOejGGxDZ?dd=NgK|5f#+X8P30+L24$^fyb-e&#h`JU{0^Kp9|g*x%NkL4T=I zQDOM=H~5!1l|S<+e>}2zc>s@WfPeJM=kZqxBoyEuA!DElBoyEu{eu0K0tp59M}S3w z^pk)>0sav(2G&sm3I+H_01Px=1n`fLF*q;SM*{GV02pWn2f1}75Ci=)M(&&mz<9uJ zkD<t|Gl3Y`B^VSS5&$r;+hZtln@k`E8vFoc0RRTNCjqhmG6v%XeQzM0mZ9+9$~#nR zDgDelH2=&yJhsL}!SOy!5TLioPnI(tJj`50iH!-wmnvd5*Sa`*V07o1yfN#JA~&Nf zN~7I;%LDN=>zp+^JAo;}tE|CyBOosv?(D0@7|5iquduscN)sz<roLjZZD5eo=}fcl zUgBge7P0;$&1qJi@Bei}RQKa%x}f%K?DxfI3hnD0remcvaJSc`MGGs72OHP5SMik& zIF;SF+P`mT-2J$0d}O-7pRi7yk;YOnAa~PrKy6oeb;cuqqP69;-2LL6jaTy(20NxZ zbL}<UfnC(~taAD$%OW~HX1P(W8U9x(C~>A_(!##vh1vRsm8M27SmCtd$ib)+G3pl) z4EEK+k_Kjnz4*d)oR4m_YYUPtRji<n8O|l58|vH{LAQR!$dxuICVTB&+SOYl+IuMM zO#&+P!=}M>3poeaM3kX%^;K(AZSa!E-P~n&UySg4>TfIXINMh2Rtw%PIrP;MibTi; zNJ2QnV_v?isoLnSgNZL0F|Sc`Jy8GXPsmqvg#m~A74-~Ho|%vNp}|{|NYYxFG}n`j zl{eSqbWc{5PrSXPZ9+bVT>7t7H}bqWuF!W7*Ayq#qD?Y>@}%L*S#xE+l|y60w)AGO z|EF}m=4&?{t*vJHWj@*l$WVqG!X23eUQ~}rZnfB-rFOAmwtW#`c!C-;U~rU=gKESO zQS>$oN^Wc~tMvh8GV@$rv8dD`e7nI+99uo@4d$oge1huj29H4DK@VMxl{+hkbCcJ1 zwCb$!M&GR6c}IL7^G+A*U2bIvs(&wDgO&`xY@uZ^p$xG#+av>)QM%B$j~dZCIU)}m zmj~Mq9%`mvl-AhBq_MvD!wDm;#~WnT$Ch<e&0zJ!g*`CYfi0tv5^?UDeGPh?69TF1 zL5mq;;Knb4nW>qG*8M0Y`BX%0C1Qjr6oX+FrVyNTMLqFGmymi8trmOk@o@!>Z`y{< zM5<3duDZsUo8^Yi-mCo1vAd`C!t0suZ3CVfj;SqB(6`>|Hp~xx4?P}mNg6mwjAMnq zy<GHA@aP`V;rAzO))sNf;l<9ysOOjM;tyTjNGOnPDF~H;+%y$EYJ1sMr|s3@+8Pk} zkixHd$oP}3=1cE7I)`lt9pMAJ07ePc6b?krwbGL5=Og7=jYja(!qGdkDczGxkM2+` z;)H3Jh+=$$oON#z82NO1B!~npe%xT`Vjprl`07IISZnCW>p&r^Oz)@TRH~7mE}NlS zURlFG#IAB7rP8XP#~;|KltCA!vR|<0q3iW*=(y;5=Iali2(y!{MmF1IayM7}VlNq7 zt;s5SNxr^4<~u5(udU@&XqldSVeeWOVE?Wz>Du+2!p)~8xx}Q7lCy!DJ<6p~>MKGK zJnwKHo0k_6+}eA<{h?J5JO2@NR5+^N;rpiG4jc`~f)v$|kIn(6DIGm?j!S!EH&_?c zQdaNT9;vTI&A#A3)x^!TxN}CM&5tS(#BbW^yca1?)bQpZjh@${MI+CdXc|ST`n+g} zerMiyq8Q3A2Xbs)^Eh|INy<97{8@(2>{iO`cNn;}1$u8pD)A6zKHS_%4-!{u2>Sx> zAn1@`*q>1iqEtWaqm;?;IOzIPS~K2XSKMQ{FW`7?)PSM6x;daI!ge#q&eL0GBlQ+( zW~NuBYr!-sW2b2(HD_8_;wh%f?d`iMJnmuB<&|ytmU3gFhWHy+6Ol@hj|$#bRG2eu z$?gdX<pjhM933ydwOg<kT<^1{&9%ole@|}GTt{}#bj3Ebg}RO0q2aA36XvPieewDn zDp3opUFqqN(HQdYH=vwc^dDyn`6PJ>vp&rv(^g;kkzIK|&1%Jcq^?)3PknUfWf*ZN z&Ksg$%+mx0)IGy5hNze*<<jlmVDaoP9@qbkyElOB1?B&(4%tvB!1wxv{CNiF2fdg8 z2w%U;0Uq`Ln}b0G82CUYM?j$f<?DAjen2!X1BLz^!N$Y)dn4Fj2>2fXAP+y3ffw=j zZ6~0=*!@4lZusA4%Kprb{SkKa3jo4yfJFAo+y1L|3s8VWhKzxS-2jOU@TG!=-2jOU zut?DRR)9nXz(C_?fJBCj@q*rM0VFa2#se170wgj323GA41xRGb7}#JoC=?)(0Wgr6 z^H3;2A_HJx&L9*Zks)I|pvNVEL<Yck!9EgzL<Yb>qji8p2Ef4FGblhJL&jjB*;{}_ z2Ef4FGblhJ17Kh^B~ax4f<O!oih;C}fWqLv<(_FyKbhwHSyS@)YTtbbsz1t<GQIw^ zLu&7vYlZ3W+1xVOw6jAJ@#Unx&bv4)D7C=7pUWCmOg?o!;k@<9?eT=dGv`Pd)nH-z zZ?Y=ECIc#^O&+_o@h-<1H=b#p7z7?V2QoLE$6<$QVx&#FiGFQo2wEE()>{hq+JB?L z`=Sa#kQ~h&%QwXwDZyW)RI>*=uRKGsEwsBBiLo~f{_NrO<>C9s#aO$R7^vIAeTc8r z&ldQ_{jlX|vk>vj@ZsiwYp+FuMcan4$YQiJnZ8S1naw<+q_;V8W4<fi=CN>RW(RSS zK#^R26*4a#AZGJ6`)UnuLg4#VP80^pqX=nj78}i-Lz15BWII%h`qC63uW`O)o%EvW z`dBGu`wCh0Ftp4Hzp5THgW@QuoXxlGy%puOakKTRPra4Z%qr&n<YeW`EZG(_`SAda z*6}Adag6sg7xbUWhHxV_ZH^>Dqjef<?`<0>`Kik@n;PR^WV0*mC2OoK8{hG7FOPns zvfc7YnRrk~(VWw<1t-T_z;&+hSVz%6?d-uL<BFMt!pf{@m5b#)ni<*xIg3dCJ}%l6 zLN~ps^zBE<WI8F!-*OB>zw%j)Y@`+)rFQDL8IDOAL#*6a1+!I8t<tQE0_vlv2^ahp zCF?buF3m0F4Xrjhli*|RcT?GozdI51F8X5ob%Z*RFZ5x#?;h{t%B!EAZp<H~HU@b- ze`+Zl5zZcyR$dqz^~Nu^Tl$IGnte=I8}C*zuV{$bVpc=}9DjvkG1rk9Z8p+0vp+QN zI+ZE|tCS|YLe(R#PN{tn4#FU%M{aC<d{=Lj?L3e_kxS3Dud86a;V?FQQ^UA7{!Qg) z&0PkF_zR)67z-H>BB7d@WM_P|QVB2qjP$H(cGdArbb|QkqLy^8L0{sOjsAk>u$olk zaPKkE-d9axOCPEX4=u0>i;AUuU9;pNqsQH_Z!IIxA2`Du@5^RS9%K5&-?X(@Tvc6O z6fI3=qZw0VK2M=O>}!9F4|le&79EzFW#cMTnTgc%P?OB`ejX#HCMjJ^^)w$X&t2O5 z?nA|-k1i)$hhB`EX$}&31llC4%onkin~GkW7#F(nMaoak_j}~TUdqElZpjuj2PA4_ z-4yH&jp$f&U-<!_vNV2FEQI=uMKfVm{o!Ik2U$Ay$M;#V?7P%q9ff6OtRtqhhw>QL zH#$FjQ4<(pnGm-%rq#%Z))LUBDB4|M?iYfmKP_$9vDfq*)X3@^N52!Cp)W}PKo5%v zl}bG>UYYk;=i@E+VrPwu^^|$F)2Am#cV<T+x5#g1`5DDh>nXz!az1R`<6dW3EI%%* z?YB>62=tv<4w(4y$78S2Xlw@itfct1VDuV^44~8%6puGHe4-mUrXNz3C5TXZmpApA zhpi%YIjd-P?mpzo%OQq!cYUi4lQx&>90^*t!M^s*egUsbinM?u^flOQF{4g<1a#7~ z*%@{6z_Ng{Ad{_^Zfy%g1wa4#E^)xMOfHRS$<l}%N{4bbZ%LhqlJiP7BDcA;2}_-^ zJ&Oa6n(2FQq<k`+KJB}Ys^1IWIF+A-xuRV#ZHiip98!{FPn>gxd=<M8HrwxE%n+zo zf0G>g`tEgUyBi+mbSIzpUw6qIxt46$ESU}aT){_iAyeA|i`0MVs``H-QimZoUxmUT zzgN=^{k2Co!=KNJzs~6XD~tOxw1hzbMeQ(v?)J+{{wkvj1L$tZ7-(n-1L$tQV1Jd- zg#mOoz#_pyOBg_R17KjGB@CduA!EE?*K06<?gqfXGP*E;?gqfX%9UXN-3@?&U1!4p zx*GrkQ~6*3-3=LogUn}!!T`D(00RpxVF29?fPvMOzyP`%00XN|hXHgq00vf90t4u7 z$QWpKIt-w@0Wi?78=$)ZFt7wZ4AAcl8H0f(@L_;{ZvYG|fe!=pdjnu#349o!-x~k} zGdE!X1qOhDRj0!M{tEyD{pW&#ReHdFYgS^M*1yF;SyM|)l=<dwS3R~WKIW<wVBI6E z#+H+nlaTaxPBWaxpoqK6q1q9S9TR?WJl!SQ+55@Ehv%`$tXqWaqN;>khk)EuW!;6+ zrtqMX%M?;+3Jz|j)u+-O!gy2<<1pmpDR^mhJ>Z!PRe?u~T^@(r{9T&i3At4~6i+t{ z$s1hR1@F)Wa>-8)v~cc-^W?lrVY$;eLN&@=CM@>saro=G5RA#{V{ICYxL8_mNs^lm zF^`uc^6pp@cw&X})3LhPA9COX2;bn|>m}J2r)yPFOF3Yc>p-cVphHu#Rd;)8l9-8; zrt7{}E+H&rbh2J>M?h#PD~r)r`}Vb|lEKv8R*ImVY3hDYKkn5F=VD!(TdQ}h$5IO3 z1a=3^`HsxgZ4HZsJf%J;zEaJ6sr%X4#-(UJ<@U)~-#1PPkB<z4Z%5s%_g*`^*17g$ zI|=IhOl5EQb<o_aN*=*SK05GM-{n46?cNRJDBaT$Y`Ai-$@+7XxkG>|yuDWfvJ!!j zHcaI(zON&&!m*awE6A49lA_uw^&)+!4#oX=+Rr}3FxSI*T@w!3e`)ZQHz^>z5~Ft< z(O<Zms#ZP5(T&SlqxC`Fv8eX)!LznX?IyGw?#^OMaUX2@LuqH9Bvbs#H*N71Fq0ep zDU?DkDNK3m38kKuFV*ZdvO=ur8il$8CS9=uG{YXNMlyDxCG<=Yv!jP&E{5I^sy4zK zFKBU3$YVo8PrJrrbJvwD7mm|&m3kC0ol~*>N!#jHq)tSeR`=`GSJv`4Ltd&`qXL%Q zqD}paAKKCIsc-UKBT2<`XzIs^#qthlu|M&ML&SXW_|l%g)8yY+&z8ad_4R0Kv8D~T z#@K}N2cjEHG?4rIc-85jx$e1?QwAB>UQTs9xKb$=;?JOHRGTQ;QH9T~G5xG)NR5|1 z{EQhgi1pD2%az*;{kxpg2+Fg4`THtZ-ci&m3+R<tBQi-7UK$r;lKQ)G*2?7(Bi2{? z(Y`Qs)@zosiM_GB)z>1jGR3x_uDz2N4WVD=S2d7mzntNCWnP<SUac=T?409nw9k)& zKrEp~y7{|(hsf&%;kYGL<B*x9251{?rDoYjT2{D0xwr-^H~M4cu6=cUMsz$PBP#Gi zpmp$Dh;;4ilkTB!Yv-h8k3Hq<PDW(PV`Q&n+J4F|%aX0XgT~Miu^WP3ix6QB97Yui zZWboUeyGxB@Cfrt&_VkM0rp8{Lc{rjCo$awY7!AmkkUlwx)CSDkG|;aRT4csgfRT9 z?4d?z<U(0(AD?Fx^kS6liA&Fs-83=hRqMc|e7T<MW|yg6YJ8Hc9kvwh4B1_}Z(dI- z;aXk3v+6y#HL)k|?m|B<Ax1WTsmcBH+r?ee0G)>&T|zP5Xz&T~iePvv<)E&eGRn<& zWM&>;_<d`v9BT(@<xkXJwuMiT`FnifcTFs^K*9dh6^7gQ_SWqm;%B!f^UZfz9K*8D z^28A79nthB7k)3PZ?|QQSE%>Fo%l2M7rH<8<~wYRBn69J`uL7mV}y7H5%C#*l^xC^ zq535A1HEk-a_=d>MxS(afe+RDkmm=({5g!KtMnnmfo^=6(w9$FkFF&01)%<DY;zC5 zvQ&jf`O<Yy^CVd!6qlEDjqoU#Tda6Uq`mp6`FJ)O%XnjW$aB2Zp@c02Ja+TnCtf9D zS`qy}=FT##%64nlbV?(Qq_o7GlLqNjx;v!1rCXE+>Fy8}rMsj-1VLK5yFt=@@P2Ep zZ^<*?rF$QH@8kR7&(r6g&m6!Q_qeVxRCj(N62aImy?qTOAqRo}|JYX8Bsp%Au7Bmc zf1I5Iq=F#OpQ%1Tzp4fQq51%^^0IPpv9oirN}C#)aIo@lu&O9Mm2iJ%>To;j_s^yt zv-95ei~ss;9Gw4I^#KAy)1Lg_I0ZL|@>WNAd(+4P;rP#oV83JT|Hq%%zrO?j$G!Jo zg$fuTJplnUj=y{<e|NnM0%#lo7}Od7pmDs5aYA!@g8&*w00zzN4FYH!0T{HKTM$6w zco%~}b9;jT8b<&IO`8e=XdD3;G#wxapmDs5fq9`N^8k$_0ONxCwBJPu7-|s)&^X@3 zK+xah@1g_*O`8e=jL`yM(0Ugjz!)t625p=&2rx$LF2(`%3jm1b02tIS;1|W*Kl5Zx z4&Fb=lN&YUo=@@M&s=J_TY8dozqXy+EtMP2bW2Tf+kcnLih$w}UB+9@IM9+sFW4&` z&u&CefeP2u810ocoA9dT)K2JWXv?nPqDC{}dF&v{Nk!mA#=iP&!*GL-g3n?SGuzpU z+phV(AT?G0l@t2UveR64xFE!L{XyL5yIkJfuf7b@anlwkISe8{UTfN?=xj~eH$8lR zg<vNW>?=b;r<54DcQ}iV%f;B@h4qlO@>KeDFwP1357JAHC+*Z{_R<7}Obr^?2SHNT z3i}`Cu6bCJ{rscT&!ca)b(YyyeqKg&Qn}B0#?<JK&*C#bONNb9wcMw&wXhrILZ_Ts z4(U?tIo>j_lMNJFo$EASKR~xntYzTN-E=s2BdWJ*rV#&N_2`o-VoVlO0Rt!1Ck7^3 zx3<a|G_CWUOL6-9W{&C>s`o;0Me8J=WITptgG7FHA+YKEXqg0RU_o=62{sYA%+p5u z5wIdM`fkdu|7D47J|f1C#u=<yZku?eLgp6|{OWyZ6RSZbYazl;EQPHS(lYVJ-}M@% z$Gu?)If9oDX)wn|vA*`0k}zzJme`-g5TFxK#|ufXmprH$v&x&<a|jyu34dFn_3g4? z{p+P>-W8~l$eJ;Gr&=u!)M{l?y}~RVMM12Twu3ekn5J)Nq4!oc6fwFR<z67E^=B~e zfJzQah|l=?Di>|xP?T1#)|JZfrDt+jTMpJ!YT0{UG>hfsXfthmChw&68nM!>%G$mm zb|=W^XNb4884j~$JE&BfnRYkiXv64aNQxnjCbZb|A3yXx+$kmaz}ZI{AVhO&m%)Ld z6|cxbt&Gt`&~9*Mx)<;HZ2O&P7Y%!b;<s97Zdu$ekJu@ZOfd*eyk$e4*E?JsaD+Cc zXg~~%e<+a}jB)gnND||>0eX=PmfKn|D~p+Y41H@M)`ZSfkR%7~(B<g`Cq{L=&Kk|B z^G>9br45<m4VmboHCT^f!JrKC=q9uf2ZnLmvwSSN+^epqMuEv3oH@y<3UBgdqJ=}9 zmhRD+rxtv!eo#alBcx~3k=Srm!A>QPmxoluzn{x9a6-pZ8x*$X_Fgc3059LaQD88y zD#N^Y4Yy$}NK^YPkW$K;zbC15>Tq|1`@n@t`E><zU)j4E=^as)vkZsWL9x_iDrbUo zT7GJwi(2cg>*~6ACjvd#C{x=ao33DdpAB$8Tn?hn2R1Y}TrFX2flaNRN{gg8YBavt zWA7YJtYeS*xt%FH9_BBO53&~d&}SD@HftJ72hkFEU8C5w7WvUa3!1Gc^DZ{e^9bGQ zhZV4p-vk6i)`a$ulM9Xo2GO9eDoB>xOwWIm_(D#m9l(YW#nV(6^k}P$+=cU+CgKFm zi8)$R*P@-Lt`Osqbpys;XPB5O^I~`N``EY7o_8%zWO(|N@mso;@`GnGTEgMo^6Tu< zx1?*Qucu-QVwV)o_I6`7cp@AQPWz>tElEDgC0)L-Y*Xsiu+^)1S)xVLgpt2Et7jqY zWNg;eGAmr+_;Cxozv|I!k*?R4WV(a$*_Xcl(DJ#_@IYY8Gg--#FAA)LV;Gj^@;XMS z#Yk3jOP%wpgb5EQ`KD}`zRH-s5QBfRd>~nL2rBq_^65J>qF_@%YJO_L`X;@cf$yoC z&qBVa=s3IZmrNp)*5Sd}KmpDf2hp~T>s>O$b4Em%%6qvVROzLcVw{!aBpYjuL`|33 z4}_@XgcbCoDot%^Yy}zgvSqrQ2rW{VS%)AGaV^dp;30BK)fUPEBa2SRI_ZV6N5Q#_ z0%U&sCF+e9uhdvEJDBlX-!CjywiCK{l2Y&|`LlgtntV7fqF)MgW3f~DV|;J~)<p3O zG4ciV(~0n|&t)&Wjf~>e`Pk@*1GXdxkXOX)Vb}*>ikX&@Iy+trb;z45@87@SqeA}4 zaazZ%LsIDCohr(NB}6D%C229b6Ln5&63TeaNoVpP`AL#EOz_m>1+RPjlpgPWk(Jz$ zIbQA2HZECD+D0JB;4tyW%=jS?!6aP1hlN%aaQ;7YR{bB}(*yL*p#Qo~|9vI!tK|9L zHjnV|fY`bJk%M!9xmcA=U7RdU-7M|QSw&o3>{+Eu?M$7FTue<^pO||5;Yt)95G5ys z{lETk{w6Q~RaE`|_F%VKbxsiPUjuzOA^%x41L6c~bpGpL5MB^B<gbH)SUEUBpj)lH z%k8lgjhu{ZO<hc#{`@pt>|B($Yg4#5xPNmRp1*rd+`OFs^_sw}9AGdQeEXtYo$PK8 zq-JMrXaC%e)!vC!&eg`n(&1nF{y#e*h?|>|lZ*Q=H3=s-&u>l$ZNbj%UK!5YLC636 zBH6*LDn@Rm4)&IRy4&XV0-6f~`D?2T7boX$O3gb;r+*}gf7_1wXAA1DDv#^#qDl@B zK;Qn$58U4@!R7z~^z8r)YPkl`w*xR}wk;4q-+mW^-XH?#+W{EV;t-&3zl%Yy@&NjF z00#AX9H4K%i-CEe9uiPw+{K`6Q2_yl;Q=scE<F%n7#;xQfc8oN`pCN&2->It5I`IW zz@WzDFWSg|N&dP1q!Rk9F84f*2Y=>>xw1pBDhxrIy@4yG_vxxhVUeSTC1H82t@gdg z{&Bsxl~6#NJeikzMH!-ipx(^$Ib<5<z4ie?nzvogXzBHZ;i!q|K`Z%Vv%{B=qsLcW zs5BJ?N!UlcR7R<alA5i>F(%aka?EVmuoEnXf?kIYuHIHnRoBxwflN8DuB=B(>Z~Aj zBk%j>jShX>&@;9COH;CO;y7xv^t^m&=_@E^KY&{+50fJ-T4m5$s8A)Ijs!nV$uC3v zfr$eO@eO{#fMP>UE&mb*gRcb=C3HoQ<0|{i+Wtn1I)vW>JKs&JV%qL)z3uL3-mJRE zB-gqq&wRvTJSxJ?ydOGm+EX!ti<4j(gPMkVo9}uvIXH5|tuy!{RVVV%=}t^qYZX$5 z^J`CBW=gBHI&OAOikNkMuC88ciTgHB5_snIt5<obO~n<l1ki|~zEk=#ZxLSEkTgkm zRoF7)bwqsvo?+SaE(ISkTsMlJIS4hI!)1y>K72oWuMNw^T8kC1X?&$@BRbo?8d1Cb zK6>#mX=;7DqGSOJ;W>8ts}LM>HY9qFM?5kYZVo@v+CslzV46cBsePGv3hJoqr*_$_ zJPg!Ne!w}H64SkTlFzJ$Z>7KP#q;%nKp}lL_2h`kfZzHHJbxl|N)9;TS`N;Ls3C2o z_3DBC`z59nQ7ULMad>c{RCAM)aKxGvsLOU5mAv~mXX;4?F7OJ-)HteiKe1vd+bO4( z6|s@~QbH6}UQ);2bm`$`G1anMbm}BqFFEHqN_oE{e`Sj;n!zK*Kk~&L!I^=|qa?(; ztdXyc_GbLhTuU&aSis*@rk-@B=S3-AytjxVOH2{|{cghe^njDtTss%9yeE3_Y?E0R z=f$h}Eb?7Wi^}OXC{Jnadt`dPtOcY;STobJ;?dKys=VXX?Mt%8EK-UQFS3%Kdq%d+ zHy&N$@R|SqTRk1y)*ZO`!-!N}*T(D>1;e#bPh%e*4x%$j45Zm@^6YbzW}Mc6i2|xd zyZ{Gk6fYd{$7vm_^!w+Gk6N!BL|i9z&a^c*2=1f4*gGrf`6j@2czS+#3O3^(d9tFc z_G2r+;0Xz~5bJ3m8i6b7^b#?>710ocpf@};EPi)^viDP#&@;Oo$I<h=(it8RUWf^3 z1@bDVOUsYqz&O0G`2DEf4I4ezp0h?J(iH4q<Pk=Ov7V_OvC8gxon*Ud6*GB>JecjX z5EX`lj)r6qyrcaITzMytmdiu@2hHa-n@Xmma9GGc=u}ee@zV7S;V^n4yL%rgUIhh1 z?k}U>2;)6pUhonIfiqq+gfT|<B9SodJwV%=eOf5+Q8rNM5`)i<jW&dr#S-olXPvW# zDU$K#8r?mCh%5f?h&B-JLoyONsa)@U^KPF`4sfz4mpi6nPMT6OO+@lK^=d~bRd@*1 z$j@cD>6NW!Kj}U^96nw*nwFFw0~gsoJkv_?>A1R=idw5A!Rujok6FsZU~<>q!&iRE zk@Syx<_FuqnuJ$J5jG$AokA1K+0Tq`sdm2`g8D_)?OpJ6=7LKyzIz72Ov6;RHX+X_ z>)4m<3SANXdU>o*>Jn9+(OR4H5fz4IW27tVRp#^ZV8iC_0;ZY#Nk`Ii7y`*U-Hb)Z zJ+=iGd%@-75+=7ar>7;^IWRw$%$SCiz=)3y;FaqlSl)Df<LrhhC%xA3GD&zcR%VrG zf#yZ_c6BCM?d6(KMHtcPv+MJF$cwlkXJcX^E&799$C40V=VL*QiU!GPg!EHWiU!oe z4MgK=aefn;+)G8xLgdQsAX$gco-QegMxOQl8v!RV8(!$U(*2g)dS}}5G!%3O71+<l zJW_cCKM_86_O|Y)P{=`JX8vBe1UFvN_CcYZ!QuH?;q#ZP??16}C#X)q8chrhZqj~m z8Ew?XZ+O}e)jVxBb4-UR8MvB|BJ7fpZQuSAjUA?&@zV!rb<Hng_x~An4PXW;=r3jc zAJjE~F{pn`{^EGNO%?yCO!}LKz(1P+f2E55*na-+|KBg__J1vU{*yh=v{7YfpM<f+ zFR#NG@u-q!p0FlWlH5mN{(u**5?4$qjk|xQSEXf^JlTzc)K`Pt#vVJ5Y0S=4wjbF! zp`_3+eBLFB?OAdVY3+W(Qh11>a82|I!+If?uW=*!o!tTFa~ki|(2Dd*$EY<P*NNxO zjU_S)Mn#$nLK^9ell-PH6JM9hw+D@hAY;&)T2ADC)yXbSx3n@@jJ$lWGbH5?3-g4I znFCrN{UXf&-wCAuGv71_Ak7E;*ILNmf7bwY{-2Y8B>CUTTZI@Ww25dSfI|NdxnHam zw^7N>^`8qEuK!*V1L6S;H30#%`@fvyZ}oHl?fzX1x}FZ8-3NSXsCqhpb{}v^sJbkG zcK<F0)gcW6X!ija)D|2-yMGsh>W~HjwEF-IYHa|}?%&10P-_E#b{~L2Tc`=*{auuR z!O$9hyuXW*+h6Pe3=Ejb2*9AdNia~PdKZJX+z0$i<M*Gxm$|vXf25R>ah~SFZ$8p+ zaLNVa!1*I2&8BzA#aT`jjy>gH>V>7I3MCFxt<yYc*@J%|9az3iOX%q3-hb94_j%6a z!`vLmZ`|WEn@{w`w`k(CxQNU5ht;!bRc99(yI{Yj6J-NG`RiBawD^znB054_9=E>9 zkU~YwA=@3N-(z)eNb1(F^7X7T4jh?Z)hUhgnfx|0nsg#H)XTtRnvT*Xs@UkehN$FL zb+f5S3ulXK%Suaq@Qey2GD7WBG6!+v_0GkIlYzO5^#KwA_dUm-G-Q{XD!7;QLbR6K zeusO_iY@z^xB<Ab!$U&u5r+pkhjy?*88`Ctwn!~G6kUNPZ(58|-LqjmLSH?drJ-{$ zqNdUHFSiiw_>rjn;RaldFcAjZhV60~pRc_p<hv6Zd=V%W4Bm?O8It#rjN{M_PMV_D zb)gic)y@)uKX@LC)Sn`uXfOcF^a}eFX5e$^i9Xe4EGKM<xD|2T_0?rQPQg1GLmm?j z*%?HShYh<{_dz&4^+ViBil^kWF71VWJWNON2;HY>zG;``iWd@O@h8=mSi_qBgqD=t z14DVB(Lfh6$a}Sdge?SZQ`#uX%=_@k#lrOR<?s7F&3BHyEE6Cek1O51rjioMeK(&F z;g=`<$hAg##-j0~ppuIlEq)5@QCcs5zk>(1GK6-7*sPo>jHa~%*Mb5P5YmjJ6Lu`} z#e%Aswm-ydkyRQsC{Tt`Z!zlOvjCwYNbUh|!Sgmw;a&;23Ad(quHph_A{A97@3=W+ z#N)lQEMp_i9n2LMs1e;`Q{u|vVarRp*oLPvYum>|USPfm&*4no^x~~U!w_3lX=Nse zWk;|}B1^iyq4tYiQGoG7Fj(*4;<gIwU)GrY)`Vcfetpp-_sUj9ZJ^gFqt^1gf1)zE za{wEg^hdi%o6*M(I}rjGDk)F8e#zmt_Sclm$0dq-vx!k7t>m(iyI=O{1So$fNi`Z0 zk!Ucu3n+glozO$33cxFhz#$G7;UWqDGSeHVJ7(b&M4*u#8zbf2o5<*js6N`nggrI@ zZ}r(!O^g4)W-a@|M<u-zJ2u#CQ8e{+#-@;nNMD9FLZ{17;VHtfsNy_zP@s-{v(zl@ zk7NOdt?DGfLjA*J6oy<P8^L~fzrdF+bUu)vk6O6FbZxE3?nOdj++##E#$P3*kiG|C zzovasLBF3Rz(+$F^`H$aBU0SxojFAgAM?o?aqkJya??8`QfxCH2>mN`VO$rK{Ll?m z_4}D@-;@@x0}qP_@$b3jOl=wko*MrgpBOS_dS0?uG&{tm`_TPoVcQr!^3Ud*qvFj9 zN0dzS$@TfuK9}Th5#o%sb{7+yYuu4M2FI>6V;0*-pIrKFpCg<jla4hLml&teV@K@7 zj^7^=+&&E#0K<(1mF?B)bDqKE2sEd*CF`bj8q+@|?MM#C#K+Y^m?}=2jq>o`4au`= zyI%?R3|xO5o6noXY6m)~?QMk5<t|srQe`{21{qOd6+Ql;iV^W}-sGC(G_@iVr_)Rd zEJJf5US<)2q4FSFEroweer^JjNt(#i{HRos{XQ0*iaT1vu(|;;Zs$nd-g;YVn4`wR z#y9kku~z%XkJp*U*AL^TK9A?_u0BJMRIYr(ky4eNvO;NyLOb|W;=$Lf<glp95zR;X zUr3BDG*u!HYi5(Us18V`z_F7L-AW|pi`?LxUX)xqUGCSGkudj~nCd=oog?E@W0_u! zzaMi*Gzacift<+G^UQnS|CCyU{@R?_PDRvSg^#N*5UcP;*!VcpY5Ly$l86jHY4H<+ zbw;diS#nD0ID@yl#ZJ=1#cgEHpX)26%ieU8Ew|Smu%;HydaVtZv`Ja~NDff|(WeuT zZ(YAk+nYS(a!sJO3F{<T<Xez$%}F~wlS269i$G58X<R*1X*<$9+C|U=cOxptY3J1m z-a_p6EyO3==!|Mx`qovghQwf6bMblk^$m-)-W)21{<7Dbv|aS;p0%ACnhOac?}^1W zv1f{E?qtf%U1xH(oDHOnzCw2Us1<uQu*8#IJ@rq5DwNBULyjFPiNB`XSM=Zaxfs09 zTVT{HWZ>z*Jrm*5Uq-0u7}@C*Ppr|P;p}OIor0d=8#ObvSe?VSzg3;uX2SAt_PCJ3 zQt6p$UPkD=wt=Q0Z`*VE%BcucnXKv0h3PDrSKe+(&Nri|sR9YZeyv#%{TXP9VA)AX z{r0`aO7XgzrRA_z6Ou<B6gtHy^3pQPSLT)ES3!Dvn_X_%j5HVun52A+1Py_mN27R@ zt?Y8=s`-OR%_OFTyA20}8SnY$HrqYken8d~*6U0ck4~CTt2%3efrrT+x%vbpsR#dJ z!1y0g9fAQa4KVwkjR*t-j2gd?x7J|@G<iE1;MDk24%nrUx>dUIa&z!<|5;Ori{meW z|7|W00fYZ@w}a=-IHi9iM1Nnx{-bQYEf&D+fD#rA@P7RAvH#B34F-5W?qX1j1u($- z0eH#KiUlyh`vEv4wCis$!259*gSvSJ4DfycFixmX`;US5cfM{g!21EfpcM;XfcFD{ zu|rAU!2s{aT@1nl4Fh;T02tIm0=yr0F)%lj-U=At{kV%kmBN7m-VXo<O$rAFcs~H4 z46WS+26#UJ7_?cEV1V}nfI-u=fuVXocp!f=yy=}r@9W#)O<T;GkCjSs?)f8#To8N+ zWtM*!tNi$>w?Bi0c#=4iu4HD5!ZRAwum=i>{r4o`B6r6>Tyjb~)VLq`$^|x<i3Cz> z&ch(1=D-eGDE4>y9#~blA4DP1PHYoeW<M^1eL0t$9gLiYw_U4a7;GehIhfYJ$mQ*W zy{0}UQm>06>G<Q+nsv}tDPiF7Xcc~fW`c+of#Y6LTQhff%)-iQ|KbjkK%Gtuk7P0u z@l|9XgAv1%p!*B2ENe1JTa2I41=aL{Pbf|iQTw~TFb;k?u@~~gb=8W0z8OQfhg-o} zW<Hl(Ge#*Hfp@kMY0+7@+oxNM-8e(MnL)Vn1uUZUl-f?H8Q0eL$5JES`|Yy*dpKdW zRS24kPwTu%!#ri&8Is<<5;yW1!r~BUwI+~#)21syR1hx#gPDr}HeKYhskimTm!l!A zqJJTntETXA$C|lKEe?5$xs9RF(q{0v!+=-c*Q%@@o@(A6$yAlXHLuuhleqCt_1$j@ z4+sjv`y~;y<m37E#V<GA-?1|Jc&gAi%Q58Fz?eJi`-%i%%}*y$ifZBN&Ksm6Py|g6 z@=QE}u(7)j29CgetRC#{oXW%POqJQk8e^BoDH9kDD0~H1pc2vT0#c+qQZ;d0eR|K` zCw?bq%F+Ut&HH*@BK6aAhJvOZjCg@Y{O&y1bNR$_B-xa++~YXeXX1=mbgtD%isBYd z38Pk*h{9Y__b)Spu>^M}XeH{_b#Gn_K;plsL%y_=1zLO#3_n;ZutqUqkg^a);@ixj zNYwZ75Uwz(<nz``D9Cv^$ze@KUoGK1xckvz25y30tNMZGJx9^fuPWEA!sA?Y9~AL+ z+O@d2eKVCU9Ax<9M?O>uglq4v4h9*Ujw63LrXcI|wmGfhdC+;vKyS7-6bfE!^(M>s z`f1K|gnYW{xJeB`hMMGED+Lnmk;sKhOyYGSJG~xpAv;-<9(u}tnmB`zAm-21Iqubu z%@<C>GGo;c(j_&ms?}#oyKgU+Nydj%U)bsrLo$;u)N-s0>vAo}j<U=q4(6_SP)@ky z+L;C$NVHAK`p7{axcWG%rbU;=dDhK?Q`A!UC#Uw)WUjQjSlaE{RmLm37RR*5sP-b5 z6~X&aSOdw0D2H6JgpQA`F-pF;8j&h4o`hF}{8Osu#$Gfg!4LU9AP(D4_;Ix)K>h5d zdlOD-w4WB;9%<$nQy10>6>%zB)br`GO8jC3?~m*-4ecoydQ6mUpQU?4VKYzncX)Vq zF)}-XKoU>+csMUG9rR_78b1C^+ceQwexV=xyr}U0!x*$lU89bJct2~)lxuVGH<-?- z=ZL|ggpa&m-OFRvi8OaCijpl(?S+K3dL3=3rfjs!crb_M2~tGAz2dsEw0|zF!|+9l z8Lp7b<*ROgKmv~*(vv7DM(>Zd#>q6<s#v)U1v>;$jzJNu3GQQ&k7i0-hD}H+N{)vc zCuP@eh-x@oZQJZALLL~Mcti~mndY<g1;C?h9uX3?tTMn#wED*h(!0FZk>w{_$mTdU z4sAbBRZ~wyKn>$vZbg?gf8_YYr;;8X1zbC;>#Bp>U`g#wi(5>v8m1bQ4EIWJCi-Sf zAK~D1wGUG=wG4+Svnj;?o5pAudx)H~Hg0KyEzQqOPc70-j*#7x%2g1}QemBD{$Ytt zczN98rRqcn<C-}BmTQcXTuRP4zK=%8wGR$(TPtxzVT3Z}3eWY+2E;8)WqcDn#`&B? zLp)5Fkb=>AlswOnq~AJ>XjMJOKXgw2^spm~XiY*dQeY16+Y`2(Ab7nQ)y&GSM9TS{ zzH)B$H)pv*8ge;P@!u^+vh&^-9OU$1bsg6+$rg3C7BIT<hX4545%AX0CtiCm@mZ$A zXwz#aFBzqZ`($4YM7NLflCb;YHXhQJC&h$X2zufKFfSfc=bDE*mSM*`&d;J0OPS)J zB^v}3R2@ie;A@Cw3`;*JR*ge!R(|>s5AQI3TQ|e?*>;v3J%aumA^&7@#Xzyy_pvoA zQIaSQaWG}a=j1}`Zsm#>fgln_Ip)<o57(G7BQ2xlk<BEv>OKkwHrKE67gB@yZDuO2 zk_#)5(>q4h9yjq<pJ$(hFxn>DpLDc+>j?Plm}Z@{+gTP@YFk&QfmPb~Nxjbr?WOfo ztJbfzI?)0XSd036_uc65CEuSPh{t~>#NHfkDdiiQ`6zhk;ho)J>29gc3jgJqS>@83 zjfOW|7{U{l&p!C67s)7)MWk6wa64nZ8}Kx}c0&%o%%77_-L5Oq84p*-k%(<BiKtWs zZ@!d~`j~J|ky03sH)XP<S55RZq5GL@*_#8a(*g|NT{l@C^5-2xXJ(!f<nJGNlkO+U z=@YJ1*JeF+By*5a{_v=cg(rYNP{y9_(A?fe9j}F7z>9?;QCQ5!NwIx1CEK5DtGXpg zupMFPN6JWc3nCFrm1E!<v=Zt6lV9k6r$ho+gus7j5duTC2=U$u%Q)G2*#B)Xtf-O8 zGYeKV2NNR~(?1lr@!YysL6o;;5eW33YZ);6oyNyMQlY<ZeDM7Dj4Ch~Fh~Fl7+wC$ z8~MA&2N+=Mxr;%sWdOFGU$DPxe1HMA9>5`?)-nKF4*-L9T@MD>dhTLS_tk>|wjKZm z^=SZG&s_`xwcrBSdH@*orvb`@yBM?~@L+(g=Pm|@THXO{J$Eq>)O;Uc>j7ZUJY(Qr zY(4+#VDS9OWTi%pe@<4~$LSMCfrV=nm<o;K8!04D+j-jE3;$4rKqc&(V!Y|uR>OSY zbJ=QoTLTt!UDi{l)Aaild+(oT*`@fj)Ffw2BtGM>?ylW=`JFYss+yH%Yevcr%&)Bz z@SXy>dY;O)V1P_ga4xEPf2?Um5ji4p-_NCTx93u>ky*_Mxq>(DJC#QClPcyof$70! ziL5qy=OM-=RnThS(t3~tZJNZ~`?n~$bv4Os#qB%TH}%z9G9*Z+>F28IIZbU7L}Ehv z_tVYWpH$Pg+nMmOyteG#d+cdJ9*AfAK}c)fb(WHY1P$V1(aPJtPANhEF8$G=fSTi6 zK{lxP(Vle5;3_K~ZLfMSh;>xf@1)l;uP>76m=Mb@5KBJM!*jyS{TRClx!`94E!&Wo z>B?(8-3}eKvAqXNf~g6epXpz|s}EAI%6P&=)|R6h50)|(_=@!XP!W5-tXHEDl}<*+ z$KVHDFH;+qBe9gk3W2BOp4z#NvmdwRsuB*!UNMVb`7@=K+JmsdxmBhlSy=K-T{VIj z$8q{1{hn^txGMS9(UW<qy|JK|zG~4-9uE{Z-0g%e?P5RTIC2#SAlIB)e~cRO5dtNN zwiMEgJOX7{T{1RY3yhTEF|0;_f))uWYpd)GwQ0WP_Y@nJ%Ha5GVU~OmN1wY~rt005 zYb1?>HPjL$aY&6%GuOkWaYBwcY2#w`D!>j>R#hJ-A5;^A<xobt_PsHr4XwM0xlUN= z-hM>F{h&~i*3;PuRQlG?Q-zA**@tvAwspDA^b<kl$A^*}HCriSV}<E>8J~1#^h<qh z8L_j?Tr`D)L~^EIIXVcGyKl~@;q_7GV3%1QVXw+gfc8m5eKDF`L|75_Nw(@Y=e<Ya zJ$)K7(Kq^M@gqMpD;;buzb{=<X;~|<6}~rm@Jf_GNVs?W!s~Sgh4my((OS3m&G;us z&J#K7>4RY99HVC42WUMy*a*RtKZ3`%U%m?6dg+71PayL~K3ug~1+iKp4VgjvQP&0b zGt840{ey4EifcZPZgpWrt_B;PtFXr5#PO=uXLHc!TdF?eEiOwgJ&^7rvXTAnoHbr< z9{8Ymw14UCl(!p_{zKbCg9I*kZyI|M<Q><(%Vm4#c&yN>jud2*1^DD2F|<s2qmAL+ z;YG?jjPfH|*b2qdj0{_GI^<edUtS~S+$)?X`{odG&CqerohWAequ%^5zWN5N*t6On zMA6>mfz$g4raC`sK4We4Nx!J8L0*x&GVH5VWO}=RXMR~V?BJ+Vix1xlBI=_Qc<UFZ zl6HJale*1xz^%wNS!Fzd@{{*fn14%PA^#X#07HFx>&CL@B>cO%Ko0%Hmpq*&Su%|k zUT@T^zT0_0@>Ey`D`Hlz5ijvgXqJ5LO&g~A)U$k_>z%q<R`t~kJAR{O!gL0o>jR4` z$TaPE(Gt*u?YG}HZ~npm5y$}}pGY6xLkX#!Az#ccPSy0Gl|2NVoI!sGx9W5po>6!T z<NTGB>)Qr~6$cGH7$==ifgfM!tm`MVbVO5dj>tL29Bcb>Cbt>XTBcH*Wf(NDPIg82 zo__4CNVIGr*^SpM_y8XH`Q7DP(ePQjuN2{`9!e>!oiSQE-E;@#<Jp~I@f3zb79S8z zY|W#sidZS12eK+b{ab8=+<ut(Dq$DAfy+CFoN+fOG|SQ9X{ZLT>wUA%^%u9+3|hQX zPuE8L1()o^IhL;#2)W_ua2G4%>b6t{SDMZ@S9lM{^+cqm`Gn=|C4LN<a2?L8ysRM- zb1kVqs~nLHr*x!ZVOS*-fRo7CIH|8mh16nGYFy@M?^x>zZFA0?8nszYRA!`;zKRL^ zBCzgaoxLy|980_3U~AC58gox!375`JgKM2)$E$qx9q&ulNKH&`n~%<^)Vvs%{NjSF z3EFDoATf3MR}voKFC9;VU*>g2Kfh9C&UREu_=;MB*6vm7xs7FMTi@l}SkG#GEUDsD z;W+BL7qP=3Goqbk3U605`$Hx%3Eu4VibV1ew;`mVkzvcgR0GHVBCd01(C~7`&2oKG z>IcmIpPkK@s}sym;vTYy#6R(}wq)fpP~IA=kKpTZW%7Ly-Pf};Q=nc^l^j68i&+=Z zzp{Ep?jo)yLhObip}>ZJ;mHm8($i@eS-fU3Z25uOTif)g^LZ5nds=OxkK(l&joc(3 zTeaMH&WG?T!*|Rl2)LbN4H;FraN^()yxQ;nx&cmzrCq34WaUE(OEOh1Na@?wO<(&h z{F!>;kp|u+QrMO}7(G-xDK8iPG`?3-k6@t3I&g`O$ZVPG7j!5LnWY>tjb-^(f@s`S z(=yl5P(BqUD3aVk+eX#WVdz?@c_5fxkCA<YV+e!&WPlM`(*BFd^?#np9}Mufg8y)} z0~oLr;*ZI@3-7`I=9YlgKlo?Q;IEvU6PR=VGH3Q*5;)KwN#NQr1BLI2?_G!S2BJP` z`1ny*4RWwK8-Xka!=Z#4v%aQtGF+LGGLCZ`zZ)IsOV<Wt%#K#Zz#RUjAZjdNIO7GS z%kn{jplp-YQzh!}oL})s)y49>+`lqT>9Q>i%kMi<e{oW6NpsT;S$h^WxR5QdAf(vA zGiIMUt-NeQW~Yj5I~=!MXA~}L9`eqi@K8D*va4Y&K>>>dvtiG$11+F_@nZeISHFP) z+b6((dAj~2Kmg^!ACrKJ;or&IvW6S#T|Zz6#UFCNZlU-`G0J)CA>!p==lZu|RLtJa z&h**spa@n)dwUy8JM%yD60vho-p+S|K)5JD;Q#C;0&_vDjJa+rV_tR;_rD!R+|t>_ z$<o;M){Ca<WMt=T^w-J$&@9Kr^VgAX&2qm#60}Jg|JRT7*Gd--5aq3$4+Mhz=Oc06 z{T=dev!$Wc?cje~lMCho%+&w`%uK(8&fnJU05j8F40_!TFf#!H6>8lMFf#!T2~DsF z2AG-dVo(K(V1StkfI$;1f&pfxyBJi#A{bz10$|WayMX~_rn?x_-7H{$nF)YFeUpGe z?*I(iv}Z72&N~2uHj)nv81sG?13^C|v_2gt&z~$0OV{Xko94ovIbyEOcVa<+L492B z%u*Do;GEjAxj{VumrEInDp7)9N^$LjOyp1fklu&IMiGJCnIqaugupInTu7+g;VnFY zx{<ILNnylGt+sY~#I*SVko$GwOBP+bKmo{zNAi9$zGDvqjU@r=*+*+qMNuOq)WQC> zd1sfJxR?5_MjUD2HcOXru1KcK65HeL{zKRZP?);bQ_W1$>3#|9Q1|L9J|`Ijz8A4y zlV7nseL)E+vqOD0X6|y<zw>hCn!e)17ZuwV)BOj`baP02{(>`6oB+n$%dD0m2l9_B zur%?@j<r}sD>qW)0;1T}W|^(ia5vpX>1fK!3+bl*t>Vk~LrjFDMFIjs107(yUQ^K$ z=qxB+oBE*cCy1gv``GLJnl#NXSdJ1zf|iN>g^b~>-T&ehtI9D7Tci}xXOZBZ2tiVe z%|H$`&RSMolmUz9iXy?n5oYI)kOUmpsP2JbS1lZkur&C{7-fi_I3BDO>-oIktnm0e zT%1-Wpo~m3ENwY@OfvTbyk9IZ9W*ELt;Q_EkuPejyhed~c<1XB!~HJ;YIdK9JvAHa zDmo!Amx)-Mk*M<Ea863TbK1_>DL9YzsJ$Qi7#?(8>Zv@#@(hQ=?6pOm%8z+L`Y#nk z0!if}gUmJGs5Bcre!7GCbje1onEUaXr;>S8t15C7>NUI?_`;{Yz!@~dW!KLzSI(aD z3v=;Z5{op{MSO7{-IH8^iLqT1^|eTI9km(QBFi%w*UPvXqYA333Zle%S<h53@Wp?> zID-@CguiCr=Jd3kzp^5U-n$}6ZKRzd#K`a6<)%MoxzZ_T+m+Z=6__toe7|cMMl7*l z_~Kz6o2mTVd|GuoPE6K*??N!kSd|wM3)WXM<duTgv;>4NSm{*v@vV0sJr#92`<UFt zsvdu-`L&~{^)ZEN5!Py@LZ5H}Z>^-&aZ~bZ0mk5GU3)cDrrRYLZOxrdlOgz*_d?1` z=gA*i^9T}kfd>L+c|UekX3U-tC1o5t4%a_oo}6wDRNZ)x=~!aLWm}Wf+-bC{d7(XO zv09wa-`~(VP+W8`arU8I(9%-3fu3FD%ceCv6pf0<gvgodVp_GGCF9NJFE<fCSf_U_ zLe!|dlC&cN?AN*;c|RaH&akOukt$O5nmkr}Q-<<Tv{gkFOu|cu_JG^W3jU2pnN4Cv zphOhnbi!V`(zDCYb39$g5uCeYIR@X)g?%1^oVXUz)QF?bd#%}>B~0#9S6yJQAx&vf z6s~Y7#R<?$@XfMYgoyAYBt&2(G=7xZ*XMFVmte2X#LL{zN$%IaDD<{#uooj3EV3jW zOwY*6Cg{J;jl~^$&gUw0fPR+p*;-3=CqUzAO0S4mj*N8raxahVSNp7?u5gj3<v)o! zjNnat$arg09efLV(GByZ=5v+xEJ1$fWT!+93)wLtG6&aD%U_PRU;7!q4sCQO_1jKd zLv3kwr=!UXx@QIEyPo$TA^)hu)%S`3(o3>-Rx(#*{k=lDK)`C{-f^u0C;udjPMSey zg6;tE4+Z1LE2U!7Cr)akYJRD0{XIBQ8((LijB^(>A-zu+M;(!fbbRSklwYbSZ2vt0 zQA<?Qh0yKltr&V^`JrspffKFNh39CO`$O3nC(IB{V;*+{tc!~Q5dqJY<FlZR6(;08 z+Z_^m{<x|7VIPh6Q6Y`U_%yyFH-UzTxbYhSb8~4$aAeyHo(nR`UT`mn5w99cn48*B znZc8Ylp#_T+U7+Wm7h*~ZLtXEzm}@ue7q6k=xT2|eqjt*-nCEHVdK;g--;iaOnrS) zI?S;3(07T)RHHsPW@=l-aqNbEQf)_RDfh-jQT~PPCkFCeq#NT+b>k8Sep07{c{}<V z@QAP6E9sFRmk{nVX1W=p0%MvdE4zgnZaGcoKXZ0Ti;SCPkS4W7C=ygC5G&u$-Rw;a z<k8{Prym94vkY`gUBxyX5q^HS)7}k7YJe4mEJmX#EVN#Je5uFv9J45kF|SlCG37f= ztE9)bDTDHTGi<5n&ByMk;x=@~Kg=6;2a}H)!m-|Ay}~S9L>1-Wf+zTqf*z65iSk(g zn|W(3O>Gw?7n=9%&7)QrC3Qg~XcY?g|GYjGU<C-6`wweXz!s2S$lLL^U}$Rzz<@O% zf69RYskRgc_*TjXVgIugE!?-AFEHip^ja{-Z?foL4NCw1G){KVAJ4*rK>m6f$8V-2 zfPa}YaGSILS32|ebwB67<?KA1fSes*cKYQV|E+Eiu#V&|20dp7Sekyp{#G{#urvV< z3AOnGurvWMsL40L(sUQ&gf^iX46rl-Flfu9!2nCsT@30xY%svm1i+wH2mnjdUF<fT zp<us@lG~dsDA@0!1PoQ&2(UEW#X!(DL4g65CIH3_<!KOrr3rvRTf+zeSegJBwCytx z_TNPb2-@gF2w=880E1T9K>)M$0Y9eD+QyJyRNMc38Tcn%%k+OtsNT}pM=_;Ef|=Xt zEt`2NFhC3b`jr3K8jMm*a6I+>*I}>SF6J6q;k<j@USAjnEE|_y?$lth+jD!JU%(%^ z4MceKr71;waxCe;cKnc7v9mpDb$ZCX%VA%YQIL6)?uja(vf3S5!`B)$6LEo$;H3HC zONEzH6JfXdm_C<5`70GCy@Z0#I%)|6S4*3i_@FQn;xnz+blI-1U>YSJ1E18H($@Hy zh!;5ubxCbMThSML29@o5afLu`P5u@7gSF3*b%Z<uvN~speTOH!wr2eDXC?Q}7J2sL zdiX!L8aJ?-Q4AFkJ(~Z<gD9jOQUw2DS7x>1{5A6YC#y`Q!yN|FYqHl?;Vs-%7u43r zOz<O>OxM<!MX@TYDyf#<yS-LyTfE_+>1^->*c?R&nRsX3*el#kVLfG5Bvq`RFN2HQ z%VLnVs^OG$t<oxSV9|SL2HskKuM~0i{*GYIi7QcfS=EF;f6SW~+jW!qDu=wzVx_cX zbj~Tyz(gGK!${}8gsYveqoc_yV;h0!$T_9qAe6^(%E(piUct)vSOv%o10zrKBD=r> z7gY0ZrZeBLI4sX{CHDB~zh1ks75&g{@(cQq&i|>+SD?hn{Jy$+;X7^eM|n0h+D6{` zO+%V1bvE1Q+0Fq|X)4VWZ~c(zFB#mxm6H;sGjF>}`RpYIvE<##<Et3Z#KPijmX#9I zzO<KA>Uj3cqU;lfp5j~Sg<njke+_0)JZ#jk$h+}Ww0)VQTD7D%6IR8f`j%U=qdW2~ zRdWAxg0Jz7C8K8aFSjeoEXZCp*&e<f!XXheq}jLVc>gIl@c!U_<WKy$AJ5Ob{9^3$ zB6!D3Y)wN!Qc5*M70JcJol{f{%_!kjN{TyHjy#$d5A(5Cc4^(X4kYR}V7I>w<Bty4 zV(|<}>)Yl>XX)*>m)ATHm;b@VQL9ixi1r52x|{rHh|ILKIyI50dxlQR!X_hk<jSHX z&d8Cqdojw_@cwpX=JEu&x4@Pay=q<SiT3Izl5{Gg;wM{D0tPN~7)c8|G5r~~Q7Ium zosP&VK4q1dEF2|7&@-YQE7+tIXz1Cv%RZ{8Om|GBr<1){b9a&uu@{B2<R#?DGznpp z<oSU4Qss>c>bNH_?_0O%L%927-^^5cDpuK$3w$O_Z1H%I@K|VQl5+VvtiSdYFuinr z<=nkg-S;+kPY~s3nMGwZWKFmh>7lWqS5Rbkp`3{i;yQKOt7M-nh4PI)O->okcG-6W z<TP0r?$SmN&KLa8h7}TC@BfT{{dnr)4I3fdr#!pImM#T0gKF1F??tj{%SGC*r%RgG z3FE%`;#N4~tuwv23EP;Sc>Lyb*?#WFpnFIU*WouXQFdUJ2=N8aMeqYzj_NX|wx{H6 z^Nb$7YJcDxvL5u2bmDXviLYZ_!WTcE$HLg5j3%1;9=r**Hu2lIMn<Ff88ik{O5Tiv zz!*K{dE*CS*_cIzKD54t_)&7Ev00KiX<-yq;3t|9b2+)Z=!D52as@u)h;E^b%6kJ} zyIHkXiv%#cmMDX(?)RO7bzn)Fgr3{VRmtMBQ;mH=ms+i0Vp$rS;nBk9k=cCUuLmN@ z-=GN+QwohN{ZgG;Y^K;&B=ziYTXn?EP$&F}M>R^kp?Au3>1GHPk-te<m0Jqah9PNZ zQ2PLtgZs35<Nb$_4M$B}6rK3`k1V?7O2*x7W(FDW_t3&K8<dDyzt-+iBo2=6+1UjQ zaXhT?({J+m+2GTYxV_ld#{0czLNPq&Lo|W50tlab?I5C!3p+Tlf>m{Q<%I>w9+OZ{ z!vLQYcT*H!<QXbc?3_2N_vHq~`_xOvduy=IKYu_%u{0KnZhi{Uymvj-g*o?ly;$zE zJ0;f9%kvM~OHS_&4ZNRQzStuj58z-JG2p|47c~|()C#23HOwr8|2&f4-e`|Z@C5T% z+DqbWxjM`FoYH(EzV^GCi5HepkT}Xk`lye)xKv|pn}I<;UF+kS>dJm4H?4}Bk6M;= zZjcRk78jbXKv+`=bCV^yK*uJuE6N)?%Yo!4Ic;@IeU+`lklKP`%gv7H0!;Kc3I*~T z)y;@X9(cmI-O+AvJ&U-{3SLn)pM{K<M^F^xopQBwf&yVtHnUj&H*-gV$o`{aD}?t) zLa<0Mq`ax@P)a1oF9xCi5hW4?u<ix&mmBH#B@zU%@#Potc8D)GFSK+5VEg$q4*bh( zgxfNL`!`qrT>m{m1H!>^w~T-Q3_-t~<L|EiApk?rT?}d&0Rb3-e!>3k>K_6y1OW~S zH5&pLf&dt_R2u>?1OYH;`_&-;L(p9es@VwwFa!ZGXw?S<U<kU4L7<HRfB+0Z01R4T z4gnZ~02l~blmHAt0E``4&I~XF-NkMjR#33tMF|+%v^xmE5Cp)W4PJ+UeitQB`x6k* z@1g_*ZQ30K1Z{Ub*B|YUkJp&9pXS2$Ju{#>4rR5H%=N7iE92@7LG0y%uyRpO!qbdY zE6cb@Flyagl6&N{@X8N0(Z)+W*lXTvZcv%GHKT9QN1l}&fctQ4*1YB=)7l6z*Jn1{ znp|7iUM5^coOKfH7r5p-q9zy?IEE9-mf3t{%~O?f{_Uk4;=82i3R0)~l?M4r{l^9f z97nxxY)F(`3T(bzWvw6*VR%=P1Veg2wq71wG>!rWvx8rf=D(N`<l~&AB(={Cp~oe! zrqrM)laS8M<~rk~_C`9_A)7bS9w66LDs&t*j)XBwjF(?$j4viOGMdPFD4~0{)HAQs zYwEQwzI#L=e!1#)Bhpaz9K<=MQuzR}s~&^M_<CvEyV+1n^2^T~my@*u4{4cZL#}To zo7CZAsk~tBW#vP)Nt@MhcEjMMmV^WN@tMTuwM<)j53RnsV2Y7?VUIw<@Pe^vn%A(> zOZM(}zG5d?Lx!;s2>3}ynca#j<0I6aop>ZbsXRyex?IVJAB&oLf6@bAODMrtTDpz2 z=~ZvWjE0Db@e4LD(`OM2?r-+pAB8=#msM*S89blReafSoQp;?VfpgHrW`u(WA&HeI zq4e%S>w^;-JD7_h-<ApWX3+SgElMh<1v~u0S6T)(WunUGYp+}8#qtcKJUPDa#sn++ zY?^@#h5RQS3qoW^R;{Da2x)n-^J^s`v(Vn76?IDbDA81U5km?8biIQRd(7f~VdmE4 z=l}w~BC5&PFbtkCQ{giDv=E{QV{Nitq@GTmft^CZpH=JCPNwgL>?HCu9y3yz5v(nj zsp=Tb!J)6#l*4u&iS9`gZLe2%Wgs54VeNa0;!?QFg-*nyMMb4l!NHg@*nRVti<>R- zz%NHNK@M24jNy3~;cTsslAom^tDT#cyQv{<i1rRGDV6WWoUgy)^Cty&rB`}I&AxT% zy6D-_I7JsL)K6ix9NZAv{7))${UNA}+sIA<5-dbcZJ{4Df@IG?;Iia<J2oMu2=huw zk(24L?WScC@J_aBbCXLdQPcym3-^f(`CRE5<(Wh$a~P`<d^qvp-u7`aF*<SD!y}V^ zKdR!8bbpcWjU#Ie%f!N;R6egBidy%uwQc9>)n~gN1D#4@Vl#RhNeCj$Px{X&jQ-P) zCq1iQsuoAhsZribGZtI;m@!Dei!9srR#whhMgac?LQ_K(j)l;KLi8<^mP~AyHJOL} zE6+5);A$4Px)Fadd8rMCR?8lL9tEsk*z9$+FYFTn;V&T@(V>oW-L)Z|D8V9NPj#9L zGeoVSfd2Ynld*@1FQy8fdv<=LG*!&)EBW+%f~mgQc0YyU6;XaNZ18%YFDoy$V>0jY z@{Hj25C1OO+9A;cy!Ds{@`t&50yYB?A*|bl$b{WB>?9I{Rxd<QyD%r<D-_~?K+ubh zB;|=Q=4TmBIkAf~x9I(k44lu6{GvrINCz((o)PN3bVNZZo8fy%Xr84I>*OUOj<4@u zU!4HUw@8Ms=W<=_4!?MMqOG3bt-4nfb1#nMsWVQnB^@WYq7~-!hJJKzM|-kYRGnf# z1s;C7TLU?nT_F>TeW;=fK3FZUtdtpb)}LdO^d0VYHMxC5`8x9~^@BOt_<?4=Ql3{C z%p6bg=prBV?V_qZj^OI1i*K5>z6sW>OOZKg$gtrL2GKk}t+HX!E43JNBFlJRkKaUG zi&(=4W=+k?*ixV1D4RE4mK2^EU(wO)>Xe66oAf9lx~{o}I3OHYEcghvboExc;U(<A zN3K6Gy&NF;I*O+9q%M9sG*@?P=m|HoLlwQP>~N+F-Wm>_P1pm7pNjMGJ>;I;P!S|U z3x+Egwn`QifqPnFQvBjS?jr`XlXrSyq^H{yY<?!rK%zHn_4ru=H?Om88X6rzB=l0t zsGs8dtM9W3di~S%;-8*AiQH=GAs7~Tq`(p)>ya<Op_AD>QD*d`xvuM5ujIuub-!*| zLiA|wRNb>FA0c`T(*Voj%=y<-a@&OaJ9!$9>k_wiW3jSW9hUFWmgur!+Kvygeg1Am z(05al6pt~a?YzarMM#b>dS83kDDO>5kiR}Fq&i6-T|?PQf9lNc^-#jT`B$6bO;WVs z00S-dMhS{|3yQ)yZZ`eU&lzmyKT+9X;(3{>p=I;GxM2RTX7m3$2|O5(pn(5u?L7qG zS^0(ht5?AeEw=%fR{oR&4h8>5*8$AQ{%2C5+ri8rp1;}-5HRn5Y&$@HnG>K$`OkFY z@7oUlXf^y*FMzoK^#Z^K^UKHnyBmE7zy<@rpxx+005+Jr7$>xCf)IcW27p1J<(&W< z3;=_AR|~Mg+{GZ!22Vo(HW&cL4lNZ2*kJBrP<QD-05%u^#trppfaLft2F=nB0c^Jc zU{K2pz;+t|28Q~y-$lvoum&IoQ2zojXnRm00O{{t3<Rz31L6E#lz^a(Vt{b|E=q2v z)I-637bVck49?$0$?e`YDA@0!<aT*16zq3V!U6R*03eVBU_4Nt_PZ$IfLc}lB9Hx7 z<puc@fpz@9j9`XW;^r*L2&nq6H^iPbr1bh&nNAV&V_~DpI4~$bq_Y10VGj;nIX|8+ zl!7HjdwXR&6P|&VdGBz*R$4uS5LcqnAAuH?SjJgWd*e~lxbxm2mZT`iz>}E6z?}BQ z8fCtW>?-L**&!T>zX<Hs`E0|{hcV-~rcVx!w0gAW4LDsNp}$Y9=l{v)hmP3}BN!49 zVwo5?eqOb9wCsH|Kl7O?A%U=q1B0k{!B0Flctn7vg1zAT>Is~2(*cnOx(<c3_)+lo z0?m^iWT!Ju%7RIS*R;8e^rToIx2?X0&Q#pb{)p8KKiIigNYz}|)*yUYWhk=A9}1ob zcKM_qGPF0stJM3=lt@kbVpnPQj(y_@?#T|ENa4%AdMoRaQP!738Rvgq$%x#j5P&3N z7b)kkHPmS~|Ds`ju*;MK{p<D@Hk%GDd?&xT%DIbzVQbxuB{b)rC5FBZLI2DUnLYi{ zp@Ra3{DZ{vdXB8vmNJhNS7Vx1>QnwV9A*`jRItXW$O3^k$^=Mcf{9!vFTFbR6caR6 z$HX?jcQ>~(*ncoE$mz~iE+4~xf1}+`vJ*1&L-4|8uubx&A}(V$FT24wS%XFLTfu<y z4cze5l<hzs(~3LcQOni&&7$HuPQ2qyKZXjqS&*fhj$yPDjLA*8Wm)zLufUsn)e|da z_}uXtbqfTNA90eFj}b}W@drxOe;UhKVi9qx@fO1(L`=M#b!BBZOK{_9Xy!p6CmYB| z9m+3!kxUl830AmPwpc*QpVSHxRZe>@Y{q_+{*a*c`QgSZOe5?v1M%lHC-sba$ZC43 z4a&{iql_Kop{8cW9=&-8`Dg`g4&|Bo>_!|4U1RX!I(5qAG0Xg_eHN+oT3J&*9ilPh zcJ+oK{s-R+(6?xhCA8{m;07-AD`-C&f-|Wmy1HHuu=v}Yrr{(+)C8D~Riz!L^jm=F zxsqrRD<7oU57Wh6T2;JP&2c$F7_^+<d$bloY!(wS(vL);MkA}G?Cn8anvHB3!#Cjl zpqAy;WMz>UrH*t51C~f3UBY_NdnR#HC$1p##PSX$O#v#u5Tl*Sp_27Aam$BH*)rh} zvQUxG)mov`0*0|#rxkdv<COETBNrY|UjYM}Eu&_2WeUtGn)pv~3&z*MAK`5Tb`84Z zm5HN~dLi~@CvF$G+*bE2-WjE<)^v@#F|^0N8urcqloyby6A|>i{*gFa?Yp%+Q*(>^ zk9s^~k)4YwKTdtP|A{O;jP)6QPwdYKR&nG*+lBa!)}DuWlc%^vj4%(QNA}27rCHTz zP-OXIU<e~wW=6HuYE?;E5DvIHX)?eqZyq+!eMs9aPQ|vvVaY5Z+c7=We3E+{j7tgg zo|j3I&wk}o4iXjwJz4<?W=at<n4>1TWL3;HIMbW++;(OG-7y}L$C2*6WIg;d!a{V? zK@^k5XN@}?SwIr5$i~BS%0j+^;nFcnCDrlq@i|;Z9jtMkt=<Qs*6ug@!Y`!v+TCe) zhr;Ctxyv|H889p64ALKcrE%jS5oI~r967-_U0U6n6Y}=mdvK^_QWHHnsQJ``?_@Zy zpu}o?L*3#t`_cHo&7>FZ*jJWH#VY<EGp1&qh<(=&(PmZ^H}VmMcX{BoNOMl(GFsnc zt5mgHJ<?Um6d6@4^7D|HZGR&|$<s!aZ-R+T%cyNBOP5Qh7((DmB~w8*NxT-&`$#6j zLSM(g;TsOkRR(8zCI^D0n2Q+KVj6AkgtRv6`T|1W+ich2tb#6lj-6t3!mlVdHauR_ zMGlS^3|xn^LTMNL4MKjLhaSwFleVE28V!*LQifRrUrnqRlTXCA_3DosTmySv+tno7 zPD^r2sKizj>f)QjjG|D%J*8hI(9)#kyqR}E-KmFF01H<r>_@X`tCiC34A{A%pYfDi zGar)jdikTU$t5R^*H8@Vlasn)W52UYi@bu{!h;tp_nA!do=vjg=)}kMf|o{hB2p{2 zNsAnCelsP1R#hjfuzG;NlsDR;n`lJlnNq2P!6zkwkq|uvlOjAE$Kx_w>_q`n{}D#F zmPv1KK^dFJX<|WPXaA)@*Md-N7z?S4L?Wg#hr_!y?4Sl!HwTwBQp`za?*4;!A<;pF z^zMV)=smjpVo@O*;sg<qm#Bs;@`H2kpZD>O?N?|0;O@aJ{V(R;GOX&a+ux<T8|m&| zYtbFj9RkvgNJw{sl$3ObprDk5q_lvf2uMmuH%N!)()~RD^XPZ!&vUN5&)F}0d0%US z6PRPp&ppPlp$D|8>?e=nf5#gOV9*K(@^}59K|dM$-)orv`osO(H;;e6bNr}bARs^u z1Mn7pTFGyp69C=<00TokKmblTzhclvzJLJU!mk(@THpr+@D>0V7~0_o;4J_!sP!4Z zTlf_NK@0qV0Nw%s14I3^KklI4^=AeFyafOTZ7vN6;4J_!XgU=L;4S=$L2Xk2g61vo za`XPpZ29j0Nbb0^hruW$IH<jtx7@MQ^n9s`t%{9<sG!WO$-q*6d1hn^+g9AY`GPnR zF1Tl}q0%X%A*a>*TX)MtJ`3Z$A-|C`gcalLN0qv-hj!LicZP)bc$^wD7;<m3y=bs) z?|2Q`Xm>9>!Y-}n%e$;%2|Zi2J5_e{JQ^*VQCdeQa><+1wR%wlsT{DrojQUI<E465 z6I4S#R+Hw*hu3qwx<1XNq;4Z@;Ue$9_w0boEBLW(rWZQVc;Ch;JS&sBGFrKT=uMbw z?&A;D9sy+&bnkOM@V9sqFAHM%+}%5E77EljLDnC5RpydKn5RzpC}K8OLAS3YgA0xb zS09uTfZkt_`#N2l>%t(zDWsO^n1x!W8Q$C0^HT-|gDUNGS^eFOW%ITAU7hCg$)Wf+ z@To&YW*Ee_9weI9Lz8Q%bQX818O-0z!hRK*T*ddc-)@;3CZ>(<ujUjRdPSitPBbPj za37*0YH}dJm_eA2eH4~h-+5B!z|aPsz&*gDA2&S|pxITe_eh?<uj{e&iP<l4Z4Ysw z(ex>wcxRTGlF>lx2d}QSM-Tns0)&D!51L9i4=Os4G)|~Yw>{sY8ImL2sVDP7r#;ed zllO5r4iTH2keql}F*N0ibr2Z+5T+wTCRq9m>7mf>kwc`!8%#Q8OAT!%%rbdc?YL~1 zNP<RI!{+CQgq?y4(%bMs8|;ZVQFrf5EGyM@lwuyJKJ>>h7cD;~%nko`+Sx6D5MN*z zYw8>`>3aeHT+j{k4r7dB%$UCWz-*2Y`^c$P>#&Lk3HCZe_l$89BC*)zj&Ux}wl135 zow|w7@5qg53mvF!2W8q@5lu;4%#OB&qeD+-FDMB}7+B%GS@87~yRFRLj8f*&bgoA$ zfZAuC;y<8ulqQ3_bB^=22*&Hp)di80F<Hu?8>3R#>b(k``PxMcgib1{1LfSOnHwM8 zqd$-5a-!NloE?|6x{zafl<R(q!j5ox)yAt|aj;cqZ)FVf;_5;OLk^{-DnV6&%hJNo zVtqDBM(x(w$6rB8s4hvz_~vA2eE+RjnNJ@7(8OiN%)^FWmILn@j?R0^e3!Ew2fOH% z9%wMMG+RMlpoF-|S9sMtn<X^kn<d0pIexEsD8k-|Ch0t=ONx^cgzQOEoRN@=t!iXr zg@!sj(61Lllvs^gaf$~s%1;y7w3MO;m$@mm>XI}*sLROm(}u(xTYuQV+ge1%4}4Wm zR}075^t8ZsBD_@4P4OTR(b(#pkkiOirkkSlSlvf0V}i?VT9g+D<F?s!)2db`jMX#7 z5hOO8MU`xMy)9aSvC0_k1}T$9kmChPtneDn!F=Ue81=>iWXL-vp(=uVYV9Tr%rWhy z%CSnptLR0{Shm@W7LnJeUaG}C+6XzTI-*H1M=R8n3PIMTUjk@5Smp&!1NM@Kit90? z?|BBibf-BDxT#6zD#Px@1)*d0qxD00FW4N-_2%3{?HEc`vFq4DBVV_rQVqA3_tFA+ z-QSqnDUS-68BLZuCimmwNB1J7Ws;+W*@<<fJ9w5rv`de^aSXP%`S0Jv`eK`o*kCW> zFQ8Jk`-ypt1YRr{@VRmYJ&vJs5+7fky=Adh%S>_otgYv@;Up4APDu6i6bH?>y^_F# z+B2BrwS4bh5J(KxXz(M7Yu|9YE+SLfoU}_hKc1&*j7Yq9<vY(fc#~!UOaGbmy#ca! z$_8#Lm+59IA8#nlJh1S?in^qZvZC<y7nkm4_y>RVD7+&wS$7o{A(G+dYe{Th<Z$9) zxn;@{Hs}Ef+{xB_)jnnQMEkwQqt=4bFP!|%8FA*+Zz-~P7)eS*-M?~vmVPzc%$auI znv3AEo{K7+M-<;cm*WiO_6Oau;QAF0($l8=9#LPk>h|~phaCc3Oi|&nY)N@xMHhbu z{Euqms4i*h--P0I<F;%iV<X<!>I?P?Zz5nsOX_*O_0+Cwx%Gh!zo5w^QYW~MgPZA) z!d(}?BxAh8B%vyM;KO@TQ$AtCmq>k0DhH}XRw|%=9wRBJ)K^eu*f@aBJopCYQ^5m# z)+D>}&+oaOm*pkg|GbQz0Mlx!!+gKzXye_dnwuChm!t`*LFF<;c|U>)qEkZVUe!YC zQsT$&9O^sZtPR7a*B-cL>GpR7X+Lbj`qVtS=In~lI*e7?&pr0(19l!SnPW-}vt=q? zN%YRWzL`e?Zi2B+^;)wc`wv5&*FsJ(MwlCsgYM5Qb97iqp9rUZRg}bTYMRm6a8Yjg z^2idEdBO}HeqAY-C2fWCBHrlhr#8|=<c+QKL%Q5|2}|mUg{I`ZK9=E*6iLnGS5}j{ zC;D7blCQ_sX%bW##?+|gebUWPMU=Z}-eZqH>Bdht71%j^sO7_$*Vpx~`AW?-`l!-f z?lbPvlz~NBm0rS^!xKB1N~N11oar30udS2aG8}ls)H{BP_e<isg4Rkt9exph@j-z& z^Tv7Qj;26@(&6~cQ?Y<o-iVpCr>(Z>H20lp^(Hh{aGsT5wLe9GhpiHsnA^Y<Gj1>H z)`uys9;(B<EK*hW|5BLyNHzJZuyoGdC)W2}ahOv#@rre9-L8aICMW`xS<p+BO-){L zthmy*2giu^jyeUERc#WSlA68x)?d;j8c{BdhHso|I<)wZre+9}{AH$`RA!KU@ygTh z1BE!Ide@*G@c;LDCLn-k0{TnO1oX3K^53tZf4{~Cga7NR0z-KJ{9+;i&G-IqTns<& zzr1t7e;m{bf+EEH54h*wCvJXU()UcuKQ8GfSNwZ12KjUU>wiBY{V2u+fW;VK*bnGe z*8^%X2GCys7}Q4>fc^r&pcZ2Q{RMzQeHjAiFTY|?hlGLv`U?PqT8shomtQgH#TY<; z0bsn)$|HdO@)IT?NDYFfh=2h4%dZ$8G#wuV&|iMScmzSe<Nml!z7I(K4fn@=@_m_5 zA07b$3~-syxj$}{AIpTsfdL8(V42XKdB6Y#2DnV<+#k2fk7YvV{%No9LVL3W10)#0 zGJnJUakG41=5M$^ZkF%M<cD(Q0tO5&04@_c_s7lhW0}yoKW>)q%LGCB^#BGYjseSr z&i!$-{8%P*?vI=0`!b>Zss#g+#eii(=l-}^ek>C@_s7lheVNdn;laRcF<_a{xj$}} zAIpT!{c*Dh2vYM1LisHX2BwRDT_$u67%%>HnZM!wxLLk06Pn5g2Ih+a%Y@GTakKnb zCUg$kTxLOT$X|JKDz38vc&*=W+n&jx9LnPGmC_F@Gk~)OblpC&`eN0}Ob@El-z{D~ zeEZoEgpyd>+CSVuBo7leHD75GO514Idb=AVzjv7;UuK!YXqSYVagQlkt5N9Xf}>t# zU`mvHeWXtAqFe4gFIB`5hZ@n&C(SwoTKB3#4^Pe9hZg3E=hbuZ8WvFKv`#A?W<KKA zemGwF?Nb0kC@n*b)FU%jblnC$HtVC4)9tMrqWrm6VUr>$QK8>hH8Pes)gYaZR$N+X zO-VCc4u}etxOS9ySJpN(BM&~Ewsqqhe=F-cG}V6We5u1jU@~)TM?8rzOR6{drFJb- z2UEa<*>p&5EonCz32Cz0(9g_Om!i2zB(=&uo{eDJ(13f67(T8nI2Eh3aI<;2mMF6$ z;u4p?_+=<@YTf5D|LO58Sapj}5J5f0E@o#I%@s+inI=c7vb8-MILrkcd#d=@!UD@! zB)Ni&3;vj#{*v-{Z;W1J4`G>->Jo_xm6(2#B%c|tw&f;L{PNQFI@bE8;(5$$Sw+NM zzu>m6wb;7#X5X3Sn6Ug;MzfQPUGh)X{elK#sLqyZE|<H~T&L<vVbuny9hu;oD=(L{ z=W~&d*ovQ_ILtF=h=q$Y(jUnyRy-2K+Z1;)&QDq;&8E;bN=Hy?XHO$?W%IVTl(Up> z@<~v+IFq1@M?6|&3No@nKr4nd@mOzTO5j(Xduiuo_;teZ$-OW4Z5nSWPwEn;<!>aE z`>xbeZq(eqU?#7yobAE~m(4b#F-v5pWUk+{!2e+Ux<tUd$)9o9pG5P1YZ{ffk$=9P zlUQKBp8CC~;Z9c0Rkj;%3b*YAuveUmiZ`QN)3;DjnZAk;1wLWSC&2x3N@xmaueTb- zjk)`VpavnZW7>8(;zjtB(4L)>%iSP(6fU>*+ZMOnHBT<>&`7+I`#2LEQD{z-WldP5 zTq}&02oI}coi{b|C5?H9x@Q*O!Z>6yqLgNby6*4=hqBbc2=KE?7q@p$)O6Qx&sC%P zfaDT!wT}<rMdg~a*IBiz_qhgLhI*7c>$v=bl$s7|9-}XHcAD;F`XkA$CXP|I*Cg9! ziRvWXOQWh>Xfr%;GohRm`;b^-@hk$(5&Nq!SE=B>#8p;-kO-$OGKCp(FuU~PI^iqL zy|2$Dzwwb|xopx;<L{fJvpudhh7WzeIP54u45oQ3=B+pIc9<|qD~Js2fg!24R|ZeS z^L*^y$K;}oV*lxsAu$95<6bxlIg~C7z21An=B95z0|6!<WeDm{PuZ%3Kk}d0V#j_} zc^!F$H;h@M-ZPyq^7S~o#ajLI<c;`|kmM140~unip7rD<OHbNScc<SHbwOjCm>RFB zYi`mrbzNc}_ZQ~{ll5Q2lewx5W{~y-J`z0QtkZC<%OL2cW4QFKE!&p;h&XkDof0$^ zS_+$SJk}5xJe`}9<hm}WC#~R-+jb1kE(DS6d@;gSG2b#G&cuFbK)gra^N^xX++Kpp zx|iYxhBr7(q31N_xq#yk%6Xp5v*RVIl&$q1!Udn!+Wcw3NQwc}gyAUbP`w9fHT+J2 zf$>w**^O~1jJ>mDERM9*_KZY}0}!DUzC6Fp#Br3v6$B&k9#`{Qj6Us4x|b+9;h90l zSBno2n^+&I8J@ln2r<jDqdpK)%9tYGerc+g{B-2HPkO)o^C2}I69;>@1-4j_^;5Sn z9!~hXYGTv9tWgbgUs>D>^ic5boP(I#8|E81t6((AFvsxSH{9;erIk7@YPC3_WQ9x3 zM($KH+*g4^d&tXk7k6++y1gU+b5cZ5Ddieh*s(G{28jkTK0eh(CgZ2Z>9o?z!$(6? zYWsT!`rQSGEAG^C9DYr$&qc<cv%%-644%bnFsVo>3);_n@}Trgz;$6q?GnVNvP@Y! zZVQTxT0K@GV-6m)w;w_yNP5a+jDmX=+!@%YT}V*O=*G}@Z#HaSR$zWDW=^fIxtdq! zxOk*wY{P5DnQDj&g(d-~T7iG{U^MskdZ&K^Yqui2Ii$XqlUenBU(xWm{ry-cxV(co zkFTd*BK%%MXSD;16~c4K1L2j`i@OZY7O44qV))S&8@@2rsdzm-LWhrFV`WoKAaT6g zt-bMaYU?W;_VU)*?eW4Gm4*8_qoU6b8QBwtO*{QJ6#d-1p1NH;o~rD1UTMC=IbyY< zp+KBTHS9YPvT*NIIuKUMKsU0mUJxezf?!4#4W_){=uF`8YFgkoRj`ob*#ub}9y@P_ zesl4la+n-3H;*e@f|m9tZ7cM~B2+g0YajTI+1(jeKAaZY^&6t%9sctxl#>&%f_JJ2 zz515^QRSD*c+hlZ_C9r|r8BPblO>JSPwHC}vwH1`1Tlsr@S?axVKyn{Z#oAq(0p=V zjy6grMn#6LZ?cF?1YuY&uF!;%_KV)>a;3-(VaOc$>b4+$;r)o4b9~wgH@1{92-gMc z-D|-IOlzBVkjmrDmcY!R@~^z;E7RFH<E>Kcr)Z_i>`!c5J+>gCLu*4lOypOM-|xO` zn56DOx%&eDB>McXxcdSFY#=c2-;Klu1B9TT$nPQ`gbzxE3g-RwWcQcc&r=J2&L96> zkCpFz-@y?6ANK-aet|z;7lEOSI`}^y2l~6XGe3x$2gFa!3;y0^<<B1n68QCY>L2vT zf5!v9-%f#n6Ai$Cbofu-<=;gGz<_W#0ON*M*#RaR{EC4=&`KD<L<0Z@ZSWZw5akA7 zJWxOFj~n*Ki~(o`3?Rx4z@VPg0a5N>vF{C4pkTk&Api^n75lXg0btN>-oSt;_pcZ) z)Y}_Cl>1kV2Ra6&$p<el@82X+v-M^jR|N3<&-74^Ww6cbWag_sMQ*B|QOE5rAT3j{ zCtx7e%FJdbGDs$^3<cciR?E+47u%dN6tL9Xd-+~4vd#5g>(#}AC)WIc=hN3m<Rel3 zd-SB928}b73r>3bVlMAI>#uaS7S}(bdM{cBulTl+F%6$0G-I)ioS150t?XKzw2P6; zj=!JmpCl7sro2+uOBwXl(VM@V+O^@{^0l16zAvsac6#d3Q|Qoo<A36UzDKSbfY(In z$$L&FAW7b+zvXb<9arllp5#iC(QisL-}S9(B&x_^FDI?QcSrZ@a+_E~V|VC+f3%(N zPDC43GCuZ8yQzTAExG#Eq<J6wbC%gDD}57Z^6Fb=7o3`wid@U^sm{-&+jla`Z)V~% zk`Otjr#LVx;(A{$Y}+~v9+G`tZ6n^4_ajnUZY99sI>2w+o?Qxjg8O(eq>XF?y=IsA zK3^ORwg~^4DtSpo<&;QJd1*;SyS~3$r?#wPMzc&Z{D~(Oo+8!WJEc{){jE%b%u&}p zA5#7fUygRN+$Q608&5yet&dNS5L8iF<5b%HJ@7`noZGuEf<E`<-98sOdXp?F=%I0w zShD5;VZ?Oqzkc?q+4As7$lDuS@)uuL>)4+uZwT6Dv!dzGVYnYC&#JBu3)Jy#W1+Ez z*4&T6&*-G+e92~Spf_=&u7vX?D24TH6BVP~LEW~jPQDr}Tc6zP(@z^`e7lpSoSLhG zWU6*vbUM{!#jp*n&MCCHh-*zEaSvN^wQ1~@c^0p!eQg6s5CxE7U!sxATv{}odnMge za|&G+G$ZOMCQ?0gvh}ofAHP38Swd?*-)Og0&#$mRX=Q_U{S0X*kBoV%#;;`JwQ{-Q ziQ?0(w;u;sn#oy;#uDObsuI%0kvUHGJQXg&J+?OTr65)}4rOSC6Vt~hq(mN}3C#gt zWTKpWW~4atcg3B=r9PR*`(K}_nY7(>UH3r>>bYejMn~r8a}8;1{Y?4S?muUQ$4V<2 zh<CH%d3z9X*YS?c7{=>>L>-NW%I=QH<Rm>fvj>BqIUO%EC!DbUSsXr05CV3z1J|R? z4|kOC2~bpUHG;GYN#QcgHd~Ih-G)C?NFdo<Y$l3Ue2ef9Z3!T!8*9&~>ImOzOWRF$ zcq?@!T0^Be@|Lj5iAm_fuvGlo^whk6?(9_=7FIngdH5Cf@s0Jad|FhSL?IVW$&1GJ z8od1EUPbxj0=$TO(*g&~&f{aF@Xe8X2x;8d*_XPZ(+(cFS%WHq{LV|QL)BHYoa7?C z70M6UxG+XoL}M%MPrsEO>z87a#Oi1fe%yz_0uSwB%o3N$5{1=pU`{?3Ni!<-ct&3? zERCG!^f@q}(ECMI#r%}lEi4Y2OVC}OMTt@@!Y5jCuDIi4iDgozGD#Ajohj7{MX&0t zU2`b2$HJb#Kf-#~k6^iU*C;X0Y?XWkS42R7v&oS@N4MQxn>RO}UUy7>n{tGY77l61 z8~M7<*4QDD`P}#zNk0j**rJ*E71GY!=F=d53e$70%o32j%y=Vlwc0w7k%(EoKr%mp z3zg;Fmg0EH<5+5t=CKT(#?f;U)k4joMgmbC_1;Gm2+t`EDMJE`4V+aY(Ufc#ubOIP zkBw@5la)h2SQVXLXgOTzg?G+kao>ITl;G5h<-vQ*c#?3D>c*#q14H@#Nrz6#$2#OJ z_vXdR9CDUBEtx&{ZcAS@TQS9T>fcRmGG|nz{6wq~6<XVg-KjOTn&LxiQ>$R%GdMyr zp+`uu;fUvo&XCpQLgW`|4e^*DQzQz1X~RZ;M<{VmJ()Vngn)j1c+nwjdcsSqD4W8) zp%-il?~F`&7glW!l%6cH7Qq>b5uSLLA^7>t#r7^mT)?FVf2e0VX>$}~TW}Dbunucz zzY=pqKyxa#A(@Mx!YE--_n^DEuR)(9GRZ5$qUJru8!U0Ex`y}%yyn-Kr3T|NN(s&D zijtUlwtKY7d1m_9=U_yP0aYi2^YrX=nOc#FR#+HIhZO9}Iwt#VTbaj-r)f<$7C2ce zWDE^s$~aTUy1NdC6icLn=g-)WNycpQu|~LW6V;F>PKdOX>DS$@M(^^CkOwSbKDN3n ztxKM;Uei4LQ1#_pvs?2++=w*)@?2hnRD&N^($pO*Mu8~o51OZs?iBTMHgMcgUGT@R z^@WApf+53m8ivyRYhTNyNP_$fP?ao$&>1x@r$Xf?J=SEE3cMk?aPQA@P%W2xSwNHQ z30D5?@A`ebWSZ7^<?56(-xF*RMqn@tpohy2TDQ}at(4QPQ?vDU4s8>$;#1liY3U(S zplHXLr!hB$!YsiJsS21i!COkFQ9XlTuD}NeQ>!52*T8v8imtm%DksQ~U#qSy&yku@ zvlb!e8^qdN4rujbZ>=<Yqnk4?M;XK-X}3v&pLQ1EeU=n?a^MarkNv39GWy(LcX#U8 z4mqbugu3d%md6t1de^OE!Yw~Kynbiozz4+l7I-BaT3EQkFpe9VXny<$sSbV`?ZP%H zv*eA6Uy9eg?-)#;#oG5I5{ikO(2Rvo5_7k7xhBU-;-B(^zz#%OSW9-MEn!^3uS1G= z<jOZtmQ1!$50J|qbla8fO4;c*r`6W;GJ7MrETmd|OShLUo}3_hJr|TxW{g1g!89Ms zK*K$5G;`)2awpEb#`q50;DiivSFZ7DKA!<^3XS>x$g^iV;UPQm+6#~1dn^|Xb=A6q z+`~hbBAztoxAa!(W&{oMb_ojGlqhZl6)|>ov@R`5ol5D?TULJ*(PQ>OMHDQderG}A zpx&i`o`tMjrXx`X4x&=YwK!h4*-^>OJD{7D(c=xd+fLCx7p;R=#y&z({5%am>ZO0t zFjWNsMlJF|{WPj{ZvXZt+r*a%D*EDT)d9&(W?Lg~Fg9*@AL#BKnMx#^EWWtcP-z;C zJ*B`-iV=p!Cg!O34c`<7$y=fsTHy!!AL|_R|D@IfSZZL<-!+Q?14OmICIPP6Pvm#o z6auYl9T*_1{VfML2>;4Ke~<*|YJbc9wihR#0OapN3}7DW@6*=4&(q)o{n?5I|2l-@ zUkC5shZqF@qf7(?nsI^w0^Cnu_U}RrV1NJzz@R0{!2kgcfI+SN0RkKV<AwHVkUws{ zAK3?Jp9cBk&igU@8|tV1apOUL)2<&3kP849G`SB97<>T0pxMk|fItAipiQa=0|Wv9 z#sl@!{%Mzdj{!iz{%MzhpsBlHfItAipjokCfI#po#s~E+8z2w>FkWci5`aJez<8j3 z+CS|QUO}jz_D{Qn7n+Iz1_%TI4C*fhfItAip#D<e|EFET3-y-*|3B>#UTEnbF#kX8 z5+0}t3qV8=fI*<$RQ;3>{P%M$pWxpOb@;FDM^h$}=ij>@5ilrrRz*VkqmdrWfETda zS<v(gDXi)@6qUzs&zk9245R0145{ojMJUAsJU>%(^$Q93x_0$9p$oiFz)4Dwr%VLJ z%a@1f9QaUX-{9e@u9Z{My~$1_SfjDwWjN;8xra=H-jN@6c+GQf^tjpFMqBA<GnPq1 ze#CwJ`G=29n<aT`dW#8>!*uZ^YOe`ehPmKayEd=I-eki+b#Gru56A6a3X}{}zL%Rw zs-|!5((2r9zRuXt{s_+Z@zW(rBJ)BUn=dUo;Tpx%fzL}m?8=%&liiG_MsKW&Qq#$5 zC90Bs*nCCXth=xMz<z=z8%NbjbJ+@ZIWe?S=WYOFoR7$nzmij_ctPYvOi&1ED7>Tg zl}_DM50Ng@?0z0wl`&Dy<=k|5|KSsKCzqD>r`1~n^$RrPrZExDbm*?n3^n;pbS&Ji z=8cIfKAGKzv{Jo!ZVGoh9Rv5^t!H$)uxv#I*FusW)dF5o@Rj?#nS;yH$5*07JLy6P z=NhlH%QHV*JgkEZduustTdOF}lbj66!eiX2c{%_5E#sR{8}3F#WOIdmU)l^(Z7K&| zHF=3jdW}eiKN-GJcy_T?bXNaD#mM2hli9<x8wXWgNMxU(cOi>{SE%kq`iyq0tE1Lf zIeggR?eZg`n3`DQ+mo&NNRwUqXBX^;O$jT0PiQ-87KTCszJ7t%8_!t8<+z4$!S@$t zyD~ART_GcpD^8Pj?)8!FjR`&(<tvS^YwSu4;@d%v9mg22c$8<<M~<PqaOa5xcm4tw zEWu*|Oa*rJ8XB}ywGS}G{E{*ii=TY)cois7=TwtCEe~1fbrOn`x-~=E8-lGyp73|5 z9Ax2Nwb_QHQf3$G)A}(Oj6QfsAQ8>bN~m!jrsZs{A8wMn7P}t$N<u1Kn5d%gy;6&= zlv3;bCKCPllE^dcoJZ*4MftNY@HCN_@M2#zNq7s4Fry5UQax5=F1FbfFA|tXArz9u zE_0=V5vFowIr`T1Odjk0%wg_(T;ez678D-j9s>)!d*yGMjh8D#8tWS}1f;fl^$VqT z7u)9@wMg<!w>=C?bhXa0W_AUWMDOy<+rJNb6sbKxa8hEC3eRa&#o$4a_zYuvTwO~r zCIg0|M?wBGvjx&}m3ZXZ%9_75)eB@FCDv}&)vn`ezYX6~$|~Q1iiAU#%+^TOPd4Ky z5vJA3-L4vaqR|V7l0B%cY<`LyDfV+HkB6UE(rM){Yzi)n*Np5{FOEx6zBfML;yBVD z{-AB{QS&$wwNrnz@NmMSVHU$YcdX_>;?%w@jt@LTGp2+R$k(a)#5{dh#eZ3{Y2JUo zibLReYrT0TM?#GnhpS%t%?lLDtt&V|g%>l8d02?wJ_tVgifZ6FY=pSl9tT71xNjn( z(aFOjJBXb~Ips%+WiO_Dlu=6=(N9|#yLvbp6DRI!CVn`HOWqJn;~^&>F#FAZs$bQ8 za;4;YN6zc3&_=xQVfvO3X873iXj5JNa<f^n3lK@eBR^P)kc1giJx@~Dk%rq%X(ZI8 ztgkQ;{)zKgZF8#C;ZC);S7v9$QP?xr1?u^}&ah5pb-a-yRfODiqvuS`@9d8%Ur{|> zq&<#Z;|lzE&5(S(Xm?oK5;q_>m?U4)RpTPIydnPeHgcGX_6Ze<0%xvaRxag-JeNYL zBjxkk*Ibrv0i|-@RKZ#F$AK)@2cOdKw$XFiw$4BNNc3ecjp|&>@q0RM^$Zq$n* z72yypa?BcplFo;p^(vqF?hf)2-PISV@HaFvd!1an7gN6NTF3>;D%>e&MUxRH(bJ6~ ztf=I+<%HRUopYg?NHM?RTlzk@?e50&SI{cApF-9Dzg2DmfIs9v0@i;~e*sd;e@_Db zoc|~J+p%n5KvMZ{xu5=^|4)u9``$6;`^0HJfq$sBz`yh?{nsD;-#*HL|6^PkSU?a^ zZ2|JpKYeR{*RvE1$VdN*LG4)z2IQjw{}E8%y8!uUz#^gbhXe!i(Z6EQ>mNWq8h}B4 zxB|qZf5kx10_tEuIvRjMYpe<eq@w{C)UpW>js{@RzBULT8~rQB2d%Lx1dxsX6@%*U zLIBZd00yla804p9^#2)G#>f9x-DQ-VW(B@$zZ=g9>R2@kDO;b}H8l5djyhs|P1p@i zB*_YAZ=@yU{}vEQu8A$oGOENLm5uy1!$~Y6ta)+hogv<ywuBTZl0tfzV1b#&m@`g? z^noK;%SC7e{hSzrm2K*KZaST8OBx0FY~rO;7~N*-DEv>_UB{;cbF%!t0UynSRP@L? z<q02FqNo%uMbqQ%6I9mi2)my=yh6QBMu1NML3rx-Lz$WMX7^)8dAb%4l#)Q!vgv%* zHQY-UQVu&CYa`nuv)JG6jAI+huUbfSshOUNDldzOgfEI?e?#4GV=%){poM2rxL>kF zLydaE_0SpJbZ5{9!-VZTE5dGgxeSB9I0yrSw-P6l#T@}T0Oh^8y@(Ay2*NJ`H-2dr z%7c;$pUNWej3JvWI{>peh)|)A`3*HE+nIUIWeATe1}c?`{5cPk*-P$QcJg~s!tE_^ zeItt%<WJY8?l7`j50WybG_aSatTKk*dBkjji+Y?SSA-YmJwQ9ZvOmUo7GG0sc<-b0 z(4m5d!4A@ky!>15uXjX0-oOyC<JHL_Uwb)N4XMZ+7sNglI8c3W(CUHe#!26BS0SG= zNTpNx{ao-{RfT7=rDK;G(fASjRHK7T2x=?T%{kt~aYmv|+M}tmEfwLK)!r<H+x0!M z;;n(6q1*0(LH8T6CoqmQFwkzi)0LxV^%6+hzL7BW+Kx`6SFI-I277YHzOxXwO&ijG z=#0MD?YYdIW8}fvw=iL@dUJVf;%bi^g}l#m5#F(z_O=|2YC_}V(Gr@bp*B-qIZbmD z1z7>N_(6Wy-52FO8s!bS8wiHP!Z?@M8|l?AzOkzb(YHM~(rM5QUs~)mb^NrgaYn{G zAZhQABK`TXiR@7Oc|+ka64!@r$;wL)sTYq84w(&3%C&<Q-y*j=ENVqLUK9zOO7K~| z<OfAmOPbY441@0aIGkxV)+{>rvP#WwNiJBN4A^9jxZ=cjrEERu2Ya}X<`gdo517KU zEb43*j2z&wM4=~R51(eWZ6nCt%XM4vd?i2sIWV%7XAR9OZQY{(>!rnKF(D!1F*Aoc zk=#-VMUoiQD|a;SY}_C={RlC-I#CNc9Z^<(7<6d}{sVaTep?@pATn&o(Cf$QZU-ic zo4)BfFxMOTFF7MP9TY9LNww+X*osVb>onz7=E_rjc`jkLB=89k6KG#se~Er28ys{$ zgfWe}+vXC6r9}U01yyqd_6JaycLO^=cB(lfhoGBaSf2gq6E~QZ#+uO(W4x1XW48y> z>Y3O+6H*kzyE`?c)uDWEtAiVh8A~VxRMko3tp%nu8`K`}+~5ZgkG}kLw&TDnM#m&D zUVV8}mH9*;fh4NH|B;FwXR+$Zim99xhdIBKVe9_8dCFw%n<Zt6*Wpog&-(-KthF~f zQhr)yqQpGr^>^d)sA*Qm8W(xee&>^YcB=;lKMn~6ZzU*6PvMLD?&27s6$f#-54e@i zhiV1+{Xi+5t@LaKLhgv&Y|;l-qqL{G;T$jYs~(y@mtZ5xaY!3wmF~8aElQEeBE)&# zuPIz>o03=lO6s@`-!|gr{xc==L8NXo)i;3!h~5t#FnAq**@vjUGu*S!&Eh=E(N!KA zKe^2f-51`dbi|vD!tkM4!700+XVrG|31ng|UoP_2`s9=!GJ;%wSnYJH&o04+fF;K- zYQ|E1rgBdv#m6N?N`<Y#MU$ywzPPJ3Y-x?1kzo*(yx*^2Q7NAKl!fg^`7{#t6UQBe zWuG3AX{>M)GcLxpF7wRH0ebe!(Zj3B(MeT@A~a(Bth~<*_E>2~Cv%@9Xt|KWJ-*mp z>b&3@05wOxIOC40UOWlltk}7OI@Oujb;4JgvY+HO&mfm9O6NNjbB>s4uoCSiyi=!R zyHuIv%Vc}HwOHfASlaqBZ9tV+V;#e&VY=MY;{2)H`ZuDv82w|vYi}X&GRo?sH1xb% zkoC#<SVx@R`B%h}L6U3)<H?K*-c|1z*VacvoZqHxFQZJ_s3jWn3Mo%OYtI6<5ibH^ zkzmk<FP)$qvLW36Z>J;we=}|y0uW^&+<zC6g8)>SpUCge3Sem0ix7Y+^OqbCFeLXs zF@_k#N6ic2{qc?E<>&k3AsWI1&5`|YUlKnrH7}T(niul@-=9TU2oF${y~_joF+UCb zcW*X7I+^lAevD263Gn~9iug&U{9Z)}@cr@4=HKr$->V1+4`Apq1RxCkv^Rb?Kn()$ zg?`1LRuK?@FZ2`ky8&ttfGz}BB(ytZ2*4HsV9@MX2*4HsU{Fum09gotL3^Np09>J8 zF{mAmAOKegfI<D108}9W2JP_$0+>bcD+Yq*K|uhs2mlxaO12ULm_-1<z|j8R0O?}@ z2CZ)@1Q0z2V9>@hKmf_(Uok#tbJrkz|Flb>KJ`HO{%M!+LH&9A>4o?IF0B4$U_$o4 z+ICLq9V8COaKkRNpR&{?s|xkkQoJ4?7Vr;}mp4~Tyc1Hh@^&8%{h%<0>`ZnU@!pPL zv#*Cj>+bT}y6@J*i4dQZ29%a|CFbJ~vEDiN9f-tNW3sRZi;Ua!oz>p18Ka%SGAL}V z`hKc5LZA;qM7+PQ7K8lFg9)p3$8_wGtcBc-pTbgup>><>Q|8OEhaZpjuZg);;A>S# z75MIi+*~^@F*#%e8nujcyx0wq!$nO`>u}l#S5W5Ndu6L=zOqE-mZ({qOhSc^4e?gU zR>}EDc^L=sJErNFASD^wJ`s;g-o(N~$XGaB476=tjqZ8zty-gI`|}pr-ZvL!S*{Zm zymQZ*R4;fZ8Lj2Z=4Lgo0-t+LX)2Y2K3iwP-bYBg+Gte7ySMoqTf)>sA}W3p^>GCp zFxO#Y)RUH?>1Q;UH)T`b65qOFLzD(?%3gd_O}$iDe(zKxaH{i~;mJ3pmT-r~U10$- zy*%d<|3+l%XiDt7F`N$=b|`it&uEHY6i7Nz+KsB^dDL{QcZn5f8){cgwXY<YAJ9!y z@4Ygz<6<3bxW+u!{rD=0L9$3NGun90zOVb?<8E9BTJw7J?MJise0Qza9(-|{X>!a9 z@)3E%5p7W#Ab<+5`5+2&c^^|cX{#{ZfrO4`>yE#uD+*31nc4uuP!WSW2gQhW_)fE; z7~IizZm+(?#siTY2NF>V@+=v`kywW(Nn!7FX%F(RXq-xrd+DFCS8vN*?Ov9v^mz4g z$6lhnU$%<1``Toy3=yD`xMLtOy`&q%`mxidwH56#a_n-_djTXEM$y@EAq{h<%IJE# zVvR*&1ZpJG>tQc@>)r`?b)#=u2~Q6aY{p0DrOcz<Ik@ObV53-CiKIWqfBm)*iAXVP zArM7UH<+oJAt>2tD|LmmEl*YU>ZQaPGv>G!hnQBe+tU>J_t8>$Bj}uz#R{{fB)I3H z0c6M+B(>yPU*H4^!=z${Xg4HM;2^J>xWCO;JL$m$#)}4D<jvyEd#K!hC%9aJQDFDY z=ZrFI^y=+`|LtyaYe7eJrvLbJzFq}9wR$z$Vh>$SJgN$ID~=GZxa1G^8*@E_pF?9T zjSopFqlSC^2K%ze_H#7fwSJ{8XjSy?Y^LCyeN6~g4a(tFaHEh4GUEt_v3=w?)M0WR z_dMmg<{B4%za;TvcGhwud*-oY#<E{0f!f`YUa9H@J|eum9T5qoohur3CU%mHh}!9F zmkJ})*I({0ej}e*CM~MKV&8wpLB<lDL-^Q{q>tO^?CwN!u}t8X25BQg9TV{twA%d- zzBhh$)GYZ)7*f5-1;!Eiy^GDsE`hN#FTdj99Tjk%)qJj7ePPQeQnSzTW%D+{5|=_r z58Ii%O5){-4oLc0Xk=?u1(>rJww3v|Lv-8bI*=5ffCjZDUCp~n$dhofvCT*_Q*iaG zu=Cg(2$&Fem_jqeWymunQ;loc878*+Go{cg)q5di{Lcub6bx(Cn#4C1#!~m_rDM0o z9$S*aWFz`<-KnNPNXL$9NQI2iAn#fta5lR2pgr$-y|W|G;F!aR)g>{l6MrCvdEKBZ z8PDn4Gkp$vXm0kj#XLIaC8g4Pm27;^pu6(qJi5wsR(6dZybV1LLX-!Gl-+NIKGvhp zf4l8pCMhv{ufKANE_@%(v(C+Rn;nl?H%(%E2b{kdK9Yl;KVrEo<;R1lh|m}ymH{5I z4dr5?&{byXT%_wX<iYFaZpetevv#EE7`B^hVL^p=CUf-0j`r9VLu!%)v*jxX51ZA- z!>1#RDcgkCpS2iO(Qu=9?+Fttu=9zs;;^^Im*QU*J&z}f%UY<k71<b91sU?g=$67S zwy`QrdCgPP4YT?k=|ciID1_<A>+4q@^y3(idN}ibE84XUMbIy`v`Mf)dA9_!;%WsU zffqY;h>ba1p>CoC-B3GtT6MhmC_xn#pHWBl^fmgY`7|RI9atr!HUa4dVV8}%`_=SE zEMz$sc)T8-_F^VSgH-YARm|O}>;7%$dO@%-@AZARpjA~rDIos~t15sr0{LN|{6$su zlWMO{{qMi5zrUCN*IoRN6E$!)00bbE{Irta-OED&LdmZf^b<8eDESHd-Mu^nAd~<W z2`%yi0SF}k4C>JsAe8)yfuV&tAONA{R}2JgmKX#elmIYjJ?0^R*#H0xTF+1jU^V~% zgLa({0n7#fV9>htLjbAEUok#t*&PTVatXkoy{A9`c}oBWfwm_BaZ3OO^^6NhTmFhc zotq2+ge?IWv^J^`z-#~j2CZ8^1TY%_@M8*w`n5rz9K`wms(*g5-e=cw0i1vllcl@i zc5w{f9uFC!hld7t20QH)yyGq_q7UgFmQm!JGYMpSML+v+Tyu{>cjv_ZY<A!9m0fMN zNZ@g}oD#SoF_ux`sSKjk*h}*<Rb`^&W1pjIaEz@s7o(LWWtxUuxj;W{=IEPr*%PD% z1Jxt}*dnCK6SGIM#uewfF%%>!YIdq@nrbXceU6IworXPR9L>5aZzuQL#Z{c)GkdM$ zFDJqXHfwLi8lTg=Tn!tp5irw0d~5fV$oqcE7)wr1W85L>&V_Ynq36NY8FO4Ytx)?j z_CoBji7EQbth1s*`4xT2hl~UwjpEz=#L89eH~Qv$VKHFyRqD5FQpxF(ybPA=YHWQB zUwA~V?Bo{89EYyn?)Svqvxp#+u_w<ek7MX>T^CSbg`XunXD?42dAcTZDmL^Pd>Q7h z_)!=1=n(%Kx$gZeLORz9!HQzAa-TSh1;1whc3qHFbgr9C#nX+H_V5q)W8!S<q(VbK zvP~B<Ilh*MIZhv==SOU!ZHfm&tksuO&ZD?S7zmoE3&$RK-gT@ueK5)Q)+S;z-Ab|v zk@17u!`GiXW=VtZ9T+Wuq#CO#0+-8OtJ6c+rUyJW;UGBa0^2q?IS#@8B=e|pO!HVR zH>mV4`%rIF#>1GuHts%^MJ;L}x}=tgS;9=x*?7X$=#b(O&r_7m+~&eI#DSnxVANj1 zNh30`ySpOSZF_51dq(Z!T11ZQN+stB|CF;FX{%|+<H&^PuF3rifxbe+%H~iXvsxtH zV&>4!q`E5Yq1Wssst6KVAB4uqRqhTV^<WPATEmmo7Ih30s2nuvwc#5RrPVrrcuQ*p zzj;v@eR?m1Jg2cNQ--@MgN|QbMxbzawq(|!c#<;Ix@Y#8ddHlM>sBGj>pAUI!WXYh z98#&>iVi}OuqgKqCJSD#W|!mFV%-jPVde=lwUb0WFs*B>GBaN5jiq)%a9nbW3218F zGvN<L6xww8%<ZS2{`e7gyvK*Z-sd!|=9F|ePQ<qO8zMn3HsJX<I(%SHsq^!d7OtHY zk#!`(LtjcKOm*6)q#&YBa63!RCePg0datjGmC`pr%JZU~7CR`d0nyGcy)esD?^-VZ zqU8aifwXtPV(Wtn<-RpWQ?M<uN`rL!9e-ZaY&WzlLAW>Y+mz2N8PMPLa4}n%F0eh@ zHNY@uGi?~fdh)y^_H{O)r?%F;i53Y};Vdm8rZsyG%=p)=Z}+=d`bl|<KI7^0y_uyz z0)s1fJ>HhPP6b8KqkV+aW7y2Uz-j?6a*S+h!8Mm2n<q^2)gyhz$afMluy1t932u1O zKKeZ8ePiw2_fpiK{UdwgCIVhfNVCfiFjeRC@9S3~w!1ZSsK<Y7dpsU3rs->Q{Pw|H z<CRVwlZ({Ox=3TC@MQTV>+tnTK5@;C{8e~a`P<u-<zvLo<s=0QTb70171Jk;jkO)Y zyDXtgm3^NCvP=r7zS316YhgMWsk*uiO~HpF4qMVR4l>xtu=KbLpH$x>W%OX0>@Pjl zJs<Qu4Wb!Zu{<>-F~)>@?Jd+K9howO9oZj1HjIL-iTz|1S9#_s?DSpaq6}6FjT>$K z1tRcAG{uxB4^H<cE|hHB2^sv}y1_G*lb2zvZG~sVy$q)E)K8g#9h)P|OPjEjfjD-W z+Rlo!m@>+(oW9T7FCWO}CqzF}E^%gz8>NhEEWY*gxLDn>x;b50ZFnD_W-(aqMMO_R z_qek3l&-Xj+2K0<eF~+#JacPuLPs3Q6E<!px3YckYWtu{m6;=@xv5KiaO?ozrE@x_ z7&)3aY|DYPzX`dN#o!1&SHxB|%|2ytQQ=ok#9+#gLo@9?*79y#H4?2CSRdST92UGg z>T-xz0-AR{0yZdPVVEe9$vRM?x)dR7U)yk7FxL}48(x-gKX80Kmq*s8M{r@?oGOBW zK(ftFQ$3E_2}XD-ia0t#Y*X2G<9>0p5{d1!eYre=a-Xg<a;%Q7swoC@&P;(iBP(ir zOqtv=0J-&WX?~uQ7^}xxzp~f|X7#EKR&^95GS^(>>l<TUZoXG+psCrrmZZbwej-bk z3P)a1ADGfM<b#jiZ3J?0uep9bO$WK=VK`=|1`HYDU5J9-9;0%H&@eOmsejs>3sjF~ zd@Y=N`YQFo+0OGs?a-nTe70U2QT}?8kC^rT<wq9XeSIg!zBl5$MA&y5*%RoxU1y!o zX^N=%)8<z0_viMes1e(oOkZ4~D`oNMM+*d|v%9|VkxUa+o)*YzQM=+)Oplng?@nE$ z>-7{r@!4|O9YYflik_4ey-*8+h0zk$41`u#{FMIxUszZGd;!Q0@!&5Ci(eb||Ldgi z+pGG2U(f$2EFj!~!UEtD{Irta-hu;M0ssc}$`{}g{EC60UikuC0ssbW<`o3s68wsR zpm`DyfJ*?tpr!jE0GHrbj872Sy)?ij_!Z-Y{w?|A4ubr~i-!PQf?qKnXwfMMKeUv% zAiv;WHuYM8{Hv)KI~HsJl_*~>M=4{n!^_r}$%<q2^gIRf9I(?rT6(o}*)ghe;-SLD z$-Uj1!k(M0T)5c|_Vuk>Hr{;&$8~_m*#aUq=F)4PxZ2&CXIgS`YBsc@3>a=9Sb*PS zdeI=-8GXZg0H3bjd3<Vh(kDh9ot!GFY~bX@E-+gmczwE^P56pc(a7_a!MCOxO6B7q z2iK)iLF|s()0Jq3F`uieEk|_KT|JTLYY8vG>j>lY?tolxvfRt+!vo<*JT!cQv4zR! z*xN1i!|MS^f<go4RQz6NEH%wnw5W&=DbrDB^PJv_%msW}_;$Y95ZRo!?<D^D+u7;O zy0C$@=L#+fwpQ~nX`toXu#ifA+PHL~{+fkX-ktU@oSDro)ouNv^>xlJ38}OmV~(V= zv${*~Kb-1RAN-;~)Z}GPk7XmkQ8&)*N4DOMgw-BOGVc{eqPMNmN9Q3#@M`bLc~Y#> zrlI8iIbO}UkZJAwYlpg*eik`Qj86}cgP0^YA`4K95w8*t+lj@<pRQ}P-xh6o#IGS_ zs~fn{MMmR@<VENywC+Y)zR@$%TI}L&%Eo@bQ?Y~m0^2AYKkeQ-{lzNEf=`t66mOE6 zm*;H#6f!8!dV^!Z&PNe&b=y8<g%>nlJEi&{r6g>l*@2_Z!*1+G)CCc?rqa)5yfaVq zUuEm5Grwy}Arw6Qs<@Il7eT(cZ8MEOBXurGY2#Wuap7if{BVb_f!lm_F-y&)ew*E* zvb2dkbIpAyG;AK{5}aRYhbzW<heDJDKFyEMc|&39fskUvUCGLZ&%w!|)vkv90nYqZ zgqHmN8uQb|rYtO1a8B^=;$+QHV9m0L*!`AWPUYCU@z6cUlWeO<;J#TxrWZ1E&AJ6& zd6DCYW^``lZb!r6^36~C*=O$c&}N)#B+0tczb}c{(t?b7XrO{y(mV!b58=Xn4n~z* za)*#6MT@nB)f}7|<2xG|Pi47{%&%&fCW*c=V))~7y{=2)YPVDXo!q0Bz7s`XFXPU> zMTE)+y9RQVV#JK!Q^s79aRt>{Er(#QX!h}v!%=(02r9B#HK>s2x7U8Gn-56;G$4MG z-r;^Vm(oMxQoB81Ni>AvqeFhnS8=77n`s<AG15h!l^XtxKXJ7_m|5#NE%wHo`oYE- zRmq&p@a~f7C!+SG#hOv~*ZgVi>Jjk>1n0bantD1G6mD3A5Mj8yyWS!rPuRR4dT)B! zf59#5I<JCNgyRT)=^f6-n5}k^KjN?CetaKfV<;770y<iqcr4*Nl&{P}d)1H>LLx6o z(d4RyiAjP37cx&X1eRuVCPjb=Zbv1e$(RhBpRrXg7o{i{wdO*$i#IToL$(=-IEV|c zU>|8cvYT(Mzpjk14Gy*P43p4%(xdPyHb-7Xu`}4*cdG_3K{x3jkFQMjOXcQ)y$EwL z&H%g7!OIV_l@E~>KPkP!ro&n5&=#|Lw^4&?fHmkPGHGD4*|45VukG8In)-oM%7gtj z!F5ALAaOxc$!SeHNLq*3;KK`YMcJbJ;xw)aAKh0|mEV7{f5<K=?k*82XR^#V)f`@Z zbMx+u$~wt1L<z-bB6lVlh8H>NZl33-xo>6e`c9?lq|AgaQ(U#ENruxjX7C6~DN*+V zWxE3}4&UEz>FQb3d{gOfUVcS!Lo8#k*SB$Zf|LQ<5#tskGS}ImO<+30Ccq;xM(YC9 z$a)V}4UsCO&~tyB(K2&3TxNCiGXYO<pM~Bd{vr%F?`49539d)%@^=mF+%(MAnVvoH zpDamvgx@1z7U>fh#9RWqN4NZxf@Z!wwRog^Qt=EdaP5#9?cJ7-mW~=31ot?<hp1M- zbrv(fr%}Ok?r?7AJpp^&UG5(K6Oz{-*500+lYKa|R&BU6RsGodCY_^>=)P+ga}MKX z*IV(=H~ItPh>#atoOmCZ-qtHs$dW$-iF5=H26kUr6wuFQq4^nql(^NIIK*^U-mIvw znzBhA9T$~Zyqlcr#lAzh-oGi6ASSQ&8bheO(Ff~Y79Jv%P!452&17cP=+UJNKgM?b zY6*J8>lb0F8R-a=*Uvif?NB=V7T5%r+Tl&k&0Cke399levAez5XFlw(s*ACWert_F zaUWc@(&?UCfB$}q<C5qe8fvKQX{57NR(%sS<py0)ldTdfW4pop=p!u?9=_gu?WUxs z)T&%F(WhGuBxXA+S5%a?W|5Nc7RdVA$r0lCXy1gVEa#I_9*ouKteeel%GT`o9F4jQ zAZk*0wP^1}_~cV8OK!$~z<g2a=}9-`%GOw#v!k1e9rxO5N>k~{bA}jp7#{7A%Xc=8 z;h0ZSWtFhil5QhoUfLlg2KTT>z6H68AZlJkC=-@yX{8Z4kVLWc%Vu`rG7P==f-*v1 zT<X1L85+VTc&%s?X<p^Oi22e@1!KB=nrUkO#0<_VTFiZSh*05?896z}DSUWQus+2k zx(g2sI10zEz<_OfXKlil)yJ@nc-gNh;EThwxSAiTjs2CZRDyLAmXq5PZKND68oHUC zuuL6;`qgrV$D+oPCsGeI+nLW`RR|0rY-4MN&h9c0`Mxx1Bg$K(Ox3Sg1w7!<93O(1 zZWGVhiEoG`FvrYaYM>pf`TsYl1`vQV2;u)bVE_Wq27e-d1plGl1_HdnzvTc&!vEyH zHxlE6K;-~u!oTExIu!mC8v+UZbw{x86NP!f5NgmrsNRsD^yTlh$bX$BfBVP*`Hz0} z5CLE<A^@mG_<zauLw!FG0MsJCVo=`?1OT-N|F1d#v|~O%bOB(zP_aL5J;C4AA^^n& zfPtYM^8tp-uNc(UUJyVpegFpbMjz0NAAmtK#32CJ1b{*P?*_Og01WEe2*5P~U{EVo zfNKK4ptYNW09=z_F<xl%)F1%Y1b{)!R03QR00#B_0N|PcFle3JAOP0{fbl~6c>}m6 zzhXQBQ0ilTfNKK4piOD!=Z03Xf+2r1^zC~mw^@PjAtfB|!e+3vCLV)XHFjg2{3t~B zr3Z0UOt?8;{T)MIdclR;8!W-6?1Bo-pNO}68?!U`h|z1ls(w~O(4Wku7CaPKl0j7{ zlu1(b#a{5<%4tiMN%-0k6LmqJEI}WOEaTjvE%O0Wo<nq4fIPFyzv-;xt9i;pGNX=y zv3p^(1)K8ns^y7`Ahs=sg)deb@omre^G%#V)PB|u#c7l}OUyTWM$Z-}Kj3S$zoAFH zzU<bcQ8MQx!bN`-@6^8LtCmEDbEE2)%3Kqv^s?_R?@e!iXCMAEKcaBU71Yr$l#>ex zu&lLQjj|}jzVf}Iep;*o$FRy6D2&s|3#r~?)FB8WJRxiL4-czSEVG#y*~i-kKM~{3 zOR-BCh^?YOG!FY}hF~^;{_t~rnhw$#x`;4W3{rgM5PDuJ_S&7%k}X911^TbI$N|%q z6Bfqo8k8@$?2CxKCvCTRBF}kPylg{6pCP{`m|q`a<vI|Pejv(*@oJ99b-hlM)^5I# zFP_K93LL%gz-Y0<fZr)+oQ-LAJjVQZkfQA_|2Y35IZQmv`JGVM&oviCTH5t!uX{;1 zn{oBoS1VjhsoSH)Y^x$&G$6>h6RwYy$;$loMQb2(Nr&pJN__;`NOHMt=;V6AHk#Ci zjs4uMgPA*G<tKONE!T1<ns@78W;UgHmls%(SyIR1l`cy>jYBGhE!W0_rzPZvC4J9b z&}_hU5C`j2f&TCj`u%Fv_-7-<<kp^V;o>C90~DP&N4U5xZSpF4qA#qQC&`RJ8A>Q0 zAE3ipHE&Fk&=j!mE}3sJe2MO9vuKrIFR@M!DpP=aerLY6AZ-+Z$jcS^#qL6G^PFOu z;q>Kf&p}TJ`f^azN{CXTwIp`=$T{wYL-lhC(%BWx+fSJ@4s1j+0Uy=QWc3N|Jb-)d ze^8mXEG@l#v07&Oc3{1{0%X6A#W=REe8)8u)YiURui6})xz9Sw1j<D-W;Vi4g@yF% z)52e%)uVl|U~>#os*;yKVResFD?y|t>3>?eOp`8c!kp(;$N3sD)zgo8Ye%C&vYJ4k zGjDpvXb;08@yV`VO)N@x0irOk@tm=-+0gwP_tV2;<TL8?dtw$T7zG!R(qN8(mgnwz z_``w@n!bK8RPTegM@c3xce$rUdne!@c}7VF<|9XSUlN2Rp^hC#O{&exVepQ>!|4t= zeB;@+lFKGG8y&-`)MnN}t%O`mE-V_UT4{EN)P+*uBc1A5QJ9uAH|ItkTb98B#3z9i z;zK#!();=WiM)<U+JobRof(lcOu7JE;vRxx@-n&WhBxhAM6Jgp#4AifI}OycecciT z#BeKXx?#@L+0Et}MCrD&`<^PqmMy`s2&3gQtyIiWDlq0{{M@G$bwM~dd=c1F;aS%Y z*|3M6^Ws0$@T5R|fX3l*d_4X1VQWrWmdXOi=aA_CV(u-t;@Y}}O(eJk3j}u!PC*sH z9fA`ixVw|!5}Xj+H8=#<;2u1<ySrNm!M~By_wBx+>bxhn`@3J?AMlK|YmYr@%{AA2 z=3Gwby6(Z`a7U_{8l-?hZ}9pwlEl)HZL`K9u$rm4zNEb@J0?Vt0T*<*P5(`E@W!M0 z$fVU1wnV*A$6>%b5pGD(&52*;i;>WXt+5qrH8z!xHKrGlMx~72%51&Fp2>Km0HQbJ zOw-s&!wpw<)#$N!++u1hI~?2=xmXUvC8s35e%{0AxpsD|6&@Kdn|3;#M$MVN{yugI zYn>rU2=AKAg!1g-pd+COiJQC?zl2p+&-&1kKWTPl1}ZsacBj*o)ywPW_gFzqa>w_G zLPt+u$IN^*tGL*H2IA(val5#}^|;mi!WDY*&~fpSEa<ttY$>yifc8DsbHifC9=9dA zZ2Wka;raC#$s=a#AOZZSTtOpxGJQu^bJ0$FThY!@eNm$8V9IFJ!4J-Ec^$@i+RC0p zuxoW#p1}RibL#6WCu)jz57LsEl2;8Sdvaxts-!;{nr=OGv4n0tigN`ty@hc@R;uql zS2FLYIgxcWH~={ooxF~?KFJBZ3j=-ER%|V%Gg2)2-1LB+_bJOq7z(O6bGitv4H4R= ziecW2$IfVN9V0f_+5wq>g^{A#GV*A-6V?OCtRA0H{Tq|ISEG?w2X(&-^n>QZGd(CB zit}Lz#~~o=|AgZZ5NwnSkoC`wLqM=$E`LgLfgVTxz<)0c{Oji7SL6?51uJg?g6S*2 zJ;~qQLIA<s6)+5vhYAE!R~}=(<XvzKY|0B52Fd6JvO$PMIJr6hAP{*MEBiKu6(jKY z`q|5mGO|?AUx{v_obtw#<OprjNN^bEEd=YxdJbEUU!hRREux^zO%^$m9+K^(EqFEH zy%WF^VxmrUDD=-Urry=-4R0#yJCu-uD{(fG6>*c5{<%e=LS4c$Q$fqSsW8&!?ny)V z<31x|2~{DsSd<*D2pf8sydcpj+otJoG4VEE!0*dSK9iA#Dh2G_HLU(C>I-=XHNOHr zOxH9AsTVFLfY)LgCA+U;%`u6WGQ<MdpB2N$kbmVb{J1wpTjo28cC$wiQ=Ee(BSOc( zwMYB*pyXVi(-eWv;JW>JkgW*C)W8?<2$LHcMq?Rw+lK5~n}|jaQi}9f&hQ590}inl zi8bi!@7@(3&HoSrM&!?v4rajSNd}8F7T`1?T5%m%&2y<6XDsZDo1LgMBAJDgDKkuW z`Nsss&)(ItIJXkM4XqS()`zDGP<Xw|kvSqw;{fG7O4|0>;BGeeG(WC)<r~gIfQ&2o zvt;-Ed%df#Z&8;mXG-}@&?AM$d%2vjs>6PmgrH36SD=#{dcC1R*aTS7CAAmxU$wyM zgxSp7HErM}IHF}a&DS^Q9cP96ilo1@G|V#E_OpMx9kcviYX%d|Th#Q<h~&tjZBsof zk=o%oysbS$R?#(0WD9c&iyxZ^5^VI)VpGmN@y9g`_;t)Aj}i?wqOuu<_t2MJJ3V)5 z=JD8rn2JodFYi8BcKIGN9GNq^k+JDrJ<#Onnfk4JhXJGjc5EbW+lu0R*`AZ#yh5#V zCa4$~M7OW+ky)XlP34Ut{fDvrkN6J*6NZ3nfA}8;<_!Hg`S{TE8~L|gAb?=r(4TVP z-6JG^4L{@tu>pa9-Wh_M^{>8B0M>s$Oc2QW=%V;P{;d8!IRpAnf6;7Uogsi=Cem*| z`|m1HfnX-mV+>*iDiF*>0(;4jDo}x7CKA{~Lb~1rf|*E<F^HWZfM6yP7zQcv1OzjY z9%B$&JOIH=q{kS<_K(2dOr-z2!57<~T;0a1%Kn;u-h8gMf@sY6gbc~+`__!y-T+{o zW^ZF<3rexvKbAt>x3cH%LR(Mh)fZxU2TUo%8PA&^tI)ny*|nrCh?Uh*WPzfocG1C! z8^$tj#EW9bs-yFlY?wxlc+WcTv?Ft5)T6Q5;rbma=Q;|lJMn|0o;8(`WNErpyk5+3 zr|2}GH)7lon+G%y$jnEk1Z;e<wj8&@TUI3{_gP64GAgEXKvGvtz#Kg5+Pjf*qrrsY zg_BPlkfNbpF9>S$Ke^iNI^G5r6%E_$P9m>(d@wk}jQ6BXHQw-{D(>wi-S|OBn<BYE z|75jTvX>u=mqcK12L+?j@qy!cfUm1?v`l3snRFB^OwSNuj;V0OlXj8b*e+&=m!s<y z(1eKly6G~)mBnP{Fhc9T&zN`A#zfh-MY}PCpD3?(WL{&xHA%#R*M8+v_bO*Vn^zve zY5j-)Wf!}glG|Hh5B%qj@~vsoG{$d+rBUtBP_UyE0wSs_^N_8jF-5;s;;0&qGf!r; zd<kk9n`wdq7#3jQ57p<IEKj<Xr3i8BnPPBny_?zfBBz>6>}3R1S52$|S9PdL=15HE zO0BsX3T~r)OD|3`s(VuE?MSwi5W9^Pg_pfWnEAdHaz)-9Q^n)z2Pz4wcra}GH;^Wb zm9};eb>=3Axl4K42#g()_%N$9mZjQw6RyZpwpkz#F9=Gt9$~n@)K9l#l2-jl%Xv%D z6q+n(s#2?JJB0DtJDJ}{<5O?9Vu<DI2Iw`8Ij2uctf38a#0U7QJc=Z&sTpuomorPB zRNIuayx|twIatV(Z3LrDZ2)<BY<`N>SGGjoBGrK7<j!js*nAFn+aGwDqwyUs4<j3^ z^9s=AxacRz=d|bD>xzI-@<kRw)LC5RprVosG>3E0fl{PWYQ3+WNIK<(Fg$`DOt8SL zfPB({9&F&29Px{8r`ej8X(yZ$NjHS@w`SA__*8CpAKo9t`S2ML3<t+3%+No>!N%E< z^qN~b$QNBMO^rL(A!gGI<vEzZm{F8%!*~ZfgIxGj)%Gh*zDJ6t<$KA`#&ne-c=<@V zM(_6H@+K7oNE)AX`@no>>{1uzSrj3?{FWk^8fMUEV3Da&%~g$0f~SD*Xz=aHp|U{Y zo<b1`Oot@;w>G$Me5p_MO`3^NC2_k2*$123E0decy3zP$0y$UbN%z{lYXf9Aq@Nz9 zeyHLJKr-1fxhyQzepy@2eK7qqEdZXT>`mXUjhF?>_8j_zixH2ra}QU-`S|MHMNlih zuKuC{IrXhwgH|t&PFfm<{eXJ(a7QSGfJkV}v1gNqvyW}c(t;tq!^COxY$$=+s$CK( z;t?-K=}A38o*lQh$i4B?ciVGMhe)C-l}MQECn|Z}()St&>WJgs_$u5WaZ1hyUNOn( zlFINE5>EtvmXTzimmrg_o~$xD6BBW1*RyF?mvFhLIUFpXU-z{y%f-$}AMzWQ&`qjp z`SPiBU=fB(^jQx6$My5VBNf|jcz&p2HSRCtY^NMr0%{-dP594vtvTKX(K4*XJn-=- z!I|#ne4H+2Iz62mYm56Kr{c!@QiA+&Qozlh+psy67flRCH9hw<btqFU>@by<3IN)y zsEQG-xYbMDJ`ahamDM~+t6E>&PP($WkfdIS2^`fix!*Nn=UU`&+skZ84f<3da^Ux= z$?cozq}Mxd`Go0nCI=&u1uFS--FnuvWvw8-eBoWo!*JW}mOAGZrMp%rSg5vKLjp)K z)o&K(|L*Fu|5pWPKrq!4_?I*K2VoKi*iQVPNj4A{83z#3b_F)x<qtWwM=m;$?cX0Q z|8<=FD{kQc8-ff3b9jDxj=yu!fnbAQ9%GQ>7BEle_h0=tE;<m*(*b)(i05B0Pv<el z4#|lCf_XY%7^H?uKmeqaI*{v6PO=+nvcDQC{VD>>$Ep5i8`Z;Q?uYv(W5z{Z96daX ziW#TBJQe=#l4k?e_#5eb^M*1b*AX^1$MIlfc9dR3SI|CTJ4ujm`Lh?G^#SBQ3zpd$ zCX$cx=W88!eNR#ZaKZzOdo0?tlxs}RP0L*vUApu|U?0+2aYN3|%<E^XHEBA#WS-N1 z>-TE5Nm(q^tvbdFOz>PTnTo)xJ-1!avir^~v$;1X=zpc6sNu}^py-hXThb$JrfuKH zd#fU&{@S(2B&$?r<0o@uF=cIXyDAN}`~dD|LfQ1g?cJ3D&8HUuiAWzU*zzMx(vU`^ zO+rGCx@3^lZP;5{*v(*C$>UFGsI%4<f*2XUUA-n`bi5jI)_x$cf^KjSEE5r|(JFDC zNBMbpteaf79LvKh>XjUAAXKCn8_QR5EVye?uetP{MUyp9IV{@0v?&T#7MJ{0qvsp0 z!yAk&espO07iAVt@k?@6XvC54=WiG>V-U%zaZM?HI@GsFTu5YUQHPa|h6gDdf8>9# znr@VOt}Ap#|0;eVPZM1vfZkv9Y3$x$q4nIVCn_k$(RfmHG|R(NgHt|n%WK>wp%E9` zVY+mF^JrHK+9+3SO)E{RK7fy&RMAU|>M0g_iM_-#-hDFZ9q*nkV>9|}=hnO=G-2bC zy@IhkO(EujC25eMBYri*$-?(}S<=qsY}*f$*~8Q}_)do=PM4OrUKMGVha*;MDep+N zW(ACJD;MtOij$3lR+F3C1nut8f9BlyeZF@cuO4o*#peom`3l`p3+;_JygP#ZF+4>O z(UFpP;C+$}YTbTqBQ?<{Gy7IIM76!lFkq2(5D`2{MU?+T&4?@x0Asi~FcqKXlL5yj zXEm0N5dO~lnHSto-K)0`xS=UU;h2<=)sWgl-;IWy#Z4e_1{7+mMAW^Ay^O0u+P5o{ zkoOmk%##$%XPCiM)=^b3Im@!ZZc;!MmK7pGbcSQ2k~!#mjfL9*s2@6FMSHK?VSEQ4 zbdG@i%=sX$KyZzvrf&1#epqHy)+v=&aXcg4+b2PNqAc5sTCp|w8WZmB<(>r5_mq6n ziol_&OHsNfNY|L1K)r+v-x0-Dp*xZb%ZcL{FTZQgu`<Q?ot<gC)cR~PG5ejAUrQfk z4uK$?`tR(a=TNtj>y(xxce$f<EnECHT*TjdLC}j|=F>;g>>9YufFB!Yl2>}$slKC{ zW8oi(Gg?#o>Yxpm7^_0V9~p%qJ`sTtG;$-W?hC^fT`o^ym2vvU5FZ+bz!+^StRRT| zDL(i)zPu}tRe}T%TPL&*|H<EC!$dJbP&?CryhaYu5s8QYL#M>N{|HClSg%Z_5rNq; zA2x-`*YN&MWb4nVDF!o_P+gpRB?UG$Lv}!et_qux0E0z9PeUeWRz`&3;)%}$1yByd z6Tv6eO~i3s8R+LY{st)Gm_1^i^dagr*14E);q2$c>NwR9Iccy4szucEAxtuAE$na^ zi4OlPwdhp}?A<r)r~rvFL`lC2^QfJSRe#HT%!SE=k8a^=f+lKTZk;Z6*%u_9XT3|z zQ6`$K<l*u9DAQk3EjvA7Qb))}#8pb(cXFll0`0KFWRvE}H|rf~F22ZDTir-m$0J?& z(ATdBXJos-O{>=<1;B=7j<aJ@uG1eY9R2KEjiDMKPp~8P1qKUu7m|_Tf5Qp~T*f1b zw^Dr-Bf;>c9&dB_9^y?U`3W}|Q(f*SNy2<V?6=~Dg#N7pW7f{VXc3;7gxiy%pbKY# z72S?q6DB6NX-ALu{_;xB1|R)xoNY|G#76o>2<;D0OIPYQQz(^4fUh1jl}w$say&e! z&2r^pURHUCGQ^%d81F3%g~pEEwz50gT!CJ*|9H8(wnHoP6Sdq_$<f9#?L~oIgup5@ z)&9cuV0%*aso0AW0V~A=i^e&5^pg@?LLNDpVM_Q1jV^j>zEhKij`0JOba^vHT3$CY zM!8a2cZ?rX<me9BI4uL+H(E}2hPOZbQ`<h9)VDV5A}y_$59PyCYO56arH;z{^zfDt z(#PpVLU>xAvF`Xju?mP{?{PyVS2K10<Hx7jq-FkKSZ5c3^afAU_@^lJirH9K<jcHw z1ZNf`HR~~)ximQz1kK{Sd4`z`L;5=(-`k#U^B=~X)UZ3+NKg{atZrM+nKGmuQZ|;e z@JW5P__)f`v0iZQ_%&PN>qVbqtpJBD@mdD2@GAH7o}2@NfGjO0=l+y?<M}TK>z8HY z!q3ZS0(y_mgjI*y%rG97)`k=HU`4cb5YOH!BW5q;U>GGlGq4JN&1=$U#@{D=l4!c? zqD_LkHYiNgg1S@GpRD{Lrr_b1-rS^!M*%4g1pM#Kt%1n60sr69Y+w>A5b%e|GBA(z zH}Y3S5`Y6zJOn1P{wW9iyJQ)F`wtr+v9gl^SOI^DngBM=f1fM^{B3TIlkLwYH~w0V z?N@6j&R;e3|B##eZHD2m7?*?f-{$82m5=)?#sz@q=D?KN-`?`y=H|eZ+Q%5=7#B>b z{SEuu+#Hxv3-*wZhR6fKl-kD_C&X+Sm{R)~13<jv0h=}gh5;b11{U@|!Z<(>io$?k z(?-BBE{JauEbM=bL6XXWVADpxFo?HhV1^JF2C3i;2xbU@VXP2W`=_r2V&N1J%n$;@ zAWc62f*C?!7^D#mKrTq)H76&>ABoqp5x;V(H)<!62rmLjDd;ml8#xnFNscg038H|w zd)cQ|$)p3Rd(eFEFVV$b;g&2K#gL$SCZ^)IB)Oh<j+p#78{`v7G3i$DF~L#Hc`osC zb4SnQY1MSdZ2vO1f!QgmbmSe65Jgz<2h8kHx-eXxnd&4(VSPpP%aC!a;Ii7;7EXlD z8D4{E4i9a$xW4(U(vd|iC9P>=MeD6}+~YRr>>=3KR8n7_u!N-GtL}Q7x;iy_k8pA1 z847d5Oe>RRQb}Rsu*n+XZKL4jJD4a@G%6fE`$0}U&Z?9=r;y-cJQu?@$-DNlJE>Wr z>02_zrG3{>8V$wjfSA~!oJUOctfwdMMt2|xr0QQZ5hUR7x{SYLw8Yh?%EH<fRQkfu z_PI^1`o7MyMo)96JPX1bMtgoelk{gxJR=`MF0CiU@Y#f7jgUvkQWecTS?p_c@SN5s zd9fJV#VpHU%0g%axWddA_N_e~jyaqw&<Ez0irVV6Q%o1bIvb1gHGb9`XMg&^+<oEK zNU~MlN0efvl8iCbg%Yv0*nUvur@maPKL3daDn^k4KlO#^xZf;BBiG)vXsSYA9M4Tr z<>FM&;8b_!=~1Gs_6jpQv^U}9*K9VT(NFY&aANC64r<*)N>hNIPkuw`DIH3n&z;?( z)~i$WR)s8ZO)8NF?)gPW-vI-|)D8UALxRVAFH+o~UK_qnW>KGP(9<dw*_wOJCz^4C zm=oa*s<OR1Wv-n$A*1c@w^p;6hnj9onVu%86FKd=iWVA0j$cz*bZa{7COg%_7>t>z zy^P_*;W(;Va+JROT#JG9>dnB+^8w821?Z3RiN<VF#=5f7-cQG_BRBKNnGXVnuXY5J z<ez?y46fwANIJe5(nP(nX=MrF<)NK&bXN0nf9;A#jP&k8WlC08vC(iAcV#a3M2n1M zdMe@TH|4E%Rkh{ur=?R)OKbJz9y-HcR%c?ffE?jV&{*kFWCg;sbyUcng8lM1B~0TK zNMUfiO@1^RcOu-4wT%7dJtcM(4_z8RCiW28u&U}~6ESgVNZ(itWDLtDW1Y4^eY!K3 z{iza(;8gQ|T5)z(TJO?9uv0;`gWhdQXCMaW{h|n0|Ji=3VnCViy{it7OtLq%Xzp!7 z`G|;N>aHE#Mo~CM02y1{S{B`n1EGeiQeGH0ss!jdI<}>AE%V2oip1@zt5WpN39mpK z{~dJE<;(1T)XA9ZhWqs`T=9&opFfV(NRO6o5Y(LBe$1{9tte`-&#Ipg-5)VX-#6Kx z*Gyxx_$V7!EwRJwLrgYed9ey3rKji&d&22iTd0pLH%3ZLrT>zcw%4bI?a<lY5cNy| z&c;-4rbKE4vw-I<LWZ|4t;fOIojshngvemVXNISqRq))3$Qiy0jYXSt{TQQ^`tLhQ zw-Mnf1wS4=c)Y)nxB2no&UPw~I%gZd-u7vm24dmq$Rw8;ACo9Xm~LfIpGV=-{o}eY zgXqq79pO~}NGgwqGQY}%oQ4i1=Qn5m{2IYh?1i18hTU0dx5|l_%sv+GJgjeJB7qoe zGWQG|Cn(88(N@zsSR@G^3Y|`;MP%sk2Crxm;(pxi`8$%mx;b@IZ5pslXl?{FH*9`d zQl($AZRLtLT<ljkd%3mBu!~m)4NW_qay=szw}5eJu*$>aE1ns=LJlX_r(t=kXt$d? zWhg@G1~Pg{_pH!AfkwbzBz-cl;LK{7NIJ4!$F)NSY12U-2NQwiCDjLN9YV4t_7z+< zMEf$raUsi46{y`w(~L;>)92wnfakET@wN!n^YR!8T{glpdC3^pc;%-9$I8P6P=|-D zj2~-GKTwIvo6KP&xu?EsH|G7&x{Wv-B}m0w*;+#rJM60doVI&a6KTwqo1chHH?sAv zO@%GJ@`0NM#^@)G16wdlgTt<9u*;O0T89}aT6yLJGesCN3p&Hi_S-!HQVYC{Y4r7o z?#d+@K9QSnhYNp!lp_7GbFL_KnJ)jk;&&?%y@5{z5ldu^{F0}LJct#3DqQJSnkfe| zCs@9?JM7W5KeCSe{(!^^Rp(W#3hC6q_21?$|5uI*V16l(>(2~jAedtM8~N8<JV>$x z5Nux6A98@l31h%NB#i%MO#cd|fnamVfnbxYetV9;&BcOQDPS0+c0@ohB?SzFG+PP? zW~6{&kOs~H!Gshr4AQ_kAefKx7=t))4hS~M3JimItqwNH3Jim!69B>N5ikq@=@0~F zkAPv2dL{wE?2*S90P;ir(^tX)u?QZ_9s$E3eq3Po2p9&bdn^#l9(jzhLp-U0*&~lJ zHW0)&$qgZx=K7;b{V!^ow)0##UejeOl-ixelEDq{<gJsRF=>3!M6(hcL+Hw~Hm)?1 zbkH)KdB05lv>;^t3sQOW8+Ng@edm_9y?t};S4S^s_ovo#$kOCJu<V7_lq1DmUmOp9 zb-yYiOJ!8m5&pjI-+8jU&G@m;0EKocZP;U`-2bwxy)iE##cH}B(2hUlEj_5YxabvA zV^(QzLeh70?F6yvG*3+rsMQ6DU9C#0aB8zRO&4Yd!??~%lQ07s?!2f;ERx8r&`1=0 zWBvoK1349^a0K{Si4)J0us|YNy~nZ>KSmetYZ&8m^4pqJYLqun60^>tJl|VZ`-)+@ z0Jncm{0OZnRsr5NW&%0Jtdp-tqRU!6o32}wd7AG-;;UR%M{gQ>`znhyFTRwh^RsX7 z>8LFBWF0E!CKDC{eW&d)cn#)_1n3vrlN8wm-cICOP1LlgJtU|eabU{H-Dgh+b@tF0 zR`eyJQpB*K(6x<i*Q!<3OJccQZ12nK@+S+hZF(>>dS#g}1t7jz+ZgE*&twllhxRr0 ze=Z`KN&!{NlgYR#JaafjGnXx4E1M+Rbpk;D8T<lu>xTa2X^*%{m1~<wa+0ZF)grog zB7Q)5<XBeM(;|F%L6K1#<x(|@23yCHwxS&TBlREMIy-PP%bD+Bt8gP6SL)Rn_c_fN z>>WWCS=;+fh)2?gD;IC#_?UN99aCP`R@5lUyulD}2YnQ|O=Mf6`lv`MjE5Ci%E+}- z=aF{Uy+7aV$WykO!KLt4xR5EuMP;&FJ_kl+XBvw0L+tqC)=U<1)VC<)JUoi)78q93 zD>$$FU3%Ue?Xl}*{D^|RAF{b`>Bl0SIK4)FzqBh{Ous`w6qT4GNMEGcXJtrKm*j?# z7}F$75?>cR)QsaukZP;J!Myh1=AxGhLyytamg;VKvZ7?`oV%y&I-z>?#j>(+(U|OI zhQg>@jA#t@wtE(~N?VT_-ClK^(Ue_5%VA}f#i@MYvU6VVkkApJKs_$o&piZwHv7hA z*$LZDxUI4zV3(Xnj&dpmQxI!NvbtJ%a<UgR_|*_q59O?nM?UhY_bLxoIe-Geg$naZ zw6yh#YWgtPzeP_tx&&cxv?XClZ86E;77>Qzg#Lp;_d0#oX;LhX0n8wK@CLw9ND{4) zqD8)s#=E6gzHiGJu8mQf+?dM+L0agH4f$0*zmtadc42z9$O)p+*EJ&x`1i=9s5buW z20{)?F(_(iZy3)7%c(GL{i_PKI5$VJ)YuthKm8<60{X1TjjbRXb)XXo9Keor+$L(` zHo{viw$m_G*g-W8e`IfDdUmfpiI&Xxu3>eh(`W<Eo1!Ds!+YEoXJV=8FkIaKq~Pn9 zly^ohFz0!eOYuU7tP9VI)~Vi}3F)ITRt*+fl@Khv=h)0b$S_lRTjqX+Bj4ab((WIr z1Z-=Q5904lA2UagdE$+PDI*4w(c7^Wu~Q(4qVP9&)rt?t-4+%sOLkaycSm-3BJ2<< zYL<<!q0d#wF-Z3<TB5l!&JZpUCzHN<|Cm-^>N#GjfaTK4(-i8Lo~JH>qmxg%4efn7 zWg0(>lOIy7zO$@TX2EMfuwrt5dtEN7Hy5tt+A=Fo(`w$;R!kz%2dfsi+LzDKSv<G{ z5YUh7I6~m_nENrMLD>{IkxNsx9%JkX^fTaGB9XAZn5bu!9DAS<Ks~Plg{^2w;!2(v zZH!jI^bPM4!6{9fm#PxnifvwN%C8nRFz)+p_9Qw5x$(|a<JEc0;Pi(PXBBtH@Gk-y zo+~#Nz2Hf5x~nr#xu|?#C|qzzc#+JOj%HnuZn?MVuskz;UQI=Tn|r%kb+bVHJZQ0N zIPV~?IoOUD3m^HTjP0|g<B2Un&Uy)%muy;efs5IdO%tD3Y8i5P5_`#N_#~Vo%`1~W z2%nNoYrig@hFu8=wGx=N1tqqJ5XOH-MA(wPdC4oZC<?T*v7N>L`V1?us-`4CY--jV zDNr0&TnZ%iEpvwp-B*mKn#QR8oLM&lmk_3JF?k>~N|WyC4#QjslJMqL=I7(jHY481 z7_{2+vciTKPZ;GsZ`gYsa3ipgG`g?JM{>@A$o31(_qM8-le(b~Xy55)m>5j@(eKQj zvo6RVG6DAOe0_awWm5c2@KI8GVdjn!xVplfZ=lwjPADnNE1h7i-mR_)gl<F(F^^9b zmjy6kaieZOAhSYsM4h8SiratF8UN??90Gy~kifr8%0G$dAB}YWkA3~`)760gl&<Cm z8xH^klOun767Ii?u)*X=FbrbZ0+<~67~_Q0iX8|hM?S_NDzrc_IT8$m7|(;rkzg1b zg#0B4Opbhvu|vvogTMxHfnktWgV6Y$ot6Dh8o%eL^+(UwU@h*ysPk8%d;*nT*Eo}w zbMT6x-dJU^3xt9WC-sFsn!G@9>(~|+?Sy_XH0GHQmf839@4Gff#Hs@KXG!isPF>9l znrsoSn0Pvj0n_=DUKciv*Qchxx&Y}?r`>;YX+g~=bxE}+=vw;m<TLsUaeS+9dd<zn zB)vC=8qS5MAYEG*I*_YwT<*7qCWdB#DRN2`m5ojPyX_y?T5b4CZIsDW_K3As0>zR8 z)AMCTH%$3XZ%#oOGA?$U=X?Ul1u{)&5$0y!Z=s)sDTL-^Dyj&qrs4%S6w=3NOd_0( zyRE-XH)^)I<|F5%`>Y1doono-5atyuS+&Kc7}NyUp>an~<2qev5Yal0o16QS?t2T? zaJP{zCmmZg4MKk52Xn@x>O}LBUQ)ZpIkfvRxgFX0I#@zExS-GcT+fyHyaGh7^CD9< z5A~`J!Y$mGexiNtTG&0=>jEr>EghvR&))5Y66{k^>;>@>bmANLN;&peNL);X9gkDt zjK0}NsMMy7=ACwp$L%^#uKKXRO?p>UE}C85nO!c!TYjf6wq!sw{RVGJ?dgW%uB5N@ zvsVF*!phDzul5gIycC5yMk1JUY(+V<pq<fE;VX)YrC(7xQc_*u3%YGcMo&3H%K^y8 z4U+C(z|I8N@H50#Sf0^te`)e4Y@y#Th2sVJc?53??*be80$aL>eMD^Xv0XwnVPnX@ z9fuUEGzPzsqSmE&!Q_lR3IigS>E;F?Hrpl_Uh(x0$#TS?F`Va~AUJRrVi8YeZVO{f z>y6AeFgS<TazT0E(l~sy$n`WL*4%ZUW~0S{Ybk2T7AwENxE8p}E3JfmYEI$)EX=q{ zZ=h-OZ3VzA^fSKHq<M@l1IB=)!H+Aw_i4l>KIG3BF<!$~eGyfU;6fOBX@ULa=u7Ww z9fpAqLTh^Jg1H}Vf#+%PUti>DkJNY@eV_~#^m|D%zQ`B_ll(JeW|uWZq@peHYU8~$ z$m9CtsM&El(ydo<>&PeIL{E_z(6>4bo$TzA^Y)7SLv>Q&Gq^N2GULfjceFOGYHV%a z6e@gKsk45&ug~&WEJKIZtKyyjtfUw<j&y7dq*{JbSRquOz1Ggh&KThq6x3cG#u3e7 z$zu6xKIt9+AD>xEe=(jMg-$t1{C59S!?*q;8<W1?*B_v?WAfs@ud0UavI(5rG3|Z# zK_oYhMAYpBlrx6t=G~Dv`004k`V<PDjV`5m2ld6?B7Dz+yGLB#s>;lF+AFd{602%K z>ad$S)C!1|3koipk?vZ#ah-=jbFUa<i>}r!8#xLwY;!0K>x>^o@j$OT@uk{v7cZIJ zez<pgaL(I%F#rIh_&muuJDuHEhFj$%KPP{>MwTXAe!1(bMZ_ROlxF{WX%=*(jWsjQ zguzoPUcA-#<qFaK^^jcRw*YC{!T4a$IqqxruLjal&Q)6PWt{t&_a})Eh2N*a3bSX$ zs8dzcsIqL(T>={SndZpdLKFq5dcAO*-!no-?H<V;Z`eriu1b@`(ZnMKzBa}RO@sS_ zfwn!h#5;WBkG!+0Q)oId5m;~$S&5Xh$3(ZE5}GyD-4`}m2XyP-h#aAF=~!4%2;7t7 z{=&~+TN)eY8I1EJo8a6_9qAa`>|*k~AhZdEH@f#`(EVqOD-U0{D|C$D!xEA&%Yt;p zb+H7fU52?`<l$U@Yn?d)WbtiUUlMeoUo4Ylx1azE4c`qHX#ZW>Mj-F!3<;)?#rS4T z!}Y`f6_KB(F8`*9w8~zgiPM0o6zNMl{^3KWEa{lHipqG(P%ATqtwV(a1H-*kaZ69? ziZyR`7knDNQQSGmpiPLFsqJaRIbn0<T)+JY6Zz?a;e|s?)ir<s0k0<BY!>GmFt3m= zx?|S@7Ma*M_K9JrCltd^txqX3gEWb1n!`hHOhNq@XeHLkrQcasIv(C=la-vHV}C&G zX!A$$Q{3mGg_Y@UG!+ub*pB~6k+OzO+NofZYEF5+E96)!$uyG0<v`H2JdNrDHLr2{ z5v`-!l8ezotSH%QrYNd1{Y+aRhxsP{c{1j7^kTTfNaLE@jhgag?UeZJ6rS3ptY7rc zbMrOv2ZHas6AYGy{IQ_a?qUx*;}Q`T-Y4e6t_l3OZ&9ejuz?OunH<<vL#WBRHYioq z62jT6q~v+1^{@i`c_qo`x$$xQxvrU$6V&QIH~ff`twJ~QV+q~QD2~%crK-+6ym3oz z5dspl>6?7~lP`<$*hE=h4DoEXIL%@vF&WjQeI=10AwnG>HIsC#N5zUxbG)47e)B^t zelWyJNBFfnfzPz8HHWgFbebiC%Y3)CvSKl9_F;WBi9c7jpz$|u@wvPb6?hjI!Yci= zzGNcd$j>+(le7u&7xmo{Y7GN=9#8LW?cdJTsKkFJmdi$}-&h>A8Tafmnj`p9mxNi6 zX@TNy>0?vOk%D)gxr$5Q89IVjr{aNE`_XdY+CCAcryyClkbt@JI9K{~AF1Dr>b{F^ z(|6_UV90578ib8az#Iz_LR%riF0h6=)T^Mw_IY>9onJ7Sh8vd92zX&K=O50x?ThLw zo{CVaoG`5cF!X%7w@;~)PD7A_B3^Gi)pXrw_dzT$BY?`xdI}YJ_<B~4PH>sj8s*Bt zRN{pk?C!Ami_Ww(G7Vsij_fBfzBtc4yRplL2RuC}6^-Hp2vITUw<(<eeNpj$ArJ<! zJ`M;$e~GYv5D5R)4CGfJ{C|Z_f1hdw{y)=pL9D>XfiMWnU;XV#{w~!F0`phFFb)VN z5D3g)eT+ez?gV0c94vxikQ%3e*d8A@9%B&a--6g4=T#qL96$)UM-Z4m2!^pkd?k;M z6pt}>NVB9sVCo<k2C42E1ZECC#@HaW`UHVZ90S83b$0==LCCAJv$BK!AX+b0>x=$X zq_F?O#b1ds5ekX9o>~X1F*^3e)ZnQP7I`q2SpE|W<?~DP3}_n-6PmaXL?yxOgz2(I z_3}^6SBEGlHE!L$42c0kKY%!mB4Q>{%}nN4l^PrTv!2N_WYmenJ_y7!tz!}s&0 z&I}0?d=2C*PS~DRJ9APa(r`t6p2Cv2656C9OF3<wo4j(a<u6*$U{P~!+b>U+8bJ36 zDLJ>mn=t;^glhAA^K$lvI=}i;1t^dFsl(4OUph>{urHi+LHWyj|5xmR4p>FTSZ$eP zm{$t2*_7s?D?n1Lg-@^bFH>l-`%a#qbu6U*e03i`zXmd8qqi)$@W5mfn&{@GbXe+h zqK(+1CNFnT?HZz!<94R;gs(E5y)no^@Y`34UzsY~(3-I{fSJw{t?7Bi|830URbRK) zYxf1c(l5xwg1lZz5=EW99h=;}TCCsH>1d(}T}#tXb_l3wL~%<PN!>&aO4sc2iyZYY z0-kb@p8fo=g{;J|>u+A|Y@v+i-$HLO;g~xSL8?R|Q+If(s=gR6;KQKunqU;Gwx%&l z40CZaXfY;`SZ=D}lBmfv=PWRvgSiksotCKpVVYCHPCN;=3k7QQ_z1e9X*JDiCC%S^ ztC}Q<s+VLW>l>0JI{`INP`I|T89E6rjZh44q4C34|2Fz6NhzP>>NyRG@FUrFGCK?% zkM(H(?#vIojFWpj2btm~=yK(l-qNM7hRqn(zF&-mN#bc`KQ!?95Hcx<l*9XcQjDS+ zo%#NrV#rwxmL9pNSN~N#tA44I3qhkm4n_EbbbQuVX5$qLgpMh`>S2Xe;R}yI*Sd~Y zGZjf}n#u|l<_Gzn?i>NU(Bd{c-XZ3CngB!f@CNeA<!9EXVxPh-T@l0?^Q2O{kF+A} zgOuwy094Z}7K#2^qVbNr2`pqPl_7O5>ufxf6u>|$E?kM)7-iJNn=7hk({FB!rI68w zJ}jsbm`PJw6sq>St!EYT`F1Dv(F5b<M(^$wxeiIi-@xL@ED&`qm=Zq0yw?)Nl>N#` z!ZR=uxZc0PZ*R0>lg^(opcuO;jkAtqENmpQpr9-#I2tg68cXO}J4WnfttUMR(yl)1 zZO!=JSOHRV47*Vqd+V;L-lRNcj3;cbbrooC{i44_Ns$*<MZ4HS&4FtVR9rbcfri<F z9KFgXsbef7)Q&V;7222g#DC~q|2aosS0n*9BTf3!-Sw2peFKaZZwAj$qeXMa@ybV` z&C0&P=dxGNi$w7hew4TkJ&}u{8`L%Y%91Y7Fax?PGIvpf6TO7_*#zq~?BHCgjz?3c zx};kew^WmL$RdIqLO+~`<7Dy5wK&~M>C6KP<Py>oYqk^uuV*>6u=d=IwTFFW600>m zxu($G{1D*Iiu-f48l5-d_F+{89_q`}1)1sUF$b7_K)sCh2jgB!5=IajoIFjzol_#8 z{)|1ZSrozk08C;9m${9q85Nn``}|E3tMWEKKNY`whLh2>$*dBY%5$QoQC`&*+?|}1 z=Bjx?1p}5nxp!sVdna!C<`bS4QX;~b8l>Cg_A2>@JN;zq`d^hiePeqHvp>UfEk&s8 z#u(<#ErMjrD=xxMzMYH=pp5_M6<v9TL6Y+scvmqtS-4M^XMP0DxhL1~g}~b_=Xt1A ztk_6B8g_G#KRpL<A^<A^rR=y9X(H^c{>gkOLb~4YC0Uj$R_baLb$fdIw5`5EvLed| zhYSMD15;MB21mXdgFIdmjqre=D`_ge4t9U$6cnN7VLdcLam`D(vQ2~8Eocrf0^!B1 z^!Qy<N%2f4h@g-99|DsMxx7f;No2$57yDB+(P6ZjK_%=KueB$dUNfH1(DYOO@ELLK zqns%794$Wd!4a{Nv(Sq$P?=P@0R%xsBk<}~D%b^CSJ}q0iu*1VytWQN^u>Yi`O=i^ zDR%Df&G2G+L_bf%ao{q}Y8cCsv(2_SUZb&;rg0~)Eh6~1Ej?Iq!nm`|+LIWkqkFDL zZoLFHOT2VjIcGeuk+u=w%q+`cph=i^O+V?u5T_4a1*4{@byqqxHX;_S`T29OA*((T znhuH{8RH0@Tv4;8PvzbWZagA~Q&-Uudw+py6!hxCVPV6>alK3=!S`bAb=E-8#psbG z><X6p`78Rsg;&|%12WeWG6|ROy^Xku!bwi{O6w0oxWwB$s`RQw0uur;hs?bc2R=7v zqSWpCG-Mv`>M`)5r|m{wOH16zXOEt_b$RDC`jc=Nzwueqhhwm5z!ARIjb8aktFDX6 zRaiP%KP(s_tcl9R@Y*3-V0rgFH!9yj*WIyRt=ec!>$(k_(R$x{F1Do`+AA*u&NSU@ zPq7dTsisCk*EBnM#D$nH5o((sC29*t1wFEFN4o&iBKYoYuryzOeAxi3`{j*6*@TWY z$s1(&u4Twq*P`Bk&7@~%>aK$Z6|Fx_0F(kp#;CvTvg$o$A^a#+aj__xVA9NRnMWBP zP?i`D->B;oZu)ZZmRn(GvA{7@vG9D5?d%m)<&qR3Dw)f2gcx@#YD0{=S;>@&4>6mh z5UQDA9X+z(-h>o1M)-}r8Q;sS=g_z{Ik(1l11N}>zP2fjo(^}1x!B!WyGj=GlV8FU za|x~S@Wa^I$XAG!U(A9|$~H<ZZd3Q{i>52tN-JtzfIBhAUMQEF50t!SGQYaogw}r4 zffTW`|DVZY|5qY*ux<b#_CHHqgMMo)qd@kr(CP0}*Z+F%UlBVySn3)C)+yk(C;7Y7 zH3+Oz02l_T7#0N9Dc~{22{BI#)+yjI2C=~a2yABQV~hh*Lrf6Z%u+Cn15%(5Hna3G z#tx~h7z8G=KE@!&(2!=9va^Ezq{yIHO*&?t3#;W^?L;z{F&S#vU7FpAq4YqtMqI`H z`8HHkq-Y97wMS^y-Nk$u{Lg6dn2NUwQ5gg~;_EjJ0<7+~%@3PVvo}))PWqZ@hqIXL zPN@!!QBy<L=7!A=z1AkSPO1j$%fW}AefAN!&Jzi{erzFD{fOUo(~E7t*|Or}79i~` zhzT2<u^1E{N=@G{j8<2hh`YOC_@3Ip9AeRWZFr7E#2Ud{-YXjodcu-|&>ws^xfODu z51V<&go{wxV{LbMRYMwJlRRUI+nD+B9056&O@me`N}NlkGMn{NU@+UuXUw<vhN4pi zgbeN;l~l<?c6=-<99#%eZ())<^c(esea4cXW?@G-E*m-2xNKa9O3aNgUT)y@yrz$+ z+<TH|RQ;oV8%IU;N4=GPr-8(Z+7=7r^r4hVm(4RCvApP7IjwYB=#8(N11O_|F)?U; zIwh`aJhY#zpWAJ}+4iJAU3}Z%x3hCd$50`$Y(}wyNh?QF>Bm*<e4RgV?+FYK@+^3A zi!NuxpLR~sBSl0V0svk7K$)pwPA>Ia4)X=19&Oml^Kf@|2Fi^p`8M_!^opwM*d>Nu z#dCYk6biuf#^nUBy<^Z1<Oh|T8J{x}-hI|lY4UiPTld^j1A3}d{yU6oUPfqD6aB=T z9Z|X`NlmTbD3+HQGu%s_;=!jc)z?>7^qV7J;?}Vl_Afw_oNp@rJkNH4gW3%fLy>%2 zg`Gr&x?p0LNW(mi>h-A^d*9ZetTAB`#a$t(-ls780KHmRdV?%_&h>g)VQLKy*~auB z%~o*C5hfjq``r#}jLsACoZ`z57RY;0L29qufY>sgyG2@Dn_W2T)%F0tgIzoGL5I_v zraDn?w9IEKA#dO&NOF2Pzj9`1&N>!8S%talixlN!aLwCgsUIE4X@W^kFIW8$<`4kb zRD7Z=41bPz;Pf5N1qwHc(wt5;4R(Ddv?w|4Y&a`-#3fcP)qp896PG_E3rACh&5&`- z3=d1l6%c`iRzB5WnDM|Zc@ZQp7B_BkYP`T0k=?~!Q7C7`{5Gkz!^a+3H(_cgwn>55 zw)b8uHa88b93WI+ocB%-Y8a3@w(5=?VA3%G4F~~9eMW~Wb?%2VteqlRO&jg|82*ab z<L$Uz@LWSQbEX~CPQ6V_a<sJktHiB9Huq;AzA+@^E}$&Zt?73q>>mS_CHLN37H0P> zD-lcV1C@KE0=|7~h*Ps~RmHJaYV17?L%s-ypKnR2Ug&dG2=?u0DRRvVdWSP&v_gAs zT%j>UhNTY$8*HcdPFTfRL0thf;)9^UCmTUD%SoR<UL06T+P#}{y{U`Cs#4Owouf=n z;#{qY-xk*y<!L!{vM)^ME$p26F5ujM$Ot_mk+MOKM4lKok5$ENTOYt2-XWTh&q@-3 z*NWa_DHCtNj_UW5YYn$DJjlx<mtxC+po<EjeV2)Rj97UxfB0|&#?<}^nbNjC@BK~f z)AuH4@198>ICx6eiwu&Td>31LrWzg?lYOrUl!H<#=voPd7n#X-Zcz)CjSBeL`dme^ z4?d(gv&(pBF<?ka>nXcS$y*)X!IWt6Wn{!o*JZO=DDUI%?QvalPF;!?;_s<4p3a#* zjdr#FV)r_fZ>Z&Usglw0fFm^=D>DzeHs#lfcf|WODPyd#snLoXsj(zJH*aVhbDNUh z^jcyJTlUl%#qvhdwDs1!{A#L*t4u@*rH%YX_7lo8cyuQIq~$(djkAf~?W`kB>IUC; z%8Dpv-2*2V=$~P;`MVYDWpjO2=&wupVQMd!&;$y?qsMQOsBoJUPuuaWHBAF722no1 z+YnrNIQ4mCBLkz*(S{6_Kk~`<F<Jmvf1<Jb-i|(arg5bTS+Kn0swOL+V#>d3%BnD< zY8E7<NG~K+WI2;eSgYa*t<Y<ikofSV?Vf<Z9g)vCJPb`1%7ems4&Uu~$&oUP(0S;q z-V!3&smc&y{lOQ5#7atdqU|kXXsXeQVQkUSteV`<Wk+m34~i;(GCboKl&clw7{%cX zi_IW&EWW2bC{iz3xX9J9mstMt4IP)5l>{hovCN6rz}vZJ!-@F*poPver)5w1IxvT; z7zc*Bg73SwPWlTq$_rJ>Q`evHVZe%(JsKACG`&(+Rys7eP+3Et_`0&N+6ECa?02i- zCTBY=+D}XAT$y;1Y&A||{QTD!1o7+aLsAwujTm|*RoteHQ_MssLKkohlci;5GomNX zLumFRtZ55nY97ecl!HG6CYQd2X%F%d+>s5+qgrpt^H`;_)&xF@g;s`VJl=UAyf@j- ztVv30m2s$Xu$ySJ9DOzdb^n<;Y2*9Unh2sZSEpXH%pL>#Y@ol>LelM)MJ1A;v{|A> z=nXP%fxZ}%k-gXW#9X`37ehM7_zPJMk~OMlyt1?fWHz2NPz_!cb$3X1=UsvK#IvR@ zP{#M>0(Yyk^#MlfUN8*f{2Bx6CJGu6Q}To%?jOxg6dqjfdpX1bhDEIJ5(!H)>LfDH z$>fbah0F^n64{<<RdhC*Fbs|^1p7Evq2o4iWbuBG<DK%1>8suIK0RaaHSPNO-6ZUJ ze(|@2TU%X#%d_Zf<SbmuH9IoYx-?8vP3ItWv`pkyFXlNIdDof_oFj^k!R>0<76&n3 z%O0|exb?nGD{@p}pv;zoO~IFPx@HXI-j6@4{cRm-Gf<BdiP|hz66ZJSGpNw4PsUqG zytHk_q~U{K2WJPnTNBASqGDC_<}^e?O+B!*LE&0WU_uI@{|`;I{jUVjU`;SUe>lh% z1l9-RH}Y3iHYdb{ELbCqKjpxJ(8nA*B)bp<)(Ybfx!-$X{APXvxc|)j1hJC+8V~zx z;1U<-zZXqGzt6h;Ps;&8tn7cZ9Dt4EuTEdT`o(hq+5i1=?2j%i{v%la+Y5_-T~hpY z`~iT~#)H6y=l=GV|MtQH%sU3dARZCGq+>7)lAQ+vbB@6<NOeLWu;ICnF^IFtKw!gj z!7w1i)&A}G`qyO)q}9MoUoZ?(kvj;?^aaBpS=b;j(-#bb)Zh*TX8M9*kjl<MV5aY5 z3;=?-+CP0I07!j?KwzdX7zSy=F9^)^1;aQXRa}9YzF-(6@d5;9`aZ@uI3Xnfz)W8- zj04htFPP~IhOt9j?Vr994pxY({nJ;%4rvfK2+Z^a!yxV}V5Tn^21yVGfz1L0!vGLh z`=_sjode=(|MZoxvq4<#pS}_{Zb+A(V4@Zn288q}gLztD7$>BM1VYHbu(1Jvf0Tjg zw^`@H`Bgla1CPn1WQ%Gt+HKC}$At~hz&Sxh*2uFqHj;|m;k|E3$T8}#Imn4|!;Ho{ z-mHI`maXumlBRX}^%o1Kj}Auly<+6Xbg!OU_*Z}Nk}c`8MOBPtE_q%s&Gu36Pzg(% zZqd8zn?o=PA$#Iy`6*Q0GFK)sKe}pS0@jaZMU^;714USivpyk3g}wc8cYJp+Lj{&i z<KCT$IBiI~6JMijKR=z4MJ`vxz3^OPk8RU^>Z&go{hS*>;nV%I-5WJ5#s3LG9zi>L zfRMw730a&8e7WhbPP}{Txw6=)z!E^e>PL-1nABQ}@8!h<br_C{&H1h$sNWFYdLb-R zMh)lt92Zi;>n{s+zGlAithQ#)q?ljL<qyuE58(4ou-y~35~Z(qu!H-|j(3iZN%lI3 zhmppsO;{3M{~J<W;;NX6Q`Bbe($sXAI8v|(&NW*m4W;&ChLP@PU`>ZG-tz5Tf4cMg z9k{LubQl?8`9^#bTpg@eL8b3HJN>6}so3Ua@u8@#I%1GszUt?j3z(yj+&{hX`%=#^ z!Kw`R$->kX=~K-{64_1zrWSIiw9CvZ9TSTd!IH>)n?el$J6?%+qF1?{sx{&;moG2l z7Cv`->|_Y8r&3CRbmDtEEBdq%<8#}eDR+waJfEk&aX>3vX1U@FGA$#{9I|nh6_S>C z!M`Z0nwI2&jSJ?s?aGvjsyz#B*PiU1KQuunv0uABN|YZpk=1#z(Y?7+IJK3WWjvXo zXs3W0;c~Jca+>f4nxO8A(zr=NzFsSvrFMK+&1{~b$3ji9<SY~~-#<efrC6|lNFFD( zkEBPyqNMFRdAq9;uXJpm>35_80#D|*N#|Ma6-B|}y8JP&I?OU7cz3$HIy+XE@1E^$ zg}-}yV|Dwo>vZL17iQj_%3PI-v)J=<$%UJw)dCZOt|+?*{H-8m*xTuf4NZI+r04rG zg;%g|^3i%^cBy&t7RE=^>cj)lHs?-OpNo98_I|+_kVQ`r7MU&o2B%v<A{^imK=cea zMovp(e?aO$@qWX#eLH{^%AI7><c;dQ!)PN6n|C-c>YEN_B}LG9YERQ(T#VmJ;!8TY z!1hl_v{Xy`qZlF=yY}eB@V?tZf_`mF@8_7EVFR#HVsf2QN^a)P<%rL1tgL3p;$gZm zP|Tu#gfhP*4#l2$Foe}gqPs4v+21QTAo#8T?fFeo@`AQA1!v?CXT+&uJ^e#Qy2~qh zge4tJq2Wt6Ol7u^F8)13Orn-qsRcTr`<#Q*1};$vxr`>ot0DI~s`sYvB=BpuTuQKK zgVD8dNp?gh1712iQj(lo%;U10c$(ozG2VBWcIns*hBvS1;Cy7W;}A6EX(3$IAsl># z9g>V{w{vlNs64DJJRno_ImrTv&tWRKz($!E%TG6*GPm5FlMm;6)R0?QDhY{QfKHUc zUXN{@!b7yblh+b+rfDB`UDo)3I!p3O@EZ59*Ym*dC%48Ejj(`q`g47xrQFGrh>=zp zR49!6Zhc6HJK%rY;qJe3o&&Q+LBKye&w+`fzmb1+uZGk-1O#S|{wepjopm@^|FE+T z5J1NHtC0`;ue0wzov$9L3ZVZq9vRYo&%f??{yOjg!8+@Jz+BYde)iwq_kg*mU>L-} z8O%j}j6psWfVrq(7{svQHy8Ckc4QFnPwInmRQhe^Ut;{VAu}5UK2?m^v>tl`6!ghZ zR1?Pwm6=C2k}BVLes_b;9m`Z-6jCaQ9(4ZFG|=}T>t-7$<Rn5RDN7*-k_w<wC+`~- zpWl(jUlfp{kgN}LSSx*-_0hk;ACdV@a?}}AnG>cdQ7pqu!nT<#>5n|p!ze_|GXHpA z{&&`vMHNRHX9SjVjim+i+P766&<MWS2vL>1!vGh0Qp)7ry4w#e@fdT=Sn6Nvs8*6+ zWGM}POf44e{t|IciV6_pfE(vmuKmgry=Q<=&!Uz8WkGX$^`5@n8OveB_2k}6{Cw(D zxXK7p&Fgr?q^zN2r(@Dc<t8QJaW}i7ENf?{6#r!T*TAjjilf9)YiH4}aXrN<8$W{( z)A37LZG1JVtrxKMZ_kLN&S205J{X9-8Y<tQzY?Dk;GPxb7wAfw*uX%_R{#M<Q;LE& zTCmFNc(l!E$}ylzIiFQb;Y2=3JyRY(o(iH>5pHBEwavyqY_D1O-oDhWYk>)LT8C9( zgaag=#5D@@)r~D?WpcK{`$!h^;k@X2=IMHS=FQUuvI$&Lz2L&7N9(dT0DV~>MQR)@ zs4V@VHEz#dRc*rC?kL<WIKsU3j_^SCD&rGLLGOw35nnh5_QyG%bSh{1SM8hz@0X@0 zNiaEO$3OAinnQ6U`RzX8Cgy2^is7#Id6I$WMrMaWr;Uh-*v%)a8&Lz4Xsll;C(Bup z(IwS-;g)OSMn1Rdk4f92Fm(KCi!tgI^J~HZ@`+O`uhl$~itxDMr%xiqxpJW;)^VkZ zP<}YeMe3`yb+ud34619o^tMIkEt=QrzS)b?E|)h^tzgNM+Su)^DyU~k^}0U3>bWdy z8;eEog1vsRyF9c@musM217MphyF_wIzv!0hHAvuEM7Oh6_@O?};n3z7(zv8MM>@>> z6vw+8YcF+E*!Th4!WG3)aPD&M6}8M~4W?Dm0kZB(R+j<RcPePiT#|!t`Q&6;kQ7-} zWGLDEckJtb{G|A5Ah)E+%%1A^5XkN7_%iBr&56351;NhL{I=wB1ZiC_<&c=<{v@SB zbh~RArm}@>t$9KDJr@*LCLG7l3meT5G<B<4lj57*r|NcP$%E<`IGKZ!olU1^bI@6r zlmqfSro(O7hN<>$R|Z}vtWf)`Z~>6^px<op|KIi?FiRZtmu~(Cdk~l?{u}wLH823; z@d#|r;2(0_f1Bg`<2{Izi;SJ~*X!dTW9RyZJqY-yA;o|E8~=UM4e+0;gt^(k_8>5E z@3)`*w@Ej!$%T(Gc8I4!FgXtlgIE#^Cg(lI*dXb0ATT)(41-uD{F|Kjuj_nv_CGmH zZm7xry3YSK)S%bi__+sGoBbh`PNS2hHvT3c1y<I++d*nAHvhEv!INMI9!Zj*Cr(2R zojF0m4QAwjG56L{Rky+3H>H4dNK2>G-kaQ%bSW(<(%mK9-7O#`pp<mCfCxx8(%p?x zlJD|f=RW7S_rAS-&w8Hqod5l-YuIc2T{G9rcjiXNCk}h><K^*bl-{`t-Bhq@y8YyX zp5o*^z;l<0KGoAz_IT9V#v(GbzG%%hZO#(oqDSfVWv(6iVpxmn3KP~hJ7VW{WSGxF zi!Alu7wAS^-3(LktY)?}ftty?_f33!POo-Yi3rI`(8hQzF<dono=?=aXn7TT>%f;> z$(qgE{WXucChs`<CE9GtmtzS^a~hsLJ>~>?dXu_Sc3Yjhv)v)}ucHlGp_Vc_FPwH( zfkQ}JxrTM8tzB1gi`HeOuVYX12aW<4yZEm?d9_j1v9KO_mmYuJo_Z8AU;acs)c)9B zcK7hfm^t=a@7>M%XK_ik=->Q?7(Y+puLnC)h-$Y^hqS$aj)JJ<xZaf#{>+ux!ru5< z#^+5P+GM$1c5q{f4+`xouWP_ka*%Z!+vE1vHWc^X(4oN3cp?YBD?v_dnHIEKWs3~R zpUNs~J8HBJtRZ)plWvz|44rNCaGes>BDfo~yWk`%WhqNL3ixmb7Q$Fgo}_WPcb^9j z)Z{TIwKMPRcpa&8b!`8%xoMx1I_RACOaWY~1DAiQk4Gj+x(d%DaPYN5{|b!n`o7^H z`cdh#Rhq!|@tff#tfDsy?i{BvW1N;9T4Tuwvcc9-rm8KZeA+yx_S*HYX7?||SMcg= z6dn(IqYMKiI`?yUgIz6h=tjDf{bGhsCb?u^s|LTG5dM_)wT0)@77r)!RS3mlWq9kG zQ|%AuiUX#`7r~+<RI9l@{W21lxtsKf)hBCM_4=j8Q|7Dkflb}p8XK(?V!Y8EXB_lv zu3Kj+R&FmDE`j~sz#xJj#>O*QV>}+=VAp&tHxk1q#S9<DnozpuWx9=PZ;Rf)8D8k9 zZ}+ToBw3C1hnLzQSHaAxG+!`JcM*Qm4g7Y1eSfN42Nyxbm^{LtNAmNW*sgH{(V|bF z>$}6%kZ6PZ!O>~n-{F!FBzkr+?!9BwO-{Cbx{fw-t^1V%*uOvb(*7vKC*(@Dsmo*1 zVxetJgtV{p^#<n;H$>X)CsslEa#NOit89KrO<lrX-~|-nUL+3Xg07vwOWAfp@TzsL z*4HVwx^MJV;$N0TkUpr&2}mhkc6G>C=jeU8&%70&sEdRAX*Qe)m;TI%DSIn#=#`B^ z$I-5(^zjSnc`165gDE_fD9h>A>HWj>lGY*Yd6o&<@^p0Gc{(^-0i{-JrPi3s2B{mN zZNh>@h8vPok8yU;(?I`(EL}?A(@UJkL6=-Rwo0wSH>}%In1LcsKtHE4D~pcEz1{tc zt6$ctu+L*EmLuUW$uor%m|>$=kAiG7qw%Ezb)&LNSo*a-woz7t_@~~Per3@u<UwjR zwK2_4M-FJVZ;ep%OsfOEQGz4^#F$aonz;1$jF_mNdOvMR-sn6hk5i;x-T>Z(#o(^& zFwzHRbfkPC!lMGxJ0fPWEpwnZR>uHEii>+$=!}#FaG29pWOx%fKO?a+5x+^G5T&B0 z?x3Q_HO#Ts{&{fHb&`8>+;K+8vX%P<uNEgdC^AHic!AzZPqya1PGgouhJmEGqid3| zt_b)+LKf5Dn>h<zoIunq&gSrL$Hs{WIfOQfN4WBPTY56JWe0=zMW(Xs#nQ&jjV5wP zc4O^H1$U7Y<wWy%O&s1aO42X{7{uCCO2gIo@_z~=&0sD(o2V98X_0&#to+_HxDJ)n zwI_<ne+QK*zT)vQ3p{qGVL0~AO8Q{Q*+UUmkuau}6zaMuTDZz#s^!nom`O&4;i81W zx{q!jC(wpGr<IA7R*`gJgHO!D8}9^XypTY}e1nph6=z&2<4gM`5RacvBOc?8TZ4a5 z&{K7^W+jLFvxc4BVWbD1dzowuwm$AZ9?waYO1vY!R$3-ezB6pV2$HC$*0zz`?ww35 zHIu`j(6qELtmFpK+sgUp@tQgmIa+>-u$WBMHsWqze1T_gAcp+3QrApwJA5*-IB7C6 za#K=NxJ2d)e)lsQC!2vba~nA}P=t13Nf@tvwj<rd(~?4?=~P*QlERvS7b>K0YvPXG zEOGy`J>!MSR5MpYkClT;E&a;pV9X>Vg%>J4Ib1ZabGc{+8lte@Ptq1dIP%r;)tTs3 zR@3vmk+bQY6i=TTZjWcF*)W%~Fs_QeE*dc76&$v56<Hk62!DRIiE{3*B{D$yDae4| zP=n_vayc3MU|-={$9<NyW#43%T!_HqUh12hmyavaiqB4naK+!2bDACEergd$tq4|q zFHSV+hos3TQeXGvn7@@WiOso6##Zb)J`RD^>6U(n$9OtK<RQf{b=lP`m%S-YA@a** zhaj|&GDouf1k<k%yeZh`%QC0m7_0Jn9{ZAjISBIlIr<o60|^UVIp_|%?D>oTx}lyd zmWwOzo-wbd?+YZq!?=r2uUa=<W4wLnF#4j^_IO%U1Fi9%8D<PeQ!{~Ve)!i<X}M13 zQego>0*&xReY@Pt-vmPMCfNYK2#Aa+i30N#0N+zwZh{r*il-GaL+kiyC)zp&3C@YG zRKbN>p>Ioe<6X6e48E6WD~b@&g(GBV%2p&0@uSvFYrJD!AQ9WEG$n5$#(W!$7^I+~ z8+dq9vthz^;U?v`+=*<%)xfPkzkd2dwn(AlyyPWq+|bJ+g1GO|2<+s__6+w;cWaGe zPlxK9?Z3~()&U=Udf;3#keq)#J&9(xP)pcv?09Q+;{@U(J+CR`-R$|&)ui~kh!75| zL(GL}lBfHCcQ5z`$a=kbBb5TLLXtkU_f!{K5_48|n~1}3ONXwd|ERLmt09{A#U{gU zv$m~u!@>;vrudJt!JZ$J-_wT!R;Sa`%XA0B9PV1v8C5m{dHaDXwf(5e#x1OlqJL4w z@`=ojqP%NsSn&7Z=nF-cVI=^+3>o-eFjyK4HHU!ruYm^to(q5hunXcq0002s{j&l* zhyy?g<l>;@{Q1Dc&H4M_{Fm+FKZA2#?%zKU@%+~;3ornxA`S*XMcM!TFaN8v7e?F* zhFaPQiNTy|42Ig+35jvSDt>{X6_1b@Cyd?*Fw|B~NDSr(3^25+5fbBpc^Xu92Z_NN zy$ps{H9}&rCgFjhRgDlB%uVZHXjLO51}g&vL#rAgF#wEQ3=D+vLI(l>fq%5bTrOsn z8@J_3eTxx!o+RvYA-$4gdH`uE%MTdaL5r-FV@+4d80v8D<b6Y+DY4VBBk9aOMiTK@ zNUg>Fl*ny!KE%f-ths7NLT7bfl>MYK)XlA@S!7SX$%ovT;<mH-3xB$EP`)mqjyAnW zx~me=J<WqhrAHHPg!idfJ}mt>s=V6qX+HAC4<MAd>Si>KyHj$`DCm-OUKkU?@M4<H z<3IFya*a+ZPIZ87ETXi=wC8Y9{r$VA&xPUnDtuOki&7>M)pxyJz}X55M(-z&$ZwQf zysctc#KBAf<H8d@%lzz5`{+i?#}!*I!*x4vfzirunQwT`Y-Qhpp7ca7L=g(DsIUfU zCSPQbA$nedzA0%-@TBqt4TX3mULkbcFkRv#_vkngt<fT1qY^IQTO(4DT%eNAs3VL` z7yy_aEEmH^e0t8X!AzNB`}haT{nM<wgdeg7+O84y0NE-muLu(I0qPBP!i9{1@HtyP z?VhWT){jdg0!<5zSP{@~e*{upq*=Zw1n|EZDlA2vTs_Ljlc@Rr_WsCsk#RQD#<o%` zC8GCAiTbCes`1@Ve8E_OuRh<D@kmH08IIK^Vqz*plu(%v(1C##)cV6TiPp3+EDxxY zI{S(ZQ?n9d=lj3r0;MHoo0#7ReHm)rX7oZXCi0xqe}#9~pfphN@IoiusUOexoiRgX zHknYuTINib=a`}@m~B7zlP@29tOK0qKE`v(FpRhcl@kLvdL1`)k+3jB78I4FWpke? zHm7Y}@CY6yA$BSKXCD7s2b^HP&q!6(8#MVAJ!$RFarh@n4%Y#=_6z(6$FGVWI`z!s z&J#v_%NI!zA&yfD_J0f46UTf^0d%-&F7O~uJV!byvm@7B6%8jvcGFD!UVlawt*8*_ z)qX@PeX#XNk6K8~Hd7lh%}}7r9(!H0LIBv?<w`28km=@8)vwaGYMK?V#2Es{EO*8X zv!-;XG<fm4;qcXhra8WN{tk66HE4+6U^+?yy9$(n=&p-Pu1UUjxmJZf#}puHd{LFa z&Oxs+a6fe14$WBT0mDhEan6F3|Ij$nFnyVtf$%!{(e#7*i1%t$dK1|nz%BzaPdSXL zXgn(^(k#Cx_t^M8a;~4k+Sko?SK<;r9UvzP@j9@?ET`@|{`5f6)ouU9vD_W<V5o*i z1|o|3YCNiKmd}@)w`&o;VU<I&atLbTChn2dm(;e_QOB-D`B4jpj7O}`#L?3fzn%7} z9hvfPMA6pFIo-V(FK>Do186HZaY>cZOqXPkQCQKvs9Mi^U8toXN==DEQ6_z8#KZOa zhrbiw<P}&ug&d!Ou~JbQndZKpyl=FgP&^BI_|yf81HbN#+1orJqHJHk5vIQJI~2!Q zl=kwYejgBe$7a};dq9n<%nE{5W^Fm=SLOb1ukouqQyW+mPSxDy6kcq<HL>`h9$_1c zFX(l`pMY8Q#g#HC!0x-cr<vq+6VAtkNBc|4o6aM97-DzoMR&z4z~^CAvUjhJdOz`q z2QB)7u`VJO-fJ&S!iUKlV;ZYp*x{$*UiRp{_jOK?UujbF?<A&wfBlAsHUCYTf@Htk z!RoF*bC1Ak<EAExXOX(38B+00{qv6^F_M=1xDH6M%WqWd(?lsl6g`XDfP5L9c2kC- zXq!Kt))lG^8l@Y}@&Q@Qe3g<_3F>?13}nxv^QvU7v35sjQkjCw-soGVKOEGs1RfHI zIkfLnr<G);QVQeuQIXj;v@IGC;Mfg|ppB_nbtHMm7|f)rjajV&Nlv?jUE7GC*(K!} zZoGOqr<SR|>Fk)0hAW=-u#-D@cZ8&{(>fq;?>UDhF1qbyUr}Y+X5YZ~tArNy5#H*{ z?=Fvb)P_n<)ns@)C+?I+AKD>_DYm_^R<z%h)Y!QE#(SkFdJ>VqlhDxn=)qGCM9(2# zBh{eO?)PNw&b9U4+*`HjCEKssrIgAh!d~z_lkw>Tw|QjaQ|N?g8{`Q@2bc<x{dg0q z>gS4W(_L0HeBLSf^4N^~qGa{pzG2M=0-AXP2d{@&+sq%M47MWuL}XSTSxG-^CH?5c zw+o6f02YX7wyQH*PS^futGtWDs=}fdnra^iw^LHsw~j?;8OjHvdWUUTfP3KGE7t3R z(cC8{znLxjo_sUWW)PnB`3g`2RL@qvug){K@#L$osx6z08F=Z|jvKr$Bb7Ph=H}-& zw^o}_a+gO8!jR-F^c7(2b$aEoEGuJIDZXRC?Kt}CNt@MEuF_T))_b+F&+@$I^$xS< zf#1)(r&<`^jGeYC-^h!%F78a{sk~b{4T!2d=+bgti2|1=p|zl~wd(-$JRSE)JqqT> zsOj{r<oKFFT{0ep(cS=JSuYjA{V~0BoEC|v8_#qR`xyv-_+z2zl2>jE<$j%gir*Y| zO)=~<g0rMjIa6fS;`UO@el3@n{luhmjyCksqivxd<X)#_2Ir0_=GVR_t_{+r$oJ+r zNLZf|kdJ~;my$Y?Oh+ntw9^I+K32uMA_mlwbxE?=2!y4rkF{4)vW6RZmv2j7hQ7V{ z(h65;0XCze`Z3E;{b5K+e#r;^IkOgdpxtC$@6J=hbiuak6<U_3C!NT*s1E2448AOg zn_cdsZcA*2oF3l-4e0<%syq@M)x(8~j)qlVNJj6vI}U!<q;GqOVWk6L;QzIH!2h)2 z7z{P)01W)I;s6+G+QBa*2mq%1xycv?2N^#8AqTbB_!sWy#y%ccW2eDTi;e%31N}oW zf(Hx+{8<MuHwPsbH!md@;I9eFzs+~RziveSW$QEt?;joab4??Vhli4r3-~i#`u%YL z$oe}N{QKI+-xE}RrdJ@S?Tuh4;p8vB^3U1_Cyd$$7)m$^iE)8p`oeF$_Mb{7U?|}v z6b6D(!~jDHCx5|s!IWIES`xuf!bvC$W}XBkocz^a!JPlZL1sL^{=eep`6muC<$*F2 zmcA3r0ht&>n+coyt)u*9CT#Avp27>J<b<`k2Mi@|fHLzRxZi)>xOx7G`!`?Vgf##h z47KSK+DzEoZ=K~YGhuVTb(WuI!s>egL&*xD&4kVU)>-~C6E^o-XW<1?a=_}@2SW)9 zpv?RS?zhhJ)69S1e(Nkh&4kr!4u+BzK${7ZgVGj2n+cnPwHKC`=TBZKKC3_dxncgN zwi?Bl1s@Jo$US1e8c$)yy^GJOYuk@rKa7cjB(AdP`trb_J=w~1PK6!U_ukp@e!}RY z`;!}Yh8ycmnbs4*Wwa;py)i256p`m!FKwFNdMkZA;fc{%p#dKoPNDU@n_3({GT23B zTN1_G9jI~{Ds`Uz$b+ogJE3JkH?2C$Nq^W^du*$&RbE@tYtnRS>4?~$OL?IDoi>_F zdP>`aMP4n<b|D|5pyt$w$RYb0-y88sD5nCR536BmNi>D<L0RTE+of%uCrjpQPdapQ zf3*HM_d#uKJNL%FM^^up-0X1jwTsl5#Ct#7N#TnQ{>N`LU5D0WE$Q9%sxh}^+GvzD zvTiuUY}>nbi-!(oR;hT*`WPjB542~bFzY;=Jv4d(Ydjpco{nh}GksNibS;JGgp2;b zo=VyMyy8WPDp}QL<>K;V{hL7+)p2cP8NRRIFj}Zf4KnH@5<)BCb%jhC8sOl=DiMm` zr|tGJYv=B*?wcyV1H>>Bci@eUWJC_~kBxowdLM8De;9R!V2B#Y;leybV%ec3oB0JG z*_Mb;!qsHjJ&0fQijr&h#Wj}30yia(!TK4BCl`m46&Hrl7xI2KkH_r>b6skv0)tYv z%R>4dN1EMXrzWO+VtxHPJFd=6XVW^!=I_^HAL_q%UD?&J2fOxwU8=$n&yK(KF_g>a zv&F0Vm#Fgvb~aSipft#DrWb$pmNYF1NXh5(Kf*$a5su(6ec56#YPJ`u#I5bRjl#KC zQS#yJ%_L3m(QOZBM@Ql-kA&pUadSAIngX~aS#Dk>2pT8TTc)RduU)9aDBoesgzEy@ zS#xI0zeVjWSxFx(!&*-O50h{*&jff;YGh=DDt)wk;Y3X?T99RthLxr0JU2<{11R77 zGQ=%Cf+<Tc@OanD_^9+@v-1aG-%WgsrzgDnx6?uDUv*eku&E0fWsMS56F_C)EFovX z7FWA1+xE%e=+t6vdBa{J?T4)MmNVW52eGQg2c^%{qJ;J@i<tn;h-$n6lq?KE@&T!| ziH1o2jt>d7roR~K_O`ynv7eB%e@(mG^g)hN)k)2I5bltTpc$`J9KZhlaj9}s5{`m6 z85`oaXQ2@!5#Z--?KBF;`ddquS>ux@iud&&E@^&-<JAsKnqmzF7Rj|*Mnu~fs7<BO z_qkNh3{llmx6$P@(KoJoFOs{<Gx0G?l-)zSWY77A)cK=2gr)EUo**k}XkGE+R+aF) zJvS+R{EvHhTN^HZkHr{8MjH+?Yp@od9mIzzqvrJN6`dJ9_*f7tlK5>rIm}aus_eGD zYlR5)Y<noCb>7=Ptx$P~P!%*zmF&=Cjgs>L!Bq4$VyM-?bAbnlHRuQ@#F$jJYVD)& zuj6E%8>m^@vGZ#2izR0xnF96|Jy3NdE}lf9!a1_6_n{Nd0P|-%F7RI%8R$x)h7@Tb zZ^|(~6vLCnrC-<L+fQ#!%sPFz*8h1aa~?y2I-5FsFg4PkuC%A%YgdXoCw}h(6a;c! z;tRH#Lp_6M#3mBhU3)GCe7>&ul37BZJIrHdIfGYh8?O})N-)uwaS5p}o}eJm2H;>I zOJ&?32A@v4EIobn0WSOA*<)$odbxT4)+~8A7Ym(b^l898PpWotHER|P+C%ydly@Oa zsJx2ET{J|GqE+=LRQ<cdqPpSqyIiklQv@|wS<t6e?U=CD+CNqvQfjs@UB8lGFjmpy zsjhgul8w_AK^Bf4R8u}S`CP^1!+is3)%NhpKJpJ#s$b<f$OLn;wUu#1*cV0U;LBGy z`H<0!u~5JxZ90`V2jlt@)Y)U7jcbTr#8IX!_;$gYvfjh=GEq^9oIqDIR#>@T<Up!; z{~6mtbrD-yPadPc^7kiG@AWuozpg%@e_JW)vZPkg|B9AzYn=CTv{t`~pcKq%fT)l+ zMU?R*BF52rb7{1iif~J_j|17#@Y(S@MZe-ykq^1<aVmh~_S{OLNzT(K&3mj<CJ&zl z;(a_b)GGx#t6TPyma|pV5h&cx6Fad3owrO+^qX`mxdrAT^8284ZRUV#9bRjEp*Hh9 zjH(#)E$xgr8T2OeJM5wSW-UlRQejW=oHD~b(++@Of8mXdP0IU)u~Rz|eSRRP@*+O< zVRExSeDjhM<JPjrQf;@YX7bJK(Ls0S$lFqR@J6J(j%0cX<`l=<${l~C*w-{&gqxJD z1~&qsnN{BgF8HN-IGwSW*25k6g3P=HG;qDbHS7T;Z@=ILxru8{53k+7c&pR?$chiw zN^C7O%;#)ah&U(X%Ct9{I9#mzw%QN4-W78A^ltiGnIEHobG_osvTj0uNqu1**%uC= zm{c6Qcg8m!jY&~~#<wr!o?@2S8`d(baNU5S6afh1?HA=kS3(|G#zXuXjXbhsY4E;% zW;7k=;KA+oG4B2bi|C`FZRfhIKBJsZ?(%3WMrTRRXzsD{&oze3&2CSUoRe<L;1J<3 zb|@}ky$o>upWQ(FKdcTy3H!iYf3|iO45jV+h5V_#;(=K>ffD!qA@|F8A4ST)BcOk* z4*p#c{40Isf*SA%hLZjLV#hzVkAtCPe^40A=o?D*2Zh0!Jr9PG{Xt<cD`-%%KPU{A zq!A1y`-8+_?vesS$^M`)Si7XaP_jQL3|2=y7)tgBg>k^j(x7C2kQgUyBmd1yIAOjY z{384NyMLeiPnM7ttIFBV^5Qq|svk)cVv8wL)8$Nwk(x#jU~u~e<@i=1OPG)mRMJX2 zB%FLbTn(`*dN_Q~S)t;Fe6c@`7=*t6t_X`X_)P3`tO$+-zD$==9`DYp6QUOOoT4XS zg96t`2ctf)>~q<8d|+>AzoNab%2g=t1G$HuY?<#^KYBlIQaTT<Q0+%Dy=b&1c^Q>w zJv=X~I9FR^epb{Pp#axbAf*?-=0*>ft0Bd!Qnd2INd>OP>vLtIVl-STJ!71I0a+&t z&8K6})v!G8NC)wU{v6V>?m1>Zmf0JpYg#gjLyw}4l2v2|2LhGXQ-_KVeUIE%ql31! znGlpS;H;ip>b%;*8s9Rlj!a;b#lL$rO!q9+UbK_Uq@|(zyr{00RUY>f(FJw@>F6bV zFFYD(>$ui)I&!@LtC2XwqhEqor5Rk~Y1MDmJL7NDkL49Zd{eVM$w`QTcKU5yTbEDw zqvza2BOqk`^5vp)BZY36ZV?F|F5hW-LL8V2WLk*L61s_ttbb+cRTb`*xtdmXXmcpk z#7=C&LO`YGK#tCa8?WG4>-w&HBp4`9)IHIIdL`JNaccNMpfu%^iO*hNq2Fq$ZUuT1 zMkG1eQtoOrP$91f1pe6BnNW*3`WCs(7JOgTbL8Fodi1owP!8E|c5>dmX5gf>vnll% zG$L+OCMACvAESub5L>&?@&xsJjh7SNiLO?HQz+vmc0fYfs!b~6bP+QB@R*#=@g|NC z;t$l}a#@6F9!_=U_ce?u4J6B4@3~7CQ`I9LzjjGL5uSL?uwU}*#%12)TSz6-dAlU4 zd&YcK(PzKDPK0`|6DtO}YzKoY9~OpV`=j6o%-dNvF|C(gYTo(F69Orc9`>0tn@iFK zO>`|_pyAOi?X^QLYbbBvb9fh!OI*&>M>_3Hp6j~ho+PzXLeW8X@!FKl(VM&$COOhi z)~Pr;GA(JAM}U1oJ=3dw^k=w4yjR1b-bJ!l0d55WCRk<O{rRU?mWxUgT_1fvf3?jB zJd-;am(;j68cpn!^iW$-b{l(SDZQTfLIH1~Vm~K0wlp`5IV_&(4$I{$S>w#eTiQ*0 zbz?`Su4*}cBqne`dAKLrI_~zWU89IzbW`a5uv@s0+|k_y1^j)u;!#$3Sl93`O56Wu z*Dw#%2b<^5rs#p8RwDi}$ptZg??1k5|M(vK_Z#qE7b*|*d+;y9x4+*Sc>d&@M;kqW z=?}mTJiNkpM8fN{$*$J!eET^etc4gWSh$msi1zrj#C>|t#Q7t!NS2igejp*LJ9dCl zcyI}4UJ{>{TW>81!eU&9x^wxliBfKmkGK@28W}}u{S{9}{H43w;675E6O-gq<(Q6P zZpSB>yzhe(?3>TUq=&pImOuG460H|=0o%)%?9(qvtv!n$N{5S9NIo=;Zsz>ppb@UR z@zq}Brw3VTv-HFCAnyO62mMcd1?o!rO91#Mz5*4y{3!{gwflwqOJWFw_5K7Uw);bl z2Qt{>0scPN<NB}RC}3XbRxl_T-Y<6i42Zz6u5qZ9kdPP<2rEQ^S_ujDSHqfj1BO}& z31uV?tfB*y*as4W9ezP6eV{Oy@3T-sA4rUo8&>oV{;dQ3)#e7v55T|mpPv}4;V57z zSq>Bi^KXNa<v?N_U|7E-lq?4d<ArJDZ@uIv2D2y%CCh=tKrr(bsGV6*7|gr{YG)P{ z25X-I7;0x06b56cDhTjPuj=1d2p89%XonKjf5y$&ExYPRj1Pg#$~i*L3g)Bx+`@h~ z?>Y&jJ+h3aO{kuh(lHFQE>eYzhh!iPbjCAUY#a~trvYh55BEb}NOEU%hf?cEi^c=w zN7EC;)=OGkg3iy_<%yUkbtF%ABgM^S69UU)M`-CfF+a|@Qeo(;pq_UIxNPcLuYWAV z3_R9rM>4&w*|`k(cs>DI%J$hSddP%uzb?c#=%W>%=Gh19#w8DXM0w3n9ZkvaiD*aK z+8*9r{wv)`xDQbtl(Iw?NXt+oVHhGtfJ^{C)O~cl*%o|8-hO0<TS1OVAidZ_Ml}~D zmlm%I^rUuK6s!EEK@t!bYl1WF#<F&heP-kLKFV7`pDScBR6H!pO_G4+9#U!rkMwlt z!cqVl9&mleK|s-@99|4%H{YJVO*1}@7vY`2yEojI6y^eP!Qys+c9zFiSxPqnLU>N7 z5i@k!Co+N3HG*Qul3SRD*-3mz?fy~~x=7%_Wm=?$bv50nTt!8y;#`1~%H2VL#Akz6 z+f%M@S0y`k#)}{FT8Gb3i`6bAFPJA@cb6hkT!O#P*4$X_c;bjCTN#IxO|p7s`&o!x zyc8fQo>iW7ebHNbNnmf%7J`kN#emOec_6=EHK#t{^<uHeBtV#!Z&xqdS;Lrp<i%HV zDyeoc3H$8w{6M;XM{#82U@u>XS1im`RIj8By-xg`qRL$n>p4w0Ps&UB>mDMwAq=gd zhZ4v5MuU7@ialz&2MTp-<y4|J2dsPz^oCO{v9=7pYPBL37*>72JY8*zq7l`g#-+@8 z7i}Uh){ghS!7k)w-K%+_NCNp!rKy!drS$k<f=lPJ-UBQKcytavpj%1`OXR!2;FO>| zPm*!Ow5zK0pw!Ggaz|$p)U}QD=~IzUd4|)5YemV}$HNnyhm<5PF`<KSdqy-o6WJZj z@dFRG;aT43Ms0^0VWsJ|q10SGnCzOzeAi?6UCt^fDo>#9LnL>rj*eK)9726%>Kg^7 zx*abd2fX-umWr~EIyx9kS0`WbKC)TGaWZ?DSjLUf296C1djUN&gk{Y>r|%v|Dz;AO zv%cC-9Z&!g8~<R=5u6qbI}>Y~vbA0}Rs7JDu`?i2Z9<3hgy{oi-;KHd5p6YaQB^Kx zNVW{k&!IzNXHmPg=~GkR5XC9R7nKl?tfTQf;0(J14Z8cQ633_avKLnmkSA=9ZK|0L z>DV$1_!6{NAEx+i7@~}*Cy80E4uil^WDK<;gl|tam^`#yNK?4Po#mH!?($HS4|GXd zRS475=&#b)gvm}e7+xZ!7~r!9l&iL`VTw;a{z|?B2=WgE)MFYOX=g<`#@cf%pjUoW zP20~YJt(>y()7UI5XVVJG4|1YZBepcpp1#cj@yQ+$-iqgUn@ANMxI1K8|s5R-_|or zk}KpaXRPRX@=Dve#mYU%i}P(LmxVwiJ<h;sijgFZupAx_$uzQHU>nLOv2+2w1wR*o zRhlyAZ+ht<A_NYi3n8s24A5e)m5K40(~&QWAlC3H8nulS3g?gS1zn-y^wby&LfPM( zgX08o!;h^GU+=3L?5U!r+ENkfSf~p`>ryo*%&*D}?f8sRVu!tPM|TSKw2dB}bVld5 zWbGrkY!YDP;hEZ4nfbCkmD6cKhH-ydHr-0jZD+Q!go%Vm>isQ_dt>pgl;?5Qj(cY5 zXs4KZQWB^6h$#BJuNhkAM{zFGvTXM`LFK3%^WfHiMvBYB6l}!Lak-j^1_(|eF@pQk z(L~4Q$$W<q*TrBt(zVWht^1F=Qcepyz+Crv&C^Aq<U4;%ml9#UJhmCdV0s`195lxb z!ZJkcR1#%s6n!4WOw-g*=zZ!OD|x{#5w||goWnaUD0w`J5PRiied=gm##h7H0rYu1 zk|JO2M(cQSo??_VVY<T0&>uCW7~QPWl2$iQL3^c8__E{bi!+|4&8AIulX8321+Dhb zh7xYn?d&?%k_$Jei%3HAtn|W3rB3uLQkd6V=9~F>+PmuLd`h2)oct8^vzUc2`DfKG zLCk&K4LZ+OBEB^3z)6t4&wk=mdUuZqE>2f0A39bC0e+D*{BLN-0s$c91|R_74_{z; zL6AW*&+ijBp8rhXK!E=kw*HGH+`qGg8+MQk0zgU;pfFfLG6(=EMfer_*`x&{NCp8Q zr3lbQ!U%sr07xkUGzKFg{Mpa{FBlgubkqa_KuQsyF&NTm5CBq&0F80LJngq0^w%gr zm>Ac;V4N`04G`d$1xx=Cqk%zx(ox{4`gcdc5{d~+Dx9u?jdP;Y%A0;C3vxcgbGU@q zz(gzzcr`g6F9MC&ytR5lRJilw<tt~xNHYJ~MRH>BmM@Nkf68ZC({y|~hIi;^?OqS( zyq5#xEGVqPZkp-t?HLlR-z(%h;zhE@4-moF-60bgQIN6+InYLikS5tny2z&COfspm zQ!#HF8Hs&}Jx+<HiYVNwDTpF*e{`!VC@e}~D5)lHJjn4yYagL;UH??@LK}WutZkGt z9L%)LLnV_bv7ThrCgfQEgwn1HAb$|MiIgs#`Py=efM?%&X_g(Vm8`U}xBsN?Ta6Tc zckZccj*qn9Ghd<H8gw4ir)CW9_OYuR6GPd8)5;uEcjG=4yXmR#K6ez_u1(!4-oQtZ z>Wc?*>v}|PS#xM%wZz?#%%OXrmy5ek&HFff?ranOteLLan7K87sB1ecp(o(`LNSKF zsVl1Rb(h#-Mbq6`C{;Dt9sE1$JRI*28z+>nLW(v69Z@n`(-6_)>0%_bz2MT>JGPpG ztE@g@usbxmNQVp_fG!n-Bt#GQ?pFo@A025s=f4}?d1797@0<RRLcq>|Cp|hjckTU& z2v$K4MP-iCUYm|OU`91w2SRxTfoHU?6apZeXCBL%KmFKFNrrd)REb!V)Z;Gja(6eO zcw%8eY5IiQUyGAK=c`FUzWf=z!<&+Lw@*F6QubYr&#U=zgox`8rQmr|0V>?4%EB?p z<)kOdK*_U(GX9!T6A`l9?zo&KvL!vv2H*orgu~Zmhpz{x$u4xCXYTAeTf9e9ZpIBP zhVP*;%|Bfy!dKHWQ8OcLvU$B1WlIuaJQAQw;{3r}s{wTKfwFA-UJC2Oe3c@LWusP+ z2Z6~e-#cz3N}5jHi0;k=Q^%@6QVPlW7>&x&EoP4zH7mIu7J<az9GgTK=KCvBU*A_` z9i@58e^UdOrUVbV@eZQROtV$797i>0x@|pH&!~UF6PBh&C>P(>R%%)+UUcK?aU8Ie zG2;&cW9i_>O6g*NE2gXn-jwxjt4F<Z<U&$!yj+v)bB<|Px<8Y)&D`p8D$?z3u0A{+ zr1`}Hf3R_;`blY@A=3|@(RP&nYv$xjDYmFlYw!~XpN0J;Dp#aJ;k?tL=i-#k2PFg_ zDq?9Y8<qtO(yMmksJ_zdo;E100Kx|qf@(8_-So?!_Nu$5_JuPpemix>)pzOOzftjp zhntxYR)cj-{?a1+zvG&O>>&mL{^~~l*K6`WZo2=vCjb7-{qtKAFX+FnNe}?)nuP2w z{?(FycuN8SAQz=TVX&`B5Y(OU-?4vqOZvI_`QMC$c}+t0^g<g6V}K+G0D^HRfH=T^ zvVD3^{e>l21FrX>Zg%(aCnu-m%aLdoIRxY+S4^Zxist=_uYDJvrg|K1ZzkoG6-+Bp zk&!=PgKoz^Jf8T<s_F&Wsr7Jlwi(}dG#$^_sUCeyQZ%YJ;XFU@#87lFV5>%4)3{yv zX}efk)+@5tY^?je+WFF}*=?PG5fs-`7ncgxtIdhAKKG(XL9JB1ft8bkAI1@`_UGMk z6A=pRyOuS4Ah<dyN%m6m%(AZJrtXl<cYPBc8sla<6Kmem+-<!@V>WT~BRgdWUmw2r zn0>S6VLbuYD&IhKNmZ09<CQh%)4qnco{pdLc-67z%;0#osp`)A;?&ICQHQ9Bv(jQs z0@;Byv8J~ECCh@~oK;z@gqA0Xu8_z~hk;kMQx}^Jc^!Ib+{Qe`muQM+E7N{Pm+QKF z2weqRth9S2YELQRjY_WydVQ)RwC*L03({<Q#6-Hk^B-EWzK_@%**)l{E0s1VF@^<l zU<&7<3PqXp^*k~Q`y!zc@73Jd&r7mevHIGzdYc!ST;F6*4uv|J>u?}_EQI3%{c!o= zUGB58s>>G*LQ<y`uj~saPT`LP-+HdWJ$(^igx&DWh%+7)pK&$XIMT@Jkw`cd6){PJ zQD+*qxHyO)X;A!rY`06F(1IlOJEog2MrL&6RK#*dc7bmyc&I{oC!2q)7FHorItV?{ zU_&<c+G35RCeuE=zaBa3X9O>Uz^!P_DEFCIs8wl;H^>MmZ*Vw!%X%Pam|X53KZca_ z+DFeOp=77huREX_v+d}f-6O$0;Ywdh-+@>+nNO)-flYwEcsl2KMb@bny^hZVY>DgM zdZL?iTb0#ha_bbgyrkL4NK+cQ1Nt#9tiBG#yscd&@fgA7SsXoyz8t%m=$P1dXO^?5 zofUA3*J~Go(<iAP79$Yy7b(;f>RhN<A>iz<*&#shPXZC`DT-pR4KE=gQUnVnAY*3b z5d-v04-4EK^vEMKSo%8T7?_T+RbFEwflqkXt861EIOlr`;a|8OpeYd5`?&^73lwhs zFbd0mF7-rwg=rl~^i;r{NO)fw#h;ACO*Ccefr4zJo7P6y)pLaJaBf-~#3>B<w0W@~ z0x7>_cQd_pe~y((lX2_3wH(la+wkbJFtj5fs$}a*Uf=-&vSn4QpT(%hI9kQm;cGIk zfwl4$u($E#8sChQhFdVB*sc|-Fm{f=ASJ)vJ(@(3Mprr;Zhe;MFGN~YC0#UT>FFp~ zKoL}7yK-tXyIimCE4%uE`NoY9V{GMe-f4`?vOX&x}?N=f$un8>u!p2GQKKiq@Y z1WW^ZV;^b7rwyF2F;W{ob10ypl?Xe+#!G}lqWYxqeG$hxM8wQlR?Z)v(FvS;sGzVQ zD>b<9nQ3z<)FE-=dIz6dLI;WjFf-54;W1L9+2d#iYHDV$;)j2+sAzTe?ClNIJdGPe z>g|03s_Qw+w`B~E1Vpf0lHoDBquGzVh?FtPUd1$OnJ_rC8muHURQ9q0`!&zSJll#G zSa*K4=<-x(v+v-eDOo-9oA$}g!1acZh*<cS*?3J$QK5hh@t3kDB$5pEBU>bTXP$Zj z6(L`5w6ZTGG`*FC#a3Uk9Y<)9JrT4%=wjYW*zs(+xvr@-tLO-R)`J~9x^Ev~vNtG% z%tq>e^pQs|e<M3=!cXr@Zn<zo2m#y+(SDf$B{C&1WB5#ziR^Wb190IJ$J((fQbj&Z z8N3ON6;8o?nOB7C7*x+V>{1bPH6NjLDVHdT(#a<bykxW&_kMlPmHK%|(vZgB)lm9M zGlJ3c2y<ol1tB4UVg{1o8r-9ki+UxV7~Or)R1x)KLV@d0ky9f^h3V6gj!@1A1dQ!8 zNzots+l&b~tC$nm#^I2d*jy>Oj}X3)mj{1B5Y*A;s!S}<S|BSc$bI+}l=}JwhH&gk zG#<GJ{|tO(x@-rMw==eTiZiXdc~)p9wL$*F$dhNfCX_GhgX=-tqCfvJwP2eGwtFb+ z2%h?*Fmj0rrD&9r0?o45MrP774sgK%!_2!iLY}_k8&SPWiEnx&xVAMC?jNx3y<vIO zY_{z9CcLJOL-JC_jV4WFj<{+1yT;71WsoQaUX4*i0CurapGvcMhilsCV|2If4EuD! zvgwa%jKw{1pSxO?zFDv@k!OiSj~vq7HPEMF2QN(TV25|)mfmk54&^$|&n}60&0|RA z6xv9S?@#-n$>_YH<XV?$yt!LAk4geZAzz(cee*qV;`s2;jz?>J^J&0W;yn;W%#&y0 z1-W2zVTQT*cr6Pz1L=ZK(eMMd%ZkfY1FNiirx?@Ri<4jLy(G#PFbpZn{oY-?1j_RU zr**a^<c8F$+YjrYDfHME5Y;vUU(q~t=`ufS&L~!Y@Jh&bWy&TTowonOpx<Q)XqZ^t zm{P~M2)(+34;%l7q{j1%l!Tdgywr$&2m&}C#QIF%n%%sq%HUMpLz2M3HSya_w+zQ_ zl~oGlzRE+fF2+QX=)ocIW7wd*W{hV1R0*dLxHJ5%Fz3`%-d;`7%K0wDOmLcA>$r$7 zAl?_7lZ@h6q%7N#f9GU8kVx!f&o~ZQZsHXcK?j)yTwpK~JSD$g2|ZF7d}vsj+<SN? zYQysU3D>~xH@G-r(&b3PC`#R_cS42kymNV`sN6AC@;jN1sWL%2ggC1##(NsN;29=~ zh5EHO_{1hEh?Ic^(hs<SDON-x_fWnB%vt4q!H)yRSH22-&xivY7sK$yrjF#gd;AnD zWOy%~51EN*@i1IzXKMU&ACBPsf|pJod{E+ColzT*;@h?H;i+9ANYSrqgD<IAuYbTp z*OX+zS0!-e^}Wsc&2I#GXGhaI%!z*1I;y;wsSh@pY>qJAMU>$-)N@Q$ZK^Uis}(eq zl4e;YC`-INKiRy?JeSUk>29iVJMC-rdJ=NjQ|VyR{4Tv^W%22)qa3%Lsh<8^dYXd? z;w<{-)bSMN?hS8${cir|GPm}<A>KnF7rCewWyXLExeJb4ms>NHA3U2~Z!xSmQjYSo zY3Bj-`W6nIZ|$eN7A{)V3f$hsXr$er)~AS>orgb<=zjFv5@C@psXQoKVSM1+I)?qB zUuPq!{S_(akVVtN*o$*bxyHnaHi2n&|AML(6%XT!x`ZiHu7nI-8H2^~X3wj+L7vx# z+r-@g&4+ex6RWOc;1J<_mcbxcQ9bB?8rA<FoJRrzKuW8A?mhmqKps+E^(*<;-V#n& z4;_&5sz2sn$pN|l+CReaXR`@GoV=8ryu6eg8~{pA@NeaSAi%GxtY44g`lI7`K$IXZ zASDRI{c~jg?@#-6l_cfgf&M=|9{%Tp;a^!12W0mL2mmSa`t?Wt$9FkMjTbZq^IZ;7 z;{}Cr@xpq$f|PhcVVp1qD1rcx3NL63#;OMp08-%vjlo#;00KY?yr3}{s~$iANPQPH z2BVw|0zm4!pfC;?n+8AtNO>1D2HVJg^AcF)WDo#S-35)o=pq3DAjMtK7>rJ15CBr! z1%&}&sE0uSNNpE1#slj#E?6~h9^OBxd8e!Q#i#M&&wqcYweq}}5+1=qEyIaHwNOUR zWG3P{So4eUtP=p>JG-Bn>hrdUkkX1FV|vQ>^MqH1BNmc%1`ovn>Wnj{$UO&vH7ZHQ zaNO{jIXAn7(sZ6fCTg?OrO(nV-HiSoF?s~q6XXk1eB@_(Vh_F+y{mFw+;<(@WTkeh zprxWaupT*O)ke0d(2V^oc;XhUh9)Xl_Y!+(UA24cV?mM4vGpkqCT%8PoH(yOXP}CD zT{J0j#Kb$tIt2APOjLwDrNp+f7*B!~TFIwV6tb<lOx<rl2}_ENY`4pTpFe#*TX-6H zW$9AWNBETD+OwdqQixzeZLZ5E+46iTx&edtQNyW9T+e)VQ`xf2RxkgKiQ7<wvULfw zaT!nWnET?ms?KRfrS_8)42k^G`s&PsaB@t+wy47mjg5QM=flV$IWgFMG~cLrworV4 zVsD2p(?UQ}lA9hx4z(^>@|TTH2NI$M3}bLU<@oee^p8;+J=wBT!tq<(C<;FRNGY82 zaJcCkU_Jcd<z+Uey+4K;ZMTH%o)7FQ>aUcr!<DS9ae1X$*snFYvHpOD&;5fe9Wz&r z{PGmQJG+W1+v-S-G`$J!{>_r{?SlX#8@qjihrUaG`EKW0&$;bmnyBXsqm?9*1ee7+ z1VWo~dO2#eo?D1GMKNB-(@sUSrO~w~x@L=ub&MT)TAISQ3FnA+tj9e$Hl4e9sWlkP z8;TcIP;;eqJ|{|Te^fBVWBf6MO_jX!VB<ZvceB@({Ew8HPL%}<@e}@qqVD-@^PO7t z7!JQH1Dd7M72j}CvN6D<&0_RX_hTiV*BgFqw7fa+6Z$t<=>0s#8cnAgIA>d)Bxchl zh-4~@DL2|*jWb^Y<+6%LjAsqEnAC09={6_@nEQk4yy6Hj4jo^Q=78i2=~LEZOBKH5 zjD3?CM(5zN2u{tFNKR&;97WkNmyj0Q8yohK+1SE<c{{hM%Ke<XPL9p%v2VIY%LQ`} zsh++I!4OEUE?fU8<z(~X#G8FM)GX5AO6%{peFM5~E~p!*k4PUCsi^szsKymoJT8*H z6eyqsvb=o+*S3TDwuTNpPA`5gLI<$Nz#?QxR-Q)^LLX*D=DOC9rY#UUFUF82EC4QK z(7us#7cE9U$W(8GFEK$4Zt;yLZnofXeSR*S^a`yKIMm&EQ(9{bNFT4VcOt%cZ|G&b z9WBvX^?;zBOS{HhHZ}Nb6&o?%!pZo~!;ACPkA$<4ds!lZh7|XDC<RXn;5(1I_a7OB zx*g0XrzyPkN#;S?n2wjm8w*<zTMwAxHe~cbOP|ziK$Uc6d$tyrIdgl@2~MS(p#A3U zG|&L)#YtuX<(eY8-i!=9%^6RKoaTEoR}8r!F_K}kXyucb^1;Bm$S`emF+;5Y)9CI6 zNrHusjk<)N#C^^6G`C%>z4nH0-nK3Z=DX4CUDI>3`JtJ-xKqU;=_KsIrXkLGi$vH* z)|~+A9?{rP64?@0da(0ls-c*8Dnd#imm`P+L~NB2LGZTX`>lIgK3SWfQ_6;rY8G?g zQ<O6a_7<mS#MBh?9)e>iBA^tH5x_+CM9+gup?*6(!3d+S!b87Wrl5;cPYkLU3$6We zkY0B*){->3#I1mkWavPiGN<qSYgvYL{&40j%~xJq7kT{;O}U#?)ZaHhe=oCq@rB%U z7j?{hN10`(Nn2$qyZ2kI00spLv9w$bbu5+8{n5GRxWb?w0j2kvlP|V|S+3GwxE$%c zaiLL|;S)<;FblSD{Yt!D53gDPZm2!!ESPg0gVQ{U(+g2{HA787$qw+=G<y|J#QKt- z5udpF;81@--PF3Rxrejm@xsthSMN93Nb>K*_eluk566ww4{Kuc0HPWKDp@Zp*ku<8 zZe*UuH$U0<(celW6<5}ZJO>2k=$6$#5T!#cTQ5v4B#B*rSI|Hr7z+2yzv1qkF}t$Z zB&kzjvvQlBik@)(xPyC#;fs9_RNAcKn9J91vQB{d{m-|<lhKhg!;JTnu4(D~cs%J* z*!hDx^K+Py0IK%B{F=Brlk6P=A4k7XZVAvGKKJNR9D6w;W`RWQHAX0`07!e@r+t+^ zVoIXr5vQ@8h_*2+*KzPg;mk!8;2HJBg|yVO=wwB+-qeiCK^mQyBsis69L>!@dX$4z z+&og#EDc!oVHU%jBz-%awLmIE9-}m*u|_*sG3FF~mMRb7Re}ujtIrR;W%QOZEU7uf zPq5>~`gamV3W(WQKKwY>!6iXSbMtv^f=*Dz43I^AuZR+X_RX@o=sAIExakK^mMHGN z5Jk1E)Np^b>z=;z;oJ!Vzj3qmBjg{rKR&){T%a~VF1Xu6?q+3gj;iSIoA3Rh;0q6z zcqY*XE4ktNzgF4*|C8K6u2%yA{*rn9L2?5r#QK%|OBMxVzy$~ZDZ~0>j{6_84K9v9 z8$JT!pyUK|Q*!>Cbpqh|m*j>MBHaM}SGobC2=kwXm%q{tDD@Ty0IA;k_0Rst`Ua$W z3mStl+YtnSRBu6JFa}tF0Fde}D2xln)^-p8QoRL@!Aw^n)mu;)CoimY15&*OjlpaK zfK+cmV=ya4km@aHj1%T*P?0<&27-Cozj+BK5awzB<|Q0pSf@cQZG*;OCZ&)|+n_O+ zNhzdc1R8^xltSu7pfQ+9DbK%o3G93iav2gd24nvq2mrYW2?~R?e-H$KT!aLT!5F~` z0ze8XpfMQ3en0?7H3c*VWB(us04b$_#$b#o1py$H6wnxqMM59|<k})=3;^@AfAbO` z%x?*#UIH3}`7MFeOF&~Vza@}*31|%Fx8xVS#D8u(<o=U{yID=nc9r|DCUa?a>eTli zS?~p|R_6@}t+|DrG$@%KXc~~^RWgP;t&m+V^5dJo(3+jy&rJ@E++1yO<DdanV{WuA z0IMhA#c=Q8D<y)WE7RZUAjPz^O91Y^;D~h^mJ6S4-V3jce9vT%7{@8rdB1rQo(@0q zF)v|RyWmIf$NV(zpD$R9P)%K#YPR=@`z9h)nz?c$J0sgG-U7q>)RJGveVC|v5<V20 zsFeJgRXXz+2}IZj#~!bFOy<c5cfhBo`HWEtd>y5jNKdPq6>CgOT;A%qWJpL)(YA@= zshB#7Xca+xXB|MUViI7zVP(iY<?i0L*Y~Z1Wi8^~?a}GYVO=XmGCBvjLySO%$(oEf z!4+@4D=yoc?oKMZcs^&${;%hKqlqpSv+4`u$Vdi}j<!3;defqBD4v?8CVZv~+JwuL z@CZZ6ZJ<%?Cjfiz8mV#*kR}Rss*~4;;3p(@31NNorK1BHlAj4CrIq54j--w<5lLoU zSTK_!N)Z@NH0CR12-0c@&X^*7P*AB#JhGxVcc2r^#9?$tx4;`TbHEI`Cvse5MUq@; zRqenqtu|0gaJz^pojarUd?9ANUgbmF{)~=tv(jlTj*%~)Z-7w6&5%;O5p8%L#wXt8 zK#`(NVCT~juAKp?m3&X89>=7+@@wR=mTO(LA-JpbGa3B17Ek;VGTPu(9nUCIfr44n z42qaBMODrpzJ7RkK<h;j`lz3eb5Zf-_qE*N^{%(vbOj?GesiKI#LpV6`@+^9?M0(U z5Ej<XboSY?I!*MwE|@=6I$a!3kK-Lo0QT($T-Ie>-Rpv*<o_nu<;i8=@IZ>LdqXv7 zCUj6_lS!X@73H$PC_3On;AFz>xCb9zk5x^clL4-j=B+IaA~Qc9=AKd>ernd)*pD^i z$4#Yvr+T|MAEjB<2YA3@n3l{LpvwxmWnA4KXJa-O?|lwPJCpRJU0qj?LWOr35^<9< zUUoA*Dlx2Y<BJZ)Uabf<e?~CP+n*)$hGp$If_jjkV>EL}DVO_wF}J_K*P`&qzDP_D zDVo(<{+b{e6@Kr&b`OhI-RaM>lI3E11opLGTNtB+jnRT<60MDgxJEx^m8xfKMd7EW z=l#I^^itFEgu|k9*Tq#}DP&rK+v=FDZ8AW(mw%)+^!7eIo_92_F4Ji;_Xk3|u)(QW zyCUU?!VoLnEP)R`O-rwe+#Rdti^cDJ9ZAL<{Xz;4tP~pS@%#a6TiWpnE8dAM+(&NZ z!9zF~0>lr#KOVq)JhGX#&M=-tO2ozJd`Hb}A5=S|!`?GfP~#P)#qP(#_+tD=X*xyu zbptbNx*(|rr{o^`hyKCc<HFaHNl|zDIq*brudOV*&y}}|{65ot<l&z6V>=RlaALJ5 zB=YXEp@OWJm*lo8y|35iv4a(@-LP14tbNRGwjYD75t6N!0>+94%iXGCx`cWDr^`0W zly1D%o`Ur6f{YI{c^6mFSS?#>W@Gi^-)q=5Ve<J*?Vst)+8Q-fzU?}o$a~^VaM(1% z#&vOfBjpPZS9HN^1uF^qMbq{FED3_tdVv7Ee>8C(1b~!#{Yw6<)WDJpf&h?uuRrFX zt~p4KixXCa4ypM1V-D(~gXB11W(1I$uRrE~35fn%k_QHI|5*i#2Smxq4fw01#K{Bv zeUA65R_vG4xc+ROC6JSol7k!c*Kr&?9KSyfLcjd??f=geERO%y{tkxRCkX;VE=u_I zNB*Y@77*}TpXG)<5CjAS{MKc;VGjfW0U>u9Kw~flf`EX~A_GVa#y}7d5OSvh6b5S` z2nYx*B!I+V%+vz`p@jsH7_8I;2rVRl#9(O+fzUz%2<+!jRcH)aNC1h!7{mtxLJJ8X zF%Znt{>@7`VTJENXdwXv25YDx2na1CfW$aq8u@Qt!U2N$ll+^PZ~$SR_HSMS0>eD* z-@F9G3-h#p^AZp@tkWPT7eiw(oeR3P7!re(8v=i6E&k7p2F&#b8BL_x3)@+4eDAMi zl$YWzT&&72=w4rTilr-Fi4}#w^#B04*37TzL=p|J77vf8UwpHU@>6Wi*gek>3r`x{ z`|c8+G@4x?937#JuN<5cn61W(wplm+=4KFEV*68A+)T6*l4Ei_Ky;hLhUHOmy&Yx1 zq0_FwvI6shQ;tNUTpp(${t()9&C&kqim@nO^R{^OD5^1=4a0b6bG*QAcw>Bm&nSCV zY@;Milr(N7Ty>r!a`!T=*Q)~+z^iS=MFuu8)a&zD!uzygBlv^JGY98gc8j4h)yt^< z{EX=H0n@!E0%_T{22@%~#t5&N{ZiGMAD&7kd0^Kdjp?&X#ke>w93P(M4FrNZ?pf2K zt75lRYvVFCu7;I)vSuDvbx&E|#t%4qsy(;O+1YWvJB;pVJQw&e5q=zs>?7NcN5t{w zK6bXPT19FnQ8B0w5$~i~gC|!bK)W=@6w@}s#@M-m_@igWla!M1vIq-vwOq5s@MoUG zI28PdIMdR+1@Dw5`>0px{F@LSk@2~{)28Z;J8221vXRmWe@x*j#CHL|K6>fZZ~s04 zZ+i_%zaYWz7)kNc()-DqO5U#X7#E-0n~+TLl*&TWY}{y-{<ie`<nMu-IZV4P_I&rV zrk@fJQo;X!%)NzIm0R1lO?QYi0#ZuHT8mUbx<R_68>FR?MjAm<N~EQ`8w3RD?nb&B z1m3atd++DD<y!mRj&Ho*c%DDt7}o_%);iBQkMlRPngruv+qt`tH!1al`JC7aJzeoN za&{yS&<8w&W<B@yW$?aq^*n5AC@oWxAR86^8nJ@=u92TxTzHoWqeWzqP+>!1UQuij zSw#9Rp%;O64%s=KlDvF-PF<eANn#Z<r4Q<(FovI=56=sp79|nA*w3unUP@QYuxZ&C zf-x1>XN#~?n#fWiS`L$LiQ{*!X-UdPU?Q`DDUx!}CPzI#)O5&y_E=m#BSwL%CWf^P zZ?2_LpF8&@Ri2;8@{~JLC2d>!Ohqia*qfEycMTe^4jEYAU0R=nKU*+jn6eOk;%?+z zJ}vFxYIIq_wbbj=RnI6U{G{HfTo6{Fhbs9@bAbBQx>J4xlYiHz#>G{026XfO9+k#I znE*8SgeGLO8h`$@A<?#gJ?|1W*tRRvNJAzHeK1~zu#gNX%c%8&>DEVIJ6b0)UpGJg zbScXrVHF2N)?K90RAEQ5(MoFd&seP;>#aS<BKXB+MP8PPuh+h#sl@JmWJf54*BFEm zgJB1cUkBE*yfqoNrLVpe7+qu7crrhrDtM=gUt#avX6WLA>>`hjJ>K4~iuTMO`BB>n z9(>+$Vw4@@dF#7b;apUt31p)Ep{~M8gD#a+h<qWT$#KvDV#&kti5&dQZ$336Me^FC z<zz2C#6R@N>dljke5479gg4+%sZ_xxXK0*H!bdafhvTZ5Rj^j0n<2LTyl{+hmBzOq zS?lA}u;RTUMD_lt3TC0=m6;`99^u`w6Y(C&hY*tXF~(JIwZ7*kp$}0+0+3haH|iPp zQ#LOZ4oti7L$Ly+9W)8>*8^Ukb&6XRqwUxp`@3(TUB<`^VtPD;n|$%+y}Y<~_$XOs z;`3>Ciz0H7c1`y}60_}ov^M5`ctfwa<5uSWS3EBXXYM!@U&qmtbi|3B?3@Y-y95Ug zU0m8{ID(u`FX6B+?huGz7=NlDLFsltzl=uwPjx#Wz{ms${9E_E|EmW5_X3vtzXRE! zo{9W-$O#w(<^&Y5_aoAOeG?w&f$U(={fKlR22H^N0X)9@7_|HlFbE*=-N&Hihk!u< zhwnZHf%>g~KOr56LEBjb-493yVo+j7z@Ym9=|Bvcf&~JobN4YYGzAL;Q0D*`1X|q- zQ0MMrAZX)DpkLIvziJE~?%%nRzC!KQo0+PIo)g83)T6-<;2Nr5nn#&zC47RsNe}F= z@$jZsH<7_%lGHeCeu2&;@Gxd{GU2TCDIJ{qrPKKgBKlc=bt-?k-a@guJYqf@ieJnj z1*6Mg_t?$W`tH^)E3aPbnP)8W)f;jV4Y3h+J<1Go0!wULi)J))lq4y2o0s{oj&21j z{C40vCmzMwit#Jo3~qAd?v3-(bP4YH?k2XDy(*6k$|hWs&&}4ot8IkMViGB2$`S3v z9c;KMp>nO7_tfy1^{u_e|878X^x6AP;XxKE^O0UVIFV?^3+5Gnp^GiNcryYH^Y9`< z1TUs1y7e7~Ukd-@OmmTP8twuji89vHEyy$S3{+nBPwnlN%a^k@yC=;0$zqFS*uqEG z^>^JmWc7-gFBM}H2fqdlz0BZ|NhT!;co!#Jg{^qaWgft4?%(uC_RXeA2L7jEI-_1| zhh=NYF@Xnrh?esr`eJ!HFR06+&tD@IhtF<4rg)0!Nkrb;|8drGf|z#y1fAA{@jIGa zW+ubC_c&6xeONDfN>?`h%x3bYUS);1>PPzpFP;S`^tXvTa(n$!KyfyRHcbs={@f~Y z+IiVlfcQW&)Wi$VJ=kW8yn1>Bba}Ju^(waz4)=xQw7jDw^A%RNe_MZV;ILohkbmjP zGk@jptl#Q82^*H^`*;w{e@s>jIZ8&<T~mFB^<eWZ`=(#|JnpId!P*`%AB(8=D+fhC zKT}+3y6-h(uuctXvedGULye?Gla)(hovyt%C}gV#p9}0UxXr|`4eWQaZj9wG@H~op zq%b%Y4PXgIT+tZ%F^^?nJ%dR_-WWZ!&kI1-LiIPxam}h5aqu<oOdHOi(OuQxItoRn zCSOo{X|GQ`YU+Sf55c_@#l>#x+>m2o1F5fNU>_I@Fk<CZ2dem`jk0$R)6{Jth1kO} z5eYlCu*+gZ>lu4oT=Eq;k#W!PP*WB!6<6D}9e?(Kd<o}l3u09<&67MUv~Vgbjj6hU zwXBV9m#j;F)yb2F8mQ?^q?7CSQCrNmr#$V2-{1hP81<*F1>AyEtzDG-%B=;869ox$ z*=$cT((N>h*GUs~KiwDwG<M=e)d#s(<D$Ax%f8b`%yBl)Vu|;n*)|v1>0bz7brlIF ziQn#Yv=$9Me`caUvK<v576k(rXHTTqU#y9CV&W6AREy|2k;sk0G?C={P0S(It$h9< zUBKAQ?u%1B2{>zbD$@(5uGqAYlBRLz)2w)CEGz8X$pIQGXe0C^`bLo+t}cod4^bNt z2s7jZ!IAixS)!Gq$<8+%=^fvt7(ch9wwx03?&3it5&>kpN|JQ~_#)Khtyp?ihf0pY zhB`;p2O+XUai&dl=KWob2M;ZLcRv*O52KTiL=0%&F5o8#f4f9o5M-BiG;pb9X^uNB zMK1f2dguN13lh6Y&frIX_MRsu8a++Ty|CU2ox?xfYxxl^#E<9$uZYFICJ%mCqBc`L z&TMk@?p!D3fkkVR$`YWn)gOaNs(I*S`ZCYGLd8fttaQg?M@f^$_0Y=ml>ioop#U;6 z7-j}pJEn?}doCw1uc8m@O=YDKQ&Ow``&qx#O3dl%VYd~Y`4H<bJ$dh_I!e=8(roy} znB8-iE|14AA9HXQh#!&4S>Slc)$ZvQTf>f*mxc-<9jOXd`-=MSYzKr79R%M*QkY8U z)oumzF%pFBg@9>n-Z~qMpeKiz2L6zqu1kFyRz}Czlmlm}`-$n9Bt{dnPqK-5>9^0@ zBk9;Nk8>hBiIX~0uniuh4p4LKe>Myqs>K*AvmMfpM67;qwy&a{A1(L%<r}GJ7fv*t zq}ZE&Gf6GI&Xv#<A)ociX2Vnv)7}TzpKN0Y_Pp81Ij#+)Z}Z_}ZeXSQEGoq1EJpZ) z=6hK2wG?;Wk56VIspKW5^F1!juGE>BSeg*zm6~}FpNwkP#{r?B)6Gu_M9Nu7hFQZ% zBOSyIa0O$rn$9Y=?r<u5i713<N6MzS=p0`d`|gOpCUqbV3#e_*{&7aqk<i!})mdNW zHZjYaVwIez`~v2YYY{AU_6S~P{ri->OtK1-^8P1Pp+79Sij&NRp3R>g6;mTABj?4Y zB&g4#gpK;NvA=pB4r3<@&$^)F@!+ON?hZ?Y{Fx;N%YuOYG#?dxQaN5Q>ypcZxr_)y z%l`hv6mtE!j=eB3kDzj`P`N8~z3}n_Vm1javjq&X$BZlApL}t_X@tw0+QZ4Kiq^{= zU<Jt@N!zv-OtF4B#*h5EYHs-<&#sS@sD;CDqDAb=dqJ7&%$~xI>tG@H2<Jn2_H8-p zw~-T$FLL$b%7y5j%!E^;11zKVR|d+(KE|v8#ozf}$44wqIh0q5M!GnI)QD7$Gs(5x zRb;ImSsII19j0?Wt4XeRap~7xDKNgNqS&OF)^6A93}g-GU?)5~Qh!<BrS2RV_mpyd zNRE#2_MMq79sG*r8rp~`zo+18VfdZaDr3GPhiX>-ykD6iiKkBc$#L;hgnm*KC9t1) zjV)Q(1T74#3D4cxiAK-61g;s!&hF<Y88*hKEU&wym#kIkF`QCl-Di=eP$9TrT`{LJ z*802@7K3AM=3*rcaFSpjUCl=X+{D25xs(KKm$RXYi2;Xp^;gX>@G!@U)>6=l?_Zqw z{}m(RAb>az`qRMw=Sm#(%lxuD#a|`S-)|-Vb#>Aol{owTxIr)oAl3i!CVz7^5*P%K z>H!$kk{Te@-^Vzhmec^L{yz4{<O&oFP(R+spdCek08%{wgIb9Lq<R1b?TjCE|GpF; z22EE1as0;>#0fpg4-Db}bQ$+Cs2kS+S@1pvz3vB?f&dJfcLD;4g7+~HlzX?pp!;#{ zKn$8w1LF9nRRV(M)POjkbs1b7zmqN#qbB`F0ASM}0f2;+REqm7XOY>v=^X^uLEg-f zCjv7Sg~|k&!SAEJnuW1))n={FAA-R=12#>>ie<+|p7mKq6Rt7JU(qEc6ni98*@n?< zwi}rn^RdI^6|EbSH&Wk3wcb%;4u{1c*OVT&QTW5Zo{Tr$?{A(u&Unb2W?7nvnsHm7 zr^LKt*sRHHwv-w(8EG%5u~Cgqa@DYTp{Y`~Nuc}v<>$zNFCR<<Ka?R<#O?FG7$98p zJ8wczawZR7p)ktyZpH~7rlGSh^FIzQy~dwBO6vMXTXQ8q6)DtTvPyp`v)2@0l(8Sp z9`4ITiHyx#c0FA$nyOUc{jSqo{e(C!qM_-S9^Jr}5t*<@6t@55JyRT0$jv~*(sR29 z;b2dEK?DEIu`k%Tv@9s?LgEMgchS{(nrh<j4XA<?veZz>C!|+x9N6<?vC?lNuPqAH zyuLhZD8ZRQ>|5mjgn&vGBJZBY73>wa%Qb6dM13$Q^`-nlIEcspBT`sEuv`n7gj>w( z_X*&{Ri~#16r(!UTI7aFVg#9pvQ{L`T6fIPTrDQ3Ht<~Xqo=!)gy_IO-XEFxHERlD zM3I@YuAw;hOLhCvbSgP}dK28*DQZ{Zbe0(7Au7ZWDy_E!_Pdov<(Rb3NI4Xr2DV)i zHiw-GTJOAM+2Zj3;u-E+0lzX^Xgm^h>jYame=I(<q<@IuyKQP{aEZp0mv1vp@g^nB ztWj1x3ND^LNDeLy(*LtuqJ^qbe3!FYvqO{g^ogNv_Kh!^|Gt?{C5p$kDEupPePv=I ztJ9%T!oF!9OS{^5(`_R^gNs9Twb%Rzo7~=YQ+<LSu%<7t4>|n3a6i9!{OG*U=QyQ| zMU(Xk?@UnUC&#{jpK`<^<+)POF(oVRv3h6rkJ7NKz-ZNhVN!6x1YY=XTAZU*(dNRZ z)5L_DO%+~PE6!=|I08a{l4s_pFDNI!7Y5`#VtOTQ9#xS`LioBDT*n_%f4pUzr{Y+E zc=gOX5B=afa-?bdy3o7@8_K-KgC{WMcCaD@NTsZrhUij3KbbAvgvB3hK6vnvmJUZ} zqR8bF^V{ljJZs9Jqk@~HBaBfGBG7kiF5$xPT1rfVt(uLZbw(wnbq|$Lax7II@lk5K z5^g#=wn2o#1ySb{vYt<?XW`qfqtm8tA{Ng?k})xn>--jECT)jbMmac4@B7#B)4Nh* z2TINP)kW9nF0O^TeZEv^xO~iT<>&DoZqV$>iwESUcU{3t4#jEj9EvZlX0RPZdZ$hy z&jLmov4SR<<qs89`zok6m2+V7P#fd0f>Y-k8%r@O3du!71r*&yZfm!L?dBhpGci8! zH#^+bZEkj6<sHJNmW`MgN|v93+spMB4Ji%xxy>-^nyX`#&-%Lbr8Vd?7JM9GH{NJ~ zLx>FZNBqqSyLY2Q*rbC(r_YLgBNG^ix<9J=5P+2hy}9_U4+C-?8WXn3qP6?*k$4YZ zlBud1sGH2%iCex<<f?F-I9e}VmUyEYG|5A$Rm--*a)@cf!nw3f-|f?8&HA#kGG-!$ z6tY#dCh=$yp>197nwV`Fy(r0{7iR(yX4T&I#E|y&Eu2!AZ!A3OCw+N=vCRT(Cqv5) zYYbxAhd4%Svg^6#POaBX7K2N2=j0O^y)?>_uLO!Fl#w@N-Ml&ZnN9^>eRMrDXn0{w zo12RDs<wH3oD6HUrlNv_c-cWQa_{oTl$;Ev?ifmuL(JQWr+I#l0xWUg!mvBwLYykK zVBJ{4cnD$5_Zc4PhxOOm%i67-?2-g$JbM4)@WEVydk0OGp@!{?33KkCv@iYcLo!d( zFGNW}?pvdrRW@}v+xCT+l%1IhG}h{ik{wZ0->9WK@N#8e<inw1=TlW-=a*}dQ@X<~ z1#0guM~8?`B~LMHyap3@A}v1r=n%_Ia^y?7pZWP~Zz<fmhOByAb#@bsG^QU>GSXH8 zpYz8(Jq1pa^QA&?lBoL9JcQbBZ3}jJF6}K!k$X9wIr#v&Q4#-BKXQLB($e0?Es<B^ z(fqlqn&YsZ49FxEAW+sIu@S`q*<R_huZk)LynVz8+a6ghd$>Pwd4BNj@8-Am38#5o zet?;!n-=d{FS<Q#v7o2oU>`eIN@lzEnR0p26V1_=wH1za9mY)O@|dvui}jCzxYqR1 z1yl~NF(IMJmrr==Mq93FUXN6N#FM^=<a@5P5wG^Fp<%RvqMl1B39SH037x$!&}U;S z<ZW#Li=FJw+Iu=l&DX4@`cxB~a_kaHeD4HbyDmojq$i5L#KlHZb0?lyRm-RHR>wr% zySeUQ)!exrzE<;wg&|o#6^2%LbNufsyaAp&i1RlK?_Y*i|0ulK+5Y1e_+Q)Je-_@H zz``5g!2j|le>WBY0yyvh462L)aNq$LG`$=IaNzG_99+<<On?Iqz(CLnIDi9xA7h6W zAO!+A@Bj?TWtd<Pz<~!~oY0;IaNq$L2h^tl3h(<E)Gcs;0}sHUjdOqi4m<#ZDw+Ts z`1=?HYT*rV-~kvH)TjN^DuHl9ecC^*5(qogr~T6^fk3&82Mhu@@Bj=1?P&l9{yqkV zlFtqX0UUS$2DLv1IPd@r+RO<E;J^bgs2>Ud2mU?=y*&ds@Bj>|p90l^|GmJrWHs40 zE1VdO*J=k6`(MK(G-F2Pu=~6AD#~Ye+4p2jqR5F7s$#=MBQn2Ec{Ni|_9*UTPW^bG zfQQ1%>kZS}ZQ*dW84|6+x133l5hNmFCm1CY*%KC*QGU5`l0lK&8=nzVGeG}AvMq*+ zcUk6%QIn5SzQR|k2R-_H3*puqmzp+@lyF!&ammr;SVQV^XA=pW4RMCLI+?z`?bX)^ zcNKBe*lwV=)QGrCxq}sR^;dQ6DHHjs=jsVcH|PAc5W%tz<IJ(#9V6;%bfEh%*B~y- zs129EedqCmpLk<N<Zs0mF%%fK^q%*goWy7i^jo=#*}sZ=YGX01F0VM##lU5hA>9aP z+Mm3OBEtsjMLy8zIXqC1`|M&zqkMa6VaaUJPR#SQY)P#78C>;=)6aaRdS~uK30x5d z9CK-wgR9eJdtMxKDb`|B-P@}j-G@CLB9#rfY0Xq|Oqg!g8?+<rqO~M1X$UJclFsC% z6??N4r7}qprl>_D3!OR^8_W=&+n()_*Sx8FqAjGXWWi-7880jxl4X~OiJ3xu+OpJw z=YQOyT!LUv96F@r;?_xpQx+wv5YU3~=w-Hs%=+Si$k&jq-LtfBm0U=Vhzn&;jToxs zHdH4nbL~6?aMUcH#V%`;!k$Ya^Xdt1=y*sy+Wu6^wc>LMM&(o%nVEe=i(^dQEn-WU z^)-hw!XW1si7)!?Gi3@&1VPvay1J5n5NdTv1t$5RtMwMi3ob!)Hoaq^b}}+IR)cJA zwS6otT9Tjpv&h}SF=6P7_KV%=-o3%}D12`N+ai&w1;uzYTGQ3(Vq$M<ZmZ8D91m{Q z)ywHTZMGiQjG^bR24m;fBM2ClG7Qyp7Fy}s`%&yXtcD{ZoMQ4Mo`R2;zl<SCDYhF^ zTje-!TaSRrKt1i}wis%{m>tCsY?d?d;c&f$UBp9I;_R@;ut&^G9j@PJwc#SP#V<8@ zK^O|_m7E2(_<o7WCrDTC=+jTPwH+|kCJbxDHjbX4i}66&#nV_yY4-+EV51up&pU?7 zmSQBFja*yyD#>2&f}8bL_`P0=2d7c`g5$D;Q23EYmuc_jrprU&-6rrFoZ9nO9__KA zrS1V|J~m_m=U~H&6aC{*Rxi(+3)izvG+oC^w^<ma3)L8OwS5e+;d8but(1m?IUCcU zB8=Qe+O=l_?DT!_XMNf)6DOa*Vo40#;KHr>&CaAdv{l)|2JF}-!W^!2=F<hc24wG# ze+fb?T^tK@^{ZwPm-{xPI?Xdy)ji(R_E4N)3cv5F<mG@bjbZE4VZLx4tKN3_qO(;w z!&2G_kHpHd*K><`X4Y9juit7+4ks@v)=$=onjf0y^{8^>X>HT`)pHI!&d)2%7Dl7E zvca`I9k{$)Q=xznqD^qnuEU(0QBE$kHrZUB>!Z0#x`n(%nrhpOBtz#~z<2g6*w&5l zlQ`+U%iQh~r}<#ATj|yn8PmW)<Cti@q2i9ycCx&UhCpboz{QK1@ALWN>ZCrxN#aBo z6J<hF9vP<2HYA#2>@ip9!+@<Uv7z{kh#;O7R`Jx$fl7&*A=#yEgtNrG(SEtA*V>O} z2X;-A*j<c5qje15TzfxH`?+=XO4_&0dQBb0qe0hIn+o5xbj%pCWB0NO)ZCz>`0nwU zu;i|Go|Umc&f!#LGq?DD3(n9=aHrDct%&r3RE69K<_+1UwfVB}C*#GbO*djI^89u) z;kk#B4ePl0p)rq%VUzU;-9ON<Pds5E-L}rM<wxZ4nyzcxblP{g#e8CCEvwUCDEZ?} zi<kQK4>RW=g#HbE-V9F$JyP9E1;@+eq}|q!-H>s)m6*zAOfM8R7_Y}SDbQMg{}q}) z2%!0cepB-Yao(@`Isd!rhqm4R*B1MqRX@*vz07~V3E&I<x6EyT{SUyPy3_#qAAmu1 zsR8c)eT;(#TGbCw{{a}(dhY&pFF*_o^(6si;C&2QlsM@AbuR#n9hy@D1{n7M3|g}Q z1{n7Mj19_5f&s?;eGCGI`m}#qC1B`3+dr)m5VT_wFdMW>)VO(mN3%&*(|(i8iRZDd zcJO7_1)nC;`=mQ~L=J48^z`{i@1#e|=hLXN5)JkG+w(>>wUU;i-74(hN{J26lsEf= z7tZtfsm&;NMW_C{S2~NxO$5UcN}K!P)o1es4QekWbuaQO<1cDbE<iuA5GG2Sr`sMm z>$JdgN4C42E^3!oCs|G;G_tN5(8u8I<XP796;P|rvxxLyrO^Kz6Z+=8OGu@sF=yhc z#_3pp@#Yj3BgC62<YSH|LrGoTkva*J>OzAvqwQ%wuEJON&71?TjX=#q_QQBv9gSu$ ziY^ZAXnSMruI7VJ#VXHE`6Y&KUT0qz5NCxn>axaB*0|3&Jkp}C`hKRJ5MN)gr};Lj z>^d7#F~M=cW#n2u7dMA^8>CUa>3lBiazUX#Q_#QHOYUVho{(p;`MLWDGr?+WrSIc| z)-0?i{#{upct4h>i8G|7j_8f*hgSnWalCe8zfjP_>3P-5cWJjgDeJ{;P}rSR_c@8; z#PapCBW`}Tf?c~4n^SmhgxIhI^CWmCJZi2s^Ag9Aq0^YsATmv7ri>TDi}kYObpr2w z+6-T3ZYDP5YJIHCkC`$WOO)d%a%*%i_6$Km*8gf8C4wdA6_2=VE)cvJEaP4<$D}io z?auK82Is8^f<V~@>}W|N<}<GNWUa>5B-Wpfs+B)X4yko;^>!=7dbP=PU5-!C#nHZw z+gf7g)7S=(EqT9g)^2>oM9FZrx4p)i%0K-WglnHrH+jkqLofV^)W-Kw0k*crg8sNs zgpVy25eODzo-Zd>k&>|VxHu=~lR{67Uds|}UP3P=t}LY=)9akilo-mfjBn%a9G51K z?&!|(+DVC0Au`q6SEAxqvLK1jjF-hZUr2?egHL!X&h!YGH47TN^WK;az%xjVHY3NN zd=ehD9pkvhI78+>H79xY;pcu!h_XFe!B|4?r(CB^3&;uimeK-t79v^g15CbIM;Z=` zcY{B(5u+24HBlz$n{+>g#-`=}{7Qec_pJRz=J=3C$8kLa*g-dNq>Ul4%R#F)I> zu;_7lFbUA#pkv!wf1@$bkPaj_)6bwcLtklUKCbS@=C0Xk4^PW+K&6%bru<et=C#Zi z2^iIt-I1#gj{RocfUtb>RU$cYmY0OnQcb-%c`u*(FnvAI;?V|4Tbg5Ty(35WbXE6v zOCn?JLFMdu<`nFVRo`lxq&m)+hSFxx#1ihUQ&R6#|EBhYa3X3We%jZfPc{~IEj6cj zM!nA1G0HS0xZ;#~@i3L&AA4f<-cCi|A|GrdJ+|F_aUlTOy<673BffZ-W3VeOxMRcj z9ZOwho^aoJnAgt<jVbVemK05p4inE_`7Rbu=JS*+-TErI5}Vw`PQWLB-Dl;(1s(Lb z(&3^0twiN|@Y>ZgDiIa050R4)c+^*&T2{u}J1H$S1qbaZhuc-(O{Xz0u4Otz#;eor z$?p@Q^ca8}5nqnbkfESgHzdqO1u$&FM)EkfJpXbcENs2U8DW)RI+p3CpL|=q_3j`d zFEBsN?YNWh=`iZpHo2GTlUK0Q)dj~yq!k}M3H%IoDbZ>BHCfXm{ZJOBz0JeP{hFiL zki2XeCFCfc(x_4V#C>pSlb>CwBpBea?$Z(UVg1>QlMJQ7#$wv^Quo=ZI`yWe0()7H zmxax_)q|rf?-j?htzQv{8pml%!qdRgH#9#+C;*8*C%B>GEnI1>2yd@w-9w%B{)vLK z#?hE?x(ENf<uJoEsduiilR$CYxE>_u_gIrl9$%DM+;$NmQ2HEGejKu<U*_>{2t$g@ zKIZXsoS1~g3;d_OBM&472&m?BvU6n)Mb2ehqmV4bTGPUHK8H6g<|h9jEIhyLP{Mwa z$H*IpkH{>bMT~b=W7Va}K!G@-!^%zwD{-!X`fWd>Ykx0o{4p$PHj*Lk6t<PsM^);( znY4~`+|LeZz74$n83&oOL-Kn=LEO1q-c{+W^TzvM5k!jAkT9B>IAuYYnul~-9N&1= zKfzD*7D(jaEH?zYy4RwpiwD%nn%CFr)n`}CMwaqkfnw0e>l9lR9{pU|+0Ythezy$! zj5pXeee{!*3rev4D98~cy@lH7&S&I0x?|dPZ1S?Kc&_!F+1{ea{7UlJzXWwa@ZIPB zT==2D{u<``f(}r>##sO8i<hG<<gc$8w#!)Wrk!f%RFEENU^5X5pnuC3)+eo6bxq;1 zog%PC#t3xKI^k{sZ>{DUV#UeYebH(pBZZNxJ{zl9_kSw4XsoQxtK_uj#>B*8rso*w z;bEyH3`ZO7EaHv8^CBL3{WOK7;zDvNd-v@|BGIODZZHjZ!iiJeOfZW<Uu@E5g{ML^ zDp}p8XL@&fJcmY)=(EQ3i0vqti(xt$AI}Jfid_?COgHA_dakd%mUB3gDlgtRPc<<f z+arH|LrPMHmo;Eauh_*jbxJ2al)!eF93=-|Lc8U@=Wh7(6qyX+k--vC-E@rg;MvUH z%7dA1Dih?1vA{D04msToJFFR4@;ekZm=R`o1}FtNnC<`T6`=nw3vw`E5Dv`tTi1L3 ztET?<g8Uy$^uM;=|0u}8Y=BWpFkndTmpA!46CDf~k^^AS{1-4_NbWwy0WH)A3>cET zkFi6$+Xwv1klbJQ-~5&b9j4Oye&&z#2u7DoKMu7_8mVVhvbgMK3KR-HFrlPop;a}J zqJrrYQ_cI4!t`f*NV^^B;_V4s`+Z^DJWtObH{04L<H})3Dn>o*Mx=i&_%wwyN;hfs z){i2YJus8%)={*q%t-O!C;O+;!^w-|AW020Id^WZ_*I|V@!X-!VB6BEBO%+X`CjWI zQwyg@ABM|En9Vs!-;V_3C}WmSKQ|0?JubXNkaP{vaP8Pq#EYzTO&v_MN$grZM_MGu z)%n4MpBb<aW>lu<C|cEEB-(O|Rq|E_;SxdZv1F%(B+J1Un#)k$x6+c^`?&NFRf5$R z+aSEVlWsyLEh>Z$0X<7N$s&#_=kRO3l5_>WRJZK3D|o7<_~x>^u&G5Or3JjI9mII} z`BHp#C)=#4r<MaFI@b>;R-**HJ3vt~cSPQ^enJz8_^_#70a3#Su-}F&um}@b#KJET zMHuoVwldrl7ZQ?GF(;inJmCT-WKdcUf53AvMp|`BTbSJSn(qe>7T!_kmYZ3g>aTbp zK}Z|3K09rs!n3|=P59PBvTEp?gNSrqfY_|@9AoLS*G25*v}08YX!EmUXl)3`L<R@E z=ICI$xpFkb9l}7Eu8PNJ@3ylmcY1h>{qV<go4nja-IhQt@;Ap=6nmcp7t4gcq!(;X zTsMnj`iOQ2D!k=+4wLq|4>ApA=Sa!v(UteGVZGJ5q;wIZzEEW!Y=)J;Cc4f<ava6I zs*~ekPa2urjwaU%iYn|QfYCvvky;gx`5A|yAms)sI;Ji4elRLTky_9@|FymNAcmsP zzmpLOv=*)=(CE7zIb)#kET{aLXrKE{rn}{5(bG%b_fGaq2ol`{i8T)%y05jnqVTBL z%tFutF)r07<A}*D*|lC1AF(u+z-c&~T&mrCMrDhf%4DzVn3wax<BM=IORK#8I8PfY zP@Hrnx<!@Uud|QRZ4?{Ko$+E0i)a04j2-NMz#|o>L^^1RWB5M07R)Y39^(PF%Dh`V z#R#F;<j&?bG*5}I#!utr;WJxfOKMtse)qB|l(8w4jZ1Jpzqa<3rrttF?Ry?Qu9_No z8Wbz{cZKU*!W)zyS1Omz*3CQHXm%|Z@={Q5;3@~7i&X4|YVd91j0c6j{&81;evzmx z^H|sE!J-pmC8t4EHPe?R3%z)AEJsVeH>db^glj{pCw-I`rdY#Qr?#6+<o)HIrB8K` z&pfNQF45nZ4tTt+4;38k*rv?Y8J{on7x=dRk>|nU%O%Exag2hz>wZmkl;^I*jt6W? zcy6Tb<z2-Ls+g&FUWi06kQ~(|XkQ7x48{JBeI)><UcsQ>`$_-<248=h{AI9Op5m{M z)xY1}`PYulpI;`x`*y&;48{IeOZ+>-tu*iZtlI=I{P#UWc=l8cN@Z`)q|86mEI(R) zK#`e?P#C4`;UVKr-1p7UgL=cfb`Je27y&-0^^1stX~*PH?6}x>=XWhdql>QA^6n;* zDwy?`;xCgY(M`|KqyrDGhCB!6P=;zE6`xoJn3K;D>T`>BFPZMKl+g9)hqa|OzT9;s zZ`xDho$mK(yA#P(DyneEv!XK!Ka;fiq2wNwE>ZBUh_N6KyoQ9nAMaJKyFu9kBk2!X zfVP@`nehGp{f==k7;t?M82nq85`w{iak$?n@9%W|LjK)d;b1Ue?Cp0s!2ia-bAL#b zP^aX<fWf!l<N%XzfcIpFcJ2=bjK2LY2Q9vyi-m`Wi-Y_35+45usQ`0vQ-C=*DZt$S zIldkYHNO5|k7NI>$FcvpSpNu>{9^&L|L4cu&#(X2$J5`ItbdiMe}2jU^XtKYA-rFH z%YS#P7Z@;vcOQd#s}~qBga`PWLX$GUfc$#EOG3+60|WBw?_<zzhzElK`Skz{YB>(j z@b6<#r3^42zaD_GL46vaiob_JphYHt0jfO!gEp!O2B`M;F)-8}Yk+DGz@X_ZV1Q~5 zz@Xg+3I?e501TR^0tTq|fTav|#~Ps8127I~PXnm-01R4!5|{&8)CJ_X1o33m@AfmC zcyq^$CH`Q7Fl1QYkxeScS@sm8#L+}^(;X(WhfyCTGNpv<ex5hFM5aG^VqN}0z_%vi z%|I<7Mq$+V2`-GnEB`c-CwK~(MB*C#3Z_xUN8hPxf5uV=5PTP*t}ayQL6qb$h{1_X z>mZOTd?-ctR=LgXFmiS|-?6kjTUe&|hm3uIjir9yID1v9ht^LlF=9;B1Pb0*J(oj< z*4mHE{Ia|ciQl%p$ngD!K~Ik=+o;y|(K)!-)BV!Z?k4BCTcbCM4lU^oRu?~|6rP)a zui3l#w3!Gz71ZyFY(l{VW=U*4fq}C2@I(c({65t@KhbDnXlljY#0er`MH0e(09|;a z{sbimk?S#$;T)ENaN4iBo<}dr!1}|5*~?Zyt_Uq2CMeMGeAENwT`Z<wJ$Re9_)zCr z{J}c-1NhAuFKHT#QfBKLa!QB0TbNjp9vAN)dtaG#3bs8t31yb&W2&qloqx79zADS# z4__FWERrqICMh?iQIq;Q9quWNYFHCxwj~_!(%NnghCWWz+_xh=cb2N7a<@HwVIe*# zeP7n=a5SD#FxvsG5=QIG3Cn`BiJC+9v;9P#FUSk?@eAQdJfmEF%Rf{~r|`}n9m@&} zt=UWX`pYl$(p6d0+m>$592}vPS$BdhIrS>gBB!0y;z89s8$lK=Hc?T2UuJjm>ojWN zZEILVQ&0o1yE+MUS=&0Xye;dkh7i~w4M?`vp$BUymZjCZZ;eStI*0^9Qu_>FzC{p_ zhJAt%?4psW_<-{p6+br|+zmHo0en$CUp6Wx4H^O*4&*^y9A1sX*N2kByj}s+A=qS# zecvJ>tN68~Ke1L%Z?hc{<;X*BnY}(q<|MCb3LwT8nK`aleB<bNWjJBA_Lv*#Tl=fy zu^9L5?_V85Z1@`-(F3mit{QmiSu7`Wy{UM=+l@@ids47}IW#~0P9UWvegj*LeqdcE zzi2h&!ATZlUF6~!0*Tf$)pIc8AJ`HGXD|B*b8!=xt91NeqgwKPBY{8wpZxP<M`I~0 zso)c$+1(UHGdGEDNGuk!_Yq{S11B)woPVH4S+TPz30nmB*hdfRvSr(x-<72-=MsT( zrifEl%)H9|(a|&Jv3P@WE*v`Uyrqq%*8xvU{MFE^XC{v<w^L<fcKWX^q?LB{V}+1W z3{GR=Zs=JBzaV!{RvaSZyOI5%?@(*C!TH{Dv5E3t;BkJ~x<THaP3Q)x>-6<YHlZsR zVH`bl*)o4m;)i6@X<yGH#5n@f`m<aVkE_g=<rC}FMBa9J?0gV?tTka*r)*`o++yCa zvLv-KGQPt`Or5Ug)li2t#t>3`=XtqzGjq}MHTm*bX@h%KMwy>uWrg--of0`eHkPrR zf9hN`4UU61(oI-i8v)mD6C<VuvHN6m`}Mp7p&7F9QCeNn&1$cbxN6p{mF4t_yiGNM zB~Ntb4(Z;?JXurHyKe#YGCzdB3z<>Cr41OQog$#8kd+WgLsn7V`J?x@j_#t;>f4hK zpb_<KmJ@~uu9nWOiy?kL?fz23(sMdQMlsf|b!S(F$Ph1zOGw=fKUQ@eUg(?zai*m| z9X*fOX2KxeFL1#Kz1|?3RP1QVmT+_MIXcdsbxs>#cRJ?o8Gh`<=ei^Lu$s}#p60E6 z4fy>sc&2J|*LFznvh<r`VzgF^vBnK{${}t_7LRSp%Rb%=NcOOxX?#4&s6QHOFkOxD zgf)&)h)#HvFs!!nY0lO&>ap7w5)OxL?$`_>XKA7w-fPx2d=~K=lDkWqXT>n^Fr;&~ ztk8OsU&fgJ$2wiWcoUf8_hLA}fC;Bx$Unmaq0M1|0V7Vo%K^Tg?{gf`Y-2DWyZkq~ zU&G6PEzE!KUa3C@6FI>DHwBOb@}E-x!N1Dje?CqY#LdFP!p+IX31Ja7)3;SNcd#^O zQ8a$zXz9SBWbE+f_uhgNL;+#v{IkS@aQx@Ic`)aHXnuY_ixBj$EJDyfWD$Znfz8kV zn;)7BOu@m<_Gere2gg7B=I>|h|Er?<+l?3Szh&%$Ie{$^KyUwL!EydwO9ar{?_<zg zB7olh3-(9;2-KDcptl2F5}Nx12I%bo3|eX<7@)TUFbK3?2|#ZLU~JHSB>=tsKE?s{ z0|ubC12Cv<13+)TkFi6W^aKO+b^r!#(i05O+W{D~DONB*ZwFvd+dY8Z4#1$Lr-K1{ z`+W=obxi{Fb^yi+?avL++W{D~j7Ts*Z@-U04a)}u^mf3%DKwcL4A9#F7}U)#ZfIT; zC&%vy=LKs2H=^*ocrZhYra<BY-aCD4^JOdI<ht-N17Qe4h)CC#QFr-j*5�hK((5 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%0A}7}gXN3Gzcfv9Z*()G2Q;WBP(*Z}GZW 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%0D{XM%zb!?&(YE{k)6)SvTWjqo><I_B$yM6S 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�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 I{lky{1~;AS-T(jq
new file mode 100644 index 0000000000000000000000000000000000000000..61a3a4507dc615fcebb61f61ae05c4a537b03a88 GIT binary patch literal 1672067 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�e}4ej39O6pFE6!f=oz0065d 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�T zbn?M^ajto4u_0sG^<ADlvrRdRncr+4olLH?)98lg>^L#<_%L=buV|iWhm?`hjI<U< zVy!h{G`u#|@^BozlKtRuoJ%xTKGo^0yBgTjP4Fy@gBNC{jzk*`K_()p{poSE5Bu9K z$^GlI<9=;(vtx`TYWl`e=K0Deza{bP2+ZpE7K3)V?96Jl8RA<nYo`klu9>&`DZkHK zQ6*i!BhGPg&6GV$8;|2HzuHr>T`oIv@#0L0>R4EfPfdAlwx2a%mexxImX-x{{cp+d zf*n4`o?O_~WSLK-xTz!Fw5iDUA?F8~v#g<Awg~RmAr}qsfp#wQh?o1!yua}HL-W1o zo6GBZH*eps7t63S7u$<Fy2D^U4YpjeDzWZ+P@mlnCtNcxY`$|WR9hw7nCJ!1qYaLu z<=?E$4cM2{tPQemoUN=H{kK(}vsERZzg4_;dcTR0e_onE+Fiq}5v=w%PIG%oNrx5b zt0_3QJ<S=h6HJk<nBF|{Vu7QRRh^15*P3p*Vovd-u%^u%s-APsEu~zwI%7&wKA5tX zdrI(&Ef>J$s1EZMUX_<uPi1&{Vtvqy4AkNIK>mEF464L_zv>hQam-j(R($pg-!xe9 z4HA2}+#tb+@2YR}Sz)RQ>-2y}>NmnY+L3xPmU)3!E#wLd_eARxY^gIQ*1jry$Rne+ zWif~>>I1*nS=D>L`N8@kmu!?f_Im#cg$Pvr5FD&=;HCj<u+bQZAWp)aylZB&*~1z! zv`;wKxUltrM&pgt4<r7hnvZoFbN(JmomiDTz6Yg`{lEyseqj{id@vGmei)75dQz<5 zP&}0IFUjY3I7Z$}?U+z_Z|a8pmf@u$3E-s?TY@u(;N2qS&=n#jtEc3NF7d*R&7>Za zup$nPO{H=evu@aM?r8_HIPhF+C+wJ(x;4s<i1*YtHU13geDP*}4H~_I>yDNkbJ;|I zIkinK`G3uDxE-j4aQ1k@=aqTO{68~u;j)>yzU%|#p$Y6Y^U?70Ymmm+4W!dI3uX0# zL3sVx&}B!+cEkv(9x;Rq@QABN2wH3h-8zxAgA#rut{r|P(t>@EX#@KcS++e%Pxvyy zuxaRv#EGXXz1XspMo+J3bl!!lCPSg2v>f%G9c<WVR*1@>>;s=2kH?VqHj&>S1^2_z zD|S~cVG=(xZ4YByNDg#5Bq@f-O`bUY^D$J;`hFfM1@TS4cRoqG<$aCXz2Dn;1sgsg zE<<fZ+!c3U^UNAI{n3rSKeqex`|U#C--o4ji2u3W^oQJTnda~amxxa5$C|M%_w%(Q zxPraEA0O#F!u12wUADeak@eBF$MXPdE9HgojLs|AqOB{YwlDmU#gX0aw4AH*PBJ14 zdj}aw+|*=WuFe@dUO&GaYeE$~K^U|u8)q+8r4;l|Ev7bDWl^}g8<&lYkm=U{;k!y! z?Z}Sc{(Z$=N)39hGoQ0<4-2m!c;WWKmL)K>x<P8wzwgY9oaze9193xDb%q=wBD>xS zGR}CI)n9nt6ImyW(V#1f>Ez%LgN45hQxdDgw8ZW(HF`8S9s^>B;u7MP;*Ky=9uios z2p61K!fez$xNv=u3dS{KF^!Q)GL<DI-r-7?GwMbhX+Rj(C^MZ?tqR5NMu|FH;iY9~ zv)XlLjQNBQYUWrk(r<e$(->_<(?-I~yn**CqBfHT-Eg@@c_Rsqmt_IOF8aqg+UAzq z4R^HbFs~js#FlGC4e~+5B>#MB#tWC}I(R_nTW_jDFanIhOX3q4f_Gpe824K#JJw2X zI>cHdIMzn7_u+bCeYm37UOZEr4vs2e`7UlFb}TLnw-&*HoAcO-*Ne!)2}a~$BO_6@ zWvZz>1l@40sS0Yr$*gFURjtOV*QDc?O0sG@teX}`NsHKV1Gx4zU>Cm&*re-Zh9|sw zQUoY3<6_DyXFsZS0YeEHx^55CJyF8konLHpjomQXx;9z2nsjM1tFY~2dmqOF=MK1x z{@|Iu!|^&il&dNXoW}|NF2czEuck2HdFHcjuUD5_eyFtd<Lf7S_~YBlAO6xF<?;6U z<?xL!`ja0fYSfw(p|>wDWDzbZp0|(ki;C^-_m{uF`}aS8`{(1^ukZW2|9<`W>HR<6 z{`&IgH+o~zk@LUbKK}A@XjY=up;nsh@qx5Kjv)Ulah;9Z@PnLD9+fG+N<YHcAshH| zOW;n|kEy5A$9Sqs`?vHCmVWS`oC*VHuN>BVuuFoGUuoPu-=A_U4low@{*axMPlv&$ zPiO4%rL6ni5h*wKl$<5Upv2Hdnh_!_%E$-)IW;AJ`}D8JAAf#NM|k(2Prv*oKOT}9 zPDPcow~P4m?N3PRkfh?{pWglW_5FPJ>w9`>z5D&!r>{S~|NmJn5}HCyM8CwGGf#3K zFlIB)%Dx33nUh#A4fBLXZc|#mUNo4D3Tduvk_mQDQ>AH%jXY8L!s8)R(Ae0kUhC1P zjv@8hvhY+}UW;@y%f^!DrO81lAAo~hIf=~d0+&osQya80&k2-+5Qi>6thF#O1@5mq z-ew)0X)TiJnYN<d<O$Xevb&5Ae$Fkd9`}%U?UGwuc|_n8mWYVZseBL*;OQy2XUM`H zdBQxRT4w5*(ma+q#(PI*>sgX>{A#NS2kTpHUGWt+==2lHE^SVXgL;ZK8?=m%*k%C@ z;`nVGjTCOz#<I}J?c1;u^2S44hsUkabx(?G8%0Bdu=AL+JSj5Oq?|d~Bcmn-ns4`Y zS`P_duQAkUEyY?=YOxgx(GP+;jdP-o;~rGxaY=MQL;xKU5t0Uq08(>#aJBP1^4gi6 z8SPxpoOZTnmV4f^Zv9VM^8<l}!T}#BsIVW5xre!mwql-l+4*!|X<`&LP;`4#=eVP( zXYXBV+3zw0N&-mt23LB6ho>-bcsfO`Ji)0!8`49?NNCKAn>0Jc_yX>{EaUTxx8fr$ zy0@lGTJ{*>4QWw_)Vk8(9T{8v|J?nxK4D|I36?wE@Xq+iaurNeF7Q@+1tpeO5YOrc zXJSM#j?7cos&o*M4ttDC&sZEc(_G(%cg71x8(P?G_CT>`YSYMi>S8MyQ^0CyCa4TN ztv@Rp%Y@r&dV6);%$BCn<(g^hHK7HL7js}7l_sN+uR?hCgxM+96pAf9a>FA<mVIZE z9$Kv-ki&KZ>`p~kOVF^aAi=AfP+fL$je6ONN6*-$N`=j(Eb#3)?3aJf)Hc(8?BHiQ z58+ZXUI@J&zf9DxU9L=QZ+EAn;zsrw6m#ULiMkPNRV!5PQdK)jkw{e;ngq=RWm4hJ zSWj?jqf|6f(LR!oy$?6<dFx9N+SImv<}P=veK;iLgq34DIA>|SUc!Gje1UYDSs$(u z;;8<Fhmq8TRT{=&b7x$nEJn5W18=2B@TcmELz9XDx~)%eDjBo2>H~@<N>Vf4ayjDo z`Gl7#3l{}xLbvB!v%S97CwO}-dh^t5UkF#LK=9UXuc_G_f%A4p2`M8IY(2q&f>Zh= zOVKj9?uECFj0yL|)qCS>tC@XZSFL6a5nd`8f~P0lI3<b7DON9+8M~}eN5+Scu%jBK z3P&?W&jLuMOC(M8F`#;|fm!FERRXFFn{sWHVutJl7url*;nZ!H6tT%U<Jv>(8TT4q zAY*lyk!S_%IC}b6>`0Bpc~;fv29C3^o6)b+Z@xgA3psaG(q-EmnsWrB&5m+H=-5Qf z`Gh0z?78&Nj@4sJp4gzZ9(hcd)7*wza)+rX*zI-2^6=XBunM+v;v*(pc~Rc#^gG^m zw1J~)e5HH&;<|o+Rp>sxN}S4k!U`MAWwkJ}C#EoW3p2a(xueDu4;v#mFqF+@n2VuU zWdS}79cd;}Lz=*4_vTNXdvqh`riAB=gE_b9MY#O0JC0i$Z)!}qky`f<I?HN=gM^WR z;OK;FWGpxy84gWA1%ze@p_rf$+X!Qr;1D^<VkS@<B<ljU#c(@W5!J0kWyFl)LY(Rb zT!gAA!QB(=;`v>B6IP1eq1#&xii!MIgW|Y|!!=KEw_2Z{n&gW%$+Qqj72I%<acb6J zY#z6EzhfOhHwIEu174~b`-?avJkeiOvjuJ8Iq%%zHeqTQS8EcggxhNx8lia%b+amL z=Xgoq@XXngfn|IpgDVqjGQcs=!XPv5$v`J82AgpU`^^xCg*#`gCQ@>mu$cRJU#x$E zG8x3`m>gnvOcrrkOdfF?OeS&LG9;EB4aPO&imI^aVKDMw%h(j?0?%4vWa5fEI>aO@ z<5?5|#<zqQNZN`<ra`SQ85E=TFh@ph%9t6Y3j-OIeW}uzR$!_PExGPWb7|KYRS_=C z-<SE($}+(CD4bb5U`In-U{^zY>~tnpu)ln|VpyBDCi~2{(c_4{=G%JQT5e3(bqn0K zuDz1g=OA}YAR7hB!SX3$3NA5KBv`Ex=Mw~O*2l$XmJEk98Wj&Ng87F_4}rmal<-1h z9Xs4XBOWLlrZ0yW&Z3YpyfFsJW4IHX+fX4!!+<h5#>bc}6PC#{amqkf>RDuLjf2Zj z8~4J@oA8mvJuZxE!ou<qMu<Q}9U|dL5e12qL0=-nkRvYuh*iL8jdjf%cHO%PKrTaw zX2J)YZ)FS7jj|40%<_9re12-WFEW*l>>dM)>dIW^-jh-9VNGSq3L|S!AGsSYWR!Px z-<+Z0*~4}-7OPcp1;w2jvhGI=YfqTpul<hO!$(0kb~-A$@6*xJeW8w??i+P9b)T7V z(}?wCS_2yC^=x_XB=^}bM@F*n3LjeIvitgppFQ~R+s9w%t%i9?+};<$o#(tR^UKcy zd697m7&5GmiV9(Trg*xE@J?BaDrnh#D{R@WdcRr4crD{;eopSF8xiyOv%`6bNOY=! zVKmAk=bZNS;gimV#hLkJ-rd1%V!ez3%EV?zHHUP0O~F`h3h@S}qS5cCF^qn%j50Wj zvELH%i}R4TWB=^Oh0BTS>~_1XnNW)b99hJQx^?Y{C3hoRdy6$Y$1CN6@rhJn7(*KQ zH=opU%s5KGaa${_JJUK*=!vzs3G{Q`iF>T{I0z3*d&WVzl~>#&W>9sWY^O87%`0LQ zLT^rSMSz*VG+|JmVZ#s-#7qg9M*_vJ>_{*ZEe<-jNvW!r6iC9;q<5zRi}g@|v7gju z90%na$5jioqVR8qhPRqmbd5(yyDCwobe#oQo6_U2P3!s5j`sAS;XS#^2cG;pKM=3{ z@Nzx)&&XqB?r75AK^~5$Ld=(XFc}j1C}^mJTUE>rM)B@?5dwZ`fK~O19kb=mwB+J3 zr4xrmi$^X}vCAZ(U{)+oFewVpj-}r5Wje)MQ=48{L8eFhfK^l?n8Ys(m*<A7rd_7T z#{SfOZNg$)nKJsk<6$-$41-C6;SCSGKFxJc8Acbb%C=N?TRP|x-aQc-Inz`B$91{v z=yBXoc(13J<tTuJu6y+|L9)p<+67qzh6NbV*oG72`BUWKA=y6+jQ-Dkt74IdhbnmO zjZRbKFpTHS-0*Stf(?6f?s(g6?dw$6>B(Kv^bJ<>_yIx87U#aP6Q3Wu$L-S5)5`>B zX7#yA+XuD3kayn9nHVL5W|}Bxip;sa<8q;y95r*(J~_8(v+&NZE0F$;d1PG-4LbYz z(Xl$;dJR008Ba?07O@WTreol*9v?bb5;bkFK8HF|%|_aiVBWHfB}kUWX54ya>!#Dh z@>&SNwC;IwuOK&F9cu-1U<8&l5T;6K_*|-t4kvNH;It}RsKQDws^^{fLe(}Jw}vY3 zFFf3iLM2Qjw<^k@BwSFKNy(7ol;M_gB$+=3AD+6{qh9SHU(HNrAoYBzDi)%8tU^5- zk^zF-L{xTqM0dXMqWX)-9*OR}uBNdga^GKS;X{WZ%PEzCwJoPWH%t;W<8Vubb6U2< z(IsbJ$P(v*W2HhJeqcozQ_zk*P|G)LLOHC*J~()FypDRg5i8G{Gb|OP$>uPnnp6op zDfM2=p^Jvhl;7qyDM4=(f;%-5VLf&98F5AGs~0_&*|(Wt&~O!PD%RiBaLs6c;>RQm zCnd%UW7{{{1RE>;-WgZ1)YF&MN?tZY-Y7OUYGKU@9}F8D#H8bsSyUVZd=DOPi&0LT zJ|_mGKkQ~=@lopvJ1Q(<J|h}paOQsD6iS(*MvqX7KkD;^<6va2GLNYT_u#5-tI@BD zE94lPxG|^Hja8<}#OrIMO`G~Y%i&=A+J)8JOrwd#-rP)qySq3B6y59Xd)qo;Ud)^h z^VjN=D^ufw8Jw?dD3*9NOFTQ7VK6ia{7r^Vk}-8ZvBqm%gc8pktLXh^M!^?R)NB`$ z;I%%vScZgNT1cdLdVewwOe5%OYyl3&0l0eG0lB&-9_c*2HAsG_i@o{$64S-b;wp1R z`sBuR6sxNuQB@$%-q?h9^u68S@Lb?3EM2!$FOV>H)g!+<^<2T+laF|>+_Trl<Lv2c zql-E(e4QTP>6*U3)XGQH%9VmqpIl^Qx+R3J-!dlcC)((!a(_muXb&Ci?Lh}LXKg1< zj&^&ukpb;y^J(Cnnw7AH<HqNG-rP3tRgR-No;I3Bt<l8lIfZe1*Fqo7D);cf^m)@m zwmgl(;tCI9B6Y`tExBjm%2BsfuwYEOG?6tw4QrlQ#mPSgXCEso+J|E0Mf*_f43mOy zyl5MWxD;(e!5BLtt{6)q>=;`T%TyDmgrO%+G5GeGDJOx>PzjslUgQi$uE;TrXpw_( zlAgjg|9N{*j_zUOqjU$L`X+BSHjR2OGHdDGp=k94=uWJYWSnpAVGrkJ))-4S)>X(> zsnvGfQHX<fyyeP+J@>-AIt%j(GcPgg$?HpuebCg~XAGj6Z_b;AH|q;?7O_IDmOwox zgmBGVP+8p?#K}+1ekSko-xA4`m_tjfSqv~+C6>`k5aL%h%ey{mj6651AO>8!e_IJ_ zV)1<#5)<nT8K1|DndGHI>?kH$?;LhVP5T#_o>|A{*9R^Z3{_6|#o#a77Y_$bBMuKu zB@SDAPQrr6nHz_9&XrwJ?Mx+fH02r{@6iKP>6oc#n2EKaN`0E0n^uqYLB+jW@^ar_ z3i3l|H_0XQk{PG5x;Y>HbaHvHmcNgRL%rLY2{x|ioaQE2SWR`|80cJazgRZ++=9|w zR_E)2x3MgomR|Yb;ywhs2sejDaUm}(w+}8>4#CVI*M2^B_srwX2U1#0jIXi{#z&Mv zki+f__v+!anJe?Q@QZBG4GZ5j+_JNoX*u0K!)(9G?RN&E4|$--pD(RRLjLjdx%!uH zpY(XH^Pm3EPI(;Bk&2U@-#$KlIkJ0|@%HVfPyc-X^XD(8(%ygn{AIlV{^R`py5E2K z>EEBfoG`xs_m|(~|E%|4<?`F-e|`J=r_)2OQ<Goh-?QOwfBht{YxcT-{QSrNKA-5l z|NMvE{kL!D@;n>QfB*B-ucB0M?JVL$HA^;l{+UU`j#QOxD4J7ltM#%}vuZK_cv#|B zX#}=tXKl!_Dvuo;R;l&Ul&chm^A@>#*|(}%+E!WUwQG~8973xeePtb==R|!QXV!Dy zRD^6aj7jGo%r#9X2w@Yos^t>gRA&7CB?TR?Gw<eKJEGUqVodXVtw+RUaW#pSq_OYS zjHriVcYPfrwY3I3jz@*A9Z^2GdOCz-s%0yFNIGD|86G^z97nvj9=`oL_GQFf_2$H- zFRAx7$A@p!Q!l=xCAW{5S}wWXefcuO*?MGiI-;e$%b3-A#74%bRwH&YM)ee18>1L{ zQ)WLI;okk=Y(0LivZPJdEF0MzagY~@HE-g6O{;hvvM#=+Ng0bl&c<4i)3Fy#`PeEd zB0`}B6Oqz#ia4U!EXJtBH~>^?9FP`roFD2uj#p}fM{jCy<n2#tYDCFR9SAlb3h%5I z!MrX~e%1}I9Nhdvw?*<iB%SYsz}*v>yS1dhC^a$)3iG<yipn8kYZ06SK!FAqcVCJt zo3UVwa_2Z3S>&Q}Xs8(dPQi9^gO&}Rq^@QW{I`yjCvET;1kLoYs_i;F3|CFq@CBE@ zrdH%gPGzbsMa#5~4LQT+9KJKROF_H5s97_t54wSa70{uSx8djsG2XOdo09rbgn^<A zCl)bkX1Bz%)(76{=G7p&&PYdodLcu6p=)th&U?nb*5ba1L*vtU^O%{Z_5)G){laVr z7w%uSw2IR~eI0H+vzi3?czJ0z&KK4S(Po^S%kyHb>0w#)_Ord!@)&I76qixa3%KeE zGn;#At!dMe-YF(^K4Vk|V{(xTy5M3?b|iRX$_}KoiDyI6ctIF1xHI88Q}F~&*3ZK~ zXgw}oyHKy2!aH!?swbHBtJO8QbZg)P^Q@?n5^ok$f3|~#9I=p+2<>q$6cfqv>VqP* zs9I%Hiz-Z}@P+<9P3Yu6>t$XcxKcQ!O5`mroDf}fu!77jo2%35u1tzQi5F$*h3zo$ zez3HQXH9)*Yo4Ba2ChJ-kGCXH+k!|v6W&i={b{LM4|&{KNfnqi$4?AM?x4Sz8Qa%N zaX!EG8&vVFGn0$_F)ppACa^K7c#|-j#vTF>5yu{UanjTdW*rNoW+HRa*M4CdFilvt z$Hd|4*jqQomdv$B9}YyD-cWdN<B9Fv&m=IuE+i;!S8q|Dyk>k(yhx43RT;Ioa)CBu zTViYO`s6($EXM=!VF_YALs^Lk3tl}=Kpd30R2b93eK^)QUg1K%dcM75E&eu@w+HK9 zs+qyWHGQt}1g9LWY~{AAVigZ=Cd8O(=<0r9Mn+dhHQcJ*5@m>MaAU%BIKaC<dFO<> zu6W<W`z5aNd?-ia_<X1imK&-RywdhU)q-t88ki1E6cM~YRN^DjA+R`z(BEx+smDQ& zN1=8IF!lY&!k8id2d^5vK`^%t>W?2(LC<At+H{2Fp>uwYW*)zi9@++^?k#IHJo8|j z`H^7L$;HuW?<ZTozuW{xfB*hc5+77V8CX1$b!S#Vl>z78FU;#zv4=E^AlwnSgl{G# zuKsnWkZDGeCniK&g|-%9<c@Y8Nf`!ZVuTyEXHgUtk{>jU84Jco8~{A0vZ6XtL9?74 zD;p+fhv&{*v5n!jj?<?*JDWaX#dT1O$E7(c+B6BF-NXEm<Dgx;YpgZlG*0`*ND!#s z@E~Ej@DS?k5u}qzgd3Af90z<`92e#uJIk6+S%)Q003D+wSq5pQ+`$AEsfCFxQW35y z)Ll(ih&krN5O0i=(K>=lejCNx-sY$dFQh&(uS;tC*VIpHSrI!rP37Khloe;lfvr^z zju%2PBZfDfD{AUCkHX+ncj2)$<nFmMqNi=jHY~lI-7?&$y#9hrsWEdVNctp1OF|F- z!SN&UMm4adV3ZNIsOg*&j5$cTvYK|}FpG<&T=m2qySSTp+2N6KVryI*=EI~Z>#;Q` z>Hpa-w-vpT8w%g|Q}}W+Fio9y9d1MN27Uo!rb7blfIaU|BrTolCm2kB?ETlSQb|io z5sAbhydFmAa^NxHE1~jnCxms}yhggxjjFL5cWl;f&Pd6kD(lIF_T{;T=9cl9DKmqs zd7SK#KJLQ#6ckHlhOI(CgD1?Q8N6Vvq?z1d&AySG$ZlaP37_mbgSS6#VOkA$Oi|)# zU)k)C%t_&v98a3D!fXW(Qxl2miq+1{ydVJP84{b^l#$F~@cBRL^x?;&Ij!=S|CoF~ zKmVjh^$Y*|_5BCERAuPpF+sX}ZFFZbV$_E5r)hwjOsyS>QM=3#tPex^q)Dnu<74BZ zax1qHP6J~nw>vv8n;@##YUg9m)SJG}wr~pLGTHa>^KPvU9;^>FMkHeocvvgs(W?(r z%*6p?hG@=>^_}IO<NZ~6p;(W!<c#z^5|6&qe#jTBykFRcIM0&q6X#`zlH)-o-gCHM ze<GYz#I@zYwef?vjV&$MFN;uaqq%`S*DTpn9t4*sTphn(x*9XARvK)geT+(FkJt<s zM<20SPWCh7Fr3^g&dL@4L?}45`;1U=Zub$P<W@RTs9AyLjH@7ydtx<HS+1z7qH)DN zvpDWZgVakGY>%^=q~kW|*=e=rQmXAxvQ)Q%6pno&#p4_(fjFlsjD^AEOrwPQ@)%0> zMTAkDaRVq_zaTAazd+QzU9YNw-~Oc%Brd<dl`s6yB;?5oQn{%n38_fDYMSkgIw9Uu z60@7e$mHcNtYJXuCgRN|w`bfu?VK3Ye7W5+ca+Uzwyawj6%(<s)2K$gQFf!f@YY*k z+2DEXl`j?CDkF7Z*0cGGE>-8RZoCBdzR;V@f@l<LQF~;Troeo5W)q#dA(~CoQ#@=! z)u5(dZ!%S}rdcv`M+u3A3b<s#IWixY;Fftp0-x}PBFTwaWcs5mkV>=Oc=GG3WT@;) z;#;tKu{VreiE;0JsN~>U`%ufYM8^5#U4PA46ylB~C0^DXI-VcfjWz?!h~<5zxXpvr zhDvp`8t0;$$ze&jFU)H(&diVGb8d?(Hr62Pd=9(Ov(vfg#`WCAGGOnUD-vdD{_HFL z4m*O#z9WXAi$bJqtnV?N1+ly4cG$*+UGsjRYTT-geQ_>17@;Up=V~Qa?~0yKfPGc$ zv>HUCZ*I&aw5%wPDaL9dNXG;PSoh7%1gCD%x5osgLH{0mzd#=q)8DFX%?>7Yd+`#b z?KhcFa`0KFO(?}KZlv(XOHF)YJj!W|@hK(!gA!A<pz&#DF(Kx-1TWNxi4XC4F-Vt| zEzcG+2{lV0dx(~llXxdxCCAZr(p}<}b$cVzUANh>?4<i<w-P@i^$Fq$R6422C|Zvp zx74&p?VEL8>zwP};T-KD(q-FkrF~j^#55M|Q;l5kkc#zoOWcq{`t1RmS+yEAG@U!a zxcRZ?k~Zpx6wA;O*VjuoW9Yng`h00NiemevswFZXns|$iS?$6Zfr|+Zab>Rah5c4y zK$9C}1GUlx$9xtRwm5HL_3IV0=+tyZf-!3Xaz3(otA;WTKJS*TM^-byQYYoEY~=<0 zOLC58I5Buu`}F~D-MGN9Q+9;pu}tlPV@41-z;)l;EM^<m<yEus{8+?U8%tFw<{OaP z9`i;ep0G-f9~(y*lo3lkDesI{UdqMIh9MKb#IX<8P2IK0tRBi0Irs{aD}1mAsiPmv z2)Xx%oqGrF>f$+4uaT=3w47_XRUvVrl@X7TIvw$oHLu{D)+k9*W#iUGNpZ)Frb{Sx z&Mw~s+ltWyT^smvuR4wQxVc_>KTXh8?}sRxd5bk*7R`Dr813N8v3=YH_i6osr>Vzc z(Pm=w6CS>_9R)}C;aTliY)YQp5R8jExOg-gX1{2TjE{}59aAY}d|{d^b`zqX7qb}A z6soZjcN<eG+;3uW$IQ=sVZkDQLqA}%FRnl)n9+<izYL3?So(o~2opk}3=oV+z+fFH z8irUqc2muDF8pFd4f9Gc=9!3ca7;gOMb)o34^wfa7`8kkWHgKXflcImTgG#Tz+*0y z_8_PiYTd+strBlPHe`ny{XlW)-%m^HiV^0ox-UkT!F7m><~`S)0?^GhYXG`A+k@~o z?Hpp~Q#=mNV2ojaqpQP2@YdS{Rzqp9&K(t0Q12K`0*7qX1RZ0JWWqMS@mz^AZ80Au z%eZ;(^m|Nb!I<ab^O*M%H(PHh>d%i2o7Yi^<(8ZWwr7!o^hG2gjY(XlMSh!_tesiK z$1XClDfI!b5cWt5=zijZ?OPTljy7VM{_&FBpBQ<vVF_L~^3;}`Sk>^UPvgO5UO0fe zy|7I^VkylO1}}U6vY1uO3E7MbtS&_;!_P7kKH4OJwb?AEGt>*0C(T$pc^HgjrK^Q> z^vRGXKQ~W2`X!KV=}t?>N_T3(zSu%cbt?mxX09;!*mFsl{cf1_>BCQc_*dfo{*WB} z`6oU6``5R_+bZ-={%Cvwq(!vE*UvXfmqMHT`u**<zkYuE@$1|7zyAH-A7B3V^*{7z z7TWJ0R9=O)`}H4hzkPoD@$FxK{^Y0s{3<VuFZusp-+#Q3nflUM<tf|LclDzq28>qc z>;%fx)z8F4B10POj!uThQ?BT2%scF*DC}&A@mRdm;IIlx(hbffMzTUj2%qYmprJqX z{%|oeV_VPSKZ0jTFVDu(87oam5&zB<z3^R3?nJT2DWV@on2Y!9CnTIL1z?gpOz|P4 zYK!pAqoLKmpPJqp8%3pyjEOR_Z;S^uXj>RV1jlwbI+9NhFghBq9<PrkR!$G!M}4mm zn?8zttB~tEC<BcuGxmk3C+_KGxvp3Um+9ZZRr@ZG2);+n6F-8ck)2Sp%maWV^!R9w zdiWR+SkGjtvftli=x8aoJF>G`b~-Oby}LbbKEC#VWduC%-n^fIoG7;4fg-6*kAoU{ z?68j{SQ!^qB^1zOKV=&qEG~w#b?uvX6kHV8V#k(oq5O0s&Kg&iE5_qEZzc)iGHS+i zXXX~e_&Cm+Cw{(-S3(RzT*Unak!=+pZ<dPmyNnG|VhKikMrILcX2+dS)up3Fa~<rF zdGodV>yP*!$5|jRUVzd?5?930_Bv(Uh@%mYI5^d7pD8X=TG7QPMU|?(w{!`_JKY&+ zLu=`Zr=HYOK(r&IP%<{Mi-f18<eMvJs#7tY+$qT!XJ+W6C|RsL-=}`}%=|Ri_BC}e z#ST37cxV%{Lv<8Ibw%7+;-zqf?fJZpJ+uyr<ILQxY`Sy188tX}zEEdP)uK|8*wW?X zZq<-%hGJP5*VJ6xD1>4xiQhDDH!`no%j1^WyJ&mqvd)^R%7f?C_<cv99JS9jgS;`S z$eQ*|^;>f9uUI*(K+RIrwWKU&svQ<m!j^A@lxe36BkVhirdZ{ROH28Xc&koI`dL0T zvEGR%D_i7W@UiE8MEVkzk+PdOmxfua$GVjBvR*i)6HR+vHY*kr&$)+F*Ye&urN=$( zMzePhdZyU<kGoJm1)to@f^n_$q(;bt;Y?kUxJLtZ+V=8D-8XRB<0rbg;iE&Ly*|$S zzHyEC7CD5O_BECX*%25sorv7U7&mv5DpoS`CMO9U;kL(*pgn{&JNw40uVjj*>7MM% z8BWeRff0%i(#-~In~JrTdA#HCW7zSynGC_M9YZmZw@M{n$W4i{nhN!crKgEA+|l!x zhjRm`mdT96pra<1j?1i4;?C2RrsVh0&l5|(kMF?`#D2ss#CG8(5{ui2<B7gp-gb@@ zELfWerZ}I3VvHj6Fisb9@cgR8cO`@i_lt##i$qW_ZO$5E71kQ!<~gO}H_UyAHZl%7 zS_9XXPM%y@)vWp-;nlKh$8iJq_barN3|wLQ-LrL^jn~=*Ss4}(z}E{I$oHqoVv(E^ z1c3nI)SXv1o2-Z9nz8b>;EOzdr4*o~FNMKWLK6gc$2H^r6%e)ya+C026XtY6XyL`- zMx?mH!|j=|3T1qISbiaf(8k)K!;zy3UeAp~#iKBsr)1mO6Rw)d4o{JAM~l?3DD??v zO@|uTi9{EhGvUtID%r?!fwQAJtTt%K+I(VB#6B``f`ofJ>8*R51)*+QLtX4N>fTuE zVrd*N^0OZErfxW1e7;Ym{<}W$c7Cr6hz49$96I;+ERPA-^lcYcTdRw2;JMRQsohoy zm-dGX{{EQk56^Zn$;g7PCWwlzHOP?^B4kciDTlWw)~s=sU|j=iPXcMc{6mvtab-Pl zWZezC32Rbq!^@cv_Tv@ftYB6A939>?GAp-1;LQRkFS3oyH+h?xtzs7@NDo(151VJp zSO>-nYM2IZ_B1W#7k#?SPx|z|Q22MRleTG*zrNQ?)c(is=W6*R|Ni>z&$m`?B%2|( zOUvk8;@<2yE@h?TRMmmi!YE>!ES4p$BvrziSoX=otq8L03b^tv>gOdD>?PHBk&2|* zWbjB-^!qh2e61i?O<U~H)=GFH`Pl7;z%?T9ZR6HJ;Vg5Bmx{#*f2Xw`zMgq6;&1X^ z4*_2@)ne+1N2w;Xh?Rud@;WnN4)O%>7{R{+YusL7W{n3L8sbjoEB7iEFZgn8!t|!C zOLNZYl@VBK6i(W4rn&}k3>)c2m4>%-jAKhgGa+?70*Xo@zsE@%kw8jK%SBtoZqRmV zGK=nR)36k14~t_x?Zva6_u|@2c<moEa;EF2x9gMq;{c5`KLRHhdD^pv7vHrk>Ak>d zOHumYWQAiUkVCoh8zHyY#wwuEL=jS!mb^Hfqbn{^7lET2+&$xp`KVHT;QE9*+)g@< zJ0I8KZC`o$-U)WB)%C=&3yO}*phxXev4jW4Zv;Cp4D)R*wRF;*AoXc70UU9{>g5Ex z;l69a&A4FM@WZtxY|OKyb1(tBW^Ba9`_W4YPx%qwJJz%I%v_@532xa}Y;UL~Pxuz` z@M0X8dG1Vi%cVV7i{W<bLLYb_HKudstDsRkNfKWo!ckLSz{p15NKo9V3j<#y#%o7Y zgW3W%RK{ba<H5yEn}M1aTV>C{1<<y(aCMOvcjoYdy1L7~aE!jyf@AcpYPiu#S=|>D z!~;Q1(0Yzqbk}qS=fH2AQDcMLIKyQP0#L1+OeSx3*S$0DIM8WfRJt)kmq{kD`h?bN zDZj<T2iN@WN)f#o7O$F?DtM=ToI$+uJ`XN6V;hWQi)v-j#Dk{#*3Q1A+q)BL=nGG^ zfoUx3PMvUY%bh{`vc^e}WH`~ZcYoqd_R}gBTHuP#a;mP6E<ey_;375ah_cH`)tmy8 zv|}dbd}2zTiiqpmQjHnZ7*Xqcg&d0GJ`y$h6Z7_g1kx>J<O%&?bd<FfdK1Hs=;)eu zqGH`i^DH`266Zi-qGAU2WNPafHDNGr+>a)Y*N@6Xh0l*l0x_qh+Ud&|chKhx4tf$Z z(RllXywb=|j}!s66Wn>dz`NXJ&%IMTqEmBg=D5xvYw<=Sk@*8Rc&F+lv{TLiDMhY> zln6FuQmIK8iPE@#=r{@-A!7o;k7F>0R1(oWGj8~J%ght-g3aUI&0HxlL^{3(5%<MF z<9(@-ndmuJ+Eyei!~ZYsu9}Jpv+}?-AIc$<p3dxCzGn8T{o%gBV~YLbQ}IQ-@b*PK zcg72K8?=3kZoVWAmfcv8y>V)t+yu8z2!<D2>4nP9xUfU&;}m;%q4mJnEgv7YTgL<8 zfS(^01{|-nbjV`Di%G$f%F=JK67WS)DK<YV3&9RNZL9O4?~h^B{?0KfAFP@Une{>^ zq&aER`BW@tb5<R9-amownej~~t=Rn?&g*_~QNzjIWY)l>CNNn}s0nx7-6*6k$BR_g zkdr*o5*zGYiFdzZzJ5Ft?RW;>5h}xnDMI!s(X9Q%PU5mumpt2=>!EGk_4374et(Ya z2lZa?bUT2~nJN6p$y2{o70BYy>tJ~#vrvJAncS+K{1a|UG7q}G;BC0i&?rrfp<os& zUEwTrx&j8C%&5Z@^aXmPO?nHsoC;wVUa=p$xeM=#gt-+NNj4R{i?^Kk8t+E~n-y-k znRx=%`!G~78Zca`g7qou@M|%O@N+SW@Ov@J>=%wY`-M~hdnpZJ9Nbinmi+Y(x>Lav zh%6Z2S!GO%lF<99%puSpzn`l=e|x)So!9xNKZKKI9+sZ$w~x2?(*jo;pT7O}_K(lM z{_^Ghn61x0e|bNr^!aaJ-pgr~&!4{h^V_d-=P}9i)BCCCb!O(<FK_Z}z47cXKfcU! z@4x>2`wzYS@88~vknS<7MZLi(^x5&deqR??cE@E^v5&X1PLwGNXIR!w7yqz})@jct zPZ@sFKS_ux19Mu|)Ua8W+H`^9@(<KGJFk<j=w-v3mZgFqODzW1<KwuyeI=A^QW})1 zoSyFTur;H9tmDjOFJgSt%k^6WE#;RTzpm9@zd<qn`3)CQ_K>87DoaoJ-qn13L~ZO2 zJ}~&a8u0&l`DM4?U*7le-|u^V?)&MJdD=Dq|JQGSN;7}zQ#{%SjZ&X(T{N@J6}C%K z(sbTK(4Dt?xWg5FT?{sI>V1*dENia%mA2;w+_X7Tu7%STTXQSIr<=T~+cY=L2!hQw zXuAfUSGrk5f2KEy!>{ojNK-6B@<xqSN-5GF=9F%TEuPZIo>+mYp)Cq@ew0+d1JC3{ zdFO4Vx8Jp;yM$V6yrgWSfBVMiOVdg$p-jkut?;yg$2ZJSq`j(5*-|l1SCv$&LaC8L zmSP-hRW9UrJB7e4-HhY&7un(RJJt$Z1scWIXno{cur}iktqZ*XXi~3_^{|&uLE|qg z_u(ob^-)vrH~p&QNpim7MMc2b?f%5Kzk5nY6QnfJ(GwS!+c88YMUrKtg9bM{w85_a zfW;67Z17PT@xW@orCZm2;++SQ0|+`zaA6+DeB#M@#a!Hk6XRMr-K%GObL<8?VB-2F zUI{imE}7c)0?|$dZ|`=f2k#6kxPu+kDmL!ehJ1W=xDzxwG3Jy;-#uevD!cuplB)-l z5K_~(5K0o({1t0Os)(%}++*XX8{15EIk?v+zEf2X+&$xtkMR^>#2<L4Lp<GEYdYg; zm0%AT`;iMLcIts+eXXhc4ot1;=ps?>)a3$a#vsa@K~LX&{y6Qs_smxVb6wM3X0QR? zyxdKtxT%JzC{BqxbNs;h77GKy2#;-d8-y#xHo=|Q#^%OTpN-k9FPN!v+nKy#_RpR5 zs$zA78gT`}xDHd%ZftX~PC~av-e^U*UTN%_vFm7k(OJjVx`w;>ws^jwG7e2?J3(I9 z8PSr~Esi*=f5Dr>43tbh&1Q@>GcsXG$u&uRtj!y*Tbtv^4tMQzq6fB}X>_ae%lN9P zK@#4^oYIfpV8Wy|V>nB1$iO$Rw;ug`;MG&R*ZG(gnzBXRa=fUHQ?+UGc3JGfi}ECA zewyCZbgJr&`h+xu11j1r`Q*v{P&l%>1;(+@J4vHFHIr^0+(J?vZQk6I9tWJfJVM_I zs|rEfF0u0oSC4NU&oI-vB-B+d`hY&uj>_h|J8tAI^WAr1zB1_nl@|}>MVPgFKVc@^ zW0NL{P}k)c-j32igyA$UFYbH6^?_9iO0$zSr6{fx%?#X4sJ7Bs3oI5+QB~}~LY8U| z3=wp%Xd+phb1~qBBV`(Uurtk7GlszX{bm6CeeefiO<^Ab!(RCEz#rMI&Ym`FUZy0v zDH*~Fl@}|Nah<8ua8d!ySMy-Zm-#`OJEm6#*@RgJIeAYQc@^3Xa9io*Dp23SCE2i& zY*?|ba9lG6FCTo7r?2GeLF%V456&;-Srdf7suu^sXPGT?Z1R-xf7q^;-7s<^c-L3> zXfGgR*u&xDx^XUh)-A}%uz>)pJ$Qk9e@IqUvnd1u1eNARHoNQ5O2p7Me;u{YF}2Z` zL+SLe17Y>OP<T`DR(A=tnfQd&LM5sD8^elu<zX8lEEdjbW1sD{*cjYe#L(jOh;}xP zt|t}EH(XJ~Q>0Rjz&Q&JYecN<nG+n>WZ%|e+gIh<wbriEIIg11*>r<mTRw5s^SLZG z?snqllxs?H1Wxo0osM%<tbi?i+x3oXbv@j;w6ImlDJ$V>dpOmf$FRP80NcZfz~%&x zJm>U}uqSOmFm&N?*gaN8*<s9dS+X27i-3}j<SMaa&UGo=xCvSiQsV6721oD_<E-Ew z{2U#2d5ap`VB@9&EUHr*(aLz6(dnoQ1C*^wp@(UsB3=XI1tqQoC5LIDh4bm6#q;U= zz{)?pPODAR{O{}7*AU=eKgQMcY5x5E{jZmM?53lk#_h9Z)?LdSt`}eM^9i14)Q;hS zdrXXjtjG#((_|N&Et9R90zSG-J=+x>*ekjML8#ICdga#}l2XIy-AuNPo%5ivHb%vD z`=IaT>G`r}iKu^Sko6UpGRZrvbdYt4JDGkX?sU}oDxnesmsqI6sKPqJ{HVy}R-D1c z<B*+uC(NP<ylWJ@<nXO=7TXKOKIPg|m(Z-O&B={BPnBCiVFrYbuxzRDYpkl12CF`B z&EZrW^UyZQ;7t8}Jahk^rmXHjkSr{hJ>|P$&+VyPEoqnh2Rhb^!-n?avERM8oCmM{ zF&|^HetWq-%^wZV6J}?^0yZvumbmI&H3qMZyVkZE_7WvrUlAiOUG4~_i90hua>O#9 zJK+vInXtOm!mKWS1Z+8CLx-;N1KSDLXglLL&f?{~=EX$Y4U_(S#5!fe{jHtY<z>xJ zl?lzru#O+hV-;6}FspY-nZB~RI)Oi(8t8d9hPA70Tk38B-(-hQI-oDzm{infGhry2 zMNFd8{STyN<Ha-kdrw6<oXVE0Z@9L(xA(ww`|igG-#Jug;0VXW-?6ymLN(leU1$x@ zjNF|LZ{l#aWzE(;`+~HyxpTSl`kXenJ|sUfX<*hVT;6E3#omb1X|>SS8((7D>Ebmd zB3{88h4tL%_|aMmhsxq&^Q_q3iy|*~>Lz-{zAXv~$Kswj;n<$J!aqGA)Q46wp(&o7 zA4;qnve7In&$QxDJbYMyZ0H(+&iAQ{2_$_JmWbgRYo#xGDuA(bDbZb>+*`yMz0(+N zXXi)g8m&BMCuCp8H0TcxZ1LSD3Ga%YmxZNH+`>L4r^kI-#SjO#kz$z!Hd76!{SD=| ztPx2Ptpnv2PLAF<;L{Ubp$TM})KUZAvBjnlZo2~m6ipX&f6pgwqU}}TTh83jqAntK zjLU!=rc0u+m_p+s5z#owA0~;nW2y0yH<#YJ)X$Z9w#LM=o-+u{fR#^N1QCofvrioL zcTcp{*ex3$iPqJ2L^5kZjhSd&tq0Cg%{MN(&ILUduoV#(?w^?}zJDrR3*VmsriAs` z;<vqiGag;Qf#@uWH^GCJWb^Jb-3*)-4kYUtO_tF;qGKyTA%;nNqJl(x!^D}hQww2- zY~|sS0+u8h6u6BMYbhBI1~YMFD4t0ZMR83J7fbQo7~(u};2?*PcE6j_@0ixWzeekz z#n4%3sXMsI{MN9o9rK9i8g^A2x+kg@ib{_ZvBg7yCG#^Q(QM<Kj~GBkOKzD!c&SmW zY_ZpTdlfD%Vz6ndvY%D4B1JYHyQxLwT^7!c10>fcnF?yb#z`Gw$0?TW!0LgqTRl#h z+88qCpQp@iT*J~SkQ-M;mgIsODnU2ql~VJovQ%=%6na02fHjP(zhj<@2Mdp4>#0B8 z!q_E)WZ<1kv+7uvJ9xzXSU-3Lj%hM~`G7?;V5KJ7S>e=iUW=c3AfLF3wr=FHRz6_D zoEM4qeB!3-Pe^Zoo00{cLFdC#6n?6787{{qF5UHuTXS*a)?NHQc+H>ZM83Ot4_sW^ z(HJFWtkhkMC&N2QQ+&bTNOv=>N~j+k>MbG8VE?SJXt>@_*rc^Obo+p%&ADvtK~QyN zVvcp?V$OAC+Zg+vJAyLSa^mLKgOCDdr#%>fkJx*FzQJ2$<L)-3><)t~@&22R#ha6$ zsl<2eY#j#&fmX@qgjQ;o&`!Ok6SGTh7EaBQwgD%nG2QTy(d#WtIeW=jfIc#H(eJ&K zXi*bj!R2U5MJYd3bWGA(((8Ej;Lcw^#?{~7Uiw`2HGb9~laA-CJS!l*y}!JUbzS%K z>FxW=zdrx*?aS-PqMv{N@;XH3^FO}4rqMv3KYjW4+aL4Je2v1sj>24nPv5@1%xA6R z*>AtT3{L+1pa1^&wQm3C+qhiDD&z0JzyI};8@+xTqn6u)c!Xpzp&?mxU@$@DXytZK zztJubdT#3wC$7L?<niwXk#uu2RBJN8^!o#^TIW*M(YG5Nnx{JgUh|QkMN0#&yYr%h zeKq4G{pq`|qw=@kw))P$J`IWO#Z6t#VeNCu!qza9d*?<HQ)TQ{1|w8a3Fer!aO0TL zJG^JQgdDzO%hdWZ2E1EXrG`tJm|Yw8D27oDIBP1A=t?Ej?6ANjJC)zB@_77d9-m&$ z)Aeuj@U=AdhOZp0;~QgV`M%kCUKci|%C=smlI{*3Blz2@=_K{K4Bq>~xFhMPcsc1r z3L<OM^$>5l;)x&KzOvo4s5r2U%a;!DZk};TkTbS6!GI8Lm}yD16WRy33OZeISsAuF zj<6!KW;JkI=P_^w?hA0w4eu5nws9@<-ow&?Zw%8jPpcYFXFy6eah+XS4T7BW1==tk zZU*TNjJA8ewjD567q;aGdT2_)L5&aG1NsI%S`(xu4-dJ@ugh#&Jw3fe3EyH5Yb7(J z#)TrZZd{>VzOjl(<ojNyysNaPe;0AUIjoKwB9a%q!I1h1O&lS@q#tNoA`!4H0rv)I zYw{N6fX$$xZW{0^2P|c`-WWgIeK}AGJ>1BBYVkRnwkKe~RKkF?5BIW(_gq_O>hW%F zs+ag_Z6c$D8JyoZx|u9s)2rl~1uTH;C_Q4&z}azx*J|$@A!x&-bG*?dczG?}-XKCW zAT}_b>Ia6Sl-r#x)^Pon=p|q@#pu{I#);j$y8D7B^X?W__g|zg4#&k^Ym{_*MmEK} zDF*)GIkXlQHgGBdj~RdBMg|8Y3mYAjQDapGrIc8;i7ntkK{XWFp-GNgJg|u)EaIoC z%U2w|r4#Ih@%JLDOj700+=QH&JF+#~&9W%9e}E+_gA+78!NUrek6d>juytbjl8GH+ zhK%sR1mfg`tAIiB5SY#pgpJEV!Wwl(3fH)6DPX|5&JR5K#At<mfBo>jQsVa-S(nSH zoM|q$i2_Io@|+oc*^q)3hO-h=6<j{3YQuT4J8=PBvK$2-?iRj)i*T}tNvK_A1R)Q0 zFyWdb2A?;ENAbN|O6q~z;iVP>C9z6c@Ci!O7>lGtV@c-91@D~QJJU-CopT5oY|LQp ztc^P(kDwr1bR(wMzMNR%^H6kuJ@sB+ryXd)mDaEonhD=3yvByGA}S1>ikEF;xt@O5 z_#Oc)k{{T_@j&Ic)By5lY8bk=zO7y>yW2z$Y8PIPZ_mI_q@s3xjg%Jh$YsaA>L+&K zCeu+vuqVlOV~{Z{!X|47<|cCwOC<XkrW$bd6Sat;Bu#F9hp~P%P^Lv64fX^`UGv*1 zdj2|!qJNH}>C2<2`tm8dzP);YqV{_<cXzB6)ZR-AYcPIi4Y`$w;Vg76bRCVEiH>AI zPdQHxXHGw}DTDOo6hk}IH*?!TNr*)=hKjih?l<8Ih}D5-F-QXV8=Ba(E9hmTat)Y4 z_;h6jCPoZiLclt3w&V8rE=d_bC8g6!sDsfw{yazQeTS>&X)5OfUO_30-cdp#xu(tp zsLN$<QK3*0wnJk%@2-bl>*)<kP<NGA+OO){9X3Hx(y0x6mvE#5XA38;INEnSZ3l;) ztn~9-`uqP~der{C@&D0XH9LAEH}F1BF-Lm=57g|I)Vc=9B|uJ@Tad%T>j4(n*#+!P z^7<iJMK<+0#sK!zNa`Q5$SS(_ztz7CHygy(ux9x}aT_aC+TP9@NyD>5T8@}g<MrHs z;`LVV>jrO8K=yLo>G&)?*jn#u;EB-Q^}klSzrS;b(VzXCBj|Lz+#s|C;YP!5c)q0& z;p|JL5>v#G>!o=T`U*)zrj}wZ?1HLL(#hL38+|9`SaD1NK!+497wRiJc|c4Qih3P5 zB)TDuM7&L(k!#b`yk&4DU6Li3DW#a1r6(!H_{2(KikX?2nVFfHA;rwh%*@Qp%(V7Z z*Gz9umD!Y4&+gj(3-@rp?jB)rPMjNN5!63vq;}e4qK7=Uzb|Owcbio$f`x`z42ylC zsJB`L%W$D;)bH-(YvY{C+u9Z=i<xTE%HMZ>FNyAcOasFiCCH39w@oMrVB_!%7BqeI zu+?s7A`BIsP=Ua)jin!li!LCK6DojC!q|wb18GthAq+z1MpSFr7D|(9>0!Lx(?Dva zIIT6*=BqEbK~}gA%z2(&t~h}-fPwfv^apdKFb^?}3L75E9KRh7w|#RtK;$j*DJnN) z$<$lVu{Cdf9a?5|=eQDi&hx<Vc=EQ^!5RyzwJid7Lt8JU57wa<OUiCBAFC3vlhIyc zuci9Tk)98*1hu2<FInFVwc;ttB_@kl*IhbQw&Uawyv>z3)0mNyR(8cNS1?>5Duiat zp3)JxXW7+<mH7*8THD*bc=$=tcOC#=Pa%uxEZ;+FNczKyL4?o;Y{)*VD3W8-sK?zw zw6#h&<0%Ix{A@PbkZF5}LFHaQE~(}*$2{Sg=f0qc6N_lc;!XOsk<<GlS9-1P!{hC} ztqCq0K~r!OZ;Ant^4w7+RlV8s2kK^U<V3Y9MkCiF+MCCbT~W6^!OwTw&Tn>&h(!yW zzh^&e;L^w*qTRD|lKOC5IWJN8ad<BA^kv*KLu~<#L0`l1P)x+qv@sd&DHbXCySo>+ zg!H?))4`1)>ggoqFi(T7iC5-NKDoN=Eh^y4u!{zGLbe14)tg+mlr~&vg`##sy-XM6 zzHwZfqmZm%C&n3d%c(&glhg-KB6_q_xJQrsy!Z&Hp>^@RuFS~PRZ<{A2E0?SI4kM8 z9W|<F+eJkeD_$9=*n4<;`&JUxR&#KTB2WavLQ%4VLoQqa{J^3KVN42(?(4zyFDdnl zE=;S?ntSvuEpE~bfecD=3Yx+Yr03qdB$d;I-W)v!&#-7&U{M;@_*Di^G+>E&teB<R zts9hB3SJxI5ameqZr<$kBqJR~cjr>B6jQQ-;L=3z{X9858%vVhxlhSm<zy!<9}`;; zo6bXzW%YM`hkFc)-~7v?muuC;g6Qq~2WHk5TSjkPhN5`414)&g2HnG<8uFTkFFV9z z*dGe3I=!bwB)zvgYN#G_u(#vZTT=n@6X_6lAE9ur$y%^Pe+KB4h&+4SnU&6vv}!?S zD>)abWCCX1p)?YZA#AYxin@gc9p|G#R_Tn>5C$Gz+tKW*0Hs<MH5X8Oqvl5%A~x&f z3|*TUDC+ONL$Ws>J!goH<@S9SNt;+JQ}??y0Z*5#ob4RP*(=f*q{%8I=bad*_D2V> z;sa#xT|>BR8hEHr0Jpw36Mr>GrB8oLt6)Ld2o_Ao_!L9tUhBG3<T}bd&x&39qz4M2 zmJViLyVfXGy`9TPI_o^Hg2b`3dr_z;tP1^sNzbLQa-Cme!|CCgnd8E1IOr6rg8|hd zJ%xC<ar+v(TI6Kqb$@;y5L1-7p!!jrH+(~_I)$u4QY?AKEr3mThVFBBiN$kt;p%?& z@GiXU6|4Le`1^ioEl#Jsa{?zrcF*H2q)C^|9ko_r4Hd7?())zGb`=HxNMUVTNL|NQ zbWO}Y9mrktL=!Pt@(kUs95To;blNAk{hen73c91S_wX2(bvP+9$huE##y>y?hV2;@ zC6Mu4DcE!{gr6b}C?HdUURc7t>{Q}#*Q|WcnY-)0Y=P*xa#^9|!i|7~za^iH5oC4b zHUGegV8}Bit{(H0XF2>fr}UF$EVd?>AXH|yf?64YG2S)S*EK-Z{~;81j*W!CBm@1> z0@Wc`R{XIB>?a4wifdw$%uc_m8NVvxhwzO=L|OHNqXq}QR^Dz@-o*}<dw}V@RB`kD z2$ns0+i@==W@B)TxrmGD40~{n|53u>$H!YL+)K_c@=n)Z151(a@m@U5?6H@Bthgt? z-$Ku^=IbrBu1CtH6y+!k>Xzi&0--H6(tqK`Fk}LA!;E1|UXg5F`~-}d0+1p@@p8~W z<4TIYi<$|j!=6rG{hTvGekc_x$IuR9!Mg5VlM%&kIPdW*hLrPJ)cgSeKKND*sW>)y zS|cdlbp{nI(*+gyHRXx)_qvmxsgjU_GpmY?0qGN$%QS{_n9=bOuBJ+}US4`{-ctl` z_%imI2{&ysWt?`7c@L(J`!E&Q3=c}X%@~R1te^I}zP|Q&`1`G$ou3|*zH&!jvQ#*_ zY1B56l&W6`y>OzNl2!F8Y$D#y+&iN5Tzzag%9LAV>}p@?XiWW#jSC`o^Bk00=+mkl zamp(+Z_t-(^CPb$sHZFf#3@nxs$?nAog(R}L#YC&M_%G&paTji0`?es;!PS6`6()v z74&pNO7ukCEg{&$kjEy~WlPYmb~dCr2^w(dBCIT$9kv2YI$u~kg)61B<J#t$M0^;h zM2F&&eF#T6X6Xb)jtdzynABm~Fv7QI_YEnJZ_$H<$0bUGEl6&lrcUYOS?T{kok+(U zS<LtFHLvBH^wy~uueHFpz~ou4{yvK-b6I~(%ONBegu2;_X{$Dm=*=^e7`Q+;6j6v| zkYhQEX`|nliK^a(!FWixZ%0(7NP3P7Bb*2;fNv=-D>z5)MCh%usp7BPwav5AV{o^D zhTA1G((Qk%2exoqN?9SGBoyTds$s%YT7!BgCKr5+Zck?kp6hHf)Ydy;x!#4AC3cf3 zQOnhi6S9i-RAT-8X%&7D6|40oGt4m*yH*O;Xh~|c>{g_x<1Ef!xhbg+Q^&KHl)%@) zvPa{F%r?Hh(DJ-u4?VQXP~dl0iKLJuUqq~2(YvCm>C>leCK%IEHRRrX_(iQyN?I;9 zD5}h1jycgH0(I9B-9GTx+`4re54?Ig!|;4gUMd=+Z9SPn``O5JUYSyLC5;^;$$s~` z;ys6d{km1;?e%<c#N+Mt`8YImv$Lhm<NfknwbaG+@$eu@dlN0pnl|$CKJs*z`CP6Z z?cuQ)E!&ARXC;RZ!5p+aF_CD}lH%g4B!~Yw7>tAScp)A+DE&!x=Fq1eL(}L=H}lZm zj+$1FV6D=b@f21AanV|*61@sJwRY&@?ha+*DM~nR)TUvnkRoecqq;Z$$GJu$X~2_C zmmq8?lwfl7;Gz7!cHN82JiQDn7q)GvjdgGKElg6|s8z67iQ{EvFL<q!tNiKn1LEl- z4)W(nbjY-%lRu<qBM#CtqQEifQy}Dv4N}jiLa5Fe8WCo>z%k1-D$%km2GZ%_XXB-I zh)y+fPML)gk%RmOUqEZ~MM0S|5$d~*5^a@ng#f)qNH;kK(eh^^<O?_tZ*d$XkH@>s zT2t`DX4lttXXX=$W>0I}Cs_yARp|`2DocKaI{&Ld*Cig_$yL|q?U=PT_s7dwa@Ew= z^X)@k(p~VE$2_%%O!sHL?5vd9*T>__6WL7q)x_II8;J4v=8vH1>dQ?NFoVlQk|!sC zEJHB!Sx4q@n+hXAnCW-Hs{GkD7*Znkj}FbfC7*?1^7BevJ2$E=$yv{uKFQ_Ei&YX? zc)I(I4B)lVXw6vYj{NwN#1KZc`t`<-H3SZ+a-NpWWB7It0m%q&T!e)JjXV#FS7Jk3 z#?LwnE3I7o%9aw9U}4CmgR~O`EzfkJK(v$zca=d)`Cz5oR%QYA+)hi<*wjQP(}t>i ztb`i7Qa0pH{L}B1w--(fJsN6LpddEpT+^=Q@s_tl2g|QBEmq8xFrP5a_?IA9(Y7^U z^jdqXy8D<@wvp=XaBW!n+=B~P*85}CPh^Mo#pilll8xVg;z+0<^dvk0Q|i$n<`xfi zc7Nffw8A5hR*kVwx!TTmLqm)I)Ek5j3#sj9*re_rhd5=N8@P?MNLqa?w4RDAu=KxT zJbzf*4uKgQD0-sLn|vl%Q>>&CjRO6632R(3ITjOr;ez3;8d~{+NHU-oQOW@hwjY;{ zCb;z9M8aKeu}I7@@#kEI)H@++`Ct56^t{CXaZk%Kh%j5YYdKwIwy;n_dd_m^byM<2 zJkAcj!x8~cu|(HL7iy}s{NUUwo6fmVZT)%Q|M;w*vmcvdF_!*}$tlpryT-41IC5!y z?$*~w>SF3P1NJ0q+Y~%h-Qn`oJNML>M@B`;!q&}*^Qd~GhQ@kU4NjVV4<p4@SkLn8 zvkc1N-+SS%x4kJ=)h}9=B6y>T0t+o=--@R)R5&z+5bt%P-(#-WKAQd$xTzRbpkZ@2 zfBSWGm<c`@!P>}2lE%g~M!d}Y1C-9CB8*@WhA|xBHp4EV$Si7lcA#TZTJigO@zq&; z4`ur#fB9^9U@dg3X~^v@W0lwY{U1_a=Fx-nd{@u?-&qrOd&>;y(llMj+cZm?ht1IV z3PS@q_Y{31)=NznMeJ~OeT3-iXEI~Z8vdC$wbdX9o_#QT+ZnGZVkDbvpZl-iLKg<Q z7f+xZc|x;`OCve9nGjfR(P3?|<uQGG^L9Ct!Q=U(TiOs;#r<^_sfk4*uGiA>s4hXe zxc9xYkPx(TrAU|YkLA961h-G1qZ`_6&+BZCaZkwnw8yAXeWsA+q%t(oA$>2sZ@*Z$ zi#9zhmk3ZEA{F~lbB%g5!9c7HgLSxl-CBKMEQzEaeK&|A&A?j%oxrLTtMdb#(bCXo zs52_#++g;?cRTaQ{dP++OQ#E_5YPRB;T?wMc_k8>OPfs6yBp<S(hfocbgrjI`Z3@y z2i{x8DZPfsvILW04yV>2C6#$hP@o1_RbYL0cQKHy(nO{DSvy}I9&h)*Te~W^ak51b zWj85Gt<s7VY|CDfL}mnl+9WeHT$Jq@D!{x&TA%Q#U*5Ef`fXX{0G=imw^_LGp4o=G zxa%i|{&bDuzt&G0>o;GI;&%39N^$8)RQ?i+2Bj;%KI^2iHNIB~v-H%Lg~os8&Vxsn zy!pwZ-sP!bX$M`Ok@I}8w^p6av(CXdm*B<j*>^@~Jts7vZdOp_-HzHiVD|v*ync|A zsz~^<Tq$%PX-h<;rfIk;bIRXqo2iLHp4y5~DQ#TUri~=YgfP%^`F3{)j$2ozLE#)K zt1O7}ZdYZI22Z=OMSpt)qa8eYCO3Kq#(Goip4|MIF|K(%v^M+>mTjk^90~2*f+HC0 zTtp7m*KDHbAx=Z#R_++`=ZQ#w;Rd(BabCsLwk=y>-JGdgr}z=JS95<If_i>y5I6x+ z$Xxy-h&^Y*4LiC&K5bqINV}ZL^y`?n2ZlRrP{hm#8$Il0_RLRZKc(9A!us;@$h_%G zMxUmo5QMBg*I+U*i%Q7&Plq2|acPzFOny2X-LnsA5*@BYyIuwwsdooTRn{}kQd*KL zYF`5}4SCjpFj-Kvl17Jp55!T_RhP%p?Rp+c)>X2`{#6(J8|^fo!sZVwD(f)Fq(okU zyHdg~q-QQwYk?k<V6cJxgS~cqm)-e&+x_W%*ZukV!2W5t{?&Ojm<}+lx>{61+mQ;h z#fCspNtAN;L>C{M65pjXq=0mrS+*z5A4)f59?GS*eBP;nozu7BBA9C4to=S(-IgpX z=`0!NTDA=r3J|NW{Wc%AO+N9?%&tY~u6`n%CJ3Cm03Y5Z&dh*sZf;P%^)@KCq5JW> zVFn3$5kC|4BJ&lm`>EyEX^IOTiH8oliH;J#Z{m8^xu7NEmZS#^5gQ-w5(Xy;wzF|# zV6ZFMh6^rSAynb&RqbB5e`14pQowDm)zyOJ#0O1S5~AtFMR{wom0sOmv+tC?FVy*q zxiSpo>E!eoC#U<=-4*WrCRPary4owiD`;0!`l7oPNEvLvbe2%9G|`Pc-8C?H!(OF7 zu3kev;o*Q;YXORd?T(vGFF>_vw|%jmOk{vrM~|a$G6V3&DP)BjZd9Hru>*vv&FOa5 zMlSizZ$`n{ReSF*XSQbWyC^3^UY{pj_g!BfPuelx*Jpu(=pIUiJieDk8G<zaER~(= zXzfavtLs0Eg_1neQk&Ne4QYTdea;V+Oc4462jjLIY8J$G5Da*fkK>1n0!mj%%N<{} zruH~qHD=1{Z{s@>HS?U5{d0wmYCt!JWY^(m4?zFm)P%<VoMWrAt2^t-XkRF6L)*=@ z+>0vRkuT+C6l%{X<PBwJosF4D#iW+<s`+BaSX%vT@+V(pyD{`oNYrB!OS=arCfxf{ zCJ;k9c}MNwz|LPDVJX7v_S!Cw@zyMtD=V2(4E_kKDq?tuCQ<&QSyg2rob@d0b|>q~ zWo3qWfGgeX(a?AfE$@T{<pn52>J=F}8obthP<B%KZh*PO#u~(Kbx?=j^r#q8sw1Ck z)F~n>ug$c$-Z=e+1hXn?+1cf9al3Mv{q;WQb>gk@2_bs&dU@s^5XtI&hDl-*pFa|^ z95;VMv!j}l&@XaKZNfm*n18R-t?`q#k8dZvlD|&m2MI-QIEA+gYB)F7yAA|a3yx=` z<B-h|DKnmk*rOAW6p}A}bIuR`KoWbl+Am(~QSH)n?XAfN;q9e7EVyMz)?*ahDf^~0 z9T%4-72Pl!sm}5GxqHf*ms8Vd0{-c<Fcd419CWtVL=DX>%z^&5;vf9{K);Du^3Hmu zu@rd2`3ic-<Qpc>mGen+Xy+aS-87pUCXD)UE=Z-p^U6xtqLi95R8-Ur|61z-rz@9w zyB?aVB)u&+1%u`G(E87ngIorYDRM_l%&BgM<c0_kO>gwPGi<Q6l%zSGy4`D$vM>y3 z_flLu`)%)7GGi9^N#d+3&*7E(fjcp&r{i*aoqFFbrDxxX%!9dtvW|9*H10AdZvV(z zrZySTO~p`$WHruetI(?}HBlFvfn~0K<%;$pRTNC$%+8*pwVOu8@C!CEx-bsnOFsr4 z*oMLaBt3|F7QRcLA$Ehyk|bW%wa~rq6P%Z*h%TrI;D0oCY9_QIIF=su$H&{RN|_42 z6R}B<U!e!t_a=zqAgz7VWa4G0h<Tv*^5hQKm$dWd-6RB$;)m6W`S=`k(O!;1dF~Ce z7*caZO1_K4OEWI8^0Znf7=ty&$fZh=+NGhUKrqYe_T`S19|%^-7HPo-6Us695ous! zyVu0f-g+l{696Iu>__hqlvW$s;Ur+zPdu(mE3M0&`RK5j+%)ZL+V!uoy`V~|F0#R1 zNAtg-s7KqQPa5SbM(d*8eQknAL({Su<?&5lESM`^B-E)v4wL-YFhgxW5%a`-{OI4& zyLdzSDR-@|%{nGas^+gB<>u>~7`o=TNq9q(XwvSFQL3A#A|f4F-Zt2qY1#9~aPCK2 zxNtnzj2$?p3p>#+k|!^aFJ&x)zK4snl5gBto!0v{c(UvL?!~Vy!a46J6B|0PUV0_U zM+M*A@KPzfettY{BsAGu{Y86Q{QW#E`U9Ps1j6-PkkfGpSlQPI!z4J%&oi#*bbPR% z?&1cPh`bLMIRXy$0L3^${=B<^Bfaz)Df@b`5#@!&XyVQ;h90kFQmX5pDNpWgzvWPP zI^BeMYBe_;X)<h?%s%Dc{nDF7nK?za#C=0j2_t;m^kmJ$y#~djb!eb{jrCAXi{3u^ zvU;h$tdozP^V7OqvovKXmS~89ObCNK3~g&PGEj90<L>e1_jrKDXlIz$nMh>r6}Mg} z&{r42L$8kulDkYV{ga;HyD_yGCdO7SJqrU<2R4CrZ~w-A+vpM2fG`DPv|d{$?A6p# z+85NoK&E^Q%33vb2^J>IhBBvV&W$Y<xQFP-Mz^|>Jg0Y{x3o#5GUP|#hxS!YW|PYw z%zM+5--PF!y@9)`u#P=u#b~>fcekbsI!8xF)ptuFzh7AT^Et<VWe3+KBpNq~ptB0< zjJ2K{W!HucdxP!eQnwn9m_X+m>5tC*X^kI=RS)G{h<o6=4-yJt{+veaIV<eXFtpD7 z77Dadtcq$0nP;r&tvk)s(La+sd*@T&?K+K&tk9H1YkCWn%+>IO89ZB;Xmg@c;6Soj zX86dyFjH+HX7_u0LsJv0LtIdeuGCuHj$B&BqKnw})BTAM(eu|IDkDbQAqX+IuGx#) zC<$)<%wl-7*SVhv0Y;9Pc6%Pch%|c|gQYU;5nB(6icz0W^8L#pdqKg%cZh0?5k~QL zhPP|Ol!T&0BQoskne7k@SoM${SLGIHDe)=JwncP>Z@KC{F=yc^kNM7J#E9zQczq<^ z`@w(M>dYeNg$!pmYMt#bXeMF2G;9YQXf>D8ULBZJE?*e4;ro|$;qIOP27}P@z`W!m zRVBxD4c1mpYdxKd9L#UmY&QUtF00PO>nosU7itL?4rp&REwwkhzM(dh!&Jl@SC_9H zg_`+sEX+b-YrIWKdi`M-?8V07l(SN)avBA7XSu&(a~ot>Fd>cG%?Q8y+n0^A&cr1r zjK^T*T8``te_c~TQeK<>q-R5p!<xt9=F={Ppo>!?lJB$L!RX4``{VI(nStfw$UCJ` z*fb%u>%&E!*23-6dTVR7$ok9uZRn`WV<y=9b1!<U>$r~R>+P-UGo0r$@2igc>-~1h z+S~hWjrC(=7FhcAarZXW)M?!{W@&lmPG}0{vU+_`bmlWjXY^x3#<A_(?&zrKYS7v0 z$m96+Vo&dL!n=Zc-)mTSz=m~_;lz2KQ>3`<*7Wi$2q#@;uoJ+GJT`N*7ntvTYTpYR z6nJ`PCmNUX%#EH!AhrhK<6Q8B!*dwiS~A#qG~}0Hk53C4yfZeSN`X*>wpxa(wYKHl zl5rue)$yA~T6fhaHlmdRAzEz_ylk*^?5;aXSXlsSXQU7-A(l&VJm@G`SoB7nONJ9V z+KLezpe3o?ofjx~z5QCjapkB2+62xcD3}o}J`kk#sY&^ZiDNzt$H^}w3RWO_4%m0e zo13>6>ypKoC(tGw0?yN4z8?(~f3X=?>%^@~3GORD+yRccvS;5nvo!+3k;Qw{bOTkU zRjTE$RJ!L7&dJsW9t>H>tf(5^53_}TD3bQKB2?e*UV-jyhWS$rQ8}^wj@ZD9=m9fB z>Ak4F=x&@2BZv!)zWH&1O-ndm`6&Pi7ZQPm(FCHJk4mT!H3O*7bAFCVex+0~-*f^W z3!6b<JwvBn3(1lUW}Tt5VGwd+ao26Z!6yae;tO_yZSgd}^i5e<w!3ein4Jhx!jVRa z)~8e4Y#W||%mfV3Ti7{V2PmT~XLDN%EU#^pPjLY{&vm=E!<cQWoez|E_m#(YF|A(U zu6mpNE<D!ZGZ5mvZ}z<QmLZ;QNhNFC6ZEmr&N&;XZEV*?>5bZJo)hqXvN4V6OGXG+ zbn7c{s?d#>>*!9hKSZkv3ags#X-x^Me$ObrLYdG<!?#mWIO*YgN$-ozyuGa}=Jqyg z<~CcVx|3XO7rzCpKFJ<P4e2f3;(T4$Sq_+^w$qO8Z7b+8RdfHU13IKUqq#Nh+F%3J z6vbgm9S^M$#2EINSQ(Nd=qXs=Q||%j6NRK|p=4HbEgKMd39VC~?mc3vN)H#@8c1uj z`)4FzR85?;lQHQ2h-c~J_aX(kmuHp|g0ueqr$2ktarZ26Duq;SViYp%jIry%kuwdh zp=LGdp6Opf-CMPQKm4_J;Fs}qXHelWcizCN@RqSM!|rOeDcO>7D*Lp+K%}LS_PGO{ z(m-|F5#+Tn8bbx#n9C7DmwJcEn=L)E1vV~6Pc3&g_B|dLqERJHK;`)+OfIi0X2O+@ zE3xO=#VAB4cKIol%(+>dv8ixeOEY^s|EyHY*4OC#L?5%HDp<HCCa|TG)1ddhgaZ9# zg@2utcMBg5MX$lh*DDA*g5@&6(Y1-6_1>+yX_&csKz{LC-bL=?-K|INa^bRhIH;j@ z#wMwRh8kvUnRF`4C7IUbNcSvPlm%*qPw)>3lgd!;(kB(ZA!k~D_2Bbz^klQ;&=MAF z3FcnO6|S+<gn%9ja5ZSB0a<$-r|-HkkgH7YI`E2dOJ@PrS<m^FYH-0O5M%rmdT?Qg z^(I@|D(lU7v?Hr?=OMkxRIUcTHQP&w!Xo<Nl!z`ReYryJrs*h^%FOE3EOU7V+5XR~ zx3pDighlET0o*~7OIqqS!Vt*#6wWo4QXc=se5&PKNu!KHAE~|D3Y^FK>xZ8+Z=O}= z#~T=}UP*XT^Jm7s#&vL0>^e;6m@YpirN)8PJlbYvt3A1)-2(EJocJlWdFHbEZ!C#r z(X1sYq=nALk61S@Q%*z3C|>pYxG+yQYOAD`U#FMxDMsJ?-O51@*>a*?vBUc_{pRyA zQOYH;vCbBXoBPOSo;5&0oc3q)3|`4;cvUoQ#>3M+y;sf%6jTsOOS+&mvltioCeXZJ zxgzdez$Kg4&iydRb$|GG=i>ym_x48@?J1gFUsz|fxeo$im7|z+nlZ99s?Do+P9tHo z*jT%GShnzThVvvkwe6+by&>9_eDULMNrz=z<ps*ie-NoCz`aCt_oXjj99j)@{3T=O z;1R+`Mx1S4d;HX6`eOOx_hRMcQIPo=5zXc0Iq%VrjlLkKFL=Z~S0^V+jKlohLA9l3 z6S_eAlES24k)|T|UF#RFg`Xo(cLQ!{r(A>wS&;#To1FDy-MPj=MWoSl_VGtlmH3&z zej{XKqGyk0(_aPfD<u~7!{##aAEt1NzvBl1L&iehqeV($&riLVXYj%SGYlfV!O zP^{Ler8vv#lY2m#8*S#s?Di+a(7nQ-27dZz#H+})!(!D@AAs_)KMxu<&kt7zt*Pq0 zbqe4ixx!U#`wSr|O_76aT_yq{{bl->YY``Vev8~V9#okp20Qz<g(*LQs~wEAio56) zjJAwQQgc<<$rr2=79fj_+1e|>*Joqa#yHZs6qOrnX^n5bjSarrv^!y&57~J<sggI} zg8b%8V>c`+;c>D5Lbq@U@C&<XzgFD|poCwJ4%f>q7}47<fMVoyPGcI1BfU(--PDe{ z+e;oQfeMk%2fBN=aj$gobbbB6=w{id913H6#DdmFK|SRzu)XUm-mVavx+G!y*?P87 z(SJyZV|+p`T3%X!@XNpRJaUf7ZNMn4D~=2kHIBtmhK$69vOV`>?u-6ir^!nHjJ5}* z?{E`<UpS`ctP~M-f2nlqK?_-RbY#VJyQAh?Gdf0>T)~-+t<r@(Rq1*1V1<-FxzP6| zsGA@fIi|{bSD<xBPNm5*MmrTyU_SmMCf6kOckG;ut6AIFP;UTYS0|?R&HbYX-oe4I zHfOGk4U@#aCZu?bo?=Ea!GMJA#Nvogv*giKw{z<9l7V<f=^Mx|XW^9@=00VXg^ID! zLL8wvPtsfc?36qGae3~wA(|}-e>8}`>MVWzgsB3(*{K43Bq`ZyvLb^Tp`!d6BkGnb zo%+4<BSEdcTj<n%{kko0ck}FX0t{~=+KXj(_sG|)fi0);36CC`1ey?eSOHG4eUdvw z7AW+X5H5NyG<w>LAcN=pJrz)uTyO*<k6O|!x5~XAbo8>%(-#qClnyodelh#jU6yke zIp~^2#<*drk9oS^IW*57hv$^)t-ozq9O0sATj3VCB!IzMs-k0AzK{hEGz+t-1vwAw zQEf{O?FPI13DR{zr;-xFg=_VMlpOx(17tyMh@68DUKjdeP1=+1ISiH4!-i+}08}Qn zOEFO;p13s5BIRqqg5!WKc`q&$MxU)PzurCYIyceY8m96L{Wo9CY)K~Kq1JC(LLi^h zpX!0}a^O7<_~rU-VhgB2kFaT(gkU(93v)U%lRHT2a0pqCm1_0t9$$Rvev2MYMM?Rd z)3x~S7>Vb)Q>sV)GvHop+Ysl2)Y(>&ng<uF_gabeTIUM;t5I^dwS#$OsQSH)B%RXc zBK0U0{kMc8Y8S*St)2JiLxLGJF0YlD4=RInL3D*{-*vOb>u3wey0l_e<E`n~GSbIs zveFG=*}+|mf@FDDfz%Q_WxWSwTq%xLTZjiaD9+ikuA}p$qUSHIFau!vlwhMH7Cx|T zpg*AHh}?NbF5!M~KEM2MCt!x;e0c$F{Nh<Vh$9|>1D)~A%uRmG#d$5r*I4zjmcgJ0 zx6+BAaHqfi(2eauOf}78{fJQ{DG*>Fdd;lK3QI2@0F3=a#+Z#f*iT-K;J_)>EwIsa zzbx?8y{A6`nG?y-l{gFwCox(_2{!v>E1l6IZa#%<bU(X`E&M!tiY5HMTPHvp^G$59 z7Q`44^*1CeXX5I!=hSYA&>Dv3<o7KL)(TEy=Y+^mZ5=(Q1BLTg;B85LY)xw6VW1d| zM_Sm}mz+YvbMD~GeYQ?kgBbHH2e}hHP1)#|?;ZTQsaOT>Yx^xr&Ff1T1@d#m*g|z; zSXmE?xQDM_(u#HR3;ZNwhQKbz@^2CcRD@X~!YNG#-6wO=U*jLM=;@(DB<dN4aP$|o z0&+*bIRQ!n8ExCGcAIDzNDrxLP}{Y+a$hC6Zy=8{o1wWeI;wG)B3Dt7CRqu<qVgu> zzFEB+BZ{6@l1xlLvX|r7HZKf$Gt2$yz~-|EONqXDP$LTTmHQr*f^;hukIb^nKM?^A z-TcE)d%P9Bg{9?p-K%(Av`@-n&2()Sp4!2vks5U3qVls)ii%3(<-HF)Z<1z|=$@;B znGM)0NKiGF42N*2cg;0{V(CYTmRFo3H9H}XkB=vPW@|UKDR6JydHoY<D%XmG6>Y{T z-~$bi!giO9_GoqX`NKCUnYJ*f1H+7ygY>FnmbZs?SmOdLhE|nZYH|Y)nIw%5o0K+d z-^-RS@X@2uRm;57qaz(zM_FhW1=p5EOa=G!C7V^l%(M>d6Snj0@`!`*npHQa)YH2f zcPpK#Wn(fGtJ7g=%cl)Zcf?R4hbUC88>5z~Jz`gpDy`RgI8Fy(_`H$6t+rNUf%wti zYu@<-V7Yb!ZQzoARnK<-v<l!q)#{f&HE0^Waefag&t>ept2U<*U%wzVRmNI$k%MFq z%+-$3;1b<t+Yh<lj?;)=a{Qi`h+y~B3t0gOTWtg=jOAG8IE(k&4Prp4t`|~`7q=om z7~?KOKA2+d&H87+akbGn_x>v9$h-?E)OihKUevYJqs%x=RLqg^0M%!|n<d@w+a+Z& zx*&n}+_ubI5F_Kev6UjQ%Hsy?qG_~^^lt_e;_@()Y_GvXco7Z5&r=z}7)RnOaOmBw z&-yE<Mc4|BugsbOLq^RhLK$ds%)pVFVj5QXmX$mvERu;TQhqeVpov2U%pyX@Ocpu% zOhhVGM(_)4T2wy>5Ad_l_L`gQqeO1-ESI!U;csBSS&UZHT;1SuG_h9$Z<ek}af$JU z26OtNtFRLHsxT_Fv^z{5z^&{$Yh4o-v12O&lPOL>o5@;fSuHUMc4F*~Qdxp3@}99c zcA)|IUV@W}rc`X*Q|b^M35Jc+royx}eb9XsfvR;ky$#Jn&MebD{uYRc>Bfl6#P$B> zv7ax8J&p9uYS$APc#}b9k+WKsQ$bT}yH#JBoQL=y%uTx4(c0P3cQh4UcalHX;dL#~ zU)<X1q{gy2yEwgG58j@vwY%Owr<S_DUSD30_L`3J=1Y{<4~l9%?m8lx2)u_Yl?XTS zOB&Dm>`Y9@DTH|xKerwjlZ*PgT4`Ch)oOwJieqM+6xh}6;-<A0T%+DyZ&%;`RI6G* z8(JCIJJ=cOTEZDx8CdI?!7(zk0_XvM9dU93;OG=wZ43c)GP=fw0601sT{}Z72LKz8 zksd$~kORQc$r;*PJKE_R+5;Gw+5Yb1x3+RHv~u{%#r{8BcGfn0)-C{bz+Z{XO!NR2 zCN_X30FI6ipbh{6fh>Ou{L3L}Xke=Q&tv7R9dsQG0rUVkZf?MT_RIEv?^njoT3_DK z0iX_`lMxUC&?y+YIQ%VH$lA&Qz{v@q69NL*nCO}RR*+7J3Bbn00Q|eb3;@!zG5p<N z1pw*Unf`9D|JCGw<os2ePSC|cSpIL_{I#U8{9kJ_u>a?IerpSBJ9!&j{r?Eyw`cjQ zDAWH8_%8#n|K|X75{6dB4kiEwHYNrDosg-8gP|ROPRK&n!BD_Z-`c?NZ`pspW6&a@ z<;s%LYr{x_m9J=?=UOUE>09Fyj9GA;!{AyfJ@||4HpPn}=Aj9qljEle*|A;e%8HV5 zi!LZXARQ1#E-SCx9$t;=+}`v{%U92pTxHNH`=beVB?Jv)NX+atIy&$e6cO4nOLMH0 zt-o$ZN{4jOz;!Y8q&uJ&4h;+PrY*euMW~4K0ClQijOkBh%vX^vRXh*1uZmk;tY@4e z4-*w)elniFT3T0_9hq4&RWW=QDpbh~(NSNsjWUB=5zo3Dr=%965Gs{rF-O&nK5JUE zH!PL%H)=Cks1;DbWN?gA)znSG6t0xo7T{d7!c#}~*?E@96-;9x*jqZAacQ+aMKh=m z9I$@cr4d-*YG%Om;S6jZ6qENKI9HTPkuDVR%coP5GqbPl`ZJtSi`;L&8n?5ffTv!r zlr-^>#@FUj+l7*gBFNKmO$s(+b2y$x1_E2%ts14Ul3pBsIeskHN0*v9doo9K<ow~r z+9#Q55Jl=nLK5=Gezz@h(yXF<U=Tkkdz|5M;uuJ(=nyo=5kT*Ga9SCuWI}5zof`qP zt9dl;-gTRSHuT8lKY{ZhZ*)KT;uF)9o|YyC7aAfx>_CCzQMr~GoDqlfYW6>Kv^puE z1qdr}|8$^2meO<vynL47%I(8cT~590{-JSnL_}ca5y>B;m@WS4RC2kxxS;RP7y<!? zyzr|XNtIZSS%(A-6h_lN4yAu79bcL%np7xv<=#)y8*~lD!%Ve{#*dS3mgLB(vUpZ` zeo=X{d8kE0-X@4H2m~BqrOUF8F*cByLw3&%B@nf`(aGP<W-r{nV(K_QW)~a%pq%B- zEWY>1Va?{#X|Rx*9l0lo(HC~TtE*)o%7F6Ra*MOgi?{O$(uT1Z^niS^uUJZRuVbRb zI0+hItR>DPF#7s3JWo!rP=S$B84k|oTi{fz_epx}{lKcE=+)5a&Nk^&d(fBmz%Om{ zqB-C9(gRBY&hkO5E#G4^l@Z$_yPL^ESC+T5Kqv52?T4P90Zx<o3O`F(M1B3yJSAnY zO>xIVZgk?}^sbslhk_anUQK2ZnQe3JXA)()4khAf8HD41jwR7pQZ)EMt8u0$)Rwnn zo#G4Y%8M~SNGL6j@Hq<G$$1Kc3>Q;8@839{7j256Y^g{1T9{hj;vRuMMDb4nNw3&O zv2>MS->^TIv1%XEedK!)$y9lWNCMj6H3t(}DeEJwYs*9E(k!wRL{-B?r7qHkI`nPo z-6CrQ27EUQzEzGa825h5-}zGt@y%j@hNrlw$Ff8NDL$AnHT}3?PUXz8=)k^+M4Tq> zNiO_GF8n6pVpIeg3%2Ro%S`O|Fn6X|4JQx=-ds>`jya?JN5RGjcPkZU#}WcgZ%*Pq zHh=`%r*xhz`w!uGsF7Lnw3Baj-|LeXnjk9|%*^eUrG1wFkQNgiztkO$!;4U8jW_8t zz})_9A2$LTGd|kS5+5?r*z?ek$#`20GV+H(D3LjmhJyC4jF~}=8Gutz-Da;=oFN!v zH?NtM&ri>&L^@m;3=?%ytC~GjmOgco#uPD#ojXeQJKc8o0cHd8u)?Brz=vmXThM0+ z?pN?U4M~fK7Xx5L?hWY!c*L|G+X3mMkG^{?Tj~w!{F$0JSo4Tt;XE=0*L^hcsLVO4 zMtiqB57TYY1gPI^&!spWRCmTYvGIQAwO?v5bH9+@c`}DcX&<8soz{ZMs+^(a3)Ee% zpOHfM$N1WA!;;vGe~4&CQ24P34n8v$z~R_S&c)l)&W#lzfr-_R%Z;0{|3;C_Dt3Q9 zud9jBV%QV&e5~!L&ig8T2aP;yY3JNaIr2yoy6YyX;ItveZ>B)dh>H-NjLQIw18(09 zjMe_^ubC8|#jcLp`&1AX2L3sGotyIhV7xg|7{V8rvRfp0%_PnIBN22x;o<+(SRXWL z`wh>HbD9Mc5>>CMw=4~Qtc1!JT0ANSzaP?TS~ougMCn`ku<C%gI||H_J_g+?Og|U} zlt%>5dH#Y<p}L(2Na>ZH*Ds_tRctaBnu#7_M;S{9qmp;Zm6Q|EJmB%}TY5IP<h}J( zr~ged@fF&j_<=w%Zq~^BG}(7EY-RH4fk><gia7}1PgyDFigvr}?^(g8<L?QvT}P@+ zvEZsI#l&!!L&_*=br7-2=`lrcrTFJcBQgcC87JMKN-={z4)2VDZDN+k`q=VHxscA{ zAI@e>lX$-*k4^X&b2gq29EBFTmS18`HesT-LrgJn5Ru55R-APpupSbSf>p^8rl5G6 z^MePcjJ~jo5j@~V>n#e$gy(J(`MX6XmIdC9*6HTi#lw|Hqz(<-?+fL66nD1qso<SG zmD&!wKStmpO7SK+e+19q0Z$%q<fIKgcUT<~Q0d3V<HV<oxeAu*E?>b1h=2UBynL{u z*MbxaJ)Zft;!F-FhlJvA%o@+HHQ;SX&L<?*%R{>ol(45XSaiNRMtdaW>YZmZbsm$C zg{S#I)7DeXrucwCyL=k^^=!re{d?RDEJmbV*b3fd-Cb76TY>z(wO=Tlb*e=gYFI$u zJTZ(HjVWBXDQS^BDx!>$|Bo{5iL{V2l+i3o54F*h_^OJOk!^-jqd!ICeG-l@a`O8O zt=dBKz+^q}1OU(-eV0{7uPXF6v(_Uq3HL)Sq~0QwbWwxG;<U2X8aWFEZ*>MI@Earc z(KwDssvc>=#3B-cj%U+4{ON{p9qslz#P{H~iPN*uQlW}ni2<xvVG`gfv6#Y@QrG(* zHC5hrWXB8^!PH+G9z5kvW!ZF#w<+Z076N(vqgIY}syQTFJc(qhaMd*f0?hpQg(4D| zhFQ5i*a3u5#bsBK3j$v0NwJ5WZk6*JnXe(An~oo`nJs#C+X=QI@RIFeOzCXpJR0^K z&I)iX+*z$jGV4>pJ5T{t*dB<s+wtG1PQITTlm`>!5)nDthOAAWOSWjBJ{*$mu5V#u zB<c*zG(D>N=|#hThLv$EMMp{Orjen*M@f{cvE(-!%^Xnc5dD;sI*qEtDeA=XIDR)E z&)1~w@t5q}`3zbp#<fi(u)u{N#6mDn;s7~$uZ%};TAY6SB^b2eLdq?9H}!h?8AQ`6 zmu!eSdsY0l*S*>v!-(<Al5Nk&<lVw1G6h8nE(FoBZAP@H;SRNlBs!MQ+tchl-N8$7 z>C+aIvt^R}0)sUwmBSGK)K>KdRK9qQGtFog1qBgN!>yR^fmt<_m)wS;4O^Q*ro_3I zKKs(t1YPg$7~TOkWX6Eu_*c*|oqG*7Ml)M0Q=5i>>$t<kycM@x2p$&_$P6HXUWx@{ z&d?tkSF!`uxLt&n&3k=#bCPv^v3WgGac(x_x6u;Pe1Yx#=!UYPSGk%QYTQis2L6Kj z0_uiupKFh@*iM86A#GwoLwKN5X8=0NMnO1#AF(+gg_qCd9(Y4!xxhvoi<&U~`vs>6 z>Eb~n@_0#klg3I_0I1iKFOsdnQ*1eu;WP#|Jisr|hL2zj{Q`E<{^h*1kkku+{ZX}B z#WR3P`M8DS0wRinNKL~{JB#9ML?HVf_ftF$&zX_2qmA>low&?T$=HNqmq+d<Z+J{_ zmM=?RU}A=>8)7wssQ4y3jsASM$_6e}a#SgJXAi7WV?C+U`&C-M<HsuUOB_^<qCe<X zudd2!sYMxI-FLnOJ(I)r4e(xXZjrK}t<s)HkxhQetmkiLA&epJk+k(kP4~A(m{Y~K zxSfk1vYCqsMQm29`2BD>oVXU5PY3zwT2KdERe|nbi>*`?|3ucX(Eod~h6VT!vWA7> zUzIhi|GupGTit(K)-e2KF#c~f4$EH#)BiKF=5JT&e~~pnAU*rPB5NWP#pU;e5IfJ5 z$8GD;;O-g~*nM?T8pBYb#1425=!ZdFl#?QVCS706anY=Gr^Vd<zB?XT()Q-!E~(3# zilR{3GGdfXl<1|Su`mo!Rvd63X*YbJ<VZuvV&-RvwJ>QtKTf6^xD1kjrXX2nN;P<p zA8Z&st3p(f-Ii0y_L%LR3b-3j6cUNlEsz;yb2z-yj;1@S<C%UbpKM2Aq|Z>~^J|+< zLX%sLdjPggpsLr7?>SOvj6|Rp7`>g9_J8b~Q|dmL8^7y<jV4H#3+Mq<a=xXLrpIH9 zlkb9Yi{bp(74z%V=OcZ$;`{U&rUu+~6C02-b@x<zd+KSn+C#Hz&8QL6T!i1D-(FeE z1#mrYL8XzHsFA>4_sCg5WgwNv@d3VpWyx_QzcN_&(f9iXTJ=n}0Uw)kLP7m1={dp0 z!cj*t&*xBK&Ma-fJo{vp+B>IUsEjyk*Bryer`9xjdR{5$GK!yTiTybi>%S*QA*@9s zlSI4jIOF&TEW$KC@Vl7E-TYv1tzCy1Q+ECCx%-`y>JzR`H3FP(_uRH`@Qs2=)tjB` zxBJ*p%i;Mm1DzN>Cx**$&*9bUSf}wUOx;DQ=K`=Ka8`b(TWqC7-(j<G@chaM{0%bY zKufB06&|yqd-eIJ43Vm66Hbo#WxyzmWj$KZQpxO_h)y)O`)LQtWbeLDA4Q~&8S)o) zCj^kQp2<I6s+`;~?#2MdzXN3`f}wV7+5^TJNb(|!IQY8JFNV1yir7fq<oC@3jA66< zO{1@yPaf8|`wQ2E$9RmeNoH^ovXyaf1M|<0sEDiXHYe1#r+7SvcuT%`j?)J4U*Gm{ zNSREAJE^Vxgolv{MPY`a**pIXoPQ*&j%JV^rokv3flvFa)<DD#T-q|f3(T6W;wnP% zC+2+;d#Z>$bKI&R&hxpu2;p@C`NnEjL1;D-W=y29M89NQ<Z2G-^IiV9g7TtfO9gA> zttYz}0+PkXJ7a}Qs2;R4U=d0pqS<Ot1T-xZk>&j1re|p7<%5B=F(`f3dg)S&?3}9a z6je-r&;qVtTZkDw{IF|b`QfL&af`PVvzoW6$sFu6a9i(AMck6u;T4flOV78JeDaCz zL{=itL1*1rV!0J9hmHR6;H40Wg3~{idqZE_1AFlOtz||BJ?~4THK#F?l8-fGNC7)> zXI>e<IHwS{*IBf2hbk<O8|u^X#Q5WV@#JTO>C*aFi|UUUaI48r(_JGCDgS$LrH_*# z08Q%V&oNN&yXitr9II6q=Ae44JxZs&Hd=zgAA#HOdem)e4`>6hdwbWFL#=sXdY}W2 zRjR*qynorEoPO4r7s9c5NeoZkk;2{(N#U@;eQ}(uB_GF_O2c|Ye+=n9HDctzI49&8 zU)etNe%5MRi(q^_d%!DrN1QjYKe&HbJ<<04TvQBDZ3~fqaze$kI~g%Ud2MC`5It9Y zIDgx2_EP<4jKKIWFaq$OFapy*G6M6z$_Q-#4Mt%4|2rcv|05%?v9tawgpjW!9>2?i z*!iY>OkOmK%>#z(oRW$vUl%{IJ6dQ)1)=-HMBhLdospwuzpAK!1(6cQD1O&R{q^;x zLG84Y#y>sS?`OUS7%>Z0Jf_zt@!ro&`mA_6oOKBfsnSX7!Td4@o4Y+u!ZX?sRoo$; z62Fv$s_&9>)$bsrC`_pgS=S&AqiulO<#~PgiluEv&vuwRB&y?!gneq#J0&Hv0!m#) z6e0a289bqvfI8p@RYaIeKf~*KyU6+)Z9btXZeD-i*67f7Cv3)3|4?ebeq15!x=}_v z`FCjwAcG26Qxy9UJz3UL0Gk64pJP<G^u~9?_*JkyAS1F^XM=$Gja+$CA2tZ<$YbB+ z6K6lrN_nlN9$)*D-p4IE4$ZkYtd24gL(5n^y4h7Ec3ki{UTs9q)s)Je%S*|cw*8uD zO~{nv*yytkBdf3>ZgsLgS!v>9Nvv@ZrgWxH%AE@0a;e!t=V(a0V&kplkFPAncmyf` zH3Y@^<ghUvvs0(}+Tb?DNI_E|hzqH*e8!2Bv!|Nz>S%*(%1D!G9*6n0&$f-1tRxLQ zVMd`|%(_HZh#Jk7tEn+-q^vi7WDC_v;FZLReV#b6LogwqAn&jWN^LKo!-wU|zr{MX zo%D?7;+*>eLxv!KrL?lI&5nF+M?S5~l&W)6-!f&;ql|^NIN6LUJ+tFUF56mSwYqdH zsu-U2LSKFfreCqk+ZuBc{U;Xlde2DS&X-{sUG7{xJi%(!Rkl>L4y+`!md2JEfOXn2 z*XyKLzrE>E6tm*~H7xD-Z0~5r{E<1htdTO@)?we7JBu}hfbl>h7lM1=Zt?~oTv{bE z*RtTG$93yPC5mgyyZJM@A8T(JL^b25>Q<Hg61pY~bzg=RU$Q>s2((!F6^&Rh`+HR% zc_6x^4lqxV=9fz5w3L%TK;YSdl&vT#b@Wqiq7g}H^|wC)oJgb+`bmB;CFkI2?MYSn zK!YVWI&ouI{7rd|eyjINfvad|diiHMR+V=D3O_GMl%zQ<;-SGzQhH?G3YXS*-X`AG zscj4sUK^|nPB^&A<ew32m~z!wf8H#l{oATJmPJgX`7BXLTa4>v%|l4~sEz6$SrSm> zS~t%_O>0d~NjSLHyx}Q{F9(@;N;7a|tjybu!gqj%VOO4-;es?rjou&8iU{%xTOhFC zZlmgF{uy|({F~s(`j6nr_OF5``+oyGS^tlL=l^?n$@Y(U$x09Wm+(?i(ted5vExno z*u)upfMB`1hA^K$IN$Qz^jG}JZ_HRW<~XYGAFpR^v)CyTxDu;7xyDY}o1L1XN2&Hs zSTQ~Z;>Ntf{JVWqw7JdFZ~VwnCbMKKqwF|KP$T9z+ws3JCRd7>08b5j@;o6vgwAf& z_xh0DPM7O77;`yq+Yfx$EwH@DN{~!Gonsedf_haL&!3QbL)E#UP5s-ggCS}3x)?AF z4WS_p@m=@1DTB0Q=_Xgkk6315HHA97Z(bmNbuf8z1Q8KZTjUOX!(;fFqK7H3pz3mn zzXu2(_>oDVPJTP#A`fI1*jq)2#W)zyU?QR5Ap{R*`crkTY)^U`NNa%%(5rpXo-`+* zPvAHbBEM9FNyZuI>~~C3Q19|#=uybSFwLE5hDN5H_nj$FP$P3Lft5>oh%bZ9g&dY2 zDz|^XPV7iniF4zkrHQ+f0&1f*73+o3$!#|}UZc%FBvs>Rsn^pwjye{l;JjGOINXr# zaO){iy9NzbKCADXG^GkogUGN8GA7&Aj<^QW;@LVTTX-;Gsl0b043)1I><WQRMjV%W zCp(Sk{zB~<oIG~WRFq?OqN64QiQ$u4WI$VJZ37E7nYdE)CAHLrH?OGP3!L79QLXI= zNZyR0<tW+>O&r)Ih7a<JDSfsFh*M=XsVt4S(Fhi%blWmcfR8L&asG;r1RH)qaIh52 z+I>xK@QS`TQ8H;v)u~HVu$<tI%R-}~U2@a=tq*9O&NLe}eEC#ZAFj>N*Z4f^V1UJF z4#Fx#dFOrC)|gP(?m6ac;i)ttV?9lxkPUfD&V&ZRhTBnUnu2$MoEpz6YkIpIUhrO} zNwu6o&~ly}v9yOQ3oAo!mAo_CZfK6{?fmXky{~p)`Lth%6b2c%`_9=Q&YeY1Wwz1o z6v^k3`~^+_ZEix9{GVYB`@e@Ztp6z8S^xLa{kN5swSzrC9l*#+|3C5OKLCh<{@({6 z*8j5qAYf?k03a6z($liDvobL<Q2dX%{#G3TM<?&7=kPa&gsGMJ-^SAa3$B3lYyf69 zW&n^G2w-Ms`H$YL?F<a<{@w`vU#|aB_rJA|!1xz@(f@z?*2wx#_7RwXtpD2QQH&8Q z9Oc`|s$=~pon@~#y9PW6DEjn*Z{QK^(+=WE{9@Q~wR>~#uk(*?`tqZ?0Nx2@#j3}P zj!vx(w<9V|&8>31boqkqXs>0N)OB!W%`4@qO<ev4E@U~yp^J~xg(>CMR<25gvILN{ z3o*r|E#(H=i3eq!lGFlIe|Y>$jV{fK&_%?G_1Df<m9N)E)uF|usx5^|#f1g^rjE9j zH7hA+go$4bt)143w81P3UzUqn1B;8^-p`9btFICc1tALVz{9Pju1c>~tsDo*|BJeJ z3h%7lwta(&om5h>S+W1IZQHh8amBW6+qP}nwv+QrT<mk^x6ZCT=X%bw&egbVy^nFz zdVBlt9q#4{KMm9oEd+`eF^N-7rz@<Lt7hz*4B0ksC>oKZ@Fax`9L}XaRJ+~|j*K(- zvbItiz&|#>=F20d8gwk=iJKx@W)Uu&$~J=S%IZUR;gSZh7H-D+o(!B`XO$+{>nl4g zG%cnfz`2Vqt5^ICE`f{Bh=9(_9ll!FnK1d4{1r4i@?fy~GcH9DE;RDw56QDtFG82U zt5MlWKHR{Bjy(`z?w=VvlyG=nu?vUt7q4DzM47j(G2u1<oJC~)M7dRnZQ)i0v$&qy zm@%;@?RzSy7Rjdcujm@_ujUD^RPn4?AcG$o=`9iXqap$Yl!D6w=ex_r9)5JU@DI=G zbik05@(oO<MRWyidv0vwXn4ojc<f(!JNF98gN}>yMg2;0-%^8G*)x{-`7vo$-2$fb z+-gyFM!QX*;Ih!kaWfS(HN;(so4>J#s^#smJaeP*gfSr~POyfHnb%zpf9i|WL{-3^ z$x>v!MSt!1JF4tU{oO`A$twM2i=+>es79m+L)TG%FcCw9>BuJrj@fhrCt0~(5Aah< zVKycs0&MxjcF8l1J{1u=%Q=4+iZCptfuIi=VA2=72YTq`|L~Df_tBXkE9wnx1+OS` z4_c;383snVU^re5;4;0zIt<xal|<Jqo;1hY9T$Q|#Vo{DS|l;ZXukAp@)yl!1^Es) zKW3mqyx?{Bu;a6WaY}81v}{w~AOOuT1u2l0yd!)H0g7<hxnjv-%*S7STk=>;AX%#+ zfCjlIrY^v5KwUp{CmHEhE<s+gEV5z3;4ZPWwskN>oroQHU0%Z;lrgUnb!m?%4mq;w zD}P<^S(^Q-$^0qv0qEgs2Djw>Tooj}?3t$k%@6L|SDG!WfO$@<+(Bp#`u?HRPoZ+z zYvS0n9pKUe--W>y9-5CBN(ww7*r5j*9{ir0TWDfiSqwrQx1L5>0zK8@$5eDao6f)@ z3)}qyP=1ONbOojMj41Hf;)Ph%pVYSkQRHvI#!KRZz{<v+*YyI<l~$XOTx7X(RXQT& z5LTmPEfQ|CzX|9DMDb#gM;delR>Kl|i3#XfXIVg!W4$a&a?rjf5;DLE@`5K$#7yoK zH*+tlkYU1MeLB8@7p{8x2Y9-3Ba-G?qA)VIZtmksa`#!L9_r+31yxQ+4U`4n6|QGs zYF_ug*>g$~>!cWt6c{`N28Rc~$L8AU{=F0be{}MrPd{Pkm5xA6*A<i+R1<8aWpj2G zn9))p!;AA46G#ANaK8>|c0sFQ_j``th(DG)`GIHV%B5e2Dt&BGf#L1=yPsE$@$cO4 zQrgfn!GpA>CwBv-d<zAZlgx_Vt=5+F=-D~;<h+9sYs-N{+txv#6pLvx&l3-o2G0v( zkh*w^%@#LiQwSjB%(-4Ui;mfbca03};eqnN3WR6Xnij4X?Mo1ts;j^4T^6svrrNWx z#5sS~M=7QmJO~Sz;onMx4rccF<pR}<Urr=2_1+!GVkXhWucpYMC?=+Dzri<kH6$He zL5m;-LgUfXHt-ptot6dBEG8+v>U-`?n4Fen>y*=G%!NHL=c*Ocg4&EoJQUOb63@b9 zy=yzep<y13jF>*|WOu70-*@v&h}wI<ePV=>??U=l4PgjxMTSx;*b!tBK{^>b@K^ZR zwVo&ctScu<IzZ{?S;}hOu--W_KEt8z?gt^|a6B#62h*R11syTbZG+wZwseMva`$VW z70L`IPbo6Zeo!V*)BpS0waqk-g2hl1b!YlBmqe|WMaB~9<wN!TowsjK7fUW0BIQz* z8vf@iB?+}`thOOjv4C#c4s-7%{I@G~c#EH^fiNI^v~(-q^{>I61Ud9FvsvRjJ{a4# z=$J6mgyQb0?lS0_GF!fJ`RFylU*CdtnaW7}MRhZkXH{PSTpiTi0ere4F%Cd9Rz7pS znF<el_fk-|0g(J(;S{SaoIQN;;0KGKbNa98@8a*Jc@?iEU$ALkQS%?US^}=&fOW?A zPI9OzOprD{@_8Fr+!4JlVb)oZY+(fzx@G$10|9VEvI+A~xp`QS#X85B{Jx~^HMw;v zG9UeGg{(Ym>9V3uF>QHPNl!-9SK6BhRCBS7UQLKZvx#sqMAVJ?)@1|VyjRei#t0gp zpm@-y%7ZapEVor-mqXf#@Nhg1OZdwMy8%TmyW}8o!s~gx)#^USO!o0ab(uO_QFj32 zgDOSdGxn1N`y+0h-E369NwuHRePYe3(k)Uk%k&1Q<=S;RoIzC!_8oxlGZ{;_$T@^@ zk7-1I#^I8QOmcnPLP-sNOM5=wMeV!P<S!N@FJGxEMx#L|Ng97CFtVnbYO7Jm$;O2e zyi>)LOk`^Wlc=(UJiB(RY3Lc($$NgbK8V4scQD=%9V@z?V7+dN->mZ4Sh(KXZ0Kwj zB4_B!!`KZ3A<l(-j=6l|pdCt~@TuMgCamzdf_nWhiy^X;BT{aAZrxK({xwtQ-@*bz z=$y@Y4_x+#IcptgP49unM)a~Xn~$-%SWb-lO}n~H5o_zEN!05qa_1Z~ero;LqUsvf zzkeo%kta!;1FgU;1jCrlWnyxgs%y=PxIJyTkjCR?dWQdyT{OVjW;1rma;!ELklh~< z+5`F_EY6N)>rgM-8L!Bt?jWC_vV_6?C}xtkOU)LYWhsgd+s-Ez1hNg0Nm1=O*r``b zjAT0>NW7W?9`9HTOuWI12ZzJ-HJD#Vw`PfcC!en98c3XWUFZ;%bq2l$U58SR2}M*i z80%QPq<f@2?RyJ+z*~7gkMe^$2ZDl?NchcRG$xumkyI^&1Y*pP>v<-hDkh(I%GNoU z&~}h9c;&~M5BkOky-!Gl$s^-Xzu|Qr*1Nep=DYN}!j<SbBPbh>EMp~4$C?xi33M+t zf?S_6!=dz%AJ1H*xXtztvfAN1)y#nq%__??FZ^o%F&O4UXXhkag*<EH^hd_ilK234 zLSt2&L7aRW{AEyaP~TyB(4MOkRBk2xkEo(KB7scl=LV+-TLsMDjhU_<>40n7**g=1 z9(irEYAE;LQQ5_l#=qAd0DT{N?g<Pqe272JaJbb{(u9!RZ5SXdA#DrKyBX06l5!X6 z7$#J+b1=c33BpH6R$bu(Cvl@F=4=uMbE%$?_X|>*q{7<4bS9(ymcw`(IMIX*Vj~cC z=W$--s2Z+c3C0FcBxQ$3Xz66*^-hJ($IH_w>OR<B1iu$7IY`*pCr4r~vi^8Ap@d6* zRaRzn#iQm{EIhj^7<jOOTzdD(??_;sf!NvYh)&~ND@|_mbbj;v;+ZVd8i~OIKYT;| zA?|yyWAGeobyV3phJBGhLdHR}bn)^PA?%NBPh2q;Nes*DgU{!fCsXBxZI(H+{`4g{ zu$5_ePc?VQ)fh73z?${EQMGx9<n=kjtzu(fV2_vbb+g}{i6gaEKv#UT{uWZeVmugS z{h%iO^)y_H!^z`qEwHzGN%3V7;;ZgYnJ9DShe<YLmverfdK#TOV<9h<-J_v$C|tQ0 zddW!H5<9NW?e>vdf!*1jih@r7@nCiSBOm7y#{-j`WSHOFvPq~ozX_SEf96-ma0uo& zf8-BWn8An%4QoyHb}$}~p!TyXmn30t_AJ;L=xe5YT|_9fOYt%1HMm?kJr3+u0sc78 z!VHBroOUahM~89|-j-;3QWM@1t)JQcAI|PyZ)YzMP!x6f@oy&=4<8?|o4V8B>11^1 zvkX1>9<+Lh5zhTBg?AC8v?A#JMM&U!9KHDaNZ<rfbdWk;u;^sPr-u>u*D`%!_!qf- zx(G&ekYq%#n{SaQuz^k(deuP;=z@hr_xF-;;BR8n*(q4|JB1MFoaRUM)^&9kn=1@` z*)An;w2Soi>l}fy)Fa&$ELd(TwyZRIRtlth<C{YD8DdSB3P>P)#$p_v)%unfy=HO( zhyISEl<E1CPqd%V=N(+fXlr#^08d!|7M7pGzq+My8-qtOUGC7zae~j^&$SLJc`hp% z+@Dm2RK-&IRs)eO3lkI18nKok`}}hnTqvLKQ8v=&FSgA%RHx*Iqe^`Q(4rZ=h{uhz zpw;sb^M%rKCXk~Oj0$^~Ts=w_6=Av3vn6x6S~fulZ9sc2rB^Xm`|4HC_&NbzF^q*A zFgnd%9kS&k{hGp0>Q2!b^~|NmYsQ2N0VAd^3vSip_7r`u;6RD6ELl|QiuLZtY1kML zJ9rnIdkK_}vKh^Hp?gblGYiGC9i$FJGfw`U$R78a<_nDeMdFtqybh9AEFLSQv~}KQ z_!6`1F?sWczds6<S!emor`K2FEKFNC(r(OCN57#ZILTVRkeshTNJ=>BZqC)n_BPv5 zMS(`4?~7wd6)S0NX`8Kfry4ErIvQ2kS(3hTVGU1;hFGJ`!B;UbzX`S!7>_LtU2;w8 z+Ip{hOy|N(c+BUnErhTx_~PAAQfSQ7iH);hnk!iusH<~Y#FietvTdyO>^<rZV9T9S z<(UJKtG9`5If}Zr$tSW|U_G{bB!z(lnt;a4(vE#&r7QLlfhw<Z>`qElX)oC<I(ks& zyd6;|+!!#0Y=8;Hrx`n2*c^SFt;a1-tQFZ`L^LF8DYks11Rl1y0}DJAhQrKQH<Lc~ zvcl3)(pu${EQ^|S0ByT>J(4CqxuZtlPuPngFFlJ{CXhInyp~vXg$acOx0E3SdFyVC zWz!rJd1YHzJGX7qp<^J|^GSqlF0^($^mgg_U!Izy{^E(HX7i+`tGfUvIK`27xB; z*vTiR>@?id^JDWH$aX-Oq~TQlWoImUFA=VfAZ!rMz9|Rq-o>NqRp;r#u(uV$=Cj39 z1Nzyppx;c>sFwG-2FPT0hFKCpGOqcM*SW=%17ibyfaEvR#W^G{`71eV|GbM$dq{ha zklq*z8}PKzum<Q068TLx@3n9JpWv_8Gid_R$h7%cjoNJ$^1X*san49)vsw<_WJgc( z0b>ath6k|;Q!Llc0`la7!J1Tt+oTdT(E$joG8i=*eU?QwQkrRtaR#LIoEquE9gpjq z)K}?2jSamO#``{|IaXZv@c#X0pTsunEjAxEa}(5^abh)FDTb<)Y^OvU>GM|3^&40S ze7LZ+uZDC}G*+PzkqYNkCVaVbO?CO+t(gPQ_e*M|3$E@T&Xq}yt)G?PSzTi?fR5Xv z){Fq{tV-|F%QpB9X-pa6Q+X)+5*@Eax*UdanW|lmtj$fwfio4YFXx4*)3uqVyerr( zx|}PW&h~dkpu+EE+kcTtvHqLKhphj)C(ru7-;@7eQmKE$B#f-g|9rCi^U3=EOsnYs zgS3k2ze=lE*Z}l@oK`Uc@adUZ@aX~c`1CBSf09-)|CcElD;?_}>jGH*uFJr{_NTfm z|7E|djC6mh%fQI=4_#KkpX##yzx4aZ@0pQ~;qSVPOw50(`yW9Q{{zmFS^ol>pl4-a z`IA&IU1iOFjRnzjNo5;pToslNvAtgAfh5Jy-A><WHYFdSUQk2QR36EU@+HR0W{QS4 zG}cJu;u!c_eb_*z*11~xBq^;9MNa>@aqP3&PmuR#fwbW$c_d>m?2wg>{R1_uFt;%f zU(=(9{ev?~66-awZ3uCLpcli?sczn1j4$L<oO?y~CsG1BW7u)BmFM|=#Iazs6#+Me zKOq^0Gk3;h42=TT7RBoct6mHUHmh?poTR@7=LT6BvN+7Hu2wXj4a;SI-sIsA`kEX$ zPU4Rorvqom1`eiqW@?U;?sw@Y#Rm@M;Qi(ws!8Tw`>n4fX-%p_pcD$FEQJ;VX+KAo z+r{0E_+SVF4V9mgCAd2YZNU>F#H?Obz1GGBN10#>;)NOG$>J_P6OvA*hKKtmWKR0H z7w;!P014ajC<g-8UET*NI>mWlVy^}nByRZxq8r1ap$H;Xdh75R?R~dag}TFl4!#ep ziSxUz9Kp#H8Oz)*WvXkx2~1;z-0C>}oi7*@?&;N_^f%Eqgxo2z(ILScx!m{Npgd^< zNt@KtT_2XT*rC-=@3CI#Ve$C;s8}nqL#d5}bRz2tYx=nkR|x#W1XNz<mVSBB@>ws( zfmiU5`A}=K0(OKMS^0enTG)42z{Yx5jny8Qs7kUU8C75exIgDw5D(&hD8D(IXaa8S zZC-?*$SF2-8Cz(8oB&n4I0Rh-%m8!_kZ?0n6X*9%fI(KoU5b{NZLyIVNg`TVsbRTw z(xrP0<8EsS8qc18%#PHdEhbF_>(7e_N9i>vy|~eb45d<C{?N;}(rcHTVar0>R6(_2 zvDz@OXwiHriLdgVl?^S0tfOEismj#1hj!bxKq8+#fHY)Lk#otJ{$_&IL|j-<?&V`I zlgAC7qc^oirlXKnxm%XO0&Q9$`~C#MhXdup0Z(*Wy>n`*YC3a6!=5B}!R=<LWo4-K zk8wQ6xTi;1k#5#m5C8Ptk=DsF18K0|9B0E0kWt^gD6xyfFOi_H!hY#dV>f&SIjuwt zWC@**h8}9!1zEOiLmf;+(R+yB0XRQj15Dz<;(=JGGbcgFq=V%`Z~6}~g6$>za->6k zCqwXw+;smIClfRx5XI1hKzr!H!H1CrR#@ebFptbsTd)V?rg{r(ZsAfpUS41oNQnH| zdnKh3?A>pzww{N5T^#!49Qqo;zo%+)LNXr!Nz-r#%{V{aI1tQk0}*4;?etL0O(RQ% zLLrV;FM*S&Z*7QdE?9i27SST&Dcv=uI*?iyDxqC->X9UZ!83hQY!l*AN~okxjko?h z(PZ$p5E&&#G&hpSM74%uW(cpS(xMVMP$XG{Wr(T{CtIu0OtG}R-1cjRwi=_J50XAL zN=sVdCvNcwL8PQWW&)~%zO~p<>rX-HUu%qKYj<;uzVMRoHK*c<mc`uRq7MuvnYnrH z^Lswq#_v6xg+?opE5&MV!ty(H>IoNw?uqlYTY{Fh;iw9jfV&*aOAU($j#P@H(t`{9 z31<z0(VyZ>w>8wtFPJJy>p<<_VVBp{j+}GTUfE%rW|Y|1A}V2M;Jn8AyoeBA%rK*{ zd_}aB@aBN6MsP*0n*m5^1s7`FhxSlgRx;mI7c)$)UsZprlzaMG;=0q|clUCmLBz|X zSwk6p_JNV+;_le($eP_-?#Pz77us@OQY)p-8f~3m?UR{tEO&0*I_2Z`e0aww_g&cW z9zE#Ob~eAul}3irURJiXLfBMdV6X@TYt?$*YN7}mm0Pn23<KA6=(^(Bac<=neOLL> zY`&K!=>0n#{CP|$sVKN2{MXt1Wmz-<Yl#QSY>jYchr0o*+sDxx%sOT;$*g3bKoy7} z28o+V5xxP$K}h!YMT!&~4z7mRXfd}gQ@@7u*YgwxoKwFE*Q%-Guqg;MBm!o^1t3T_ z!{K-a$}#)cx5>kgZY4l7Z*&`5oA`vhM)-q4;gH2)o0FZNKPX5)xTb18SBo%BwyAiU zY+Ow}H#=b5xjDObw4|_c%zh#CEO+g@5OpWu=8B7+oJXl<g*NpgZs30La8q$Ead}yG zbr#o(hn$5iA_$6WwJ?7BeR-GGJ>7Ng_i6fCneD58aNY(<7OWSYf>l<%KpIk;gjPM+ z26b#aShBA<A&<nBg>~Lt>3KJ7%zH?dz}tC+?27PP)TWDoML=b!MSR<7O~iR({+pk* zq|EHZgGs&ZMToyjpDi@_>fVNJG4g27+Pr3xuOJZdI%Bsb<!dOJYe2m7%cCHb_?zze z;=uzK7ube}bB0C?8t)LKu*pF*6uN;M|8WsEVXQi2r8EYvzqoa|=*-H@Rmsj4Fi_mE zX~SRmRluJtK>vkb1^nwND&S8SpcxqceG3Zs|NFru;4cm?8R%G;|HPuit4Ktx{d3<9 zwVEG3tMyQ+o;);nCDRYLv69tkN2GPr+Wk!Dic>T+*2pFlNG&Sx4%dtEmuHjv!zOcU zi-&4}S8znH_j}(nc;M#R;bpb^!{K?_L`q62n@wby%9hvkMA4o2gE$3eom$D^<ya}$ z*2YK3&xYdPn-*8HhnE-T6DGb>q$RXvQ5R1(ZBEBpZ?94Y9t*#o+c(Z}ozvcmHcB*x zw3~*ktsu6B9=EJ76py9e_D<X=+xu+RhQQ;IM_sx$J-ggpnh4KQKjwe30CA-<Z?alM zBxbv<SK=yHl?{9HxWY$xM~5q=O6#8+j2}0Elh=4zZh1dh9lcI}@+0xS-L+Z6&E)x8 z!@<4Xo_3(ZfLdT+Ui_-Sx<gdpPiM@1FbR){Kc@%F2h<nsy+mys9X4H{*ss#!)URF8 zV_oa>mT6lU5HFP4-%h<9y-nsNdcWT3ynR+6$~@sod-GT~D$q6zj=n|5>o&6|jrpQE zO?)7sHa|Y4d@viU8Tbu^N#HG?a<yF_IvSofZ|KHEiA^oYn_dh#7J#geceKR3g)pEx ziE+=51jYW!iuJa39x~B~yC_ju4u3nc5(hTsZjN=EXHPC?Zg{?2wv-<FZhiOSxOx?t zh339spU3{gquoPU4rCD%#B)DUsbfe(;fq#3$Ikp%%Mv7;H@@#3!&3p5=jj-Fk(3ey zhXO_{w5#eQZX!3Gn1eUAu_jUaJilFZ&C(SakuYSg@CjvWkV7eQdm~CBa&?mg490r* zCa{`M@JJgZtacZM?By|yWPNV3Rs_1Hj42ei%Jc29Qxo?$d-=A#S~zCnXm3_k{D7cS z8I|yWhLPBL(wKg{X9?B8u)Uh(_0kxB?a~<GI+jt26hV8HBbhj}Yv?gPzK^JV{9D(? zG-R+9a6G{t<d+YDJ?C-@_YxBk6fp6wyvd1j-8m+x!(^{(fv>M$6hnC7sDg)m6(E#! zRa-`*dWD%J;dzKP2o=^*gA3KQYt)+FCd(E3#Or614%e?fo!leZ<*0n<B7H-v)B>&u z3qoK)4I9ome<Sx}0V|2-X@SB9V)ZezC5_p_H=qXR&Z^y32xZpi{0-H@9_g3p2Ml`_ z*&0d@-`0d)Cv>6F{me?Q$jR-eKJ;Jg(NhjIkL&OL9iy2dPjquG&GW3xP1C7B+LytZ z^@U6eWa&invNATsv{Dk+v^p#@44V#l3_jn&1WI4CF7W|EPvo!mBe!rUk>gN1yv^O( zd9G)C7}uJ4%*D12k?4JTExw<w3K6mWH>FLuY>Z6PpgDZ8ZGvXsg=unYh9_m!n{!_l z$zyEk;zLXp@F^ff-Frj^>0-O?5uY@72>`*z;{*L@6SM+}EZVoG$K*EA80EIU0}Cgj zFzbPjFhd#ijXm;e_`gf3{4xEfu*EjB5AiShB5I>;DPTsW4W!q9jDhqV*3M@}7-1kp z-}^-!nycX_mr}vdq<$%(1<&FaP}ysBd_N-795w7%`;<lzN?OUCvxHhQ3EN9E9&60j zOrhFXo!$(i%(M84xqZT6-`wq1OJlI11OK7VY@?aN>b5?9n7b3KAj^h{%J9k=@>V~} zaM|n}hpX7>3FYEr!8=T#24`D?E1HsR9;q=L>ppE7hy>Spx-(w8ZU$L$mjJ1tOiZi( zt)NB<$vgJCTqrriY3o>jNCI4#*{RZe&)zT1sz+*qZ7xij{g5KT=t#Sj_$?vgocSjV zhGy}(vmae5VqsH7JF8c$%<`6*9qMb1z>i;P+CIy$C56Yvx4^&+R2A;SOW0&2Gy;hA z<-jQ@-%<R2ITSXT`HETX&4C#BJZV98!@$P4#)}%HEY{~nv#$i#w&p;{MQxm?7{eHD z3V3E7A;->;$;Y@9{$PksnZYz??N>H*6l<Ffh}wk9W68HHkFYZ#Y!_0)8%}?qSQOYf zaw0Mz&5)U}_2+@Q&?~*Fw)N7tE-8zT+wc7*dk!m$O+XBiY{mL5()yc_H30=8h^Wsx z1prP!iPOL+YrKQOAnZ6_<65C!sVQ6Vcd3@-CcZ)&e%E(JD&+-%yFrx>2HeBnsrAW6 z+VstBd<#?q%I0WsOA{~;A(Ow%5_4&s#!Mr}Kx>}jjALXGP<d8Mv1VV^sZ>_trf~~b z;gg2Q8Y}hP)w#PhH6*$>)g`u}bH{db-YXiuX@9$~cjEn}NA2tCK<z7p5Ky!*(eSMk zZK9?-+k$C`p2~ES-r9w!{pR$>y7t7>=+~(!b<YP<#1ZJY_tSWPW1iE2=&z_Co2sPD ztZepSJe*Q~<Hhb1VX`D+hs5?_6mg=ZGb+xpxazn|tb+S+3HH<y2PJBxg=mbMoR;JK zT#nzj->6`;F^xU4@{hEkHR8PoOe4=NlYNSvjX39oQy#@=r$g>JHsQ0HZgBy(Z*+}3 z=lfSL6pYWRgt%SiK?3dK+I!5&JjvjlJN2HroINwuS)9q?<zw&!AlGVXXh&T3f#WM= zkx6bkBXoW!6=6`y0(U`7Bx>N6#8QUpKpVh%N10qq1Jb)-Jr=nJhO6#{H=ai+ku{4K zMnCY2psF(x%%oePvS*n0EWC2X@FpPc1IUbPhNgzOy2v1uj|{UDmmw_?431BDxu;Ti z8Q_^jD{GEsxW?~sXznM*sqYJO5~GorI~DgcdbG^#=DmApHqK>^tQ_1e8>6DM1YLW) z>Zm^~4R>vj%q8E#DM`5_BEhsjv4Dgi-DCgC&HbC{Bj8`*1;C%e3k;0^ft&k};DtYO zbN~GY?k{)+dN#H{GH~H4Bi2}Kh#hB?ugjRcIG1Dec4&rlL43KuAm1Ep4JqvKC2$+g z_wS0(YSTKF8DNLYD+8h$YMzZdTpzTRYt^sNIzw`huSH<2qzw2A^!FqiIyKr`&9xfL z#CR1i4y#=scIwJIn_y-jOL}^ZYy1kT@joqY8amZiN#}VIDHo1kF(H+<812A&=QUm( zOV8~|0)p{9z{&=fJkYE)5>3m_K&h=uqw<I6*-ow!S6Lc6H;GRUy3TlZBon8IJq><? zcAqr`D?A4SzzE9|bSk}RHY<L(dWng|VoH}|=KQ?SYyhz;E1h$$(P&qr)kML;$wVW@ zWQO)}aj(i|jUUwNT)g7(dOn)t065wLO;k!IOk)WD5TjIPXr4vehRw8P*_Il*e6QE4 zwA}0FI9l7w`LOfYQf>+wIvDj8iIRYdT;Z{{+17A!7}Jh!osmELyq6;@8!W=lkZIb& zoy>OT*1}sogIlefE-YIMdVAYDkxT@a4h8mAzrs5Bi9_UWP>>E@cTPD2P)+PAE^N27 zG@=ruP}EkUyijd7afJv6M~1xRB_6WKv&*<Y<}l5bEef~9h-2Be%*j}>Y@Y)s(0>Y& zpWIV1FvuGR(#Bim2me+m>NNhUkUXg(e3H-F8_e0r2K)?urZBZo)cdhxD4eZ>Z&mz^ zPvPL@UD4I9UCFtW5a@%OL<wr<s#-~yKMov5&5P<6T*gYSe|ksFU__hh_a!I@X2@@p zAo5L)7x~#SHxgJnN`IdW4C>oi{*XwZ)6vf!OM=+PVU66mOTyB3O+hebx-t^s{NE~q z^+~{2Q~1nk-r%IyycrLJ=u(Yrz>r8dVDho83Gh#14+!G(e4m54L9g7GO{^*+;R#g; zLDUN;0o%4pP$AOrwUE+7Kwn^N()tn?v?o$B6A$?vVykxtgM(Qx(mzS`Zl+1v&02h6 z0rsKwOIf|YV`sUEJ5uZo(r6(gi?&T6=^=tjCB-A*g^Be!t2OmI*bI)CnEMZLo~DQT z+0wHR5(Up?$KW$A9j_uXfj@tvaX9*ZQ$4m`OmhWJc-w?r6%a9G!SW_mwav2IA|i{w ze$_=~*j}cPZ{CUhgq6(j*n<_$u+oN4RCHv-unH5OO*D8ocqp>+_ywRQkY0l+FaY){ zfO{f430pk@9Mhi+QJhfVsyW0aBvvw12rA<l8SkcrRZIwuijP&42&%@*(Ei>`^9z6? z(@4f=M$%0!2l$0ZzRg}5pR~@c!a)zCf&C`h&>M@0lpxPXzE$LX{;>Uo8CfG~uC$Ju ze)QRDEIP_7$*FN}idX3<b00ikN6PFdkZtKIAa!v!)@d)OR~(>L>OCV;8y=s;**VdG zR=lHT_Lu8;Pn_k1d20GTAm=m?fK>CKVd;Wg=$R@$b@FvYH2G2ErCQ1F$&chw10Jz> zhf`xR?j(q^;edmbkaZHA;#ot4iAw9-&u?5wlv<p59-RGZC_=m`!I9g8RBsvFat^Pm zj0VoBv_}_H7_OgxExUg}`|u2Tu&afj78=bLLIwb$ICMdw4$pyEVV~3cnJLX*&~tS3 zu;(=Q*~BD!<lz@kMSrrbH_v7AU8|4y70dAHIXzAMU<`BMndNiidsW6Et9N^$l(3i$ zRM`wt7P}jh#ABz;lnNl4;u@<3C96Jl&_^H8XB+~y>^7KMJBEfq7&K5aAd5gZOoL!U z`JEh>%7ypNqg$?P)#aB+4Fo3b5JlR;Q`iPxJ<06#wVs1)D7nlkueeD5m?Q65r7tIq zGb5y*SxGQF!3B*JK~-^EE*D)G6FNA9ZYUiGY$J*kog+G{3D;Z-oKW5}X54@<eyAGc zQ9R@~PB^F4jPD4U+Tr`bo=2!7)dWEkapOBF&O{n6L^m_S4pJ(2vIkZ%-kz_XZc+i^ z7moMD(|#hQowy38ra9FO7{le+h)6Wqc>GLA^1HoZ#E63J8-<q2hv_{LK9T$E$)z)K z_>+9#m~q0V`ySb#X^h{Mawtllf$T#D_duva;^P@R035KUKakn$t?8Bnm_q`3nMj4q zGL9p8gpXXGCNn9YX5(306YNcaC1GF6T?%+5P0sRXY?7Jp+IMoCi6mTzPIhRXzsbT~ z=V0H2HceEAbuUlAN!rCl&s_heqRV;A-?)3?+OkbTKUL_zi5tVJ6(X0bKdu7{r=ON4 z!R!bRh-2x;=e<-o7!{=*00#QL6bOT7CXjE^ZrcITI&DbqGM8>=itCWgn$@TfLAjEG zZ4h84gruxw37@Yrg0UK7m-Q=a5<VoTQZzFL$^uPA4F}WFHIRq%)Y|mQdT>*>t>sA; zw(l$~4ZO==7s&q%*&`s5ZBUmrSq}Pup0p@hE><`+o`AID%^rx6gJfAY4H=T>WLL8| zN8pwaE4mPYVm4<Oa=kh@$5$m3(;Dy9QDD|ikP9Pey-Vq|Wy6>PblNqBc0-#YgWXvq zs+#nUjqC1_t+3e!sYlD(xiqtFlU0n6G9P_Uc#v}fH^Z5=)`e9G-J12u3+1}1*;n~M zbb))@=jzlZjf+My1H8O(qcKTD3@6N&e%LEE-DtdB6q4Cl+7v2|54p=~mU2MlOb5uN zj;HaRaHUuC<P>^{RRd23b*>172Cpf|0sQL=s6m*?@vp4czllBp{uO-!{3-gx!1Nzj zum1>r`kxS_{RIcbK+g>LGan`qwI+<*d8TqLiiy8*HMCHJLoA9GEaHnWh#Oy1pTZlv z7sF83^l_#^8!Hux2?rb1suopQT6H#awOH1K=UGtpV2#?A{uAuWR8PRj{)c7*clqY0 zE%d@iNN_3p2A+zIcl+Few>0GfMS;(eS3&8+T`5b6+85YQ<}xO&=^p>_*N;*XZGm>e zhxS+bulG(fgQGJS9>q$9g^jJXx1f!_kHh!t3NwYGGlRKS>{i9EDzlEzjEb*^3$wBM zKD@P|QSyPd>35HhyVE}RfFg@pg)&8qxt<!9-=zz-u_d@oWgDkjJ8sAJ_)DgI3@o{O zd40OIEXKC?5+653cvxEluP#hm^I6<X6=J~UcNJB`(M@=uWmEYiDyu<q^ro-!-mj1A z-(>BZxWa-Bkk(!-sUhI=5@P!&IHrzNqTpQf&aCowuDn3y{K)y|Ba3+OKDi%qp5c33 zi<SA5xY-;x%~To|dx7CWZ(gLFsCH39hD5f2xmh&AMJ(X(Q2>@*zDU5P2RhJ9y!(_% z_F&+R?DS994GvI{uEu3ZaJiTw7T<Hhf<u(3Lh6f!zJH?Sa-}dM%vSQav;(a~gV=(- zz^n;d!r*r4lHil>!YJp4WDXpnVa~Yf;b?KS#XGX2BuQYpxXQG08=*V3(^2<&Ej6pt zz-9jeL+PGS+3faK(Vg`kh-*)CD>LY2hSqWqdjc|z{!PVxr#f8zLLwPX2qvo&y+y6h zaQjR`sYTnVOS0}%p=N2FgB&4|Jf022N{8x5l^v{ni&hIicR4ROyy=Y(rqE%-K&op1 zlm_dhyQaF@1sQXrHcOgH58J20M4Os&x2P?H6^}hfnyLomemhZ5zxl&VVU>kn@%kBz za^j&LSWGMp4CVvIj4@#Nn}FVFTmeoSlF=v*Q#g%5YQ1U+52saB)3&H;)$~0S_Q#SD zfYS&TT8llkSW+z^X$O(P!V4-=FxT%L6(F2R0??)0g;Dl{TczpsC7ykT1^^`4lWfsB zoLkXWp@<>os|2(AX>>^&fEmp0lsb7fi_MlN==Rf@m&<}wVY4Vwe@^gk^Eaomg5>VQ zjY{uL&)JYh9^}q#z0bBImHLg)VwzVL!tV~3)EVY`I9)Dh7iI*`%=#(M`Q<T7>e@z~ z9<@=M%(ln@Ed&)6E|hNKV)We6A~f5|!uBMpW(B;EcQpY`c#e{A;b9ZgcMqybMBbQ> zju_%oB;DU`+j1Njl1HagShb;J1NhL&>s1usi$JAYz+iN;?AaBda2>3Ze>4MGPjy*O zr9ELKD=K(ywuk?QvjYy<IU_`#)S~qwe*r<}dLcz-SxyuE&Iuz5aOrsV-Df5az85E^ zN}8lVZu9}cr&E0Zs(!uO1EtMhJ^1|KgE1IEyea{?&z3h{^tQ@m`MQwadU_r=XKt@* zhu&lCA?8M0#)N2T=}EOXjlAYzZUyi8jQDoNfE^c@3<TeI0lU6(Gaw6GKlizgAwvA@ z=!1c)%~K7xfV<d|eF1@)ko+O(*tOb`BZH|1$+cK`tqaIv?(LhJ!PU+!N5YkZ$5a0Z z@nu>iUc)W~M{K*~?`pD)DWWbJs1QFeE3Esaekz|@ieP97N#eFV6;S|%95HdQ1MGQV zyNu7bIp-jn&U*Z=2Mf;#`+o1ZHb+&o;dDE{w4u16$G5T1<o*<%#4CfmR|{`uW?Fhq zx_W2D`2h--`?=>8Rl(g;@cVg@%=8CT<?*AV0WstK&$*h>QuLA6Dp#s>b}VP6uE+aX zQR84^2eg@$ZUgrj4Wg7okqUy$*+zY0EVp;Rgr85lNy_Hg6l3~~FivO@Rp=w-xs=7E zj4885LC+__o|vzI??mNdwHvSryKg_c>!7ND2f;L}7ejNhwiHFWsarJ@yh~U~HC~Q| zuc(BT*Wav+vYqtP6B5{Cow{<ySgqACjhleq%EP>Ta?zyf5^KxJgeicbvg8?4abXbC z{XJ~MP$|y8V=(H;c;J{$Er35l9mEj>jwOci@`3JObJ#~_R#DGGaCMqx6oHTtf1bsE zFVfbCHwX2wDqJ<=nLb*SgGYPSv_pe5F;rFzb2fx+q<(y$W00kKL`FYkNnX5!wmO`* zE<B-|W8yM$Avq!P1;0v9A8J44k>5O2V>lW17u6Ik945V;o^aC<g-&?rjJ}Q$sSv$0 zFk4E#A_~)~oqm{2Li01YcWtSk4C`DQnY;^wvn~Pm&NW*Xr{2uE!4Qt3D<AHHMj{n_ z_3UDMDrikc+lM1w!9JYxV?NYZZ(bxX7t`NAYXya6hd;!IVcl}ab|!T?w;PigyW8_G z&)k1fi~*n>O;U<trNp%h9#mT~yhZTnuzpClv)KB<(9Pe^1Zi+95(w=KHlZsKMEIyY z5AN%U3=>G;$Sda498*m;h}wz$&P}1WiSIT4jm)IA16<wBb-;RA^VNqwF&CQq>O;1g z0yYx@2B-{wrz&^bV2gi{mvGk-Gmpw$Wtx%l$kAC1EQpwgLdC&?pWAOz1gf{Vzr!~i zdf=DqKyM}^P$!I{xquc50-L-+Jnx4F_XBLhZZN}3sYkHEG3zh(=A|6g-=WmxcIY{; zouhwfTO`sL_0U@CF}^M%ZgrDQz|B<)peu+Vb9(dvS9f<PehE%M;0FI@G4H>ODe(A? zCP;>+YlHPdZN*e|<E&~5aO42jnoY5d$|#$cddqQ`unJp#md%hg!#_h%*l${g|3`TO z-8*cM=2KiyGstd^W-8?DRJM^pR2>iBd04c_H{ByckroPME3!(ctT4B$x>#%tusOSQ z{YuNK-ebfoKrQS)!mIeuF{+p8Va}Pp^9KwBlM4vFegREfRT2J`Rs1)}RW`bRv5IW; ze`*z(|9z{-M)&`%RfPM$U9<b&ZXDU@|H3%3vi;GLSiH(wWV$HwLg%B(K2f<Q(@2Kf zozoJL#bTzlnF{6wDER0=DfB4VLK1DtRt8Gax7JmQsbaiVpW*Rf6eKd~&eo1ruOv(h z>n0U9Sv1mqyf4vFz_6uSYB6kW|2l4ErA|~zi3khSgzA&Z(pPiM;h5{+F4yfX?1Y}U z_(=GX@Okl7U6T+IhCkv8_ceTrKOw2!&xbzKsHba{KC6HAz@y{U?)gSZ?d9Q-P{0S@ z*AB~1g^=5C*^5sxUed9utu~iZ7S8>HPdym`9Xd>vHRhM;WTgo%cJE04A@_}iM)G?M z89mFI>N8r%L>VfBvTY9!*1*1~dhi(|GQnF`$&t=T-M37mZX_~G!e)WB&$p|>BbySE zaD-b9Le<BzCy(^5UpqKxM?4`GA<bxNkHBB#@%cc;Am*k5l-ck>d!1#ktt40Ct3k@w z2-+w^@rYXA?a+Wl%_tJO+?u?Q_ctelAPSZuyf6(jOI%RB_BZ9UWiCb>rPgFN8ZAWj zO!&^FI8=$XDP`6czpgH(R9K)#IY;c?FR*Ut7w+`;L#E0K??#$PsBtFh%SaVcvbNgY ztx^?SmR{3{gWKZ}0Gx9K)sNX%?mVP2?^2<AKeM!@Hm1jJGS~w$_PX6G@OJK&9FC;T z$C=O{ZTB?Sm+@=K!JU{=eM9DFZqARocU`fiQK+k)V8s@0y8KJ*^mpL6A8+7A2I0)Q zzh(t!K<;XfT%wHE?8jqBrXaU_89%x=1@)qfjM(>36KfoZqy{3OhTpKDBX5eHVX6dt zz<SqZp)q;xB?DyTG=@dE?ulXpjzBUitOEB0ISN{T9hY^iz>|RuzVLVd7IKT>vnwoA zzeBOC4mo7HzmInP&Um$tNem7~yoxu{%As$raRJXzJB$75KE*}nJ!)`@9?#p%L=#)8 zNZK_F7%}d&tGG!^0z;b|KuUPV`i{!G?(8WNz*t)~wMGIC`a5KeyfGC)F}zVC1*iuY zQa#&?)sftP+(Occ*Y|Mq=n}@{d7NZf>irg}1sH7;hBK$_Qe!)iFx!xLvqJ`TqsGN! z({ie7!tIwnna0I0ar{y8J^@M}|Akt*DP^rBj;b-ivSKbA;kk#_CEG#wFy|Fn>a;?v zvpax12b>0T$x4MUB>p3I-+TX&R@YcS`tJwE9_n$N2`c|x8wN6c`Ys?2xTUb-XGSNE z32{3Qg1|UMng+H}gpWp~^l7l5#-gH<-1<`g(M(=00puTs<$HPg(=4oA93ZKysd6h1 zpz1g|L4fNqqNQhW6Jpb<(W1v|?kheDzc^Qu(oXsfCid7F2U<~MV*%URbg#>qlDDDC zFa1>W(s2O5Ip4W;qXDx62^ydnb?6$KpTvi`MslJj*F2HH7RXUg(eN1vVm5JX6U;v~ zUzu3Uwd1W=lnwCq=f`JRW-!86^b)$<S2S<MjHiY<sJn%q@YUW#sOM^4A;_`j79yky zV_R5N-QbHP8BNmJ=E#13K@z!zC1-w1O1>GBgG5a?QP8M_T;R(*W&4gepyQAn^JDn+ zDUQIl>;r(<YY75`)qqR{04dvxiCnzCZ!gNnI4r>OC`ep6a&9fc_KVSY)p6~>fa2%J zoG#E-kc$SJpnF}HEzpCEjGE22WSkkBFT*v}yVQ!R&F4B+r$03xRoXdGx$(4`F$LJa zPcA4Z_n$loH%aTysjvrfgoCiwO^iid8R?JR^&Gj0un`+X7Z}bqz?n=YKxX}#p>k$+ ziPoCroO%jxp&)VzMshm+6&FvK3JpW?5gn!c$Olm1VbQ1cvU)-mA5;7_<mOL=Vgba6 zyVi>0PtEA6qB54R27t;>IB*^ilXfSb85fgenYVy?4Enjp$s$lu7r=(G+^H)F<wnmY z@0qP;0m)p0Dxa^VEvrrE`E#@F$5<e%4*-gd3Mkc2*-Z1aFC%s8qkL0`)PgjNKjmVu zsPm=2(hG>?eHa$zGtebJzByY=YPgty<tpT1e}H^<u9{qG9X;Mj^tX^wIkdTtI?;hC zN-2$zWcz08X=GisDz7)oa>*IdWAsVoje)Z2EMs#9qMj{Ub`LV<)MSPw#>}nI`OlOk zla&O&?2wC6?}j(kEJ1-^i6$?Db*l{!ZC-2=v2KGF--3KaM5sJ56<!q4k3Yhv7bSDS zUEDd-a_kRLi>nzI7SNMj(81;;;aF($P?^V9XqeY7VR7@P%@yNl=@1{Bj>g2WVv7$C z=Ykk+QE-pmUxpdc*dp5R$l087?s|U2-oGFofk-#g*2siSrjIW#s=pPahogag1H2cJ z@0-IKgj;=XCVy#uoh?7!FSLJNb3cE@>yN3Ke!6AUsS7fiEk27=v6{>>I<9Q<NfPE; z?MJL2i;X3aCXK~$^AIEuidw~24Q49%)JQ3_2bpk0S+nnryL>~WnELQ21ulVuIbF5G zjh4X}tn$<cC2@<@aA%fy(KqJWsJ#_CqWMvG^Gj17^Cku}$e|4Pi>_f$(XQ4#B}l5E z#agx56c|ZBb=XpwrK8dnk*{{&wLd+6D{h{{6}-++V1sK^N;Ljax_)zi-bwqgtOwwr z#qJQ)wi`e=nt~qRfVmDxo^%h!_z=ojR#Sjv9F1G^pIPKz)RtwXxvDrj!>F^Qz&1`W z60?_#RlpRA54uuvc@-S^YObCm1KCt^79Wtt^(>cGP`P-@&BdLF2*xN0RTJnkcwUvb z==A&5i9zhn`20~&edG7*lx|=D5JR7&E&5)X7#DwA-ESQ$RSu=0T=~Mw_eL{Rkp@DJ zRiqLzmA}6UBBm6194CcuM5gjGAJdINO{FnUlTx-6;g?hLm7N=IMe8$0W?t}~9~O1r zYbEXmaWBjF>`?AYE0UMqH}^}`c|yq}vYl@H=G)ymTBq06_Cg#R@w!B#;|>Mw6hkV~ zR<#XLA7V8BO>WO?6|+yHWNX1mGt_p^Zp#C<>j*4t$e++j^236OIY*>CVyZ0pCk$df zTzk7@`QVs5BvLao3gPOa&`5|(AC7KkMTy&~!%PrwH@%^sF}#OK!mQ1%*aO4Idj47Q zlE3wdtA$yHGq(`RCrE;C#xqI*zp7{j?$z#pyxP|kxlK6jcX%eRdJzY^)ewfWX_6k4 zE*a|~apB-p&gf@60vW2<B}sKM(Ca|0w?}NWWojhcYwb$C!t*0Ol`UEge;Y{Z5HH6w zQ*Kib%~=(!NJd>TcA^?q?zbu3b+HRKqjd@tyiLb|dt;!ltFA%zFmiA4xW_s@F4VUx ze~KP#(nM%}s7}`-v<>x8E{FWRvzHKezn4;=&UQwM%T_$mpeqh0j4jJ3U&~9wwN;it zsF^gHg+e}tY5wZg9q{vNGb6z1@l6Edi#HYwNau<sUQ}(_MoA&2s?^L}CMY4h2yNNn zz>$$h3e+5!K~;Vuvr%ayHa}y$G8N@C@#;yDc7qACfSE-$hYy}>;*K@BK|#NudVeW( zekWW!g-tKgR85Hvft6uhoh+5$de>$+@Flcf$d>a>tSOq;_fUt1X{rDS>n`GicD+b2 z@LO1}aTSeXKWw1#2W>O6tZU2BYBUiG#1Ddmg77GT2LRT!E4drzwC!|_p<@|D)@}(Z z?zMZOA*E|BMkWt<#jbAyFko!ozfH#tTC8LwdeYR4Uc3>QMVHdo*DypB314WN3OZa+ z_mdj<NLJPytSm68zLG!_NS;Oq=`Y3>Himz5Z24ETiS7RcZDRY!f&t?{=K)5xe<Dt7 z|3sYF{snRR5B?j%#`v%3jTAkAhK+`m9>B&-BVej$t7ztEX+-n)am4Cx{roAA!$eR2 z_j}ElSefwuws`x$2Xff{0=W9`s)msT|8IYFp=V|Ndr^N-%wJGgQuNF;Y&1;FbO8GQ zr5HtfJ!=O&14lC(>pw1sfsG!Yk%=DvZ&Mp1GvlAs^OtlM{og1l06ohezXoPHd`3FP ze|!{rra#gBOFHZSSeNDRE&mP7`kVY8$o@xg*8jXI{4Y=~MtY_{y7x0)Wh`<{7;V7v z0X3jJluxkk+1S~+31_+5A3&{(HbS+Gys+y-XcTkmTy=|J0D9NP_Oz)VB45U3U`kM{ zTJ;7v%6v1Y_qZXI6Q*9Q8>h8L-5x@aEA8!-F=$wx)Yg0`QGa}=m;I>C=y*ODEN=5c zd*(ybowP?Q9_W)4@ojo$ZDgu7IxZrWsy4RcO1oQ+K3Y{msN=bBv#`m03Gs3&(C3k5 zZ8KM^Ix}LM&tRSM%+s*J{ZW#2*46HYZ0MEmeQ`<o(%4b)_!AbyO`^k_dUHaX*4VLi z$0HSAMelfTnOtgNeLG+FqHM+eF_da*Kb2xF;b&^beo9u%jEI4Mp63_h9if`abB${_ zo+P@Y@|!OdvIW&8?VuOn-oLb|t#DQOBKx_McC)`0OHx#lV3H8wphhcmUpVngC1D@V zRl=<V?<`eY-)bn(yzB9>B<sZfWP%7#D&HsEnc%;Q>+T+TzdaGLvE8^!nLIt^_wHH` zHSSuEZFv<A^jtDHQI?P!r?17*SIDt$rMP89xyrquzrYFm&KbaSG>8C~ZXNM6)Xqd4 zY}G>puHGhx6?daW<Dt}IVFdjueGd(whWm78uU2Azm4a=P&@oYK@#d}+k;mY40OnX` z9TaXpHmHJk4zd1AsK~Ij=`0BD-4L#ilmJ_$q_NId{ay4ak^yThbtC3%hW@3WK4w!s zKPaLDT7Cte4-c`6{<!4ZMt3LOc$6G#%vdAOJ)FqN-W#hD8}{Qu6;2ldYtTmJ+Ftci zmYc3xja|{nZ~r;E;7AURB@UGN>6Np^i%>dNc6EMqjILm!NPMHAWUQF6Q_aSdW~*gI z^OXxd=ba#AU)3i_{TvsZNz<$O)yP<({XG!wN)KlTn~PW|O7H$VGW=F$Mp=2}!f%HF ze*FM?f|o3wQsqu`d>hIrNb};<JzLOj@AO}zgt>rpWb73n*2Z@-nPi-!mh6;f%6e&u zkLk1^InkESFcaGuQ2WY~wNepRmD8uwxtu^F45M#7?LS;HW5BYJihLB<YXj_tgD=Ej zq9&ISH7Oe|QwJq%)t_YVye0NrIE6;GdKgnHd$Z2aynUpjc&>#`kQ`k&UY^OXMV_~` z{9Q>x*mX4<Y1T*rkwbMLDZLs)oP4SGh_9t+9Nna2Zybo()C6C?xBmLsf0@LR@@!4( z?ZLrND61A`DgM9<mfL`WVHwZaYs`kPlq|M;lxH$0Da{*OvUE}Ht$0=DvDq{o(fab- z2|0k#b~vqpN04{JhiL6fpJ_X3b@Hv%_6Y672j-M<7*tOVnTM|(VM$fIeba@bfjl5L z?ezN+1!>_)z9is`!6M^T;VI$T1ngGe9+-w>`|Csv3#3a_fPo+^<dC}A;YYYA3)Y4p zYQgkVf&+?2rf=pB`tIn)^P<CI(kTQ5z=C#OYU$#ltQqtf-`<X7sM+7DM#IHJ<R|V8 zUqNc<<kg}h*sr`=W-m@;R&7SlOuog#bC4V<arx6?oEK8XW+RAR+!5AMCcAvYAR{WB z4o#Y}PKcaH3IO%NU^DiVRir<73XmMB@1^!eVh3fZu02KmyK^5c9+$0b{?=aYHO%=} ziXp;*m7}CM`yCTmgdHJajn@UMqL6(xnA&3byp@qdrj0-JF9c*YwE#YqkpOOdOx#hC z_C4VEDI!q*GV@Lm8D^SUqLgqx>AT!!S^vlbZ-}YQP-~2gO59VuJV-a1vHa}6{g^?P zpW|Zm109OEU#Ml<Z_)+eBDuq_Z^Q4VMJE+$hmJGhU+nQA4RE4hY8f=s)toKu9ltis z(fD#}4QCkkx#u{suRYfPsdaVc0l@jcsC&mC*|)XZvuxY8ZQHhOdzEe5wr$(CR@rvd zD%?1I`gY%V&yKh|cEs(D_e*}vCu8RPXZ*&TImQ^Y`CUbfs<etQ7eTAqN5d)8wNSw; z{*pkE8wn|kFETJOJf{@m^PHLL!~&h|8Mv{&GomzS@+$HI$67zsF^H|yInT~*8{&0M z>SveW>{?aJ=3VCm&KdPA8B02P+}<;wNkiWJ=NL=^RWQ|Y(1fG!=c6Wl_@0IAhZ|?? z{Rl`r{TB<QxY)%h2@a%K>^{be>6EZfM>3PLvz1`~$3-btkH<(x8{)IZB-tuG2|Y}L zPysOIedE#8;1uNU9R42W!=$=qRk)ctY8b_W>yk5>-;^$)%kit)=LFG1hH`v|YP|hg zIhy(4`dr@H$l9?2lCiJAZGW*maG5DmPgO)I$|s2eR1UZnfaqqLk1$YsS!%>*XrNMM z*T=4##2)I}#Dm+ICuvv9@L6^zusLqTR=89AFfCI*@pWU7#7Sn$ANfkWQ9Vdf>WD#e zN~-WH!fd%c>nz2DtKyqWr%7$1cd*)tcmmQ#E><DJnR9&1OMzo^D{^sz)BR%A@i7R{ zjB5Zw6DA{fBs7{1sVy(KmT@LK&T|_)wd1$?MrcoNL;F+aZE;cZm?D;{J;srTj6dL7 zo9ljey)qae2*^tLTl#9o%QqUg&)f{JneSK(1`V?tO(oZgA=DS^8swPTqwRMj)5Hni zBsGhI7dqFy_uh+;gy+G&C;*fs2cVTOQHmw5VFid6#FX;dHOmuSAA=vDx=_~X)DSLm z^`&S+wrMMC#`mX>vz{&UmO~aQy|ggEkhgDjPZGY{3A6G@xR`2Rz3aW}cPRC&Jr%T4 z{7W#66AW!iXYDHq?&N9jLESY7whtRU;+F6SjlG<T^<)?g$=R(X4HQy{By{3bBUf^! zRD-2mxU4Cus$CHl8UaYLyZgv<chAj9*If<dx=sW(<RAFWWfGZxA`kamD#{i3s_3$; zEcb27MP*AZoUo?XDVD9f>hU1dL6Wp$wUpIL-hjEsfczmWC75(y-4-(U0q^W-DL^?S z2v(wo$^6fha<$*ZSPWqH(=C3t#Wtw(UIWpw$jHpAH68?Jw8|!_Moc?!7qFgtq^D$w z;YsA%RzenUe~f-N6$9g^A+d^;e2L)LLRYYe+*mLXdH{KyUJ-CBK8mCXP#P}x)_6aQ zu}F%;$vx|-=1q(MjH>a(rSQiTXhoI#69Y(RxUp7lBY(J@XU9U)%2rpq*Vv5K*i?g` z(^BRv%sQxZThfx*o@oXI@5Mxw`4r>4dyP%u*(ngpUl<*gu_&uG>?x{rpDKDL2<qfW z&o@SLYlCr^jCbk`a<`<!CKn_zq`=0#=Ex?{ZrQF?LZ6uQLN-2WI*%vXC;!=wi!cs4 zZHVErzx{-DMGifGt;(7xjJg<wdWuFh?Ar%x;m&_djHN~ibpE2Ys<<W<zxLI?#!oq% zwbX?y&s=wDyVq296YiBzMDA9SZ9&YBqh+Uq0gm~;O`vivAm9FFp}we~cnoZoB~GR( zUTRz@GcwshU_`=P5E^hIVwr{qn2*TDU2P#hMVUUh2we${(3~IX%*@E*8mgrN+xn!0 znHPugOWZi3x0G2Z<^uBU-D-c*bEnfZ$RPb`LraYjwtw6BR6?DDoyGOO1)b0kPQzIi zuS;-fhrmRw4z35LnF!~G$LRPxMe#_}b*mvw=g1E^(nH#^o>I|M2Odp)0OVP8|I_G? z#zZbOY6E?Uhf}%lAA(>!sq6C5n_`#eSxOqdCmmfG#K|2=GQ05{?0i>E?t+?McrIkX zz6U>jz**CIME$`L)M`S=S6WpfBzdn&>XNI(uh&^Q3-=oEHUvDjukQORjY|wLAh+Hj zae{%Bt{3SzoXN;SLdW2RY&;|;+P@$^Uaw|rmso@xHYayTUOdg*&BmEy!1&Teto2~> z%BDqcFMjh3cxJKUVbFcv$Xay<1P?yx<(wqtS_DQ!fCC)M=nRpkhJb_E@58W7dWILE ztrOj(fm|U@M%%rBxv)2W%$n1&F5wuZHF=KrphSG=09rk&-nZH;roI^N;MdBCHET5e z=w>uxk!xN`M$722npe)Kx-2;uwvCF(zI&rx)qM~PZ=zxLy7Y3h*+Ua)XOVKQAs4|S z+;j-h-4gd}GDg}mnjES|+-q6R@}6P8aq4F;t1GETtl?D_F7Vj8O&Xtm+US{XD4A_6 zMtU<N%%4Rsmt&+>nzzm~W1nH>Z&}en_h6~>cnut5nRL<M%;B8E(ps}TbM@e|phVYX zMk#q`m<1q;*I2mKH|7$W{6x?2@DVh}WZNd=wnE4&qP;>G3rRGt!#->y8otIj#GfX9 zz7l5aBe@M1byk1sJXg0*T<O*N0!U38tpDdB2MfbL^TV<*{D&Wwh2d}eVgGp{(7)&Y zALu##UxeWQQ62d2Rr;^DvHwb5`5QWL`(KeA97r`jE9!d*+mRSR-KR6D$r~ow91Scf zvez~x7LbV?q!G;$8;AHCw>!Q5=o5*ieKxkGI;Ic=SOR&y**8;?x7S{j#p%;t2}#3) zA^acvq`ilf1xVyiBPKgu+!Vr$w3b2Cljo(cFKG=ZQH`fuwORd;OM3WzqY>#mPv54n zsc!r(Jk+!v)lX`{Zu*^z&Pdh<ufXJu4=wMVlZ&uFnVUYx6w+Hix!%EJpr0HSIQpJ| zI=q;RF^YlgogQh&l3owu_AKWGWQlm>JsK3p?NT0w6dz1ZK%}jm?6*4uwK7iztP<Y) zL%qHSB!s@7FYXQJEl^VQPDI-$2LPuWlj!+H_>YqMUTH~q6NMmO{nkMgPJ<YX)^UO8 z()7jX+;#-Up=Zu|miPFEEYF%tAakd{`(e>M;-Ndt`y}eC<OQ~O#n6UfvGzVVdPKE= z{ZRx_QS|sCt)nILRBE0z*S+xk>=2GNs+K9o*s0S}4K1cX_0n%nZBx_HFLO5NXuph8 zqMX!G-dmX-OKMReGyy^3<EgA<NqK#1RSe)fZ|*`(>iWVbMvhl3@cj|kLJJV>V`%0_ zedrx{_)`rO#U&Xi^$9Pjb@<uV<sP50bSA;cvkK61Nf(hy{h>ZG?C(Lg<pV=KGiR82 zne*)MZToiFN{M?n4ctw2NiSm3*BL)30YIoLa0#+K#4-ld1W*}9R#0ofQrj0_J&(iv zj^OW%t%C?to<kML2+lo3oOA7GQdSbt;2m8hEhFoAb!6LhqruUGFYW;3@q<;^oenm= z4#G`ANA>n3tlcc6#-P1_B1knOZ8@;y?f78G!qi7=(b=6AWvw1bMuA222oy@jPr=>6 zVwDs>yI*ydR!)1s>t3>|tZfI@FfDwAp;q_b!MV$efML>R%`koah_Uc*g{30qui>`q z7U&^_dXLoTm;S)Wc#8B1keM$F&q$0sUQ~$jCb`GZ<(ssIri=fEuVxjk-*p&&HMg+) zz4&MYEcavZ%BW4FXz$Pkdl9t{4`(<msx>!r{+jXrU_c#B8Za9LA40M%Sx+^J^TIN= znt`eWTD+W;;YyEaWcExjJ4go2*I?6H!7}z?l%*PH1O=yNtE@o>S`pn`C;+>h#Xc*r z(R|P*Jx;rKTVtC@X50n%8-Rg<Q!+lsIu=VK8W2ivTZZ)ybeNN87gN`8%`6*q6CX3v zFU9mZ=2J>vJ_iO4%zbcxm9qtO32`G`dnKvr&0|!;bzdMTKp}8fUEu%#I*p}z-k-r8 zz~WLLhlF`mi%+CPJdf})ZxXC|Rjr|^0Dt8OGcbW;i34S_o3hbIUi^&dY<ld&70EN9 z=~hgWaXX}F+Im=z2Nd`+?;Jz5XWGfDc<T{iHCk>Dzv?^{v}V8uu85g|tAZ5SfiKHk zVV<{Dv1)hH;)_W&*Y)X#S<6T7k+u_fn%4d7UjK;Z-Hh>Q8I#0L9iTUZ?M@I2h%0*u zgE9*~hc2NrFV-T^gn=KU)@7WwBc7v>Q~*9Zk9L1}q}+-!PqE%me6*`GZZ}7NLw>(t zSp-b<IWteteMKP3>3Xs|nPm@GRsY)Alwc5nJ+s*A2TTr~IgeH9c?*+R&#Cn3E?{Ob zG<D*0xO|OcN(;H)Xvv;ky~QzMDd3ozp>hbGdeD(+E*3X&%VM2<rvsFh?b`P?5<_f< zw3+5%&)G0vbO(+>?dr%#<W@3+*4R5;a?53e&j;mlA@pO-#KHMuu;sq6RAz;^jv;{0 z0F}Z<zlASCpXuFMs;RI>yEU$ZfJoLQn_{ZEN<ENQj19fNC<8p@U<wv1%m-(&$$oc4 zy)hl!k9pzM*?WAt4IIwQd-t8(KcdF{&I{lHy08fP;Mu(X{vmEIu`;5pgeKaXsKC|i zq77z$zz}7t<>3?Mck;F{kjv*UU%<J0%M$zw!xRVm+J`qznd8yp1@}V8M0*OUZ~GI+ z2BtHA8xDZ+velePH&UBkl49pH)R6YpXjZR2tV8Yc#Cb~?^kA$;ZN*K2S<Tu;r<ydt z!UAEi1<?wKeZK~(W;4HTu+x-NrmWk`?a`~>#PgN^Dlp?3nK@V_6+8);dN$6gN=-KQ zXPNRg+(K<Oe(`bxU83AA59?|9c;`#rK2&-svR2-HNy%?fl}jcA;g>5vQvR^>)^2hw zy7$+_DHTN_hh?shWmikgDl^DK2pC13rN&Y|XDTbbFB9R+!BBH<j-aOKM1#$9b_6#O zxvY25)J`RqwOHD|?|`w;tp-dUSmVx*5<ws1>qA>%IU>(11OH9v(|cIUA9=nj`7q>1 zTynG1e!JvSXDl}xLuDrX8BPUz_n~K<&VZYG>cAtdH0)fK<IymvsohBuERzioXt-*x zhH~lZp$CXWWEUiI3yc0r8@A}T<dvhqa!P~E6V&%Y-tyT{s>%rdErrA&K01FPDC@b7 z7#}hcc8vfv)OMIm0GdBkSzT(=Ie~S$iS;KL-^h!U5vbj)Q`Z=L_WsLfG7G!`v8T`3 zmAX$=7~hAg8b60N!rJI=77Q24=Mc6;&7e|3RcdP<lFEk}2fXz4xzg%JHC3j3)W36{ zWnQ0uby6=o&QW${u+fdb9~o`IrjJ=;VKuUY1%;9T>0$*1xUW2=)a!AZ6wYg%Hx`dV zQrQ%idI>-QD<pRXx}mIdiK5-vZk*RESyfFk<uzh3+{pmImuUbdX7hn3%e<T&nF_cD z&jPwmK$7*92;z9UT!H4yTR>@Q4mB0#N74*~8`FaMJ&ymj_|<m~S`Q^uZu*tn52)k8 zpC42f?4KRxn7FFlV89oqa+G(4DMyTod)Qng0sGA*0qS-1E>s){=ff9=vOG2no6T(x zpC1YLaD7=Q_hnx=``h>lo#+U^=(z|Yrf<>VS-v))Hnu|r<_7tT2Cw8Gsb|Qtd%3~t zkV8+0*{%aSTaBMrPpK#On@b3{8?DqomtiSm@eWyidqh63D)H?3X>HQQf$C?IW8~ra zXl=6Dls<XAwxSpsIYP88V(HMX#D36uW+?RV!F}q=Fe2LeG=u>+=2~mI*nSUP_~u46 z-Mb6&ec2_d)cvT5>W0fsj77%xaKjwS_fu#n+`I^z4t(RHh|vB$#r!vC+o#<Uu~^cs zA2@*1FN4Uxg5bYnBWC&w2>uTn@&824zX8GjyaVmubN^dI@Lza}nOIr>R;kaGy0-lm z2ij=whx(nOmP&Pb*GY|RqiCsRsdkqDxTRuwBaZcGtB$1HV%htp*SIr<Vk|EA`LtYs zF330`ZQ|)m&eqh#*?XT5*}4f^<gZKy^zY@txb(CK3WKEMvv*14hHgcC-PNP2g-3Pc zf!eHuDc!XY=J#>aq^*Qwua_fs52d{%yf_h*!JLWnaYb`p*HpWm*xKqmd0X<6g6D@| z&~4L0*Mzhtrn$|=#++biYg2APtoz}QAvYoRlU`TN9h5iQ_mc9A)6Vv&EBT~6ar2~v zBf8}5LD}?EM}tdoL}w6(2Myh5v!XPmM~o4e<`XMIp0p6jY2ymdy2dT*cX$=1!7WPo zyH+iT-^_N->Ti^lFmoT}51p;V3Pl>!i3@hs5?O?lD4Il?Es@^MXE3`I>XAB4VheSx z*0jqPnAI57Kt9DiN=L|3s5PBQ*c!A6pw+WoD=4CYE4pn$bojQWM`1GPUOFNcU5B)* z`X5=cY@<=G5pz1!PS28vsp^q*Y~xV+UDGn7Gl*zV#CW7}Eed`WP4g)$1WRZw({}T8 z_6sv5t;2-BfChTxvWF5~#@stA$*>Cy`|=$heox@`Wdxex$iAT3@7YDO+bJ})rJT2? z;-m$1*>RcFa;v1_25uQIT!ip=vS|I04yCtB_6Q)cmWjqY&X8~ftc`CL0%ViD;UrzB zOawO)IYEt=>J&EJ1Yl8(<+RVZmI$Y3mz|nC#v*YA>S)u=)f%ZZr7hMNA93C~Z4lMR zgp^zbATvaGOJ6c2iYuCRP-pVQDWP95l5`1Cv6k@!Xu2U>SP3PNy=P5q(`k`Pov$?4 zl#_PTZgocCPy!N9{Z`sO7q%`ZqE?$ZD{!lgo30!w?4(s+E6*V&x(ThVM%YGHAZnJd zBu@+@QoWe48Aui7t}C694+B6W={+Am1TfQK0!TGBsb+{mj|!?Tstw0QUi-S=twLBs zI#YTC;`IO@5S_wF#lBv<S&Kuf9{ZYOrIXe`f~YlZv~`G~Tt9cZ69jN9zMYMi+g<ub zIzLsHn6vPEfjf_ayp})Tw%+`Sbn)g;1=&Z2%5t<cZ>1^kFO+9bZ-uHaK(bP&HR96c z8@hIz?Fw8GKEA-2Kv`PeSx}|E%Ts8HmgWa2?~jMmTr6n3u@L4op$wBbR<Lw0Z{;4# zoM4VRPf&aKi2T46^Q^Nf(2_IE_<|29{S!=Or{gJN(W`C}gX{DHJXV$08As1ETJlpW zTP~>{e}z~9D7h3hyf*|qZMud-htJ#k<|wdqV?4d0&vfy`%6eR90|hU75#TznR(F5Y zc9QR6XtkO<6!?7V4)Fq3BcZ&^O=3|FyV+tJdbk8kjOJG}zJd92nTN_LDA7ICHaE|R z{P_YWAA3JO5{xq(T2qi_K)(8%Q85{{YSu!L84CO4{<L57B75nRnV~f=u?Uk~U_X?U zZ4(GQidEDk){?~z>_ynU)=up^fV*)n2<$$7_3V~JBGiLh;Zc}1&jC|TAF4Qn$oNWN zf|F3r;UF@JoUtHEmBgu%3{p>T*}OCO2L~g(_r8>2tW8^Fq;wrA>Q%Py0azUVO1!!b zJ8#I~`Sw-94^>0nW<NlbZeG|p_}~;BVgz~{(c-@4_3hB48@v=zUYY+UhLQ-yuc=WO zx`2zJx5)kzzltADtpJ$=t!hVc$?_=g1>{(;0qX%!l~gwoEQ3#}4w#+YP%kkPwiS(Z zof1mIHaqQ{kz{I$QBCu-+jL5HiD^R=RIQ?u6@FW9+>R~yc=E-=N|AkR^H+nZ*Z#x2 z{LA_`EhxzWZPiSp7_0tTXNe~GRzaPA7{7x<SqQ;rGD0VT9Z)GUPwRzdDthsf?Z&Jn zWeIo-5C@<S)8|~2tF{`o+RTxy;n}GNoqUf0H^5H11~{dlyBaOpifu=yS&ApMHbRr> z!fci0<5EH8wdn4lIN9Oiu8l@~fV?cXIrs>q5nbS67R2EvT($9Rbw$lPn+x?D;mh<v z&AcTq_Nr~ada~FSz@=ulib;UulWA5EI{E&q6UX}$r@>R60a?vW1BOZ47tKK~Fl=~a zkT4AjZ^n|hn6Yl^k~^3B<wRUBx@Y@Nq{R4O{wQGqj%M>QC#D$HEr0P(52Zmr(_k7G zcIX5ibMU>du<~&xY~G9EFmxgR@%e>X!sB@mpEnlx72S7C&nP&|Llj|NJhnzOvXq)H zmU8a2TKZY3w&wO>Z}=durp{xT+t-2MVTa`y>#B|^H{Ft*m0%gM@>MgPeWaH8W;!`t za(s=-<v9&}1lY)W^%@%mge@KmHevBCT}@RUbn5<`Y)V>vIKe5ZGTY2%bj$D6k%8$` zGI@#NuM)Zo9lGxD3u|FR5Mi>Fd1(zhhYkhe${-))YH6Lik0Be`d-Y2Wn%0Bo>>HVg z1>8mR58AJIT3XRX@9TFtgLl|8YmLRKIfDroGJjUmAf!}k9la^!nqJ8@I&Q+-mi{Ea zLS^nerQ=b_nNaUUxNS@gDALIW_SSj;+L_VV{nux#&pNy?X~Q+m$_pHqm5lr_hbb&b z$Ph4-0tUhDSb<Q9;ll(&olV3k3~6c^SI*Q_OGb&H5IabCNp#V;%JtEAzD2;sT7DS! z>K)ly3C){S*@6&OH+ZKG&x-!)hUg~on)p(@^Vt<Br}eaUv>vjA5DVPp-<-TbBxS7) zz7jO1obC$Vp;SscIa$}1saZ*evWG-1wd39$pmynKKKN!CaN(~8zShD;27=ciwTnV3 zr}F`UYBpMkNa|28sQx{swl7_@TPhGV@?@RSv``e`59DWNYnU2>W?W~C13+G3pboVW z(SUZZaxkMMeTGIHg3$E!sFS^Wb_f{q85kdxC}N#dl+hIfgi6N362`)u!Ud|x^r}+l zO;@LFE{tQry?qO=0GK&SYBmwRgq7M&>?3zwj=uTIR;^Pf<D0JVdg+<R`fdIyw)vh^ zT8eD;6<E<*`?sJeiEYhw5Bs;+KD7%amqk6MKIy{;$y}J?lZgtcjz!7U`qCD{w*&!1 zNbfZBC}izgN}6UofZTh4brT<~^<8}{$nY?=UTd<9C{u@m1}yP*=p_|sQZtcXFc3Rc z=<WM%=0t;Z-IQdJ-039O0t0wldeG*Ry}1+gph-oAxRYp#s`L=R30MatIULF1ea7V| zwOwsS*RkH37$4G1G>E+PDionxa0onZJ-P-<2H*ZqLt(%>2Sq2OynDX&aUR;?wLvmn zFYe-p)Jab_CL+&ASkjuz6r6oF3dt=**q<+M3Pq_S`H40o68@YmZ6cedT5-d=m9?CT z5oLrR+p|;NwcMv?cr1r-nFIOOXpPopRWd8-q%1;>q2&(?<!!TMML#eAF-YeHf5q&7 z$AA7;%>Ez#a~6ib?LYtL)tmpG``?<`|H^;P%*yh2n7v#5w|%w*(rVAF{z9As69|@t z0V-!?&ddb)*hY(aiNrl`Jf;~>$9qfv@a4~UWfxQ@U>s(58#TX6#`#TU?Z-t`Wz_l6 zjCkI=O=tSBT_ywkcQQh80k*@avU;#hXGV7i4QN)1RnXYvhTFr5zB`|GD)QWOH;P@l zEDj|ZWfq@YuT~m-EAe*!<V(BSuYus}w_N=83Rg?+1Z?dt*so4KQ|)B4)*)TH;}^fu zAFx9rmf2IgGjPQ6TwevOLlvv1VmfMwtMk{1xupp2h`Q*<pkT)v&uma3hOxMv@Ft=> z8Zz{U3C3NlRe7~Q{9iOuM(nA#E4NR@M3?wVBUy1k@TGR);3<31b~rBkA(QQOt4wVx zOTVj1D3%j>7nTM$!#PfL`e<U32botF&pHw$M4PJ04uohgbF_M0S?@R^zN<s0`gDe3 zwCL8XHl9^TBJSiB5TSud3m5j{p<3AXXe@G82u51ki+;{ud4^n<S|?t00p~E7CL!CY z9pO1#I^YGo@4wtp3r$N>uN!NW_GDw=i;mLEg7(_W>{k-$H{HQ&!;yRkcNBSCo^KRs z)gRG=-nd}ht=^xtX!ZFjjyr3}on$K&qy(TAF*+h78zXdnXEJk%XLew}5nWWi+^N+3 zu(xdMy=IdO0ee~&vDUWWwOaS1JH)7_R(p<bbZdM8XsMuc^0*<xTT}rf-7N76uv}z5 z)c@YP6R=iSDWTO&mUIYJd(P)Or5Tz#wrd3v)X+?s+u*5UQsce0HsX~FFueGHbTSZb z2zn}mw`}X+dkt*8jW1P`Zt?DqV;1=!6AtWXbC^Suujg$nz19>ZwngY8P>l)h(+dbD zKP4y#<QL!?lFrhnj!&oEQJcNfD$e=b#dA?WSY|zN`C&1~QcJuE*bKfQ%v6L|Ixt7* zD|pl84URN!0^B|t@JjAp$=k>+uPmpezE#*l&B;ib<#*r}#*q7gJn<%13%2&NSP;F> zPmy%5Rdf;jEPhqe^n*T#N~;l^ej-l&Xv_>yHNnN@A*E9l!M>e`<!?T-nreJuRPx@~ zRVdU5d_x;?C&(@GplfKX*vjzAYGKCLDMjKd6^ZFaD584AW$Kxg%eYmFrOkMzV9c1I zN;ppGz0x2GYP-Y^NQxJ_`lzf<KIf%t8e+l9+ZZh{XYT69(KbR#OO8vA&Vx_4P9FsS zyhfjX1WJP~@v6I6F<^T|ir7;!=$H<Np53etsQBVmnpB~c_i`o&TVOtaxkRL{ByYJ< zyp=VE36|DCf>T;6Si`y_V2P~AW8sm@-Kq`98Ni!ZHK?kD2uH1i9)9XJ`=}rJzh2Eg z3`my3h<<_MJrM>?=F2IjP<yGk0UrpK{n^~B8z3?F$|(v#W9KF9*mWqfG$^Wgy!zD% z63!8f7$$IlAmuQGdrfmOG^~h(3O6uFsDrTof-!iB=9(@I0b^<96ml(WrO7+G2Wx!S zm%%9Xg9@<_mTMZ_$cn1?u3MwU5}(!KGdd~P)2A>{Z7fLwh(vaw+f--a39!SOeLnd+ z(*{pVhuIo&1F`7?<)9@`0(k})ujt!!)rj%RjQW$7-0pl2ybuROvAk%y2#cT56(Npo zIsq-36^{o-hgchwy#a6C+k9-^5vjCQ0J);2$;SePTFvxFl&Arht{|ns749uHuM(U< z{}>uBytW^nwj2W0$sd5Fx&R*!RPv2Rf~4_@P?LM8)D0;{N7Z$Nw|@$Wg61g@)n~WP zd1F%q3K+*t<&AsMqN*yaIC8L_9Zs>@juC-$wUSlrBNk{KmwJ$efebmvF4?Av*25}c z#)`;KCjj4-t?EX9+!y64=lG9R%U0tKke(stRo{BeTG!Z$n`BS`{kHiD5WOu$aM4Rn zC%rav_}Y-2-Zx9~jv!JT430^gql71tc+;!(2Cul<+Pxjjm5GcIP#b=@$*E=+``1Ir zDqtIXj+zLw;+F~A+YyFUD~6=SD4{XVOfR9GTX>dm&WbRahywr6XrSS-XJ3W)0#Sms zNophL<{?=yLp2$(%={l%<lcgtk=f$Wxbex6ic|*->=6j*C*Pq&%*GS62-Y#d8?<ZB zPgt)uPS0?S9vl{!Gs)<P#9ey~Hu17*Z69mf^?b-&bF<TWNY6gQK_eXj52TED#`5KL zdkWoFDsMs8+lrhOg*u~JY!iA_R#`PwWm1JU3DLC9mPqI)hL0z0b>O(9vpK8w&nZ@g zH2?OU|M@#=4GX(K7oi~-BAgR0ToW$bBN62v)k#?P`>{0c2990G>BnDDu3uOG<}$hV z^!M+q9xW=+-Q_n1sn}m!XQ-Yv=V(iQ3%%Iuv{G-7?&A0JD_!C(Iy3q(2bU}cWpC6@ zUup7I9XD!HO`EI8=J86(BaJmz>E716l*{w_A4C_GrC=4SaWbA>JI=WfuxBMPtL>{) z=GYtW#cC1CbTe)1yLaod7vH1Oi=`tqURCi{-PvCGtT8mKpCa?uY&j_(G~_tXnz5V& z5Z2q(Lqo&WqGc^$qXp*XIc%~usaEg)_~zkHuxfSBJt1DL9)UHPmZI`p=|n7WGnotK zJJFo4FMG^E{na+)e9HJA{Jc$R*B6G&R;6~+oYef*++gPHG%uKmX1;@6UoM{%);L^R zm~bH*;Apl>;583}j?ZehevAlt4O%|p)D{Oku?$b=<S+~0*Y^-Pimbyqq(JxA+%4I8 z#t4*)Uf~fReKY7f?T!?Q<`Be{_zQ>7(~oS{^Q<|G4{c4M_~d5vK3LV!!ga9+Zy-h* zOibagc!yw%xX&TEAq;u}!EYLY!Qk|QTI}YGC!`YLN$v!OM{}f!Y`CQUKy^`oXVC2t z0iK1*vq=kK?b7I6&!ck5JzSHBA61E}w5@no0%9sc;u^9EiVLX>@eme)^oMl9xvI_h zMs)TO{ZIX}G!Xo@yr3Y6_;VGb1!<cRge!tfR#FTv{6(nJpJ<Gt8ij<VquP4J*5eGb z;<5^(zC#QLm5C?YR?8ru^;oRBSbt=Z5$<l$PY~1%&{K0b)Jl3Kk%B_cu6?-a=KV)z zVaCQBmGxkDp2FwPu6>-vtk8DLoyyu?S@o4+g>v}i$$zi`P_n2F{|a~ij)(p)aF_8v zJoNu^W&AzdW&Y<y&;OqL-x+rq|H3uT$jS1zaJO1rI_{7SNv!r8l}AconvgUy(dp97 z9gX=+rqPx>-2ee*xpn)c_S2ul{Wklh&OSj@dU=SJdh4!$rgHd0Bd#v8Eovex4|s6G zh!@fl2N8__Yb<RzsshENA<H`*HIWATD>1>SBhUM7EIaAcXpq7f#w8V546P1%4E^Rn zzn*lAmY1pnW-n`G$E4Dgx5m2HGsoMNZ>M7^9&GkH8e($%Go7yO@|uaV4cr||@#bo$ zBAhfP`=@isKV;dR4_{BoyUk0=`G7H0e(}rt-qNWro#ImG@Q8*eSA3wFo;1U${wRSb zr<%O&;)rk%<uvJ%f7_TOTnMYOXiePgnbNOcSn89j6sT|2ul-h2UwQOP!{=>f0!ba{ zt#Fy*cO$N6vNQ{vKAd*dGp%!15F2=|l2L$sQxe**TG7t6Lht2+J1z*Ccoi{X|CJBn zem<gPAoNG2C~<H0XlaLw7=P6Y?ef@BQhF_$g@+0ZmTORz*a+1cd(64}b?cylc_U|6 z4UQsj84as1I<TaY;}@J_z(XRmQ=yJgw;H=FHpkwfLvsoS@WmB^Kn6Tjx>R5I&^WCt zMi5G{Vv#i%;)L(=kNPLC_|MuA#}ZMe7IqPqQZy@9=z;U_Q`xJfSM;Lgt$~;Rroq<_ zE5WBtH3e%QhFYOQ?x1j>D;RBd044n{W&BNG$?>wTEle87uy$ogqZE66|L>@!`!ldv zLV9Qgrn~8Y4)LN&z=~Sr$;gpDuDFU#2#wR^{XC~wCSK>}0XQ*Z{%W`L0jbomuLqFs z3r2vf&R(g)V|R6b76*7c4cyWQrs6=*?p?e?1A$rJ72hA8r2}`85c_nTKEsi18ij4E zdxyG_xZ+=-lnnCY1%G4%zBEwsc!7QenM0<>p-st30a)aZkEw3TrQ+(f{W(Rmc}Kev zpUwormJ2=S9vg{uzXZ6q5<qaY(dpVrgNgxZbHd_&=h7@4E$eFD#!&;^$cbE};Vm)g z;x<Fj0?gg*fFTQW(a$_xkq-hL#){sxc>AiTo(yNTz@0iHQ<hncU@Ieh<f5#ova_1B zv$~L*qSuf1<|g;?b<?r<Y?UVbBD!mp7d8iuy~`eg!Xqjpc)Q@gSqAo(Mju7JqZ`)Z z5?>C3LEr*3XmxN}v(F<c^}ULK4skuFVCS6NuJ*IXgDeGYk#8}_vA_$EX_bV5k{NBx zaYNU*M9YG7T2tP_=^NZeDcz%Z3aQ0b<zGwB!EEA1Bjlz!6I}KaK#aWm00Fd`XX4Jk z!dNloKT{<nb}Uhc#k6%`6mOup&ehyY%AiWrMMi$DxHEn0%|Ceyere-S;A6iYoDq8q zLVN|5875PPYZhl7?9nW~O<0JF5j0(iU_CnP+RXYv?wUlW_5EeRz5HrqcWkvHTgVJc z>NT>vt=WPxT;xkI$^`MmPm8}xCXA-8JIu@=_lJfSYKcT8YKdE>Cmf6~?fOCtZVi`j z5Y}LGKKmU=q_R<G2Dcu8OZ-Td*YC`yB?Lq)v5<qt&>+GvQL&YyO!07dXEiICVLzaa zD6Be>iSYQf$WEuh>F`|^wAYR@S_;vHNbAo76XUmRD3r|s4pDgqX5B}$u3*1HtR6^= z8w?<J=p-G&k83nXp_JX-VEwT5QmddSrBy2>!XicDr%xAd=5K7h?^w`JHe_ZjeL=-a zXwO~?`8Z%*haj>A*oj5oH2p)O^j%*1#*-VX(Fkg%^8!>v-At+9HCd8c@*?KVfe#4b zWn_fPXbi=blg|cVLD~Q^RiVEOf|0tDR%t3{EhP3`n{@3YGCsLg+rULZNu*!rjze*h zcmj52Jo#8QKk#6j3;mjVJcOJ18V`Cz=&u<|EmtjMd)U{E5O9-x*2bp#t$d)@p@fr5 zYH}evNVd|}=)lfQQG}dW!K8m541C^22D_U>Fi2+ww_^<>4nh!#?Ug^%>L1yU7-IyP zB*%q^mH1u5ECmxh`_}U(`;&vD><B#R_oJ+9>E8!ece?wtHoLAsG^&Lll>>daxN`@Q z?x(xK?tFoIeIR1B-5g7HO#op#ZgjM-yz1g^9++h6a*AiT*>%k*mXxyCamcdzIB8V% z&TXyHwf9iYo{iPNA<KTd#XV#NFfa=*)xn#2e1tmLJ@H}p#6c7P2>kkO#^Ioc&<Y9H zy<)pwaDgamRyAo%GaZ*#7yO5KlI<e@m+G+|>sE+aD>ZvObU{+$GvSmDs|l{&K2X7G zt~Q{*iQz!WixC~*2qY&2wXI!wc@Ef1y6^0oe}*^dRu2($O7p)Sa1-;~$(R*Ep^Fj2 z`E!DmcO&QCoeGMHq+Alh!?rGCv+rAj^q3qM`%$^y@0RhX8Wzk)uDrt^<AtF|kUb$L z@j0_FjQ;*(yXAa_=Uby|F_uSw9Ss)27fitnjo9Z5!CJoq?@Vf=!M$4FFvZ(HwMd+b znN9MTSBYaH9aPeqpJ<D;o82D$KnG8YK8j0zi#q+myWewCS!#aj@*mwatFANGYt_AU zx8)}}9dPfrLW!md(b{Ru(6yEsEo$shYm3I6NjU_qv%<JWjxBqQn)m?&Xn~!D`3tCG z{5uZczk({}|AZ=*zYA6WypQnTbN@etDp-0kMuvZV=KnL%;{RT>|9Ygz$<F+D80$!V zCUL7Bu~z39g(FcLO~!xk_wH2#J1bpX&&zm<$}i_ViTP+96w0XL>t8WEjvwIp60xJm zU2J72@C1VS3uoV*e=bj}MwWgjD;Txtnlz4!g249-ha@zhb;eg9R(&0ui)KZ-N<$MZ z)LxD(_32YOF3}NTih@dL(5Jp-q8mNC-ZQqh!=_b42R-x~o5vBsrco(1&;&*~WQ@~T zyxiEgP+R+Ihe^}A8Vvc>=mj`IQkONeP|59`tw3`zQr`_j%t0NH==f-L>(JhjMJ6jd z(lw_hpgCqnmQ0!yjx5l%MxA;bN0(svnR+Tpk|gpZVeY=V%t63IeTRzke9<1qgs^lc z=&4kSW0P*jC;!2~v6V=pwmfrV@xE7gmMSKJ0129uEG?0G|6HgzxvD6?vE;?UJ~lzd z%pfu&*Rd1Tj5?XW&g`rP(OL)T!txGykq@#h4|1{{sU^)xP9&R|nV1Z5L`srr5NX)L zr|N2J=ZCvcnBqCpsD({Y890eJvm@^l)f`x8AGE);%YwaG5TwrhXwFp+@HGw?qqQ3U zgGt2OFF_`_1-a;Xz7nb_`$l}665GSsn4Lmj#Q+$xDW;>{a83Q)UBtaWtpgL?gsAWS zw6POtM+k(P%5L}T&=*LLm|;Jr{`YFWF5m@_ldMBNtV0Nf%TWoe4oLO=<?_Axym?~7 zAIzONqT6OmkRJKy4tk#P)X+IpKi!498&=pfR@ksy!3!6cc;$rXCL(Nvf@Ca)69C0k z?0q&)+?HtBS~;%+<?8QnBl{dNaIB9%nW&;Xi_^rc4-&L-1(O@}U_3+@rN~Pab6;>| zEFOs7v+0*u;8eI%GF2vUl@<W1`vR;W!2#E<7)6gg_1e@g5VpgOWb17J#fRtYx0xIA zm>I+Gz%O2IB+fV+zV6CJ7MkfED7}!T3FJmV1rlVI39}=9Fu6_0nU@_h%!w6=pMV*f zT$8huQQhSnMt$^;;LqO91DY)bhGd+hI?qdqn0~lf9%BKH%)I>)ImZ)oxp%qLgKnXw z8DkN@WKNhu6Ll<RouMu^bl9+uE=ggt{<uXf=BfU<z@6~^lE?D(<4wycHM{cB56h>3 zlLQ(9s2uuINx)zRj}7_=dyURrd#x^sQuI_5PLT3Gv!6tezw|)Z(X}w(Sx>!`&{uD@ z9U|#}vSYY?{5)y@1H=OQ^F+8##DSA(e9C6Xup}+1o%KA6Ys7ATF+a|4#t`Oo0`Tk< zzk5&6iNHLpo4y|b5l<3Nf=DrAPQc3D0DxrdBmq4rV59*A=0Ej$h_3h;Cowp^OTSoA zF7}8TpX*-arx|?=_8{kCBvN_T68_tvWukZz+zQbvu#6WOKv`fQiq!(O8%kBdmvUq( z?O-M96#W1w99OB6)j3CVA&?p)C$_jqcU;KvAn^kFK_sd+KM+44X&e(F+2RSC1lD`C ziJuNMRWk+^lLp=Zxh|Wj^?R_7U<P|yn1BLWV;FB-5=Z0vY`7Pkuc58=FtHAZ9PeuQ zM)zy5da$B$ahTME<7Y7K-N28)Tnz+{1F9T42bMHc3OEG^*ARAdX#;?!+XM?@EbSM5 zVieFI=yGA7Zn?a*g6twBh-n9AN@M{~g-(}-fUs@DY<{40x1TCtScSbv$Ho;7GYBrU z(GJ(!^m4tqXA}0fLdj-Wv1g3nfa#(o19g()#Z)o-65L+Ro?baXCI$zpJgzW_RBqPd zGF}GCFf~o(_;ad3eVE3|Sp$qPIdN+sGq)D7NaKbQ3%6$7*&(Ro{3&7QPap&-L8y-7 zMj#9<W&II)o2{_)`>@;0W`ow+U94Z~u(M@G`m}0uHKDrC*Rx?JzHn1KU;iWC(MOT& z*_n}q=Q)c>Iwf)DdCfIExDsk0_#k9ai?BW#LqP3J!k;^+x6vs!>vk`or5^qMtzwM< z(<J~b?iftx%yB?;0kJvq2lSFlz#Wh4(bb2yuAFcDnmm(lA+wCtM<O&wOXKES+c7Wu z0ceM@Ujv$>0R8J{nu)m=TQ4++d!5SlD3?nQ9xJk^*P&zl+w2++OuzrQURNgy>PbA@ zhlJKM@_8>LZBs*%`ATT8K8xim_*I*u%P@+Y!gCaIcV=zeI`Oc^>s%MAKkQSFlh#Tg z4H9Sqo^@agzW^3o-=!k%f>G7POUXEksK6xiGRyJm8xiW4Y@Zwl*y9mm7u`ULFnXdD zc|;g`QQCCT!K*d9hhLJEcRgU&xeWR{)D?gqqp_Q}<#kx!K=KxkwpvrjT1UdYZdOy0 zd31)5C430m!EzRH;qA?)-vgw;kaIQzX;hH<FN><@aWEy3#o`r;;RTdnU+>1W2wyDs zDVUM<EW#&v#93Vy7GxKEgS%$5B^ObUc?LsbYEL$p#Va5RoZ33>H;Nu-#yo8LZ1oB7 zHzHFuMJs0rU$l$&ZAe{4hGQoVp;Yn0HxU`|%oL(eUPuJXmGr9zJlUZ7gK%r{ADq5m zhm`3q&AWd-2ZRohxwPSfe-A+od@X%~qj1&usSw@}dENxXy2n)%Lhl)#^r@RRe=Dk% z@_~0I3>&CnK!#jt@{&*-A}yn;j`E3QO1dnYV;tOwe`}=;gH>6HPuKJsDlH;40K<$X z;|SNZKNN}-hGVY6P8VdGq8LH6h36Kx#m28RADS&E%Ro0Ij&Q7&H5m1AUUfmOxG#C; z7b>T5t86O6z<>o2SrwWji$)Q)ojclb=WV8P0go(t=plX&qP#i;Ws$xjP5j8mK7N~m zKHhR+XevE9+yfC1MO|GvYS+@DH9)QR<0`wWLk8GT=G#0bSAaL0z|n@gAH1(q3dV`- zy(HPD=W+$dLcH5z2$m%)8M9d7drbQ1C>Hkx8L$pmm!CDy+iMYp?H#^60n?0xVnuYF zfO3Dk5)*hDT^u>M$!g}G!t%5THXzgw*@pMuMdE2y5kp&r>~x$Ro4A0m%x7`8@z1ZB zc?*-vRA=?NNdeVSmi1I%C9O+-RGct+6nY6mdfDraDY&Y?_<D#&V7(M49Pk!G$_n-* z45;lZTQJ?^Dr~q~I5}ws>gEj_-px|U)H8OCz^)IHT5O>8$q=~FjQZI*n8T5=Y)58- znCEDe0eE8xck?^K6^LptgB%2s%Ay)Y3CuB{Qzb6~FGJ5sOP}Rr_B_)XZKTW(5qxS3 ze3ugPul(G^e<2~koz*~sua-%0nDUf>zhoR2N#si-b(KK@EF%d?Uu7-G<HNNz7ghs8 z9o^&b=q*?v#*n4I<JNNDAF<4JyT1>+3#3eutG{^TWti-YU5co{*jisKj-y%W!)>y8 zbptNio!KLacfG?e*?G1pNr*Q>XN-pArd(M_D2F8dz<h)W|Dt(C>jI8>pUk?s0hs;6 z-2cwfe)RBh65;X35Y;RlFE^MkLC|&e(1qhd7X@G0NEaL?xcqap1wYMxw-KJNpT$Lf zJMR-Sbb)f!#}C}0`{hjtC7_+hK{&{QD$v-R-AO7_$w**t6N5ql@RehM^r8Gz=7h!^ zD3*0I_yjv&pW}@G@oQH@dzyOrjIej-wMII|WrXvjAI$&zN0y%XEE}MJAfPO?-fc4F zH;7w6w#(eb6bsxR4whenvIO!k&z)PWu74;}e&mmjn}P^ng6_NI_Y)33k^6}c3d!;j zUy#VK;6!5V?QIi$z$KTI!QWGVYgw$(Idxt?{M_eVX&NFwRga|7`>TnT9z_~@0`SgH zGB3%IW)YREP*tS%;yek|fMx3}>4hx5nPx}}#3|6%-fRR1Nqw!_O8Xc27B7P9b?&cK zlPsGOdUL|A5M)T{<?txKPQZ=@&G@8i=sZ{}>M;4m(u-~_T})Qlp(sg@zPy+TyNW-q znkJ!|Y#z5m0^_D{;A|{o{c0LqR?JX@8`m=GTGG(8o6Mj9S2K2|*UdsAn*`j@1ED-W zAG!igHwJb7E1|{u4}})ne+n)3zbmx<c~8^7=l)}%_5ag>HTz$PDGtuRqoso58Rdr< z5JE;g`wqms#-DA--Ix-aRb0*lwkwSMDMSUWqOe57zqw*%SL6ub-BWLO{^VN2H-!PA ze&BLcN*y^E8Pi-u+Qj<8H<>lB$J{44UcoVFw?h3EGcY<~SOP5K4`NXJc&%3|Ny)5k z6rF$LG;vfL+t6RZY&Bv{%P10BhCLZx_kG%_$L>s<+oxzsOy(G;siR3b&^80*W-{{m zyja@$Zs9L5lVhjO`+`ElBXdXPL`^Ga1=TjDHKXFN<aw?S@|3zkGV_(h!!E&$T1?0) z)F*yqJ=TS?OzJG;sW2{z?o~vlR+b&Cv0z^Wd+UrD;U9Tuk2S@d_&IP4Rmt!lZ2f_( zePoBoBJ12C4<0%0@&&;F7=X5m{;U1W@z3@%(|_K^F#YduWB#9LFc!xD_YX+__a^`6 zjTrxav;UfJ#l%3zNyov)z{dQ)<Xb73I=kAq&?%e#{j@DMHUdUg1_CA)Rsu#grvH81 z)4!MIzw?C=(_h6b|LY6-8xP?0zdQ|MXkz-$)F%lv)sSIB*1wIoEwODP$q?tm^5KcC zOd9efQiM02zhiWtUSD)V(Wxt<Xxz|40Fw^3XOFpmyPtSAdERrOO4+<r>7<5)@5SjQ zDox3xl!QxXkQzDb^t3x>l;g-o1XpdYMA`FGIG(B{L>EGws8mVV;Hd@74$aWlHyp%3 zXP7jH>NV<=W=KHO7Gbo-6f1F!j10`U)BA0Ad&WiS+p1|&Ij5(mF$Eqo$qjQQN)mc@ zZPq21k5CQm3zde<H_#X{!l!|LzgW9cCcT{-eG0=T(}~~|kz%oFQ`gg;aIQs-Q^Z2^ zs8lb+HybRKNr;&E-O&D^(n|L?!W=-5R~s{cw|$*kFDz<QGK`A*#xc^&9C!hr&Ji~c z*?e-d(HbrpiL&(r>q<g}V}i3rPU6G_rYL5UrKiOW)L>4pa!~JX4qWYtzdfGJR1Wtz zqI(wjG>?+J$2=HGU5^<!L#$P(1fVv*j9gA*6A`Np;$>;;CGBJJFzT2qfd~27eJyGF z_O{56p+Elex;3YK<cTf&N>MUNicU<tMsmd_V}b?Sx|KB*y%zD|VZEb;zFKGv+JW5W zf^3Z|NEO}l>*?s}MeOP=jd(Q-u6>5{JwA*sKrZ8pF3Rt!bKkvgQDUMW2yaPj0Gjq_ zDl}q}Zqjw_y8SS2movdkFSyY%Y~A^VFf_2*!_mgQ#UAJCMb3ab=z5w97fuWSpFDEq zz;&Zz((P=TgYp}Gcalp67`>1)fTL?-LpdD$)thgYGnBF2;-fPFKhEe6#dHKYYrED` zF%`)Aunm38uR8InyYzAj^17yp%Vb;U*1j+XsHL0XdDobrA0zN_NSf?AMrnv5plQLV z%T-S=_#I%mXTFvt9$>Sxe5@Xy@~|L3)`QyKHrm_SrBQ)OBmhOt2<_qBurnr8e=RmW zQ9e_8c|)i!01qXW!a#<3ZSXUSpw)<?fb#qDONLGKmV6_={X(q528bVaQp6Ytz}$mG z2u42f7ra9}@S%b&&d*xJRd+N;K>c@UVOK~c<`Y~?%C)?F-n@q!NHZ|TVZNYs{fO&d z2BQGu#)@1E8mFV1o;-ry*qo(c8YDAi<zKkJ#N|yjXd=k-BFbt2FnhBX_qv;A(-3}b z3+h6oh$)zUPc0~^)ea8<YL@R^1Suh;Sf+_Ie^EbV*iiS_0_aLPB5k|+e9c9m%BZ>~ z7jmqJPziiww8Mo<DvbK$36%p~inQfHB~HL3%y9&4#7V?8qa%^PS&3-h&7@ak3s3M0 zhyfKLlNJTDx>#ZN9@H8}ej=+%6&({zi}08ZO84X5c|wZU33dmjX5{%jg<{Il5Xc=G z^H_LDKgYDc4){x4d02?JMt>-5nBzn(DRTDpH~d26Vr#J6-*^fDx$OUhv4B)|lL75H z^IUMFAb)ctBr>3M%5yN!e`PuQ7%=2aGIk$MWUT^qI^D%8><*9sszSFMI5_DpJh)HV zAVRIo-ygeslOa)Iar4kei1@W|D&l*N$F;UBj&=j6m<wKH_fw(h2+2E`c3{^4QB|EC z9qHo<XNG{k`z7qMrEdf3D7NRYEfy4^PgtFqq~v-nASN`FVIs=(sGjh)vm|tXQ+fhr zcOQTSFJ<-_m&364D^}y$nn=qVd{EOkFyp7e19FDP17LtQa8|y-gjret*u33*a18bt zJ=9(=cwf5o?)YkNK5I22@(g4FN&&aSDUM+_u*cLo!Yo_|z>B-?Vt#;TGKJr0q0$sP zf2>e++}!d$k4iRsPAPv%(yH6Zqu`$F(A12PZO&WIxD=wIWSAsrI6YKL_l#G;ipfSM z(2arBC*(Vrg{(j;yneiZ<fX;dEao0p4-U)N0!tA23@JfUoKue-!;gt9KmTJgFa!!U z{xAf}2d4a)MNVOv7jua1v={ZYlrtzD0C31!-`(7OgDs%?jG`m@Zkz4PeTc`E-jYkI zBhBc%3(p^EJ15sj^t?i-MScz}R#`z~yuAgQa8p&|?e_^t5U5G)TjQzH@Fj@b02=vL zs(G;SaX?Om-sU^xzQC7q?5*`5hA8HS*(Co!GGViC`TOWdk3u@$LpR<RF$)r%04g<; zgKU;|BiY0HZAW9pu<&j#{-GFJ3qt4o$*9~heW!}^XUXP1%=TB!PRC_gXE$IwkcKin z3fS<R2FAhE@LrC1^_d!fu~|au;qkfmBm_C$R4Q*K0OoC4K~m7(uK{&~ydwMF_P#?+ z7t+9}nRTY?S%)~_TrRBzAvPb&cVqe+O=ok2xv-);VzUuz3L0QgZ=PSzZAWVZt#l$v z!P-a=WPR|}ziHip)OX!CsYFJ7>R+eR=HJIG-#Y+EHr>g6(hV#02L=O+E`1(%vD*)z z+|Oob;Lb;KvJ7n);0YUp^2m3$^?pyI!*RVl)UpZEJR?Y(4DUQkA5`EA2QR%2DiZq` zAvLM?glU7ZJCXPiuqMiTwrGBJPUh=DoqdTEA{s0QKDj+FtrhB0!gl!I^Q2|WYmyy` z7<lRJMSorFTzCSLCd85|n(2K?smY`OZpp#Q@;HG%xfSQ|y9A;3MV+FsfHz3fy=3?U zNbGSaT%E~PDxkZ$-7?$wa6cqlE{H<xpVF7#`UvmMe%gTf`eNM5*uPtTxjSFx9p0Al z0EYb!>fR|<)U|8VoVIPPY1_7K+qR80ZQHhO+qP}1Q>jk6lW!-z^Z(tIuEY1_c~7r9 zV_f$*@0vmvW)LKwSd1rc%O&g>Q$NK(5k{X|@OLCME`uJSXvV+e+t)l7XnNG*;M>0f ze>(t2<;*QE(RC0MP?X$@H`9+ZW|aDY0Y^_Cd@A*v|Md1WY3GP5$Uttx3EV@`CtUjO z-O-{<gm<<7CEc2spWy=oAW6c~`3Guc{4b8X82?jqW&D5ET>md>{l8tz{XePozkZzK ze?ImfZKRC<qm7h_mEm8vud=Wcu+Xy;Ffp+ZurP4^8$SKt-MMA_r#rsv?ElKS%~F$c zI%Gwv>Aq0ggD4@&0FXeKQiWrBk!B6&NgR@FP?^CaM@nHAQGk?)JzV^Gz6QhcHfNsU zECv=Ym_PgZxD3;^Q$@E^B3(Q2O%7={Mf|!Fs!E#@O0JtWaB*0tQhjk{GW1!mq3vl$ zwO*|)ppPJmqfkTK<gRhA3YrF&r^u4Tq|8@jZ*14BuC8ioaK3PG8SU+aTG2>*SWTsd z{NwuBNpbnvK^^*mQRPDJj$M_g9g^|Ore3OmHuAN7U+CZ!R(+lpMf6${_-oyx)xBPI z=W1|`5^t&)YHw48q6OV1(J)hWqvq$YJgvHCnn6Y#&Z0F5((3yi*jzcTgfi!mMsl?m zd`PcUmF{E5zZpwLmZgmLC*cz0wl%d!v<*2ddW>i11~RsoQW*;oJQ##1ByU`qtE@pD z#0ql~q^}JIgkT<YFa7{*&eE+)AI(3qbz(bjP<S->2gVz_tkRIYMa0f_N?!TyYCyC^ zVCxV4C_YLeMTE4$Z7aSs$J(c3+sKCjKEgdS*z0&SMC_ZE9)lY^Cb=MDxH}^P0q{H* zJ*_&Gy<MJ*l$G6<r%}o$lLvU;nOKSh$NT<xs=0tIPBnJbjmA1CBb3w7g7Q^8oFc(- zo!KB>4w9{G9V&l?x?D*R_Rb`iuZOjk5*XABVDx6O0u)1f7MjCBwIZg53%z~mo>1JK z4?+O$D5dz`U^uK*`JlEj<{f7e&|jaKlx$4fDiQ>9n2&M>D1}@i+*kyKBB7Ta8rc3n zxZHY-LtOhV{>nH60{x<@XaW;jEi700;1Jnk_QuOfkzC+pI%v^4nE+L?@5tjSF7UZd zx?p{c!9t;Kky4r{YF|HVxbo`&PqQ5QmjoJ#_)-Kz>NW}7ZaXNOhrnx@fs}u%@~QAP zCfLb3P9T{enF60j!N+QG?CE6AZZuNF(@pswm4ykH&}LmZPW!#;G>HUu`41=|(YyMw zoqlfhaR)c4m_grQ3?XjdV@6gH9$`pK(C%SGK=dM++R;WW$e$MiDS|104BnaHb!Vxu zWvxKjbBUc)Pnh@!dda)Vu_-Vq(9OJ-$=~0Fg@?D$0$r+v(uF+w+eA2DL1vh418<Si zN&!H^v}rb=2*)`Vs?47I{EdW(nAFQ}<Xc}1&<=&}OSx3F7K7o8+BVXiN8t&E@Z*dU z@YO&4qd{j)<cV%H+UYt9h_`tts54I9%)4m#rGK-@&+XD29^m}fS!Wtr>fEph90vwX z=pE4wwWN@f4a*qX8vkl*>titK3WD+9Q(i$kxtNt*V_&UZnCgL<DF?5RhlHF=jJVWw z_8_;RS0Pnx;9Y4A_n6vCnCsQ0==a(?3f*J>(!7<bbiD&DEmtr00bE)wazgits;IOv z&BSCL%);vH>rHhY==0B=<GmzyIFJTtE1<!A>fZxsE6uu`e+(acW$JT~PGHZK(DxFX zs)6n8fUvgKC<s%Haf(w&le-Qmz;imgv{^aG6^&rYWFI0)2Dx4jwCuD1apqVJc$77| zuN*43h*tqh6w(9T^f$8)Gho@47GyJVgy0%cZu43sI9uDwb29w^W<dJG?gXJ-tkV<A z0Ly1d;Y7-s5p2!J<=Nf|5Q^`ceq5d8SX^#3Ihl@yD?undOvU{fB|Igw2GjqTTR!;{ z_!(^>qsDx-xxyM~U=5HvL*PIy#E@cAZC1962VVn)y{Rn+L^>!<_R)mYQv{*=jW2>A zksPxvp)gdYoNnM(MNnz;DbaQ<lhE11*_PrUY~JU(scj=Li1F8X1pGSET+nGae*_J- zG~<M#j;3>f0lbUcrgwWimb7msn4L?5(hMPvdhy&M67}$@;5=pH<$k5v?PAq6Extu> z6Ang$v02?*hM`GakGI-6cGPGFPi9fwXG-l__}qA+L_0b=P+jjS?^$1a)fklrMr1oG zWOEt-im)2|x49(?;p=teZP5n735gmYX${V4UwNmRVseE9r*J+GbJc#UPq4N=Gs?%J zexFFU)z^CCP#o&o)9vc(ukrcbSl*l3P<7Nr5miFUJJOGL+pmq%=-#h7%nsQ(QQ>?3 zIzi84(95jt_xVS<71K5HjO$x(mqUWzi74NL+wGQRCu!9QrjY)e;s<D`^g|(`0(p_5 zZy;%6%~){23QaXny6~Zvo3qvP-b%ue-+fJ-w~XU;s;x;Wy34cJ!q)sR-be0ZfUIjT z_3P(G^<C<q1@&2eM)NO&*R0oSd`#@l26jV=GHz$@-AQ_1U)x7PpY+2l_(_WY4l>SA zykTST=^f-;DjA~9*l4yE+m4u`cwwU(^TBfY05VjPsYJ+(cfs4ExquD|o$TTHoW__Y zV-ca;r<&BDEl(o^q7dFsq<a0P-#}Gw<wHgfA1|;#(i<NuoxeV(Gg=^cZq4^XOv1rN z7l|O7RD1d)o$CEy!e8u!&5!R{A^*j)Il5qd*E4O4V(0h!jq2US*V0jwP_=G+)L%9L zQ~VtLe?qkXqSeUwpH?H|zqJ~f{_E!h{^x)H*KQ=S|Bo-$|Bo2y9~?&pcE*3pNQs-Q zFgd#4RPITf%|wbtc-_~3#)}eV5;wAO7<tCfR#mB_YKU)5A1|Tf@~G{QMlas@BSFUD z;e7#WQXA20*$=Hf_@n}<O$fiHa>-+Wa~R`6>y0P3uZCsN8(qvm1Xrpr*CSV<XIQtX zVFu{K*BxzsLhM%#uM*uFpHC&?Jl}U>x?7AUk^E+aY68bPhbi`teQZ}%f4GA!J}$mI zP>6F(-I|(bp*a^Pp5IUhSM?@$`C(0#{SzC<%p1Cz*BFCf4LlT1=zep$wP)nbY?t;B z%_#!q^Cqlk68RxlF4n)V^x`PjVN6v>(?QzX<Jz9?%~WS&Liq!jp^?U2RWbBOtFWfk z>^H*9xT=(q^6O8LZrM_G3&n`b6F5@W{MuxO1+of+_*vjG`B~^i$qlVui2r`I{|yEi z-1;ye;Mu-(Ra-IXHmG&p!Pm?!gk{mfdHF24j(%?7--w*TXAX}5$n6wke|1b=_o`7( zZtd9%cwpuIP;7+tVGHAVJY|?-d5!W$?nIFCs1mIS2VeDmuyyLJEOihuD!q0um0PuY z-1%_;<W~ibBooA;8wb0i2q1Ik!f7k@i7B<sEHJw4Dj7!ID$!5I<%Bgr_nO)w?E)J> zpPHB=z6OQfY@E<s{28UeoeM$_KJC%eoT)aEZY!o3(IH?5$r+v!l1K|lLVGOnp7V!& z-ATk|GI}X7$-cRU!q}o2P&6Z(jB#06-q?ct>_b}DC%}UPlN{sE%Y0b72!GZpm750w z2*bPKUIHy6Rw%xJ465`uo9Y+=Qrgi3FRQ=HDsaAZ65-gczM5YBC@+U@YrXPiNR_Cy za&=E&alNQN*~t?!Cxc!ILQ}bNxopw4;5=}MtS|7F(dI8<Ro&aKG@n9sM2SPiNgl`n z*U1*e*h(4sGUvZZilgnLf1q*K8-N5y1|9*2*{TmqMe>{$I{&i(1V|-^4tTBc_O{)J zcXQ3W4zJsUl7Rggf-&aY42@F!*Ztm-yLfki;caGmRd$hWZH#S&NzVfwOh~C;?W9^9 zV_>-IhG7X1GOq_bHM6;aRVrlrULGy1i_uT#2(rl3hIZTs`GFT4?IT$_O&xh8)W%SV zg)tf^kM$_ykJ4|jFb~2glds~wJMvq!SleTw8PN8g_2*4RU|9Q<+DYdE{-m$hChI3Q zl{~KNGp4jd#QChj2SZljSDzKcXiw_*PB(Tz-Av4C%)^T7){n#kXgvr+7O96TSRK;P zYU)1j5LurNr)dqu%5=H56pRi>v!rJ2^;^t|8}Vwk0+}Qbp4{9iIiEoOD=Z*IFRXeZ zzHPQ4E$BJZ7$M|{645C+AK*KcX6+biFFu&@3Tp2>??M@`*(Jim21sAf8%S5=kMoYk z3y%-m<>Gr#B3BUC!~lcc7s8vkFVF*5!=71#wSYkGV#g2v-%KTV6g%^x+YD;?oy9Zm z<!n-P;x~1JYRIA-817rgCTR+#9l}DYBc~O%p#%Osj!I@yYNgIKZ@NI{@FViwN<y7s zp&52G)CDJt#RiI{#lC$f98d8kduxr_N+E}sg+Ik3v3rb?_%<1Pxs`4x2FAD2YxgAG z`#DFsI|;pb=0&NE1i#%ph0(#v)MOwV3ci6vY||8xaDBRqT}HFGp!!w_LQGE9%0zeu zWcOWa{mBTDn45XR2#Dczuo2lU-{TGzmTE*uA~ppSZH@U<{QxaC;YBUPOg50CC9yPE zo6-8sV>>CG4Yxgu(GcQlgNxr4=3N!oWnfwn8?d7F=Yj-P^*8-whN&+r#`?slX7^?O zQlYCN$E+x3plA%F=QHIw18l__Dj({rH&=6RRa@8CR8ToV;ISc2GuHjSRT25L5%rX= z&-4aw0z6%5%3mqZ04+nNC99bwJ_YStYatVdOm=DzEZsQRHdrBFBgd0mQ0ud<UqOQ3 z4g%V5Av;Hy%G_DXanVO~07nap^7ixCi!s7GIlgw{wx2$I+=(|b+92-4et>(mk_<%g zY#{dcRfZa`W^ttJMVeN`et?Q%R?U^=E4ww#GsK>FVu_L!@n0kWt-!gOJubs}Qgg-^ z7k)$j(qtqt@n0a5s!8guGYLtMmn7r0q3UgU3kU-agt4Q^U~!?v7>}uhgMEB?#Cuu+ zCV-4Jb}(SD_^vrARvrl1s`xcV$%qa#OSsJjO;AbzlUymQHH(<is4<Y4(#RX%#a>0F z7l1SoQL*B_<X*zYY+zRrn1-PVqp@*QfZ;Z#_<5BoJN;q{D{10A<_XsNa2W2TPJ_Sp zY@>>hDD+&9IS{&k`HA(Vn;g?j;W&t;iQdv2|CG??3SqTu!K7yXpg?rljuD#{SX_@= z#7XABc~Xqc-{5S);|0j1VJp^xR1;vz1NkGvKl8afsw*J{F6{RL0_3%TKm8Nu{1<gL zrvDtEGW~0v?Y~hw%=Ewebdu>GkHFHi{5zd(JZ4iIX;}Li)q@!OPloi3Ph;f-)1A9T zr!ht-13ftfNj+h_WqgHW_Q~q0h^T$Mb|eqpSsY5b)KMflBAxCO>8$PurF`Qu@$-Z9 z``daLy#nWJg7~y+q8YkO0b2C;S*59hOwRWqr~IYqfmhG1(Tw3i<@)tdxVPI2SqqH2 z)HR6!lF{^)BV)5ub2e3_Ety`HTIvn+v*GD*NCdZ@&h2!8c5-9^jg?!5M}SiMBDq}G z)O##f^!E~UcI$KWzFlWK2l@5q7oEc|j~7dOhRoSh-v;Je`ohLwy+J~mg@0lbXWF>s z1G;IlWuVoFM^OR2k`nHGsa$WlCF52Ssd0O%sO4y)5S`4D>yvNf_D*i~o`!|Exa=R! zUA&LLy%>y4g4??jGEFox-2}t~escXP2-a+R)w-SR3wbf!1MSY9RL)zyO1DS8=>i*N z1)61RqlqBTot7|1Uuzj7!13<Cv-R-7;y44`93!(0J3e|@m!7Ax$aHQnEwQ*JZ0;|N z=UeHb5+gT7#cf0>z7Dj|nkbyrQBIiHkD>U|lSU2{Mz4A==;8oo70-2kJM|<G>)g#j zhejAHwihHeh#b)y_*(=3d>5IH6uHS#xf7Nmeoo-h1(0F5^%aW4UA!$7+ZZmeUzU5L zl@P<OgDoVEuNHaT>|+ABa^QP#T4-l84dm17P2Jc=3fG1?jeNGysc^Q@&`|6Z@|Q?- zil-yWt~rK>sUnle$9_S4>DG=z%|u^XZNk235JEWcv@O_4(VF<$xc)EC4s>1#{RB#R z-*w;&eT`{Q2^va~HcFKZn%1#Wi)FYvyaRw61yB%{%|&j6y-eT@u=QY~M}13wtAlg- ziN$gZk50>RaLBg%Q_`gA3&=Xlbpf9{7*>$)0?5$kb5_p#S_sbQ62^V)V6?PV*8~vm z0dWx&9w4>^8DHGXX2x)WbrU|`IWkEQcro(t;zz6LUo>}GOQ%2sJ<?)cpgKBF6HbH8 zC~%t1DfEirFlG78a90QVpq-2fffi;T!p2=YDbmrfP15)yqc6_%*PSZ&v~qyQ09^=e zjcN$^DSF^-+Sxmd7gKciz60vTGNJ<!U%JVR+F`wBIH#28E`u0%Bes1bu|?a~cS*dQ zxz{zsvbg|I9tRaT5y2lJtp+RkbZ0V@s{Z&F7MHy>0fFbANegMSP6U<;srVnP5u2)u zQwx)UiC#s2UIFuE9JX|e8a6)L<_RDO7p`5-&O9Px3A1h^IIL40%|%;=!-h8o7=-_6 zj01IKR82O{`>Gt*N_Ubv5`9ny^xGLlSqsGn#Btg^VQ!|tdZ%X-H8jZZ!t~gKsh?SY z5@w}~o-Pbf8mL<<pGvsKnF@<tzmH(du(Xua#hhPoXFR^ZCi6OK+9SStC?ZSMAL1?m z#tu0mpdR?nhdLVU;N7|p8^}T7I&pK*ov0DF9+$H2jzsFMtPBGG9m$dESa4D#ZsyZv zrgXWa{i*fPwk{gDE-GN*t`MsVH<WuF;kFUu`{re$oq@VY8TF(&zeHpb-yz{M7^VN^ z6*4vK(|#~X<--RKY>WF21|9tRq<#w;6&gR36&~A<8TA|Q>J+1ge3TBJhsR`=_M6Jl zOe4BYRaAiE^OsKx(Y-_F#hU&Fjif#LRNc9)AR9*^J!c=tVRcUP%gx94=*r^pv9IbT z_y`XQdw<3KN*FENawjxUfg)NqO3C~AlID&+`K3z{-&;kx8{JM1QH&>VCSzb>6R)$N zlVjwCHC!lBa?;J1k1Glay{i6XQ9%Le&XMC1plgl88&RzokYr=5@XF&v+my6PX)q+& zy~yrjr`svYmVkW<3wsyW$uo)%75PB5RlB+yiRy)A!nad#Y|n^!=uxXLFjLxc7UTeV z6&J}`-XypTsqPCzvZS;Gn;U96hJA(usTuj@(n6A}$uNu!bH2J_8hji@jnxZLyXC!m zJLibSFJk)qh#76I_4xAkyzYA)VD6nQR!E7}j_9}&E&D}v(JgNbcGg&0K5#$NsW`tp zi23}Z`>;K1pFwi_&D-T}#`E|x0Ef@Fwoe7GHoNYjcYSwLjjQX&`)ZINJU$jy534Pg zEqucqjIrWjUozpxP0Ee;IrejEaYS1zJ6&vRV`6<flNZaapN}8ntDx-PZAW(sX4gUs z*+|0yRN!c_$rV&%JL(7{v&}9^&Nfj(VW+u}V$P2W`7YC~gI1U1ZPf}QaGjg-gufQf z7f@&|wOX$$L?tL5tHDPC&{)q@{*re&*A!106hK-;+kuWn6KkmG@g{kI0fkZ_$F)o0 zic7M4Kl~xCO^k;GzMa{4V9>qWn&rW|a4UZ!Vq|BYY%lKYstSq)1dY%OEWN3i1+iNk zj~`pM5@|iZMtr+&Q9OMV4va`GS7NELTMVFeD5BFJQq`|!LLw(sJBS^Vcjc4u@Ckyd zq$DWD+Zsy59&dP2u{QA@>FKql5}lFR*^xkTH9c?EgUXE%c1XM?<)Qa6bfdT+IMfmX z(G~(A(?8r!?zw#K{zEm6XUPa!&P-tm9Z+&pmigo}5euBn8wcrE>>AxE-NDQ_tO57i zvxr;()2%^x*wG~bOu7t+$OS?rPiYh0cy<zO#7Ja>p5Z`Ll)hVUWd2?`iH>gR(YFKc z8z7Xz-dUDn>1M6z%W)gnu=&kg4$65`gXmmrzF*?+X^;{6Wzb3M-z*?8fveOJ?!<4o zYslS^WY7ouQP85y#sXI)hv!{l+7<eDrW(qpyq?_E7Q5@>tNeRD+sjL^KI~2#SId%K zh=N!g_~j*9hS#eIVrz+dLZ#h4oD}qa6D=dO$6`Ob00|UYM;Y^pO6Td#tfsqEVA%17 zCzaefW!wkGWqyzr#E!5COwiN^0SqblI6|YE(#Qy?pA?I%z-Wps{Ii6nlI3{qDeIZT zZ1p#H2D7zRXdPTbG%zj#m}CVPG*(EOl<To3ov;{LY#yFGdlM-#cC0knQvIYVoPUGx z7L~RbrjjrYQMr9HC>jluz@Xc_Cz(2tn)~msfbZPGx3AUfRf{1cs9e2dPln7-21tc+ zB7*)&(T*}of_ltSzclZ63FRk=5S%iXZ}8osC0EyutZL$Gp&W&KC@#?kv{w}=ohix$ zN2Q-{!TOm{LJfR8r;v(*TYdD;U(4(guIVlAJVkY7nR<eP^2<YCJ$!bP>}E9HX7u+t zO%UIOQqu8>S<oWWFal+(V8s}vi$h-o!>k;v=3CyKB&o%+2F+!io7lOb=wP9ZPS%8k z9;!7K;mtmZYAq{atqbLfw8Yi0hJ^!1R(0%4Lj;ABAaqkTWt;I@u0WU5+|vD?8p&^i ztf_>`*l9g)U9~PFc@mH|8fG^c4HB`M$D%78AER~n>-aO{q)3<C8>MkbuBFS+kXWf> z42zirxP`H*YT*Lq((FN8{-RD};ymvuZrbTv_}1hy>cf_Wk>|wjWAl0Oa@S<LUUX2; zxQW%fx05Qy6h=ELR7cWB=yQq8gMghTk2g-t2#J;5lkrHHMX}ej<R?Gy>&BuIf$fkJ z--7K+$mFmGr@RZvJevD2ZgmSl0Q}oQgnvjAO#j8fHq(E4oJ{}P<NR;*H#7Y&_Bj9F zPZR$jZZa`3{;Or<EVWJB|B)toE~q}@VTeMvyJj<u$e_U!rID-<sSk$zNwv@#yUc|t zBYKH@xm0wPiAkt-Wc2%J5_~E-RZ3;MwP|#_QUoKGJ>%UqD81j9_yXBqj472*hV#`~ zBGFTQs3Ufy??m*PBGG@l;tzWC-g0iq>eW$CQsKRD(Q>mVqdTR$md0C|;W9?D#kY!| zOpZWjP<s?*d5@m1XLLU9GIBlLFx|rohqZJ$k4SDM9>KgL_Rsk$+4Mz)P5Wjv^r<y; z=C>K0*t$}XCEcD)?k$`7Gm9C7!1RkByhBJMi>157!?Sg((Ea+WB&qjol0t}rJ)}?% zO66vSJJWCikQb(;1n1|B+gzzH)<3aaKkXX=O-TSby)X~nPv%npijS2Tqal5SOcty~ zDuIAVC)Pno1Dm~3lD3lJwW)zpf{b=K`OrB(0phS*cQmm1PISe!F!Rm5k^5&xaY=$P z7JRE>(`=c*e0H^adQj};92|T%mu(oFPE4Io_~d&rL^ZDH=(vHqVREW?&E9JE!QVO| zL@7(31gs|Knlcp~AePV0sKitPn&92KU$I2nJ>S2sdvk_lLjVv<%7hh#H_L}QCz#t) zf%^n&8O#1++r`hJ)jOz5?<ACy86DP8RQ&`fuxz*-9E|1CVNHKsZD~Q<np3kfUxbcy z@wI>;A+2gki56K;gx?;-){d-(Hx8o2%WfYRgH;mQ|H6=bS6_g8XL2TEyT=Eq;~M-) zPL;5q^RWJj&CI-CX?KaW5%1zRact;^Uyq=dGBpowYw!O96o?>1HsvBD{(>;|QH#c* z<6gd(MV}nkh9ccnJ5}W-I1@$WHV+L9>*986C=KOl9gvu%_;iQB0eTee$l4LWG^gb; zdpM)Q+ZLsIqjS#OfomT9diWQT>HQIrNsBo$%~#HM+t%XBH46Ci)0Ew}Rtih+v7=@0 z9d*`<qx5I^Pp{prMb}YQh1Je)K<^{RI~&$8!x)q}4U8#4Y(AFLgpZjl(r3<izVm$Z zk-2}T<z&Se_>XygiBD|)OCv+R&(3$<{7E1Ze{fwu2Jk3=UUA*>!jSUGnalEpqBECl zcx?yGzJZJZ*iWEPpWYq?H&*2U_cNZ>QggTY132TJZ5JCas)vphGb)9{8jjCp*bD*% ziG?xE@#7s5(nLHD3sz!CkY{A1L1xX|agJZ+H=%{I-jUYl9AA^r&viL@G>Te4F2sVv zG_|NxOmqGr#zDP-Z5g|(u9LM2j+Pg8V=9i*HpA{K`e^;ze9!5l<<9Gfqmmyl>;A;v zV)z>4<q|mudgd5kF<~%My~S9#QQ|94=+x{8e>^Lz!b%aGh`Asl)P7xK6zd1q(*kn} zpZ;DZyz%yJt@+nTdUb0o<CnxwvXSsQk>i>&%iN{!8Et1tIhew8X)|CKVz81#vH)u* zCIm2WDerwJ`V4vhY~cK51U&0a_9t2c@B#@w$WiQB%U6v{|6<{4zXayrhDBiyWfk5F zUp;uXmZm2nwsj!5!!Npvn$=?`ErI|z;njksd?hy8z)-jPOLMaN^9#n_%4el=5}~98 zzI3g{0;hz2Qpmxo^sz82(leI9-<%O#vc;6uTXqe~Okpw&pfEBC&e;Sp;?M1~hq3x{ z#fD3AfxpHI+T`H(P59w)BCsDpdM?uK1!Yu^_04(}uG<>CN1s^-Riasq9E6gke@=jJ z+!VlJlS|YyB=QqxiXoR*3*QTN?OL~O&vN})#1nJFTw2a>s%q1rF=qw_hVGhAIcT20 z*xec1WjSbsWiv6Vmsk&7WtJc0eme4jAOOmYS5%5${w8sO($HfFS#N<^E}93~!VZUR z+47x<9?{H9<8&cXsFKf3F5z%JP>|1w{oNF0iom#k#;asb(M!cbFkbkCLQbo^jSJfF zf*M=<1tlmI=>;M_wKI#<dnE2t^sJ9K#2jF~E1ocgI6S~;lkE4)Oa`bWJW5E1J>YTz zdvXP8U)RsgBUom}rO3w?U*@=GT^TKpUOVaRnpZ8l_E*-TG7?{!3p41oqNzZXXhl{Q zYsM?VsT&+bb8gPp2q8R9VAs_AOIRd`tbiiLzPttvWh)n3bRc6qg|0@6ia7U4Dm(QD zBvQl3D!>NSI`vNZ4y2zBWVY!{`_B7lkA2R4n)1hu^s_m8bT*n7pScI!c<x%(WP=hH zAD~6R=pw^aVVu8W6ajnA1#?`y$NvdrM9{}l7p~;@f?%MpaP0A|#SvMW=`p<JU>MvT zARJhH=mmz!LI|FVox7-AzdCbZpKFNANmxpa;S|Q3@;WH&d5L=Nyxk*@;z{diJI5_? z4HV@?QCVt@u9SgYg3u8TViH5PlvAH_WIAkDu1Nj@lrhFPZ=Ux@AjRjPz}qEC&VSf> zM+xK*R53*u*kmy%GI`SyS)37j(&}g4P00roOBWg53jMHmzOf0=LCu=rhR-$3%G~#+ z=ghFqHeMHjEEYm7IvBf7&$TAOp5nUT$HGyF7L`~diuOlx)<wm$tGe`n9M!*q5Mjf4 z35lAMPI#VWQ&Wiqqm9*QO58nEwt9dY4;1*Fgry+r6E`ZnuZkYNpx#Shz7ZE^ONi(A zCI`NcHHMQNV#cL4_iH;M{A)+My9*`%G&1saRcY09hTT@aSX#{Wu<Npwl)yzG!%YWs zBtSgOJ<N>$dF4I9uQ;_>BCw{-WxTjnHL@2?QP~g>RRB=Y!2bt!SeA~L2f5k<cR)pP zeh$UHpv<iHa@h0U;3EkHuMJ=dlmpbO3Y|_38bJXw9_@QzJP*)NO7n`B9Iqz=Q-u6F zt~)>w^BFBJD2ukAwM>AR*VE}6nKig`5@tfnoK3aRRjzHXst-2p+g|-B%f)Z8y^KoI z_z~t{7zRsl0rPQS*uP$cmfKQvW^62BIS;m5*ZGoS*pue%lTArRU`qA++aeW&o7Chj zi1s|<!8mU}25iohy=(c=ZgJ|*%NRcb74}RULmHHb876>Mp)z~8K(3W^A-JU$8?CY8 z`tQr(1nJ@2fZ@xpo`?<WueO5L{97Mv1@E<T%yeWoh=h4UrsYy*me4_GTM=FrD|Niq zH(ZL*sX@^wRuJh4E4ZSCa+iwKm;A%ffKK2;fQ)^8e0ivpG@ZUnokrg%jC)jr%;mg+ zQItgRmS2(fU=->j3?#Cwy)vZXGwrQS+$Qaia?V2V`q(NIW%k4o<Q&uWZE0bWp~x;D zpXH!9IH6U9moHcnBYqW5s&-*^xd0?`S*MGwjzif67OHLp&Iq)?Vf^+z<gBbovIWqD zoL>9c&<h?rmxHBM&G~lS#pg^v<zLG_&*qQUPc^@uPWtB`8rJYyX+fmR5#-C6OAqD- z+bIq=pF_jhdckPI>`S-Q%JzkESh7OKp%)0a?hbn;5a(keAx`u+64#$15&Qgb<UXr1 zO}wep>Kh*Rh>~=nDMvZ&S#pp#Ql4OYY~MwQ5XS7%_Tv;<#sRx19iBq<2AuMNII0PN znIPUk@dg0)JH+E(;A`ks&zR*(&?@i&7~AMIpq16@4T8yG<a-kOe8R^+9MA{G+-n6E z{DlLbY{$zBo1_TAzY};G6xG&7FgUoHEa0Ol;)>4*6dM~u0)%^k632eK9<(h+A{UTN zR}GC^OuIqJJ&nRyxJ?)<PbsK6BC7(8&JscWp$QjpiZWE8-n+i5I8p?sQx{&6I^;!1 zH@tph)cAMM+T<I+(`MYo`|cC#QGsL&-^_?i7pNoMGINr+;z#<T&%CCM=kf4TT}g<$ zKo(@<DSZ0Lrqo3GLQ@lJPNOBQW=f5l^|C=IndrVQQN$I(+Ql28q1cF{y^(?0x;CRh zjSkqsH0+jybc5RpbEV%5l1lI>NL*0Dl+j5^Dr03Jjvcf=NQ{`FNH~iS`HX%J)UD9N z-Nu}<w0pWJknOtZCN1jmE$uyqAUdXOk2oWK8w_`*7*mf|p>#-L$2bqCjl8ej2<31Z zRVjRTa({%WzZSX0%q$;J$sLlCcX{uf=I+&1eoan8SyKPf9hz<4HD11@qnFy&B%5`k z1%92K95~xM6*51(XTnCQx1*(&0z%Sxhxl&vwtZ7P$f*-HURtpN|Bw=w#c#aWXmm~D z=*5cqjw^LE+lGRL5PLpOO=O2OylP>*bMR6r$SC^>eQW49LkbZtP^x0>gKI~Um>;m~ zrZYMqIhzCA<X`Oe1?oFtDx7aV;7U@hc#vJjx&qxcEZZ#{NMPWOv+C*Xi$9%NIneuW z@@qNQ2b(TXr^$-yMxrRynj{fzG#_VL!Go=St`tqraBQ`nNGn2TTO@OQbbKwM+n-?Z z?<PO%#>#mMH`21ygFD-M{5bCfT;q`NsQ{})4j%+T(Q$)amejHu#vJU8!Me!erUs~I zE0jLS`2zwFd_8IZQ+oY3axBw7q}TtHW10T79Q)sBGH3d4$+7=`NU#57$}({Ls}r0> zYMYJ+;z-dx$5a;z%?3-9+s}U)Zc5ONV&mBi4NU|4#4%g}JmSs8_^!>KZf$pnjr(ry zq}d0MDk`d`CY)qVbxN}3Rs$F*b)1Q~!jpmho(@7LWUl7a&PyK4^+GLm7xD@x-di5e zABW0H8xGfE4*Rk^MitJbMjv#tf54@&SkE`|A%WEsbzM4`SBu*lE{Y#BpPwb&{&3aN zeonOFvUtp#Rt{V8R;q^FjI`9ZbX=0<<7)jbZuf;-&tjqPI^u0|pKu*>!u>)$<Dak2 z5M1xwgnlv0R%x$>+H}(^>i~1LTc*09WlKeEnXw^no{pUlx5YpmjK$DD361SFIYhPL z*FCOV=IelKYnlW9_EYV`RcEt?C)-h}1dO^GPd9<z@YOu-vUt~7CtuWn6VkE#q>5N} zmYO@WHThJkmwD9h*tHZF<VjnD*I(XC{E%|><<zTOyKQn0MgvLFnCGqS$<b@jI6ZS) z$$;gq`LY1J9r-lUQSB6K*)6iPSnU<*GeNAp8p63TRh~#`9&4CqYKy-9xr2DHq6Uq5 zbiej(&YEW!O4*qDNm{r3mBt=e@3)XrckgRM#;wZ(j+p~TPu-|z0E0@nrgPRu-2m<6 zg2jw6c7ASJj=x@M{8=KzXQ=tDiN5cbz_#{GkxXS~`jvGu?w9_9VU<`B*BVvbyFsZG zyL-HK!LFN|iA=_#T@ZKJ{)1jhx{L@^0uG3AiPRcXHLt&MyZ>5-*TdgS7<;M~?Y^$h zdG3d~MGy&7MbO00p92X$8sUCyBr}9q2f3ono}6<7B-6j8&v~;ALkoi1Xj7uEwTlJd zsC~J5ZhRLhv%;q%CY>4AhDb@Qu}9Vtp3V@B^%XQs;GJj^CStGYF6v}|O@SW#{H{^; z-oAV1q!ocZurtTn_JUBg3xX|C$EWPavl&oxq#*;~Z}ONywFj|)K8p%TQUvTw;^16o zjWt=X{==#ToQ7lt4*;4~E~3EH29M!TtyMC7Ch%v}Ze+2tpG6_CjiN}3;O!2B8*EQG zjPPml0d#>3Ebe2)SBGNF2j1&p6sQ%5sKMkRfWtk1!lYhrHJ<OpvibN8X%jlT&Baln zvG}fb!fmz;e~()c-FMa0v^b-@VWYZ5?!qM9&O*!8Tm_G)5SE^i2zZgm!aU#@pmn_U z(M5r^MNR8j&pk-#8mqGGVL`Q<dXi)2ikKgcv_WWAMzfz;F~J=uXy16lOPpm6n2~8I zpXFv3-WJSAKM*|Ex;}$8{B0!YmAVu{VTGM|{e)eEEX_(@g+5$Qk`sMHU#lz66#>wQ zR9_fG_@|JJ(NUnmE$x(0P60~WO1R4S<}o!BIwXsSVWM#8+U@O<Ed1Ixt|yG;bj@pY zR)_GJzsJn$owhf245m8_9go}%jLI>T?`VCpZOoL$@>G#~`N(z-Ul;xpg=e;LU)l%7 zF96wuQ&f9AjC8k|A${~6{WoSYm-!r>E}WS`LegBtJWzNb&@g%!za<DHuxYX@(B%L| z{N~2)GpI7`6AMQfhno@(4A^3%y+KyOyo^Y@Zt|S3KRXDO8xly;iS@#44g#<jKlx>) zpcgQvC#v?C%l;e390rHv365q7L}uTH5&#HP5)?25<%ocw_+mE(Pd(e^fZ)-xBl5WQ z3@<p8E$xdDsldXTp+*<E{pa}-cS$Xc(`E$x{H~<r>}dZXaQnjVd|S@$lb#b7b|iO^ z?jY8QxHx)aYex@uw0r*P#+6Yzto0C@`8@F;8eg<fw-7kZ(}Qa_0CSOFgUHHhOqD36 z#)&BUG&7IMMY?FdIAtaoPE}sc+y2sU#G8QB{-D>Y77ZXc&SiE3K8;OxVZv{%EY$e| zz%L6v6?SPl%!@l{$WXDp?EQ|Qn}tSlIUCiM%m@g2{jQYp&dvRl#4o?tl7@4%Q@KN% zW9Hcd5$uduxANAa50BZp!paz?6oNmlLk1nIU%0Y4!luVxIL%6dEqYm{1~`4h_z@{x zSN|NHqiQ)$x9${<#DM%4%ffm5n?YGV4<n43Ad@AQq@eJJI~+SrJd$5kr)h%qu!G92 z{d+_}STJbdB@nUJy#J)HRej>E{yNtHAjKO8I85Y}o*r>p=Yc7;#q-5i>zY`>N&Wfw zN^HZ~Fe)Uj!n}{AseN3Py32i=1udE?JzEJj@t(&ik&<|;#?tgtV9vIGy95;7N0D5# zuFJov&8|sfjs1Dfd!b1qsU!H7@6E^g6SMzJ1Dpj~@b*a3jXgwusmh`QMrR7CUtnP* zz^psfi0=)WgO~aPVD{GaOWP;0RJ;0t%mWWy^^8xCqQ88gxrrd3_M*s7QHD-9dbWHE zznL$ARYCK9j~#Xt6pvA#JbmezF%Rp)^O;^g)qO34^Ps)j7?itO6*FhEc*kpL!9fR| z@a{K<*x>Efz~=g~vk2_Uk9$8%<P_<rZ?^KOD(|xeyWN&5n(TYBlG&5!ocL@UQ(%;0 zZ37F@Il*bne#M-9#@*+Uqw;{v2MO;n>5~}Dzs)!4w=Lg*n3;G#Y!VZK@0xS?(h}br zrtXvRE>9ba9MT*wmLeb}l4IA*+*g3Y|7x2*(4jA6($wmqEezl163lAR3(^(&@gAfV zEnCW7E+^S}jLMf+(oEaui4!%{%+f=9^}%29Hn;kiVcb=H^}#>kwmA`>sW|%E6f%|Z zS}8r$m_hE(NWf~+HJh!L?;k-0s`sLHEVk<QC?3F4Y>Ua>^sdqG1{zDFP6LF>n#lno zl2Qx(LoBO}Fw2!;p|Z=})ym192OF{Ho6rjHnNzCh))7$PNWUq>^d6SVH#32PdX>s+ z?ZR8DCJgmY7-fvwNJEd`s&cW6bAX1da%#P*mM4p0=n9qoUa2Y6qVlTjjicp;F-bVv zIM*LOfGTW{oqqz#f74F!Pe94>A3(`W|1W`(`M=Q>&cyM*IZ!gw{{v96GBEzT<ti<^ z!wy7Iy>F^Fa@1zkqMK8j*Q}>dnhhJ6ral3D6pe5d_6Dl)@sr)xOlXsJ30G)qgTA67 zLXNEWlgxCv%;m6MvyqJH?~1<_3qx=B#MKGpttuwksK@2&+%>#k+$SZN8pNzdi?zI8 z`zsk?4ya-dI6@^F!={g2Pz%IcU)b1M>upgBS*v%%bOqFG8tKCIg*Jy{8^ndf{j+{w zZ>`hQyB7D;rpaasfc*s#hSagzmMacPDW>LXuT)l?jT7fim?p&%+RB_xKibJpRaS|V zlH13IAM>!*idd)Oi6EKPG|o;$j}``)RIdH{I)V|##bvx&M5f<T%U^s&8c@@YYlvi3 zxJ&sqzxP^;kF8S)(fB4eW7MC+pFA^se*3sH6Ml%xiVD*jD}cZ{Bs2z043;>9ZbeJe zt0g?L+xhqsoe?kjsNDN35`u8^A|euzzObyF_Sqt=<}z=!)42}1HK!u=)pg#Fk$+E# zd_PIFPZf~7d*bh{{up^BIb0ZXKXvF_Fr>Ck%zSEGVu&bYrJxF&ul6y2(nm++;fY0= z=$jWZmw9m?_p9P_rKAtAbax>ng(+biK6RcSuf?3O2g8*?!^t&ROHC?jH(%bu4;sN5 zg>bx_%lNpl%XBDky_u{{f)1Kr_)@KCs3|0*puL4>f%+dYYNSk{=3M6As&DfKi(_&} zdDo=7Vl?LEOyxuFx94%do_LTocqP!}snD#huO!YGvy>YIEh20Lt3G_NYX7lxaA^t8 zaa?uf$$ccay)3a1dtb5r)8jvCt+)>$f}`KVZ>>12K<iJEzXhp({G4Op@uN%}Y>2_a z3!Yfb-8~jn#1yQ>Ip`ulU}791fa21ooONWj2DuL4l56H1*)?#%GLcBkQ@Eum`kv9^ z7|wof1P|Q-fU)P0Wtq-g&9S8iDu9O?;<T!OFe&<5EC2Vp>JPiLVLo;Mrh8Z5>wPg) zj@Mo>sJz!A)LR%mTnbVU#~nwCI;|91eoC&5zR7P1M+j&fP0CtMXpJAeF*xJo5}b=r zz5)R~$O~<3mC=s&!OloHyy2S$QC_BNi77<pJ%3vDT2uVUis|YH`QuO0A8L8n=GhWj zrEM;%?uFp@;F?SF0R-YYAt2GcJh03ALVkR}))H~^>2Cu%pihJ(Y@D3%n+Sj%J*l!c zOa{TWP$z_vj#55J5MM<$v<TP{9ooD|X!s7M7QaWDBGY?EMC<gUofHq!*XrruHJ887 zQFA2lrJTg5uclPBqomZ~MVwtN{R+W*oe|!np(XD;3NTqzxo!kWg00Uxdtrpap?!Qv zCZR4d3ZWQo0>L4y^x|m4mC^y)87LATx=GSVph2QSzxJ50f8V&L(aon%hW3K;Ir`Rd z`_><KfdvbPzei2;%m_nJdX_tx`Tb!nI~syeZ#3Zzv4@A;QZZyt9vyjNZ|O)K`h{8Z zn+CI_xOm6IXfhRJyP(I#>DV!9Gdz3YF%3A9h-^F-GQ?O5Zm8(seKVyZ0~>S{e%NpC zFnG?~o`>`_G2^k^tG-{QM)||pWq4xgVZ{Q^*ns+y>kZ#K>-ZvjWC)u9H<jW@`)$NA z?J7!D4;X*|Ts%z}gca)n6clxc<N@D$_vmu&<#i5fZ&5rB9LYVTGCby%bH)$^9ehi6 zsntG+a1w}}h%_?KEwMUY%C|E*(MMpj2|+~B#1ShXp#m`b`$RJIgxG5uhHdb>Gu{5` z0j(t$*Wruw$D+8}6<F%}RX#Mw)EXo!srbNBQI6Y$WCTX!Cw1lhh@1JLI1a)d0~*#h z8-@B+ypm098_U-;Ycg?}WwAGh$L4f?>t-tpi^oR}>89{*s?#9%)!y-=;<#M3HbF)- z0G9$!ir~s|gUEL4F<t4MDUG*>Bebpz#4y*cF*6tR9L6t39YWRaLD|XVSoJTYA9!D* z{@4QHX^F~$0VpWU&F?3%tW#T4<VNt}##NYn%)<NeINH>Q91ro6NF&lg)myU4SAl(e zB}OvrE;tnTVTPAnx{&hr{pcG`P$v4#N{)FO+h#-i=pD*&(N(6ZnVdZ^G(+E-K!IGe zBo^SoVavG1qs!Y#S+2!1=uWk9Wxa?KY|hc7b!Bft-b8>{DIFOoC5t@BG`zLt*4+-? zc%uX7Mk#AOOpE2F<Zc+~;rqF{(%bnQ>uXK9E#U!|CAz|PI*{hafWP3Uo_lX5{ORJk z)fFt6($ako>BPF%O{2M*h2Q!(TI=DHCO;ZktjEp!)s~V^c90Y8=M0P{UwlLu*EzUE zkWB#PLku#jMbcF+9=DSHDDF8*;KCh!VN86#g?@*gDW{!$6B)KK>kVLYvx_rHPQ6uO zb=rsuN(bh<6xLhfY{ACVi?J)&plm?rfas|3ouNF(q@-lL0V{{_Aax5;Y;zO9SI3X# zURR=v3vz24HwG(j=QS)px0fY8zT{QC78Iz#Ay-}qU7D2bxpiN{7!AeEivzVY9!4}t z9Ygqb%q*B)v^e7#USk|bOV;Bs(xDK2AZkV?RLXckiJ4d}(b-FhP?f^4;~~%XcZ|6l zv?oR8b(J9PsX55gS0b7J9PXK(H^`3szD47P_UI^nWSx0RVW~%nT8HyyfksyfhAT0^ zpIl6F*WxUrE#hXgl$fQPrwtv*Z%F?8L>%~0?qd!<2kNx{Lp&lzS-AzYzPx3Ns#)7q zlIR_p0STi4HCB#Na^*aWIU^AmkF>IgyA7;*B0G(w?;q<a=;4I5FF!IN5?9^LsAdu^ zLmRO(%cl1ZVS`QgrwqZYM^>$Tfz;r4rZm|C95$QT9Y@B;_y;5=MKTa+zA$2?`&M?5 z1TpImi3~G8%i_SF=Duy`*wOC59|ca@r1-7-n9-K_xpOT1c=Hy1MK#v3XB<$;G_<Aj zP|WN`SSBLh;nzPrsJcfaQ(NzwI%%p|1xyh}mOx51@E)10(j1UylKL@ug^XmH=j20W zFx!a`j#0Fj_QXGql==jw$Ds0=Db||4rJ5f~>e{I7+(GEC=$!A^6+dH!?acMw%eWSY zCt4P;q?yyC1CZ(H`^ZmlmU*%{%3lKTb0(gb=K~F8>+VaJ(-Vi9o(?=T1t#sQR)0=) zF1br5MRbtWmbEQ8V21<lGxn9CMgv}^%IMZ<H{k=^Bt%8ulBGA>nUPSd39-(VPb_HR zWDmDiwM&eRKN>1_#(nrUXtrP&;lOeIRNt>RyUEjVbOy2SQ;*L@fPT^J27`?ij%|9z zU&lYY{*HN>j!%8qs)(1LKtaHS;jt9e=#zbIMJr!B=O=Z#CxhfvDENhyC(S75!>_{C z(SH=gcUfDqb;@6h4LVH^Zu5E%x{Jp`4^Hn*cpoEw9HcEt0LgL%|F9S+b7c0)r?kr> zk~`ISiwW@yBNhNCc$0IZ;HpvQv`x^yO!7>gtV<v6YtP|lkW#k;xkAhlQkN;C18iBV z{^A1IEs~r41Mo95{MUe=nejh?pXuKM|9_*$o|*A~ci?CGr~N06f8~jGsma7{jv<QF ze4s}2#0Q8ZPTy`_-COGq(zDjtM&hueuox1>2Z~Qe$-Q5CJkKW$rQcrx3FHAUPn){A zELW=4^46f;`pL)`t7eMeC51rVAM!bvT4NfAYh0t>+J#On0r$d8%ezIs`u*aie;Ocy z8DJR7bVE#EIP8;z_kN(aL>WtA8!Mz7WG<HuC#-7fR_gK4`o8vfKcsrZdE(niBL$y) z=9h2EXsH=(eohko?V8aeH9<q!@%u8tIuW??xx~lvXzjI%841mgV*Jgmq>J2K4wQ{u zn<1x;Y6gsnZk(e2lVv<zuVIabe}2-QmVV#OC{(#f1n=1K^xm-l?&}wSN%EkBNqoTY zgS>wC#j@K%{@kKLky`y#9340n1j&nO)D3HjG#hQcF{17-B}UPuXoO>Ug@)mm4jRs8 zsNRQcub>Q8Y_>Im%Ljc6u4~-%gTAwC)3|K2{g9IT?wrNtJN>D3i_VMo(t$4bVQ9N5 zFzXW99zEWNfz8zk#>2kn5^l!3D0&2Ho!EJKZMK@ZWw`aDwOwmCc-_?NklPlXen={| z$au?++b5)RNV<)CABB|VaqupP-kBLE!5VPAnGO$I$N+K%gbnB-4oE;4fix_vcmx!2 zQf>?9JFwHJyXh8`OH?3+UplI5w1w}7d01~zGm7g6iS1!)gQqE-q-!!#{S}mtsGGi# z`lj@DEQ4MbjxxtypHOUE;3AQ66ruHKa9Y}S7~|USpv6gB>SNwASf3ViOe($ww`k9= zvmb6Wg{wy-7?I$FvC=d-PBs|RMhkW=)cDzN8h)5EQ`P=^Fzy$EG5S-t#`!X0G<l=H zOS}V&Il|CAxMDnKJ9?}2pn0=BC=reG`m-wS$O#p+K$^%jz@6Ff>vsFeXWqH?=}9$P zs+sc_pKnw(=MI1`$jgUs;!&$`_x$ZeBByx<-#Mp^?r<-{W`Zs0k1%DTLou*Yh8R}4 z50mX@^Ep=sHb$Z#9bB_W+;EF=7$Zyfi9Glij(-$FTnd{IJw-Qi@GSR7($ccO#k21% z@(<o{ZGh+Z<A`(j`l}c|vAkn&)F1=`z!6M@Q?Oibd25$QG2w!E&2BeBg@>)q=!LEi zr|%+0S?y@6k=yYT<Cv4zObk<bX?(V~Y>ep7z+)5SUl_F+(7#^?&O<7-)!?;gCht&l z9f=sgUAmY?LB!$D*qU%eA_7FD5f2FY%^)EZ4N7?E8KYFW2Yu84tB&gWg(Cp#7B8jS zYl>G)cBe#)_7hp`eQwV+NUE3_0RjTRp`a?^rS<14kHM5dWmB{`W&Tc>&(Ep|`%JGh zS-H^4WR`*fs;8wBIRP3B80AEBsG%cq{gCr4+Y&Ug!-l*dt04;Qt8GJl#04B;O7Sw| z#Wz}Pz}w739ntpyoBHP6TzAq^oFR$P&`+wO(d$oK8cmPmJwNdX@t(Ht-Iy4qi#dPN zb>wHpfp`?kvAih_MScW|NH76LD6c8g^OJ^5Aqoi!kdleMyKi~tZ_n+|V*f~UIjZ`U z<58~j!aWp7({1q>Y>z}d-?pBZMqUji+vQ>%e+Ka7juQ?+>BAOCM?*gz5ZzVMa1cG@ z+}p{gIPi)=E75VR<R8=I3Abz78jVJ=EYm};6a)tGtN2@T!HI?j-v-VT8Bu2PClc-) zDh5)n$QwiolM%FRr-T&=bk(FlwXqu2-ok&SC{aCrgt=~O<B~8SfTYyzlsK8@3^^)N z0&o}}u~8n^pV5&TLlK6QtjwK#A<G8FA%<CS+EsLHHy^^QeKKK>pkJ}7B#8q)$@W%a zjD`awG^ZD5{j#MC0YxpP<Y9N+^vn+%JICCwsL7;+6B&RiIT&Vvr83M&W3E=?RF<}C z$LsU#i6o1@fP&Ydu71jK2G+8#BCZR^lxw3TgR@k3z9N^_5ZUREu`h3D?gy78Y>*ra z-eaE^y3%JVsm0QWb=_9r{str_Yvx1!mbm-mABztRHRJfT&8PLmw^&Mk5<8wR|0S(l zxlHjY7glx{TS$W527@7ZEG=wDoF4FGD4N9cA&N?*F7sLNGV;UWcMgT}gklB3Z~<Pw z?|b|Xnqt@sw=@>lFBR#dCw+>XPuEcMT*#ADEol9y)UE5vi}^pOd&l5R+jdPmwv#*V z*tTukwmY^vNyq5iv2B~3j&0kvjj!IBRW+;D`+T*YS?|nLtzXyQ<JWoCc3%6jZ=!CM zRF{jv%ff(;UF2?osGO8xtZ#%zZSJiOuWy}+ZcA#oB9K$iH1CeEg8Qo>NY2y|1+Kl* zvO#l)96YL;dIq!#fXs4jwfa&MFX`HSP_@kg|K&Ae{WPT{OxfBjnU^0$??(8;;Gx{8 zN!^{y@{%|r?KKICczJ<MFHMwQSM+`|M{AJ}zQ5gGpodVSrp%A}zeg_D_yu@EyT<5c z$<`R=oJ#)zcQvGYrbq1cs8(C)Y^73H=H8ecVNrRb=5*~3ilay7LH*EwAliGgNfacK zGV7<~zzkX|t_g1xoI!l26EYT1*9PJ@vYIiQi}p0)`p}dmGr!~gbjd?Qg|Zz<&>Lf` zUM85i$_$m54>PWz$VT!2q+ERW`Beql8{{sq1ga_6r=;9BuK;0p!++-m(Pb|0f?Fm> zQbwqwOiMHauLDvTewuciG)(&BNsLo{`mD|(G<)aI*=tAXkHBJG?T4Tm#n+|8Vo6B7 zS&rD+#|8*obw~EomyS`h=;VkZGr_gEBe@N*;@UJ}iaH<t#1591ozgjX!wHoj@m|c- zTfdRWPI{z<>0S61xIxkpsLCzO*J+myEVCxLWqvz_-f7&%CHSGEb(W|WLR6Sp`n>2d zhGV1jaL4sBXU#K8SRQ-t8!X94HD*q2C4FY=u?RDjhaN917(DqEB8^Q0{uC_!D|uw? zV%wpk7<d_bpddp>9FvQ{DfR0_N3YHE`e1GdF99O&<$BGMRjOrKs6;s46L0dSxyuIO z05HQ8LelbWmpzT5O)LO^;Vw6U0ATx+nd&=SA^$6eo{yPbI3a|;MMy(8clM3KkN7#K zl<;7CJ*aDQc)7Nd?(1Y8XB0L^()x`E0{Mff(W3+Evs|J<;F~USpVcXXvUCpaOhuC- zqk<*=?T52W!g){!K2}MYvlFGyj}jUdLy11En2D|v3GVhQTz$91qpl-dA$jnDW4-K` zMlY}IN!Rk7bx%}7gnG-39Cus(;%Y_795diktSy8~1)E&lMQc{|RyqGiL9^;C)dLB0 z(-7`}WmThH;@9l&yke&&0mLK)tKbD8-`v*WHRY}XPnEtVawhGXq+l>^|EBLvsAiHO z4G>L5G#!4bZcE=mT0*2`+KS`^?C~6b?97+8N-j%tD$%a@yQHkjUW$8EwOFxLaDz(< zqaD1Y&F4QyGD9@(&OdT9>!r+;twqeuHo2|0vsDW+n_Lo6L`2cRAwpB!LEQ-ZEM;fl z3I8gBqRl{GPYlsMC6gZD0m61+5ChMI#oj&OG?ju~TdNfD#XKt9UD9$zj*q&G{W3d+ z(wDkmFU)Mt!}Ys=SFIwUC30;P*$3EN>9Sa@?~)|%*Ol%MUE<vI)s*HfMLevlY<iDY z<w)M(1VbPD%A)OvR7WxpZ?)Tp{;<wiPS#G!8e#OnuymzqC5_X?nRBzOmY~|5?K-q+ z{tOZd@CW5><8i7!wD<u7u9e$4OR+#)z@s#4u~}V|NUcZUgif2TW#!2baaX26Nn@B+ zhQfNP90J;-Df(tOT4CPu9UErz4ZtHIL@Kp7#)Bzd0~z@|TY!rmj~WUmGGg=D)qp&k zypDMh!6B}^elU4HzOw9r892o`SUKF@{E7~eGk(ADo=N2>aO{u|y#)0Ch(gWS=y$YX z;FLU>7L46k%tZ6h&dBu9ra=d()Z)+|M~aq0iL~+W<F|;MB&o<7SkxhMcw|oOP>i4& zLgCn#QMNDmywdrNm@Fh96=*q6)|SvH9@u4Av`vFTyIDz0f_3H<B#uA=GI*}DE%~)n z)~gqao~Cr5>+OTV;QqN!Ic0xk02AbxWfidQ;@1DVnrATDzKXfbAQf1yKILxYkAIAg z2EnUn_GN#Pc0mlMa%+&C3{t^mxVmlDPY`TT0IwL~4y7G1=4bo;w=qUnK>(x~LEkYO zf=LHq4;#yf8~!lATf~5Qdc&3V&^L`k%Pe(J!}^fIOV1x#m4lf{Cy^Kx)3$^@wrO<+ z^GQYtz;C@2u=L)hPN?s;8N=L0%vCx%MU6DpfLS&(#ap}G9ha%Tb93h`?%h{g-tH33 zv^IEpHz<#~*FayWAt)tiz9|jDVGyx7<oOr;LUyJJ)<kidZ+*X0K;-c<_9S%{Z^*4h zl<5HWPGbR_{1Xw|?D=~|zi%)nLJuBq7DO`S0?=@-8qFoQg`$j$i=%I>T-8ozvX&Ug zkYx(3+}?t5qtI-&R-K6DKe-6{_Ghe^qrvEpN;vy>5{&hL1|1BM7|?(6gY#o^W{3>h zrhW(64rim(InGrQ7mE+5gffjt0~H0YX}4zib|Va&1*9xLjyayp$A4o=TwzZLKZBia zdP>ix^o1FMA%J9j$b<hC`?CEP*_ZvF*_Y$*vM<ZOz`pGN*V*^~JnnM*MJ*CD6W8DR zzooHezb1j=x1=fe(YO|5dwF}=i`<lt!F1mE13Ncx0Xo@0mc~ql=tN3*I^ar=Y6a<> z#L5JG7O9Q*X#Ap*VRYm~7anu8L)sz|U*!ErT+NIkwg*5Flh>J(sqltzn#~z9y)?0Z zztr~ATo6{?ssL=%8||7U*qO6Uc`ivoy=fq>XHOEk4ap80)27&TZ@#OzWKFols&Wk~ z#^6iafFwukS<6!7NJWfx3q>lGSxV|sJ@feXYNRp~#cRyhE-|=(6{Uz8f`c_8cvA6_ z0t>^O#sL1%5adDu7~X8^8mIg-#HrvkGS$4?fPVh{W5Ld_;iLuJ8FFgSKW~TC1qpSs z&^jG;0S^+S)3`;);a%kAcdB5f=w0m!9h>gn%<T{*^tI1t8R0v>Zm}Qsc(ZQ93_^xQ zp2FePN_#r;!uFKH{=DM$lLd7ll$k8!&r1>ddy%jAfL|8hboJMI8h-<hEGdHq24|5Q zkPI7yb-O^%b>5%+n)*xk=dqK-oG)HBMCu-R6xvQ#^#>LW@sPnY$7r3{lQ@z2UHn%1 zwAiF6q$ZY^@y9+6P$Lu-o_%8D5D`>%P0!49h_6j2LYJ_&32!lNpLJHhI-fCguimGt z_D{05;N|VCPR%)14*@NbIjz0cyb2aJk%`cuSZvbDz+YC=WO)!=X?Z6O4i-F);wE%R zel{u((CMdG-*OvEZNKgAfBB2+-p-Rn-U~xwN&v!hrYagBfAE9D-DLuLLZmapPdn%K z%V&k74GEXVY_vFKf58%jwb<C_6|01A=8i|t48t|`0oq39MA?j;L7eIW_Xlw;>CmP~ z;C6$X!xwAtf(Cko&>IYUbn%g7ouIL4;SAMl%%Js}E->BCc8mncsT$$Xqj2wnn&?H> zNonz7Dor>;{a+4E;1=8~M)oZ9ZO0SK`%R-|r-f}u+zd~|{J^3Ee3>fw^fU-*Q>T8_ z?H4jJSo+2r;1QsGlLQO>0f0fb8Zwp^>e5!1k1?GT5FyJJkGs{!j{?Lh__8V$5dXwX zkF5Af+HsqRu}d4n1joq%9AP<<vdI#+CftaPK#9wgbj7J)PMgZ0W@Q+U8mhJP%}vyD znl^O?VGW^=S}3gFL@RKE-c>i?zh97WUbV(D0Wpw#_6%M*97??fFgQ1D;##0Y4})$h zO1qB_gYx6aYMBU%d2aUUcjTE@bF30axR-!~6=N14%9biS?ksM#>?LG(Io5XA=vj5f zm>vuri3GR`V&d>NNNvbM$_(-PLTlj&j9iGopJHCxhDqdJB;2YB%FYA@JCp+k{HzL| zy{f3F>~c+yGLFatyft~pT}U(^o;q@`R_*hiM~xctY5V%pN-1rQDk8rgJW3o+HRd~T ze2*L?k9_0(3yxR0@^iShgk3iRqApo;hpPFldcr<sV=n5jr1WYLHM_}ZUUnx(9F4$G zyG-wx1U@t0JV3U~V<P|R4&eMR-U0s{cwqm}0}ubJ*qH5q?STH<#qcjUXV|#@s@RzI zAH~MZ+?;>6*qE7xjfj<tiHMbjiHMc^?}#_p{=26y*#9DZ!OF(*x2kP2HRa<nrO*}( zUI1Pp%E8i7Xv+nH?j91PvIZ&h(6-2I;%?04K^#i@kJbVGm<~@o5<1ZQrkkfeq>7 z(c#f?Sd0b^otgn-As881DU#;IChvQMWth@9*5n+LR|^@+QQrF#TG4JtzhB=ZsR<+* zV|Td*(^jJf4$og?pfd!CRB+>^3yUTlE$<fLU+j7<FRB`zM!qh-qZ}$9{_!VO!-$Gg zl;5~qZBJhnfQgcN)ki5;k^K2}MKr$4C-d?2;bQt2i#$OD<l+c8**47B>h!>iYm{wP z9sDT;gt1Yr5~s?eMit$==$ztOfJ2@dmmycv31?Dnbo+`r?i`an5mJ_DLz8sjigBh# zin@Z9daG?WRyd&cVo@v1N$R5TpxwjM<_X9!bfuq*XBghw&vV{cB9VzUZEDMu;2DH; zr}JSgYWN&N{<Ebiy5t_`+8&*#+$}f^(1z>C^d0dKxG55n9BttoiD*c|g?8hi1xCQ< zj>@77&BW%T?VaQyQOShaAh1-L1_oMo9eec3%ri`=B_CkT?NC0+)sw@pi@d+_Hu#rK ztn#I~*-Wf@ELo7y162&h6Iau;%_N-3INl`iGpx59Bxl?~?MSspa~_{J!u12V?u9RN zysnsG(6_V*D4Y^gR7m{t#Yh4&X)7b;v;p)4*~(pm$|s5wwH3qUs}94Yt5`>mjz$sF zG<Uu`^LFm#%?f^YU;uJ|%jCRtT;(1H7=t$SoL?;sobpPR4xf`het)G6PZpKQV6A-a z#1&_Yb!71WY*+Q%TOu-+eYTxj_$bRbUko%`)=+&=ig}DGJzf38mpoI^7AvD!WQZC2 zd1HzFEu@s_PtzGG?98X(1+ViPl7iF3OVubHusE=l;L};1t-@Ps_uxfbxbvhV_9Jwt z#iiI!R^MRN`IY<o-ObPXmTLg*+p^r&Org3M_s3j0!%<3-fO>-0a@|Ssnd>kKz_L0> zD~yS!%RGjLPT^zu*URzjuK<p{2t;nV6iZ!EDsoo|$LQJ78rI;hWs{B)z43hfhh!m? z`pJ0?ni5;6Q)&=4yMs?NWU%6P^&6>eE2NbznjAoCmlmfp!={Mg!bBEGJ=Okq(o?vi zjOQ@$Rls)r8Knr(>e@qJ-OA*H`J{ZUZu@Py-bgOqkypJ0u`RQXoDIL|!Vo)WY^4bH zaG|%&O&(DQu(Uw3uBKYy-pvm;6vQ#*d14Wyc%`oTx4QuesaSz8=m@A0RNd8t4x+^c zT~J>|XRNK-=!sKHY2qMKQf!G68uGr{vkR>^L=qsr394p>{+q#&xV891tp-0oB4{V| z$EURwEwmm!`yF~J=fmR1qZPUo*hAj;?2Q-g9rCRDGmb_P)5&L96+gn5BPb0EO>IC# zfD(_TzoMVSizPN2MB88r?=lsm{`c?t;ekcg#f!N<faaDY#0-5-4!e@cO1Fm(2|Y1w z%rkMf*84=4cOgLUYj>KKe#tSSCP@6RoBXPh19nZLa!11D_xcm_2HOJz>8ng|)x*h3 zv9`t_M4@Pmt~Z&JgY|F-sbLNpTs7se(Iy|$05Yo^@r_kcb^~z3x>Bcn)!7;zwcU-M zGF1BOp+<*j<~HMbhtiF$sDu|a-XzHtey38zC}`q3sdC{eH#zJ>BAJFJkn>I)ePtE$ zTiT7S+@UfuP2t7@q?vAu0cEGzFqIfs-oP2zC?)IZ(w_FCW!B`tuUx-3lQp?R5g#If z#Mk%%cB4DQO<S=Klbf0!U@A~JkRVPfa4HJV62EZGx*drupny<N#a2R|`R1G8KS`QQ zWG#QWG?uL+zNOUCf@xg?sqI!XNJoUfY9*(B%wBGSP<N}ITPk>2CJI7n_p&YPosQ^v z#ZN`~fs@BcJXq}0G0(iI1UQ7~pm*U~SCda0{P1bdG_(}IjB)qbT`dgd(|TS+R)}ws z(+WGUnT-6_k6uSEd22dE`=lLQ8GSiwaisdTP{z(#*|w-)o9ju$JwO+TPG*25t30kp z#Q6dWeTdJH&ZR`b-R0QSy#6Ztm8L^i=9jBOv#lTv6YB$9M%n5s6fS%ei@Fb+ah^Il z1nC@#QL1|YQvKwYeJ8o|%K5Sl4*4BZfCft>pTZQdc@OuETs!@p+pd6|MV9sEwrl4g z>gB9!*ZkPidZIo^Y+fHoi3Q%Oiu-5Q%9JVoL-Tq5gW8^Zu+)%VDvWwFjIwgoPH)o0 zgchm_CYyn)b}%aGZOuY-3H=>N5vqMMbrey$EXs%S%K`_lzZE4;+uTHbb~upOzVTH@ zM>a>$Sqw(YHqvqD&M=94848HbQD}jSyP>H}+g+aIPiz%O0X64?p33;+Kv2+LajY80 zV1Q&wF93I&FO8LV|0aS(JsAO9YvfprWqaD&l*>TpIEBaB!=&Qel}8uSplbF&3<VVx zX>Q*203fV*9_{44J^Ld}P<0*dYySE@IblbP-og7FVA_g6n@sJr@fpZ4P?Vi8IYS;L zCwIycWN<kII|vdb<j2{xF>+}DL#Pwbw6Qv+YwX};KqLBk>IaDw7~jILH=GQZV>hIb zTvjH$o&x(VpsfPpn|=P%wA-#DqmoPx+WiRL{g?QIwN2^cw207M>Bd%DK^Ch$VPO|* zZncD_damjMu3ID(H0aA?x2S3w&T#UbLbD0@%{Y`yQ@Y0_hUKZS6ry+H&7w874}njr z4C^-~f2$XiTxMGPuynk^8;t3**TD42<sd(_uagc7AIfs+%%{$cMW37b41NM<B|0!w zuz=QYAGfs6Z+Ck7lSuKJNH~mYH$V=6PhMu;)W=A{X<a~ZPt?NiHP0M=YMq@T9kRCm z5K1)}K50<+&NoA`Azs{Cy4XXM&V=y3gS(zJFG5URZXH}QDj*~d@72Q~=|dt)9n+s< zHW|IX8%b5&Qy@wAw*-9F%405l42N+`ER2Me1D32&DV*=`qJuxB0*`cfzk3;v1~hQO z{=Uor`KG;@56R{{oNV()*2Z$M%A(syE!S+slWF8v#V|wVHuvEax}p|e7oFmd4b+(x z<<~K{{GBWaaK`<WFK}mZ0rZ?+y+7!R<Hp^)*}A=S(ci{}#m4B!ZiI*8#KOzV*!c=e zb{okC0Fci<YKbG>bWUFM@MrmV1nj@X?aI<A=Vq4ILX`Hy!_yL5hq&j;sN+~Z5U+n- z!b%W?>{KR&E=P1h+5b{H+_)$4Wn&SZnl02D&XgSQb^nsd40AWB&%<6Rd)GqF;CrO3 zZtt(j;AIs_+pd`bz5|auKO%S6qg8$1ELpF}Ta8LC=?Oqim~165$vA$P(*Wa5;VtAp z8td1l2EC7NE7jniS~F)j!oyTe4R~<|n~vhKh(-yY7N`ht-SuP1q*s3MZP;MhI8}DF zcS_4e8a%Z6J*=+}=LX6RXBSzVmMz|45Pce>m%*vr387bjO;zK~@J)%ll%;atdfup| zwGFkWOE3y)qcu7clkQCE*{7W#ry77WfXngsA4&3(vrVcr$b-|hU<^o21R(53!j#zy zr2qb^Gw|oN0aM0Sba=z)r<E@^hWe4V$!>j>aoz<|)e6kDNAWQHv&C&`fj#ZUegc32 zV?COB`iS-LZ>g2$E#ffS1eDkK^|mX$PIi`oDyTiEm--a^>c<=J^O}{LAexk~cf*SH zxdid5y9dpYab)KVD!pitH5s-izM^y)6`P#?jMq#Qo{U}!I_wYWavaoxp-*)DB7gfJ z*;_HP4xs=b`eh{HNh(Ddt-~f`S}@fRjtqAY9n6m`RqpqMPJ&gXI!U6NYD@%4MD>lR zOKtzSs5{`L|4x=exRn9k@&MnTVW!(9r`gqUmBR4rJO?tPWOgy*sCI_21z)q|Ml@ci zkS5wT!dA4L4CZ>P+Uo*u%QpdxT2m=7ifL3N`!)8M+5iz%R1J~_`zHN9DVXyOXO-lr zd3#uy&4LpwZ`=NGMhF2}IRG<H@QxUx_PB&#B75BG?S;>rS4Ai*jZiL_{!yjG&Z4^D z0B!-Klk-?3zQPtM8H*=0UJE?a^ar}1<yvV&*dW2H4#MSLxb`0L)n_2$)cQBZiJMuf z=r2Hx)C=63a%U=tXZhU+M@-x&nLudbRnIfR6pBfGH>!GneZuT|9tjSenENL_H4jmn zMywn8P{eb0+-{w?`FlM1Z|jRF=nng3RitfZa7A(?8%HFpDr|L7N$#~<Btg&>e#(&# zBHc@(CXh8aw8cpN9`Om^fbBnI^^Gl%(MSeWAOK*QFN=W=x`w2<LPZ7haQhLhhi_H8 zjUjyPiWhX8yJs1`%P`{d#oc6<4~Q@ueYnkeW7!00TyMq!E3X}>SyLJe_B74JxV}KG z_YS<<*IHF89wl^aQ5}*O*43)#6r&60h{?4`Aa$WuGKDZdV>mVfPDVWfMMz<-NEH<{ zRt5dVgOkao$C0;Mu6L7y3jlUPe28L#<Aw{RM7WKum5J1sX^a|L)_sLn&skD?4d#%1 zp(iJ%B?y*%;pL&quHsQmG1`<3ks2Uo^c{M&Z^#QF>R0wqyXn}|q*V~G9Q$c29ESC9 z$3xNIjtBE>h|m)r4C_z!pHFln5UK*;U+plk{}&@o?EhTp#QvXGI{h!CXJ`43NdGSw zHrZMJ8R_Mjx&L9<WM|@H`gev+5o1?VD+YB(Gh<itzwOv$X5%Je=HMb?;bb9V=3@FA ztk3@cxOnRSa$P_BU(`^saQ;1|QKjaZ^V%?KRp%}3A*xgalLb>NzmCCGwMs;SmR^a< zCSM>KnMn!+4#@mKPW-#0!V^L$h?Mn3RbqJvJoH=(Yl)&EqlH6Pib&+Z1|8z9T*&iY z29+Xs)z8sjv8Vz2$3y*$aP={Gk(uh#l?+1rqE-h>W0X-Utf&RM$(AxLzDWU}D-Qo% z0QCEr%)71F;gmV{;iiuv^r(-{%$n#CrDy3QJAuxZVU%D`&hj&<Itoov_v$V$3tF)q zS>XkL)@ziZ#T6E-vq8Ne%V<cxgIFS&3Bw$bMn1KrM}uu73wsB}c>sx(TV|24Oixx2 z+(^h1^y>S>)2c5JdX+5H!3-ZsK&+dl$U(pd(gdcE(hegchGd#W9$J{p!cG0{jx4-$ zl40rNR_<VyJ_X+iWzbbp8}PIss=fvPs^zm$e1F6v#jm_z8$bXZq4|n7rRd)CsbCc2 zr*+XXq)-1C<D^W{ct!n(CAx||i*j%^&ni-XWo8o9U4u$J7%@tL53{QF3eQj?{7tJS zvRV&%aXF?*F8PoJSuJ~zN+y@Ad=@V{vu7Mz3>!aQ0^)i@oLZr)LD5XRk2DtC5w5`( zC2TBxrE!lQHb~vJg>UiC;@i-x&986$Z7VgD3mH!tas1Gu-!KGywgCEd*Vb{N2_S6H zPw#r}oG{1MD!Wv}W@vZ;C&Sa9gF9p`>h|09k=v}!bgX1A$Es+oWO$m$%gRD<3gdbz zuoMP;LdlszZ1;;9W2nuj8l}6cmn307`b~&XI6VYREBhjloNFMKpDiY!ak6E2rrw2c zB<x?5mi)s(9^?F@<IZRek=;G1n*AelF^HQVR6XpeR{5gIDKpXU(9}RWGAC%`eqgJ{ z4x6az!c_U4xBCiIIPpqr+9S0nNlPW74k_m%(8}4Y<L?NV)Uh9iz16?rkpc-utL+8{ z2wcLDdQiNLK;xxPNE!whPpJ`nkkfn`5rF4G0q3CHBcC_upmpa0$%iEmw$){1@M!Go z-?~TK0)VsG0dV{LrW~nw`)PZP3|GhEr|PBDAaEqLiwrl_GQ~Kb-$&iHxJDn~j0Nho z;d-)YcuQ6fHkB^?ZL7_Vs~@-syB*5s10~c5ebH97JAOwj)zjO*!!V=YL<}Kzt8+ko zm(xXLs9RDE@@g}zibWLF^ghtpb|Ze3Wb%lmVHTcS?bRd57-iC0&xz*}GB3^~>zfCa z#tV1~t7ldMz<avI@0ej1Iu$Yie+Ki5FcGWs=a1jLMz1XA!H*{odJBC&o;XEoDoY&` zDa1r?`>_vnAa1GVPA0`K6GBhRJf?TKUtDU;mpDie^=paj6&iT)YT+4Uq{&1&wdJ`S zEg_OiA{ALH8;!rnPcQfNA4PSmE*Oj70Ia#=>x2NL*#axz=?Q;oz&STKOruLSxv23< z;yBb~8X(@VlIL#mbp^-4VEWOhn|PVm5r?QEYB~J+gJ&k=Z5aqTqU2=IU%|}-zZChB zCM2uXRn?V<J}$ym=J-o;!zCN;o0*@vjO1%I?`!lTuCzFGF)Oa{Tb391X+?5Wufc)V zg@<{y$vN6QhPd19F!#Pr4hfLHt%2Z`(x%|JcppolTrslbwv2u0Y5c3VbM5+ye^GkN zat3E{DqY3TjAf0!$5BCtA*Z9B|D=%}&2HYfV}-EAwvL*hQcP5J%0RVAw!(A_*NXl$ zIRloeZpU6U?{-Ql1wMel2?IjAH0G7-+FFxut;3vq8hs@#lZo3r638JEO@j+r<Qh6p zmtFpChG%lR{dxokqGfdn*?dkzE3KfddAF`{Og4v&X_x6w+M)>9zzy-!Tz}ey=pU@G zS%|gui;S$_hODL;K4`L%1x6&Xjw@eGDUMTCIT6bg6?4GHQHJJvY~%h-EU{zOB{Y>+ z`%l^^ZW0rkd(#hGJTd#wS8tYZ|E1@Cuc!k@|JkEERhi(ysD{9w(72xB_e@!Z)88Z2 zJ?NUDG~Mm5MXy4f!G4$7<Dz&f48&w=sc`hUYtY1K8PO$}h$liFL_3T;U)uV&$xeZ? z08Xrx|M(+mYx%SQ{&1Q0*kO#3U$ClBZ`76P(z<Ln$ZE)q?9yaY?XsmDW`96&b2w<% zi>BMROqJZpWXpB0bri6!v>0sv1lj<@@ArM7dQk1V-Bx6S%%n=Un2>*Z9k$v`t4pSi z{8oMEF2mjh?;Qgsn{TqdYT1P;O$G`RA<H!J>dn7Tw6S<#|H+4lk?7#=Nh)*zM^XF{ zA~ow2+UlUKrM6aoDFpNy4(#K0@ynTzLn1|TES#}R=wdBd0a2PyObexaQ8V3s;(2Rk z#aCapZEINS+JHQSBR0+cGFcK#J9|pfcW`@sUDT^!eEiTp(vZ$X6v}8VW*4}4lmaz> z8^VOM)C^pY<9)N0O$TWLwF!V?POW}yV8qTJT~ifq!c!#1U^TOssaEhc$D|nZKeWRs zt`(ARFJQf#YcBn2HYsamO_{7Nu|W3;>r39!m^V7RXqdVsybIfVK^M<&J2U$gMnyP( z{Td268rI_b@;p^GAHL@r=zfX1x!_tIi9UE}^)<Cg*>S{fXfJSma3R?xcTSWTZxt|u z(zwB0`}wX39*8WMN{cX6b<oDn-_m@96)jp)_HG+(7=61D=ciX7@3b7M^KqN)!q!eE zzaZw{+O0=)HU2R4`SLKrHfb<waEmzNvq2%mp3K0gaUL{*TyymeHG=#P79ycQOhpXX z1f#l?BGdq%6NJslPGl&PFCX9=+y@DNa1g)JaEUynp#Y-t7nsH@5iXe0sR8xzvI@8L zc(k|=64-WGi_f4V?Dtg9@7ss7*u=0*uxz35v@IFZ@BJAY>p%9I7phNlyDtJwR#hdy z);RIkBTUC$E#)X^q+m-^pi{okT|_1OS3stW&qZoag!IEtv|OwTK4W-d!nrnv&D-TA zV?wzeKtMra$<tj8X*wAfgDlZ`Z-<FwRk({B&qS6}LW*=>8c!(`nwn%G#z%giet3qa z@2z#s;jS#jf$W59n4L<1n49nV4;a?OBBrB1P%g5Pr5&QSAfF?sCwZ;KnnAv(Rac~k z0ezNl<>QKh>E#{Vf%3?EY*2(17s-OBQ8{g0*<we98dn_=5|Kd1Wsj_D`NWK)=xI@$ z@xsX6b1%K`FsRtYz8ZG6;1^F(D}OApE&37aB?pe(;6%aND`)emEx(=%N+%eVdQ6rW zMLwHLmey7_&aZ-VRE$7*k3n=Weby(cvD9MLhY4LID`sZQ8S8uXauSU(k5LJY&k+hh zZPRLhpXKX*_vZmII`C0D>{dBTdVw|`(aRxAiN^NcTw{J45i*#r%!%Qiyyz}Q-Tght z3y?{BIc<``$?JMA(sSE28fywDU7Y@=E{|R&+!%i`_EE>$!q>L{n@>dhqO!rTDz#s0 z+0^y44yH(kjfdOia-KR%$I3p}=z`25HbqONAL6~4_FQ>rrL@C+9QvbCB2z<PrhJ)J zbEsM{R2hjWD>knIUwf=Of5ob<%y+f);b^u^xqTLh@`gN*?@ws}GS4{>`~ns%X}(1g z;M-8|RhoS8>dLT^Qbys}q@4W2s=r8UfLGK3?@lY#`gU7&)4EdXC3iwSf4h|Jk4*)| z7koq_vurgLfBTl$yV%nBWqos$FHh<h-Y;u78Xp8<Vh|QvI3?_CMbL;Fh>X9YssCcd z5c@xC#n}IIt=PY#DUSb0Q~!ebm7U|Se~>aWF)=Z*GW~68V&WoVVc{ZTX5%DcVf$Ou z^#53L_J5v}{z7ZU!ol^o{*aDq%Kl?rMWXr@;Ah96!Ip8gxi-FxRL_LKMM?%u3XLT0 zm8w)oqQd%U@K|$HQEq?AT>l#ijBGk@VZwj@uA;_XGfLBe)qLKjfl5TT97ganVV|bi zIJ<no{pQquT%G@RNGitdkLSaYPk}&86jgLSjL)ffp~e(^R&vj2PV4M&l2d91Utik7 z*#PiquyZNP+rW4JPZv_Mc<RX-Z&GM{`xd)fhxM6_O_-5(sKiqbOOuz@=~l2gCcrp< z3t2J7cTIrJ2Ot?ge!ERrVTk3R0q?z0n@K^Vjvwa9G2+t1=1HybW>Kg8j@O~n6queS zub!T0gHv*UawS;i?=+vtk;p-((v&nIt+ijyt9|9T78ZqGUm-ON9826hl5`kZFIyhe za&UN&9IEFVm#yd09?o8FLSSXKV+c!NigOG^^l79`<7$A+X{{(eoU3&Ruw6X;?Capn zIkSMycq~}o3#m1xVYw!(*GLv}r3_-;)VH?&-H}<a>c0x@1kr$eCb|(_?vM@OHNu=t zt!1ixqAQZNh!L=1RQnZHMlrI!GcRe1zoQ(mm}-JKARdd0jO?Zfi8C2TO6KWrcP1$p zqtOGj-?#}G7=O5)uf|g^a{`iv)1nW0>$hE<5e=4?*0Pyfp&~T~vpKSeMWld!n&31q z*e^Zi%(Jypo*73m4di@B`Kf`-kCUT;=116F@0~AQTmd4(`JVcN8{NgVIAWr*ypu&_ zyO&noBlVyiIH1h0z5zO_=_mA5EsX(F_s#4QiQUHvRueK5VHfiN3P#L1URg%Y<lSMC zfUKcc`lr7dU~ATsl)HzqG6cZrPjM@X!6z?~jWPD^%&AoO5vkX;D*NE;Uh0z=V*4bN zY^+i4)ClJrzfT;VAVlN!rGGDAlj9fbVwUIPA2Lk1h0{7>%lDp-0$}%WXFKYdH1o+u zqBnn($h{sX9@^q50Z&^18OJ&kf4!e}kl`-O6>f|pu1CEd^iPZBJ>+ws+8E+KtC(%6 zJw`1M9I95e|3=zAv0(r`e*ZBxxWBAzvqceP^!otujkx;8Ftv~X^#?^VlSFfO)jce1 zY0eHZG8yOqQ{IRdknuO$k@7Xm68988oFD5Fsjeqmlrxry4eNQ{7rlAhf(IyMsLq(3 zB1dRjDUF$b@!~}PT{_tLJv<v7Eb{PK#AX~CP9P&jIu2+ok;TZu0H<)Y`Wtv84)<7O z(jmma^2|3drU5RXQLBTiHI$G-!ZBKO{kZ=1y8E{rRbGUmZvEZuSn>+9We$KP8n|I7 z*O9vA5^vhY`-x&Jyc98I^P0s~Gq`^C6Fr(0Z)+8z?~l%PL{PxV2bm-RwspG%^X+xg z4_5#36rnUd!TQ#u);vQGdfS<?u_YIV`bRDFGvk=bV&~BBr8n9;9)Ps5uyOUOg@Qnq zwzOj?@yE7|Ii^XwM|H-A%OR52?~IZJfAr5|38Z$YAEry8u|d5)YKlu}WPkvS7&S&1 zO0EIWWN}w#OTH4%9hJ=7)LPs_l4#(K3y5rDcT-R!`JB#g(_f@=p!xgfu)+Ml!A9WF zHYFvwhfY|ha|%BOsI|j^+;btB+#)jLOqM`L*P)zAm{G{O@PawfeG&#VyH#@j*UR70 zwe)cnzoU~f;;N!!G87%m#BN7kC#zcS_$>v%N)NP8m=iV^WgxnW3ElAyjklI;Hoes= zlA?!633|Fb?eI8r%zW>(2Un}E)_I(aHlN%K$(mh#W0GF8JBKco`addIi&;;v_YXI5 zkXhU(;vz2mKoZes4hUiFfaJuTyT=y$!F;5<(!xlac)0zp>Dqz4J~C*x7c{l;-Q1(@ zg3a=R`oHwNpUK<g(Q;LIDz2!_HF)yf3O45s$m5A_wFe2tmJK0&Dl+S=Ih;WmkXoM| zFv5quFB844m2~TiW}tgUoNl8pSyMQBT@rgTe-$X__U%3A3xQj}CNSixWd?|~ehK3m zkVlERF2g6^7GtRl5(q58XLE@UpG^$R*PjGn)bSf3huI_cQ<!vPV!8sJF}o>d1Gy}D zc1PK(^XzYfFf1Fg+d4r-$cwNO3(VQmo{P-BFRu7iwl(amE;~{ev1o9^et<!M^k4lc zHD;Y_lZaVZWZf`6a=1odkyTh{vNW*K_bQ{(TDa>T2p%VTvMX;^4ePQ+vBY;;FwWds zzMcj6OF8IY_nqxL1@EYZNZU=c%qv}Rd06;3<0r}GhnStHgn^PLwXeu+4<$u)q*~R6 zCBbuqt3}_v`zQ|yOFnjBETP3m8QdpmUtZgnp7r^Ma8`Z3SdEh#(Nf=yVQ>si3Li{r z@)n<T#J=#qMwDfxbsYe=?w~9aB0EBy_{N=j^+8A+d2;$@L>VRVL>lDYqI!%6=M+>a z)_b(*eR!k+@gv`TfF&L7-^yEZb6rd&PzE&}2?r&Se#9rU@fQ4~TmcL;Y<=6yAg~0i z`pbtB)sDwgi$$mj-j7*7*3ENX`jw75+K^88?epPNm>KE5%}dKW%_3{@^3Iq)78Go( zTPaN~Aty98WhCSFZ7N&0da$}~bjLt5Reu#0pXS+;u?1Lkor87%@s1aBr)aMRuiB2i zsJ3m^!-EkuDdm-Baj0Mnr<MXl0p}sP2<*bYvcY=ol(tHK{eiQ#qzA?HvB)gX?)`Dz zUYPF{DfolQo+~lVfL^XnGW4sZcVDies7GiQE@4{`f|Z#WcIvHE(2S%B4$daX9>uJ# zi<~X0K`%wtB_^&=ssIaX!aRT2FQ9ervX)rEf$b;C61a}7Esh}yn$<14hzLqc%5&l| z<@D~$!y!~Cca(?ep&IXn5$`2&w*VMJ5*qkgupDKC)v2Gaqhq-;Am+Xyc*Hz2Oc@Ev zRh!393F1_{q76!=PpS&>+nl0RIgG55UK{$)AwL)jjG!QDu@aJUh^~<l{JKYoq_0#A z4k{VvHWy^4p%vhE1PrvF%UkSzZF;9ZFir-Id`Z>?^h+bNCOT&7D&|}dM#WOKOe{nz zNM&4nMKcFa(RqO%hk(Oj(4kD3Xi+F9fqT#*Hf@mdqiW`=5TFj$@6k)1LRF;3cEeU; zG;-e&z5P8oT9E?+zCZXmh??kG%tguBq1L6M-tAW!2)Z@V9Zxvy*2#oRL6R{|`!(S# zxj6DRcc-+1DQ`P$GKXSaLciY{$h`~6<h~8m9yV~c<0|YV+w`-R)F6=s_mto2N6pqM zC72E3_AFX}kGx`c+u~pwAF+W<TDX(QPJNI_d~ijH&m|RhuKQN7dn5Q-u3#65?$jm? zs=FoRXF;r~e^a3L&FPs<d1;x^qvD}_1dsO*O~D9b6Av~gFiY2a#$ORL`*U4cUF*X5 zu3YtvCBW~l;`aHI_YT4oUIUIR>IrX@ubu$x&_V+PR&3c_h?`_uF_cj;7Kx57Zn-#c zdm3@5&KF&`XiO3-Px@RmZS*z!Ve?9+oOsQx%I=A67&6RfqMfr@Y;+QX#|f}sQaE9w zN%<#cfpwIG_0P0~Kr*^@=q~5az)$wc8sFM!hOYWpv$z`lkVZO#^}8HUkV19OkiX)X zzoQNO3y$Gn{wI#%VENzR7!IcY$T9zdGns?w|1apt#lrdbF@}|kh?SX{h?$d<h?V8< z1U)&J|NCtoaIpLZxo|VF{T*`Y|DU1}za`CkQx_v<vj(q>7P2#KBV&YLTHOK=Z$irS zQ4JVn0BYXP_>WC~^@TzP1(uYQpP&gg?wU&v^JT~t109AYfQkk8_%QQ4lJ^@~mBYNI z(L`g51)D#fPfo*X{MVsUh;A*OPftTy{D@Ih(Yu9e72b9GOL|oXn1=U5`oB(20|N^B z{uIyznd6HWbs^hX-7lqUAe;W$k(~2*W`_9E`2c?{%vZGQ9Zp4Psrr;i5#u&Qi}(CK zX7sSO>)%9lV7f@D0B3$2EmJQ?zsDyR!_z+CenWU}GY?i_jW$z0pg|?-Q@4{NSZ43k z438PY-JH(HMn}u0(Zi-2-l!ObTp^B=jFYpC)y@-RjOles7qJmvH*1_Y_>=2!$=~(# z&nTYlz%sBuim$WZ3vF=arxY4SPE|n7@T<okvrSdw=&ObTU$(B}A;oL^d_sbko7EfB z%IBL00|Iuzb>S}dcOkaw#Nd)qG^Z@aa2JO}`bz8~gLDol)KN@jB-1LI7w-G=nzK3O z-{;r7i`9E!aLL+M53Mfc<+hv%TJo+9k0R+e>JPfljz^D4o;Elo#;8u~BIu-{2{Z?l zk*Mmg4-P0MP4LMSbgulsYuEPr9S70CKujHePCs2^NNHSbJLe4Eri-{yzoZ4fTDjV* z?$ajM()r8DD4ntFp6_Z~)b-+vaiF`&r>ZDti-@Pv)xH*U3AX$^p0ayX0Zx(N8pmNd zh_bQyV$qV>IWEhXdbyc>nSQEpZ~fwOz3cvhPBmzVB6c{c^)GC!Cz%$8_d=n4yFA0F zjTUS3fTc5RvipuJ5e?+Ln*}0=LbD*TbQeyVBa(1&XH=3&m|ya;zu`t<c4O5!*{bn& zeunvU_Zjy?2ElGA@hJ5Aq7jz3AeoVT{ti+CUqFR##Q}0(;L0d);ifzzJOLmaB)!~q zg*V|<aXum<M~r=Oat_k8g&qD(1$|g!$J-U0aR4Eubk$ojYXO?##SUuX%&Tk@j7H2I zi*6&M)%#wR`>@d04Njj=R8wy?x0N5SJvE%aw>*L&N~ugE?+ymcv~|c3<nz!Rbx1&4 z6&O#GUPV#Y;N3Kbj3VxX>pXSDO7|>9AS2lrsZ7Y5;7c_VjRgY2(#bWin_QGUlpn## z-p`1mBV8wV&S^p!r{mRZbiK;i-)0^4O@D%dPN+RWNR|1+CSxojrD;!EO^+zBPtRE~ zI`gR)1U!U&bb(s27aT|Z8GP|6KBJ8<LekV}J+h6U3^0F_@fJRAZlBFV94B+yQ=S8N z#>bSlaRA{4WAhR;&xXB+mdr23b`qEY0Gi>rzD_35G|9CBR%5QS$``9tO&Re*RrTNI z7;?o{auc{<)%8NeGmDN;lHA*QZZ!>aS!{)w#&q_ldpii)+4^wW;YXtby_dPFZaxPI z!@wq5&lC#;RorS4L^}mqzLlp&38GfvhQ2BA93015Ar@2$r#w`YBSD`O$xkR4h24w- zUr`4_-XI}s#Z0Xi9_JSt!es;sBA}e)ywFH=4+rlAq#ih=jt$g7Dd11JAQBv5_hOf9 zQJfSQx*+AQdn;t#kl;4P&>>sy0WJ6BE$<uYq+Z^GK<<V7{C5FF(4}n?0m#JCp&fe) z++Klg9e?gd#0+)lne&adY%wwMsy5XmrG%YENtH{Q(BpVCl~;}<W7sM=Z{fII=^B-J zu;M5EBPub>qAlq8E3S)B)Wonwod>-UJkByb2a%ddMo?uGZkK!8I8f$j#l$qscl$~q zYCkk@bNhtrm<pRbounfJgX;#Z<!m86qsvlUr-{M0C`MrCQA|R>Os7|ltD}b*Qey2Q zcca17!EHUSkAF$IsS(LCA1r{_*+wlGVoX{{NU*zc@_a<97<Vd%s{K4@L9v&+o*Sl2 ztMg*5Il#J|k{xYO3grqcuOfW#bGrR^AW`%+)d1+=gSh+3<PnIE!XHWpj8{N;H%Wb9 zVHefoDBy`~+Y;lO1ovLRBCEm=Tjie&39|PjSo^&~$|V@}ddQsYZJGC-3<+PP!rN#_ zWg#_TvL=qO*m@e{jjSmWzu}yF3!XqBAHjFRq*?XpCR#j+nu}Y44!ydu4Sl6ZHC1mB zSVDxJypLQyM+06sNBR(9^&mHGH?21<H_bOqH;p$9H}wMo6|%<W$<USY70%XFAZ_<k zZlcd340xrxhQZ~k4H=Z^XV@0y8WM%SCyV>Tqp`}j6y+4r$T1!(h>bv+o%-*YQM|r{ zCU<3lS`kQ}BT5U-eL*bPs_p{f_<a1lpU+P}SENU7Pze!Q@g8`lAQBZD;J0F-n14}b z9HoWGs>4(B+u{u>zZd)Hs|{Ih)%xz8=6qZg@KrSN={_x$_xBDxk}NPlh1{m=J(jo^ zOx6J$*)Vj+8h$`y(ypiChT-m04x0*fT8q&G(k-dS&L{S2@4z-7$L$WJ=Fnzk1cl*< zWm?KiD1J^9ItCcIx(r1|NKInHL~HoGyfp4z2|cJzs50<?<X=`Z@l$S-s<`B-4zM2Y zOy7Fo3ad7chO670_LNEgIZ#&hhD5$>Eut9@pHb$&sKI9$Zuy;2mg`AL<VM99S9830 z$pkXbY4aJWBQ^60qkjlBp1$swG(6dK&_=C&9AfIRzALFR#)5O$(}WQ_#0ts2oLAmP z`H&cbo2C7N&MP4By{f|al3dqGfgqhlF@P;rBa+uQvf0&cx(XGrHMf%{(`pXa<?cbC zs!bkiP5#|_6M)iovw5w#H5*^XJ(LzVneH(6fCRn|<Mt@V7XnYLQu2}2$_GdpT1P>| z5-q0Y0A1U3t=}ANn;S$#$Z`SpZ^vVS_d$3%#miTg5{46dX1AM`kVu}+#ajjkm4Yfw zw-oTnkN<4-#XRx?l_C^@Fi**y#^BwLjpjRz_!CXKMNz63Vh;Q*e!wYKtWxTK0XrUb z$_ricJ#9J)uR5<SFx~u>*YCn*`)0B)OOhAao#5=#&ZmJb(i}^in=`d{96UW5r+ilp z$kL*Am?@tus)rVx8LGVO$y4VfpdFL&1_C4WFxHzuLV8J`GM^xKxT#;GW1>6#2HOSx zm0XkY3lcLgDRhw0Nv(7~pX_MT1PITmgHAU#yWc-CLu=RrsZtIPe0s=srYv#gf2BC2 z*G*qBFKeaCXs7zq-=<CxRn{P{Kd-=729hv)CCH~#oSYtxreUJ5bZF^qJ?};*V+|Yy zX{!;FFy9RZzK(#18mGa@;SxBe&G%Kl)l9Z*3-hDVgOUpW_!tK9oY1<@X;?b<&B$W? z1-IL?^z%A8jto!TY79bMLI4pi5qjkt>X*sB#k#SGJSFtYLM_{oU<|8mU@aJJp$7_l zT5*h6c{Tn6$9X7=?ICkS8;p;d<8qIv_CTi)1Q(kGdiKn#kO3Ll*rcPv%8w2~1ySN9 zd`P5jYPh>635j3>XEGHOjFkQYs)q0Pk~N3TsLws53pvbCH!)}BpPc0@vz|Lh(f9@1 z#asSeO}R$Wh-+dj*GnE>w7<ulP(puDt-8R;=%E-7$x=~U&2=Lx!I6cd!aW^*IdKSs ziMYlG@I`&_5nR>g`^z39MP~F;UB8N9C|p_$%sE!=7AS)T&N8{6KV}pT);xFYdOSWr zKSKMUZ>Q8<E@Pc)=Y0`vy^xHtGo~f`ZSk@doK~Q}8E1b0BhVmvw%ld_D$eFM1yXR! z@xpmq)%K<rblE1j<!R!teAInF?-Qin&u||!IisRwetJ$ifNkULa<osAkor(=p9Ja1 zx~yq9)<$k_^ElO_S)O{ol}bMrZt-|ib<lys2b)Z;LvQZLMrIJW{dop06>g^jgz(Sv zbj<@;O!VQ}zko6h*8d`uvHdfYvHzz~_HX?4FSy(}*!~-G5c@xK5a-`paqCx;cUWUW z_<g2%O@&xXGg41SxYYPf2Ln73cR6pF*zI62*wnJF!?on&L7C9L0f84;K&hT!WJprx zh@HEGMo44>2-L)c@HdXfQvz_}p3-yc%0s17<HMz<|H$-fPr2qp?fHokZXF)@Dr7~h z^?@iliml>AD*r>^0dfRP1Jdr6=NGiMOHVxz>)sbK9lmv|t=P81g5QI5j4s91D6JZy z<sNGcPWd*|pCF*sv)RwpM@ghV%h>P?&siHiM;|I%MN28tbafqjn9M?@)}xSo3v~gs zhb2lTc#_^s=B<E{(1_?N$vd#hv&<N;hno@cUh>N)+TCLpRoVP9X}ocY5SZ=LCO<Es z5w+=bumRT>^AK4e!eR|DuU}^>G_<Kc{@A!EzglPV5al)K;;;`hLCkw@p#4^$sW-H3 zykkz~yq{<SpHoD9PulNJpV*4Q5_fS+MF*;kochZg>gOMQ@imW`cH-3+p4Ge<_s;0Y zCh1oFUh+Sx^(;p`oCmrlX%dm}`bl;E#}wC->601!q618Deeo>!Ox=5mshmhE(`pC` zV#W*B%+iw!sn{iOdUsfTMlXqzM^>7CjajmvCtq&8Eql`D=@}lF!goYo$$LatI(t&i z<W3Y{+Ruw647HbtV>f8giqfHdgNU_IYI=9T>a;=l=?BJA#Cmf$4<?R@G5?^E2`=iX z5eNMB`c>#^8ONkE(!6pSC#rV{sGFAXBshmMQ#A6hx`#{*#CpY>QJ$&(SxT!{bAE_Z zz|U{(x>Nos3XfeLa0l+_aeiZ%1OYT8GCuRo-h1FO-mA8qJN2($F1lJ75T*u3(fJ>V zht^8(cukikkfIolBK$7+myO?tKHOtuBdsF7%Wsnp;$2dI3qi1r&I2DR=$?|>R^+nV zZH6Ci<ThE7q}-}S<0e3r){p1%7FQ0fhS8;m(`_3Mm%nOts1q8^8+eX>!3={M+Sq@y zS2^v&6HDe&F~%^$w!~lXWV$<`{-W;&`49*y{HwEy<G*%RaWehWS;fixzw?0fKhG;R z4z7Rua{tE%rGG&u%fb0qF=Gw}ZU%O4W+sk*7c&-hu(vlib+vY|XHar*u(P(e{JYOh zEFA1a%<Qa0Y)t>i9JBqM=cd2dXO?H?{73kin~8<<-%TZE?c(ZeZQ|x?ZpNVIY;5mh z{69wg+d1fe_<#Q~8#@!*-<^&7|J7_997O-9%4A_@{U0O#=c92l{WlLAa5Dd889wLV z>&9G*{YN*Z!2{r989{=r!)q#oe^1`-oMf{ph!5K<mufQHHbPCxCi*3I19`Hn-2Rls zv?ds&r@MH#OI=+v%jI;!=H@g^4X3HyaNk(F6ei%ElzNYe)x69O$09=K0;|S;NN#~t zF=AfJBT6&i!)m^-HN2N9lBvW%%;v#7PZhn=e_&98gQ1sfkNur=tdC9A8Z|7w=zGC* zDp%3K>!U-BVCCkgNYqv}rZ(<jYHEsc$U&a`JPTZc2;#)9zp+{cCJrK&u}<l7=uh>M zo%&pl77m8KeglSL!Q1ZspY_Rf5p^rG-5j(oo0;N+QhL`+92BCnB62yTsC6Gj4ewiK z+F)ZW{iu|5^y7Kozg{dCZnSKu27O+>Q`2=cT=8ZG;O=}=82q9uCO1iEw*x2Gmr)_I zK%1wcVTHBXa+Bw8^5X=0k$)GHeTHU?G;K%KHaF?3FraPg9Tz8J!|p9#_;!_bx0zGx zRXg6R<&njgp_8pjJJkjM+2kF-!r3R_#c^edqB5G!Bompca+IL)@v50x5!y{=oSy+Q zc+!WmOf~Mt%CW&#F0<fBBPA*eZIK#!ry`&r|2w|`U4KWmd}B;vvp6b_)BtS*T3PG3 zfH%*6-qeTrZ1><}BSUw9f&Ok<LOdc9wn})mwHu?&1tx+TNgg9X%OTht%%{U&QV=0l zUq|a*$f3v|4#C}!gG<~4&~?(3v1B)IVRi6SP-z`Xq}VGLX47P@D~Eq*Z8z16J7w&q z!RA6l1yuqwy@T=N|Ksf)n=@gzb?w-;?WChSxMSP4*|BZg9Xsh59d~ToX2-U%YtHpn z?W#4Ox7M@v+H?PdaeX|-Ij-YOCkybE*6ZI!b2J!A&p)l`&)#6t<b?U$%*x}x9melC z&kPR;YNUWZrFPxEWLBTRk5RxODmC{ndhHFJT9>IS!tttXSUpv(B6=fPeiMI~#}dCw z6-Tx@KWI~KtNGMVR5_L5vE>3laW2K6WrN`;<{o6Te?}#V#&O+mhM~dKA*ZGwBGX;B zOwQ)hdmuQiVbn39yewziM=8@Rf2$sIed@`*!qd_tM9SuFPjzBj#$3#g4*;BUd)IS$ zOS4=6n>T|qn^SPFeVgeu4_`TcVeBpwUk80`m-{}1_}d;O7cxw=NZVEvTXDDXo_7lL ziB-C*c(2?Dio8HwDcS1U*cIkS5(GW{_MyE~zKyy<`5uL_GPf2(rzsUCwZvt!2jW`v zTf$B<-3AX2e^A4S)$MU$1Q$~bD8dor6J4|cO+aSwd(8a^GM}dQ`fY?H*tH|GbMj#% zQW{p``i^3?yY{&-Pqk@XFBn`99D028vjI;hcZfF8Aa_b;iiAdlW@5ZKgdhwCLYQ`U zGydo_PB-Tr#T4(1tLiPFLR0R2g=_?(kolR9LF$3fiE2^uEZfcpV3;cQX+E+(+!F}z zs|?+hBz~&h75l7u3VxwJ{&+#&xv}G3pyZ8o#%EzTPsTIe^E;ao3=mF^G>jj|(G|_^ z14+%%ZH|Z!D{uPRg9NDXJWLpekUU=_Nn{?@ePDA2gEDa$&>OSd4&_Hyf-=iCINH5S z^5QJFrR;DLBL1@iuLMemkN{HVHzkBl+Eqlucq-nc?DX{UtCqK&Ma9*McS(mxm1t)# zgfa?1pE*gFqlL)>oHHY1k23-M{<FP_8WumfzXe)C?Ek40i!QqXzpU&~wUr$Zjr=BZ z{74eB5%CZqT&yDAWH*9Mt_b!@Zo=V!1*suN;Qfg3>?9)L{UseygB~#ba>eCV)Me9J z^=p_-H4xm11oQ*zcUwi9vQ^BC_z=}tsA{q&WJQ8TC7c~j60Y6Pn6^nZXJSpdQg8X~ zIeXMxVKFxYtSbcl@289wm?^13BzyD+)|v_se^Np!jN{B_7&a)Fjy?Kfi@(wAiSpe0 zQU|O%O)aBI?PreOCCAYFmK0~uQ;^aM?=)v+76{AT)EH{aQR#q&mzar@^+QF8RekM6 z3%FB`;{i+pakECOKUCtcsb|w_`f63b<K-}siCAc1a!p}{Gl4)m$|qTnE$&Wkl0;$f zGD<IYeyMUnp5-FP@`lU62rFP%yujOJQV|6e_qglsC@;lLcis0}F!rRLfN08Ui_xvH zRJQXdOHKrIVs|k3*9Kxjrckav@p$dRf?WBqxO6@Zyv$xAx0@3)L}q}1{%AzXo?|K5 z{WTurmP6bd3qQE+uT-Pom59lq&`<Ni)UaoR3M#}89ylFkK>^`wJYMTCqeodq9v|N) zNn-4^FxkRIBYia28lm&Yh5xPyLcutkpM7l4n(nE$WoYn{m>k_+rXwAUxRwws<KU6v zHyQPBpqINMHgQ3$(VHg@Kz4i&`?;4Y?R+&(SuL9rddRm#;d<5=T+3EkUMi>~Hmk`# zVU(@T9RU>8L@F(NW(|5w8`|Tnq$X~^gfurxb)JRDp5Ajw);U(zVR!~n%Qt`#vT*TM z9Btq@xuh9ZzTIv_-!c@bkOSH-WGO-aTV<fI!f_vh(P69;@iC){vVWPu_N?Ue{%!ju zXD*&3nHAXNRFf<_sR^r!gvzM2GDuBg#I-bAO99RG>-3~#H}c0ZRV`C{`P&xYX(Np* z)MIqmIX)R!N`E4zx#A2{x+J4uY{LFvXE0+yophkca)1JUD&8empWPNSji}Vpe#bi@ zS&}!yk`wQ~2x=6_SZGqnmML{O^TeaCA5yjru#q#5y2lmik%E9{g+M9#Ey-iEA@-}r z4%{kmD6)us$6wc4aL#oy)WZ~)wN+C&)l<ksiO}qp!Ilj9o6@Nl0^Ecq%T?h|&(8Jo zr$v*WTV0q$A>Q8iiK?Gf)VupMg<%4)0buj7lT$yc1O~U~Rjb`EXkx2MJ=?OSZI82K zei978JupkuNMgh&u;{`ZL{3Nj6u4~j9aBgE^)M=PI1U<XX#OpprVzv+tc1X%G2;=) z#8d`XYlUM*vv~XfT5-1_N1ZjpzA~p<S;AFtUX=;s+B}!nNFFV%W=~%-AM6trpp+#( z^cyeG;-U>T#XF^3WSuyp)TF|H?JfXTa{0;K-fotpU=Vi$h)Gw?I~Et~GpMT7dEnE5 zMaja5$a-y!Kw%1A^C?nMqLyiIjVq!he$xaKKbDbHII%prfRflh`Bvd3U>|f$`2Zo= z<azU@qyV6%XthuXFWpGH6jf0d1}ze#pr?wuTJyCxQ};cPz}+jWb<O#L|08haC`!Jq zv615#L`vUB@15G5g7CYlukyL=S?&^cJaww^z`Z;%<6vx0Hx9)-AQQ|uQ)|3c|I7n; z-_M4gafM=&gvnIiKM@&<`vayMbfV_02hn!T@zxWpWAgqL$R4B(SOfb#PvI#(H!V!h zR*dV=x;An-#`$CFI2IxHL8(prJ7w^K#r(I*>*~hLfq)R0<JURiERvr#tfwvO{38m4 ziye>Pb?6t2g?vlh^Bg@mxA$1B5r}3jG2)0v0UvOL0`{+d?a4zn80^fTX(&~(PLn%5 zjk;3d)I#~IFnw1stU*8QHKM-|Kor*DZ~ubxI9dM&=dt|-=l$zWiu1qTN&Rom;{^O? zuKOPpt#ShX>QI2~A4VuPW|qH8AOH>$R#s*b79a-+E8y?k32^@V_hbKN0{M$&87mh% z;O`JfiiTeNdK;?PKkB$7p{%QElngFZ+&F3LEi=6x5jVi3h#OgL&(u>1r1afYFg}od zN4GD066%+-vdFH384?MQrn9*K9a`UNwyA`p7tIqP#TbR3XY+uVN~p!+RgckU>!g^A zg24qi6>g3nM+S{6NYTtN{V0d3(TY{_@EM|35BTW|Hmq>UIaI&QU0XEgHX;t&)Jg{> zJpD^kwGu|Mbc})&-<^J`b(U8;Rq-@UfPd3zViUvLzZI~`2+=|r?{<q%9ezY^##X|) z)v5UGYBT82`sUy+=Xc7Ct%T9j?3fw#Gc1Q}c74$N2G@Mi7<5<`j$Af7+RW79cv+)R zFIyoB{g!MbX60@lIHEi|(Zy+aaTJZoOCOCo`m^`r`#gTgIx|Pxwa1-+ZfdbmCiz}K zg1IhgGtD?o71@jx?qDKpjBdFwbf^#aijWJw<MMKRGcimM8M95sCkd1k0+MGxx1$iV z=a`$u7)0Vm`A?|+W{owFZ1t4RDB*XqN3%Ck=Yaxzs2@EJA2XUtSIDu_#hdGH0|`yc z<q5$goIAQyVJeExM(u11=qmhU^0>gb4Vq-hf5h~Oo&EN89ZFI#pxtUz@XEAHV>pJA z$OdNBNjP16djpc%nh2k>BLU<Y2o6pRgVL0!D=S=r!g{iPA)dP+lC01Hgx3sKk-R)? zOCLodyW3!ov4%x8t`a)po`wi0&?wPt4pHB%2^D4zZ8BIOG$0+;?Ap6Ng96IU5FVEb z2?k26@dCc3ZGI<t{)CAMzq^%Rwg()_NTbSeWgDILdCGSRI2>}h=_!)HSy<0ZyW9e9 zFldZlAkLGZukun2&nh*a*dgDQLIaqb7=*}37{%jw()HplW2rAeD<cdWzs1DOtJ0IK zN8);-Scq|miH4)wh4v%f?>s16p%ClqwH<Zw5}dlx4^1IA5^7!sQjSA_8PKhiyC~hh z>59^3BGu|8&_QNU(??s#1WL>B(s4UbhM7QGgv7r4T_?$@@NaBx^o8p}@q@GAz9f)v zG@x5eb8R_oEC%C{db6wuI_*R<22gg4F8SJRHZWx!M#e|<&PuAR*97JlS`WJDZrr?R zB`=)Vz@NNWim3?Pn|&2G4h?h#CG>5<weVh?T0#GL^D@PpRYD1O<mVA)fuuDq0!yg% zo(b_|AU-W2nq@vm){2lOQ^&Z)=M{lEIj_p(jh<F_<q+#{Z4*@-lryMpS*l~oT%op# zQR0mc>%}XGOwP{wrBlF8D%ASveYx(Rns0zbt{!BF;b15Yx^kSaC`N<mBpb{QsbNOC zL;UV%jHh~i4-If`h8Y|!6)tqn%ha@-0q_D@p%fU&LNId;Hk~(}aVaEDwwcZJN1eq7 zq!d;_4_K9zI6V3gofPLOZ!3u;Y9`b}RYMYKq5V?nk~;D2vJDE&SFK3zSG9;bZoH5B zioCs4ro!#ce8lJ9_%flm9M|nOkz#dte3x#I`CDm^D?RwFC#y6&+fcej5<w1XOm$yT zld8lg$(~GBbBAfXE9`8+O&<)qsiW(7Z}C$UXHy#mumTwb;QIz1XK&Vx@rLTHj+=%S z-27KTr*wki06RU!M}Cn@Ni=)JDQm7=qxsu!!ccr@b$?c82ubl!VM$A?a5B(lqCl-R zNuL9L^`rO9HrttpPMJC(Y&@UYYPD$Wfo>}+Go-7$Hj{vHQc)z$lwUjMtBM}wXoGGY z2XHzZ+=op8(FvLSr>+NC`lSrvpgrZPCjtiJAg61()8=;<etZbZhu^8&RRHl)rqgsF zG8cvt){3h*dOFkFKx#Tvm6-i+<|X@>P)d~v;uf?7^Pmozdmy|SO8d|yLUUoC8htOD zYw^f5S8G83e0;7L58HaOH|j^S00MJ;+<(espE?c;(F}I!*W!B@-eM|(-hH6jJhEb8 zt2tahAWof7`~ezzGWpigW709-Fgr6L9~h>&o>dkwg@kWCVR1{(r+sGi-BjVXS6I`; z8~m;<Z16x#-2j_vI`Rv$F~}YJlT}Q#4JZRoTTYDZP+^hC<l!aQ)qHnH*$<|w!M?ql zmBX6?DZU&$Xua{AGJ!$54rstZRGaE^|4mrxP)J;@(I9rWE~;7#u*06PmD^xUUr(?b zGJ12}63z9LcP@3SFP55j9bnm#9g4W!G{3*;RRO=_x+kWls;gUyE3Ns0o`Z-P7ywi7 z_?_WXNgjz_8l%_m;oj+?Bhr5@znimzhnzl!%!rjUR@Th=RbV_!<<*M;NM!Nu#W<od z)1Za2Lo`WU(kvWnD0_qHPe9x#T%6L#SUJ|3E-9^yyU`#F90WV%palV-xMWL59TcF# zBg{DK(Rb;87x4vAZVAGZvU-RKxwp_$e&W6Tqw76VbTpZM<#ZTI4IxRt%*brEU4@m0 zt-WB3T1o~*u33@aiQcLA{wm%0j%(*De*WT*)e~Ej;cJhTH8|Z+hu{QZgOg9My~<#x zE}0cXJN0GgmJ$wlL5kcXrd+^=@gy)(RZscJb7udY)&hRVe9zeyUgVUMVjD5{05c%6 z2%D^PK-4J_?P_iIF{{4*677uvmDIb40{&OG1=FAMCaIjZt@)-~B(`s9oC`Bsbf;gx z+(*mYBXzHmavB^J7H=d)`X!kP597nbQnmaV1~O7#i8+y3fyrs<mX@R>xKsJ2Ck)T- zeC`Mj<N~%=>UoaRlL*w)7TfHC{fCNenRX#(o^MjIvazxJU)%FPp+}JUpmcK|b+zL> z3g~xwj?Bp-nZ8#Rm8b9X`|6DSNZg^b_RBia;8#O$<BX%x%fR0iOIWhg;#=aKSui-3 zT7=%eR#lN^kM;O<gcrZO44VqfExghT)(lLa`<?~Gig8|z`S`-)5y;$hf32wWutK}E z9Ksc3oj^XM*P-~Z;lr^)+X47tiG^LQglaOPU!hFD1%25%|B&M2R}*Q(p*G#8rf~j- zT9paE9-&@<%-Fia`QAje<?ARHV7*fpR-!6$;yd2O%>(WNbTK=bB^khLcYZnvVR3kx zx7jMq!(7<E9AXBB_Ulm7q=G|mFMAQ#H0)ZEzAzI?sxzU3rE^4YeoaDqbun$`4Dhw2 z=3$>CL3(CRdZ5Z}wfnT99gu_(wyxx8d%?x42x9}sARf8y<|O?kT?&CShlLGh^DV@e zTOf_!$+l5ezo5(y&YlE5AiJqxoCBMibWiPRwUOEd8WiSme_3%K!{turhH#AmCqi^K zZURS^1Ub~?xMs#l^fkP_yAKPZ#59>{m5?79A%}$Cp{hlDqWL*Nr}ha>2D^QdL0q9F zf0TS5x`3Q9G}ZZ$1>rsskM?c$s7I?1d*#`8HC4xg{rIBUoLZ=3gvIMbKq$}Y_GRxW zhOC=9JN#QuK}E)e!fo<v@#np*#z8k~-@*8mkl;?xI`6@&?Vk2PzJngwr%=_`vRi8- z2LiazbM14PAnfdTyh#Dq<Ay$>l#WQYAaUczQ_kuSoAJw0Lk0?KH;b+x2n0t_nFE(( z_q><D13u^cHVXmByNF8{@gMfqYPoG1W=--=%{iAT?p!WhlZ6V!E~bgvcjTSR@g6QP z#m-`c10vt^9OR`Lo(!KHQZmkvY<1ml;REDfe#xU$$S6g0Y2sq3<;om6@6;BO8faX| z6*Z*95K#=h=QmXilDd-iQPR=an<n2*Iwjp_$Q8+OeBGC1_^7>~yT`J*IFhZ@IRh}0 z+~E5Y54Q;hYk%Wdj9#BQKc4C_FL2{P<B|+oIi<v(I-MyT%@Z=Dd*nNn^P|kH4d%DP zF8e1d?U#;hgDcBPIVUz7kPr~;ag;<rYMp6dYb%)eg+{Vwzji*c*wFX}9i}VFdbIzz z`NeU*L6TvQ%XcN+{h<a^iFXadrX&$QlLiAj(9c_6eu;?gLbfT8eCUDkS48)BlDoem zI^e$&9oK({=s5oq(XsyznvOaDBB}ciqT^x(a{X<h<6<QNumJv<N&;B_PTs`{{C|LS z|2RfxVQ2X_F&)=mNPYoqe@pe#s3GUPK7!hLry+X*E17`;wOyu)R8LWQUY`>yw_Gxo z1&$z0hJlvPlHV~ky&~dgukVgb0+MvDx`%<>4+;g~+pIO{_UqEh>70?SoP3~rxRrf* zzR6==W`k%=6SZ>I%+X61{Sk)!JeD$fdOm&C)W$-;efL3NJ+_$n1!Z+-_AuM(uv~}D z#iQX}r}F!3fa`X<tMDslY_sXnHG&%3Zs&XH&tbWK`|+;Sa>uVOPe^nV7A0u?Q)<(L z!=!0BXYS=v^c<iIXG>+}WYlHRswm+eRNxUboh(|@QaLtsMWy<3<&n#cq}ybtB;%C- zaTZXfGsVu=Unjf7b)?kOFU8DhG&ZZBV&&4ipy+fcmKjhwh3LcN;E;yGsQ6Li;OOX1 zxZ7;CzUZ!Ip{h0F6q;qcSUUE(`scfO3q$jwdXDU5Jf6pdOg26zUe}5H?a&N9FQ4i` z+!I6QYIHx~4K(M1N>dODBRJ#nz|!^Dhkvo(rt($Y5y!`42A)lqW^0+7=p!*gAnsjl zztNrDu0zc5`<pQPMcc1hyAAfxHwb{!ksyC>Qi+CHwB@kJyt^ITyn@;GUfvM8J&>p% zW}fA76~`OGSi)i61zSkg81>JA6qX!F@{9y=&UoA<0k;Em{EwV&T2q^I50%lCRofyK zjXny(mPKyj8)8x8M7pO4?maUEQ1T%v_X`2K24<AFyvu!^m{FoMw3>*CtQ=x5*lL35 zr}-Nn+dGBc7M37fX8E;hB?C9LqEmg}@<}8&k}B7E4Lzl~B0uV|YS+sHrQa}3c@`WC zb;M(zp{Kezs42i|dziBf6%z-91CNkvB>HBIY@2|tERtCQ1>61P9DM1T8SL@v7k#4P z6IQ<>Zz2fClb;mQsrrR7104RC-f5c-dMSc*^<k_Dq*mG;i;~u9%xl+Mh6&|do~&(@ zsf6Pn-(?oWkhTyrT+3*{qT71`QrUctO@%4+Kd}6V^~LXmhTLn9G(rm+dpnJ?GaXnR z_qb(8`$B?GEnawobLEMO@dG~mr*a~ZlYJy}3KK`NWhwoiUqOuq%Mm^7SnWd#(zobZ zVfsAtA@K^T1K!#;MuQ&lU`g`udhI8k5n;PQ!1BvryF4&qUZj-w!TKq`P6EHGcEOv- zM<;6dP?M<*h2&PSDY6mnoPXA=Pw~^GmtX7;HE9*sog%%w?rvHu@D2HM<85GR9)Hw> zI|k9?5vfj>u3JQp^o5ah4(B4>d1|j-uN|-LtgWog@Dr_C3QG@&a%}c#wc)lpZu<_} zI=6m{`aqnv>97^0pU2L7JO}*3+Kx!ZI8$Wy*otVNLqojX$1Sy?!{n^vNxfb56UgpL zhVBd*R-Whnnbr+JbhwF0OKF5+O<I^vL*SCxu5T)zS;43~*_bAT(w7Q0OoAgHClg|b zhIhr7R40TtVUWXHhKo+*2tU<#?c-siK1abGJwJHxrSna80pAxP;G@a>`gS62l7!%1 zfjrDdOehRuS@8)uICY3eVUa-IbZGiBm~=I$=hC^b0`5m(%o+R}@c~jrxZZW3^(7DQ zXwLF<ieaYorr)$H?hCP{GS73N0I8gDX|f)PCYBk^gUe31!v46}*_!6MqI0n|(b{1a zFCS}!{2x-WmCB1!9UD<|)(F5+e8u2TZq!8spcnfHDmI>EDjessH^|olyG()5uN+8o zxA4P(!#;L^GbzzfOlpwugXplLT2;&eaic3n-$(%E-M)HV>L#j^LQ$Exqj;|at--pn z4kxF>L&RDkb~1YsN5sA5citKLKZhW{aa?saFmqozo){_ZPujz|`N^<|W8lK}@h~P@ zcYS_Mc)OI-VI*v>op=rYFm4tEiwY^hY>KU|+8*D}8$@wEOgY459Bk)T{Fzu<`g+lh z``B$cPl9umBg+gWUd$_4Ybfa+j|ubA8~@~@WW3&0izE?9hPlQE2F?9SNAZ4o`!bl& zQYL@>QZF92T6@Hvw9n!$Q?jSba2!e|n{#HxZ=W6~!x}MAe6N*ERi-SUg>AV$4wfbq zm*Tb2+oI#RK|MaU^#~iE_0vLxd7i=(T2w3}bU|S(!NhnD1)6dbCEu^A?XxmE2*?2- z$8Zv2=x3kk;h%GpkNH+?Lcj2O>-JWD?_u8gOr4u@(MvxjGKe0Jos-7PrCQ7UCnyd~ z`g?OZf<l-y26BffAoJ@N3+%wG?`_0=`}6n#<}Hvq(KXZ;?Z`fz`=~4{VgNsldnnIf zK8Ya^+euZ?g0QR=Kb#&K<BzFdLSFm^>Z<tRLkw*M2xyG_%?Y)L{WH^IALTA&uc{@L z`e!`h+&3{?Fgb?=5NKAnAn=H1yTAa1y4;jApI__*nfxJn=YOsnv?SCsdIJK7J?UbM z)L4J-2w2(pr*J$S-hK8h5!379y>&ExNbtdAwHmOYvB*$EIxVo==ngX%T*4Lct5t!} zv}%p1PS#jTzuBBAuf<5uWXBC-WuGIR*zu_C3@MmbpGq8I!UcP6C(kDUCYwp<b`g6W zG}g64plt8EPA^ZD>Ew@JwA>8vO}3L3XL>#+lqPZ>YYz2O^9zuiBnJ<wLSCA<Jeub* z_4n<`r!~@2@6V~J3t5Fn6}9oK@Q1y%tf|0`$qnAL^9A*!&(G5$0`LJJ5Pv#blYZGw zndx??++4upPEQapx<AbLtzlcVuwr3pgbv2OF#Oq?>Mlj<4fn%S2#}eeRUEa^_KIRw z=<6&2)rEsDTF@<GzUgrCE%T>Cv^*AMhbZjIcb~nMGBM>A6o0H#HAy3+b9`UHTtkBz z=C`?fcc?PTNSEyOplmx&62|3;cw7-u4Dsg_u@q|<sS9yctS#HzUC0=tVB)QrvHN+~ zmfQ>A_1PLfS6*XLB6g4Gu;3EJl%<d$iq2OlKF-GtNqSaDM|Z72QDei^qQ#X7kokrp zEXS4y@tZf8zEoMThnG4f$njUqcp%6wdnuc5(yJ;q%*fd_Dt}DU#yFNmDfz5<a0tsl zwESDB8!`dC+p^I+iAOI^$2-5rF`@TTB1VXi7>o<X0bJyHY?ks^9(tdXDT33WlNk38 zEH5(0{QyA!gmMO;e3M0$%>6fdFC3e5WfVgVC?p!(!bn07n)l;-o0%tUFFVfYp0O~7 z%~+wz?ffi>PAU=we`B`&0mptC%k~VJQ1-VUBfFKB@i$n!XA4g$5RDy2UnrEQjI8Ey z1eMh0!?B?^lZ)a39$l$72RgV0*;-WibcJR$Yf=5gJpsHG(4sJLdDpH(O3pn_m}dKY z^d7UF*+-PpTTBb880P08s~5IO$PT5*wH%ex^wm~P!hVoK@|EOE7yKU=6^l&%iin1} zUbNppvI61IOtp#yU4dXSH5&eUeA^q)e8fSy@j|730K6a~DiaAy+I!n|jZ*^|GoXg} zcgYINu6dD3-v^zGA%>;avd3ej{LdWxF)r1;y^;Ap`szQDlm>d<H~c6sEId!EOl$XT zyT78shULlu1W5@pJoOPR?ascbMGL~QgridC2_@MzPNNyy?3$0?OV4-<ccn@NqWs+2 zYWZ>|3+$7hjO~rAcWoGSYpe6mY`8I?;nxiaU+yZ~V`e)fUv5S??jF%%_j4m3w+A$O z?TVN&-ZA4utxydeCOn^3I#nyYN(7Zv;l6`bHyU&Ura4ej)V<fyDL9(9?>amIwgT`i zC8Q@8PuDNa69H7&r8~Z5o%N%NAU`(bUC6Dq#rPd1W2W&WZiAS8pBmz{W^6yNDBRCh zl$LrEZ7vmL=|}rZ=DQr-DtyuF6EPFPNXyxZQqa_H+cb<E95U8$6zD@m#$UU~x_E<8 znjgGlWV6$)4}26<_iL1ch>K5|vcU(WiYNUYk(Pf2I4I&b{9v$MrqC!W3pwLa&mqMr z|0w}F7&t~;3o_W8zESIoA@v?AkJdnMv@w@Ak~*bcK#V;+SpMwNvNJZFya-~pC@FI& zq=|F9ubR^_C>R3+J!B5ojHX;#w>F-jM*iDnVG6aUMsmm2B9AHOiD0Frk-zXXL_%B9 zV;?Hd?3SLZhD0lpRS0~B>aCgWVCIpGy9T>wg(hepWE9(PViHD4wcf^CqXF{?1YNnl zPoa8C=5Z~w{JrUDtnLmnB-0oiNSz4Jj;8sm+=|p9tG84F<1;vBBT^KJiWgyTo^1U| z&%kEew)Aek2!NCm4k{K-)bNFLXk%iYJP3m03~6o!?8iz%sZEj|a06-A-}ejiYgAd% z;X_>T^NnR3#I-2yp=CvWx=jdAZsKKJRuoNf^3FJ7`LPa&oc)Q*e*9!nIp|#%b&+Sj zvGG3t2YfbmDCEt>{w~7qpeVCShVm9R1X6b$%zZ9seHcj>Q2@OMMP|OjOiafaX1t)+ ziI!xC)xlkE&7iqvyc}W3Xow=H#A*9m=T0pMI7o;ceDz;&HIVuLjH`kF+8qx3ue-zl zH&+8${xetq4@%X5EdRerDS-XIWrhN<vivhD1pxleu_o~Uagq7I*{2Kqi&}G54)(wA z(-lXn_C3&$J%N?XV7|n*;8d%_Xg^<(S1+W~p}Ycz5hSxgF@#a9f3Nqidu#V@^M-<; zmC34(x(7jG-kkS+y*JZmG@mvQ8&ios)7mpFce<Gt2-1AXKo7U7%jFZeFj2dIpH=gn zoyzU*x?YeIa3)-Ktt(A$wQ}TaD4fyv36fS&eU(2SL^Z{-XyCef@T^U3%hJ=bpFa28 z6I~it!Q`%KTTvDB)x&;KbbsV^<*jTwGQ#31e_-+^YK=tKByL-m?y62(RDY?VuUz>& z+PgR}9gLBGT9KcY`*Fns<cKg~e{x8wZC*V0dQ9R)9-Nqf9d!N_VpYln!nSs~XT-?Q z%`VcPS>T}ZWVqHoZyePc|7kp;sskdDGL1+ck8!WBu~gOCzbK8K`cB2G6LDe+G;13H zp{OE~JB0<7NW!EjO3GZ#!chp$dv2<KAXb4_($~RN=`U6j>WDQYH=X+w#7pi+q;JLy zK0y!-?7icxbW7^~u?IVBS0U}A#Y$^IKz*+`SVg`KxqIiGS1>f*BKFATR@#@(zfb3% zpkSJ<`I2BU?}zgnRNn-THd_2a$26{gP_eP}oS@m#JPut}pweHV?8{zuseRDW>SKRv z)-OPZR)90Of{5smfeOp#Lr=NjY>U11VwV}aWEQr8;lx_gOitbC6(wOsiqx`c(OfS~ zVQg8soE6rx5NbncL)<#EQQ5AxSf2wSYndqZi*SowFD?gVNS=m{uqj_J904JlVyw^v z&T7jp)HEUzX*47b8Te`n+z{nC_uQ2fg)(To$E)da2b+GtVM2zryk^}qsu&D^L(IMl zz;E_aPXy4&IU_F!%V2tnIJ`LMe7mB)zW2aq_6Q6eQ$jh=npU*Ne9-U%>z`bD)Dv9Z zT&k)JVV$jC7#^t@gMTy@YktN;k9<T=L<^#l${$oxpio9hC%YZKvrNe-o{g0++EvZf zqn}pqW^&P18r^?VSVra~YM_A~W*}o*rl||4HYVXpxPSac$E@io&h}WYh%Kkr1Rf}R z<RO_rlX*J*`0AP(^sJ^(uJHhlR(+`<Iaz4EUI9{;7;3d`MRQcP{QWQ-c_k^<=0@x! z$T@N^xcKLOVSt!A<B2$32G%nLG2Ux}R(t*Fi(>lqBf_O_Znt+>$e&49QU&1DG<5mT za+~Z$mbvnWSTBxcHNTqicirWe7h;-weYQ4&GoY;#mC?2}Frzp(A*GD|B@7tq_zKeN z`yeZp!$`ko$>`rUSMDWPov87V?|%N9?vzku(=fTMMrUEQrW!^lN@AJV<nU))wAa1A z@gYWh(#J_5#`)^e#rmIY<t*CHrp_3vhz`28tmaQ?OSC6)5?n>EafyD(-xtHf4_lL9 zgt<M;x3}3g_toyIKb*m{#Bq;GoESA;H=8dW!rpP1i4P3>SeVjxT&+}G_ZEzzhyzef z+zDcmcu5o?m2wCb;TSGR0ul4h19Wl-QP4sOMN^pF1XWVz6ut?`z;Oo2jDn-)d94=o z<{R$w!CdDhAb-!6br_NDhe4Aw9MdVTGID6Q2cqs?cjF@!l5k;4%LmR%(w~6nf|WJz z&;8(tbqVNmD<5~6Ga<l`*=B}38bn1yCa0#`6WY3|%P7|c{iQ2KmO<sVX}jEtK&hK{ zKGIkyb18E)Fxul4P789j;NxSQ1dn<?Ox0>1-*p@_@-uQ{g|Vhe;h^5*X4$W0!vRXn z5T+i1*;Q=$y~kk9NAH7~Eb;l16s;yVgk?i8RN^k0RGID&B2J=zOlhE&!Iv(U7r2-P zKpq7XR+$78Cbk-uC85Qo%V44%M4`=`4&!K?0;JRR!QNRV!pFR~Lb1%WbulbAHPq?p z;BZ^d*1di&@10d>9@uUc#SbkAJK0T)l)KtBGgSI!!Pm2SDyqs(mKF{n-M3GctRtzF zyMBwUh`S)Ub=5Hu99E+;wf8+U^g35ci4b1+<^v@fG8;CjxrGFk<`Yufja}e2(rpPJ zkdz8saKVsCAcrq;4s5X~pc)6oW<gh|j5vyY%3j!TzO>2(>8zXYt!IvkN8e;`5XSh9 zGH#{POSx}T*6t0wxGXO>(E`~bkdv;71b1dOJWTEmo)D||$c!(B`T@4J=k?0NSk{yY zSqG;aKgS5sa+r}k=)(SS!6Wvhz9DeKCo~Lmaw&~G)~sq*>!0>!ZJGp(c15#DdJ!U! zWA%VYlAP%BIS!Nl&>__JQH2+#_)}2mf!0fZCc!h1eZ3UN+Xh@Q3LBQ;p^#K;FY76n zS#z?JSm4^4HL22OzldP@9S-}jnwknh+2{enu}`zhD!ktZTK>QjDS;y-Y^B9Ms?@!M zNc!VS`Hc8D14r#t`+VLhc7)xD`_R|Uu~oBxy~^?+%ej;zJ=4)6NWW$P(snZN%>LKB zGM}yFL_u|SVW{(Ks<r_H|IaiiLfdrpYQ8y`X6U6<?cQC9$UD+I7&(LVBhtoC@YBTN zFPw+CGU1pa@cu-{t@MC4guHHUu`$rFfGmyFp?9AWkL=dsj+m-UuYB&>S38Low#u@F ztopfS1X+t@ov^IT6Z%`W@^Edm+qN1CMIEbOFzXU7Gh8`tpNB<qdCD$wt&5#YIy&Ua zCg%u`Ej`iR6}F&i0=Tf<Gp_wc(abgQFz>-a*Glnos1W|#%^yyW=-e6vS^@?76iWhS zV(-tN%kK9a(uQv07YhxCr1S#9z|be;`*0KAg=GdcP6Ve0@YQ1e-k;g@hXE(%i>v$Z zIjt`k^*Q#=ZKc;?KQZowD9)O<r^#9wyE|x1-+<BbLrK<fB(Ya#Ql)&^ct<#Zc@l2A zE&tnCD^{V)=xa-1Dir7I_mm+!u%|Jv&uotjP3*;dH~f9_Z_S+TO^uS;ffZ4{g<^@E zh{$n``7NA_4rB0uvb(}TxsXeej+rODwD<Twz{K6Y?2Z65muxO3j`cWdq8FDrBQzeN zxCUv2A{&X;19k&;hoXbfK2sI!bYV*&cLMa_LHFb$x8HS+GNq7iDC~#b*HM!78%xI5 zatG(3Oi;f1-bHRYwyWC<unLiT-#)n8pB?(5uZU4E=(T7@^j*$QlQcZMZzBe%uDta( zerSt#ygk$`kO{ImfV~rvz2enPs1=YG&{mqXLdt>0X*%iIJ04)>9h|DS+=gEBtixS< zeDT}g;dA-EsWN2Yy)q-h@hFPF%#BvoQqeUEuHXn3EJVkFVi5TO9VcK7zdt9?4+z?t zLO<rX8Q%tGvGJ96pgwaix_Gw6b0bIYHB{89>5LXujg>~eu2)z+t(>&i0GH7@Pg10N zd`fQBmDr64ZktKAE)u^zjqJr0!LgK#eZOB+&4<fSG`t!B!&4b<C<hxrNk{;>v*LkG zmFJs7fNA41R4b>1jEaj%#qO(m2iOG+wmFUcB$p!P$IIH7#as2uT9)ftXrsjwQ;7~O zBb*8;;EvixzzlQx^@du*rK*SIIT0O?#d?G5Bz@)0A(tBe_+*aod<AlNKzsRD$ntk8 zpZ^M3{<ZQM_;)Lx+5ZR4p1^;9<@3Mypc42O{m%e4w!d{yx&I#)ropaL`q#SF2pqS& zF8jzFJ<}aS0?lYG5&$xrl$0!mvWW8I^Hr%`G0oVNDPubmJh*w~>Um8Czw7D3`r_V$ zKrE|Olm38RCJpkZ<xVLSF^6lBVD)44vW8yqZ5)<I#rWCang1qk(+O7YnI~=4D7Flq zc9WN`&z!~-s|$FiYYhJBgqHZLV1L(uW2Lgiciun!6F*G!itw{*ti7_HFu%^T^VGKk zBT2I?tMI*1wOiXtoc~}<KU|9vhE1K`?QL2Ge&VpsKJNs&@>RamD9fO?7pU2`YBFur zU?paW?;{{Od{3u1J{=VU_G$8hZoGWH<}@^ZhbifDCgYs@3e0<rZHVa|M~*wv_Vo^y zNrLeazPe{sH1_X#ENyhIsFJ#w*yVMgFp}8mAlZ4|WYbbw#Q#xVSWP4yXMXl<SD~hk z4Y&7a$cvomHFx<CF$ASwqtYZ?<wIQ^p+wXs>R}W3=nH#*GpO*|=IUSqtp7+@%;+y| z1W0TI)Cq$}>7}&Y?8s$1%&6<|t{*%30iQGE?O65>9N2&d{j2W`2T$QKc}={t-+iWH zz&2i$c<roZX;=_N+~f{+VrO}N<3Dqs5j0k-FykKE3=81@9#yOiMi<Q28TPua@hpo< zGN}BlQ<CfcxojAQyu3Bl0j^j&1VJtG?t*5(Ok{gidpx^vU*^erbppCmItu>;_Jz?% zLDT^V!f7hqKWUK*ypeK!LS7|3B!sy1F)-T6jM(Kbnb~Fz78fv2Bk-D!AF{sFH6d+< z+D_fuQ0~x)@|L-=r$xGbkI#g5zb&lZ9}LSor9oNwIL?;n52?vplS&A;6zw;gZ>q_1 zn}8jG$~?nYGvy-#fEow!&Qw_MkR%IEI5D#alq0cHpQ+7WbGpvo?X1A2rv*cTP|3W| zm&ptyk=(2%kqc9Uuz~xDfGl?vL-1eM)_B{%Sky6k6jXLO*>Ze>FT1@S`}^9~ng$s^ zW%!%Ml@iN~q=if1ARYBM42xigwTLu(Ya;-Ae(_Gq^Czz&g(dV)`*K1j*>j<p82>ae z_Ds=y{o%Et{-SP_lGcCwQZ1v%$CU7zb`insHc2jAPSJ(rGS#4_^#tcYlZ-+rGa-V> zd==TAqex!lZpJj8$*zUOjQF8~$d*eOhjhTd2-=fPmO(hyTstO@8Da&Zv!(uosh=EA zY4mGcLh}wT0&7k;=YmB@7^V!D9;rV!Ug8T;b-vf1$EiA>XeX9n)%9Ak(QxBf_^~K$ zU;uT;w%_%lj?6svn%9dTmJ3@fls$G^4T;J!c6%s&=k5F+DJj+MayK0UhsAp@=SpS^ z7VJ-dG#Z6Og+IT#v6|NJy&UTzl#XCH%pntBX{z@R?8QbMPmb`rm(R$&D@y3)$(Scz zPPvcg77wOvGd&65FC0TU!-|Sw%bSWY83Zf_8uCB6{qiu#L1^HxA5cahps{QPltH}Y zuckg|Mo1!BB>8oUak2!{iq45vdH3$i_O+^k)J6|_#t&vUfOln2^>NbSwjEAA<ZFzj zdvo`2iU|pdq;z*mfBkxnC`tTXe<1#1HdBx)B;zMSQ+Q2JA!p0g;%49nowIyFRD*f! zP-t7yYE1VrYN5F%IDsi@3!F6?;ctr@8YYq%mKnjw1+iNAW+-Z}Ri)-N)Ha@6lYL=! zG_G;-{IVXI4GNSsPJJM#<LPTnph+-FREU1TL*mvHDWdSw(}bv^Qqoy_JZFnpdu<!i ze4O;OXyHI|=D8R)-T_>o)Ud9VBysUwvHVA5Rr}k>s<X3quAVoos$rj}*c&3{Njy6r zZoO<e4}m3vsE|}lX@sdFk?<gCP@v95z)ia|H}&^U@c|GOLSSK|$lx10`xk+8l!yHU zO9JwdxgqF{tI}39>Ca!h2_!efW@KzcMjnX~qijoA9Q{lx#hNqTGj)l%vJl@J5O@~z zNaTJ#@H8t2^qg$Yb5RG(${{9)qY9h2YHPS^Nwz4vI;-VmpBW^w_!x82q~jYcPF9Vy zD`Ci5`>>+Lr_gIuuXNoPsyG!WMC${e<*y;RGV@#}dS1XY{7t~YQM0r?(J+lj5<}ry zO(02^PoQgvJx9mMR3(|V`!uk=!`JS?J1Tz3_UTNAF|je`urYE@af*5*v2tV=BUmwu z))}Ic_DJ<(@)D`@*^Ot4^#C7+gklJgc+fBs#65>Zq`HwD)GExsjWc!j>t9y6<hDxq zGA({5MQ8=Ka<(=ftxut*4aAdSpf5i$h9*%XG%=OuY9ne@XBo#m_A~{$JEBkPg7N#I z%)j;CXZUtCjY4#jKh}j7X9WtPw_{<?JoS@2KW6jT!|n6YjKX`*NvUy3rIVs>*D{%k zZeg%OxZw}D%m$S8PT6GfrA+sDekXktV(ShT5F;Flv9W+^;!}1XSje#ibIzA2F~^y9 zLS*o!ZO#j&A=*EY=1Ga9+mM`h;dHSaPIP*HxsS{1hN1sK26(fwxtTJfOiv#89GG-r z@DwJkc&B7S{v{+iINlEi>LV%;nIi6gb;DYAO<8}9+J<|22*r-0MY8p!@bl5G>Dkjr z^(R*TtPM<M6<h+1P5zqGP5-vqq`e?#*~hOD?Is?%E3C7@;n7N*G4^wm--<Ct@eg|! zR-lkTv%o=eT|~F6Gz=q<sTZtM*khsdS;jfowcZ{9$E2g#(37*O>B~%$tTYR4W+%s9 zSvcWyzAPl|Yv0YZ3+`a#yyajj#7{Clk8hp}<9G5d+X)=TeFGlB+qw0mI1NTS6BQ+U z<U}24#~P}WRyC4*2OtzWjuYd?&%)};rQnAZS1hI1l_e!X9B^Ih2o+7ALFo<L>%g+X z9g?#2-3%((Fd7E*WzFA*TB9sCmK~zGYP9=9Z8qTr!6%Ak=YqG!nzN?G1QQ;HMVa0a zWK9Hy8tJ(ps1$uWJC-9~92FxpcixI!0jL{nA(qH(O}%0m-$rr?@Kv5STTf&6#D9ez z*77x_b^HjvL5YXPpL#%!O_xCdHJ#68KR41Ci-34Bn+*_^C%a3MG$ft5E3zg4O*Did zwu&pJU>+S`tO+78EF>c^x-yg^CbhpGZoZVStKbqfWDgR6I@vK<pRKftw;SbWpM1oo zR0Rw3K{XgbLyyBr3~<Gz9r7LhEk`YxHwZ6mYEWjPA>vQzS~=0JAI5llS$O01vtCPM zz*jY#q))kbUSu8e8xB+=yG6leUOr^j1Ln{J+4h%xg|H29uWlD-<!VLk;m}3K`C^Z} z-uF%I!ii7yBfM_%qs<L>J!n8+7DvB9w}$@l9e*B$-mJo`_mIp17UPEI)g<!Pd$hUr z3t`1S&cu0l1<lkb{2Ws;Nk%M^#c2x?H7qc{oNU{vY#lclnUxSg0*6iW;Ok~^VTtMD zta||}T4)krKYQVM=b9+<b`HN{rbP(mz;Q3rdop0|LZt=*eNuOJJ@`>W@zMKT6VQPP z$;@+os~38ajk-=t8<5AfK#~L?y3Cxszs}~|pzXc(^Fo+$Wg>5Dz_^+)+}%wsvu!XI zS98apbt~AvDh|CqgfJOSkFW_7M>OTp2T=_`#M>hDr|k6cT89Xt@w+NrAx|}iCos`` zP^IMqDm&j+x1#jWqH&A>Q{OM%wk9r(|ENYSp#Nex@6LGgn}3o{POH1r5vz$7CogF` z63mE!+qy(DpQ$Zw78|djbw!fu8liC|g&po2j%0%RCd)K1RD@+dPA=5X@M`%1&+Xt8 z>t($S<-JF-8V(b-CdU1t2%HU9|AM0oQQtt?g|eLN-BhxL?tJjNz+y=R#kZljAzgZM z9ULvjgVgriz$A3+>PVt2t!1<@Ya^eOOJWO?)ql}cG|$?mI%%c-RSCmj2Nr*Y3Xdes zxiHo@?5xtJlkPwom#U1R_ooLj)xF7cNlpYeG-#v)!y8rp>dP^=_DXpsTql#efF4OX zPwlWg<D`HpTO*dHUdi(`j<J<<?Fvs8^~@SnrB#dnFnR$b_hn~hA+C_X)*m(4-pH-B zk8@`ghb1{Yey)ec4&0#VD6MqzYy#7ryWoPFz^**;3pgOm=8oxmfRaW^5Ab%5KrV`< zN_s@N+!A297*+UfSPFGGlNWtFO%gRwltfqgAPh@pv?0eviez{y12z^PL}r!BE>s6p zEpd<EY%M3b6&8kpHBG$Dr_doMTZYsZMhb`%gTA&+{Z`sEVxKfW89<?O6_AxvU%<QZ zz{-HY4zf8-{gUBb9r=er@FrVW8uE|9H?yqDV~p!fYn2XHViN8yE=O!3J4)|-67=hD zG=xj;{<VBjrEX@W>0D{B9{Ju0n4{+6dIlm_zcMy2(V^sb$}mp9kn8eW9h3CM(xXaL zdXw*(=OXhN5cN5LbsJA>AUf%Qy$KyYykBPLvJC<eCZ~H=+iKU4Ao;IFw*_sh+-psJ zSh@YuOR7CqzZ>a7T<}EMyTHd;0)y}Kb*Om>&2G3NJ7+YmW^OY2ezTozFSe*~3kNAQ zN|cA6^AX@_&Uwz4RXkLh&(I%t6A2z{B>gc9Q!8{N#lLZWyZA@MS9se8_$yxK{6FJm zu79;AbNzR$$-w_lb_4tm>}2Em&lY9&|3SAV@Gtc;|97P~Y%I(q{|HF`@g?#fPyZW% z;9rVm{_jo&;P|IMh?N=e&*A>-p}77+IQ{Rj-LSH<|8q6~7t7zB?cXn@{`c-ixc<UW z4PfO0{+-=Ov4&jyx;WaP{saB%3Is!@97lIjGG8)-4MPm5csS%ap9786fG8Pe((QTn zqXdP3hk+V9Z4?m?3m72{M|)*u<!Ptahg*Z!hjUfT+PQjpo&{Y`{Fi7XoU=fkm9uVV z*9p4X<2#F@?`oC)*WFgxupj2L5Q?FEE8N22_n&_T*5ARB#bv|%jFWJzIa(^&rx87C zbRHUC%eJ?@&KBYy*740g1UK_4>bDlnSQe^VrhJO<?QQP{rtiNxTnUQ(iUk_;=wIA? z%D6G10y`+T{5h^P1Z>qC+l>U|63UtH>uggftZaX&l(ktk>2&@~)^P+pRcB{^&13>) zK2qZRxLCPz%;%K^PA7?wjMk-Zx@!I92Qr18=OmFPqtUeQmA0|AxC7sUy|-F!dEIXr z=q-jle>{gR$-CW73{IJrd*q**3sO|&o!M!mT-MS>i}NK+%EpU4+_*S=#q00r=ouZP zzE3yaT0V8DO?C3M8~yUNx&7{qKJ@1?@?0OGf@om|Q<GRZbHvX7*4RebMc>i`-;WS! zTAJS_w;;VK&zfmghpBI@A{?}cX?>m-d%@N6V}=S>`6wK!)p-iyPV{`Ozrgo)2{m<j z@((g&OgTKc1#@B}Rd2dF!}3>xv2QC}pCJdKPA1DcN3`j-yUTCIG$8%qNkxx!)tgnN zyjqKOdl3Sg*`P(kTBkQKW>!a4&9O(aI67SWbD_V%f@N@$_;Jc5I@|2^eT4X_!Ulh} zjV?SByE&G-sTwfH>qicTwX0Bq0%P^XhLk3z3Zp_0Gq6jvuI*c56?K2I;1;~rq#so$ zZ+k{$fX=7r#k#pj5EKrmh?k)rI{EG5v^kC+x4>ajS9+sL&j^cCq`4mvDn#*!qX&j8 z*fO*tGb;X4CH?skcJ|(UO#nj(MF?RaOfo`+&;SqCfC}cw0h%BfDyx=KmtZIfP6L<H zJZrbG=w!Npr;AaV+&QZ2Q-CqPxP3jR`sGgIp&exq^?bqCp9sS3d{LrW;r=Df84Wh# z<|V7ZmLyo4aVaw<TrthpS=y$N*O=Iy$Gdt|;E=bk)Gt`ISx-4_)-_plPrv(_3q+sK zurwcuq2xfz+1U+QtW$(xCbd`N^g#8_+$o!&EcXiy2Bl9#$~foud@p>wNak*gC#utr zWx9qi%LGefJ98+=2DWgi$R`{Wsi<sbE$ns&E<!{vV-%71GLqHsJvCYUtU@HROBs9k z2w!(Ujg^3OrtbVh2%U4BQJED{cdE9lbi3j8<i<_7LZ?mMjXZ*2(e^~s6lF+lKs3_0 zxHk|OLvd-AUrhC?#oM-KRv9-~%d4+cFJxkjg<ybr+l{4i{F|WEaCCGxg*`m3KutDK zbB*~t{N~~ZovCTGsF<pE_BLNU=nl+4a^LNvk#-?mVP~RXBoe(jod2yk(l>O9B0y{Z z5~8F^YRn=;pXl7qSgNH}LNoS@kV_!%snbB2=84s?9>zXK6V7qr34HT9Prt%L?_v_D zc5hM|R&M-~BurvwxOBc0QOZ$nW;jl7r2XUI_p*GXJ_=BIlRZoTy>c>>%C%Yi>qpp$ zyA=*|7=eOq@SAkeWkijL+|ADScz?+tVZJu!hNI=#f^<u$i02P=ga_f>ejFmL#v3QA zYY>LOs*{W%_>4A(g0EneGntiqkmB#70+ven!c!}Ckdu_uZ7KG}fn3IgGZV)UM!R<Y zItYWl-j_Z6cW!Bl8|M4yvRte+-Q_&lBqn2^>kB(LPPa0%mf$?r$>U?I=MuQrpIF9E zlbbw)U<epPid&0vl+OfbWgvCP6`Mv_*NDVUw}OW*Xk`l${<%B?>=tzFP^9maG>ba= zQpb^H#LMj#<vyGnX(O8ys;R2+TRDd(48^mUi^#GjCN9_;L=dCLq(?$Z&&x`5#5MH5 zky0#tV1^d)&q(2(HvgHLmBdBki^Rv9#V{lzL6QPyoW%+-y6M5dAev;%(%HCef1YI= zm~uILOvnreGNYd<QxqL6HzD*#YS8>aO9$q9g-H)cI_NwN3q#(nrkv%N4Pa?Kc9klN zHr`?s13;n{ZMH1KHD-5w<u9CE1<Yk|wH`7tpi=hmxX$oT+^?L<VFYwXRyR{_`L}C$ zng>i;HmhGQ<U5y3DwQKMVV+C#T|rMdZydjhf9KNNMJWZ{-`44>lj=_P*PgUrVG?K@ zWu<8H(#73aZpnCPN`QzaWtu(c_Xgo1)uz@shr9LjlR+?%4em@($#p{>Mr-KGeRK9c z5;dP?=op~Mev_6GM5@gp`mC8Fk;~4?NH$>8KB5qeOtQt-{m>nk?mgJK7MqSL$^G#= z*LBZ)fNVKwqKGreQx$!h;dSGsAOpq)vn6hON<S|00r>kz7KR<!|Dx_4oNQ~ibkDSR z+P2M=w(Xt9PTRTDwr$(CZEL4(+nF78Pjz%hoiA>Eb#8Y>)ITuaSZmH0F`nN$#`Cbk zb>iz&VykWyl}<K=fBLTh)H9oHm2ie!g~mpa!$%`D$tVQ_KjVtHu<;cT!^&sokbfxG zPZHh2^Qk#s7xpy`v=O9{e!)QX9wo9udAU2W@ymhoTlk4I@QAomAs?CQy<ia|mT74J z95xy;=j*8xX$`zs3()q0$G5k5C!LbDk%;qF5hf!2wA;bN40)^aD1ab^z%SP|X|I@R z6rH*Chp}gGnI@JZBV#(fiiiL^_D(msT|uUO@y3da0K;LS+CYk-U8m5w3DClinaB#? z<tG=S%roARm%#?^28p|!O!+~WCVX?!vc*-P`H7JYc9}ys#&WjC2_ZpWbvwxjoYF#T z%A@_76+y2Ekw7$GOxLDO|Jzx`mElluQDnt07UbN9oz))&o5x6Eb9|>Y@Jb=vRu`lH z@RW=LOo-fl8?UF8fjLIu2f#^}JV}1o*yX#5kQ{o5ang|=b_68|#Z8NI7Ec*ShqM($ z9+5|^!Rm)ugXv=)A!e~;cAZ2NwDHVM;1QQ-Frc8gvb(C4e#rQXeN?NX7fB{8=VRnm zax5JzFRhnFs^6NZh#&RDO=-LkT==uki;!cV6ehMH`YPod6HQosVviEVh>I2YU^I+2 zwwt_1f_@})PNgGH=LnBXD;r@lOSGgJ+(R((hgK*&GSVE~1gM*LHP^`QG_6_RL1B32 ztrL%?;Yh&`xl0r*#vtNsXn=~pZC~7?^@+A_{-K$+(^-9@Q%%a9>Y@UB7#Tw_DxFga zIOaScCyPB@?wr10<V@W8>eR+k@>&py<3i#>^SEtQZF4t`K2W+l>-=Ljzpa#!y#b`t zQ2#-7MeVyDyNy08l+?WWk72p}L%DRyqv4gegh%*$qD4o~Uc2bN+v+3E3L&<)%DgcB zp<E1i8c6wfM#yCBgwd|dOMc=FE+L&BHrn7pVV2;g0d7NX?ch|r2RC|wtPWGQX8ZPV zdUXqy)M=auD^ex(q40u0?e9QWsHUy`Bb5#cL4)&RRd{e<oe<gr!UmVM-_-4_IP3N^ zoYWc}zT##P3xx6;o`Nmstc@bl&yz*M$MzG2Fc>n3SSZ6mA-{QniNL}4+xsGXe`bc5 zVF`66<6+H|Q)~n^IDttYh$+`HV^kJnXKSiy45r@fuW)yB%pICdfl<%v=}KL_QH4(L zL0NKw;^{jPIHrH!>sU`j^)o(n>Gl0;XITYa*S`mTUp|#7`Sc5v?U2csmCgN(`P}0b zXAaigAp)b-N+x?ffr89R<ddE&jMCX=i<jI142UuqFW|+1rnJajP$R5*z{2dXA#**2 zV6(w0(ejZCo|=Yv85kP?@2zoYYS<3vCHcxZm0%;iCxMCNj@7!}9?;c-Yg0({Q3WQU ztF4CCNSj>pDh5X(e1S9w@R4Lf0zgtnKIl~$+>~UqQNR7hYC5jj*XP5`Iq(m5L)6ky zRWc}>5R2tV+^=jy_OsFI%7L<gvBXV`I|cKjlxKKrF|@KFmeZ%QrTy4Vw*+>NDF0|! zMbdt#uWJY&icw$O5fAlB%GDXWEudy2<PpI+nbSw6;Pi}2Fu3m8?Ttv<^eaD6wje!= zw-ad4nNOFF1AmVP?rMT~DaI=4*5S#1YWH;mRW4%H7(>n?ohKt~#i&L|AfKa~0jFo7 zt0nhG7pgRMU>x$xY<ReJDZks)&#V<;%5peGQ$wS9aXJ>oC1|zJTMYx>QjZ3#<KB|g z!C%;#)ymim8B^@)T5$b(%Yb#~d-4={T)ks2s^!C#V!QmQ8euO@LXmA;AUjDSa^yE5 zr{$>L8V352Nmvlg!lU=Cv!IAUJzU*Ud<v1ZX*y=!gI_I`7s$SnJ~FZlWGvt@9YW&- z3>A;6-nvf8$*NAx(X5%o9l~y?;kA)99UPC%_!B8kfX~EGd0n+G#Fe7XiWvhZbgCWz ziQOt{ze|&Ctf(E#cDMswF)nzaPRrn6v|4|+b23~r{|y2M6r&nh@E0h8^Y3_t{}qa0 z|7R4z@n1j@|E~U6IobXrg7`lOq~&D&-%K6<eSaoK_W$+!SOBbqY>a@vqnX+MH|Mhc zR|2E}9E8kF?1Y@0f9F*8|9Q6QoE(24&N(<Z|K8T{|MH^sT2W_x3WK9fpW;Tk2)Mk3 zU^g7;g^B=jsohaX6cHx|k53P~!|5Q%RK`$3?y{p#)%R6&ZD3eZb(YKW?$Yf17{j(y z%Md*~OuM}uiDGPdKsnGwPFpg#y_3yJtv`nDKAkYRy_0`lwt5e`e)W##JTx4e>aEO1 z&&lGrVtyhvJ=SD!fpJX(h}*!UHE}0&NT07GlGtwaHpod2$PVaD<R#l&e_21`lMfr_ z|L9zlA01!9%gH!$s+OnVvOlZtrr)YYcOsY|Uqj@8;^AjBh)*q&?E*0BH2tB~T^K@H zWqT%W18|thW)|s6wRCSJ%S)d$&P?O!jKF3I`dn+h@;cvXsad#?LXu_|H5Dwe!~L<C ziHX<FG>*=~sl|v+!f|U`Xd`k5{W6uie6uTzd^Q`2Ud=`6Gxoy(ynDSL#8*t!I-)Sx zQ!6+BXu)?ABFoAfmOpEZI*nnjNkm$$Oa@)%@Nf;bLFKH^b+m@_(B!zMOy{fS((Hg^ z@?cG2uX6t|imtXbRvz%yDCbXJhNT6`ubW(;O3ul89{P2g&P+Ligf0y`1^&XZn`<{< zB0+^x!s(32VEX76uaB-+=n$D(4B*%=-D|Xp6wD054yfmCl`e#$umBNnn+UbZ?-7>o zvFn!RC@%|uJ1o25IlO$h^&(Oxczkv)`mtHgv0PAqJkqj~v87D0aPK@4?}@|x7~I~b zY^leAt9_TR95d{`h_E!L98A)b50I;|OVECOi=Td;H<Q0xPr7^Waw_(+!_Dl5BMCdE zt=3?6=UTF=S)EztyrQvIol<~X98?Ybk-mi+-asYi**sK){0;N++IR|;cL|(9i0I7F zeNoZJvotV0Yd+?rnO`#2Y-ezxN3=lD5_R{p8IKZrtUR<z^9krAe$BY6OuD~n3JG$j z8RxA0d9q^)Q*rtch|0=(Q0}(DGv9aaLt)1J&q;WH3RmDUP+{+{NUp+y2Rk^0WX5qr zL9DwP{mE0Aexq_M)k-FA=VfN{EDU<G*f=kj`g1G_!zsTJIb45T@=-p7_S59!r9IwU z8ku>T>!E~a<hG?>OR2>G6<!c!IFn6k0#>?rHqu!(9KZQ)dN#v1>yUfsuNUmdE8LmP z!=LGLX43~ozN&L^{@kRY=l&48WOu9S-DH!U$*Ga4u9AG(AhgqV!JDk_y#-yau$0^S z=*XHxHxF>4eJ$=mgi=YdXP^#hnT|l~#UKgkb@peFBsdG;AjD52?o|y_HCmig$cIEj z^d%w-RB_}l3eG)g`5GB|z-fN2Ko33(n+Qvc=nllsE}Q2evg=q`+Khnl&D6V6+|gH! z$Vz@DoBT+cow)pw)KfcY>2AoJY*`;J{B@ffQc(3l52In`ojawmn<acWfi{;Ta1Ey_ zl;RJlhqXi_tmUk>R($b9lr;ZG;*fxz?FE4Bo|IAbeaXB^HCvm-W^Hm(y#o6OMbu6> zUr`pl$J$uEREqL#vLBW!!^ng-%jkXK#-Pw#DE0!MXBCie>`6Np^TBf<3gX5pxNN0f z>1z-U%3vuo&Tj#z5crHT2}Fy;W8GZim9?Gno6gsXO|3wdu&fpt8XvN$=d*zl{sl9c zBmhN;hAGzlR*Nz3q!9Ia%ev`86zhm?tlP!T+;wU0;-56bEAu@I{%ndX>$;CN<ZX7# zs-&~?Z+7&ylwv`<Fj0Mq3DZ16WC7~|G66G@!j1G2XaH?k!_Ic{%QurUxnT<l2V3Qd z0DeY(rO898bmC8GaY>muLng1w;b7_I_RA|6sF-ArlIqII{r2PN*E!augjbCNBNCRj zfK%4{h=DGKD}q<2oV{dH=mch|7@K{+rK^gox_IPQq@|OH`vE_XW4&d-hhVv>-simD z(I=x##~Ubn2LTs;bq3uE%Rm>wn3^pO%|Yx{!B2^hNN$-KjFT3{j{Lr9;MRR6H&8bn zN@|C_m=^6VzldHp(K|{9KHnM;al&{q5G0V$w4xL-LLkn)%5%pLBog~d%r?ktl!p@+ z6{zO){efPR2APSj$(-^p+2~D?<7Iq88iWCw&*aZ7lu;9sgq&m3=^V4TYx!EAEp39X z{dJsyyRyMlA;@wqwge>VLf_&^1lnP-ege(=++4CGhzC8@!!n+s@Gs{n=cqy4u{ei6 z!muoR<Mn4A@dbYOwKbCitDQX_pJL$#Z7B#w0Sk7j_}cCW0x1^O!T8t_W2)B837OHX zxHKGw(8Duf?HDjR>Rw%k2vaZ9JIJLux4}g#=HNxXY(G%_;S&4z?1l!?)PEJoUMl%> zyfvuK>@Xohye63zBPUgu68@0slT#Qe7YftJE38zw8ScW`PZgmqh0iyA7!ypeh-05B zWm*bNi|Lo#Brms_=!$T<_DIQQw2(ax*2X`jVu@`POCQCQ$@jg`jt6GW+hxzFP@cMd z@Lly2*4p=CB5|{drTFHE@2UL|xf{QBZ&RL0$_6!unTKS`R!wva1H-}~@fs&^NBX0D zBxv-$%X9z1lYLXH`+2(f!|<jWS#l9iQw-PtNvJzk02j8fKVl2xR|B(vKmBllolMn% znw`(RCMT+_7tdt`FeXDp@GZ5)Na@#T0_~fes^?kwew?CaoTeyNoU8o$#VVO8a?RKS zYhb^hU<-q=O_;C}n>2py>VxkTrK^WapS63TZYtT6p<e2?NeFq!QE>6FPb`)<zN{ej zHhIBI5g3s;D3meTHM{(djT$!|<6CX6i#S>^dH_Q+m&@ZVBmAXi7F&Pj7S2La3VP`H zz$^F7-LNn9#}`h(@6IxE7d04htKwYsZ$L9I`AJB!O_Jo1q6=Gq$<vfpEC^spz2fmv zSa3C#JL=133|VB3%pnoyII~2Pa?OhY<@5qI(hoAJz!K6g&D;#3!s7(p@(umGJekJt zh>u?G<*j)~#Eo_4lLi&92}(ApW|J~uS`?UR!CBHn%p~8-E@o+Eh&gb*ACNBY1>;@} zsMH`P01FULIq_!LB_aDkL#YRu27U*=>^6O99WbM07#pIpfqbmg4$2?eqn<lx-Zx}k zg3lao1)ZjN%Sp&KN6@EBC~dp(b11J-;g>(y&zzo2r~r4w##jtr#e6_O7tORK*yZO) zhwIT&i7V})E?(aZSwj8mq6=cjW4D^~V^t{(aUc`6sw!VuyokK^+|$r6gWP=ay5H*e zK|-W?#zn*{(7gPx^!^NTiGZ~$t1X>znAi6RVR9e)RWp2~p&(rE%9X;F$+9xP?*KRI z>EKX(Vqm_5WWlPeP+nz-L#3nufm;h>+npBU16C;e3U~jcQI%oE8scPTKSwh^7<ZgS zGJ_pOn^ZSw;s@?{_9wJwv=Ue1%sG|Hx*TmIv1eDQ5IC7rWu?l(mi>V<d~tijQmPw) z)g=TOy;qTtj;An){<_r2qsgGn!iI($|EO5Azy}4NtY?Z-q{F5a8;R8)bqz^Hy#A(` zOnxl$ri$TTl|~WSy~!xjvFyelldr@bXznxRMjxK>4Jrq1x?w+W7PmZ1WM)eeQSpCm zm>EOV64PdJI~q>OXx!@+rbxzQ2p|SszoOyV8)-o>^x7v*5-G7$MGzk@f?DH1GlF=C zeLcH1Ic4-^N9JeNYPeUFt8brc$zf+W;?T87(DV832U7bRj;@{=59K&}>zh>`zK;|4 z!SL}|+0;XI)Em2nbIR_L=XU-q-yp8Vu3i05!wAoxtYJ%T`a03L9uGEMjdG3N%YavF zht{ITIJ<58DB-O#muHS%9}Sc#MRK+-jeiLyo0k-JYg$?6w83U1i40^Q^E1qSC0`kk ztk$7lQI99odE?9E3qY3wZ+TgbF9;IYm)Mm{R4<%pQeb6A2ymUK>Q;e~i><%sc+(r1 zN1`um3C~|jQn2=nWR<0n3jtmC*O3$-i^>tJ^dGi6u;50xx+y7^K$afNL!q!?bGjFj zS`1&F$Xj^`k1Zp930904#N2ha@J1{+^9{mG?`p=NvCO<Ux!ISxHN&mAIu3~*ByIGn z_{!})EhcJ;>&KPtMO!40`#`V9ei^MXfWD(l`IcG6$rP$R-+*74n`M4e*0DI!a;%*8 zvwkWj0zTf=v<ZekhYqN&<CDuWnjhTYfTr{fZR32b&ASN34wpyIHr8G&8^+a1+UWmt zP0BZfRTpYWUk=#zwH*ff*1PaN1%h3o&F4~chNN7`<qz||ZbFpdFJE-ZMzY?fUsPLK zU2UGxEO`uAHh+Fb8?IKskfsL>b>`qpS(;dQRx9y&SQuk&bX$D$<kA%tGSJWtdp9gX zEz>?p1DYn>jtF<0+_w||@+;^XY$MWDN4tttP6R~!1fh~2$*t5H2q;(*7FM&tuIEE> zfvk2Nz5+Hxt-po36ZQjnoqa);&lxMV^-(ORhw|D3Jcc7ks?wrHsKS7rvsfjB(VOIJ z1+y?48jML4tC0}1MUIJ;`Dw<J{}$a@ibUI$I+syMT$hv~_JzGny?2nkLhn`oBe!_N zGs~$4g9hCRJw!9-Xov4i!_dGr+g^Szaw36RQJ|2o6A@_0U=(eZUv>J7Vq;keDC9_C z(PN^kOLx?{f$!<@@{86Aa2Vgs<0}2}VBk?+%afEk73*T7kL5pbj~vHSK+i24#T8sT zMbb)Ce1yUYD6sKchW#}FimQX+v!=C0(G5}!UVJzb+ED;^5vrJ~B0apr=Rfx3kn%^% zzx><>t&wT~#)B2?4;mh}Q^xFJKUy6ojl18%R!$?iaQ|4W8FM8-EXWf8#amG9E6+SL zICO*Hz=Y+J9Bq|Ad%c<R{5)DP#novV^BlqaezmX?<K&vP)5s!}M44%A10XHD_vFR@ zf`JaG-&;~E*-Bs+yFi7ro-vlV6gD@KPK`w8@nF0Iw<wQmu>|I8lrX=ceR=Xf4zf0` zA6RuY@@0FBRa}=09+}ORGHa0kg^zNEH+FG-Q$lT~Oc`3%|3y=5dQTd*ua(7xW5DI( z`u#bT0}Lc2LIwX<^ab!Q(HAzxe@Z`MWBjkAA94Q2v?I3vgZOODzZkLjzv%~n{cley zFtHIba{vgLIavsq0e^#k{NqpfpT$4^@s|GMLifLgm;b$mZX1%ef8!sB-i8cfPTLGn zPX?Z2`Vbm3CL^n~jPU4H=+-SH&X!Bo9#2#RafGj%ndQV<@wN<On3!S28mc^%T+Y88 zIJv)m6%#wV@zThsmLvLnkd3Kor}3z!oUh)V##Wf@j4Aw(<>3ChAyeWQpk+0{G?Zn5 zT{_&CF*UYxgG`7^jg-Yd#Cp=so;vDeKWegB*}tgxazdYkO*l<ZPD)qsTK!YpWs~7< z^{%g*F5%k8Q{|w1<^y(5ODmJl@CHfacpkJ_4uCUGg!Jk7VCC+~jC&5<kL*_(s`FbX zomt}XFZpSGdExFNL@`4)89t**rJ0pPhUezGXvejw?&VqOzk&MZWO+VUo(_3tx=#0g znHD+xChgN>T`BVz!Mz??Uv`yjQES8aU|GSwo(+l9fv3f7_d=A<>XwZWxT^kRy)zK6 zmmT4cpZibvy#tS>Rq;m_1Z~QK--!y<tTEO8{Iwwy*ZM2A?4c(Sn|z~3m!e(6cLi(+ zKHtvJDX^R?`aXEIa??$`?n{`WV*#SPKbb}b3Yt<gj<y&LLc}&2aS8=Pe8E7i)P;Q* z90hjTw_(z)pY=QHwx#}r$8NPsgmj-@oSgsx>u08deS`h-sqn$7#I~)1<I~CXQn~i| zpe(2pU*2d$-VZIzSY~<<(4iNjm$XS@fQBZVWiN0$_3paPxoFy4lbfb9u=1#5p^g^4 z%hhe!jIuB)#<^@kDnWBHQ!YV=k1YxW0AJu$z2T^=jDyF#D~h{HuP);D*e*X^h+IkU zPBIcv9m&0FQa>5)*l>|`@LY0-VB}j3+rF>9DHgBQRjI$9SHmwXUNggHLb(y@(__%9 z;Ai1>6==4?{3gwyP@0fUa-_P)puS;^4n-&(mc?WuAX=O;J?`VFW}Y48yf}EnfP3`V zD^~eN3?yIX{|ZY^<Qy%BIf~0Z9)Fd}nU&CpYY-MU*h^)Q4wUxJ_Y|TA$D*vdyoo!< zQT51Zi{Yma;(vBCqh=mqgETNIE{|QSht4h-_lU+lrsgA}r(;8-|3SbMJ1kzkL;_Og zgfsZ!)A<8NMp2;=*nBjBfC=lI^I8`O+Ria5>?cC%Xwx69dhn$&I8!<t;IN&Bc?3a! z#dCj1^KXbXn<Y3eiXSu}^s-WmQWAQ7e|$dWkg_m}bHUT7Qs-qesaca7QI)<MX4^a7 z$G5!>uldRhSLQKOJ=^1zeA`a?&c40ftBiCfccc@^A#f1rg5p{Z(ltL7D()T8CLIgq z7iu`XApNlyc`3!boiOl*$kQ}QAyom&=BGB6J8-LrvrNAW$wZX9K%g1V^W@Rz$<4Dl z>k`P$lj|VwO7~qVczkRE0ANp1c#DoV3HhF&uZ0q?`^E=3grdGFabe@oH%jG~{3ikU zA<A+eTH$>2kHIA5{!@!{;CLhp=Rj7nRFaHN^*0cl$$4~$F_uG10SytNMs!h?cP+IV zx6AHe?3Qey2+}GU7R%TdCV|s-a_);BW!$F>R*su2X1OK`K!=a>(e+h2Kj4~gbQ51Q z6KuiEGBb=)9F>a$le8IXnV~C-HK0ofKz!59xT95=nz)LdmJ~2lVlIEbM-t?kg%i^j ze?Vt}s{NXeOeOl6RFth;Ymq}pZsAWv6gpF>^=An-1v}sA{#0ZJ`N=UP`G$3Nu#gk| zVoxUf2FrCyh5wi(5a-BacQ|37{~l|M)<{H(b{LDO#RWD(qFj*9C>iJHfvJ5#TtS73 zw5@#OMGK^(wCi!q<Zrr7g#+}hd0(tMWdTWdKhpl_hM3YZsTmFKqSBq4urfJvg*;Am z%97X!X^=dTg>^`cS+Ka~>m9%N%-*zp=I};BIwbMf#+rC>*&-%9jo*EWW5K3s@!ym< zi0s%%$Wx!Qmvu>u&`D5O0n8^D1(g<hc8s^#lg`=gg(B3-!>WxPGk9)C^k#Cd0O-O@ zqC{IC0+A*OF){mA>CoDAY+Pe9ETBoOFtRJAUv$B#uf){#!C-2<<t~NJNh7TEvPo)G z0och&F$`lorCU7pB*jjK3hdsjj0ld=dCm}li@hRu^b)Qws2dcgrc3Y^V_o%-4_JwX zwLjM-c|xw4v>U>Hp{3+r;pGi`h#s)YWS`#aZG973kkN=#DGX0XV4QJ^5zstW#S6w_ z-4DUe6kyUO-Hm4ze)x({6^5)wv*DfjiP36X%H0b!*aev!_O;xSaenkj4y!wT3VNbY za23%pu-+;o2+Mz}(lVsk8wWQFb4mjxh5`~<Zj#F>%w?65AW5rYPOOQ^%Uaj$-E|cN zIa7PdAsNVorn=Z#Q7#T{6GE~vwcvp+&Q3EEMtT=3-@dNzgjTgBLwOv|zHiE$2oJm{ zkfmSlx-{W~#W`FK)DAO8D=xRXa9b2k#BuO>=u2F;aj<#Ei4#8gN!@RoMfh(}lC#AO zDfSm3PX}()&P?&>z+(=(@2^(!ELZRN&bCmG4NkGRrSHqq{E}YiL@yEnP2T*WgumZ- zN_E}wB$SqFI^oAX<rz@3H|r}mV13)+-On=RzRD3pk<APkto!pfB6jbR{bM}6WPnG2 z+Sl&0Ck}}ZI9v3dp_zJf^sT-;tD%Y4I?jo7`wNr!MLV`CD;xLO;tN1nV%SQq^Lwt7 zb!q2G)ZdWXEwxn`n$X;b;$*jfD1KOBN#4$Ie`6*QOv`-*eXX_y!JcbL8^zOlEo=7w zhFLG`bM6TwZQ|pBQh2Bg_a%K#+p0Vp_R_g4OD%kRS9}#lRc&0+F4%nJ66}>d;tDNQ z)KkuO;n)a-f}H12YbPrNM6uH}dY>R9bHWjPS7NIvktQOAvMmVj^?(AwMqkqWb9>6h z_^*Ywuradyb9>7ApSGv}-iiL}LBjty_kUVP$okJ6Arm7L>)+`JJ=J7m*4YvNElF4c zm??#Tm<k_-gH8bzDxA$h;~_Wcv<XCmowg|B>wOxIOv7QLKP1oG!DOp5P26YASiXn4 z_|H|W8<G_Ht}rYLDmGpq&7Z48UTcq$vut>Y<rST$hxG<STQBmUMBwSg)!^jx%dG~C z?kNs6)Q?me1Ggkw+@4v7(AMtySldJu2$$wI^za<}j`NchceD8wzHiHC?m{!=a4A>@ zJd?KfpuIO=dor;D_Ja=F)nlFD->5~UaD=l$7ABd$a1Mi(F0dPfpP>CP3e;)*Nq(Ax zi(8uqDiRUi;TVRN7LJ56@PrDXzKUV!B7>3f*v@z@bk#ALrgWzCkIru>siEWDTw>J{ zPs2B4JKBRF$b=-xyaYCiN*EjK>Gt$>sbESFD~iF2SZ1MS*9Whc<Jz9<&tJyq*aRI_ zw#Rlg{`fg?t_=c;rnWiYGI9p<L}$CsCyu;o7kPmivhU^-B8QgG+WfPZg@uFxirLl9 zM}*p<6w!KcZXy&rUB<n|w`ycCDpMc9blK^BQCZd|cg>kiM4}S=Crj<Gr3T>zwoj&L zDiF4OO1N73Mvyg%m7$aLa!~90EI`FiUKHX#BhAKP$<W29@OFHGV>ytc2dEteL!_kT zi}{QO`AVnuLVvKzCSh@5z|eosoLN>&Dc(WRLkFX9Q8wA_n{cqVtu}z_)PHz_;Mz`Y z*LD0F3(JkjKr!wQC(Rw~J&E%RoQ3;=wPP!qh+-kTm>E?stuQd^*GK)^N8UdhyW!^7 zukPby4r^&atVq7v59~75i)Ge#+(Z8^g58RvIue#_{2dOJj2|v{zwfJ6lN6d4V>ky1 z?T2#wP^M{f%gs^6b14oc1!=)O=ge@Y)n$eY-O^wLPuT>lmzv|a{x~o#Lk^3#ffPcE zjK5JOrVC*$>cTx0RghEwsk+6$DBv6u1iTSM&9%@tGV&7*7)S}|k~|<UndHoR>#IH^ zR6tn#iSPCBZifTpBw`Z6EYo*ZlwC(TkNK#s)Ll#J&*J1d%(6pb?q`bxlb&{7uX+fd zvEX8$&{gHz#2deqX(xyoKJLeG=_<_P2A<CHUR7IS1X7I;S-G`fMzqV4`5uvYP-x8J ztF;ellWTm}F8}zA)A{2WNjDcSe&G_Aw0OuH4;+di%bn47S+4(g_ttZpFFnUM(}k=& z$x{>YLNQg2s8@2ebHGVkukl@cwtpNU<P2C^-BL~4Ff{8d{^v9LVw<!|iQcWjYgt&B z#zlIQTqU&I7faGf%*@zVskkBin7@%VzIieR1nEQHzEWUWa82CSB`K-6!b0p<tc1j4 z7s>&`*Ut}{ULZ<5;@!Wh(ro`?mHwv@4mQUBe1zlQtMtE~j{J{v|K%$E|0>M?-`C>5 zm`-5g{9B>!w9#$w{fuzIuKYnGMxp10RqNG<@t8kHgE0v$6ypFQNRgdfM54M@pCiZ1 z!p*dE`PX^*#bVJ3$=b7Qq~LF`Mh%LLk&;HZ18DV2%X{Wv<R;PCK#^ZRq<+3TRyHaZ zk<=*-N9F`b>ZWvlFXFgZ@U9f+D>bpuhT3~v_s=5i-r(A-EgCJUX5=H4FNtTw(~K`2 zJ)MzXI$YqNq?SlOY}FX-?uxgZ%1^Lyi6do1<krO<+{_6g=mA3jeIjwJ|J8T(FTyFN ze}+>`{{=Y3#`sTg>R*p+`^UrnyMm=z7&!=87+DBenEnpGV)}0mmj3_OtMDK1_&=g8 zHkQAIwi4AR;@8EHBfIWs-k_{P5!-K<WoI^>PxLPtg&;@p83|3GAfac$0Q;}-rvX`y zW{3l~n!7u|0u3GQ)E(3`@0%u%Z^|Z>s~c6}rPQ*K1U-eS$cN44krnwoY#9S*kMB$z zQ=`g;EbO0Wk3BY(Z3OD}s3S~AtQCK(@YMxv2BvBlt%mHdia2X_Q#wQIH;jythoUEk z<C-MJA_AVjz2EPT_I=E6N2aJ}@<C7{sKe`c9Lh9C6gAV8JKD807SdGZd{PwE(g#J0 zSW<c_;=7%#l|;)tx>LPT{bZ%~aoys3|E%?MP&jVU#n$=5;x8x1kz5ZwVui5@?!ZL% z4`cV*9_YhBI`)P|EyL@^J=T1)@_wgi_`eZeN6)S@3_siL-yvwV4&I3J$P5XauA=c! z<~M>l`CD7<2X?-Z{Ru>?geZxP1aszJo?86ziTP!FzfexxVdSUxM=XApvkZx*1ZT)x zV-~4_Qy<=uU20S_72LVC7$NnC@&#*PqauI$8)`eIPb0bZF(%i-fs19aAY^pvO!2(_ z@7SUBSy6PF=0}x`>SJhSkC>7o#Cm~Z**w^6Axmo&uo|Iod0F;>vFkM%F0~LWHG;7T zndc4HsK|JtT!Y~!g=cI5VFj|jm+{5V<;CE*@Hn!#28o0zNVyMYWi#dsSk|8@BJj60 zc<dmo=cqY&y!ug~8JZ4b;Gd|~u#xE@a^m=Yn!5#<S3thBIS=N|jr|a&_1O><`T@7B zt>O<h(O+$lZ*CBzqc^N(oXAp#tkZTU$k5|<d<ROzL>sXB4M6C2;Ia$Rzl^r7z=iJ@ zLR_z9S#YD7XQBI>s+WV-m7iy`J=p={5O;=`n}k32>(dP$u~L%MG7XOHvw=n-dXQk! za(#_bzX#Ny;~^o%@fW&B>q)+v6E(H6a=$YzI8lNbVZ}a;T9E_0njI|42-6@(W9}8n z&woLo$Za}P-IFkNK~IdwtZa4utl<RyvWN+AmCkt{bp?q8<u`-+G~!~boVz%vINZ;5 zt@!RNiXnc{h(6@^$sS>^=GjR*y3H#H%mYAVX4uT9XT)Z{31J@h9dpn}qeLF~VF`mn zbhB^jtmM|mLJTr@4leT4lt60<vn7v<Hyl6TH+NaFG~cbkc`e{m)O`l)_<WWjE=zlj z>|taKkqc^#C1xDEJRqEkNhPVPq;wn-_Zt+qOO;(+x?wL%T!Ur_`|nGoy4}P<95Gt0 z6Sya(C}w`?)X+!lprvlE6d!Nb>(e_W>SLAIf(|O!4gSIdpkEK*-|W+gyJ*N<Pj!2l zJ@YVs&04eKTLb$HTuu<@qn`3|JPLc@a`6ph&m+E!J*jj<hoZ~?Xguk;jvbj~JzEDy zxux2PcXq~m6*`LuDr0b$7PCq1V`c8X%YISXXz7R==k)z#I2U`}GodUpV46~OAs0hv zyZ+HAJ23Ubik*5^R=wdBI_gsKD3_Rpex~g`@k<!pc~8)Xfu}t3<xRP|9@Lvm!Y?g1 z!GbSD&;MC?lxOz7!1@LF`ozy4McQ4)&1j!kU6@u04sV}}DxaC*A|m-{&Q+>w;Ic-B zJLpEOuQP~|IDl0q^eA*8@PwL(3s=HSk5<2&ChQE^I?}P`-05+k)@Rn7%fS|Y@F}R) z3+;m9^PBSfda1?oMS(w26Q55=A2?^0QUu0&Kmuf-$-niBC_HgvNIRhnlMPIT<&``o z!FSiFs2ExJWz<7@HvpJzdl_CkOU1?w&dzS6zmSi(0Lc|X75}Gcw^#0g0~oW>U|9#R z@~~hO*(3ydMm_evTmV(#3K5eizc)fy9r4z}gt9t_qH4*hQU({&G9<rbQ5pQThTpUg z8nitGJV|${DJwh~s$0RBc{8ady@S%U98R=oK)_5<(bkZA6O>$o65DmKV^5VlUON~x zbFncz1V<8p=oNnm?QEH&@vdKUaBEY9^IPdO-;b`-;Xcjc%4d_w%6bMtRxLE#zFZzf z#bBEcxrp(I(?E`_s<fcTFO11NBAAkN6M9JBRSPv<x|G4@O$2&<*{QI=%%;SWoSNtc z)Q3lrC~tL(FRfWPhsP~uQTFsph%LXyse;B!b?P#E+7ATH?<nawESr$w?8Ub$DV+N< zr~OM;<rR<_XWKdtCW~{*EFqMXEE%VrN>gnj#E>{!vT4`74Xqk8kf*cOXqA9X3j~V4 zH*UX;?^KH*NhQmgT`^kr9+7>}RdWzkbri7ldwo0RJz9{2IYc05vSs~AH@H;#RV{8} zh4MNxV*Axu@W@FjdI>)BqC`D-2DHfg?l`N%b4(N?T2<iVvJ@w1Nk+a-^GHhR37~G+ zhdgP_;L#IQP9wVXI=Jy>xdad?<o^+&*iKPJMHh{ylarcUk*fx=xqwNpWFLm7rx=b# zx-uBY83PEk)c!2$Q=OszF=&6YJNNE9e-4Df^31J9r6i`$nD*3a>ERzumwM!RmlCw4 zM`H8Bua-mqazT=HqRCtaGz`qs;r1KH0QtkkBy90Dk4c6>JwuS!)Fp2ohR$FyJ_B~j zlPW*Oh=>%p3XOKZm`TypjZspT<i&kPSLFb+Y2p%v>J5Ah_w|>2Ub5dTs4;asHM5>; z6>3kimWIkuKFeXluQV4sy+42a((&CuboZ=U`al(WUhmxEW}@#`Up?7-iP7LlgcO0m zmPKqFH|tQ;UvGt4sfp7}KrEFFB$JAAmr3LirzZorEmH2*?wl>9FCcyFpY@9)5=L`o zl*HbMmBHH*+}qVOej*)@6)}_LN$S-#f)qIn=}G&UMp#_{%il>A3GkY`KB+S?DY!Rf zsg3OoZYZrSna;&53f22o<J*C$_e2vcII7#Jnd{O|^JVGG6_WCl?Lf&(J#(ALTNLCw z7M?(ST2Q^FJy)7N%B0E{ip(TSc<NgeO7o4Id3B`xm?dJR$X%-+?AnRM=!Zs15S#Nr zPi-xmDNj16L!3KRwbrPr60w+2<f=>JjH*fAhGvs>Y_N3xjP3_na`{w4=XY9n>=G}x zKlLWB-*ey5DKQn(i1{Q)|GnxV#<doxp%1pSxG?X;oN?88np(p>usiB=y$+39I|u*k z#Dt7D!bMz%yzunfA5P(QL8i4I=*Oi&0N(iP9yGa&5Cm6-zJnCOCnZhGsI7%#Kcto% zsbbUF=;N-3&<=;gaWmUCWixL)BpF}Rc3w*K=)jy^cNt7tcJxPI7WfalRu&GP-YLQ& zlN~MV>?0o~M1||{uLE;gWUYl&o@S5f?JjLKJNDjQo-5K0il_W!O)iUa7Ms{LM|0YC zGB<lPPafAuDK|rI#E>m$S);zOlZk7hmf#~EK|9I*bQ|~mp?3mMpkH4x*MA`~nEno6 zWcv$=@lVEqY)t>Tap3<WF_``VDA|};|AW+E|JSp`{_)WNrmcQXLMBdDLKaR|LS{zx zzoRw&ax;SM-|pzy*#7n%{lEFKv;MEM83|cg|Aw2uKVH=TU^jt(d{+PDCcyHy78VNs z&4GOssjBmi<_Jk5jFGXGLcaMx)@@?TNLuDnZOjd*FAoe73=<@AMgBGPAi%NR1HzZm zElXCah?qVgtvhR>WZO!urdwLIko{d1KQRdAb_Bz|*a^!hYz<efraDAs3A6`pNx`*3 z-KRZj@v{~tfDx{)SU1Sx-tEwMZQHXyInJsqfOcHTv!P9+%B`x{*mdif<BJPc>Uye4 z%3om<Uv~2%qa8bAOYd0l%=wFpszJcx`(dT7#QTI`%D_@iD#YOE+xq_V?9xOuM8rxC z6<z8asAEK<cp1rM_RL7_eF?{b5yO(1onN_;i|&q)V%sFAe>G}53?s}_9U=@Yn1L9N zzB^c+%m*XTJUiTR`;o#~IqJY*SG617LEfu$2a>)$*c<lxx6NTcU&ub5PEz(=1L5t~ z!b;lbT6dec%*}=ND(rqpBU{b)$sA-{NUPYN$AR~l?md90r~-Lip>HJ}v#E{I6rLDN z+f(`6C_W@X8#RwGCzPQr?g__T;wSIBWz+~87MdGEcQCYNeVzmC_A0|A?<$r@$?bUc z`?;d-HMJXmI!&FkbyN^6mk>nNSdk04a^=_o&H{ElyJ(SiS^4_d@Y&H(7w<1jYoJYL z7pZ|V`&Om>fY&Fkj(n^??066wl@nC4NI@}GQj~>8N#*YYb&tw`$XT<OLy-NFRy;~J zsO8z`ETKvzm?U0Mf+&f{hn+t8*c%Il_u_(-fq>OjOip3?09MuOEK_d-Q-^V+r5QJ? z_IH6ZMHe?L6iF<RAYYISFC6fDcV=JMhzPyzi39G$U&v^Vz(<`|(;bHv5nan)%LPr7 z*%*)-$wrQy&a6Z0!5)}#O`zk6cVgyAf1(gRdbK;%e+2QkB2@!tY@C0F!hDTN>qC=} z!_Kp&1YA>w<y;2W&mB@FS#dwGA(JIFDpTkwZ<4&FQC!dPk@YyMk|A7%&lRDgCJ)V= z^-z+J4)1YkBUSH!rQo-c-nzffUij;cF-`wGc<CwZcrExQnp;Vdb)xB6dNSX$6@TCO zN)PzFJb2EhCytfWJ%S}XD`TYP{e$_;N8}-`Akir=ph7<?6Ze6tfa#S#F4z~x`=!$s z3Hp*}2ox>Um^d997U|EMEuS?LbC^2NhKIBDDFHRJ`{x6gfMdtn4~7uis!bv2(kVCY z*i=G}qP<~I$jP{h#FP~q1c#X^kuk<=4DH=0uY7HJ$Vi?+pIezQg<BxA5H?qI40T3( zx&%1|#8j;wTyCp2K;(g{BSpy%0RqXhG<6$4Y7Kj#to_nFYE`y-U3u&|_Kw^%q>Z~n z=3;eox{fjvK;R0%zsjbPmH9A=KbzUVwK72M>)}~x5H{ekwkX^GnMECLEF{2A!JI;u zL{a;EFd%T*MpiP+!}ZhPT?vs)9Z^a$+@+X~FW*e40yo$nd@PrBoK*b4wzTg+LbJ(Q zaN_LI?P6tgI}d9q#G3;5K_vpoE&<@+ALQEgbw8!$%U?j-V@&;))?e7QLhyB$y;T@X z3Gl$X4aUf&C%mj5%0?}M7Ap#vyP5UD*A_qHuc&L`;BLm>IJQdJT7984#--nh{6#E{ zRFp~xA7mWMN0!fhy+kwA`QeT^4SAp;(GKcbA*Hk4F}+xba$2nX`IJysMN()nUQdg0 zRGn99ChO~8NO(WR2KiRdQuES`H!1!dvn){&z>=cZO{lz|310LgF`BMM5<;r~Nh@dZ zV#fb_rLctf8WdD0UQxk>66=gAO%_;Cs5ChlGH9sKLz`+-3W1~Z9-y=c8xtOiOypXf z2=qYNSN<t|N|B>P$mqz|7QkEq?c=^PPjQNsP`f9x0F2a{&|1SE+MiqCDJ|4Y?E;cu z)JKT|1Pd#$QXwm<qAhf-aMmkDaRYIx(~fhJuC!S;;D+fZZ|u#<ywKd}4-@ULhmx<~ z_s9D-p{-}3o7a&Zq#rhI8VRsZX-q=^MM8!l!b8)!C{~0{w9-sE*6wjph9SbG>K0C~ zOAp1SYtdj?KJe$9>x+r)JJ)9x0p>~4Ss+pwBP+~mI>A`nnQ>pZr-KnFUo+%Z9j<f; zNI%&--L|Y+^6+SN;mCc@NFjE;_^E7%6Bw1SBTxjf#Xt(Jou528YfbHOJ0+s|DWQE2 zO?E_Ui)L9Jkp-jrHZ=A$q8n)q#*yggB)`4&H~p`0Xa}r}vUTHEROKt30(q{?*yU@_ zY|CuXG~#!MM0sT6J81s(aG#x56fK1WQS?vE<F0gJs>@`t>RpLw-t^@4TMYj2P-l=P z0~!Ka*3xaceQ>&iR}zTi7;!OBcii}2H8>U(h5i;cPZ8ZV&%T9rVu0R4<Z<amqXZOm zb|7bQkbM6oTn!LbL1@NODA7Gki}+&t<WomC%yOv3f$Hl_ol!7;Z5j2t4)a&vaP26> z^g;8)QSLH}b^i1q&k%|Zl)c|~j`K(A7JwCmly~_0C4z4Hvi;hR%Xs%&q&%y$uC~jr zoX@}!fn^v(Qn--F;V2Tl*-T05{Axfk^O(SO*>virK-OFKZis$POs@Ry!5+xw9BB)T zG-YhPIK06*vGYU=KM2&CM^CD*VctUMe&WrG)LPafO93X-*<4dd@co!m+D)?(?{f0Q znFdH2Y{-eOR0s@O(fy;$iO_d3uuENbG<}Kw2`4m2DHXWNm(q+1PIEpAjbiD~Yh%`( zw`nUcQ|1#i{FCbl*2uE{SgC1ap|*o}#bH1P)1EGIRRCw6g3blVNw<)}1mjc=2PBg> z3tj^Y>6^W#jIx9@;;&LI5-ZE&;q3L{Y{_3KV(``#m)fr4<#L1ByQk*Mfs0wj+Qd`7 z`w}pd2XkGslq8rcXBw0r1gu}$`&!0;842VLfSdV=J9<|-InXGI8Mr-%0CDV!>wB0$ zWy@Ke#mrUvwhwoCRKg-5PQ*B|{|!veX>{S}2I3%`cZ@H)1Lwleex1A73l|h415q-i zaPeL?=Uu@o(!_@;v@~3Xhlw>T2ds2xjG`e?FTPt}Ffy3_;sDZ1OWBdxCT?=w=3J3c zRM7$Kq?}0RUZP1q9Z4i_O|swVp0ZPLVqlAwUz{=d1=WY*q|<_fOF^@J`b`@TZ3&B^ z5_IiGVZW>=Oh}MeQ>PWY8*65+fI%Y%%8?)}?lB7Jkz%GCtQtInBj>kx;PaK*b+f6? zWLis8^_7Sckpt_Gt7XuNu^AakhE-KF>1&g?5tP+c#frnGDKr?B@T8fi2?=Mk4fwH* zN|(U|ADU}jpU}pAA>*aCm^96<5=Ea*dqEJ%R*^_Yvvf7@m{MV5th}VmW(;no%LB|T z=Hz?z<#1t%rWPH+AcL9l{)~=6UQRh$ve3_~=FxMn#yPu*wDXYJ@WcF;^PJfaeo7~) z5&3S~0b{KL56-<6nP@i6W-0Dl6g(5<bt<Bslou;RAOPx{x1s<^a?Vn<TS3T|jdtJ{ z>Z^3t{2gb8)`cqay_bO_0+x`U8ce1&&8gLT%am!7C`oK>nJRyOW|WosXuGQ8@Z{3) zHbSiwr8(ql9(>xQASuI3rAX26cKTeNz%fg%iMLVCqj<UJ*0EOOt=&2CYYkEq#bV94 z$Gt&Aw3Fk}x-EaHF8H^dmsTkO5iFa+a1b()U~RK+@8(CzRsEPXVrbrt>d$@%vcT=F zTqTUIe$p%jQkb}4h@#^YKTH0MG|7B=Vlpt3$Pw>r$K|>Mh4DCBu1R%{7>MmHTEWJF zcb?w9Xnq}CNWe|tGIicuf6!4BrkO)83ds#!<9se6);Po(GDhT?A>QvKh64HumDp~i zw8ChES%T@73q%XgPgdzW1N4B>w)+VkD?E8P5<KOhLxqx+$YM5%z`i1Zeq*12B#(J} zSS&)Kteve*q4QkVyff8P)=Ur3RcBqdGcMmOd~tdu!A6IItvsvdN{Y}^k$WTNUe5Ig z!#@*CZV7YYjoO#wE;^gZiul=s&Tw0v{md+yhW`3Of^@aUn#6#D1Rjm!)HSGl2rLbt z7SXkelq%{;X*<QiJE&$4TSnyB+O#A5erOcyA%LX&SRX~&g_MKEbnuH}!{Ijw&Q40M z-|U#7xIB<}M`d!Fbjp&ob|ZAQc+uQiaf%Pb*JfdYRTJ2<WajH#L&ECO2<YY_C{2}$ zai!~-^TC|Z)k%;ok0_B5+BBAP4#jmtr!Y!az(+PIv8=-JuVeWBISjV}Zr%muBFd6B z#1cdujDQ<cy}gSF6@w!J3#DTNYw<N0XHM)sD}Ld7pP#jgJQ=c*l4g-HUWy`wj@cvj zx<kI36UB8tXwDw9e<jNQjyvIBiSmC6_GV-H&x5`HU3WA6AL#D?jx6o}#(T8C3f5+1 z`djyCh3Z-{>#b;FdY?2e5@^3f3q^G9*wbXzG)NORMIyklQT>MJ2Q93|Y7dz1xSM;w zHnU+R$6V@Vm0tvl2PfJ*kM~`56C+G(5*6}2wT%qoBA~n<D5e_}%=01`WkuR_csj6@ z>afj(NP|^dem}K5OL=0WD`JYaAst%O753Co#zY|8nc&eb)W$AF=lp8G2>%xAQxc_y zM$v$f8Zn@K7R0sCaQ^TreQCp9&;E86zL~kBs9mb9f<dPWI7((1^Q{yBCFapAwpaMF zwAZ4aWfE;J2ViK1#G%`#hZl_t6%2K2@X+h(gE4Qhk!>saHT-zV$=gpDK*A^b_Rrw= zNV<<FmI0VOh^Lt~Ge#y#ja4!-OZFL*trJ2!wh{D%dgYSbR6(N#m%+n<^}nXwJV}}* zPIqQVk-7Ac&iv+|t5FlAMi4~BZo|N=7QtVUr5N@C*P@0NRK2m@K^kr(L4oijkXDSt ztFsbm@<RyPco->0|3y&9IB^94gMiZ+W{uIq`<<cMv)Q~4MWc3}0Lsq>YDGMnSL6)F zX9k|<dR2(eu35*wpZ*+UtP_PcM2hN~b+S9K<<0qIR3GP@%VeVd+X>?)PD@v%!+LFu zJawGp<>%@QBAGU)3Zkelq1cER7%sXz9RR*YOS}4TVEA&4K<pj-i8y0!>aJ#c6gf*s zu!ayA)fjM`=XRlUlLwRt%Px-z>h;!77D;?nB5)wgeR-wWdP9b+Sa&4zr-6w}x!x@q z?+GYJ#0KykJ04>3i1ig9Y8_HG5|Cbw{#l^&Jlp7^{KS*LDCV}Sgfm1BAwZ4_ijb%u z2HoyY0<3#Uxh8n=W?-h{gaU2g7r4(uvI4|i7~YjjxM!fyT^0=L`N;CApGK5_!&n## zHs2sLDHQ8ZmW(Zw!;bSpvzs8Nz5Xgc9oT-2{Q;Q}Z6*Q3q-jxEH?v3d^9V5mX0~Kg z?MG{Yv9-Fe1J?8OBFm2Wu=oh}hD(Ka4+82<s8!}==+ayeY`h;5=2|fhI5?7QZ`dz1 z&9xWoICDGyut}B!pF_qT2<s^wyC_k|71ux<vJ4$i)$lM!2H(lv%D2c7LTxcLlo<1v zXxg0L7qu88Y=Eq>;(`%J_<WroyD_tYDU5hLy5!(Tjd0<Z#aC2VX!&TXsP|cft9^_i ziw3(+d)SjIV7G*VB!1xfcxvo3fNT}}vx+~pQ3yZHsF$Bq00|WlX}SG|%1<()WJ&#L z473cx(E+(|=G{RsYL$mLx(<dSiLW~y%t9nikweg8X1_1YvC`vupY(&1WtdNvnTcmW zdCt-a^x1C#B9R4%0Pd3+1?xFt0mHLp0&ozzIR6*{Pa#g%K}0tHrdXE*^yRw^_z7^D zJro5kLwOuGP{jtfnA9j#f>ab!jNbLtF!ovV&MV&|vo@>{+kIXp#DoVQun#LFh^`yK zmZdf=Na&&87cH4|vI;9H3i1P#GYbSk?K)o2&O-w7&?n>m^rpEuu<eohl@z(hPBo}- zk3XjVFzzK~xd(Em?}Vj{AwOdT;585Ir}!#M3mmTWyJyt5AcoNfyxpi&8WKDr+_m&< zcNeH^We-zkQ(?<*HjjdVR^(3LU8&F0pyDWmJ1wK)uI1hsm-lEE6Jc1`{4xQUv_)wM zsj4gFHRD;<n(*IErX5oyF_adyn<UtoG$CCHN$pX-hO0~3Ac^Ge4!|v<fO#EA6dVZv z-~Gwgy<2%kWb8?}`tv6Jsa0o>o;eKhP~Bk?&gnsF1~w>$lubOWEIJ>XSAfJdrQF1+ zLb55QzY|#_$CNusb#RPH2({tx*mf`w=@bp5N9e{U2vi^g0!k7Lr{>)B=eA<$*Z_WV z0A6f0Q{F57rb~KW$uD~;h^r@J^On3B>cb18mh>cb0faWf``s3^k4lA)a9aQgkB(j# zrQ(6-p$(zSI@H_!bx%wsL|%)q)vcJogD^n$e$gseQct6=R5BHL@Q#sV49;-vn7yIR z8Fw};c`R>R#k5m_BL>XDP*sJ6@Uc7exu?^+x*+t7yW5|Gy&ad$<EE{9q8RsAD>tHl z;^Ct4su|0KgN*T;V6p^MU1xX6$h)QcM&d)Ohjh$)%tvhj%N3<BSno5xUrfS44M>IU zF8+p4AdT1*Af;PkU*UGYTSudl7rZh?5ZlJ1!=FY#yZSe=46C{_EYKjz88OQ-<^AgT zQY9Iq(>5~-*0eT(5#>-?0kt$+nDBEjIdO$)uBsdB&c-C0gIye-Yy1aToO?18S~e-H zjI6A;Zf|Pk`TH|1p3Qhi%QM0Cwr(-W(8d?^y~e~hV%1@_3wR+jBe<Ng!ZlTTDX7RM z$E42_4ujDZ*jk}K!vXvl5~VZ$+W$q}I|K<ErEQvN+qP}nwv8`s+xew!+qP}nwr%G` z_1~+hn)s_LqI+gG@A5sHvv{s}u5;gd>WxEEMWkx0mm4dRlhm2SR!=md_(u-gM$lzP zTGp8pbikiy@ERL2J($e4{PWMm<`Naw=60@e@V2PN9!9eqkBEQdLNMWQ^*CP4QZq6f zi-qrv$35M=z7t09{knTSK2N4~HFtV=rtuUDa%|Mx&ymj?pHwqtV;v1+>8G5H`>3tO z82H`EJ3b?8qPN&HLT8@+zIt*JnKbOh=-B`$ppm?s49V^^mJ%tfC8}X$zSl-MA8M&9 z4&(9jDJ*`lnByl`==xAPn_Um%RVlZ^4$-xklqWIIS8@I>q4wTDXpZ=mh=s{{ug%d_ zUC^)Wvz|;m1``%c>5FV2t;b-`y7(XK?gK~zf)l&utufHt+b0!Kk(z3m7M<TaUDa9> zgaAQHUwM;9PJ-<?5PUBl^huc87?a?eVj}SDyA`nf{3?FXMg@*@Wk82O50n4&1<O%Q zCrA%dT}NK`U5TId4z*NdmS?qV2bg@}^QppRzg#gh#eQWgA0cOQgQ_YX3a#grKuQDx zQ{`;r`>e4P@J9(>(gMtFq|3<|wPG{UPP6kl8+YDEnmgi|Iuw{aXTE(*uQh~Fv1L;7 zT)rCkEcxRgUq(XnJ@aYl9zkKunE;@#iG(@AeqN0k0!$%u7R1%&FC(+m7t<kHN-30^ zSA?Ze4YXGh^Ij4}Y;_tWC%SV)Aq>N@jrmjy;@F&?>pdd$#~zFZ;X}v#T(2zkGHOEB zW}ZJiZhjP45U+=hkZ;Mh*JGSL%p98%yM7B`MbP~TyBiGYiCdED=}bt#uPw^8^U%@j zb@!P}c9DC<+R92!P%rnmk}kJB|6$ofT83}%-F5`4-z9!G<bXlYk%H-M4bNAd7P)gi z(F~?H*_6@kU&(*-n0~-@8d;;f60dY_%E~BCmodg{73={=H{Sygz;+a7gsC>UJn=#{ z_GMwbwcFjke|z5MXJ9qc4A@ZDWSf*SH7+a|GBdG+Hdf=?`>ANwCDzv~<6w|w_Q_Og zK<e?=DOvC+Y3eR-BhOn~#8lUrpo?4?d9>Qt)f`cB7?wqUvV1DCVt27)OzaPT(Mxb3 z$h734Ye`3W8!66GzuHPD9l2RvQWFA{L|^j}3;ZpP%Z1QEIDSd0j;@y}F(_3Cun-M= zJ*vf-0nALBd_gPY3GbQThMU%q1My*37zLd$*trcv_rQ_mNKad)NZnzdZo9GKYK2J5 z%F5@bnh~uTWO19(fht7ySu}`z&Fz>Z6F0;N8Ss+pZxCd#d@oO9Jpk(lXv&_C5{lGn z7`yg(aRN~tt_i>5a>V)cSt9J`mqCHuIx}Z-Odet!Nq|J7qEZ0e_WdyQs6S<vglO=d za%&uz^~gg0sQ@ZB36?BRt)tT~<l!%o;xFQxT>E~`JznKHFKR|P8Ds!QvTbDV1Pi58 zgc_6;!vO%6D?=>Sl98yHQYj($QVqCN&+wCwibrn*V+BrUq{!V;JrOTV*SEM4eF0-C zf*6oWZ6GMox6R~IJnm^-3wI`)!QfaT0lzIAG$H=95{&JIgfE{O<^|^rUx>YjQdAOH zXpIP6*WRUQ*gHz!#f0BlDw%hWmQxyzQmKRo5*P@nsVC%rqku0FB-V`aVSrW8=H^w8 zB*%7U4Eh&H#`N!WLjMaSWBRAScvhzWJ}~}&BH4dl|NLL){{QSD2GhUF4QKiHp5{)e zOUG`GA@*FVKgEO4WK6TizO2ES)?aQ9b$A5%3pbP0P%0TJGrv&!@jhE797L_QgFu=B z#82N`c=|psZ*HGFhpJdKb6Y>;(WpT9Jt3G;Q3cT`c0QgwXHToxoEw)}Z`<ho9w(}a zcR~g+z!=JRLoVM~9GZmpegcbFqG5uj&nR&;dbO@E>_D{oy!d*a+BN1q?d+73KrEL= zmS+kps~azVZt_TU&+L+!po#4Ce%V}=$9@-b@}~)k8m7Jb?S40T^lt8vW-QGc<`+-^ zoI9kHSA#*uV@;jZc|?MdRmozKSQGH>r8kWQ;m~H$3e!FsHJmlJa=&k~%;hLL-(JFF zN-qj(j&N><ggQrs@_D&+=Yoc>x|D!fadDDR{i$P&JQX&PVh=d6m|87w?EfUP<9YUS zPIys64;pN6CnTOl+t3O!GqT&dzg4)mGkb5XIQAOs%_I2UnSAX@_96Z?;yL@O#>GmK zNYI4DwPYk&F%maUjwPoLs+F$wvwksGzrfT7|J$l=JiA-ja-F**e@lRR7Gnd#R;Z|r zD}r@!W;=Ei0+Jn~zGP$EF<(&hq2eMQHixFmpVJ2k$z_XEF{Ab@5$J*=Vv#<>btytp zQckgLa0OMXj5071$c{9&5CN3lhdvBVzz?>JFFVN%|D8vL-zb9X(}mepY4|<wd|4G9 zgcGe*94&HNQ`)q@=@-YXbt(BR;=RNFWoS7^{3`Y&a06Pkdqc9`8BI)K+x=p5#Dh3O zQ~^v0x`7#xEsr3>AG8G^-p3`fD1OPcjOE<FCywQc+3=<Fp4JEpT_=T?#QBCb=mYS% zl>h3afx`hjf~-G6b-^^2Y6vBb{>Fg(<R2B0C&Z9w)K+)?5@O}7@GU6#mYfV~)gKL2 z;B-AwQY@eC{lOI>z4iAjv5unDTe`%1l9an+G>4#K(5gg7TePhYYpe&^z-k2dlw=sx zWLx`%x~EncZe2+RK&ppAcM9+nM~^@Wq{cn34GD%J&oE=MUSkw)5=KNCJq}ZasMxIb zI&3A+MnB_5f{traJcIyhmnzbbcJetZ(!nEA5J)gk07xK^ABaDY4~Q?27l=2IXBRMs zMW?NG4EIi?1}Z}i5#-Namg#IXnC}3=qgK#}+Ki@&!Ud1M>fpe5jV>on{~T})tJ%v$ zG3x^eM{rnp^ZXm5sADHNJsKVfA8K&djgN}R0qPDI)%1dDp45b6+3Dq6`DjHqR?XQ@ zpXQVu4hzgGmjVD#+9Eyp#hX6d(j+d?v`(Ico7Y9{wVq<?-j08X2W=bUBLYnc(xzBk zn*~nwyfhWe4K>s`3_1Qhyk}r8g9dpVTJRn&kyFTZcwcu~AMa~Xk%y)nVGnOMz(}Sd zAMlJ9t0{8ZH`H{btDkY6ijS^7xHK<O-1jSS0eQ_BP@jp!8LF3yA0M^={aFZkl5|<N zrzJm2tZAKc%oc&NhFp%b&1F;q^SHQopts6wJ|q;O?Bg%}3B#ZlRtelf+ABkkvKp}_ z!D%%%?{GY$W&!z~T(>5{{V1qyv3uoyNdzFg=7lnIPLY@QFzlLvaMThIrcU3jC*WUZ z8w(xvMahhA6*wTqLScQzCoYA|NzN2|*l|Fq7}hWH9VZS_x{KxZ4<bIz)C87p6G~BK z%48b2Pqv)mo@plRiWKJMi}kBa%OQrciei^d;2t2Q`<m|ynB!MaJ%Gq|q-o6lM5sSU zx_c9;eGVs9l7zVFR@5%ZE`}dqvbjUNO*833vrF}Yd?PZ6Dfv_8hs2;zC6ScVY1hwu zs_j+#qUswS?N5VaFDZJ^)+b!{M13(()qxXu<aF;y(cblSW)aw(21xx47jCte;;OG> zMhxV36&)}}Qzfa8qcIFGc6NNeo=&Zuzt4yKXWxgl_`AC)q(`U&{aHElMG+(ex4!<G zNggsAH}F%4eYH_)5oJKmWJ6+o^7+4IZQTu{YR?l_mG0%>R=RTaDM&UxNpew5c^56{ z8h{&`>`%u4sL(cObx9OvSJUpWQp8tYLyrC)Lhc-Bkv3yzD>$JU)4w@~Q!@PV8eIdf zM^bQ9<$g?2@i8kXhB`dhc{zw$UOobc#1b|~1&1yqF-XP=^3(Suc0sv?DYZk&r+8kh zh(BQ%Vb0CN8MvWfRD1K`o#}&lpMOQ`S#C9d$$F2RuD`%_xfEVQMMHC_ag>pDT(0fk z`&Y*Rhvf^#2IO-Q8Tx5m|Frni8JhWr$^mHv4XS~d1oDKn$)quI`PLLrMoN#8Fg})7 z=uamZiF5?|f&o&Z$Gzkbbm3OlA|t;Ur+C{9ygjYvmJjXvRZp9Evx%I*a5()^l>87f z3+1_z@BdatwlX5D^Te)rAD#TTEo;OB!6&o!rqvhxWnI~Nsaraan`MSg3`H(Nj>@#s zf(|-~4%Q}eI&MsjL`W12i$qAy?ot;rs6xp0l-0R8?(Aw^o&-5FBb1AM*xb>A)+|x( z&f5#m)JRxD+;=)g-)peD00fF5K##a>Wt8#vc!$9|EKgy+Utj(ZKz*^t`}D4T8-H8t z6#u~lAT&PfhlC{-fyj|tD(c&g+nLm@NY!73XTAtUG^M^WxkeyLv`)WGv?xvsiK7># z(Cw4UUPEN7(j%`O>ViY%AHKs6KqI)ElGsNgMa=Wp3JZj|XpnKFnBEl-G*|(C`gB@e z7TbQ#ws|onc&i)8O9;Hl1II<9f~zk$im6MRqev$E8ZqJ|k;uIRL;wJcUggrOf6!va ziw;AXi}HMrqWRlHEGY&SOu{Md$Z>5B+X>9AJ(zi<4BLiqKtSQ9v2LMHs5n!8JmN28 zi%k}*Gl(xzPQR8**e!Y$uiq}ctJSFf{f9~dd#SUv*L%QCU>8s5+{zzu_ByWdleAp3 zCEIx-TxM>YDv(Qdo9N-k!=}uOB&}CS#Y+?eB|wT1!=%<0ycQ|B?6ZFy(AE+*IEx#` z9tv0dIG1Iv<RyMcdvx8+85+=APzP1$0&G|=dKFLrJA)?LRT-LS4Q!|E<pkms8qB^- zsPO<ryL67$UaTHly}X%}N9_cU@i#%JUDV^t;Yl*Pf{afYo7*Z~8pSXS=e@k<EzXl6 zf}O}|c}xc~D|G$}_<5vby@(>xd!KF<rAZjQOfwzI!F}4n9dz=#nH1`;G4)&!6r?7I zvbk_2>vmZ3sd0xhn!ycr@OW5RcX>9;kvYN4Rd%mPA^waF`ULphm&(0-76G{s{rd)O zJ`B?-_NS_DwRIetd}SO6<1`Qt1RO@<Sm!bQdqb!tZ@ykU#}Clb->iW9fQs6%f`VKG zv@>WpbO{HHUy*ir6xJUWf*k|ay)foWdA>;sAORPedX4Mu0;vqyEK0a@Picp^);&Tj zRLyiaFNBLVRq=B{M%|P{7UG3m4Se7SaKpUEzKK!#)D#f5W@gTU6sRAJbr>1TSaw{D zw7k_aY0yW&CFqGtI`ocG8%x5;XpQ%WttJ8lL$>)x+8qW0EfZ2MiFIW^o7XIYGyZ5x zJWi6*bti8H7qEVcL1_n16fQ^|F)e*OfxwZ-l~<S(%PU@2XAU(#<>mSh_TA-%LN*xD z*LNuT^osBiILH}Su5D*!RRR|q0>H|>sW_N2zunJ<#J~;R9QOL#_S5}Ah8Z^6`VCz8 z2kujHm3TIP(*^!J>#@{Z3pNYmtf+MvoWzYA?Sbcr6?iA7m;O+5J?zFMW{p+I6{SZ4 z*CeX#m>kar<4(^%iSj-!G=AJS+TH>9_-}ZzB9d<mk$)nRPobD)^5co8g0i}G+rqFn z16vO-$-HKp9;kpD^Jv@DDpS&Yrj&Fyu1?8O-{4>Z6;I!mEX(B@FH5T?eWz}!rK*5= z0dfMUbYB_-Q>@oG?hyH+ONg<+qqCA^C?p&pshhFpn@c=gS6`}M=cfGD5NrTa*)+44 zX3vmTi`ZgJ!mZ{}1;8D+t``b=19ug(w}?T@!<o@IqYnVHCKE(rf{6i68_-@vRt=A+ zoE;Aae9%pRrh4CVH>CyPw^KHL#FYBgZRV4nNf>6?Xz7?v{%%Q<-VD*fQQ<{1^tY29 zW)Pz{d(Em1-4n!yUtR&P?(1g+8_^~T4lM~I4Vji@;zN!fway6yVB~dIN_d=4^qDnP z3HiWFNRJV;3!*wm-3ZGUHCd~(ZdN{F%Qg`hs)&Pk4k_3fiiEm;MQtiH_F}%j4RB$- zs)_-l;0<Nl>=b1z1Jf4e&4nc)4<}_YT@Ig%unI(nTP>|z`-;+Cp<+h#>mFkU)=DX& zpBc3XWb%;+BC)spVkBSYu)I_Pr=AQ7LJ~EVm%>y|9?c!GBTgF}yY1mptmgGTU<gz7 zjZ}kosn{3Cty}^Tqdf&N6$J}%XO2$CXPbDXlCU1ZaMKDm(2TCp=KG-;Lw6uJO>O9& zd-E+TUo7_Fs(Qft<MiHV8POTzmA3(&_orn>dS!Zk3buqLl8<zB5e4L_A7TEv@69)m znP)k^kfXpC0SX3e&Z-2C>+SCG4i^f@k0!qg3?KN*I|9HaYSrNPKyn-UMaZZdC^H?0 z88No(2Z8}m#3L8_uPFK7$uj>}l>E;&G1LEwP0aL97V&@HP5xg$`+qQXSvdYzvc&%p zEx^RY@IP$n|K8MP`afanGBW<-IVa=)CV>AJsxA{N3)8;?@Lm5^ivEvm@h_1Z4VcdH z6VM<ZdnB`cL9!W<taQ+oNKo4O`VpjaR7$T0?Dqp+)n!>Jsjkl!27`K!^9wFjmy4xK z%a@C6H7!-QMjk3?)WcZ%1ftj`#geE771ho4N_L-;6y9EhO5gPvy>FZR<x^iYaR(g@ zRa!Hr9vPKqo=@?+6TU1nMa-qx2W}Sb;$tSbQ?3<@Brw%7StQbaIvFD5rD~pAt9M<v zOSzg2zAv+9<QdE3DlB{p>Cx()2f&8}IE2J=f=0vV(W{1xc;k%OibNqy<Y6&V&5{$Y z*eb<NQ&)B`S%@NAb?ju!PjYqlWwbx#G?0PgE*eW2uwwPg2emPUB!NL4GLIC{X!!x+ z(+pLcvlX`L7s{>cbI+Ha?|C6|%a)4#tg+i2xNEIUQlP#)dBB@AF^+69btgM|dSU%g z0HuF~Z88b7h;{mTqb~BaDMQuBeAmkuP5@}KqYMb;bg@k#L^lz(Y?jyu1MS`x-=}#b zEdC@~FkiDp9yHm5Yloy9z)_fMyKI*E>{gALUBUKxt#is066IZ={<-$x-8z)RtI}rV zU<Y7{gchM@!rFIyK@c{JEf9JM`4ppl?bI!kcHc#yVl$6d)CAC>@m;E`-0VRE&+dnQ zm5yB_aI6@c{OV)o_Dl&UB`E<t=!*5!vt!GL-D10Iz`xiA5MOm8f3w0R4F#N&^g!_M z0o;=8D<c=k_REO<0!}&`Egr)N!ud@0ggR>-&tKuS@7q7Kwh9yhMw*Bzy$MJm^^dr> zCIvlVkcSDZY*e25zDZBsrpyiCLZCM%#y}Rf34LpE)TP(eLib3J6Q><594Uw1{eWa_ z+=W&8JBMcs$tNZCXhb*3=uLOq0lT}lRd6P^fH7X~;)#&RSj&{EURD|Bj}<2cYDrz< zUsVU7^Xd|t9f{b=K_y#(+1f_&opYG-mpFX0#3Ej(d^Y2zeBFj?qJl@mAv*Z|$+--_ zjRYXJA3hbXH{xSow?m;&?+vN%RwzjZ)BD8kC10$rRhC=Cam3iu%s0F-ULPl$6Qg!l zZ{UwuyKnfm&7B)p93-9Z&s$E;8V;H>5BshmT@V$?0nZkW>XjAS{rh@|h@MX)wkHP} zoD<}!J#_XE$m|UrBdDdnz#Jg+slu*phSO^se0d@OG1L?RH9WzBnNcQ5+L%md3HVS0 z6El5s3CiJNAO8nO5E51E`5*_r&(RRvOfoex3djfIvRcCNM^g*g4@*r44l|OUDY1YL z1uHbY@@O5d8Hu(1UbHrUDCs^5;g7`Z?l@0>AB%W+Kk5itpP}PCv}z@6L*(bve24+3 zC**oKmC+zPN(2dk82?}7<C=aXW&N3${VZ;tQ+fa_Gw?7|Jj@E&jXfR4d~6hBDv{ds z1EjvDtBvI$qv6*$yjN<mBHBkHJsAv(0~ZGJbbHDsaSzbS8r;QeSAGD6E$gLiPx4#1 zq#4&O!41fY0187Q3vMc~Rk^sE_98me)s__BnCg?H!ESlKR=ll8(qsSp6|rT!a_Uzd zm%(lw#Kug6Q*JA8ZV@o*51@HI@_PR}-p|!<uppi`@r$G%6*#5aX~=$ALMq%Ma1uEi z!*!e1OF-RtjGrt{Ntd2oyrOV&2<hsmmv!%a3G|wvcr%m=u<~-|{IFn3BTARsm1=(# zrO6<$xZj6!Gyg!c$LAu}LhuV7zx<zFT?a>>gcY6d)erp5jKYsv8iYLGGXasEO4PzW z$0F`?%V7s*F1pMMp^4*X$?h}?S>BK*E=xQfW*4dbKP4YaBSXV;rd2NwdC@7IC3qR2 zwO~4mm3zao_Q*eDDMnCkDJGoh0?lpcOEq3M%lfMHySAZa?~R%dM*J+jd^MIHwe65I zHGDL5{Pz_~>i88_s`m#6&1&pt%(ouJc0$ja!=L)}$1E2z-vpQm@lgC+gX^+)&$zuV z&lZY4-H@}kLV7=E4^L0XIg(7NDz$p`Afz1O5arR1Odha$-^0c|2Do7OB0#SVo;WOD zdagkE=EoW6a@4yZU0m8aU#{=>9}(#I6@KT;@RT%pH=Sm_0|ZFEMo|CwKoT(dHh>C{ ze1S;#OT4uk0E!IU%H(|tc8B30oVWon*Zp?19W7^G!rOt4q$0o+gds=9@*TrBp^j7O z@oxEV0?sJX-2Fi3LQ!&5b?rN}OnxDZp!2jFLJ+Uh8x7bG;;2eVPKSF_N*0?-(P4)8 zo&=)zD<LGu8*pNpdPm2Z2h<Y_JH&rv$Ym21VajnNkZ~d<lZd6=XCX~ctdiAVp3jrf z0sqC&9NHVxoWq~?-^CP=RT7(<Eft!ubYgJDVs}OBClAP5XK|TLJpIjLf(3%({=H>% z3MHP%nq&V76M8OvBqPd<%8PODSQI2;@0ReNSEaHm@lm1=y0HEAmsO3eZNEoK*eI~V zjSOaS^SP?uSr+QF$4-FIx>?g+t6MD3drhjV<#xq6UVAY}`x5i68*3ms&s$=Ida~rL zGq2jDuTod-?Y++QyR|SE7-UbRLEKhUZfYjR_bgU-v)#14RGo0_eJttv5k-;JTU)gC zMX9@m8X0>99h{zx<*c$!v&io1wbi7c!&a-ooY9CZc@-xuueo_g4{$J6q}(9|i8jR* z4iDu)Y)3#faiD0MHfMER{;Q*v-N}1l7-zd#m$l9Zrvks^kqw#D<qCh>Cb@Z-Nh{Y& zW&)1C6(om(g1j5FS>}bqA2Tj*=CTyv<aejcdJ!sYg==1fj^QB6)ERfSVX(_i6nLSQ zU6M!H?3=%b*4x$l<wVK)B0=h=qt-6sE3z0fb<poTQAvCs*423|Sl91uDM`7|_*qAi zjd>AhrYIGE8b^jMJmCDagI6l8ld_|75_~86DO!byi<BYSm$XbAYIOv8;}|n0Ev>=g zjMg-UN@*t-3&esbk7T)II5nrllE~y@wF7}!aPd87b7|OJ#hyt&u?rV26)u?_qD?sP zUKW<!pE|;6g)7|2H1HOTX>w`Qo{}lw45MxZ`3#k@<>kTEBsu*igyX}P5RKeW&n$<f zll9j|aY_3oQZFe{csu3_>c%Dw;eL$WIi&D&Fr!cx<mLtt%{fk)Z(Mvv8eZb>Qd=C9 zL)sMNlme!F7N>01lL*;NXq;)HUHGVr@g(x1nXhC9qir$MB4*ltGKlVyl+Ypda_cG3 z5n!)#Ulru)j))r8pJU}<S|a&3H)4>l;oRIY9{W;ogRO1Pk|$brs@BcKPjA}XPBE<9 zlZDnrR4m|VkLcWMvG+Zy<95T61|<9`E$QBxZaNlGtuCHs7`|mypVL~mh=;wQJ&r7@ zCUTG3&{0hWiInR4I^)r{D$`#~fMMbdj(-IX|Do~7^v}j4)4y#z{^wQ8|8?&FClhp- z{)N2A$nkIO&`4tH;Q|F<LSFeqM?3eWZvCMu^T^=nwoGxJfWVOZ!{+DJU;CWj6Mesb zYIsRDacDo_)Kt*M98%(-Iub~P{X&Z}Kn9y=FiRN(8mwsa$PJ86#y||7@D+$Qb_*7M zl4FLX@a(){O%1oBaF=^l#L84Ip_q-V@odgI`LguC%cdh7S<MrZh2(siB~kH4+`M|5 z<ejGq<bC0>;hn;Dcj|TWoKUXIA+WGv;c{u6?~n}ups1Ol{>61-{tvgc%uN4uotT;b z7dVue@&C@D|9O|zfBo#AIFyZ!laqsyo&DeDP*#Tjk%q(gk3KDC#(#rDnVJ3%aOnR| zf0vp0UtlQ1zn3Ca^^gAPF~shF?2&b%HmrS_*}bl|*FyW&RqH|p;ZT-|9R_Q|vM?$5 ziF-L}D>6_>xdqU$VHk?mu8fu|)oUyGuh?#VWs(#-Pi0FYbwJ+^Guy(PEhB{f{*^Os zwqn1<8&y#y?nNrAzhJxd{TMDgY=d-00C6wf0I_^+xnG#t{RSHpgE{4r^MKziN|#eg zK8lAEV!}2zE(m7xiuLpTb$LBE+xW6*l|;_oAFi4MY`J7m+Y}gW=h~cp94XVXQPP@m zNvNb)@+hmB6qW1U-YJ`NaPLh2p#VZYrh*wygcxZ7>-qaI6N<_tX5T-YrW1P9-PS`; zPYN**Rmd;`dMEG55E4YWHx$}J*hO^N`;*6|Ck-RGJ>es9#!`6-yVX`x_ty%>4;9|{ zo`K~GiVj6F3z(~)4I)m+T@)^)FMHu}%`LmSq~msJwa4z_Mgk7~Pe#-oY-Tu-)Uq}C zF~}u>BsA0Gk<X1v`OC3}`o!<&4Rn{}aHd9SIHiH*YkaHe`9L)Jt?{{?GOkBr=g-3A z^D)ip1eY;glL|Hy12(hZ!B<$M3Qa`^F4m=;F|KE|UDLfados#y5K(45d-l~jJH%Au zjU?}Y+aq~l#SagC_}}?hL&LMqplhnimz(>i6Wc2M1HV!O<$;|H0W-;Xe?Bgjy;!HE zs=^v9{(yC?oNuooo3m|0urgQ(=g@WJ1kyU^Y#p29y~^Vaw_fZT-(T#7+KC$iK?Z^# z{PO|sckQ_8&OLC#`eKF4iYLmu5MQwzuB0!~pk@-NV`+H_^0YkypfZEBEp;4rQsGK{ zdDp+2NFQu0T(bpffG`gSolWnB9BJkwgtK-I0H_ruugckqLm_GQ?rnl(BMadvO1DB! z6c~xY2#j3u_V1(>R9i=PAyarWz7YElABJ_{*HhPD?rbkaBY0{$j<&nX7IFpSL$5!} z4K`*_bgAIS{_bku2Av(oo1@^WZmizf0@`=AAn@H8FCsg=X`wgZBK`}{dsRsdK5SA? z&mZwHE)V^OfeJ$qsEy>QifM8XkXB<~QHq2Zq;Q0%CeMzp`)fg-H?u$^H{dCmLlRRh zRdO(N3#5_)jFh<yxYryjUob3(-GEDIUX7UjV>+9QUZmHQZWnN4{V~+aQ%a0Au4dgL z0+_@2N(<l;r@Y5=EVZQ81AiUpfJOm;D4soc-KQ&Y1B_|q(RxVVX59&Le2lf5d&^ot z)S4Kk*;z|z9tr-S3MSTd5q?`SOF*T!kD-%LVv>>)5WthB($;E5P&+j=i4xNw{PMy- zk`|fwhb&H2G2}F%`U(Zy%X0Sj!U<jA9F8ea&!vHo`bVWE(?gSu6u*wQ#&6>f`%G|H z$<@flhfpVHG0H)mDnxVab%9$(-M9uPi!fh<zS#uBJKvO}LGdosnrjy6CtV7}5i+B8 z`dd)YM<n;qbtrM@?vHRu7`qVSw-4vJB`G^OK!m2xJT7g8=V;cC%-5dKw33uUrfNw^ z#HaGko7I`A$Y?7y5=r7~)<9EsEm6NV^p=-K!rKmx0DF=k@g|*0u22bKwwwPsO%E)c zC~l5)1}R_qTljFWpvzf2*0aqO`BGJ7?Owf2RE)}F(Qd9AzEf`%!c^oDC**h7BO5(l z@lw2hkqZJbzb+V<geu)0RM|s;HXZ~~Wz>AL<i1P^a5#inHXc(?J1hr$`!4yqaC7Rl zv}}(gBKFQ!2uATIv69r=tck?+%aS}dp(3u<%0Ji3D&X*Fb|W}FV(8ozjoksT#$XIK zHQgiUGN%il|M#giS2UELP#w}#X7&v-yarKp=R-0?Ao}ojI!(QZtBcj!#5qvvki|ZT zXbp60?epP2C~1-yUfSIGxe@?$+d=16|1v1bkw6#C7!LBMGs*z#(mm>Nyu!xB{}7*o zY@um095Bc;2X!4k8{_R`xf`7G^zs&00XDkRqYa8)cfg4U%vYiRQbN)3&){5@mdOw; z);9)V?8}t<!z4Wu{f38iQpV--PqA%Ywt}|hB2ze*x-B&ISnB*XN9abvf<@PiZmb0P z1$mwvZ~WF@3giqI3j)D!1rtTcMl^)HdSI4=eK|2+jvFobW-;HVZPTyp!Xdc1r0IJ8 z)x~mE`l7AiDM6kG-64c_lNTDtMj@UY*qOnB`3_z33b8Gr#qE6Y370s|YP%y|%YFn- zx_PyMM0PB8eMZu4noF|iYYrV3@UFPiS!bLB5;tkBp>6JV=u=MOaASv$WWG4BQ!T8A zv2LyI_aj+Z%S4YY<^A$5N|=KlzU4<1L5u8BqJsFec>?q!uTi|*qTfxsDTt1^5DHyb zCNgb^YaUt?6vT%m8JUIGDeX4yx~>uu;4W{1xV*!(_mcSYo3R1%!nn|O#qROR#qg)T zfYYva>SrTKk3G|a4wpp=GBWl1BBGnF(7Q-Y=@aJt?20`c^x6<;WYpGCHF799<Sdde zc=46IF|?jpv)GQzxz_Mw0x41FTnjm=`IO&1@j@-r*<}gBx+1LQ$7xAJz~SY7XSz<r z>>c(b-;3_DLQsGSeX&K<e13d|9pR|ut^o1B_r>XWW2@~B>C1x65-D~az+|gB%G#L3 z9g+$8F=&uG+OJLz9!6=Rw)S@PjZt4k;UgAt(A=M<mTw_h#>1MF*oNmjr9d^<;?<F! z+~HSjXi|fNO`5o7fA~gSQF>Ojo{#DA`D_1hr<CB$WO$j#6B0lEX7lY@q&k)4Y3iHc zd|a7L*6AQk^*QjGMI!iZ*!(a9VC=T5|Es~1<v$!e|9Jtz{NFD?{^yMOpErm6*SY`k ztjGM1A&uexRcDa-U#uJ$Svc4j|D9nkOMTpycpS0&k@`Y|C1g1rvt7>%+Z`@se<cfy zudZB)9X1?AWSZsUNZ-x6J<b-Rg;3zg*u-Sy;Xw3gvvWE#*05o5dytHlR37a24SHxi zne^lQ#^Uj0n^Z0onxAFy*nXqy{XH?eM~BUnabz!Ja74y!m(6Kvv(s-cMXkkIx`}a* z+wGQ}Tkq1ny64&Ear0~P^O}y<(D&2!Au^qhw>I=}@V?HEH>b6;Ywf*h`yDBj=hvwd znv9m=_xNj+YBq<jmOhbLOkwNi`zCcdv=cVlc3sZu;b<#xR48h3=0MWcQ<EJ&vo+|{ zfihnAkp3y=IbBa^w{zCK*`?<FWAp2NmfvnL;Y5ENnEm&9(Dl?&1h{&8Jv`duaefl< zZ!2XYtiu*gYm=HVlDX5y>$V5<+3k5#bY!kNh%cWt?T?7yzPNT&NoJ`T&+hEQ=KH<- z$3SSxur$#-bmyUg;P0_W5Z^_3{aCo0{_6Su*PHuKNdL&6J-J0tV;qJGaGodU^tF`3 z^Jfz)Ts)ti-|xDK*xI)SF6?1Vm_|lKl3Qn^2;sH4Zd_5w@59+=g4|m1cb>~zzh#$G z@ptduRhN%<$=u%`qTJADuA>!t#y_i7bt{#-eB_KKTsbW{2OT{;SMZne$k!rx_qDCI z*L_APy!Yk~XyH%9x3<-Kx5tmYcOMxH(o(hzJHo7dN4DNVAKf*Z9KCtNw!Q*<!I-@L z`o2c^ONHMl62|wN-)vLJToQIWTxqFsLgyBZ_Q@@akkKb^1jKw_^*MTWvLir}+eZ^j zA0uG+c(19GLQO)0aZVzPv92<+qtAJ}^b)2ldNiAyRj*+nC1II5T4dS`4Pb}ZJ!mJj z+Bz7ghk%C)C$)?39zN^6HH)XuO*i_za{PG}+B|t^-)R-U)W-)#7C|{Is|h8^Y}b?) z4n4i~gS2~%-@nu+{27K?ZBnN(jz3J_zM8kmWVyYqP#RWX3dqn!*fZML+F*g!9`0KS zIymuY{H!aWO*bZ&Fej#@Jt6P*z8-waN*C$kzSkn@!m%@pz8zgP6xNS7k8VW_Q`~I9 zMP7f@=Zrn-N3G>wFOTm6JEv!d<lnEq2(X&f%Rhc(py58nD*^{G{b-oyJ9-KARu^r% z>87ogFU(x;Wez5Hdt^pSPsLM?pCN_&eWEhZI63Gq9=B7<<g86zc^mLRaU&1zT<E!t zTuZvIoH!e;%&pS&|Gb|*4<y%YLUP!_a@{p0fS#tVc4ItMSlz_JYhMMUu>#%wPG|~7 zb0dQObUUO7RU=>z9n=Mx=7lr|9h@hAmTD3uPv7N!UOQ*8Ej@G}<GqR))O$S4&<)GR zMj;!18DOMJ)EVS6ivieDe&K>6gfh^@<dSxR#A2+Pj`(}I$2JdglOOqr;GF##NRN5q zo7WCwZc*^mJ36|un7Qv?APi<+Au!Uwp{H-l$}tu`T9n>f1SS)(&v)_(izK{)>7hv5 z1#hC(HN0=C2{kY;Y{B0XTzP&ZAh}qd##<7Ul59jLs(GEp4O??|dPQS!M>)lUm56z< zm=8R9f5VdLI}^O=4_QJ6ET4;|m5hV!tl%U`)0Jn;i?jFv^>1ZyYfc7`^ht^a@VB-B z2gHE-ivd_BU|5G>pW@K&1u$m3i3>ubi|qx_=NVlK0&#`F!ypQuvIjJi>H)!*mcb(l z=L&ToBaLTxuap2i26*fF0QvYS6%&%oW7C~bd0l#BbxO&Z$t$&ETI<;PUbuyB*36(q zQe>-@*HmSR(|n<oR!*c1*QBEz*p#6S)V!e`C<&$Y0<P=6#q$MOUkV<i;?6b9Js8Q0 z>XsS});JJoEk+!P2R$(A4(i05@RmO2>M+2V>GOBUMf<xNfny>576y-(rTu{CKt^=G zf3*>NWpI)R3yot1<qy0ji@%UOE4(PHd0&DUIjb#YMc_6>04el%Nv&53#cW7vpB3-B zFKDA<-~_&hRhN-t;~|M7q9{$gykb+*VYG{th?I%TsM<P)L<N;JlhulUfESQddbPD2 zNp+1adN~cmsg47lgK06mcV+v)fz`;(uoPANm}pX?5ls!r1obE?f>Y1~N@RR2{1D@? z$B-l!=tcYrQ#tVf!;<UZj0PO(f%_tb(qaUU5&g-z=R(TSr!NNuU48b9xj)7s!x|I@ z^KGYHaBYT6&<7LuiRzf-F<6+m1&)Zn<kME2+qFHc(=<_(I;>)c81x{(BLHo(y-%uf z#wbeh22Zhhq>9C;U_n8Na)i^Plfc3_DTvbSFk><|TY|1avp@~#zG=l4w8v0<yZT=$ z@cRZu+#v?#zc?fmVr@y;Qw*ZteFFu@7#^4b2#XIP$n-@WD&?g>#U=VwO-vwX4<Y#x zLWrsgyih#I(P?E@g2N2sQGq}z1s905>=`M5X3LF4!XY5Y$FYB~m2~YumqJsL7g+XD z2vrHuUiM{>4p~zQ#0^Ut`d3sc6tpq5u3%HfR>zsksYECn5rbej^IO;+hE?M+?R|3o zKut75?i*{XuoOhauDNhJ!?PE^4>5;4>ZU*pLJ<EgjlhtlSa+Ky*6AP-qDW5B1jFfU ztEof4jkQiriFyp{UQ+|FAM;cK#XBJQVbPe^x`y@l7_V`G%d7It*HO#z!Z*V3$^`lY z^GdqI$!Xa8!Y-lH+Wb8aAR)GD%W0&EM?uoO&J;x)<K5I^+P5LmZReKejDyx<u~{ma zyj5X5;IHd5W4%BaM83UchA^;K%UIt!Lj#=h*eC<Wb%#(ySvVt1yi%SyeXJM(pj;b! z#B=9SnOIK)X5R8($}{v_2v`y0h6A=}0Txx?35F5T?-V%xI_AGPFgF%3Da9Mk5}n1a z04(bPc>2sBNhDh-BqqsZcrN&aV_24{UZ(lyI)9pVl12u2hG(Y0W*_UrQaiz7O;z2z zB2>%df=ZxMjB-kk*qAfsoXS@6eAA(mW<DEu5#{3Y&y{=o#o?2`s>9QFi9~cDm4=br zVk2Nj{2c4$fmPxppjEb$b;g(FRR)h$S*EuYRYsR|NybO(LG&{hcAM<#3FCohH*1d@ zUILP5uPa#s(xK-m(e`+|8`}cu1zhtZBAc+8bpsjHSh6sDAyr;7Sr&CvHzhD@M!s2M z%L7U+FD}tz;WR+-Bt$lh1rsBT0tbePkhv5dRBJR93dmuYGH&(XU>3i3z8i!Y;wK-L zj&xFd+lc#e^ulEA8VDxAFx^@}NKIuSib#Ff_Iy<T=#G?TXzMa=C+vJ`+lupX;3SZM zza}ymhGmpO>!6oOp9>3pS|-r=HW!my(BM<uNHU78MX7<~Qn=^M!Mb+C2A25}rC`dV zUbaUD6;u+r_zcm2Ak{~}g`g!fw{ZM`<mXDEUTiYQ;x%9(q^XWh1lE`CexM$BK+5D0 z?I{Ro!bcke?v{t%q2A{fmCs5`u8Y!({_k?ja;x0x%xbrPfKRx!pKXF2vrvs)_END8 zqBFMOxeq?95mz=%rNef_z^_OdG6cG(TfX2lz|^l&=UsfiA}^`dn~5n4K3`GYEQr@t z#A2F3AknPv;pzoaXbJaAj>Yaihr-))XqtD<z3fy?Vaxzh8o_${C>iCW(~)*x_k%3N zDSbGW4~<>T!U5hm@LHcwMQXzk0-xQH81J||MFILPGID*ZBT8RbZCi_6ZxUF4@;Imu z;?SgZ8%D_YCL2<8QX+X%SZ~Y=r4*>`FD!W4%K4a=Sc)0z48p_tP_c*titN!CL6vbe zQ#oMEK#6-tW@&duxB!&`E|kA0)>;(Vl$*O~sE%p-D-;n;wkXmN9s4&+nZ180U>O2q z!6<*pRXiyEh<GxjS|DQM!zC637pO2wp`x2aDzY3$D#B*qzU@Z5QfY{)X?%AL&ODp} zMD`t15dbw*J5yaCM1P`Y<SNhzmQF^Q^x0#iMl4@zsYV^Wx_P|?-6t42BU*T6oUjNd zK`p)6oHghdU)K~X^IB<x4J^YU<g7K-*|=<xCD}yUIb+I}$(z~~vJ6FA!7$&3v{%=4 zO~_Hx)Ryifn&QMQRAOJPQa{vediUiJ=G9XOk?@kBbcO8WA_AMIfDolI<#VXPSI`Ty z?i#la^bJ#vDo#tHcYR%+HFG=YD0_EdJ_p(b9UP8JR}ICvPp)~<0F0!0SyQ-cg^EEE zF7zc678_iLKW~C1h7yOM;pa~PX3o?_yZ7^%yoP`Gg-s-_vl#|DSnaZ<n>QP{!Z9}0 zR|m@D-jm8sqt^LgVmZ{yUmv~nE;irpxInYO{=P5$ZT0mX9HsyIyuPIW5`{#SU~07{ z<EBZ|$>3`_0E-h<NlHQZKI>^G=qBDjn7J2ZQvh8?6-2{Wf!8?N$0q57_N&=GW!f>S zE7iRy%Uw~&Zy!zT0k<YY$V?lSe0CCsALUuu))w=e;`UMSi+0hJUlIefay=U;3lCj8 zdE*nYit@&BE<fJn!gq@1fsK^LLtU7ss0DIpQ`<r@@>lo56}WM3kRh<^+NgkVyeS^r zyV(G~vztXD)KYMrTgYd}U;rnu$0sBiupGSpQp4KJmG3HdL$~FHXmLB{<hFq)a)iAr zFJ^BiQ>)3Q0Zy^ZszPcJl5JN*G`4-0ep04wNzp%Y6?My7_LR24t5eg+%-pD%1}A&n zdg^nWue0USy63>|cF&GB%^DG7m$NFoW}k15^(rZVC9mggkRjw&6En81ZLld~??+?v z`~!WB+vF4bgM}~hnfukZ^w8OQ`PWYluhDT7^at}u(kT3tLdR&0zl$+NiIW$?6wlZ* z=WVFnqb&0e$yS72BxWv{AgWKr8G2h4iML#jqf-+U&RRnNB!|4W4&Y|I4R(z^Iz#)& z9_QLLE1rF(z<6vaSqLc|X}-Jd)w`odM&H1OsUAx0<Iv`L;w>vZG=zVp5#xE^WOP!( zjDuo(us(jDU#B6!$Wy&x7Zpk+OrTYK*4v-OMkw-P!aLU{sH9SVs%Ne6XRWNv8AMAL z_gJ7~tEoXCTi%jQR6Uu$@g~Q^0i6<HvwE*l!M<mEYT*oRCSWeM_zCsdtZ=A2N3m}` z#RcwoO7mFnp0bjlbl17rYL1A<$28=;_KRGU?C4js$N@AYYx2W`pbgyQE2Wh`q$}4Z zT@`wAZeVIz5!|X>CbeI$N|&nItGfD~{hA8OF0g^!E;~Axv(<Y2Qu8zO4sd~b3uosb zz9Bq5>odSL5t8I{<Czy#k5}}%u#R1z7c$p{i(CAkM&qsHIEaV3`%9thZV|dWQ)+u0 zWX%#!aHaG<Oe5Vn8dU>y0cMbZ+cmUzD#mTw@K@odYKQYtAARcx&~CQ~;3LVHoZMSE zRubt=UMT%+FD92s?wyYNr;9&ondddgjcb|f63qGW4iHw8O8ZiQ!ikI02f9hYC93Y> zPvMrFB&e*gwX@Bige!qDhzhwxz;beRgrNx&Ah|^yGr}y1ke^#zDPoz~_)d-sASvTP zfJj32z0F5)f*XOcj9goZ-s@*QPR;TWfKw|)DA4^6?f%6=#>!+GrE-J~W-yrETXLwE z(r)u2a5eC$45Bm&z1^8`UE`E>Q91_8j;Z?YGIMd0PW{@wcEZIMaG@J=S^*KTf#Or* zVV%1BOaR=x1ZUf{lKn51@xE>>{scUp{&m|(sDspipKIAe2ZI#7yP^0hc;qe72g}{N zxvRj_j&d43E)QDSR`wKjx^*a^Dfgax9F<FTZVmNI34;zBn!v9M4RWKq^t2|U8Q&p3 zxIct?Vy*l<^}JRWjnyX<5&^(ZVTH1u2m9i@7a`-dfdGe}p_!Il;Up$&T2wHh6JjYs zq~ec;a5xr_^~TQ308yvR+S6uF8RI-J#^hx9VyCp+(sNq<mq+W_sJtjG;)KBlyN6Yo zj`b@X<{MfFEVj5%8LzOem;fPYnNlbmyr>aJWg`q;!C(H8HOUtsJBZ(m&p@>M5jD1Z zb@8t281$0X6pv|1K*D9ZmfR}E5{zpqFj0~&W`G<h19W#N?oXShz)&p$9Z%=|*UEnf z1KdMQG8iK;&%N_x&vij^14pZ?@Yi1~pnF&Ue#S$yU!O|#^?j2Fx?PNbNu6eo(WPk6 zlU?neKhz3idv;!*ZxKm$jIx=ISNqF`h-muP_I-F1CKd0rOjl2&?3p{*@nuwabj#vn zXjboxoED@)(to?QW>#*!h_T5Pi~uQDdRdh`6&!W9x2hN4rbY&E1q6!D`O97mi#}bh z4f~fHu>O8;uw8<t)&bCPQz-(KwKtoIQEA{P_fEN)D*!GHTErphbb0q{!(aYrI41B< zE2#)UYTnyI8~Q3mn+LG;4L4J%k@q|osi8p!DT+--fKDojuhV*pWwNB9xu0`n)GujV z($*?$Gdo$$KoiVlxElidbZy{0*kp=2-7r@6J=p8Tsbl!TywLOm;J;46x@$eU<@d`< z;g<v7w&*xau1@n?{edhCC#xy95RcenZJO7Mj{&(!DE4PHHeV4M2iKguQLcXiqV4j* zOKDNDqmqPII7~k23mon^4mOVg;j0Zx_xI$&*G(0TE)QoN`Ix0WPH8Tfh35#i{bE?_ z@O`)nEH~QUX{&T_S{i8Mwlv$)vwwAn{$h}#mZ2z6Eg=GpoFFj^hw#{yZ7`CMnMbNT z7*;^tiVzx+$p{>o${2w1C<Wke+bY`QShCASV!~T+pzZH2<4r2*9)NLfk+v*Zq7g{7 zT`UJ$`s0jcs|fsRBt;PT@?A>({iCyr50iPRwFrBNUlawnAdwEtrl~A+{2E!cuDh8a z9TLHYrb<Nw9ktsD(Mk%p%i2NvTwJpcx_P)<A9-lIg-R2*dEYXiL_JB{y42AlJss5P zV}LWgD4;DN4gvoOdHqK=X|Pe;cv^IoCljR$#)zAD6<{`s7l;`JlZRJ7+QcVz+ZLMd zeB`>!b_Kb{5P^745C8QB6BKFZr<?>-8mVtDc}Syw4A-CBSW>9d1%v{%z8J^~vur@M zv->+oT4FR*lR>r1r7e`5r!M(<<+$#+zs~5%XOUsb;E%Ql=66GB4;0^qHJ_R0<Ezl? z_J%oQ+5U2FT2p$wukWG!@7wY9tKUuS%g4j_^++V$54j&g0%BljS|UCFj(aKn*Yoo= z^3PF?@B8lNF5lPwYAg>RzVG)cKR;8Z-`hvM&)cZq)2*N1*HG%m-Q;EMuJ6z5=4`Cr z??Y-Uzt286t!dE5?rzV|fKr2A;%HEMx{WjXA)_XJ(mCeimJAw<EPNDXZs+dlik){) zQaa{?D0xAoZ@01Vsr_f^C7ULH(sl=m>5TL>-fNDTx7;Q&4Ku%4!}wBdVp}L@s0qH% zTZYs6e$!hbZS{#7S{O8c?=+pB(l2BXP2J;e%IX=~Dzislseoc#dxs@NJ>g+LI2uqM z?E*U?YD6ahBF4dZ*7G1~35Q?Qlk>!2Gta#(tuJ0QxnV8`n+xV%8*049SsSb2UL%DF zQHLV4P`uhoQie!k8E3uq&N|Wo*1_=(qY*4$5^gcsBQ7quSfn)pM1njgecvy6r<5bf zX#8HczTzn#iNq<<1uyK9g(cmiU*5T`X^}V#(wG#rs04~dW~(%LsEJ;O4GmpM<T1IA z3$}Xh`HT%A_tW0X9YR~3jjA^j+D-^wH2Pu5Ua^nWV~Mp+R3_WE=igfkWp@2*+jfVH z#c=DE8gHW&zXuPkLn-$ie4V<8dUc(3c$i4kRH|=n9jD9;q64rs;D#q1lE~TA@dqcT z2myHbzj?xnTw0Aq!|DkSPa`NLY$6@Uu97Povg3N4wCZyfW2|`|S`jmfDTPic#NptM zH1{GgWO%rvz>^8sw#dKSbf1|fK`_=$d6BZMw}7kYNj_|&(SNTG#4ujg7-re%Gw4#( z?K;Tn5IYk-^R&5sf>n&>M_BaFkLYF;Y~tl-;k{M#PSMGtOz5$y$$k3>)%EQ?_|kLk z3fQ<}lDoDXDLlC0@b$LXapj45xs>t~ctP_8UWTI5?5E<4XE6*C>+;t*F^Qe9sA5-T zOJC47obD#t2K2$zBEj~4Hc+^F&^LYSRWYb>hy@v4NpLPPf^auN^X?8)zq&YBFom@Q zs#^T*@W8-pqfqexrFgs=4%&J?p}vG}zrovqZ(k76IJBy(NnzBTKLxCD-vXjj_XB5# z23u!yf~Wl4GUg5y9rl^Fnw_RUDd7j29Aptgbbp#}Y<6qr)QV1*xn<Va$%$~vJG<#L z*iD2;D}L9x`N8>5yXWH`_{gt1aXFZ6%c$rjyDaurI%2;`t#Sm?2-(Z~(ig41y4glU zDBAkk1w;4<iXeEI^zp||?>+$u;bR~vp9Gpw%Oay=Evp_z1DjPix~<&)a-=qW0kLzA z`nRNBbqIXQjwm~Hlj3XXe7;bitDov5*MBt(ERHa~-myH7BdXQ&-Yu>6Ievhnf07S{ zdjx8%RU)?39Z-UpodlW1m9hr{rru&wi6XuJUiFEsg*Rf;N!ts}z^Yj)ETS%-s9#Dt z9SSC+j31`e6l^EZLgJxiGsux|4RC=9Qs3u1=$$g|PWncV-?#Oc_|~niSTCBcH}l?# zJa!bV2T#t6b_>1_m^Z);HiE)tkqmeHc84#71Uk{|IJ9B|>g}#{A?`od)Fx8E31<fO z=OpsS*lc@0G+;2#PU>wC`z5(T7JjRnQV%jkl=>K5l4~=o*j=-ycdvAK%D<mHsRj$v z3G4nGD9_mCOCaRZ#miu~K8JUHxJLn*lf$8ROlCs2yJ7BoWGV!9aIzZfw>?L(!X&Xj z*9GUd`$u|q`ENGdI~94)&#|Ms=KC7basRA{APGRTU0rL|IZ3TJ=^31K7udbe#CrJ9 z$}QL24(F5WJAb_#W?;%WmXI&Pb}`+Q$%v9~9y&1H58AtT4T6p}a=k4>SUi%13D-J- z(|KzhG$kC4H(P&~q#mN(%~PP-M9rUy8M0$;i&gFJIcJ_f4pj)74F{mrPr$g2Hek=+ z*g5@Q)ZJ6hFaWe2=-0Mw+qP}nwr$(CZQHhO>w9fX+R5BZPm|Nr%q0B<`*y91{j5C^ z_rGfD*3#eAyn)?igc{={gTRQ%+vP~xT_&b`y+=<BLhG1%3RRpq5Ae2*`cDM#zRf|i z(Me0?O6i~9q{aLgQmMh3&7tPRlIZW#gQ|M^871K?hwzCFT$AG^e#hS5X7c95nJH!R z?9D!%5=1yRUhczD!xX%kd<m$B=4Vf7sC#keXv<AF)5C`fH&6s-ljJo;Zmq9{==o|W znDp{yc}M1e4~LO>dD*4q>vrTt41I#9*!Eyde=<F0ymq!c`x*z=qOHjz%*QvQjHdSi ziL0M{Stw_I7BNO6zkNjRU?hOW-*cCc=whLpJ}Aa!!wjd)7vuVLC~S|km@rpU;~tLd znL!Kgv7J4nC%YDRaJyN%7RU4%kKK}LOoV8|mntS%s9PfnTjQH5>e<1>UA8`Qe}%JJ zY+5qHm)?GD`S9W3E>ioBj_c3j_A_tPRGywSiMkV<#uKeEK6>@xkA=rML)jcKp(~>o z-W=R(eUIy~dJ81+<xMNLXsrgYs3LoPoVGrHVwcNL>|q{6sO&`PkhVNWk*Py&<ns%{ z!_ok)!hFi!Fuv>fCHfQZLcv_p@KSg-rf{H#^<YD|D|_4oya=0D!E=mdnEJybdcHQZ zLltSZi>scDJZ}4Wh;I`9eR6gu%E^t3%4_6xWd}A7C*&==*q)w_%THv7OQ)7PAx3?l zC^T%HpCL~fplNp{Ugk8nQ!r&7C!N>i)o!o}DaU$H=#<y>CDVg;sAJuIJon<{o<z!V zbFD(N3+dVd|H*bO%zMgDEo#NR_<x{s3-XqF={BrqX~tEvm>cn@ZL<4*u$zWo1N1!T zue&-IZnJ!bJ3ClA!AFobnDGVeBP%>KpRoC6(3+DCPC9C1^zSnc*0fVYkmDi2^Ktmy zn_I83S-Ur`J!i9L1DIn22k$>2)yVYSo%>i}j4we0<t!}y)w@!M8_{*f#CYw6AUW-Y z9C`!7>*@n_-Tl{Xg=<DG9JW-4Op#x-#&DJBUt{_AgS+SB0I3d|BfE7v$atSV!s_1e zVOuX9?fT6Q-!s=FkWY@lEgml3Y8BxHbJv!A%DwvY%an^m$SgxqOzN(kGcmMoVsJV4 z2*Z2U2Z95xKYS2bj|T{BhaNab!!HcV8!YRlP{jlIpIDsJI&t%|T<ZU>*fDf(toIIJ zat@LA&8E5%WBi0WS0Vl(Z`p}h@5#XD9JJN0$pcCth-)~E+&2UXE6h4f-=tYhd`&on z8wlyz#cFKbeb=mbtRdYoeT^#xKhi{ul@w@H+EH@AnKe}8m0rDmNsIaa%8T{?RrP<L z`~Q8vA(W5veFMJ!lk-9ZOVOQ=%9(ZV?>{1qV1bJ5xxJ4SgGP51g(-eoa21b+bw=Vm zcVosON`&tUCO1BeGnVn|8pDn!)#5=^?+!;>9P+hM<C>K->;EbtkeZR=3pgSf?jOUs z5w;%|s8X~B1wTKYchP{vJT|ma4mJKe)b98btj-B5z4(ks>DJ%RKK1sv+dD)#Ka71_ zK5DDTEjEAf#@~N3)8qE`a{QM{Ya0V^<tQZWY={BhzM7q_o#CdtTni`a8)<H)&3Bzw zkqVwa7RVjLOoUk@v(M%@YG?x7d9nc?sM1V3Iz8gj*^GF7ExQZj&d$oolcQKvN}18& zbh>sK7{lAkj!nT<3d`ncqlx`_qq4Q$b6k7n<3RM<bbHkEYOizVXr*#$Y5&^K+&Cy! z6xCjnT5$rljl9YhXGK7j2M8|1n?88_WZUq)lS4F+T!}y%4WuMk-1RJ{l&`0GwUQ>$ zyTuf#tu1wHJ!}dKp_a<Zin29TOF;St|Gr3x(n8%mN^?_F$*^!c(J0TpBlq#9f13U` zK{Z~k9B1(F(j`O$cSr9Bncu4c-^73A(q|A(|0_WH?Uk=Pb-ABWpX>W)RXa8R15&%9 z$w$z(9DlW<X3t*b6l55`Dr;a+cos8EK?Uc#6>NEJ=y8X)%4<Xj2qo7!xbxyTY`VOS z|4@`<7UqzHtj3}0<=Q2|*5pMcDbq3DW*_LNn10MPI??qwJ!bb{1{+n8v`4smP#Hg# zx$jQBc`>4853R-mO1y4nMk{y#TUZPGD-W-ycFOva#ZFkzXC5rK3&mG!Gb4FtP(!zJ zBEN33Zmb$|+xrpJ?^TY+zhQy}WJ=+hQesQ8c(;xbQQa`Dni%`#ji<oR<f7RDdyW)p z@f=(XbUGJaStj$dfp<41)b;WSI`&zNsp&{ix!=QZ7P|gII-9cbtqc7w4A;>(=kn4U z`kv~x1@uM&C&2g);^7+*hYH(qFF8!r==0d^>ykBRZhF{l(#9fpgVgx}8!MCQH=Acs zhb3!`!F}9j8ThTbU2gp6>Q)h2M-=+04~lO7CG_-UPiDL*(U!++47T)N${$|q>lIX$ zY7Iw-%s!1{sz29&LJZGENbXEKh7~UT2jn*N&7PWvP;o34lkKrv5=p`3<9qr|m1W~i zN8#5mYV!@8i!$lzIa6HoLzg>Qv;hMKj~qeZ_m2dZQmS2c-~-P7+tq5S3m*t$Hv4qa zdTt~1^Cx4zLr9;xNIo8vto(*-;v0H~tof*x*ZoNOq!mdA7@3z5v>3C@%>mwgDoj>0 zkh{pY7-smTui?J?Ag-|M#wFzXBy=g4f>~+nh|9{hD&XOL1vt!oR5XX9{8ll8wc_*& zVcRb*?lIs}_*^68(c)-`pmIraadnvb5EtF`6~iP$9rbcZ?DGVdVL8ky`8EeVRRelE z#L$@=jtKLq9GtL_wCj7c?0%4Fmc$!tJ;;M03ro-Z{S-zed5tpTGNan;P;wnDb=`HB z+YoD0izrw|-_VDE2s_~j*x|?F&?3$wEHT!REDujL#j7ncJLQ2t3GOKB%qFez4f+!q zg)W|<vUd$CHLGPafq8l$ejS$0*ft$`QSTiH};gU-C&PaT}FL`a!i3bnV=Eh`5g* zsV_(La#u7;q0~3%*fCoiR&Mv*yQ>OSiH!A@w%z78hB$g_U}&8UmEEmX)sd{aGxFI6 z`wJ7{W)wFmO|yE^5H;R0S3n#SDKKX-od2W)hvT~>H6A8=wM|B56H9jfk&WM!m7G~+ z%^MB}9zv%8N)eeg8I93+m#V#1_gY<tdB?#`9*9bxl@uJ6dvUHo;Z=rm-Vjacg|G<< z>Xsnoa0G&L91oKZixSC|M=ONP)_zL)!d*z?Sl%}&=&|du=7w}hdqX~ixBk#Uy*|V% z@9}470LnAlFB|{j<(`nb4y+bMPBmzE*`+xrG)!m>&W>;c*4p9^0?i{+cLD1*T>XJA z3~$Oy+BkB1K{T6cOoDI}D-{Hs+r<NqZkf+_>Dx8NDASEikYh!np7!BgdLX#tMzw&S zfd<AnPuHkqSH>ogsf@b8ZBtpUNj}$T%8hFKszI<$>X5*0PACYsXZwIxPYzSqo3wyS zlfd(d0t=WTP|O#v6IiH>2Ml72x~Nnq0%6#YKJT%DGvF%#Nyljbi6SOH-BT}2kpkZx zy7A6mh_LeUQ(&%akfXObHYGVdCg_pw;3{<VaAu@j9;^=dTy=+>LbMDhE}{GlA#-_B zoe;WkiOQB3662-vPY`8v9@tMtl$|Y}BqMxC!IB%g`(SEfm1I2V5smsk=7PFArU7Cw z9rGKbj$z#QVDSa<T@i?+o-=}Sqxb~S<0D6=jL#f~w-GX5W;n<m4>I&LO1(mEx0hhu zfvJc00C>-u!v{P_B(e#$A0Yg|U>;x(Ji~cxJavwyrNQmO(p<1x`FqUND`4ME6^1&Z zZ{+Sp%>7Q8L%7wnGZb9)m}RD@Jx8^i!x0y-ME5~U!RJ|pM1-K*c1O&^qZ@}*#U1f6 zSfaD45m03Gs?pIPn+Tlin1xk=(W+PU=0s+a<m$$I394zO#kd2#mit3nDnzGQ6~;im z-5}<HG4!o@DtMRLAV^&oVnz?!Fv;-mj)hR}Jh>RYwdLqpV9l!0^<@;L=?yk0_krl| z^v0?Xf2zAleNAciTlK>ZyIO^9WV<<~?jQ|?F<|bFM8QNgb|ldu(m1PIFr?9+vsCD7 zj{!)D_!pwXs|Hdj(;EfT`HzYO2gf-1^=Y%8%U-y3WE|Svnlbr8h&pB{Yi_2J7aJE< zsxHK$vfAAXp0l?jq~rwzbss8nkT(NqSGr2`IJ%aK6CfOA4})fsGpAW10#?iJLvT*K zwE~kYc&AM;#~QK5-O~fRHnh1C88&J6bEPtOuCXz!uPs->)!5ZKX{x+QQC0Jdy6Gx7 zQ{_F0*zuP3rB|=dGX=qlBeRNw!BNrXF0;8r6b%yBQ=dX89y=_=Ks?$|RMdO%4$rV$ z{rus-ANk?G>uLCW`nGPg597arJzIZN|DW&QN4hz!4*#$3(^8+W@BQiddj6mHSGph1 zpTk?-_t($%c6Z19*U#Hq{Cxi29%=Jv9HPHdBK7xgL~<1F!}In2tMsw!{{21d-_M_R z{ojvQx>UcPf7vpB*Y=P6{IA#jAoth!ZfE=a`d92fPx<=49)_mFpJUA*(3E6@%Fqwp zhlLs%M+zJx(GA><4dv8!6bRJbAYkSpG|Kq)EYYUl<LrB=;f<yqd$7@%%~1f-f0dzV z6RWRIA0Ys3N<wF}aV<iURiJGO+hOtW{ZyN|*&SH#)HI3gsgGRyvx!=@ep;<jEmzR= z)BI6KXY+$WYG2|R<j_!#6gCU$GHKk=<!x8li)r3UHmXbupTa7>xT%3@&Xj2_rf#(x zN3%%}=pz+~ve}HIz`#7uD`I*|xEGcTvCV>CEhg?*myIA{&%1p~gS+o;{vGM#tt1t1 ziFUhKa&hTF5c}zCgA$;I%iYTKuzO*|0ao{A$~H>39km3;PnRk6Zso~YHP^Szc5zQ} zfndjC?lL@3`HW4Z?6R3*+Fw2Lh2T@nr6rYCJCtQchNm!`k)IEz0F#_WS>c4LD++$U z3>8zIv2=r1Y_$9!Dm6GxepEH-y{_>icV8I^_eayl#gmTj8TcRV;!n+vt%4Vs`#vep zYQ9|#pW1JComiraruL;pFHzARik-F~Nc3FomtPU5sCJ1yi_CU7yvu1#VC9ZjbxSPE zJQXaf%(PV^y}6o7lvVBvDv|fPFh!wh+~p8x=25B{4)ijeWRNvv27yqi%>x=nlZLuT zl@5lAK$9rNGP?MmGuWJortr?FPDX7;P{i4nj3$RZ*j0{kY_gsGP@|pgOoCnMVS2mi zTTgwB(7TloE(}+oi7`f9L3vu;Lt@lA0rJHK^NXVD|CUYE-<W~xe$7P;;LL+|xQzyO zwC27;Uq*bom`C5k96wyTt4D9bFJqAgcX$>pk>f5)poCqgLU+N4<8ir-^WA7YkLl@0 zi^M!U{k1xW4)3lOjMInK2v8q1ILRU*q*0B<)Mg2gh_`=KLahvP=`l+JwkA&>UW8nf z+DQYc`)C|6UXQf>PJGvj44GTyYyM>cc;>J8GaNM}s93id*J<3!f^ukWJ}>j?jb;=H zVM34NV5;M^89_VqETff;k4hD?(US~hCwPm$EZAcUA<Lye(Conc+rYp{if<r;S)6iJ z`eP`61TD=fk8=A|Q%GsJvY}lI2n-lT@i4Uk)b(KsZb7CQDa3TF7&bxdqvA>T^{SFh z)?zwqyK2y_a1Zf6mW@uWUqz%2NmYN)`hAI=f7_6FzH-95h=wISjB^;v`>~ogxPZQ1 z1qao`l!pajZ6jsUUzQSBsu;R2wkcxqEnz}_%<fTwx3SI8VrX&HUKguL1pP4TLP#~0 z%|~>)bp#zm)lQb?sTWJb1v)(L4uZD1YBF~ib)&~MFW(!aO{rlq1_n>J`PM%9vWq-8 z0(`xPeFxp49y|rStE2a*TM%;S?Y=-M$^Hp>Z?j&C>Q#U6GUC-WiFj&CYD{unE%%}d zJ5voI*S9gmql%;$8|{NuwY5}I87CamKl|>+)FaKdo(Xf=&6C%6ggX9seoTqF==uhg zVg%r&z=$1aNq3}igPMP|ti_nU53v=dohY6TMYSIL1kfQq0Crbq%k&kYQT<G7OR};C z3!Fn^w^0``iYPrfIOB#v%J@fN9@@C67z4pZ1I7O^wIMY3^J}17<@`NB=jhj~{iq(Z zuto@f{)j7uUcWZUmilxSq&}@Ns#_@DXKUpMwH^ZyMeEtB^OW{UsHiA<*-~9du{bNH zfi(ZyLO9;YFMEB430s=W%gV|6KCn$fmw)Ge*db#Z*2vTvr_WE%S^SlY^9Dn^L8(W6 zRzxiEr8HzNz9nwg!2*)MM{&P0cA*tj<*I#x;%rlk+acbKY}BI}j8_)xUc;j^yRQ;v zZ+>AKA3q<)${v?IY3JfE8xlgHD{ImCSZ%R@cPSgHnn@1jtotkP*?KePinGYuA2eME z2=&vqJFPKAqz4J%E`|mrJH{l!l<+9<%jbHvsOx?fmov~X%k0|S)!lWqLP<4rcPv4Z zy+f@K`gW&hsp1FfJ)&sZ967n|<=i0Y#tC?ZnWVT`QRyN_X~`p^E8LKvm>RcR-ZV~( zkSLiCDXS*mWB)#HPWdI2F&fW^Pgbjk##}bD>%&BT4=2`>{Xk<tj|Z+<`w6@;+#<<Z zsUsPQ>05<;kjFDO(^C}+p!qG66S7(iTTruy3r7%M*-DnC>E2^4?Q4)mEA2xv(b6;` z9wi5WgmBB?Xm-T}n0Wy}1EFf*MKd?VO)jr|QG_nq3siJRw!<+}=Bj*9j!FoFkS@Vi zfyD)isV8epE=5Z}sXRd@)Fre=p~h;Fh3B+U{_U<&gusD*_6`u!xI7jOVkw$saIp=R z=I@N<m~lxCSC+rSnoPWFRkLX}SY{C`8uQA~O$fzN#%eMec<2&^DiDDhk?p*L+TJvR z$bdI8k}@ppKAf^T8LdZ6YshBLIkS0?XsaR9nO9ch+>z~@LJE!eq?Kkfg3YN4IU$@{ zrO?ArXGFDXXn84-(V}uEQxI8Qv12!GTTw=tmDoKPX?1WY(mt#kH%-DR$^~UA136#8 zNs%=N;!l*e7{wc`H6W8yJ%GJlQ2o|d91Kg+ci_;1NETi~fE*vk66qyCZG8kt2+K|v zxSxbwKM-D6^8n4^#St@8N>9rZ6T|yKo~5XB4bb{E2XuD6+wznXnSS0p<Z&oNro0#C zVj9jq?Xq^N`fh5pdW&p6`vQ9FY=ZsrtCI7@7UFQjQ5(I}$VEn(SaZQVY-45=q88$U zdsDZtWkPROjHW_GshN0|8Ct@@RYyF!g3G#Q<w-kp$r#ZJ#jUxyQqwhic;}IIqNPit zSBzSU;0H@2Sju~{6sy+h4S-%vD1y4wIBS+Hy_^@R7cyVH3Oe6fda+oNdYV*Q(Xna> zbR7lyyh;*CYOy2C_#GK=0+%fbJS|xIWyDll-D$j#dPXw4YgmVSU@$$%>e;-d)lomB zb5~mA`K7r4&4_(a5ly|ro1y6>xi+7vhnO;J#6cplHs`ohbWAxz2)PD6_@y|Kiqd%y zz;69VVCqFEpX4zx>u7~(mbc*qZdh=0aqf|BEv6`S$=Zh<_h8KgN{Ac8#I7+ek+U(` ziVg$k8{cfN&hpXP(uD~Yd1jU1(2gY9q$o>v3@s96)s|~~jNefn1s_KIB#icJ@qILc z{{q7vO3S!wk#9fIPb+PRVRNR9hP?jL_R5ra?~_(fUuGI8N*TR2t2v5FeVAi=lF>k? zncECYKva!O7gT)KW$~Fa%*|c`B&D55$fn#K;au_3ATW7i;#<f9wkalaFTB+PLph&7 zZ<$<6r9z32u6PPXSYdFD%usl;(n6L%6jaJZDXLIA$yDi-6PRhwr~|Zhu+Y>|{fLD@ z-)t0yZGod;N3wi2q@Ccb#%@=)ioup^FBN$6R%XcDRSd|*a_{hjm4ct$ZJLggsaP<` zJcl5-S%x}ISF{SWtGS3pq{#bC{SY!Gy^VLZMAxmxepd$#=soe{0b0(y4(!ZM#EJkC z6;|>^K3KF(sgpw>iVU`B6Y~|*YLM8VeGq|a%I{qjS&BY4e|Z}19zNsHt!kFxnL!29 z+`urw!;@jH8=JIZ4oZ4YcNrlp?i4Rwn&6{TsX`^JXnfHzdQ64BuI{){#o%;%AzCTX zijcg<622LQ<|}8_Mf-48u)w1j5TaN@h#@SdkQirx!pTi7dq1y$5*19N?A*q9ScA%+ ze@dLVpTNdMX?j7ubt!(XR}YfPI79bKbn%<EXRVUHc(+tEgwydSf98@A$*Rm;m+Tst zQ37km)34|fC!|Ei$@CnPjKJAcmIXyNPPior3U_?sa8$<aDk6tOx-6Zk1=fB?B7evD zFFj;cCWbI|D#<FqGn_NEtYvvUV+wvzUJjFsX1x$2oG-NWY-%MJ;-gK4QaJokZpdrK zTXAF=Wk7(K);DIR%6HPTXJD;-%Pb=eBYaGlEm1>0%uzAEb5Z=6brcWEIP-bjTa29B zVBf@Z<FLT8@LIO5;v|O(e4N&|k|11pefyQP2!OK=`thb93cAq<uslkJc^4!*xVOU` z(ya}$yU$YJXi?A?yizzd3uJxYGU7~CHR=RPu9fH`2)P%}nyOl4?Q~Ph7-KJMJhD5C zJ~ydMK-{#H<&+!B`34F#Jg+z)*r;}hO-et6cj7x^%+(+!kqp%g>Aa9;4+M9$$pdxc ziRNPZi6Mi|JCBU$CJ()uMVi!CAe;#vs#*9Z`}axHsNccpxQOk^D+i@GyhT<8gkeYm z$O|pZunoFVP{2McG3(+$mvJMNt7qkKXz`|~p;|bN;dzB%AG*d12jgeqgo|Or9-3%5 z;8^JmPK_HHX(0^Qpr?5jE@l}|_-v!*uyJ%MdF*L69-bYiPT=nz9|54n6cQ&cJRSQH z!KlyIqo;E`KlJzeZFau=E&uNBa;bb=KmR0tyZwB-yPxOVMVMkt$^PGERiNF^eW33G z=nVKN(bv1jx}3ee{+)z;UY?)lpO}Bi^7ZxdG5>q{ynX%i;O(~lWq<!-{QkxdKK_I* zG5T-+KAwK%;PPx+l<_j|zsvo4d7h(*`R8{P2b48$Gl@n-#CzvSs&7Af{7a=wKMDWI zt0nj9)tWh5*TvXl+TX-vQ$Mk!%@x4!Lm=?qo9tSgTo$Lj$nfc4BJRPTrq}Nr&2_ue z#|-r#NJ5b}KKQa<AB-71TCMQGl}qyYV}mNqTz~QmRS^Q+S1*Qj_VB?SHrRDT21`fQ zrGB1rjn$_=v>BW+MYFAW@xhhLYb~>&#s1_>v)|pBnZj>7vo8C%ph?+(R%S*IFEc9F zf2o;?T>?QMWvHzCd&<~}(wF}_9A?kMQCO|6J<4~^D31?TVz<qv-_BLKJKImwA7XMh znMK#Ux}RzTy5ifMJT#s$o*W(5;!a|Dw~m^Nn>Ky&^PiLMn5kPh*jzwLzf=TQXI4;U zd_OOT<Nw+7`}};@m)E<)_Xh@*hFG0gDz+8s<ghe8z)~Z^>jsihTg9b<#K;s_rF;QC zNz&akWn`_uKP!u4kIJu1ZQ|F3kQNC*n0F||CQv*?RvMrWHnpAP<#SmFnEu;&3WRm* zm{!1Q>N$KOOFkXD#n{t&+?a8p>d)|=d8Q34&TgpjKfA8)?&*LxQaty1*+CuNRsH&< zn)mjn2mf{3#w~@Y<OP9`D$tCQV258C@0U3L-8Q$|j?eFlK!6|uY@-Cc@U%p<3}?4| zR7qYrx%9t%?$RczIy^^i^;2ru`L2DVb`S4Bs!x9!DV9|~DrFS8l`-BS-7EFoCdG?L z@ym)74~-yoJjJ~}Y<q+|+fqL=7<Y3ET2w!y={`Bt+Ruc9Fq@V}07tdH^a|X)>(air zykb+gIh$@4f7P9q+HP$h^W~n_h8&G<o^M$hsBO93Z~SNf+4J`1bYS1UtBT3&Q0hcz z{Cqw<N8P)urdtt=xFNI1ox*6PcD|p;*gL8H`fnoRW!CWg^v)8G4o)h1Qp%Axh0#cL z{(QXWBw#KG>d4$tAco?6dEftMzI|Tjc?FBkI<Nmjf(aig|2ofw*Z=E2*rySa8V9vI zqV|A`(4+y~XhdrJCTTATtaqW2P=^sA5eJ*%qYh(<$w2C*ZEXNlyjrWntnxIg^tn1M zWQwavfK{h4#5zqS%@qBb)Vcyoa-NVHsd|}y*^ZWb)z2~}PR+D_VwC1Cs%D}mr@;d~ zB?INsr1xt!i3t@FKH;wENh9o(k+RH*T#%MWd~rT>o~lLSPRq!BSeSYFuJ_{<GS}Rb z+<isf5#5xitEYQ5`j2S)<5~*<B3ym;Ynvzk!@E<%p>0=?b)3Mr1Z;m1eCi(0zm3or z_r*(`(?v*f$vB5^Ke0Dw;jVr8TKwa08@<i<on+sqt61>$`Mll#ajM>31iXB_e4F3r zd%3SlbstyFm6Yx(EfnRih28A=i+XIJ_aW<{-*sIOZioN@bm95{Zki)SJHrEr{jQ7g z;diba_P1~@=@%|EOnd-tR*|Aj|Ab@aJzLP?D=f_Lw!EBzhT|#D!L@KLqsYPyMO3|9 z*5(ZpW!^B4;s{b%1XNKZnZn3KM)CQKLTL}3ek!ua!Wo58tt{dWi+xqG<WcTn{j2Yh z5ncWvV|L6wp;ggAA;y?Ldwpf!jVgohE#Bz%jovbpf{y7<ze}1$XC7Q`O8T>>a55p) zrGKNVqYUsG8m`#4=|6hq{V$S4EDZm{D=!P<|B4~=f0IV6%$)ykONRY_<Ik7le`?9F zaI*bpEg81|M#wM|Ffnrew_T3^3?;+)KRwIJ$oRi-mV@)ZUu9(Y&j2<o4FBhCpRh3g zM|3JX`+ts3)s5dCL-k#+&k%2Fu$W80NxDex-9v*!G6_aa0FcA)Kye=xAW}_y9HaOo z|BUv&>t#l%)Ln;N01H#kAvC{x>pbt<ui5(*rLJX*um10JDn38Snn)#+sfltcXU*Oo zjM^%2fBdR~dv&{i@A{Rc#;9V=vWV@~Y8JlZ`qP!MLo>8(3fO9*zu0%HAab2+NpSKK zmb{~m!9TK@V7*uF-<D+2;b<<IolQ0wBIM`CSg3W+6i|1=wB@p#i;va5+q|KE+rCiU z%#G5<+GH3jd%lD=N4=yr#!Ji%rk(GuuHBjm$Sl}p$-<aOBVc@u*0ltal}b(Cy1nFf zrOwtEr3W<rh0L0X;v65>2SiR0?X<A+jVNoptcOm^E(U0oQoO1{Smp|S>hiXiLy0M( zev8^<$?N#RaI2cTFJ^6@Ds1<qO0$Pn*|KD=xgM}B%Yx5v{cJB4)pk|i^$JJz*eYI} zx7on@B{0MJn^P!W-Nb2FS$4RZwyHu9PJS_gF1YqKlnAB^6l?dJFJ79`ijoLbl&k<f zl0o)dj2^ZH_UOsw#6^eJbuLFDWfS7*nzn7Uc6WOfZX)1|S6l9tb3*~6QVm!;_jUf^ zW|Ga`jj$36_!kr1=u`>2+!SW<)8q*ikt7aP_1x}vh1T7OzdN^8{wn1PWR2wziu3~> z75J|+ssw9#bISv!0{8MW4M~pd+aHbC*}_YmOPZkS<B5?`(aVnKkJL>k#9cz9zfWZA z6PGmkHnim0NF48WeD|LZ%W}ALtin)iVVuBYgVPRcG(7abK?mh4^(K<(lPSPE;f-kl z!tv6kWr0VdomRd;w{J;Tob2SDYA{b%K9=D5ai#0$)D$`C{3X;B5e9`g92jJW8rcRo z*A(Ie7f$U3mwc@^!i3=E*Mq)W047t0KFD=UBd<yMWFdmk`0tC@+@w;6$siEp)=jyI za-{@Z@{b8<5;^K^`6%Cn_czpTUwQ|&=LuS5XdAMP*^x4mcanWq3Qcw40SXI_=#dm8 zI)qf`Pv?F#`3B;Ni=0?F;8#h&Ye?Bi;$4hNdy3^t1Wu7;<kN}B@3P+Dp6BXsI$uC@ z$3wy3QVa4>6MP?;G4^JXuh-!(?AFqA5ffCwuSs(uy|Yak<e3ymx*yGPm~#!$aH|D= z;{_%7pAKZjXe!avl(m_x5Z!^=3#P99FFn6`@(<t0fh@WXl(CZH*G(zcK&!4XD3+a} zGkTxSg|jiqe_S87R^__X{k_}$&ijA?A8&73h07CWp_!QvM5n3KCMkEus_eogY}|Vm z;IBO-w4}<cZ9M>aYTldWd5Pfj^(g_>1o`@M@z+2(SR#kmBa9_CAsZ=7Wn`JpB0&dq zmd-zomtYV6a=+${tvHwAW&q!}<7#$WUm-Q#A9<+FeJz&e3dZ$#S#_Q$ntjZ?P7gy9 z!|L@2%*WSY7Ezir@xB@hwjj6z#RrlDxFe_k3g~LJ0;@_6^e7`Hwn|3S{XUbgJh&Sb z^QwY<fYP;F^KbtN+W6)4P9qojQxv`rc>$!wVNW6Z;*uxQM%*FXO49;Ajt6AurWMZ~ z)AtmnU&azUI#ot<$X%i!Z6Su=!5v(5z%F7bG<&iEnJ!(Ai7&~f$(g<s6@7C8t!`XM zwsa;4ByHKyYtfwak$6d}aV&GnD5G_4?S+s6UYSQeB_emBB2-iMCaQhS3kU}1_yGHm zHVnHRN*j1v@dFltc0`aNIS|jfeLn-WM^TiQc;=Ef$qtp6-=&gW`}pWSR?a<XPU;t2 zD?NbJ*B$M5V96#)1jFc@I;3&h4W61Q+QIZNVc>XL)7x2fB3WIIr&7aWR|G~!ZQ%)W zeVoo54+xA0Ts-PcJ|NcOL8FjFU*JbnPx7kE0Z;j5>g-QmYRcV%UA8!&S?uDR8ec09 zj!lk?SS$=4>Kh6Hh6+woOkt`@FgeDYUW{_4nb<vMC9<L~<MZtVWok}^X^+k2lREDC z`oH1!3ZAA`^u$Oc=!H+H-9kBLPKP;->qR#y58%2h0KY#oT+a!At*9Pna-xI^@V=IB zTHk}dg*YGrKey~WO_=%)QFrwWy_)jmWj)A+b=QZ1>=5Z9jY6Y7VmMk1IJYk<#VYL( z^~JM>29kGT0_EcqAdhaZRREUo*H?h8z{ZybxPcq>+)I!_Q?b6l7cy8t!-%hGl^x?_ z2E23I<I#J(2R!uLV~_^rl;{KL{URZ~i6(fI(zWD|Vh{`6`G3dl@BgZ?i`Ow|{e1kD zEdO{6&5W-`k!|MSC}f~JT?ls`Na7BD=Z_ke*J_YbpWv_b|HP`x`7Zk8iZfy?f6oy_ z5d}FAJ(woZ==~@+@ILX>w%~a96>MBLm5iM?@+Q`uN!5|mbe>+mnjhBx6Pj2bd?Or8 zQ_&Z^)x2(1Q@1!|no)pml@@d)jCBw`9fay?8JQ?E3@mA09&M*|+yY&Cq8IW~(h;cY zaOi+s7!P}IgvD6Y2ZVBy2~-^M8YlT&;@ziJUE?v81C8iRUp<2|qnk=`o#tn6+H@^E zZj2k_Lh}x7^RzQFVR?O)zcylgqXHw#N|kZQ$y*m`2haPr6LglB!$l1*F6pr2i#LGz z)>PH${21OkQ=9X7L7Tc&RJXc-3}nPWx;L|r_+d-8s-E$fHEunxu|O?qp6SwYOq^<S zUvJ3PcmjxQ?gf$yTL~%zI&h)N4t$vR^nBXlzzfP^SNBO@7V&rT*Fi%!#_=bOGKop* zy&iCn6aJJZ)38GE4!q!hsx`Rg8^hO&pK}hwmc-F(_T|X-LP~w)0Pa0$U?K5<?iu4I zUogz$Z?p@S9+4ymi*B;*kmprbTVHjA`%q`Ymx@y0By$w^4Q4CgHjY3{=}H8eLL77i zGQI7!e%~M{-ZmjqJShk^>V}sA&Gz_|w7SVpQQ}2b@;uwr(415>45}(PbjI|6wc>nj z)E;bn=<`Y4Gu`i?zf^UvJBgxrRm`1jKfNLy=bX5MCt_X++9qZtNTRUYsfDog5Tt={ z+jNE%kps@J0>t|0OwZuLCwZz5STVZ8Q0{qpLTYV};N|5qN#URnaESPToc`V7oUMW; zF(kG6g$6dM9WdvYAl@VlF%``TR<lU-R?pLJAeHA(BE&(&a)oUuw`}o*+QqM$IUm5z zY$i?#E5myy4APUfD&a;N0nrfIT~H4^Pu;XZ#=Ig|&g2%Tc3zm-JPi#)e@m{zu-<SV zE|6QkU*gha!)gJ}WJ*x<^?QlhJ1FtgGts9o*{|MQt<%FY*rLNWcp)7uYDr}K$L<Uo zWUGfuJtaX8+8ag#d<>ST77m~DJ5oMn5H1+U9hsY8>_m|S_wiS{7>h}%&-zf3u8eIs zNPUWv4N6Q@n}OKLrV0{oLBAw*F}6K>wGRw{02FxkA5<9@rvGA<Vg4Vh49kC3CF1z6 zw-pxV{{sU&%YPK$8U9n-2P5j+cE=NlzU%7G#GDNrH)NY6$>q55>=}bMW@Km$fMcEo zlv76mM5u{v#vp>fL|@&Us;ea;o6dlb2w#FX+ODp;a=Bj3T0Os<idwa7(JT|ps7Lwy zMAb5Q8ydB4(d+5Gs;2YNg;&#V51;buTDvdN3=qQz-czC#YVpwYus^Hl5i3MXAZptn z=4$rn(tFk(_1rHV?>D{v*YwK-4|_UQ91yE7eN@-7x@f|?AJa4ode`*FJ7Ae__Wqe6 zmI$8xZt$r!w|3RROokN1*MGJzevYkL3%6M>D~4q;kPfycwOUp?CM$(nHfZ)2r)n!R zAG)1IyOL>($?@{A<?Ft$uW#*ruuAon(yHykqrt;v6x1(`*Cv%(`fj$=(xiHeRsKzS zTre^)s6f`XQeYo9i(-4~lVjYNFf;`xfV2A^?0r}s9lS2_y<NW}!SL#T6xF<#QDV3F zA6cu^5Pla|tnyV&m!DA}6AlP~JRQFzKxN)~C<-;}=2m*V69u?@E4|Hv+PHQ+e0F_r zQ}sCNuwr(gLq3XTA38fSt=EMP;cf^XF9#!$7Vg*UtY3x8H5(79{6!muTZAI?o&$9` zJ|Wx^Jn$EBf8m=V-PVrYjQ87~2PxO4r`c0K^l8gv5zMVIK@k2Vb6@EJVZ(&jCuz;` z{1oKHI?7PWT4052h^8bk&*$yxze^{K4Tn(eCwuz76q#Q9h(#9v(D^~?e7*&;nXobB zuS*qchOhIFn`h>ox@`OuY2Iqu{NPq9$BNxX+7yKS$J!L!fPguEPA8AvUT=m7CJjV5 zK`~~Oz#|wSg<}q;m>_Eapz-G?jcO=;8zhwss&QFYGn11>DkDB@ugN`_d<6Nc2IPel zsthrt{x+yzz4fdaE?3`UdXUhT^#-+`7&GsD4czbIY)$H1rMInW@4S7+^>+6@80{R> zE0f;b6EbmQ1&!!^f{W$e0|aF_Mu`Jd>EB?sr8+s&9L`l}ur%p&8Q#i}ACAfsfYvMq zek?A1S`@8D#ol;Tz(|@pncw<yv0=CEZs|D<&-~_tC?b!G!ChUH2tYc)(?EQI!uFpa z8n~v)pXhQZft1jJ0<{v~l<MzB=`uG=6ErtUpOk%eR!PHs1%D%Z#Zo~qdqmN~wBXvW zUi}oFvo^HdO$;SPP`t7o&9K?xDN4o@M64o(NK~5f1E7nN2vc(;)}ZMWygxjyHdQH( znv!3Lz$ZD;mcj1sxz|#9Eg+DhUqUO&5w9ha@-U?2y&|=I?3wnmCwebE>T`Fk9qC6U ztH+FT&KD)|&Wv3|wjx|G{tm8TUWG*v#$evU*L>?9z$Wm!CV}h*HQ9prk9hc?1#4$h zZtftxO<+{6u~yyh?HMbuz~~Md7CXTA6_nH@l5r5VYl9hkU_&1%xMakRM;2*NBGnU0 zCbo~Upgf|g?Aq<C1c{W#1#4QPFXr{0O2UK}U%!Cn!{IAVV(4SX(vy_4v!KAG1E>mP z<LaQw5u#cxp1|FI$=|e{A{ro8ci}{LU#k?n!4%9zg3qs6c-f0G8|a)g#1#xcp+;0f zgh;!+?}?{G_@8(10+LZlN@}fXfGh93<u;`JP*Tq)a8>m^9N;ZEhm_Aw%%_2<17r10 z?oOOCy=n45AVJ}F413b}PXP94(|-f>nnWjsDRP*h%(aNR8}m}RJ%IwrGjY$z6-3pd zAtx2_#NSIC8JaHogT>da1Y-rpNV($_+B)Te1pi*85PQMk40&fG2?LCn6(KB{lW*jO znv)SfbPVUmhwL1L@T)U&d9D-g*X=4+{O7D+doacn3+6#YFDJPbAtPZ6kjiwv=AzzV zz#uY0wOwrF%nT9-EJYlo_;Y2zm^LTo`i}BnbW{gqQZ#*2>f=xM46BcvQ<A?G6<F;+ z*b^b+x2sY=u{uAaI67`X5^yczB>7I?8|kp*<8&0}tlZTX`66@BadIuJ5;hjImfkYU zk7*drtn>Wjlx2{*@tnlmk{VZT0~xbyy1;7!9uk%Umb1hUa2wg100oYVw}ZP(6His1 zROX$7Z@PTBoaqB78x>vd_A52~_a}R6V85LyCDo$qwKILlx!HF!uOIG7n8{DAAA5pD zUNo3_SY{D#JKKs%P<1BnS2FUk3>*9?87m7>-3M`t>pcK96DxN+CM(WNx(vf*r7clT z5)iok?I%(Nesz2(^*3so6X3dWpgXbXDJ789XIk<#Dyl={K)~i^Y{cBS(}?aEKkE~; zatTC_A>ooHjp7=9N`)-LLwkrHA|n4_lE_7;h1)e8ux{R3@KXZBflmcRY|<?u?$sDI z4Ul9sWo#5~sfhf|3t7PHClpL_DRIc1$s#%glGMJHopdbcXM-@N?m4-6SfylI_h;%M zn=1jz>Hzd&NZ9frAOdE2%-udr6vdtHw8PR|T`lr5qE?1pFs%k0UbQptGOfsjSeXm6 zmcSA8BJKUnvp|uFb9!j&g(#UDi;UHdSjl+IOf$BShkb8C2n&j6btRAYrP<?Mbh~_X zyFzrkVtAWPva*uDp~tU~&LgD<?p~o){(jnk@Ut`+EyUTj?o!-jCUUt>=<vQ{wo1DW zgLDE+cGyw{uFJRsc(G<Tqd&d=IgkiY1&8#!5ue=_zA5w=vJsp|slC!p+7X~4BS!X= zk1fVZ)zy+DfNe65_9%$aj+v_tV15|WJ`bD1O_RU{{+8XEXh45#G&srcEYG&tTkgg< zb#68+d37GoNNb&LOl(Bf>Pg<mdLYIf^dE=BcAhD6E90)fzWJ_XEdiOEf(;5?q^)qE z#8oi7;^S2f$I6djGGEC0FmZUCv@5Nbcpy4KVcO`+?Zzi%<(5z!#rws5=tLcs`}~Ui ziUHL=byFngl8&*YJdz$tJnx_D0jUOV`j4OjU_7b>;es3In9cmnZv|9l&g3TUx6Xy* zE_(`h${}ZMr)!%%F^&uLR_<Ed8n<qDq?KWis=&{zZJUFMrI*NC<6hm+6h^K%!ycGJ zt@1Qyl`i4rA*y<XWu9J*HXbGc#9%^(Wf2!yi*J{te1Bs8;aWG$=_HF3R=I)XhS;LK z**cD^N%RD7?Y>z|RH$xscA|M_*yXSZPcjEIKlxeM#aCiAv1-*t;9vP2#Dt~7n~M-Z zG1(@gYpL?CiI&Ul!mSz##{*)euAcO<$`a0lQzgv_cqU*b^I9vsn7AkMSPOST&h~U` zNdeJ4u`(iGZQy(_#PXWbmK!R+C8euQQ|c(%0t71)Sj}9_&47(aCOvZ-lBhZR9Az82 zw5TA>4O2Kk)gy=zSAYHkXsH4o_>WRI>whtIv;B{$oBcnVx;g(hQa9WG5AHkre{<je zpAPZ=sRGZ!{vWJ~b1?m<V9*(LS^J#{MA5oWR9_N6*jckD=JwVaSU1A~IJE)19?k`v zIT+h06bY@UKQX#5_ou3=Y+<G14L%YG5Q`0yW=-9fz3TP)e|364HK}Uu;ng%0PN+xm z^fFkWjZskqv8%g3tJT?zs;d+8!mMh$tJVEKWvh-oP{9i0V!Nv9+<hZj^6L0K*~$4} zjp}^&^C5qg>R;Tr7WN8S$5b%RJKYb=_32-@^0y`mPX&*$zU>dP2%fz&iobNwNdJ2C zO<a`sE<O~uUBv(J-TRI7BX6XS+t?t7`n-h~!!!jK!%)i8E&uM8S8sPwNd=$AS|(Ld zKn+81O03EsN+n=lRu8XOO{r5=qY2V%9zc7OPc#!0>*hF%>MiGBk(S(ZcUM-PcW;e% zW$it8Vw87RgJZec6tfA|FFCDn%Wzx~#zcuI)nw0!TVEU~s<9{wTVG!aFRv73$=%Nv z+WlglTYCD|0wtMw>9b3k)c!(xDlaS5-(Fm<-i}+3HuB_TU6sDC=%j#hi4!N>N)nOL zHB5k|m58HNe;D4o3aH}XecRQQ>8ll0o@3`_+woQX6S@OLW32c-0Tk{CX;J(*E30ly zg!EPQ!MrW)Q>V(N(}<;lVFYudX)NJM3*LP9*S@f$^Xkr^YMx*Vtd%$3E>#0yCN?rz z7|0^?ZL_KmU-0=28~c}L)cMVul%`JQL6I4o5}+w8e)UbxOkqe5oqmD1R<XF)ZTZ){ zvHkoAeMZWa$0rz!#JsNLN%7qQfNPMOJ&5!7Cuk|k3OPSjvWOQjLj}c3qk@LEncH9% z6x}OQ^8-R#t-LdL1LE~m+d6D}WOH3mE+}O6E0CQ_kSchp6{0pTi4GbvfY%yLL9PN3 zFq979mrA8#l<jdOabwh3PgVZm=0y`s6<s)4ri*x6l_9rn#$?ZqSku`ukbATa5YIqv z(gV=Xpg~Ty7AyPhrS?xJZpgEi@|N1N5+{<qq@+sPu!D{|!aG^zuYOq*CBcv(Nu~_< zdfZ}23OC4YdcyMs1pfK7j|P;ar?=v3){Ac+R#pq#<g9^#G&Jei^HZ7zETL-VIARX< zICvJE%uj|;Kpx5Q9oFyLQw17@lkKYs0gz%1&p=WY#reJ<>AGS7<m}6@KYgcPdU3=2 z+{=wEG#X0pwl3wDnu|$bVBlVXDl>yCgeUN$R!q_GC}~3d<7gf*K2!R~x`Jn;Y;crz zrEo;5QevYjn*=LR9E-FF&OZ%7D&c;znJz~5jGnK8C0mF?JLuk41qs=Qb$!@~r(<he z_|?^>h5iIbw9Nzt1uBwC=3vFqaOV+AcRxCRkNXwkjqTr|Cc&bgXxe~UruLLr5)mXF zpae-Aam1p&P{%O2_BqJYF8EzSWk^N)3~;s8yPK|i*;PIVP2G&2U`kvU)?%ix^W?;y z79P7|Y+{%L@gAxUUu;FzX-eL%QxD85-X-m6)=vjz2F|otJJn}+_Y}P4CaRIYA~Nb< zNNpyVL$WExHM~Q}>=-2ji}cXQu<#41eFbfqu<p{dTWlg4NhczQekLoxnb!3;gqIcr zJ@un^as(C`mC&mfmW%7gRCC*qbZ8PD3-k4IqRs82)4yH2?@K*A1~>k)?1dYKYnOvx zBa=ZIU8G4Wq9(kZVYu{-yO>*pMO)N6z%-XZFiG5OYc-GQevS@?|0ks|MerUOf?I@= z>d<K0|EZM>paZNa0(*$dY7wAGVU;<wZr*i2qJ-gX^4;W&kS0>tK$3;O^$%!XD7K3? z0A&6E$Ie?Mt!^fGwywI4y1KfYx}>^*I=4ELI<0!?^ig1Gh@;H|rTfGwo3zfj*iaan zNDLBJ5$>CsJQs)?*W%0UZvQDEAgOucPD2{(le9+!i&#jNNSp*Od83>L<C|bBtCnY? znMfPQ$B#i5`>QmaPZW8Wwy3H3D=0!BsIk%~t^UrYU8s1OmZ{hSQALttrWbrj`H)q0 zl0tYm9C5G@SdVfCsxvc`r+p(&p8u<`&~C*g{>R)3S0o#RZYUx%7PHlQR-`?L_4g0R zgjzXE05b<nh6so}2guQA`^Ff3&@0o!+J61<BVP_JT??R;IRB@zn)|)4_^jX6RMFt* zo77*Y_6x3?r0>D*Ht9&34ib}bj(nUhrW_esdG{gyiB!kxOXOja1&CgJC*bOZ$z9$^ z1Ux+jmG`7Bg&_>IOESUq<Mjj^%~?@NJLR)6O~r-Jiia+)-cM`*x}oiL<r)th%FoUI zT$}I>VDZuUrzbHOWTYcKUKTpt`%A-pxh;Y~>y`HL^G0qW5rdCwP<WO`4W1Ocrx4`M zsx2JsRRQDK#fqxHA(5d5#K_)8p99~P2BZKM-`YFjgK2FpcWC(b*4F1Lk0}IiakbfV zbiEC72>jSS6J&6^Jr*vM%ln2%uX-C9D|tlGG2I%Hd+U1sa5y4&s+S8Ie`bfdzGT?q zHwbus08U9c9YXV4`3eva+v$Z{^VJfqO@F_qPw{kEcw5Ctc2<n>c}7`0A*p@Vx9D+H z=8nT5TKTbLXH0ufV_xiUV`4{1%f))$v-fFOF_9FyT4_dYbPFc^?%MX|D-etT_gS-U z?vjbIX#Zro<7b2+xT!_Hw)JgNT)-bP0X$zLW*DIR4^daRxp8JgJ?Uftm9eM6nJT}E zT~oWZHvgg0vmK-AYpJ~0S{+YRhy)h6I_h)yX%`dtwwK{D$jFc<IylXv@vjYW{x@9y ze$M9W?;W)~r_I)*kY~bT-8?sYH-DQ=Gzd#+25X9}oZIqGN3{e<Eh@hWZ7C8Mvn>6W zwTndf5-DRSwvdZD>)67X{`ax4_7-)dH0OdzXh>#&@*4h$u|draugP9xBhQ&tD*5}g zk01fD%}-o<$xN+zMTl3xfJ5m!gvQ}#GM<H)YTJPi0zjn$1Ip}XGq?;w<U-19g~l^g z9xl_2J?F-ctPL@^^<}Hs?L>_m&no~T(h5@U=3t7LIBo<jucOKR5(4w-a7cl!A13YL z`dKh<nZbXspr;)SG))I4f*bOuV3&H~p$HTve|mNEj@C-vJa9A+<tuXIX4w%H3O|Rr z{L-L{&FP8UX*y$HJ}13P8;_ns9n;f*sEBAWMyN4jg5+)MVXNE?E^LAFnuOW9utt>t zhUg#cP*l%)M(UzuB30ch4^~MdD-B{i4e{e|!*fi-m0@0a`U!n2d25|{vKoVGLh@K- zZLh4{N(Az(`EQgM1v&I?;+%-K_c`A$@M|3J8aJkY`goSExeiHmvbhZ`wAM}@fE2~) zTB^jgP&6L<oqt@m1$LECCQ#*UDx@M&!%3b{-tq74KYRN>%~g1tB|6q?j&#!tBDvuK zk?B;5N0T@n-C@@@j3AMxnbHi*u({R5@EJ|ZN)?l&il-*clGp4*LrQ0?w0IXwKIc0H z1oI%E`3Fj2@UuU4zTJ(@Sex{35VZ@_FbQN7y;xG~_1@Tk!1=l0^l)P0YXlm_-|0|; z9jm4(;(qPv9?Rb{Vl6K?xx9&5Nxv<0qYk|>2SRuJ>E4PvEX+f+sXuI8=e!k-Swf^E zRzPSkuqm>3jcKN}rkqyHFn9)|RcADs=;iMqP=>-=X@zltpQXTqQ$3u;ojb0ND2NJV z$@L;zH9n6wQY~@b28NgxfJVlxGNwQF2h)ZfGMJFV%T@V7M0YSSNZ_(@HqQV#o@Hi7 zha$9K;|6BWSiR4#A9r=7fR4%MB|R#163|<#zrXEv7&I0dE@26thb<3jvo9&+=M3?r zC44DVV%dqBb!ZHbUD9(PZ^L?b0^cGH`*%Lt(N6Y##o=oX(%mf7CaT_i4UAGea^!7N zZLI9|w1+yxdI6M*y9*hKx^IuWO&Az&*E_S%?}t9zU{mZTbA5ZXcxcoN13=~ltSgKf zfX0LE0}c8<Ul=V<z!42_Z+1!W*$c<!4cflG9x4U44MWu7*v4_Y2hZk!o3x^^N9bhL zO3TJ%p*W^Kw#7J+RVLyIMHevKG0M*X*FLdJKhMtC6!^A0wB3ua=UxKz+Ty{3-v`KL z4tXUvf`h;&&BCAh?dC@4F1LSOi<LIW3)QNOp9=Z(IBKt(H0nkN4f_V`tT-m=#pFJ? z{qUck4<j)FZLMTzqQ1B!x`OUlCYgzlt-im{1fDn`s3J5Z%c(8;3Lbg{*IqRhlqfqr zHrW3cb@$YyTeqO=I<1kmog?jh)3$Bfwr$(CZQHhOn<I1VsMu#UXGMHfwPNpBzo4C7 z{f^e2&fF``G-5jfo5o0gOvEewlh1tLF-dt6Gx@tL(>ySozKeRcdkk{=4~s0c0R7ss z3P71nTW05?Jx9egcH={8D7{(<lD<|uSghQfm_s3uDMGOTV@*>eIS@t>`kMa!a(;cI z7>0%#J+El6)mRbGI1gXf#@Z+)1`Kh-s6I(zw6+~}?wuH;qYmT6-fP~m&2(STW5UaN z0I3+uhZr)M_)w^j*f{MtA6nd{@%XmyD^*N5`KP#mq<V;>@u2pK6t9K$gj9v*ZxAdS z9zq!j!d7P3dv2Jgy5^D5Uen*-1=5>`Y0^Mu!M3x?i%2|^58`4*5u+vhWYkeAcVW|V zJ=@?mm_+575gei{aZ*m^?LmN66l^diI6hL966*Q2G3Mg4{{A@DYnr+{WAnSQYsUf` zs?z!&wSzpgSYp-(9E-Wk5F;4`=Yw3^7I*|$PZ}M{6w#@_XMAND_CcjZzZ+ov#=q}C zmuC0lH6%N%MtGDnt~#zfOy?RMm%+ocp>&{t=ruTO(or)BO2jx7t9MvAQ*5SZ$5N>f z5@A&)Gs1}>M3$6Rp<-_+mcCFdIg&bOg}!c6FR@b&S7$|J(ng?Af1sf&Q~K&hicQ{6 zgxQEu^hofXp#8wH?U;vhT5>O2FGGMvEVxCR`;13Bm<)ASY?Q`&FKE>K>oIm-q19Bg zYuPK$7cNPn8XGe+J`<XkD%>uu5|~BUIl@6z6+_yRJBV3gy0d3JTCEN`T|N7=vdCV* z&A!N<=olQ!-s#8lI0zLj94a`r)#l23ZJaut+<WRmZ$KB~>wsjz!Nkyt3MpImG_)2- zvKXevG@#%k%NIU3Aj@_Ilz9R6YaNXeD&*(tT>C#zu>5`kDSePYjv>P#|E^oG|ATJ9 z`fs`g$G>z70K-4*7Hkavi*CX3|82MUKVB*T4F9H7u(AB3e>QfjO~r1FqlvVBMrtPd zOEg8&G`35-&4IB71~9J9jt9!5kj}~%^DELmQxPP1+us(w$1m?R;El}}4twsNb)4<i zsNMOk2u8lRri64LA^ka*%Z5n_vmjm#TlxCpMKh6$N;sb~efhD=D_MW3qKGbpdQGkp zub!i(SNi!xXjgnpp^`SKJedA8K%3VU@!F|)x{P{z7(i&0_i}q9h9-IVFrTv2N*R%F z@zoc+0QklqTbOtIeFnrfGQ9d)<<ZpP;oFcaqdurz{x$k`c$xAHsgp`n5*4LD8*FmO zjN~7bl5}=$(b*|Dg^tPygSL|OD~=3i)krV6Y?>r&PR>B#W0d_fxmF;EMFzXo%7x01 z;2u=RKVNAhycKci9xQROqH<Bj5Yq`TbU)RQCwmoM7=n!UjURkys=2DFK=D(VnU&jL znrZcgP=nPc#(aJ9$ti~)%QS9++=9I)^=X!wFABLZni8TMw@u*3BVC8g4#A&vDyxQA zN@z4ugKMpdl&^kMUAFl;yP$w~U2nrtV8K~P3@40%cd|pMEr=R8|IL_K<X_DW5wOar z7wzV+S+Qp8i3zt38oGV;)f&tNmyQ)IHQ?wvly+JWnVfqUy|}>KamqEfQjZZ<Na?E2 z%;?|m%pi}&ja#C&DQWS0jk92~H6!PjEA4^}%TctSaZ>Ak<*b@Qx`*mBx5dIzL|6h% z=;{r@Yc~Y2fM2YO2n6*v)NNV#+&$02*6oC=F9hRx2+ix49&_wUG6)kI<_714P%_St zv*bXZJwz}5<`a>!maMB$4WIRbY7V{8Vi-$MgN2A+<+xZ7y+MV0^$msQq}>FC^pW<A zY{Zj9HT`Z`YG7ZDMLiDotw*DUd*TzQVTvp3?WaTv&5CI!4^z>(r?lt-?~lR4D&;y$ zxP<Dx&h<;7I~9Y3VstUsaNW+C(ahd!4q+TzxF}X}BAB$J+e0LmeQ^qjFXkLx?Y5O| zlox7Ih-*v$Mu<f5iA$!5QYKcKDNm0TH!O$(dQ_PsCh7QM9EKe68L8uSN0C}CaQwWf zt8{Y7uQ7iFkh9=^4<dV8sB8lBKgX{DkQUw)+q`VPu2*HTV~dZNx7$5KQ*ZnfV07p| zS-2Pv`TPqsve~NTh~;n%1jF*;h7(x$8Qz1;JlLFB@?mznpqgj?Jjs>ji#d40MA%W{ zrQJ>Jw|QRW5`a1ohG?l0p>~ebm1Ox)J)&c9V=F|!0ex`F`@6l{9f>%n@wzkGCpII_ zL8dDl><e3OFtIC&Am2m|#%UVj<y3y+g0UXP*sP{M84zzS_`Rro8tkoqVGKbKG|eaz z_J`sO%d{h<9`ptQnjjEmhGsco(uBtbh~i|xBu<$FY%Amuz0ds!$)B<7s0Q4;&QR{P zC`<qJM-CDlxcXs8ijo8b1|0j?Qd;@*itr&HZHVJ65g=i>B|BP>D53BrBLP`OHE`dz z0R!bgH+5iC^A;kzl~uIU62+TTjtP%D5?w*fk^1(t8oXtc++I2iDrJX9Y^v`*ZEq>m z;f`}~H16`5;jPfxM!9~LR@+t{2EYBvIPkt3QF%y5tda*nmb?<730?es!f39Q<d+$+ zMgde^!eTdyFx<2_9IQMj1Ug!#I(ZaOPBELTXW^vqAI*HEi(&lX(w6VUntMn)PIUzU z|4C*bl=#fE3O7j67fLp|(;wh7j>i=^wPrkE(hD9**N6tDNb)Pr_o_^|$Z-1z1GqZa zFGKZBr$N<4^-xjDr_@oXzI5V~ayJsHdK<6Oa?p|CinaqB=pZnP@73T8gaY}b%+ZRD z(BKVb2|P5=El)9f(o$9mD81pO7PSRbPvYDi5uD4;vTP0ikfJrU3Zp^xsV0K)X6*u3 zmrtz<tVw1s8;wZd(S$O+6hr1sxv2)pRzovLTX1kU33D2tl+GQ4d!Rg!K%?|^vLj0$ zA!p)@KEqTy1qwK_!39_uPr-3_8e3SlVfKX9G*H(9eUXMyGV3uAYw)VviokM>7<9Dx z-B`8&#d2iT{=he#s^qW)g@-q%wzg-_f~$c*v3wv)B5EqUG3E29%CcKk)DwHE@RH@1 zrZ`60cPC*HhG6LzII2?=Dk|R_J+D{5m$A~4(d!=XlC5kYdO4;)SVMWQp{&CF>=uOZ z)wP*ZDD=ZIxQRR408lGbaDGRdfN1{{+D6UT2dqHDWkr``l~-jscpYn2CMyb+8N5K* zw~-T4)t|x+D2gS~Bos!G2hMg8!+ybTD%2aWJ&sl!_QZVHm4Lxqh-$Enn2~^1$~&x4 zRB{MSfmd9L>FI~vtYqc+*J)XY^@%}lRH26q?Ty^d#ZZ6Xw_wqTHNyTqAUJgq(_i~h z<@1S^M$$3y9=ltjh-zg~=`n^c5QaROGE8ATfo0ayFg4n$$~<j)Ac2BKG4=OQT`y#x zW>(NCj<<gl?_v&7NFF{{51ZJ7f!Pce)){Ie<di-nQcoa%Hvn1C@m)U#$15v+EI54- zfn?bSQ`(7PsA|7>RW{z1-^4FJCT~R}SU=E%84XZl5NnfDf-PK4|5$aU>E&*Be&PSj zl5j@$>O5_<H*`f5QAn67r(6g#A10vl@_un-<67|DKP24K5ZYLJh&n1Rqv{RY%|k$5 z+A-aQP}!z_Um;K*f(u=!5dcYX3UP9AGILUMlJx2efsYIyJGI0(!bn@ImOo!1hC6uA zAf7;pb7~0NNiJL|_$;KGWMWbuw>a1wm%cC~i`?T!?`7x5!+@ew+{~Dc;YXFzzN*&; z>Y$@YvquN}w0;V&D2c6Pnb<9TVG-fD8KLgv5GZNSe`e&?g{v0T<%<;lJzM}G$MXjB z%-(qfij`&%C|6;!e(B&KMaDw<bi~#fmSULn#R}r9n4WRDEu1ELqsxUc?Eu8Zy+8?W zwH~cf6|GLXm*q|t_*50e9NnFpV}voFjuB32>(;(S&!>JE3-S)d0~;3?Y98s=%G9QH zzltT*Ve!z>UcLhZN;=FmHV>8o^NF(A;lw*G(w;~&N@j_irr!?-@Pn7TWy(}nkw>vs z;GzWlNpYzjV>e5<E18B!V3b5pj&^Z2DRI#ugI?=P8eFQ1`;iXLaB&K)!OgkiT}0y2 zb~ZJGEVC;B+#k8_?~q%CKQBv=6iV~IKRq|hc+h#;l1||MrhcyE9tJG9?jJBqd0v`R z+-&iP)Rqyt6sCZ))E>6E)=NL|)2(r_lL)PJ&iG+naLCBcjJm!sE8t3|bHt;N*u{MD zn4DhO6U!z|)zbx>kVKJDS$DhghYRmA3V;s3MZCeP$RO#iD&taZ?R)%`XP~}0!4NWl zKy2T)Ytw7H^uIEZ^+x*4$N)mm;|{Zw|9XldcYbW%+}+@W9tujhAeV<r<Rb*xMiCEu zD94yiA0pZO{>_!BUSCde+3Ug&WGrp+3(k>w=YSX%Ru?a}#Y8dCm;icvzc-&F;A`04 z7SvWHY_i5#J)+=v<Fo=qo=N`)y(ho>^peWKG*{gI7wW=I>pHD|!kElbiS5M4e1sp` zwj&735l~Gb_7ZcTKn$AtRYSRc&6>S~fDh=bGyr#xq%%_=?d}ikgb)QU%euSH_FLX; zl}VcoCe-dX8uw-Z+PTG4Pl-st>uMpe=lMj!iLk$QN$O$0-`<8sqGB<rxtGLqzIY}V z7sACrNj;9qq(2YehK4ISp2u(ML1w;1ma(T(?VHKfZNQFD+{6}jO~95fdgl#+Gbd$` zF7URNA#>610zho(hTJr9x8a{q<bY6+DWL$e!hR-&do|_b7ba(-NSA00#`S^20<{vS z71hG~9Dm~?{_s;!fk58sAz&lVskBp9*YS8~7AOJz)}yvbZ5CgQ7eBhv7YK?_Dv<}z z#I+xCf#{gUzFeZu)QyHTr?}-9+7{L<TvA7%Zz?G`XU(st57$>O^o+^r#FU5ucnf0T z_)H~^FAtMgZ`_4-TxY2Cx#gg-7i+$+-9AmB2}V$7;#7{;rnolbc2>*OXPBTO?iN$Z zd=<<`W7L9Lt9X<jkf@7vGBy2Ie2&i|2lt&<u_xz2A~>7POHGJq{ohifx=+1S1RG8P zY22EI@XtoTYM5g59tlbeys#DzS&N0&`o{<hUh>_$1fB_#Ojf^a)7`aF(3_h!qCSw_ z38Y0NIL%{GDkaWtPc&$-x;nTAuJ9=wF1itWQ9tY7xRw+<ub*gr9zA{A;=3wO|ERcW z@bd&TpAaX~6dBQgc1V*nQO?zH&jqw-<`o#L$+hgDfrR6mvKOqh+(}R`(RwL}JKk=8 zscy+<{1j4a&{e-isjqG-NlP&uz}(aA7f;@H&=in{U_;7oTs|Lm@}s}SXQZ_Uq6QDC zqigP(#q5cu#SeJFm3N_m7V4-wUsmf{O}p+l@@p6+rF>1)5MuB=(iCZFphK~ZEmkqj z^NwdF%w=`l07uHiI%evC;&HGxpYODMEOMtQSB0nRZ=;FGfNO9&R;X;@Y7bDs>=+;! z(U;kJU3=P`{D$cMm|C$P!LGH2Ls^Y~Wyb?kx^F6^SNl3irCP>hCq3;sG_7oden}N8 z{Ol<3H7(2o_-fB6mh*a{%M0|nj^kk$G0gQ?wT`)g-qjw!!}E%hL*OTapS@5u`f8Xr zXoS}#NcRpGvngw&cLS|kl}7d%Q`UyXABn8c;gPP0iXF`#F$rXfbOxSVkM71Uuy2XX z_M<b*+}w+1W8Tjnj!fE|g=Zzty=cY7YJ1R-#!aMSH$@U9QMm1|EAribYNri9ET_mg zqIDV=^z@k1O`U_TlF)77zWenJGp64X&ry}68cI2qTODAoO9NChu&H^<ypsn@a}CXI z>GIJEr0}KgHo^SQ7Cqq%dlGU7L7e@y(!NXQp|?AW)VTr>fsH9Id7wlJ?tW%Gt&x$F z2_Ml7IL>=|Eaie^3W2XqGgyR>Bu`(pmU7fb%N~QC(EWh=k>^?eO<n*n{?GCPfazcJ z0`ou33ylBsyZ~VOzdbK7|C_wP%Es`|ZYImv9sS2eh@bzs2oW`Os+QDo<LMd*?YOQF zdt5&rP--60g-RK|?Eb>`81*0bAd)FIayLk!VAYMA_$sS(SG-=1j&{Q2G%a4<z0CrN z)rfxHiDnB46%>$+BRscveB3daRN(&bC=0FZ_`FYH)UXceU<PwWtQfhp9g1DQIKD-_ z)xR_mK1}lbjegJbXz5!Fc!ig=;tny0ZGhZ!?}>KfZb?eZ)T82SwZh?pC$3B5nAFQ4 zeDQr%5(;W8Jd?9ovial3`-Ao-d7_Iw#3^g=dL-7!$^x!|lbDkm@ja$@=j+)`LT=uh z9_xfAB7ivnnW1Tsjanh(^XC0V;xRQ|i^WB(#KJWrqdzXy<R-{D_=RHgbD%^l6-kH$ z`4l8O)D&W@Dr@EYfZz5*MTS7(6(^lKM5;60Hs2uqS3Q<&?~jxpx3Wup#TcaTT~}@G zC<I-SO*I;409SMd+az2U36xTf`1LY;!eqC@R^0;*YHlSw?;n4tR1!aIR3Co#8@sV0 z`d?8ln8hNFCQjx^kEtnGre+V#ieVW5CQ3ys<G;_;s*?#-?C^rZApGGhgD0w34-4(I zVpf!NiVUd0c6NL{HOO}NNrb6m@Nt_skSDiod%2;dR9Y%Bua%8KZpe@DS^hDFq}c|g zMcWzHhKwDft(3sr!?$Q6v@fqi4I@I=DI|!w?l1d@vp**sH3Xha6Yy_yyrt2}hDi30 zhh_YI@Q!!)S&25sE3#>{9A7YUy;VoMp0gW0&N|#2+!$95dR=?9*OM|e>s8l?kDz4K zul%(`904(>HO3N={AY=@O4z+w6i<bGxs(VDD%=CWu$8TDxgGuZh)9{%@Wrw@)Q{7K zbDssGP*A|%o{uaWO=x1c!1*qJ7e7Fda~W){z!?lE9z!7<n(_}ha;mfLM}lmx&VmR+ zo?Gy>kDcR1v<vBo%gV-2SRI|sIbaPfSCZLXtJjnS^|kV$Qe64L6WS{ALA=BfO(>Cn z@yg673+S+xdJu_u-%_ZhDllAFP4ty(-jVtp$4(hy0BLSrztS4fzqtBBb+7HHH{M}p z%BZ!Bwd61Wy^4odrWwn8a6Um#1iO-uOIz6f;@?AQ+CECfp~Gfe5&Uw{AqhXMrGR(V z7RF7A&nEdAs~!EFQPZHc2Siy?*YllAa24wZ@uCbW9MNXuP0WUhHAyS!nhWmw;KZp@ zTBMEH4Sw0wEyrHGKoY5atD?m(0pOyub3})M$tOI!{-a_{z~y>4jxxdIfz0)Jn=8PD z^GM@9h&5`ZmGNvCa~i{136@P<TX&(oWUR){7#sku^eyS-=i6gQ3VzP>H5=*Bdfqo$ zbC<8om8=;pdq0htYZ_X{eh8bVuN(}_mntP+zVyqxR0*QpkY?-7ox_8>baQsAF4RW{ zFed|0dnaC#61NnSOPHao6r{8x1CdtG5JjDza}a^K?-ymnx%mW)Q=_d$oBjqPJ|xYo znPXB5i)RwXS5NZD+I+Bry(G+~j=+MhZ!EjaOA8c)Jh%!xG&?RIAAK33ZUia8yYM(w zOH124#%MHzGBrrx-_>1Jk0STF{fn%u#3*-h-|?*Rutb>VI2e2S=kS^H#sqbGu#eV9 zrUyj=;-e9zclT(deU4vItoYu!aWSxWWirCubF0nO2nI!Tqvu%wx&;V~lonp^DoBTI zUGHiNS6`~mJ3~%wnH9o@5+ZlJ4y+cD2XyvOIH2F)VGre4f0-uYKC9`1yUumwV;&0B zTO<;bNl|_7R3kO71%l0eUvDUTjK90Cj0PVw52Z?P)c2&dce*nK#Pnv^2i`{f{hMMQ zb4qJpUD7Rw-B4O_YN!}nyu7Zi9+SKr*p77eQ--Hk8kdKIimi6rB|5f&mpd)Vw_Rtx zqUO(SATRwVAFEVImm79wlWBzh<tEv(RIx6XHWA3#aE1p8QkxWJPg8~KxMnv4ps)Rr zW`Ai~CAJ~Wdsvl@am#neX9oSUx8)+%A|Jz-+trHt7U2f^bBr-Ey9G5@Eq&b%3z>Y} z5MivI-PWeTF(+9CNm-$@|8$AuO;1ZJLpd%|u#@Gr)ukhMDYi8QH9#O?Vh$N=l|$?L zW-MWX`jxf0<^aB2S?3#sXZDDE@o0NA9)xboX-4sdro1$~*oppk6huMo2A}n8;UZe> zh)|gk5pXP|c!BmO^WiFhAkJ|ucl;^dd4@R>n;S@%EI-Y*7m$B-BlPXX96eYDx6Cav zg*C^^6hPVBJ3z}xLnlJ7_VP=WvQKeszWMntG(XaB{fc;wLjk1feb@+7?~V*)7~pQa z22Q6`LaN_I*84vOC;cI7B7)vd@9MhG)t>Z5>#*xZx@%Wn#PA7tDc|C4Pqm=EXBgYZ z+LO4~V;G{gLgp0Q4FxF}R4^EK*P-?r@G#72!lh`nk+OfmAlf^3HX;l7q-+R@k>HU$ zJ>tYoZ!SMkL}qOIijlPGV2;$xjY(3hnw>$i-oH(Cz#GeTwbiPM$LA_jgyV2(!?9~O zE13Fc)6JoCOTg~9s%k-l@$Ef=h4em$>|$HJ;15c3Ew(MAztQb0No|-AJruSJfr@G{ z?aC}69QM>#j3)A5C1l!CNm<*2xNFJ`r^aCVYcYf3bdwYQsy~}1mD11&-{B<V2|@a? zndH%a9wqnmE6BHe6W*z{!OFbS#+Tw<8qjGD2FN0ok}90(pP}q+CGKd}LmBN>kuT(k zU1W-mNKl6a3V_)|nHI6nUjVE^7mUxg!)Y6uNzxR8gmrX5fj6CBIMX+4<i+fMGavj| zukoPKZ=@a2Z^e6fIJ>?WZjQd%g-ztv5-jK!>g=b^p3VsSAq`p$8g4jj{!T3r8XS~} ze1ZvM8J|v(%^|%k(f36GGPw2ZQYL4f4pFjN#W6P~+$zV-ikKPj%!j)L5MMAF-i;*8 zs#!{Ri@xsDfg78<DbKYcB>*5pDn%r-vElF7@8$GW2G7o(B9mkqffdI|PhC~C7IFk} zA{^sPs}EU)Q%C}a_}%YbkMu?GVF`Qmvw1;kpD1)8)Lxr+17apiK>?1T!eAT~)+RzA z-Py~V_Ip#1ynX)KQ5_mwLW9!U3C+H3;YZOube9sX!7fZ0*4c$VB>*ROFw*ea-Ia=? z)k~>`0(#J2``}L}r3`fpdue@tZ_4(l1x|mkGej5pR~MOp0_;4C=0zc>;;c@)PF!*& z+aiBM08$0~<Y^)ZmssU(Y<x=fU?Z#whf#X#U1iks%?f1~P5wOcD=~kWewpK>*cIlB z%Mq~~5du+&nFb|qTqkXg%aij#9?qr@v^0)Pl~uYY@&*J*ty_^6iP)K}RZ9*oX-7Oo zQTJ$=Ga=nK#m<&Z4P$t7mcKmAho_P*Ek5N2JpL}69f)n=UX4HXt`*B@r~-Yd;LDfW z81Gk89avEDEFg%gb3Q=DUkI-C?Oo;9MLKr@ome{zwLul^bn}E2zH7g!KGgFn#rWDn zNz245&nA5s7fEx9r&5j1q4rX8Kt8>@IrH_Y=I1_>Evla3xhjmXpX+(TcJ3pe^`@7i zSl}o?BwwRppsxJxke@`oP7^I{uK80*p6cb#xBz|7(ZU?Q;4y)~3vkE#Q3}nh&{7ux zLfUBVw>_uQ#N6=SB)F`T@x$F`xBZnRyL=wXd_~n|*MhdElszP&6q-;%fdrEXRg5!v zw0<X_gG7Kif^A)++v+kVP7zj6hfVt4ctohkBJu9pxr;vVjBov;<I(cW3IlrZ^#c<t zY^mmfsQB93#`D_RgLsKrwJglqJo)qaeQF?NpkhI<0Ca@K&Ac}RtLMrSGiw_=qr5jX zWHvI+5@wgbE#dY(7=dl(J)T>BDz?j3NqyqD;dXGVSP*%RSGyoSC=^--$JS3&*E5md z@Jv-vqb`DrWkxcLBdr{`_jd9SVE7o}Gr0NXVS}$VHIEq#2BssKFQsogUoSLuA9<+# zfj|mLZ<S7(VgAuem*xf+!=LfxCRG2Tu!osgAUQv3aUtLLc!QOFl+^<GC|u~tq4-^M zPLo;v!{5w3+73kI>hU+UJ*KpBV>~Np9Gj>5MiPDaVHdyhgAvV98j4?MdW%!=!rD29 z+Yf+OB0m~|fEybN{W`aztBNG4;xOSsn%M>X>v<HjIG8zcTLid^wpnA^<eF)!-Mt`= z(h)0{8VxEknL_(MnUn%x#GoA!;rjXv5cj=D-21coYr#w~y+uGHh@JGbM2)?)j`T%K z%n%u=T2ABGtl-4#=ziO;onHF)pE0*an!hGYX7mb8cT4^%3g8m-DT`8N6={k+wcbQQ z?FA8oEKE}lU$_M)AHN8XA{HOu&g-kTI~s-)jr{qpN<V;0<mX7LwZyph-2b-Q3&A&{ zubvwtT#<%Y$Mc)+wlE7<#4_W8X-_yeoBLDUrRhgne1*v({xNoDq5fl>ugiZb@M#3{ z*O(oFs@%Yt>QZ(B!U^>_kFcV!GF>8n;09YG-~n)j_p=pTTozosnPR9F%V=I;vw_LC z>|WE*i)4(uHz?25gIIqcT={1#bQ<a1%*n6t$HgIjU3G#&@EKhUP52GP^RH}Bh>z3J z$X~KpeY3Actq7r?)PqTro-_;bKmA?w8Qg*L3RJ3Ls;8&6#8alkS)qkR513lm+(kkw z*HNIzy3EcBm&VyKCC}{)`#4wE`d70*jB{?D7>mr{G8Rv*Qo2%@3c0HADl4&q32ZS9 z`q+Z79{Tx~L`d6BF&T3%=d1@zcxkBETf|QVHIS^9*;nC@i_v%CKH{*~7C;xfTz|2# z>+qz9J%n5vh6L{=O}ouZ=%jpBR}Dt@%jUo}FN1m&UI`kuDBp6k+!RPovhw2gen2|r zp8nlS2>{FgFbS~zYZ74pZ%i!#{@<^30D$#BO)ar8{V#d};J@BHV&V9wn@5Z+EQBnq z0751v03iz-+do)60<iv9=d!UgF#XeWnb}wg89A5<Spe*WObmd3axUBdeUG&P?EmJm zHY4LdT3c#XlX5z0N9w&&+ZVTmvj71TXl#A0H{z(s*z_P(RcW=%kyJpnUPut9li1=a z`$l5sWB&%CluRAtAbk}80)9Ta5`7D6s~Q>6Lna!zbWI5L_)Yv?CSV;rDO5CK+1K8F z9Yf)z87-{08Wq*2E9J08U&s(iyskt?+~BF{Uh%5-MyS{*j)rZ4%-*C)2eMgZUdQ#) z{66E=_Z-9`-QAWZ7?#j(YooEFYQm@-LttF+Y{@s@0nL0T$0uIM65SIwQ*_euz3D0_ zf;1QXcW&itWW_RIlWc>sNSXpIaC03KNqoLo*bJjBYR^E841M1;(W>A`8cgzNk<S<L z<#3<UcKnfH#c(d`hyh^8_SFk&;m5@>(6xw}0LyYoUSfx2JF`CSJ)9-xPQzF*f#|?5 zF8UCBWtaPmGR*%8RP;DFj9_d!e^FxNHj~y<1Nq2{0Qgk`+?hA5KSiN53h$R=g37?F zyW&=eh|4*2N@jphmM9eVkmzKUIwG&lhLB??c$1RKA{UFbZgV&!u`JAqk{mD=La;wz z>Vx0_CZfy1kL+%^j?P{FdNX_LpmrNz*25*w>LSx=j7tTbfa?;i9-!wj%4rRarQ8){ zvvfT_HVavu0;vh`{{AiqM1XO5F4l^_=O-&rPNu6KxrnzMq%*_2GF=C;J(*oIxKz=% zxL1Ecn_2Y*3v^Rux5ur{=PiQj0iq_7T<-;`icXv`Ino#5pBnhkUdB;aJ}lT>w-rO; zZ6%GDD0ifk+vaXPM@AB}fITzochHy*JE%@TwokF()UY6qSe$3oJBzQi`ZLk(rFSIL z>Pu{(`pGGj;EN3GIC#_0E4xn(HgkM*JS&GvqvG8?mUoej!n)TxkTQ)T*UM^85g`QH z)e_pIl}%<uh0Z=Ty5W@!<^pjO-b41cJBWaOAI;2Q;M0pcJNL5MK_SNL)w+ne+w{au zAAN)0g3U1OA)H}^9p7RU>NWLF=uJJv7tv_-F)Th-OulbFvgD{iJFbl`1$Sy?HFB%+ z3UUGAy37WAq%rW>&b_?=2g^$xZC^IKlwP}=WhN2h5u+&tCB)dFRlack&x$osUCx4$ ztPrLD*5yt1lvg7?C>WYL2LlMWG+{m3okhKoyWM&oNS_HJaR|Q}kK9-kJU9#6<x5nr zg(Y=mW*pv|M1?>;GIrEMf%BP@GB0i2AAYRhm&>(0KJOp!G6~5OZUHvZVl;Ndyo!C8 zNCo55Lj|T`Z`~@VUAYroA>`BMB<xy=jqs>njG~bC5<G5cbvhL-03VkWbO=ljY@N;< zT=mR$CWd)qT?k^~Ma&@ycFIy86`u9mRtgJ4A%~3(!+Mq>CY6<*B(*ejUTgP~wjgsZ z)vZn2a_hN^-cMlTw3%Gh!NTpW``o$esdyffIPH}}=yt8vtX#Oyh$6~@yvvRqvHF!) z34e6O{>odnV*dbkW3R~#U!S9$cb4x3olB($c=Y<9))%67cN?xu?#)}HhBmfcwbx>c zpPjAS1fr|nop-)j@4R2>femz?QN-pDj`G8?B)bTENcSBEze3{>#w%>Qvr7|VdyAG| zStz?IMNn<IGksk=Mis))w`1>(5ISu*A9T(L!wwlj`M|E?dHvelRQTAl%NaUWlVxin zP|%z{D-3V69)6A<cW_eg=Zk&}rp$(GJ3vz<l5)y{nI5=9<m~3vV1GooEIaiH%vS}j zf53Aa`|S*eujR3@^uERjCl3%@kH`Z)USiWK3#eS5e9|SIu6HWzbyjeoZg^(a3F}XA z%gyI+ab$MoPvbzyXAxGG<R9{Z8%%QIRHR3?J+y(R0Ls<W1ix<U`1u6R=frnP-hj(x z4;?h7V4t}ugVb@;J}ZQQ%^+l$X%%AudX!>8@kyWRWqtm}F&;-n_{HU7J5bmHrlvQb zLM{|t>V2@Pbol%N`Fft}`#?&eZP)J@c1Upfr4K-ubl<ra+Nb@zMb5>B5{WX(uyRy) zxtY$Puy5QvY7WP`8p|zZ5SSbcyaGJJotXx!LPeoc{Y&VGkz%7DzvN5v6Q4Hq_u504 zX|<VezW7@1xpOt!Gu!Nob(e>e8X~ML4=LFmz&Ks5HQfbiaS_-(2MHR&&YD(ph;`V1 zONALP);eLhWAM9&;O-FO`Cr}C1f*f`952~`{%I$4dkKIuOu*(M?B;ww7r)E6s>@^a z0#D`7;*Gj`)(3encj&uUo-8X<L?!4iDw7|SBWeVoQlBzv{YluZpbP*x%@{5lKK;On z-T$t`$C=wzv&Q5retllWs^Ka=4(%v@L3@zsLOQyVA)nwjn?80OT>J`iyvhx7j}iv# zZ_y4N3uG*IwLCiywc#Q=c9OpLglQFYV<hqUzvcOkzW=n@<vP(fLDPWiOTcD;T6LGj z$9%VXRO;zxI9Lv1!id@ma-c;WIle(F;_UHBv!W?mBEyz&jta(@90U;@k1MAO{sjr0 zXEkvILT{%?l#kGY<93E}_bIis$ghpa*m{H^OQE#kVsQ#ywoTpk5tGN0;Vvk`93*qX zX<K-)J5B0V+`RXA;w?9-q*T|r5yNkgA<UFTt(Q62WN(;RU4S*rQX=Og1|6GjGSA32 zylT;T&-eiTavx3{F(qB6Z<upRZZhA}P(py_vHb~K%r>;(WeCOaID>d+W@JCKBje(H zY^y_A{D!sASJG0*^?*QZs$y4mt3zRLZ*(2RJ=%1=9yMCwe(s|0uFFE<DaTxnPdDq_ z8b`eveqp}8S=ZQ}<<%!V#m$h|!DJ?OxkXLtbTE0mw`_Tz1IlmZAN+R$=J=lpn3eHg z1kB3x-w-e>!+(}9^Z#7FtPKC9e3=>k@!BUNGdm$OGZP^rJAjaxh4~){l$G)SK7q0_ z{i{G3*_hb>i9mzZwrsaV5q;Lwu8)`)EN&lT3lSnxP@z2?jL>M~p92b4(eWacMJ8kW zioW-AGjtR&x+r1Qy>fD<GMI<hqBc&r$dc8!XB+d!MZ)>;g)86<3!(^PMhuy|x-XR! zUb+b)do9h<__iq=*5(EYl^saYSEkR1jCp2xC#qV~AR1`e{xI+RQN^59@lWK)!xS-0 zH@KddG&Wt)64=}f-xog;yS2R*@=wj?BIV|RM|8g?Mx)=v#I|L2_B{P)d;9A|v`86f zh(IsvPD^YtP>XNHKPPJ((%zccVK6%e8V)HZ|EdX+AA+p7N7G$2G&5~$Vmq!`mZV)r z3dvuRKu?H+?}g6cQqDD9#Y;;IoOw6Dz4T?^l4ha|Z9#IvPZjc5x^Y93i!Nu|8ohTn z+AP4eWW{B}zcR2P^Lh99`4PPK=m=XNozAuB?CPZQ*oJx)fno-!nE*yDz89}*-NtNB zg8%E&r}<cO>A2yd=Sgk*rtkU}Ow4gHxpuAw6v@17Q@<C!5W5#9*N0y7iDGxF#<P6t z^nKgxW8*89j7~Sl5)9azN`3X_lDT4dsYGd_GfbruvC21@X@nClGP$T9G&Uv@dKMKw zUr9{qyx@cWsV%oIihcY<OPubQAh=k%_qRLcM-m3|xNotL2TVTY$=DzdX5JuwRiG}n z2kkUVA9}FFWuu{OYi=IDs}TK3qgQ3X8|E*!!eR;v4&HtHR4|SJa}atC%SL@!HARp( zylv;#H2>qRXs!iTxIyAb_(2!|6{Z!ng7cJ@5*)hWRO6?is^JIeBy){-$++xf*L=Z& zHd`dy)jW3DwEWgyZI5eEZ9`DU5`o0N>nj&m`7DjUpArvNzVaz-c#?!4y(rXOPjGzT zctU(Y2&#ZJbSxxTET(}-Y}~<Q+_GM^P5yMo2_b|Eu7iZ68!yK%e%0GGQR2ka*z*j$ zaF!jPfp~7-7~!3$Rxi{OA&sHmv{{ZD_x<5pwqq4IQ$BGe;o(Iu$Ph^MY3b~uD~icm zw05k31!+>+nt93o$pG-bAPB355P8GUUX-C}-gqc~zkei~UCD{)HloYww{UCN2q*R8 zUK_&`kWmU^X(T5Mg$%@;v6HJt<;(4<C_JU{PRJ;kAW}$z83ka99$CU331)iP3cJwQ z2qlHQH&Bf00_gnHXrlsIqQj>G{06&8=m#n0C2Y?tV7Vd1lT9FN28pvCIS3RChr>Ry zs0Uig_A)Db$+m})VWk~MT+b*gopywJ8Zm)_i`dm5VNX6NR7F&+?+(}Q+EVdab4vx= zNDKutaYcH`hX+O|lI&sE*1?)$vN&9^f>DMkA#X%ip$QdWK)7VAHm@F3xrxtLvm+sM z6%d;qGJa{6Gzu??*J{Y5Dk@x}Iog2k$BCjKs}$x9=!(%zmw>x1@w^_Q_M$h@8?4*H z<*a*bei9yLGt9Y1os)3P>bYnm*1DN$-A=>sH|qQ<x`_4{wCbk-R*jK|Q^MdiaO!<> z1{<d1!7Ga0_Tnr<B|}5o4qA=;Bvuhu@X{QTzP@_69bGd1$`wX+<{Ttz$7qgf4X~}b z@gSEYv=k>a=2k_~7Bf^pDN&lvo)(icbM~L*F_`AU#iIx(HY!3n9YM`;Cni(NwTh=U zBKjS!Og2^+vZpewt2TRuhCEf&DY-G?*7-UpFgfcLX-PU#s*Od=ma5G5>b8OD=C0m^ z>6<Ua6DoDf9e9adXAM0=3hVK+7*%V<VPnlvL$a@L2_xte9N>0$VL<EmenYbI9o!9l zDX=B9EaX#Kr&sx#W0yCn>iM{L5ZI`z>A;W`s9&dUH9QRa2AO?Yv*-7q+0!=2O*RPD zK}^!KpZ_#PuKB|jzpAA*#NlBv$O}Aay$ptiW9}d)UY$uTgwq`sFuIg*swOM#S8XNF zrEUHsj0{a2($=$l#rb4M0!$7U|2u(bqs#PT?3hP@<)%dx#3LV7iveRH=frYCLFzyy zQ9X=?sNaqp9-F~KH`aYZ+%kN2=drZRV*Fhl{K;uXC>3XXVwEp$#Gh~l{p-hF5=ll@ z;0i8G&!uhM@UzZ<k|ypC2>$E0j1n%8@b6DgV6tJTuuwBgtf&fw1~fwnKFvgO<}K$B z4xcPUnf^9PB#usvvyBoiQ?qfqH;?iG58jRSEh(UeJOW0v+jz<|=@jXTRLz=HIYM9_ zPTMBCei-OW3c5p*1^YvTf<jN`+)B(;ytZ$p;@^#d^_#L{(~$;houFHZQ|J$<54K$X z>zZ9*aXijQ4bIlVbXR-8KnAXPU;hR_tjzyI`~dzHKdk>9{IL9I{IL8l@Wb+d1V2m+ zgpBOWg#R)2&dBjkCe~R2{~P=;{|8|h{{NK_>%VDn?5u1o|Aa!$YE!n`qUbwsYRieZ z?G~#^BQ-~)NBRs<h8}3sg*%oTc;eTg;u=RQe}=ptvcJlSON{mV4=q-YcxQRu9(QJL zZ{!x#ot)ZmIvKO@|Gp29AC1z1J3ZBVeGO$#JDjHVWW+7q-pmoyd@$X8*4}wlbKH75 zJ#|}!F7N&cAgRH<=rmRu&dqx3;;D1#R(0dK^R@H!*t-p*W4-fbD7cy#ySi}i<sv|s z`dGYmGRvyi31f8W_>k+0`=0+e%}cW*_jtSicsAGG`z3kPXY0H1?cP+hMZ0D3Wu1Lx zUn4hhO>66T`q139)wAWE+sW8q^{3y<S}wK@e#rPr+vWM~v<!i-tpO)f&bZgg_p4#2 zD_cLO#mj6xv5gO$!|&Kg)X1okoCM5cUVk|Lc-~LDxBtZpcO#wErQ*Z2^lYiAV|&2s z`{8q4^N%~v_?{LsJtP>kUFxc90S8ZZsR`?2Ys<`1G$7C7?;C5su~U!stz6p`tynPU z;IjoM9)`zo56_QwX@(9~7vc6kWMuq|!p1;tG&Llzbg1}!qU>s{&d(B^Dg4;uk{#;U zwmc@vj`fy5-g}eV&ieI^UPglcpDN~>80_VEK)K!Y<BM@D#_R3&=;`7s;r6frLl`t8 z77nzb@NW#5k~6}`9M*xw<B(zFmvgC22y!+WM^r;BY)Q#cMsg=#^S9@zm!D!e@n0r~ zTv);e@G*!c2$7qN9Ei<MxKnS3Q}R9wmK@p!MI#B;RB6zB2~wcinR0P^vT-*IgjG2o zUnd{WHF)*FYagP1eoLI!42Fx3DG1zir?(b@?sS*W>l+0GRZHS}0FfNtc(?)%`aPsA za^N;mza08gW|4iWcq|PawX!L^<7N?!OPSr&EQpTt))&G-qhE@Jw?VvFzy8wea?6DK zSlh0xz0oF|bJ@=AGx5mjVWw{hNm(|I6Y%ImU?Pef7kGGD=UBy-!M~M`ZhN0J%{2<I zMah^&sN9CmkEIaqcOVaYIvDW6#N?SC1N)gJtMNM^t<Y$9P@BpVEd_>5(gUUw8$9HT zuP~tVN8p6ColwJQ+H@?i*d033Ud|+Z-wpSNd07OPAyv_XA+k&K$X$IIr%K|P+%lHG zRD6|h6Y?A=q}%(rt03Ld#FCfYR;gF9kG;@;`-3TJqCnaaMdY2zdPj%^o=hac3d!hD zUiDg*sL|Wt6hVQFluF@AfPcdDmwj;iFhV|2UuA!USEUF16`O3_y9}!mCO9cXaATJw zby7*_cfLSci3m=`<!nhjT$0utWNW3Fe8N$Rsw7wxm8euI!HHyG2^A53lp}w%Ly&t4 ztUNqB3IUOfo4WY%syG=NVsTQlC)HnSq-5!QYw27THkBb&^h<|j39UT$^fNW#mLzAV z0imBxuUO*Zvj+tpps^g*CL|9K0!A0IpJuLHR_s7*Lk#0uMt@6zL;~SGBFu!S$^S)Y z8J&g>;+F9<#h9G{)S*|W=}a$qw)OG69b0T+7l}J9|M4_jiipsRLw+&(O)dJiYWMkB z7gtsV^KsG25ay?@%j%L$Al4*#EQw1khK9oT7dVU<d?WxM7P~HpG^vaaiBAI43*&99 z6Q?e{z^SJpVlZVryEIAn*#IV(>R)2^krTy}=x=fN@pjO@eFfBC8MimBCoLU&N&g!e zfO5#+w6q(R`}4RT3<9dv_V<a^iIvMzy}@nyjsVJ;M^+GP%lH<{tG{6gmkg0aW7vm| zS#%97`o!f{bg<(Zp9}Za+6+2CxOu}vQ+PeGW8s0HACt|%`{j{oUg$ZMn<N^_s0o1- zDA+(90v|Klx@GK?fBg*)A_CJo?VTYG*U*8#_1I^B2*g;*KJkV71##4)+4ovBkR5Up zo#fi&+{5kJ82CW=b`0~m83+zS7zE1@M<cQt_8NM1;efHqOdYC<7=j{J5tl<ULcmd{ z*i98qE@3<FnR$q2KBzw!l6uMq<NX}iWIX<6lrZ2RjHt(j#H_^-0r_1%?TdGj@`Yi~ zEOY3}WLMLJzSTWyx;oX9VZ_8`i0iS&{hX0qp;-!uTM=gooA54Oname|0+;pRW!H_h z?%)l7%V{R|E$CR$aZDtBZTWNG-A$qgAs|S;{2)Qv+`1&TEXJTDb*y88@{aqqcnF5l z$65G9Qd4e%BKq~*+t#Ej%nvnR5f1;hOFn9ZgwxoKl59|!revAhTyRT@3>kk_kWAb( zjq|mFUWBecrgeRqT4#3n!7+Zw{dUbt+tpYbFa&oLc`;=r-kF_a56XU|O1|SiSx01V zF|SU-4IkZV5R*f~SpsN{ou0DV*Ey~m$ixgIsnJ3?vzOi_T^;EqO+>j9r2ERigx@k$ z_c*GTS^ZUm+iKFbI2(ZJDkKGIIPNj6dB%aCvJ5|2SZun;#o3}7Omf)XqM1$KGCFeH ztyC*s(J@I)DKgloBbj2~S79v1biOJ{PJ>J;SwB#W;?glG&LeA5s#`{-Jfo0Od0H8) zVyApi*;eUKhE5d^P%g{^BvRD@=BfGsNR_hy1*%;@0@W>Gf$Ap(Y7>`Aq1i*3*utqo zcxhHCqCBSpS%piDjH#t%((%Tl1+1Ao6(k{4V@mAHqJr+CwdJ)LYi%=GSBFZC%cI81 z@~P#Vjpwhg+Z)^d@Mdo;aAZ(sin`%i1!2Sb{WnO{mMk=NZJWU(Hfp`8W?2t*x@S6V z&xT|galsUQL#>*Dw24nCuYjP27_ui%>Q(Us(XHiHq*IK$uuJJPvZd>|s&O*{eZz`z z=Wt?flHr}MA$C|kENkCzB7?S&0r)^NB{lk?xErNO#{egN!HCFw+kAW{TZ5K8ajz(9 z#v;>0^m&-0$B3?mjG0*v=h7OQOOLXpzb6(;)2i?$e>!T1*`)rN2@`)oq_4Z}%CZv~ zBu;h<@rAufM;aF7=dIND;z7r>YeZQH8bUIoGvr3L$D$BpSMec#5>aG_Ux*D-5@D0J zs(5!DL-GO%Ol-D&H-2F6+R~__XQF@tF6ikuI7#mC3WFt<C*5qj<O1Q)cz&?DLkiPa zfFw4>q<y$$4!Nf2dT|!0$`wSDtnj(<Jm~@uQne@y$8qtq<SJTMqNC)m3afQR<9IBM zk0j$|n&U`LP!uc^`NoiF+40J-Fxk`60@%Mj3_KJILCYb|U}K5|IvM2wIm<dw^bX67 zMG3Ph)hTy~Wz%bgw<$fOz!7Mqs3G}V*X7?qx}@mYy@zS_2-R{T^4Ab6l(SUPG(HvG zF4fVmWYq*}Jw`+_Cri=2IQfk)N-^W2mD-&_;;qC~`cR&*^bVVYi^#eP1b9T_?$}Bf zof@I9g)Rbx%3X%Z`D2AX%Ai^lijXugjfSR5#uiaVAHk82j0;xL4%B`mFOz@92g>3Q zDjYjae~mq&kztMWCiKayevq;MBqEJSa3`UpdW72V9;&ZKHJ6fJ^`vslNClFiThQFO zY&V`X*?7Nfl&(i{3EZsBwf{}fq2)-VVY9wddfxOWU@Cq;@qm4^?XJH=P)9A1SH@~e z|4qfji!7p`!9BIbz`*nVWbe<d{&U%)P4J>Qy`ztA6ng|_9PGh6+J7>lmL8H@r$C~A z^`e=+)Ig1G>Fir;J}?za-D%mfe^!zKzRRYYP3^=V09|Q3$N`A~5yJ{#?Kp7fa&yOX zmI=#5Y>=@WNRvaZJ9CXcM$#;b>A<mz2B+B2ZK@vdC>WXM#;Qbfvg;qHY6bI#T+%l{ z4i)GlEFzY66endUVlpEw&|_p#xX=DIg2!<^%<Gd*)g7yfAnN@4KJz!-wJIF+8O;ZG zcSk4#838?w<I${T%$>m9>Al3OURlda{2vF7eb<2wkVY#F%Gs{OjVC6W@@oz`dAspE z9J@{AYp~S29cmZ(<VjB)nha9#XNy;2xcklmIj}IJep?cFbbFx9iBAI0pim)yN;*@U zWtTKDw^kf3MjEItAk-%E-B=zFJ^0hND#9PkS4!HH^#ihHOeZh;9W{rcY@30DZU*Tw zI>?eqReT7k8NzEFSJ-tDBv+XkLLvc+v*qnDoZp>10H;G=s_y*E3@pV}1%oqFESVc$ zICWy^@a7G_ZfiHD5}Or#S!U}RR~V&E-5X~+i^LUMvN6Fc!nh$ly?A09x!@kfx4dC@ zNrSpn=QmDI&3wkb`k@1=)TA)YKS-`v1(u-+shHZ%`-*1g9s2n$GSZQzn^uJ&_)QRW z`V_|S#<3jvBc24HbNrCpwE=h6Wgb~KsBm$?SNxNM0>HYb)CVvP1dQ6fdUx=4kg$}$ zuEOeXm_q$|`(pHs4#<Og>GCez_tc$yjqWgO6~|UD_4C%QlQB}G_@C#)bXnH*3EFdh zaIS;tiuv5UKiuLybbj!S!vubP#VxLra*?cT=s9ZgTih^P=HIRY!r6BL<@vH|GmMo{ zDM=RcpKaMe`7jEv)@oE5uK`(G$I6uDk>f}WzaB3HBa0y_wGCl_pRjKB=R*H}iH!5b zvc<5efUg>MKKw2y3&S1N>TLiMJ=7mI(_g-1F7hj^NPdH-_=?#)aoos?JF#sv8xAa+ zm>qj^Z3JAehLlXoyeh5N(q73VdUZ@{KJ*x9QCLC5sprO)91B!ONU7#yTbFSEnj&yc zC=zB$YK?GP^`}moMmyn==VCI847tiy*YhhHqyaDiHlbA%W7~=&Vert&RAYw($-j|U zZtx<bdt#r81b<=ID1T4fcYgF=St10IH0=XvEvLPqbL2$ToDJ?~f|2bN{q%!y1(P;( zj@-cBRq;0b%-p>_e`AjQGP8SHGa)a*g#uYslJyrmj(Bu5Fh>e(;4|pn*#Q`Sh!4YS zK(f)7Bpn@81dl5Xs&QAzv2tmTPG_5HI%IG#)!-e2QmYPr17lFW99uFp*V}=@lup`_ zpHHG2n9xZ*UP87Z2vX}N<3XOxH{tGHoILp+__#19XX&mq=k+yW1UhLUG)v{TT71&u zBC0V{j<5JAQaAz%TlcynkBXSVkBELcrW9>%D^<jVmN%=j1i{YOV%==grdh8t%F6!w zK77e(0vI=2raFO}+!ik)7Fu;=<rg~_C?s8(KgR=aIY(agAJq96serzeULJ6BR3+u8 zvE|B6(6*8yFHlJLlMp$muWxjk&%i$J?PmtyWi?|Pj@+roz|tE64zWzB!O;!Fc8(0| zU*x74<v(10F{`9sw|3YgCe^0at>P)|*f0c3YY4j<>iOLt+Tf>V#)JmhADfTYRjkHo z8I7$OyBo+q(2Nnj+k3zV7OkE3`{=oIHayYITy{z6v}EAE&poinMq*J^=l&ewm_G+* zbCAVgiz)Um_&MtHFh+ZztNYEi{~C{=CcwiK(D)j?rG9ksS-wbsZiITfvL0j0Zpe&X zTwJ-*`0OTiO)UCoLw;S(_tkGjg;QWP1-H|1h`|#AINA)qxaoA~7WaTX$K&H}M9$i% z1bVhsUZlZ+nqtkDMr7<ErTdeKD$FcMUc^`XdZ28IFiuUDV~*~I?D$H`O(~{}@OQ!3 z9O!J%2zs{jRNp&WY?{Q-zi(9d^`*a$-4iM$@jEe~FW_ZuWT@YXcpr@Hh3thvXs2&= zK(fOu5<d5!mKyj|1A{m>5^zhLja%W68jou=>GIG4tQj71u~+K{R_V8QxIvxTW<xPH zH)$+$H)dvcKllG10RKM#z}-WNFWelmm8Xyc&w1nKtO?z3NZdY6qS>LVT1ZnGwjNH_ zF`@4TYVPVt4NNXW)+|17lWEwRG6`wu8nRjbuR*oS95!)ErFR5$cNpHX*$4@Or}qSI zmp5%Tf}(WOyI$Cbf@akN)9${vi6<~UF`&Dp@XSq^(6H3a3iFk6+`#UZB4N_#++vu) z*K(OF;9b@XhxJ{~4Ht7i-#-9tAMie=5N~qRmsMdg09DdcdQA2werI{mW+Ji6q85w@ z`z(6=Ez%{IA4WQHTKZ+ATgpxYwqAA{<Y?u_!JT$#0H`G;5g?+Qm&uUpPH)2+F*?J4 zr2c@_V14QnFj$}Zg(5*tQr}vi?8<M}++<fccx4qaa-FU-<h0qN)GL(ggE2`Q^Yo#m z#LXBBc0jfh%PbjhBm6>;3k0s70A<?!lA77F<wS>XY^4WFN)v0)nA7IzSkTc~{p_>h z|9(-|WY~;Z+clat>rksES3tQ2+t#+v2|Y^gz?HuuXDijiFt}~LKbAA*=KCo&uzlN& z|4fX_Y^mQ9$M-%K#Aefr%;tc&8mbL*z)FaU#vqW8b3i=IvA!#m%8s)B@Qu&h0DO%V z`I4AA0FlF(Np3hZ4ss?MK=D^;pmByDAhhimjR4WL*PA<$r8!vvw@=uwLCo<d^sy~# zDw7{$+=XXAFfFIR3%8U()c?woyKsu?EsMVy_3?NY_W9!<&CHyA{-1y0_aFTG??3-- zD}9MgULa}HoU4KtiW0#j6{%NC{b(~`#~-7;h2NhcheZP+9wx0%QegtG&?)5BcDH6V zlhwEidR<0I4Q6%QtMO~-hH1TJYV;>W5U1GYT_b@e&>MKf=IDV~e^e1X7^R_ttF!Rc zFFZ`0kAT`vCf;m9>V0pF#a?UeU$A<|PH+vj^NhK|4m3`TnRd$b4x7*8kGzGA)0T!` zc+BH~d?o_sWu}j+W2PqBhaLN^_}>2T-&f8H55LbAYMfhK@Ar|{<@~}MPUEcCr$K7Y ze)`x5SjS;R8+98@c)izcF%hcNYcOB7Ua#eNdV&F;J}XwR<*h=gmeO@aTE#Up69MBr zX5~pC^p!=mF5+3GDc}BSrXQ|aiX7Tq7!P^0yC**6Qv6Wd)9xKMsj1e8?FNUqic>CL z>+oUh@Lq?TrBfF=San%9Iy_pZu7JU?EIS?UcTQOX&#P*Iar>-l$1M2+K!Z_h<rT2t z>;-w2S!Y3yW!7DwxN_YUDyvd&fpGTgt=`zAVsZLl#7gEHb0A|WhhPk~L|VKB&m2#g zC3v#dD~n<y#;zp8_VR0T0H%wdlOS+e<Io4DYF_Mui`u=&=l;I9375ppNL|bZ?GU?W zLZ>|}(YUGtmWV-O)xZR~8I7uf58_?C=xTcPlC0sD73(w9RnhQ4e)Fh!V0IHK!i68s zTs;TEMS~anh2os^LXj>Pw)uVBHWcl=CKT_yHWcwhBNX#8n50;QGW7ODI^;MLL9sq* z3N1frq|RrK*#r&)qDLHtL=QOxiXL+a7Cq<?kR2+=4fnN2rrFyLucP-}{?DUz>LPmQ zsT;P|Q&!P=Pua0CpQ?<$eX2J4`l;$@`dRds2Qc&S_rE<q_?PZr9CN_GH|l^NL2k<{ zz!zUuA)#I;v>xV5y=lR|#cN#Pp8tb0F!au%9gdSN%d&BN2K3Idbz+w|4Q#{uT|UHI zjJz4z<u>DqS&g1@gp&t+iP9HtX!*RXn!)6@xMj1>5a9hE+hvkuxe>$AtJDSDp=8eI zakzHng?;}B69kz_{r1N07gFixK!N})Nckln7y)!}sEora^T0>@32I`sfFZ>`6vUgZ zmF*@mP)_9JgtH4!`ND~-+}7xW4ih78my}0FGyfQ#tT%`Qo;UwGn%zb%Z{Q&B9_dYS z_(Cu8Z<mcf<^9Ra8@kb7@j@UB384#g0km5Mx2I3%@Tbq~W6N%{4{zCOhU4Po$I{AY z#$i9*ejOSKyPdF}5$j0LsPaf%m@187fgHa0ND<skk5Hx+Sa^ecUp7t1bi=#t^@HwU zB65fYDpZRs*D73it1s{lKr1aXFkWhC0E;wKF`U2dc898Ul(?6>S@wQ|C@{?J!4*%j zCf!&YAMC9KpQIam<bxw06#AlhB@%7z8fZP(wQbfbZp3|D?v9U`svMPgR_12yhDA7= zUcDjI3zl8~SAt=&%M<!i8NNKJBz!$KwSCv~kBv7hQ)djNTBjcxb%Z=Mv)2909IXfQ z$Szm#M=c@cYE%y+7l)7HK|9WmDbI|JZvAADW=D3JWi@<^D0WFWV2^=2l8n7QT!M6q z+i(Vri=%j~F|cqpCZ!Di!-$K-_dUQc5X}fg+t8}3j}`7^a}U9hkCrRK6z+NbO6JHA zCx($(CG+5k@^yHv*6!Ep^W2|;G3#ex^{EVkzHW1I<L(PQB=fLt@Kb;X<YR-)Z}ITp z7kfHs@Q}>a7UGt_G;Sefv?{j>YVi~Eq5<0pv8Lc<r&z`DYknP-Du%Dw`5$gP?~?!< zi{@~RgxF)Puf;qODC_!Qp5n6J9G$&tyfV)SsP3I@y5eXgymV_R&^{8+r(a=RhKt_X z8)|a(;N3FQs*LFaCCVxBlFagpSfV%wKSz%>{OJAjX3f)b${4(=Xd*w`FrlNx>&`V^ z=gb&|KNn7ZJkkH-gQ@=7(evJg;mFL9q`$g{>%&TS2{~!)UVZ8H)(KL93t4xpml`L< zC{%=Ig$<45WNke(l*-f0xk7(dAQjgo^kpHw-xdC&;q9TKh}qMOR<UB^&LsDf4Xatg zlTvkF!8U}TSK*k#*&5C({tDLDmpMS)`yhkje#08oYLV%fALDhM7BcLX>%_pAC1KPM zd7tElz>u7<c~u>bBo|oK2AJb<mssndBXSp6t63R19Dly;+H?x>`^~J;akRD3l!oK2 zjgBfDacvgFU|XIy8%!%+{mt2&XGY#>8273+40{V>pV<*d8L6Oli!%`+YPW!OB1UF$ zo++YKOwtr#!22c~!;zU&M(ePCvSYvT34e`a3+Do^_Hv1}K$F7g*jnZIqJ*ubow}<6 z;-|xP;b2hRZpvz>dkKq|*%8Gb1`&)OJKX5~!%y0c+NH^OqZ8UXjB0H*#=_JZhT}zP z&18pbL$*9_8I=j$4zFF+_b*oF@WP(gsT(FIk3O(;<W3)bGHwv4T0`yT1az6ay6Rz9 zc?LmK@7%TEm3gwOU7xB9cKr%LIoy^DicmB{e{lUFhE-!I79U~>xvE!7fhJFZ%u|YH zTHeF{`(27ZhB!x92)k}tbe-WJ$dgdUL6s*eb-bLiv+NqRXz$CGs73ppEZ-@AT-NwR zo->y!tNF&+RI+M3w<eSow{AW9LTzE0%da8v?Rc3p^u!cFX3qj5vqhJgzQ`;gAeWOo z$$Ua8O}^y#6jL`D)fYqYGrqzodQB|}sc4C;51vVQ1?PQrS#Ut(>b77@fr%DhmKYM& zO5lAv4R3FGGo{WNQ_e_Y--;G{Nlh(Uy}lFld_wy>?E87Kc<-2ih&l{EMUxwx;taJC zo-#c+<qABKnu)ryCvHs-5Vx4LQRWDhznt%UMmbmh+P<oc@>(I{)rzrxU`RSHNNaZm zV<GFPvi7_+!Usx>4?QmHn-!g4ZM9Eh<gPn-|MrAiei|)&1{=mf8NYK{_?b=LANBGR zra}7SZFt#DiJ1&(G0td01Xn38zUY(|jYkuc*i4RG={FOU*i4eN?v9@(>M~81wC0^k z4<=fO+tv9Ya(U|C<cuVGJJI&4$@@u*E~hsX?Sbvui(75c^mLknev2dq5m0_oGD~db zAliXDvK4wwnUleCpQ8QS?11QLv(cCtje$&*at1TwCb*?E3N9(FN^Kr)8^6|a)&+Xj zEw+#db<bl^BQjNf$ukgz^|J5~T12MD>Ir}U#fbE*`#EFDJb9)OLWbqlvovI+b{1YB zBzKn{n9iYjpu+Qg0+wVRd_Mvc^BTCv;%qOGn3(sB<tySK&`R0UqH#VMqG!#E3m-k- z@@RT~%cJXIkG5xRmB}|%fQ_!RxB7HGj{?#PX=J*yheBUNYr&GZJW;G{9Jqp9yOl?i zYT1r<c>xwb`omQIx_o)X@AdFvTR#cvb_Jx%LF4rgjzs5eD__Sk0o}lvqXMt5W4O@t zJp!H!h9tjc0y11dCIx05KbQrH{_rJGg#zZ&`LgSqxc+@0-!^j!`7CdIu9a1>b)~g^ zZJ*?wqd7u~ndF48x&Qs{ogc-*#&ZQJFr-Ogj18?5;AThaG`L}M=kv~Tm=5+bp|R&& z^uS(7&Vpq}T>(d`v(mgRTvH1UE@?6tw(l}srb~Ef9MqxkMXTVEI}s9F)ffGpeuoPX zO>~)tCGNhUTkh;CXvTZD1tOM4W5H#vJ35PA_PCQ3Xs*vEZ>hW?SWo+$PClE&G<rqr z5N|g+&?4;jFo{LWx~=0Oi?DdYVj9b}phYMzS``vpl4UK3tLEHzEsmWwu@v4?*x{o7 zVqdomG@tfxCMeeHwG;AN9Oz;4!0URzi<}QayAT$#h>fz*eb>bf<zT&DRDpk4;zSPn ziLi>p+v0#FSz(+%>|<DETn{P{F{K6Lx&3mrOFgz5cWp1b-9%|fYG#y<yR7YnWr{}_ zHq1jKjE{n#BxkO{$r_~mpn&($CXg8%m#)%WXQRBKnd3^MamLQ(k$8P@(G*^^=196+ zI<EhSJdmAiQ15JjMA+zBAx)j5>SzRSLYbbSFAiQGUB(Fq&psv{ly9WT_~|0P-xaA+ zsk2PKH(9&>Z`Y49m{2@N79DdV#Z0iI7+Q2p&YMy*#^Wbt-l9_%HK;km*@{=z{EesM zV$N{F?QL=QQp95hOU|&V&G443xW!LCsl<5Q&;nj5)Fk#_Yql;whGt?Ec?rjYBS+dg zEH{0DVbm>};fyV(d2R#a{vy_84n0BRc`5{=4E4&||LM!OpG1G=SHUX&C~BotT>kk> zpQ-BTTlv5L{`oh=^{XwxrTv)FKH%sYWi9NsRw%Qs@2l-6bZ27kO%IlOr#!&J57KnK z?IX+^U+b`gE+m@wp6Uft?YjCCa~b|&owNv9Sr!&4aTxw!@jFFJAPx3V67{GS4mpr0 z2fgeVmL`>5C6|4wLNFD@rC8-achnK8Zu@r$eZ(Zk<LSqw+PCqw6<uvXvSWjMj$`Y! z__b+M>!Le`q&G3B-X7L9^^-aviM@8;2tx>%6K8TG$IVPD&wdnPnyCO=Tdjxxwmh^} z0=?8Z&WmW4F84dKt#Z%rAOoy%*TLL%mI+J$+)W_U^|VLLfM@%)aQl8ZaOb$lI6HUW z=WJoHv7tD77;2PF+zl*qy;oNSD>xSmhg`<JcQ|DI?5T^YB|6%z8~3=UtYB(!N>O$& zvT~~u##J{MHCy$xP&ZN1FtXTNlzgqw&gh2<!<O2mHj6Q*o4{Lcw^gm-+HN<3=j~PC zZnu}K9<Mh#0Wr+M-t-t3ACf&iRq%IYd#?3$$S$vS9{Kcr$QoW6wo3?RJ_HElyl15P z7@31!MeCOLX(tQ?oaq7}c|BbaOccw97bs(S_T&Y_RI&0{0C0c()(4!_y2S(I<mF(+ z1>@BJBfDI3WVv-9I`=AiY`~2a^<R(ide#$r|9}+?Qe@Vf7(O?<s+3eP7!2(pH|@L` z_F;=HwTs}&%Bi#wql$@McbE|!A-o!P%Z<luCL}1G#MWy_P^(2Rg6oK0Wu&q`MuyUP zgeC{jV^8}BOxri?FU>kEnbBA7Z<z1gGtidq5zVwB;19levb+20=8m^Y=AO5T=B~HO z9=_}n%$x5WnU&ugrSo3_*kHH<vB7Z##JO_yWmD(M&!*CqCx@1c*CyK4wk<NQe4B?6 zEI2Q3=Wv|f#<FR98_%Zk?Msa6+q7wJpTYm9X8bOBlp8mTtcM5eU@(RsoFh;6%hmr} z-DCT5q7kK?qd#$U^`iB{c^3?IuIhE@c<fmZO)2Vh+sjtri#{(CFJrjwX^Xa^>>ai6 zU@;jbEDSu~OcM1XZ8$BXCnSA)&UonArhtl5_flK|jnP4DDQTPl)goFjFYV|Hqwd5+ zhR35n%%d|w>@cV64i1;2?qDz896%;t-Ew<b-|Yi=_>Bv|{IZW<zH1Q1xIA{6#LJqe zfjugp9E8eC_1sjyU)X)PQiNQSI<)nH!#cMzH_;`Uu0fdHyyu2F8F<`8W7e{dA7fz3 zTAsRa5#p+9oZaciQ91Eo-e!i*gjOxNHr-B;3+e~@c37I0sk_Gr<Ku9y86Q<tu~i5d zgmI`BYVz9n&csW#i)HL3fbOyQ@_Gs88rGm(tA8HlfLhsVN1lsn=9?VWuS+b<)oiV* zE{$%G5A<fK?49EFsGZp@N1s-M{+?>dIPtpniN>wo$lAEYzV2{6zOe1vjuO^VpBUrK z)1SlRj<2*gR_8L*h90*Op)D1+p}|1a4GZ(s8gJfifqSSWngOE~)j|F77;3QB+!5!F z0YB@_<@MY>{6qi0s(-{q6h*(`Oi+#Nk9qK!poM#d4bq{PQ+>R2HI>9_!wBB?eV5su zoi>X*=dSTE#QSBQkt<}{?BIrWBt-K$tSSGpu52(!eqGllI|AiX3KxFK$e_~!%<>PN z4zbxFfk@tT9yOb4u8zRM#}xjo>K2DB-BkE);N6q>F0-*#mpj*xX({9I%4loVv?(x` zE{xSiH%5MIi6JV9zn3lF5?`kYE}aIEV8>xK@U3_^u)Vr5_fsnc^5RZAA>yPS&MK|E zG7I-nUJTNx#I@CjJB{BelIu(=sK*QR*Gwh#c*WB)b6C5o@LWqF7Vw|R(}|yE@^qI? z#rN~3^2=Q>_O6!J6ql=(va*zT*FlXkqGS1@NXHww9-IjB@a316cCu9EM)QnZFKg$D zhI^cRzU-PCA8+}(!9DTA2DFQViYhOX7UL?*{CYlF>f0jPOW?;v-dp^h_QbfyLkq1I zrw8whkDr$IaT-$M-O;~mMXAu=L!y+4hq*zGdr%yio89ViYgsLB6;{;O+p2034Y;+$ zXL%?qL<j3r(R!lngWvyH`}a<nJT^*tWs=$UvWGP{T^8+7<p1^N?mJG3GCv<(@vEz% z{$SB~o^WxKwD&K*S$0g!I|`InW~NRb9knoZc+{#V@Qny+iV>yiiAj@TiGSSq)KXv- zRRq#fAx{>=LS;pKmk6cGDU?>kce$CiR`!@jUhs}YTr1tm19Zi>8WFG)YecCKm_&Y8 zUYR?Wiw(Jgbq@PFP^(UTUltPDuj{zKs|I++CQ>VP=9>x_rSnZDvmU1Dh`pN-xV6}n zz$+Fh#gSQ8nY(u-9{zkDv{;LekEJZ_&1L0ZXCT61SBt!q`0<x%EAkfj84=f5o15lt z=`8G_w6jGR1j~r5m|5(iw6@*9Z*U8|%%1gZii>Z&==MfCZRINU_*HRAdXR<;SBs#1 zWokhjTqJ_Js(M9`hw594ppPzz9ibvU#s+~F+q#A|Z$RB;{NkkDT?Nk`?qs|bDY56& z!qDV968avYDY)xPyDueX5zgC=7QP1GQCl`2gfEp5J_!~{{4v~r-V*#()Cgb9sIX~? zhH6$Vn1yMYG27}Uf+nvNZLD)!;_qd9cQ^fE%;`Sj`(<<FCA<x^@No}2iKC$~x66y3 z)P1sxzl#<NQ@wfno$kd{FVWmDJc5yBLn86?kDsE-Sungi2fnRaGt+ux*^0~V6Ra1G zf=?IkrpwKJZ{XvP+o&3!%<bKzHYq1!>|~=dyE#>`b+6j4%*N%yY&o&ow#@RKTwdnm zKZhY8Ct{QrJ*gGtYzR*pFme(`iTM*a@XCTj;p1y5?%S65TNeFdZfg9}@Yw{toRiFa zkigaSCFXr8(RW;LoXLSulI<nKh0ozN(AvuMIjMe!8yRox{&?~NhtIVsnbl5l;mdh8 z)k{f}O-^Ukm~4>Ocu`MQ4=tuiAZu}-u}NY1mC}WnkZ+T+Pow0iryOGmeRYQ<`es{3 zM_XyjZh7JIr_kYEOs$#I$UMP5ckDL%YT6yP1zb*UbNR{hcXjV@oJGy+MZLvqwEg%= zFK>z0zSH^VL%F{mykt~M6Nyt$li?FJm_4VtPLQ47NN+m>24z3dnH>$5#LSS=7w1sX znIR`hcX=~waR%S1dpCsy@uB8ZaA|LTd=5SM`(}Mu)YTGe9tLy8WnPvO%X#aCiaPwH zB~-fDyFN6_;K}b#8?JP>%I8GOgWgCFt*UKP@58nRe{m(;d|bb{5<-7%(O|%ElwkM} zaBzdv^aIu^3e=#eO^J?b{I<LiCZ76UV6JrPb^dYSY?*b=-Cx5(__R0;Hoz%ySge5h zGMjyFD<Mkr_y)Q4@$!$amRa{r@EBir9|gC2T0XDi>+Z8&N?Uh<+!6idjm>U?k!xFg zoz_<3=fG`bZt9?ZJY1C>cQw1&r7v5>5XE#h*8sDhu_LI8*glUgG)ZzplS!7~;B%9e z79A31^A?W(?(_Xo{VB`Wjb><x?hHQ%FKZe7{ch8R(GL80i*-c?FD65DB!8}G>!Q7< z_495t1MhYOrQpTWdAJcxgfFvk7V{z~?^qS%$9aw}3f4pnt1F&}Gw6?*ZD~W<|L0Nv z^P%70Kg!T}d<8am=!?3AsU8%E%WHoiA8R469LhP}3fCy-P0{ymD$0`Cu2<odaVBjP znCu8UQ_g5oGWP>F$=qEES}(9k#klde&0R|`RJOTsV!h0Qmm1;bnSrMyJxu~-iAhn~ z<Z-usee29?HfTy~`rNgm9Am4rs+Z_f4cubrm8SoGhay<Rp$*N_RB|^CmPQXd*T<Jb zu8uHS5PX2sEU!}do;|^f36U>TImtZ8ma0XSDfaV~lkHd`J?@0SnsRc%>NGS2PWfPd zo{`0Kc&Q9Wp3}iqBFBR@_BqRDEVSI8xcldI53rbs-;)$0!E;3HOg!wkxI4?Nz|GUz zX_|I{M_%w|HMSv&c@g0grQ`GoTvmCg*weP<fm?MWSiW&DryfrUClBw+Q}<DfvSt zRaN1lQOB{A2~lCRn6p5F#XJXU)t$i13F=m-GbaP9vzhZLOIG`I=i~)<t{m>HXhyj{ zT)NO!%%;)GeT0oGXXHxZrk}XDb6BqG>x12RG$&O*TrmIMa+M7&<ut_La&^U!gA4YQ z!wR}GW+psUouXLtfHMw`Oq;kc>}8%y-WJ@dr<a^oem=zitBh-2Vj2<p@bcFa?K-SI z-4MlI(=-!IO&u29g6J$K&Tn0Utn&usyo<?GXyUta$pxcyyO~ZB^DJFkXPZI~;;4I? ztqE`Tgp@vvQR%blEPw8+jwC*rY5M6-ga04<YUHQ4%}H^@+69Jf?rB*qxOyo@EODrm zE{I(5fHiG^U|h5<h#5z^7F#cIYa+3If?*Vyp#$Gm!H|tDvsV<&R2Iz83`bQ>6vu3s zKVHhVv~&gC|JQ!L{`uc|c23y#SN`w6fB(mJwIfNA>o9*$(e@f0DN?_@(0KFiZ$5z_ zMOMYeID^RQOo;?R;D6^Y8VJ_66$v~Pkl;o~U|}>=hXar#R9vIK%V*}`(~0psar};J zk4G*~1aL&(Cpt8qkVTYUe#UW|trTk<w@3v*HO}9kfVM*a1<$AV;wb(Cj)<UEwsCIQ zd_A6e3>-Q{d;@pq5x4IEUAhY|ZgWoIYKhD`PR%(a9qb=^t$}Ihz}5-v#O1Jcx~t{D z??=d!?V)iFb>*$&_bYrCyxusA#Vwu5)Hr8+LY~e@0=rz95R4wXf7z%5d%iI~1AG3l zRRC<YcbzHNs&Ib~29JClv*G<3ljJ=NMy(!J4<VkJm(j;-u_Awb)&hA%ORbPM(AcP@ z+RY`xhgr$n2&4tDDEfprprwr}#?ISj*!{u+cl(zm@bSh9l1Rl=<#J5LlGx>-s*(3{ zRB^1Nu%1)To)p((!Emz}0ag3EJ0hwkoiRZQhnMpO_~!VjTG=?80Ow6Hw}7wYSR1}$ ze=(BblKi~|$(gT%21|a*B>o=6_QAZzGzr~#iO@*DBQ&tqK=z1FTaCa-uK`L37sxco z3d82D(gC<s-i#f(uGSj}?^gN?>*jPo`{CTiOm<u^=Inv{dLoNjU{G#SXCEvS>(rPg zn0v`v_$eky@)~}M<RR}f=yEPB{7BA?S)`qF1xsWf=h(sF?0JV0Q1>0#o78-w;dge= zi3g?$pdu8kOm6;rSCmYCRGj-cSEPFySFC$j3fjGk>)pMp>tS(|UW?e2)YDtb@TyU3 z%JJ<3#rn3%wfwfRB&`+EY8M*#uDC4mRT3ofO;eH+lS**VH`V3nUHea(IhCZiZ^AnQ zzA5jB_##c0p>#ZvE4hd7{P~iO>GTyIv+EoFj<!31JNloF;JAu^|9O7!FYLmoZh>%n z-~gP}JRE0Iyu(HJyGN4FEf|{4xf;|ftdTnnPa6eJzcYmPd49usyrz?G>bfm~GhkUj zV)umomri7SAa)bg$B(CfIbqn*O%2z;Z-rdstzDxYFsRUMAzWr0Q_(zi9^PPAwVP2b zFJQZHt81ep+TQrY?hkEi4S9Sf)tq9%ot8&})`J!&W;n6)dg9brj)cBS=WnE16cq+K z;7)kVfw`~c_6n(%dzfzT<XHRb*KK>j+b6i&8utmdFoHENk#+m7c-m&g@`x<k_<Vig z9ro>^P4L%!9_1A~s{dBZpHys4k}qz&^YlwU-73VvE;w|@8Z_LN9o;cA5;LHaH4G6x z*iLrwX^@!_mo2q}wl^Lp-mX)|rxlL*;q&35X?X&4>o;D^f>977r!zaCr^45GEaBCa zG=D<jFj6I>*|bh4YT}qUxYsj*?M@&bYb3@FWy5&S7;o_U41aSdL?I1KB_10T)6>tg z-1`&1k#OE_Iy6FfwwO*yJcsfeQR|^oma(>fJmIW3<nxP~e~pS}XVr@_9`m*|=A+rw zPNTW!&K^|a9hmTqwP{Y;{y%GeSk_BjuJUJ*cK6`hF{C3g!_~pu=J304@GX`(h;%S( zI*qWvtm(n<t%*&=Gmgwr0Udge<vL0F#IKE4WD#>726>Z=HjZtiM-S>n)M-wpv!$oO zVsi{K*mRrF#KUyPe-78Q^Ig7?@3+ijm9t<&zrDmLkg8k_c=n1%T-AfrG~!1c;rL3~ zvC&`2wiw=tVHhoRvWf7Mt8hRuU(?wFfHFBCjb;Qkl5EBQ<B#OEfyNtYBF_OPStEX2 zCCSG0>pVQq8`o<*UijBd)-;D}7sv(h{`Nq#K;f9YR5BEPvob64YUlH}N24m-C^+i= z%%6|A%RU?ysPmV7R<h=CO$ZiU%!?*&@C5OCP<BXu9t`)>Q^)6u(^HqvM2ve^L$koa zCbLW!y;riR1ydo;=$4ik{J`zE-v$C{g%6jcx7+Y8_=w2nb58CNof(`uazrvr*Noxp zbCLlY0WTK5tcPMXzO4KDISIfvzIxFP9=+hcsd(bs>&pTBsg(cw5BzQ?=b7XR{$W<L zuSceR{Hi0e+>2vg-PY!%x)`SSYP>eHSl6B?R&Y=If?PQz?T((6J$t$#;FS&qv2;nA zDa6*<ulGWzHQzSOcq8-nv~hr7qjW!;bUHJ4frirrDwZ)l;|@5}L#o(JOY?Vc+T9)R zzF7Fzrfk>I>bY<+yaqpTvsK~#7!YF@?pf7V^EKBM8?;S-t$D#bI;bP&QsfI$PL;kQ z<nus?L<9j<4+g`(b|LEqV$aMZz$+6A;O+%lPPqA|Vuus)$BiWZdQQXf?k?$haF$&x zQN<2h+9|tdv0qk)bY}%>U<lBu%lN|41T%BKgp^}_;OdS=(i)<tbEk6zes(&`ii0s- z(v^ZytC&_`NO5>v6<eWUfiHcZ-(a()jwc>7R)oX0St*7blLZchVOOE~IDf{k9qVn; zA^HToGZ0{KpXt#7Lv886a|J};kvip_+tw-4M)|*Rb+-7^izx`LarL_xLawTKLe5O+ zU0fk|t*7_`ONHdJI@Lez!k;gC{x$r9kAn+P6=oS0n^jYj16XXGU)Uk2|HR<z4~Om8 z)O_Ec!>0_%m+8}j&G<H)%NC!c^IABU-aoNVmJJ@9*^1{4xQA%i+`^CeX>6=NaL4<i zGl^GB?x_h3%N^B2Y}q>{#_h-lp79*N_4t_Z4&nmtIjD}kP^Nz{Gf#}>VXf?zqxb^H zFeIKujb**@JyUC0+n1J!c|vNvtmWM2E|4|6Qnoo{iSMjHPnlCWM(UBfg$l%ulH~@= zS6IQe;$*)5Zd-r}Z9U4Q%kdcoe9MgE*ZT`sO~A)o6B5V%?Ay*-H3fJU&B0Yyy=lN@ zMI7<53sc-s(p|*wbR?A#?W#(O_PTP~0c6MKPOKr^LVAoZ7>_sEw2ICf&Mg2kzPU7H zyCdO>f$!G&h3`Ug6HkbK9X;@y*!p53;0S@oZ+NX3u@SBzag6M16Fy?KqAu^<KnrJq zV95N!4s}ysLLi2zkM;|TI9-^33n|;>)et)Ac@zlanD?ap?Qybz`#+ZcpHCwH4HqcW z_jW?}pk^9nUW*EEAtx`e=(L;#n<WK)eEneT<pc<piI!GoG%fK;2MlPHpg)!oj+Oqo zVDs0&ZTkYk*H5Bg)oIUxJ)%-J$MlV4qLPr@9HESl1v44sDyRTq8!nWFrQ!+2l%ZV2 z1$(X?yo^%WKunbG;3x3d6+dXG3}NLhjZVXz@zQP$tPw{Y{xFP!&cjKAiF^1qE0u@Q zf~jZmHl)v9zGk?<qic`k;Se{q9Nw^eVmo~I+-705z{N&t<WbAIR?GPM;Pc^!eOXC9 z)u^;pwk;zou<$OEcUK0~xH=)U>H`kj3h~FjR<ms=yX42ME%#(Vy(gqN-FrZs{9b!{ z&wD8g#j3z=dYBaJY*L|IGdQ-xr&qj9s|OREYZo9#`S87e(!Uqfe>pif=sq@i6)aaA z^L?1Y9#d$Syx44`jMs&kwi0+2+bOgCTu*vH=*=)S;WLxCgywurdx|sukgCA0WH|MV zs7048hk8tvbm57=HvFG2QvW@86w=MXqFk)On=u{FA`fj!@a*M8HSeXhww>yD>zBdJ z0T?_SaGw?1j=0*@1{=%a8|)=J+XnmW8VRT$xJCCU4C6_`ZGCYYP@h|$RDW0Rf=%69 zr-=#mH!Kw!-D6p_E>_=ICapIsQ8cvm$BsG~D4M?99lojz%iUy6H~)GW`<qgM+|D%} zw4rYP+VK{<c*O?W3)7_W-25*v3x0eM8WO&=>BHylTiY>NT6}FgK6a%GP8bhcTIeQB z6JfENm=y^J4hUi<9`sah@bP@fHC1@qz6K4SLJh;e72N&YY5s7Dncfh0lrWA4%KtGs z;V_$$+ipNBj9S{y_5Wm7Nv<6^65IO}e_cQuno=p9r_f%NYteOopd&~|NbeU6*h%M0 z4KXlCYGLH!NL|kqB!7w5oGl@htLve4q_*eXLvM}B)LEIJ@72gwMktE5RAV3wv4CT+ z07(L{-6b~;!PM~t;Z!w)58$AxIu^nM9<#QA@ClN0e3PEH8KjCx(c5rcBzj>rw4{p& z*>RmWo}`m0I(a08qUoiSrnZ|b*O&#s?Z%a?z|rCGMve1TiWB&TJ%kY%#bVvAsr6k8 z{Q6eGzk%T*<X|tX1_7ZlDemI@-4>^qvD$D2PZRV!?5g59cnx7sq77d5v8iMCpL;|< z(C(Ue)7A~9V@Y}>WHs5$@T>1AO`jn!1vOqjZW6jWv&s~(Gzo2pzp=Dk;a@mBgieOV z^5iWY$PMGQ56>_#xOh7T$MHP&=Ys2sYP5v~{a7nU&XpH@jt@h!=J9Dr=K7MH{lGKc zznAN~vDmHBBbM=r>%YnGm!dirq6l*T&n{p8`>(w+r(;XpfB*C6-#@B*E7JnDr&Xe9 z8G9Iv{a?WLyTO8V{CM;SIM(6tb{r&1$IYv4^hS2EWZ-pIF`2`#+8vxdfBo36*ZXh- z2k2EkY>c5&Hwa@GxuL6EhT6)bv9uQIb=W|~ITy-*4CU(ugAU^_g#2wj)P_xKT*8R* zA)LO{?05!MKZ_sgm5Y^eJ{+4z(y{~Xo12cxGw4X&LzL&WD`R2ZrlUjht_@6@fv{*J zE(%kFs>modFS`h_XM0=;fX2)8n3TJ62ZeJ|n`y@@W2{l%{K%wdKkK<-ZD+S4?%_#H z9aG%%m{uX^UtPi~WL{S+P2v>yw|bx?Ms&J6%n_mMRvq9R#<lMg^1cVRWJ3BDB`{qM zd*-t5#%X40_GjFe6_Br3AMqWFCl_UD<(4cwo`yA<2W7?PEm+QRMb&zV&R{1*bfR%0 zmeE)d>FB#iMD%5(No~snmMgQr{=iEwO#d&nxG!zFBwrQC3$F`K)(ZnpmQ;wBgGr4A z)6J`_#P9t8#!Fq$Gi|U9UBoZiUa?_8k&m{-mIuG_9t5<-`lYjTs^(X58w;o~dR<#{ zXt(O|b-V&sbP^MWMZM2PB&Cp^kUtz@bjeI+*?ZIl2ELOP*|3KP4g|z{d$bP-df&!2 zU0Jn)5h+xnF%lWS`yNAL%lN!b&<Rd%Rp<>n<Rq4t!9k77cGi{^@BmA}-yGzJdvPjI z7}014!Tk-2K!bxPczA-BuTa|)-pwKC%Z2K=VA5?pY)c|8emT7PB;QIj#z8Z7$C}SL zyFWE{?}FN$?6I9S^A@II=g2Gi5+@i3EuzjHLE!eG_S7<CUU0`1k$|Vhy);A?ul4dG zh1UW}_`NQq2uR6Cd|sXip?g``5!CqQ%gGdQJBP=rMsKy{0W6Pg<>6k4)I?s~c?~Ov z>yB19bDVfsk<C*pj@Chgfn?okC_==!sA(u;uBrP9x=3Zsmw7|94QFj(scf*#X`}~j z9ccbk!?A6huB<t6fDN1KT@2f5&@0|x3kJaCeHd})i$z8Vdcn`-Ee(PP8s)7k(*-U{ z>hi?fY<|9DF`;MIn5_$XPbGvYbRJAv9pud&tX;^fGg#XLZ8SVSVGry|riFMe>jOA_ z7~yLc1*DxRuxLIn+9#~>YwyM!I3I2F`-jV+dC18BZ5Omy9pdUD4v}1E>Vg9MV&?>$ z;Jm^SZW)qV^h9-N|15}3o(&4_B-$Y8w)tbxcU$CZ@_a+T<q$B~FT`Hfyl~w=I9%E% zT!j4$B1iLron@x6<yL0qP`i*6-=1e6dLFKM>2RHK+6rfVOxum6au_F+*7GRkAYa@k z=KRKNOc}6Ptr7_bNlxAZ;}pmzIzO#pF9VHO)uqf!I?xHKXkX{6VN`kg8b0>Gb#7Ya zdKDH^Q~MKLA*==GReT*?(JwM{%1u#aDUa4{RnQfL3#zLksED$9%9C|P0?DFF$ciM} z9N0P0RKD@-kE)vuYA;bY6ckiQ*nM&jIgU=T-U3pcHr1}jz!-`R(|K@p2z;+!@)cqP z-m5yx($NcMPc4}S!KR!&%)_`7+>~JYk`~U!iMVQVBVSKc4W2=<QpJ-TaUjN`!Dq4d znqWI+deA(-P15tr9w!xO#{S8yJZ7?R!gHY{aJAdac6;VU_kx-R3Y=!eg|3*#*ilAe zDk)tFnM;i@L(j_jcA<HyK(nw7Ds3UwPs~jfSBzDaUVl|i2@w_5spd6HSitVEFB)$Y zU8)}6dPpAFbBo7^a;wsY9=K#J=OsXF>9LMHv0p(A={X-eRZEJ-TNwVjI`DVQ7PX)T zPasYu(-<x0mz%{$s13q1`rKK<4stL$tT{E!g0fFIQu}^b<s7&N`ZRXbrDEqeW|rdE z;gD`!gyjh91N~KJR4K<DKGLm&Z&87!Ti*sqtqK`?;NxX*;LG#Ix4NoUrnN|@WpM@? zk~|*mO5TNDCT~iklMpT_qe8=!A%mOB@X~4>sGBPlv}u{BwUHTR@gS*N1W9d5^LJp+ z%8+AJ)yQ3f-*-OHn;Jov%c{n}2qTNpB9mJ}vDS4a(uFIPppSzbXAZr^ZoJoF_Zxp5 zJ*>e1cp*ybm?<~Dl(^=RWO^V7`WR#feTDLmz|j>1f@MH}zrsv-G9XcQaWeC~(RmaP zazfe^&-wle596q+AlOmJDxHrP)(+S%SfbycZ!XxrWU#!RSDG(J7_u~G4k3Q%+74_y zeq$ow_Z&UP3_9%UH>}hc=;%g4TF(42{AjL3vw9$$Z0<^%n`at38W|TD(9?N4hZlOH z9TA8NuH@ScBA7S>PL57U2G8Vl-JO{u`Da=kUP<RXi2~uQQSE#PsbAk3;Ww-tDs3NY z7g%t$l#p)ipm}Tft%JX4?R@bNr;dF@-x#_mwCshO@Lrb^E-z)(D{*vi39C46nSF2% zYx$vl%BM2=X83OWb^Kw<D!R!OT?v=W<xy+$s43)P-*N8YK@JIcpsqbJdQ(1Hl;3u# zOT%*>@rfj@qfNh)n`QmW|NQgk-}$a#^!x_4O<k=$L*Euku*$tFJ!Op;6<SV_A4h`g zBeKuSx7vBb*_s4Gt86$fS3L-zF_oL5(KK*gCqpTdMTIsdZ-^l`yzy4h%NUDW8i7E> zY*7Y;<#-CuKfAALXp$lP?oZL^r*+j!TfllWKZM%IRlRZN+0*X#obz;0K_1rHub-Qk zM6A~>8)k6Epn-TYLZ*Ka&6rBGei2+L`3SvL-YthKiy#w+X>{^>r~SOGbYA*4D}9DP zeaG3?mI!mx>2*-}I&<0lv2J9wIIsJ%(K8xWuy7a(RiS2A97`pEGsqMGkpZ82w-}VE zVD22^{7h_6C$sM8&5DS3td{(cwUo<hj%iC4VVp-58i!@|>LRM_xTWeoV!)<|0I6dl zeCnqNZnRs*UhQ}olI?mpO6?qpEuVS+^~aC$<$r<;9=>a$0^h4Wm=#b^^l@ULgF|s` z8ao}Oc?hij#La?wcID^kPO(N~*QRduu#{;-?bd6;%f0Ixj`t{isYIK5SWcd8ZyLIX zY-=H{^H?~anQW>h_|o7lqB@SDGYE_M!sgnb-gI;b$Y$dX30<thsY&7BP5vDDc3=ZT z4Y9iwiw_+mh%r7ObrvbhbOd_d%1qpXs~H^af~X3I5PKcR^-jU3jV5!dU@=UL!}PrL zOnc$nHrWB*>&AO^e83{#0+YE|*amOZyv)Z^D;4g(rQ}{-YqLX4*u7+1RQ-gyIWRaJ zg*7WIZ1D8q^d{9eFZwt5UI;oPS9;pdYZvE`>qr&=ogwVzS{LL*j@!|==G85=&lRQv z!}E5AqVm(ug&(an#s#Ubp28#WE?whlX?W=_g<;r4bsVHQS9zQWQT^Gj_*HgCM3*lo zoL!<0YL9g$Bx!77Oj^%zUUYUI_AQaKuF@Dwx3Z#nuKT}}kz{aSD^5j$G80<W;>(w+ z$LgCixqr#{daWauivdW8LG6t};c*~aYO!lb^P7Wzh+4p_*^V2bII!_VjWlPZfFD=h z`hp~rP9eZg|Ic={tjKa4(fxcyFJ}yQT$QiNT3VL9(0X>l3nRE7(8vNC{QHiGbK=p1 z5or3{>dwlHj5v?^UeSUrxZi22wo#4K85nBPf9d}EMQ+)ksD->COlT}Mzwqe5k1KX{ zxr|nWmUS!>H=Cc}@Bz-gLy5rY%jIH15BmCoU6`7w$L(J?p$cp+N7ZJnFPKozEm}og z3>=nN6(w}<c?dr>Y$eMnC<p>!Y}m;}B+bq%B&90c1vbzq=vNDo)ZCtVypg!c^6i2` zPy^%?_GK!Bc&Is2Kbm;~*P3Q425Ptj%2I)}YCGjDQ73FWgiuf)sgmOPc1q}Jb~OaH zK)X7G9~Wm0Z$-K<h_NfXS^3cYslhc|fuqi6J^X}!rq!6mg-mlA0f%*Pc$S28!P*mU zc(P^MGpyfjs8+)I8Zu+Tv+OBi=B%IXBoSZ(&M3fnv8+}q{kQgnc2-s2+oI$J-LQ~j zJ;7Nn?<8m8q9u9ao#sjvw$d@0JF~gOxgOq@2%Sha=+c1b;e*6f;Le6W7MGgv#B3-A zh?C3S6*iNL<HFdt6M15DzbBn`$L6(0$BmIYZ)BV!%3ybNl5S9hTFn-PZz#3j3Sr{~ zF1wcL7ri2#S=E>FiNRs_e2$9vNbTXt<ayH2LuCtEfX1nfiLm(jigx*`6J)?v-$Hgx zv~ov5&9+<T@c`wNp#igg*2;uh0F{D<$bc?fkpgYrN@y7_EFiAag-@$jWKp2DiHl}~ z_jN^OX9Tpaq4u()9HHG@rrC^C^fprK*}?7vq>}bUXa8+hg)Jl%I$Ju9Ze}&%X%bC$ zQjkd%9GM#%DaKggfx3m-@J9-ZUFtVHQCikwO20o(<fjYNF~PW$uYeFY(Ol~-D4z(r zot>&Ec43YuxKcsIXxLa#UjssY1)fEi#k9<ai*{FwLlgj7uLxGz+<6yowCSlYK;uI= zdxhu2ZGRxk1l<f6^MV4a7{Y|Y9!W!ybum14K)C9J-8Rc#BJISw$U+IPx&_22-=0OR zIEclsI3==KLQ8H@5~Mt@7xNzr%Vg*XQNr(lq0(=NiIcaP$gY~{)Ej}>HQ;m8F!y>( ziIqM^D#G2-f7A<wE!9MvwY`^GbFWk-@zu6phnMvm73@Ys3A&z;4U^V*r4&l3OcdPP z-!`-b-YX>|p%ExuxoZtQ`*HIyX6OT%*>{y<5TJx5GO<BsaP4ED2*^>QP%@ghq%ydu zscw&mHGUTiJqIb7kqCxA@{+Vb4OfT~p1cBCC==8k9@w<$tUVCtI*P-rmuUISJ|i<< z$c#1<87CE*i9*=yxN4800WGI?spORzR-tVP30GnFvBguXw-2?$ff?eLXTxZ6DS<~> zS(s$6e6P^Vm3tCKnj;S&d^JWMPhc;n1ye^Y5{_W?s3JH&Dh@?R2)W?xP)q#gs5E}d zR3+~LYL-I?n)eIU&bujL`#<LH`|~J$S|~MV<_0w}{3}Ci*xSR>LwezYJ*e9H?xO{p z)hoDo?m#f)0`KbGamKXvi4TvldOFVq3A^L!$&P2k_9e7d{1kHC?rBMPaf1bOb!FIa zl8W0io-2K4!Z@1M-7RZkmclMS%&wIEs!mvO@yUK`w9#J(^ZUyWA1{CYdw-md59tVf zcF2GDl9p)e;vb(c-=rCiJ|7>yyc~~@|GxbE`qPhZ-()mie|Y;QX7=^3Z{LJx$Lr(m zA0I!xd^_KTOV>mG_CwzE@#BjwFm7Go=hwgd@yDC!?CWoDLi(@2zR7^U{_@t}&)0wc z$H1@ul0Vn$@3z?AKIF$sWU2oD-@p7Whm#?jRu}Ex%LIHznJ<;Hz8bBzbiVAUukpU~ zQv0GeIH8_>-LT?PMtv+ShCq9O-7X3+M5|vtlu*%B!Zuo0+Pr9cx7}>NZd~w&f!S0g z{O$X+_tGyYf0JTmX8P_p!!mQCaDg`Mv$e(C_#q!n^9%9AVMaWb72;Fo<~zrU9dJYa zva@ivVhwd&KTAJx7M@i4LrLDtARJ>=VUZ+l>TA4)GEZ4xnOrNkmmiMLFGqN^+}ze) z&Wnvpw@1?T-Dnj*ng|74Pi*$p@@-?0DQzc0@J6}Zri6y89Ac1xdBl!w^Zc;HQJp@6 z_Z1D82-dattT@;`?xT}Icv}K{UZsRPvyghrjXcN(@JDP9{*Jxli?Xr&m25lP4Li~| z%6|1zpqc%M?DXz)fjRK%_?&q0e2l!dK4xBdpF+PFpHjazA7ZRsZu<M5?4h2>EI$Tb zmzHu-11_au?Gp-CVuK4UcKDkEuSKl2UFLv+bpzr}I-%A~AbA$%K{|H&K{ZYwRXpL# zpBo)57mbefHq_b_4ba7N+pq+yFAUFieA;C79jvZ%7gBwItmvq<rm$;vp&itv`eDBt z_?@_<qe45H&iZIi(0tb|ZF%ul@6$=*1X3SGv@h&!qs(xzN-wtaZL+1@bGWH3sDaZC z^5~&cE2MSmb{M5Ly}rQlOrzjCiyxO+qK@@+Z0xhOw^Z~3;TnUXzzKtJ&*WQBv9*mo zd8XeJXpBV5-)?Kpk#Co_=i56W-wpz~l{n)RVqVus)=or9Us;?nQJhAjd%g3eTxYBT zZ$G0IeV%?W>d3~qE}Z1Rxo#TsvmlmWU<+O#8WF1<J&IS=zj;BN9Nx;~zUpNz(l>CK z)AG#;>LZcNZyp1&#?QD96pQu1KWnun`)ut32TF-<r8Jt46y7uwaC23h*x_wVtDSzV z3T;@Rgqaz&jxj#dhS|}2=a^wwm85V|8}tsn?R0b6^jCLsJ)pnM&7TRe@_>_yef<c_ zZHDNswpAG@2urUXm-URve|o>dXPr>TD&VpSSTo6VfGuz5>H}=LoU66a%l&)6?pOtK zh2!2&KuJSro{HpfZbB{nbhjPw^l$4xhRi$-(x-+%YgJN^z|{&=uN`#N!5vO*omWTV z>l=6OPz$9EvFRh|81<rhv(tJ*bh0anx07B;%i;y>%Oq`$ge%y+T}H1?{Q`SIm}aVk zxFFm8fz~Q;1NM|3MXSILsiRm)PSVDwlodqZcdwMeW_1pgRJc<_B~gu4H1@_)F2Mom z__RtP-y837b-zs!L;THtgf&P+Q(0|AHpnw7U!5pYpy8`(rwz~ncQDEP+@HW}<nD!h z?NSTedD3~XhA7L}Hn;_q5(>#*S>JI*eQ&riD=6<~u(NoNWAHT=EfltvmyQuIcpExO zyC^KJg$A{z8wVzz9T^bq+HY<ia2#9}z1?qo){kte+nB$5Q^8}%DktB*@DBR<4nOb5 zIN|m?Q3K+UCm!B}2TnCnE#)1l$3=u<U8Rx7<S!2ss&U1Q5jI}$#FdTG3y^ycGJ^O_ zIeSvrE&McZF#Bw5OxxT+CkahMPYZ9>rj4*=M<-h4yUvf=Mj5>vEq{NIFt!<l9WW0R zT+hkuF`07}Wgw(*uyB->f+~4j(alFo0poQA#9dPDc+r%?f>t&KWs?o#2;Jlo%T{v* zW+TF;RA^OU*HYTi&;%OV3gb5$X}1fa4(Fhgkk8FOP7~zIc&5V5EV_zUk=YnKos3L_ zS*H`9<70<!rW5*NBfpn{{B#}SL{g+2LBV7XEwoPdH;I%16c(A3b6H@dh~mhuu)SkY zD8I7$CN%PJXv*E$g7nAz#Jcp-*mO8;fk*M-0rk;=veLZ^oOHPZPpt(ZC<@_hVR{2j z>(_wrz42Qfl`AueIOMXn2j&;w9@CAVh0(`P%3$OWsmZItNaZC%-tzJ?j0NP$c@+$D zeo_0jo8c`cq7$|vaZVWz1NP_)W=eJq^QY1M9UqWhr4f!2W?er#>JHjr<53tro!1bg z0{!V4DP|Sp>kTSF?JM|%=j`t-g;SwUXvOzVaj5u_&YQYo@CljDHn+EM?TJsDbC)bP z`H2w%RPXi|Trva2k%7XIMGsfiL=Vp>er?Dvju37-IGV9XTEWcJeHfR*;2JzuLIx`7 zxcd=lOVG)7#5`M1F{DXb-ws=WhfljXu>#w}!=Oyl&Y&pB8igUUAFydmm;n(#h4(Iw z>}_b4;0ju|Y1fqmTA|4W4kyB*e_3fISNb2@)v{tqazpp^6?a)RP(@_CGIHthcr)wT z881vj!$4PiVEq4B(m9eMFQ%cpPG@CCghD!x0lyT`bUaoSb|R}3QW<H)4j@F=x6>)y z&~P%aLTqp)-Fp!s1YU4TghL95yxn80aM7M7_;cQ4+qP}nwr$%s-(%ahZQHhOvvY6P zbY`Zi)3>Xq=Hp%;_J6JHWF^lpJ9+eAk3-nRuJ5gEPIi$5XV&oJIA3O_mwo&&i|C-T zPx?$l<wt`nL)Vw#E0(TR-ACbq<-glD&4(}GU8_Q1R=f8ly{o4ir6{ZI-|kE!qQW+M zzygQDp^nErlRFu_B1^b@ttD1;aGYwrdi?E!O_-t@Vk(^8#PwdsoYdpb`H>#h7T0*T zDwW@>GTTwAt}k|0X)TIbd`ZRHpTmCMFE?l1K{dV^s~Tub9h`f#_5k2YU3elhxk)-> zq^*v~Ec3~@Bpz2IO10k^^$207L`BS{V;yqH_e?e_e;^#)C_};-GW1DJLYD0X#jC!| z^aSXv^v98`VJ(pq)m5e5Gp_Yy>hd8%=Nh2`@A-EQgvx(Z9!1=7ek)*ardUi`L~q1I zm2E=pP;Un16y?&iavBBz-C-!hN2!QkHY?66LgOxmP2%nr@E%V_;FtxpvmmT?E`6`> zowKgcyRfoj=tj{SyrhgPL(5G5&hkJRWNk)#@W1VO7!Vg?e)IPklw%SCU6N}rdm?N6 z&~C!`gAGP9F5cY$Z~S=F7s>8;TCsC-2F|Y0{1AGL^GV?xCOmm;!Er6IMco_=tgZV> zzI3kw2<?L$47tCv%js(4wU+UWGGHJcW?+Xn#6;1&dj0-PN_m{&odz1ro)Dv)X(mv> z^=KjxjSEI>*XxWWZ%HmAPMvQ_kL4~Wg=e+WdyOS8<E-#g#ZD+y4hI<Y8u``0crFx1 zjyAB5kCnwiG!ztFH1G&W_LGHL0$O|<A5?t|R!|+9i}lcFWQ%G-c?qJ?Q3b}_uR&|} zS?ahX^wL3LO9FQ9;%6aCl<QX%$B*H*cm#CY+ON?9XJj)`Skl{`tij&FYc6<}(ENJb zn~k6``Gs>%rd^-0si#Fz55qRqBvU9Xi=qY_P^kMXR1&yAW;NN8y)Aus4)g*$r?jl3 zpA-j1BsNp|Y;S?@3~?%mwZD;IB-)^uMA%4i8nLiN$4h}vKQ9uD4$Yf1jjEOes|sUs z{dIG1-X9FoyYLCJm%kiBwNDWh&`cuBDb9mNo0~^c7)Nb6B+<lksoWL(^>VqlC*<I? z6y5pBhFBaIDe)Xzi_vz=Zr2FtY8+WPiz-bh!PtB+9yI-XfX^;0MpGq6u485A8n<4d zybbzevvTR08U<p{ZgX@Dq8=5DULH~o7_S%i5_IH%-u%W+xmBV>>cu~eCDHG0zQ2S8 zoX#xHql<&bl>z_rF0k1YZJAZ)EXHY#G$&q8AOzltLAT7smIF4?X`~jtSjJeU3dZ2j z9Fe{Xo1(P^8s!kEFHPTfZ^LVVmT4Jj|6ZH<1}yp{l)BB3pQH5@risRGT~i)xweEA( z!^}@oOR)wozWWxtK5o&lzmO%2QUjw3PX?~`H8C>%JhO$OeBD)JPjab7lrRT;FH%@) zxMZp=<D$@nsN#$gVjk3_M+I`#mZ!MXarmK*rMdD}6NS~ZDPZa#gW_%-X{A5}vL3B4 z_B_{xVR%z^uK|U%$G1ojJ<Sb`4jg9czi3HZ)VyrvmW!yva0=5gzr2fsM$5I|5)E%$ z?$+ig7Y{r7)0j={Xx4`SGB=e`jM&k00aIO7F*HE_0Hb5?JMsr&)YT(fI5;Y$&%KT; z$wOEc)F8wlmxoJq(Wpf!w+v8Au7KzP;)4;tqa`ttwXI>;>#!6wi{>+mVQ<f@7DqJ^ zSYsGehfr83xJ(-PZW1PQHQ{-jAZS!!j8VF8_yzCnI7$wxt2tHvwv~<*7P4&{STRIL zbC~7*FQTgMPZJf+4l&K2^lf#e4u-XAv6vnrUd3K^bk^9ryUN`?kRr1LSW)mT>aWn5 zj9$zyj5^y&_IJ{Z_CkHz&FV#O|LY_I1f$<|ME@v=xnvY*m<G!*eGtvA<Ty@kb$;#A z%L7m~)<`SLjBv+EP^aJ<ClgaU#UU#>4>O_8w^fMO>!;qS>^ccyikJ*iq5X|LKr1kz z27*P(40=zD_)6ZvmnJ0Ms1))2lQ`k0jg#CP-ltC={$A~TPY^t%-amrdM_4O7aXq^B zt`h}SY#%T)Npmf8Z^&!@al0*VI^>OCOt|?QHiEV?a}eY&e|^M+c0jv%t~eu6Om+9} z!Aoz!8TeaFbk_+30V>fSgZfhT1>>G6Y+U+|cO8gy9tjZt`h_`+su`d|y5C?K#vGW& z*MF&x>G_(5Hu{I#>f(=ZtHuJxnV2#=2UG8}4Je<#4v&p@${3@~x?kAz-(lYE2txPl z=pPhI$+fp(cEmq=v3RfR)N%yD7g&`TN7S=2IJj%RD(nE`_=uUwk#x;@)g-P4w#bVN zn`e@?t@c_Mu(?kwM+ZASUeU5RKhX+9Di!Ph=nNp*Fa#W=jwOLb45%bJ5aE~1kfihv z52w|O+Kx2&=a14w#+N1LVx%3-O#fw&k?^~km-2+rm~_;@kFpNDAUeo$E_#L?)WvF3 zB<|;59Q}-$8fH+q=(9FZ%4=s3Rj88(RtXcYAE-Y~u?N{m!S{o-33e{IU%I#^l0AFe zl~*(a^P6b6Qwm}l2?0*A(XpstaZ+1gHM>!-@p|IU*)qTNa1XGl1fkfaO0FyAcK=I( z>x-9^;y;J8gCjD2o1AdW!|(A3oBzfU%;?Fcz}mfvxbka+*}FS>GkH+mV)?c=R5u>D zdQ%>?9@(^oHR2>CWU(q0a=CkFdJWY73f1)zE{|E2PZkcNX2_F08XG))Z@W9Oy_sBU ztdtWNyVt`d)GzsdgM~z^C%wrgZN^a2z0a^%K+65)QrX$LIYceO^5d#UZNlfaSmoZh z)WzbqC3p1keY`r0_E}5lcNJEX%z*Lz<>`@%OK!u>+uQy1`24!NvvV9>+uPGUxuW;` z^WrOR*TuW@^Zfof`FTGd)kXW;Lb&_$buF@cjkfc>nd{dBVbc5Ko><WHb5Bb2{c$Y= z`t`i~%W^mBca;11T<UX$m;3O5472(BbGbR2N?WnuGEw4eotv`d$prgppx(0WQitsp z1Z98G?Tk@<)8;m4df$<wnXC8YelQ;^b_;^JQu^$a>T!V&=cKFyS^+3Wm3tA`O^YTf zji++=nSER7c<~CVxwgV$E*Ao3Y*(Q=!rF}C50Yq1-)aVOx|b=#ERPy}%Q~i3wYdjt zs3*f5f!?B^Tvo%Kx?%E(J6kR4{ahs#bR5x89)-s=S<$vc-I?)IuM>5!@wkGVn%=rG z)8+_pZBm2G@i+lTVcjmPj(9T&1JzpYtA9kX1gKAt#b}LC2~QfS0*Tf~N!i_!uA=%f zd|^un`+eI+a(ol-wzjwM9f`7meEAF&-ZKWa!u*cuN!b&b5+$;pP*2ffZJj}b6J|I$ zn$LisfCMYO6b*Dta@^(7&+yj)2V1q5W~O1+BzKd?PKYl0S;`gOLx1q`{ty)Bau0$w z0ESR5XCy?&<p)A((nSjL6sO>`yOXP_A6IU0$GPP*lvYU{(1(?Fk8?dl$gevv2S!al zx7)PNRS+w?&(ya`OxC*wYdG9WJ(yJ^MAZl*pBz*v9B0{}5;_yoYCy`#vNp;j0hG@l z%)Dg(c$lGQ>iEf1(0#)N!+b_zVk@SzqW9;)m<+{+AcWolYy!XS-F~liawH7GB<j!k za5QIS*m^|?Rc?UEp^S?u)hZy-DD9HVGfbtx)n-X?^W+vRi#$DQUX=c7H9u>#249F| zWdzw>Nayw7LTYzU4!v(LP%ifO#c}P{WJIFQmgVq@*4@a4!{DX@nSF=8bxpdHs<u$| zUDuV1%UFe*>VPe=HH+<J?mg}Ibm3cAJ$y4Qt0MJ`P20yvP2PG2*kVnU2AItTwPIqO zs|f_m3JmIZ=m5*@+r#;J8$3M7LYA)ny#<#m`J>_80rBjnIW8WX`kpncc+WmqMOXdU zezXfkHaX4H9&ykl#uWfrcFbQ?OgP7%*lWk}dXm<Fv#rXqdO$QqKMNk1)v`*k>u(@b z4Cn-pdG{bSu!&3x1!H>imI^N+Rq~b=s{}SD?QLQG@{Y<B-v?Gz9;~f&rlD`5>)KJQ zj9p}cbNPyEQVpNTCJ4hoB&b~`H0<GnwDpfo0rg6!5mG)Uj^vkC)3Itt(K4`MPNr|u zbAp$FSzo8kd2B|kn{&4OvZuQ27F->vHpA@~+shSTq(O0Uw;Tti2&~-J%#7SDhX?AJ z;?vc6O!k-68!|=4`<XBZGK0#}5_#g>UIx%AHEg!ngPz`Ft98=Lu9m@Sq02xTDA-b1 zvrbmy>1TZsM@l&aGgDE~mxP5?F=%7A9CpwYm7!|pq3+`t2ag-L85~fXNi2E%kHuq& zn>021!xeqnObub6$Wyi)J8SukaYQ`ZQLB1#SI_CtMute3#guKyMXBgHXK9vU{2$zp zoKaH})b;$3=1tz)Ee_N{3JTIU`g_Qmm;Hw;k6`TzfE*3p31`Pa<Hm@wk4C-8;j-1F zM=T5WYu3{Cjq&V`$?MwF?!0RkA!>c^szz~Zx{|4SZdYCi=bTe(-EJholVvSaW^~Yb z1cI6_2}3^}@qBw3Pjx)Tj8@M4jY0%Q7{R@G(p0R;Y8ku66l2+8PRCh@3D{|1Qz5fJ zuwI<?Suu$31;B|n;6d;pcPel^W*~~krPbUUx?6S-n2>MiU|OBfnLZ;O=@C^?hBa~* zm4J(ix2ktDu{J9|hN)J+)vosIgq7?tc|AP(GC<Q_dSrPbc4m1e>ykE1d)I-`oDsm_ zKcnx&=#Nq72Ads5so*hOlu(APIk+8E+Kh&djPt0}?j3V6&2ip%lT{>dYoa9tjVT94 zc$_hCA*5KmOc~a1((OA$rww@=3pob5*-dsMlLh97H_)wYrIXTCutZ4d3%k+p&fS~d z2co@f3Fhs;Ov6sPH>9aJUsUN*v4b(RH#N#h<msxo1^9WzCE)3nUfwdx+jw|48#R~o zfg99aW^+D`rD+_kU4ag_(wXf}pqxZ-d++Oq!~$~8{8;d7cpQAdMm_p`$6o=v8&v}* zQwpT&U^p+1F#?K<k5nVX@&2`G1=_sU6Bmy>Asm}Yt{!cD<Tuo!i^g+Bk>;EuVKzz7 zq2CW~o8%X}Eegx8mW9-@hKaQIln;_%zswwbcoe$CK|fAF-_NgpF7uf;-|uwo&yUl> zL=APfR$9BLt~9Lu!%f}Elv{l6!ue1s-=e1HL~?X9nk`e%tHmguMCyWnktx{3+(+s- zS{$V;OS^QSGo52?)xAuU757J|=^mW0F!CoNr5|ax%Bm?J24Yy`xr8sXtmox|5s;oT zU8$fM1o#j~ygi8p;X41iGMZUA4-9VR!CUin7+Z~M!(^1vU)7&@3yymTq~&ZNdp=#L zFa8PFE0`S(TLK;8-9rqVm-1P?Lw6_(@YevC%6Ipt2Xg<i78c)fNCiPfStg`A?PS@I zqh(oVw}eVgQ>S7X@RvlTEnm>uq$7dP;gA)MI%r9>2yVr&i{f3qvVD^pQ}G6OM8yi& zBB@zhGgvu?`_?Zhi3Vy)5nv=S1(zuUQW*kKfawo9ryIAYEAouxACR*{#3=3;ua7>H zDPNj+g=(&b!0SMNzaPt>ALw5y$GkHRkl@`XcQp(fXak{u&yyrsBz_j{m5<oDbVH<D zW{d9*o2^MVk*5iXJR@6lEc5huWb?sm>&lHSLR;k>&+O?91s+e!BeV-#F4b-lzCRDG zG^1tLI+aHM3W+${Lu3U@Nvw|`?@XKMYBUY6b`&)SE9PV>-Chv7uvznT*qq1w$AzXA zBtg3f_<?U`Ev6y9Jq_q0(8hW?5JI`ZT~Rv=r~B0%8Lw0I$l9Lnd;gq>v;*5v7rpa6 ze*f`T{^OKpwAn03t0?~<nmPJd(A$w1hs>xRq4Pw0m)olYZM5`MUW<p)Y^Yn~9&|&1 zMhx`Uq#+mXM4c%;uGb0<BHr1$*4S<=*L3^L)Gd=%J~ATmreU3T!~o;qXLRH{9U1a9 z-J@QOU>EUMi0;z>G!3!u+~RNLGL_!Lt)Jglaag#+9-6k1E3&SR4G*hhdypHY!|VG% z_s9~}sV=$~7>G#NtSw+K7|nP;Y&JoO$$-r`BWnJtWFn8T_ZKfYQtA=GwV=XK>v>Hq z$T_Qu!^h#ggv!SmpeyEgd`fO){L!4P%RHE0Cv&Ij;h~LP`=4FyO(8HHTiq(7N(XjW zQ&(pj5UxLqD@y_c2P-Mr#g1#(7Hyh3ZZlE{HC(hZZ|4r>HqEcl;I@N&C9`Z0et%yf zGM`s(n-$Ez!vde_*|YEOOdhc&oL#dPlczErA{E-)hUnWLryaAIZurr6M{pz}Vldsx zuBmnE-MEbXRZS$}^;l<5dRLwzQ;9ym4pXvwI3{<_)H1f_eVHFKA<lp_96jjHg2{?R zp3)dhj7+AgDZd4)EWZb;D!v7)FTMwMDea#RcYi&5j&j9=cU)m2#JSUPj<Or>9XD@X zW>w2KPD+N`?R6;g-;2(sz7q0RcX*0AjHeUjj!N6t73~PRG(^SbyEc$hcQ%vkF{l_- zilb>&I~p~aDrFLxHJ<(!0N9lI8yAt#JTNr!O<+LH9K*I;=uTNid~QE5;E`lPTHVPT zbZcAWuv8ef%X6qeFl>YMmOS@_5I5{Zt{-cOXTTqC){}0zzZ#tfV+gvNckrODj4s@! zWb^zQ7sK2j_Um#;r!zuXX|Q%1>#^dz=C%d`AD&9T`f#ChBH^hR?)EJCy)H`V#NyP$ zhtyK2ZXmc0EpQ6oRS&fAJP-o8I;?Hebb!@by*yQ&TlHr;mGRCHpnZ$BDTb_g<CPrP zPm5TQieh+L+gX<^?4fhQUrcZ;<@h?D1zlUVT<5U0+PrpY==r_<j53k<%y`z=od#s$ zOC9{Z$W&{OEtEi9MTV4c>>Sfv=dlb{Jeg%;(u2c@x9hA_eRGzyR`mr+<<+QeI|^&| zk^eg=uQYN;IXF=9tcC;B^b`?+8X3k}PwFeJ(auf4#3Qw(@5j=f^<sgfm1ZRXpWK3R z(7J-Etz!V2iQ%&!@hq~^;YQ+CBV2q>*pwA3_^u+Sl{g^ryL5SU7oo5MqU3%(1=V@n z#vv;#({X!VvwScrN8Uc&Uh_2IWJdb{!x|YJMcTGx&NMLV?PMt#5H<ZFpq$B6umfG` zCPa|zgU5_DbZY<O;JbG26?;O>UEoGm6|l;-@;#8C9cGUk9_;4xIN{aZvIM8PTR05# zQpjyz&m(f3u|o!?B3hOa=<9LBrMQTyMs8YDN`)FU9dT9m?d#|}l;y}st?355%y{cK zn~o7Z)!lXPX#A3FJG9KGSH#T%pYC2-KjKk*<AkPVDT`)y0sG2ViQybOSzU6oz~&ZX zO3Y{GM9Jc`3fZIWf%yG#wAF53{Fu3@JuI-VMc111uFrYYcDm+42E!D$sef*g%5_<F zGnMjZx&ulnPh(h5x9u?{YQJQR(5@&BZL*wWxML<Uq+(AU25X@`4(0uIX{psZ2&`v| zF%$K{0ZGzpvHE;_F^s&i1+KzAZ}v}V&#`f4m$87lDk_X_czAg8I3eWB0IRzIsWp*~ z`h`drznV_x9`ShH<@RD}anG1Dr0!E25eZQyZDKNy2FKx~`*)Ys>8j7Jh>Pe6q=JH9 zhgA~B-^G0QWUW|oL#OP1`{M7kzBHGM(VO8aqzjHJq>`~Z*?QQ^qh2<pYwMEDUbB*{ z&wPv1pYwAMUd<o<iWnI9G<0cmcHJ^khnF*?by{r4k?{~qvmlt^I43xfz7ax8s!~$3 z%!;yM>;dvE?1i#R?1QpT)&mW-J%F>aod_CY`vr~Wr2uwoQ(CU4z?I8~nILK`T|+0w zJJYMw0a8qF?<@0Gi*|2&7q%C<wFb6AK@wd(gX^1}tq%+|&vqptXbY6XE7F+dE{^Dv z;hjeXnFyp_!u20HkLIfp2cZ7W9>Z8FAjZ%m=rE_L%LFN4bv7a}ksT0ga}pudgk3o` zzOj?3nyWtk1`^oJSXx(=P19#m99_+9JNtTMGcu%;G%Qpx8^%K4PDJ_bw#cM(mqq%= z2TG5VC#q=4Z$!6h8T#)f(t#rtE?6a_&~+mVb?NTvd<K`+&`~~%a(F@b>l90odD}>C z0Y-J~qcDN7ib>+2M!O?$x*B!B4@1*I&C3gG8zQO|)<x7r(k0dc9Lwz%*E(0~OM9#t z#q=urTJE`eKL|iI&!A#mSZ>wiG+1ZGtdb&`!a-5v4Nt<!mLy+qd+8B(TArNkLNHh= zYZlUj$GaU$dGbFnvGER!(tQ3pkEtd3&yh-|S(^7iO*08INqO`&&YV-lDC)cPsXM_@ zy8T;}EO+K`B<^D-aO#whll+)wi_oeNd**azGq{Z-#9h>6{C$bM$z$TSDod0C##w2A za<W(8Y$VL`#I&W&6Xf>xjF}@vy1K^b>|E)tX?U=8?35lH(VK%7gAa}y&JGAR91a*Z zTnB>Krl|`pbhM%~C9tJCftY!oQWq>2G>opT72Ci)a5u#U4CkOnB(70n>s@Pp9^){R zQnhaVCII59iG=Za5JpsleeInUk<XNcIWxALmaY2fWrsn-vn-9a92BuOT#7tYD;JiT zsT*3cCB^N!At^VWDw-RYDkY4EC>+ox0867l+vd(S_7;Re%pzVIe;T_7O^#BLGkjIZ zA3({mP@bhKl8${od7$Q{N-M74qb>?Gp=*%)V>F8o23XG;G*PE*`*7tkHdQYDGgPZb z7nb>3aQhlDGO1CRRSFY*hO67&@s}>;<5m4EAh}P=srbujnrHG#!)vJX!O|tEj1H6H z3p9`YPY>>?n?>#7IrCgY&fHS!QPrKrq^Nq$bKVA;xq(g(9Q^S$UEJigWN)@BSj}%& z3`&V%NG}P&BnA}gi47FcE5iXp>MgQfvRH^<%|3mxGfV!+$vEOf!_aDU3!?(+8p+V_ ztu@TX#WTBTw4+|fh?%D-RQ6kk=^FY`h|rDWNwH7UbE2n1ByPCG>Udstt9xR?lCB6b zW8=7m!<0J@B{-@isgLtG?x}O<h-ep+`Y%-g5ef=>u5i=PNAp0B86_r%x;*Q$#$*Wk zxEPM%qa2L+_H=66mjwLW$2JvZLw;<ZM;gL7Y;5yrZ||K7^Zj;zwEa5&ddkQ-`T6+> z)xUPy&HD9fpMDSSf6R97*7|l9dZY)>{l0DvE~=y<UK@#CnXGTiYkI&voCZcVQ?oC_ z+$M}3AP+G-P_O$;yor~J;*z$<tviF+w!lc;ac1%+?Bo30&x{;!Quek7)Rugb5+ZG8 z6ZWDSbSh*>7YePkSNcqp3GY}tB^LVcFo1U1P0j~m!z5&HS{;o1yuZggCcTEq^>Xv^ z;Na?F`1qFmPJfo(l0i<`lPXZsq#_nK(vnajK<$brf&Tgy<R!Bx?0vp#3)s<}N(L=0 zH^_+|usISaVY)d@G^R^F{g5dA(y;{43Q;d$yOhgs{0Iz>eV`uz(4DxJQ^F>)I^`w{ zq(P(;pv*L4c`x<PJ#E6_?%wB0p74>x3_nBe7l{!`TS9Y7GA~^+m_Dnf%if|L9)MHx zB>CVj$r<N>QNKX`5we%3GmR2qKz2^Te#admwJo@GA0|raKN;Fyv&3jZVne>tY)@|< z6kYmN>V*0pASGTQZfjAbjj4%o)fVBhDR{PG=pGYQ^6aB~M}d4*Rniw&vE<(YTn6ZE zNCG~_P_ka<yS5b&I8INX5ICfDqUeVgIaUnJ;-o##vzK`PY0Efo59S-LkB7MDPWQ)2 zN2Hduejip1Qyf25JDnxyi;?b2mbUgeiIIs|+N>{+nyG|2;J<JmuAG*1-l!r&t0PL) zZahR)ecft+yL#+5owZh@i>{INyeiCYneS+h(X`$(vJ`=q@g-+gig{yjGRQ6|^ET3> zFOqBn9=P`V_;|j59OOZ`v3T9Tdzjrn{<wicYbIc6h(`~Wae3B;GBVeOGP*h&3L0tl zC3S-Fd(ehDoO6I#D~=s-(S{-h$g%2kYV{mt(a#Ow4|~*ZTu!oLk3QAZk!e>MrMh9O zod0Xp(&0c8Ej7x*)#*^Z^VeHHmx?QIB*yA;epw>cr)lx!v*BPPF3VGgPymJQs68?@ zA@3prIy44Yx69c9iLN`0QrEMZR5xRZQa8b=RsG_q*cX=*b_p_;n&ZAAN<=PzQg`#L z9*Iu)@jyjwlJ``W_QJp@_30x-2EJWjq1(M$R85SlrXZVjH#ON^$2DV-zRoNQ$c0p? zF=G*a4Q9r`WEYV}(02YrLW;>IBamYAsnK+CVDl-;)Cp6xCeqgrtC9l-$*ca_6i8g3 zfz=D;G`2Ni)+RZO=Ebwr?8<ZxtWNk8G(3N$Hyx+VhZK+VW*kWRcG36Md#fI!&5LYW z_?qOUl`gFIl`c#UPxn?2u5@tm64ph#S85C0ckB0l6)h6!HOz`R2(EUwt8oo`dn06u zi-t+I#g@d_nl^Rx!O_Ede6ybIBg;L<hoWbiH`6V^$H6z#2lc1(O6n<i4xnqiCpgeG z-W&CR``r-3`DR^JjPRHIS#i&`7&E99f=$1hS>B-i^Lezal<9=?5KN-2BQS;@IVQ$E zMaqE!Eo{Qkf;=8e5AK@{03_5O`#&m^WcyE+NwWX@GD(jAWtrr^^+vM%AM{4D|Cg6n z(}}X-GthJVSM@h?{QLe!CRP@ff2F=LNo~{ia1232_Z#I~927Ndnk%uiiY*l;PT!v) zE=&NIJTiq@Dn3|z{qj5hdpoPcIjVsN3K&$nem%9~La9{t`_BFK+-^nv@y%IH)WyW` z>pr$gykLshMcMe|-ud<1fL5C8@pWzL+Wz(YR<CM(*3AKVlbR*=dOOt5ur{@`wttX- zx`5i8)R+2A4_K$IJ|1RfMDr{15Yh<F03(`__ijl*m($l`P<a)1kXbTN;UvvoNz~(x zV@e7$35Ce-B6g7X>-LauUyasR1A3D=Y(17Qq1izrv6*2VBgy3L?fRxR)(shWGG@Jr zQ37!o!cac#@32G!hnt(68=rg=<9c%pV+87N9*c*HD9P{zCJ|>f?OPN1%%Qd*6C0T@ zVc2*{`aWd3Pr5<t4=&iN2M06MUy^|JzuVTK4iU}^sl^)38x+wDg;;AgP+ry=k*#_` zCalvOO(+G+=M%Xu>rHKsq&OJxHaK3Gv!IuV8|+OAkU(6G87<h`HH<60p;%j!CTlKc zgQ3=0ByCwkgu#eDRyy1bl85!!oQpBD+a9n^S#GtYW1HZokY>w{;0^~I(g(?WqjAt_ zAi&`97H}}3iUNw5S6oim(Ee#)N_2^v@aoM1jboKr41M7`Xz95*&WD*gb%57%c$;xI zKvDt2TNo=Z4fD}bmeB{b@I~A|@ecY*u^qMjr%r4v(W_3ahn3teL8g(^s%aY9HrmU$ zT`Q!t%L#2s(`%v3=&id0)RgC<iovBiH`5ODcBPYDX&xLe+=Xm5g}q}Okhgz_*_q`W z<bLLwbk~3QBSPDtzs@v$@e{0rphc1RW^nk{lzv}K_Qi-|Z;0VEUROMTizpW>aU`y@ z<rrOX-KgB9`avKZGw(zRoB$_vekis?N90iH6*-Oyxgib!fUDMwoeu@|y?`NKW$;4B zxF0qH22ub6kRvtm6BJ<Q#2%%c%syJLA!<v!AZ=tNmYbt6a*Yqyw>?8~P%$!%dl867 z2E8zNXY%WYr>it#&xU^AYzjD9p`Jh8GuR8G0NO)?&|q=w*0SSoOHIu?$F4#COiAIn z<u***_yN9zgy|F{^$Sa=9L6)jv@&)CI};`hXJx33WErIuUeyz|{RuoYVW0!Uz32ls zbMIWFIjS!JX@lR`8$i<lvoSl7QcoaSbO$}0j^e`7QUerAe{l&WBaOi}{b**}T)hRp z$MIaNCO-254fY>|585t~#~l{&na<n1`mNW<uwiohJveid5&~+S6WcDXdK`=WMp<h9 zlN%`>Dy#>4cr$&jVZ2&tCznfySTdK2@MrM!Ugz6cBdwYe@><n|mJ}9NI0Jb@F>z$n zD6s@_Mn%!qJy!FT+)3t$sT_#%w5>VV-VvfaSh+tvC(DSVi)EH`>yBR#Ic06xxfMpy zV^D+bG1!eb3|Z4@l2f$bvB$Xx${RW_<Y4P($7Kr&oEWbp;!cj_k2KfY!SenyeSvse z{5<?=7r`#2<RkUx%(27%Tn52e{^VzOhCtLlR~JEO)#I0qNX+Gel1MRf`!{Gs#`Nsq zn_x$<Gx$$LUw9#6zj}Yaj)^X6Ll%nwN>?bh>jIwY1q(*ka&6OXF!q&eVAj|;==LuR zP%-UZ@y6R?ohe8hT5peKvn|#^M256P67$8LE+tVg41mCZs52Vf7M9$YG){vd2?OOH z#AO)xMei-8mqo99yxg-qNj*(eWJ^SHKTYE=;#fT_A3P0B1r3fZT!$`>o=mbGiEIlK z+r`)XU=8h`xW0o80+#V-SMaUSCmpVwk{mlCI9~=NJ){RS%dJ|R(O_$Ga5F|HeL=mG zu`eTU0?-0{Bp5z7Yd}FSAvD%|RAS414r+^EuPbH6oDNO}5L4dh)EqEZbbeq=k4&+~ zYw_O!@_0zF8lXNCzrQjw#o#6O+Og8J&7!7<(4EU*czL~O!`i@J15jH`gU3z9^n0%! zsOW{!vy}ZB{)wT0=IlcH?k$Qm4kzOS6s+R5wBerpVJGWOU_}=(&2_dYYRi%lB+0Wu z%8Aq1a%X=T<28yt-=<#?snu}y?@EE-T!wfEP~cOD5ebuM5Pj{U^ji$^X*=#vwFF#Z z(R}PWHJX6fQ=#;%kI+2Jnkop{1*#E31|LNVXxHfJ?qc)t`dPJ2uoowV_#E|?(q^ZS zM^dSHFMQxaV`v(ZxhU#oX-8l^skQeU2g`wSOpznh%h7{LqEJTEqYgo|ALdl@s^d1~ zTEfX{%81Zt!T`PxKI$9BDlcI?6ScY4nxuXwmV+>b9tF$tU}7ehA!(n-0^^DmiSR(z z&e54)L2M6YySj&}rdBcWrI}vXs>|RYnI=P0ckLUKBFTPL4>$RtAlXO;i0FUgWndp9 z$S$Hc`<>EKq^+1WJ2-A!N)GQi$1@nDAx1y=a}Q)T<~jW}_}X>CGF>{}c{0m#Fm7vg zB~(qR1eCahOKJk=T_n>9v!{-4=cY_2U-^SV?M%Q5N@5!Ez)m3XkG;D=c#mu--@mGn zzownk9fRhbI@iM^Nj2oKWj^$!&h(ep9k8PC5~WS!`+Lhmsss0Tm<MOz!>I50PiWPe z``atDH40xMHcD9UMOx0wS-R>38qpn(Np`GtOjKo5wcR6?l-+upu&J@6tAbJ#3e6;F zgY>O>jAq_b_Xk@JC6SA5Kiuu3znEVLZ$9J9b14y;#mP^&4d7g+LZbF0Se&+|9R&t< z#@u`t&qv~IP)e5}(R9D4>>i7WzKJir0r|DdfYtv@<|;=eS1_jMLXwsii4shwWz{G? z!WA$<k$u{s)5NYub)kMyHe~Y<Fh&Ox?l8me^{Sw>=<=&*o=n-bSrwsyISfMDl%{rz zl(tyj6!nuFq?6k2=h?Q;Gz=Zb^GVSe#>i3Oa7)=m8ES(~Y$nlf#!xx!buw)D6M5E- z7moB+FX6%w_kR0KRU&;VJl>5Z!~T>98_>8fJb@U*1<tXgYJ|B}ZN%BaQb0on_l~Ke zsH109$#Xo*zARcOinO4)joDs>Q=lHMcd0l3#d4d_x__BDJkMKEpcsn)@I<Lm>u{tN zNmde~Ryp__o1#)<{e?5uMXQc`r-u!~ZzQqzhMwNsS^4l~Y{ku>m7%Egl4Knqjt_%| z2~<xfty4x%)FfML9-=81d>V1`Mp1hM>r5coou0Z9`i(N~4$r#N&To5rMNiPj9uhW* zW^IyI<Hu~UJkylHm!Gp6sHG{<x(BY3J%erbU`CST4o^geA+(?|m&hQYN>1}iE(7_C z3|ro#Tkz+a4|)N=S>FpQFFG%<z;^5`#@P+wsfQx4iKMe;_%EEd76`YtPVIc)8APd0 z;}}XwpclHFnvtfev^MA!CoTmssD}lv2Z*=qn`VR(>k^l^atvm+0KBPGeC_>fr|8%c zMm+dTt$1RJU0FP#aB|8d^+n<OW0p<hEj-0_qjQJVHYi%u1JN|Ln(h&0Nqk=Ml5Wam z!Z4Uc9=wZh!L?Dgo1;%@PiB;?`H_zl2=;PEp~YMDK?U<74QD7Tz$t+|ou_E2mb+$U zCF3_fL}P_Biud^p5E*K7M$=3342ZbgG`>aKE6L%f4PeC-|8%AqC$BpSE!|u#4`^0h z5idEMdf}PZ;4MY|o?nvMq-_>IeAg+}%b9rphCu+}F|tPc=N=yZ<VaLA;H19T&!@85 zD|Dl~(PSwgGhIhzWd)Y+lY79o3n9ZQ`Xl&)+r&0Y*%oEWXIOI16j~CPeEWv@J1T)Z z{AZ>9X!Qv4JYjQE#U9f{i8{DF)u;Waw^fOJ+?aG_%a!t)WI|@*6{NRh2oQIJ%s@cL zL}<`TvP@2~V^K7t%VfH`rE=GefmDZFj<qB!g3Yo@<sB8swc}cUOLplVoO8f7iT=Q! zhKGqw@bQtbokfTt;_=7F#kx0?v#ayD9suh@qN(?S@mZl#P#HCzY~AumNccq7u$v}( ziKrGUMCzRw>y|yX^<@`q+b1ISB)nJbU?G!}x)iS4$KWhC+JpoWty<0>&%Teyx)J;? z>T1Q5#>b>Y$$b+a_vX3d=E(Dm2q4kP3HlA$#kO0C!E!GZ%imfCdlKf?#uOHfB=jIH zj%4fY?V*9aPm)-GWqf2*-$)!$osyqtVcdc?VvAj+D^W~NE~+Hlf@Etf236IOMWDmN z4nl6X*c92f<jsX&ts{j)6NM_GTkkHjdUWA>8|B&@O1c`ENES|vJ*9|(<ygSA2GsOL zRJe1a!4d2c7!)tT=m>46M2+eeM3!I4Oz{!Q^FzhK^HgT042u$lpLV&8!p13As>9cS z<EUgDY`nQxcwyeM7JFK=?Y)D#$c?RGxJKD}h5lWh3LeE;V%ID^Gu2+;HD2h0;m#aN z5s!5V%`*qneDXWo58MkJU=WYe7rB&5d%}gh4t9pIeP$;+sSv>Q>L%VS6n3djd;<ZR zvD;LqgMwsoOr@|KSc|zynaBL(k@33$oc*Yeh_~?TQG0b2a39n^`7VITv++^aSbr!m zon%4hiu2dhUA(I?BX3o=Mz-Up!C-%k;2s^WRD&}^4pm`tYG*vym=30+J(vo2rrOw; z9;Tyxm<sh`RzLIfICb^Y4AtI)Q_BYoMYT<erItlc41S!!4MHc&4R*v=FN)vEvvew9 z-CY)OO#kHDFN*T@+?ybtaOPNu<***wf#@et|B;~I;8zFP8Q7q7nGZWzJ{U)O>Uws$ zKFP^eu1$Ujlz9UK;kl{WUS#(Ua^k)$ipe~?w@0FY-;nfC;9{q^BN&|A-em|iZt1g% z=_;}Mc>#Vvygejmf>TuBRH+xKNc4Dgo+kh5`h1Y{2LyoroPhoh41kUPKW6}JjQ`F6 z*qHv81|VQ-Yv=5QuZ7RT#_&HJ;NM_?^*;{-|9sj1IE1i?lQTZK7y~OU13f)GJv#@* z|8=l`j>m_gQ*tqM{^x?Ug{{>;&t>!vM_^!O#%E!n$7g0>#b;q<{O_Byb2K(_{I{LZ z|6}R@F_`iHUy*>J6J`I$6YGDCPyF)>{=a>KnS=gc@rfZdnb@K+gyh<1st52&ico2M zz}*rrQ<_-S7fqc7TvgsV<n3W;l%#;0m8=)BwS^y@-f;1<zzW-Hn%XK(<aYr?jQfM( zsLbh$@7IV0%f~v&AZ{fB-!FI#lZU<$ODFa2-s@^gFI{LAJ=V%szmCO=dc6<<^w2e> z8o_1{4G)VGyPiF98nKK%%gnv(>CxqkSInKu9Z!w#E1#dU+C}_(TU!<E;ENme<Yyrr zRH5yUOX@k@!`j0w(Dc`+UfBWW@UGsb+2ksmn@ZVq`lR^h-=6obk0y=zRhG^2L1_%6 zy~g-v%j$cQ!Vb&lx{mzJQA1PQAx9_QJhudD7{!i{^9g#*%c*oclJd0Qez`Hhzq6GG z?oWw*?w=h`Ht=4~VWKEr(xSS%6*>W>LzgOx6*kk2*>(f?&-OS-N4gwk4K{DlfUUS{ zT6{y#$LPnkG(UR*vez4E%SNmz+m0W5SklU26&Ri>(WjlOLp?3qYMcB%@?zZ6vd>D? zd~cWGr(>A}S*YkRwFJROfeii*CBs0*0VGg_=n||&)<HNnWd@;F=bH_tSW)>K6=)u~ zt`%`|-M>4M?9SN2>C1nx1|nlfgTJr7$4+)zWCmqxBp({M^dn1`6?nVl09`~+<FN}i zKIz;aarC%fbX{%q%0DgDxPe?zWzPUu)1+4(*R7D~co2pU%U1#nE=T(WLcA>O;(BlP zMs>Hx_*a&{*}VV!4$hEit6hZCV?6vSkah&<3NBT1RlQO~R`~P*t~iM<mfQ!20NLmd zF7+JnJL25T>;zqo<>E!<@7?QsE+sE-WrB-UEj~?UBY{46pUlkH=`gU@ieR><3SV{5 zPl|b+MaYSR%Q^qi&STk|v(1&11l6{@jHwLs$90t320Xdae~8`$-3xJ#rLSXU9VmQB z1V>m39P?kPP8}EjcG{=FIbw~{dq(C8**@kTMmnn5J)*EFwU)>#^*u@&5{U(O(s}+> z8~_1#d|z_%eOU(Pq)M;j*G-cJw5R60s>pFD3iv+1(kCAB^GCF5{!=>YQE))66l`|4 zC%0QJS^`+7j&sBT3y|}@{)HR--rCsAT!0v$A56wNoT~F3N4Ak&6fm78I&SGolMHBt z<A$#stS7_3s2dk3&LpMm%jQoM&bL%*W{A);Mj|t+aAl4u-$2{?`<3S%U?Adr5jbj0 z1{GF7fm<2FZ-PBd;3$EcOKv3S`s>Wyf@2;{jVSA{6D)M_9iBGZpEOgODfT?)8s)4V zTRJ<~me*XvDY<-BaqaHYKKjQvzev$NT{?V<0%v>;nnc90)UVX?^(^ad3GP7|FUG6& z6MtOTH|*8;CLznnN>>8itkrnBFaI<D28<0bb=D3sg6oKy6BIAVTV2c|PAA~I2*+RV zCrddlG<rs$ZCgkn1Pwt^F>Grhg?7<@2jx^3_D@9J2YKxvcM;4zC3@-EcBLg>HLJFv zf?fY615Ngu%|j&Mecw^5B<iQW7Z>2ebpnb^DobhJ2Qec2dRlYf>{AIVJ)IZ<xB|bi z1w=2nFDMk9#2cZbq8!Dg_K|xa_nqre$=1n`L%o6v5kk4PuXQEZQh$!&z9}w$DFPLi ztN@NM>#~^{DN#)}*aq4}?S8RJnB`itmi|WSg-&W`xik?xsb-00j;tBS=R}Lp8WW_K zpEZ_#5zjoR&!N?}H3d){m$EyK6u!9G>dN@gtx*!?J{94U5{GlbOctqBx|On4id;5f zcAGRa5t|2yVjh$!Wc_;mF^Q7)EZrP{w~vBqo2G~2<S)4(Z*n2^V~xqe-zr><?AKob z*NsZejo{PIQZ0XVGyl$QA%C0f_jPwf#h<FQjPi@(nu~J1<%5xczf<jZnZ%km#2a(V zu|wY(2_Xl71d>Pm3cIbb=G-r-4&mZgJ*Z&qL-)d)j1DyDr%l&gGI7$TloJLba?KVg zy=MCz$Y>#pa0QLeWsL;&VLCKcQIp4jU(cZnC!Or=GEKvWR9h@cnM)XB(+%#bap9Te z_{Bp7ie6<2C3CGAB@^Ayn>jxbal7&2BTSr8fSTGRIvbrquDs`>ZXH#~4Yy-dVjjCV ze^;z!R5ooe%3Pv^c}A4#gCN^e@C|rFraIyPY42v#sh`!gw!_6CU1_p&@*!k)WUc$> zih%O`)0xSowlr1|kyOI@?=z7en|_yvzLs2UUe(Uc1eCWKCG;xyk=W%^oZUm~ycMbP z6MuRu1l(JYFvKA!=k)_c$^6+h?YN#TQR0uyJV)K}iidW$Ds0sF3dLiGP0?rB<zI(m zyXCI?t0eYENgit)%8joyeZjg}mkXFPOTnI*<DHosf%8G*K7^K=@F_wo?s4~%(;Vbt z3e7wY)AO#cx1+Sc%&W*C0Bp`0YhMxYXptL{CMTLvk0i-Ub!p4<qZ=L*ctG5$)>T$J zqw>f{63P@GjT8YKQBs>50RKd1YOgCSE<2J53Tx>>VI(%q_@)}B*H5P4Tp<fzYrC<8 z$_Z=e@`PAVe@L@W^Ow%p#e+(i>ydyW#tRN5{6#LzTSFWKz;d%sLJ%!9V8Bzgbx(uC z!hp4XlL(!)RUfZQ$9oRKT4B7Z^(#w<L;IK~ek45*hICz0AiNK(2NrzSR8BO3m?}j) z8#6vUMd<nbtDhM7iDc-u51yjEvU%J4jwy<<6d$-hlSz5dHiTuV`U(5}b*26%q7Ms- zlSYWz$RVB}A%2DsYqa64M+!zX_NKD-1#U~9x}fJh#wTtg9ox+Sdz%x~HhK-cf<e^C zexwZg@mmepTN)&Ws4mAP-pE4f_0B++d^o$zm{5ZSWh>=WU=>9!ZC+q8Z7*rRP_B!? z$a4Y$LDWe3k&n$RgOi##gdyRz$-Y?A)B^c;mJtgLx>=cX`NIJ=rmM7f>hoZfLWq@s zNs4bKZ3;>Ds6W<-x`QpeP|?!jTUc@ee4*Srt4uIcomUMWlj*kYG!#ZMu|DNcn(&r% zPiTNdM2~!JdWo++QjKl)TFtVmjBsR5C>|jGN@u|soFpfAx!@P?tZjTbu^_i$r&Lm= z+h&5N`W`?3Oz``Fk{ktpQcYg~v&2!+dR}`-EhEaQMQ&I~s=$H3x{cfhtp(q3UgX+< z3OL0~QnJjer0Bp(GIDB?^j3I=hmNbujvEzIX(zss{7T&DT18Q)z4Ms4(({M7xsBRS ze1NHR@kWf~GuMZ*;YOXK_SGV&snj=Pzo;)3UEymUi#Iwia~cL6g?UH=F})bC@LYCf z`@9cVWC7v*=1ZASRupg^WF+EMMOCbM#0f2VvFI#NS70z2o0ms#)nd#Q`SG_R%3(VA z(h$<c87ccyj3)6qnOvKl`DKS={^bA@dlfQS-V@koHHKc>lt!xXhUyH`Y%E0<17&G0 zr^~L9T!S&5^+wWD82Q{-b<7xawMy}a?rZY+6$bI882C#}F^y3kno%^@n;Kn=1)mM- z1iX>%;jgaf64bp=v&q{y^%FsHcxa>GEX|nJ-!|PAl?0p=z${N_`$>S&nA{`ao<PzQ zGNi4oa=s-C&j4GV^K%5oT)qM(ikP7<%#5z55IqT<RAn%LmmWh00E1t5#V*YyNarrj zh9>`|ycYSKV2(2I*}#NRB`cN(3N|OJ)oBHvyd|;_#;!yQOP%6W$?{Y};Q>QlJQjt` zBk8S7iK4$}@qd<@274)LQ*cTH@ZC?TyrYXrGBA2aMw4CX!l4imQ@hjZ{6h}a9Z=VH z_oB*uqj}PehaDvk)NSNkTvS|soBfvZ<Ul}3R&B9jb(jRkm6cCvCIfoRnw-b1va507 ztYpHCW%_E(UaT0(S)LlGxsM!ot{xjvw_OJ3Vt3!h97S%DC(yaNOq{hlRcQwpgBVCB ze}Yo3OZOE<xk|$UEaFFS;gcu<RUP;jwfyP@n^c&Es1aC@rWHuVX+Tlm5=OHeuWzZc zZY)iAOk2siZ23kRspj9~lmf3w-g9gT&xmO!f492)3v8sB_gges1wGK=Cp;iB-hw`| zth#R8@yiamvJF;R6m0b$QXBXNigIF%{Lx(C5s)&{TQv4ie)@J+@q<m-)b_L=iu^w+ zxXXi2qE*FY>$yOJc<F7YEOzusXiw4gIpL}a=N{`W)YTm{vPS#HqMOWegFSci^_E4u z^^frSNyVDszaPatBh4Ir$s%#~uMMd`?u$C7sEb{sp0UB!FJCVB`I?Tfag$4=@7CI( zoQYcD?SB_(qV?L2kc3<<$3id-=+51a)E^V|HVxK}FH*61G$lM`TYD29w-5k8p5Xj! zSJtZ`we-x@>zlUpRtKEo2`B_}@ulL30<r8W9E*C#{ve{)3njmhpqmNEcF7EqG-O0i z^bVTrr{J%QtalzWpK^GiC3G`XZkOpf&jZd@D9^6g8zdF_>lalEU#J*_dK|8QWhk(4 zFg$M<+n5qGz^+1@L%6>t%nhbI?0<jX;^1_xOB1)1Zzbza%%Q1ev_Z#{rxh`=8Ytvb zLmC90ri2I1m}JM99Sm`eFAJzI-4=y;LRqS(aP*Kt<wGy1D?!N+$^%SMg{5)N=KbLg zhG2GU3N+~9pis1|&ryQPqw_c2J}}CZs>=`C^7DRF^9KX~Ji1N!kD@>Ge=_>B{rl+8 z{=XCb|9k#r`M)Lpe<J|4{{sSG`Hu;JgM*EOgZ^I?09ICfW_DJ526lRUW)8N01prw8 zXJgqJnArc-u}rMY_#7<w%*_8l0M>tHEZcv%JN$o-3+(>^E-<k${)<09#B7cs_^hfu z5w+Kuv#w7|?Ob7ysT(D-qXR<dp9YYYBdj8qhc8Xd_=>XPWhtp_FAeL0^#cf1tn28w zTr6E*n?8TUYFad}*F2O_D@XJBN;DEPQc@I7l}-CTf7nha^W49x%RJY4ewTt(<Cdym z4{sD%D%GxhL2Ara#`bU1P7xw0gZWOq<$~C>t;EB|NLqCbI|MX$(!+^r;JIJo^J)Gl zgq3q`hFBy47hWmsbH-ZV5j1hoOhm-<J#XKk|2RG3x@y!*8EKTFTH4)6Y_iiyY^FUy zKQL~6b$PaGAb@AUEL!9z5Jw{E$CWpa$V70qR9;``tu2?MsM=U0_4l|Ko-OYB$q!yY z!`P5dkh59RWiFD>D*M&%2yN`z%8u1=lRT}4-keJ9CPYOu6+iJNuyL9O$O_OBzR8%5 zx5NSxSU=(y{3;+I!zM@{6)B*Wu4BZn&6V%jVu!ZmbUM7z$9(&+sKFhctG5ErYk(o8 zuVK2S%~EXCz2J>uI22@C(|mZdhXOD{jR<*Vb-Eh*OpJxId<nK`RcEslp;8lz35dr- zRqjY%v}d|m?gU7YQaU^*8?ZL8_Rve0Mpg2Gz9!qxYmty;YhbvVojWFg6S<9wkd6v) za_$7w384?Ba4<_NL&4&<s)%b>3Bj~&su75DDuE{nRPOBd4zB=fuLgKN?u(I??~8Es zn$#B{`A7e4p94|8V=pS0ETUv-Zp3W805Fy+=oLa;Rc)-O6v)#cL!AMIwU;XBH>P89 zVyvbSIXP9$E@@HtvruNK3f+&Qq-@(ciey`WZ@rzOL#5VdW|5xO*rUm{Zi>)dnbUE9 z1|7D-q6EWs1b8olgDT<SNiojU=RPSQoh2DWp_r+|)m*_DDgn(<o#9$=|JXM>tk<+{ zf}-%oxrlHptsvZ9m@WGZV!>)4>+1v5Yudk=yAuL{91hCa1WF;^*t=>Vihpib&q+s7 zHH&6H^c6r93M5+T0{MM7<hg*lW1h*iu^VDV4E7-MM<+C(4en(5sT0`$4F^6PcqU_^ z@JROO0&YCr1|6*H8zFLY&$&vR**Gqf>HSEKzS*(kb&r<YP%B0T0$v0_6FW(KMMT-s zXP?~;@R$fT=X&k+u+ea#&h_wa3D&!fKd{-XL#u!*+rUsdtmUQ!C(H|h*-~nimgDzK zB1epL+L6>lI|<5%d)(zD?XAbNA`RYd6Ovf~fBEo-e!)uW_e8?w$yj7}a-}qqRZfs{ zA?z0Tyha1>^rxXKZZgkJCmtof<I!6VXLp|x1R&#{z1-*d;M!i$F36={33#>B0r)v& z4}AIJsm&~y@r@%y&rFbljH)97G30Z+y>S!Iv(*F7@hBWCPDC0r7e>>Ytr5oRG$O-7 z0sg;HbC1oLfZdv~JGN~bcdR>R$F^;B%#Ll_w(X>2+qP{@P1StcyXt*v&--P5#c`hN zTGwif`;!H`pNnrJXbD65bfDJ78(pi@K#UM!5PC!DkeNO8y$zQs0I9m*>}<XC;1W(p zu+t@XCBHzwLLAEH>Zke_VTtf<7EfId7YnOAR0U{HqRUE+!KYz7jXibhKsc<qj%YH> zp5Ff_psKt027(8P#{%qSDc2Ws0w{<6jd&z_RhNNAxVa>w&Z!=FX`3aC9|cn}tfeog z?s+=h6gx50vKgGvMo$7SNq`#S9?B1h5KL&MF)C;7z~wnV2NL|0e++nC+IEZO2yX5y zYtuHXn6AP6bS^Ub8_%jrwiv{)6bo5M@eTB!Elqv>CMfSId+~6M@3;{kU_bJflpjyU zfy(2RXpJ$G(0ljtP;2z!Z;Ph#Ak6l|^HQi~)h5?>6D=2q7`2zaS>x+)zCL>%_{E~N zy>5ufKwr86IxaWxFqAB>dw^f+z2R^K-_3@=7~|{ZY{)uubth1Pi~EG<7zj6&QXcjc zC$src-C2)vR`#h<h*>sKOhc1eViJkEqxKY&Ox^?R(cIIP^cFGlX&+rT&G@miHj*lR zbLPPxK8Q+)T@{|KYX3z7CiP%EGbMk7sa39F_4jVoMAB6feTG}R?N-3KsJ!HMXcd%+ zNqRKGt1C$5pq$qM;@nT${|Ir<@{2Iyp8PdgO{=^t+H-r%f0^KMD^a`K@NvD;6KCNE zkh^uGmvic6n(M{ic2io&Yk%;NF|%`iviSOD4i5`ERBVYvV%nXPfT<OXRb&!Z9^SKL zRgANqCYt=#KGu6ad-LsigImSx{u0aS`;Cm*FCSEhXu(%_tsI&TnfSQ=w{U|6Ql!7x z+cpK0<z=lH$<p-{MQ+6EnZhWWa^7cqR*@?5mpMNK!mx~yKB|7p_Lg5yRz*h~qN;T1 zkyrs87QXIotb>r;zqgk|r)}c$>rGmK&ohKX)?wy9$7l){{CTTvs*W3YLAD;tprN&k z$cFU;@pkMJZ5f~oUi-tc`4fw=#BJoXg2?Q%8T9ZF+L5Y$bj)gA?J*B^w2S3hFB{c) zv)amg^1f-Zg<y`3^mBbyhs+}rS-WZ$wKBTQq5p$LB{WP#e^jW_Ix}kU!mbg^7eVEC zR5Xie&~4j3K=&FIrie1!`C{>!02!GaSadwC0Qm{0zR62R6KyYS9k0biU_eFG*GhV< z<a=WU;+uVLjHSfquwnMbj<~`EqN13lpEZEZWD$W8%mDRo{Uy2Rz6Z9v^ZN*dQ*#{c z(R$cK%B2r-5MQZ8#LFnUIKBDckxKzB(Zt!LaS$=6J0aV+tlg|JOAmo6rSnH-AVvWX z5v0B}ZoLHO`VZEA^o{ddw%u_-lTPe4mxKE66O}Qf2o$SzB;(QIdbbAC1^4r}?~oJB zqs|vn0L3zb;uqzDX6Pi=N@g=JX!7hvcaz1rvDm?E>8^S!jI(g&JB?@_TXxYebUs@~ zB|qJS@Z8^4Ec}7d+>#gzR3%hZ_d8|k$}Ie&O5GO&0Vi6x2ZY>bs3kQ3=ap@(R_v3i zOr3Zn%Z|hIUEkkC!i^xZqG)*Q&UU^-$+u2BQi1bv^E_cGDB^KLTIF8~l?%1=4xD*G zW;#M2NQ-p$DiXTFKg64qI=1l%w%KtEvEeo>aM!CtJ+nwuvlpYD5mnU}y-1y@;b*~` zRU=I!MBF%|N6>ju5-{R9jaU7a3%;pzXSS+Yu4KF_kflBSe4_{1o56^`&|sp9IU?DU zki022b(C>o*QGd`NGM{Dt(oAAF(o{iY%lvZrD<+N$<04PV?5H6&4d6bk6di49-Mu) zOG0Kb+1PpoT}fD%?9w0)fkSYynP@Lj1kmG;qErM4L@-xbl;r57IZ<ZQSKuBb&#bjH z?q{rfavOZt7PU%fzQG?#V$D+k3!UHk8VYTk=h73;rlTn^#&Tdw%1cklg$xe0W~xu! zA6#x;t^6c)5M)o`THIzhI-=8e{km}O=+LA8dIDEJ`>ZJRlRd!iWs-JL(aruj$>pI1 z4y{gH$Pwp9B`fL-Edq?niV4_}{A7|^6qA9#Cfh)}i%w_e32HywW7KZ|zGHEa&H#x7 zMJSCiLi214TUldp5I)70j;A%Q14fX8__?rEz;h`dg(vDh%+t<zrD>}zHuUxb2G6jd z(JJZFF868v%cmdxL>Y(}3q3IU;VC=4n7q_K`Z)ngeUqXc*w}au4&PvmEKfghO$73L z8XP5#4AWoX12=Jcj8wJdFH%U4POLq?zjnkAgOY%eB6h9&$kPFaQ>3{7Ru`gDmR>!l zKo#9aDO}??yN%0Nstpzzf{8LKg@;d`<h|+6^qm{azvLNly_*M9HJRuE`M>4p0)H8) z6I-fXHr2-sM_>}f&1Qtu!JAKw?B-~+op-UoyLz_hmzPbs*QBt;pG|5vE#o91Syzlo z{*njBfh0G|O;WK$0A_8|g$5>G|KYJQ3nPrS3x%R~)rHZ5L}d60p1;iZdS=(@U{u;i zPns&Tj+tLC$pm^!FDY_xrxa^oCt>&h^E<gne)z?9)u~}IW8+7DqHktvL_oCY(qFNh z&N(HwRmj=(H=GOZS%bt*$`nVroH0pOcQg_e$Lt)jxC0Ek=?ZG%GDWpA!o`FFgTA1` zq}jq{qMAJv_bNf4ttD`O_v+i$p5!N<#apF0&1KnNN>k)w&d)=!*0X)F+M(9<Dl#0k z28LWo!ia4_Qph0Ay>^|d=P$~HJP!bEOd(`39;Iba*)bv^2B@eV;?~#-Yo0d)|JX|x z=^RmU*Q-J_A2~+vf}+T)z3>O-y{1L#=yQbZpYIIZ`99f?q%4#$_t_JYPiHNl3%AQA zbE`+Bd#(-#>!&7FlV<2(H-4HnmQpFMWB`JwL$X5lhhNRIn#IvmZ`G<0Kn`Xs?5H5- z@LJ!i!cT%&Tj)i2FmfSM4l`nI82(xNdcggJ7@LBh2{jqf@6>UdM+m(>m%|Xbd1;xm z)BHh7AGvXD?0gx5hUJi&MFV$)#mceCTDxn{K{uMbhB2z{xpCPi_g$iycy4=Q8B)3J znp5MX_tg1@gpX^3_1{%`?*Cb(=VJOVm7a_FKi%l(`k%LUE~fwYdMp?7f9<i%tgPJs z(IdH<to<eja`%P$?QaZZ5hZkr{8N&a1yZ3c+*L7!zH6c7`4;%<wzxyC>0;k*RuL<= z?%#38D%eb^M66jJ58Ddn7l%`|5Xv?_sYwMjX+Z+-@!BQUh6vjBiJT{irdOhw39?sl zU2nF<t6xdKNs5D5ZAsVOx%ZM~R$_ORAX2q7OyTM@^~rIvmz+7Y_^4Js2gNdy3wF&< zCZWgFfGe(Ux*L<(@{Ll|{6*>I)n%^&mTIF)ho4A4W5L~5)p+SCER#0xFYhAvcG<gE z5&J3)Mp|%f9IYv)uy*q{&SSccA?X{)X0jej@bXxy!8All$sd<BZxWnEYDwM)5*?M8 zl!D>{N%5qdUP!_fUE&AUf3N%LPX+}8tu51lxZWCFuoB+#gG02hvHoW|#<I`#@ygHT zTg<R0SR8HU&vSDoubvL=9H7Kp;8fC`NQ{wlrp#UR!>L2R8nF#AMR;STMun5!$y*|q z5PBtPa&pg{Q%*o<r_jL-r4I+$LtoE=(l))<y!GZx?95tS26^W$LoW6y5g3;RvRAu^ zI?^e17xX=LYI!nz{&4Dy*=y;#4r0iT1|Wu3_E^q(^E1cou)7mk%y+u9e)aS(oeuts zewcWZ-snv8W@JVZSM$o&Qq&&E`AcjrTO79^@5~eH^7XK<n{l@8=eq4bnDLVg`c2^* z8KL~ilAPCBxpSvr8hk8eI^>wjtthT~U|P$Vph`HTgDyl!M-FWQ62p*dK1+vb-ez7+ z1Q}O#B**~q?;dR9t?tTev-{#YcR0^OC+Lb<6|?J=U@h7*CMt?h`IN$8>X99R6km;O z35)9zm7)S=P^T1v%S#Z@_q^EW3;8-oQSl4A4pRfBP06V!X`m9B7!xw=_n;A%A1qs5 zJQD}p-}**s8d?g~Q@_v{<c+b|)?i9}m_gc0zG$|lYnL<h)9$jzZ!1jzS5m#s<PIqs zy{|LKs;k+Q-AZqej@isHlv{#A37nygslu3++S9(yk%UJ+_E_*nmhq8x)hkT>uIcCn z7^9Uwh4M|ISCBAG5HK`9IK}VCKM$97H_Ix^)tOpuoq1{03QE@m_0l%tkSOliqY9lo z4YO;6qKa|7WfXh}FQTE37At?;{puAa2fJZ2#5(jihk5}5OC;@TB6bk*9;wZgS)R9I z_e@jjj{(Sw8+}(goM{m4B1n3e%`c4GDCZCPJkYzoBtku}AX*d1O+mr6g+t1!`@`RV z*w1aVfEwg8u-JO>U1f$~WE>{&w(HRwb`F>Q0<0R_kf7|u;ixDPr5c<P@;JN#4RO!l zFfN~Wes$sM8owc>zy@-R{HtKW$<UE;6CmSSG~Y_^=(LzB=wnaKNVjBE#SO~fgcz*< z#=b9S;i59QTUb!CQAG0@BPpR_;p2TycKDxibQ&ITz<ZH|pK@4HYZq_@=V_GLi%@4G zO8c*&lyBgmulZTOu60-jq`lhStX{!=IDq8JCb?}Ku=FEl1+gp=!{nhtVd!ue=EHbw zK{@P(R4^TfF-QYBZ_9=JcY$3qgD;~=W+C<n9mBV>6<nACS*si(tzPFs?vZ06ysbq< z0PijCBt3o@SsZRyP>jWB6j>s()mU~J#roCv^xnX%z8A}pV7D5!qn~Am*d(vfDkcwd zO=#c9>f$hu=T#qKp<kKDtS#w0yb1YDva1G$fn3PI$G{Oi)w^IrT>jc7K8&?kkPmbn z*Tq#U!bqH!(A#@RxLtnKN%>n*vhH<b3I5_^>J<5VU#MT1g70Pj4Ru^B|3m6n|0{KD z|0#9c{}<G;{y+YCjf?HSy2rxK#POfF*QBl+TR4iLs`o{Aj#9uZf}tRIzsTC1X(LT1 zYu2@%?D`;RylEEP57%aX;zmCIy_Mx<?_b|pTBwHp2BNcA-LZ4B>6W>)VUJe4WY+qB zHp5U)6b)Q*=n|ng)G`OpuRi)K9CsP=amQVsp6zp+Jh9abkwZwHlPVQ#`D?pmJ~H+H z)TIPA61UI~0yq#*D--Bpg+)d}{FfDl2ev<Ycf41<AL4_0*Q#t#i&oQ)g`n^H{#g+~ z{waC4YSy+?txPVS(Tp>pWf3x4d~?c~^QFQ&60%_oK9j&arB)t}qeMZ}wmvm8nduBR zZ+eA5s&4FydoFmt3}<ieE3ygZnD*QG-H#2c)rN*ujnGuE;QQHV^`>1gwglzDd6;ch zzbzR3fW^OOGbkWBsKLgTq1qovAHmut=Z$AIAHK*cDb@eB)>$1|Uwb2O+^mWxu;TyZ zNd#1?wFoW1zo;Sj^tHQI<JJ`)xrZad7enWDV;QO~YQ?r3koa*>`Cf;t=XAB&TnXfH zbpiI=t-vt$OBJ^~5_&Zg?e*mIB7oI632(_o^X*jG8Vn{Sm^n?XCAVjyYK(GXeDe&$ zFz`9rJNQcb%AUl0YduhCOm-ng63XloSOHMw3>?&Nc&I$@S3(f0Ecl*UDxA~>y*$dZ zezS(R72>w)$w^EUlCFqv6WOeIvcSLNM5~}ZDEvzFX%c^q_L+P4h8O#14%D)c=3Kl# zs<$RQl9qnfy6KPQQytCe_sMUDv;zze$n&zlnh2jHN|kP}pnNC)6*h}!uEz>{HJedi zydGBi#vG|XUmD7WP7|{A+<HEoj;G^VrSH@&!UK|+Tny6Z24>1FUuaZO%?#9r!29Fn z<D>34A%0K#GwDHmDVGW62W&OT-(BMdh${{D(cm|WyY^Q%4f-53#ZQQr`*k?wqEp4@ zxF*!n@o&=n;bKRYtS{sr$8-bBT~@>tOLTzqX)4nsz4?<4^zN|XQlDy4DX%Ggh_4U5 z9+(YA!ooqHYPQg2$kA%s@!W_wm^(1KV!s>#;Fo3W#1lV4!31n^Zz7YlK=4x}7K8CC zpv23^vxL~t&}kyHMVTkh{w^PDE1PD|>=<rbi(E@ycR_e-xEqt+GCzkwDQ5TmtDt?4 z<OU@*o|S;}1ANh~S>XANroq<?O+e|y+2E+Zl`>_ijgS;6!v689kvgdV8r8Z}GS3f@ zL;un?I*i7WjdCRqYEiSH$39H11FOh=p@}gE&fW*XCMADb9#loeE=0qPr6SHP`O}7Q zV2c<S)+XE8BdGXBvn<b_OtiG^%_~MD+Ty+S4?7R1cllo<vJ6{et8(Y51`Mb1xd!H) z64W>?x}cC|NYOJ*v)4EQ-`bI@!dt#Nb&==5(16QaJk8?x#CfH;&z6**s)fGwktQ^E z7F>Z7z?l02S|~1q4LF$ic$3?mYiBoSAs}>>;I)Gu=x(I3`D|9NV=<FCF{tPzeG1I| z>NybEXi2zqKf9zl^3#rR_3}t;7uJLlL7mC9<5$D~1?fj8P4BvKN}n!wMKwl-qOLNX zm2|prfnUE4V}wp&YAL)0Z!_UV<0m|#htt<Mi!V4&=RC{u_j-9iDCQ%;fDl8?HB^L; zCkV1vx?w^Oa+#Bx)#=!uODxH^2Xp(7Dr;hNKg(*RG(?;!vZG{D)_}&ehBb?NINwTw zE8PG7`gzOC<v|D+@3#@^NaSyECvw*IPoS!Nod2_$KofX1TEOM`AJB2n&51kVpjpkX z5n*oN7CRh0WlEam-kpDp%f3wUt0gt!gJWp8yEyoi=J?4t4`?RZcpk!$iO1AVxLuV~ zz`dm0)~)ou&u$>u4Nxuo1T<aX)=1c|vi}jJg2gR+D60M~2X&9-Tl|DRaScLR_So$5 zQnA<F?e{q}vkVQGeNHDIB%b@#)$ZBZ(iI7_ajIX;+Sh*PEx5ss4DpK$EG<kz#oyEp z8pOxRE@LooAn6=3Qyra2^hUd?SGiOjm$h-{XqtP+B2NeWop%Qq$ZiH>iCA+j(QmZD z43q7Sa>A|YVXDusi}a~2n16jP4$W={31hQm;;K%PQj;=LN>D+AbES%TwCVhdogMVp ztl~`mQLCxA&s~K;c5N5^e75!$79?+L(m25|QR7wE+$3{UU`73fCxz<B<5<w-zd}D6 zhkXOqm+PY$jiwqCT?kHAmt=l9<A@|@ygJwgXLBQTzsxD7JVrAh8W}Ci`W&UTNmJrc z2vplcDO-Vu{S>}Y20u#X=2Z5lc&AI7->z8gGO_7t4Yghk<+)__0rcS{nsT=z@095M z+nt>GS%E`NU7GeDu{n=?9N=F`-1c8HhCq6139&fc<&P_s34LOeey|Z#Rl*}P|8S@4 z5=J*SC8UKYT5<oQFg~2pW=dh^>&SRIh=Wn%?&=`5>Bm@58X_^y#U(g4h0^0EHV2YN zn|D?#4GSUi4u|w9?o_VD-}%{;8DwSgz{ODrcGOyRUj^By$;hUS%~2sV$VWLPe2!58 z#ORJ2xhpkH&-R**xbC>kzha>i8%26_Lw)a?-lgI4?V^qhY56PtHNcb6E$X|Ddb;#o z7X;kH9?ZXf;4_VET1lVqm-S#`Ft@Kq8jbFnY@asNtGKN4GH8b<9r32;4D%4$?5crs z3+A2{S)DmbL^09Ukx)eF%>;1ImaU07W!JM9<<VQ<=fPbO55(RKFM7~(ChW!$u4x0G zhSD*IJo#B=M0EW~FTOd<isV(gm=>hoCj$#kdqZf!z_=(1Xh-{hn*V0Np^b{NVJxg3 z15nrDSS0V`-LyxYoM+^-c@@V#yN=T>k<-2ZoT}qAPF+1MooMfLYOky1_z}$&q?n&9 z@95~~j7Y}-3uTU3Kz*XTtGcg}0n71V1JZ)t+f+n!9*93fSlAgUHeZ&$B{@>vSW#Z; zNlSuHWKqf)Z0|J}y{vBZbK~as?#xE8hYy~>Ikj`$-dL-+H!^pUv1p&K(`IDSi~DrP zPV!z$oB*tB*mMsY?EYX0jbjv;yRawYDWZ^fJy(^8b9Fr=rOwY#xK~<lQ8Iww8L3_E z)ZRr~@B<U`j8xv0(NZrYn`jxEt3=t8eXAD6(KpYaV7rV>EzQbL@p+ErZbj!0hGrj` zDT4Sq*6ZNI@S<s(GAcEi1U0x1q7p-zNEvn{RBP#rvVs`^8GVQMjNZC*M!Mv?R>*^A zPxcLU>TUjwhNSTqY_!2IJV>-Al&fD<Mtz2Dk|iq1vVEKZdDrpsAbcRbU&1nFaW^C4 z)MhXZkVLvuaUx3sYJ3Rv<tMuk_>Tf$zm^rRP5-+X&i)_7aIXI*hI9Pa7|!`0#_<0$ zt@@wEaE|}iV>su3Gk*HtmnHs#7;d9J5wpR8F4p=D%UDjj9G3K3a&3x?hD9)<;6Tj3 z2rgPQc4<6;WbDs^>`(p`)C>RbwFAh;IGOmDKiBOij@KNOnJ?nh^=mcvZS<m`zK;o7 z`4g*VMveMgoAPRlXg)IkR9-4GiE@(M)72!i$YCza)x%e_)EZ{zjyajiSBqk*8z84` z2-U3DD=ljUT(o==Vv*)}Vxzk{u{5*7N&_o5Y_-*$fT9<qY7Mc=nwAH`-x$@h2_xm7 ze_r=rH@?@Rg{feE8s=&<N0vILV7uuelqrH|c_3TMn~kdb5-|(4ZPne<Jf;n`#wTDm zZ6kQ6na`XW#<+WLxVocelK%{c%|*_S4V`f*5~gvDjb|l(t;r7liBf^lT$B^F#xr-+ ze_D#f6PP%2I!rwlx~)hfvD8=<qapsKY3`te|1lg*U<y}KMZ+c%)s|B1W`%6+{N8+} z-?deeQMuaddm7l7jrKG<bB*MvCdF(M>?_tw^TAN$?(Ih#zu|J*saCJ%N8_bV>plZ} z^TolUkdZqJ`sz(a%Ph{bXTruy`D%BFOtE`)DgeTk#_wH^8h7`n1%;GZ%z6{lmGGLM zzaMqCe`hVhSR-$iLl$6A4}z)fXmEhVDb7t8e%A%bYGDdyF=@AXka2JQBRB@zG_^Fi zf?KFQ|Heb2B^C1%;R^ff4Z7x+lp|5-I9$wu2X;7$8Y0z7nC)vlR%|A<eE%hbcswc1 z>DhCrE_<`Da27Hh13^ejt{AZ>VzMTS`gmQghx$~3WvPcvZY-<&0DS+s#*?zDNas@` zm)s}@3tolHFjIIDH5QZVFXdp$p3c~18bJ!X{CN#K`gy2&2r2~~F8%SEK?d%kc4Q<h zKbV36EIJfz@nxx>>TDQoycBa<!7>)V92~D{7oipG*qSs_n{=?8<%A{(C3{1~!iLl0 zYjC7)b`hV=PQn&yZYM)yBq(n+S~LfG<~Ptft@SJ)yE09;G<I@7kVD5k2S~}sPfMVh zLNs;g6PY`tlA>!^ya?%4sAY&=mM&oZE5EQ1k?g@G<h#?vJx(pLv}eD@ur^D5Lu6qR zc<VQvt?d*!!$4y5>x-R(#J(o%L~0qR4^qTi!d@r|2O<L7{@97%Tx$Ri=0x4K@+cqo zh+p(9)WRpCW8Cdeek)Cgmj#1-5Y!+P;-MTjc{MvXy!VeBQCx33;pMPGm<PIkjMq># zN*RLNQ<|3SoKcubYsCw5l7S)bJ#TF4MaR1PG!xJw&Zi17|H3g2ZKL+oV%dRwvxy4R zhb^@DtTNF7<gi0s+7lG$Y=KM-{x>&*SE6uMHM#(oQVO@nJF(*~pbFULYtYyUAB)z< zzqp2e0x8H1xqDe&fWp)p3qq_;Jo?Mh8>Wnx&jk8j6?_@EdlpY`fEp4~*fi2}PMV@f z>c_}+egRTH`EOuG6g>}`j1nWFZd(MYLCOiNDfxX?j5=tRPO2wdK}K|mQ}ASLil07B zlPxEs9>Oq}7mj<3j)VT|d`^0X;?w=I>=qLP><okgJVyC0?3)dwX&*)GXdfBwXUhxG znK_bfqKB}rgV&m=9AK(tC}J5d49}E;y4Xf(FwS}l$>H1v2<H0N2t*QZM>4LR&6_r_ zpa)6f_Y;9a4X6_Q8jK+eAH<2(S_Mz+PLmJ(Ws6;^;Z1zB>qE5)h1)YMf1)U%r!OCF zPp&`bJtL?>4N$;T;?;6m{lQI>SvVox1EbE3cP5K^EifR5-sf$%qw`~#6^z>TsL1>C zVr!#M(qWFIBSavK9X!&#Ck_#|sj;*O#=6rNAOhe}C)=i1N095Zv@9_vJn+2k5w@P{ zWOC2y)tI|AeE*(mvESD2u>=K^H3BU1w@ws4CVn2JnBL~!vu+9GLjDCEeyqxF%?QTx zea~QsgiO){v$!SJ^)vVljFU(x9g`PDC?scBN1IFg<b_5+6z-vow<7Z%EH5^n(bu!U z+mxl%V82ad3^8tgaf(E8k+8_Lg6!8Zu+}p3LAjXJ)ART)onIjcMUbvyf}^`UikkKi zKVd7he340Pj~ihsf}=I3*@?KdAMpkIg`LiP@Zagq^*_{|`@iVU&Get@&isF&JNN&M z?yUctWv2fR>i>TSotx>uI|{|d$@QOzZlXSBhd+kW{i42D@AWH%h1Ie0q6(YH_MPq4 zzeF@M<TnmE#7~d$%qbx<@|%jLW_^$Q-NDz{LaoQd#@B-7<;W)L_brja2LHHPO!vyw z_tE27=}Qk^&x3zcw?I!0|JQSC*Vn~Y(sL4>%}Z=4@EZ;Av2zytApg_z*quZ4J<-eG zb6eZWkUF6&XL<eg`Cyur3#dzd_!!xE5CBjdgx|cn&zvCfZqMA$pIkX|KD+kxny^vj z?l6wL`R8_x@4ZONy?zSK7IuAnUM0_T>3{$E!Fp^6PxZKF0O9uhVNK5&7Am1)dFS18 z{K;JayimbPngLjI7)<3&1Gif{qe7Cdt|rdT9uL0CZzN9KZ;70p+1}v}n)gM8Xp;Hw zN8VO;d_O+)ecLya*XHJRuJ22ZRhe&gS7I1u2(N`%PYhUJ7Ohf${d~VaKKsRge81j( zT_r$?)8)37+S_lOm?NIP#7^jL?0p_RJl{RvzJK4o-hIk`U#J#19-Uce<6)0<EG4vb zu0wiE)s%FXb`1G)vu!-M3a^}M3_14e1EN^<6i@V8YT<$Wb{-?A$aX+}+a=->3%kea zd7M}RLwRSMe&f)Xw#!d+re5$n?SOiB<oyY69JZdS1L;qWUDGhAo}so9f<Ses?co!; zo|v21iWOBESm7>RLZVOhe~Cn`!aL=KHwrkM6%Yf_HBj{DbXgDl%YQ~ytL83<kp@4x zsV#|oG{GPad73dJG)kuh`)i+$=zsO_t26x?=bwnc@FN!%f$?h%{tY%<QO)~n_sZ!A zMiAA|lAKpPCBH-gJjM{SGdp%L&7@Et>eLG<7wo>dlijZ;x*=)^vM9tsKd;l}lI~Gv z@~GY~<fc{ugokS74|%>ODfz5mPYv%cGi}C1UXYHzRcxq}bQ80vcSTqrhK!&L34ZNi zpIw;g`c&)|L<_Jk+D!pdDhv)UqIi7-$=`KM7BB8eP3^o9^In7|wzBd8&NZdK@ivsp zd~Rse^lnkxj>Bt9ONnlK{npGBL-%Xyg`(U5w3>Bv{K$mpV4QwZP0QAs=t};9-#+Ly z*O*)|XDyIrLc1licymlai4n5-Mv+9nrOSPkS80`P;f9eEpr$>ekz}Eo(M!mrS?Uq# zIGM0>P|VJ582Q1eV<R^?*ir=bVd^A5h@^s74FydS7ng&dJ`MN<pDjb~g!&R|M)rSI zDx0bG8BwOuIE0ZqfY&lzma{x8c|;%Gk0XIHKLq;Wsj?Z~bt3|OvEv_n#5Wh6;zttG zj7=pNXnFZXCLkwWLT}q}!3NiTaRpVCmW9kBdanK9bpX%01I^-_`;U3Nozn1L{}L^> zMSi`_9<XR5n}wGpEZ3((heqerq++$ptZq1{zKg-)-|L7YDH?@iUw+x4uTki;PKt?0 z%2+QZ7)EH_(|4ha94c|Vd*(JkTo@;9GN&>GnIm9Z=TDjfm!_#F)Q6ph0$$T+q|3_C z&7tX&?T*In)W(`6bf`%dsX}QI`V~&!;{rz4p~5a?6BQR?ioCbehw4JBO=EEk&_L4$ z7`b3I7@hGjVunx;Ln&=oqXC{lGDf0u2avd&E(3W4VLHP`MWb1?PzweX@AOY$R1!^Z zS(>XB%`j8AFhs)RV;X76lB_8%o6%FH)Hu0Dk8NROVil1F>RDnZ=$TgN2Nh&&f<ys{ z5=t%UA}vPoO&-x7OHOzJE79)*`v=gAP!s^YAf+PyBu>e;sB3z-V$DC{w50l0|9p^^ zz_Ha!_>>v3UuXgxv6t`9DJ!__7ud9pFKmnApeKA}i3dy(sEHX+hjA?1@P`Qux=Yv* zz_L`Ci|0aU3<+~$OtCj^DIg^48}{()&$f(f)~*9yq`oRhiQA=WD)op*rQxXahW|LU z9cujMSM<P7(<6a)8cPquXi?>c|7aedlm#|AvJi!)JL`;^Rt-n^;tkIl08U*K60BW3 zz?;Grj~ETo37o_Nlk$>^!(U8hun_YpNi;=hf5FkzPR3uW)Xyk}Za>Gl2N-avs#UYB z7uEb;de+uyf|q1@X?QNcCAkCLTDCU`C$d%(i*^IkYFK=v&2dLrCSB#FLfAyAJ|jus z&ZLWpgkW^i2_30-ApB$&1ASn#t7p(`qCnXB<uaDBEF9wlLv~SbX0(1V-LmM>R|47u z7j<DH#>S}Plto9Tw+vjUXr2Ct;$;&x#O^3}57OEWdLtr?X3Q%3&_Zm!L>1#CzYOY9 z_9ZC3YE$SL$o^K;<;`UEw6;k;U1d0qTDsg&!Za&InMM0AP$Mr%->{}GT@F5{L*9G; zqZkqU=@*@}1C?(ekEWnXG&D*UPsK4(DBnIgs*LJXb%%F{<p9>RHl`wjHz5JYg9XTB zDD-G>F^38IoF3fy3$ewz2Bl^n+v%@JA$Rp-VuP#EU04mDT<47^6@;`Cs=X>SoI2`E z$bho(yf6pi0nV*WY`nhSL<TTWHovM*m_S?5PstHY87U*s8w|hbCUl1&8CzG4R-DkT zkJnTecGxs^D$a%au8E9|FJm22$aa~5eCr$txs<-(gfvqiF(57_(GR>~_%`aC1DDCZ zQtuZ|1$M!ch|%+|Bc1Xd{E@`DOHH_tLr}PIz#}wTsKd22X?flgiI5d1C@DrRHA*A{ zy@5AjJY#A4?7}fA0f>*_C$5bfODi{#NGg&hH1^EY3k0k*%m;XIwIys@MFp(Ao;c{C zE`-UGLte_Lk;qwP4B4epAT6IuWPy~Xwrcom+=J#kKpI!*RBI5_N#hRm7(*dar6XUn z(4o}ay5K2+u^8lG{(NV#cv)sX+pXWO)D-)eBv#fM4N(Dm;h-?;d=Gs9qS!1>!-6oV zg27ViB1f6z>sP2kT#Dd7Q(5G5ctv?$gRTPSZ+iNNF*t`k_Khy*TsxkFV0BJ4Pu&mq zJ;P2sX#vFmcrvYw_>~q48n7nzNZ1{8np#ciI^3!jhx_9_Pfp{$&QsFn`FbrF(x`+d z;6Vh$LWJ(lPmrwoS<Gnz-L54ZEyR?G&c9>NB>#?nJ;N0Lp=q~xkF^}2+5>PUCqijl z@<O^%+{Q-Ys4U?n<uZpCzW|N(%SocBrQ0XJ6z{7`pl84R-~Mfy4o>(`9(-wSl%<dL zbUA5~O8!v+%eW7yV~UAtg&q=lVaFSBrZr2Z<x>$f_0hbk2BFjsu~d1u0|oBTl(jRa zoM=W-JCp91Mf}io{f3MRwKw2Gr`QPPyg&gNJwN%J9iPqWlMMwk(+Fq;Iaoq++O{S< zV67=794xCS5XME#d`vY~FvkZk3gHA1uGLwKtmKs1Kq?bavy=>i+OP5`B%J7AYbc#* zdW7Z7ItvlsQHZmf*yK9tf|57F=M5FIK`|937u|6QKVhzfSbj~0ae+emi+VX*OM8=m zB0$vF$<sTPKKYg`y=D;^5J{b~h>~(DZIya{IEjWHvEQLlM+?Z@FRxInrnF|J2d7r0 zDf!*sk*+m!9lY!{%NiQy#591@^<Wj3q}}O4=%$sYMdB0L%TaM6fw%Th8f|w*fqJ_L zB`!$%wwJ{5ZdjAomnw)A6wa7%8YlxiB#nhA72c-rhvpb-Sy8pYCKN{sU&%a%FWYol z_0U~U$euC5XbuP?fDgY8T{?yuomL-5XaR{cg}EHw2~O>>`IJ9?DW^qTAhXuJQdfx1 z_VzTv(+j<_ssOB=`?1Pmkp}+(`#6qB<SP2gy`mkfKN|M;$}L!i{LH6e&l+*4*6BX& z5tt>#5n{>hrXi+%VxfqL@^^2EDy`4go;Fo<$X`BQgdl3NT$9pp&N8OFUK9bhX;~Vi zF9`4)LjhCN+E?ud9+VSppCYGIiM3Q4m>O8e>l*Bgt8l|si5)uzvmTIfgb^jq2>=`0 z-jO%j{LHx&c%I0%(Jjzr|E8vlmTBG5k`|7o9mugWS#{}KJ+l<r7|q);w0twEVqTFC zIKDoFuCraWQ?gm9?$YoPzaD0od5aH^%YS<f0T0TZkXL>*Dw&I;?e2pQpoiauBNkr@ z@#l3r#oEzJ9i{B~*UOJV?KNnXhaP7kPXADqyzXc3)%D+nov;3WLR@a(=Ka@cs#Dd0 z5r`UR%<D4VKQ=B)y8LJ|Bd1{d*oJv!Nwj)(r#3)ilEuP8sC9Ohb)A;v8?`g;ejp{L z(2`{`v5+LY5h=U%P)UON+lOm>$*E_TlpWBBk{nw)-X~(Fe$ifCwo?o9uGr5nB+zX~ zpdF_iz_CP1M%E^KE2l8c9RNGTdx^40^U75pu{0}b--J0)0>N7?L~nuLKB=i^BO^;1 zSHG555e1HbLM`UDDvC_Q1+#7+szmb?p%(Lgyo~rxl~NToE73n6wJ1L%sbAa8YLE1V zLH{n{GmX7H`-p8rYiHKASug~^WzgP!VZyVvM+>YM_wK$Km*QsRjUFxzv~JpZX+E&f z<uUm;H?$RnQrx~qe@?A-nohJ@$v8X~T_N<U)y*tv=rbHlY14D|{s(=o{z^qAtDVF6 zVnc9$@cMz{*4x4gFKEl*<V5-bxlF%xbXBizU9V$N3DNbmf5O`suF9u}q_Uwo=t6ZM zIvTQu?Q;YEa35o_{AERHUO|LgfGO`)`79>gj%_5`A;o@k|3!|O&<58!f8$Sxl>4zE zX|L&K0lr+U8ojxEQp#q;IPhtGC@u}G8pZ9rDF*0<Q<vh9j4X~zLMp65hF+>4eaZkX z`R6n_P8W~F{HviOVb7qULMjAa;0e21h|f#+7=gH@`x?H)LxK9C6zToj;+v?!yceDm z`$H>ayc^ZMiYhAe!^VN%KRPdIi~`Us`Uq2r{JV$c+eV5#p_g)o@qomeTg2Q>t+1wy z_Gtsv6{SLx=63~^j0Rufu8?-<NpOq&>#g`m;%1rnSZ(i_DuinvKN@-=U0Fw|a#bJY zLrY6Kvgq>ny;lpz(TbGQ3X6){bnQTwQ{?S4$kNM)KmI}AD2yKRKWG59lDGjJiJrX) zdM}bmT2N@#><z$>H6<nd^E*BrRc-t6uMqgdv#{vHvq;dxb5qdC7M-2k#!Y@ED@f*b z9-Bai60u%KLf=*VxgjK2g}SrhZ)|;iPmOcfs?y66)OGUZ+v<jwfk*Bui{RolHQ2_4 z;{=Em0O#Bn4~i|?-hMXRhXx&R8=uWOD(D4^pl9=9RiE%z5mL)RN<AcW|0Eus?NC>} z*>G(0=U^9edk>ni&r6r_jP<z0+%k(EYct<)v@yd%+8*0H37iJcLn~P~Mb+7~oAKTZ zXRJ+{!-1p8h}}#zM_7R#kAm~S!gRpAn@^ZE$lFJ=%b&Zm3|ZhRxI&5_E$?L-c;tkd z71yZ7fU+&hI~wlkRp#A_fb7!Ch{KmomB>X4<K9qJ5#&5?en=rf3d-K-XOUShj+t_u zO^Dedvy-wcM~j-V@%m;^^dk9YkTm9NP`KLafH7F?_?*z}d*5{heQNueuuUP=1e0(M zkcUPXZqOWL?kg|VV#JDh`Y{nx;EV$;L!VG}tDJPLqfr*y@M$P{M-RF&^1Sx@w4wLs z+a-5fWM}E^=I8r!#{LWOSy%l=;zqg_*e=lHM!EVqHCw34DPcS|&_VbbDNQetkF%N2 zTqC88ZRgl_?pl6vxUxYRX(_)#_Sj-+U%J<vq`i`lanZ5?#_AkiJaXU~Q<wJBMKIRt z?XlrW_kGo(itA&4wS5;+-KuMH{b_O4Bd#Bl*h(>e5{$B1U<X=Q<9|bNgE@g$_6yK? zRWLAYuL&5|Gl|i%Svn?_bFA-1psL=t?t;g_Ojhk^o1`{Ug$Tn{cM<vn^^Na#C@_L? z|I}sVokh^sT`$t+#)d3E{JlT6=352-kr-_J(@=Bsw@3M|bNM;_8Nj?7@U)Ewz??xr zdVEv+yyae=nd)qK>Mj<y7!GoDTOw2+fyJ98tE|MybM<PK8A5UZeOd4HZm$!GeBAbl zA*2=|V(jb2DDcVj7IL7_0~%wD(Ow!dJVEEf9oIPrnxav;J4?IRv7IXRlDK2%{7X*s zxG9wz6#-QI2}pg(+e?Q8=7~?ApCR*|-`#SY*v39?dM^6{7CRPBW(Ru+q;q?8r)+?R zXLpz*7rNyuu>d{*!{Ghn#q#;B(K)<mIYdkRpH}OkrO~iO9CZ(gf3=!9+3~w%z`B@I zks*!sQZQHRW)8oZnCk>ZFRiA6UBhaNP4BzyxltC+@mvdMf+<WV;@7Ufy}p{PBHS(B z>TaA5GqxAN^-WGC2QMQv1h;)FcItno=AU_+kx{H>9q>=Apqif&D2U}Cs&>!2q(H{M z2L-K9?4$DL0(qXSSFBC4tsEw)I2D&dZ&#vNI-DhZ5Vgd7HnE0|bMrBC_X`^15=QGZ z%z`?)o?YpneSnL)_a5-6cmpbYY;X8`P=-a7Uxx9`g?a-lGmnn6Y@%|WA^O1ztBq(7 z7%YpVABLlt<q!X=fsF;$=&idWaLJ5x)EnadpF}=1bup*f>W)n=+6!TeZ$9hL9Pa_z z0?Luk0g;t1upLwHFC*CLU>B^1!zU$;oy{$b`ez;=8u}0Sax8Zv*|irXF&79Y)}#7n zbt8FpKF|XohVZC}$L`+9(|t_wagZ=zK~HgF{pK-3u1MX#+HMVtLueU{i7gkIEnEj= zAZs2g#_hwR!M<aeQL?VFvjF0D<g&=EapWRA3>)Mlaaj<V=+kZ{LkW~QmY;we`0A~k z8}c}qnv}fq${+0WiB#q6w?7pxQr~}umubGaXsSRi1W%AxqaZHC5Byooxr9JFhpO9a zCEJRm-Q<Hx9A-qTLaZEI_gWygu($#MWT9Lf5$POSAYPP35T#Y0Pbkzm+4T)O43l{W zTBmWM*@(>6cuk=D$-u*68SAjvDzLJw?^qM(KF}efg@dbnha)u}heZtKQw^8!%6zSF z#<C3GQMMT{eDpamLh!`WfSmhT7AIRz*|K3o*-A}?-|e@YC%&RjmSCWj(z{3P;b}ya zWP7#(0KnxXXoC~WdU|=wlkUL5kh58`xJK~<>GZ>dI~o*FEjcJuvBNx%O8Hgt?IgJ0 ztEFp>anCkP;Jf*`vbdXEIZbxwWhCm${o9|~otI_Gz&)VAy@fQ50dc>-Dl<~P|JwL% zRQR%&Qb)5HDhf`OfZb(@Xwr0I-8hIYkE6K@Yx9(<(c9PN=47WO)s&Z@=KaPa8i85u z79%3tjo7`^QHS^V<1NwnddQ_`<pc7NRx4P#DYGM1x@Y9Wy*SOwka8YQBBmWnJ+>WD zaIISOGC8I*ErJ-`$xuGP!Ej8dmCzX?z|H_IEixD18Bilxb6%2Dmcbpgth?EWsi)&O zTRo9LT>Q9C1+^9Fh1ii?)8Dp2qVqY#-uWpd7l?5CR0s3zxeEQms{`3OVsL@Y7(9|6 zzW2w{Q3El97#*oUrMNf{)&?<BT}WcMa={?dx;Wj*Vn2*952NeWJ6O5P;lyGhreMM3 zBR&h@`d$5Y1?-qv!R*i=d-n=U4Bp#MbpZdXkeFjSLTBb*HjtifqTA&7-t{W!N!6OT zaMInKK5s6FrfeBf)a(+BxB|1pk=%1Tw$`Y0DRV%V&C)r|+>tPyt_!@1I<>4}<lB}Z z8vqQJ8t6~vAWj`DK4CyYmlg`_?^)(*&{4`Kp>9{s-;sLk<DM>Np~2D|m_FiXA{|Bp z*OKGfN+AqMJQAkk_|TeYxVU|`<!rfq8l1|Ng*r=&2RbDmwE}OPRvSlky37VjXi~%< ziay;-4qi+g*P(H4CEo=$mKuyk9Kl~6FdCB>EjD#kbz`gRyKg;Rha)3ru^I7k#Ib*R z9#9n1eV9P=6<*H9$0bC`RRTW9RD&)`cDv<Ua4M2=W=dboCEMcj4D@oC?ZH_G;T9$p z4lT@xm6=%I952Et)fSCLLbUkmM@RnlFL+o5?Tk}Ud4I>17R212ti0q-d)X-yi6gTD zA_AmY-o*>9^Y|z)Md+55y5pP5GIx1w~dmT=AXhlkR>vL<^m$MX_5&YI{JKs~e| z^K^R#?hQ3l8^C?Fj~i(AN+)c-c^Ld}Fj!sQEl}E?_ciy8#1Kq2JK=jrwtW||r<#&t zaF=%k&vf2DW&7(qzbVS$Lk19Oqk*|2B(G^Sa`~f`#a>BLKYJ^i{IHgBHSMI5N20x? zq4TVaeHjL}c{vTeM4o@1?G=IE>B(E&(c`R4u8?5nC$~lx^xK&}BTaRHbPg=*LpGN> zwr_jDNagq3_VVRAe42;{_H(mk1Gf75_+`C7@9QQBbcN=FTgLP-#nqv4n_b<GY3J}! zIgy<i>Lua?8abAlzRdD4&NYO=EFwT3dA((X@4!+R3vTHC`>2G>xL#{rt;D_(gA+r; zzU|{rFvk*wX5GaA?Z1;8*_{bYlNF^u4Og3Z(9?<CBuY*NPSgA4YpWkgwUNk#6h509 zm=fx?WnIh#kvQ!}m#HxqXW_%L)l<?Y1!}k8sHLx`IPxd*<Q>bV5ktbW0}Tp1m}E;^ z4k2PY8@5I%tv8HHZSU92uiVdt1Ih2Icb9WBZ2tmaQd<v+#Us^Xs8gieP6A?^g6^F! z%V0BilH%n<F=p?7A6QD-j4DW1TXHxb!vhu^IzoatQP^wCyaLV>RSbrU^CpPZV$Kb1 zy$ifPQP&x_GgciK_nkO130(z|nsG|^`qf<Ar#3tA3bUZHn6!P3Wgxc!)}CTWTq?$H zgf+^m$_|U5koIjRn>%KkOGQPZv`J**v6DD*3e-nd@#gPx%Orck5$BeUlb+8}Kq}i# z5d}<U9?|v%+~mBZE%o7kJ|P8XuM7FOSL(R|ZKB!z2<E@Hy+d0GwYadM`2(e?Gk95V z!-2Ea%R(b5khk@z?BlWf>%!Ud4@=kX+mOx<Zkw<4Z(l-^+il6-+j*1MC-5hiwPUma za+K}m9ls|z=l!RcQwZn5Ql*)&I2GYRUsPrZ_x5aiy(@yqqTQi|$}i;F(clyZ<ofeY zFEyuV>@Lv(?g`A3$@5_%q~LD2WDk8h!sAES+Q<~tOtOH~t--x$QZtZ1cOyzp_{M)a z@`6}*$e1|2!IPj$!5*k$xc&-*IF#%;D+N%y&1WcSm>OYz*Gy?*JaJ5$*9saKLye+K zErXg(Rt|!2gNIc;+ijW!KBF+*SI=v5Ha&Ce`g}fPIL3tGvg8qgDTu9Q=|#svpl4mG zROK$dJ*ZGtN~or=o9OFk;Ctue2{0Z;nGpK&^o>Oi-5@kyrB~sOw_QxC=)bgBE~bK} zq+&z1D~Q1^jaaoCzL+pMf0&&CbrYmB0ah&N73bR@c^zH=XT{^8^0i4ga=yG~$j09S zee?@}JW5!_#CzOpFo>eJ)mw5^=Z@x-d@p=g`Q6D-lWHkBGOWM_yT$H-3I=<_lPuTv z>dj3rZbL+Jo%);7>=|P~$6n#d3ou~tB+uld4UxYGI28L4#^?QyW97y_5cQJJ%7`}O z;pLDPT$-cpqs>^FNz~HbVYaI2SBs<9M~CG7ZkJtD_c(^ndqT$(f3Rx`wa74U_Y`$z zaE=FzE13alL9AC@><^L6{EM^t!b|MNk2?W=>ff1|-8E7m=*Gf9W$_^_|H;+UIFA(9 zQNh+-11#a14UFC4{DJ}H5qPql6qp1Q`3&t|(lBNN4$|p9aofCgg?o~?KBvq%Xy<Fv zcvl-&azvy^7dVmR#<-bYYEK_yv?*G%v^lrSKM^g6*r|V8x5+`82E`Y(F%PJ9BuY+3 zg%DU!u8hYQw^$zs*ZdA_-7sXV#|$Xk-BZK2{1l2e)bTK$RFraebF8j6L!t|r^~jHo z^hv0fzg;-9@;^jdU~I`d!YI-BAfd+pk{^vv@Lkn{wr1OYw~;dfFr*aR6$zuf9L;UZ zeW}UfAy@K*$*|l_rf4C&@}x8R$gb*wA<;dtUq!>Ew+$yib`YB}c<&ME+Kvd+9Avfh zEOOWM@yJe~THv2ghAs4Q`Cbvd32TBv7n+#3uIu1)N~r2Q3KC>2XyReDXw49Tmmy3h zldNC37jd_fz{_KZ%R2upLRiF3E_?SE=xWn|v?#HLOPB!ZjTD)Iu91dh&Uj9Dx6As7 z#u^&c&~um!k64Txz*UTO0*U`jg9*fU8`8S5HUTUcmIN%+i_AIfi^8~^=U=|=o%?NR zRcZIb6D&#i;}e_*VK$LAz!dU=5Npuk*$Rp31tx;yj|?l3;WfQssoHhsbyRJxz~Nc$ zj{f%}C(iTAOKfVf?B7wMkI?6y<2#nbyKi@tOpm0e_wTPGcb}h|34tE(@7JfBAMd}( zUEXis2TvCQJ3rs|vU*ymJDhtzB9QlAfagZ1)0rOLzdvsuy??#``urRm)!y9aNf*7{ z=<oRUu;Dns)HjzeelpSjSgf2;O4hR(ch=!IHJ<miR%#o!Hd=P9H+N;ozKXQfKP^=5 zOxJX;dOm$NE9)9xZ1HsC$Tsoc9T?584)1|&s=$Ef=(Qg+%r2(j=)4=_AXXb!Ql85~ zP3hIBaSf@JsfD(vDq9=wsLk7jMB{6XeBdDwM7rw-jOR8I@3XnEu?8?dbb@7z`~Hb7 z2g7MaS6kS*rkBYK$}Z$irXvj;kEiLsaL=UqnV|lYYMve>{*-d2qvE!t@)do7-}+J+ z)HeTePVc=FQ+e(|mcjF`9i$~80{cbjlGJ8;1xMw9SyAM3jjwt*ajy>i%r$Ryy^J08 zxpLsnd0t04fdXU+ll@t2mKxyo)pHxtbGwP`+vdFMc~SMA`CyD`tcfz{GAGlpK5L6` z<Gr?AsADxqM18vx62A8yCvD^p2Hx-&Dq`gBm1WGht1NL7SNuHyCu!a}?3J?~&x0{2 zIchqVYpTB+J6U$0H3AxG8P`yahGm&J>{Q&Z)r7~xc<;YUk%c<d^<SrDnSiO`Xs;+< zn^D@$=B|S-zaIfh_A~NL1xp`TEUvdZDtPx`s+!0Leb^V>Eo~-z^<;=aGhFUcR4w4j zP$fJDFuIG%cD1gtP<x{4BVK~ea}^UtG@B-pYNrvrh9~5$s09bmbZgnj3QueqH7xlZ zn&~A)a<DThu@B+>wF&f6(EPFM?~Z%3<tGv7F&B0_P~Q63V!v*_)#kmF5^@AKY+WLh zJ8=&Bl!EXdZXu7OL)><IZXGn?H@7{Pp;E`Hk;F{N=gZyAy!ThkJNpBpLK<oR*uuEU z&j$aw-B#gktV40FMGvkHwVTe`4q{z2dhDD$9&{GTqDkqH2eZ2*L(+XOnRZ_4%L%v2 z)Hok>yqRdwv7(F6v4QyQ?s-mYrvJXZPZuU}yT;P9shTCH4C5NL*)?-Q&EG?CP}P1J zsn5EH<gWBO!kV)Sd!&E??ifiaP0InS^Qeq2bxBshu<$;BD052&l}F7)(WQ{hc=}%e z|33i0X(Ck@6-OIIa0iPPXH}BysT4i<>x~B~8b+j*Crph}s=I1X{Fz}fLb?hSZev1C z)n)X#6;9>ons?k=##FTXfIiGb%-mSs&_RIWIa*8nIn2jyI8FY8du0<{iKzp6qs$s4 zKdZMiVe=|M5yU1PJ?V?!)kA)!(fAf8aah+(T9&XsH_N<*P+?D4+?$<!`l_hd8j?bq zuzgP4UvcwUJFwLlvMgrNb^~l`85dxE`$CBoKH=4qCrH>}ReIlsVmVW6!x4Bp-77VO z!hSctW|0PC)z|B!`}ePzW7=m|shrPwz=%`b)=}bK^?z(vORFBo5#8Tkp`{d%n0`z@ zwjtSMtzF2%2rC49Wsv><Nu4@XT{R!Z;P~XuH`85@^N<l4=blff-ff#D3|vPP8Qv}z z9rzy6lm-fo9>N-yC$zAky=t?%?N+-QPzR>Tpw2U1ZF;{seDI`Xh``;GOX2e@s{9<j z5@Vl#A6Ur(UvE!X{V=fJvza)o&DVEZa>0`~pRc&u-5V>leSBNZxVTMzR(5-3HDjSu z%b$nUm&TsXIJU;&crpgJk2^}e?wA9`IZG{_F`okjq8z=#aX;|2;^#qme0@+Nk8>C^ zVC!-CAY5J++gI{xJ6$L2waskL(h3tq-9ZDpM_-O|u#I4u{)8=cJ!FVe5i;cr=rYD3 zOL*{org{Nw!f(CE5lv~Aa-fSYwzwuyUiC|saAES6C0>T3WD6j;_Jrr8KdN?m(T%Gn zgCWCuCx7zviQivV?A`UCjpg5efE!zm1lg08NV@d>3|vEcn$*S?s%4;>g{V6HX4tM_ z^gESF0n2*9A&|(uJR0>g;i=04sj+*5BV|OU*Wm#fXazTiH9@uJ?cO$Tbnd|Sdcnu} zFU3?zCV_-CDFEv#XpU%@=HqxX)O2zl*6b2UlTEyt!6#0_Tofl|Y>JyOR-KEsOKa*? z5vVo29w7}iB|kCLof>Q83xsqS?FyK(<Y~4h%|Ml7=99t@8)L<c8)H}WIx&_-DJ^6p z@G+i!ga`p9bW`qJu>x;<SOv^AgQhm&Np*FN3Eb=`82Y1NRcnh4D+UJ_t_-_5J}x&4 ze~){&Wd9TH+JJ6Ua3J@K*#h|Tj;xjO;to{SA;DqIzqw%5hoP^8+hyG!DLBQfFjyr_ z!y~h`ZBQo{k}YD6i@_Wu7KiFq0XbX@iGpK)_}{}{V{3P>^sDjmmSI1%rPo{<ClYKF zVYnEBkgY1#HLj-w8`U7~COmjuFD`JDo}7+#U|%P;JsL#`co1jFji!V=h}Ll^PD~92 z>C71QDq!c2eIhAu*d;D<!bu&^fPa53(7Wb1HHc;>ix%o24RPT;0}l^zAZ8Tkq_$*b z4{RRVdQVQcXnG3cT*&M0s}mfC#|Td@Q2mozc4AGvIU>H`W51Xv!<{+4<8hGbad(<m zkN0Dm4Qp6%=5UT)CwG=oRqeuZ7CP9AKC@9Rno`5qCVWUPk>2-nd74M1=g&>|=;yEU z=kfvn{PFF_TfgWDWq95J=n-!V3xbE5JX)no`v@Orx46)4I5TgTI;R_LITh>ND7g~c zD&}t3kzvE8*Kg5Qb+8bLRv*8eD=UN$n`eL5kO)_Cq;BKyJJ@azn~*k)8di}@C4>cw zx-OF-M%;uM56|<1&!6|vLd5r=PBoopcG^Ne?^GFz`^ba%-ns9(_<JkIs(jq5B~w|t zmvSj_M4e@V)m~d0+%J2V%uk;#3SPO%Yx@KcG_m^m$+q0;SRMm~jQG;oPo6`EzQ#Fq zsM94d)mOSCrglXMp!2IniNIVtl@LtF{bq^5lRG*97A0ky$wMrN1}aIX27|*{L=FHj z2cX&W2RC{xf1U#t@8bZT&v8EEG@RdaSdMqxh2tN0<#t3ZxIL#-#zm)++`OnX7c)A+ z#XXJEwT?D&>!Zym+nIsj2jP{!y<H#h51B*dIgy9THv%PpD8rGd#9=YCm?m#OQK>qk zyS`vMl2VKK;^s%TL^;+IQ)1=9mKo{#1g`|8K3x-|>5fAh%o5?TaIHmbO9&Q>NbOJT z>Zp9U-RCw&&4at%>SV`qGYb~?y$AcBH#y<<q1ausB7H)c8Cb6D=D`a*3HZkJ$YFDb zuJkmHt<}`&u;{e}F1NKe$&9;D8-y4OY9<-EK)Fwm#sH<p<#=U`7y?Ket42jVk`wn$ z9zJknTosJuQGwSB$s6uEW$Uu768}~nxT#2-=cVh{NbeV1^7mwW^V!Dq*B`&Sd&ZPY zzbR5^uEV5y&SgEJfep+Qs^)UMU^|Sxy*t0v1UqMC+lYhi6tbfxZ-FZ(^T;JDm$AL> z$Z39EJ3r^w8Vem*_wpPL(WJ&rm{j7Tb?K}w&qb8CQy0NDeTF-4K5Z#w8qvi$Je@Wk zZbVw$v=-ZUVG_SW-<-+4@~o=HqB(b%kRLoTELht4g59ZU6HBC5t;{is_m`C+ye$UF z(WQpUZQsG`!8g;0jD~j{vtIS+fs4NUcF}OyT~nHpA`Omkq?AGCWRC=!36S&c6?|*B zJ0D|HZ%-kYQsM){-`vyr8&MDPaOj?}yE=fC?;h$fRCtb<!23d&KByUfY~H(Cg`EZr zaAe#th=<Pt7WW;!CN_kptBEb?@e&@iu12oNMu~|JG~c*5oKE9%=Bp<x<f6mvv@hB5 zT1g|84Yx@MqEt@`BY5|uK;j5yR;Wc=4ZZU;*+c$d@M;KUK#soHL5&BlvSKJy4qcQ3 z5C8kUlBmOg^d$OfOx+QztrB${!y<>cp$O=vmNQ^xgs^S5^L$(_PkMV>-qVEb@9LMX z9_M^ubz9AdJ>g`?8(I@(iqspJ{KT>%E4F%ipjog+i-1>ZVUr25pKFU@74IkPJ^^Lu z<E&fL7+D@aJy_l;aQd(uXy;fwriT(sxYNTx!=3#`FqqYb+;80c$br3Jduf5|dcidp zcz!tnN6?OT^k-;6Y}l^a#4#BM-tp_87Ms~aJ%QVZqXlu{Of?ak?}QU!;I>Ygf=3NH z%d)6J!mN41=m-dXJmEc}ogojaCGFrG9BGl^R5#(m!{8e_g=y>|W2)pKa?s)|f-)m5 zY33YsI)~&2ozB6xvOg4gy<lhH-IIdLcgISK&vPWKbO${D%4vOn*@}1P$tExAPOF%> zj4$RfTLq=z24Q)^?$yHU#<rm%t0xT7NBWx~5N$ZsQ9yuSVCWBXuStYzL&B<8h@PfD zDsRB%JBxn&4jXze4X*4ZT`Yp`Hn^6;<v#OPc)MjTRdF+jLL8_D8?YRksV`HYy3j^- zPdP9|33vOl0_{}1iPk^ibO>gKIHN|2fJ_{5qriG$jVCC_ahpAthv_EaX4O1VY4p?# zMkmE?KJ^~f+klp&G>8F{+?ms2G&IJY!C~f$v64U-Gsv`fMwDSPCYV_>CY;$cbRsZ+ zuHqId!>F5Z)r-iiPIr$gVy;s3o<}@rO#|B7hkNdWn;%a1%Y{j8@zF5#%sA=g7J72G zix*;Wx9!L3$WaM%w(8(fsCID87y$r9wgBMp_Krc@(2`*t-NcvAN8xhYJT-2}e54l) z$b7}i=52KyuxU^~=Wyvf_%1U^VK{Akwht?Dvz6<n5Y6_{hn+bt;ij9@t&&WEz*H;Q zSX)ZUm2a?PI=zI?>#vkT<Nf3Lxp6+n(=g)3>4%O>!jrq_w*~E|T2Tc8sz{*FSwy1n z2^-C(u2GQ^R>g|0Q{iGNsDKGWARl_r(uh$`V**ueV_>PpfvMFo;MDS1fWTLheqW#O zFU$H4EMQ?ye><Rf3hc?6UT_cLT$%d9*$P%)XU6whw1Mu66ZROVro3Z6i7_t6XJ3?} zW6Bd=hG+8h0ztjU^8>>OmM<%y?dxwRHNIed+)p!-jbsK5o9WnHs7BUfQJHVU!6xjL z!zQh6mD)N032I&4A1A!5E9!^cUkje@y`{G;+42LIp{?Eh3y%JNN_6YI6fEuMrh@eI zSNZebzrJlO_9g%5e+ajIFunZx{w9{_l3#rN_V(|OfByXC(`RAnk3T+%f&BP~p>Kcw z@ApriyZpbOMY=zJ`1GHz|9XR7eU?*R()+Lf(APA3&HFDuKH+!rbG+uizy8!;{PU|k zHKgqM-+z4j@m8ubP3;r^^G>`3FTEk46s-2m6$h3A)Vr{UrD~e2a{uah0GmdZ3b$S* zE8P6~)VE6p9R@evW_G*?S1<f|+Q+qK^<LcC(h5IjZoM@9YQ498Ot~0Pr@IIj3zgJy zaiWTFuS^s$pVrm^@@z62PYl~~o|aruYkHZ?<=xZAm|){9nEHHH*$UM8+(nkA#7%bv zl|&%~?<mu55Q(Vb?qIhl^6vbWH(}q{z-ZD|%Mnc!yrac?qzMRIFUR^cBtO5bOm5Qu zxh|I-S#leQ?)?>aJ%9^(C-pssd)Hpf{6Aod!JwFh+1xW(ohk7V4Dw@jrIS>*emrS) zW67HwE0peeI!;m;j)bNlX)jMnF;v}<6yl?SBc<T9<VYz}t}UgoEKC?raPgIi`9IuJ zeOyNQ#P7Yl;&rIL_?j1IoW_ecPV2?Z%XsO>UA;9T6y7-zDl}FE()%s~?R^=E@V-Ts zys0CF-t&=S*Mz8mmqw`U{iXlQK9po5c;R@O=%gY+iwIFcsFWW;eaf4K=Q)wrdXDpV z)c5nn!t>5${V-ml)fh_@!t6Zkv`lM%p|{(Du1s5&s9_UB^5AKJIc@Ts#7wlVP}3GP z4Z@&_ozOHttljzw0d}jyXkHy34WhS~vzV?RS9a0u-|8+Kp?J*#t0GldlD#FxvyCw0 z21Y@b@#e?yF|zv~M36iB{&J|Rh;xxQKX|@}vt)ENu53jK=$4K6rI=T~FBW7s4suvB zPtzdYLsq(?N`wcDit(g)$;0p=oceep+#CUYWyxQV-QZ~gp}cqy!E=bb9u(tB{8}<n zZlO*YtK@mpQAWY01jbp-f<3-3mdsYasg$$_a;44FJ8@V=pMI>AmTz`g(#^XMur#Pk zyMgQtfs2xF_*iho>%=<{JKEurTSO=)8x4A0ghg)oO_i;?g9UG26lTG6T_0MOY2EGy zhuD)U&%x&Qk_ct-lIWD-g{*adw+qi3{8nw^T=h!)aSVkzL)_H36BE@;N}{}I!PM=M zc_(!ocI~U4<MHGrmN#P>eD%q%@qX3jV?uLld9#)q`N{bg8w8hkL2XhZFNc>JNnv+I zD+GIaQIWTo7ZrO$B`N5;qq?Z~i46zd&S9~~dw3{I9xgOv96pJYy_%JOPIN;B6`jZO z18ou(I=^L#9+Omgj5KKzJI<8Jz$c!1VkL3iOoRQrZe{`Ru0nT)v#6_(^~LGvbukXO zSzWI<)ak0Nc$8VWzHH{8L%y7%uKuT|q^Lc5R!Z98lu|WQC~>a<Wxx4lR?PI@)2D8{ zuJQRctl`&jm`2yT!SFXc-Eals=>`kb25+6$?r%h{$`><K)x6!c_s)x<>acrTzPRO3 zCWr6*5XJJ|*B3jU*yMHLI>W?^RfInedGW7>{P^jhO#}*;Uu_mHAHMmN8#!mmc@Irx zv$m8Lim_)cwEFT*dXjptfy^_@M4;C|Jvrr2*%j7+GiPIhaU^Z`fZPrX1j<o-fN|bk z#wA7UQ=FE9i524Nel_@IYJR?o|2K-eaD{8;Q!ZC*VVl(xJVTt9aSe6O2rbt&=;7s# z_A3`&?#u>VqjsJh%8S?8;1b;4+_A+8P1^%rG;M2ThFer_^2OO*Dpz7l2yd!b=v8eA zoY!SNUtA>p{_dF0Xb!&KJ$Rt$L>x_V<)gd5S01qqNV=-ptS5)Yw};GUyNFQs99MX* zNP}-JktQ<J=q4=E>|4-fY)MfT$~6^{`mCCZ&Udg7=*0A0J?XnIbeCt0hcBdy8(F{I z)m?_`3%$SGl4Xo((NL1ge0nPWAg_9~K=0PMAU1T!&i*yCrEU9oNGvHcLgx;%d>Lk1 zd1kYHGY7X6nRBnM&oR6@bnh}`@>Bv*5@Hij9IVmS-Yj_DSnx+Sm1}I7lG)ahTZPzK z%0uA4eO(IJSrV{mUA8?eJ|Si~?vccd_C*v2FDTDDJT9k~A-7l09{<=*S{=!7DUW2i z@?SCawqouvH=;B)avP<z%~d9Da0V>B#A#-+aDTo!;}<(gvRS@5(1iJB5FSn0CJ8;< z<;Kmzx_X`(cr%_uO~WE47Uu^J(>J#c&*+Xb;UXu$s%W>RpLNy(o_X*2X8N9lE62iJ z)5Vont}tDRd3RvX>)c^J-r3_}`wI)`yP`%ec17pcZW#_UG4--$hx(;}KM@_+I+NXh z>(lw?@Bf~sf6jmZ{O5oAy8=5VRxZURh}tiYQGrvT#Zo?xQ9Ko!&Y~<<*sq6IYIY^{ zEtBag@GWzt;?N~D(sd%XDvM{DFIg>A_<T-LsKTeRSLf%p36HWQRb7KRh0akPRLKdn zUqAB3Z7LVPmeX+eWzsAg@hw4J$63U$!n3NzoU8LH;#c8KRa44Hkr06?-dAMKz=%j5 zk&zVXUEqtE2{<-n$!%<SWSG53@NUe$L+b?mQnR@3ds=m?f=}E{6DO!bZ(X=bzHSi0 z;5R(wp8}xOJw^&p?VlVz6*Xxoyl0%J=&K6)$B>=y7D%3I>XUOD)&!|n92}1?bj9Vb zQC9IXue$4FP?d3(<UCSM$4#gbeo^Wr<KQjBFnLE^c}2%Xl)WP(3+UEJk~eeY(3_nZ zK0*-Lzp9{O^4Gu0pYxyTMcvrQC>iAHAFVd}PKDu+mph*?ND3l$88boIHm&}VFXW$F z0S~H1!Gbv{te1JoZjyB@1o(If?VUp2hSeho345Hdi21y!=3SIM_Z4j?e08(UL)+Fz zfD2&ah37(nd@^<@RQWLX#}FNiVF<aD7?v3aH6^Co8O@h%{)CvqG99FWZqV8oFDFVW zXpN4zL*T;R?<}^>6|B?pnoCl>tbBZuc-dy~;ZDn2ps&$n3-XKM>6ZAisgI)My+|2_ zt{vVau~;9(&kw%1n#+l|D{o1s5#%jSE6p$0=}vpPn?BthI=roCXdgV|ho6z6D(GKj zw32eg^T*H43D^9ZmP7{qT)QPcVUagWPLf8EQ;boa`TZTD&d(>z8{@5s{aN>Jhu&CL z3WQd~tKQ^Pd19<w%CV7k4Ajp0e890jJ}?JvET^R?SqZDZVDoNg-pUKZ`E@kn%LO0y z#uK#hVk2&}vC}})x7^iNG|=>+DXtk*9IKB*RETQWsP`~j>kBDI9m+Sz=FbLa4U}&1 zWr5U5^BA2kw+Z*+1!ow;WI>lpJcr6V9rLL}VU0IG8989yP4tTeFqgJY{PHqf@bb5F zJi)9Vv5h40I+qQ(^PMmGF?XJwJD$i@Vu4zPP}7c4*VXKtHjO!OcD|Hx#XLn6$9S{c z0ywl1R%>yNr;CMd&L#?noANn$48O$O7tMlmc=|f2Jh)!=m1eQ>$g|w{&6xGhTH~>v zp5M1dqZ&LUeea|{9VZZ{)d~N)&2a#dZXX+1;+A3;D;XlI*j5UBY-GqwT{le?kIT!l zPL^2k%2iRPo6xgm9x8OS6Z_o5lA5o-Mv0w$P@Ffu-d=C#Vg2>%G#zlItI39Md_KI& zQRXV2RF6uXxRHeV#U;XO7#jm{h4FXOxW3qNVvFz`)NqGyTqFH8W#eMw<35t;;4Gn8 z7hAeW2;PQ^2to9|q+WWILQXx1p|+Q6ia9&;(z^N4rtVoW*yCL2C<&hZ%(JDT;nj24 zu^K(xj#?U5@?Z{gnyI+;yj(7Lt>6iB#8G*<P+E(m(W_EC^Qad1&cL_b`FVH3FYelG zr<qw?GY{-Mg|WaYSa|%6-R}wM&IqAbE+ccjgTVK(#oL=^1Y?lY>h<b_=I)NZktOc7 z{t2z&V@P9o<TwyM@~o2W%|2$zf%7kSZWkm#?0jX@v)Oif5f%@>?T}N4f?cq@Ep{Bn zEjZ8Gw%-dRel4M!Kkoi6xet_-LG$h4GPZ{ZvTqlW6f%?M+ejo8yUImuK2Z{GsiJ~l zsX}^v&7v^-78c6ujw^KCx46)K-|~(!(`C&h#20DjMiSy?XTCb^M~gr9lT+m{*K8i| zS%V+PZPfTS!A%-%Y)4$gqiAR8K8)dsYyWWLv&w1Q;5>)Tt${o4%z_-XU|<;doKe{Q zT0gNG04J+0qi+(Ye(dMIh}7y5)f?*v1<+w5GRy0EM^hIc8)%xq(^DBYC8BVx68Yl% z+}E%;otO=e!~0Tq85P32ikDyFJ#M6+u2;?mObNs6;v88}UO8(n=8;twe<mHHAu2*A z$1`rhC@v`T!>LtMxm}Ezl^o8`|JkmZ9ZhZ<c%P@(qhr8>)^AJ4IGan(^9F_&NZ|2d z4LGkKN>xR%KL-Qseg$>6B(hj6K1<_s!yMcg<_$M%`9jWQ=9V4F!R#Fj4O$D!XC!uG z!>h_ywdNN*h+DLx3+G@}iOa2N2_wlXb|ZuNMmFc5I1Kq<wJIwo`YldYhARbRrO@rx z!Aa{QxHX3ouXKFgQ+&Spr7%}*zW%h5{pI_ww)*qO+jcaU{p}yA=G_zOX3xjxn;q%0 zLi_mT?T3GT{rMkX{`T>ox1TIe*S$XUUe^B~U-4L4kF8(V{POYNw;#TK|M#E2e*g0K z_0B&(Y^586<G+9W^1FGizIIIab_>Rl*;cF;Mn9W-a!GfUyWHL`-R%q*bHgD&nAhW- z^9y{}!ag<{mD7EbRA{XbfCUS_KFGn|@%SX;`-Rg^=Ay0Uf0k=slsvCjOZ548X-l-u z-X?NAhqLV-dyZ~;dW~>3sQ0;fUPXEWV=#xf<r?C8un}bB^LTc7-XF`7DDDNKp0l6? z{ivv@a}&e(8gFVG%_j`TN)#TWWElMwK}?;^oiSb=vxXe_I&<W&Gll+nrdXSk0e&_z z#Lo@_`OU~Lzd8Bmks&`laOAJY^}%N=!5?>QTMrZ$&hKi{ZLfMJ`q-;o%bO(u54>G+ zpg~>+>^C{5g_Cew>q#ow7QGgxlLMe3*wUQtOC;JtV(ZNLRrlgeIL3xm9eiLp3Ev~& zvd72NC*{8E5pH1>M*)NgE*#;#j+FXfS{9}H#xSq7EQ%RSDnv_1>NhW9`giq>Z>Jn^ z4|RN?ac@IVgp6DmDo_>~!a5l0udh3fup1fcr?C<*HJsM)qU6C7&+BqylkHp{J^ln| zpgI-GJ#L*q8_Y5Ad+0rRnF)kZ9%nu|wzU~jZl!W((P5UwxW%19SimzFS;KP#YFS;i z9C&A#JOnQdj}dq~DVE~(s>2*;Z+Jf5Z@Uj9wTZU&-KXpEbsW6~j_V*7lV=AXz(qJA z2AA+PBF>EVEqSSd))wrxkwRbVftHzyywCoEnbu5>%jyka2;bP1e_-B;T&yFB3P>r= z0VOeVz1ztN+=fI3qp^%}O$2w$0_e1?Dv*v#vwXD5;?m3Q3LCK(_(80WdpM`THUhk~ zS}6*w@|%*8Vn9q`?h)c=3e@@uZ$WAleABBIa+3#kW*+k`^}3~uEJ5PF>35y^wT(ck zg>%Fe)p4C}J)NFx2%>JTAYeL;{>o9&3xw7c-?3&w^aBoB1%;vJL#TH3QfM$_rHB5b z%2K~FT(RBg&-MKBe2R}3$&D`;eXgKc-cQ&cGVt(*<&^T+i<BfvN|hwB((8*PRq{iU zRV68uv__eg;yI=qHdzCzWmBX~SvQ;xd%)D?XjO$J>Tri6iu}R!2{&)YCSf?tunW%U zk`6`>y6KXR@vX6iE$iBY0vN{Kr~rn?srZN@MDz7;u{rx*=-qcPi#;5aonQBYFYsH_ zHXICB;ZdUNP*4Nxtn!gVPGo8VzG6ych?H^}CdWPSM@8>1QxqISGdc^!VTlTJ%LXq& zdYKm52pDo^fvB=qH}fB~&><^laF(EwuJkGi9qE1<WC)?sf0=tG!@4B?mcjNJ=?+Yp zw9B0}<#;z9J<PV`pJLncebChW7;JfdOm;-S6&j{rn*H=(CYLc{H};6G&K}~;Mt|`3 z0iG_|g#Kb90v>q%dSF)zij|8=i%Qc_Q32P7Qo#(>V}|BK`1(6^FAc%|#1)e4BTb7E z+<lxGPfSCJ$FmF(zorJH-PoRZmSFp$t@{>B>hnx5l5CZjZnmbMp!gbw*bq1>mD6;0 z$bIa};g%Z1*oS;bD_Z59+e;gD+(QJ_k`-aKa6fhhS?X!=Eu>TKz*UCs!SPdQzP+3$ zt<8SAmQa5Gb+7*afz)Q$dUiMTh=k!B2hxaF7;~b9LzHtqRw!Zlj@HPqAHHI}`ao(R z#ep<mXF%QS*Sq9<>4U)%)H`1^fE-EF<Q&G4)G@n(;TA_y!zuKZq@IV?b08X%;Sw8{ z;VX=!>DI)Gu4lN#k<@UBBWY46gKQqSb<<#qBk97?k)L(+Yk!^n+;?NY_tVf0_-Q$k z9t=C-m!sS8%hQc`aOhSPN{pl)Xj&b|7)d=ZbV{DbnNN;svK*q#i4e4C1}9+wAx0cZ zonCZ+&OM5*bCYh<zup2B_3U*9-U0H=DENjS4dLL-kd)X?6fn$<i4KZ$qaZs|lA#JX z^s$wzI5%1@dzc#!M3-FD2u(EIr@^Mqc8vCGu*In{si&cN8_aQPJeVBqY!u>f$Cb%& zt&;zGd07hIh<?KlLO-H&a%yx4GlLt^>FBmJLLLnIB##|uMuoO0EiKNB$_p)-a>$v{ zQ%py9@HTu-2npkLnpevaL-mgqqAR!-LbWfAvzQu<$~jJrM|RPYjx0M44J>CSgZ;!i z#9ybzSUI0Qd-><Bl5!1QL6xPZ!8y;H3dcfkLUcIm0R6c>UY;L0;3~bMNqNQg{2fe- z!4gf2-=C&M(Sd1+mzyuLF+=EeHl^mND&PD8YVz*Zmi)|a{bl|A@yqYf!FwzG=N60+ z2Rx0JGP}@JjD4%hIoZrJPOck`i|%%`UG_tVv>!`Y2XDN*#)68!^%FpdU55;h;@xTk z^qPv%(-&)AGU4x*zRSWtUD6JNcFq_kM<DiH!@-S<R}UB4IXd^YDBmN5#c&!SZ23}5 z32eW6geMKtP2fwpseJcFa7X7HuyW^|D3x;$Ja(?>6k{0dtL+3SCz%PvFkkG)jV`E% z==&m)<L@$e`Z6=?8#D8MFfzjrPUiT<KrFwvnsqykZ1K{=HgkySVXzVZ$G7Xt`rF)w ztgS^O$>$rYWA&e*WVASa;qD7Jtpn2OrA>YfS1S}4#*&sB=BELi_t?-7Ac$0i9Z-BL z+p15ZrE3dDnOy^m%<u%RZjO7zZFjOW8FbLqXOyw+j$tp30*sq27LAAt_RBJ<=)r~| zO=SuvuSLvTlZ|y>J;}7f3>c1;EZ7*CBuhKDh&v`P^|<+gD~FGRrrLTPF;0SHt)G0w zzehZfQ{8ls5sHM#P0As1gF4~3?fUabkFHE631q4vQ*^Wu&zR|jN5n&!rJ#;A4jeew zcX%t{(htiF&VD!uJLr6+AB=eP!0&|tV`u2<od*+6eC+lD9#33x6j*)3ERQRPvuSqK z+3LIQH2@3Y&PpZNDUr;O$+u*vM&=tXBjUatfjmgSE^8Hhfx{T6+f1uJE}ScCpkbd7 zHhPh|U2FvNIX`9L<Xm36UDT_^^|A4-N&tjhsWOCBITsDBDoa>}r{`+}+4y-h3*X#| zyvM__wfNx|&JmaQ5$;;Z4}~I=$qHQtlO1+QvjR=u>WMfwO9Fc=%;h|DNPN!VV<p&R z6v+8-2_5V}iaLoGpzxIgZPigk>wKvop)cmkM?OWghSQC*RvStT{`BBm5UuW##|uUG zd5Wr^k+;;)&(8X+Pdv2F4RU?rl;iWard7u^$Ng?KW?z3uL@<|`W;5!|c$Wg~Qq@>Q zMbJ1(DLcb!fnQ5e2L-{c32BnXPDE7_d*D{+`Bd<sf$3l>Iut)z-t9{rqhmlBPDdH? z@$5K;yL?r~I*4x-uyH2Q+0h)kXRe_e8hl8C;X5e8(16kaMwA0R%P#E@P29iC9<PmQ z0sL6B2!0J(2)`yRhKGR`#4#<3hm98I7<5=1PlMr+Lz-lfltx)3#|8Xh*5$ASX~3pW zrX?WCD9I&bM<z-k^d-p2xPsI;7`Rb+ff6uIC_M_=!4SMP!2~^A@eA^4(B-s82=QIh zP!#8ty>YaAWa<#5{R~$VShE*f!|N<om@D=b!!MKD9oy2v!%10~cQICrXC|cGLk~O{ zEmC{2gZfd}Vg01+z<x6{Xuml7x5tJ3{oqXu4<p@yhnem{Ng19LdAnLq25D71!Spds z2%4OT2VTFPIEp7(XpkBw-A)^ohs=-l&~L}9jWdi*FdVfzGpb{-Rt^7;?kd@_<hX(N z{)#@%7#Jawxz^E!eeu<O6MPT`-G+o|NoaZbeUl85$$F3=K=Y!jDi<yh!44i@{#;Gd za`Q%M3cKMl^ZO=qzMQL|Z+DDmc9w7V4tz%k9-;7lbQ$rf%~XbA&37SlaIR4#*}1_a zXg)8x-kou?)9vkXlXH*D!HAo=0TqOA$19|xRZ3|{*mv(pa`9=_C@#iTy1~R#Z}-E# z|NddKH#m1yZ}4{e3-SOA=KhxP?k75=J#u?IdI~P%x^J&H&m$j)X>azFR>;D+9u4<{ zBqh%<b9RElK%x<c?ir1w1p=LTC64@0bLV*h7ssMB2ScgI8O)T7@o+AddZuRGU`j|q zzEH}8p`;XC4W;D^U+&WluOQ?3jIKC3&ak=aH{fgn92z&HOAZ|eHahm#&3?q<FekpX zS(i8&T=F@&S)YSpjVQ6NRz$EftW`vA>yLzC%_7of-69ia^&(S@b-#qKoN0542SY`p zGGH?ggb77Gd<&22Rb~#>YY_G}>eUGR;EJ?$=U}|vor3N4ZqfoR5R;RngG>}nSpq_M zr0QqVr4z=b8hJ2OjoddLys`>19`1nKv$fpOP;w_|8XFiAOyQ5A&>*v;;EY$4*nBqf zI|hKvR+&E__laJxj=i9ZjW}NLj=dlJee*KDJe*E!Zbm2$C&nos-i*}2>a!@B;5t(% z%%(-?2n7}pej);G9xxJd@OEaJxnImuM&gN_i5%{IgVs%#6Y5OR__l|vIt<mNRK8C3 z-Npkd-YZwuKH<)zjN<YAsb~{T)1rf0k}C1M57MPMe0%7w_ZU4xJp`ZKZEofD%DiC% zJ?qkC^zE{Bo{xUV-JjcGcfaG6pARQRGf$5=E^B7WV_{}0LS<$uUF`x4E4cR^_nGqa zKtpfGJZf+?%U}3wdj5Fjr+;~QQkE<HALx!dK>BAiIpxdy6T8<!*YnHQr}F&rzo+j% zeZ2nm%YQyTb9g>|eSQA?&zHYHec_ib?#eG5+QM!5@>l(g|H7Yr|LOe)ef#InT)v<1 z`(Lm6&xd~gx0k0@ww#hGED}z+aK<{uA3kfG)82-hd}>0!=yQG6nP%i!7qin#kq5mk z^kP>qkmGpRR0q?C9Kk;^UJ`Wv6ED;*j+3sVJuYxg#dX?JZ7bebn!d9$YWWCW4_oW| z4T3G0e+X8MYuA<p_eR>}v0Z~^^-_fnZ_C?umF~|g{myY?`3*-L+v99ozOwjAG5O`2 z)W~}Z3|=@N2&h&5`UejmuKD(`*8Ah@_l>l0`Kgqx2q$b!pTmn*3h&dOfBp5_k6(ZI z_m98){QQsCkN>`Ye17>!s*P<5Colj1x351x5$R!?Oo7BFAW~^+`+~g@%>2@%B}uUk zZS68YK}=&^@WP#_E_om^Yk01dB3B;@wTC4`Lzl0-9m9rcfr>J0FGCYgMW-zZgf>3$ zdz?XulF~bG!i3qmM+iJHgmokb!FmGeI3+1^#vrLpa)@4=(TX@bQViu<O+WX?Q+7RH z&#q^S)u-I>>^&yV;%6I#o7vI33_Ni$@xOX8+`INB(T}jyUNlM;G!gU>A+0Fmh`5lM zX23F1xtJnd=F=mcg6U+twp<P8aWe(7uXpvSfS2Z|^_})z)Az->IEqkLJ#|}Tuj`%K zsu=um<Ho+Jop`jVrq9FGrq5LfX5$pt0HDEc(>;dfqD^-!NL8ER&Ljx}aSP3JW6w2H z83;C~sAY1Vqm0hyT4iT(6yez%MH*+b8jiDDjmO=r1>)-H5D$#?kB7~=D}w6X=P~#0 z^qhG2dd|GNJ)zP4mhd|}s4mDWazF9c(+ESh;HW4W3vQ?=y1{B2aPgJc9RM$CbxUQg zZn!dReloQ;jO`j);x_XnOioICn0DEmB3MamB1cp=7F$MYjP)!F0wZD6j<OI>5SsIu zFf^!Ku$n{ZP286gR6uaJaMig^B#JzpT|3)Os?yy{_s^?xRN$f}Qi!4M2aM<7tl|mg zA6?;g0u`k@m~dKCK9XY!zPuQ#95Zm`h=9b*cn$eZFf4DvsP!fZQ4+My5E^3`uCeum zr7A$kH9CtFqwBW}r2@f%TW8jUW!zCh_7Tm#20`<THg|qLq_PsOzB`r^R+wpb*4KQv zIemA-U3%nPh8uj&b9d&0nM0HCHrx;!IP6IXWyndFmJ{r1Gj@U#cWbCJIs1lI^=Wr2 zQ}ObvQi3jQn{uF<xb76lo`USp1kQ{JD(Gu%_2jV=XSC*X?aNlH0cXOn?Qu&kr!iAZ zxZEtn+pBZ-RBlUD(vXz032-&qZK&+F4d38YuO*g??$}s+tK?263?={5cCt%u!>a5r zZCZ>4w5O{vMuWJQZMcIHiZckr{&I?!)RuC%sRNT^HDnh?E#|ssF}TC||59FScZg4! zHm7{*VD$hxVF{t`J6z83%BRh_8=AmlT)o5MuU}KC9`tLfl5v9z>37&14;7ee-l3zJ z6zZYV-q{>%w2qS)<C#fqs47S)EMU+~aNuZ%Fl9t6Gvlg^SC*NBe!;OC;nuFFj=~UQ z(+_<soQK|P?|9wlUu@CXM=ok7`4MU&Sho+1zIXKz&!u-MsI`P~H^z-Z+!XEvH)K>D zD~7w!$b`*FPSl}ktl*k7STJQcFgKWFCyZWi9m}^HaNpU*a=BHg7|p^;$m7zF&yeR* z+HOJ;CU?1$j)f6yHPz=GkK6mhqiE|Tn`{_dZ|4ysnT{J!FSDzaKtN>FuD&i0GvdS? zJ?9-q*u`|O6LrY~<B_w(hS0){EG{odOZjTP-Bv@mnu)4a2;=5hCW1w#f+#S-I~An( z)#U{&1-FV%Hd@dLYr%`%o%4=yJv2yTy|eYY4jI#{l5xY}fb(~C1M)sn!RHY-H!mB* ziUfO=b30t7cspqD=mZCMTMi4%HhD*|V_n@tzclNspU~@S!#^M5jMqGgHRxq9kXOnz zzOGY41n4CvQ^t0C;e#B9_W|N{y@OOJXzSo*aB6)UYh=rR!*(;g4n~f(Vx|n-(@~uK z{p2nd3D<N{mzwDHc6xp6BTWhK6V)sCg3DjR(F;l&+pnehJP_%2p+z->4j<Tj+O0{p zQCbIT;f2UsS%wF&vK1XD{f_IY@~{`y1qlyzVMleAkVM!QQK>qQyAe#3@Zg3}ksJL6 z@er2Jt&`~G2%n{BCOCaUSf;%#IkpEA{Pxh_?=Fz3zePV2TzGxL8<_kGMj#;1Z4RqN z#zHrYn`?VxYdy)1F5ER6>KML2ASK_>CRxwGR~!uAAy{vYd7#Z|t7Bde3^=h_asMyV zMuHm`E0zKbD}ps}t064Km<h8DV*_(LQ2*|~2`BcicK0(hhY9I0c20m{?VJ$9T-@hU zML5^RD46g7QCoC$uspH5;6ozTjA<ThbE>Dt#@NUlabGMtX|=Ie%AmTNPgNmiUaw|V zLtM%lm*p0_3h{-=D5i`_morTw8Fsd+2;A|(69#`k2&#YHLFIw<n4y^ouWfkFqqzxp zyuVbnOrjIS>9+KCD7@f0Gro>SIp}$^aD7uucdTB3JPtaUBs^u>aP_o7CSjR#BnlW3 z3>LqIPDL)%HZ&dBj;7nN6`G&0rBmzuq#MIqO25o@sXBD@lVYmCYV)MnY*ZYmj(#Rd zZG>h67zR(N?aOP~cmW)wW2!cW!`U+)&Koe72Sbc6m{DOHYr}yyg?*H%i64&(gRJ5V zmtKbPa0-x|4j1dK9Vxgvd&p|rT!~T3!R@>Bwvbd_Y{C2mo-miOIfq<V^TW*^{Irci z`#x6{NC_5a90caz>ipbtU?D{(4~*3+2JTu0o;Ju_q!l6<SvSdyDlth-c;W2xCdo;u z?#A`)p)ud37hx~WswZsiccGum>Jt?$44(uNMqN_H`Zh@@zC#JV4<7$#yKGu4>1`;y zpI>p8-7iezZ@ZTH+GO3kkkyceK)NU74dm}fN7AuXmtkP&hpOwcW$EZBuwF(fWsfZK zH<F6;O~B%aql<lf!fXpy#F^$2SdaA#IQVvSu2>C?(Ty#z2j2@$<M`speyBE%t455_ zH|e^;V;xhD7+=S--?Z}M>13b3I$0be_g)7V$PfJc{l}NBZ1d`;W&*6j#qNj95bTzj zs;lD|Qz&N}Y9<r=Pj6}_y<Zf2zC~V55!@o>Z#FZ3E^kZSowwG4Kh&`eS2OrpS@Q~g zy@@^-+JX-5UMFjs#TyiuiVFc-nIS##{`B>+m8`XclD_Q6d??j-weVxJTxW5V_zEAF z8t!p(ZK2xE=3A%#tej5EIlFrHu_J?dVXPfDj23O3uwwEEQTHKf-%76eK3x<|EnX_H zv~%aeOo;PPVmZTa&wOS}dv$U=LuIeMG3bQPdb)4qct58?j<;}VbsJ^J1Z}#Vh@lUg zDq2L*i}MLMRBna~fhyiTGN(1WP;d$tenfYg0$UU;Rn9|8rSoG;wX--|BR@_H%FS6S zbMKz%`)F1OJh)fM4vQDj4x1Mlqv|!dgYGrD?}Rl>LA46s%HaaQ`wr?Lvhmxu^uRyU z4NWI~SX?^r9XYytpM}yuTIKb`^lb2WSMz;Lje$gJl{-&bK6syNa-(J^u4#iNj@2#6 z3$5?M?=Kr70=Hm|TiVuHq*QUx1Qso!MWdaUmRMrUr(&lq&svX}Ht!l*uCAi$;=vXQ zDf5Zv?5A?W&2-TAuC_4XRN+c&9kLDvU0J2v(Yl--i?=PQr8>hdC5%rUPP!EsR})#C z{-9IMGI!!k4d?enE=_R`=Nhrv*BT`oDGa=Bv^dt)VUkI|*h=K7%_4U%s?}{P!wq89 zzwJ>%VF3quwZN46;dT$sCaU?=<KK9esP>mdjlUP~R7zNX^s|>yxR>ncTgfg%+Gltu zv5KRGLyK&U5TlLPWBW$DyoUeSmabf@jle@~7<kgf>M5sHAS7^Ek83<tR<u+Ye)XGo zOI)|0P4|^^ytRl+d)9t^!Ns1{mg>OyI6T`5n-i`r@_g&zERrnosFGS9#>GS&F_*wA za`(7eSCcIFZk=c~H1+Bm=O{gSbwO5RiW+gFvf0!?YHV3eO{=kH-eA|<Q0c)i*qn33 z`DW#uC>C1L%XRZ`qS#ck3hu#FkOOCWhl^UZii(xbu$5+_Q0i2?>QTZA&&v@`WQ`oU zwmTR07o>#<%NAzT(&33(f>3W^CwrSnrt6Ik6vMzZ*fusNwi)#Ct5L_V8(=(uDvdij z!68WMcw;<F2d*83-S1Y7pE|XT62uN1#jk6R*xJ}#lUzxgUE>y7OmPvX3M*w<%#VJ{ zQz*Bf@$gB`Hh#9E?ZetbZuzthSgbxyYspm~>`nx(5vS#vH!c`BoB@r_@j7h}SjXv# z$`PA&J@27lO~lPr%Z5D{X7U=RB?mU?6waZeE3eb>;Z4<`ES@#tVz*<6%;zw1bR2;f z-^V=YhDGuC7Z~Fi>`i1E>EMolOs?|8;q`S{pbw3(HcZ;Ovq`OQjpH779=Y1|_>3b2 zMilyrffUC$)}7Bq;P*LPM7gs%&SVM`d7X=gLrt6-VAaIIUK|_hP_CO5Nvo;-T_I;- zk0(<cZ#SQ$G~o|wJ-}Q0(Kg%Bq<HEqzEVr(q%-$*X;|g?<xAsO8`XegDVz9Y+NnD2 z_@=W>Li@<wc#xBs_#GnLsPxpvTG3Chd&nh(`-)(;(Q{km?DsqD{`P$*yYDj}4r8Vl zrkCX|Bp|a9!;oZ`?X~O?Vmu)kM_rdsrzOr2cV6Lr%5voRIal?Fad&J9+&%k8;2aOn z{<Et-@F=@oMI0y4yW9E2?C$8bvb(2W?C!39@w@v5_FB_K(Qdt-xG=H2yKi2n+j|yn zH{e;i-GV3ab{C%G+kJQqY<D6BV)KHVm)xp3sokhLn$q?{;1Y3|1$FBbc-ZIMM7j~{ z$($5@nzY#3f{zovVKd(r%ysn7AF;kay>FttEp*ma0|Sz0p*3W%#{vDi!Xn>k?A~6- z@_Mq?f7qNs6~BG)6jQMTUs1>K0y5tb7_J0pH)In<9i6j@_Dis3hz%qa=ATmmn#bX; z&^ZH?qHGbgK?t0~paiybx0xU?Uan_As4YHRb`UPM5_jeUVB*f4YuK4hgJ;_|EuLfA zG<m{c)8=6vMo-jiay>!S!S>vN&AoxAeVtc!nfCKa3rxy584&ql6M|=xd;DU(VRJ~e zBDLDb$wSNsX`HrHq&E9$S-{p#OT)Z?PkYD1IG~-w+atyW?OK})a+Tdwaol;1-Fy{K zXU6QHZOuD3W`}YbJ21C9U+Z+S$YB)OUC>9B-6fTaae3^~W_Q)VIgCO$tIrPP$DW&Z zzxKK6u+3d;?>41vFJLpA-dPy&!W}l-Ifoz{5s?qs-q#Tl`4a|Cq?gH{&7*;JUPZQE zOiz=5>bb0f(XB-ROTbKhFf$q0>%_{+z9eO3dQiORs#UZZO<2YiS=}$Vv!XA>%6hlA zt>)xjbg`%nb*n~k>q1GXu0J&{F}x1_3&23y^v-T%Nn6QxE6Ui%Ih+V*i$@1X92AiJ zgjD4kg07ut--z|8gWAT<^)(L+uh+WZ&Iaw7J6F7=2G*9lbIV(DXjO-QWn({{>he># zYxdHhM=s7Q82pll4lf)C0(+fKU7rI5Sm%?#YDj$miR^fVai-*DX4c1@z%F5SksOyI zE9$_w4Jf!Ce;Ux}I9n`qwL7bobtfFzF}35PBlBFX9UqRc&Eh5<FvfB48uN7={<C&| z+>iPB%VWlgQ#TuY_Q$tBzJF8io8+JVfxJ}j+wtc6=Qqi)BuW1M<J;d}{`B)zMCaw} z>mNV<`%n3^zx;gtE^EDfJzoF*{#SXoCaKZyVsw+7>iy65>yBT4$Dc|5{GTlJ@1H;a zCBH8(kB`@Bi_Dk*JYL7kA9SI=yvr|#oFV@I`;RX*XtKTDRiVwlNm}*ZSr{7FE|qH5 zy{XIWeYyn@zVQBXJ+MOR{bJ!Xs7xOmq8jeCk8EQQ9H9IfcFJqE11lGw2zQ5hVU6SC zgHw~3z$qw!du$5`+!io_Ia75=8n6Wm2-ZxhNzKk->0P=vf4^p}^}Sq0pAMg^S;q<P zrb@2qa=zD^HG=yr6^VO}S|yX}4n&na)3q&3z%@<~Yf<&tL9QjA8xYVB^M=5)oErpR z<J@p9F#`@aZx4K56mW&*L;y$lnv6KLaVs+al(0=1k8CABMjcj7Jf)0RX`L9zG-eyK z2vr+f7{BUz$oSS`ip}s>*Hd1PaEjMglMR`?USSm$UO$*~&$zK>4_{|;aXBU*Kj*2* z-7s^xTV^&-!_4=?vMv}3uNnr5Ma4j}=on}grQZW<mUqOO_A6w``vp@Gc>i~W5RLmy zyCHUeM8mnUZpChBhLw%R7kjDZXTH-2dy{OgPu%udH1iX2Hs#LOm!g}1szsK}PY6vd zs@?Mq3zaDi<#|)Cz$!-Njo8)=mpvUc7}M&zlUKxHV$p8E+?m)CcrNF9N7uQ;+^R*n zk}u=2*@Q`*1yWTHI(*6#&LwiT^#)Tt+j@hko^8F&1=kK<tdwGGl8-bIoL+S*Y=jwJ z1h0r$<%8=gM+|$a7_pvshBH77u5d=>b!Y7??w-J-+&LMWh|2oSW6ZrR<3$W12YYW= z)SePsN8;)ipQm+LBRC?r+xx0bBX+*Z-R({ob_bl}hB>B3K}^om%)Jg~M~sB}@DM5Y z<%dNGFVEKEe9P_iW~sk*a#@GBaRa$+&&y`(s+qMgt*+LsHY)ALu#2dk+ilox0&9*P z1410s;iBxD-+m>rs;g<lxMRPY9j|L*z6naAYBsBzL@8`q_K90nx$4?8UD`|-#}krq zi^6FO<NxU{mz_(FA_(vQr#MTnG*;a&OAKsS&kLZDf60hrEQ7@BQ+bKZtRA6Rcs}=; z?yAbH$O!Rq3%tb@YzXNP-#4F(sX!+|t|88p(~14bD>A0W<I25xVE3!(o1DFI7n!m< z)a8nI7=ZI4S3$;c^9+qfZeqH|G7c4BG9D#}wb?K88e7z%n6Kg6tdk?KI;tc#R>ltD zXaV`3*^CO@%~35MapvE20tOZ%S=6!X1SO`$>wG1w%Z4vu_t6a0syPmOszqFZPj98+ zKR=~zH^qlp&#;*3Xe%u9n37e(HV#i5!)DAQ?D|+5JGCYjCtW<%ZtJNYZm3xmuen0W zsx_BXxLUVtT0CLV2AT5nhKAwQ=*Xp?vpF5=f}P8XU!Ph8{rZGuPvYN}zOJyVB;HTP zX11JN!)CL1@^o`J337X}zsT-AIbzWmRK(kn9b6BN&pkdEU$2Ky7<Yf4vaP)i7b5Hh zLKRrwFJ}Xx!&yQIBZs4hjG{8er*gBo>IRlR)XGA%(Fr;M&?uMy9BGCR5R#o<e84cT zkozW&;);(C(V+@QB$8*?<=Z+O17|4exFoQt1R7=^%ufsSd0&DzW0Fu(gGd_cm8h_1 zT!4$SB%Eq{8Jv)|Z|%^+R)#$7QTz{AT{>Tw90rGi7`>Cr7Isxjh<R!Z55vdtcM?`5 zp7U@91`@w|Fu||V36vdd+Knar96nj!1{+;du-(g-0voO?C0{keMu>Ig#%cJ*;p&Z# z@8X1+73|267xZiq7XsGhm4E}QusjpFcfTyE)B^J-NyeE|5PAT92|a?C+w{xgk08R9 zdb=eq-mn=>_D4{3M`XRA&uXpe@b3;+Yx{8c^_Evfmsc%si77nm-12<Ty{cwu2i2dr z!;&@`HQ6kvV05tOOmaN_f^CUGKHR`lPPl7f>viDlwktxacyTM%W^+tv)?G?FVf|AH zrPnA>vp5gpJ|Y(qN#cTrU-J8m7&1p>i7gfWSYwTJrDmRro0nFE5<u6azD|-BzQI9l z`5F=2oa?nmdcH5=so3L0kQ^m)!=A-=98P}3kYFu<Dln=;s#d&sEON_h3q42eO%#n~ zcvRDS87}B7;vG6Kuvjo1PH0?Xn+Uh-`Mj^uTSA3<EW+7t?rzC|3t37GAsijC8bFOd zFo5$$y|P>Yvy;ShHs?R-!5WuHuLviQU5r>)!*!>b?^wNUV0%to0Z)bWbhudhatns= z#r_P*4Cal_I0bWuBnR^s*`#f_d4%w(w{+a!3*V>hT<ja)_b;d1uit;BhcEi`?{B|; z<SGf{$i<t0mG^iiUQk`gt+L?5oNKf0mR35<<K)V&0wyLmc2?v{v`Z3;62-t03OP)x z<><%spvw-*w$EBV>~ut&$3~_2J;WRONnJOSYSz)jBHS=W2cuk}M28b_@Z#|6nkE+( zZ>wobX5Dbqx>J;9U$^F&5gE3PH^a7V+qUtBZQHhO+qSI?E5nY+h^X=Z&R2b^x~hAe z?!M})z1K76p3j_Xt()H%+a^LBQmyC<G%AF{ke-CihRvmpgs}LU1Gb$g8~x78H`S!l z^D!!kn>t<A3U4_g{RrD7SjQs6x)no#BZ;c!Rv71+v^#wC42sYSJ(Kzp07B6#qoez0 za1pM1?~5@^IKLLw+!^OD#w$oru4<!Fb^k&$0gOmun-B;sq*Z`5su%rn+XCIpev+Q2 zxL@?@VAs6oYwBBQZ4oXR$^LF*`z7D}%R2dW2*J<V7y=YvN<^d%m$G<IV)>6+8meIG z7?^|6qCpx+3cvZ#A_{)*V$4tEmH2?8K}KT?<767OeqkJ7K+CV=YY4qb?O-zgj$l>7 zTto~@l8K|sd0;h15!r&xp*}sd@lXEKa`lGH89Af=HPr}d3FBc^_k5CUnw41y7JM4- zHS^?={lof3CX?tcE}&i|o}m`b<QYC}4n@$1y>MMkxT=YHMw%M*487A>7?}msAdMT! za2mF8+U5W+jt9hX3I$`*aWofbV-#T7rk^g*JtG>{uBUu?kGZO;z>9|nF%{(fO(FMd zP7?j%z74ev!=oYJkac)zb&>@XxRVweEjxxu4uLpFs~POBGd_QNK!ymJy5Q0&Fuhv8 zh=ef^B1>Jl93tp~P|jA91>eJgc=z(dp;8KNpesQsw4?3mu(Kf;Ba<UARs_w}V?OSO zA<XFzh%(17!)r$;-GY=2gc#F^#>tj?k&dHP8++R|S}n&@7$Cf#wUxJNmvocojs;M? z*3B!wg4>wsg$mB)Mo|hOE$s1DN~V$x8}0zRq_lF0tctQXpWpqrizu8<XENR8cF^K4 z^1)luD+r@eaKn-*mv$`rlgK>8hBV_Ho-0mch{hmYjTnc%Tw|df_3N3`A1EV!gb*2z zFiIG=q<qBm%7TN7blD^C(K3-RK;cT20a<rC-3%mD=?1Z-Whh&7m6|@C-}50Z9ehJO z=zd+q&Ro>72R$O)QE{{<$33DaHE4uh0bwCZ`_2vl;yK+Jpi!_kjD<!bO>@J4OL;P* z=G=^OPO&}If+X6!FP{VAvw!^ocd92G-sC`*G?aRMQ;g>vyhJ!9{}_uaJ{z4@TtQ!z zJGTkxNjO>`r92-|=FA={NGPnfA1?lNHy&s4M}z1ds-YPEP+Hp8{ooC$w!pA*=ci?T z<Stt_Z8Ld9ID4I9ny{4p<!t0b1CtVl7H1~wgj}s2SzD3D@g0r>F?fX8?G>NS-8-eA zNllhp6r?KaH7EO{<4I;I<Yoi?$(_kx9VO)mhiI~O)s=ua+_qOdF3k3k7eVqTCk4eZ zYX_wL{?^VvIM?p@Xk-GvF%U6O!9x0j8Ih?ZqLn0MD3+@GE7k>sv)UmfaXZW;(>g{Y z@?E`k!CMY56B)uxN2$87Es926<;~f7uZP6Bn-F~mo2N05PEKkA$VRXPFJ0_8P7DMs zAY|PrKwR8oIGj;Vr~ErQ&^@_k=Eh`ww+t$tS$j56+mvgcgKfr_g@oX@?dg&g%(48* zcYxWytf&2pCm2<5jhOVT$Iud-D)8BJ%$-`W$<o4^BM#8~w0a3W*}-$GUnSz?k;7 z?WBHs50jn-Meixq9MCKr-Ve4I2!qLzb!%30k;+t##>KUGV`PHg4W167|AlI38ZM*J z0YUXg`Y`nx#}LlEP;;hX?5D_N6^0t;PcA7T5f{*#dq?7!3#(m`J7jTUYbTrZ<HDF= zlPEIbTTxV$wS8GBwG8=X9^b?g+6;!<Q7qSCmks~GC15J^NJQ9}K+|2&UT*`Js141; z7&nTj`81=#{N`19ZO<9w<}PU+o?N+9ic{7oGAZmz0b{>r712gSB}P+9lS$psQlRG5 zI!svW=7=L;iPP!eA#|U|U4fm>VL|hNq-D?3<F;BhC?i-Y|70cn>7X3$lncR+d1sgD z@6<3g3)jw<o;TsJt;nt~L^1WgH=uo#YMev<ti?Kaob#f{DDFN3%&J9}Nfu~YFY-1+ zJJ~W#>YNr!%R*S1*#yV?NEJ%tke+e&7zX>dn|^VNiI|6+sYI6sKIFD~*tw4Q<%A$D zeW%0I;NSuyL*dHRx8A~(HLQoAdMc|MfBmH&zK?Kb+HbgETiDfrE|<2yhllA;(EcZ= z_9*;nf<t>t^N`BvgwA#biXD4x^pH=@N~KYYR#jx3ox{FW)=&E7R@Szi09+PVwzjJT z^cTmaIUOD}9@e*|IHyHWCfa9M$-x``yfA*BPmV*T9R5>&kI88pZ`QtE{@!9jWvQp9 zr!B~@=e;=ozgP79pKniPd%hp1^m|`ldHP>ZmxO&^hlh3g1rRNF4pVMwMF@xV30TX! z<tBD&i6VXYj{0Ys%vHG-VQb89ZszR#_4e6)OW$0MbafYhFJWdX@9R{XAZWwf;Xjtu zqS7lMzW&%J?IG~!Kh~C>JpHj}(X$M7stodI$(p%3Liy%(EAP{nua3HWRWUF1@)$cs zN2%0?T)h0+I~)V@5#D(DefNGimASZ{tWp*fH*?Zj?i$s%7khliJy@MC9C8G9_<|4J zfFeKSZp1gDa5LF}Lx4eo3c`T8ljM(myQ!<c$lNHF^#km?J2!H!+*HYFa|fHxH5-yo zq7E5zSCW(lxN0jmLaI9XX6}gU?`=_jcQzM9mBi#3Nj;2Ac+F-iDK!9o2&1D(L-P#V zP^B`ZgQh6Zlz=?w^uiBx?&%jdIPnv!@s`;8eB9&BRc&0?a{sxakG<LT_IB8NSfk(O zC#Rpj@U!HDM}fd&z9@UkrYhT(n+is+%T=3hT9bQl0jjxn<~=(-<Yk{YJ*<^UR(!4~ zH(ay~xl-cxd2S+itK(Uv&Bm|Etqp5DE5BKm$;KwK&Z<l-rMm8sb2|gGs3P_8N|(64 z@GbauSDwxbR;cZ7ZPhOE7%<Xhcv|RgTfBj8TB%jyQDIbjLsQr-Fxzlu!^929Be$Ig zWiMsx8u~lEcb+rO`^r7OSl6W9Jqzj1Fg*fUnl!nGsMk5*wOqhM`dGVJ-){YvzvOd! zy`>^v1v3II@31VQi)3hp;9Zg0gH2K$Mr}w}ad9_(@1K%`&#&j_+6~utH{=NnarE*^ zl81L=bvOLo9xro!{GTsje%{K(BFbVh0nel({N8ii^vA&6=RCLX_uH*BeqW!&P0#Tu z?+4onBJ(4uo*y^+DPwL1E{tD^XHl}guj8*DZJHRV8BO63=MoE!&mEOY`(tBeWnZuN z5A^pBpYnOHInEzoxwc!nmK?0NcKUpNzBqA+H-4Dn4~Lkal-H5+adURN=e+abPGU)m zt_h<PdhyP~(JGtY#+ui3?zdUE&->@vlIMrK(-nwkx$JuxqAic_>KG9mROO><8O_t4 z=_*9H87gzxl2Oa528*}3u|a`U2r`jXph=)&WVFmX>B)ISNvRulGB9`@kQ_{uJkc^R z%0x*JHmB#K#r+AAyhd4)`<@1i_IfkV<KF%Wl6_p)^y!bj|J;~lOc|<zq`??|Kd<k% zEG=h)wUR?g7PX0Ww#qZG9X@~4wMrq}R-DS*y1_rKl2)actR28*9(#qlDG>q+r4uVD zhb0?Ir<S0zEKq7UY>7@%V@elgcik`=7AA1(0UA4K+_+bFS|ppPPN5%8;euq=a3-&y z7_~T}-pLCf)!OEoRw7d=ZPIyEZpTvBLQvWq1gK88-F)LeKHhx;rk=;V${2w<bIvn1 zWAFAn)H-ZCcSKvNn&fog(kl^K0}vg?T9s50`1eZO$_A8_>)1T{B^V@*r>GiaZ?o*T z6=C*z6OCVAi;eYDWo}(Qn(ec_GE@C2rdzt^cVqjiDP(qIr(DA^s0mbxcD9h!v2qm# z`_)Ao76$E?6lP^+MX@&eW{npTcIKQDU~<N%os-hU$)F5H{YsptG$jw6YMUK7A@04i zLOY|H_;!aivu#eR5L<4p5#pns<A-MWtwk63XM!&XPsQ$#UW?sByhUE18lyL;f!wx= zE&=>4hQdGdke<dzl<ZAqQ*fuBK`Q#1`{eo|lR`Bko!EvrYJr-I^|~wD^Hg>=eg091 zr6GfB1CrH2HVopd@_KAO^|BhU-Jv0hS(8FM9LwINf?QJHj6RxcqRr%=DPW`soLn@- zMh7}D+e;hG9WzQhB3b3sUcBeon^<1giyQH4u+vVnHAm2?L8bO@NFho*97~&~f?>G* zX_&@=8Mv4cSf^Oz=&qfG={#5r);U5rPV-zvNVBHxt^R41Fft3>+*K52ThiF~=|M>L zU_1+`TuIV+`+P+qL1U4p@G0o__jM1Q4cGc<vC*R-vEeP^vCKi#VIQ#$$ik?%Og06D zNAYXg(9uj3i{RY*kLU(vb}6c*#IlCCCt5g>WnNmK&OmL_(F!9=Xa}2LqaQLJCkEJf z#Ji-For7tqk!{9lB;62IAmaT>gbU^srO3iWD`v=gdf7!GR=B?<h09Hfe%mOwHP&A; zc?VG;2~JdPH^5(26m#3?jeA)R*LHEBJ*UfBb!;cvKv_te<6@;e=BDnCM#Ovj$6wRu z-Bz7<ZxmG^V~$l$&<%@;=lG8}#B{iwYgD;e)agld%ZUDL;*2-k;*ej%mm|F6lB<dX zDg_=<?-|~Y4YZ{(7AHv!w@`>Tb63Z9-A}Pz&o4lMJryp9;J!>y-C>iti>(`iQyHQ- zjsJmOpTbT9O@E0&l@ZN=Tcae7-dhZv6sv<h%XAHG8*~WuvP_BFx(%bcxQrLI#O|}9 z16iH3n{IWx4meWMN0FvAcqeO5m9>RY_fI0JOl(02c49W^CnM#an#aQ6fP{dcLuLaa zh^>P(tymvFJwfQWszK3V!c<DFA)|1}U6sRS*A)pM(9}AJbKZlm!&Js_U$>ohjoBZf z0AD;TT4_$vnq1J8Z!RL>6i@twOPBtpW>_<t#fx;uIE-<hAZ<Sc<541Q8%K)3YDH%Z zp08NE<*x9vtHRD&d0QPbQk#=8v<7HK|IpO!r&b{@zIeP4ZGpy4u+y9Yv2GDQk98Px zj@wZTDZS#u=SP~HayVWT_{g%t=aC;p_W~Rp@u{(l!uR&}6fsYD2?nXl*`IAWr<XTH zwFQN%8ZMq7Sz>M*vrk{wv4<aU${E3XVmqI-3>Rjkp~JV;d*sw0z>Yea?rZC8pr6Ob z*+tA{xZJXEG-unIh_v_(onRB@VJyV}^BN_uOLZn-U**8ABT&WrIXSMIn{fMbM{h3Y zRr)VQ-XeSURj_Wa;d6dX?JWN#7=PqGZ{%VlC$vbjq_u@HuK;)Nu?@Sek!d5SXM&(C zb{%_D`Ao%GMF(M5H3<uZ2pvsj%CF{$T?C;cHEM>%s%yht9+G=IWr8`{Xgg720sYfU zBXhV9*wq`~kE7rG+?Zf$=5A-{9~cW;A*jGgcL1oWBhQ**k3J&n<eXkwq#x($fT<ww zq-pX+4LXvD;E!;H!w?&&0{So5F@qw%bvERU250R^^}*_0!OFFv8BqIcz%>pbXy@9T zG#tTjv8;bmczozml-Av@Rsw}xu;$yf`)jT=#%q8dP7RiAUE9z<fp}XO_&W^pf9RwV z@vR0-@oZqL%txO$a@whMnWrYGoV|@zP1c?YC;*o$tkjv2O!{Tz`G-qf$wloV*-u=? z6bWx8(<WSRzXdDyBw#o6>+t^IQlr~Jz`N588RJ19wBNlI;F$&E18TC){>;4edx&%+ z7;{=UjM=v;>s)K32;Om=#iH1c?e6PXQOowPyCZ?u!a^i@DQe0W+iK?_(1h*VUTwkv z3`&!%wIteV9YBnyU{?yH0g;rb?4;0?Y}z=uRYf^DO1K4^RHNu<Ej}K!TROj?7DH5V zhxRRy+4FE!G9i;P>8a$;hYW4kp()8qWPgR3U@1m|igPSu5A2BlaHL8frNzJM-zb9w zYL_b7G~?;)j+VL9XHSup{2m=wcx@HYpm*95+c~t{0JFVxhrz-lcgb$Y%l6?Jt4|D- z!vL$Y*>1N&c3+fm;I1I)&v7c6(j^uv13}E>13KebT+kWu_gYMuI}??ZPCWb9ykT@% zdNx(kZEFkmS5GFo_t~OH-XJx+kdhe8h|+r0(cg1RS*cq0{frW92WBbyXJ8&C(z1Xs zzRHF|aQr<lH*&x|+ZCZRK*Yh~h$%`SW-Hs|fWc)1weAFkB)Eif9)9Jz|74@&@4fx= zHpdf%d)(^s3jPNF_4)k8Y<F_-UY+uzz@GD^fC<c1tyFHsL4@+e43~-|sR_}gI6?H} zF87uy9DwHYJR`Pa-eg-*&#b5Vtk%M2lPtJ+VnlVnsM;I>J;EwD_OP>Q0zcWcza;uX zW8j*hQn$;0^`(i<()xWc<qLIhw{Ln;<HX739TF!ETg3>}Su*1uZ9Ca)dN0(9y`fqg zi-l7QX>i@HSABFHj4Ub2Dc|aCPExY!q{k4YzVx$6la9lifDgWTNB3E#sTVpfx_8js z!pw7F_C}%U_ZQb%hxq#<%Y-GfYS7Sc#OLCsN=7&UaH`b!knCW%-1nxqT#@PHt->L= znwgN5#q}B)P$Bcax_otiZTmIwa6$*ZSE5!VCgUvjg35?LNEeCv<<PN2k0tuEcLcSt z@Rem;XE|Qsn40vj#kCDYIH=UIceoN4zgR_1m=oRoF~y1#M>5mgbqayHF!AldE-5mG zT_IE!J9bedMs&JYn3&Z1K(g|q+gWHE|58q~pvYmG{F?N4kd;hVp|6H6$0Kjo{OByb zn#2q%594R%J9otNRr#;@LY=3HBv*N#xm+HK>fu}s#wRUytM0|;%D7EjSdoKV8;8C@ zwo9uj4vQaEF7t&GwP*EFzvx%}LUMtK*7BILO@AiaKTLOf^zrf%7Z7%a3}=3lH4oIl z*4+^9xN3Pw`w)e0uE53XaW<aAgeBJZM(U9M@Jv?fP9*im?Oax@5WZPH{u+U8!=4eu z%b?y}rCdmZN%-wMe}G`l-`mp@;x%If6vmcq=89#qPX_M@akjH184=XueJJJ{+Lqm# zNqp4z{Dhp#)WB(adGxZ})>?WH=Ql@AI=!Kb{g}5E{@OloZRK(6Rb7w|2YsQ|DfIP- z!IUlG>kJvg%b0Pekk?v`cvCyG#}v~#Es6X^W$1nqWDHs>K3&=+v62_PB)0ta-pVmu zlwMMrChd4B6^07rZK~Yph+3BFtyD=3b7(*irz1U1={WqeQ?^c!J&RcrlA`x9STa$& ztK)A=K2P9ai~?8WhCcla>XH^3j2TYQEo(h_OeX2_>+m(uwU+{;RAwsV{#LZXvL52= z!PXW{ht3n6CVfOiX2eQyQzm;ep|fVMP8_>MMn&R1i5fCIb;Sk$ctwwgr`b&<Lbzjs z50Vbbt!zN0uC7x#&)XsPEPFRcsD~i`THj0xSKfKCfEsmze9sWa1{WL8F7DZ@t;A-T z1n4HL2rk{5gyFgdP@j!$4ynILOm#@FR|*~3Uhkq<;<fC22jF7Ty-vDC2W{3dQ!NYa z97ZQ@l0l@&6C9^H<hOb&kk+!;d`xq;I5}lAmUmm7SjF@=RJhKc6w0p*D+uo^%_*?S z32X0^c)$@}v}_Jy3G*}atK*6-#k=2qbk292GU!03VK{OmPd5)v{HAF1zJQd|*T+4! zw<tERn$waG^?YAwue&?S*xGPnjzvpf@y_)CsGAZ6$`d`lkdhYiZO9y!7~f7@lIY2v zi0<`OX3WoUSuvE*uHUL;ysxE1Dt%s=z+a|y)d{IBK-T<T!TXpAbYMP@Wuwk(-VcF| zYoV#Ue|r|ctO2#%yez73WZk+t(g91qjiSyFvq!jDSaq0oAY$qds&P8}2+GsfNFgfJ z`r+ijUdeIcX(mBLfUW99iyaY-i%B0A;4JQ;LlM`6guqbMaCv$yjMC`t@{wTl*cx48 z=q=Ewr)oubX)%*El%)R7=fdUWn=|D->diF^m7DvM)L|m+Q~)MHg2!sQF8UCRYc!9X zY_z0JEm~RLCR$tGJNj@qDa54j<?bp3^Khq%sX^6t9fba(9#QYXkiMII&{tx};FrCd zl2?do<iv8z;Lsn6wP<#kQm>-n@{en_g&eiLdMOqow*dHJMO0sdAV%qDPVS?dj=en} z1*<OMFGg|Hs%jlQ)AasH0!aLMTN|{E0_36Y2w|~4gH>`i>iN+}^DJeB>In%J#%<zu zGd0}8a5zJAi^J#RpWGo#!|QCZY@Ji&&k4i+S!8``#$ZTMv5t~a@l2K2rTh(I1v&8f zPk;A^c@GS;$OoqCTk!Q*bKtgiIoVnVoTP1{$YIvW5VsmV0z+pWhtaYwCjw|&p&@r? zqiv%D$ICTP&@(9fhv{v8sA*#IdJmLC$)&8;#v&h^mVbTYm`kx*?tI8FjO@+@FZl@Q zU;R|L`cj>1UUumZ#nR+z%HFr)$mJ1_HX33s%WAg0GLOBiRhUaxr}>=l%K4Sj(QEV+ z{;MqR#u5r=jhV#9CE{0Rd$B5c=<UAxA5q3$A3Le&(kII}TAFGQSC%PFt$if~T)Ej2 zNb3Am;ei)h(dBnZ*pgIC6{HU{qX!qQnyeL00LV<#2H4>!)L^UEZ6RO3Hrcb7p#Hw9 z)i3xex11Jxr#;H*)_r@{tY6+uC2fYrLx)=yT#~`OG*QB^8|6URa>^O-@?&v0I}yJi zqr%dmqinHa;HtBh;;2{lRD}Jrx65%fJ9@FVK&7L!V4EZw_CPkwFc$aQB>~n6rZU6i zfSDOuRNV3~n`2SCH%XbI%WIs?)eB<G8{Kw|_xT#L`f18vzodZ5F1VMV;ob7pfChbv zt<J=CxUw7K41BjupjHM$RqrQ>E4(mK2d^m`OAmBV#dhqs3>4R_Dq-_S(oALN(##+C zr^6)X2fZG`yc)wSmVJmP4(HKqgs&oZUq8KvPsF+mOa*S6`-MIJ&*!Hk_#o-8CjMr+ znXTRTnYx?2;z2s(*SbBv&#Q+#-(E>g-><tv!o7d}#Nqw*_FOf-c}iH<*5~(G<*lw# z+k2E}LNZbJZPN#A`+8UZd`RT~CP#e#v^|US`?{1}{Cs=*w7p0g*6{v%xn%cR*6*FP z3)?38{^sBFO)ne=`OLog{iGDMqHABNXWT^?d^isb*32nAe`;+2Czzb+`Md0)dvonI z*Z2n42fiH{lsb$9(+EPljI}$p<?PaJqeyM%Qx%D%XC_q@UaQ+$w(PJlZ*%p_^c|Bk znaHYQhfu?ltaoR4WX+RcRRr|fS8r8>$c#(+(iffI`VyY~rHdsczuoeZO@SC`l6!Eu zGv+ef=<>ZPyx~BO(_*L8??}R9HA&c%dgl0Mw*nMFT~6!UQ}foxTgQQXY)z2jFU^RX zAive!+dx+NmBb5;*{&Q`BzrQXq&HaSo-qZVQ3=we(TXz6^2}2*(Y}&0%!u1M(K$56 z@DlHLnl;HK@%mKQp1H@JgPxB!Zd6j4;oW^R4X_VRI?v72ngQ((Ug#ulRDj7|N<I9U z^htnEl;EZ83|!-BhM^TG_3sMgLZ`lQe)y=XgqYs}hZP;%R46RrNa${i!m3*^&b%IX zJUDM%-VqP%Xs>_!qfUFmSVjE8)t)ru&<1zh*G)50zbbXIWYmG|y7Tp0><N}W#ofG& zuI>8~oPP>c09x0#DO0GBe9u%&-)Ss$7le~Y8rVMQnNWws-7>E6li(naF|(?qV0W$U zQK2c#cOd|}E}>EQXwSa)q_TnzR-3R$YTLL7Ved7^-qj>>zA$riJ!s0+kep7?P|~Qq z=30W&ftp`$JmGhf-7KixVd0}4g;e2?(Sc0z-70oG-t)bo33VOzHpH^Qt-q!QTGgl! z2~75#rv2G`GHLr(FUZ^I^suL-4kbFwdRtzio7NMs_aN(rr}UDgB<VA#X0lNbtImcJ zQk0fvqSrb))HXHdIDJ>3ic@XtI*#nRY1$7Rrf^lXjEo-jIz%x-Itu;bCKMVZ*Q>qQ zx9Xm!MWgs|QzJTf&+KSq+O|qeafgHKgze0Xq*3UZSSVT41b!*&3B+XfCLD$`D30X* zW>lEaCQD$XR|%n;)Bjy+U<D@XUr~1{_!Gh5Wtv;kR-ev}ZY0M`^We!OIu%j(3E1sK z>h=;{{Z~)(Ermz91*>kl)szZ#jpIF&!&@uSd?;bV+UeF=FDs}lX!yNeA^USWahkrp zBn2YrZnE26{XtM3p~_6MR^HhTVxp(z%%82CZgae5Wc-(Gwl}N8Xd15_wZleqqfd{G zSjsvI?dFCpHs!;V)al|1u*8_UOnbtyExdAJ(6l)H%<&~bSpwW?7~EPO8aWGG@%b<G z2QMP?UYlPY!s@i6DU5+VHDXu>Rb7@$eQU{jGltH9^ZU{@#;6}Li>Z&nXkq#kx7^;_ zcXFDf9o__T$jx7L9~*>zv12Vwam%AAJa_^KtXBgh5*lL)>}1T>J?>UaY)uqM2Iu{< zKa-?P_ajlU8fdJ(koRSkcU$VtW%SY3%BpcO1CRazAJII1v28cey+e#~^_r7oc-qk6 zO1~F`t0fLR5gSYp3fNrW(l5HPENHK39itGJ78Z-Ou*U&4pcAYnt8k;+!gZ(M=3xTx zNmxU8m6&dvA2dK3KibNTQZ>wO&-gUu!Cp@xpv8D54PQqg{5d(0E=-rBgFsB>skqck zoFvlK#x$EFOhX~bS>!G@+qwI&J?#D@Tb*vR3EsV4w__;ii9mCPu;Ikuw*^K7Dg&fS zm1O&Xr_|J1spY18cg)+zydqAOdF#1h1->Y3J?khzD?*o?&dzq6hl;DL7ZiME!1y)| zAbC+zCO&$UH6MC_l@rk#tHx3gC%+=2S{89})RTw=TZ@e37cQ}-9y>?7EHGr<wQa|_ zeG~zXGbR*16Cb;`Qf5N@g<Z1-&GOY(sJ$773Q8xdse>!ozn@b>2n~rt?7)Ho8@Zy; z95=l9Aa)!cUbLfK+f>LdgSA%twiEf7kwDAVAo;Y#0tL?9w`C(~B^0&IV#z$QTs2d& zkS=f3_J(R8sf(}mGt~Q<IKPtDaKvfc<GA1u+b#+{o5RD8i%43S8CCBi#};yZ&!QPG zHlJ^`NH!G#LAt)Zn6HflPZ4zjVO$Ag=%=Y0+p#!D4TH>aa@Ck=e&z2*1?My11JUs8 zbD{1Fxv}^3@;+1i*fh&NUPlG8WcgK+u*V3oJ7-U$`jvj;7F#p+QPQTVD{{1jV)0o9 zIb8NaNVpKoY(k2QP6&P~^F71vN<*pDb{F@0IDWM+=8)s&&&UFu$R2L)nT(lG(LanB zLyr>;W6#mN`h1MDwHij3W6}G>8d8^N`y31EN=MywEPC$>of(JI^SjAqzxb-oqr}B^ zOC?@^#<WgtF~^j`et$eahWM&4QzJ;G5sgH5=Z}OxgwEux5(*KlY*%ceyC`cI#S(V0 z9+$Q{=4U$RybIJ?0u}l$+D1Swp*xs|1)u%|&Q2jCKyi_~(o<|{I!CyJEnJ~9l_G|< z3yEYEMv7=LMnN5{l`L!LCZ!Oy9a%T{UKwA9JW0nId6_~V6m2Pr6pZpvN+YD%iUexH zeK4|yUqTZ>GlxqsKRC8SKcv>^mhRKtrdUZk^pODCy@PaqyiY~f3Y<(p^M=tdcB$=v z@Rty{rawP{HKDJdIzET}P;gws0ZpEy4UJ>5JwnoRh4}SO64;r(6Wf;S=|S<-uI+a1 z`LqP~gf45pAHh;nYByi)ByFM@(IbM2>WD+`kT4(AsiTE=YeFOAuBfd0H1ccGJ)s@k ztEQdAYpPv{$EC|40Yt}l9xO32@46NCTe)Q%Wt$Rf6x!Mh!&;7E%eeI~^T1rDA3D*# z4Us}~nr-~V#JV#wI1{e84exIVKCmQk60e|f6WY9#I4ZS}b&}=_W}Nh{2-9M7i%4J~ zM*HQf|L-g0E~;7AA>GDr!^h3id-m>U(d`0cz3TQwxl~6`hwYVLjDy<dD{^%hcw{K$ za7{WY^_f|xqCBz*FnG1;M2mgF`#s_qoQ8Dv?O7Kk{F$|ml`Zplw<e0HgUH-;Myi;e z4IUz?-J^5hn6*Y)4BQWlCqNBC&zvsPU1C>XG7j800t~L48gUDD{Gq`tF-6sQj`LgK zhe*hzYxS~u{Bb%bL{C8_N8GVerTQ<ChL~}x$yV>-b+1{x@wRJoWGx3+$hPN+ho}be z)$6GBtfoTn1^}U(=?#e+?KK&ya4m@j$OOB2gPsokSRimalCOJYm}yHG_uYn@V7Fjy zwfus3?hai(VP5<iXVJubcqIO?Kk}z!xuAb$H<cQBG}!<gr#k<NJd_JnWiUF;b5&t- z`Ms))T5)nS*NPsGNbZP$k6tY-261aF$wg0Xx41}v#@=*QtDCghO(o=Y+Oie#)BJD2 z-1L`txoKi?zSn96ZfExay^I8!v$G2owNd0?EWKgp%o?e4<<TAQjEkn0eeoEoU+}xr zh@)%|K@F=ZVdTLIh#I7DYCWL9TcDC1j#{lF((>rI1wtF2HMOVsvYr`d#fsSpjud;Q zbh4{GT@&W<UQ&RC%Q4rWr$<*yJ-+ykE!XN&@y~$erJ|k4Y~eriewrrGPKW{GAEqyf z@7<-vLt91)S*Axv1WiP&T{vU#5UrLktv}Q1SdW#)WHUam#$mE%*{5#e8;qTJ323XN zx9vD!E;%}S<KslY-OosiQSAuS1aA=0y0*L@!as*Yz2zpMx`Hmu>__y5)=HT`m_wy= zP)xl70>P*E0rUJPe5HH`x~|zGMPM$XNWXdml*2pvWXkw%#zgkehxXcA?C799KN7Ta zNg*asIbG@`qB-Y0NA6qI>CK~krme=Z%^A`DG^sVJrOtaYJ&z05q@o}6XHmbThh%fE zXr5`lX~#&_)UG<PD$|#xJ#yuViJn@>lh-5I8H?hb&dWKxOd=^>LfxqmmuZ?;dtHWy zTEsT3(jI^Uc^jYXc0Hsti_IMR-LC`db7)RuFO)j&rm3@NQ!?n5$mOsQ7F|!S{DqVC zTnlle-e`j!Q(;88$81?|*WuuLuT&Wn8jax}Vg5KGfj#@S%mNBt>|1xi1jTLwr5$E1 z?*1q-@uWHnp|;csN%i;t3YhK}>{uAis4p4|ax8)r(G`db?+nOAaUpf=Z3hW<9wHRm z{ZR3=neA)sacgHeMVq<Uu6givFqckd+?sDPSwAUEz)rJlRBkAh<#nfGcTP^^#>Ow) zF;a5^2_y74qct@bwZj_B(ee^>yRHd067Hq7K&RJaH;h4a5X#ktu!MnQB}y1$+I?DN zdl-GU@xQMmG7BFLWdlZ|(jRU<8@m0iAKT_R)FZYYUDw2(iio>NVDiZcY~8z$W?IHh z`|&hND!AiNQ4ZmHszx1;M8T6vPr(zb)e^6p;8gCInnhn$c2AXkxb!1+ez*UVF_vrR zSCh_NfZJJhVY4}OR)+j2Mzz)N(7ddMh8YUwzf`5COm1dazpTrq$-qGgd@^acacHn` zxH+2pp%0C5x+CVRj#iQ2&HDjj^u9E<M<n`$udVcUb1d(7cXE~IV&Bcx1hSPvDRl(; zHv|?@+Lmc!WnEYIuX$a2wSC^5e)%J{gg1m|yLJ3~{Pxftde`6gudv_VdlY(z$rrdg zZ--^vxd8NBfs@LRvJPL*kH0skZBt_(V|{xG^Cwc`g@MlVnt!sqgGK#5Z%<F{^uM26 z<uBZPJXc33j+e}=Np++6JA8jjN=Ci%Tgt-ep?-ho5xj}&Ua-A(>zX_Z9uOfHe5W-` z$^v)T2+ExWJY-S?A^lzkYNUHZ5Gk+uk#GJUy!K7p<Jl;=6Zi}TCzDSbow-vfL7WsQ zOVgg5leA>KEG_=^(&ADzeh<=oI>XWlx>$Wo*m7jyaprWmoO*24nY?Uw%_zGvdN+wh znJO!G_+3ZSd+_~u+x%W2C~EKs`S25>73{NTV2M#*&Z#HYub1x8F|FJwKZ?fX*5i>; z!LR@>zDvGXH6#<h<70VPH@R|++IZz4FVkX?sdR5*1@&R?uYSpvimb2h<K?6u!_-xY znmhNjBX1`fC()ZW3m{tZEQ5O#a!!@i={2}#QZ6ahZTIIxIrUb1xW%iU3f*)aauF?Y z@CVP7H6DGd8y^1nQV(}`?#VIB-sKBn_0*@pfD$*ITAXCBhyzpApxv6^-<V}%o$rsU z2VV5`%Ozgb&`W(kOa;LW3|d3@i}&+7Lf<b>c}(xm`{TFsyu9-{$4{w2x63v9sj`pn zU&0x?A^4?2nIrxZOz#$%MMi093!P3s_V7&$)&w08rvR$Hd9RQ~S8-%yT_V2UJqz7U zblu!qC)0a%(kt8MUjr5&MH!lLyZ9uG6gOiI)J_LCsh@=Vrb)Q$aKigO@{H2t0x*|j zjomU^vTh)ouwWpaSr8UUAL8<8mR2&HSOyS-NfepJKAyvK4CLGCh8p61oZS^cwmy0e zoncljIK(bH&*Ni06&2W(a^fdl^wSR`WutxfovSC#ro_+=Ia%0L>_2RT$V+qlyX6NP zN;IT%biJ_PP;1EKBR|Mj8F%QNt`r-xwu<a(-iA!k+!pMtZAsi2M`6LEY@yOLYRE_l z8h5o?iBLVl=?;0M@Jmtmm2v6yT*ci<l7iJG3?y};s&WV9*I+Q+qk)bTZipXch;F>o zeH%5m80zcsf`yrIMk{9V<rqO4&DbQB697e7hz2WW36&(l>P<M56_fuA<(F>4p)8oh zmy-o)wEQbq%@!iUis_$Rx?1iaod(KGK~)ooj&^4_CF+Tg7N1Q;0h$p2+>@Z|h`l95 ziUocUg{Lu+khN61Q65VWgW4F1@CbmU7Q48WD9$xJmkUC(!WzP`8Y}pgHz?lUEIxBU zzN{di!DwDFmN%%=UfuX>llg2t_`T+<2^`oJ^^jY$uG>((6nENosy~t>d-L6nPlK^) zyT3Z9c*)7j_ZfWUd0SHMp-2B&Tn`!Nb$h(@y8%{@XXh_#%8QQQx8K{xNXfH63rfrW zQP8l|1Vs_eJH?Szt_M1PGFJudjLHkVwDH<VV`zOh-F+&iH$~0C(Wz&)vz*f>`6Jl+ zg|TaHIcrsypgCp)VQ)>ZEW`Z;ExuFp6jnE3vLaehbi0Y%Bvv<WYC_8cQ)uFdCALSP zs+f)=xhWiwm)bZ<+>|G~+F$P`>E!H~Ztq#N@8+Dsl#>+kSS!7^Pl@}{>PcXU{o08S z4C_Z(9ilIcDbU2p+0oR{7Ty$SVrOIp&&tUNU;zB{#=`@Er&sZ?HwDlu7@C^`;OP|% z9ZiAG01ifG4gdo{2>?&8Wa?z+;%IE@1YqT4`L`x)2Xr<CI{zcF{&&gI&R)pQ9iR<h z05AYpSr`CpEF1t`06e`Q5NPM@1keVsax(oZnU$0IU(bJnLI7<5BO?dX{~^elnphhC z?+Yo}IU72g0vG`Be0+fa9ERzC97e>{$r(T)&d5&3$;rXW%t-m)=lfR|0C;+37bE9? z2{M*I>wk@B><rKbFflR#SQyy>Oq|RB7N-C36S8wOF?IZRBMkpY|C2BC|BWx}f7O?n z4Zz6B2w>!705CBy|5t2T{zqE{M>}I>(|-!lD~N~z=v7SJo&Qxt%ns-b;Nbz#i!lN? zSQ!4}l<37+030k#jQ?J+0vH+oz4P>9Z2v6&<9z?IqZf5|7FYh)e*aTNT=}0eOq~B2 z7q+vpb5yoBH2#kSVJEhKeEze*|I{<<fA&l-V+u5Pwg50Qu(1Q^#Vl={O&tOBVm5}( zrXr@sb|$9(`ug7&7DghXTU|RYO9I39rLJ5Y3tR|Y6lAkZ&ds&NqA^R7Mpl~p!=G`7 ztYP41`%cY@)%Sb0H2Ubeq^m0{H9=%xXZEFA?}J%~`{${MM1!|Rv0-im6oF?%jDm+n zv&J<>ot+o)WUjARA$``!WuJHAL4&@CA)07?sg8(|hmL#3b6VcM#DsX|yhKue?(q&$ zeoN%)rta9tUXPobZ+vLP%Zb_<14`brswV%kDdTbtp-I6b4*z@yH1o}#Z@h>lmY1Jx z9@STywrY-o;xO~!xA7bB&b6a|i*$mrNQMG^u%&^KDBeB^MYqLWqg!x>H7X-4leG+U zJITZ{z3_rOMe$5V`wlgu@pTG59P&VY5K*SQC(Jd9u(|EYG~Me8IT%5?4(Ps7q`Rul zF{*bC$p{xjC{YKzDkKP7NA=2e?G>rnD)WpfRkB}0(Epu8=pV8ZI2qRu^&IHJismiD zn=<z0!X5#FxVQ`9YnGcLsZsFfoSRx~YyBIZmLNO%>Zh;VK8<zc=4S(_#@(L^U_wua zBL+vdB{G-#7tCz+2xuWABQlr#SO!$G82Q)VAd543BOy{(V1km7*Lyd({x{28$|%+j zK-d`uETe1wlwGIBXgwO_2QW<DI9M8;D%N3W05yy(5FYKY%=z}(?mDvIb(x^E@!)B* zBqOq!t7eY0cI=M=*J(bAXpov@cME_!+O0z2#Hx`!k$m9V4!BiXF$r>L;klo37TZ5M zYMGYkiZ=<p-rL#ElK6HmhyCEFFh8cjWjWDBW@T1ptJF2UHX$;F2Kq;7Lc`qA*KjyX zL%MUl@_k0TXniM=uUPxith_U<u=-v7Alz)0fsAqS(vcVjYAD-r`glQjN5z`E3OC%* zI#0mNFf%~(=R}&8gEA+wn|{75JVamUJ}g0!`v`HIlk_FC^c07=v>%=KbQd{6t}xEK zzU6xEWnS<ENuy(!8dMj>EcGJ&q0SmZxM$m*8aEnBZ-D7)w7Sugk*cp7<hV_rD_?NM z{RMf~)~r{T^Ez74P}`92o@<cC+UNXA)sTWFJ)}pvf2;*F^o9*<%H*-Yk-y6sfM?#! z2gEnD4GpOraU>?r0^;qL;<VF;APc4O2?QQ-7@X_Yq5vZr@!#J+FtLPqM%y$cMyS$~ z;unjmkwuvVeqS(y6_tA_hWl&*1veH?h|GutLZcU<MT%z`k<EU=tg*q3a0)v7LANoe zhJ{)p9jo}<G%%IeuEw?c$cpECc|8@dh#>&l18eFQ8JHY+n!ZycD92sSp0|x5?`^Fa zo!P>1?`5`vyQRAA%o|$V9vZK&+G+@cUi7>v8SV8zRxdkH4W)tk^SRZgvprZE>=3JQ z0WKy6ypo5c4Ab2dIinaDmF6nMccGP<FJ&}@BQR(xNj$Q2i#}94kksgjKN77z_aw8z zEV%~Wq%A>)IY_CgMuW}Mn?^imtd<Qd4q4-jt<<6gjLh{zWw{~sG7Nrr)A|um%cXeX z0Qnrh9<w<hakyqnqom?5-3z7JgdAngQ6rBblpvW&!&TEWNwN-wO}2B_M^9^sz@Nd^ z1mspBe>e-SVa~|V=QoID-GD8NPXRqID}~LmH)U|0a;KDH(Zx7V>m{*J{n36ogD|9q z<Oy6X&Z&+Z7C@G3^t|Fspe!;%^f-g{z$FBvUR!XhAjG_dXfAhfB^xx4!)B2d<<O49 z(e^7zV+0MVv4f8wy~A?Ej4{eDINEg48^H(L6-OCk1r#A|o|#Rn<m54_RxV&v)U*cI zagKTncH+I+uIHOl_>00~x*6#s#qVF>RF(>c$1%uxi7-@38dK!KFzoP8jq~6R(3nw{ z!|VfvJwTq@+*9M+&B)wG$MV{QrG$DGgo3V=q_dBj=l8y@u4(I`lKe^c-qQnK+^g?_ zyMC|8-z4)2KRn<_@O@_|R1m&+__a%lC~b>K2pS|P5hLl<1coWniFJizg~|dwlyc;h zXbFY;OJ$XdLi;!R0__!PX1Y0aZt0EmiC6xTeJ2+Ea1^0K*>kM7Ppz;)C8}^p&EKzp z%tERhnj8ZfYo`q#Sq$Dn7A{OT7-X{i_ycv$ay|lCIm_Z;vvH05eUu*BDS~VoEvX1w ztUuhXWT2Ox$1BgFlIwx8yXRf)DI^#VVd7B@MXnszN6bCCLBC7Sr>(22!)(Ka@wOf% z&;R-QoKaWt?7om^Gh7u9UAA@dDb27ZkH>W!Y9m2!BGx`Ol5Bd-rsfo!)|Tw>B2xy8 z50tp!O+Fqzte;^xVz3#h7UGmQ<=kcI5RKariCuRr$q3hFwT}Vo3ViIrP-0>(%a3(b zhfU<jQGTcH5M>MZ4~hewjXKY&r1=rfNURrJ6FX-R7~S443X-!TV_+?1s$Y>on63zl zUvKlf3+~ZN#6XQleo|PCblptk_w2=rsBuEUrXNj7CP^21jJ1K?K3A+Tx-c$B*d_9L z^9a-$584*(0Gd*2Fcd8F48bkz9$f`-@mMq9Q-54D*{aNc0d<5i&7V&oW(KJ?;MiVp zok6fl&s_>1yNPTQAgAnnTyTn`ds{y!$NJI=yxYw+L%j5f(EX7a$|bknmZL?b;Lq)U zh55NQUdNP$rf`&C2cXLrrJzNn;i{pyohcmw*;`X>3rQsJ!K_{;U}?)=?Zko!m_MZ! zNm_J(&SzXUUKpV3daj?L6Co3KsYTg(ZlLq{Ow|+@DxBB#U&l=}f&T-Jp~5zu%3m)w zODSno1k<U!$?*!%owymUX)ZAaK=@rnq}+MEh4>ZhJ_>esc{xq(MSkv{mO>;i5Zt$9 zD<l1p!x-xO#qj7&P?7M1Urh3SjO++2U6X5SJg{2!)&^gorkI{p+0v|}{2Dwflw|5q z!VmmTz!mMP)<ETOAC;J3c#u`>b7wU=1fix}+8~M#DqtCT-D2;$QrRiXBqIZ48lCx( zk4@sJS+~cu&-Lk+NNvTwn(BE==88s!ImZWF>+7fd0!J8tLD}F6O+(nH=`CI%Akjt% zaXGwWV|xg`VcsJSQba4ruum7-w@$;HVEBP&YbJw1kc?Y6%iRVwJ4(<3Dh5svF$Xjs zn|KzL9ogGl78a*`YSZ{4N*BGxN!efJFcs4`GQ1E<LXDPw`}W#Xyy-Lb=15c2KI|Kk zn_O{qJ*$RFZxdx1Pn40ImGRPzm(*9DPRBXT*g+*$pvf1i9i|F2pAOl|2Bv@%EEyL- z3&nD^SeCi^{1nL^bDqfTlCc)Jz^%#l98<O%|2r-rPNO{zeWL)M!H|YqfgpAJC6HwE zExw+R5n@Jr^ZO?l^%~UiyH@!JT-DW`4f{^_^+j1_5f>Os!0dWaS#(%*09w?^kNm`j zG$vzVi5}EW9A&}-2yG!72v{n<WpArEb#xBJT-rdi^hc0#%;3QUx9;fDG1^#G*N~lt zQ`LM*G1U=$NWs#Q7no=%`VZPjWfTzFcnqO+Nrv;MUNr0iFtRxGzkX*@E37AQ%e(0h zOGVz*RS8v;pQXHoYYlxk6OCt=V-WXAnxLSqkm&CPS7g!<T{SuCSV$~uWpwx5KSx$0 zxgaVB)-vbud~)R)9l#{XnHZ#^8Jzv3%JcL843IpOnmi>^<cwRPe2TfhJ&?iuRP??n z8$UycfTATMC>mUkKu9=SgbCK5fB}S7?)ALvHc1<ocfKX_yFK@C@6peCR=H%0wmtVi zo8yP6gcB1E3M+p%RK#XknzOOc21jWImE`)du1l?-GUEi{bjK)4tSw&2-`GT}l@5dL zQwmg^ZED&SIF>_bc`w@WPM$Rn@0V~NNT$P>9BvH#xOH>@cM{Umf@n9d{n4(2b&O(f zNisPC_L5h(C9k)0ux{su`^H>)NemU!^hxtp=vz<uY!?;;`f;X?Q3FnO87)vFXFxHJ zW}NZ8po*@nq?eQPp;Sp$F$6hh;}8)1RvOr^(qmkCQ0Dm4gzJ=dy<kRGH)^8Kb?yZ# zRdpDi3P)7O#3f$EFvO-8!k6H9bklhri=%tqSz7-wR7WD4YZDiy2G_5mLs3G6(IXu} zkkyyduj2#5;KyxaQP}?uTiO0!Vk^i0imjagPq3B!|BS25{~vIb{r?&pS(*RKxXQr} zU}0wjFtc$2SUCPm+{p3&LvG~!U%8QyossFk!i~-9Tfl8LB%i&y-^8jSI*M)uXTnC@ zqJgW>7d}u1m;q{2Eyq?PA>}P=dxn1Y<{Zh-2QHDIw)gd!@i?=bPA3X)3|TV#Qe+!8 zoD(7mO+UUi!zkoLFdFNTET_$?CLX7YtC?Jd`(;+-O8fLAU9HIipiJ-@G+FPih)KM% zbsn0y>CqYK*PhGNpUaGy9=)-_IwamY((X2+M8;+JR-EXQ>y3X-3EdO4mSyW{G0e@0 z44UT#JCfXV2d24}l+27KfmElVsXhX0w7bUK{bu=oP6jJX>W~Nq3z(m3c*dh^c>0Sz z@Z6cbBt>n2Q6^xN1os$H1jdV6PI^O!1Xn939UuL4#8h4t8XnH^>32)yLB&RCBZk{Z zfX;P=*N9X=`#bR<OyO}gg0!sRH(a$S?VnWYabKKFbb6B>6u)TLAQ41^k33$UpM5GJ zHSG1?vG{Dhw2>#(fmi!mWjqK^Nee>+33HiGt!_0&i*hc`e;NZu2H=EPjl=fx7i<vT zM9zKZQKqeW&AK!#m(WSARUCZkvEIm=fTQnZZ`X@273%n-)^`u&79aE*Em%gx@RzRA z^cc45T%3QN2*x}$vXn)tFqYWQL7K84>))KG)FN2IumU&Tcit)}zkvy2yGsQ9FB0;y zLzAO?*fSTay(+9(A+)lflAPJh2Q(;dW{C?4ktx-SwpCOni8U?2i)RdtpU4c<YbkmF z9myc12QlbC`Rqv%v<g);-T<;BD3v6w3Xti1tk`5Ak|~9NaePg<U?PLd55`lgoilQd z50N&KVo6tkNjq-5-Ob!oZ}(yrLMMpH4J)w->iRh)!6cLtc{%-q*RkYLRU2e(I(Bo2 zw@6}KV)UQ=Q%KgWr6s|ck0&w611|C^tSY`m1+1fy+CKn-IcI!hoXJ{GHQd(uf9N=U zjaGTRCESkpF}v|1i+pvD(rj|2-cnVlh#NCG)Z*Ecgo)=tA~)6)KofCx<Z>DUa-@dX zvWtZ!ps<I!ZaT0blu=o=pU1?f4vR9Y<W`4^UA9kc6bv^oGhUQ~W(&IG3(mRur4;SV z`3fm_(Vi3%Zq#vFJOcI02?;C<g!HrMd4Un;)<bl);aSKYeM|z(Q$$)!EIz}~U~E6a zE%>*@+2m9_rZEp58pQFTEK<MHN<Xs<u^!bVZ5Px!3@6NZXBGZV;2w$_uT8?=SjYKU zV>)AGa)y!bqL2b8v8M^)r<AL~$|+0e8`%2l(N0I*0NO3`EAZ|oLMt?BsWr*j(-^M7 zgP&2F1gGLCJi(841>KzryZ-mUeuEY3`qAjPB~@-_uD=-2`*a}_(aiOdjgaJf^rx8i z0j1C^HwRlEdwpM_hKV5V*zXI_X%UNfz~dkhd%N(T%#;>gF2x)P8bAJYpDa;Eg8z}O z6Va^cPh;%VpQZ+(GY%TSwawo~mlE8<{gV$5W$gdA%rf(r>FYUK@vPJD;suK<SdMTB zTyOdo-s7`WQ*hFDk%aKyab3`aFOj^LDjP#JON#?8*6)q@7s9I8Qfo~vWowm1`D$X_ zwRboLTkyez`KZ4FD_cN1Xtq!YVTXJTY4PvI!#Q#1FVP)dVgA7P-TAhHPx}TMw;d1G zVi~IVm2^T@_H}{P_3Y2FWm<oxowI@{(A)L#t8vlC48pPbv!oZ0<r3uUc6xahl&~xN ztmxVmP0d)<cH-)-Q-lW*;vufeGF-Cy{@k|5<>f}O5kRA3y$UKd<ZT8Oh3`Pz?7e&) z>tyEjF4)~HhnTurPel@DC%F8IeNOrFaQsFt=0An5S0x9#BdlBD7TsxR4-(=fgfNs4 z(+iGjHL4TI8@HJboTB`J75d|cx7()s2BUN7`HG&cm)euIRMe!0NuEW;^=0G6o?9`p zdsH!J-4?j>LoP>N7wGfW`wqm`{V_hS_5)(E-hZR!9e8bRv@P9ftZCb}ZQHhO+qP}5 zY1_7K+xD83TjwNobM|-d`LcKIO6m`co{`a8#?#vS_GW0%XCc#>u;`Hf9CVRMrU_UR zyZJi;!s<|}Ois0C73PCg09ct%zqN|8?E-{o9XlPan1LR)#wM_I4D7|+US(q?5v6_H z>YQswrFYALJv*FjnjzX#{}0XKJ016FFavHDEPp93zOBFagj@CH+^Hk}z?)2-hzE@A zO)S1(PH#97qHE%#94Tzr5EPMig6j?!Vp!JeX}xKqTH|`vsy<m!G%9`jP4|0gSX@_+ zQ*h?OpVR)ey(TPd9U#BoB^SzC9Q}q~t2m%9n~1zR5(4=4OROnP`BLGLE-k(le4qMo zpl!D`XD>=@?~6iWpRh&lhwI^W+Eb){Z~(tq*bx5_c3A1@|0&pErDyuDu)|8v{P$sp zmHt2e<yq+&|10z`|I^U(A0PUc(8IyN`nNNBCRTiACbs{Xl`}JQ{P)cBAK&5sV=N2% z-yO?9&yLT;LjOPKGO;rJow-c^*Rj@rEXjXiEk-6rj=#xTv74fZKC5cX55lH0uvu<~ z`(gJ}RR%^$*4BVleU0k&zf(hFg)K#9t}T8D?!ix$Rgw@(>T&cN=Yl%2wpF&vDr8l< zGiPW1q>@*kOlq8<wg0+16iBY9yIWMBW@~JWqE%5D#RFbenZCMu_NrFhroIcp@5{AB z{rx^THLm3L2a>Qk9Qs?i402|Q&J6b!#-o<!nf~*vtJ}GIN-kRsjq(Nf+1IMVQ$x)} zueB!abHhTLj#iP+?a!sBMErZgqmh^0(dNm>l`=XAqtv$F^zKZ}3DZK&doJgg3i^jU zR!R8-GjoWgnd#&@m8S>gD)pOANa40b?qbrb9L(8>^E-9q(S(`Vgv|GphncF&>LdK> znH>z=vdMbdt;gEVH6@YP<+Q5}YiYvuQ->%o_tJMY<?+!b9^LMkrIPK1DM@9{`t~Y! z)fAMkp?}(&MW$)66@B-TPFPS|w6;|BCQ6@n6tOtVMXMaQ#+I^~ixZuj?T72@)4JLI z<1In;1>Sp*pAuV?)#;h^AQSJSAdUNiPN(1TVG&n}ZvtaDx4yZNOe((fH-8uc;OBh% z+xf%9^8jIJL@j=$J#U-4?n!o%k@+b&o4?oB;cXLz-1ppk0UAXm6)&T{ZhS*IVRiMa zhzEhXPUdxo3lX_@;N2R*Zx$I94v3cAgg1_UZ1wy~K$|sn==WS3?rxa_G*E95*#2dx zO1>3G^=7s_>E+6-hL2(DrRgNfETZm^yy7xVzHGer6=k})%(Ll11&5y1XnUaCP=#vG z)cmA=RYt+9QBXn}Tzu@jc=Jy%oR7DDd6DdW)>@soql_N1TdHM|O=fq(u51)!U+Sd+ z;D-?QsQvz;2+{Df8RDNU8U4@Lp#f?aq5TqVx{zkdE<OiM?tFVu8c6qk-`$5|n^hJt zhWjvA)e1@mshpWEeT8GymTD^mHC(Cs&sD4CR%F?y@!v7^gRTz746)<%_-IH^F3itp zk@sr|e)npnz2+VUfs5vnIG^=14ZvC>MWBpUlR1?UFfiL}jvt*mM5WhPP?Dc;zW|&F z?Jd=S8z!C!ujnk8cI?=;H`-I`@%Nz2WE#_RM7S)ecB^(=9n3^BKt(Li`jSKt_DOVE z(}!mAIOi3kwkEcBg;ZntpTV#pv|uiLVK?DU^+FhtDxt-1&hcqU_s=#vXEM-jBZ3^o zutREK#VB+Re(#Vt68@>#7{23w8=HWxPaZM4OYHHk)3&BrrBb_UL{)PfA5~+K3$I*< zs$3zFhQr2go5+=oCQ|I!d?`pUuyMQRDP7MNq76lPC2;f4FWF0$)e{gEM3z?e`V(|# zE64!56O$KZYEMh}&d({~>P-QXJ6@+xG&wW3wV`c@>%~Hh^Q_2nBG8>6=c1Q(Iq0)G z6K_T8aTlCSf=A04-pTvN^;%N!8t>a>^ABN$lT-vON32=m*+(jwxO0%KY}}wrm4mQS zNWWC`nRl*3@SvwEoU6b`sF|D{Enn}O&Ers#&AJO*)a;Ak?o@#SYCO+RFgB(iPnaw+ z==)AYQb0b>!8A>w2-hZynst+MUmgoDJ$d;c!@&GJ5zU$<$c)UG`;kS8aV&$a+&8PF zyy(eK(k`jq%Vzl#KIXWAc!o<D8LE&b064tZL3Gg+(KPE*Y<j?0_{ae8j#Zi<qLjVq z*c|biu^e`BlgxB+qk2`$>MA*@i3T%P!N_*^dVePIo>~=|Fz~*32D!fy4$7!7q>yGO z=!)%gsBzMGG*15{0(P|4^hz+^;X&$}EyekK2+IhW2HY3)+oMk|=eQ@b-IT1*3X$kx zh@DBd-JE!FRDx*e!E4v$jr_r{m}H3Wj-td^4}CS@K0Pi2bgkIUgV%iQ(ZTi!&hnes zHn1#f61ptw_HT8@-Mg!gCf!a~ss!pLr`Bey4A+^f=Gh)4KZ6v4$a?#V7p}U*-v^1` zyKxH~(N{+~+50V2(<7w&^~AY^hl)ys$iz7kW#mbkkH%h){`W5#syl{_iG5}wJ;=t8 zfasdS>H&HO{4CPckiRg)gt^dPnoHmcRsw`%Inbqr8jJ;>n>#jR_1bQd(BOheYTt#1 zV%0XTjh<7l7aP~^;g|&qR{RhH$n?nWA_{>C!>j1JT823npAc9k57V^I1DaV~7ah_H z9p>NKSwpI5Z9l99SS^&E)=HqC5q>eUIq+hn{Sw+N)Sfo`$*@qV#K=U-DcT8lJPxVf z$XMs=Rg0mvDtw5E7D%@Asq4z6G2^@CGeIZ-HU$miA8~xK<OMETJ0c?5z&`zaf=7OT zlfLjTgyazM#T5P=po`ZAV&2J+bq{ufTj8{ba278)%%_|jW;$sV>^Xt>j340SB;AQC z;+$+(I$Jy^@Y%q3gn_hW?KFu%tT?Hf03|c@GDvNh%eQIf;;7h}*^YKxYQJc++K>#f ztk}T)z1KUxX1uRV@dNch{REuz<>Z9IC2E?LxOnVpl~S_@zwSQFaJ!GOuJBkwvANEj zyHS``Bay*ef*lLdLAQ(wt1F+Wt3Xtgqtl)MW*USjT9n&zX{iG{*tq~3jip$<O)GLD z!1!bTvbe&0@r<91Zf?nmd>{PgB!Tpj)dtB!CH<n+Xc&ITy`42BwPv^wnzEI8ynuc( zmY)n`-D*#JYjxLiR=oa8VQ$#rDaQ0NC!xnE53~17*VA0{kUQ&16SW*Olzgo7jkQh` zeQgBskIQ2*r6a&~)oKHR@i4g@2SiQ%DmqG1X9E_4N>QWDTU;X+clAlHD(ZKN_vQO+ z?qOKrX5t~X!n}mAfKM(;Qldx#U^n?=5%;o~zGY5K{E*{hj6to~dNaC}^uukaK4i{t zI0{B=o#T=YxOe<q{CROu)x|<+wP$Q`5k2=^3w4g+kw!dsRHB)|1GQ`}=tcNYQQe$Z z!SEVBbaN<scJr&y_O2vJXnHLdC0mY;kJGA?gBE*B&68lfd12I{{fZGgobK*zAN~~& zi6Zm@=t2XhTIEM>V_5+_K3`nBa~^<Vc-oKNz5B>a(52mwvfKsO2;!#;J$_c}mBAV~ z29mx|zV$|pnvIbUUi;lEAV5e(i{D>CJ<C4{^{oF0^=$tw)c+^9v-}I(&iZc$SvpZR zd<J@se;3uV{l%LnY|Ko5k7{M?wnPz!b)Ts|#DOp}r|oQITe7KH!+6-8==HAx4w{&o zOvf}5jWqm-H2VD9^i)`~uq9iN%wPa56BqSVo-dXw)ix{9_^e8nUtTETCImy?4#U_b zg18kGFpMKMaBFq7;W8?~bKxrrY-@GD4%Mn}LM!PZTo5a5e46*gtY7S(XF7L2HR9cu zBf{qI=BRMqv2a2~;yr4=x2(R{!@CTwvat9T(j7)-171X>XSp?+l>U&yDcW6HX^VMv z>v^L5EKD5ruM+sy9#y9{%d9?R_y4@Ups8m>rgT6o(31+a)}CJ&=q@Y^bu_6R{dxIb zmfNIqj4-8QIT2NW7p0tGY@TluFZOhD@p_K*P8+K+i4VVh3s@-@!96-^TQ@ku$+@!- zNJnmev$(2UkqaEas_?YFQ})!UtWZ#y=)slAZ}BSf_4vNfy#6=|I^RcVxK@9sptjwp zPb|NRM`kU{%~33uZDGr*-*m37-@UB4{U(PtoP{RKoqH!}cQ!NjjmbD_hZhA;2wh$= z00>KuH?<CQGa3OmvOiT#_|*N%j!;^_k8wHSu0C8}yzOeGL&#b4GIB@f#GT=RYp!Q# z+?fW#If;rHaO@Ds9Jj6L^oY|U<DVieogAd2;BO)*BL^hRKmnG9k!$LOaSy1agw9}t z&Y`v*ivd_Scb(83-Y9m7FA-_-mvgmP3WaXFF}Bvikf9+0njjK%G|<N#QYc3QD@Br= z2ni^~^=q2PdL6^+$hQo|JBrL=hi(XG=zvaJv8^4rapA_ZPgvqgNQrQxuc(0q_eNh@ zn+A{fnws$L%fkQi7QZD<J=DV0?b+{#=5{v2{m|sCnWhuKZ+uQ@>}guTg9(8`*mmRc zOF9U=aL0`&3JdDCzqL95J5<^maoVkLutO^^$XwB413O?KcFHD=*ud{y^o}%7Uq5VI z!u^peq^>G8M^v>B*izz`2mH;m@Xo=-6lehxhXCI;KP2k<((kL9nsg@9DG};c^HC~9 z&vFxIU3R~A<qA%0D}*7ZwxZtxr0Z}8bx477piHZkBO6v)s^stnfvTKnP)fFwFAjHv z*_NE$9(ilZ>Ccahdh8q>ODFGZ)7~6H=OAcrChF_=`4EHA;nXXup97Rx0COLDTfN;~ zhAw5Pe3cpK1Jiqb^in2S$PL|xl&dJ$lSB~i{c9Ezfc0RE$bw_)2$(PcJy+lO@lQ1) zp4ejRa{tM+b34lPajbFS7-REn|HXU$#B7G0(*evE-BsEK9fZGh0gT_R_mVuEfxixh z!b_KY?yWsTF=l$%&<W@|hCUB|3(DOU13roZ1;p?b7ICFddC0w}!5>lc>Y}(z*qn=C z>LwyalwGLg!$*9*XdFNojw?ho1nz7xy`pY5(UJZIyfg2|us3ce$UNP-?ICN<@JB{H zCap6|3k$3AcXhlO;9p1k3E1!+d3$0@qY4aG!bfTG&cpc|uvZGJQ&4U9ean}L7yBRV z5k1<yH6`}V)pi~`3txDK?*rR>x*5|7n=I0n9Qg<YP0tXO%tG{au@Q!K%Gi2{Yg2FK z&nKw}ooF3q*v(Tn^4M*^U)nGs6yQ}g6;TlQfjZ7O!N_O@W4Bla1oIcjb?94Ybz<t< z7Yw0fPvYw=!X4kD6yS9HYCE)sRnCU+;H=sRloG4nv~%9276{yWC}_QT(-eqd@3%>S zE!C2KRocm@BuR`DH|Z|~d7EE!8`_9S;3(Oo@8nNH_|V8<1#qZ!p*BYFALAfKqv*yC zbsLESXcIwqbB@2}3W}}WNsQNXAsPB`?8~xfgDuON)=%+rDKx6OHaaCTW(-qYD#mwx zsIf_E5O9+Uqs-wQ3cWJBE9e&Q61XQMF?zI+W8U#Rp1~Y9yzG2t(13+ga?lSR7JYm# z5zutIe$g!hg%X`-3Hb7Da28%K2()l-#wDTe<okq2N%PGQ)u<aMjR|5B1buOf0Dbi> zXkv>7PD>&o!YL!!kBdq4V3m6o8#YL^CQ{nqi<k_{_V6+v`cBX5hf<ICG%_!57#uPB z4RwGEt(gSpr>mz@0?}*t%#g4CDk+yKPr4TG*lq_Cx5LfoMzNX?v_zBwIQNK^V+W?C zeM(b!?LhQR-Cv~(ydALL_$7j|4HGc}1X7O}6T)PA5O%FgT&B>v9e`WVq>=3kr?{L@ z%)M`G0)eca;ZvrFl`2aYIxMKggeL$CtF*e7v{LZJ4rfZHMTCp|ixz+rV$zsEC@+#k z=!5-qp`Ku0E5aNBUM>38PLcM2ODF`iiv!0{ZQ7)sJgQk2LW+zD(QEufyv+R8nf_(G zDIQeVGHbC1a}L90l;{XJe*6Ik`pnopn|HNtxFy-mWfa;8|ItYKDo>t{be>1`^@L*> z&{pnnmLfK;kkXaP0%wnKoM~DqTdwdx`PtlGbQ9=V)!eCr(`WeNrm}eDs_JvIz8ytm zIp35dm!u4ku6&ea6b+OqExSB<u3>@pa-&zv$`MKp9g(t)h*nwqC;&`6F46Z2^wusp zXwtQ559KR=(Y}4GWQGfwcT;<f8iURUU5S%AX(%GtS~5}2lDWl+5If2PKt$j<J3&Sz zOYd?RS_{;=d`oVRf^I0rm9s9q><D9q4S3c5F^|chfh!}olOxp>xW8AJY9ctoJsg+c zUMx|S70UefK_bRYu(Sze21tNB9|4eY5@e<y3gIrq-DIC_$V#^<Jgt8CoMMH}Y949b z!tN`=CABF24=yN(%?7ogOec|8%x7p0cetzywUg3{LB^s%$f7~UvO&gKU0@qc5$Y{l zA$_pOK)eEaHo3DIA%?ewc)!Y?2#06EDC<g(%8>PN4rqp)+mZjBP7fl=LZg#%4{p52 zA3}VxEcO%U4Dm|Kq^gdg1sB5o68%r(Q7$6tfrkJR^&!OQZVM(#gP%ojWrVyAP6gF0 z?jSs0B0EKElR>y`^ANxijfBxz`XV7;HkFJp9{2Spq@B))mrmVSm920K3p}V>`#L7O ziVxojR&9=u?x?+QJSD2B9)ji*ktp#MReJ0=Mpn5tdacN@_6+Gr>+z5?bhzM;wWK*3 z%#2_pa!1JIHjqebAdzH#<`Oa*TB#D0>(VtH$@KvSM_UYx)!B2rdA&hOeytgsVi@#e zwwZAmMg}6ToD_{A3JNC*>IdQeejo0%#N$Q|3{qIBccz>L*InqUN<`YG-*3|(bEV&N z+eCj<&5|;UeGOmSj+E<Zz{14x-UL~;0CyyBRo;nHA;Jw2C;^fLNDP1Z7|=Y*JrR`U z#_MT$bSKepa4*cJ&}vWGj_%mnd@lhPqjk^ZlYfqxKkQ<!-H21f6KE>ci3`zNUOC-{ z?OgTDo(h1pkkCAoJ?Ph)CxCZP2Mr30WKH}!`(!DpJ~$LMPS8C8#&%1;=%XYmE*_d0 zE}slvGZm)BC`iLFD08*fI?=(-4|jK84yOF$@<gN+0&*?Q_plh~&fYNo81Ow=XKPzF zVRo+rB2pL?^0Ni$xxlGY8;iqaJuW}hZStIrEg=fHM26qqt%SB%qB!>%t?hMFaSCnZ z=6#QGMJjdm(2{WHJ99oFN`UXd-pWUd!w3ag10@R@*KJdws@z+EN;UJ~LUoS5=U1#I zWtYVd-}6ZIVqSqB&<_|}z9dAY;-ev1k_%B~gbZENFY|HxIc)^UWl>oHK3NCdIe0Vm z8lGI%Q@2h;RbExU2>57wSf-4_W|%8Yhxya@M>1&5v|rEW9CbqL777xlxKLb!77{-? z)TP2cdIZBqX7m*t(#|=d|5#OHTHr9QS+pYr1kXA1MVibZyPIC5@)95FuspCSNCnQP zJE7&<`nY$sg*S!n7c#vAZW-PCO2W1!Yef)`ZG<vD$5QD7(7NE<`Si%=jYuggZaj$~ z4at~&yX4foXKSrA)!^R3)YUO3jN;-{D3;x&PbO|jpV3r2h&)BQ(Pj6JyYhUXiK9q= z{N!rv;<8I2^WbuGBIuJ+V9X4mq{rcD{#yOjl-E)Ro{;nPxZ+)ycAtqfU!TcAYWP7y ztg@kBG4Ip(b;=ToxesDD`%ZXd6miNP;9^XHSg^nqEEzOrGu$G25^6Y*1gGNE>gAJ% zUq~cIjWqyYN=n1}O0}*^DLjDhRV-W$W#>vJ7YsV?bD*=SWD-Zip^91jeT+l3@!>L4 zA)=m1)V8tbeT)|y9lSz%P491mY)MI_KSnT>W3(>ZXUpA`DmZk-TDZkd&)?XVFkWFp z5n1KKf$ZajKhv^5n^23XpjL`My(#-qectRaJ~{>W0!LDBaqQEJy$VPH`f*IxvNkH% zR-1Z|dxnwXFr!Tf=VR;R;#OBZnk3fkNwn*3;vwA|;<YeVtFg~g8e`ij5TYAOgzCyT z+CkcvRjMbQjhzQ!*D*c|D)_Eo;hdb1YMz<*C68Vwc365{AeeM|-0D^9`P}PHtWDlj zx=B_0nG))Il-y<M<d|$sO1ZtytHeW==fe67ELXzE&Sv+Z@aKfe2g3p2;005epXsa+ zUK3=1C&FRz{N`K$0LD}bh~;WieG_0FEhRXh&@yw8o-Ca=3ZqdLLJYdt#>=Ip!fiCC z5fg)g))7g4?c#gQl6wvbUP^i0)KnO)dS)F2#LfBe#r#^!-~6Hi_%df`0|8kFo`oNf zzb9%O4FWti7c3M|7<c-$Y8uO(2Dve=V_R(b>c|}o^JH<rb)Q}&8D|2yCC$PyOpQ9t z2c9;TXh2Lu8f!H8Y5Wwt>zRD_Cwv&WS~ENIUzP6FsWvP_2RG!<+^oN3y(fb5>RR`7 z<J~O$40o&yS5iZ4=-5hv7b6nC=6p6E^QTs&f)iMrb$3K@#bgqgF5snBkQaiHnzyP@ zNH}{wlRm^W-C9zGc^wLaw!~W!%Ze$IFk6otho4wJF?Z5{R@d?PBnXcJw0CFIh*^f> zp0cb=kk4ZEfS>`&jSXG@DqCRxC$j~Pf5;XX=>KlE!1^y_3mpGvvjrGBQ3eKl1_l;} ze^1oFK>rs}0|WEldVp4?Hfg&xh9c7PjnYgUWDz;chGR@H{?a#cbgm1nZziB%&0@p4 zj=!GTJyCnQ1wM{?T+bwc4`|&`VY}TC=Onv*#i~|oWHfEtE78r(#QWz>EIl3nHF4}J zHmh=zfZ@0=s0U-h)#>?>%L+F%=JvfOj^lWQt#dRc$>ipSNLrHt!#zUAuxh<~%i6=X z&&g%^@TB|krKD4)d#$~lCE+y7t*oNz)kP!P<<ypGmb1Du=3!_u+plwTO|E<H-RiYH zvHnnJIjisWn8x9!*{jo|d2{Y2^}ET}G_Y^5#UL@gdRR8#ymH#tNr)_NXnHH^=;$kG zWk}<q#QEuX%zon|q66=^zD>_n=XL`dyscJ?eVaG^ULM0O%RS+7?Kw}nb+z@d9b;Vx z%Tps!6B25eP_44Q*|3?neRFOyClohBsl6wSv(&j2FgIL^U!ef98mo`75W$Fl6oCT= z=PZFUH)?G()+0vTGotEtzf`)yCAFV}I@F|5kQcTt4#o18Oeso;NFy4XXU$pw?c7@F z*|NcjNcxguUcKqobI@T;HegMYu1-8UcyPl#(lJ$>I}(ZdXr|o3D9j3YcBVwAIS7MG z36(j}Tq8M*Vxu-4SNetkP)hPeM@XqtjB$P;aLi+F{b+IdQrL39lstu9J29EmDWliT zmWvUM(}rrcBAJZ)kc^OYrD*_hHZg$Y&}jmRr_iBYlyU+A$ouRD{L%e)R%G@MWfAB> zh60cI7f>-1^n=-b6zO683Q`DNQMRJ@M?I}o1es4b4y9J^9scGS)&fRR<rL2Y7SS<z z=En`U>MNtwRa7e2lI6IG*rje;YC|ocI19j*SOl|LvKMR8O=iL&91!+68yDjp9U6fz zYjMhLP61}^de-CGw(F=7kFUScL&?XU?`Rl(HYRqcZ`UWcPYuY0kHpJ8`K+gR=F^;1 zqPZleosn^t-Fwi`MzHH!J>BDyl$oas*zxpir(o`J*)2%Fn44KI(XYv`sGKlKtDhY1 zsM!r9vTM-m2v-!`iVfl!X#UAKC7PX~RzsK55x~gvJyD9xMn@wl5(=5G)E&XolBi6G z94xjM23IL2q~uC05%LRMJsf6^#69oQ2xH<%j4*mbQOy+D7X?O+eq_rjkK!C5e!U@k zm9fT@2&-g(y^|N9iLwFj*El_09|{B@+Z4|jaQb7j_pT{fm`kg{Oi#m@8WVAVju~Mf z{&=|{EJppyxAKb!R=|koe5ELds@O7xvMsr`{aON}!ee?>-Jrqy;5+ehEG9sgYVR7! zKz-qMD?m9$&R;C(80g^ybw|WO-7|E68wB%OQ!~qkH~nXDN&q&&L<KyCUI+yl#DkCw zVfD2c>LAG=apcd@;_K1k1Q2r%8e{f1#~$gr_ztY=GD`KIrgF}|a0yoOiPWqkf++Wi zbdbrgg(eO_I{T%y+SM($#D6Ety9O(Bzy;?@3iHTrI-B&%Z^i$7MM*%mr?j5KM?5Cg zv3anFhb#8+H^om3|Irj#Rz$+yp`h4H=nK1_U|tR){>?Bfp2+`TD4Szy{6t!_vYqQ( z*?g|t?hmo^sF@z}8}qu*I7Sa=^4Ain+mOA!?fFbhgT%bQ6a=;KMO~2c20=&#-5Qqt zye@bL5qlnvHD>)TuRTrGhm+1(Z`SbpISeQ7gwv{(*4Z1qL3QkE(l#3>uYuFOPl|t0 zNpSdXJS1^820HHLy?m=&0)UR&YK|6pC<f6lpTI7$5*vgFCXg{zt8;p&E$IONjbGG! z$O{i+8kZS3oWPpIhVn4y!DeVI!VhU!Gg~TQ5}4|zPBEHf2=(TS3@*f{G{)hUZ0cO9 zO`GcW4D$Q7x0T&fwj$=ruef;qdMO7^Hh)axU=P7keIy;ivfkyV;33cJN+5$}wadjK zk-I9zoUX{N*^T=K8WgJOZijie1Pg?r)2d{`5y3aY^v3ZuTMIj(JBr}hdx*MYEA;;m zJFnapjVa0_gD@%Nqr}K1K`+Cae6dq#x>NA+x^fnGLRTufn;W-vQa!DT(98j<Ht&f! z@h_I3w!wG2kUhkH-0n@lm`r+r?}|4U$Yz0=<nLaFsoqEsjLvXo3X5kjOEw)SY<CV? zM=U5d6lYCi|Dq*fr7`m~bYjOVTaMJQ^Z{LZBw>~n<XAf_uvA&*9rkXqGsq*pCb!^* zihQYl0JLQ=z!aSw=g!dlZIo>{h0NEGQ~)k$Ag}O8+alT{_14;&^TiRt`hjZ54+1P_ zDX%%oQGO<XP@uXf(D5t<osp7k#OJDoEZN&cm{?A^t>-1ww*#W<7#D$5bBrtP;|xDo zwVb^#MUq^40#%Jl6fpmpUe)mtfIermRQD}L6|ZCTJW^nbt(83hrdQ%utcaI~7s4V+ z1dO&xxI!4p33z#!Gl-Q;Y5LFQGapq!{>@g}@<-;$r^Fl2yg^52+;5m37s-VAY5a#g zw^>E71nTOz#62aY^V$lWv<j?KY>VZ`u?Wh!^N||iWEFH8d80w&5zOgcvVzm$PGETq z%K(%n#M`r9mPkFh>DDIL<>HWI^TKFMPn8KO;JI+WV9|js1e=eK#@w$zqCuJGoLuB$ z#AR#CN%P7@+hvR)gEs?cmWY6SR_ss=NZ>COMk>x9gB@sxlP17v^JKZp%B8R~YFn%P z1|qz{QVT8Xf1q_*;u9l@H_9*h>hBUAWrIEGuC;A7eFA!tbRta?W)dFAqCgzXl5Kw9 zri`ebAx|$~<iA9PRrm?KHn8jh)|I_k*l5C?r6GA<G3#u_r!o8z&Pbp=Y*n~Jq^*C5 z%vpg(2|FslT#W(EpByCqmNhCUYn$-hQg_-Od0$eu6^u@2Kcjn&K@Rve(#=R0jE4!@ z8q6~ux7Hst0Z>GMa=j!Ev~L({D@>Q0ON_Q=GzB#PJuDIL=8#@V)sS=`->TzfBk7Bv z$$vSS6{Te?CwBART?Jhhr3c@4NzyHmSS)Cd7d6YR>wSOJGe8IJyptBV+eH#j0h;)_ zhc-}Y^>`{Z%e`%zEb`a{Hv|4Echz?jcX_z=B{$mMPQAMK<D8jAR@VN0Z&9N=sw6<c z@BlYaH0@o;a9rarg@pKHN2gaX?*vq?MxV~rJMn#yIh5k^XF%oWRnJ^8HDBAhPG)NH zAg7XK(xY)Q=F8i5P}$(hZ25?2+<+;viJM+pHLb&{Mzl|WzIFLA_JTyGGByx*jMmEm zHOGOSDTUnkfa-#(gIlA=6<cP$#yfv=yVa*Hh0_4<;yDI%GS`zqs&b7sn1bLp`%>ML z&9woNd7Fq=T>(u|bj2)y+Pn=sV#75*ZTlV;5b%(hKX3hjxWwsa;OCcQA1ZvE3<bWS zVRVwoa6Zukz3>Rt9&oYoORGa1LD@$whzL6#RWq7LVN-a`9F`&32dAk|j^w^@Y`gp( zrxL}0Ou0J`>7K-jQW0<3^9A?4C~GBWgbAY)Xd^0UoH`ZhwU(2;a9jXac31}MEthy* z3zm#RD#|FMTk2;y#gmfSN)s&Fe6ucaROq|iW%H&)tW$a(3ck~67i(Sw$+%ji%rT~T zUSfN!q<8(P&-4S~!K96UqD@an{04h(ndb;pBD<I5SbfF!&y$V~2f`r#Ri4sQk|ace zO{OheA50tnIq=6~;dG7vCew@bB6xV74V6ie@yN>>sQyJoB>i@b0hOhVYTx{?DnNgi zl;_`9Gz);Q^I!LR@l|qveiWql@5J`m1sO#kdXc5Qz;`@P5D28>359_S&#$OsRDz@J zqWzz4fO<$j(Y+8pJk;Z0s6+P#`!9*B8zzFi47D^mK^izNvtD#?(yubU9E(b#nE)c0 zMF80P&^k}ke_4Haf3GBzX0PTGl*Go3Q+bi}1^%>+z>clxO1D`?Zx*x_o}YKwS2>T= z*AI3f9C8MX3uyA?$FsL8sSu`|k?8dbd=th%p2xe)q}1%B|9CDw)-r@)JAax^?ufKU zl!_4g)dlg?dE6}{zp3V}m}vT#0)im;#AO#c!c}!Dh8H1|0F-e4W^AuI%`3&GUJxNV z_8VjPWv|-C>X4xxk|$L(dAB10*-&ZG^-#AIufCp&P+M)oE$3<~Se@9fj?#Oe-r;V8 zrsg(?PQjl*{vHv>bmnQuO5`mQLTCM1(Y^4lT1s)Z4D46|HB0Bl=gaKW`WMEK;h$@J zU}a$ZM`OtJca0(2KW_{f82|5kdy;|aFD_Ns+5c9<!T)oqvdIqb^Qv~2pg9!%yK|## zOVhdD1}z4SeC{fUkf|O~i;=ip*3YQd{Zw$m5xZ@eaFbU!S$t+HgTrj(v~m2Li>4`k zTShU(Y#{9C30|~b5*Xo#GGfS@g`@inQNgvTA5BL?PIgz%%3)W=`}mR^xzUlaM6Au4 z>z$MiRkx5(qv~AF?o5u#c~7SK){HVCO_!32PC4M}qov~+2!@OGPQzk-@J0Bcp#842 zJo0#IaW6KtI&CtrXQ`|Gu?cP$N;k#3#nN(P(Zg@nH;mjUR?&>|MF`s2HKOLzBDUu9 ztZB;8?uEWRQwAPUM!|9o3uFRLIGxzAqCbJZ$<&dJL+lE%hlNbpF`)C1TBy&J{~Z>K zPXZ%rQAvPTH_MZ@<t}}q)CbvTuvTl4C99?QRkSLyqwVxmHJf6GQ45{n^DRQx&-Zn7 z{nN@<ujw@_rQGWSzrs^D1(fGCG~kW^EQR=NoJ8z;OX7GXypW~va8YDa?YVpJu#i>D zVe_Go7Ok)ysS5`Ce6#T8O?n;phRj=M`{|&d{325Awa^0eo&NJ002acdk<f|7I4jVn zqKfD(b2k8(rJEAXvTXtkkc~dxKbu3T6W{hoiG^>U95?cIIO#y{jQL}-%<@_J_qv#- zx1q2dw`R9Xs4M?8R{e0W!$pN}z#q0I{>ya67T-7ur_&O}UzbsXtMlYvJJjcW3t$_V znu-|qpmUiuNZ*BLBFjIE5gtm9BS>B|CuX!4BmHCbEi#)CBKO<jrPS3$)fqn^!h;4= z7=rhG0tmr1$egkqH0T4Dz2*)M4lXe8JuWI}74UxymcPZYXO|5C`5xcCeq=s5_<KSt zJwl-U5Aqssi4Cw=0o!=XhM-vN_dY8Nc*1oGAA*g;apkiIm<4Ere1NK9#ajd_`Sf%> z7V+bhNo)6dw0%WrWR5W?Yg6%fmR9+G`eZbK0;_{8D66W?^?-nLit2fUd{Yz0DEVR$ zYnm>1&Y_g4#`Hl`<%uBL0&7+R7Sc}zD)u#dNF>Y0#eslLAdw;KK(vuiZku#2r!tlq zvQV;Ok3gCm^xV<29Rk#8z~K$am-;OeVPOui4g$qyd(eITElYaISCwovynX{fyxU{! z5P^1Z4EIFh)friog6<2$1|2+?c2h|Pc{!mt=#_#?8YXYlNdJZw;1r19$1YGRiT|CE zWJZo{AOB$kVM6ztP0<R_GC=fI1(3%RQ{aZH%F6f1<~#K<p_2LG5U0!c=pjLCa@x6@ zoRet6w7J4FF<-n!OD<@-hXRW(^p}<(O23suR37j<u=au?@-~s_2=biv*cP&;OR^}1 zA@Z9BFENX=DgsSYWOmhrrOp!1%iOJu-Okmi^H!b^&Vj!Wjc3}L*#tN*QqsO<kayG6 z*7!OC45#l41V_-7N_qy4*~v^~9yl<~_0miKpp@lQe5x{Xda`e4o_fbm9c>Wt)^f?p zjbl!z_d7<a(%AU}q4nVo@^<Y?UEn&XjQ|7xdb92x5lc6~C4&8N^JR#7rg|&M6F9d7 zMcF+hPEfT)cHE^hmt4b`>E>d)^_(Ydnv{c9avbqVEF}sPadIo)9?umleRr3iRK>G2 zbLq^PZ~aG$`Z{GZfno9n#(@Cp@Ym(~vXaGB*Oli;yok6i{F!@kD1$|ap@2gkfrD>0 zte0b&{*vJn0jbRxzQV&`PMZxsiXnuhK*t_L=b@6=Tp_w~B0wpOJg7T$5*20dgs$U2 zeqVHUhy(KgAFlI21)t%xS`31lqj7KgaRZVuSA6;-|G}1qQ0koa*n4=15>)&jVmWd^ zOjBpW(&d6*2kL6hD&Zn!`*HmUE1HF@ux?<*aqUgh*r!GHNwT0qInj^wXSH^h-g*{x z?mXg_W)r2kOup>0$W)&teyAVfAsm8M9>@gu)&Od^kyx?>9`3<MF6a1q2v&rDx`%{F zVlU#iVd%T?!)*xWdO&Z2^0dEzfs`>O%!X=&cyOQmWV&F~KhuD`nl+FoJAKYxGeA6+ z6tb^w;2se|#ASpy{6=EF0~<R??Yh{6W6?JKXZFgr=0IUF`NxgOLj@kwaT;$UP0U_M zhYq{<(rP&tP@S<4<7U*(px^Ij>deMw6AL)x-O|vKm2Dx$&~rTy^sk-h?C&o3i&b)9 znEya{_#a=59L^hiuSq#W2oTer4N4HLFEU8kn9{MY5*~t}_=*e90V53X5XSGYM?jgJ zipYWlz;d^?Rm2^z<5+0YyC*k_wZvs#QDWVK_-t5F5)FQ}qjdWawqwQc0q}#R-7ap+ zflJI*r60ucx3M}cVsgY<!HZ*8r%v9}yJ^*BroAyF#mSQbph&t)Htu#bU`UK^n~s?q zf?Fsx_;Vu01#&ZbS@2;e+#JtWnoLlqg_FjI`ssZiTs<cZim9hws1ato#5G!5kKrX^ ztnb{H^gAc4_B9&N6Ev(3^?kJzWfF;EZ!iXrfEr6>SdU8?cV^1`!2uB2de-?X9Af?_ zafsy~aftQr;t>14fI}?*2XgX%Z!*sM7s)sy6YJkh#$yjx5VkL=ZW5tIv3Dk49Zjvl zS)oVond1S$H0mfSh9N~J2$!#QkMSDDUQd<|72|Fgtnudp32!THm&=_hc6O_GeA6(j zZdxh{D<qK)NBt7F+9)TKoLcp|zv+)lGu-J}m6)n_{yZ14z%5e79<YyOo1$cOmZ``O z?{A}7TbM|p9kb5Xo!n$CXP$EAR#xV!<^|#PK(2};gWmF`Ge=I33T--X)|8*xLa&+_ z2N7tOso<vc_YS(CqA4JLG4r-Cw)EP?jSSa!9q;qq`l|bQwH7YYY+4*Hu%qp-5zkI< z91xquUR!p0%CX4}Pf<!9pL~U_7@HuVI6pt87&Pfj$yG{D^=>wkYM&}#PK|n|Uzmob zDBwC9AfoiMr~B|M!PO~}x+GzYtYZsZ+841lDWH6LUfk*K16_xrmIY*pIc28CI1DM@ z-b=1}ed^ToOc%9DQaR9iG>xUPd&BZ}7Y$3?Nm0#OB%hv>&z3H4FM)a(TLAZF#55k4 zwqKc#eA3x4CE0X2=d_It(*~&#neD6USaio}7gA+8^xmGdwiyRX#Tj6?=ff$zmBH1s z!`)bQsR%sM5&1!XBKl3{mtttl0l)(D9tE_IqW@UAa{454oRsGdF{6ozm|VZJS|-pi z)kDl|i)TZRMpbEU_VsBPuh`MoLu{NdUxG7Pr6>8v+PNn5`1CIGW!YkJcC4ko2$4H% zBDORSdLy+qx87{n{p{Y+2#8N!P<kho#~G7TE4$|m&0n9ytjEY*6H(I{db<PLPfX`c z|6!g!>0x;$P8uymTAjTf;dXhH6?Ae^V2QlJNW$oKnuYW1HHbIc9CNxkirCZJMq}Qq zhytJjN6?PS`kd+XWSwS*2GO1V?Eq<xDQ~HeoYZHJd0_96Gm_+M{skgq%1$2cpCDNa zJ@JlGyqJN4pI1^Zk%YKfijCj!KB@=JfPfBKBq0k|r*NbQEDN$vkN2&EPVpG6d^{ok zHW+=BNKTiLNZ!*P=3F50vdG?g(tENY!#0%KK`vwGM)@t<?s;RB4mj!*J}%(3mo~oU z5^FsfZ<^eA7t@0S%abc{XT4M|!xJ)OV4pz*&U38^rj0-iVyc4EH&Whwp3!gZ2nypL z2*ljg*@IkFmSI*!cdqlhG~IJ;3m2?`avj4DBJ@@dJEJV^yt$3<^_;{aWk2<C(R{B( zU#tmaR{Ba%9Fr@OVz&ENb{p}&$(8+@T>+9Ag6$j1Sy!RK96F=&0k)b{D7)O`P!S|# zmCyjiAkZssG9hO+aW(|8y8IIfgCuci?5&l?q_YkfoP2LKK7VkWGr@aoAKAIpt87#> zV#sYw)VtOrguT(r0~+_0wBMht$LU!i5y2gy+!3>oumsJ;F}}<kcN4NQdgtGa4jEvG zvXk}^3#H);;4STVWw!46Y2NU-=gD!poIJxFUsuj@gBrPGFS~H1tdEa?_Gd7IUW+o1 z^__eODTz1tBXxwcR~lPso<Wq**|r<|^J*}C)c4PIWXI#;4m;@8g08%<6z7LMo7SG| zxb+hYQB##&TW0kS5}mmuX!7H8u)+I8IUu=t8;6IA3(%ZvwxmT;q9{jRGVje)_F&rf zG@vUqRXXIa&;{WP?KoR`0Rk;J7E`g{ni#7|R&Q~aLK9p{c(B}Si(Hg6x?6RLtJrl> zDGgW?AvSDdLlSUn`F9t_H^77<9R$EK>h4h^1dO+&i#j$OmtdvUaotl!zoY|;*a>=2 zyz}BC8Xezd$RL?mn(FXPbd^vz&fT^E<?Juox)U_%1rs}J;m>EG8y&7TV+PXroLe&^ zEq^*f?}$$+X|kRw<X7UYuo*`OM%ynygAb-dxb~m}vZZDBqF6fZH9Vi>JrifUr*saa zf+GZBBn&$|EI(-|;f0S&XX@;|Ehn{pbU6ZSXI4|MzF!b59*W)!GB*J+U5=qDl+$KH z3NoqXX_he-$(u#kqTc;=XXDeF`qBauvLS3G<BnYEp-~lwKKlG%yQlEmPC!;kVEAX_ zm0zIz3(k+KJ3*HUC1sP+$*p!JML2Io+a5$xz^Z2&4yfih7Il{D8u>%6Z;MD@VjEN` zpvD7h48m4U>0PB|i)oPE4oDVK-4TSLcE*rUUT6E2z|#s15KW76f9ZOkz<76x82=_t z5^JBdyPRf<R?_=UQa2$~Va?x(CX&cwPnVH->SzaRa3&sd>WGyEBY|Fuqn8Cw_zXR{ z+_-jU?&!gY>)}s_6&CGdNdShNbm7;%8<J58PW7Ku4ZoYD_19qa1q`R2si`;+hY|jC zRDht8Cnp$m5y<<)w2dB?xq>=;DUIZ<H2W;ZaCtMSR?SI7T<uNi@+q|2;9F9xH?_LA zTFPgGOstenef+XfP)AV^-kM|9jLaITiEn$gf51lAtexk$JCGT1_U^%5l{D?Um0cVs zOcTEbWnZ@Qv{oVHB@8TLyBY>+6?djP_DnY(k3rAR9S;FFS7k$PUfSN|O*9tZnP|a< z+RI5TP)=CXFwx7x%q(A<*f??&P{p+mAxT=H6&j^!b#3R6g?5~XHl9HP+j$xv8B%T} z@08*=h^995)?kX3*<F=L+ri4Z7aeRUAm|w~d&wJffY@Dym6TptQ@b)LF%|NVXV<Kq zqK!NQ<!3DMPNqq-b6{E4_H;HbNz=cJ&{iHCFDQS}BmvI{HEVAX?rdB&6tEJWp70sr za)yt6dDJD!hFKClx9&LBlPWT6x}XE7lRLek@)_eCCFZ@Mi|v=J<BTMOwXWBT^SwY? z{6|jj3!CpZD^J$~Y+GS8qYb!q)$*5#HqHm=X%Ft|*RsF7wiMQJdEAH!a2vC45Vyk3 zebUu&q-&drrk4(ti4^1Us(9!Xi~KFXKzqd0cB~T$Ugvqk5=L^0I6mqV9>=X*H381~ zXz1j&=Etb7Lh&&Y6{5oceRm=aZOE>kRfF~~S-O(RLWvFI^V5>a!~(uGV-DfSHxb6M zS9PdeCAT6TRm3lH8Iji8;8!wAJB^f@lu=QU1KM9HZ-O4;C}pcDr;6^`twWXjuY+5- zt<4u_QbTKuF;^H2$DoGr5~`D0TsW|tO4)^1PIo1!_&gVnt>S>L$!67kS<YSe+iBpX zGe0t;MRE_`uTem*iut)m9?Af_$`CEl6~wZ1{+;x7&zjV{fcQ{_De0HW0>)^Rd<3Wg z=M=`*CsWH=sMpHr55m$Ez#bm>m_R?#LO<Awe1|R+v6O^=v~(P$C{@gKGBxv1`A2(7 z3|$$8Hf?EP-WXl2U-D5`ejmWHl%dWqI1<J05Fqnf!enKC3VZKy7L~y`GIKVl>rouP z>AdD0$pp(nW)Oc&FZ9mU`D%A1Nj(Mu-97irY1T%vu6noo!G_p^GICiIOqI3zaph;c zJ;7?rlF;zl{zfgK>{F1nDb_RIC{UP-jeh-pD=xtyBBY~j7*fhuUcB7TsEDCFC=8u| zl4N<GJ3|Y~>?l>#<SZ=7c2b^^Id#_kJhatHJD!nsO41L<0g{mWVt}|S;C0m9qm*&W zKZ}sc?eH)gla&F=9<}-zb!$E*hXCoXypuXWgvWCa=pOQwF;+%Ijm{t0v~y9L1+aDf z8Nx`v$-TIsjObj5M5D~exF?`O+p(Qcm!u1mJ10pEEvgZWm3~VNZ^`qB7XhSJ<1&Z5 zo9>5gZ!@Ur*>3g4<g9y!+x-Q#G4btrZD)i!2NW7$pyc=Dar@-F%6d3y$rqfk5Eff5 z0i?g(uz~X9v4Iq07FKF$u5U&w9s!U(sH{23j}{E*8`!-8=)f3sfqXwXrqoIFlfK<Q z87WGS8MpUoCOwi$^PcIA^!i%<`#@bf>JJXPg3@s+@P~9w)qsH2iJ&}wQF?UQvU|~u zPD|e8Vu>JxHxvRg#cJETE%u+ySQ-&Q+>C2`^~CFWaIp~%(laU$pRc5~LdOmm&)Gx( z^m9wCPcfw|AHik)WZ4ES<Pht{x4Gib;_^Zj|1y;)skLWeg$n|z?J@Nu%p{I{ev<@u zg;mHAB(f0QP1MHnYTW6yZRR=$HHn)<eW>w9SrhXr_{aOg$pqzA;|=X#rjda)@)Afg zA-RYC)X&sTu?PHBVdH>-b(6uR3e3|6l}AgYIh6E*b9b2WjIKGwXG6s`Ivm7}(H5t= zQKEf1#GDFup@5zs-NRUwhvc}MK}RfJkNq_KCx>M?J9jX=4Hxv<0y-)cdcQ-Pvocou z9E4`L%&uh3a)?iSZ_DZwHu~wCuX9}s1@TQ&3tTZykkdE-V1Q(@%Jsi;m~8)~!~BPy zDprR7zNhLx9VW-W;4uF!)lmQYZRB6HK{5Y57b&bT8M{dj-E~RjUJR=$tl_Kks*=Cj zQ6>TxYs5y0y;+A0^7&d)j2r?OwFFHub60{^1_u=AiyCvGIrmkP-;`nroi4kK`jN%n z{edZ(2Z8z37P;7p2h!U;Cz(W3fG3h5X!`=6_vV?>+`xWy4xz*ei%$f#(4oT8GY*zR zog#n->y{dt?qH^l09Lx19z}~EC91L}b>IL2x4s`A&yv(lJpC5m$gtXBBZE!n_q?lN zlA@wmNvR`R@U4Zd!={6+Gg?qjwElx|+Z~=NuP8CaB5DC_q9Y{09UfqW*ytXyv%b}= z#Ojq6sIJr;V_E3%0~2*)E?Miav~jg4$2UIk&=<CJw%-q_yPookt?d(X%SNwsGpUgj zA39(erQ!D-VY8(}<~FB}ek@xOaSz78cl^?R@^ND`&9aK>cf?-prcZkxN3#ul=xCoa z5>1#r4$x2TTpDx2o&6+GRA)Otxxsxck(O;Z&A2UMvz$*0O(X9O$fs-Y{uQc5Iik*6 zVyeoW>Y;B-2A)yh-VvfNcR)bnuh(x4mJ{wfZdTe=CrgDA3wI+wP;>xZo8Oy%p(@6| zQHa7!|BtHr&)xigtBR5FZ>oxe{-0MBBg4O<s(+`D7#aWKVHF3<-w_gZY&+}#J#?rW zU&yF&_+@eRX3cRTy82isI=-bs0=qCmbQdRqh_3bb=;?}33-x^AZ9!qFXlzod_8bc_ z=m(T>qXK=jgfaFYO2hKXfdvSuX>2Y)^dFcChmAa=k{n8$h!jTCFKp?Dj-&6gojRq< zc2<;>iW~!h=uI!QP+y3!Q~SkI(#o0*<QVyC-i>5!g&NjYH8zVhqgVb>Zk@tcUl=Gj zz782b&6;_R$Te+{m>A-)I9SiOU-SR~_H289wO364<X-*bO)leqf0O&aigp<P<HuoT z{9pIE|G9Jw|H9HS|5f7+J1qwX8w>m2ZWm-_#b;n<#%E-t$7f(+{Tqchj4b~@W10VU zzYiNTJ}W&wGYbno8{^-Z`tQF^{@<^?zc@%{WTI#OJK`%=+q69#L-1Kudm_T9V!wj2 zgLv3`W*-M*TF;2~r>0K=*DSQTmP{s6<hsNge?3uFVY6#70|o(`LS0Ym$mVqU_?*6& z&SNTBKCx9HRw-Bfy6;nA9d}WoP$Fqp$~wH5c1f$W8C6nTw%J_H>h)f@=+P>X$Sh57 z)G4uibU{&J-T8`+X|~oTr9EZg9*ZKLR8id^W@)m?G`C^W#Mb$Fz8E|?!E1UmZJcN< z?i(tURHT-RR=Q+%DB)zQ>`YPhYMwZE$}lczAf<@G<WnR0ezCGiVQ12l_B#q_DPaty zu3xjRHpoig*p(wJBB6CR*C7q9LR$<Iuc81c)u(HEhW*NdcBZEnV|SR_=%d{D&hwL} z@tb50`5-qEn&*(-!P6gk3vomDc_T;Vte-Py1%-PUOM%E4VwIt)zfjV9ovyd|jIF9P z$J6Ww)-|Fz9;PGwX<?pl7NPjYw!uAUmWni&i{rj9%t=m&T=h68tSK-<wK-&Ajree{ zMnbxltEN`q`ssc|n(<BAEG-g1rJ$y`I{@rFNyw`{@U!^?hUSz95((Mf?lDOUgav4y zw~td@uW+3=J<q4*@#0H|S3?ch73EO70DF_#Q1EKK8(HE*)I00O(rs_QOssOWOZn3f z@-EUuq-S0Ha)2c!B&HL-e4JXeR~Y2|YSk&58{_BOYM)nk{!5KKvKmaX`+P%o;BJ45 zdxZgO<4SPk{gn^^^Eo+nnK;uVoL}P&V(E@2=(sb4gtR`x>2M(fbk*@|Uw#)Cv)*41 zz<sxc-|CdczCUm%>?%xmIc$w!XB$!-DAJK1Vo%{z-RN>{U_uBdsotki>H8d^Q7W*a zRN2J=b)a3e9xa3cTZ9ug%x^?^qpRc`;C{a$tGi8&UD4IgS`fAVSgDKE-(z#Kb(h=@ z44jAcv~%&D+-{R5uhPk0Lsb@@Etm_*4C}eipMoe<o20E@V%LH2Y+801jW(H)b2vDk z<$G@4CmYB$dN`2bY#@#)<99oyIf~)n_*)3#q)RH$Z@GucBtscu`G6j3_YIF1N2QyF zq3YaD^F-8(hg!HP`N6UQ#5{u^XJa*;5MLsq%&Uh2iek=b(zb;)FhGiX>LM8Ls=_c+ zz$xl+Y|e4`!=;%Fxy%J|z;X<QDkW3y1Bbg#<UTl?IOUbi&^Qm-jFtSbcK(c>K+%@s zCpsBoSgNbUp+9<m7Bs!s&j&mX{|9yN6x>U{uI<LQos8K0$F}WcBpI=7+qP|u*tTuk zwnui&J!jS4_09LI^?q~hgT0RWtozqheehiMTz%g!eQqj~Tiv2{c$t3$d&8<asFDjN zK8}iCz8WtU@!Ng@HNin-@lvq&um;Rq%N&ZjO~yrfd)5rj%M<RrDT>>tj)@ZiNDxj{ zz7;-LEnJnZ%3p$^J!oW$Qy<kZKv_Iz!g%%3{H)uam*qTAET%9|NP2i4d^zYu=X=3A zRiLbZr&%8lFv}~CWmaQRs39L4qdUFhJbY3Fy%t38V7{1uSza9S!FPEL`R?t2dGDE8 z@;@XVpsA`{xg)Ue5cYDFC8_q!T@7v|C;1@@KtHR>OGMbEn;N?7TxEBZ-=D7ziq&ho z`Q|l$!P*S}2sTBEA2EZC@K*D}Su%D0qoo~Z7iBG&(Ld3b-V*$)h6>VXWRZxX?kvR5 z&rSRr77|8tw;bm->EmlwSc+VD${K~<LWn!x7;&fJR6Sz)Y@T2DQyrRHJc6PZ<;l{! zHE$SXO}lhLGT_Os3>U%psds(f!KQE0_4C?EMaQ>)7OB{?+b2nWBSg`!BJoIvxzIw{ z$iKq*JUwMiYa<}3k!luJ;)K5FaU^{i9P=dSnDLi)mMW^+vb#jsv-SH;X}99H;sX!; zDvEfZmI-%sd2O)#km^U#s`JHy{m5Omahd4&M`9@PF9}o(g(^D|#u*7V${~R=Dk=to zKlE!cyrQ8>O`2@T5g2G9;pWin$)V&*kcCSt-rqo@N>2q=uWdJIU|`*R<DVuSJsS;! zly<FskY=VwnDGSAqe7rE5mn<Ds@a_K8=ksziQQEag-C`I2PhY(E)&Gi)!neT2uy*9 z?)g1a7Ewc6t8zV47W6^m#!F?Cl1Dv6l%`i^KPUxpyzYr8zg_1?Luhq^00^=tnu#3? zHuNr0#%T`FOrNRfMir#&HOaG%{=cmFV1fi5j1-(e9A@-hbQ0qzfnDDV5|L&6=Ox9+ z0A-^6dU3+EVbtRN*BQ2kMIpSliN_@C8Jq7IWc7`zrp5{IO`Ouew*7*h1Re>B={X`k zd7(sBOJ~m~CXv&6xrPJG0@edz%61=(R%B3BmAYN}S?d@dlA(j>jwT5E*~c@|xlS&u zOyZ=#Y?`TNccgXPbC%tA5%=j`8`-a1Mxv~kn<1|)SbAVg6QBr`%!$XK)^fbBcUSO_ z(sHJocFuo9NDT@qUkJD7QsK;mBUawQ_ssKBpa~DIX&tb|lVuVQqDg2C`!j^G7OgEV zX=4Tf+Hgy`X=4i6&U(IFI)`j_$CX3PlGnuzZG#pU2NNA@c9znPI|veX@i-kNM3`}8 zgQnKf`5`bHQm{{s&-T>g!AF@t-MU3Y^uVzq6Bq4MgER()DoPkAx8&H~+CNYxHu<N4 z8xdR#26!k2wx!a<1V)^A6Xpd5j`T(dm;@+a#WSsDqI<isY>?_trGpHQI%)H!Q*8-6 zOu&h$gs-E~<8K~x72~&m)kNI?t~*L@ea}&?7sw;!K>|zhUMfxd<=0ShQgoC@q8OiG zs30^QOs-%ex7&TF$0+F5Hc}U7;C<Au+!{|DP^Qn-QQm?m^;;dZbjF6VJ17tdFYjgQ zeCdoxjfRB;wW(U$02wUb2;*-2+l}+llib5e4YXO0IZ{$a(S(6{;^IZ5n&Kw_W^|Db zO71sX6;kX|BKsNJs>_*3x2mE-S(>KW4BGq6rrYbt5!?>!vWO*`x^EneM?xkL))M0T z9?AnHXwRh+1L`L}mFA}VvlpS#AFZXK5c8O>RaP&5nC06+-R84ktTE|+HdNB9XB5G8 z5aSCK8wxb@W6TiZcjV|vv7ap1+1?KeOP)+;1Khn~5m17p<$*$dUJoEvIuJ2A1b}+7 z_CLOmK-5$cV}CWd|BXN1{%Ue(`FF9A<-Zmi|6h~)KW9HS7RG;Fnf})a{y(p?`sdC6 zccb**u9f;nW+i~}Us;(<e<v%Gh4J5?E6dDC&q>e0#>mD(FKni7r(*78WlXPR?C5Oe zM6Yb@<oLIb!^}#=3}F37pd=A9EBoI$&R-;k{(p9ye*}p#vlB5hu@V7T{zli=Kfjp& zVWh$G7fLEKE63loE_7@U+L66q{t=!&7$I?vDoW^*xXFgOHf3|^IY+Dw7Exu@*+jOI zV9O@|g?xp0o&JMrLazQ4JOZeWGJarhGMy##<|J_;7bSo2Q$HbCl%DwWE>JR<z8`?` z@O1cCB`vyiHzMJr%EI~eAQN7*MG8|$*`H;B68^Rzf??124UssWv8Z1$4`z9Ml1MeP z#IsWEk+C_RI}>P*L4N<09yTB`$>!YTrJ-irV-;vlK)nXG&?+(T^AAlLxgrM6TisW6 z^Um_iliDd|eIelW<MU)}$V;e$=2=;^ZI)}WnOt^AMW2GM`RP#qK1Yr~n;n)<{fC)L z!im%2mtyr!#OJYiVf8_2sUQl564(Mj=4hoIv$$-%q@1R8J1o??!)51vL@O)Rn-kW6 zwzrNr%cP~+Vs6`az^U$Z^<g1b=|Ub%egGiL5}^$cc~Q%0l8p;Vf6Tn~V?*~PCIP_g zL6@w#yR2ij9Vn{X$`6(_KD3t(rS8Ud-h3i@;h9=%r+U+Q5b!h^tT}m`SF1WxtV1## z2*zq&w4c3Tn0TA_+<NM_oUL>PII3EH*$6e;W@l>RK1+X#61+a7uzq<~!@tT65Fb_D zgPv$n1wa&YM<ubLnS;H(e-fvi6N{zL|N0&03m+FN(@j!D{q`fwZ$(}mKqW6smz-{~ z_sk`xqC0B>i7V=U9zisnJaNIM(5R>ba_KZ}{GeLpTIplnvRP#jTC5pM4P_YKFfUBL z0!Phm1`_C>Nv!qZNeCo!kE^McCgD>-8WqLV%s5uu@18U`?4k06PlQKV(c%JMgbVHE zdJFseQs1W9oKW)v>^zJGHDgtrZCngXja=n1^weB7nX%H7??xXU4N4>BhF4{h`M%^D z34^wd=b%5@keYW=l^Pc$YgKk=&9LogHwm2>lZ0r)c!hyR+g%h(`}_bhKrHK&@d28~ zt3RQ!_IaBw4xvp$32q!6yy&8360)PBRK~o*G5FM$yN*7$yg3e9E-}HS@!~xARNK=g zIn+ME=z~RMI2YJx($ggmiy5CK|8XW$D`_g=`L~O9krWF;qg93JoK0*=&Z>2Z58-PG zdh6^B8xWBsK2Y2ymSzo)j(#WzB1b^qOy9_f0PwC>4w#dHqJvl8h8F!GiM-LgvO^Q) zO{yF6#8SPl7@v}4RR11jwIn9>rHO(u2jVf&QD<4`mq-At!JokxpwiA?2cMRh9WeG? zuFKU7HsLxqVKitg+p}xs!6yV_3La5;4I@C(?A~2NZ3#asL_Rb7uoT2RfhAnN>zoZp zzWwm3HmvhVT$Yn{m@C>=M|d0oL;`0LSpI_?aht92!n~(g1U#!23^XrHMi-%9nSxbF zkBjR0IP54B_T~XqI=vS`95D(X*MVfsqyrE{Y!6!Aev7lRu~j3&gUqfO5s0x+B>VUU zCm_lY%@7FV_-B#@PAb<XhgVU;_OtfG#e`%QDjy8YCmmKZ*q7jbC<jHXKn6xV8*I1m zh9_Hbj0Xku3a<DVhQ??7*OAasaRlgz&oF)K)wGXWzpdlOmMV<$Hft187$*aBUa@tf zp8fd6=sC6E<Doyxvm1zVb|9{!{fl@jI{TT&?NwzZ`XQ>z2qunc49Vj~q$9O>c<BXC z5uC>C)f57`#v|1i?m?;5?!rcR8q5wp?I9gCHHDO|&W9fo6+hzUr>Dnzd+1BEVk)ej zJEg1_?#@ksi)iK2@ZI<O6KO$sPv=%7o6YrImt3rne~NvY`|rhC@;@S|;uD|hDn3l< ziXe?Ik>26<n*2bWc=B)$varLP!oyo?a|JlUXMmgtLC{P1wHZpyjNm5A_*JTQ)fzFS zbdocXMk<b~T^t84FOB7KcO5!eEL6mcnjV#e8f3*bcHj3!8>}dI#xpE_G-E(iNr)Rb zg>5dbdkRDMkRfW~bH!UN<*NqC;jc3&gp$OHb8kANxFe8oXMIOQ=F(rAn6j^^^R%{i zd~$TWni=07ecrD`CU#lzYWccM1;(28Y;JztpJhSb9N%o~ef^r!yUeJ3;I7J8>zlf~ zeqV{q<R-|{@qM-9{3d*?o>t=8{TAHGAiUTJjDAKdYA~v?Jxd66iklCNtJ=)OFdF3v z^Mn|Uc88Y<^6?^e*-T?&Q(f()>eLQ@A13Zcyen#%n%ZJ%zNM>UJYc?$TeQCnCmjVc z`bjLIG5dYr*1(?cf{HZkkDaj>AzL_)E<^l_+M$+oAm_;7Agsvi7bny!vYu`E$Kj&$ z;Ci?Hfs4HemR<U#Sg0SQGNWWvItCt7!Iu#c6fZH<@A-<Nc3<JsbB-O?yTPVw>=w{_ zjCS{h4rHp_B#(6Bu_7`mqJ%z~sQwy%IFur9+J+`t8FW)|?f_l3*KYcBxl<HRJ0CC( z_4xN}I#XKUg3SYlJGwZs+97GoceULc+VGBsQ!_79#SwLkXksdZfPPVdrTebmE;ZZQ zQQ^Zc7;J#s8R?nG&t#KyN(Sf}>r8hNPwH5Sh`0WU5WX`74qwvVyJ(RyaR8-g*oLB~ z^dU$vK}VJV{^HJ?^-zV|$?~FH7GX<M8rblK$JJE>0Ziatg4$rHkhP*P5-rz?EA)@h z7J_!B+sw5SnwmkR_*J~7-ZCtwz(|vk((zLmfnTym8H3np76&zIFRV&ZUwBTt$6lqJ zW#B~}x*ABq`}g`c$=T1$Lhd=;F$Wv=+y$0Xi0IYWXw~Zce9SL90a2Ebt5D%2LVeJz zsyIeP%`K$w&Hk5<wp_IHGL~hkJ_JGTAsPSya3eT_2?3<<%_Ule7GRyx99~3XQg8u} zqJ<D`KYG06S8gD~*hLos@6Z6e1-d*mb}#l-`-M7JJXp|#VV+dv&({D-NiS1LrU+#w z7`v}*QCpom#M#Nh85fm@nddjgYYv_mz-pxR(f0h2;tA9Y$yZze`=CGf`<w$hR{Jk{ zkg5B(ob6*Lt!TnMa!%0eD`LOVDSPt;uc?kfyf=Yd#?v$H<Cc396M)LSW1jt8g1SqW zJlJXEu0z$Ig!~20zA%^D*b?u4_y+VBRuEqwpQ9qT6IeAQ+lR{euN+@HvJe>Q#GkR} z?1V12Lr2wq53pGUC2Wdz^QlqAA+_a)>S75yVZr8xFF;BN7A3b{W=S^|Y=N|Q`HwE} z2SMnsNGQT<p26@5$b5KII54bUUjFo`$MM*6ZYf%fK<dhnRpwl`q{BU{J5&Am6FvOH z8u}sEKE11oUJ4sqh8@~;VVW?KXZ5y-VVM$P<anD(t#h2#kxuDzYTbau$rlV_rJ1V1 z;uHcy`B;cYEGBk(Zti#+@jwJ-trPJleuK@)>`*3GVllv2dvA2vZ@S`cvqCPagq08J zsp=NKQ~J9(QRi7<$s_{s6b0z}&Fa%WJ4V)_)p1OKc%{v!?3n@I+YQjbJ~-en7>wm_ z*wlZ?VC?_SU>yGk493FxFZN>lU)k$F?`HbvP5*c7_4oS%SU8AS*_i+D^$9Ec-{@xg z=S%#>bD0<!nK&5#_WtA_VIwR6b|PjLCL$Krzr{7|{{y*(<1e`8A01eKgKH+$Cu|Nz z(YG#WV7iFo)mSSdR7sIZ1zN61r&sMa68s6G8sd%;iep5uiP1Zd4@vG{cQ?i3iK#kF zF&dy6i6SdTsy{eRHsu%QLis842c4M4jp8H0d>##8$f{A><LJ>BrcMVWj|Mvnpu@|K zk4^^&DWrJR3Ps2zZHAoqa26_&7f$Bn=f;=`xHUx@D14TEDA0N`+^SHL#{n6O4Y#&g zqdfPSZduakZ_HlR`#o~saO7HSistES#NePMrA{_#yKT@pSm<myKKR+P;%<bZ<kX3< z)y4(E_Ht3G<kcA5{8~|bdqWE@EB$j#uka=7n^Fh2+o2!*?$nZJJn5@|BTH(M<V6&l zk|woZAJH{0+_n6{A64VxOsMSL>ophQHAByTDsxwyO1oR;6fTs`US&8Wn=nDub+dE& z{!B~ZXAh~ZpTfS2ixV>N>+SNhC1PtZ%b8yYm2|RpnW^qJ2X0xnif3^139C$SfT!B# z(r^fhg2+o0dYlFO-aUACt)~EfeAelNX;P7|Fd@*3sNSf3ev_;QUbxoD?J^L?!fQnE zX%4Z0j8MM5Ln%8qEYUUtb``i0A|QI!e-a8+%Z!lhDsiQK;i!e!X{D2^1qZi6G=~gg zWy)00F2q47QMe;NtA-bH;^Bm|z`77X4wdb))aFguqXzK*P+wy5a+<4p#?@QijgY1D zp*Y^CPkP7>onfRIQ9-oDbqbGk6G-3xg$T*LCF*)-`{5%ot9$ZuS-12gfVNfO(hUsq z;4J|HkHdHB;q!V!=P`GD!3;hXec^!$o_=~eGPY%be{T2uxQip#>pe1Wj{6R`9x_3~ zmF|toqh;0Fd|b?{z5RV}KMNx9%r}!JDt3j3L4D839`lM?v!028Rrizr4<uo-M7GO{ zsFKpp;gRo8)Si~x-3+c0OgKFYn5sW<PZ>&O)ukZPkF;WWZvp1%qJ#%bq>@h1zl=!e ztMM-2q@^Dlsw7cp891t36%vf$WmXk*O&JIhw?rLz#za4GLdl5+NuwBr&6dea#`{*7 z*%V)Kh4%~S5U=}2Y2R^T=_X}}p-j87p2)8ajxuy=|4<JS%diX6fKUdb$9;!Z>-r<# zldC)e3p;K9lE5JP_5wBu#AbS*jD+T`F$Di05gLS`b_vD)Mcn$_1&LI93LMY~1o3$X zejLE`z%f94lKjV?FCvs~ro0!}kL4)kTdcPa%fpEg1;%G{<Q2j0lFQC93cyub+3gSb zVAY?RA(BnSpC^Vb8?U`5_(?Oys%v$NPvS?Z$<Tsmg<zE7<gN&}OGOnyp3K-~Cm&lL zR4!efB(AZiu^C2<odaw?v-g4Vtv1IZx4cW|Xva+Cx&sL#uy%BY%a`_3FRN?v3)K$D zz2LIr2WVi^6$pLu1x=$xy+}qgo;LNAr%DBA@_LF?JVBYl>o3OT^`g^Pofd6YE0>R; zmF79nq$G~D>xmYJ^&){-cjZ=harvy&L0r&+kTbtOU8+(S1iv*PA#=UW$FM{Fh@M#; zAUw{r6%OepNb{?<mA3_uYD0!&6hX>eP*Dd!PBuLs<zGLAZbfIm{iY}C*oeq#*=DPw zz*RyTcbLUO5F$m}b~Zy_@KJCL1`5{v9HboOu*b^*NH48%oMBv2df?QN!iM!oacdw) zei0b5*UM&_z@l{5J$qlT4Xga|W7uIJhokLp-K*E5prs8S<n&CDs%aqg#7If?6^Uro zgG_xv6bTd`SZy9t8HHk!^>jl+Ri!%5EXx!*c%UlI9`5#-fiIv#kilT&WCg`sTwT7N z$!Qo!LNV+wyIe*1cOg_m^}QNuK?kR|1>sUsKVU79Zib=Ku$tj6gd7Z<RU##cUcTj> zCn~Bm%P$2i3V!AzTVN#7(5hPaet;!U5JQMe{9!~%JX;z=q?Mzd<yB`dH3hW#cl~)f z=o#YP<{iaQ0^x-x-sWX+uf(@<`FLZI&Lh-!pP!>2fmMg)Lr;R$`r{dY%Lp-!*3<1Y z=a=!U9#8-LF<<Peu#cnGGVM|X>m)bI&WK7qYIko0Pm4G@C{@aBH5&(|is;$RL#(8X z<@hT%<w41DSMiu#-XUO@WE9V1=otJF^*{-qMyeJIhYwY)G4CWplZ;Mq&^*Om;!jJu zkpDumWqLufn<nMeSwcDn<@O3*G+Dft@Etznk(Mi%_%WByJww%K9>(b!rKs<OJeb6C z#NJ0-6f7vVOO<4ma$jl@65KD&<vSM6BXmh1C`FF1koeh`xxF;gS1;({cM2bn+IdG$ zQuHW#t_aDd2r64N)FkYA{J<^JVUZrOJf-{z(me9FuyLkhwPf%lLwxqZ-9U_)4v>gL zRG}$Q!)g-A6athZ4Jr`O^GhUl<A@vuQnBjiM~#)ov{!+KK&Nj}3&~;#lwv`@7~OFX zk1?>WB$vm8g8okU8(*51nID}nQgmk)r7r5|<M>eLC|rR{r~q?PAOGuZN+^YC3!<MA zWzAQ99Lt!|D98<JiM7|OfKZ1+&j|49-t3B7iq%!=#P^Lv{!dXDlM!$ES^5mFNR!Hn zZ|H0Y&E5;a=+13&(!fC+2_pl^pDpg-TR!@kvsp4nXLSw8cw9imOE^*F4ub}@id5%I z!z^}n0(g|~orqw<j+}kz@4myE%`-GIJDV15TQ!2cZzUkG>4LaSRlRHsDmDINt^Q-J z5O3!*l^*V=2^^oArP5qK5#PZqA90(YuyBX~M5i<Y&<fc{&z>tu2IDEee26(T>WgsF z_VXmT)0QE}#R-A#n1S}`fsSO|)PRpx^mUh7m`Bt`oYUe}=tQ!Xgc<d%@}@)?@d2?` zQX>&99EYSDEhi_8WDsg)gU#K<_VCY><DuQMT3kHePe8m7KRd$%Q3DW94}$oYcZy?3 zTj(5EWq0t%0!(~Xsuc2h+idgn_2O}z9{tF`WJSAp{ba@L;(jUnZCcm90XJb(_h<Bg z8r*eT(ziE3p{B+arV#>U8@1<Z*K2SknZ>;I?l73cCh_tBEFebcqhUVm6ZpTDC1BCe zH|La?f>4BHL%`Z<2I9(P6t~deli^`07z84^V_@N6JHGPN{EQ-aaN{5}S8E{-?4uA~ z4C>ZZnVcc55Zxh%aD9g`WPpVu&|_o4jDGysn8YRDjtdu&Nz{+Q6I6F$RB^3?EkYa$ zdgqX0AK%FblB)I`h#0bxbx{G8Pp7X_7L1amm(8gBL0y4id+*0iQ*Yt_8$_p__*-Lg zR{)mmsY;f4gt8}>QBoCb3)xcr+JbE7(2DDQ2dJnODE+U1gY!QF4#2-_fPnv61N?u0 z1Hkydg2sQN4-N1a%a(r){LG91&i|t=4;$-0w><2BXRQMGZ%K*&KPYqn{Dr&7%)$0I zQx>glH%5`gdd}4^#p}b&93<(-2=0H_XFVf~>FCp#`L}Y+qFCR_p`gb{Ir8GYv%I^0 zOim`CQPI%bL4xXD!Md899HpD;GMHf68lsmCebL_4tGvA)5aug#J;)ScY^)6#TQAlh z%jzvnY+dfxu={(InRcIi@J-X2c5CrWXHB+7=Gqw(sawo|kq@&+vNv$%E_p5cJaK%S zdc6#1Q|MlHcB{mnRAzeD(cVlLZzm;l%XjszwLMU>=$?O$WRLjl2T#8&od`WQyABDO z@1&;Ne>c6_xHP53Kl(kveX5vW30j#&WkALiE#;?e&FC&nkSMY|5W91J=h^N9?od45 zZ;h0=Sk=Bb#zek+tMViCS(^$oY)XC}h)yq0XE-<Y)6_}9=ytLavpwxIG8*7-Vh3s3 zj>gK}fvX3})g9(r8<{ZFdWh%9&AYYcDaZKC;h*n9l&9`B^h#$zJO^THW9E!z4g6M{ z5~L5!Kt|{!`a&<4sYskh4G!#;cE)%F`5MGC|Lm=S&py@~E=Z}{T7AOp*pAWzP9@N@ zIK-drb~>14k-HLu1}I6hOEDcYZ_OeZ?6L&o4r%;stBa+m2pJwM-=s7&jq7yBa!Z#a z5%Dht4HCpmG&i|2sgg%@gCZ7990Fh;`?(({y~+#KR!Sb5Y6Ul51B#~guV*z61nfGQ znhh?81YL$hR+dAYX%0%_?@Ai3R-F_mU=x1;y+20CnhEE%e?T*#3F1HZ*z<(Tf?eAb zq+yR7Xs`?(Y(gAviXDE+NLY9$-E}!9a-0|3k9J$tE^8@Wb~YSWx&xFSf^{=83bEk& zfqkwYWOblGM7PX$Lh0TYG?yvDF`RRv-`nK6g0}6^I8Fk;1EW5YqufnPq_Jr(R<{Nd zdjnSa`vZvTJ;d7CGb_E>UU^6buk=T3s#W=%jd+HG<HMyS_}GwWuR_n_e=Wc^L)<U6 zywt|yavNU_<IUWIRW;HdVGr18Rzgyu^+y61^ithJRDR;4RUuToE*`%U2v%oEeRb@< z3`!^w%K7Av4<Az{OadXVZsPG_;4l1k(&&<6*QbM;Qj3H8+U(UlrcX{R@hig`Hm^nf zLFPRysMXMI^Kw6T+PS6O9t23Pgl2Gc2;K@<#*t4ss9)H}16qQw>*huYLdxS%b6pM3 z)~g*L>o1;VP@y9{VIIZQe(O3Qi5@u)dfL*hn?DCJoT<YBS_M4`&T61or4IVZL55jv zWX*}9y77?hefo>f<E;Eh%ofx3ZDzpS=HYes9hB5XQrG_6G-jQ7Im2g<F|TyBE7P@h z)_-`o-vM%&bw+sP;&DOc_s6IF`)7-L@NS4z8{&#>hC`2k)vB6&1zp<WRf%AUv$R@y zN5Lj<)U=}3eJuJV#*eCMx)p~bH3TNYu(P#;K~bH%LP{QCXg?-6rW^ONA~(#H-*nB* z%TnpP#P@K6k4EJ6ISJ#nlT-~$I{9IqX7_}mYY@d4!gV;~=2@c3DtJ-~No(5imx!W{ zR!~yhO*GxB5h4&pT(ST%Lut=*)oOwX6W(DH&Tg0T_nd@8tDkVOim~IEEL5bHj#_nI z-e4)3GP&_5Smak%0u`iu<?G_D-`o2iefwXWD34jn9uLLY$^_DBImDg<M7h<XWx{uC z)#^WfNnbdD<Q;e{Y4C1@vo^9v@Z-Cjla{NNCK(8D^zz{~7CZtYlOVR&At8Y94H=VM zEY55tCJ?+PQh$Xy6y#tKvJ}W&d9g>6{DSm;XrzB>TgvxI_zDW58QGTcv<(S-YnRzI zu!tU&lTFiBLTF`LK@ZrL6*iOSTvHxv3$dzLKiG^^(#GE4U0Fj<)()I6NkOl`TH4hq zZbqLV_P}B8zzL|(MuimH7vP}3aq+|)p7aH!V0hal?@45U5!|w;k%U(@n$0iXRE*b& zk@0vN$fW69pMCh<TK}0?WOlOj(bH3yja8k78sunxL*AtoL9ira<4bI28NPaMj~3yA zT#L#TD<UN))W(@KbRu+wGMoA1eq?Vu>UUR5=91cxvL9qj+GG}Rc_z7SbCl9h5}_Ds z#_`K8z9~rwA#6=aAMV8Tpw&J?qjWl!6)oZX92JH(Wu8U4748!Xa^u0;v^GK5+Fj6N zaiPQYa+`AxwuC=ZNaeNo$?uBS!4e>39yEA)z7yQ`=9IPOJE(kZnm^0s{MJ67gAL7o zi09YmL%G<<BCJ?{O7b?De!h60oWkAx)Jj>sVNWZFGsx?&l=_k)LVTT@s~ca&lUULY zW$>S`VvyGrirbevSVl+gxxeyom=F&YnTWhy#0fbJ54CvJ?>U$8mVDRbEL2C>C-c^e za0_d7o{8veRUob>ri;G_W|jY;zrN!G$$mdPv!fxy*>=IMYBkt6v~qYgB(hXrW=Tdc zc!A|SD9x54Ps-5~|CEbbMHE1>@)?8+-E|zr7rO2des#sWy6~)BH>g-tPgP>uN&pvf z`<`+A$q5eW+lQ><2q8?`_U3II?Q1<XBX?aqBTsx&_|QskUEljLl}{(;Z-2*@V#G#J z7*_KNS?nYrU<c>N+i0>#uDh2LmB-raT(jv80&}-r3?ZYyMm9>8q-wZ(rU)t_o!~*` zgY)t^*MEtwQ<=@MsgAr5yjjd$IzPuuo-YcjH?3ckr9q?!CZ-sGyGEgoJ0cf$Ry=)5 zX)ihu9AQKDtXyeLQ{>&rKKM~&^h)J{iY{WtT{vyvqsPqrk+M=G6!yFNrb=zdJBC}2 z(xg@eyf1mhBHflv_^S4k4W)wcZk$RrxEi(Emw(DPMCLrNl(1QhmR*$&eNqYLvDiZX zX`G5LRh1@FStz`ldP(zERp{+QBO~{TmhRL8xtRi;HUCSxn=!t5vMy4mBRH1^1^_m? z#jsG~->nr$HzE&!4_jnWsWE*%N&Ae}$?c@Q6RKajt*^S_pyPd5+^G<sg>hpGRAOjV z=DBiWj`_Y-Icp=w_K^CXF8dw<koznvt^tLS5v(6GI{#rAaW}~v`FZsq+}&g;Yfm&T zf(hw=%7fMM(3(r`pdVve3b(aC*F^*+0Z-3T7P{&(9v}dLry9N;o7S(;O(aLWn_pMg zydW&Dm21W&w#F>gZz<W|?rhDtq2a@vbU-q^0~}6h-^0|1t8y+B)CJ^o!hTF*j!8W1 z&<5&+h@$V1p~X*%{=R{>h*sDz@U1~mB@F#VbhLV6h*QS8k}>Brzn%t|$nnpn@IM~@ z;urdYMgzb5y*?$i<y_b0L`BbbNL*y7Q^nI!mv@`XMaib`mP6y%3$4xzjM*PASkt;P z;bgsvQ0Jb@5DC0FfiEzp_JMZE0bT01aw1@5HOgiwL}IfEVm}%OlQ&uBsIp3_mFc{l zr*>&{BZo60P-qPudK>=rTefQB%SRc5MiRJ!!3*(6!1d6hc?gOjqMS@vQRMt?6m)uC zEmvqxo(v-qOu(p*EFqU~K4Z6ArUnWzT+o?#f;(`k@`=1d$pzQ&kow2K7;uAt>b4}; z_b<h#b8&12{!uq;{fl!?Y)qH$_wf{L&+9FNPcV%%W$UtV#ne3gP{Z#gCItu7mO?HR z?n(zqU<{((s)yDWP`q+u&s_vW=(>Yq6N_gghNu~5_itR%vc5fnsGP!CW%{Zp001C# zeUvPqgbZ*LoUf|$&uL392N%l-Zkf-M#7ILItoB<(3%-w1F>?T0;*Ik_TlE;Yg`X`g zAt%@H2DME}6(GjngBR%sZrcXgMq(0s5+^Sk(g&%$^6#?%nwA;v#R6Ko+P$V_#Pq{E z#OVhI@)^db`V0O7{D;5G0095aU#$NnfBg%!{u>o`0Korr;$i(O;^F+89@kdPMmw^Y z?H5`nDWZXBl8BU$J^g({>FL<9?TR2Qsc2qPn`LqHp`qj$eMGm|M|<`joVD~t5x87k z?|72LG-A)&@xjB;<r#yPSzT-Pk)mc8)}PPV#>MzLVk(l%@FADyM^V$E`Ug~lIl9cX z1%4e%`<1DE${1J@jES|)Z<(R}jmtu>IyFb!<oflw23ODgGt-J=u4T=nv5W5g8tNFB zvt|oj5v}%+9hY<4NWDH$Vfu5@aoKc#(8$zn8{L8}EV^-K^+<+>$RW6cxoy#G3}VRw z4&?GCgWnIMqy{%8Ee$7FZgL%3gbC;z8))uHhMglEhJYX6ewqAVL-PsD<CN-uLfP)d zgq$Y!Gh*+Tz=z|<BV8XqKLc_If1kP!?d;ILa`*JK9=oSL{<OnkmJ5urs#-9_i5M*X z5fM#K^#Ouua=-Ig^&?+1X+kwxo+i~IM@&pj>SJ@p(d`5+D>nsyno;S|QcLOXWB``J z?J4irj=-TuJx(L~g09p0mptw>+9gM+Y^fpy9|3+SQU9BFlKO94wk{#x8XbOwwJ6N< z)sQgRu-2}({giPLXsnf6J*Nwo)vD28cO3EbWo$npDL|edKBep`MX7a0b7>ar%_zJ` zhdFl(%FgodeAln_aEJm?<(IDmq$d9d4oqV4us(N2Zwj{C1h4UkPe8NoV)kk!DZ~vP zfgtsV{!SSjjp>k0)<9!4XbED@r#c7WGM<oMLbsQv_nz|Y+uG65NoC{(Vk#_G4Ya@k zWq9O0mJ$k3#*wn$vYioU9z<{G>rXXCvF1}CyH8w0a9UM(xN5I76TIdo^LK7$o9cWZ z(aI=bxE)HvJ-Z%CT;Y=F5HQes#+feWHU^Z)CStc%H3;6STWgeKC^v0l;QbLHpP}ly zaT)(zBUGM4ap4a}Bh<9qlQFP*g}1}Yon*<|Lsf{qQG9yVU)&Q&oz>$~xB8{^S<NF@ zI5^=5x!CU3r1JQ;@uToQ(nnI*q(*kA+XPVpN2cIB?kJ{_ErujCk3g>nnd4TBeG|Ai zcXKah#JMuaQ=<o-4uPfj{ay9OX}!%O)1haq@Z61dF0As0OP<Na1QDeOiaLA98p=>a zJTquALhb^rkEF5Z{5v3|eppB-*!ILG)&eoKcaNC_)EcGT0jR44bJ!g1ph1!PEfpR_ z*)D$NstqUt5(OCo1Rfc5<M%IdaQRT-wjxaOy~m*3jg`+!%WrOePw3=Ugn61G_UXx} zX6Hp5Nt~5__={jdMGpXAz<NufMjk%do#d0!&0&h&Nm$g!%A?iGqthm(j`)oJz(YF| zGI~5y-Pez%WuRC;cpx~mOZ;b6%HikUrrt9LbS9KvaU(}qF!tDazpMmt8PF&x;aNdA zVYZBdbwHDmPVr!6*Ywr>UFt(ob+0aJZU<&6TRNh1+f}#yOKvDFfePwJ7ZUvtycrD* zu2!&+Q{Jj8^Z0+k`5jX<vN%vOQq=};TBCuWW3|+L)nG(vj>+0cvhd=UIy7)Lci-Jj z1xiDKAAUM!e;F^Svm5m|*68T%MczpYI-fp*&Bfw0+$szT>k1zw)$8zrBoJINf+(@i zu5a1E73BawX7t#uicLMR!S%NAkQ>8{NAI{MI-`D?hrPM!>Pm<mOiNp@yqv*p%%%h( zk;1x-rPi%3NJQp}uGo6=hh6`S4Zeo-S*LiD{F>8_y`!yaBFG{<>RxCpvVWmyz~J|1 zh<}0b=?92&`&P3VjmCNa9&ze}LB$t^uDyirwmYgH3QJ;jb$)h!TtYJN{nXLv)SUHG z=?`Cut?x$f1jl-M{=79s7Z%?_yiP2*`M#A-prl)H!c*SmxJPDA@|*GT!xqXNdp29A zbeWXiSMLAq#m<n;$8P;+mF{ikTaP(#aU4-;0+A?j#T1YCXWZ`m;5ef1>xF#${#R&H zmRvxB=LgDf0?F_Mh^eIeno;F8uaI_~i4_>hgDo;SYK78Mr<_R1A!a93BOq=zG)!^b z{de!9&EGcHgBSt7{kLlo3-lpNq;?>=?I&)uE;+Gl3Fqs|PPdtoy>~q!!ueA$Qr|fe z7c7JL8%e~`LM;dD5DV^<4A=)V<ak`QAE6<+iE<M=VknGJ>*acOE7FUMlT3bGyw6%1 zlABu*E5cAQ2<BtCpJiHhReQFU{b<{QHqvsvNfFj-i9WrkMs2zB$pA&NspCxUJ}v|0 zK%64M&r^1kk^t$MLCr-7bXzXwlggT(alaT63}vBk1@}v%->bk3I7$-w)=osqV1qNu zd`FfB6%3X8&f(^YeL;Nux%jww|B({jlG_}AcU8%QXO|U2PcSRHyeed-z#E3UXaUs% zZ0kv@s6BV}`h@~p1a{qDtJE4y#Fd9xtXn-lZ@sm+p)U=DvV<XuH;r;d2TK8e2A}a~ zmCo4;L2BLscLbG!!3Hmj=X@jz4w#tc_2cQtar_qch>Ty>1Y7ZmcV_E4uQuR(K5sh` z6+JD)GhLFCcl8DNTH23vG$fjVMA1E_H-Qys5tuP!yrjH*_*w$jsjJ@;LH0^fc+VR0 zq5g>w&swH|_=xO{rAO%#W`X%_o@W2#wm2wF;?_|@qy)w|9Tq3aFkNDHz}_;#l-nsU z*R?}dp{Xo(uw*--syexc6@TWVu7A#MqQ31<Os(AuEnG^JHU@}Ilr%>;k7UWc7#}hT zD^O8pCd<&B4#~`!=ABzx$w^|}9S`*avhsNOnu_)VNkjf>>+ANzYF&g!+PZY2Qm)}z z;5kH+`=y-dCQq;jb$F;;%#-ir8zhE%rM=cB;=I4?or2eU5{c3b^0-@dxV09E#Xw8T zl+w{6G*WVaDOX)Th=h?|cpg;s%Cd%BAOjKIi1Z5j)E>Cy`mf-YK9?3teH*HmuUR)x z=kMLhbP#ao8sL_zd1rk@JzTtfkwijzD$SAs<Gz=@{#5Gg$Bo?^{Oo=ji`bOgW+nC{ zshQ)!cAv&)c9Nce?Z8H07l8%|#9p|GWj*Ip0??H;ipDsT+_vT8Wi*OMm7M3N7oWMK zVBbxKuYs%4+;#r-<4}P`u34QF#;FL~CzHa?&Q^Q7us`i0>iHr*mK<6pGwwLK9nZr< z{>~A!hv;K1c}~Ww+)5I6Awe=%m7@h5{(&&GC#ndYj{=(ECFn~qJp*|q&ShX`+BqHm zZL>dtz_}pd;*hsHl_^iSGDdL$t{P5aF<CG!qN{#{pal(avr=xV=q^79M+F$j^RLYg zbqv(I_vQRHU4FT;A(r}FLT<+k5o))g3SQ)pxC*Rb2n2U%@<^GT3CH@$Va>K>aj(Y~ zsW`gE?CwSN$ltDf1<5oYWbTp#rze~L2|Fd3X~m3Ovt^;PU;>RU^M{EV6%d$mj+%GB zG4Xwq1h8a-P~URb2BMdPvyBe&h_!($+nC;%&R~j<=|S9SLX7DJKv4%g%LF3D2G+YR zJj;DrQXh|0(1$|sZ=XsKe3y5?xgbI4Gk#KYpZ6In@4LYj%GYurkjkKp$ar~vv;<Ge z%9GNdE$229RyX0KbI>d4*@IQ%(lsd|-DQ0be(<0~A4~10XBh~dPG^W7vyaqgE+3YI z6hG-lXz>)4Hh`_qdne!~9||GWu{#AXTjW{@-+k&B{*J+yV?q3JXXp5lD`ZRcF0E&Y zB(<DctT|?>J^C)bMQ5aKaOpTlOd(WSgK@4BR#6-Q7b4Wd1ypMh<Tuy~M$x&Dm^}ef zB}a4-^LdFxU$JgcaFWK66xMz48C1ZiMG8>BB851R_U4BednwxqEz2=Y=RbBYPnAWH zGj%yveNI(JV8FC>80{Q{O#k@@F+*XMAMjNE<F8<d?LUN}f4AQN|F!-0FBtl7bZ!Cu z2l`%szwo_S{*ia{_tHZX4u+9CA86j8C_^-y4!jqCt2Lv+n6C^#;iK{W^2_-_ij)Us zXL54bbNj+oSpggni@%19Kp;?$tF!bpI_c4)+4aGvsAWx{uBmWHJs8>}QqC+IH*C?M z-Sxp(RDt8hq$0djz5R8iTUn})4xx`_Am0SDbZmTt-q!PmFK)p(4^}RR+S%}C({$Vw z^3vX-tJdSr?{iYqKy<h5t6+~*@zGVCF;YT3Qu4Cmp4T<4HzJC2xZU&VjA9~q__fKe zt+~Ow8py0q*`xHGn@Oln$WBxLdrcnycsvcrq!6HL2`?>%e|c{IMB&0}5o}2=TD4E9 zenCvBr1klPyHqXby2O|<*BnQ{LBUwpZ@vFh?!D8aCyba-sOBECKG#Sy?ig)kAwA4* zxja%7<Nz-+_hYWYm!^BT<L2P3m%|luKQg8eh=G2(D6yn$*!>5^*KE1HrK&1|+EeU8 zczISDgkrpD0=krF$~5%nR0rV~E1O%f=X$oM%RSyqmvlgDn4GCO{>*P9hrEIpgPZ(E z)I+nX&&3V4Y(kPk`9JGm!yU>~Wf_939o~`Ou&a$*VKBRd-lY~Ft4_^oM|s1#^bO0B zaUonna-fCrDz2#p2o`B!U#Zoiln95S*Y+x}Cc~DWVNy`VA~Dq;2d6)SX^wn$*ldbT z3hU?V?4t|sRdQ|cr(5VZt1ph*%FnzH@V(Kb_mivJzdsWz-nU}@hzE7xgq-7;7<^VO zIV#uto~&ufFQ1nDAbS;C9@nZ@?%|)&ZQ_+z_d0W9=FVw%x>_YXh~DT{`|>Xk-F|j} zb(y_7Me6N$ypTw7y=9G9beuTP$E&1ECfw2n3EPlXaOoB^;{=m^+5FzyF27^%dh>t* zdv~9!w5RN<5Vklk*DS?|o@dtvbgd~a7A&eNb7zY$``AC}jXiKY4e5#C2pC5g7o8B$ zMKnlI;GGG;(4@}_ckd0`=Rhj*ICFXNww3HTA$?ftkb(!i0dE~Pea$+_W0D1-_VaMD zb{<z1E=|O1%QAi}&T&a$#9%6mn_uC5AMLqnM}y+FA(&(pur7=l7Mcpgwe&od|Ky^k zcqGAr??J5rKRl3*abOlaW<B+I5#K;?GeM1s(%!a3=KVeUkZD0A*4b(91Yzx<mpcPZ zJvgpwK!>NBw-!aVFoh|hfGTMZ!EzqqK#H~jQeXs%REgc3!bJ3hXNC=sNif2!u5xA? z84b(lg@pbRd71-dIU5Jv!FxLr^(!S`D8?z_fjHm5u&i6r4FMO)8a|t9_3DC)y92MC zanBlWNu^d`kd>~@o|Zt|&YxX|nZ0l;yWzUDcGJEI6}do-IT1|5I75$_shi1C*hNx@ zlDyXBnDm3>Niedxiopu<mC)t9WK~VS1JQitPJ-A=gRtmo#h<x$zik-oD7>npa3X~d zA0AKL$}{bqr0DfJR}4|rE4=X<=7k=}S%dwv?-|~qjKZpKDB?-rUsWGlvFWyp%YRn{ z4X1B0nU-PKh*G1?ocnObW1w}?U>fhH*7TDyEQE#C&R!w3uj&vFj`Tan`fSceq*?nT zBH_5+vpGU4LmsdBl8m{N{}rMhip(NZ5Q7tDtX$`c-foAzv$hz_Ebel?YSpankh9b~ zAQZE8rLJ1N&C6{pK$K@CJO{`#iG@yiG9UEL;l11msx`PK<WCrXl)7wBacH^=2ht{b z;xqOT&m&3QKsgS%f;<YQ<Il*XXs+=@ivWrFWOD|2C#aF=@xEV8O=L~5P2$6oX~HRs z@OWl=-cAHUsI8lkpmDPLIHHNTezd9Y<(hnre3E!^!2H~2ffRm2oQ!#dshI7-sh3Ro z1I5?ep`kQTj_Kf1b_I0iU7M(sg(z9lL3f6Vu=T}csj&3AWnf1FH*Hq9+uF)QMcZb@ z0>o$%3(x}Nd&Z#&oy*-=5c^OLSL7&v1`tMEI$LasexQ~XJUJ(UyJzX0)q5RJO#T4N z2y$Fq8IdaRGin&5f`$)!5Yg7DZ-$n=Z`za)lpXytv9Sr`>AP-YYEg+JrD!FJwnUhB zKpU*KzF?7b*+-}7xBUpSt52mbvHeJ!<|8-d<C=|BDCeT?rhicum+rV%b^a=A9htp_ zJ`f<~JqF{gC3B#2zZ@=6l|R}O#KD`&Fr6#-ZQA2-qAvLgAp>;S!ZVL#fs6xk0GvsL zl5{mkp(0`oqJVv^@}}}$km$}%x5b&w^B7~Ffa*DF@*+%&G9|N^z*t8rMC;NAKm8ra zXzZ9K!<>JpYgdELi{KH!lCkLsCPE4Jsu{Slm9a5?nK73=9r=SK|B;n8T}yiWc}fc^ z((Ib3p$xn}CIBz^6;crs^{WTQaQr5LB{nG!MP&mt(0z`;sIB3e77awpK0u8K)RILw z<m7W^HiO&j3%u7MxKI(P^vzo3ZO0Cfb(16KYAQ?B*yq4<+y^@@ud<Afbi1_WX*4d? zDq=Rlp$@^7Y~vhZ&$eOT-dPnk@Wv=4i_uotAd?s|N#*1r*k?O@CA5fAq#L&GZW9K} zLd6jkqetCg`U7i1LQ)Fp`FCA$?`k4L#l97_a04St;K}P+$4*?Z?M#Ow328$V@6Q0O zxI+_QV8uGdpU8Ffylkb@Q$LP_b?f(4pGFsj?hb5Bk25oKL<M1bBP9It^n#urQPB1$ znit*!D5gQ2zcoP~7R23s><z27CQ!@cfLv^&YNY2UK*0uoM$FiCo9)rR|1w9w2e)tG z+k;e=qBf81Or=jF-O?NhzVlKc7x&LGf!2QFrqCvQKNzL6<GnGkh=>~dMqG3kzLqzX zrvmXsjQUyjr+f#aEX{W-Sst>30TCqP>B~CRi88*sn7<w{R&xxr9^i7_I&v=kg&H)M z%sv}wJR#S3By5>Y5|GT^nNRKuDnTkFqZzfdUid@U?{KKOy6Ee`<mp7JQmnc_B^~Y7 zNCj?XnOqIB<NXPDX$&Sz<?4{;uuk#n?8fD(^}SPLJnRdN2*q?SYGmmHUe*p=hePE) z+9i`#LeaRRm<wg6FBf7l)iS{tH<x^f=2yUQ6efv2B{=tyL;P@Y*kS9CiN6RBS01Vm zi|R7smKkC!897Ql<P(|C11A143?!KO`6ohy*WQZ>O|;7y&3tv_g_ExXYm3uskF@LW zQYZN^F|4K%&Csk+Mxgk(3NkF=du8!4p5**rXFCeyC?2I4tbo~?M=c<6$xrffE{At% zrLKUa4roQoIRI-Qx{?kbz?!8S#TG%$Xn<5u)<If(>JDn_GaUH{YVH$CSI|uwi0=%c zxtRvhcXfbKIGxdv)^PB$dXD9IG<-{g8IhD(q}a@&1Tl(VyM-}-My<KL4?Q1FB(dK< zh5q*0g6s9Lu?O9|{RFx>>rYkjJn5fKe{wb1d6VJc27LqmF3#DMj~RZ>8`68Y<Fp{L z_`(WmZZp@?s1x;<)Z-hIZG@Vjk*tJ;SL3q#Ui^=eWK;=n)D?#uQn%;GWM<OK@lF!Y zBzMwt&t)$xVMSu0Bs&x6BKAduqL}I!60t7)w9YjaqGr@sPUyx4;XJ<VaglpcQ@uq^ zp44FJg_tc`WG~84{#lqb8pJ?(Sr>6@@L(uGWXX|Y3BzZ?{z{utK`fXaDTWRaXneFX z_Tg6`KG1Z2^8yKo%xlg^|F3CII`HFq?q9v9XD^wG)_F7zm?=W3wb3c%5<wy}2khm! z4N1V4sVtZV1m_>Y<3|%*W-=^-ZE>-Gk|i2+h*A>TcMS-Ayc7TUTTP@x?NlI)wvQQw z>gH^?(@WK43gzBfv`Jk}AltrO8&1&vQj5vexL2!0d%LLTgJm&|A~M$SPhqMovnJU1 zq8cCLAmb$O^%s+`IOhi`YDgQ_AuAaaXCxC(H@+|8V7F`@OJfc!Z$$|g;<qv5dBt3B zz&zIDP6(-v44<f~KE|<_-_~)ZWf5*o&yXY#QQ>9UVrW&hP8d6u{i#4e=yO`6LJc;n z6pA{T);TcbSR2zmY9Okrwi4a73)4U*Io^R(_9vXN<<mL7Q&**ZmRk+ct^^<S56l(! za|Cdes(=VMiju(%mjafgX%}SUh>LEwnixj=MiWQ7%-+wKl=0LKXg2peTxjO#`Livz z!u~z>Q+?JaMqnmah7h`V#v>~zg1)YJb4HuYDgb$(`MB3W{>=_A#3Q&r+6d;f1dvf> ztpY8~9}xn=dm`DE_^Mw6Xh+K@9cd`vU|2wVpj|$H1&RNmvB=8!Z;;5!^mifgztO+N z%J@GI5?Pu4Dprm8Z)F-zs&6<P3?qA=sLPz0BPD9UT~nGCCNyqpK+{nXA4WIGSPPO; z&XWU&0MT7=yYO>(<DwK9tnj`5D2ALuV&Uc8DxEoNoAk8Z#x+*qyCJhlp+@{;hGaAx zZE$32gID3T<>|OIXt6#EBG0-|@p4>aSeTQMbK;?kQ|`5nJIko>=6F-st;G?zI^|Ti z_if##8WQTy!k7cSr4YLz)XkNXdG2rpr?hffpP+|(vh%jnI~1k^=*|?;ghDvHIo%{3 zaOCAtG)+(ZUc^1-?Tr0_DH}(<<I1ZCZeImKZcn0TJ+a;C8jgv$W+A3Nj`lld9?jOX zm27KF`eo&Tq)k^x^{7#2IXR<Wp-c7Dp~^J+L#0`rl@sAl2$koAi;x4Rm|(w2Rebn1 z>rrzJo9F@$x7*9w;G3EaVM8t`8#|*7-UxKCz$P<!T-lDb^lJ90Y#p5`(pHMeQG1nE zllh`{M#9K-NyDStk%(`1$=Z~gTW;k=W|m3I`Tg_rP2mO8)IG}+ydJaDmvYT)GK&`5 z946wMYs-r_A7{_B_&|5T*wgF1$$l9jy%@k7D`rU~cS8Ktm(RW%FMtTiZ+0*V4@Y5K zC=h$Nsx9XZGz$9g<auir`&ARF7Dq|o8@dd10CSoMILsT-FY<8<3bVNG!V(ouiOe(` zXn-A?z{Lqk7z9Gm2)M^t<`SYEOhWv&M@LQGEmdOz@qGIC>L`N?Um;hX>~6}G`d3&F z*?TEUKKiNo#9ho5Ww69eq+cYW4zN=k&AI#9{<Z`|77$3@IygQ!x?06lMOsRvN3i|v z6Wq9ij+HNcOLTA*Sem#3dpu^Vpc&{T*+;?$l%S*cN~^+3_l+TV>_p0qchDx>eo7H! zEc}vxH$&!DMKGO4>qnWmjoIgymLW=;PMXwNd8KGwuqSYf%*H(QkNyqg1^QC2z$i-u zlu%F+i8K(~)y}?bQZ4)8XL_8d6(QLlVpM}wv|7|qMulmsWn>B=?K(*o@Ye`Pj7VBK zGm8)|Z;W*8cs-N<7j^FxCEB*6>!xknwr$(CZQHi(%$c_BoavdiZQHl)s(oACcK151 z)~R~hPh*Uy9-}|~5%EWSus%Ny>Ib09KQfKLe}<@5_h2G`_oyP%d{E(Xi0~mmJk%gG zv*@cD6+zSN7VIF^x-7NrRmtZf>9pcL`#S*>USJdQV9k86rY!deuBo0hs0s=)aaNZr z*EkTO&yaetdELPPbMArW;1J|qC1vmQ8%AgZfDCfuR{*$XyDiTN*w4h4oEf`ZeQ3In za$s3V^3%rgmQrkk_ew~gY}i5V@$`2Y+!|aNri{kuhLn<|gs@NfxA}jNNBOP{S^}}4 z4W%zI7z9X<nGCo-@xe+E15$td_g{L$?lawXn2sJgZ6#CWk%Ks^QEJUjcvs-N$_&wl zG;n@+@R;=B>zqJ0<%~%@cHPjz<`jDR`hMNL&|nI^biChgCH#I74!yL`<^B;W{wDPF zK|=!ZB}{X8z_)Z_|9t#@{vHC=_If#cHhVPQx%O!}i{kC*@M`~gba;s)Lw_4NvUo*Z zM;gWx`-Y!QyL@RmIwhcgdf7MX+((LR&ro(`RMR1%rW4!fKt&hcPr{9qCfNsSSvM+d znYb>ZMrbSX0)G(*RxLh$dVX8|mRVXlA7KQul?LM#iN6D>lITSHF(k6;a8_7nv%n<K zZyq_Q93Da*rb7|}`xLNNtM=3Q7L#ruRAo>r?$Hq?QV#?dYD=d!wxQ^$F4p8Dp@A-3 z4)pU)F-WW7Hee?3pbo41H7qZTE}8O>;_^nS@1Qe*d>8z^V1j#vjNrHy7Ty@zJqxeu z9fLw6PCv~R)sBt=81As2bXp@sq144I-YcCEN>~mh8j>E6BmmMte3I*MB+6@z0Z1c{ zxgE@Rjg_QPpoRddhz>yj^&Z)INlfd<+9fWDe(MX9Ve4LPtMJ%|Qk5I?R+R$=pnUHw zn8c=wa|ryX-fB;w2otynTU7r*;Zbv2W9vlY1RilMMq3qJd*kY(RmVQ5${9?|>W}wh z?2-}i4y2@m4atc^94OgHr!g0gv{O{9g4zj#7eW+CP74~v!9s<_EVy&5<HwpjX*IGE z`kVZ;)nBtUzAHzSAAgj3#KW+Y+BJ;K7s|8b$XL4N`(!haT)#k{?MUAw6&hd2)}HD_ zXkf7Bc`MemvOjIbJG)=vN6JUJn!Tzq9*r{ua6w9jR=V1h)?bsEG8Ik`gCUXwS9y4; zaR4k-eP*n&5my~!U3^dcTBpD^v#)-9AAr?+BIoUw7)FT~v@U9YWOirJ`$P*3`R3|x z7=D9%pVRu&)dMUJlcAD^0Ql%A&gxH89_xl!YYH#}goa^ZRvL&49PgHyEydb)J5QQC z0FVQcGnc6kAr^_?Qy@T?4i~}J^2O-<hWwPBr6`-AES8$2oxDg4YdY3H7{{a|<t(*A z0yowHI2@58js9s6OaZ>HOTp>#4e>4+t*0wsHo$%8)On2)ud|LxJZp8RD>INIrM2n9 zWhm0k)#*!j7eI8opl3fs&@+7WA*A029$xCzaIlPNR<tyX+G?Q^BI#T34d}*hAEkC_ zi_A)XlwE^{H6nh}k5bWvsP;C$-vb^s@QHHGES(0~e#^@*p?d3*q|hQtb&;&9%gc$d z3WVPRae&?%FyzAR<I9JsCH`hcIY|kUQ|9&n%zcKvU|BxvMEF39gDmR*pjGYHLVG8p z6X%c|ciPq0Yw#7PVUQ}KiuhfEjK%eg5u!-r8F20OrV<%;McJ1e0AiGCfZ0hdzw+mx zpCph6j>i)X0~thrA+)M(^IQqN_l$;Dk8>`+BfJ+A{>ItWcWCR0)_rbev+>0IJo^vv z!K<nO0AIF+T^zoX-Bia<*zfMT;jyFXVMTtO7`%3T{HjR4o2m!CE>Awk-qq{Zr-Osy zZI;iJ)#N4~d>MV;Z}bGvKWU&YD!wDn{+?7-M@TmFmm9)O-`Z(D^^b*z=7CR#E<@$D zd1PD(Wx?h`1Uy+HmWT1ZMO`!d{N)|&+c)knTfyBf`iP0AtUSshaP4dvZ>{(FABtzH zB|9(jm<U<JEPym#b$a0_h<^9ea@#&-wqz1&Wpy04?kQ09=i+LTek>)o76jNs-7h<U z05L#%?SCO+S(*NaB9{4IMJ&tT6|w&dY8or^zoCd_`HM~m3(Mb{Y#&x1Pb!u`>baoa zhp;7$f_OGIr8QPwUQRPrT1#1b#E}S*dXy*tOPQ?rG3s^qfd(l_Y0+7C5dcB#4gGjH zVZRu;fKQya>d__9OQXW~dnAuY9q;B)xft4i+MrVt7035oLVenQ;#br1y+ZrPOv@!D zTCWyA4bIia^*ek*g{Il=*|3R&#aG-*X}i0mzcJ69{mDUBb{o~BPYYL?XiH60cU{)H zZkXobuRr?NO!vn04u00xlS8^|R0my?!wYfvT|b)sI^Fv83h87`EMx4yA7C@^tA5FK zkCnIT*r2nYT8xRA>W#(C<MSZ@icBvkGlw4#v0Y`Jflm&J^*s>NyQFZ(^e%MH?_$Jg z<WIGOkk{mG4|H~FLFd$k_g~Vjh^w(?d7a%<ci?koyJotL85(7?bKvU^O<%R#^*C*= zGyxrv!+q1wE`FTX#Y$LS&_|hzQ#qj%VRu;n2_m}^=&oEJ5tu;ZX)X>`+KSRVN<?$| zm_V!XN(!^`Ze~X@H36I?`8h@NfoL^n5z(gOYATHOfz)+=0mr}#3@QpQxZSZ`=;RXp zwR?{cTA9u-st2#F`W6w5(7L}E9Q(MVY(0kZ+T;xTPNEHeU$(>A*nk{aCdX&1gOB<g z>qCJrSqm}7$bsd8`!LWy*PxpJ;xtuRIUbNV)bJhpK#p-wjvLfJFiH*b<HeE6dF~D_ zgtxXN-m3wASvb@9d3Gq2HkiuSp@l7xtX_h2K=d)ty4n!V7hE*PX?KfOlQS!Zag9o& zxBm^ROT>Lp<mA#HkgjMIHn=3Ftv;NLL?b6j3erOF@4kl%!mHv<mB<SvPteOfMKxh@ z#Z%r*Rwc3%rN@`J*4OJ#qj8KFFGN9&w76Kg-e_aZRmPmv(d=gQ{AOuZvn0H$%!qEq zIw;kG309HAmD@Eer0lv-b?w44XtaM><z!sdU`dEf0D5~{cv+YQ$EkuQQt6ru@-Sn@ zA0U?kGoHV87!P{5+@-X2Qh<MtK<aK<r_edc+99H{nwU;{%={j%uka+OR_*3#%P5tx zGM)BvjFYs2ZzRT9ZkjuCLj6ceVKZwRT>)z<@&a%M6RGn;B<P^@p))UxbZP-n_4=#6 zvM>*kn*muWigZU7pkawChcNirmP}Eu5TU$227q9s-GG6>5zmcu)2FU74hkPR6nZBa z7DK7K6u=(r+~=6jz#l`v8f#O2Kk;KEFCJ)czNzPk{B>X^*yrYm@?wicXsuc*48Stl zD~eEth89B3S%&-IvQP=Yh883+X_S~w71V@}OccVp{Wj#OE<7c^heGziJiuC2Jkm8W zVLX7#hK)AGXgpIWa%_joj_-@^W{Iwken90-iJ8gue%;&0P4zj46k&%3I;rVqs7Fi! zYc{Czo9f89er2MK#`8yE{5)<J{@Jczk=0FbnsKzd{3CJcdDoAAuHI}4fB<8cs)5t2 zeGjPjvZ0F5&2mEH)W{_GW({|-eh+lrRpts~$p5@P$Z`(^`WCZ4PHz;5PSTj6!jN9D zJB%3K&PA+QjL$P|_7gItR0+DkK*Pc?A;_Dr5vzdd=UtR=CQvRwAC@oR!b3n603IMG z^2*1k7kQ0l+Gvma7W_>P1Gq&x^46f<2r{jK<)p2Ye(7hCXN|m>l7+&EYP?MnL&NQ5 z=8D>YAjNyuutOa^=ZE~z6GGql5J*2c#YLBDOPf;EfHpbFR0@H>e$Q3Avo*!qj}N?q zVEnhI4H$kS<X8_8Jzo)g=0jXIxx$L9_7*UUaU;>*;7nq&J(qTE0?_Z09hwzQcLVJ= zRBX`lW1$>2Fsf;1<NlR2+Ka`lh0jF?pxwsoHfRQJsoG&2#Q>uhF@ySDb5&X6?KEH? zxuBdN8-6}$^P61tsBln5LregS!hK7|Xi8#gI}vZ*>436SAN#UhKM%y_I*bEvMI_S) zkC+&b$(h_Mf_oY>+ym{xz|ZX6Q&;ExOB_L5lVDDhY5PZyE@x7LM~YW$drS3N5OE`C zLKdugNM2s_;LtFH>3t&$^UNlg0_E4lyt3CLnD?m}Ev7Py*AB`)dY#O45;GsqGX`^z zYRJjvGpTFtscI>#(f1_jww9*;y~U?i_HeknPmyOQP$S}UEN)%F{A+hNciKTbZ_^*Z zLuPS74P=uYD5!|F1Bk*FI7pnGre~z&l9`(~wc0C=UV|cg6lOr40q(#qYK!#WUc(xB zjHc3OSoJl&<pfF2K5{)QP(vNDPIFcAB`+&4j~+C?&0bJ>3wC5<q`Lb}%(IQmkPOCy zv42Y}A(IIKPNP1SUT-oKb5g}547}JKDsR9d2laCV*WwZp2$!+4<b_VH5QB(!;QiX} zZ)Bb^Pxc~{F0y6-!J``)`Sr?SDbZ8%%)YtEg)L-H@(9oI5HbwY^HBZUUN^Wy>H#HA z9JWOJm}l3;<iT0Iq)0_qE_ng)`>8QoY-}+R{u=3oreOKN@N(E*K%&qQNA9DStI;TD z!U%FcBnL!uUzC0}nIPECKQ(Xa6r>Spr*D{aP^Nv@6Dz6I{Ee1Q;3s$xOsWI9b8cXp zvjLzL&E)uo5X}!ut6b`-eDRMhaUu6;7eVDP@DNhC&>)H#8oGoL!Y_<3bULD-f#pvS zc^DxJh{7I3+iXFU68?VV!irI5Nwb0zqEp}k8$D$pzKS~3UuV9W@ej_T^t=i;!-<Yh zsWk|%DMFF-j7zG1JoC%Ez2tDv)H*ow&QS*v6vsS+V7WGO-s@ch1w&{!rts5Ypf>p# zQ_87=nX?QCa|{KR7zu?d(g;ju2V=W-WbFCKx>GrIEVMcO9I#JN1fi}m=&`~OWN!N| zxG9ITfle7?@AUe;6gXa%-o|~$+B8sje*~UGrcKvo$v~~kMHEo*;&SORfcjNy>ryC) z;LQP$iweeGyx+PVA;liBW`)uMei?zwRs?HxYiLQAZW^%A#8q={xgO<{BcXG1Jj+J0 z-??Cks9Ux9q-deg@U3CxmXZOCr0{+sJatuyU=2z}wfbfO^LKpXY8|Af<bjxpOqvH) z$nsUsG@A*2@^&+I2v7@Fc~Hg8Z%k*Hqja5IO_!jT8>5)6R1m8mB;BQ#8#m<7zdgG} z&2)_HVLn{zm3*CW(np1ID#;3RsxpNs_9~->#EnYZTZN?aqG#T@V8o6)ainy>xT*$D z1I-YV^Bl^DkZ+VBCYE%}{E1qJ{v^mP4sS?&v?T{wft_EhTf9RIL<)+>7$ENVj2{3X zAaXm_MbMxdeuwhy^0}L-qKNG!ZVG}Hd2R$EizUxg@oV)Hd+*h4W{SXJZ>s%HR(%xi zv@hkNPo2-8g!?5z`>I7rnwKBCwxcA)%+mINnvUEjpqP6>83X`iKLR<lv^pzI#Z_6^ z{{YNeS$TpiC08>zQV9J4>Jp_W4-#4s?#0ScRk7skDA-ZD#>2;j;nlQgBTwrI4hvUd z8q<@Yb}8YmpLDwnn-h)(o~6N-l8cppWXmAf38r`LX%74-3cN)2jDYOTFpRg$S4Eox zQH@7UMb_A`zoNsEcnbVeXDJ<T!^f9BUR7;p#Gfq;B!|n-P8SE9r_^`^JXeu}ft=mr zo`{q4TJ163NFM`ACZ)ey1lDm14+BcJ>|ig1^F@Q<5kn$8x2P>cSzu4Abo#TP%PJc+ zDDYV4Fbs?aBI=A|{=&qXUbDxM9#dd832G)#_4)GgPRy`>Jw6;#!oBtN&U;%9!9yuQ zRD!yIbe|cBku-J_2^K~IN?|N6HckQwAwkQg{PZiu&B?qpwun5TB|=w7-T_Z2idl3t zTgPQ~96oMGp`@QA8CB6MI3Aol+$U#^0h>9oXh2fE77q_q+mdhHA*En4VjHX2r)24@ zoT5f6%1X$OmU+_>MzPh&u!79aWSHyv{ItWiRzc1Kf%1M7!sHp-RsQM~D-=y8Qcta8 zKy;|a_})x)<k7IxyyzSrPX_Hg27OB>yYRZnzC?PGPofEHzpi#0j0_(^LgWYk5siIX zd{JjDK-!l#!VD**xhiZ5!AlrLs;jT-1ssvI3RLvA;MA`P%~tJg*jRsaNpUUs9f&S& zw%Xsvc@d#Vxnvg`xid5YvzR7Q1ym9%jbz$U(ByUhu&uOSu_BH9`m_CV^qRA>m&e~l zG*jz-;w5=(yy8&#_=q#^l=~ZLFU>x|zY`V&59L>~YaM&^_Q2=02o*!&%lS;sc9S~f zs3U97RB!6{AA8_n1871$>0UEO<+)!b#U8Ai9zi(1;T-`Ib{KOTbt@6^m@6OUmGHfL zhe{AV(zH#Yu{KRVhs*XM)@#mczIo}SMtm1;<^3>vJo|uI)VPR!^hLd<LJ5ZfyR7rJ z%OO9ceVY*2!9e{K&AX*m0wKbxsvEwZ>>)qGR`U!2Ti}pfHBds`i!wO2x*<pfS6<+z z9Rg*^aC2?wy|Ad0W%fW<wDMf(mcN>Uy8u2Z%sB>HrmfA&L0>|F!kBtP2Ei4K=w}fW zSiH`;eh=bs3i@ZQ21{lJ9iGxrp=ZOe@gqtZeZM11TSrfGuVvS>u}(IyexVuwco?P< z|5b|2`aevO{}m*}`rm_u{+S~GFR*W{|AzP+*1y2#Fmp06{hbuKSzXq7g9EAOLw#4m zP7_A(*4ZwyNs=s8%ItU6rJ)r(jHu?6R7q6H<z3&-$`%0WT*E_)wj5{)L;?0zoj!lJ zh8~aiuT-_kCs8z%4ye0Pc(NH46%fnnw617#b>Yg&z`ii6^7Ux*y1JH5Ou9h=80e`A zI<!xWileO&{q58~iJ;YuS1yU}dHs^@JbdwY-WMysvsAWkq44$Hqjf*3trT6^$@K-( z;Gdf#ZH}CXAugy!7TVppds5CKWH%BNbeB_ejY`jH{&aK~sp($p<SGiNL5WNjRp?mD z#Pf^jrx9o<ah@x^5+6O!!9@~zpkyV1xIls~!$G%ThR9e}yP$~gPf--nb#MJR*_HQb zj<Ig1s#-QveKq5)stYd_bzN`m7htlnw<v-%o?Bqf>|x1*5xQ#8WsMwbMz<^FYX28u zoR=+n#BC;e7}$6y!QoL}`7>W!@QRf!HV@hE)OY}|r-1ZD*_3qPqS~IX-V5=TYp<oW zZcJREyjH&XT<^;D`bn%>u?9Xfp_AlfHX_pO5O5SAzK?*W_!qyJ{Ff((ifgtEBv08E zMbjH`!nabjCxxfO+B?1_>ZN8L@rI>P=B`;ml;aVTPmDsLnD}fh-JiJC5W-8;JjJ2j zTCDv0hG%pz{&8v16Cfi_-8)7a<1)Ub=Z-_#1X->qE4PoDVFGxWz@khe1gmf;Dk7&~ zM%k`bK0!YdW)319iQRxgdJYrTfuWO>MVOx{=mf+22tOUWOEo%_Wv);m;6HRIBPdYX znHP3lrVK9bu<<SkH)1`$Z~GH?4rl0KcfBV71guu-OjOsDVBvsxa)OjqP}d|Br=r84 zQj&Ny99lW@GA+MWo1v><$y4OUtKuzIAHtiq`~anly{F9UlqltlgFabS4b$>czCWlN zjl0=rOh1R{T2pNkk{EbvY1@5zq>t$N@nvabuuvG=uXsw9kz#yOrt^OY50<jezNWNr z4m~UT%wWr<ql@L&QH+kZ!1LLBf3(8ldsz)>{l*Q@GRi#+5*#uVJq$W*)K8X+2}q;m z#gS`oU-!o?ta4=%q)mej232F$w-ok<3vkutrvMRwWzX^Obt_tQtV8hXy3XK&fsTK} z{%A1kyhc)S7`2~rDwH!ArH>Gc=j7iuECPBEJl2_C!^pzn<Kw>Off2{$iO$7iIdTH> zd3=f$TP6U`kLHZTF%~Z}kud~4XL?m>^2{wn(PSPhj@;n_-w#FGLlEc1v;uUXkfYYs zMqU!#*eB>7sy^X0*HfPLX>Fx#1Q&qNY61hgYP(WvRck7VIJ_{hTunFdi)iLeNzSDT zTYQ+WakbkHh#1s(?NbsOS#C}#rWc8<=BB-2f9bsPLpKhK$UpT<apfHKtlsGr)czW3 zQLWjQD(<G0_bSe5aw}^LGb@YQ?2tjq&yeO>kx^@Qj;kGF+?QuRm#3Q8^lq7@^zSK2 zE`*}&gl*z$;(V9cpnS_6<9sq<R-`G{6t+4vykO3J0`-Oa<y|joPjO7QuJ)M0!o4*h z!@c@jv~aKdk`vzoa@AqMmR1NIp$aq9m<;TA{P!JLc!@yI*|i08p!~65_#34NJ%S{Y zfKlODd&{~cGTmG$^W$$&S8EoLfiNy33(*H9l6u@p>=(@1^&M=xuOWz(2|Vy9`p41w zOusC4ZrqZBNAXik(YDvTN@Bc3B>fGpb2sOC7DoZG-qkn1a_W%K%q)e&P9T<;R9qTo ziNu;;-C0s4bAq>^^yc?W*&yzAbBqq471nk@#4N#gUQiT-rU=l)#2NiM#E=Lh*S6&w zj%Yx!Y$;+t^1grpruqht_-UwTDLccBR8O9r!oGxEcg2Ih@f^1`dY5W4UuO#^Q7}<f zYbF{(?86&22q#rLwzjLHZUl&x+0zlBqM759Ams;LOgPhD?`mtc=Rt<e2N9=a%9I|) z0!x^r_j)7Q9lC&Dc-lo|;!f`FkPJy}4@qoY%*45^*u|~L1Dbfb?+653J#q`_pj}Y1 z>iX?A#$V4Y3C+l^^4F7;l>kd>tdF02ys>955&6#FZgW5WOtrXxo#zt;gKM-5I5u~K z*d{5ISVJ&6(5b^LyH6XC7Zb`(&0twABMhzP?ySN9IX6Snk<2e(_@j9P-^I>$5Gsrd zUm**&KCl!Tqr^83EvW^~`g$cLG)dx>h>wqm`;>RUJU#wEQWQ~AtS=qV5_bp?&!Zd< z$PY~SjoZ7PCAVW)@tfIBlSzO%*qpYp>T7GF>_%hx;%u&L=H0ay3XpHF-M4iMv55)$ ze{a-{O2HHl^NbmDDMpA+R#t(vT)%7P;6cxw+%HGP_5ZF+Nqnb`4UFCU{k^@>fMp5- zG80rem!POm{$+8m(6znpIC%zYU#U}rMUIBqEerkQK7Vv;PrPuWp*{hl#;tZoYIK8W znY>=#O}&u~%mO}ME%>#@MuG*rO{6j=pMk~fi6i@HhWbNY@=M@a!tG@_T=&hriTiS~ z_hR&3x#>xAiUpxm3t5d$lO^$)@{A0OZ;g%TS5ouC-D~j14a3=pa|^qtvW9(_;$f22 zI%);r=JR2AT;!xKuB4#CFSKoGO3U&{)t!R8tC%j>&fw_cChoF#@P^fNp9T@(N;s#} zd0UTY5kxO^6o7iv(_(O8Of$vEpy7JmJKGi)o00s>PD;9d;g&@5jY0&SiJ@M&%R&DJ zYHY2Hz{1p1lFX&qI?BC_?Hr&Z(D;svT?akm^(76A4L!jlRjK&($<@jFs_|*vwIA@I zTzPQw6Brfj7}4!8dblh)xU9<U>-mW>)qZ*H_c$;s^>Mt`K(V}7(8Sx`V{OPl8pDXW zYZ%5WN&aOVXOKZI5_|AXSd%6toi#hp+F^q?_%qS9VHB7$=Gd@=10YWO3V%d=r)2+` zp{Ft7o!2y#KVv{F?v)0;^00%mgIY*yEe$fu8x4&+SKZ(1y&E?zrj1(*AkWEiyz{qa zNUm<E!Hh<?4-O|~D`U=R`PEvncV|t!MbHBsj<a@#jme9d6<b<I<!%Uq8fNX?LP?<1 z{LesQ3Gc49l0yOnmI{}gmY+Cwe6P<S&j9+5{G5{Vj3abhT=3hIhF#jYtaFC-{B`X> zi${=(air80n+Mut?Iz9mk_pAj&u$g#xM6crgx#>$FHunt?oF=B54vd?{uw*8jRZx> z{H`q;+tP#2Y=yyB6Z##hzXZj&zcEbu%pMT;-mln__qk*I4s@X^Uu3$zbiR0wr@P== zWAr!filcuP-ewIIa?~}LR5MhY1K(RfTcKxCkw{F@%pZ=CWxv>|<J4>3TkXVe{VeTm zlo!g_`n870VUjp3UL#G&*K4(0+eb>AhO({$8-ryqM{spo=Q%hdZ-%<gJ6>nE!(3@R zLrPcE7opBdnOcN<`#9#z+VZ1gC7(~kV(J3|SjHs;TxfTw)Z5)j@=y^r>60s*$u>FX z*xB!wo1mP}4QDPi<IzD>_$={ITuL3p^h$6ajEB!ED>cHkAX}(!3j6BmM;IQS4aBY( zBkT9&DU#xJ|HRo{O^b##Rpu^*<=Touv~!do6Wd8zh$Unqo`Jj|ULL_#6TlI4Y;MHK zPWpa{t$`PWjcQ$yJ0^Gr(^yH2CTX5(EY%?D@AK!IzPq4;1T{ZMf3>|koy9Ij6y5Um z1(_0eAcCUAyRt;bAjKACN^CP_G;<HQR25#m?wo9jqsEh^C0n31IkMYPR9+u!-Zb0k zH~t}|Deom(TaqVW(p1MV?uL5e0$K+ZP#BKcI!xk`$`3J;0s?;|PSuu@v39G<VJWcf zumklOZFRI2A{VR-;HEqek|%zvE1EzV0khxGiB6E;dQfy^54DkR5QW8okIy<*UeIy$ zxVLr3fh=NL2iYEBXK`Jz6wMhPrwI?<7_~~Vi+}Te>+aLXUgw#ybAZ~JU(?u8_OoP~ z$4Ut@Uh#a0I-gPyO<CVtuNV<N<H%+huh5it*g81T@8I+Q?#K6+Y-u&8)GF*(p1~i` znmbrL#P*bco*q(%J#FAW4I3RbmD2MXJ1^&#a(hQk+UZ%W3ufk$Oi}l|k59=@wZfb! zcVP)*cwG78DIes2PN;G@C`(uaUxTJ&;jZO8_!RZ#RBX^D)X|KhHTYEtYx)#6ZVPn- zu4MswT|nnNOh>ki#^;r}Vr@$xfKBZR_RCCMY+yJjT9_wiJy4iUXU4>4D`dAfl+byo zu+hybvwHqM=)6*SAt4|;j60^h0B`hJa$8PH^U{NwgQdvrGGE@ml^NrKIcTSGLYc=N z0tU0f90niZJgdEtV%+HChjwBL7DL-l9nCbl=etTg(l=UVok&JgS~r3Q&#O&#&Y#5| zJLTvNB6S}p&r}pX@(#DUj++_yb{GWa>)Xp@HqdJk<};FTlig*Kq6TVGpcx-&K3`XI z0v?zWh9f$`I3={4`1qFe#uJ57i2T+Wwu}5cvJm$M=*&1?uRAjBBk@r!ta&9!i_#Wx z?^PBU@NKK=`&u>NrLx~Ub+^armS|rzg)DVVVW(Q@I^@D}FxwWg&ZVZd35hsfMNRpE zv>NHfr4l(w-6U+_J)IbXy&RFcK%CwJ($07`nL4*L)~O6?rilk=yVF@KHK8ijUSP75 z2@=EsXD(!LPDp%95o~psc3|>somYlA*U>VF>YLw0veuA)#aQp<K@ASR>ie_W`L(EH zBdL7f?9#p*@OZlh0}sszg4QD(<&!(OgKvgiN$>{H`GXI>9RwXcT)t2uIRN@c6#m8z zWnx=|c)txZ0~$&QXN(<#FS#H-@q)affAJ!vHBFNE)+wc^A9?CKWPJ!gUw^y;L#YTK z*XKp}c0<5dBKST%jl)jWXqX+k%$mtxisJSavJ$%IsQuKil7iZE^m8NtO*ZD9)^*hJ z%)8X#>qFuZfFAW0f^PMPR2x;ETz+EBZhk}nqr=ce{sI$W;|#;o?pIdxlaMr1)H3On zh&50?p<?0m+TL1H=RKBI(h1>|vDKg1A^-z?+r1B;66krt$;N0i_61Y<=#wsUO;Plo zS?X88(oY3fuU=?h9W98C=?NpgD&2S6>VeN<R3@wT8QO=|GQu~?R}KD^flNT$OON(N zd3h&j>&5_EG*l8wYlF@^X5B6P+NZ)Nx01XyZ6mh1dw6}nSL~cHH=e($cKjXq8sooK zJJ|l!5Wx1|8v_1o4=3wC;cIOFgs-tN{`2`?%(ee0jW99%FWB9ze*s~WWn!b_q~m1f zWMlX*`j{Y{h@p!i-9LVxPT1bg&D6=+(%z0v#n8yc^l#(HnAkW7nAz9~m>F3JnA!gh ztc~q2VQv42kBOO`iS0kn|4%&Hf4tJM(#aY+I9S@5)0sKh+tNuHx*5{R8(EneyU_h3 zB4;`mdpc!BnSXrf!2bQnnVFdXGjcYjzZ>~qa^0BdIO$k8IoSU{H%lk%>g-}~Yw2Zb z@}JlH&mZ{Pm&(9Gz|6!(z|6r&!2Gu$Z){BeNBRRB>)$5t{e$Jq%E~~%%)$8|6o|iZ z?!Tc`h3&7bDvWIGe{U#v!)aseAAakp0|V(02IhW%@){nEMz<?k&EAM?o77zJj1USh zPi>&2%kD$sq=}bfmluHU2qjw`O4Z1I1G9IxcbAtn3x{{*(ip5QnEQ4bl^}jU2fa0> z=L#%Zu(Fd_^@A{evPw*P@G^dVY*t$^$s7{M=NRxvEMAyqNgI~;Anw@BGo$1Uq;N5M zQ+q-0@Xyn;VezlY$tLI2-;teqD+g=SHaaa$OH5d$rfBHz`Ev}?K9`S6=e>G9wd@mQ za}4pZaz2kQbM(Q{a{(rpYLmNu)(68vzI9<_@yu0hPrGIgVqv94Dwt(P6#TQ9)nf-a zG+SB{RB1LEIVPTDopE;7ta`LJ7qDju=U`ctnnO`22-zLmDhE0ox$i=9Rqxg*=TAKM z3^r_eclOvF?Tb`cUYjonrjDid#UL}TDQBeol)XQX<n-qs95c~27s>~%-}dLvS10sO z?Wq(X!A%^jWLtS--b2-}l>-rmP_98l7gBoJ^*ZunyE;|%wSJKBFI$7Xah^IQp`5h` zh@iTc$(#0V>8&r_&`@F}YAreCQjA6#+q0RgClL#?!^;HA122+jf4X$y<SSc~sMqZ; zxYSU_#?8V6D#O=&{-k4eQnztyrF_u>R#jSUcmYZb?y~}&An<jk2==&<o+6|J5KG#) zR%t<OxW`NG<GkZN&4_=c(IeB3H{h~kwiO%9QDa=HC;;wD1j<#2%~Ms&4tpPl?h0Mx zKk8|Lb@8vTSIL?rOb7f5RkYG&owngrZAue?vKadV`8IS)B{lvi#ahLUBT{t6xJmb+ zw<93#=ottyy@{A^E-7G!3s<uXe|OQYdSKO|({k>t0m-?xOvAh4O%+OO3(5<{BU@ZJ zl-CLS?9P>doK$ql>exd@=sRxi;$JDR(!vu#k<<>d8VCOP{zV$TzkkuL$J})l%8EX~ z>r5hg^8@!qEe70(l4tCH>_vL(rSWVR%L8F-vFE3F9WaX=UZSFTY&59?F1dVd;rac1 z1R7_KhvIU#5zT(cQMDtgAg`ZPue9KvZ*>q>U$#g#Xo|;AVw<n3tN7bYKSPqcDJozY zS;`Dj92L>#x=P&c$?~`_UmR~hvc`_<JOEVE46Z*v#cY&RckGL>Z*3Lxhr*x#d}XpV zOG=s5^RzlhI99)))V)h<4`DWMI-4r(OEijapz)!0c@EU>Mg@d3sbU<LyO_*9(` z;Ukpd>`M=<4_Xpr73Wsap6DFYhUfbILfxJ}=9$O-V4hSrvM`n_?Pjl4seo{4nLz{q z+6|*xluJ%<<Yg&G|Jv#ay`>r-rLRH$Vw!x~p6mnVYb=Wlh3m#wj*0)=75O2o7UW*~ zLoyq=^F^*Cr<{Jt7nSXsF<u<Sz%O#GR35SK3qvQ-6}9cLnx8)bGQc6{NfRXqAE}(A zw__LNEmkP`0)4)rTab0;u}gYg#lr;kehi}}K6zVFf&gLz*~E)Ona=S~tw6KH$43Mb zVg_*qErGBkcPxw|>#wvUH6R8*+Whq_NG~dWY^P@M5iu2_-Z3Jj=vuXVVyAv@A06GM z?w4*4%xyhK@`q>P!-5VxTtd+29QwADghyT_ObN7>!W%;%0YR?=D?W55cP!AZ9^Ea; zuX;zht0lCH-adwA8(NOA=;o!Jb|c`^3oB*X^EByT!SBNqG4k8AxewPNh2n>Z6oQuK zvln;v-l{r3@;gZQq*rDyM=wE3y`pJ@(Bno9>}X0ud1~+D9S{Ru(eUsJVIG=`QsMXr zU6qR#4%8Iq(WTFVIP>ynFoWKT>tkDr8W$-ac%_L6+G5OwHds*x7!DEvS=3H&hB$x* z($UV|5=VYAjkUsvMbki{Fm7V7yv{JXgrH7y2sM?wT@nOv;>@*RXF<dPgus=Qs0uTp zH75!D1zsjeH>v)!ih2Y`3E9N^T=f37LES2fxk2iC*4wD=;kr68bbfsw1IJ?gZyH5g zRG*|^9mUUljxoL&!LFdBqMPW>ObM?dZ9@VA32B%F1E5Up6xyCF3BAc<`fm6+@Jo{< zt@}I5m0yy+!2xDi1;*mQneqvdlgX<kJ@8(inQ|>EhsrneOWeJ=k4YDAh)f>$K?GcL zi12l+E;!c7otRCA*qT2vufV&Q@D|-apa<Cf8ggd(zmlmQ*XHzKge%*)&ygp5J2$*y zC=5V0nRWD#ruTE((G#65gJ912V9tW&;#m#12eG^K_9v<%a_Pi^`N71d7yAhZHRDpK z6M$!jDrI?JH{h)z89|xxeO*5f0@GC#OHrGT%x?W0*w%@fFA=n!Awu(dPX`aU>{_>) zom#A{pYnxouf#c9Tt>cSd6PTnW`$M)@D$v;vTzXCgk*d?QtCden#9*4sGh2}AiE{J zD#FK(0m5hz0z3~Tj&-&LGULXaP&-1}J#aL!ysuA}fJEaGmge)iH<}`7hRg}8P<2!0 z4J37Uv$k!>ttq3GBgi{@BXP85uk&F4D9iqq3og2Zph>g*Qs+8;lwLncfdB1b136J% zFkK@7wLetUi5hA6q(`zu(pHccq~3)HWg{%<uHay!k8rPm@Y`J^D$Hc}$BJ-?MA%I! zPWgE_@nZfgi+@pNpQiBz=P4M%npS70Xl;OD|JK5TSN(_UrdGdDn)1mgEb<gzVnI<w z$@)GvV^#t9_E_Pv&oo1*a6cKlrN7&{!T{vW=*(}v-v;ADW*g&mh%c30e0Ay&!`-Xs ziQ9%iIADRI1e)-^GIu=S_W=MRg?&U<FU4UIkD&HNbVe-<W(ss3>@oA_ulAvJki?$a zjWq7S9+09$B6>HZ2y8{)r;DSb0h9zX&&~y;$7CBsEVU;&uR4mO>!7&}o`GvN&^+Ip z_-<+*&pFc`j{-Fv>oMv8Ccq0uK$K-PamZa_Mt~Pxb@zw2CgyC(cPQat(ro71v~y>5 zt?Mi;vUW)kRB^*UN$^`-S#w8iJ<rGo8*bR~M&LbWm?v~Cqa7FJKg`8>m|sRuoflOb z=P#X!+Z;=~tmpT_Ld4^-@?U~NFS4B&0_V<nY~<VrB==xk+Ps;xRUKM&S(pJ68N-)W z6E%dU;jvTTTWZoRor!oE*U)xFa)Il!GQU$&u#Ba)pm2g(b}UZ`i+B}tF%Bkbh8jr- z>a^qzcjFo_9nJ+RwhZ=sfpN4fQ9i5dFC$7Qgq_=Of|EKZ%J}vjiJ<`$2jDT-boZqC zp`B!bzZtpG@;iI>!}jBxvZ$oVYWSxe^P71i#|{>)n5I>E8bXRKxZW-(idae&%L<T$ z(!mh@P3L{@_IQZqeMWkH?)Kzavdkv2-Pj#_t5#fQUb3_`xd9vtmr$IHtV=O2YByk& zQCUrO<w6zFC`B8N#I6{M3nY(q0LGZdA2SkSb_gwu-}hQp;p&ze0vThGW28o%JtV6i z`i>Y%5lF-r3K~JXYctfJZ=uzoD`4{-COAqE_X4p>!hSd0>LMbB6w;K_H?2vE!?nef z+QplI9fm~h9E~i16yljZa9Sv#Nw9Ws7VnQtKQSH)kN=rX$0NU@4x<mXftR(2n)pf5 zqwRtOX1rB@mLQD+f;4#mPW1}J-%SEn3Kl9LsS4}6S=|N?NrQSaA(vjBT+hS2c%*8x z7;ji5mCUr<v#sqwv<2ofBWO4|y3Uy$Y@6^onpEc}bT=;Qo|E(2*LsgF=$9B|WV669 zLQ*~Q)f*E6w>Y7mz}74we3I4^6j_~7oy-ulzM|eU__Zu%fbv5%o+NG>k>YhsRld8< zw@92?U`egbd~!S(?p%%qt^)grWSX~!YvwKv%tiQ1n@MD55&MtdSopgE9NX%d2U#2e z56yY$H9bNHV#5G!N_giWf-5g9!4|s_fI5o&J1h1=eMdSdJN7FGsT}HVLSJaS`JK;` z`Xg+%(Tth;#N<^7EkFYPmM)NQA%a*g#;@LYrIjQXqLM)^EBWow^@lDEBgr_fh}_Cp z4$vqQ`<30aXXkdSjEP{POsepU;kRKYV!DV(6pjw^cDBpsP&N!!##<%&eFt$nI~f~d z$mWt5lMv#Jk5{?Q_+m?{dE>DD2D>i5baj3S_Zobn06ji{0B@}^G`UiyB4ilmg07(C zVUdHyg7GVj#Zc?3k*$8(;jQpVsv&p<7(_E+NllNM??f~78Bk|!xUo47euIn4I6>S+ zKWGMkk7EmmzbI6&{T*AzUll6;)t15bH*FbA42=Kt+5_9ap)G^$FKii1OzeMaa-my& z!){Xy$v3~w;;<sqz{2eTZd7A6Dd|Zp4#YY@mtY+{YN3%Vj}V+hJPz@)@1~-X?8J<G zfR6^mV)fF@eW{{Sxon5VjNXr7qI~3l27XdV^z|UTeJquBh(<Ab`f@}xzoPSGP2$Ow z+57GwR}ueR6GcohlJ&{vPrMo}-?ZNx`T!3s@)t@5!;&h)%wrlpxR<`gXs}!+M@IJ8 zFvjLvg_TaD<D;hYt0w-Z_Z>V&PSn8fFweBqdJ9L%u#6Pg$YBs<P)@$sx9qBsm~IxE zu1IK8TMSK9^UN%4nx;zUrqMO*AmU6ndgf>Kym}Ved4@j_3A_j{bop3fmP)V12ebS1 zu*b_<jXy@XQ^^bqwdZR0i#`f%s_M3zyIhV{Fvx-V_+!6WhNL**!bLLq$taaM&F&6S z7=ZrFEP0)HEpdZQSUs(}onOuPxlx0Ur$F0a0Kdb+!Wt#d-V#?UToqTQgmWMx*nq4= zn*?Dra0R@!I<ImUFmK-5m4kuQV1B|8$0%CB-sT3O93|sN+7z#c>l=ctvB|semUmh) zu&r<W><(9Y+6XBRQwpK2ms5ymN14C`jGKzTY@`{;u^!}|s^U%=zjh=M7BF~ytr;Jk zd@8BW(Gx%>pfk!u8H_PyoHRcge*U%>S<^f{c`okOV|6+Qw|~7QF?J8ClpLa&XyPSv z^bD}-0V`s}6yo2a{b87TT^rjZ;J<I=7wd+RO~bLl8$sUX<40XW1HN0N6MpJ^tKOw+ z%xM&Uxq>T3`d%EX*psAUTH=FXgM8T3f&&6YEBh2WzC)M0@@gx2YA6sL%kzLg8Q-J) zb$?0m3xcb?HFd`dhyEztB53DBzwNFs_A}31KPUa|yWWXv`IF!SM>B`;Y1h7rqi_%5 z4yA9$$Y4;X3-63}0fH8H_+u3ONl|X&gUGd9YMpfDTe?=&bD<cGxrS<+ub8C}bg9!` zyn0V5EnB#nv*--aD8^^d)%Iy!wVxklV?MH9N!~yb3`<r_EVF<Cyje6xhm3Qo14iKN z&}FLzPmQ2Dd#ip6u&7eAvJIBsFOVtW7K{ckSyuAN<2QC58yu$b-36nehBD6Kjf9Wo zc~^9&;Mn;db#o?xaLo%Nm3XUUlhI7pR2U}I2W7-vpKhgg6#Ga3glry1tn{?nzM{PV zXo`jKYv6t7Azhe^$7mDqj9PkX2Izi_k+VjqvRO$chLUWg*w>6B9n97QZx<iIvcmAR zMEpzbP7UykHl*fo&ed2%P#pfLN}u-RSj^c$EQch%F}bplJg4oDIqa1Al9U($=THq5 zf&CiJCk-dzZO+A2{XM=C(QBterQHfokFf-sEWey;F9_fGiM3{F|BbFeq&Z}W5`0&! zqqHUz94C(tH{Iq0G#I>VCrUi}jvwjimnOne8TrZ>W|dxz58oK{3wE8TalIFNK^_Vz z?5JQ-bQE`7Z6-(SE%|nXJx+;85K0L}MZ_aQ(9r?NZg|uz1&cu?2spQ&8hA<oZT3`N z+Nnrymvo4@upBYZ)9PSTPStrC!Pd)SXDF8t@}@1;ZXZ;+FDr_D^!12Z0T56t?%Xat zB=~D!8elh8A7-&)h$+q&A|w%Y$Q{Ve3-J%&3^zHb2#91zvIOja1PRffKt8XORh1TH zZTZxz2P;lnN(m3*xRyZ1WGkv}TI$vu-&od!O#+5ZjtKt5nMyAU_h2kCM^JUnROcQ~ z2V7GwQV!ewo%x{cVvegzMH$SI)nbWAsmqR?ZZHBgmf;<NvT+Q#I<L4$_NuhRpNOc~ zoVY*xe3XTW3!K*}dJJ3yGL-v!jK=AM`7(KqNeNhHk=`Vaw~n>s>&J-BZR^iG7;M2_ zq~V91mV>m3Jn&rPBJ?{fLp^EL<K>iyLnfMZRQuUoRn~g0t_=!1mH68ayT`em9z7nu zzC*?MeI4+6?+N)g0a!<>#zv8agYmgCwrTaw8<SIDCVwEu=x#f`eerK^k0dC^GR4xA z59!ypIJ`o6*-u+p`q|KF`%!;9=kl+bU%OqwmEDC$l^3lTy=hN*+n)xo4y%0p<hd(S zy-0;0kY;xJxR{iD28Z2uw!ovr`{Ij6$VS@}S-XMA8np2$6SnpNN#Qi7fN}W40<Va? zL9JG$v2P1rux|tUEo-a5C4-;t;J9Ffl>i@@Hy-^(a9_Fg*{rbq3SwA2<#Kndu_i@g zpiifdP*1x`7W)Phe|@7bY1HZ`r?9`{GT&XX(o&Tl%J7Ik<xp7aW1z7}m*M82pqd$> z?aa~($Yu5kIb11`d@-xrmHNUX8U_w0lUu=cpCc{Vxg4RZd>20pnowBd<zc$pW)!}; z1>y1F;foZZD%mBFIH)xWndOlVnB-yi=gAPXl8vj$vEY4>HCjc`XBJXfeVr$^BrVl+ zm$1E?%9<f{rpnC9esSiDU`k?l^4GIWYG!FBnw7PM53cWDpwIX3c#wOJ(__^>Xd_&T zaq(cdp~#IgwxNOVrZKcUo9wGxaHeMPnt_VhTCReUCc!-B9gJG%Dl5j2KsPO>kcaph zeWgz&U;VLT-8?9IP!KH^dCm>GVN(G?z?S~ufPDAGUZ0=iP<;hVq?qfRX|Yy%zv6DG z=!~yT{wS<$rIBo_J^u`&MyrOUq~JUTfpf{Eh?ehs(q!le79hI0fhr>T0g3YoGNzIB zA1?;e@ZOSfNjO*7fBGZ8uLZuh;v^c_CvjqM`9$4Alb9~H$X>&L2c34<!Ky#`=ZCXb zl#BE5i*V>wsy|F)i&srakQKe#|Dr`PW{_@T;gFe(*OVb~1#+A^B9+t{zU-AtAxaI) zqR8|fCp8Jg$75eqj+Hx2vREk-#VG4oUuxARMuFjokWqP{ttuu(;f56XCWHxS@ME!g zfs_q1m2SKq26G~a9amJ9FS0U6R8_9%96m(B@<*Qw;sxXb-E}rQJ3HUx_-ae&>)}TI zrmp0uugCj=Iqqm+2M%Sv*&T0mQ`R@XM{DYv8vylI=H#yg>Hn~E#{RGSVA%ireK7yk zIb-Ae|98lk{ue6sFFIuZZ?lA*@&5*3$Hd7(@DG?CGXvY-XqK@58!o3||EuLROiV0) zM;-g9Z^#{vVfNmXQCz8VGV8Ycw6YaP1m@9TV_<ZuYeG61UK-tov~st4TcXrF6DEQG z@h^Ak3XDv!NZ0*&`;f<1Zz`5=m^E_cmsZV##Q#1elo3g&B0;Kpx;!nB7g<{n*MBr+ z=6=6Wimv;bQt!PP%5^%9URsc`;=fnh2`DqmE1b7X0G>NfxiRx_my3r~+8oQ5=g*6f zcr)r?H1*X_A5mzFWskqtFujMj$NPwcIy!k~Z|Y^vh48V@qoVy9{un(!Su<i4*34R* z@8^d|!4G(k%(ze)2|S&;^m|5xmDQ-onHmG#j%$LU-PAsg|Gha@RrG+AI$>lBwxEl_ z1v6sFh+@=Ks!YlkA<KVjsGvW6>mOlvR3ko$FX@WUq9U18a+-^+$qwv`V*1hUwaq}- zsIT6iz6RiYC=I@_SEF5V=5oQfu#|76L^+~ZpD3%6mk{_UU?z^$6Ou-)4^D{XODs<( zkG{<_M(pqj)P8)g4zD6}#Mt#Y_@GKt_vcP2tz6*Tq1IT?DV|T1zB~Jf;z}SXAM{Y~ zXtco$Ki?%!E})8%V4lFZJi89agnYgiVcG0p8kwU={LB!*)JZc3NGYHj<JOG~dT!hI zKs~IP_9`4WFBW~UOp0U8WkK(9SDV0^`iNb{+_^k(Rb2jpp?P)r+d|vIwkpvWX8!ia zcY{z$LAAfF9efQlN6U}$Jh1(kYM-P894Zw~<@__fOb*NpcS0jb%^*-<i-?nFRuM-( zH_}gdh7?3P&Xe?7u}q>B@4Zl%3Sh01)D~%c5%mj3^lO!RUTPFh@DpT&P)aE^7GhqG z*17`>zY?N9S)8(7*CV1Rm$D6Idr<H<S;=!MSkC2S2;2+lQ6=-PzcOvO5rZ|bq|j`f z*gV1PnnYzowT5bS`0&vdyRzR*k0MGHVqQnFtZ^ytH6nYWPh~iG1J0~&0HcTy3|I|s zxk(~OE`VzWQKX3Em-m39zzWjadR|y~s}NqKZ{O8gPv*n}!`4P0ymL|mQ7Mw}q=;Gg zlvCt3%kCsKI=4fzZ{;gk2aIqBSU`9QxueB6Ax=mKGMoh*ON#WxD55!AQR-So={cwX zM2xdTFpvrUhIhlKlN~%SbljLYpA|^a%_X)#06Y8~xS6?rs*YKIo|Gn<`3o|qjS=0| z6KshE3G_=+wQNpHxR9<aNkS(Gtk8ycz1psCFqB~pf@}O~j`8T*%CgIh29Z!i#~ly? zt4&uaSyUM7H`jJA+t+g<A8a{r`GIJT!WbqXQxL=L+QNqe_hx805!Ex^dEhDj`jv6Z zs3OH$XeRI4P+Y7i%WX829tRW<9T!p;Sl~Wj4*EoE<DUD3!Rr@I8&#~KKe34ZEPdWG zM1^Ft)kXJ0v~ygz0E&YwtM%ls!ZFx1tC&jJAR4YQlao}6Ha)@@<1dS0H)X-*LRGu$ zz#P*+aXR4gs{vUV_<<gG50qnYH!~Y^F$EO)SEwj*>Z{MO7mn1I!Z$qzKR_c|N$nA- zGo6vWMLAxo<VGfHuxVgd${~kAfFOy1HT;cB{HvC9iB#JeO2iH44IVyj|N2Yx4nDV9 zini<Wn?yr8a!!bWi2)?wUpdHv3eRl|*(op9RR+QV2K%-TGo`*(DHl0_%d0o3SOCg% zJU15;*scam^4~`k%%quUmfTW6&q&A{Fk}67Y|u?S8|b>W*>Hcz(ClqZC;e^xCxMiC zlH(zgFrt}`(0!?~Cj1&o^66KxfIR8E;Cq;FCFYkz;6NFYigx9TZW$ElFeS^<9dNy~ z>_3p?N!*N>a?^`OcZzcZhaU~13kinG)5dhi`-9oANyb4u*DzjYO9#TjK<eE+3IfU) zC=*EOJQ!lz6$$E#1<K2c1C&`ON{a*L8Nvk0z*y^Gi@;ss53?5lF!I9|EDahB6f$ws zjvb%^BE`V%*PnjFIJBS4P9zMuWXCqe<W&Q>k;u)?LBmh3*YSYj>EGhu7_W?Sa(G(z zj|r!Wg@1n8#F$w%#R7tKd=6Ixo2GQa%Njr4{ejD8i4!vE7iWV$9anRPC0H16Nf;A5 zT!lb~l|h1t0?%@WHMbWAhsJKgzEGE&21(Iyepn^CZSlc5pDym%Er4#J@?#ZU#gZ$; zK5sd@GP?gwhDJhYXWbk##|9LPZ_8%)egGRGCZN&r+Kgu)NTtoi61%=zEfM}_wKKs% zvpw}klkU%1Glyp6fxa65+}{0r&#Pd!@y(nU%i1`=t6jvWp=&Eq&_n2}2>ePq`abbP z`{%~nniJ{i?Mpt|3XK>I`lCZ5SJ&qhK7T~t?2Z3cE1N&*!aiIp==P7DBRxt>@e2Ro zLq7j)n`?tMQRN+g<%efiuW`Do!^KvY_WwiOTg672W!t)DcAA+v&FnBUGuvrqW@b(^ zGeer0nHkf}PBSwzT~&46tE1D^`)2pne%Mk-p@@f=E3_W|Z;UnPSTUs^=XHFcUjUP% zJF6Mn6Bju(3W8!;X9<8r=esCHIj8rQ3=qg7#V@RGxk%fp_*ZToB?KJUdP+;>!POTK z9gt;p$-UHMG0_9TQ5I5jLi#^I8-gYi7bTLuZ^3Fja|J{N1$M;4n|ao&S$&LAqF~oV zi7y6H#Z7Py&)|E9V-18+hu-<gPohZsXvzk}Zd*}HM8gC5#~G6K#+_gSAZh8p&a{*m zsSlTyw5(!wil@?u=_?7;j4(LmN<fT^S-GtTUFe0R0^R(A?9~OQC;C2oS}Nx*iv~0l z0XGg36yG)njOFdnuzVJlO)pqxJby2MJ=rb`T?65Xy1p`d*7L$JE>sCK?pZLH9cIX? zV}Sl3I<?u=JYTp{uyJ6hD;H?rllx<g1lA#PT@mA2vG{yQuw4?2IZ?aw31$MF`<pWN z>+Nt^V~*!4n(*8Y43^e8c%NgZi=|cPfUgmcD0D6UDbN-dJ=C$OPA=ww2VHN1{ye&8 zk{3&_z<ptE9Q+*?pv&8j+J5r|sxj+(VKO#$Fbj&mcy@)@sw_FCMxM9na>=G3BNonl zL4g{fx2^vMb^*VW8}oOt%lgl-%l2=;F5n++W^4eK{~LOl|8wXCF#i|O%k<mO%gXR) zXAl!J8zC!z`FEg~<?rkMaa}YsGxKj3W@aa3W?&%v13j4;8GolR>;FR9X8Rl3W@Py- z+Wzx~Xi?;kD&1Ow6vzm2*XQu|Tr<2)B1oK+RT#UF76K!4ywW&vJc&W*FYhRwA6vZ4 z^@-vuvYNRJdKQ}p-q~r-Hf$W9o)reHo~e8K-%6l--}=#8nT%7(ESj=1bsN$&8oaPe zT@+*{KkaeK5za|r@=FG?293t}qSAR}H%=q;(u2cv!0l5{+!=n}Mf<um=$Z{jhz_!) z4k=jGw%m)|evB>7)LT4N!26`Wqkt3>+gbH-k4uWPc*+C}P{JaILD{43xuxG^jIRVW zM1Ff%MjuOMU>Y+?OCM@6QQjp-NVpuq9rgD}tL?ghRhuJ*w-$xqzz%p~T4In)=&Nta zgHD(RQ!<1b_1$grR*FLwtu9Bf(5Y2soSZew1rk1yFcy^TTmzp2BTc@YERFEcb$)Ar zL$OEyB#fG+fo4Yf68&{7kn%1=61<*3?hS{+SUs~N+)x$#;&tg%3M!{izk)uHW#X=T z8;+){)5lYU!aTZjxzA-v+>k~m6=hc8L`6!ndKGJ>-(sOMv+eyu5-CKu84r~#DQctd zvDQVU_~QMG6^1k|+d>tz0mGaPz;+-xb|F2V)>}EA_EsIUjSQ|^`Jx_WGJ<gCb&@_= zK-dX19=HL1*sNmImNsHUE7v`B`K!QuP;k`5#MXhp9+AnY(JRnL<1}&L>xH=jvO)v` zBcToJIrck$dzh+>URd#_H{4DT9CD&t^?`81fQpdM6+L&W2%=afS+3-$h<$f~NNJMk z+xJlY<I4*E`G={b6ekJ?dLp|bo^B+WTHu?)5o?FY)s|)_+<gQ8kTxPI4H+MAp34JZ zk@&W3wNt-=<#WIrI1}QojkcOPhKBaf?QJmEN5^N*o8|?<bJ^~$t~S^XY7dSPG)AVD zlmkT5jq}j2v11ZwN8nneZK`p8xVA_+&)}mn#7c<aRbY(fjG<+9F=Zn{S!*6W#C7YE zSLLLpL*GN%q+fsX+%3rLx2iZd3krweFEI6HDI!Zaa2^C1^l%I<tqt|!wu&CL@6(1! zQmaazYv?$w$#yD6q+_U{U0{>K&||w6i!^>^vFe~1cTl|S{P^@~-jfPqwN|5dyH;qd zQpz@6r_lzT?Ra|T<0~Idx)pod$$!b9>3ZI$dn$LGSCVa44cc%a3hgd6axUIwPI|aB z@$DUK<WpSmfo&4I7c8h92|@K~)_hQHnR|Z~${O(?JR~q$0((k&7%@77x|4(%kV2$} zzB8D9V@o}N8a(xjm%geViOr4l9lMnr+F-uIO^w3BBV@R)y+t=y2ZEOtj;jMzLhT85 zw8oQHDY!AcgZzRyCIQ2;qItv7L-X~@Il>#m&KZk$H~)hcoV7b80!s7C6wI%hVh<wm z{f|jrh9~+PsL@*GTS<ih^{Q*oSwYb4W>b8J_rkWMWhNHy6+!)zx$*F@4Q`<NX{d^x zU<u|(`v6&QwpXV%*Dh|q#_q>7ZP6insZm9V@eT^oD_*r-)Sye^gjJHh6^B?KKy+`( z`mO04^z^6+AQ}QSV)kHa{xQfd=+x8uGhfrmR0mSsi3TP}S_gUW!Sle~c{FDV_QMVp zso<u#Y6xVX$im1gsJ;SWv};|xnKblTp09DF6gk!-pjLqqF<;Z37J?1z2w0)HtY&y} z4q^;FG{jKK&MNapVb{oeHxUlII2EVZ_2Y54%;&C1Fs*K;CX7=)N+}OUzI(&A?cQd0 zKFadC-kS*BS~bZ20Wz>Q<|`|~aPsPd^k8#{(g~CV%#ZmOp^+A!Sl+;;^^`0weBieW zZIZBx6Uf1LAtu6w=;jf#BNs0nuj9Z|(xx9M&BPr;D#20^U@25WtwW~?gcNSYsz>T1 z^&2)T3}b_i5wadMjOg)7d2m#ha-94j?Hl}AT{^_!)C-l(vwrbDsyUSOP{ULmc|7+h z@Wq{0yDsN)N_P@|cXWo%lu)@g?PZS{WZ1RlE|}h3Ao4Lz23Y2CL*)X}R_laMC;MSl zewX$(hb#ON^I??z{eoSulhwmiKSn2K#_?GjLdesllD{lO?)9=WHhxV^>@QwsFd8Q= zJ|j^#Uf~sJZmBt@?C4w~;7-?p4P_0m0^FEC2Y!jKZZHIgNiV7M2Z6IgWk7t!d`^9W zc)E}g@#_3$cJkxWflfCa`N&hj^H#;@v;5a?BB;@r_$kRAT$a};YvSrH83JT+Hk?x1 z2lvrqk^3TMbKMFLxHt2Wengk9X$5x>EyR!30Ua_DiXpm42qhs*5=hhn4waCqqW3d- z^69me*~}dYAG72rTesM|c(5AiL)%Fp&O%<pb5bE*V2Lp8JU~2Y20n_~M=)o69s<y` znqvSgy;WWzOqO&f*bNe?+z?4M;NmjJGve?-$FQH9BhU5)PV%M?r(N5hWo+MYoba&m zHY3tDhT$sDA~n?#{?2wWI<kIS#}d?Ni$WIuLfjcA*83{t{y`#xnYI+I(H9Q4beq%M zy+2Zrg%cRajRz0Fp^N1N2V?teiohALe^YdF;q<!svyvM*^6~;iXRHM=iX!n<!^{TP zqi)DK$B1F|3ef>m#|&x(_Gj;2Z^C#K3iNiYW_r#laP_rWAaCo*7svqgUx>%Xl^<d~ z_eKFX5Q5`==CTdvym59NZfL?9JQIM*TkHTB1%TWEg8}VMgpNTa9T;L4*JJ<&X|5?t z_T-nhZ;<zrPl3bQSHx4dj%3`H$c~x-)Sj~fL(8H0OB{--w<E~W;szf@n|?KoM^+!M zT7^zK>+%6z7REMSy9eH)9J^^g`_fnVAs8ArqV@esVe7{LZkf~d0f>-Fk!M-_TM%H! z$fEI;y(M5E=O|2vzoTQoe@4gb|7-=b|2tMNfc-Bz{wGVA<-bA4?EeKFv;217J_|D; zGYcCbGZQ-@Gwbj4?F0U$70toK_}hK^j7+SAOw1gF%*;%LOsu~H$L#+Lt!VbYv!YoT z8Ga9rHEn+lq4{j;GRE}tOW6l6nJZw{RiJ*c(2Qy_11d+*x)A@-DP@x^G%kv?2Phat zxM-cQYgNSC%R|iFH)cP4@ZRLOb!cS&WW$iGxIj0yqKfMw&@T8sO-{#DyGlDrA0o&C z+9^FS?G$m_z46tak0zd70$F{I2D#QlOFRj6<^=St)NP7IwUF&<<^-*}((XK-4)$%Q z^X+0`Tq<rbtYu}bsM9iIwb2`cmN{WK>5W6<Kmw`w#`<&gV)22{37K|WU83f$dcifK zd;!Fo(m|^CLt{7$;t{r1**MeEz9yo5PztU=uNdyTzMe61vBsXtcLDrBsUo+H@mt5* znDCawkgnQ(!meT*u1HN+Lp=AI`P#`IbuCnpF#oX}2FP;Tt=mB7oTCU2>JJb~C#QPH z>rQ7|kBwy?xwV;}cGR}{e78+h?sb=*&rj2{b(Lt%vv{IXuG<l%@gi0*;lXqal&y3O z)R-ojU$YE?F8BA_)zoGbGvJWD!8Ng-g}@#p-Fqp0P{{1*sy~Ax%7_;g3#C+`ZE3iE z7L~ziaMdO%M@F%aGWSDw_Ejo9bBygsYn0HbTNCpK#pU;}2{x^FmJEI%QjXnsK``{3 z+I1rZ-o|JZ^vJZ=XQ5o=J#4~46{aTFLj&;J1kQ$NGY%2fct{;IQuIFZ5QTacV*Dyp zY5btm7)QcrDhH4)Ktf**0Y7#D?phYLu;pXYR;E+UK%L!F8%dNGpj{MVT2v^Z!)h&U z)AIN7Rirt<iiP$tB4u06@zhZLBak?fJHXk)?#TztiwbCa#+~bnr<I-djrp03D&BZV zHWEd})u^g*tz|qagQt@#{o3p5b*4L!??tdd-;x82l=Gg9S#Le>{l5Dd@LZ!UmzjX% zfv}v?Dl;ZHh8znV%5IC<sMX_9p%I2`ku+;2qKIQ~BHX920?~no0<powVD#*mhAa~f z^kmQa)(eQ5actqy@z{5T&vB1udt8!q@e(@Op9ZeuI)1!vWP~vk-fZwSUHEJNLP`bh zM0khLhHPHWGltn>mCVyH15ZDcDiNdudA)cEtjV!v<|O<Ugoy0iEbyfOwRMOFPvaF@ zF&X&r(*OAi6xJyqthWOGswmMgNCKoOl*?n~(l42(dX3Qi`kNuZaM?3-MJ)-^d57B1 zQv<k!86iXKlw{Tr{21^J+Jv4YDs!?I9-N~DZ+w7RKEm}Bp~+rXz)XWw%!Eu-Zbf$G zXt1Z$$H?ED!{}>Ilwpk@8jT>GD;!EgC}lx))i*%zPnf)}>TO8@NuhW9h)mvX<y>;o z=ST;WvJ^Q%xn4L^ObUqu^lLLCJR;mB`5?i`z{gW?4K}kCP|{RRaB+jOSib>^T%yA~ zotj+;67bN9ZawU+ow`fTW&D@=9(g8*7-n!$L$?Dg2TrLY>0Qz|6LQtO3E&K?1=k-S zXggGbNT0y)U)`^R*W{uRdmaow#PpTmg)6ep_`uQKSh(+E0w34>O&kg!NCy30xIU{M zDCa2ebmf_)u^d?Js1R7oI%sqjw;1j8arPa)42EhX(ueV%)cTWG*lvU7>O%mSyD_nW za_hLu>{XMjCKBK<5zQb{{LOL=c2eYmP<t*Qemza4xp{@kkE{m!c9M0K0#gDLZS0^x zOU%ZO^a;hs7Anvb7*a)wgCDhI0Szp1!E%m!5gN#|OH?Q_!wx^${W7HY2<6-(xAM!C z+y`cGCT^Ll@mH3uV=$kH6OPKy#D-jVb6^48JjeZF$nE2--SH?GRgXC~T4|JH?!lSX z?eqQ!D*(IgsQ$IjN~|<^>gr-J&CMR?{cepQb<C+W7XLG*bmHwp*~Ngelze5Jhl9=> z2E@FqRVtxn7IUA#@8b%*j8@G%LIv`BFX^qAK)};G<T&a_8Tu(Vk1VXDT&JYFm6q`G z8R1U_0huYm(=yjr+T%dHt>T~!Sy#MQWK~hK?t5zNuF6L(6}?7E)AVwXo;e`9!<p1E zdqVPW0z=P5rH`s`x|}Bg(GWE+^|~>*wxK>rznVJsc<)5^q;o5>??oNYqQ<w@mD1P} z(%lJcX<{fAZx5DmSU_;A3ViF4mOg+}Vd~*#o#0OWUhxjWf@^4`Oub9eUt(=xajwso z<8BbT!|=m=Y!zyhYAS!=j#rx*jO<i9yBm)grtn3RyBnCi>%98pjN@R6^6%jaTyq|c zU7^vGGG)k30B=dkmDw>#(9JB+{n)rbfX{QhIHB)KulhJr6MUDrM};R4m5u4feRWg# zd4o~J4n9ogpl1u&O?`)j%z?jew<maj8_f6oSiPAY=K85FLN;k&ii96&*5mf>;(>iT z_s#Ut+M;R=WjKOGdW-FdIb@>Nt<>funtsvmqSJb{9erBk)qbQ8ZY)pG{KkQ;8a)9^ zSCmk083w5o_%x%byxAz@p`@i6|Iv-@dt3x~Ybvfbn8U)4a#tUqwIE)2X32Qo(>bNx zG3gRu@R-7JhFyiQ9jsfE9YOw0T+l3+-K~MuYP7)b4?j^)6wGoJpfmvpO69@0#r1AQ zd1YU7G}sF0+F!0_f|bsZx!A>)T}oKq0&?KQdayxgSl0z-?H`w0NBt?Frj3F0b-qtl zqLHEHuZFby3!@C7p;|(cD`H-wfZ_1~Z-ssIj7ehdNtG4xCCUpP3(bQuD5=)iOK*gu zmC#4yaMRAMQWSp`X291We<?6ooJL4KTW`K&W`B6#=era|f3tikeI}BRNS3CSlhaC1 zV8McwD0ASW@bFRIVlLC{MjBAzzS&cbvpWD;kPbgI&uN%@Tx=xMFBtN}x6T*7$%n`E z!*KNmON`|mMxRTU;$Pww^jqWyW>@4_K7#i>dV=&5MtF~pnLh;5iD6Jv>`U6KVC``t zBLGY4xXU=}U++P^9LdbbgItXx0%8^3CrSoFL<ChJQuFQM84#dsB_aipjqkZS?2FqI z^EP;J-i;OuVXcR64L_KAnvSSz2LsZ?=bDtq4?}4TtUvW|%59uu;Vb=8S1@}^{wPi8 zweOg2jSy(ZBRed0KopU7&66prceYKlYls<MjMU9FHXK)I_IYe?aP#9v$Es%PeDw=l zR6mPw3nf?e))P=C^hf1sZ&z*AmtBkONtOGRiK{XfR>M}}^I=EY+}DjZ%WzsTXQ5o_ z+del=MXiT5`=#f!H;cxnOCVt)`MAH43GDx&iO&AdCOZ4SW1_SFWumkHlZnpypUVXH z|H?!M{97hEE5kob^xqn@W&al@`k!@wUncxH+WQalo|%K?ck2Ex^w8P=#zSXjV)-qZ z(C~+cK7#azhkiwIqsRDbpX-ar7Q3u{2>W%`!h>G{lv!B#a>5@TI&1jHBQJBkRM?ml z!XO%i^m#lN7yZ-(_pJe==Yu45CHm>Ne?;x^{oqzAf|^yQb*VR9@-9o}>4sP7wlbOe z@Ty)I_CbfxSKrFmx0>XO(%_!la9{f1hBmO>Jte%B^v(A0{NR}OxlrjiN{oJM{o))n z*y*j(Cg*~NXDJ(V|FMa|C%7$)x=21U+u$b}kx~#Us~#t>Je`-bZ8l_TgU(#1SbxDe zmc%Gvrkq%0QFWcBpv|f|r4!3#5T^rH+Y;zIokltp5c$jA33MI%Ape;&zWs8n>eurv z`&Yd(BG59~XLCe%>%&vxkq)%ZpPj2QwJV8hABsFSC;OsF4}p?h)fss&>du|3Dc-u3 z%a|w-?wI>x?fDbtx&6W{@<Qbh=v~)B5A1_Ny@ktEk9JWH4_OF+0-Xo~q-@qM8pKLC z-LVzPdk4E3OP!G=)y0dw!5aP6a~RKB*U}0vFhx&G-41&yzsNK$%L7gZZ2uaz@5tkX zkrC3;#1U+0x;UPmH+CYjk;|=If>1R5w5z8+WHFtON6rV@K!RzHZvoYyi#u8|Rj?8B zItf7HUOzo`7vMQ^&ip|k+NOb0(6saP?Lv(g;8NVwT!hxWl=pL2hq@51bUcZ-oX=&Q z_f?x7K%!7R6TvHZXdMp`%C}p&?x5-z&_wu>)`S)k>V8nL7||CLWNI{)nRD1OO$nGw zEXPlTgN{{>>?gkt(Xs7N7w`#q46I<p>XahQIFqo6{z$V}sz?<MH&k}e12HW@lS>YE z-zFC9wnFygBSehw%~T=B!w`tJlK#<S$0o@9^Fm<V{q<%jCnHhIXE%Y~2T50VeWSAo zAQ8-i2kcxiz%nWmgknO)AuWcxI^RZ0fE5#kv-e06&;7VMqk2Pca6zM*aic^=Cler? zadxD5lOGx)!R9Cy+us=61F`fHWQ3|1bzT_|=uJfcsYm+&1X4L>QYftlYh)pnno2%M zJ*(Ijjdp{rs2IAQjIefs|Fn&^1^h(gsRP$8@Ge2Csl(FSRj&8LD|k+`08<-N5pIs< z=SZ3B#$b2Vb3*x2^}_m;ZS^%8ZH{gktSpoUAp!3j8UxZdjFgjS&(BSa4v$OUDMgG; zfyFwEN*AGNwf=X)6q3UYPwX4F`?8Cd?VU$_=8I(mCD-!n<z<ywAXfjkA-)l3dky*e z8b5{^FbnX(Z3qz90Bn_XYF}BEEA(0kZUJpsv>=7zGvjL(L5NYmHFCgrkpl}QBc%_Y zOOjvX9`9hnq#I&X6`6j|jPHuJ6D=RGn5Kd8h}+mm7lb8_Yn_{0Pm(K=BH%bOktfR4 z$;SE96&m;QVPu?Nq%*Vch_%_xOI2Q`Nsv$wkQI9OAG1+Sxh4T8WYXf?T9Yelqe2zX z^9H+0N!9zYWuB#gBs36UKNiXk@0(r22zyCc>L|9sR$m03O`XctC|s*ipI;-i@O;Xn zvZ|gsL_(~EAIP0)>8rgq$`0L`G@eKey8)UGpyt`jOw>iFrU7A@clR}zXii<+$tk~t z*zr&GNq(rgIBMfJ1;#HTj+6tM6hKHO2^^*x21)axK582ehI6F^1m_V31Pcu1*&mTb zG^^7qUpXRaNhfZdSSa&&$-VoVs`Ym<bCe})R?M_jCt+&0AT;`1(*W2Q%a0K<&Q=s& z3%>hE@D=$7q#$F^d6=Rdj_*26c&>ne<t}Sgo)wzlJj3E`=nL(FO#j6a_<3@7gT?!` zCEr#ujn|<Z6zbQjgOdkQk0y<!1sCwKg6~WUWLRIc0~>0)d==+TcwIR&S*K}uO0Vgq z^2`Ihd6!LfM{k?byZAnNpT166#2#u>Ou3jps@-rezn`pjZLYp&acB5wJjIfVWOLXE zzyz}AEljOPa6oxrizumH$p|9u_ei{TGlRT4i!z|egc%U2WXcC9YdmHn<rk7Nq<?WK z=7iNl$4tm7Xx|5E;^^MrBO~*D=GS&Q>6RAsp+S3w>KVBXy;+hpiQOPGUcfE)&@X0? zyp{^7?cY-8xWXPh=r9r`(UzdqHpkgUl-m+S3bF}`&*cK1@fmZL+-M29?InF8iG<!2 zvvlP&rlX=9g{4ZFhjMuXhQ>c4NE`|_{FyHohq4+pgOPQzuKn)i{3?JFASyPbBxb=g zv`EgBiWb9MUY{Y2C_^45arZ?2Wh=x8o4sv{l)~Q;UxrE3m);#>-lziAuKA|%aV@XN zMh<l31jmS8k|po)bMTP`Tm22|uzlyU=ecSVq_LxBng^NR#C>xu;Jr1`cDf0+MOmGU z*lnBrm$n*xxvfICnr3Ywu5i#-_g5l+sH`gx3)1dD@bnI-c)lR86WfHIxrjcmAhDgV zgq(EHF`cYaF>)+^Ut$uEk9sg6AH@x(i`|*(z9+WyP2)p$&hI|n)He$eT#IX<+}HD! z2IKvDP#Y;2y)(DQy_ccQtX3`eDA6=1o;I1QqQR<jJpJ~PPPn)->V=Ai0>u1n)#f`h z&q&$M@H=6~O^Hi!qIK#EPEW+mU1}Sr^iV-FH>{0OwXigJ<Wl9hG5A5dH9-v8{BnwP z{MjKbtBc#>^=@mg5vFJYIS(I}<IJ8F!ZG4kL}sB1{19XW1vaok{8wmAMzMngQAZ)= z`dgu?EP-NyLD|sE**sLV<S%4*0ps6kOLxgY33_mYodwj)w|R(PP|h7ju?8a&AuUo7 zU-wX6dqn#m_p{qwU6teIAZ++ql($90<8y@33bL^_IMD3`bDY@oSbc%=k7=1##vM1u z>g(Z(eMzPq0LJXD4_>A@T&^+RE{AZC&zSz+_zG+e!V!!_E2Ux*0(AUOp%#40)-+9P zW1aQ`D9YrayTrWvt(W`>w410q%jYLWiuW2EF0Z@e7)url3pr(zjoU*=<3jbwF9uUK zr9apove8F&4IQPmf9y?$s*IAX$d`2$Zih_AC?n0Vq+nh85vRJpdauD_VotZ01}F>& zoRdH(Nekhj$xetcEg?6!!QhSZSUSjF+(So4J4%gFK8qZsEz1J)!Ey7#a9CSIE59~f zS~`ing2?JNwL?0PdyMiYEe42Q)X9#?<nfszlGmYzAqw_K;4Et#1b%NWQ$Y3H!Dy<p z@P@${W@2m$$CaWG5hr2&x?O@aSdLSC7n~LA_Jslbg@)f%bpMVWbAOS{dsLy<X+97a zk^agZ0&X6`M#F-m52<wWQW6H+!cNX>>Y58#@IGV=L9ABIrh``6OT#sy_F~mUq0SP> zFq^q@z<I6p2M+T<R8)-vk8qEu<2w7+jf_%D5Q&(}(YY~Q{+MLC6qTvgKnXURU`~is zIMOFKwL%M<bk`8@rLTwg?UZq&*zIocl2=A=aTRnFZ76Kgb%C~^Sh^5kUYA8dFhG#n z--nd9hc%}Q_17kiN%zl&vIUy&b(8`6$`jt9goSMu56zd#%ySCpxpgOC`*@DB=}Z)` zrLDUO_h-c`5rc7PXwiSXj@_7?3O^}3RvmDH{I^t|j0($OAWj_oR8QnC`C*{r;{A|A z(<AOWvb<A)N@wX;^)6{n?<dZdUl)~ftaZisr23fwNca{2ghUf1|0lxXr9*LUoS~Vt zU*%ryhM&GQE8#s6(z!t{hvY#)<m|fc%TllOtM)*PN)$`SxpHd`#;CL&*o5#@R_Y06 z)_!Lu5j0%=Ac+yy?>hRHT>@dicO&>*b7(>uxhTeOt>~9O5TKRg#wmK5`r;d|h(3*z zGEdqKaCU+%4~t7#I>vuGHZ)Z5QXp^2-}HGYy!!+jP}3r{r`chc+XGbFreEEQ#JY%R zfgMLA==sB5_7w4lQxYmE(FL^6La>7dd`P15UE{K9G<Chk4bq4cS^@(jPbqZDb(F7- zf@I`_-q^gH0o-9qQDaAHgCtZqqEv=3Mz!X7U9U|QCnx5Dnkp-hN$B87GP?J|Pnc#z zUST++YiA_5{Iqolapo?%117n(EqKN|82joIbK{#tkc%8}AzoUZ2fV2<&hBj9{m0J} zd`!UpC7L&qZzYzSHPd3l+co$+V(m!y82vp7qZ04E^_@OkO`yb98Ak{Zn$NzNR!Ka1 zHLtZ~0*NVW%S=8>arEoLKQtUMCp*bt95+V=_U%1aRCZ<t@{axd<eK}Q`wkQOqIhmB zcpOfF4L}!94Gpq^fNqrsJoIKU{D7N~5k2o6+bO!7F}|tSE8BZlD?snoB_$9*Nzdy- zTQh4oC_iF^00K(>PGtXwXK@_=EV4QNEs_1#SseRc!DbwP1)FjF6>P@A^w;}eVw~fj z#5mi3LyZ6HGdl*h-xkFze~EAw0LyQ7w6Xu|@sWR{?jL3U@BkPYf71it_?Nk9%m79X zRysj(V|^n!Mpni@!_bufOh)@7cg)!6kASp4Q`7$Z^50k>BLgELBMX3#k@2?{__y(B z|5L$pjBHGQu8*08{dd>*Uu2}QbNu!hFBAJeGSV1Xes|;k3)6^${kOM+m4%R*jggRr zg@KS6@LP5NwP^%k_<ggAft?V*@aL2h`|q4AbNnx~j5z+T?UI$5<2MuGY}Uk)y_eKj z9!gtl%-Ajm3>dFy1t7vu2C%LCu8DI=R}ECjS&5B@)oBiJAkq-Bl~jH%8Yhl!AQD~_ zwVmn|%jU?57Skge&+pkJK8sX=yzPo4mepL%smtJt7Gr3anc#h5me?#t%Ia=lI&VgS z@IirOrbU6Ux?`K8>}~9!7-7d@J(I)2YNcz9tz=F{yQj@Y5!^qf9AZ#CfI8QgncQph zP`|cWci3x@`c(No3`xYk#C6#al!ur%s_Jh=F>f9b-hc2u`#7;;#nJVf2z0^-@j>bP zlns&JCdgNo&#WJ1;zkXAMR^e!s~Ul+B6r`}MetgGfg+KSud($(#E46^B<8yj+H~7x zfCJ@QsIFRQchKfl_HMjbF6fIPi|ruHh-Z0FLPD5|_yrSHCmkdhobpnu6G!NFhS7Et znPV1TI@Sm&WT;(QcY5+#luo@E81pTTjINDb9HLjqj$nMh=w!aAJi~K=o@zfzLQd`8 z`#a)mo({Dtrl5Z4=c@=8#<qAEbbY1WZjk0m*0Pq1PJmO1J6S|p$eo}K&-X0n-9bB1 z?`!eFC;)kJZpQ;Me1!TOyY%}nFo@@yenR?8Ky5@P{9HQ`H<G61S8h9TSDgx973+M} zeV$)1b5Kc2s9hclq2cedUxbWE1<<VprOmX!KTGI0baVtn<B6Nq2qrf=JkOiR1!rRl z*aa1guCpg{G5eC#cjc5z+k9lgwpi2_>u6+dvc7T^J9dfDmDQ!~-gKPB@i{GFMqw4Z zPXIHQToLKT!K%}7RuYqPq6?H11UUZ8K|Sd)WtP<~n8o?-My6u9%w-d9?Pa1J(_#9O z_h|nv%C@&y$wnd0V!b)}g5LQ;ZEMrnT@&qhCNsxE;)$@YmE3V$u8Ef&Ti#I_-2SCt zHqY5zK$TeDXNPH&$WDUB0JRTI80`ggL8oX6jC;ck7)C)cqc{|*SoNFswE)dcK;k(S z%ni|^1hIZ=-ekZazP{k5Qj$q}eAGq}%T{2Ka>45M01|HaZr_x)HpEIUDVygJipJgO z{Tc!JSQEH$!ws>oSpQ|*SJCs-U+&weMok9fu>RjAfu~7TVQm^+svfApkEEmaa@U2q zMCz(8uy9YlG<B@sF(~u|=sWOD*!dus2lRatLFC_o%2({nLk(^_r45&%W~ELU4;SPT z`=v1LeTo>}^}v<7#8(}>uidWt<{4%;=+PvPDhf<85y>t25wVdTZv{af-@R$NFL372 z9lEu4y{z3+?9jI7rUKw;`^d9+2}}hy$m)-p?){0#)U_$gr-HxlxY(~^*u9ANp+~~! zJw(so+!RN0V?RmYO+R~L3mXHe*zcQ|S+^;yL$SH#Y}NuL(x=WMsjlE+ACGU~#U9zm zUVrPnufRp@1D(cq%Y-bxNb1plGh=9>E-!%Ec1UBxtx=8BwOPvLS>(N?t8$-a9BU12 zlIU-a(+bsO9{|o>xgY3J#v{4!FzRbHW5qcd8ZQKk?Km`c+Hvmj6~KER$w1~|ET`b^ zQrDFJ0-m8s31^{7u5%`-qFh<na$nIT-lmonRxZnxS(=NNVb_n>vc-jzH$k2O1#qF6 zmDUp^*Kx>RDIK0AQ8$#G*~qhWtB4@~7_7?$BQ&a>;7-pZ8y$7ZFUsUj4ub-^T4D_e z9b#*W8L$qvOGr#Fqgxc#aRdI+uroLoZmy;ZA~WpCwmNoFO5Kf2e`uo++8*grVAl(^ zI?2UajKGLeE4aB3#aw9vruv|PjrVO}aLF@0A_Qmcp+R}BcBtsX&L9{9Sg0{d8-=5& zu6ofmV0u5&13vn-Vd|c77F3#KE2bw37lriz>RKXfK->O`FSc8h>r3LdFQ|A}boN0+ zSok9dN=qAo_jpt~&2o54_2402<Djp8(kLurDWT+|V<5@HzFVRM#*;>q9a%Q;a2zIB z7<V_-kD0hIXDZ2|b_*^kvt#DKj#oSK(f2(q>q(v?9_47H;U#y%LdVwjF-Mez911n} ze}+!2)2`L=VNK6iaPo^4|AdISu-}hk!_0BSi84IShrtxo9_^m3)$Rv_Vrrt;btjVx z<jeI%+WXA@&}NVa2DKv7ToomOkrQ6wxjU)0SiC7Re_LqN7;SYH=|5MMa#J|D=B0SM znTlZMeR^s1aA$pX`<YP>P$QVCqUXCgcnJX<s$JUNyLNCXY_5BJzRdBX42v0ETuIl& zuco*3OEQg1_UKkl$n6^*kN4&ze}D}Luzmd8doMptX~w@4-rt-0OpCtK<kac#@nplo z<xJG^79Hd&>To@|Q@%#Hq^|lN4zNfCCDwZt-KPe0E{n3RAf|0oi))9VzI3!xgvb0y zf){KkMiHTzyf0hfmKN#ph$Z~s?}MFh!-W6*gqO4pzxxzE&gUz-YYz|blFGAk?Jm~3 z(dzN*OZCr|2jF+o6^6|Oy0tSMPZfewCL%kYjB8bMT#|yER?qq*?6o&^+qGbv&wPx` zekgahZIFCSu&e}EGy9_Kb4_$(ItA4ZF1mt>@4+Fzg%h%q;0sPbj|8&J!7>%tm6*e3 zR%9#`9m+RkWGC<FZ&TRgTCbEEPU&aj8c$_;Ec-3VRjPACE!=&x=7cHEXxtUJ=*?t^ ze&0)e_am7OLXAe$jP8L0j)#7WO#~<Ct%vv(uG;Se+10zRy3&po6)eBWTwGbYLo72t z;Mdpdf%vh#l_{NleP5VKQV37`y$4qjqG7r=M9G@t9*Cf@5N6Yh9ey_x#?%eaJLPhr zxkRqj23z-)g7|g9^O2@(+c3OVM5a+=EP7q8(fdu|#1#d{?+Ok<d>jV}6yW!S6wD4s zgu!~3JwbWZ>{h5U+yawg3Dhannr@a-BHa;*eH~eTr&R(ylXP1vb~cP_>4$k4YNu-! zYu&2S)L)7GD9ed*t9AoV<0D-&H}TzgAt#I$%bPcruI)yoWreIS*yDDnm2P2R{Fw1+ z0?7EgefN)2IwP-UMdP3O3$^6r0fObnNiaT!B8he!Gj8S}bn-^Qn;BkthS}E<7)bul zgUqS$Myf_XsRk<`il2;|STVf`Ay#P9yyj<Zm<Rm7(~L5)P2s1`or=DoN;3mzo;RDz zx7b0>Bu_H#p~7*vq2;Ngkw{y0BLdmt_)Cc^F^*QkC)Ej5FT-SiDTEu{sXZCvf&W-K zp@sc))xjkw?*N(L-oPL*s**Dli|7q&9^yjJK(4Adi!Y&$Q}w7&^}{}v08+|4;Gz!( zUPbX(h`Za59HWFhMFf`{;aFYw*^dHAz(K)&6M~5s)d(-!u`Mg4fK;Acj&o<O{c({j zm?dCheItbG;17g9^+EJ<%RDq5nht~3nI7qb1GG1~7W6l&o8v!K-5me7>IN_{{2QwK z|F~QHFBJ{=&s8+XzgE!z#^0X{V`e90VqyDpJd24H@H;wz<A0q__{T2&(|8se`|lks zYufIzq5C{mZ;_}BM2af_P(`+jBp5|ZnA%<ZL3X|6t;nw<Y1`wuB^Xk5XFj%gFcg!s z;Lu?kpb&3En;oAgUBCFIM@?2YOdGfW##FwAVt$y#qP8*=j#Z>uiymTFlcUrA9QvU> zpMR@cr17gcUwzOX+7dmV5k4xFCz^L8!Yq@Dnt-@c@ter5^o7~-_M;#tGIm~qS%qPi zAH%(pih7-WOC`RIW&Y=c5BPT_Rdt*s({Iq&KYc_+oFu~sDgvVOahsAG4jtG8sacP! z5(F{x4M^f?Pz>S6Bh7vt+1#PDk?hV%)it8FaMHp!_4mGE(t|LUJ13TERh6$bX1L^X zN#=U2`?rf9v1L68&@_?GH?FeUsKrgQFLz~+^GUooFt&D~W1t{c(I4ClyWibcyWjB~ z69lGHjo0DIyc1&3ZZ;e%pSG2==IA&(mQDq+k&<B!wcGWaas66s)Ysg-Q2Rh!`gPX+ zsM2q0rFDqS9#X)3UHhU%xp6<N@iW^s8r<30n>h_H$47pQr*&{6hc`v6{KCU{5RbFy zF}@8_YB@u*j@0UOH>;E>A8Oif=Lc&rk`U-NAS`C==Tyqfaw0mRBQ!<wjjJCPE_c{a z>+Fp+Dk#H-?(Pp_CD9WjtBR|XmE9{G?Hy||z#s>x%%Hgj(<)sKVwK$jNHrCiI)VYY z+I?pU7(|;OTne&ZA8av_ku)U|OT%nlrg-1v!vjf`Y~S#AT@vEA&k;xJ4$6e}z!HmW zx7&;0rT1W^u*|Tm?#AnG9AA!s)QRt?H@y2udx1Yul9spT^onV{RC^1U#sW?wd*?gU z#S9}()P9DG=`rSp`43=eQjJdtg2H9W5V`i_*>Bv2JiIY_+U+<tZUlbQXj26mn*ox+ z7vEcN+V0J8)g%4|p0Gtd9YGVA)T%4NtYV~J^bGbAS_$Y-F2$D@%fxrmLlZ{nC6*e- z4qMsjODQ};Yk9UF3e1J5*vG5UvMLLH|Dcq#>yyeI#Ot>{yZ5uhf~VPQWOSD^szaVR z+x1U2P{CBX3kP+7P;L;_shw3qszV%IXRL9qkk*2eUP?o#qgAx!3>c6UCVIhTNa&dY zVXrL9XOZ6I+|G8f)Tq;_IBF)DTbeTH-PA@SQtq`+#sxi!8?X7q>WdezE#tH0o3Z;| zyczK&;L`a)G=}jNIV<ala<U$HyFbY=GN}Bi*?p=T6ZB>M>3Q<=<?>u&hdK-WU`wyS z#{ofA*ag7^X{gq7neIALkczQ12Z@nGF+1kQ1%ZG?y$wpYhh?kt#4T&N*{5N^3i5M< zH)pvTHtEnLcRp?#V`Hn)mEZZ)c(_~1)(#C0A-d%Gk&HjSW8&S|Ert{-Izf<3zLF9u zl(1TAB|-lT53I+2LP6f%tD&8?tyoXCzZ5SNC=C5Mnpk#RgAW#W`AP1b4c@O!*ZxJ& zReyU2f1qf%Mow2!EfDS$WQ&&sGq2;!U%rfil1kVDW(Ij1#SVuqe@bU7i*^Wdr%72L zj6b`SVv1CTkPo!>{;U*oFN{{s+>vl>94Z1iNs<nQLLde>Of{#7vmT`Im2i%WJWL=O zM;q>l_Ee=7e*l13Ao2+BBa3Y3q6=oV<2u|*@0x&~PVING3*!ST9`u!BjE4zGOFu-C zbRVc;j_xM)F7__e3p^Gvq@RdQnDYS*x=c4{Lo55&7va0}ME6U_>rEKHAUVL;+t& z+QtX`{`4;&Hd9b%%9M(IEOSutJ&N*i<9q1#s^Yn7A!MxIi$FZnI&&V**n?j*lO=rO zV?O1s^>W_&;R0kwUhf*J6ETIzAS(9idyKx`NrlRk@Ls|7Y{ye^D^F=~^RizV=7yr- z1q@Qe@mTURnJPQ@c|FL$bI@z(sBcyyG-vlgU{hojR-3FtKHDx`ENQ6}Uw})~n!HG@ z21)xr+!PE96BS#1gZqZUl_cUC%(L#(ytjmS&xVYT^onibVesp0Y2Bjv!Ay{ze`u7# zcLe!)5ith~TEn&SMRnY?&SClnKE2CpL{sv$Xet0_I{#N3qqB_KkunH%%iDaZ{Ck4e z(Okb!l(yssE)(W*{!hZ3@D0uCtEKDlq-@uwD>=1*9DG$NA3URySL2}PJFYgR@lj15 z<bo0MCsJ`;A~8c`@b%A`XM6pZ14bwLb5Kr_l(k`@<3oC_V?x)bLBCP!udUv%9fRRY zKs)BFF5zge_w&Wm-iPMT@VPH9{PK9HVHjD2#C3dm+{<zB>JdcC-2x>c*Y3LB0UBdg zi9oHSr98&@+0fR<X?B{Ps)3WX&6nJ%t{<a4O7L}@d1x>;rH~>F^q`!u)w_zqT{1ng z6ZS#}*OcCi{dr^sJl$}MG_z}C*==YVQED%zpWrIix}}Xx(lIT%c$=s?sX=NZh<pC< z%)>;Xde~oasdyw%C2Gwi{&+e7r}_uAskRTDQz2uAV5a_m4~K58cm~hgixU$%-%K%G zi4RMBZ@IQX%ubqdhX!!YlVsapPB8d-OKa%`udVZ@xz5sx-!v?v(!@xw8S5`osg6-R zrCDh5>S({p1USsUu_J#py8gV?f>1e%ymb_CY&U7QquoQ4kmtjh>fiEvsCm2AAN+7I zpvzEQ@VZe78J;A$CgTr3X2+yTQXH74H|^SS<;023??*qiK9!xveHxWZz+BAKEyTU1 zVW5X+xNt{e9}9BDol^<}C&*VJ=F!h#4;$jBnO}p-ftpYjfe?vImCWqW=Wc-Grr$35 zNNyRCZGFEPwO6HSX<Zjf#mTDvI&hx1wCAiO55$~<H7JyE8KNe`ZN>R27?0T%SrYi- z9${=QpGH!Uj2;onrQ?TnXzJbDnHlxL1=NUh1ozL-3SeOTkDwL6!1B+~%KH1z3ivCq z3-Etr82kmV?Ef*m{^Ljg6}<j_wg3Y=AuHoQlDt@%SpWaw^&fxYUxgYl{9A>Y*qHw; z%mnzY!Yuy_shRa}sF~sS0(KkJ)}q(gu)7|WuHvZ-qQoT<gG6e~$mf2D%-Rg$>-neY zEHhEKP)P-onv#DF=M{eRf8>*IpfPPyr$L91Rv`Y|eazXQF;&|v6b#$nrGbsm628h0 zS%%UMB1am3KRan-{&99>NZMAHt?k_{zhel9==&PJCCw2raAQuM6dtfokz1N-f?Fny zVQ2oFJaypaA{zr?`)izFv#S+d0yAu|H@SUSyY<9X25%yP7~b(&j6seBW$32(pnkpD zn%W6<qF#P<1gx9JH*=lFbVMpn9p=aqPZWCqU{F=Zu<)btk9=Ka7X7?%27QrZ;L8Gc zbd!=}2_Zy<IGvgU%80gK8nuxAebTG^y}sSnY<;}D)FjsKXXhdL;4|AwuOfGAZ1V2v zBjl;n&q0?-X91X#;VQJ~1RK|b8He%8GYV#P(w>%-rr#3zYr!7;hLGCD2yH}`06lp? zr-*avHvCj%gT0;BlI<LQ%w8B7Ls`cG!r^Vl;MbW5(uY*@Fcshxqde~0Zl>ma9h!td z=nHiS2iPjyeO*8VjV+RPX_Eb@%K4DAgS6axgj06afu1mTco!;84A*z)(IA;iW(C<7 z!-`-KvaC+!v6dQ*Z^H9Ta-DGE7{1h`?}=Yvg=F_B{G72(iD-_j8?LwZSw_|6&_bT( z_~k%Dgf~_{mKTqx$z1Qn?$+0Vqs;eA7BubGaZj^bvO*Avq|&C{OeCM>TT_<!x;ugK zAx1aApn`lM96>W|H$Qjrd?c9NiVfHW2PkT2cNnC|?;7pLNYer<j+*@Aekwt-fu#_F zvapv>TnCEW4S^93h++xrZIk#8e`V=UIzZak-_i>Hx!@XXC{bE79mXlr5<W~-Rc6sx zbr!(A99a9Xm^LPsACBopF@G3{EOM4;wwPnJ0(zhZYGnxIfnN-!*+;dha%=~1JuZX? zLW4dEp^76wk*^h^z(>eX@e>CpNInt@mhKfLe<X8{Y|6^H!Q~N@<XS>dCP9ezF=8Sa zkKR1zxbnQlZkcz6nvoa*>prYt9bnCj+$Z7(s@8~bBG}96PO1sNv`t>(+k9{EinS|= z^+h;{RoNH1dhNy!=+5#qoD}Z;I+Pk2$#eq&V?=21;Jv)!)0=^g_)fS$eNADF@v7Z@ zAC$7$)2RKEVnuYPam|Tm8u)H2T5)q-UkK;wCXhRy!9Yt@#?;)AbC)_6%ODAV<O9(! z_9vtpN|V<fDm38@L?{|2M=EUB{_GY0S*qlhAGr2%0;H4nhwGUbBj=Gy%1;Gbgl>Vn zKldE@k0}e)fxiyKPS}A;Q0)IAgpj@}1rLpP-$RLoyu{#W85x$@R<Olw0lHG=WAL{C zL-boJB!Ix&!N@(GK1i50c9$admPA%yBn@M6kl2Bwqrg4hD(6_OAUeps81n8Z`*AH~ z&VgYA!qj6ItqaqwVuexg9gD!ldR?0wQP|4f0!djblF&0k-9O#Apzy@}+ts)PzW*3w z-NE<hYEi0-$^=Us{<vS#qyeb7#s}XcO>(RyMk9d{9{5s-VI65Gi;a?>jSj}XHiJ)V z=!*z}@;VF228IV@iWR2H=R`eK6H??SQHa8!BpEBkU6LKHBV6Y8Z%yh`(d<u-P{4dm zpYHT7G#M)WV)&lI%Is5Xve9~|dwNicE(A4zX}+PFUFN`Rsd4?Ge%~%+JXm?YRqF}7 z%{UL5;2Ctd@p_H94W?HDZXiPVv&EXKU>QLRli;Hqgpfqj4W6uDrO(BzTZ{4Cp{7{w z9w|fli^L3fxPKwVLRPmR^)r;FuRX#XVHkO8OGVw@Q68#()poe&Hw(EhVnWBg@+&R# zKgtzH_+;UWc=m`-@Un0y5l?*7{1x5yN6cH$-)&-27~%EAt|i&+L$}ap)8e8dQdJo! zc0VPy=SlkSAp=h{S655%3=ijV%cIoWANwk&a^nudo40*rxb2x+0<C6k>2IZ_u`yE8 zAUG4$G4c;6nN3TB>4p08?vFxcm}HSpq)+3*YadIC(r8fGoAvYzgY)iKj?;fIY9ezM z?m?NXIH9DWT(pxPzv%clNj&q=%5#g)YwB=nM57TLPonu*_-~{>K`{y?>>+|Mj1^vw zdtI94p_2xq2R-Z5GidP?MNwSI#3K#fv1FvXeZ?-%1&UqV<16q6R>v!Hdpq5?M7$_B zQNJ4ZNl%y}ibG%~+!u>cKjKs6o?2+}Q@5lhd}ArX`tZ9N=oP<%?*iP+b7r(m&q0lQ zP37NDbN1WC8Rm-Ob}%e#)r83OO#VP^eX{}|6_~?4n6(g(&~z2d9N7Zlh(*}RWP{3R zH$QjqnS~%e^UcbsOF1lt_U7Z;&wr*Ye5U02DR&p{aZkZeMUTz-BPe87dGmrMy$D9W z%_0$HGTL4ON5RJ_C*xftpM{>Ersvc*36p-9){Gl5e}?p-_uSl`&HDS{*|1VvG_Z+L zz2nCG5&|fawbq)ZOUK$RqA*T+(3$@fJjs;5tBk~&p9?ps@NVgWP8Cj(;y1Gp&GFm8 zLzVA$a&r(amSPkmM&zxHG$?L*`n7XIG8n=)gQLT~Tc`qAF~3-L04Hg=Ur7^sVJkr@ zK_;v#4CHQR4p<qGW6I0wWhHV0=I?{Xc<%2jfXkZ>Wu9gp^8HWK+dgk=!&R={*6$96 znp-`fboShx$x=-N4K6YkIbS0^7=Cow(7s-(nQ(L$+_%?6MofNC_-tG^or1MT7UP5@ z>$kLioBZGb!iU^n{yVH?`wy`e@XuJw{<}9NaQrvO74Sa}a`d7ALPiFT|CifE+5h;& z_CLgU?0?%q!TNh06f(AJ;>d$K_tY=TxRGXT-K~KfR>+qIby!x&u&Kc0p1GyTgES%* z;$zV@sh?fdW$B4VT;DJ;pY-BSF3PGrE>#xF7j{lAMX?%JX_&f4RQ&jSLT{wMf6p1R zXw=l|#8*^-f3wUDF4NX}-yJGx*GGC1kk^xGRKGDSQALQ@ytA}Td#c^=7?N{3rd8@Z z9FFTcT)mO1mfoY4(If8o)si!2J~}zu^x(C&_3n9({)J+v2Kt>w2G*^?Lnt~m2oHJy z+^_>q6aKPQhxRBr*c+fw)i;eGh*nstflULeVvCV6NDU)KRgB@aB=}uoODs?FCX?7c zoS(nxj$q^D)&T28KQi!*MTXho0Pr4C7nSmohF|eg-PWe~b~E!O#H6G4jj7I5uK6MG zB@TmdXV>QL@@X)-E=||w>`B7+#%BvfbyFXO=Ipt+tNe_iB&JScBCL=?C;Yafvw4^2 z@+;0g$;v(klg)4r7sqlo2SerriN9RcRZXS)H^T)Ao(IU+(cMP^I+WBGk+JJNNJ*(o zoH1B%>}NQVaK`DoYQWM46ODo17B(c>i`o{%;rmZbldc&)Phh6^4?Nm2CBAubjo>tg zp&hYj7VvNFHK=>Ral4QbJBVKI->*XIshH4C0x>|R;RXbk&a<dgRM=$P*J2S$n=CNL zkxHz^SZ!7sB<z?3nYI&Fh*S+oRL2zV@qwom47l&kb6s=-4neWl+OST&4M(eHf_^AZ zaXqcsZ7smNOGz_c*{1S;a_Q-ogX`f_FwSs_#-@m4Y<-NomL=(e@WC$FXe14malCH$ zVGvCEj1zO3VkzB`&&rF7aP5Vu_KUqaror_|5ckc`Fy9zzF#s4Z{06{7FXWRv%Wb01 z)qS>cP<?2IZ$N=bL7-;6BsF7O{f6$MqP4B<dqP~pe;^&}pHZrW^j58>w2AECGT_cc zUGLKHN+pC%8ts|TAUPRjD|tdwifhHD)<@L?!mL!Ynj>RtH4&N@a;#a)wB41RrAnoo z7jPF<JH2mD8o2;`?uo$^+7a=`TZ9gfYrtX$K&Im9$NNw_8#feMi9rhE0VKi<^LE_i z4!-VZzHvFNF#{ZKvL;^6KRK>rF9fB2B`d)3z&RRtnT68r6r?%E4cB?HGnszPD6{gL zl?SZ%^WPC}X*6D(dagN|Aa2Q?bMoU9TaI5VHr<tk!!=s*A`@*vXzg59GALQM9Y+Fh z=9}ZK;WbOwG7yFnW4$~I{S1*whG0D#%o;QFW0zYfsPt+!=*mb4;mJumjdt;m=<lJa zfF5D^>GLa0{Q0DKJ)4i^hMFjBb6DfTK7_r{BfMX=>q`UXG44ZCJbj^;`TXdUVfzJX zt``{69=~u}^Z!HLI|YfhZrQqNJ9DOO&a`dYwr$(CZQHgv)3$BnMAfc{8&P}RsC9Oo zx_BKAe;*^pOaK1fdTTqLR$Z#n?uW)G#%1A}q>(Nlt6Gu0*o8u_F93+a5z^v%Kr+5@ zXurSgukjVH*}XnOWXmcOXfe)ah+;LHZ{F*>l5M5Aak+t;Ft21w3x1QWk(BTW%*^TB zN83%Y8_ZtemkWA@f&S(y4-##FMO<BSg&D2RVyMup)UaHU!8DMj%gAp(!>s?q-G*$m zv89U>%%D0@<P**kyox26N(UMC4ZXCgh}ePBM9j7$gqAZIrx;hUan;dsM-DGKEHPx! zQcq$LEb1T`zE=f&A>~*B=%(%3&~qi?zMAr)k|S5K?tIo#%Pmm;vA5d6Au8&}YuQ<@ zx!TDMM6KpL$m@&WM)JP(5>fVojT=CiQIo(v!DU55jl`IZ2J#2>)lW4pg5(dPz_2k) zO6Z`^jyR5R_4vH)nG)}Mb5od|({a3VsLNGTrEN^WCFV<582M+(a&a1+4{pA97Kv-h z{ebd$y^<iSa96{5&!uJ9s9<-?^dAZ$1$A`fA75kYctx=F?2gv^rjUfujtk)dudeA= zo$Q0>ge8JT4l)%*eT<I=9MbaqV?dno#b`eyeWYyVU&u2yzxGpv)yp9SLI0Q~ET&D4 zF`!VK==RFV5zNh9-WzP`5W}NvEk+GX#O<Rt!zk@jG*c$Ip|PE89P}MEhW=3(7Z+N; zc-8_DVj+r`MhUOLR-2=C*J1N^PifH)c`c<ax>_R@I8?$*SZroR=5@?*Nuigeos7F^ zY>Vtrl7W^HGG2VCNj2OqFHfc3KaB#GJq7KWoI6qingc&A|58t7bb}3i@!GoL|Fr8$ ziqVPEHX$N6v7f+>y1-$NSgWbOhNMYgyXq3p{#E{{li|qir1D88eJ?o-fA7Sy&*#o9 z_X<NmK`0c6fw(924l-qu0g}tPKU2LogOg34IA&dYraLwyo25wnT3pbd=s_$e+;UYk z6_9E*7;ftNp)P}vIWvD6(R2vWKE&i{pcXenxqsLt@)C%OM}Mxt+)9I9_b6g<1vX82 zbg9(i>ayu_L18j8RJ@v@ClHwap4cBV-_bovkzowo9MuI%R!-gGx+B;%QoTPfevJPF zq-3XMIG3nvQ*D=>mEm-#6&;=a+gu^FzUIl8migfGw%)T3rNTmmqo#<?{6l&?$vB!0 z8M>{7$bIYRUV^7kA2;YZcH_0!@e<L3Hp4vzN^@`Sah|W(p?h*W&BJc~UXj7{wG{4K zLg9d_qqLKd2l1M5%vmT*tJ0y@woJjTW*n#Wx`3-hjQRTH^fy^&Y!O`qt}F+*19q0S zC*crz%23T$J_Yw9z_KK{h+Sl73zi6tH};-dzUkqg98Dm{BHn|(tQDmO2v%T*R-HZ$ zj%J_Ieu_@&3}1sPQ)kJ+NVUT9bb)c}XeD^P%z^tf6vs6htpVJQZ(aqsMG-mJV?d?u zqD#mkfHpemUWeY7?kz#Kc0g@I2`?KyCVyi3R}bM#BtUm@Ho;3>;VW|zuegAa8rh|T zzCjw`5cNJHut!r>hm=?gD)_Rh*5wv5?pT8dBLiqt_lblBCBfpgf~(CH>`X9?r@m%y z$(TOD3>pCF4|LeF2Vt$x^gkTT<Ta3rNF_o8N%Cp9rvqs&%EQ{c5CnK~p`Y#T2-98Y zGy!k71LMmZthG9o&5I%z^4vwsuDdy>i*PvQFLt1hOl}VCL|@1KfQ*74)%^X$r!@~~ zF4(4-<V?tIiDPGgA@~{d5_7p+0!(G^HgMHmcof;>fT!@i*Q!Z9UViKwPJc2>(_foQ za8V9IFw3>Y$OUumN-?7l=bnupXiCjeJk32_TFx-o|7-!OES=PdFumrTT!Q8OL?$|| z3-zaErk69R7%#*v!*iYB<7@%~&05+Rl<A%o@fL>row}r{u&ot}NxTSDB6-K%uc{b+ zO>Z6t=k_o)mvYZWm)NL`nW>bua1|zbtGh2g5p)ffk9)i<@YX7m2wFiBAhXu0M*hG8 zApFev{Z+@#{x>>yhJWtZ=^6g1W2a~Q-?)gT|A*9qm7e}TT}0FW>!IuaIP{;i@2vk* z+V_8to}mAS=NH}I(1QQtWB;FfKXx{J21ZtVMh13#2ByE^gZ7V~`Y+=U<G+y$-G9MG z|Hqk!p7Af3=ii?G4d#hb-LN?rL;N?@_~#-FHC(4Vd;kDrjvHg(v<(2Xd-^!AbPF{p zQh6ASZXLuu;>TdQreZ_2aDcxk@rR1G^LbW<Y~^t1h89M%2JJ*!jS|q$DFIDV^#P$` z<<|b-v{IQ%LBEjnRo(0DV75H`0%3R}u|NA2p?qa&Fw2NYrEgzO$cvPr;yNa3HP6E) z)XDF&`o3Q~k1MmeHcF^u=QcO%K3lEPH=_g^CeFC3@4SB)WFy#?c%x%&TyNkeNdGiM zMax8--c;5`@>Zj|r4Tg2T-sV^snPYyNh*%CD}%SH(emsGGqOw^+H21#ze3hzsG4VG zbc}4|*g%?O5c76wW180QL6>x?qMnQtJ%CCpEIhLL&wBNCwyd#$J9}blbgc@h%(g7r zkI0mQH}TRYv=MXmi7Wr!Fm|8V@ZJot?8ED{9{{iP2Dz?kws=(zX+00)iDKMpH&gHH z)BgbK0U3RYUt)Of(^Vpi?Eb7U=fWj4)T>H9N*vfxk{#u)P0pp4*n0#XDFV~Hbts9k z%uHu2UA2o;3aAM=fSa9Zj)bYX*|21O6XfO6qT0FHY{p(;#?2{B9p~htUFjqTRMV<7 zIYr5Cff=Qdwt^kfgkv^lYnphSL)8mj@eZPqxPn9OD&CDD*;X7mU6rb((6}8Q=qnll zyhX_8Mv#2X=nt0G3R;W(wDxpTtWv=$#kSpI@dR%XJuU5Lot=oS*z?v%2jUMB#9GyP z*0ThlvjmJv3s%+sis6&b!he%~K^{GMVJbACrjG;II*q|O$wYMJLvTByz2Nt!3H}yj zvtVc9d}LrF8~FJt>j@-*K=R&f@2|AxeY^S7`&Q;UHf=#C6z7TRI7P{I<H8lzyXn}t zVM|bhOD}f{t5-IMq}Pnwx^YLLL0AI-{~Bk$6qB8J6eqWF#=1Nqy{fC6WuLPkXhB7H zlN=w+{b0l?(u_+E7mWY*gtM?YqI`FpvF0_ckT)&D^W;<bi420Bryy8_hki$~YC%vC zm}^Apx4&(_3{^lwms`C<fQj)iwN3z}3Zd17wOi{6A5c|i#_>l(Z~GAjpbi${+SU8% z<d3d)Wo0caUqKLxzqjO;mUk>fO)thh40;cQmGaD?s(4N<3j}T`{V>+DpKV~#-B8{Y zIJQq8HsDH9h7Na5_Qf#<d+}nJygua+31U=u;v$ME2y$QcL;bF1FQgryT%sp|_9*jU z3GwP7hnH<EcvON&)C1uzPR?rIki-saqT=W{&TqF>Oq8rR6Br1OCJ-+N#@}Bx^v--- zzuV~P8BeejXNQc11=6JbTB;D__(7Di7k;%tdaWQw=1t+ZPu$k<!)2VE<BFZN?JSfW z0O}Q9>ne>>t;F-MX%AMz${88OTW|3>a-Rm-s$rdS#-(}eI|DqMPsYMWWy99)ac$3! zLC5x~UyK<bRoO50@P=k(b@lVEz@Zya&2unKsn}V*RzDg-upgBB5evd7`xRUI$Tb+? zqr1E!Ztk<f$h-{PO6(U%JSZ+HfK!Y|QWCenD#I44?$52I_Q`VPb3VrAG1B)|ucBeK zJEaAXrec!aBm4TE>m!2`@6(aNk>9KDhU)EN{VY1ZlK^FDH^LJKRt)K6K)jbpe{PpE zdrY1aS;+6srkgAC0tilb-eQ8*kf|!$E2|!<la?^zMO1QKc*(jyp0-)|MUnA?h@Z+s zx!imEsTV(+iqyXK5pm?rom}?7g!caWc67h=7(g|X36inpR^lJgJ0AixlA}E)`8`rp zO`U(4`Hh8NEHc>t)GSO9k@D;Q72<|MQ>m~%ajKJ;9qhCo<Y-)?yvP*YcOiG}%ne3I z-RI`W)xkHMZe~ax)w}<<`E50urj>Y=(IvOICNR{`I)LF6HWB~B%-i&;bl%Mnaw2b` zEJg4wXNrK&f)F~wY<SSU2{KJo0H%~W!sNbY#5=^4@gqSHtOD&UyOp?d?{B1VHeqpD zV<7ZK<Zw|z+V*u)$Z#)>p%N(8BRwb-+^iqS33PI1TR~^l3%R)7JIp5FRp9RRD0^Wr zm4ZAdH8#NlV!O8kf45Yq4wucVjHAQn>HK_-`Nkn&L44VQSovrcM8w$l^aP(+5J)v{ zK{p*gtzH_C<C;9w>@WWa82s-8ovqJT;rwH1H-N>p7)y^fRx-u@@g#8uX@!vDqVVRF zv#{`o+0^bB+=;x6hB|9{&#y&#|Jj?e3f^Yk8xT6l^Ho&aXE)t$Dv84Yuk85R@g?L| z*hi@eMer0Ue#?n-8cChFmG)J#y`kj*qcY&)z=<Dj*}32TC-+(|Z(^rAH(PU0aviJK z8M5AkM&B1WOACCZNu02u7#RZOdol81pwa%Is$FKXXdz&S^*8uwkJWp*G_%Gq!v2(G z0}7M<u%hxr{iP28q67yih-Q(@5w2&Yj%VDGGMu4>Np@`K7C98?o<8Q>T?7MXh5N1a zgyU%1B?k9m#n5LY(%}@Ii=s><0}Z$Fq<-?;v~f$j@PYt+gWtlxplp{y5!u<D@)3&P ziKQFaB%bIh*VBQLi})}iRf3cKGqEoU_nOKD*8!MXX!S#%(ha7yDR6w%vk<%!I`T^b zGM6=8i?ZLEM0m1Ia#pn~r(X~2RLCXSZhk;dp!{0+7yT3SIEP6^Z-5PS<b)Nb$?v2Z z+4k5QR-++VN}fT=#e()|YEHHDIympIc?z<U_?^-h^BCZQ(8aNa%5Ya_M(=X<nm%%G zd(@~f6{me<c8uI5IF{R)dtvkd?m}VNKG1`?N+8pwK=&U*pls70FK}r1OLvPx>H#UH zi`~W;iIb_QUjdFSn)8{l{keGyZ!D`q!+6Tb&)wC{bj@%j%$_<Jcw}eaT8cMYN{2A! zC=0pu*XcRok_>QOcs~o<K&NGJ2JH(trw*F>-L@UNH~<WTnGv4En&6F%%2OTSyfp>6 z`WF;fQBf_1p>ebjAxabhJz^1{-Ey95u2#Gy`4qxLO;~3{Wk64LESAZ9B=RAE>16|J zh)eh7u-cTY<l}fYOQ2xXX#1q5at^gSj`N#8VUA*-;e-klE6HcaeyQbMWxdzGT+dmx z7rfeK-sRkEa4YHo@~#A`vlTKtU?@=qnM~pn<!va6)zq9QU~n+o5w^%_ZO`BGb5Pq5 zv;|&K0CJ|+d+*K5L+~bTg{;LS>L%D2P#N{_4p*EY@JF7%XFk4n7?bN`c_IM?L9WCO z(LTb4&56?}$altF;Oz9phiE0vdgG;e+{@wSK#_RzU$mDL35ZK<(FBFjhWi(cP%lyG zrPk*1Zk5IQej#zN!x7fm=b)VUrMXrK+<gXTIfv%dKF$g$D&V4Z5X@k*QQ|C3#Qnxm zB-HX=nZj1Drwu#PDLdSU6ORzWx7l8+pWg6e{&b-soa{l!++i?4Bt)6`J`h?2T2c?P zA9nClT#q|O0+bqX=u-)!U(~`iZ{@<7M6*(zlZb<z?R9jNY!2qt6E7xH-v@+bv5MXl zbPNqy#TX;*y9u5Wpw&uhFUm<&!~}~XlBa673zy(<3*mNiP-%eU#R!w0FlLV-8WK?W zbnVL%Mg<9GsB$*~bqTYCKm%Cxf%yIlN~34`7b)$ZHp^M*|Le{2{{XRnJ%Rckb^m8U z;(t~xL;qL1s7&lEe}^iPRJR;9SWtUb6!jbo>ogfa_yUSHuB0wkwLP=g!k5m38yW>8 zouq1oDu|6mGY?5T>Ss3|fE605j7&utf%t*IPhLLYVoDNEN+rnYyVHsJQz8(29`)vh zPO0nS(|(iA#&S}b;CRCdvsRML`gSYq8?r(M(oN}2TkS6tqArAvd%9n~*&~c=%7WHU zaqmo!a6iBDB$G&M<VT%U%3-8wwadQM8OiUrcz9}_d^vi+L5)_`&GQ>rgJDYR77$XB z3Ja+4Q_%WXhdgIVk(m_}ZY7HcFY}iL*Q>ljrI`OoNz5Ea>>x5Y!&u9J)WRvH=+HOh z!KhT=fXgu$Hud>E)bG)4V!iThu!lD6e?sP;per6r9kx39$X8&Esg@G+-6&&(Jwol^ zp$TON!q#Y3`O)wTJ_pZVJNYD&Z}Ls6DMw;YIJ}gyJ?n(=h5X&#cDx2yR<!K$wEm9C zw2xXBPSfPUYbn`Hjc{0SX~!n=!%%tagjxZdMf{PR0W3A4jQvX5cq@|QhTnN_Pi0Oe zv4zsF2!D%URa^a~uB;rGU%}ftkZuXA0ND(5Pk&E8B?c3V=eWrnyqM=G@~G=m{xOZM z6}KbQX{^Yu=O8%poQQ)qn3;}ztr0p=zuA$%n%H_CzX65WgH9jYjAkEwz(RXhDGfG) zg8O(NmvWMUi!s?}tnitcw@3#a{q3ZuiH-$|j<E$EqVdkJzaIsqPOmpXy{#}G*HRGo zbdi^v{l4+CFLV1U3l{_D)XcOI^PWLMTPNZi3~3<n{91U)-bU^)3QAxO7Z|N%EzWF@ z9N!V>o<xK<P|GaEI{Brz&3qkH>;S*th-y#88IT<oaDKPRrKjdRHemY@_f_J#{WK#P znUxB7o*0D(#XT#ky$~Fp)I?F!Sd@LIntm72hzi%t_&Xf_xJcNzq-z%j0UGIG3DOH- z<;0nw#FVaZNmY@yzsu+D9M(2V)qCyuLFO>YAfl2fB^3MFIt&uh98#?b6VQ38L<f6w z+u<Br;L5CBjcy9t1qTfiKpJ9jCHhX@Nc2LPWg<#6JsV9iA#ohs^0qj6koQv6W?!-X zH&+$J_X(>opvbvCuZq_3H#|RGIeK(r%+di7@FU@?GRQ0ED=M1^>YQ<6kl^P&Al6<L zNF_QE(A&asW6wPTP9{h0Lg49G01_2<JR{rY#0a#pwi9+fyo2o1DFj!SV@J#gjLhq6 zpP*i^zHB{-=j9yg)HXfI5TRZBSObrn!CF(8UzJMWlJIzeHr(^lz;q|BUySa|y@pn5 zfw~?<Qx&;qKJEk|y4wxBUXO&-?j`v|+!<lT48j|{*v$(b2!jET5)?EwAyyqBAwUrH zBAJfY<kYDfD>TE!WgvJ&B48a3wy_ADV1Uqp4y)YO&##zna362%t0DYNE~FrY8?Kxf z&`D+TV`CkBh|kiZiWLN<Io5dKp%cs7NX-rEiXPWQ0WKH@iwWFiD2oMr3&hCo)UAdr zW!4}DYWR4w{^HJCy69msPGN!y4HO8yPoQ3|CvJzw7p+?ShG)&19YqWc>-7-s(}=YJ z_W*<-Fsg9Aq2&=lkhk&se)Az|I0X<FD1UwzHy;Z&JvkYPbm^PCsj=atp?e2VJ+hh1 zifgxnZ?V8<(ukIEW8$YVWnjsUKnrHI>fM_P6NJ4caHb`6>lMYrPx(V!urfV|-V=3h zDrkGf<1dSw9D^udAn%cpHrU+J7#l|krc-4h=`2CW&}l(YzD6K9bpyyj`xQ$un#gzj zXTC@gGJ%N0PbNEMD6J(}oY}mAgBVlz2VB-Xj)C%k164;_7aABfG{!lKaa&2bK|i8A z&`u9ef(R24H`s~*Jk(W(_)t$NcmVkI!0V6}tnt+&Mh}S??&SpGlPA|_Ah&jfJhuCX zt>uIW>Q^x7*g5p|E!5R`X4$lc<U*?ha;!LXWpJ&bK@2*AWPFNzX?KZE4n<&6#!Uo4 zOxOF9W0_AWhbpVD&JecV3g0(W-7_I;)`v_W`&ZCaV1Lt=cZ`ixu);JkC*)^v%&=s! zFF4F>rGWX~T}t~*S1kPf%3scspVxDPB~;FG&tn~7N?7j^a<<e?u)evvo+(Hpr7c=s zJ#6gRKJKp17rZ5pd(b8Bq_V!9ZLgHSeGgK}y56(ddbvDlcnT4?Fd6138~wxXd=M=d zb)cvNuF<GLsIqPMq%VNeG3zq365<lqaND9y0;O6E@b~A~Hr;7D7;H^jzpKh4p~N4} zH6^d<_FN{vgXVY<6!ldwy14F?QM9-<`6nrA^1I17@1jEhp}y-s>DD$yj!tT2nG1GL zwTpA?aGk*7I>q=TMV(`MO*RFS#{$)!@*cV>z~?LbkQrP2-c4A<n4ZKGSv9|$nQw_2 zG(+en(?G^Cu)cb2^;e94<T^MNyR$1c8A8es?@Yl?1^bp@qrab44_s}$_XrZcg3hb8 z54g6cg|=Y)a1Orgx?BvHDDsCHY&}Ckh!E`8_*mP(<~~sTWZ%BPG;A{7y4>+cd@;Aj zO#CB)LKLl;p4l^Bds0>7hU>Z7+1PWg`$O13;3RjUT1fy|1;+(6Uco4N#SgYP6EWlG z2z*8TssWwq52z9Qhbs)rP5^6-5c?xp_epyDU@$bs;Wj*I{`|`Pkk(lc@W)R@6jc*H zmEMJw6Uqf%8B!O$($p(dP>YLcfsFyouJ7|yX}vISIUU{sRics(P>251(z)x%Qk_2p zHu{kTmIP?h=$XwUL+#=q=S^+|6xyztaQWirF%(CExeLr2KkJ-S1=`KpGkxDb-50t` zHQl$(k|%K1*(l`#rY>Su6zWNI?eeFCC!Rap7lQ7~P4(K(JnPlb4KQW`_KIMN1CZ_E z!IFBD(Jhkdaz21KK!nbr+k2ZVG`!oNP6q}hKl!Kta4HC3y+%FeNuK&s?1s&0c87#j znwc|dq-pP&j=c87rS&kE%+y8M+H0+Ht@fh!uGog-@if0jO$l2B&f18z$hL<Hou-Nc zmqdVvrW`FSF(-^(ERBE#Ft^ns9_y_*GWwP2r9kkh*6{<#VHXIrcD3iu+-OhcAm6m~ zwc4Q<nyMg<etp+5sI4o29Gl#^le!hb)uc5)*K}DM6C(M&+$g!>sH5;l&NWsWiULY2 z&FVGTljN;%*Jp#`z!G3e?q**+O^!<Z{8a{ThvJYk+KkJ2=fn}0R&}sCK~!$uRpZ@r zDX25Beq80$6$t}n=3>8oo};d8_vfY$`gy5f{n^l7e6XT4{}A>>@MomGtB?u6vY=Vf zZxb^wz%KH`5+DTESpTn@@4vHP`WMYN!#_o=urmB_M69sVv;D`2<UdEO(EsbH+y6N9 zueJINjDOpHhmnO9pNaV&c1=tyf5WcnA0P35pzgmr@6a=`{CoNTx-7$gD`DmT10cfi zS8*%s?0+kZut{|-W@GG^_loMGB;9adf%>rbE}LJgKN(|q;5An}I53O41-(ilW`aYj z0n9N`0{qNYgocJaZU7%VvE=Y%XSSnkcZUv_Zz^SBjcOzpHT19kSet#RHHIl9XYXFO zZ;vS@?)lt!%nO^l&rYhs>k(lT5qS{LbK#;IJk<3x;<j(jRVFJ&IB6S6x3hQH8ydTt z1RF-LgTn9c>B<#KNFwKEXXj3f3k!>n-)f}Bn5gfqdg&tS=oh>%xm#b=SV_?V#<-X` z#{IG@JG9$6w6~fen+$q8>vRpfJ|!un@QRgSt!gwn`gxF?#`ASk<S0FXatnlThKecZ zR|FDv3qoh|PWEX*NP1H(33SY)IlxRKbI)`V)qAfsB|di1?{tsNmM(!<%1g}WTQ!yR zGw}gw+Ejx<mVB(}G8w}9GB){7YE@*y{mVPGO2rwJVoyq2Du!`E#V-9w*h?0h)_d$L z8+zsgQZIu{6^LDsRwx><Jl01k+|c-3Zt2_%!f9)#<aK6nQM{j0(w42N&P(Nb>HQ}* z*%qC%Uu2>;sreKW_oq)&o;nf!B3C0Vor+4nEPEpz>m0&hDJ<~NpOmjQuu1Y9Wo)xI zZK0_Cw{^ySKahdaPETRl3FgXs4mG0yiugO~Pgq(sk6<c_TfDmse-2tNInewXZ5cs; zi*h}dOYWb@lRtgSsca>?R}G@+-^y)V%ofi1b9}Go@G2`k)!oL;V+QsiaCk=Lt=78U z-3oO<PPLdfudcOOX;`n={!B~)cuhP?-!9Z9+>>=9^FuN0aPip36T@K=gnoxgIH=$* z!+GTGf(>Nxn_3$WyM_hBb2xWcufuMUvrx9raKaq>w5Bh%V3NCd48qDPW}{FPES0V& zIaZLM>3)}e=MitAN|@G<vY(_`U;6j+=dhy*#~)>>n_zJw%TnJ3a?-N*iZPMBd5cTx zj$0-0+mqDGr_YrClIhgp6d!tp)^+_=Ox#~oyxY@(Q}Le2CB@@yy@LO<Cnz-@7`@Pu zfneEiB%+F&$Cp1kb%2;cO5(|XD)WRB$5-WThk)Vq?u1-M6DNYF2Mvo%`+y9P;e`S0 z&@}4pBM2@9Ji-FOP$~F?+k)D$aZSo!?Ro*zTufHe7H8qWQ#Dd$h>El&zgdpE<lU^= z+AuLQCI~G|%S3D_m+6u)oWC9gm62WoWLs*2EVE~otRHilov-478~%`m6HpQa51+e9 z7jiy9pUL(#OU0URcx#Q0hzW54?0iqm8FHsvapU!PpT2N9y*X)42-{H1q!P9(u;WjW zNr>W43VdnUd=6eNAj-M-hWjp{!AU<XzxCiwN^I3tJfKhSNKVQYdImwKeELk6FdWB? zYAK1HVb0@N#hQK`Y-=Wxt*95k*d3z5C(0y2sy2cQ<B?@bwUtH<mPO3Mb1P>Q>0aQo zXiJ%)c`eGS?1ncmx4vJrU(YT(4Z!=hq>pjJ5*5oMtVZi~{GgOj7#9z#KtH4(AMMAP zX9L;?TEiy7_lpm0pqGn5W*~BqkoG|kZ(NAfoeq|Bbe|6!BqTz?5wM`od0)B{NlVt! zFFn`W9w~!*yeyU+tb7vYP78l~&W(}o^DP3&&jwqG*95Xo=ykF<v<!iv2*iyL&_RwY z9G5QS2|#uT3=4(fur<v7Iy<a`H1fcG#51lmoqOJ8addjlCuEt(>_t<FXUU`yttsFQ ziT9)3Ix7JzPZq#8S=dL&!R1?MpNu$N4U|pMQ*TNQzJlca+KnfGIR1olj4mt&ARer6 z#-L2nqaM=FW(^GRcc@h#(gqm0j|<=}@^6CQ>N#PSr6e7GBO}%5aX3b9!VR%^kb=l4 z2tUJK5mMQw?F3m4QOa_{LcQcTc_p6f%hF3kcR{I6Yy9)ZK6(%L^!tTBjLQcwa*A4g z?}}waDl+s|i44@UQiqF=c@HjJsI8hkga-%Cm~S4;*)@WoXYVrG7Zz(f6Fo7t2Rnz9 z7h7AFJ^aP~E7QMpU+#enU~6Mbtw4qZqx-recmzoZ28^}(2*_JU1^2=-dCq^5<L0Ae z7|DVjciP7?+U4Puf{26ILXkn2BlH+&6hi#!iIfMht0Ab%L)AhM3eBNkC}7?L-*Ypk zE=<h4MeAlCkq`rR+48C_KR+{n4CnZP4A^9IW><`2ghSeQVZfV4F}9Is)DY8wXMmD! zU|0e$xeFv-^cZFPL%vABS{mk700rz$encJfFW>6yfAM%WGCSe<m<WaPWmyaDLkh^U z2RBn?XLDV>FrT$Ug*)*q!dUFwfN{yy(|O=b84WyEs#K|aEaL=LWRw{H&H*K-g!STH zGTK~eG|GF>&Z5xlYs!vAmG|&t&mv5uJKBzHf7!)|tqFBWdx}G(`5ye>?N+vZdws!l zR02BDYYlWL7jN`3zAwaYHFqDvING$8cc>X_CC7U6OEBLB!SAq9F!Wq0$CA!vFKh-P z&FB8^BUs+yE~Zly@Spu`m*bz?QC=z2UWtnV2_5Mm<3p#RO5Li*cbqtE;N;cSTjYW_ z^gNECFzFg<<b3KNq=R=dIjE|P$iNuM_b_9H&FVR9_xF!`Kdyi*x3n_mDs4!|1PS|N zR8)MoaQAaR^J}`hH$mc!Ut59`l^O6nD^p5@N;u-nf#8J&{^9VknfyU0^-V{PnclM| ze2no>bAa#=$J5{w-aGC{-^Jkb!aFW-+EI7H2)AYa6+f)RLz)Z&o&OxqLG()8A(}!r z?XD-4_tpxcJt%{K=TjVfCFBmnHuQPGxsukHRmLg}Ej6%xPS_rZa+fOw!%*EG7g}f^ zx1YZD_I-v*6WSR3oX7Nb3{Bjr9^^PAvrqBVQ`QLtdAiNNu`<IWO|UN6h}by4Pd;K0 zO8iMjXArnhEN~(ha^cl3jsqKVK}-%1>K6$8^Bp4>U_mo?f+ApgEr)aDGSoYvp1x!; zVA-MrgH>Mp!eCn4)}-_iTE#oECKl^b8xJ<YpUMM7J91bi(#7K{TKNXSLVgoi0<E1* zEi=(XM9-;CnVDkJ4ENo14>e?+jf~m|$K`oIhr{uFN@g4FEfuCG)+$BCKjo|0dGydU zNePI>C{h$;%W+70Lo$LJdtzXx!RNHuiQHmT6b2~0tNq|>F4H#!8mu0^ht)`-#g0Qz zPT*vyRY`HBj%T+*wKr-soXXLmud_#OiK|EvG>NM=FQY);LhCD;I5_%PxHhE?xh6jq zJ9GOX?hU@XMZ{(N90@<jaleCJPCvqWc<<t)q}aAs%6yy~L~+f=6c}oJXV-t|T6isZ zKKmcd*E<Ne;Kg54T2ePfhsI07xPYhfq7B%iyzQwmC<J%9;>a#Tq8eI;st8QlglK!; zlCO9%PDmqrIBK^+A+ul9Mj(E;RbDotJx3@}XKCZ+VU=ML+_?g;7il?JFXaPcLbv=x z2`gpWAo<6)nC^c>A*C_ENc!>ubIRPUFF-}6X~nR>==>ZHV?kOMc&Eh?C*H&|B~khB zCe}brOb^tioaH{Xke3DtnEAY_zqQ@ox|v{r?LW7A_sPW+!Hff(;CUoMlFQk^dDP<C zMrc-DKpB4x|7?B4t3?KQpC64DOJDQ6<q+jfzbX_5b1sDRKdO!l25z;<yz6A|%%6zd z6C8#V?4kJ-Qd9I8heNr*rE=nJyT=1I*~uKTVjx}(=M7nVt_ZQNDZ%<34F5<ADPd2~ zR;TWkFphddSl15>3)>&KVqqL?vtL%5odamvXz+?dg%U$k#Bc^GoXjSrta;vTteSEm z!rKUi<b2r8(;tj4hj|5c1A=iG)7^8=KZsdB*aNak{H}N$S)oVm>6sR*e%<U@d)jW) zucZi}O5Ut1M|*by&DJk$rqk8Y2Ea0ozF+3%NDsE4_7@KeF#pX(9bq6cYFC=D!8i?^ ziaCLaN`fU8-869WO=pb7Lw@RcN3MNlI$)BVU1!_P@d|WZI0X0?=*jSRVtf7yJsJNQ zJ(>RQ+~;49xBo}o|DP>JGcf(7fQ<ET3dkHbM3B5sRHfb^?S#++IbEpWTSz>Aak>!B zudPS4C?L=g@5KQC`6V>x#?#8|*b&gEw!HF96_<K;$mU+VH|un{6(*}(OcT1y3$@=C z!t;hFr*g>WEr$+Au4otC$Eav89WCt-ZzQX1*z9rCWDewb)fdUiR^y@eYSdmCpMosU zEX$Y~KQlC7zF*q&)Wg7P6nlG?YhMlOkw~u99qGwcWkfnZ`>yc%^%G!Kag)Uqpipb* z77%a{3u>|OTXKT^i8HEMhVCjR-Du7wpLNudeUmRr!EAA_V2+&LhhJ5$0G$f4D+hR{ z=>|ys{?by8JbP{<5YJ|l1K++3B(dPl+!-|I%@x0`SrvWx4ZJ8Tp{oxA)ULn*;@>Mr z9hF7iPrmz0+xNCP)uNre4SqB2wC^3V>z8K9*5VaGr9<JjvI@5+jWZBW8qXYPKK%1o zyG_=VR_k_tZ?ka{8<)XFpQ(of>kzE5Pw<?v3&@{q0uyCgLI(mqf2?zHQe*BItbJ*@ zbRgvZeVD3XKO(aRnJ4&W0RRvgi>J<xxYx-TpVX)Obkic)&|N3ith`<K0<tj0WySJN z{=xc2NQ2;WO8{}Baj%8-oDk2I7ZR(m>VapzUU^R304jdIXA`<)jmx~^6HX2&1j(3E zK&e2)akC(;XK>EC-`2Ap#ze=u8#M=-6=ssRxwcz^k9`%-cy$m9+4aB!J@Dt-s|b!# zS>}{G+9^hM)C=shsm`FI?#pIoAeO%-EZY#zlapf#z;u>RjpdOCIxtY?*emaSor0{K zRy&w!F`aX-#@`F0D?{M9|MXEw3j%#4M03{%JuNx;4hQ03O=WU=zMG`h<|c+ZbGflW zt`34P+*pCwYCBN^|Fj|K7B+;CW^#wj4|cw)&<igZu}hA-#StlX9OMLf3>A*_JwoLP zv`J>IN}He@#<WR-x;ooWL5{nbqR~6PK&<}}|FYpTS~2am;#fsFt#CE6hV6t)10c8~ zB@-$=kM^^z1MCm|5iAilED5%Pthi_Z&Z#&fhcHam&-gPv83D^7?hXrH)UPToE2O`L zZYSLf)K<mo%XribH;OK-TkMsi?7}BQA2F}ss8MmfIwufV23_?<6a}!57LgRjXMf%( z_83=+xh0M?278Hax8^R<L8PYuC}jz}WKhNp=Nx<Id<uegiuZ{YJMc}ORY!M66#zJM z8^;PIs0EsXQx7ULJO-9@`cjg7_Q3!gIqAPJMuMFID+nFN@pSMfR-f2QRw|q@^b&DP z#ikMy=JpIKZr_hq=O&c!k|@tjMv9!Z!PpcR+%~+&F|_y~yST;FNt3I-;v?P&=vIGW zOd-1dp}GY`iT6x`+(NJ%&<-miOO`^?#9I1i<Wb753c3aru%DoHPi7d(e~GK@wl15A ze;>>qfmhj~AT1fF5CfEqOelL^PpD5Z?Fa>gYhAQU{5I~ad=q<vzvevtJthQ6-itj6 zn0}9mh|Fd#JSh-oU{ro6cLmE>f~_za*gHm7=uXh<cRD0R8rQBhI0iipK;FGoFKbl( zYB+rgGB<1ypL#ec3Q|93BLNB`y9bD#(vAPS-xGhxk+UQqWN3O!LqmCGK~+l{TQ_x+ zl)46-;D*VOHUimlHo**@6%1kh-OOs5LP^7cf1V>J;4lW_xevTBwtHZny*{`ASiKUN z7FPfU8<@e%m={+aZ;M+IM8JjKg&M15LZGIe0&|`9?2uFf!*n1NszI0vAL_6h9rVf) z5-D=zEGrgf5@YhrT$W5U+4I&(G?}!gVdojypH-U)uGY+jbw%l8<nCg;qK9pT*ly#r zm~P{tZj#L_Fi8gddRs}y*gGG0kOWUl$_0TOv~x60@%Am(`1;sm&Fs<};rlv#;+QuK zF`sV;VZi*Cu+3bt^IsTGq~0#61Q*EU-SqUGqBbab;77{Mg+ya%iyfhGenb9N_u1IG zE{d=(Cf$X&7_#UuerYj?igKC^ZI1*Ol2Z+$dAL2?kC+1BjRlv%J4Jr=+-|GsP(}pR zT*NXq54d#ElNF5Bc77DcTYe}A3a$c3dfQIr<k7?r`TI7b<n?sRaNhwO5x~0+Jm$-! zsz-RDjMiATB4oM7)wnjOA>VRp+^P`x#mgBYI3)h%VZEOF_F;QBdOi}`7(=J=V7oFJ zgOaEv^kVeHO-ErXOG2H;lX48E`c9#2P>~3X{D}4RDWV-Tqy-vZpWg=LOKV#?E&ej! zt4Ye?&Z5T3^vq(C^UmkMtkR<?k`~4~s#qm|96YVwtTPQlWr%rg;Q@|?mrW}wW0mxg zs91GJu_Z|u&dwU84m1r_?)J@|(=_$1fosMOcd!q8_kB;DPkk+oKA)YkI}_5q`hRYW zehgjT_XBIF!WZ1Xioa)p@B~xa9*M}r{WoTi4ZT)6>Twwgr(7eF`7$Bel2{_nH`Fta zH0J{WH{0w&=ne`FgfF+pM#}N95(Q=oqV}7i2|Z;dli-65{MCJqKVBaJZ-1UfHNY9O zLKc=toRz#^)(*STKLM=$^JYRrOTc^HKS*IMp1$4mjKpV$5C%ptayiL_M$UkP85bKz zr^crG=j!nH{tQ;{^FHEwqYzObP8Z<WW7dKC=peJ+#7#FFAH(+o$9j-jp8v??;_Xp1 zHRsOc!J5m4O}zoGKb)e($hGYge}Z9(a-Xi^v%ORjBT;BXloXfk-;sUWMl@oxHxsxh z@J8gG4h-baRQT(ZW^(ES-4vHPzB5;rTdyQg2jdPU1O@$8Pcfc0Cl)jkOw5k?Ng<d) z!UjqOP?!aff^FF(opf9PXonVFfkiTF!COBF3-k~H)a^yijN)`~E8IUIkD;JX1vv%> zkeNyg(1AtFtIjsaK|f#l<Ys4bCh&kUh63Qh*?}$w_HGMj?M%hpi3sod)ecxzw*sJM z2sGZVnZZv7j_Lr_jIU-LuE4Q$HJ0?=MmyG%9~3w6@a^hlEHbVp&Rx(Fr@1_~2Zz*E zcK|pG`z!eTWX5Hjc&s_bv_YrB3IYe#yB?hx7O`1@I2Nl%ZzWd{Et7E7oROj`^u$uI zpf5Hbdo7OV)b}Kj{2&X6^GGKSlOKNd7p)JU-Ylich)X(fPeVtJNT`lCe9;K0s?0X# zAue{G&-#Qw>vHwi?A~;FHhF}>wZBf6TvK5c-6Oj5dMv?k0w3JxmYn3M%#lxd5kL4_ zaSO9cH?@i(wkGOeo}Z`O$veAQfGQ5&$}&8T+SXl-;7uB>kjkoWnk+1e*Rqo(cjtFq zM@Rl24Q*dFUnM+qJ4bitMul0mGuJ3Z2xTXaX4BT?r-+uWce{KYUyW+>+q==q%!^4) zO>RTSo=hpP=gG+zrnfVTVjG(55T^MY_}T^NCo(*jukWu7UR!I_Ub#fJjx6a>1a?+c ztGCij_}=dB_rAi+)Qif=o$b3_-bw<>NwUjOfpMLDi*gOz{F6Czrqzrb9ZaUazAnbt zE^8>ZbQjeXrf$|TP&+W-W=F~g(7t{`M}LRHL+sVB?(>a8kYN?yYD}cvK9e9w5siR0 zka>)N(qg6Hu0;n3@T4TZcDw=@lkAY39Ne;Fz~?srX$jPTzk&(oe-S4Bc{!iqzh2J& zzvfsBEdP0a#q{4G43_^}&!>NLefrzGF${G0Ol)lU|CU3_#LoVACQ1MERssL#(dIAw z02t}%|5l<xm+FSiAq$fCiz<Q-A*)SvO;S@NR}?J<o8#Tk7BUDrIJCNftK~cmM#6dw zBFG2)+kQ24xy_T-eS;c$U4}xv8g&kbvs(|F`<);mP`z4CkxmXI-uJ0!k#L$P2WsTi zcx0qbWJ76e&*|jx;c%rpzRFkl&07yV%TYKjsw^1;M3aUWP%hv{R2M$1V_H+2(FTmQ z>7(L7RP6oe<O4LKXHOb$T7%BAG5w--p^1HtTl!~g21(B|;aiP2(}w3l_?&9vB6Lyh zQf(xjYz-<|n+l&k=q@h|H*e5wa~f!QYES_q*<_;QX4!F`!@9`tIgW9L%{?E}Zy!eA zdlf5>rc}#@0z4*GSUZZW>o<P%y{Xvy{o{Ly=>e{g(^?etN!>;2TZOlT1D{GS+W4ED zJo%DtIWWXegr;;f-XT!}6ZRSwZ3;08ky%-w%t6gU19qo64NA+0GD6yvW+?r|DkUg* z`7)tvC4ieymEl{2&wf6XoRnxx--c8m!(|72%}1T^o!h%j#k_VjMwL@=5+eWc^<Xpl zy*K+DhcH?yHt|(!<%2s^tb7wpE!*ijn@Sy&Oz98ekY+^d(g295zLHVE-)M)sj_`$j z@LFI9d8ax|!>B9>f>U&s6et{`uEw2f)|uPg<Y3=RwHsR{NG~DCyp2?SC4#(@TO9H> zEB&@jGNk~z7)HeXmzNx3&LL~SK^YQz_dt#*W2p1FlJ@Xm>lu;X{=P}KG(o@;1aTy! z>#%y@Jg<#05x6>}w^qBa3LKbP(LZQVrQDVHVS8tH={mIiz5oPO?1b_aR#Bk$eDTbb ze%S1>T{!)kdV~D81MqrmkZIj3pD}@42f^;M7xn>u6(u)lLG1k_*zR9rEL{7aA4zWj z6-!9M*9^J%*YpohsDMf1q0#ldQj93T-%|wM5N|DrvSI#nF|1hf7?%1d`|TUc(fyAI z6-cx(h1?YZh>d`>=G0<1A?q?+sF^ryW{^V9i~ua9zv^}YkfTlMhrbE({Njc<C-1oj zwOE1JO(wbk-6jPPPkKrl<Fy4Qe-DwfI=v1thKCI4e%;^G*nWOtQR;pc7#5*6z(3F` zS)Y>WFldLIVKm~dqv(n6|5iLhpGY9DvqCxLZY=fKToz@=vy&l){un|oG##APpKysQ z<&x-C+Gc?;2`_}eua?XIP?z^X@PE_(6F|c40vyXTcaX2Z!sfvq4H~nHfSlzD5`3T` z|3XQyJFj8~ST%yt@NNQ}>nBcir?gP3PZLtQ>;Ut)KplQSR2J*`WIcfwG2?(S#j5Qq z(ljQgxvb5*y5md>_B)6<e@h1OA$L0rmvWGe4A#4)B}_Yt^syU%W$zonksEA(-pAGs z?iSL>5sX^p8VsNP)frvEHhQ9^{5hV$)LHuu22pI^aK=yDNutq*<u?woCqOa4NsR~z zfVmFfK9Q<jafW{#KubW#FG)SXCP0IIB(qINh6N6-N;#xFeN{zPvDn2tEV_DV=H-WF zX~1Lr(qLzBDRHn<R7@yZEdq1}8N6wr06v~(K_iIg0Ji=^0>^vkk3ER9-1>u}Rh1Fc zrAqVo^y@MRDxaQ~=a%Ff=Frp<eK&xwF@D}@xcuDMQ91JIIPl*!-|W$Eaz?}QK|>-O z7jeW@dgdy5G&!_pd{Q5Gs(0McLwKdEt*NT5Os_9bM`yV|>#fk$&Jpzzvk!5?Xg~O+ zpcq8&SXM?%t8n|CazL=rn6;NMN#L-@TI8R`ZHcZCs`#ePjCSbSAB%zDn2)>DjJ?Q> zMSaxAgM!L++3ks?D>uh1+re!<t!;>`Onur@!xWvbF&prZ<AKp$Nu{p$9x|jSH#0-S zp>F|TthTi_wX`=Vvpm0ct^~Qh-bfg~Lo3_c65E%VA_@U8PcUR(FFxO=GgW=J$`vtl zu1sYYuAg~61dLik6x%mo92p^a+I8NL<^?eF(Wn@^7^3TukjD0#-H+Wx(}#%$S8_n7 zRheDF-tT<z>mF>OFTWVTxzLMcw1E}md;OZg>Kghe#Ozg6bPWocH=n|che85_0ST+% zh~Xgo&5XJ)%fjLz*nEXJ=>X0pthSC59NvuYa7NnE+DLKr3+7G?rVowc{D968($aCw zX+t*v=5+8`f#(>J1N0hT4-G%C9Lkyoe+BcyL<pTA1|q@h>6&EDb})wJQco|`Hk~BP zr!-I-st<5nPHq<KHXiN7EqyN%t_Tb*th<n&`o=UwY|YKEEffpX*tAMbY-Ff02*q%2 zhu;MA_2|ZP1RAex#m7LvH<4sWDtI)KKk%`T_?80Vhj~OwxULUCcX3X;sU{DQ8m4do zscX8o3>H=tZS5;l20B($rNU+K+QPldmwa7n8tJl<{6c#Tlixy}`U>eRCdU=q<+8Ha z|3NDFldxa-!UDu%Q4Z=VXs_$oS{7=`hPx~=laoF=;+&M@ZP)Jx3r&uWB#xu4X;Iuh zPKd^JA6D_J%TaNaLWt`aK-Oxw5zD787O2JlK8e=)wI^U_cQ>Bf@3pj*do8=4l@f+Y zcOkhCJCN)vMWWk`BB6vGrBYBDUhEJ=&QC!o=ZASL3~>WcUlX~-{w2sdrAkXzP<01b zFx&?=qj<mdMTSSC7`0x2Q^n$}Y|%gm^(Z%ls!(vbACy44u~vDyVYg!KQ6*FA1#_?G zQU6IUbW}RXjvW}}U7W+jDe08M^kxNEm*yg8s9mwxDL`|GcH26>j@2%T9>?jL=Qa<+ z-ftauQg8Q6&ByIPSnW{Fo2?A%-sH8IoOH4wF~tp;UpD2_VLH-zG|k^r0C(hv?3}C3 z`fOF+w0jN0_@>3Jl3A`lUAczfYI@78Ddx$(9qb_7=vhc5>-Qy>TvCt>r=LzJJ3zJG z!_ydT-n_@2TIM$OFC_TQusm7*P{LT|4~;u-qYPp0;x-C^Gm$}N)<#w#++0~<$9A3` zT#>Lo?;Y_Gj>QAxUzIdTZpKH)`)gMGg;V!lP`bRcBJeG?v*jp`XEths>pcjxJGzl? zfjG%yPH_Ro+DJDM#**C-L*pswyva5O#=bDZ-DljTgJG`=f;^O`bNma2R7Tavcsn9~ zmvG@@4U7}S8Jmqlk9^QQ#uC^OlR!pq#Ib&q(QVs>b0iEi+JyR&xp-81BP)OI&U+Ls zLJ6c)gR%iEaj45iL9-3aZg|rj>eNGFj)%YrRIu>z5IlaoP^PItIzWZ6b>~Rs^C^#| z@|qkgUdu?y)@~VB?h>f6Efa+IM!4$;hk>_f_(zq<eE>&`_io$0#Kk)LtG^a+SY&hy zh?5;neB?qM+$^yz|B!M1B(%rdcHag`m1B@&yp3lFE~`NnfFY2iu>8ht2wG(E`w+M4 z%*hti(SAr<<HB~%_PXTgF)o{c(b5o;vQyEV<Ap)h$Xm;=N<<*8K*AqIVgA67MI2<L z(xWCe+bNn;ua;ZlJ2<4pkqK2=>=U|DSpBua$K`)mPUSMhzdDFx4ud}BIN_^scjnfX zzob!Ua8Yk+x|nE!U_OpP87F68(M-WJJ9pe0tU75kK!?!vLgfV#uG9<(>BR@%{Qzv9 znIb`44pFv$!`TQAj-V_Xk38DBy_KFF{3gGXdnznkLFvR)fAtQbTjA>YCvv8&`)V4` z_zV?Jlvnd}^`d0C*l>DNif_WIm%e2d9W!4|v$`4Xc!jUe9+89FM$c^}f>HXA^kqtW z0r=ZGj{F@yTJBptlB#RHKhdE|yAB-znty(z%hBF$HyHxskTJOc3fe`hgtOrRO`cW~ zRw@4vT3I*<+zGNv>nk4}{(3mV<AF^Y;5lRU^#h9EDGaE*qqrQsj+6It$M6!EeCm^g zB2rti!sn12$8c7$n61_Td7Z|RuN;~9#H;w+8?X3QItDqm(C$sT=HapRY5(W1rqrsB zIkk=y*@*+z34(T13PWxRZw&nX%TS!(P0?`JoD?zaZ((!bS4{lp)rs*ymtbxw8Td?@ z={-%sT8S~lr(Ko&<R<V5?zi9QO3+<iK|XoPf3V3=oHCjZx}4N#gv-Q)9Zk#zOOd~U zh#6N5l#~B><IUFOPX$`e1TN36(Q+e=xst$&Yigluf@2=c*t^VL2nP@yUJ08I=UY8? zdB1{Qc)r#D6>R>Cz7mZ8EShBeuSJvp!IjMaI#)9Ow}gWK@8BKdUuXmA8QAIm4&D{1 zNZW3(A#{JJ-jV}RsU!(WaJ0x^7EP0CYj#E!sDVUCkN&orj4MO^e&G~^`^pFNR6p&5 zkI!PY-G+I~&*}OgPd9q9Pzb9qg7m6MOa_&t%6C+`A-yT-Hi_K+l2+?omEGQ&Ch@!? z3l~d(TBatgzbL8tW`9GKcCQk`t!_u5v~a5`47||Dq9r;2!%4)5H6~<4pE^@TPPv4! z+0eDQc;kH{1E}KCOOFt^fI?Veg%F|yC%!`{Is~<%+05DS2+)xT)ixoKRE#g8UdR|m zN-3^lOk6qyo{#@npo;h8&;oxcYd`><w=V(o{@txy2XC2m<}rPMZH3jcYfsuxc4SZ4 zhk*&FJ=$-9njbkA^hVT?E)r$ATcb_y$q|aZa_C0bH1jlWU+3k(m67hVy53&j_3iTv zRzP6vQ$kq|;gq0?%VeqBlNoFb0DGX%M%W_Q$|@N`_i%c|HXt8S;6(fdb)fkO1!1?6 zy_Q*1Z}PT=y(JX3A8wkB@(z>^<s>0J<|1etpG56JKL(-T1WG*P5N`<~L@i87kYNj$ z!NV={;{;(c+qm(<Ix8CsuRE%?h{bmw;Rm5o3)?svsDB0Je+ps16eC06hw|ndkcisv z5U&do8kqQJz#$3BVIMu8KzOWH-vsz)9^$buI7*7O1bR`oOyY}7`)P%?bvC9ZR<^Ns zXBJ!6hKmq(F^%*{7?U((m&$p586C*TS-q!PkAXXPCabwLH1y<S^zG{4b36Ltqt`|h zfI(gYhcNU+2<R<Zk)&yg5^OxRj4+LIvahB?N_98<DsBX-DOc}L{+SE=09-No_-`ZK zQ|L?9=vi~gE9hqKqxYNR_aC?JQ*TaeFHbY?4Rwx_nbwdI*ZdH<jo=5fu1~3p*ruNh z&i_T-J9X#Qu5G%p@x-=m+qP}n9C0#Y+qUgw#I|i?#7?SJ)z(^bw$<L6-}*M{5A?p% zTf6&tT*rN#`DY6lDO}Ek#(1lQ$oa$?wLlhTtbcjI-MMou{#wjFfUvGS=z>U1-Q$+5 zI;Hf-r!LsH{%O%_4pK3suyHJ>j5wqX3`r<KA-M?GtPw^o4@ulxoc>LvV;mz2aNIqb zKY?to7zk(cd7lpZT5#PwH2;yVXt1>v+3v;5A1eW}G{Obb8i3Dlgatn>TVjy>^X16d zoMXnmWt-78DoBKtNJe8Y<7C+d|K!K2Q;B-^WVoqk!VzWORU(ZIIk_6)Ig{V5T#%`Z zMn<rA^yd+zRv|*|%x@U`<OFjEC&z;Z!wh`Y^FHbxtrQ0z_VUXs3%@RZqC>g8od>_+ zTg6#-3#4BN7_J!Lr~MlP52E|7%(kr_nsq)FRw00unpXpB39;CBBA}H->}55wjR@s= zX`wTWd64$kN5%?)!~!I(cFH-|#Xag%V&OMV{e{|U-~zWXkW8IVQoA<nKtQ3+04T*s zS>)o_#xy1&i(EE6v*Dam#Dgmw7z`Ow5;D}Z8+vzvsB%ym(ar*MCpx%J3-I}89Hh6h zA$ZPRb&y{SQ&7cDP_BD_?xHkV<!3gqw2Z^_bI|mr9-y<Tzdu~SZDLywcg%@<1Fw~w zcDIWZm?g`77joD~WEEtL#+&P!z0PJb({49Rx1`xcw&&eKSrQx!IDPDLZ{#e8B>1Q& zFb}7zmt4Y&yk18XOpoUbaG2ZT_y>~vx^o?pT;)~op%4r*bl1myP6)Hi)eVNUC!x<) zZgCI=sXdSbm`7Oc-nb~}SWB<<Cer{8Ks9?L=9@Oco<)}o?0xvn15{K!R`G96E|&k$ zxnTKM=Yr)QI~V_X0rUTU?|*!9{dcbBVfi;^1=Bw}o=9VR5P}2&As@dY>24!++z~nR zhx<YXMlPd6_4^Hjuo<=AFYwdt$k#I*N}uCxT~HtKP*qdL?$8sso6$PpzJSK9oiR&~ z$2miJNV|gf+(5|9V{?I`zd@yom%h<6?k!45Lu-u3>V9^dpEJcextvs|JN1pkqkmiA zyw@V0YW%d@B&l(wTvW-;#45M=cW>@5#9C@)1&KB+QtbAR3~rH4(nk2&MA&8D&PfV& z3^#-#_<_IyRd}#2{ku=<KP2xg|4QCj{!hp|%fFEK|Gc8?e?RPB$UE2nyurc5#PpBB zI~yY*CkG)j3p3$A!tN~p7h-pof47F0h5erv8OQ!lqi9v*(Zq$Rc)k0<X~f+f&lHKG zNDQ6vIk1qEgdDXZT($cF=Ob}<TV;8fluQ8t#t4yKI(Bo>nXB?tzuo;tt|o4m$L^(w zPCY~*Kq`inE-YpiPiF12)$PS&UWxA|Qa;kT+x_-Yq%?a-4mZF!l<SRBd3_qgUi#Q7 zAX3}l97Q<(3J@^$iZ`dGJ0Ogfw8z9mDRb5C`x^Zkz5XCL|NC)GE)$H4^S}({#2b!$ z{98!5+@;BD19Q1jPCPG)kWLjBT&y^C)=a4H*j5)p%Jo<J_ZS$;;6ONQ1kn`799^Ri zzIrUv3Y}&&RZw_yTjgx+-*HH#8TE8gxYra^*?dC?hXZ1PAa&BOvc8JkzLGHBU(K^f zUS&ExxA`OYp=7k|pN4F*)nN%nYW4AAQoyTPyJ19NLNv;Z(kijDB5cc$Pj!pEnVAW$ zbW+qgr;w?DQB*RT0a4sdLRlCQ5dQO;G_VeS&v@+%aW6k~Qg02fc6Ei8H1G`ma#(}> z+{(`3->M$&8TzmFxQ!OviK>PL@WB?3r%HGX+e^8B$>;HEUuT~;V}!&<$PTJoZ>#M} zEK>&*s@D$@cPpF*dUEpw59VQs8qUj<yj-_Ke!%Vj${99qusvUUuH$Wv=d4ez2&uuK zt3KQB>cti%2&HPG#dkHiz*G%z?)la-Sj-MND!`-ck<P{usq(>FG<*)($IAs@Vc#__ znQT6cTFk};X;xV)ix_YOX8Rt+VWdNp5$MDv=kgXu=U&Bqughcyug82oi>g~3O|45w z+)w2sUXD~$JUiQZHk$vob<j+n*_m69qHcR`{p$Uy**2)G^|_0Nb{fs8tkUNjY!9!l zES(ua#HKK79I6}3uGc(xIe4p3zn*_^5j_KgZr4ZbW4l<2Hy6*_A21OsVD2m<3ya#< zEgBbcoz8M#uF!!_=|a5AQi7=v9tT`b&`;0P^D!hrCEg2b(+expQ?6MG$=?X)4wD<m zPOdjAydP#Ph3zHj(Y*LLXjtw?VfUWxM-hM1WcG(T>DS&+EvB&h>4LdF*u`qAQNy?h zzx_HU>o?H#t$5v>pq_Ip+>`g?Fc5P>>D-W0RK*3Pd3WVyZ3u%WaxarmEYAFyGP8ZQ z#?}=c)|g0(01eU2msWDpiP;#Ju7Bz=L2V{vlRn{`i*-RkMQBc9Gab#Zqiu|r>*|l$ zzW6md*6llK0^&?+)jkIkAnLioKYzoi^~Vl#I-E|;DE_K^CrJG(7Pb%T(#0opqd=p4 z*+$Z06-a^ha)V+E8BGh&A!Dl?66M=lAln}Rgc+2BMX0%xhKppz)KD@Om2;Xz>p?1X z>|GBP?TL-Cmm{&P?WMYJ7&YJ=n)Y`xo)YZuGC&*nBlj<V(hFfCoae$ixM(7sa83IR z$?N&+2M`UiapDC!x*(TX?oR0^2&_L@-5&+B?#fZ(JQl@QK_%fs+CkLV52D39M>v-_ zF_xDKWs=*xD{{zTzmQ6Lq&6H;{rM)s`@ml#$-%_d=_cV%bE1JN#-$`6C%stoBu#-& z`<yCL1$uv#tY@cPEoUl;6=LZwg)2$-VNfl!C8e3V{BP0~l^oJ~b8djH=EMVk+V5`& zHETm3y$*Z1JQ(bLx|uU>I)IxQ^BiQZ>|~b?1&gD?)K+6*`wftW2Xdl~HFS(fBl(?S z7ZM*-;4{@019w?3Ha!p>(r}~LNWC&XoPO>Gx6>*@D-Ap-4SqWjH&N!)Bv$5%rhyKU zfw%$%Dm-fxRpPnnQvOc$sTG#NFbnFIjMV5XXG{SroQvNwz&?+VAHzmHbgjKGfO4qD ztF#%7IMBAns3WE<8tRr7#HAN93orjoVwwFOn=9S3^l|5rhC8Lww`dda2l!fnZtECO z+)z(1XOufallJ@EH;Z%f$vt6*;oO!?Nq~I!`%<ZDehC9)S@6p>{)JB?IyfUM;N#}~ zvhXuAKC!bAoscNIiU>L>ykAm=DO|DFG@w!mRP|g=tPYrF`uoPZEnAE$&iyxS@U@Z+ z(rK&;Cd?xZR7`gToj#r_4MmON{Iw-w_7V1D2oZ!d-Wug*%?mobck_EC_k5h@<bu~y zRuqD>3Rxonvuj)$>DTjz7QDRh-L4&iIg4!RN?vwgPnvbJF_<4!*H~Vb|0=P`=%WCA z{(LD#rxQoQkx(MVWo>DC5<_bnp%0CiT44oz+*5)RR_t02VNF+TKLYgmh8yXr<7UCz zO{PuKw{ar)y&m@L*Wi<%>bBjWx;~Q*7mE&MepRI(!?8jRH-w(+MNPLc;6-nMDbmlr zY;Zyy5SLA^u*nDCL2;bP;;miSaJX8zaf_2cz?f6<@jVQ0S@`$5|Dc~@CJD<|5;`Q0 z)Qp$(<Sh2(kXT^3ifZmTsu)&qg@nF@lvAJfm5Z6;LI@s;yhI7RPdLtre)`6h>m_lR zaQP70B;#5v6y{BZPxn2ddn&EMFFn;LnL(2bY*A!CpI2dcjfG8_ix*svgok6{9OS~- z?8?lB#xML)?t)0A=?sy(guo0LlYtpalAMp-AHjyV8H~3nzd%-KZk5;WgqylJmY??z z5*T{%aRrHW(Kv&trzK>Z?bUK`#dX>*md3sl`rr$kMNov~OzqlawrF(a3SJ!dT{%eH zpkQZRu{U7m#Bs3jf+I-90;~6q-F7RrUc(~qv(a<7{m|Yepi?vyuBnE--_MuwEwX;m zsQwTrO1Pq4j}r6V*{1nfq`VSZKF~Uf28f>a%D)^>tygVz4@FHU?Z(|!<4Q9^VuSm= za7ZAA?I3Yd*L{V{Ystx!@uAA^ICU1&8m8Gsj?kbH+@?(aYA>Ev28muGLZLR&d$3>% zq!$-^)eW6^!I-SQ7VrA~-0)FT6a{pjI{svB0nR`C{XS!Ri@72vNPE4^WFw8?>c>;I zmcy|p@?A&G6*Z1GjBdvDs5Jo+6f=M*3-U1oI$R|-6RT4P**G71Sh9y3L7%y{)~~hf zvXX@TmNb&QV-HYDY<=6)Mb=n5F3-P8sk_haGB4@owc8h1Y<U~r)=C+eOn^ca@cdHx zUm7tnS&B`C$wNfUMmWyXP-ocS_;GW+Oq3Y0FW02PC?hagu=1(N_3Nd7KCVxGK!FIS zwebGkzxRI#B3b_xM6&*45cyvyQ)B(_2a*4eN{avA|9)Bj4V7eJWnubf(#d%2))-RH ziw3Ey(!yC`I|JiMzP%M3w8?b8o<7i1zhQ!w9<FKvc;fQp_|G20b5ywO3NbY3SbZ0w zsX94}iPzo1@$~)0bX*0@vh%N$53>T0&j*?8it@)MQ92I|2m4XkWfBDl>*}s54*yQr z<v~xhS0R9*+%L59<HZz&qJEw4Fg}rWmghlU>bv>-oN7AD>mUP`_k*VI*P9b{GQa$r z=TiGsJ3TqOU9YHO*)QRrNu6S$lhJpTA4_){7Rv1Uu`fl)jF-#%!{v`-v>dcXEu!Z* zVu5f&zfyFgo3aG#spa>JFx=^(^2BXQv>N%SAYNW?^r;!&6^9*4h6fiuyfFEvOEyGR zxAgbU-D}S!d0Vl7!B5&rXXnSJ+I^tu_o9p)V=hGdJ2{^1OSj>{Ys;G+f&0}-fxWCQ zDZjj_8P_Civ-+$hMC+Yed|9>(o{UOUGQ^vwb^Sxq6*<3UR*sbF3XYfe<=+Y(w?6}e zCGUT&-kO+s*RI>XqL`e^-#0h&zTdy)*K<UUF0^}2=0|tR<9<;P#MIsPXzcpf4}vz; zg+c3&X%uBo1@pMo6~RG1oIP!qa=2!%JsP~f&yHMCtgm%?*LjiFien)Lq1?vruEpI^ zyt(ybBGMGAN*yd!W?sNM5*H2j3Wb^C{VBP?#@TTbpnRYmS%MV*&|qBJSn~T;Yfbdr ze*TT%^e*HcberUmYX+l}q4JY+?Gk9=m%%ji7CM(#OoRrD7C;c9B)j%g?cneCvZEtv z7W7_Zn*2_HFFX09Q_(Hp6PR~l;8!Rnb|S$oi(b%ZL59Jmp6t4|E+j-0y$@-nEM2mV zpg$(BO6iNs*|H59O27CF2@npEAQ8Z>2N9puKcKKz^vO?ACLqT)&txxOiiBWdCwd^` zsk|0v$?qrkKqnWOZeeXiDanIEx`!R5ijBvz;QwqmfviaXDNxxV4yIcip=_lHaRSci zE{agRZ9Cbhtr!!9(NR#6dn`0JR&+PJE$RG2^9j=sXe|LvH%1FRXnL~X$WDw(lIdQp zuCo~aV|}rVuSB<3KqTSv75>2L1gk~W$|~|<X#p8&0Ofi>;#u{PlilSAIk-kiDed9A zmzbX1fl27+co9n>E3zD;HmxP)dO2KQcDu9~78jGShRNu1)&PfRY?pa5+M8fO(d;{V zCt`cOcy-m3bb7RT*Ys=Up11vp<8*g5%jGJpA#Z5??vXJvyQ*WDrtzS}mV-wNGzDBJ z1;(Un7&U+E^#V`%0Ets$v-N?J4w1cFX&=LkR0w{)_)5xXU!K~StAg8;tDgA@fgJ6Y z0F(lF#+R4}*#Z(TRk;RGsMfM;f_rW!^K6t_5$5OAac*HbY&wN|!+^A-sk&O@lZ3jk z2_{3_Bjf<lFg~LvfH%8mKE7sOW|Fg}XC6Il04)(eizzdN07>B)B&^=LgFL{FMRZmR zD3Q+qmW<_6c6}Cv3}X4v_ND)1gr9UsQ~8BCw1NaReFEhXgZ+_HgH@P>^81xy^vN{$ zYlL3|O+yH{opjCV(6=pBSGXX%0H75`9i}MpN3Y{uI7R|2B-c6Hnk6<GSj1N=fMHbR z+T7DvmjF{R!tYKP)w}rD6UnAX0QFPAYYVS{vLvvRDAPV36<o^Ig2!rgFj#W;R*5>g zZMe<*U@Ne`*L#KczRFhZQUBJ{jOQ?#PO@gG<ozV;lBSVl`D!e$GC5*arl!nCN-Iw# zjCtD7WhK(ZIhp53+h;qND_Dl9gUu$y)rM*uU4U!_9|_smKC?ovm~@{4yZb?qEzoB< zTwIoUg`0r;4a%xxU%h9<ofH5g%`*Z|e__loeC!n0i<kL}`5?iV<J(CBSLuuoqG3lG z@(5@h8p{=5jYCZPIsNFcSI1Me8{T56+6ySCs3-cfJl!dm{XR=}+BB(PB`);EEJ5W? zSqV|lw3I6WY!;kNm9$jciujKn$=3&1_~I5_Tn!i#LsU|A=-pi>Gdv{83tCppm_pE! zS@4Qg-U$X%x0G>cCd`7bJ#5o{2iqqo)}Gl_)!%#yx}4+R8!yaU-oV^MC8+Nq*axYQ zs!dyMPBsDVSTwQwMeBLC3lp(P-cO`FviM54(kqGDSdbLhf4F5xmBS-)Bxs)^XT;Fd ziM8K2Y?vJdI=hC?oB}M!IquoU;lw6-o{-OdicMN2_)SP=?y!<s_*tS9)G5F(v*8Z* z=Nb1)Wo3a;P$2gPGlK&;ALoX$jZUyg=ta=+Rm8hCW5xLP#8Tz2XY%U{y2Lgx5lV7E z;jf~}PT+$gpjgu|K_*G9p0`te+%lY$-VDya3YimCQWC-^C|lHkOFP_~142&Xjdu%G zB(c}sO1UFRb=bAJOInE?aH&fbuv}<``js8!xA$d)BWc$g@QLOeA>BP?4~2C@cnsCs z@_5EvVOH6BETKNt2lt_f9!U~-)GRbs!MafQ!xl0VBu4dA&#P5js#JEF+w7=flYhSd z_Jg$|y+K@RZD4IJUVv_J!nWV|A{XGmR{#Jy1w1fhVB<!-I<%Ym?nsJsPIDg8n=Vkm zxMse@s=-=qCGzFZRl7h_$r;8%aS6dw2Ysi2hhh{GB$#^HUR08Y7`m4Gv-;Bw2Wod@ zyq9-P1-Z#?CSu?Aspw*ED?0GFH)CPTKm+Z?qyX@4&$KUnKiilZCkjP{qBK7e*FHFQ zRUaH-4*Mf7EbRry$18ec?RPKyoaQpe8~GKNC6HYn1}$SG5_2z9edOJYl(v*?n3v(q z6uhiDoi`pJAcYatM~UOySz4WJBEtPRt<WNmjaUARYjtZ#j#}nJnY!*kT4LkmF@5h- z#`e!7)CZDe!;E<5_6JF6VH@E9VWY~I*;4+$zk=NvzKZvz-^k!#&_c_DhwSl>hNZ$& zaXPTmC$|P8@0s6zel`si#UIrEpsmk@M}lRr4lK`Y)0`#T9l$W&6UEObeHnA?>U{I% z>Z4dHT`R@yQ1V=fWk7$x>=t}4KFUmZ&;r6z?-BJ(!medD`6$axTo=Flt6`AIGI5e^ zN}SM9Dds%1li4yKxwF&_wp9nH*<cf=eQ%K#s$R7d+esJTiKF7GF~ny^@?}rirKLw0 zm2G;Xa3!}yRsXOSjcAe0yVV}MR9&a$F}Ut3zGRAw&@nIFw<Ll;H%-9QFM_i?{PF^Y zkIZ-##tE|fAr#$E#*sc#Z<W*(eTZ*%l{%SA^ijx+ZnWXq{1OaV_{u&JW|t%)k$FyA zq5G9+Q}vZ!Bh@}^@3}RGf0ml{7Mn#z(OHuHArhZ!S)YtHPpeHcz-YS<=@un*L!c<J zA!#S=@O%yFzpIF|Yaa)54_34i78S<4X>>kRD3LtQ3Hb+FRcu*C1xx^=#i=x_Msh^c zpo)cTRGKL5y%?iH0bKxND`@Xe_fNrq4r69E#0;(rT!>8PkTGlsj1Nl5Kww}lSbBIQ zegOPp65JhQW?2qc^d~EPqYQtzIduA_iB#zku?hh7p<i#+(-jR%u~TH2`2?Kpi=cCo zY+Q~Is&KzX;ZLKJtSnUgtLH6_<*C{w3&<!Gc?c_v{J|x6Q)Q=6=3i;3dFxJoEryS( zw%^x>U~^mxP>hkQlgUGON;PSu$T1QoE|Pl<>NpxkSw*`N^M>+{oJX70;`x26TIWYU z1oQMZ#7w8`JVU;%sKJV4@hh-_g_nzBV4;WcLR{CyscLLdM;vQt@ALL0Q}aZ3syyW< zfV)=Plka!s<psT%rp%(x#;gsq&B<H!+%ztbmsSza6N$VJl6(3W|FD+7_+CbtZfP!i zs9aH@N3BlI7J{G=B{*@A<)=L<dED}u6W33huxHU3JW4_wGakq_`kr-;)}yFvYC2zB z;eI0c+WAY=;a2K80iW%RC>LBXuo4CP>7aoC%baYLGfr~30h4hU9l(I`$9J63YD=hD zJ7xLAxU+TbUPZxqvBz+ps0DFKQz~%+NQ%vbZ(u+Vd1*-FHy^Z^^2u?b<Ows?>N7rh zI?;Tl8J97(8zURLAnRGtUVgn=HR$?5!>xv#WgIQT!RreB7LCjt4;gWhw~uHB=$eJt z^fs&kM6N=QMP7XlIeC}^t+LVYYLegI?vIh<*PzvZnzzrOXP*gAZkVyFxS7TOmZ>aU zG(Qd`=Sk%7Z_U*X@kx&S_9?^Yq2~%U+S#j{Jm>)Htz0Pc?-RoH%XHMB-jW_DiMNKI zs{vO%6m{HPxXvpv@yy@!ZP6U;tTNu#>eT?GACWEuMT8ORCH76~r}1MeUyyd`hhG3f zfaxBLWY&9%E-+!{w5YFB$rFSkL`;gHg3|Z2lmsV8g$YSLWYj)8nSNoiMX6zLU&oDd z&kS_LJC$fNV7kN85|c<@0EN1oJ%3A6vGO{UJQMbPU3c?jTA6&Eq4DVc7C+oW>kyd9 zbrSS%>CwV;Y)v<-Gz<|}O9AQv1bX<v8Pw6iRY;AK^B?W1zU{)*D@I}dy~6mq+(wn2 z-Z_EB%^Hg#cOy4Ckf&z%0P{PS7PnRyu7G2(#@Je{yMFNpfdi_6L5lk~8JYDz9C@<- z>&TP!ACEl$3$=}`|NYm@|C=-NznP4(urdClqQ)VO$=FSG<YC(nnwv!2bXJC4UHOj$ z&ZIS{&KTNgq5jlzbd-ptc-6@-9IdI(n{4m+!Zmve9FsXggT&6bPPH=moX*}J@3$3f z8+#6o41*)`egXkett*QPXjp-m>Fe){<0^i(s$2@NQUf*(hQ6+bliog<Pr@-+m#)tH zS0<LWvMPlcnpK(4f%VQ6Dm{iLl+%FGKzx$20TYXA-#EQl2=?b17rl#HnpN1ZwRP;( zNyfvXD>uzcc@Z*`+waR~$SuMI9K$#$i2mNqRnt^CV`dsau<hA`e(Gv>M^B-RPH#kv zGfJ2rAd^xq#)65CRnM)Zqm%r{w9#jRLjitT{(fq9jLyOX%r*Ie<K>xyR?19jfAm1v zuU?8#2TEf-e8tz<J`9;d+G+pSGTis{s7Bq+*58lmx?6$I_nWUxMDKY`hRi+Z;kR7& zL!Wn{>``Z}2Ll#c8WH=*9JQz{9g98&9F9MO8`%>(xZE6YpG#I6YP*L#V#85?P5gD` z^4Lf5M&{Ou#5Lc}v~jo@wg7o>n@1INuUyTJS=wL*m11H<=-YUZEQ+`)hQtH@+2|zr zrCc|+mGW|S9HlOHfkoOFjuSa54ioTL*gQCT4GVUaE%cQ>F1CIS8!9XtN58ESaSSOX znc1i)#VN?FY5{Z}U7Z~i3PuvTlEQ+sgROcvZttkFIB5Ip=SobV8c*wHx^<qM2>0&O zB2*4l*Jc0~0T@`H9fx~Od$zDDJsG8bIkUM-WkU_JVKOH}fswTi1I(-srOb7U=pL*S zcQqd@Z2T}85~mTbq%tA4>urZ+>(?TJgp-l*^#tKGE<9qa1GMy&cF{lrG06#V%>k=j z*%xqDXnV8(WzH`rj`Uva5zE7Yj3%NmN<%>vtf4->@FHw{Uze^Fk43~1nJuPv+lgHG zh6;j_^9;%$;+*;d^nS~&i&|WDosGPLz>lN9T)<!>PuvLihjW?M{+Rg3HFoOn55$Z+ zp6qV{UMjR>3o@);Fcb=RM^yQ|G1)H~glM8F{iyeedIh8e(fsamw^b$%6a(#5t;ZtU z?xovv-CIV?>x-erwD4Sf@59rASys#@CBrF02eS&bk4?RoAvaE5Wa1MU3oa+?7$-rN zJ(Q1j31P6N70?DwXA)S5molU3G9)m?i*WSgP#E;?^`*8eY3QMT(o!$cEV(SF_iJm2 zO^*2TJor_Avd`*v2;6ZOme#wHeF7Y~mh28|s4V-hO6^?-HpukZD7ph9_{J4gluH>K zjPLZz*vAAM_X)nns``a7Ph=QQi?lkh-8B~8r?4FRph!yMeG{%M&q@d*<FZGJu;X-h z363rWOUO%=Q38f>^WqTb$3JDUl#s_W2uPni;!d6}3Apg<{NLvt&t*mzeovw#G3UOu z;7*CMaT4x_#7`C;t#zlPt)FLtf%7Btn~Y|WB##3r+sEa1{(7^#p%xiNZF{@YcK*5G zJp0Y&ulPImH|<z{dhEnVkz(CstRcw6CZYC}?2yaYq%_`3vpJC=#`%MsCHYvHAu2Z9 zD~6~DrwzD~>Ig<_K{AEVyKF=!eF?S{-?pDCo6M=(B|KuDnY3FxI2)o}6F_!<3vr4t zyH+18TuGnqc#^an22J%z91~^CTU9$c6kX#wH+>%XC_WtCKdG~U>M~~uhnq~!96w9h z9IjsIYi}z){|E#N*($ZMfKL_g7#diYO6x+F!bC1TfULO{2-36o$}r)It+Xz)q1%>U zPkm4W0d%=BH|D<i5p4+WCYkg&&2L|sZda-P*TZCL#j#WYWg_W^zi6(mfYXa6a%h(D z6J>g!NtBP-k>P%5lH?4;xDH@@62^-!3MUJEQn%Ip-k#t4r9bh#-Xv77PH^dSiJ6IG z&K+I>lTD3E+JPeSdm%+L0d03Ch4uC2K8yC1Qe~ynZFsOs-Ly`6?3)>EZ<TnqkYTyO z)mGyftqEgaE*pA*5cs3aPRxfRS+cWH=mLI&aO-l7NWK|IR0nC++DR$;bkVPxqf5Cl z^NYXC<)~l%f*7Qymh|O4rI?LT(e$)g9z^X%@0Z3?6GSy1LUxv}?i23i6giZErCk4V zlp|H*=(Cxr{f%<}CXptN+YX0`&W8hQYfFbP2@WLqQ?rvOI8VOBV{_l<w&GwEeKL7J zp}qGnZiamFl+B&Ik~_JPkuu4asNvvY_p@MMm~DMVjtGk?s;A!2k8cxtBgMJrMtFQ% z^fz|BE7NOK{q?hLL)Go}VhKW7&DFoK5jcr#^r6^2hFnEei|C$(rT5A{B2kLwesbQs zaIj?Us|^WvQvP5IQzvf2eer>Tu7y#bpQ3={?cS^x{rp!iYw5yo6?6V)83%I=9LVvb z&PQRqTx&+iF<RpUP<GV!-nz_6(23Q^VMr-7YIgR?Ug0zzrHg_^6Bb(36;<Ia#eE{} zv-sG7BE;)kHa@XfzjlhPNpu4sx<I7AhI7n2=;<*F;r;Kl=8FtLF^pO0{LdK0zlz*1 zp?NCUWi+!Q5?jX8<?ls3%=P%l|7gkoo``*2e@8NPLb5Q-yVcq+YQMcW+35})<0S4K zk|E4_YAC96;7{@^Z^7n&5)bcgGT8z5YM$EjFCTl|e|n;+iM3fEu$+_3J(d4bjCso2 zCGsKbjsq))qHZY)V=}P~SzHyzhOMnULxkgix_hndbA~j`(Kd)9k-^tgDRj_0U*}uh z)kmluUYzd1Ckw?bc0#ANBu@YhWMQ$@C36`ixgFi$$&}EGuHA@o^VUlQ$|&kRS3{K4 zDfPk1u^JISQ6|V9%rP~25gpFAQ@11rh^zi+O6rs4N%Ey3hregG_>woQe-v$r_QcHg zH=}SJk#PC$=2k)i<i$0-fh7!8U|O|2pzO*#)(AfSBm<~tDtui{X1p8yODW%q%`#$3 zMHPARG|9u{KNMw<Vos0i7+wxXyR3Eim+UwiR_jB}7Cz$PDm5gQm)7Xx9<Wq~QB<t3 z=y{sxLwz6~t?5c4+`xF}*bds-lpnDID~g=8%Y4bXX|kOe_QlYQNob%1?~{<TDTf+1 zJd2EA^VS-q#Um0yVR`0^7l{$$D-5AePCL08|4O)|16DqAj}7T^A$!k-OSb@%sY|Bq zLwh`LZ{?TNO@Sz08degR41dY~3KK}#mSzV~?dI-e0!wriAM;hB8#DmpY$ZLvvdG#< z?8noQ-AJ)%@n}#dX<{lPKJv=%+AS?Zf8vH`eH8GuFa3SCHljseAXUuc6yFm8Y|g#Z z=3zI$_V7Xrg-#i&W~XG|3)gVXRC3N5WWSW`SwMlxj7AvEs8mcyyMcpm@y)<thvv(Y ztarsz6{Wy}dnz^MU-O~8<W~A99DkMgc@-(Hc*VcwTKg)9^_EfZs$|?&%)F?c`BXmg zrM%}_|GH&}_;N%B6s>rWHRwGy@}#{b5VoV7J0^0B<s=i1c>(7k&=Vm`=j{TD!}%nm zT@wpfnAw{VakuAz(T>Rz&>c$Owdr&(E-B=IL;OWZL+hP`vXWGVVRSE|4c@@hLsB<v zeCGPOl_R%UA3ddJ*o>&&)!Ipps3Ha_YKG*ttHrCQ5yoEux=oNE5^LkM$}C{q$UrDS z=Z4->IdpY66m6ZJUjjE(y5n+$;V0iP!mZL>q2_?!4{~_xElk2=#;`<Mg5&Q#9(^}h z^jxk7mTAD#kB@f<dhId&v7Y3?UlUr!85JGpc{i_~Ow8!ms*1R*5a%AAyfeV|eb5&b zSjzC3y~na)^Pbkc8>}Oxs4;&=>R@}p)l_oGkewlOk{aBzu1a+X9kKVmMPm<i(P}t( zDj<#KtBAJbW3-$y2ANZb!w)ofxqH3GEL=Ff)_{_p_GK|*kYpGu+SK&R+|_O|El{q{ zYT_Ea;Y6}*GYrjbp_);uN%|Ih9D5;!#ZXcOE&ccrj8g<5brB{HqCXY81hEhZXAVo) zu*e#yjnRfGe^Y!PWni<fqs$vsFOT;nNhEzYvL5kt$v?9~97t>xS0Fg#TAuhOc=ygB zym1D?RiXR4&cR4h{!;uk_@y$bA#xl}dM64}2!FB8{xx1zwIz#;L6&>%%FPHXoL>w9 zMcNs;ymd@zoWzAQ6y$Ml2l;m+98+kqdC;ql!6Bdj{Y%u{2?~}ZivoW@mk|DM5QC5> z((_D*mSj5{DN@#*0M^-Tqjg!gQ8E(cElD@}l@zkknwHgMYY6B~QGd?FqqxJM*n`*) zWE<TwsMK+nYBfOQ;VkGP?Qg##>vnf7l}}lC(=qG^hyDHD9<Q)h;NvN$2azKLO9X7G zD)b@DNxjJU$zgF79Y2v%i*RU$+p9%r23cx4>Z+c}sQN9A?sJ~nIwafaTm--Da8D?@ zYBZgxE7qswl3M}<2Ly&y;$j;mNni({Mu$P0Ww<H>je6L3K0~W~&Ipscbj^8~cv=Qd zj#^!~_v{fvfUDV-d>3a82<e8@ntf(xjWh=^w4qXSn)*SHKyXG;ji?b{H|%}OtL}xR z-J${qzSFRCS?V;zorx9FU@PgMO>zk)M7FTrm|~nX$C~CNN678K$W5^kvr4>?@r1#4 z9(NgNis1b6-Bn$C<*RXxZ1*75hH1dnqCOWRi(g-5S{>Q?6DhaT=l@314>Ziw0r&6H z_CK*fS^iDh{#P56_5Z{MW&MBKpv?b;s#Vti4;z%3@&Bkom4oenS;5Sl?Ek<AW&Q8> zLI0bh|G(SGz{vWKnuUh`ryM$lB&L5#^PT{w&YI=Hzj5dUFiCP_WNz#yhVm{?6%`={ zPrUd1Oq^ZYovx^~k6f@tKC)s0jhA~W>8zZoP`O?4aNs|Zu6lZ|jlPf`emzWUR+Pd+ z%g`pc-Pwu@wHE(oQa4%L?s;1*Qt!H>k3HZV$v&Z1zdY>{q>yU=4&rOM$`J3AwWihX zOY1<J*1NM2qVa>~@AdbnYot_<qu6ZTY-Li}^w_7adMJnaMytJV4`0};`_l07Z48z^ za8wiL4v+dva2e-;c*(;p)1-y{K_P`o!PuurqbKfF2;tM#<0FAVH(VZ6r$m{VqhY4H zfXCnw#jyGotXmrI=9U~0{3=FqXUs-ltfKuY^OrM&infrpUSd;jesC7?C2#d}e?O04 z=lgB+_lxao7Gj2NRTJf+85fV#pl>5#WK$<PL50C`a~rkpJiVMhZ>Bxys9}C<DW9f5 zx;MwDU(>W#<6q-sNNZk>7$1T`RDHa*)4_eRrOtlB!eO!ewaSz>^O7RbL7$z{iS^{u zlC|a$d9Qjz4d|fxSR-)=UpAr~XHK2v1G-_awepb@(-f|;W`0o!(wjrTMKUb{3T^g` zhy{oBCgMHGZc5wLQU3Ip`2}_=tzPOZy^9t2?+hunueW+7J%I`ecOV45{r=2o%PY># zIL-upm<C!z2)1X5OFm+YZBEkh&xjJ2F#tI>M=PTSq`4@93dj%4>FwL}Zw6YY=n<UI z1poDDD3Tjk0en>--n&te&1TPvU@BQq1a;&TsMIx7GBJIs_7GVY^7HlLN?k)67DdX7 zJsU}lra{b;9rRZy2}|6BSB0$H?d8YqC3j5?@NhEU)S-5q54cI4NNe=5Tb@X`m8@$p zPwY<V8I66FSx1h-D((-ozRq8J&!~uz><$IE#JF?D?(VwFx$I!t4Z0TzaKpxH@r0%) z-j-&b-T3bIoa2nnA_L^7>!(ltL*})YV!2j`pvK}eEc(0d6R!8({B~2OYQa${i3*Ow z98@fD;?5cp+*FaUR4Wy`$%^7x#2ZXwX;-HC-2@>I+OLW`;uy7lQKAlCmfl=%)p7yn zv<&u(>KZPw#m?vlQWyaeL5I*@Bhf^gPR-J<jBazHt`hZ|UdfwBub%@I#*}LN<}Yhh zGgn*{{lSCFGhmK1IIKQol(XQ+nToM8ciw`p>*1l!bx#D~zaH46Jz`L@^8gt~(bx6G zCK9n@P~t=|-S6UXn9B5kM#a(~NrZ3*AvPA7<Md-Xi50yNBz7&q?8Kf+#4mbMaWAA! zZN7#l?f~c$*8?fYP7|28!y9CS3Qw$uV#kpEO%LnEMkTP!!lkt23f?6by?4f1W=K%e zqWG`abUx@AQyF>OX_e<%YD_HZPLQ693=oK;3?MT?9T{R3EmQO|!eOjoK05=jn<*O5 znU$RLq=oH6>>b0__0g6%@&=}~u*gEG5KD=Z$ONkjz{YrL^I)_J^WhwGRcm%X_gP%! z?bVc5H*Ur;^sGiQ>vR+N(qcz3r|O0h^?1}lV*>cDFyKqc+F`Rr(#LitYgkFW>=@+W z3GQyl?j)9A^H%*yCjwQ&D`+LkLlaL;swR!n{7&`l3+A*Qm|W<F^ynv~2cW!P$r;3U z82L9;ODb|xgz+pA!S}!_u@3t1Au>XUSgmKTuUQ{($1@0&iS2hK@Nn3?4=F<k_yQH^ z9Y^&^1g8^-zn>cBd6Pr;O{KzVYdIeMH5=DN8y|7Vrd0H}g4Vu=+}nY<f<TnuUB$1w zH?haJPY+wnsjQbdxqpObATFjwUU$}%&9Z#wKj@Y#LmAj9GC|`6Mqxn2)`Z4;D@v9D zikLSI8z&*ILg~4PwJMP)I@C^rQaMLO?qokkez3q#8b%J1id6$BhjW+r<wB{+Hp=-k z7=?`OepfU;2IWJzO|4=s-92K%?P9#o*$`TOF5F2kl;2;V&PN0pu7(|+LmgkIl<t-4 z6@`d_4Npc(>a@cYxC5#~t0xVW77`kj`1R}?yQypE>CT`sQr|tNIZDCps-Yw_?jse4 z72nYXVukMx2A$WGVoYz`a4$qUN)jGIXqGPCN=%p$^a^?hnB@t7n6-zj${k#S43F$L zj>X8F8Phq>naUho=5`Uhh>r9S*A$tiPEh;IVD5qoi^50Z_S$(V>QeD2<&X3|BI7(8 z<*Jy9v{o|v{1f4B{Cg54H1lXzR5=7IOb6&CYn52p9<UF}M^l)qi4F38;h#L93|X2~ z=A3o&2G&;MEZ|I31!@m!@y7BIYuER@Ev%gqF<Nz*n=Yz)*)2L06=L^HTrZT`(j0N0 zdeBE(#OgAg>%dujE=DZAu2v=4sARA<2EDeoXsBRbk7JG0!ILbeZz~K-+WB5XI_*pH zy10n3DJ$&9@kKch3WAPAIy};xeRxW}w)+AH=+AO8)<oJ?<d?Qcq)p7HMNj^*0*nTZ zzgc~*aXrpM+aBgVpXKIgoUh(vV=1jf@ypK^U$fMn!hU4Kl>A0hat^Ei08ZHrRlO0? zLsnAzgyGk^&XzRR3%Wj5-;KHEjEP)`=)*LC5F}dC*iHrBaXDsmMxqU)75T7?MUS5I zvydB|mPe5Lcx@v{ndDJtMnNf>1QX)`GLKQ=`nAYRkvUG&-#v2?T1aVu61gQ63GW2N z$ht9(7XnMPFIj{-g@VPjTu%Is23@~1$cg$D#iD#+V2VQ`CTTwP9#hl4?C_+EhBwg~ zmZia%&0C5=B;iVp%658u>b^nalH@-Ionw->O9gBor8LW`V8Dq_pD8(B@iIPOgfBr& zAU4;$^o=)5EKW9ZeO|9C3!G@0)swlStdVQc+njjXx#;Cg27Pygx{s@3VCLx9DUyxN z9jMS(o)Bjb&Z^tPxV__z7ou2D`_rfI?`qF>bN(Jy<m3J`xa-8XnqK($?S2DsMKUp` z<B);`WAt7r-MiqE{kp<Ndqw5Guyjki=9hjB@~+K*Y?%6$63lKvrQRGI(Db}#dS#Dk z*qGK^IwJ#{fPsKft5r`V10iHIiS!nmgZrpFLFrBg+oMPs$z}g2FF1auYy>@I%)a9U z;*l5*s+X^#a5NRGk_NNWvAMS2uY6l_45^(SlM#*0AeRvP<gc<^=&+FAFyY>XZigNr z4IK7mp2hOi>bMoEskga!jbJLoBQ;D{u-lP-2aDDO29ANYjmFX=Ir@>eBOnNaN?J%D zd|~5<&h_xjkmpxyaF1M3+oX1{<JMSNA-;3Pzgu;0HD*U1zJ@T?d)}du^Gp4COfsz6 zx1l%KB!?jr&$!KFFa}EG%tIm<8v^}}m?x2IabiLw=Y1<SL>Y-tTwI9&%#jc40<=9@ za+YRry{t&5W6%nJBbfxv=vp0lx-#E!H1fu%eB0gsOe1PHBEn$RE(9!J$m%Ya0E^g* zQLc#)j4Bea(<FTxh{<wkn%hk)_}A&spDigbAlCBMjBGA*r0q$d*1`y#qRmu=X+7Fl z0`C)`To!>2*PqX@ROJ}OKE{<wRRALoS)8mffn7>Ms7fboJ+-ihX0WOx1u=ai{j=?k zcEt`gIQP*@d>~38t%a4MsHS#30_=8CoN}EE8`P+7%$VZ1w##rQgQ+z+9eKUxH*yzc zXUocpjRhY)A~sm4G@lP3=by>fvLDSHJ|{3l+JHrx^PXJd=7BHDk{Mvj)zHlFqh}&R zb8nt(P9cZ%SBtG5gLA0Iwh;4gD6k)^>m90&=+zs;Oaexc`0ijbA1F_6!Xl}p_8za? zs04AC_L--SBh8tg3Y_q2P-IwVQHlwZ|CKQ)UYYcl)NUqd5<X(6ljnYXLG!mCrGTbP ztsr(7BO%09WDeoEOg$Qo{ToCF;U54TrV|E=<b9L`k0`}9fh2|3q-N)=enK|3OC??k zVct~S^rR0+Uv!sET+LgE=;#pta_=a#E66Ys^-r_V*w(MVYrIe(*G67dj;Y5&x{8M< zNnI{+Ts$Fas{*!ZFQlr-YvxeoU2VQcW*yT`K28U<^U{r720`mLIR7p${u6`w-{eKM ze>Ird{;9#t{9h=4W&6Kyl>*zpla^W7|It9UT4U3G>wjI@W4#xp7tOTY@n}F?5!E+M z7y@R609gwZa-xJsL7<A~OMSx1V%Skx7DM1NscR4<6uipqT|Qo_sLZ-vuHq<wS$^K9 zeu&Zqe?1gR9`;M6)_b+8Zv9=Qk;SC8Jca|proO#g<-Z+z;ne-V=CLg`wY>P|)*rr4 zJL~QG2N*Lu@Hq=l$^uTgjI6BD+1P_Zq0cXCPXmO}UvnK)W<Ab)*P}D~9r|H-w^w=! zJRRdp&pe%dc0cg&$W_2M;e<d(n|=z$p;EHO;OhB`U9K8K7WQo##qML7AxgE)&!9Dh ztZMq<cG~by%Y)1C>l7_*7}Z_{mL7?xrpZZ6Al_#^ESbSs?-?ea4eSE0C&7b@f3=0` z_kt&z{OiGh@$VN|rzO{#l03{UJy-br93NZWZ^A6(HY>B7&pegmc7Hiut8Mnx&{KNw zU^X7Ce+M_M9aDOIbZviMq#VE>-hIzunms=&yTv8>bUn@?R(|VlM#Yw%cP-k;S-hUU z^i_~-f&8AcT_oUPsr0`W6(T-d&AT36o?klB&s2r2Fh4EvOK9Zs5)_Y(O7<0Y4`XmM zmFxEU_@bLr8uGi@I_MmDLwo&GQwL2`@Q{SlKiT&wnRUOkDv#--J+5=Nk-|-T*03zn zk7zW4m`I9DifBKUPX`^AV3K*0K%2~cFLLUQ#Lx3#Vn_739#du{1|rT#REmH{zs#32 z<p@j{Kl}mt#M<*f`Xc{;C(G3Xe{DD|0?*SVA4;%Uehi#NHyKbhZYxB3F$86;ek!+^ zV)t<nW&~taxBsr4klo-?KHa-3*P3Z~`&+3%fe8&QD*fHev1aI#%B=NpHm5;gL*Z9_ zUaY`KThr{b%H1g?k3;Hd<=2Lr(T#*r=F~k{NA4#Yx;o{2DV81s1gfgojntSHtDVk! zDJj`sWS)sfX?OexH)cp+qc+U@tlXR69NJ4wP%rGVB+??r71;peJZJ$Y>Q^rQK+k5- z`w3bPGEu#Wb|(94J$OQu&-q+!Jf5!g8|*D8kQT#9jI>;P#tVF}^3snhi4fdv+uldc z_RPl$YXSwa*o|abF2TB_1JeNp!(uzE!$J?1O3*)XKs9(HlFKW{jJdQTP;5`lRV@Co z#wF)Wjml8kDHMaQ-pmSDNyktzEiBJ!!N7@Oz&AQP`0&FL%LE8!ZA~A(&PcvZ+g;F8 z>Ifp|$^qS!mU3{4NvjEtu_C{ts`FnMRsc33!E;cOTAdKB6l2d|8@Yy?D2_fs$_jhe z(7k-X?G#WiU<dl#P66O=7oTZ{wNJz;q2spos)qVcIaKSIF=XlXrZy3c?iEF3`Q7&8 z@<TY0UOix^gp2Wd!%FuDSlJ8>cd7`-1>_Hd4{U;SuCTa{-|ej)VF2psfh1(_$YstX zO}z0x87}pCt+<r9NN~_%<&~1Z2e2rDh{soZL4Pw<_sS~#Bn7QNNHo)d5a*_(T8lru z^sS~~{c@ART&<@^qh&PS)?Qm2J`siAD>>WD{|&p39_%<A10N%CkKwDSb2L~SOl>73 z3&bpiE8Xt+lYmHrc|5cq$M!|JM{q@!QvGGYt1jB&t(_L%r0`v#8K9?<axyT3Ok&jB zeA6`@#_V{twf*b!?Ru2J&+p-xb~bUArGX|#bgdBR?#QFwF5VOaN@0kz4fHqjJQnz4 z{&T&T5U+go)^#{;ID7`AC#|Lj1>=2wV;~SfPE(+O;{Fh7<~u5BQ;QPPFS#s=66zE# zLBhthB8(R~j~PJ*!I_Q=2e;p)sIo?jnO)`v4&{Vcplrx9jEhf%3x#sAgiDKwaKeyg zptAlji06o7BZ-q8-vuX*>W?|dW{D7y1}>?;6K7Zx!kZZ9&eLzH%<VZ}Vt(#q21$vp zBpI^8>UC%sYN!~1;FD|vME~M!T=Gj`fwR1JIFj;VG%UlR$Cch|K~d5qAsPnRRbjHO z=``8A#}TnTX5I12X-~}J3b9XX?K*>S##7?s@FZH#b^#{e0ZmtVSTmx=6X%8wmvA9j z>E8ivDQ$elMCE<8^<mT41jHa1GCPP<Bb;fYsv0HzINY*}^_X_kKxOD292J%N5t$<l zZvM~_Zb*NY(OeO7`a;_T+eoZ8Z#7I19$7dxsnjCwQ|3s<0M)^kWj0a)F`}x5Hbb@T zyZ#5CbTCG2L%JETWWzV*F5NCw!HqCzJ1YR4vKQlEIRFz&zHmrWb+mhIP|)U&hLtk< za<+uh+Inx$&Q^!4#|wjnIvIVs%pwX#b&ZcoBw7jcdSBCS*>=XVLrGr63R;5IRU3xG zYg{A!>CSlX_G2uoNR~cz!Fbf+Mhy336mOJ#dOoTxu((ym*P3f~i6aTx!mJOzq74|E zC$FNiX`EY+(V(_-db{!t=j<#78~U-uK;u4;VEJ-Uh^DPbG>I*BA1PW2Vpw9Ucl<#$ z-$VrVoZvC_&G!9G&$QOi9ZN#S*G0eXwzX<o6!(qFdLr*}vsdgao6Wh|j30;<AsijY z(abNMpD#FG0JYq`*$e`u#q2k50a84D)^F0BfvF9C_vdMn2@DRBnJ#`Ga;@PZEhDDk zHVozXl*@{}v-(_jX0*pQX0e!oLR<Sj^`el!`3Qw#6PZnN)axhM*ndzkVuH)0U`<1t zICW@5Vvr^U<sTgUd$zkb??0apvsMK@JwLuOc+0B>X?6De*&PYd+Ur_Hfq=SXzVz(6 z=#i1dc)cZ{MIR$&6=ZR6!5W(mO-9_CK*`>=tW51L&O_pgQ~FDz69LQsfoNf~^$#Xj zyA#y&SrVHYV(0k+izVfvD8+;jr%tC17^z&ld&^3yh&8Y=G3i+&g&d-~Yw|z2fxJr| z;NVEc&TS$XV?Ck8Y`e}ZwS<h26R``b=a|^S_raka%pVJZ&XQ*A*e8}!k{v9#JXwu) zGGG`yd7r&7MAq7_?Nd-HmD0xNQA;{Hd-d_51gEqlh{8kgu^(2v<CxRkDKHLp9W!e# zPf9E<;c7P-O49KG<R`QHOFi5{4<_Fk@rImv%dO~2h_-57%53GV+V2+nClH9Do&6WO zg9@P=E&`uSiOY7IrV+paL{8<1(5D1>I8A-D6obUe1{H|x!f<vpSeN=I!q7h!UxIGl z>a;N7ldg=b=jAV%73)#)vW=WPW!r}QdSmB$h^^m2sgyz*y6wuya%0rjsf)fZX_Qz; zF7EJ$Nr|n!<=X*+QzrK%nP@e}vRl~M)R%d&H4RsDyz3x|*SC~AHg$}=C*Lw-!#ByG z5<31kWDkk%h#?8Ko%!Yv!e{;mV$#08CG`lLym9p2d4#ztDwb|VD|`Cy1J1Y~l|sHZ zLsXxKTp&tB)?Y26!$vcw>J5JOPO0Z$RkmSjzDjA%eG(9La2}|t#}x^UeC;;#Xaigq zYk~NiX<>*?cT6~<Hu80+&+Q?mR?=+G67+2Q7ud7BD`8FS#&Omu3`?Ib+uj!M6_VR> zG3ZUTrSws5>v&~&WmESRKcF9RmVNki1StB_H_C!j`6Pa*s2HVpg$wDMbs1ztelg6G z?rL&2A9xSUcM&<tphe}r!r1jZG6${kp26$@1z0*ceBP7@+CLm5AAQXlGB$^dfZi94 zvvff_>&b><6CGtrTDr;7Q{;nUwjuY3L;Lqz9tNt^$;NtHg+t0zS}XHj36@6*GLQCS zY=|C&Rsip2g?-qFg=bmkN)mNGy_Ducbe6qgQ@lxV5Ez$8CA^qzw@$n2lY9#vFh|2j zrYxi|kkExNA({r?Jqdt)9F&A1K96#|$g-BJc+c7ojU46cfp09gv>4wvI>j51Qz=$v zoRXVTnHX~QvJ~W$bzDJrC4loswO)~S>Y8q}1Zv!17MB2@i+^|WmM7K#ZC?_^WS}WN zXn>~Prt@vMx-#w+=m6}d0gMAI{x8!kvuMpElu9D*8vEkSt)A3-$V6ir1gx1FlTq(D zr6<6eQ7&MPakMsKN~mJLTo`o7RIhYIuyiH`Etc%;HBzNM9hrCHL!FPGXsp)v34iHJ zg!hsB7N3+|huMsCK}8v;L8I}C^)zBvaZCRv<FJIal_KK681m;^j+X${To)F-c@OhP zFWy>X=Y};I2OwXkH{6mx_veo)>_u|^NgHIJ8&3y#7I&FMp-7k0{tqeQ|Df(2f^<=v zcFnSF+qP}nwr$%sR@t_#RkmxDZ5!*Y>NwregN|<xcK?5$=yQh8C?`3{E1t~j{xX$5 zXw8mADNJ2O>*m;P3<h*7lm023kn$3hHxU++4k40v1Ez6deqq!maMJkfCKO@<nIy-( zz64h}!%LNm6KHZLCph>@Kz+4n<FpJ42YQ6&22%qE9wLH_D5Jy4%Qu5jvxtw0I6%p% z8lxt+fDy7<tM-cb{CUeK73N^jbhc1!<D2j_3kOw9!>{vhY9CI-tjxE@F0|#ahnwTW z5|}BbP}DCPI36<;G7bZirWhP!Vz*f9a}%AHh>T3MfsDtsoGfc+3l!P9)5v95@VYS3 zp3Si9>V8Kv0vg*TF8&9oW&bxT$NvPi|G9F^{%==~S^gWj$?X5jT9(-VSF|kIl>_Km zPUhvLVRT2641fAguGwSVTn{UMx%UmnVIj_QJnIwAHGDg-Q`ET7tZL@u;+NU{cy)}F z;V(9GfJd8DDE0@(M|R0(Xrp|rp=@#O6(xtb#G1n5{{_PWs%T+b{HK=sFaE2ubNpvZ zasJzu`fr4#v2*-)TI&COHZ}bJ<71mqg6n@gIQ}O!CFegVkl5J&)e(4_rhV#GJ92)& zYQvypv*{3+(0v&ojq7Z!YFxqpmj#RSxTx|%G_`oX_$9--;hsORluZB1<n~PT?`e~! zuj>}Xft^}|{&tb**?{!vW+dppi=sMdD(E7aEV84gojxBn6Jq=eA!2au9X=l&y5zSJ z>LjUT!R#+I$T{QcrLFOt13~(u9<bRKt<eO{dYf_^!xLg9J7P5Ebhilx06-2Q2PdJ^ z)2v0hcJ|0{ZyK~+CJ*|RSa~>C*J?nS7^w!f0_GCNu$8tIvtlNA|5smmT2=pcT%Z@Y z`F;crKeLft-5}?zZNEO4gtOMZWR-}`bH09oNYfbBd9FiI?ZBX=8xuGrYZL`u>)JlL z&d<YqaS3+~(~@Ms8djbM^KJ<46P$L|-M!)~lR07=iRM0}V;Tk$PlA0)8o5t6!sW0@ zKtO^(=fQTu;aa@t-@Dnj8kD-j03RaQF{6y$=-#Z9FV|M?-?p^s$6z=9A3RSC6JqH` zrcd}c$`Ef0+RhZqPzYg9e=+Xb(ydKaTO}8%S(>unR2SyTad)f@R~5DkOv=nLUJz&J zMz7RP7m;wWkR&+?K6eIjU$2b_LjmV#4bE|S>QysSa!=7|Eyd4~ryM7uibmK@g(b`e zwtOITl`J;<f}5e*@sa}jmAT`*SengIxBL8|JH^G&{PNfPeS^`Y{8^PGnMPEL9tk;# z>|(;W9+jb_c5d^TJma>Yg7)F-j3vpZ-MqPUB+Le<7WOFCtq|K(Rp>-p<Jd?umZe>Z z&(siv^m+{7<4AZ&8u-SigT@I)1Ch*JBLJ9zF~+(huwJewmyQzb2X2o2ijajaRZt2v zaQJ|Ye6l?e|16gDa7oUz_hKHo?1{KoP)y;?P4CV!l&lJuP;^jc>C?~Azwc9JlzR3> z!>Wn4;b6zIq(@vrV`$}&LB+*^gC}%@h)%0_4Ga0xGp8T9?PNJ0iPNx)3Ur-7yn0R` zUzw4yZ(D|XH?}T37t@Dq6#8hCm^#gsb~GUknmNtD;Nnh&mXKol?uSaFP<xP+9<u}o z$)d*AGB&lSwP6luU#^&>2v=APAmq!>_>Q*3F+t%J?OKvh>6BVg=8HFC{*?;7bl0MV z8&+63K2gYnEcs3yMgEYjkd_F*o8KIo6R$&qyy$)vpGc<2Bf;$XEJ;1bD5V$%Ft5b% z5Xy_AY#NApcm}34&^lL~F+=etVYuRNx1)Eu`fvLF0`wT}FRHa^AT-{{q=HUna}`B` z(W3JZ9(X)a>aFqWEB98c5qWwtK$|JJbb`Qh>~8pVl(}2tt`YYjW6;?I#`~lY4&@Fc zhd-dE)im>k-c{VkH0qlpR!?XRvSbiMbt%;YRQop_zvA0H7^X_0sMX4Ic@faM=3}GB zDtrZzD1-j+Cz$-LmtiwC({nFvNIw@32UEPKMw7}#Q3ioOQ|6D!1J%OMnS-C`r#4Y* zy&Y;h$1;cHsd@kgg@sSURFju4TN0rWUygog!W@Soz}mub2}3zT*_KX@SSxgStuXNu z(w#|80bJc@dgYnUe_>G*d|<^Uk0XS!j|ZbAs#ngok@pu=*I)2?5IWPmec|BAHJK!x zBL+;K6XxEdT9*3a=0UV01ihkucg_(u!>4<|p?(MXQW5#wAC+u<q^G~p_6Ej1yNTaP zBvx21mKYu+zLw}aJ)nh*6#+4nY*3=PrGVo-7a}gXk)&1kxZ<S)H@CZ*ToXem0AZ>O zqiP?U_Zxi%k*4~_4_%VSD%_|p??mJ4v^Z(oHJY9n3p`sc@dB|9;9<j*N_pw_U+WS% zoWV!mpq}PDSzy(-9yJRIg&zks{83glXidrL<yuCh0{Po@GQ`L;JuGEXzI7SfP7+E5 z>}JYr5St?XT_zxdYtjR{<Ql9Fo<}SyCiIgiQOU!I*kpQ){9KF0t~5Q3#Iyo|*hFsS zlL#B=j<)1l=9_%&DA4I(CBYC)A<^}MWKh7sh%m_NaeKirJre(R@NSz8Co-Aws;zPO zD*qJ_sii=HthqVO<%`1XCNAV}^3+HTkCw8zPt$0t@PJ=5ZIrERXHNGZ)dS4eM9#_V zftLgX#yKN$s~L8Jk1fJ_s51=Ins0e1=wZp;WeE1x1RIL@#_;UO`f`_td#Nf49|-HU z(Vdb1g|!7R)w`6A>-V#N7fQPZr#|Jji`}JW{G{0DWbBtB-+!$jbP!lfHyHT2KjI|p z|9bx3(e?Sccw`eIR+eYU15GYLb=e!PRJK?lSI_WX#ROaw+v>Bc<<MmaY>jd>5nBX- zfPE9;B%51VQzfw&-GdFVNDMUuIH0KkW(NoK2~TY!LOZ~KBUoysJnePgG%vkdN2YOo z1YQy65bwU0O;0%Q#P*bN?X{1y&cin#M<k_4=nxP{IZ>W&b5MC*h7Ms}q$%ojEe>KK z<4QL$l#T^SA~nB~qf{g*o2RI3YK+k|YmQLxQ;8-)mI`FEs6{a>p#0h0pD1Rum=AVl za;>;MFI6f}!LC7aLFr=yGLU2Dnn29sCqrO@${o%Sd5R_Effn>;fPB=f-?@Fu5qZIa zMB_)|;iq)XVXHNHl-gfzcY5Y1k-BGt0~ToGcew5kvMW3hx(SJz#MFaVhDSWl!L2ZL z`fJ8)bm3PZp+bXo)`l{#_^znu4fqIX(*T97-?A|A`}LD}#f0knL?fAF!3|Yq+6Ju9 z(v6##O5!FkWR#QXAR-bh0#X&uReVhJwkw!q=8qGO7Z3q2hgD|yDXOaTl@UhEqzTjw zIYk&tcEZIcWDucT@YZ!9prY&?Bl+=3BombdCVqWE$OZHF+>%rG(rP7HI+6)99%X{U z%kQM9dqw)7$ox&_;yR%#0ye{^=M<4%Pzl3(sDTdr;a2b=5rO0y9xvW-du)H2Ei0qP zR0^~PS(T*O>15D@<-AlEOB^8ycH;>4Aul1dz5Jbcsq1-#h}Dg+pYVl#77?7jE=RsP z90mKlJ$*&*?i}{)cK=?TRwHJa8~c|bqD=+T`KQa4r_YZ$irS=Rm3A7TkgSEsgjVmJ zMIUlFRl!)*y4LFcvT>$KthVooV@e%319TV5+=96bY`i`XnSna_V*<6LZk(N5n_z7} zS^)|gv-;%%V&5o-luluHIo%}h@nDXJ9w5Oyg20WeE6eA>4CV=`=oSIPUj%L>e&c;e z=nDp{5E*LTDhy$pVuxjx(okUIK&EO-lT1qXk^TIMw^LlSX*si(fuKOZ1uioGG-`AG z7e{UG{}{D7nEvgk{ohCpW9R<=bJYI-e7fdf`lsJYPS$_7Ln`gKJ%K)^_d<Iq1wt`P zb2}-WaXbi`cq7Hn3?V_Jw6kiXpko$krdy)=?Xx?kPCtGmYb3f_`%<^}wVSj0=c=P= z$)=587Qm+p{I`VAxLEF%GFgW|x3Av{wavkrS?Q*m#~09nTX(zFGKd%g^jbR)(&oeG z+A6)hdgoMe$}4JEK@llhBfFb(V2~I<;dL1M^mLK~i~bSZ&As8?MZYetxt4w<?tN`J z7pTXGfFkH7uwr;Kl4qX=t;hJ%hDvrTs3};WUpIG8FK=SqxrZglL=;fWm-pGE9M8X% z-zO}tia|rnjuPH;ME9b);=DqSwfYgA9{sL&D``jcStQTIeFMoeaZyMp)@8h^;c!kl zH}?`}ntnwdaLiUeCrp2Zqh+1w%Na6>(E8#k+19RVUNZ$_AzIO<t~=HJYFhDk({O3k zrmuuw++ER8YaRAr6NAE3(t{t(jL2&~EE(HBse;5Z*NpBAA`b3O*NY-#89FvCDA|@X zVxW3UJ6}Kpck8-f>e9eIre4Y3A1oeDsu=>=g!^wN?b~BCidP?0{%br$Vk6O5*3gn+ z?$T;g!Enzck?2K8k#Gf`d$m4%MINYwsQ*x#!YHADOcKu}zQdvwJ!rd<ttMonG{TfY z|G;3P9zo?kqZV$(ep>GCBAFJM*f^U*<s^=ok`iZJNwhF3b0r5e?bAlcWQ;-^()0~R z9WJk;*=Qi)B9oKmkq_|faQpY>#_xmUO{-3h6I**|&Haa@#ER?edcQ`%2~)vv8Iri2 z59)_Dh_e8vf6`kM4kSv=D`Kp27Pl?ttHoSX3odkNx3c(FBmo~N!Mu@VJZ{@l)HvM6 zJZTMPGY_=aXV?bF6=xZM=FZL!<Kbm1X&H8ITp5i9E0l{|dRz|9Utu)tEri1wBe8vn z*daXb>t-3<`~CIw@bl>Ft%FmO(820(=W<7|{&+~0E66C58EH`dhxch5Ao%MO|Ae=} zIlsfsM~L{3Zb@d_2vyVg>NfT5yQ<1}L-n;zn*axWr?vi|%AwjN@Pf+D>W;$g-rB4w zaptQ-dLNaEp!>M%RbYJ1q~mp!5wbW>6hs@j$c35|Psj!m;Q9s$q>X@7s$A&YSa4R2 z!DeOaSgC_NBSf>hlB1B^5?Uw_Ck|cQRh$@GBm=m15JCv_<e5bd&C|Xwvd}>9HjtDI zgcUyet`_R3h?t>r`{G>8h%Jiop~WW1N^yu;cklKFN54-jfTxBa2Hw~$YPD#qsfk4} zLJr3sJz-U|uz(IRD0Xm8u;O0fjd=_-40Mb(#DknF$kiq0P<tWYFmGHYEGiVS-HpgY zikoyINwkTkMq?FH_XEJ*FMVhi13~1$v9Ce%Yz$r=W~PMOBR-D<Wy=P&k<z>OLPR=< z%sNIF6zcD5uN;fJHS34>mAt0f$_eTgBUA0mqXqE+>=g+)Bx!A<AQ0swzVUo<`Fb;c zHGj6A+3^f`82Q>e#y|$4$sQ{i0*XZdCOPz#DRXxyFZx~a=eOKB!wb+Sa`2{d%36*k z##G#-MDVg1$-Q~7L<CmqgM!2}O~Sy&$EVA{-lG@ay;r5T9Z%QUFUhUDt?3Wk>`ea} zN^Zw950)ZFCMhW&M+|1^yE+InFf8T?=LNsH#TTe696V$s_HGo|%_x7=Knv^qe1yXK z;7fsc{3A)>+HtTIe$^-zW0>k~gwFFZEn2E~(aHy&XzFMwZ~;NF{0uXbDLyqDxZnN7 zt=0Sl2<$o>8Emq^=XXxr&iQ)9a?PEfRMA}N#xBc1cAWm{l^MVw8qfw)MT~P9&};qr zUKF`n#00fO(zS&ue@>h1>I4@ujE2COUVLiTvsZFFb%%@PM|6s||H|6iY*kl}c{%&Y zLM_4o(6)yk{fH$-pl9&#+HZYhVX|Ir(|Dk@r-csbRP|$*6>u$fHi}y~MTB_2jA|Sl zigT-Wqu9(S&(eP>6Ee;)Wu=mrT~RL-H9-cH1g{%-Q7s;nMns6>EB>x;P=n9KjC~dn z7mRg#4T*SX;qy_xz5oFJD&NDHOk#nH?yLcFNHJr&C_xy))EUg1Q+ZY={8TD{cXX(3 z*gBF>yFu9&t&w^@c)wl&mISd8<JD;o0n}aj(gbi1IfxIs&WUWO!=dHDBsZlMVp*}> z)f0M3+f8@+y?9`gWUdlmQeg^C6>56`gz>JkL6|Vt-^AP%s8lh(Ya1J7xhP#)%a9I! zM*)bYDKu~&=@EvZ^(Ue$kpoPg(2cVEc4spvc0%|D@hwIl7mMBSxZUv1he-7;IU7Fb zz>O#pA1!lP@!}ZE;(-e9VnDp~q%6q_V9S^AagA_Bhcz3G2gB}8!CCDD(b2Cnd}tvU zAqtrhxMRy8nm0Xc`Wke#K?$Jv@&3#p$wTTkc(&u4&MZ3_qft(S6hU(2hVzqh0+S=5 zNLwLoIjGQ6EhDUDM!QxDp?kVlbK&Xv1sIB`BCCqv$SFj*Wmm4WyD5L$SfT0D)krq- zpfEycc$>7F#zN!q%;y>reKl(H!!!2bQrTffwY!Z4F*xJN=K(*K!_im${@GDAbRpJ` zcA7h~m*S${xH1{YWIKc<D7EwGu~dV>F(k4?&7HNpWa<%EYP_@RJeZuTI56nfVB^EL zYMjq9&LaQBW(_l&>&iJWB>oF&kuNUlIJ^q3A$*`64xDJsUw3B~=2$A6FTZ3o2xtHM z5y*M_(tM@CYl5%(1@)royl}sD64((nnMDe6xIi9C5T%SALKy-XJT&6#J#|+)>duSn z`AIQLu5bS8Ci?IE$T3?Ts3x<}+hri_BajdzV1)UxQZl$V3iw*+2hWs==-05xqmCsu zMNVY%aN*ML(5h&Ev&xMJwn4tLWdjAjHeWxGLJ5on$S&-yqK8ug{(Xkpqgbu=gCzFD zo|~qS=3^7``Wh2OK^Zw4qWb4W5<M}0df?k*69%C5W?bvz5bo$@VYbq=TYea!2dx_S zo3UdS7ZZi1TjK`Up<%>pdMcRx9mXGVzhs%NQYjg(I1(dnJPFd2AGX*h@#}0OAFJU? z27!Ri!n44>{=R;mfnNT_0_heS@PT>HE+8~8GyRaAkedhFz4b5~dx+fmvr!BAFe+m_ zNJY2HIhv>l5a*wbjAKIWUP4_&zUE`bB+0@R*}kiSpd+H#NV?mte3@$IlPc$5_Csxs zHzqvOwLkDb#cqL{14l)ef4{COrk_?na^5t5EPog#AGZ6H6&v$EG+?}Lw+o0$qh73& z3f#^SVKthC^1w0czrN|gxL{kvzcS#p@)a8Kf|TvAGw>6v(z(X@OAI=a2(`v#<Imor z1*s{^8x#aJBxTC$>uLa&`HF_8DHTIu{g_cHUjTSh`8T;sQC-sv4|&KQ3)CKxlamZ~ z@KFyV?Hj%lDxl6WIjr?s<!-u8;!CsM)TTDRZ<DjDX+XgA(Zk?T(P`7galS2q{eUCm znWLG(tNsMH8^}#+L|xO<M@1L(kd871)p3yv1+pl)#HU`k=6Miov&8MCHQ5w=0JIXx zIymrCSxz64lpPX7&G~j%UX;&Y#)H+RBMP{%I{-SK@MgUi85v%UIwI|hN|_2Gf75R= zsaoN|_RYXOM+>{gJb7Q4C}+FGGhgs_c!SLgv&cD3tu`R0=cIk+#K$t>k~HUakD74D zBrNO712hTwoMq$MNtdx*Qj~f2Gv($@zpA?Fx$f<J6P#l{?%$><&Bd-kT3m5d?SQj$ za_Y`Y>LoZtJ=95@T$?$TGTBN%0A(vNxu7^vlPF$035mS>jDUov?wb`4<{$7~Dp*Vs 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%0DNY*a!Bmz>z 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�I*uD`Xj$G%HNA(BRz$%7lChat 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�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≈S_n<K_0vnTS0bT1i@#bP}M=_ON@3;f0C#XXh{;SQ# z?j@4FzdrPU85aO-{Y@w8I{fubCH_8iHrB1b?Th;K^%6JrHs`uD@#vc))bdS4ie@Vc z<Foe*sW<MMocY187&NuDh`bP1bk!0ZSEv@i<15E=ghf$q$&7J~$|eHLN*f)*#pJfd z@?0q#a)DTq%>7so+Gb^AgwIvxAB3B{?(pO)#Qv7K+nvro<`)E;)KpIRQFb0H`lrk^ zw0WacPo7n}2?I<#p?nTlYnf5JJj6O;;s)MdFVz?CkLA~!{UkBT84@v|zXsc>XjeFX zPphznQmMv0EyawvKr2N+p)LjR;Fs<uFQL-(#eUqgIdiQJ+2mYpHqhmS70ZYZ8fCw4 z%oMzvsu?(k3Kn4^IW+-m%{+lVdYZ-aG|<20n|A7Wt2d<3G!&nZuqK}U2~T)oipdWD zct2WHai&&6#2qU-kfyHiH~~w-W-Zjz0Tf+8Jh@!WZ6xoh>JVn{DjZhtE~98cjv1_J zUf2fjob<W2Tw6S;#X&}-wgi4My5oJ%W}l-(_JA>S8iehvl^FeD%#Ku1y>D-#pkS<h z=m63qpSWgC``a$QamJ)=Cir~nh=8@0S=+yG1jqw}4gris>!gWBz_+GU;d>y*G@}9O z+&APGO@OLma2vi?l*7_P3p=Y~GF%|*T&z{flsXRoa*d<k;D+O^aFTZhyg68;qgH{P zS1cpK8(y^WyDZxHE4ft=wv)=VfsQHum1`FA8Vw$k7ZsBAB44E&`GC;s#Cz6zejbo0 z1mL_UT83(hN{TEdY-0Rjuy7mQcrP3`K%c5qzlzU-afpg3_d7IgVy6kDz=%8C*pP17 zhFn6y+$;=K>>|0|>?v3{aO_FjMQ19$I94kL@_yRNMW9WV!ia!~;CoIp0vfi+o25%E z0pHZjGoV|7+l@dJ7sh8WUW@$A`5yXS+tG-H_f9^>sFco=?k*)aV{6qU{nsk6V7KVt zn`K%^cZ!@tw7K-%FZ%)<VP3I}3jn3aMw{<17LGLZh|z3`l8kN>DT+2UVJvrH4Q~qq zDEcCwjgVoLg1aVES8<6OV*0BJoHV0YHdAsArMdH(=&)daD%{@G0IG!2EtOL%$>;!< z9cXR8kNVe1vY!So9}Pg!gydX{>qbZm=l}}<nDq2xv$LQz)MiY=h0g>6-1+sE6=cff z#>R8KDGW9Jre28)1BsR<(0n$yI-W|tdg^YS@dZ`*VssobP-C%Hw~|s!Q4d?JUP?1j zlf7?MuI2XrrcGJGIyEQoDHFi@o<Wd}2iw>+=r;UBLkJecNIi`@I-!{1JdmmghXj%2 zvW5hkTvul!4N+;x&Pf89cMb%vJ}umqX=^Id#TuNfsHt({^)t1At1>z*uIyPp+{6Fb z)U_xvzXOL9L7pc@3(yI~XPC5b&s@0rtd+Xw(YEKp8dg1<PM8b}&g)dKP=7dj;L}}a zeTW^&N#{a~rB+r?DRq~1Sxfwx%;uuPYKQ@H91{~}hI4<+%JM*hkWw9IB@zBAK7l3a z2Nn{~_-j4ZW4wh*j&grUA&Rt$8`KXUh!Ykd5>h~#pq(&+*}4!{NAh@ZHlwb@xyVNm z3%BU8vd78n!z|2{{wpc!Bfx?QQ%4+Z<vJ`qWW)Hxw{I|k6Y$>m087t`B$LSXm()#G zV|J@6S9N`P+LmIg@2-9}2s-G>w(YO&z}A^~(AxT#+1VoSKF>OWk6OEp^fpX|W7bU6 z<Q6IC>Gf=WRxgs!d&BeuORvnPwfNQL5Gi#BHn-$RC<byS)=WiLC;elB!RTZ;G8-Kj zd}m<ZpBkS(4G&oYBT<*x1NV&?HgV&55$n*~E(L-I#1na5Z(=enVT@)XqDS)a$q2}a zJzI}Q!9%~cbGxFxE~~K~^a!-x#7rp`{iZX@`Ib2x9pwiwO48CUn}0)R^SCxr`ov^) zi4?Y(;R&#UFmEE54Jy1c9CMb4Xku~F_FVtiocnX8g%0Doo7`9Vi&-ERsoj{++FZZL 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 GpZ*`euuoY4
new file mode 100644 --- /dev/null +++ b/pom.xml @@ -0,0 +1,152 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 + http://maven.apache.org/xsd/maven-4.0.0.xsd" + xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <modelVersion>4.0.0</modelVersion> + + <groupId>monetdb</groupId> + <artifactId>monetdb-jdbc</artifactId> + <version>2.23</version> + <name>${project.groupId}:${project.artifactId}</name> + <description>MonetDB JDBC driver</description> + <url>https://www.monetdb.org</url> + + <licenses> + <license> + <name>Mozilla Public License, Version 2.0</name> + <url>https://www.mozilla.org/MPL/2.0/</url> + </license> + </licenses> + + <developers> + <developer> + <name>Sjoerd Mullender</name> + <email>sjoerd@monetdb.org</email> + <organization>MonetDB</organization> + <organizationUrl>https://www.monetdb.org</organizationUrl> + </developer> + <developer> + <name>Dimitar Nedev</name> + <email>dimitar.nedev@monetdbsolutions.com</email> + <organization>MonetDB Solutions</organization> + <organizationUrl>https://www.monetdbsolutions.com</organizationUrl> + </developer> + </developers> + + <distributionManagement> + <snapshotRepository> + <id>ossrh</id> + <url>https://oss.sonatype.org/content/repositories/snapshots</url> + </snapshotRepository> + <repository> + <id>ossrh</id> + <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url> + </repository> + </distributionManagement> + + <scm> + <connection>scm:hg:https://dev.monetdb.org/hg/MonetDB/</connection> + <developerConnection>scm:hg:ssh://hg@dev.monetdb.org/MonetDB/</developerConnection> + <url>https://dev.monetdb.org/hg/MonetDB/</url> + </scm> + + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <jdbc.sources>nl/cwi/monetdb/jdbc/**/*.java</jdbc.sources> + <mcl.sources>nl/cwi/monetdb/mcl/**/*.java</mcl.sources> + </properties> + + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <version>3.2</version> + <configuration> + <includes> + <include>${jdbc.sources}</include> + <include>${mcl.sources}</include> + </includes> + <source>1.7</source> + <target>1.7</target> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-source-plugin</artifactId> + <version>2.2.1</version> + <executions> + <execution> + <id>attach-sources</id> + <goals> + <goal>jar-no-fork</goal> + </goals> + </execution> + </executions> + <configuration> + <includes> + <include>${jdbc.sources}</include> + <include>${mcl.sources}</include> + </includes> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + <version>2.9.1</version> + <executions> + <execution> + <id>attach-javadocs</id> + <goals> + <goal>jar</goal> + </goals> + </execution> + </executions> + <configuration> + <sourceFileIncludes> + <include>${jdbc.sources}</include> + <include>${mcl.sources}</include> + </sourceFileIncludes> + <additionalparam>-Xdoclint:none</additionalparam> + </configuration> + </plugin> + <plugin> + <groupId>org.sonatype.plugins</groupId> + <artifactId>nexus-staging-maven-plugin</artifactId> + <version>1.6.3</version> + <extensions>true</extensions> + <configuration> + <serverId>ossrh</serverId> + <nexusUrl>https://oss.sonatype.org/</nexusUrl> + <autoReleaseAfterClose>false</autoReleaseAfterClose> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-release-plugin</artifactId> + <version>2.5</version> + <configuration> + <autoVersionSubmodules>true</autoVersionSubmodules> + <useReleaseProfile>false</useReleaseProfile> + <releaseProfiles>release</releaseProfiles> + <goals>deploy</goals> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-gpg-plugin</artifactId> + <version>1.5</version> + <executions> + <execution> + <id>sign-artifacts</id> + <phase>verify</phase> + <goals> + <goal>sign</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + +</project>
new file mode 100644 --- /dev/null +++ b/release.txt @@ -0,0 +1,95 @@ +RELEASE NOTES +MonetDB JDBC driver version 2.23 (Liberica/MCL-1.13) +Release date: 2016-07-13 + +This JDBC driver is designed for use with MonetDB, a main-memory +database. For more information see https://www.monetdb.org/. + +Within the current implementation not all functionalities of the JDBC +interface are available. It is believed, however, that this +implementation is rich enough to be suitable for a majority of +application settings. +Note that this driver is JDBC4 compatible, and hence cannot be compiled +with Java 1.5 and earlier. +As of Jul2015 release we compile the java sources to target: Java 1.7. + +Below a list of supported features can be found. Please read this list +if you intend to use this driver. + +If you feel some features are missing or have encountered an issue/bug, +please let us know at our bugtracker: + https://bugs.monetdb.org/Developers/ReportingABug + +Currently implemented JDBC interfaces: + * java.sql.Driver + + * javax.sql.DataSource (not tested) + + * java.sql.Connection + The next features/methods are NOT implemented: + - createStatement with result set holdability + - nativeSQL (there is no query parsing for JDBC escapes yet) + - prepareCall (CallableStatement not supported) + - prepareStatement with column indices or names + - setCatalog (there is no catalog) + - setHoldability (close/hold cursors over commit is not + configurable) + - isReadOnly/setReadOnly (updateable result sets are not supported at + all) + - createArrayOf + - createBlob, createClob, createNClob + - createStruct + - createSQLXML + NOTE: be sure to check for warnings after setting concurrencies or + isolation levels; MonetDB currently does not support anything + else but "fully serializable" transactions. + + * java.sql.DatabaseMetaData + + * java.sql.Statement + The next features/methods are NOT implemented: + - cancel/getQueryTimeout/setQueryTimeout (query execution cannot be + terminated, once started) + - execute with column indices or names + - executeUpdate with column indices or names + - getMaxFieldSize/setMaxFieldSize + - setCursorName + - setEscapeProcessing + + * java.sql.PreparedStatement + The next features/methods are NOT implemented: + - setArray + - setAsciiStream, setBinaryStream, setUnicodeStream + - setBlob, setNClob, setNString + - setRef, setRowId, setSQLXML, setURL + + * java.sql.ParameterMetaData + + * java.sql.ResultSet + The next features/methods are NOT implemented: + - getArray + - getAsciiStream, getBinaryStream, getUnicodeStream + - getRef, getURL + - all methods related to updateable result sets + + * java.sql.ResultSetMetaData + + * java.sql.SavePoint + + * java.sql.Blob + A simple implementation using a byte[] to store the whole BLOB + The next features/methods are NOT implemented: + - setBinaryStream + + * java.sql.Clob + A simple implementation using a StringBuilder to store the whole CLOB + The next features/methods are NOT implemented: + - getAsciiStream + - getCharacterStream + - setAsciiStream + - setCharacterStream + + +- Auto-commit behaviour is defined by the server which handles the + auto-commit. This is in general in line with the JDBC standard. +
new file mode 100644 --- /dev/null +++ b/src/main/java/nl/cwi/monetdb/client/JMonetDB.java @@ -0,0 +1,142 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +package nl.cwi.monetdb.client; + +import nl.cwi.monetdb.util.*; +import nl.cwi.monetdb.merovingian.*; +import java.io.*; +import java.util.*; + +/** + * This program mimics the monetdb tool. It is meant as demonstration + * and test of the MeroControl library. + * + * @author Fabian Groffen + * @version 1.0 + */ + +public class JMonetDB { + private static PrintWriter out; + + public final static void main(String[] args) throws Exception { + CmdLineOpts copts = new CmdLineOpts(); + + // arguments which take exactly one argument + copts.addOption("h", "host", CmdLineOpts.CAR_ONE, "localhost", + "The hostname of the host that runs the MonetDB server. " + + "A port number can be supplied by use of a colon, i.e. " + + "-h somehost:12345."); + copts.addOption("p", "port", CmdLineOpts.CAR_ONE, "50000", + "The port number to connect to."); + copts.addOption("P", "passphrase", CmdLineOpts.CAR_ONE, null, + "The passphrase to tell the MonetDB server"); + copts.addOption("c", "command", CmdLineOpts.CAR_ONE_MANY, null, + "The command to execute on the MonetDB server"); + + // arguments which have no argument(s) + copts.addOption(null, "help", CmdLineOpts.CAR_ZERO, null, + "This help screen."); + + // extended options + copts.addOption(null, "Xhash", CmdLineOpts.CAR_ONE, null, + "Use the given hash algorithm during challenge response. " + + "Supported algorithm names: SHA256, SHA1, MD5."); + // arguments which can have zero or one argument(s) + copts.addOption(null, "Xdebug", CmdLineOpts.CAR_ONE, null, + "Writes a transmission log to disk for debugging purposes. " + + "A file name must be given."); + + try { + copts.processArgs(args); + } catch (OptionsException e) { + System.err.println("Error: " + e.getMessage()); + System.exit(1); + } + + if (copts.getOption("help").isPresent()) { + System.out.print( +"Usage java -jar jmonetdb.jar\n" + +" -h host[:port] -p port -P passphrase [-X<opt>] -c cmd ...\n" + +"or using long option equivalents --host --port --passphrase.\n" + +"Arguments may be written directly after the option like -p50000.\n" + +"\n" + +"If no host and port are given, localhost and 50000 are assumed.\n" + +"\n" + +"OPTIONS\n" + +copts.produceHelpMessage() +); + System.exit(0); + } + + out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out))); + + String pass = copts.getOption("passphrase").getArgument(); + + // we need the password from the user, fetch it with a pseudo + // password protector + if (pass == null) { + char[] tmp = System.console().readPassword("passphrase: "); + if (tmp == null) { + System.err.println("Invalid passphrase!"); + System.exit(1); + } + pass = String.valueOf(tmp); + } + + // build the hostname + String host = copts.getOption("host").getArgument(); + String sport = copts.getOption("port").getArgument(); + int pos; + if ((pos = host.indexOf(":")) != -1) { + sport = host.substring(pos + 1); + host = host.substring(0, pos); + } + int port = Integer.parseInt(sport); + + String hash = null; + if (copts.getOption("Xhash").isPresent()) + hash = copts.getOption("Xhash").getArgument(); + + if (!copts.getOption("command").isPresent()) { + System.err.println("need a command to execute (-c)"); + System.exit(1); + } + + Control ctl = null; + try { + ctl = new Control(host, port, pass); + } catch (IllegalArgumentException e) { + System.err.println(e.getMessage()); + System.exit(1); + } + // FIXME: Control needs to respect Xhash + + if (copts.getOption("Xdebug").isPresent()) { + String fname = copts.getOption("Xdebug").getArgument(); + ctl.setDebug(fname); + } + + String[] commands = copts.getOption("command").getArguments(); + if (commands[0].equals("status")) { + List<SabaothDB> sdbs; + if (commands.length == 1) { + sdbs = ctl.getAllStatuses(); + } else { + sdbs = new ArrayList<SabaothDB>(); + for (int i = 1; i < commands.length; i++) + sdbs.add(ctl.getStatus(commands[i])); + } + Iterator<SabaothDB> it = sdbs.iterator(); + while (it.hasNext()) { + SabaothDB sdb = it.next(); + System.out.println(sdb.getName() + " " + sdb.getURI()); + } + } + } +}
new file mode 100644 --- /dev/null +++ b/src/main/java/nl/cwi/monetdb/client/JdbcClient.java @@ -0,0 +1,1193 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +package nl.cwi.monetdb.client; + +import nl.cwi.monetdb.util.*; +import java.sql.*; +import java.io.*; +import java.util.*; +import java.util.zip.*; +import java.net.*; + +/** + * This program acts like an extended client program for MonetDB. Its + * look and feel is very much like PostgreSQL's interactive terminal + * program. Although it looks like this client is designed for MonetDB, + * it demonstrates the power of the JDBC interface since it built on top + * of JDBC only. + * + * @author Fabian Groffen, Martin van Dinther + * @version 1.3 + */ + +public final class JdbcClient { + + private static Connection con; + private static Statement stmt; + private static BufferedReader in; + private static PrintWriter out; + private static Exporter exporter; + private static DatabaseMetaData dbmd; + + public final static void main(String[] args) throws Exception { + CmdLineOpts copts = new CmdLineOpts(); + + // arguments which take exactly one argument + copts.addOption("h", "host", CmdLineOpts.CAR_ONE, "localhost", + "The hostname of the host that runs the MonetDB database. " + + "A port number can be supplied by use of a colon, i.e. " + + "-h somehost:12345."); + copts.addOption("p", "port", CmdLineOpts.CAR_ONE, "50000", + "The port number to connect to."); + // todo make it CAR_ONE_MANY + copts.addOption("f", "file", CmdLineOpts.CAR_ONE, null, + "A file name to use either for reading or writing. The " + + "file will be used for writing when dump mode is used " + + "(-D --dump). In read mode, the file can also be an URL " + + "pointing to a plain text file that is optionally gzip " + + "compressed."); + copts.addOption("u", "user", CmdLineOpts.CAR_ONE, System.getProperty("user.name"), + "The username to use when connecting to the database."); + // this one is only here for the .monetdb file parsing, it is + // removed before the command line arguments are parsed + copts.addOption(null, "password", CmdLineOpts.CAR_ONE, null, null); + copts.addOption("d", "database", CmdLineOpts.CAR_ONE, "", + "Try to connect to the given database (only makes sense " + + "if connecting to monetdbd)."); + copts.addOption("l", "language", CmdLineOpts.CAR_ONE, "sql", + "Use the given language, defaults to 'sql'."); + + // arguments which have no argument(s) + copts.addOption(null, "help", CmdLineOpts.CAR_ZERO, null, + "This help screen."); + copts.addOption(null, "version", CmdLineOpts.CAR_ZERO, null, + "Display driver version and exit."); + copts.addOption("e", "echo", CmdLineOpts.CAR_ZERO, null, + "Also outputs the contents of the input file, if any."); + copts.addOption("q", "quiet", CmdLineOpts.CAR_ZERO, null, + "Suppress printing the welcome header."); + + // arguments which have zero to many arguments + copts.addOption("D", "dump", CmdLineOpts.CAR_ZERO_MANY, null, + "Dumps the given table(s), or the complete database if " + + "none given."); + + // extended options + copts.addOption(null, "Xoutput", CmdLineOpts.CAR_ONE, null, + "The output mode when dumping. Default is sql, xml may " + + "be used for an experimental XML output."); + copts.addOption(null, "Xhash", CmdLineOpts.CAR_ONE, null, + "Use the given hash algorithm during challenge response. " + + "Supported algorithm names: SHA1, MD5, plain."); + // arguments which can have zero or one argument(s) + copts.addOption(null, "Xdebug", CmdLineOpts.CAR_ZERO_ONE, null, + "Writes a transmission log to disk for debugging purposes. " + + "If a file name is given, it is used, otherwise a file " + + "called monet<timestamp>.log is created. A given file " + + "never be overwritten; instead a unique variation of the " + + "file is used."); + copts.addOption(null, "Xbatching", CmdLineOpts.CAR_ZERO_ONE, null, + "Indicates that a batch should be used instead of direct " + + "communication with the server for each statement. If a " + + "number is given, it is used as batch size. i.e. 8000 " + + "would execute the contents on the batch after each 8000 " + + "statements read. Batching can greatly speedup the " + + "process of restoring a database dump."); + + // we store user and password in separate variables in order to + // be able to properly act on them like forgetting the password + // from the user's file if the user supplies a username on the + // command line arguments + String pass = null; + String user = null; + + // look for a file called .monetdb in the current dir or in the + // user's homedir and read its preferences + File pref = new File(".monetdb"); + if (!pref.exists()) + pref = new File(System.getProperty("user.home"), ".monetdb"); + if (pref.exists()) { + try { + copts.processFile(pref); + } catch (OptionsException e) { + System.err.println("Error in " + pref.getAbsolutePath() + ": " + e.getMessage()); + System.exit(1); + } + user = copts.getOption("user").getArgument(); + pass = copts.getOption("password").getArgument(); + } + + // process the command line arguments, remove password option + // first, and save the user we had at this point + copts.removeOption("password"); + try { + copts.processArgs(args); + } catch (OptionsException e) { + System.err.println("Error: " + e.getMessage()); + System.exit(1); + } + // we can actually compare pointers (objects) here + if (user != copts.getOption("user").getArgument()) pass = null; + + if (copts.getOption("help").isPresent()) { + System.out.print( + "Usage java -jar jdbcclient.jar\n" + + " [-h host[:port]] [-p port] [-f file] [-u user]\n" + + " [-l language] [-d database] [-e] [-D [table]]\n" + + " [-X<opt>]\n" + + "or using long option equivalents --host --port --file --user --language\n" + + "--dump --echo --database.\n" + + "Arguments may be written directly after the option like -p50000.\n" + + "\n" + + "If no host and port are given, localhost and 50000 are assumed. An .monetdb\n" + + "file may exist in the user's home directory. This file can contain\n" + + "preferences to use each time JdbcClient is started. Options given on the\n" + + "command line override the preferences file. The .monetdb file syntax is\n" + + "<option>=<value> where option is one of the options host, port, file, mode\n" + + "debug, or password. Note that the last one is perilous and therefore not\n" + + "available as command line option.\n" + + "If no input file is given using the -f flag, an interactive session is\n" + + "started on the terminal.\n" + + "\n" + + "OPTIONS\n" + + copts.produceHelpMessage() + ); + System.exit(0); + } else if (copts.getOption("version").isPresent()) { + // We cannot use the DatabaseMetaData here, because we + // cannot get a Connection. So instead, we just get the + // values we want out of the Driver directly. + System.out.println("JDBC Driver: v" + nl.cwi.monetdb.jdbc.MonetDriver.getDriverVersion()); + System.exit(0); + } + + in = new BufferedReader(new InputStreamReader(System.in)); + out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out))); + + // whether the semi-colon at the end of a String terminates the + // query or not (default = yes => SQL) + boolean scolonterm = true; + boolean xmlMode = "xml".equals(copts.getOption("Xoutput").getArgument()); + + // we need the password from the user, fetch it with a pseudo + // password protector + if (pass == null) { + char[] tmp = System.console().readPassword("password: "); + if (tmp == null) { + System.err.println("Invalid password!"); + System.exit(1); + } + pass = String.valueOf(tmp); + } + + user = copts.getOption("user").getArgument(); + + // build the hostname + String host = copts.getOption("host").getArgument(); + if (host.indexOf(":") == -1) { + host = host + ":" + copts.getOption("port").getArgument(); + } + + // make sure the driver is loaded + Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); + + // build the extra arguments of the JDBC connect string + String attr = "?"; + CmdLineOpts.OptionContainer oc = copts.getOption("language"); + String lang = oc.getArgument(); + if (oc.isPresent()) + attr += "language=" + lang + "&"; + // set some behaviour based on the language XQuery + if (lang.equals("xquery")) { + scolonterm = false; // no ; to end a statement + if (!copts.getOption("Xoutput").isPresent()) + xmlMode = true; // the user will like xml results, most probably + } + oc = copts.getOption("Xdebug"); + if (oc.isPresent()) { + attr += "debug=true&"; + if (oc.getArgumentCount() == 1) + attr += "logfile=" + oc.getArgument() + "&"; + } + oc = copts.getOption("Xhash"); + if (oc.isPresent()) + attr += "hash=" + oc.getArgument() + "&"; + + // request a connection suitable for MonetDB from the driver + // manager note that the database specifier is only used when + // connecting to a proxy-like service, since MonetDB itself + // can't access multiple databases. + con = null; + String database = copts.getOption("database").getArgument(); + try { + con = DriverManager.getConnection( + "jdbc:monetdb://" + host + "/" + database + attr, + user, + pass + ); + SQLWarning warn = con.getWarnings(); + while (warn != null) { + System.err.println("Connection warning: " + warn.getMessage()); + warn = warn.getNextWarning(); + } + con.clearWarnings(); + } catch (SQLException e) { + System.err.println("Database connect failed: " + e.getMessage()); + System.exit(1); + } + + try { + dbmd = con.getMetaData(); + } catch (SQLException e) { + // we ignore this because it's probably because we don't use + // SQL language + dbmd = null; + } + stmt = con.createStatement(); + + // see if we will have to perform a database dump (only in SQL mode) + if ("sql".equals(lang) && copts.getOption("dump").isPresent()) { + ResultSet tbl; + + // use the given file for writing + oc = copts.getOption("file"); + if (oc.isPresent()) + out = new PrintWriter(new BufferedWriter(new FileWriter(oc.getArgument()))); + + // we only want user tables and views to be dumped, unless a specific + // table is requested + String[] types = {"TABLE", "VIEW"}; + if (copts.getOption("dump").getArgumentCount() > 0) + types = null; + // request the tables available in the current schema in the database + tbl = dbmd.getTables(null, con.getSchema(), null, types); + + List<Table> tables = new LinkedList<Table>(); + while (tbl.next()) { + tables.add(new Table( + tbl.getString("TABLE_SCHEM"), + tbl.getString("TABLE_NAME"), + tbl.getString("TABLE_TYPE"))); + } + tbl.close(); + tbl = null; + + if (xmlMode) { + exporter = new XMLExporter(out); + exporter.setProperty(XMLExporter.TYPE_NIL, XMLExporter.VALUE_XSI); + } else { + exporter = new SQLExporter(out); + // stick with SQL INSERT INTO commands for now + // in the future we might do COPY INTO's here using VALUE_COPY + exporter.setProperty(SQLExporter.TYPE_OUTPUT, SQLExporter.VALUE_INSERT); + } + exporter.useSchemas(true); + + // start SQL output + if (!xmlMode) + out.println("START TRANSACTION;\n"); + + // dump specific table(s) or not? + if (copts.getOption("dump").getArgumentCount() > 0) { // yes we do + String[] dumpers = copts.getOption("dump").getArguments(); + for (int i = 0; i < tables.size(); i++) { + Table ttmp = tables.get(i); + for (int j = 0; j < dumpers.length; j++) { + if (ttmp.getName().equalsIgnoreCase(dumpers[j].toString()) || + ttmp.getFqname().equalsIgnoreCase(dumpers[j].toString())) + { + // dump the table + doDump(out, ttmp); + } + } + } + } else { + /* this returns everything, so including SYSTEM TABLE + * constraints */ + tbl = dbmd.getImportedKeys(null, null, null); + while (tbl.next()) { + // find FK table object + Table fk = Table.findTable(tbl.getString("FKTABLE_SCHEM") + "." + tbl.getString("FKTABLE_NAME"), tables); + + // find PK table object + Table pk = Table.findTable(tbl.getString("PKTABLE_SCHEM") + "." + tbl.getString("PKTABLE_NAME"), tables); + + // this happens when a system table has referential + // constraints + if (fk == null || pk == null) + continue; + + // add PK table dependancy to FK table + fk.addDependancy(pk); + } + tbl.close(); + tbl = null; + + // search for cycles of type a -> (x ->)+ b probably not + // the most optimal way, but it works by just scanning + // every table for loops in a recursive manor + for (Table t : tables) { + Table.checkForLoop(t, new ArrayList<Table>()); + } + + // find the graph, at this point we know there are no + // cycles, thus a solution exists + for (int i = 0; i < tables.size(); i++) { + List<Table> needs = tables.get(i).requires(tables.subList(0, i + 1)); + if (needs.size() > 0) { + tables.removeAll(needs); + tables.addAll(i, needs); + + // re-evaluate this position, for there is a new + // table now + i--; + } + } + + // we now have the right order to dump tables + for (Table t : tables) { + // dump the table + doDump(out, t); + } + } + + if (!xmlMode) + out.println("COMMIT;"); + out.flush(); + + // free resources, close the statement + stmt.close(); + // close the connection with the database + con.close(); + // completed database dump + System.exit(0); + } + + if (xmlMode) { + exporter = new XMLExporter(out); + exporter.setProperty(XMLExporter.TYPE_NIL, XMLExporter.VALUE_XSI); + } else { + exporter = new SQLExporter(out); + // we want nice table formatted output + exporter.setProperty(SQLExporter.TYPE_OUTPUT, SQLExporter.VALUE_TABLE); + } + exporter.useSchemas(false); + + try { + // use the given file for reading + boolean hasFile = copts.getOption("file").isPresent(); + boolean doEcho = hasFile && copts.getOption("echo").isPresent(); + if (hasFile) { + String tmp = copts.getOption("file").getArgument(); + int batchSize = 0; + try { + in = getReader(tmp); + } catch (Exception e) { + System.err.println("Error: " + e.getMessage()); + System.exit(1); + } + + // check for batch mode + oc = copts.getOption("Xbatching"); + if (oc.isPresent()) { + if (oc.getArgumentCount() == 1) { + // parse the number + try { + batchSize = Integer.parseInt(oc.getArgument()); + } catch (NumberFormatException ex) { + // complain to the user + throw new IllegalArgumentException("Illegal argument for Xbatching: " + oc.getArgument() + " is not a parseable number!"); + } + } + processBatch(batchSize); + } else { + processInteractive(true, doEcho, scolonterm, user); + } + } else { + if (!copts.getOption("quiet").isPresent()) { + // print welcome message + out.println("Welcome to the MonetDB interactive JDBC terminal!"); + if (dbmd != null) { + out.println("Database Server: " + dbmd.getDatabaseProductName() + + " v" + dbmd.getDatabaseProductVersion()); + out.println("JDBC Driver: " + dbmd.getDriverName() + + " v" + dbmd.getDriverVersion()); + } + out.println("Current Schema: " + con.getSchema()); + out.println("Type \\q to quit, \\h for a list of available commands"); + out.flush(); + } + processInteractive(false, doEcho, scolonterm, user); + } + + // free resources, close the statement + stmt.close(); + // close the connection with the database + con.close(); + // close the file (if we used a file) + in.close(); + } catch (Exception e) { + System.err.println("A fatal exception occurred: " + e.toString()); + e.printStackTrace(System.err); + // at least try to close the connection properly, since it will + // close all statements associated with it + try { + con.close(); + } catch (SQLException ex) { + // ok... nice try + } + System.exit(1); + } + } + + /** + * Tries to interpret the given String as URL or file. Returns the + * assigned BufferedReader, or throws an Exception if the given + * string couldn't be identified as a valid URL or file. + * + * @param uri URL or filename as String + * @return a BufferedReader for the uri + * @throws Exception if uri cannot be identified as a valid URL or + * file + */ + static BufferedReader getReader(String uri) throws Exception { + BufferedReader ret = null; + URL u = null; + + // Try and parse as URL first + try { + u = new URL(uri); + } catch (MalformedURLException e) { + // no URL, try as file + try { + ret = new BufferedReader(new FileReader(uri)); + } catch (FileNotFoundException fnfe) { + // the message is descriptive enough, adds "(No such file + // or directory)" itself. + throw new Exception(fnfe.getMessage()); + } + } + + if (ret == null) try { + HttpURLConnection.setFollowRedirects(true); + HttpURLConnection con = + (HttpURLConnection)u.openConnection(); + con.setRequestMethod("GET"); + String ct = con.getContentType(); + if ("application/x-gzip".equals(ct)) { + // open gzip stream + ret = new BufferedReader(new InputStreamReader( + new GZIPInputStream(con.getInputStream()))); + } else { + // text/plain otherwise just attempt to read as is + ret = new BufferedReader(new InputStreamReader( + con.getInputStream())); + } + } catch (IOException e) { + // failed to open the url + throw new Exception("No such host/file: " + e.getMessage()); + } catch (Exception e) { + // this is an exception that comes from deep ... + throw new Exception("Invalid URL: " + e.getMessage()); + } + + return ret; + } + + /** + * Starts an interactive processing loop, where output is adjusted to an + * user session. This processing loop is not suitable for bulk processing + * as in executing the contents of a file, since processing on the given + * input is done after each row that has been entered. + * + * @param hasFile a boolean indicating whether a file is used as input + * @param doEcho a boolean indicating whether to echo the given input + * @param user a String representing the username of the current user + * @throws IOException if an IO exception occurs + * @throws SQLException if a database related error occurs + */ + public static void processInteractive( + boolean hasFile, + boolean doEcho, + boolean scolonterm, + String user + ) + throws IOException, SQLException + { + // an SQL stack keeps track of ( " and ' + SQLStack stack = new SQLStack(); + // a query part is a line of an SQL query + QueryPart qp = null; + + String query = "", curLine; + boolean wasComplete = true, doProcess, lastac = false; + if (!hasFile) { + lastac = con.getAutoCommit(); + out.println("auto commit mode: " + (lastac ? "on" : "off")); + out.print(getPrompt(stack, true)); + out.flush(); + } + + // the main (interactive) process loop + for (long i = 1; true; i++) { + // Manually read a line, because we want to detect an EOF + // (ctrl-D). Doing so allows to have a terminator for query + // which is not based on a special character, as is the + // problem for XQuery + curLine = in.readLine(); + if (curLine == null) { + out.println(""); + if (!query.isEmpty()) { + try { + executeQuery(query, stmt, out, !hasFile); + } catch (SQLException e) { + out.flush(); + do { + if (hasFile) { + System.err.println("Error on line " + i + ": [" + e.getSQLState() + "] " + e.getMessage()); + } else { + System.err.println("Error [" + e.getSQLState() + "]: " + e.getMessage()); + } + // print all error messages in the chain (if any) + } while ((e = e.getNextException()) != null); + } + query = ""; + wasComplete = true; + if (!hasFile) { + boolean ac = con.getAutoCommit(); + if (ac != lastac) { + out.println("auto commit mode: " + (ac ? "on" : "off")); + lastac = ac; + } + out.print(getPrompt(stack, wasComplete)); + } + out.flush(); + // try to read again + continue; + } else { + // user did ctrl-D without something in the buffer, + // so terminate + break; + } + } + + if (doEcho) { + out.println(curLine); + out.flush(); + } + qp = scanQuery(curLine, stack, scolonterm); + if (!qp.isEmpty()) { + String command = qp.getQuery(); + doProcess = true; + if (wasComplete) { + doProcess = false; + // check for commands only when the previous row was + // complete + if (command.equals("\\q")) { + // quit + break; + } else if (command.startsWith("\\h")) { + out.println("Available commands:"); + out.println("\\q quits this program"); + out.println("\\h this help screen"); + if (dbmd != null) + out.println("\\d list available tables and views"); + out.println("\\d<obj> describes the given table or view"); + out.println("\\l<uri> executes the contents of the given file or URL"); + out.println("\\i<uri> batch executes the inserts from the given file or URL"); + } else if (dbmd != null && command.startsWith("\\d")) { + try { + String object = command.substring(2).trim().toLowerCase(); + if (scolonterm && object.endsWith(";")) + object = object.substring(0, object.length() - 1); + if (!object.isEmpty()) { + String schema; + int dot = object.indexOf("."); + if (dot != -1) { + // use provided schema + schema = object.substring(0, dot); + object = object.substring(dot + 1); + } else { + // use current schema + schema = con.getSchema(); + } + ResultSet tbl = dbmd.getTables(null, schema, null, null); + + // we have an object, see if we can find it + boolean found = false; + while (tbl.next()) { + String tableName = tbl.getString("TABLE_NAME"); + String schemaName = tbl.getString("TABLE_SCHEM"); + if ((dot == -1 && tableName.equalsIgnoreCase(object)) || + (schemaName + "." + tableName).equalsIgnoreCase(object)) + { + // we found it, describe it + exporter.dumpSchema(dbmd, + tbl.getString("TABLE_TYPE"), + tbl.getString("TABLE_CAT"), + schemaName, + tableName); + + found = true; + break; + } + } + tbl.close(); + + if (!found) + System.err.println("Unknown table or view: " + object); + } else { + String current_schema = con.getSchema(); + ResultSet tbl = dbmd.getTables(null, current_schema, null, null); + + // give us a list of all non-system tables and views (including temp ones) + while (tbl.next()) { + String tableType = tbl.getString("TABLE_TYPE"); + if (tableType != null && !tableType.startsWith("SYSTEM ")) + out.println(tableType + "\t" + + tbl.getString("TABLE_SCHEM") + "." + + tbl.getString("TABLE_NAME")); + } + tbl.close(); + } + } catch (SQLException e) { + out.flush(); + do { + System.err.println("Error [" + e.getSQLState() + "]: " + e.getMessage()); + // print all error messages in the chain (if any) + } while ((e = e.getNextException()) != null); + } + } else if (command.startsWith("\\l") || command.startsWith("\\i")) { + String object = command.substring(2).trim(); + if (scolonterm && object.endsWith(";")) + object = object.substring(0, object.length() - 1); + if (object.isEmpty()) { + System.err.println("Usage: '" + command.substring(0, 2) + "<uri>' where <uri> is a file or URL"); + } else { + // temporarily redirect input from in + BufferedReader console = in; + try { + in = getReader(object); + if (command.startsWith("\\l")) { + processInteractive(true, doEcho, scolonterm, user); + } else { + processBatch(0); + } + } catch (Exception e) { + out.flush(); + System.err.println("Error: " + e.getMessage()); + } finally { + // put back in redirection + in = console; + } + } + } else { + doProcess = true; + } + } + + if (doProcess) { + query += command + (qp.hasOpenQuote() ? "\\n" : " "); + if (qp.isComplete()) { + // strip off trailing ';' + query = query.substring(0, query.length() - 2); + // execute query + try { + executeQuery(query, stmt, out, !hasFile); + } catch (SQLException e) { + out.flush(); + do { + if (hasFile) { + System.err.println("Error on line " + i + ": [" + e.getSQLState() + "] " + e.getMessage()); + } else { + System.err.println("Error [" + e.getSQLState() + "]: " + e.getMessage()); + } + // print all error messages in the chain (if any) + } while ((e = e.getNextException()) != null); + } + query = ""; + wasComplete = true; + } else { + wasComplete = false; + } + } + } + + if (!hasFile) { + boolean ac = con.getAutoCommit(); + if (ac != lastac) { + out.println("auto commit mode: " + (ac ? "on" : "off")); + lastac = ac; + } + out.print(getPrompt(stack, wasComplete)); + } + out.flush(); + } + } + + /** + * Executes the given query and prints the result tabularised to the + * given PrintWriter stream. The result of this method is the + * default output of a query: tabular data. + * + * @param query the query to execute + * @param stmt the Statement to execute the query on + * @param out the PrintWriter to write to + * @param showTiming flag to specify if timing information nees to be printed + * @throws SQLException if a database related error occurs + */ + private static void executeQuery(String query, + Statement stmt, + PrintWriter out, + boolean showTiming) + throws SQLException + { + // warnings generated during querying + SQLWarning warn; + long startTime = (showTiming ? System.currentTimeMillis() : 0); + long finishTime = 0; + + // execute the query, let the driver decide what type it is + int aff = -1; + boolean nextRslt = stmt.execute(query, Statement.RETURN_GENERATED_KEYS); + if (!nextRslt) + aff = stmt.getUpdateCount(); + do { + if (nextRslt) { + // we have a ResultSet, print it + ResultSet rs = stmt.getResultSet(); + + exporter.dumpResultSet(rs); + if (showTiming) { + finishTime = System.currentTimeMillis(); + out.println("Elapsed Time: " + (finishTime - startTime) + " ms"); + startTime = finishTime; + } + + // if there were warnings for this result, + // show them! + warn = rs.getWarnings(); + if (warn != null) { + // force stdout to be written so the + // warning appears below it + out.flush(); + do { + System.err.println("ResultSet warning: " + + warn.getMessage()); + warn = warn.getNextWarning(); + } while (warn != null); + rs.clearWarnings(); + } + rs.close(); + } else if (aff != -1) { + String timingoutput = ""; + if (showTiming) { + finishTime = System.currentTimeMillis(); + timingoutput = ". Elapsed Time: " + (finishTime - startTime) + " ms"; + startTime = finishTime; + } + + if (aff == Statement.SUCCESS_NO_INFO) { + out.println("Operation successful" + timingoutput); + } else { + // we have an update count + // see if a key was generated + ResultSet rs = stmt.getGeneratedKeys(); + boolean hasGeneratedKeyData = rs.next(); + out.println(aff + " affected row" + (aff != 1 ? "s" : "") + + (hasGeneratedKeyData ? ", last generated key: " + rs.getString(1) : "") + + timingoutput); + rs.close(); + } + } + + out.flush(); + } while ((nextRslt = stmt.getMoreResults()) || + (aff = stmt.getUpdateCount()) != -1); + + // if there were warnings for this statement, + // and/or connection show them! + warn = stmt.getWarnings(); + while (warn != null) { + System.err.println("Statement warning: " + warn.getMessage()); + warn = warn.getNextWarning(); + } + stmt.clearWarnings(); + + warn = con.getWarnings(); + while (warn != null) { + System.err.println("Connection warning: " + warn.getMessage()); + warn = warn.getNextWarning(); + } + con.clearWarnings(); + } + + /** + * Starts a processing loop optimized for processing (large) chunks of + * continuous data, such as input from a file. Unlike in the interactive + * loop above, queries are sent only to the database if a certain batch + * amount is reached. No client side query checks are made, but everything + * is sent to the server as-is. + * + * @param batchSize the number of items to store in the batch before + * sending them to the database for execution. + * @throws IOException if an IO exception occurs. + */ + public static void processBatch(int batchSize) throws IOException { + StringBuilder query = new StringBuilder(); + String curLine; + int i = 0; + try { + // the main loop + for (i = 1; (curLine = in.readLine()) != null; i++) { + query.append(curLine); + if (curLine.endsWith(";")) { + // lousy check for end of statement, but in batch mode it + // is not very important to catch all end of statements... + stmt.addBatch(query.toString()); + query.delete(0, query.length()); + } else { + query.append('\n'); + } + if (batchSize > 0 && i % batchSize == 0) { + stmt.executeBatch(); + stmt.clearBatch(); + } + } + stmt.addBatch(query.toString()); + stmt.executeBatch(); + stmt.clearBatch(); + } catch (SQLException e) { + do { + System.err.println("Error at line " + i + ": [" + e.getSQLState() + "] " + e.getMessage()); + // print all error messages in the chain (if any) + } while ((e = e.getNextException()) != null); + } + } + + /** + * Wrapper method that decides to dump SQL or XML. In the latter case, + * this method does the XML data generation. + * + * @param out a Writer to write the data to + * @param table the table to dump + * @throws SQLException if a database related error occurs + */ + public static void doDump(PrintWriter out, Table table) throws SQLException { + String tableType = table.getType(); + + // dump CREATE definition of this table/view + exporter.dumpSchema(dbmd, tableType, null, table.getSchem(), table.getName()); + out.println(); + + // only dump data from real tables, not from views + if (tableType.contains("TABLE")) { + ResultSet rs = stmt.executeQuery("SELECT * FROM " + table.getFqnameQ()); + exporter.dumpResultSet(rs); + rs.close(); + out.println(); + } + } + + /** + * Simple helper method that generates a prompt. + * + * @param stack the current SQLStack + * @param compl whether the statement is complete + * @return a prompt which consist of "sql" plus the top of the stack + */ + private static String getPrompt(SQLStack stack, boolean compl) { + return (compl ? "sql" : "more") + + (stack.empty() ? ">" : "" + stack.peek()) + " "; + } + + /** + * Scans the given string and tries to discover if it is a complete query + * or that there needs something to be added. If a string doesn't end with + * a ; it is considered not to be complete. SQL string quotation using ' and + * SQL identifier quotation using " is taken into account when scanning a + * string this way. + * Additionally, this method removes comments from the SQL statements, + * identified by -- and removes white space where appropriate. + * + * @param query the query to parse + * @param stack query stack to work with + * @param scolonterm whether a ';' makes this query part complete + * @return a QueryPart object containing the results of this parse + */ + private static QueryPart scanQuery( + String query, + SQLStack stack, + boolean scolonterm) + { + // examine string, char for char + boolean wasInString = (stack.peek() == '\''); + boolean wasInIdentifier = (stack.peek() == '"'); + boolean escaped = false; + int len = query.length(); + for (int i = 0; i < len; i++) { + switch(query.charAt(i)) { + case '\\': + escaped = !escaped; + break; + default: + escaped = false; + break; + case '\'': + /** + * We can not be in a string if we are in an identifier. So + * If we find a ' and are not in an identifier, and not in + * a string we can safely assume we will be now in a string. + * If we are in a string already, we should stop being in a + * string if we find a quote which is not prefixed by a \, + * for that would be an escaped quote. However, a nasty + * situation can occur where the string is like 'test \\'. + * As obvious, a test for a \ in front of a ' doesn't hold + * here. Because 'test \\\'' can exist as well, we need to + * know if a quote is prefixed by an escaping slash or not. + */ + if (!escaped && stack.peek() != '"') { + if (stack.peek() != '\'') { + // although it makes no sense to escape a quote + // outside a string, it is escaped, thus not meant + // as quote for us, apparently + stack.push('\''); + } else { + stack.pop(); + } + } + // reset escaped flag + escaped = false; + break; + case '"': + if (!escaped && stack.peek() != '\'') { + if (stack.peek() != '"') { + stack.push('"'); + } else { + stack.pop(); + } + } + // reset escaped flag + escaped = false; + break; + case '-': + if (!escaped && stack.peek() != '\'' && stack.peek() != '"' && i + 1 < len && query.charAt(i + 1) == '-') { + len = i; + } + escaped = false; + break; + case '(': + if (!escaped && stack.peek() != '\'' && stack.peek() != '"') { + stack.push('('); + } + escaped = false; + break; + case ')': + if (!escaped && stack.peek() == '(') { + stack.pop(); + } + escaped = false; + break; + } + } + + int start = 0; + if (!wasInString && !wasInIdentifier && len > 0) { + // trim spaces at the start of the string + for (; start < len && Character.isWhitespace(query.charAt(start)); start++); + } + int stop = len - 1; + if (stack.peek() != '\'' && !wasInIdentifier && stop > start) { + // trim spaces at the end of the string + for (; stop >= start && Character.isWhitespace(query.charAt(stop)); stop--); + } + stop++; + + if (start == stop) { + // we have an empty string + return new QueryPart(false, null, stack.peek() == '\'' || stack.peek() == '"'); + } else if (stack.peek() == '\'' || stack.peek() == '"') { + // we have an open quote + return new QueryPart(false, query.substring(start, stop), true); + } else { + // see if the string is complete + if (scolonterm && query.charAt(stop - 1) == ';') { + return new QueryPart(true, query.substring(start, stop), false); + } else { + return new QueryPart(false, query.substring(start, stop), false); + } + } + } + + public static String dq(String in) { + return "\"" + in.replaceAll("\\\\", "\\\\\\\\").replaceAll("\"", "\\\\\"") + "\""; + } +} + +/** + * A QueryPart is (a part of) a SQL query. In the QueryPart object information + * like the actual SQL query string, whether it has an open quote and the like + * is stored. + */ +class QueryPart { + private boolean complete; + private String query; + private boolean open; + + public QueryPart(boolean complete, String query, boolean open) { + this.complete = complete; + this.query = query; + this.open = open; + } + + public boolean isEmpty() { + return query == null; + } + + public boolean isComplete() { + return complete; + } + + public String getQuery() { + return query; + } + + public boolean hasOpenQuote() { + return open; + } +} + +/** + * An SQLStack is a simple stack that keeps track of open brackets and + * (single and double) quotes in an SQL query. + */ +class SQLStack { + StringBuilder stack = new StringBuilder(); + + public char peek() { + if (empty()) { + return '\0'; + } else { + return stack.charAt(stack.length() - 1); + } + } + + public char pop() { + char tmp = peek(); + if (tmp != '\0') { + stack.setLength(stack.length() - 1); + } + return tmp; + } + + public char push(char item) { + stack.append(item); + return item; + } + + public boolean empty() { + return stack.length() == 0; + } +} + +/** + * A Table represents an SQL table. All data required to + * generate a fully qualified name is stored, as well as dependency + * data. + */ +class Table { + final String schem; + final String name; + final String type; + final String fqname; + List<Table> needs = new ArrayList<Table>(); + + Table(String schem, String name, String type) { + this.schem = schem; + this.name = name; + this.type = type; + this.fqname = schem + "." + name; + } + + void addDependancy(Table dependsOn) throws Exception { + if (this.fqname.equals(dependsOn.fqname)) + throw new Exception("Cyclic dependancy graphs are not supported (foreign key relation references self)"); + + if (dependsOn.needs.contains(this)) + throw new Exception("Cyclic dependancy graphs are not supported (foreign key relation a->b and b->a)"); + + if (!needs.contains(dependsOn)) + needs.add(dependsOn); + } + + List<Table> requires(List<Table> existingTables) { + if (existingTables == null || existingTables.isEmpty()) + return new ArrayList<Table>(needs); + + List<Table> req = new ArrayList<Table>(); + for (Table n : needs) { + if (!existingTables.contains(n)) + req.add(n); + } + + return req; + } + + String getSchem() { + return schem; + } + + String getSchemQ() { + return JdbcClient.dq(schem); + } + + String getName() { + return name; + } + + String getNameQ() { + return JdbcClient.dq(name); + } + + String getType() { + return type; + } + + String getFqname() { + return fqname; + } + + String getFqnameQ() { + return getSchemQ() + "." + getNameQ(); + } + + public String toString() { + return fqname; + } + + + static Table findTable(String fqname, List<Table> list) { + for (Table l : list) { + if (l.fqname.equals(fqname)) + return l; + } + // not found + return null; + } + + static void checkForLoop(Table table, List<Table> parents) throws Exception { + parents.add(table); + for (int i = 0; i < table.needs.size(); i++) { + Table child = table.needs.get(i); + if (parents.contains(child)) + throw new Exception("Cyclic dependancy graphs are not supported (cycle detected for " + child.fqname + ")"); + checkForLoop(child, parents); + } + } +}
new file mode 100644 --- /dev/null +++ b/src/main/java/nl/cwi/monetdb/jdbc/MonetBlob.java @@ -0,0 +1,299 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +package nl.cwi.monetdb.jdbc; + +import java.sql.*; +import java.util.Arrays; +import java.io.*; + +/** + * The MonetBlob class implements the {@link java.sql.Blob} interface. Because + * MonetDB/SQL currently has no support for streams, this class is a + * shallow wrapper of a byte[]. It is more or less supplied to + * enable an application that depends on it to run. It may be obvious + * that it is a real resource expensive workaround that contradicts the + * benefits for a Blob: avoidance of huge resource consumption. + * + * @author Fabian Groffen + */ +public class MonetBlob implements Blob { + private byte[] buf; + + protected MonetBlob(byte[] data) { + buf = data; + } + + static MonetBlob create(String in) { + int len = in.length() / 2; + byte[] buf = new byte[len]; + for (int i = 0; i < len; i++) + buf[i] = (byte)Integer.parseInt(in.substring(2 * i, (2 * i) + 2), 16); + return new MonetBlob(buf); + } + + + //== begin interface Blob + + /** + * This method frees the Blob object and releases the resources that + * it holds. The object is invalid once the free method is called. + * + * After free has been called, any attempt to invoke a method other + * than free will result in a SQLException being thrown. If free is + * called multiple times, the subsequent calls to free are treated + * as a no-op. + * + * @throws SQLException if an error occurs releasing the Blob's + * resources + * @throws SQLFeatureNotSupportedException - if the JDBC driver does + * not support this method + */ + @Override + public void free() throws SQLException { + buf = null; + } + + /** + * Retrieves the BLOB value designated by this Blob instance as a + * stream. + * + * @return a stream containing the BLOB data + * @throws SQLException if there is an error accessing the BLOB value + * @throws SQLFeatureNotSupportedException if the JDBC driver does + * not support this method + */ + @Override + public InputStream getBinaryStream() throws SQLException { + if (buf == null) + throw new SQLException("This Blob object has been freed", "M1M20"); + return new ByteArrayInputStream(buf); + } + + /** + * Returns an InputStream object that contains a partial Blob value, + * starting with the byte specified by pos, which is length bytes in + * length. + * + * @param pos the offset to the first byte of the partial value to + * be retrieved. The first byte in the Blob is at position 1 + * @param length the length in bytes of the partial value to be + * retrieved + * @return InputStream through which the partial Blob value can be + * read. + * @throws SQLException if pos is less than 1 or if pos is + * greater than the number of bytes in the Blob or if pos + + * length is greater than the number of bytes in the Blob + * @throws SQLFeatureNotSupportedException if the JDBC driver does + * not support this method + */ + @Override + public InputStream getBinaryStream(long pos, long length) + throws SQLException + { + if (buf == null) + throw new SQLException("This Blob object has been freed", "M1M20"); + if (pos < 1) + throw new SQLException("pos is less than 1", "M1M05"); + if (pos - 1 > buf.length) + throw new SQLException("pos is greater than the number of bytes in the Blob", "M1M05"); + if (pos - 1 + length > buf.length) + throw new SQLException("pos + length is greater than the number of bytes in the Blob", "M1M05"); + return new ByteArrayInputStream(buf, (int)(pos - 1), (int)length); + } + + /** + * Retrieves all or part of the BLOB value that this Blob object + * represents, as an array of bytes. This byte array contains up to + * length consecutive bytes starting at position pos. + * + * @param pos the ordinal position of the first byte in the BLOB + * value to be extracted; the first byte is at position 1. + * @param length the number of consecutive bytes to be copied + * @return a byte array containing up to length consecutive bytes + * from the BLOB value designated by this Blob object, + * starting with the byte at position pos. + * @throws SQLException if there is an error accessing the + * BLOB value + */ + @Override + public byte[] getBytes(long pos, int length) throws SQLException { + if (buf == null) + throw new SQLException("This Blob object has been freed", "M1M20"); + try { + return Arrays.copyOfRange(buf, (int) pos - 1, (int) pos - 1 + length); + } catch (IndexOutOfBoundsException e) { + throw new SQLException(e.getMessage(), "M0M10"); + } + } + + /** + * Returns the number of bytes in the BLOB value designated by this + * Blob object. + * + * @return length of the BLOB in bytes + * @throws SQLException if there is an error accessing the length + * of the BLOB value + */ + @Override + public long length() throws SQLException { + if (buf == null) + throw new SQLException("This Blob object has been freed", "M1M20"); + return (long)buf.length; + } + + /** + * Retrieves the byte position in the BLOB value designated by this + * Blob object at which pattern begins. The search begins at + * position start. + * + * @param pattern the Blob object designating the BLOB value for + * which to search + * @param start the position in the BLOB value at which to begin + * searching; the first position is 1 + * @return the position at which the pattern begins, else -1 + * @throws SQLException if there is an error accessing the + * BLOB value + */ + @Override + public long position(Blob pattern, long start) throws SQLException { + return position(pattern.getBytes(1L, (int)pattern.length()), start); + } + + /** + * Retrieves the byte position at which the specified byte array + * pattern begins within the BLOB value that this Blob object + * represents. The search for pattern begins at position start. + * + * @param pattern the byte array for which to search + * @param start the position at which to begin searching; + * the first position is 1 + * @return the position at which the pattern appears, else -1 + * @throws SQLException if there is an error accessing the + * BLOB value + */ + @Override + public long position(byte[] pattern, long start) throws SQLException { + if (buf == null) + throw new SQLException("This Blob object has been freed", "M1M20"); + try { + for (int i = (int)(start - 1); i < buf.length - pattern.length; i++) { + int j; + for (j = 0; j < pattern.length; j++) { + if (buf[i + j] != pattern[j]) + break; + } + if (j == pattern.length) + return i; + } + } catch (IndexOutOfBoundsException e) { + throw new SQLException(e.getMessage(), "M0M10"); + } + return -1; + } + + /** + * Retrieves a stream that can be used to write to the BLOB value + * that this Blob object represents. The stream begins at position + * pos. The bytes written to the stream will overwrite the existing + * bytes in the Blob object starting at the position pos. If the end + * of the Blob value is reached while writing to the stream, then + * the length of the Blob value will be increased to accomodate the + * extra bytes. + * + * @param pos the position in the BLOB value at which to start + * writing; the first position is 1 + * @return a java.io.OutputStream object to which data can be + * written + * @throws SQLException if there is an error accessing the BLOB + * value or if pos is less than 1 + * @throws SQLFeatureNotSupportedException if the JDBC driver does + * not support this method + */ + @Override + public OutputStream setBinaryStream(long pos) throws SQLException { + if (buf == null) + throw new SQLException("This Blob object has been freed", "M1M20"); + if (pos < 1) + throw new SQLException("pos is less than 1", "M1M05"); + throw new SQLFeatureNotSupportedException("Operation setBinaryStream(long pos) currently not supported", "0A000"); + } + + /** + * Writes the given array of bytes to the BLOB value that this Blob + * object represents, starting at position pos, and returns the + * number of bytes written. + * + * @param pos the position in the BLOB object at which to start + * writing + * @param bytes the array of bytes to be written to the BLOB value + * that this Blob object represents + * @return the number of bytes written + * @throws SQLException if there is an error accessing the + * BLOB value + */ + @Override + public int setBytes(long pos, byte[] bytes) throws SQLException { + return setBytes(pos, bytes, 1, bytes.length); + } + + /** + * Writes all or part of the given byte array to the BLOB value that + * this Blob object represents and returns the number of bytes + * written. Writing starts at position pos in the BLOB value; len + * bytes from the given byte array are written. + * + * @param pos the position in the BLOB object at which to start + * writing + * @param bytes the array of bytes to be written to this BLOB + * object + * @param offset the offset into the array bytes at which to start + * reading the bytes to be set + * @param len the number of bytes to be written to the BLOB value + * from the array of bytes bytes + * @return the number of bytes written + * @throws SQLException if there is an error accessing the + * BLOB value + */ + @Override + public int setBytes(long pos, byte[] bytes, int offset, int len) + throws SQLException + { + if (buf == null) + throw new SQLException("This Blob object has been freed", "M1M20"); + try { + /* transactions? what are you talking about? */ + for (int i = (int)pos; i < len; i++) + buf[i] = bytes[offset - 1 + i]; + } catch (IndexOutOfBoundsException e) { + throw new SQLException(e.getMessage(), "M0M10"); + } + return len; + } + + /** + * Truncates the BLOB value that this Blob object represents to be + * len bytes in length. + * + * @param len the length, in bytes, to which the BLOB value + * should be truncated + * @throws SQLException if there is an error accessing the + * BLOB value + */ + @Override + public void truncate(long len) throws SQLException { + if (buf == null) + throw new SQLException("This Blob object has been freed", "M1M20"); + if (buf.length > len) { + byte[] newbuf = new byte[(int)len]; + for (int i = 0; i < len; i++) + newbuf[i] = buf[i]; + buf = newbuf; + } + } +}
new file mode 100644 --- /dev/null +++ b/src/main/java/nl/cwi/monetdb/jdbc/MonetClob.java @@ -0,0 +1,265 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +package nl.cwi.monetdb.jdbc; + +import java.sql.*; +import java.io.*; + +/** + * The MonetClob class implements the {@link java.sql.Clob} interface. Because + * MonetDB/SQL currently has no support for streams, this class is a + * shallow wrapper of a {@link StringBuilder}. It is more or less supplied to + * enable an application that depends on it to run. It may be obvious + * that it is a real resource expensive workaround that contradicts the + * sole reason for a Clob: avoidance of huge resource consumption. + * <b>Use of this class is highly discouraged.</b> + * + * @author Fabian Groffen + */ +public class MonetClob implements Clob { + + private StringBuilder buf; + + protected MonetClob(String in) { + buf = new StringBuilder(in); + } + + //== begin interface Clob + + /** + * This method frees the Clob object and releases the resources the + * resources that it holds. The object is invalid once the free + * method is called. + * + * After free has been called, any attempt to invoke a method other + * than free will result in a SQLException being thrown. If free is + * called multiple times, the subsequent calls to free are treated + * as a no-op. + */ + @Override + public void free() { + buf = null; + } + + /** + * Retrieves the CLOB value designated by this Clob object as an + * ascii stream. + * + * @return a java.io.InputStream object containing the CLOB data + * @throws SQLFeatureNotSupportedException this JDBC driver does + * not support this method + */ + @Override + public InputStream getAsciiStream() throws SQLException { + throw new SQLFeatureNotSupportedException("Operation getAsciiStream() currently not supported", "0A000"); + } + + /** + * Retrieves the CLOB value designated by this Clob object as a + * java.io.Reader object (or as a stream of characters). + * + * @return a java.io.Reader object containing the CLOB data + * @throws SQLFeatureNotSupportedException this JDBC driver does + * not support this method + */ + @Override + public Reader getCharacterStream() throws SQLException { + throw new SQLFeatureNotSupportedException("Operation getCharacterStream() currently not supported", "0A000"); + } + + /** + * Returns a Reader object that contains a partial Clob value, + * starting with the character specified by pos, which is length + * characters in length. + * + * @param pos the offset to the first character of the partial value + * to be retrieved. The first character in the Clob is at + * position 1. + * @param length the length in characters of the partial value to be + * retrieved. + * @return Reader through which the partial Clob value can be read. + * @throws SQLFeatureNotSupportedException this JDBC driver does + * not support this method + */ + @Override + public Reader getCharacterStream(long pos, long length) throws SQLException { + throw new SQLFeatureNotSupportedException("Operation getCharacterStream(long, long) currently not supported", "0A000"); + } + + /** + * Retrieves a copy of the specified substring in the CLOB value + * designated by this Clob object. The substring begins at + * position pos and has up to length consecutive characters. + * + * @param pos the first character of the substring to be + * extracted. The first character is at position 1. + * @param length the number of consecutive characters to be copied + * @return a String that is the specified substring in the + * CLOB value designated by this Clob object + * @throws SQLException if there is an error accessing the + * CLOB value + */ + @Override + public String getSubString(long pos, int length) throws SQLException { + if (buf == null) + throw new SQLException("This Clob has been freed", "M1M20"); + try { + return buf.substring((int)(pos - 1), (int)(pos - 1 + length)); + } catch (IndexOutOfBoundsException e) { + throw new SQLException(e.getMessage()); + } + } + + /** + * Retrieves the number of characters in the CLOB value designated + * by this Clob object. + * + * @return length of the CLOB in characters + * @throws SQLException if there is an error accessing the length + * of the CLOB value + */ + @Override + public long length() throws SQLException { + if (buf == null) + throw new SQLException("This Clob has been freed", "M1M20"); + return (long)buf.length(); + } + + /** + * Retrieves the character position at which the specified Clob + * object searchstr appears in this Clob object. The search + * begins at position start. + * + * @param searchstr the Clob object for which to search + * @param start the position at which to begin searching; + * the first position is 1 + * @return the position at which the Clob object appears or + * -1 if it is not present; the first position is 1 + * @throws SQLException if there is an error accessing the + * CLOB value + */ + @Override + public long position(Clob searchstr, long start) throws SQLException { + return position(searchstr.getSubString(1L, (int)(searchstr.length())), start); + } + + /** + * Retrieves the character position at which the specified + * substring searchstr appears in the SQL CLOB value represented + * by this Clob object. The search begins at position start. + * + * @param searchstr the substring for which to search + * @param start the position at which to begin searching; + * the first position is 1 + * @return the position at which the substring appears or + * -1 if it is not present; the first position is 1 + * @throws SQLException if there is an error accessing the + * CLOB value + */ + @Override + public long position(String searchstr, long start) throws SQLException { + if (buf == null) + throw new SQLException("This Clob has been freed", "M1M20"); + return (long)(buf.indexOf(searchstr, (int)(start - 1))); + } + + @Override + public OutputStream setAsciiStream(long pos) throws SQLException { + if (buf == null) + throw new SQLException("This Clob has been freed", "M1M20"); + throw new SQLException("Operation setAsciiStream(long pos) currently not supported", "0A000"); + } + + @Override + public Writer setCharacterStream(long pos) throws SQLException { + if (buf == null) + throw new SQLException("This Clob has been freed", "M1M20"); + throw new SQLException("Operation setCharacterStream(long pos) currently not supported", "0A000"); + } + + /** + * Writes the given Java String to the CLOB value that this + * Clob object designates at the position pos. + * + * @param pos the position at which to start writing to the + * CLOB value that this Clob object represents + * @param str the string to be written to the CLOB value that + * this Clob designates + * @return the number of characters written + * @throws SQLException if there is an error accessing the + * CLOB value + */ + @Override + public int setString(long pos, String str) throws SQLException { + return setString(pos, str, 1, str.length()); + } + + /** + * Writes len characters of str, starting at character offset, + * to the CLOB value that this Clob represents. + * + * @param pos the position at which to start writing to this + * CLOB object + * @param str the string to be written to the CLOB value that + * this Clob object represents + * @param offset the offset into str to start reading the + * characters to be written + * @param len the number of characters to be written + * @return the number of characters written + * @throws SQLException if there is an error accessing the + * CLOB value + */ + @Override + public int setString(long pos, String str, int offset, int len) + throws SQLException + { + if (buf == null) + throw new SQLException("This Clob has been freed", "M1M20"); + + int buflen = buf.length(); + int retlen = Math.min(buflen, (int)(pos - 1 + len)); + + if (retlen > 0) { + buf.replace((int)(pos - 1), (int)(pos + retlen), str.substring(offset - 1, (offset + len))); + return retlen; + } else { + return 0; + } + } + + /** + * Truncates the CLOB value that this Clob designates to + * have a length of len characters. + * + * @param len the length, in bytes, to which the CLOB value + * should be truncated + * @throws SQLException if there is an error accessing the + * CLOB value + */ + @Override + public void truncate(long len) throws SQLException { + if (buf == null) + throw new SQLException("This Clob has been freed", "M1M20"); + // this command is a no-op + } + + /** + * Returns the String behind this Clob. This is a MonetClob + * extension that does not violate nor is described in the Clob + * interface. + * + * @return the String this Clob wraps. + */ + @Override + public String toString() { + if (buf == null) + return "<a freed MonetClob instance>"; + return buf.toString(); + } +}
new file mode 100644 --- /dev/null +++ b/src/main/java/nl/cwi/monetdb/jdbc/MonetConnection.java @@ -0,0 +1,2764 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +package nl.cwi.monetdb.jdbc; + +import java.io.File; +import java.io.IOException; +import java.net.SocketException; +import java.net.SocketTimeoutException; +import java.sql.Array; +import java.sql.Blob; +import java.sql.CallableStatement; +import java.sql.Clob; +import java.sql.Connection; +import java.sql.DatabaseMetaData; +import java.sql.NClob; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.SQLFeatureNotSupportedException; +import java.sql.SQLWarning; +import java.sql.SQLXML; +import java.sql.Savepoint; +import java.sql.Statement; +import java.sql.Struct; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Properties; +import java.util.WeakHashMap; +import java.util.concurrent.Executor; +import java.util.concurrent.locks.Condition; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +import nl.cwi.monetdb.jdbc.types.INET; +import nl.cwi.monetdb.jdbc.types.URL; +import nl.cwi.monetdb.mcl.MCLException; +import nl.cwi.monetdb.mcl.io.BufferedMCLReader; +import nl.cwi.monetdb.mcl.io.BufferedMCLWriter; +import nl.cwi.monetdb.mcl.net.MapiSocket; +import nl.cwi.monetdb.mcl.parser.HeaderLineParser; +import nl.cwi.monetdb.mcl.parser.MCLParseException; +import nl.cwi.monetdb.mcl.parser.StartOfHeaderParser; + +/** + * A {@link Connection} suitable for the MonetDB database. + * + * This connection represents a connection (session) to a MonetDB + * database. SQL statements are executed and results are returned within + * the context of a connection. This Connection object holds a physical + * connection to the MonetDB database. + * + * A Connection object's database should able to provide information + * describing its tables, its supported SQL grammar, its stored + * procedures, the capabilities of this connection, and so on. This + * information is obtained with the getMetaData method. + * + * Note: By default a Connection object is in auto-commit mode, which + * means that it automatically commits changes after executing each + * statement. If auto-commit mode has been disabled, the method commit + * must be called explicitly in order to commit changes; otherwise, + * database changes will not be saved. + * + * The current state of this connection is that it nearly implements the + * whole Connection interface. + * + * @author Fabian Groffen + * @version 1.2 + */ +public class MonetConnection extends MonetWrapper implements Connection { + /** The hostname to connect to */ + private final String hostname; + /** The port to connect on the host to */ + private final int port; + /** The database to use (currently not used) */ + private final String database; + /** The username to use when authenticating */ + private final String username; + /** The password to use when authenticating */ + private final String password; + /** A connection to mserver5 using a TCP socket */ + private final MapiSocket server; + /** The Reader from the server */ + private final BufferedMCLReader in; + /** The Writer to the server */ + private final BufferedMCLWriter out; + + /** A StartOfHeaderParser declared for reuse. */ + private StartOfHeaderParser sohp = new StartOfHeaderParser(); + + /** Whether this Connection is closed (and cannot be used anymore) */ + private boolean closed; + + /** Whether this Connection is in autocommit mode */ + private boolean autoCommit = true; + + /** The stack of warnings for this Connection object */ + private SQLWarning warnings = null; + /** The Connection specific mapping of user defined types to Java + * types */ + private Map<String,Class<?>> typeMap = new HashMap<String,Class<?>>() {/** + * + */ + private static final long serialVersionUID = 1L; + { + put("inet", INET.class); + put("url", URL.class); + } + }; + + // See javadoc for documentation about WeakHashMap if you don't know what + // it does !!!NOW!!! (only when you deal with it of course) + /** A Map containing all (active) Statements created from this Connection */ + private Map<Statement,?> statements = new WeakHashMap<Statement, Object>(); + + /** The number of results we receive from the server at once */ + private int curReplySize = -1; // the server by default uses -1 (all) + + /** A template to apply to each query (like pre and post fixes) */ + String[] queryTempl; + /** A template to apply to each command (like pre and post fixes) */ + String[] commandTempl; + + /** the SQL language */ + final static int LANG_SQL = 0; + /** the MAL language (officially *NOT* supported) */ + final static int LANG_MAL = 3; + /** an unknown language */ + final static int LANG_UNKNOWN = -1; + /** The language which is used */ + final int lang; + + /** Whether or not BLOB is mapped to BINARY within the driver */ + private final boolean blobIsBinary; + + /** + * Constructor of a Connection for MonetDB. At this moment the + * current implementation limits itself to storing the given host, + * database, username and password for later use by the + * createStatement() call. This constructor is only accessible to + * classes from the jdbc package. + * + * @param props a Property hashtable holding the properties needed for + * connecting + * @throws SQLException if a database error occurs + * @throws IllegalArgumentException is one of the arguments is null or empty + */ + MonetConnection(Properties props) + throws SQLException, IllegalArgumentException + { + this.hostname = props.getProperty("host"); + int port; + try { + port = Integer.parseInt(props.getProperty("port")); + } catch (NumberFormatException e) { + port = 0; + } + this.port = port; + this.database = props.getProperty("database"); + this.username = props.getProperty("user"); + this.password = props.getProperty("password"); + String language = props.getProperty("language"); + boolean debug = Boolean.valueOf(props.getProperty("debug")).booleanValue(); + String hash = props.getProperty("hash"); + blobIsBinary = Boolean.valueOf(props.getProperty("treat_blob_as_binary")).booleanValue(); + int sockTimeout = 0; + try { + sockTimeout = Integer.parseInt(props.getProperty("so_timeout")); + } catch (NumberFormatException e) { + sockTimeout = 0; + } + // check input arguments + if (hostname == null || hostname.trim().equals("")) + throw new IllegalArgumentException("hostname should not be null or empty"); + if (port == 0) + throw new IllegalArgumentException("port should not be 0"); + if (username == null || username.trim().equals("")) + throw new IllegalArgumentException("user should not be null or empty"); + if (password == null || password.trim().equals("")) + throw new IllegalArgumentException("password should not be null or empty"); + if (language == null || language.trim().equals("")) { + language = "sql"; + addWarning("No language given, defaulting to 'sql'", "M1M05"); + } + + // initialise query templates (filled later, but needed below) + queryTempl = new String[3]; // pre, post, sep + commandTempl = new String[3]; // pre, post, sep + + server = new MapiSocket(); + + if (hash != null) server.setHash(hash); + if (database != null) server.setDatabase(database); + server.setLanguage(language); + + // we're debugging here... uhm, should be off in real life + if (debug) { + try { + String fname = props.getProperty("logfile", "monet_" + + System.currentTimeMillis() + ".log"); + File f = new File(fname); + int ext = fname.lastIndexOf("."); + if (ext < 0) ext = fname.length(); + String pre = fname.substring(0, ext); + String suf = fname.substring(ext); + + for (int i = 1; f.exists(); i++) { + f = new File(pre + "-" + i + suf); + } + + server.debug(f.getAbsolutePath()); + } catch (IOException ex) { + throw new SQLException("Opening logfile failed: " + ex.getMessage(), "08M01"); + } + } + + try { + List<String> warnings = + server.connect(hostname, port, username, password); + for (String warning : warnings) { + addWarning(warning, "01M02"); + } + + // apply NetworkTimeout value from legacy (pre 4.1) driver + // so_timeout calls + server.setSoTimeout(sockTimeout); + + in = server.getReader(); + out = server.getWriter(); + + String error = in.waitForPrompt(); + if (error != null) + throw new SQLException(error.substring(6), "08001"); + } catch (IOException e) { + throw new SQLException("Unable to connect (" + hostname + ":" + port + "): " + e.getMessage(), "08006"); + } catch (MCLParseException e) { + throw new SQLException(e.getMessage(), "08001"); + } catch (MCLException e) { + String[] connex = e.getMessage().split("\n"); + SQLException sqle = new SQLException(connex[0], "08001", e); + for (int i = 1; i < connex.length; i++) { + sqle.setNextException(new SQLException(connex[1], "08001")); + } + throw sqle; + } + + // we seem to have managed to log in, let's store the + // language used + if ("sql".equals(language)) { + lang = LANG_SQL; + } else if ("mal".equals(language)) { + lang = LANG_MAL; + } else { + lang = LANG_UNKNOWN; + } + + // fill the query templates + if (lang == LANG_SQL) { + queryTempl[0] = "s"; // pre + queryTempl[1] = "\n;"; // post + queryTempl[2] = "\n;\n"; // separator + + commandTempl[0] = "X"; // pre + commandTempl[1] = null; // post + commandTempl[2] = "\nX"; // separator + } else if (lang == LANG_MAL) { + queryTempl[0] = null; + queryTempl[1] = ";\n"; + queryTempl[2] = ";\n"; + + commandTempl[0] = null; // pre + commandTempl[1] = null; // post + commandTempl[2] = null; // separator + } + + // the following initialisers are only valid when the language + // is SQL... + if (lang == LANG_SQL) { + // enable auto commit + setAutoCommit(true); + // set our time zone on the server + Calendar cal = Calendar.getInstance(); + int offset = cal.get(Calendar.ZONE_OFFSET) + cal.get(Calendar.DST_OFFSET); + offset /= (60 * 1000); // milliseconds to minutes + String tz = offset < 0 ? "-" : "+"; + tz += (Math.abs(offset) / 60 < 10 ? "0" : "") + (Math.abs(offset) / 60) + ":"; + offset -= (offset / 60) * 60; + tz += (offset < 10 ? "0" : "") + offset; + sendIndependentCommand("SET TIME ZONE INTERVAL '" + tz + "' HOUR TO MINUTE"); + } + + // we're absolutely not closed, since we're brand new + closed = false; + } + + //== methods of interface Connection + + /** + * Clears all warnings reported for this Connection object. After a + * call to this method, the method getWarnings returns null until a + * new warning is reported for this Connection object. + */ + @Override + public void clearWarnings() { + warnings = null; + } + + /** + * Releases this Connection object's database and JDBC resources + * immediately instead of waiting for them to be automatically + * released. All Statements created from this Connection will be + * closed when this method is called. + * + * Calling the method close on a Connection object that is already + * closed is a no-op. + */ + @Override + public void close() { + synchronized (server) { + for (Statement st : statements.keySet()) { + try { + st.close(); + } catch (SQLException e) { + // better luck next time! + } + } + // close the socket + server.close(); + // close active SendThread if any + if (sendThread != null) { + sendThread.shutdown(); + sendThread = null; + } + // report ourselves as closed + closed = true; + } + } + + /** + * Makes all changes made since the previous commit/rollback + * permanent and releases any database locks currently held by this + * Connection object. This method should be used only when + * auto-commit mode has been disabled. + * + * @throws SQLException if a database access error occurs or this + * Connection object is in auto-commit mode + * @see #setAutoCommit(boolean) + */ + @Override + public void commit() throws SQLException { + // note: can't use sendIndependentCommand here because we need + // to process the auto_commit state the server gives + + // create a container for the result + ResponseList l = new ResponseList( + 0, + 0, + ResultSet.FETCH_FORWARD, + ResultSet.CONCUR_READ_ONLY + ); + // send commit to the server + try { + l.processQuery("COMMIT"); + } finally { + l.close(); + } + } + + /** + * Factory method for creating Array objects. + * + * Note: When createArrayOf is used to create an array object that + * maps to a primitive data type, then it is implementation-defined + * whether the Array object is an array of that primitive data type + * or an array of Object. + * + * Note: The JDBC driver is responsible for mapping the elements + * Object array to the default JDBC SQL type defined in + * java.sql.Types for the given class of Object. The default mapping + * is specified in Appendix B of the JDBC specification. If the + * resulting JDBC type is not the appropriate type for the given + * typeName then it is implementation defined whether an + * SQLException is thrown or the driver supports the resulting + * conversion. + * + * @param typeName the SQL name of the type the elements of the + * array map to. The typeName is a database-specific name + * which may be the name of a built-in type, a user-defined + * type or a standard SQL type supported by this database. + * This is the value returned by Array.getBaseTypeName + * @return an Array object whose elements map to the specified SQL + * type + * @throws SQLException if a database error occurs, the JDBC type + * is not appropriate for the typeName and the conversion is + * not supported, the typeName is null or this method is + * called on a closed connection + * @throws SQLFeatureNotSupportedException the JDBC driver does + * not support this data type + */ + @Override + public Array createArrayOf(String typeName, Object[] elements) + throws SQLException + { + throw new SQLFeatureNotSupportedException("createArrayOf(String, Object[]) not supported", "0A000"); + } + + /** + * Creates a Statement object for sending SQL statements to the + * database. SQL statements without parameters are normally + * executed using Statement objects. If the same SQL statement is + * executed many times, it may be more efficient to use a + * PreparedStatement object. + * + * Result sets created using the returned Statement object will by + * default be type TYPE_FORWARD_ONLY and have a concurrency level of + * CONCUR_READ_ONLY. + * + * @return a new default Statement object + * @throws SQLException if a database access error occurs + */ + @Override + public Statement createStatement() throws SQLException { + return createStatement( + ResultSet.TYPE_FORWARD_ONLY, + ResultSet.CONCUR_READ_ONLY, + ResultSet.HOLD_CURSORS_OVER_COMMIT); + } + + /** + * Creates a Statement object that will generate ResultSet objects + * with the given type and concurrency. This method is the same as + * the createStatement method above, but it allows the default + * result set type and concurrency to be overridden. + * + * @param resultSetType a result set type; one of + * ResultSet.TYPE_FORWARD_ONLY, ResultSet.TYPE_SCROLL_INSENSITIVE, + * or ResultSet.TYPE_SCROLL_SENSITIVE + * @param resultSetConcurrency a concurrency type; one of + * ResultSet.CONCUR_READ_ONLY or ResultSet.CONCUR_UPDATABLE + * @return a new Statement object that will generate ResultSet objects with + * the given type and concurrency + * @throws SQLException if a database access error occurs + */ + @Override + public Statement createStatement( + int resultSetType, + int resultSetConcurrency) + throws SQLException + { + return createStatement( + resultSetType, + resultSetConcurrency, + ResultSet.HOLD_CURSORS_OVER_COMMIT); + } + + /** + * Creates a Statement object that will generate ResultSet objects + * with the given type, concurrency, and holdability. This method + * is the same as the createStatement method above, but it allows + * the default result set type, concurrency, and holdability to be + * overridden. + * + * @param resultSetType one of the following ResultSet constants: + * ResultSet.TYPE_FORWARD_ONLY, ResultSet.TYPE_SCROLL_INSENSITIVE, + * or ResultSet.TYPE_SCROLL_SENSITIVE + * @param resultSetConcurrency one of the following ResultSet + * constants: ResultSet.CONCUR_READ_ONLY or + * ResultSet.CONCUR_UPDATABLE + * @param resultSetHoldability one of the following ResultSet + * constants: ResultSet.HOLD_CURSORS_OVER_COMMIT or + * ResultSet.CLOSE_CURSORS_AT_COMMIT + * + * @return a new Statement object that will generate ResultSet + * objects with the given type, concurrency, and holdability + * @throws SQLException if a database access error occurs or the + * given parameters are not ResultSet constants indicating type, + * concurrency, and holdability + */ + @Override + public Statement createStatement( + int resultSetType, + int resultSetConcurrency, + int resultSetHoldability) + throws SQLException + { + try { + Statement ret = + new MonetStatement( + this, + resultSetType, + resultSetConcurrency, + resultSetHoldability + ); + // store it in the map for when we close... + statements.put(ret, null); + return ret; + } catch (IllegalArgumentException e) { + throw new SQLException(e.toString(), "M0M03"); + } + // we don't have to catch SQLException because that is declared to + // be thrown + } + + /** + * Constructs an object that implements the Clob interface. The + * object returned initially contains no data. The setAsciiStream, + * setCharacterStream and setString methods of the Clob interface + * may be used to add data to the Clob. + * + * @return a MonetClob instance + * @throws SQLFeatureNotSupportedException the JDBC driver does + * not support MonetClob objects that can be filled in + */ + @Override + public Clob createClob() throws SQLException { + throw new SQLFeatureNotSupportedException("createClob() not supported", "0A000"); + } + + /** + * Constructs an object that implements the Blob interface. The + * object returned initially contains no data. The setBinaryStream + * and setBytes methods of the Blob interface may be used to add + * data to the Blob. + * + * @return a MonetBlob instance + * @throws SQLFeatureNotSupportedException the JDBC driver does + * not support MonetBlob objects that can be filled in + */ + @Override + public Blob createBlob() throws SQLException { + throw new SQLFeatureNotSupportedException("createBlob() not supported", "0A000"); + } + + /** + * Constructs an object that implements the NClob interface. The + * object returned initially contains no data. The setAsciiStream, + * setCharacterStream and setString methods of the NClob interface + * may be used to add data to the NClob. + * + * @return an NClob instance + * @throws SQLFeatureNotSupportedException the JDBC driver does + * not support MonetClob objects that can be filled in + */ + @Override + public NClob createNClob() throws SQLException { + throw new SQLFeatureNotSupportedException("createNClob() not supported", "0A000"); + } + + /** + * Factory method for creating Struct objects. + * + * @param typeName the SQL type name of the SQL structured type that + * this Struct object maps to. The typeName is the name of a + * user-defined type that has been defined for this database. + * It is the value returned by Struct.getSQLTypeName. + * @param attributes the attributes that populate the returned + * object + * @return a Struct object that maps to the given SQL type and is + * populated with the given attributes + * @throws SQLException if a database error occurs, the typeName + * is null or this method is called on a closed connection + * @throws SQLFeatureNotSupportedException the JDBC driver does + * not support this data type + */ + @Override + public Struct createStruct(String typeName, Object[] attributes) + throws SQLException + { + throw new SQLFeatureNotSupportedException("createStruct() not supported", "0A000"); + } + + /** + * Constructs an object that implements the SQLXML interface. The + * object returned initially contains no data. The + * createXmlStreamWriter object and setString method of the SQLXML + * interface may be used to add data to the SQLXML object. + * + * @return An object that implements the SQLXML interface + * @throws SQLFeatureNotSupportedException the JDBC driver does + * not support this data type + */ + @Override + public SQLXML createSQLXML() throws SQLException { + throw new SQLFeatureNotSupportedException("createSQLXML() not supported", "0A000"); + } + + /** + * Retrieves the current auto-commit mode for this Connection + * object. + * + * @return the current state of this Connection object's auto-commit + * mode + * @see #setAutoCommit(boolean) + */ + @Override + public boolean getAutoCommit() throws SQLException { + return autoCommit; + } + + /** + * Retrieves this Connection object's current catalog name. + * + * @return the current catalog name or null if there is none + * @throws SQLException if a database access error occurs or the + * current language is not SQL + */ + @Override + public String getCatalog() throws SQLException { + // MonetDB does NOT support catalogs + return null; + } + + /** + * Not implemented by MonetDB's JDBC driver. + * + * @param name The name of the client info property to retrieve + * @return The value of the client info property specified + */ + @Override + public String getClientInfo(String name) { + // This method will also return null if the specified client + // info property name is not supported by the driver. + return null; + } + + /** + * Not implemented by MonetDB's JDBC driver. + * + * @return A Properties object that contains the name and current + * value of each of the client info properties supported by + * the driver. + */ + @Override + public Properties getClientInfo() { + return new Properties(); + } + + /** + * Retrieves the current holdability of ResultSet objects created + * using this Connection object. + * + * @return the holdability, one of + * ResultSet.HOLD_CURSORS_OVER_COMMIT or + * ResultSet.CLOSE_CURSORS_AT_COMMIT + */ + @Override + public int getHoldability() { + // TODO: perhaps it is better to have the server implement + // CLOSE_CURSORS_AT_COMMIT + return ResultSet.HOLD_CURSORS_OVER_COMMIT; + } + + /** + * Retrieves a DatabaseMetaData object that contains metadata about + * the database to which this Connection object represents a + * connection. The metadata includes information about the + * database's tables, its supported SQL grammar, its stored + * procedures, the capabilities of this connection, and so on. + * + * @throws SQLException if the current language is not SQL + * @return a DatabaseMetaData object for this Connection object + */ + @Override + public DatabaseMetaData getMetaData() throws SQLException { + if (lang != LANG_SQL) + throw new SQLException("This method is only supported in SQL mode", "M0M04"); + + return new MonetDatabaseMetaData(this); + } + + /** + * Retrieves this Connection object's current transaction isolation + * level. + * + * @return the current transaction isolation level, which will be + * Connection.TRANSACTION_SERIALIZABLE + */ + @Override + public int getTransactionIsolation() { + return TRANSACTION_SERIALIZABLE; + } + + /** + * Retrieves the Map object associated with this Connection object. + * Unless the application has added an entry, the type map returned + * will be empty. + * + * @return the java.util.Map object associated with this Connection + * object + */ + @Override + public Map<String,Class<?>> getTypeMap() { + return typeMap; + } + + /** + * Retrieves the first warning reported by calls on this Connection + * object. If there is more than one warning, subsequent warnings + * will be chained to the first one and can be retrieved by calling + * the method SQLWarning.getNextWarning on the warning that was + * retrieved previously. + * + * This method may not be called on a closed connection; doing so + * will cause an SQLException to be thrown. + * + * Note: Subsequent warnings will be chained to this SQLWarning. + * + * @return the first SQLWarning object or null if there are none + * @throws SQLException if a database access error occurs or this method is + * called on a closed connection + */ + @Override + public SQLWarning getWarnings() throws SQLException { + if (closed) + throw new SQLException("Cannot call on closed Connection", "M1M20"); + + // if there are no warnings, this will be null, which fits with the + // specification. + return warnings; + } + + /** + * Retrieves whether this Connection object has been closed. A + * connection is closed if the method close has been called on it or + * if certain fatal errors have occurred. This method is guaranteed + * to return true only when it is called after the method + * Connection.close has been called. + * + * This method generally cannot be called to determine whether a + * connection to a database is valid or invalid. A typical client + * can determine that a connection is invalid by catching any + * exceptions that might be thrown when an operation is attempted. + * + * @return true if this Connection object is closed; false if it is + * still open + */ + @Override + public boolean isClosed() { + return closed; + } + + /** + * Retrieves whether this Connection object is in read-only mode. + * MonetDB currently doesn't support updateable result sets, but + * updates are possible. Hence the Connection object is never in + * read-only mode. + * + * @return true if this Connection object is read-only; false otherwise + */ + @Override + public boolean isReadOnly() { + return false; + } + + /** + * Returns true if the connection has not been closed and is still + * valid. The driver shall submit a query on the connection or use + * some other mechanism that positively verifies the connection is + * still valid when this method is called. + * + * The query submitted by the driver to validate the connection + * shall be executed in the context of the current transaction. + * + * @param timeout The time in seconds to wait for the database + * operation used to validate the connection to complete. If + * the timeout period expires before the operation completes, + * this method returns false. A value of 0 indicates a + * timeout is not applied to the database operation. + * @return true if the connection is valid, false otherwise + * @throws SQLException if the value supplied for timeout is less + * than 0 + */ + @Override + public boolean isValid(int timeout) throws SQLException { + if (timeout < 0) + throw new SQLException("timeout is less than 0", "M1M05"); + if (closed) + return false; + // ping db using select 1; + Statement stmt = null; + try { + stmt = createStatement(); + // the timeout parameter is ignored here, since + // MonetStatement.setQueryTimeout(timeout) is not supported. + stmt.executeQuery("SELECT 1"); + stmt.close(); + return true; + } catch (Exception e) { + if (stmt != null) { + try { + stmt.close(); + } catch (Exception e2) {} + } + } + return false; + } + + @Override + public String nativeSQL(String sql) {return sql;} + @Override + public CallableStatement prepareCall(String sql) {return null;} + @Override + public CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency) {return null;} + @Override + public CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) {return null;} + + /** + * Creates a PreparedStatement object for sending parameterized SQL + * statements to the database. + * + * A SQL statement with or without IN parameters can be pre-compiled + * and stored in a PreparedStatement object. This object can then be + * used to efficiently execute this statement multiple times. + * + * Note: This method is optimized for handling parametric SQL + * statements that benefit from precompilation. If the driver + * supports precompilation, the method prepareStatement will send + * the statement to the database for precompilation. Some drivers + * may not support precompilation. In this case, the statement may + * not be sent to the database until the PreparedStatement object is + * executed. This has no direct effect on users; however, it does + * affect which methods throw certain SQLException objects. + * + * Result sets created using the returned PreparedStatement object + * will by default be type TYPE_FORWARD_ONLY and have a concurrency + * level of CONCUR_READ_ONLY. + * + * @param sql an SQL statement that may contain one or more '?' IN + * parameter placeholders + * @return a new default PreparedStatement object containing the + * pre-compiled SQL statement + * @throws SQLException if a database access error occurs + */ + @Override + public PreparedStatement prepareStatement(String sql) throws SQLException { + return prepareStatement( + sql, + ResultSet.TYPE_FORWARD_ONLY, + ResultSet.CONCUR_READ_ONLY, + ResultSet.HOLD_CURSORS_OVER_COMMIT + ); + } + + /** + * Creates a PreparedStatement object that will generate ResultSet + * objects with the given type and concurrency. This method is the + * same as the prepareStatement method above, but it allows the + * default result set type and concurrency to be overridden. + * + * @param sql a String object that is the SQL statement to be sent to the + * database; may contain one or more ? IN parameters + * @param resultSetType a result set type; one of + * ResultSet.TYPE_FORWARD_ONLY, ResultSet.TYPE_SCROLL_INSENSITIVE, + * or ResultSet.TYPE_SCROLL_SENSITIVE + * @param resultSetConcurrency a concurrency type; one of + * ResultSet.CONCUR_READ_ONLY or ResultSet.CONCUR_UPDATABLE + * @return a new PreparedStatement object containing the pre-compiled SQL + * statement that will produce ResultSet objects with the given + * type and concurrency + * @throws SQLException if a database access error occurs or the given + * parameters are not ResultSet constants indicating + * type and concurrency + */ + @Override + public PreparedStatement prepareStatement( + String sql, + int resultSetType, + int resultSetConcurrency) + throws SQLException + { + return prepareStatement( + sql, + resultSetType, + resultSetConcurrency, + ResultSet.HOLD_CURSORS_OVER_COMMIT + ); + } + + /** + * Creates a PreparedStatement object that will generate ResultSet + * objects with the given type, concurrency, and holdability. + * + * This method is the same as the prepareStatement method above, but + * it allows the default result set type, concurrency, and + * holdability to be overridden. + * + * @param sql a String object that is the SQL statement to be sent + * to the database; may contain one or more ? IN parameters + * @param resultSetType one of the following ResultSet constants: + * ResultSet.TYPE_FORWARD_ONLY, ResultSet.TYPE_SCROLL_INSENSITIVE, + * or ResultSet.TYPE_SCROLL_SENSITIVE + * @param resultSetConcurrency one of the following ResultSet + * constants: ResultSet.CONCUR_READ_ONLY or + * ResultSet.CONCUR_UPDATABLE + * @param resultSetHoldability one of the following ResultSet + * constants: ResultSet.HOLD_CURSORS_OVER_COMMIT or + * ResultSet.CLOSE_CURSORS_AT_COMMIT + * @return a new PreparedStatement object, containing the + * pre-compiled SQL statement, that will generate ResultSet objects + * with the given type, concurrency, and holdability + * @throws SQLException if a database access error occurs or the + * given parameters are not ResultSet constants indicating type, + * concurrency, and holdability + */ + @Override + public PreparedStatement prepareStatement( + String sql, + int resultSetType, + int resultSetConcurrency, + int resultSetHoldability) + throws SQLException + { + try { + PreparedStatement ret = new MonetPreparedStatement( + this, + resultSetType, + resultSetConcurrency, + resultSetHoldability, + sql + ); + // store it in the map for when we close... + statements.put(ret, null); + return ret; + } catch (IllegalArgumentException e) { + throw new SQLException(e.toString(), "M0M03"); + } + // we don't have to catch SQLException because that is declared to + // be thrown + } + + /** + * Creates a default PreparedStatement object that has the + * capability to retrieve auto-generated keys. The given constant + * tells the driver whether it should make auto-generated keys + * available for retrieval. This parameter is ignored if the SQL + * statement is not an INSERT statement. + * + * Note: This method is optimized for handling parametric SQL + * statements that benefit from precompilation. If the driver + * supports precompilation, the method prepareStatement will send + * the statement to the database for precompilation. Some drivers + * may not support precompilation. In this case, the statement may + * not be sent to the database until the PreparedStatement object is + * executed. This has no direct effect on users; however, it does + * affect which methods throw certain SQLExceptions. + * + * Result sets created using the returned PreparedStatement object + * will by default be type TYPE_FORWARD_ONLY and have a concurrency + * level of CONCUR_READ_ONLY. + * + * @param sql an SQL statement that may contain one or more '?' IN + * parameter placeholders + * @param autoGeneratedKeys a flag indicating whether auto-generated + * keys should be returned; one of + * Statement.RETURN_GENERATED_KEYS or + * Statement.NO_GENERATED_KEYS + * @return a new PreparedStatement object, containing the + * pre-compiled SQL statement, that will have the capability + * of returning auto-generated keys + * @throws SQLException - if a database access error occurs or the + * given parameter is not a Statement constant indicating + * whether auto-generated keys should be returned + */ + @Override + public PreparedStatement prepareStatement( + String sql, + int autoGeneratedKeys) + throws SQLException + { + if (autoGeneratedKeys != Statement.RETURN_GENERATED_KEYS && + autoGeneratedKeys != Statement.NO_GENERATED_KEYS) + throw new SQLException("Invalid argument, expected RETURN_GENERATED_KEYS or NO_GENERATED_KEYS", "M1M05"); + + /* MonetDB has no way to disable this, so just do the normal + * thing ;) */ + return prepareStatement( + sql, + ResultSet.TYPE_FORWARD_ONLY, + ResultSet.CONCUR_READ_ONLY + ); + } + + @Override + public PreparedStatement prepareStatement(String sql, int[] columnIndexes) {return null;} + @Override + public PreparedStatement prepareStatement(String sql, String[] columnNames) {return null;} + + /** + * Removes the given Savepoint object from the current transaction. + * Any reference to the savepoint after it have been removed will + * cause an SQLException to be thrown. + * + * @param savepoint the Savepoint object to be removed + * @throws SQLException if a database access error occurs or the given + * Savepoint object is not a valid savepoint in the current + * transaction + */ + @Override + public void releaseSavepoint(Savepoint savepoint) throws SQLException { + if (!(savepoint instanceof MonetSavepoint)) throw + new SQLException("This driver can only handle savepoints it created itself", "M0M06"); + + MonetSavepoint sp = (MonetSavepoint)savepoint; + + // note: can't use sendIndependentCommand here because we need + // to process the auto_commit state the server gives + + // create a container for the result + ResponseList l = new ResponseList( + 0, + 0, + ResultSet.FETCH_FORWARD, + ResultSet.CONCUR_READ_ONLY + ); + // send the appropriate query string to the database + try { + l.processQuery("RELEASE SAVEPOINT " + sp.getName()); + } finally { + l.close(); + } + } + + /** + * Undoes all changes made in the current transaction and releases + * any database locks currently held by this Connection object. This + * method should be used only when auto-commit mode has been + * disabled. + * + * @throws SQLException if a database access error occurs or this + * Connection object is in auto-commit mode + * @see #setAutoCommit(boolean) + */ + @Override + public void rollback() throws SQLException { + // note: can't use sendIndependentCommand here because we need + // to process the auto_commit state the server gives + + // create a container for the result + ResponseList l = new ResponseList( + 0, + 0, + ResultSet.FETCH_FORWARD, + ResultSet.CONCUR_READ_ONLY + ); + // send rollback to the server + try { + l.processQuery("ROLLBACK"); + } finally { + l.close(); + } + } + + /** + * Undoes all changes made after the given Savepoint object was set. + * + * This method should be used only when auto-commit has been + * disabled. + * + * @param savepoint the Savepoint object to roll back to + * @throws SQLException if a database access error occurs, the + * Savepoint object is no longer valid, or this Connection + * object is currently in auto-commit mode + */ + @Override + public void rollback(Savepoint savepoint) throws SQLException { + if (!(savepoint instanceof MonetSavepoint)) throw + new SQLException("This driver can only handle savepoints it created itself", "M0M06"); + + MonetSavepoint sp = (MonetSavepoint)savepoint; + + // note: can't use sendIndependentCommand here because we need + // to process the auto_commit state the server gives + + // create a container for the result + ResponseList l = new ResponseList( + 0, + 0, + ResultSet.FETCH_FORWARD, + ResultSet.CONCUR_READ_ONLY + ); + // send the appropriate query string to the database + try { + l.processQuery("ROLLBACK TO SAVEPOINT " + sp.getName()); + } finally { + l.close(); + } + } + + /** + * Sets this connection's auto-commit mode to the given state. If a + * connection is in auto-commit mode, then all its SQL statements + * will be executed and committed as individual transactions. + * Otherwise, its SQL statements are grouped into transactions that + * are terminated by a call to either the method commit or the + * method rollback. By default, new connections are in auto-commit + * mode. + * + * The commit occurs when the statement completes or the next + * execute occurs, whichever comes first. In the case of statements + * returning a ResultSet object, the statement completes when the + * last row of the ResultSet object has been retrieved or the + * ResultSet object has been closed. In advanced cases, a single + * statement may return multiple results as well as output parameter + * values. In these cases, the commit occurs when all results and + * output parameter values have been retrieved. + * + * NOTE: If this method is called during a transaction, the + * transaction is committed. + * + * @param autoCommit true to enable auto-commit mode; false to disable it + * @throws SQLException if a database access error occurs + * @see #getAutoCommit() + */ + @Override + public void setAutoCommit(boolean autoCommit) throws SQLException { + if (this.autoCommit != autoCommit) { + sendControlCommand("auto_commit " + (autoCommit ? "1" : "0")); + this.autoCommit = autoCommit; + } + } + + /** + * Sets the given catalog name in order to select a subspace of this + * Connection object's database in which to work. If the driver + * does not support catalogs, it will silently ignore this request. + */ + @Override + public void setCatalog(String catalog) throws SQLException { + // silently ignore this request as MonetDB does not support catalogs + } + + /** + * Not implemented by MonetDB's JDBC driver. + * + * @param name The name of the client info property to set + * @param value The value to set the client info property to. If the + * value is null, the current value of the specified property + * is cleared. + */ + @Override + public void setClientInfo(String name, String value) { + addWarning("clientInfo: " + name + "is not a recognised property", "01M07"); + } + + /** + * Not implemented by MonetDB's JDBC driver. + * + * @param props The list of client info properties to set + */ + @Override + public void setClientInfo(Properties props) { + for (Entry<Object, Object> entry : props.entrySet()) { + setClientInfo(entry.getKey().toString(), + entry.getValue().toString()); + } + } + + @Override + public void setHoldability(int holdability) {} + + /** + * Puts this connection in read-only mode as a hint to the driver to + * enable database optimizations. MonetDB doesn't support any mode + * here, hence an SQLWarning is generated if attempted to set + * to true here. + * + * @param readOnly true enables read-only mode; false disables it + * @throws SQLException if a database access error occurs or this + * method is called during a transaction. + */ + @Override + public void setReadOnly(boolean readOnly) throws SQLException { + if (readOnly == true) + addWarning("cannot setReadOnly(true): read-only Connection mode not supported", "01M08"); + } + + /** + * Creates an unnamed savepoint in the current transaction and + * returns the new Savepoint object that represents it. + * + * @return the new Savepoint object + * @throws SQLException if a database access error occurs or this Connection + * object is currently in auto-commit mode + */ + @Override + public Savepoint setSavepoint() throws SQLException { + // create a new Savepoint object + MonetSavepoint sp = new MonetSavepoint(); + + // note: can't use sendIndependentCommand here because we need + // to process the auto_commit state the server gives + + // create a container for the result + ResponseList l = new ResponseList( + 0, + 0, + ResultSet.FETCH_FORWARD, + ResultSet.CONCUR_READ_ONLY + ); + // send the appropriate query string to the database + try { + l.processQuery("SAVEPOINT " + sp.getName()); + } finally { + l.close(); + } + + return sp; + } + + /** + * Creates a savepoint with the given name in the current + * transaction and returns the new Savepoint object that represents + * it. + * + * @param name a String containing the name of the savepoint + * @return the new Savepoint object + * @throws SQLException if a database access error occurs or this Connection + * object is currently in auto-commit mode + */ + @Override + public Savepoint setSavepoint(String name) throws SQLException { + // create a new Savepoint object + MonetSavepoint sp; + try { + sp = new MonetSavepoint(name); + } catch (IllegalArgumentException e) { + throw new SQLException(e.getMessage(), "M0M03"); + } + + // note: can't use sendIndependentCommand here because we need + // to process the auto_commit state the server gives + + // create a container for the result + ResponseList l = new ResponseList( + 0, + 0, + ResultSet.FETCH_FORWARD, + ResultSet.CONCUR_READ_ONLY + ); + // send the appropriate query string to the database + try { + l.processQuery("SAVEPOINT " + sp.getName()); + } finally { + l.close(); + } + + return sp; + } + + /** + * Attempts to change the transaction isolation level for this + * Connection object to the one given. The constants defined in the + * interface Connection are the possible transaction isolation + * levels. + * + * @param level one of the following Connection constants: + * Connection.TRANSACTION_READ_UNCOMMITTED, + * Connection.TRANSACTION_READ_COMMITTED, + * Connection.TRANSACTION_REPEATABLE_READ, or + * Connection.TRANSACTION_SERIALIZABLE. + */ + @Override + public void setTransactionIsolation(int level) { + if (level != TRANSACTION_SERIALIZABLE) { + addWarning("MonetDB only supports fully serializable " + + "transactions, continuing with transaction level " + + "raised to TRANSACTION_SERIALIZABLE", "01M09"); + } + } + + /** + * Installs the given TypeMap object as the type map for this + * Connection object. The type map will be used for the custom + * mapping of SQL structured types and distinct types. + * + * @param map the java.util.Map object to install as the replacement for + * this Connection object's default type map + */ + @Override + public void setTypeMap(Map<String, Class<?>> map) { + typeMap = map; + } + + /** + * Returns a string identifying this Connection to the MonetDB + * server. + * + * @return a String representing this Object + */ + @Override + public String toString() { + return "MonetDB Connection (" + getJDBCURL() + ") " + + (closed ? "connected" : "disconnected"); + } + + //== 1.7 methods (JDBC 4.1) + + /** + * Sets the given schema name to access. + * + * @param schema the name of a schema in which to work + * @throws SQLException if a database access error occurs or this + * method is called on a closed connection + */ + @Override + public void setSchema(String schema) throws SQLException { + if (closed) + throw new SQLException("Cannot call on closed Connection", "M1M20"); + if (schema != null) + createStatement().execute("SET SCHEMA \"" + schema + "\""); + } + + /** + * Retrieves this Connection object's current schema name. + * + * @return the current schema name or null if there is none + * @throws SQLException if a database access error occurs or this + * method is called on a closed connection + */ + @Override + public String getSchema() throws SQLException { + if (closed) + throw new SQLException("Cannot call on closed Connection", "M1M20"); + + String cur_schema; + Statement st = createStatement(); + ResultSet rs = null; + try { + rs = st.executeQuery("SELECT CURRENT_SCHEMA"); + if (!rs.next()) + throw new SQLException("Row expected", "02000"); + cur_schema = rs.getString(1); + } finally { + if (rs != null) + rs.close(); + st.close(); + } + return cur_schema; + } + + /** + * Terminates an open connection. Calling abort results in: + * * The connection marked as closed + * * Closes any physical connection to the database + * * Releases resources used by the connection + * * Insures that any thread that is currently accessing the + * connection will either progress to completion or throw an + * SQLException. + * Calling abort marks the connection closed and releases any + * resources. Calling abort on a closed connection is a no-op. + * + * @param executor The Executor implementation which will be used by + * abort + * @throws SQLException if a database access error occurs or the + * executor is null + * @throws SecurityException if a security manager exists and + * its checkPermission method denies calling abort + */ + @Override + public void abort(Executor executor) throws SQLException { + if (closed) + return; + if (executor == null) + throw new SQLException("executor is null", "M1M05"); + // this is really the simplest thing to do, it destroys + // everything (in particular the server connection) + close(); + } + + /** + * Sets the maximum period a Connection or objects created from the + * Connection will wait for the database to reply to any one + * request. If any request remains unanswered, the waiting method + * will return with a SQLException, and the Connection or objects + * created from the Connection will be marked as closed. Any + * subsequent use of the objects, with the exception of the close, + * isClosed or Connection.isValid methods, will result in a + * SQLException. + * + * @param executor The Executor implementation which will be used by + * setNetworkTimeout + * @param millis The time in milliseconds to wait for the + * database operation to complete + * @throws SQLException if a database access error occurs, this + * method is called on a closed connection, the executor is + * null, or the value specified for seconds is less than 0. + */ + @Override + public void setNetworkTimeout(Executor executor, int millis) + throws SQLException + { + if (closed) + throw new SQLException("Cannot call on closed Connection", "M1M20"); + if (executor == null) + throw new SQLException("executor is null", "M1M05"); + if (millis < 0) + throw new SQLException("milliseconds is less than zero", "M1M05"); + + try { + server.setSoTimeout(millis); + } catch (SocketException e) { + throw new SQLException(e.getMessage(), "08000"); + } + } + + /** + * Retrieves the number of milliseconds the driver will wait for a + * database request to complete. If the limit is exceeded, a + * SQLException is thrown. + * + * @return the current timeout limit in milliseconds; zero means + * there is no limit + * @throws SQLException if a database access error occurs or + * this method is called on a closed Connection + */ + @Override + public int getNetworkTimeout() throws SQLException { + if (closed) + throw new SQLException("Cannot call on closed Connection", "M1M20"); + + try { + return server.getSoTimeout(); + } catch (SocketException e) { + throw new SQLException(e.getMessage(), "08000"); + } + } + + //== end methods of interface Connection + + public String getJDBCURL() { + String language = ""; + if (lang == LANG_MAL) + language = "?language=mal"; + return "jdbc:monetdb://" + hostname + ":" + port + "/" + + database + language; + } + + /** + * Returns whether the BLOB type should be mapped to BINARY type. + */ + boolean getBlobAsBinary() { + return blobIsBinary; + } + + /** + * Sends the given string to MonetDB as regular statement, making + * sure there is a prompt after the command is sent. All possible + * returned information is discarded. Encountered errors are + * reported. + * + * @param command the exact string to send to MonetDB + * @throws SQLException if an IO exception or a database error occurs + */ + void sendIndependentCommand(String command) throws SQLException { + synchronized (server) { + try { + out.writeLine( + (queryTempl[0] == null ? "" : queryTempl[0]) + + command + + (queryTempl[1] == null ? "" : queryTempl[1])); + String error = in.waitForPrompt(); + if (error != null) + throw new SQLException(error.substring(6), + error.substring(0, 5)); + } catch (SocketTimeoutException e) { + close(); // JDBC 4.1 semantics: abort() + throw new SQLException("connection timed out", "08M33"); + } catch (IOException e) { + throw new SQLException(e.getMessage(), "08000"); + } + } + } + + /** + * Sends the given string to MonetDB as control statement, making + * sure there is a prompt after the command is sent. All possible + * returned information is discarded. Encountered errors are + * reported. + * + * @param command the exact string to send to MonetDB + * @throws SQLException if an IO exception or a database error occurs + */ + void sendControlCommand(String command) throws SQLException { + // send X command + synchronized (server) { + try { + out.writeLine( + (commandTempl[0] == null ? "" : commandTempl[0]) + + command + + (commandTempl[1] == null ? "" : commandTempl[1])); + String error = in.waitForPrompt(); + if (error != null) + throw new SQLException(error.substring(6), + error.substring(0, 5)); + } catch (SocketTimeoutException e) { + close(); // JDBC 4.1 semantics, abort() + throw new SQLException("connection timed out", "08M33"); + } catch (IOException e) { + throw new SQLException(e.getMessage(), "08000"); + } + } + } + + /** + * Adds a warning to the pile of warnings this Connection object + * has. If there were no warnings (or clearWarnings was called) + * this warning will be the first, otherwise this warning will get + * appended to the current warning. + * + * @param reason the warning message + */ + void addWarning(String reason, String sqlstate) { + if (warnings == null) { + warnings = new SQLWarning(reason, sqlstate); + } else { + warnings.setNextWarning(new SQLWarning(reason, sqlstate)); + } + } + + /** the default number of rows that are (attempted to) read at once */ + private final static int DEF_FETCHSIZE = 250; + /** The sequence counter */ + private static int seqCounter = 0; + + /** An optional thread that is used for sending large queries */ + private SendThread sendThread = null; + + /** + * A Response is a message sent by the server to indicate some + * action has taken place, and possible results of that action. + */ + // {{{ interface Response + interface Response { + /** + * Adds a line to the underlying Response implementation. + * + * @param line the header line as String + * @param linetype the line type according to the MAPI protocol + * @return a non-null String if the line is invalid, + * or additional lines are not allowed. + */ + public abstract String addLine(String line, int linetype); + + /** + * Returns whether this Reponse expects more lines to be added + * to it. + * + * @return true if a next line should be added, false otherwise + */ + public abstract boolean wantsMore(); + + /** + * Indicates that no more header lines will be added to this + * Response implementation. + * + * @throws SQLException if the contents of the Response is not + * consistent or sufficient. + */ + public abstract void complete() throws SQLException; + + /** + * Instructs the Response implementation to close and do the + * necessary clean up procedures. + * + * @throws SQLException + */ + public abstract void close(); + } + // }}} + + /** + * The ResultSetResponse represents a tabular result sent by the + * server. This is typically an SQL table. The MAPI headers of the + * Response look like: + * <pre> + * &1 1 28 2 10 + * # name, value # name + * # varchar, varchar # type + * </pre> + * there the first line consists out of<br /> + * <tt>&"qt" "id" "tc" "cc" "rc"</tt>. + */ + // {{{ ResultSetResponse class implementation + class ResultSetResponse implements Response { + /** The number of columns in this result */ + public final int columncount; + /** The total number of rows this result set has */ + public final int tuplecount; + /** The numbers of rows to retrieve per DataBlockResponse */ + private int cacheSize; + /** The table ID of this result */ + public final int id; + /** The names of the columns in this result */ + private String[] name; + /** The types of the columns in this result */ + private String[] type; + /** The max string length for each column in this result */ + private int[] columnLengths; + /** The table for each column in this result */ + private String[] tableNames; + /** The query sequence number */ + private final int seqnr; + /** A List of result blocks (chunks of size fetchSize/cacheSize) */ + private DataBlockResponse[] resultBlocks; + + /** A bitmap telling whether the headers are set or not */ + private boolean[] isSet; + /** Whether this Response is closed */ + private boolean closed; + + /** The Connection that we should use when requesting a new block */ + private MonetConnection.ResponseList parent; + /** Whether the fetchSize was explitly set by the user */ + private boolean cacheSizeSetExplicitly = false; + /** Whether we should send an Xclose command to the server + * if we close this Response */ + private boolean destroyOnClose; + /** the offset to be used on Xexport queries */ + private int blockOffset = 0; + + /** A parser for header lines */ + HeaderLineParser hlp; + + private final static int NAMES = 0; + private final static int TYPES = 1; + private final static int TABLES = 2; + private final static int LENS = 3; + + + /** + * Sole constructor, which requires a MonetConnection parent to + * be given. + * + * @param id the ID of the result set + * @param tuplecount the total number of tuples in the result set + * @param columncount the number of columns in the result set + * @param rowcount the number of rows in the current block + * @param parent the parent that created this Response and will + * supply new result blocks when necessary + * @param seq the query sequence number + */ + ResultSetResponse( + int id, + int tuplecount, + int columncount, + int rowcount, + MonetConnection.ResponseList parent, + int seq) + throws SQLException + { + isSet = new boolean[7]; + this.parent = parent; + if (parent.cachesize == 0) { + /* Below we have to calculate how many "chunks" we need + * to allocate to store the entire result. However, if + * the user didn't set a cache size, as in this case, we + * need to stick to our defaults. */ + cacheSize = MonetConnection.DEF_FETCHSIZE; + cacheSizeSetExplicitly = false; + } else { + cacheSize = parent.cachesize; + cacheSizeSetExplicitly = true; + } + /* So far, so good. Now the problem with EXPLAIN, DOT, etc + * queries is, that they don't support any block fetching, + * so we need to always fetch everything at once. For that + * reason, the cache size is here set to the rowcount if + * it's larger, such that we do a full fetch at once. + * (Because we always set a reply_size, we can only get a + * larger rowcount from the server if it doesn't paginate, + * because it's a pseudo SQL result.) */ + if (rowcount > cacheSize) + cacheSize = rowcount; + seqnr = seq; + closed = false; + destroyOnClose = id > 0 && tuplecount > rowcount; + + this.id = id; + this.tuplecount = tuplecount; + this.columncount = columncount; + this.resultBlocks = + new DataBlockResponse[(tuplecount / cacheSize) + 1]; + + hlp = new HeaderLineParser(columncount); + + resultBlocks[0] = new DataBlockResponse( + rowcount, + parent.rstype == ResultSet.TYPE_FORWARD_ONLY + ); + } + + /** + * Parses the given string and changes the value of the matching + * header appropriately, or passes it on to the underlying + * DataResponse. + * + * @param tmpLine the string that contains the header + * @return a non-null String if the header cannot be parsed or + * is unknown + */ + // {{{ addLine + @Override + public String addLine(String tmpLine, int linetype) { + if (isSet[LENS] && isSet[TYPES] && isSet[TABLES] && isSet[NAMES]) { + return resultBlocks[0].addLine(tmpLine, linetype); + } + + if (linetype != BufferedMCLReader.HEADER) + return "header expected, got: " + tmpLine; + + // depending on the name of the header, we continue + try { + switch (hlp.parse(tmpLine)) { + case HeaderLineParser.NAME: + name = hlp.values.clone(); + isSet[NAMES] = true; + break; + case HeaderLineParser.LENGTH: + columnLengths = hlp.intValues.clone(); + isSet[LENS] = true; + break; + case HeaderLineParser.TYPE: + type = hlp.values.clone(); + isSet[TYPES] = true; + break; + case HeaderLineParser.TABLE: + tableNames = hlp.values.clone(); + isSet[TABLES] = true; + break; + } + } catch (MCLParseException e) { + return e.getMessage(); + } + + // all is well + return null; + } + // }}} + + /** + * Returns whether this ResultSetResponse needs more lines. + * This method returns true if not all headers are set, or the + * first DataBlockResponse reports to want more. + */ + @Override + public boolean wantsMore() { + if (isSet[LENS] && isSet[TYPES] && isSet[TABLES] && isSet[NAMES]) { + return resultBlocks[0].wantsMore(); + } else { + return true; + } + } + + /** + * Returns an array of Strings containing the values between + * ',\t' separators. + * + * @param chrLine a character array holding the input data + * @param start where the relevant data starts + * @param stop where the relevant data stops + * @return an array of Strings + */ + final private String[] getValues(char[] chrLine, int start, int stop) { + int elem = 0; + String[] values = new String[columncount]; + + for (int i = start; i < stop; i++) { + if (chrLine[i] == '\t' && chrLine[i - 1] == ',') { + values[elem++] = + new String(chrLine, start, i - 1 - start); + start = i + 1; + } + } + // at the left over part + values[elem++] = new String(chrLine, start, stop - start); + + return values; + } + + /** + * Adds the given DataBlockResponse to this ResultSetResponse at + * the given block position. + * + * @param offset the offset number of rows for this block + * @param rr the DataBlockResponse to add + */ + void addDataBlockResponse(int offset, DataBlockResponse rr) { + int block = (offset - blockOffset) / cacheSize; + resultBlocks[block] = rr; + } + + /** + * Marks this Response as being completed. A complete Response + * needs to be consistent with regard to its internal data. + * + * @throws SQLException if the data currently in this Response is not + * sufficient to be consistant + */ + @Override + public void complete() throws SQLException { + String error = ""; + if (!isSet[NAMES]) error += "name header missing\n"; + if (!isSet[TYPES]) error += "type header missing\n"; + if (!isSet[TABLES]) error += "table name header missing\n"; + if (!isSet[LENS]) error += "column width header missing\n"; + if (error != "") throw new SQLException(error, "M0M10"); + } + + /** + * Returns the names of the columns + * + * @return the names of the columns + */ + String[] getNames() { + return name; + } + + /** + * Returns the types of the columns + * + * @return the types of the columns + */ + String[] getTypes() { + return type; + } + + /** + * Returns the tables of the columns + * + * @return the tables of the columns + */ + String[] getTableNames() { + return tableNames; + } + + /** + * Returns the lengths of the columns + * + * @return the lengths of the columns + */ + int[] getColumnLengths() { + return columnLengths; + } + + /** + * Returns the cache size used within this Response + * + * @return the cache size + */ + int getCacheSize() { + return cacheSize; + } + + /** + * Returns the current block offset + * + * @return the current block offset + */ + int getBlockOffset() { + return blockOffset; + } + + /** + * Returns the ResultSet type, FORWARD_ONLY or not. + * + * @return the ResultSet type + */ + int getRSType() { + return parent.rstype; + } + + /** + * Returns the concurrency of the ResultSet. + * + * @return the ResultSet concurrency + */ + int getRSConcur() { + return parent.rsconcur; + } + + /** + * Returns a line from the cache. If the line is already present in the + * cache, it is returned, if not apropriate actions are taken to make + * sure the right block is being fetched and as soon as the requested + * line is fetched it is returned. + * + * @param row the row in the result set to return + * @return the exact row read as requested or null if the requested row + * is out of the scope of the result set + * @throws SQLException if an database error occurs + */ + String getLine(int row) throws SQLException { + if (row >= tuplecount || row < 0) + return null; + + int block = (row - blockOffset) / cacheSize; + int blockLine = (row - blockOffset) % cacheSize; + + // do we have the right block loaded? (optimistic try) + DataBlockResponse rawr; + // load block if appropriate + if ((rawr = resultBlocks[block]) == null) { + /// TODO: ponder about a maximum number of blocks to keep + /// in memory when dealing with random access to + /// reduce memory blow-up + + // if we're running forward only, we can discard the old + // block loaded + if (parent.rstype == ResultSet.TYPE_FORWARD_ONLY) { + for (int i = 0; i < block; i++) + resultBlocks[i] = null; + + if (MonetConnection.seqCounter - 1 == seqnr && + !cacheSizeSetExplicitly && + tuplecount - row > cacheSize && + cacheSize < MonetConnection.DEF_FETCHSIZE * 10) + { + // there has no query been issued after this + // one, so we can consider this an uninterrupted + // continuation request. Let's once increase + // the cacheSize as it was not explicitly set, + // since the chances are high that we won't + // bother anyone else by doing so, and just + // gaining some performance. + + // store the previous position in the + // blockOffset variable + blockOffset += cacheSize; + + // increase the cache size (a lot) + cacheSize *= 10; + + // by changing the cacheSize, we also + // change the block measures. Luckily + // we don't care about previous blocks + // because we have a forward running + // pointer only. However, we do have + // to recalculate the block number, to + // ensure the next call to find this + // new block. + block = (row - blockOffset) / cacheSize; + blockLine = (row - blockOffset) % cacheSize; + } + } + + // ok, need to fetch cache block first + parent.executeQuery( + commandTempl, + "export " + id + " " + ((block * cacheSize) + blockOffset) + " " + cacheSize + ); + rawr = resultBlocks[block]; + if (rawr == null) throw + new AssertionError("block " + block + " should have been fetched by now :("); + } + + return rawr.getRow(blockLine); + } + + /** + * Closes this Response by sending an Xclose to the server indicating + * that the result can be closed at the server side as well. + */ + @Override + public void close() { + if (closed) return; + // send command to server indicating we're done with this + // result only if we had an ID in the header and this result + // was larger than the reply size + try { + if (destroyOnClose) sendControlCommand("close " + id); + } catch (SQLException e) { + // probably a connection error... + } + + // close the data block associated with us + for (int i = 1; i < resultBlocks.length; i++) { + DataBlockResponse r = resultBlocks[i]; + if (r != null) r.close(); + } + + closed = true; + } + + /** + * Returns whether this Response is closed + * + * @return whether this Response is closed + */ + boolean isClosed() { + return closed; + } + } + // }}} + + /** + * The DataBlockResponse is tabular data belonging to a + * ResultSetResponse. Tabular data from the server typically looks + * like: + * <pre> + * [ "value", 56 ] + * </pre> + * where each column is separated by ",\t" and each tuple surrounded + * by brackets ("[" and "]"). A DataBlockResponse object holds the + * raw data as read from the server, in a parsed manner, ready for + * easy retrieval. + * + * This object is not intended to be queried by multiple threads + * synchronously. It is designed to work for one thread retrieving + * rows from it. When multiple threads will retrieve rows from this + * object, it is possible for threads to get the same data. + */ + // {{{ DataBlockResponse class implementation + static class DataBlockResponse implements Response { + /** The String array to keep the data in */ + private final String[] data; + + /** The counter which keeps the current position in the data array */ + private int pos; + /** Whether we can discard lines as soon as we have read them */ + private boolean forwardOnly; + + /** + * Constructs a DataBlockResponse object + * @param size the size of the data array to create + * @param forward whether this is a forward only result + */ + DataBlockResponse(int size, boolean forward) { + pos = -1; + data = new String[size]; + forwardOnly = forward; + } + + /** + * addLine adds a String of data to this object's data array. + * Note that an IndexOutOfBoundsException can be thrown when an + * attempt is made to add more than the original construction size + * specified. + * + * @param line the header line as String + * @param linetype the line type according to the MAPI protocol + * @return a non-null String if the line is invalid, + * or additional lines are not allowed. + */ + @Override + public String addLine(String line, int linetype) { + if (linetype != BufferedMCLReader.RESULT) + return "protocol violation: unexpected line in data block: " + line; + // add to the backing array + data[++pos] = line; + + // all is well + return null; + } + + /** + * Returns whether this Reponse expects more lines to be added + * to it. + * + * @return true if a next line should be added, false otherwise + */ + @Override + public boolean wantsMore() { + // remember: pos is the value already stored + return pos + 1 < data.length; + } + + /** + * Indicates that no more header lines will be added to this + * Response implementation. In most cases this is a redundant + * operation because the data array is full. However... it can + * happen that this is NOT the case! + * + * @throws SQLException if not all rows are filled + */ + @Override + public void complete() throws SQLException { + if ((pos + 1) != data.length) throw + new SQLException("Inconsistent state detected! Current block capacity: " + data.length + ", block usage: " + (pos + 1) + ". Did MonetDB send what it promised to?", "M0M10"); + } + + /** + * Instructs the Response implementation to close and do the + * necessary clean up procedures. + * + * @throws SQLException + */ + @Override + public void close() { + // feed all rows to the garbage collector + for (int i = 0; i < data.length; i++) data[i] = null; + } + + /** + * Retrieves the required row. Warning: if the requested rows + * is out of bounds, an IndexOutOfBoundsException will be + * thrown. + * + * @param line the row to retrieve + * @return the requested row as String + */ + String getRow(int line) { + if (forwardOnly) { + String ret = data[line]; + data[line] = null; + return ret; + } else { + return data[line]; + } + } + } + // }}} + + /** + * The UpdateResponse represents an update statement response. It + * is issued on an UPDATE, INSERT or DELETE SQL statement. This + * response keeps a count field that represents the affected rows + * and a field that contains the last inserted auto-generated ID, or + * -1 if not applicable.<br /> + * <tt>&2 0 -1</tt> + */ + // {{{ UpdateResponse class implementation + static class UpdateResponse implements Response { + public final int count; + public final String lastid; + + public UpdateResponse(int cnt, String id) { + // fill the blank finals + this.count = cnt; + this.lastid = id; + } + + @Override + public String addLine(String line, int linetype) { + return "Header lines are not supported for an UpdateResponse"; + } + + @Override + public boolean wantsMore() { + return false; + } + + @Override + public void complete() { + // empty, because there is nothing to check + } + + @Override + public void close() { + // nothing to do here... + } + } + // }}} + + /** + * The SchemaResponse represents an schema modification response. + * It is issued on statements like CREATE, DROP or ALTER TABLE. + * This response keeps a field that represents the success state, as + * defined by JDBC, which is currently in MonetDB's case alwats + * SUCCESS_NO_INFO. Note that this state is not sent by the + * server.<br /> + * <tt>&3</tt> + */ + // {{{ SchemaResponse class implementation + class SchemaResponse implements Response { + public final int state = Statement.SUCCESS_NO_INFO; + + @Override + public String addLine(String line, int linetype) { + return "Header lines are not supported for a SchemaResponse"; + } + + @Override + public boolean wantsMore() { + return false; + } + + @Override + public void complete() { + // empty, because there is nothing to check + } + + @Override + public void close() { + // nothing to do here... + } + } + // }}} + + /** + * The AutoCommitResponse represents a transaction message. It + * stores (a change in) the server side auto commit mode.<br /> + * <tt>&4 (t|f)</tt> + */ + // {{{ AutoCommitResponse class implementation + class AutoCommitResponse extends SchemaResponse { + public final boolean autocommit; + + public AutoCommitResponse(boolean ac) { + // fill the blank final + this.autocommit = ac; + } + } + // }}} + + /** + * A list of Response objects. Responses are added to this list. + * Methods of this class are not synchronized. This is left as + * responsibility to the caller to prevent concurrent access. + */ + // {{{ ResponseList class implementation + class ResponseList { + /** The cache size (number of rows in a DataBlockResponse object) */ + final int cachesize; + /** The maximum number of results for this query */ + final int maxrows; + /** The ResultSet type to produce */ + final int rstype; + /** The ResultSet concurrency to produce */ + final int rsconcur; + /** The sequence number of this ResponseList */ + final int seqnr; + /** A list of the Responses associated with the query, + * in the right order */ + private List<Response> responses; + /** A map of ResultSetResponses, used for additional + * DataBlockResponse mapping */ + private Map<Integer, ResultSetResponse> rsresponses; + + /** The current header returned by getNextResponse() */ + private int curResponse; + + /** + * Main constructor. The query argument can either be a String + * or List. An SQLException is thrown if another object + * instance is supplied. + * + * @param cachesize overall cachesize to use + * @param maxrows maximum number of rows to allow in the set + * @param rstype the type of result sets to produce + * @param rsconcur the concurrency of result sets to produce + */ + ResponseList( + int cachesize, + int maxrows, + int rstype, + int rsconcur + ) throws SQLException { + this.cachesize = cachesize; + this.maxrows = maxrows; + this.rstype = rstype; + this.rsconcur = rsconcur; + responses = new ArrayList<Response>(); + curResponse = -1; + seqnr = MonetConnection.seqCounter++; + } + + /** + * Retrieves the next available response, or null if there are + * no more responses. + * + * @return the next Response available or null + */ + Response getNextResponse() throws SQLException { + if (rstype == ResultSet.TYPE_FORWARD_ONLY) { + // free resources if we're running forward only + if (curResponse >= 0 && curResponse < responses.size()) { + Response tmp = responses.get(curResponse); + if (tmp != null) tmp.close(); + responses.set(curResponse, null); + } + } + curResponse++; + if (curResponse >= responses.size()) { + // ResponseList is obviously completed so, there are no + // more responses + return null; + } else { + // return this response + return responses.get(curResponse); + } + } + + /** + * Closes the Reponse at index i, if not null. + * + * @param i the index position of the header to close + */ + void closeResponse(int i) { + if (i < 0 || i >= responses.size()) return; + Response tmp = responses.set(i, null); + if (tmp != null) + tmp.close(); + } + + /** + * Closes the current response. + */ + void closeCurrentResponse() { + closeResponse(curResponse); + } + + /** + * Closes the current and previous responses. + */ + void closeCurOldResponses() { + for (int i = curResponse; i >= 0; i--) { + closeResponse(i); + } + } + + /** + * Closes this ResponseList by closing all the Responses in this + * ResponseList. + */ + void close() { + for (int i = 0; i < responses.size(); i++) { + closeResponse(i); + } + } + + /** + * Returns whether this ResponseList has still unclosed + * Responses. + */ + boolean hasUnclosedResponses() { + for (Response r : responses) { + if (r != null) + return true; + } + return false; + } + + /** + * Executes the query contained in this ResponseList, and + * stores the Responses resulting from this query in this + * ResponseList. + * + * @throws SQLException if a database error occurs + */ + void processQuery(String query) throws SQLException { + executeQuery(queryTempl, query); + } + + /** + * Internal executor of queries. + * + * @param templ the template to fill in + * @param the query to execute + * @throws SQLException if a database error occurs + */ + @SuppressWarnings("fallthrough") + void executeQuery(String[] templ, String query) + throws SQLException + { + boolean sendThreadInUse = false; + String error = null; + + try { + synchronized (server) { + // make sure we're ready to send query; read data till we + // have the prompt it is possible (and most likely) that we + // already have the prompt and do not have to skip any + // lines. Ignore errors from previous result sets. + in.waitForPrompt(); + + // {{{ set reply size + /** + * Change the reply size of the server. If the given + * value is the same as the current value known to use, + * then ignore this call. If it is set to 0 we get a + * prompt after the server sent it's header. + */ + int size = cachesize == 0 ? DEF_FETCHSIZE : cachesize; + size = maxrows != 0 ? Math.min(maxrows, size) : size; + // don't do work if it's not needed + if (lang == LANG_SQL && size != curReplySize && templ != commandTempl) { + sendControlCommand("reply_size " + size); + + // store the reply size after a successful change + curReplySize = size; + } + // }}} set reply size + + // If the query is larger than the TCP buffer size, use a + // special send thread to avoid deadlock with the server due + // to blocking behaviour when the buffer is full. Because + // the server will be writing back results to us, it will + // eventually block as well when its TCP buffer gets full, + // as we are blocking an not consuming from it. The result + // is a state where both client and server want to write, + // but block. + if (query.length() > MapiSocket.BLOCK) { + // get a reference to the send thread + if (sendThread == null) + sendThread = new SendThread(out); + // tell it to do some work! + sendThread.runQuery(templ, query); + sendThreadInUse = true; + } else { + // this is a simple call, which is a lot cheaper and will + // always succeed for small queries. + out.writeLine( + (templ[0] == null ? "" : templ[0]) + + query + + (templ[1] == null ? "" : templ[1])); + } + + // go for new results + String tmpLine = in.readLine(); + int linetype = in.getLineType(); + Response res = null; + while (linetype != BufferedMCLReader.PROMPT) { + // each response should start with a start of header + // (or error) + switch (linetype) { + case BufferedMCLReader.SOHEADER: + // make the response object, and fill it + try { + switch (sohp.parse(tmpLine)) { + case StartOfHeaderParser.Q_PARSE: + throw new MCLParseException("Q_PARSE header not allowed here", 1); + case StartOfHeaderParser.Q_TABLE: + case StartOfHeaderParser.Q_PREPARE: { + int id = sohp.getNextAsInt(); + int tuplecount = sohp.getNextAsInt(); + int columncount = sohp.getNextAsInt(); + int rowcount = sohp.getNextAsInt(); + // enforce the maxrows setting + if (maxrows != 0 && tuplecount > maxrows) + tuplecount = maxrows; + res = new ResultSetResponse( + id, + tuplecount, + columncount, + rowcount, + this, + seqnr + ); + // only add this resultset to + // the hashmap if it can possibly + // have an additional datablock + if (rowcount < tuplecount) { + if (rsresponses == null) + rsresponses = new HashMap<Integer, ResultSetResponse>(); + rsresponses.put( + Integer.valueOf(id), + (ResultSetResponse) res + ); + } + } break; + case StartOfHeaderParser.Q_UPDATE: + res = new UpdateResponse( + sohp.getNextAsInt(), // count + sohp.getNextAsString() // key-id + ); + break; + case StartOfHeaderParser.Q_SCHEMA: + res = new SchemaResponse(); + break; + case StartOfHeaderParser.Q_TRANS: + boolean ac = sohp.getNextAsString().equals("t") ? true : false; + if (autoCommit && ac) { + addWarning("Server enabled auto commit " + + "mode while local state " + + "already was auto commit.", "01M11" + ); + } + autoCommit = ac; + res = new AutoCommitResponse(ac); + break; + case StartOfHeaderParser.Q_BLOCK: { + // a new block of results for a + // response... + int id = sohp.getNextAsInt(); + sohp.getNextAsInt(); // columncount + int rowcount = sohp.getNextAsInt(); + int offset = sohp.getNextAsInt(); + ResultSetResponse t = + rsresponses.get(Integer.valueOf(id)); + if (t == null) { + error = "M0M12!no ResultSetResponse with id " + id + " found"; + break; + } + + DataBlockResponse r = + new DataBlockResponse( + rowcount, // rowcount + t.getRSType() == ResultSet.TYPE_FORWARD_ONLY + ); + + t.addDataBlockResponse(offset, r); + res = r; + } break; + } + } catch (MCLParseException e) { + error = "M0M10!error while parsing start of header:\n" + + e.getMessage() + + " found: '" + tmpLine.charAt(e.getErrorOffset()) + "'" + + " in: \"" + tmpLine + "\"" + + " at pos: " + e.getErrorOffset(); + // flush all the rest + in.waitForPrompt(); + linetype = in.getLineType(); + break; + } + + // immediately handle errors after parsing + // the header (res may be null) + if (error != null) { + in.waitForPrompt(); + linetype = in.getLineType(); + break; + } + + // here we have a res object, which + // we can start filling + while (res.wantsMore()) { + error = res.addLine( + in.readLine(), + in.getLineType() + ); + if (error != null) { + // right, some protocol violation, + // skip the rest of the result + error = "M0M10!" + error; + in.waitForPrompt(); + linetype = in.getLineType(); + break; + } + } + if (error != null) + break; + // it is of no use to store + // DataBlockReponses, you never want to + // retrieve them directly anyway + if (!(res instanceof DataBlockResponse)) + responses.add(res); + + // read the next line (can be prompt, new + // result, error, etc.) before we start the + // loop over + tmpLine = in.readLine(); + linetype = in.getLineType(); + break; + case BufferedMCLReader.INFO: + addWarning(tmpLine.substring(1), "01000"); + + // read the next line (can be prompt, new + // result, error, etc.) before we start the + // loop over + tmpLine = in.readLine(); + linetype = in.getLineType(); + break; + default: // Yeah... in Java this is correct! + // we have something we don't + // expect/understand, let's make it an error + // message + tmpLine = "!M0M10!protocol violation, unexpected line: " + tmpLine; + // don't break; fall through... + case BufferedMCLReader.ERROR: + // read everything till the prompt (should be + // error) we don't know if we ignore some + // garbage here... but the log should reveal + // that + error = in.waitForPrompt(); + linetype = in.getLineType(); + if (error != null) { + error = tmpLine.substring(1) + "\n" + error; + } else { + error = tmpLine.substring(1); + } + break; + } + } + } + + // if we used the sendThread, make sure it has finished + if (sendThreadInUse) { + String tmp = sendThread.getErrors(); + if (tmp != null) { + if (error == null) { + error = "08000!" + tmp; + } else { + error += "\n08000!" + tmp; + } + } + } + if (error != null) { + SQLException ret = null; + String[] errors = error.split("\n"); + for (int i = 0; i < errors.length; i++) { + if (ret == null) { + ret = new SQLException(errors[i].substring(6), + errors[i].substring(0, 5)); + } else { + ret.setNextException(new SQLException( + errors[i].substring(6), + errors[i].substring(0, 5))); + } + } + throw ret; + } + } catch (SocketTimeoutException e) { + close(); // JDBC 4.1 semantics, abort() + throw new SQLException("connection timed out", "08M33"); + } catch (IOException e) { + closed = true; + throw new SQLException(e.getMessage() + " (mserver still alive?)", "08000"); + } + } + } + // }}} + + /** + * A thread to send a query to the server. When sending large + * amounts of data to a server, the output buffer of the underlying + * communication socket may overflow. In such case the sending + * process blocks. In order to prevent deadlock, it might be + * desirable that the driver as a whole does not block. This thread + * facilitates the prevention of such 'full block', because this + * separate thread only will block.<br /> + * This thread is designed for reuse, as thread creation costs are + * high. + */ + // {{{ SendThread class implementation + static class SendThread extends Thread { + /** The state WAIT represents this thread to be waiting for + * something to do */ + private final static int WAIT = 0; + /** The state QUERY represents this thread to be executing a query */ + private final static int QUERY = 1; + /** The state SHUTDOWN is the final state that ends this thread */ + private final static int SHUTDOWN = -1; + + private String[] templ; + private String query; + private BufferedMCLWriter out; + private String error; + private int state = WAIT; + + final Lock sendLock = new ReentrantLock(); + final Condition queryAvailable = sendLock.newCondition(); + final Condition waiting = sendLock.newCondition(); + + /** + * Constructor which immediately starts this thread and sets it + * into daemon mode. + * + * @param monet the socket to write to + */ + public SendThread(BufferedMCLWriter out) { + super("SendThread"); + setDaemon(true); + this.out = out; + start(); + } + + @Override + public void run() { + sendLock.lock(); + try { + while (true) { + while (state == WAIT) { + try { + queryAvailable.await(); + } catch (InterruptedException e) { + // woken up, eh? + } + } + if (state == SHUTDOWN) + break; + + // state is QUERY here + try { + out.writeLine( + (templ[0] == null ? "" : templ[0]) + + query + + (templ[1] == null ? "" : templ[1])); + } catch (IOException e) { + error = e.getMessage(); + } + + // update our state, and notify, maybe someone is waiting + // for us in throwErrors + state = WAIT; + waiting.signal(); + } + } finally { + sendLock.unlock(); + } + } + + /** + * Starts sending the given query over the given socket. Beware + * that the thread should be finished (can be assured by calling + * throwErrors()) before this method is called! + * + * @param templ the query template + * @param query the query itself + * @throws SQLException if this SendThread is already in use + */ + public void runQuery(String[] templ, String query) throws SQLException { + sendLock.lock(); + try { + if (state != WAIT) + throw new SQLException("SendThread already in use or shutting down!", "M0M03"); + + this.templ = templ; + this.query = query; + + // let the thread know there is some work to do + state = QUERY; + queryAvailable.signal(); + } finally { + sendLock.unlock(); + } + } + + /** + * Returns errors encountered during the sending process. + * + * @return the errors or null if none + */ + public String getErrors() { + sendLock.lock(); + try { + // make sure the thread is in WAIT state, not QUERY + while (state == QUERY) { + try { + waiting.await(); + } catch (InterruptedException e) { + // just try again + } + } + if (state == SHUTDOWN) + error = "SendThread is shutting down"; + } finally { + sendLock.unlock(); + } + return error; + } + + /** + * Requests this SendThread to stop. + */ + public void shutdown() { + sendLock.lock(); + state = SHUTDOWN; + sendLock.unlock(); + this.interrupt(); // break any wait conditions + } + } + // }}} +} +
new file mode 100644 --- /dev/null +++ b/src/main/java/nl/cwi/monetdb/jdbc/MonetDataSource.java @@ -0,0 +1,218 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +package nl.cwi.monetdb.jdbc; + +import java.sql.*; +import javax.sql.*; +import java.util.*; +import java.io.*; +import java.util.logging.Logger; + +/** + * A DataSource suitable for the MonetDB database. + * + * This DataSource allows retrieval of a Connection using the JNDI bean like + * framework. A DataSource has numerous advantages over using the DriverManager + * to retrieve a Connection object. Using the DataSource interface enables a + * more transparent application where the location or database can be changed + * without changing any application code. + * + * Additionally, pooled connections can be used when using a DataSource. + * + * @author Fabian Groffen + * @version 0.1 + */ +public class MonetDataSource extends MonetWrapper implements DataSource { + private String description; + private int loginTimeout = 0; + private String user; + // insecure, but how to do it better? + private String password; + private String url; + + // the following properties are also standard: + // private String dataSourceName; + // private String networkProtocol; + // private String serverName; + // private String role; + + + private final MonetDriver driver; + + /** + * Constructor of a MonetDataSource which uses default settings for a + * connection. You probably want to change this setting using the + * method setURL. + */ + public MonetDataSource() { + description = "MonetDB database"; + url = "jdbc:monetdb://localhost/"; + + driver = new MonetDriver(); + } + + /** + * Attempts to establish a connection with the data source that this + * DataSource object represents. + * + * @return a MonetConnection + * @throws SQLException if connecting to the database fails + */ + @Override + public Connection getConnection() throws SQLException { + return getConnection(user, password); + } + + /** + * Attempts to establish a connection with the data source that this + * DataSource object represents. + * + * @param username the username to use + * @param password the password to use + * @return a MonetConnection + * @throws SQLException if connecting to the database fails + */ + @Override + public Connection getConnection(String username, String password) + throws SQLException + { + if (loginTimeout > 0) { + /// could enable Socket.setSoTimeout(int timeout) here... + } + Properties props = new Properties(); + props.put("user", username); + props.put("password", password); + + return driver.connect(url, props); + } + + + /** + * Gets the maximum time in seconds that this data source can wait while + * attempting to connect to a database. + * + * @return login timeout default is 0 (infinite) + */ + @Override + public int getLoginTimeout() { + return loginTimeout; + } + + /** + * Sets the maximum time in seconds that this data source will wait while + * attempting to connect to a database. + * + * @param seconds the number of seconds to wait before aborting the connect + */ + @Override + public void setLoginTimeout(int seconds) { + loginTimeout = seconds; + } + + /** + * Retrieves the log writer for this DataSource object. + * + * @return null, since there is no log writer + */ + @Override + public PrintWriter getLogWriter() { + return null; + } + + /** + * Sets the log writer for this DataSource object to the given + * java.io.PrintWriter object. + * + * @param out a PrintWriter - ignored + */ + @Override + public void setLogWriter(PrintWriter out) { + } + + /** + * Sets the password to use when connecting. There is no getter + * for obvious reasons. + * + * @param password the password + */ + public void setPassword(String password) { + this.password = password; + } + + /** + * Gets the username + * + * @return the username + */ + public String getUser() { + return user; + } + + /** + * Sets the username + * + * @param user the username + */ + public void setUser(String user) { + this.user = user; + } + + /** + * Gets the connection URL + * + * @return the connection URL + */ + public String getURL() { + return url; + } + + /** + * Sets the connection URL + * + * @param url the connection URL + */ + public void setDatabaseName(String url) { + this.url = url; + } + + /** + * Gets the description + * + * @return the description + */ + public String getDescription() { + return description; + } + + /** + * Sets the description + * + * @param description the description + */ + public void setDescription(String description) { + this.description = description; + } + + /** + * Return the parent Logger of all the Loggers used by this data + * source. This should be the Logger farthest from the root Logger + * that is still an ancestor of all of the Loggers used by this data + * source. Configuring this Logger will affect all of the log + * messages generated by the data source. In the worst case, this + * may be the root Logger. + * + * @return the parent Logger for this data source + * @throws SQLFeatureNotSupportedException if the data source does + * not use java.util.logging + */ + @Override + public Logger getParentLogger() throws SQLFeatureNotSupportedException { + throw new SQLFeatureNotSupportedException("java.util.logging not in use", "0A000"); + } +}
new file mode 100644 --- /dev/null +++ b/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java @@ -0,0 +1,4086 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +package nl.cwi.monetdb.jdbc; + +import java.sql.Connection; +import java.sql.DatabaseMetaData; +import java.sql.Statement; +import java.sql.SQLException; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.RowIdLifetime; +import java.sql.Types; + +import java.util.ArrayList; + +/** + * A DatabaseMetaData object suitable for the MonetDB database. + * + * @author Fabian Groffen, Martin van Dinther + * @version 0.6 + */ +public class MonetDatabaseMetaData extends MonetWrapper implements DatabaseMetaData { + private Connection con; + private String env_current_user; + private String env_monet_version; + private String env_max_clients; + + public MonetDatabaseMetaData(Connection parent) { + con = parent; + } + + /** + * Internal cache for 3 environment values retrieved from the + * server, to avoid querying the server over and over again. + * Once a value is read, it is kept in the private env_* variables for reuse. + * We currently only need the env values of: current_user, monet_version and max_clients. + */ + private synchronized void getEnvValues() { + Statement st = null; + ResultSet rs = null; + try { + st = con.createStatement(); + rs = st.executeQuery( + "SELECT \"name\", \"value\" FROM \"sys\".\"environment\"" + + " WHERE \"name\" IN ('monet_version', 'max_clients')" + + " UNION SELECT 'current_user' as \"name\", current_user as \"value\""); + if (rs != null) { + while (rs.next()) { + String prop = rs.getString("name"); + String value = rs.getString("value"); + if ("current_user".equals(prop)) { + env_current_user = value; + } else + if ("monet_version".equals(prop)) { + env_monet_version = value; + } else + if ("max_clients".equals(prop)) { + env_max_clients = value; + } + } + } + } catch (SQLException e) { + // ignore + } finally { + if (rs != null) { + try { + rs.close(); + } catch (SQLException e) { /* ignore */ } + } + if (st != null) { + try { + st.close(); + } catch (SQLException e) { /* ignore */ } + } + } +// for debug: System.out.println("Read: env_current_user: " + env_current_user + " env_monet_version: " + env_monet_version + " env_max_clients: " + env_max_clients); + } + + + /** + * Internal utility method to create a Statement object, execute a query and return the ResulSet object. + * As the Statement object is created internally (the caller does not see it and thus can not close it), + * we set it to close (and free server resources) when the ResultSet object is closed by the caller. + */ + private ResultSet executeMetaDataQuery(String query) throws SQLException { + Statement stmt = null; + ResultSet rs = null; + stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); + if (stmt != null) { +// for debug: System.out.println("SQL (len " + query.length() + "): " + query); + rs = stmt.executeQuery(query); + if (rs != null) { + /* we want the statement object to be closed also when the resultset is closed by the caller */ + stmt.closeOnCompletion(); + } else { + /* failed to produce a resultset, so release resources for created statement object now */ + stmt.close(); + } + } + return rs; + } + + /** + * Can all the procedures returned by getProcedures be called + * by the current user? + * + * @return true if so + */ + @Override + public boolean allProceduresAreCallable() { + return true; + } + + /** + * Can all the tables returned by getTable be SELECTed by + * the current user? + * + * @return true because we only have one user a.t.m. + */ + @Override + public boolean allTablesAreSelectable() { + return true; + } + + /** + * What is the URL for this database? + * + * @return a reconstructed connection string + * @throws SQLException if a database access error occurs + */ + @Override + public String getURL() throws SQLException { + return ((MonetConnection)con).getJDBCURL(); + } + + /** + * What is our user name as known to the database? + * + * @return sql user + * @throws SQLException if a database access error occurs + */ + @Override + public String getUserName() throws SQLException { + if (env_current_user == null) + getEnvValues(); + return env_current_user; + } + + /** + * Is the database in read-only mode? + * + * @return always false for now + */ + @Override + public boolean isReadOnly() { + return false; + } + + /** + * Are NULL values sorted high? + * + * @return true because MonetDB puts NULL values on top upon ORDER BY + */ + @Override + public boolean nullsAreSortedHigh() { + return true; + } + + /** + * Are NULL values sorted low? + * + * @return negative of nullsAreSortedHigh() + * @see #nullsAreSortedHigh() + */ + @Override + public boolean nullsAreSortedLow() { + return !nullsAreSortedHigh(); + } + + /** + * Are NULL values sorted at the start regardless of sort order? + * + * @return false, since MonetDB doesn't do this + */ + @Override + public boolean nullsAreSortedAtStart() { + return false; + } + + /** + * Are NULL values sorted at the end regardless of sort order? + * + * @return false, since MonetDB doesn't do this + */ + @Override + public boolean nullsAreSortedAtEnd() { + return false; + } + + /** + * What is the name of this database product - this should be MonetDB + * of course, so we return that explicitly. + * + * @return the database product name + */ + @Override + public String getDatabaseProductName() { + return "MonetDB"; + } + + /** + * What is the version of this database product. + * + * @return the mserver5 version number string + * @throws SQLException if a database access error occurs + */ + @Override + public String getDatabaseProductVersion() throws SQLException { + if (env_monet_version == null) + getEnvValues(); + return env_monet_version; + } + + /** + * What is the name of this JDBC driver? + * + * @return the JDBC driver name + */ + @Override + public String getDriverName() { + return "MonetDB Native Driver"; + } + + /** + * Retrieves the version number of this JDBC driver as a String. + * + * @return the JDBC driver version string + */ + @Override + public String getDriverVersion() { + return MonetDriver.getDriverVersion(); + } + + /** + * What is this JDBC driver's major version number? + * + * @return the JDBC driver major version number + */ + @Override + public int getDriverMajorVersion() { + return MonetDriver.getDriverMajorVersion(); + } + + /** + * What is this JDBC driver's minor version number? + * + * @return the JDBC driver minor version number + */ + @Override + public int getDriverMinorVersion() { + return MonetDriver.getDriverMinorVersion(); + } + + /** + * Does the database store tables in a local file? No - it + * stores them in a file on the server. + * + * @return false because that's what MonetDB is for + */ + @Override + public boolean usesLocalFiles() { + return false; + } + + /** + * Does the database use a local file for each table? Well, not really, + * since it doesn't use local files. + * + * @return false for it doesn't + */ + @Override + public boolean usesLocalFilePerTable() { + return false; + } + + /** + * Does the database treat mixed case unquoted SQL identifiers + * as case sensitive and as a result store them in mixed case? + * A JDBC-Compliant driver will always return false. + * + * @return false + */ + @Override + public boolean supportsMixedCaseIdentifiers() { + return false; + } + + /** + * Does the database treat mixed case unquoted SQL identifiers as + * case insensitive and store them in upper case? + * + * @return true if so + */ + @Override + public boolean storesUpperCaseIdentifiers() { + return false; + } + + /** + * Does the database treat mixed case unquoted SQL identifiers as + * case insensitive and store them in lower case? + * + * @return true if so + */ + @Override + public boolean storesLowerCaseIdentifiers() { + return true; + } + + /** + * Does the database treat mixed case unquoted SQL identifiers as + * case insensitive and store them in mixed case? + * + * @return true if so + */ + @Override + public boolean storesMixedCaseIdentifiers() { + return false; + } + + /** + * Does the database treat mixed case quoted SQL identifiers as + * case sensitive and as a result store them in mixed case? A + * JDBC compliant driver will always return true. + * + * @return true if so + */ + @Override + public boolean supportsMixedCaseQuotedIdentifiers() { + return true; + } + + /** + * Does the database treat mixed case quoted SQL identifiers as + * case insensitive and store them in upper case? + * + * @return true if so + */ + @Override + public boolean storesUpperCaseQuotedIdentifiers() { + return false; + } + + /** + * Does the database treat mixed case quoted SQL identifiers as case + * insensitive and store them in lower case? + * + * @return true if so + */ + @Override + public boolean storesLowerCaseQuotedIdentifiers() { + return false; + } + + /** + * Does the database treat mixed case quoted SQL identifiers as case + * insensitive and store them in mixed case? + * + * @return true if so + */ + @Override + public boolean storesMixedCaseQuotedIdentifiers() { + return false; + } + + /** + * What is the string used to quote SQL identifiers? This returns + * a space if identifier quoting isn't supported. A JDBC Compliant + * driver will always use a double quote character. + * + * @return the quoting string + */ + @Override + public String getIdentifierQuoteString() { + return "\""; + } + + /** + * Get a comma separated list of all a database's SQL keywords that + * are NOT also SQL:2003 keywords. + * + * @return a comma separated list of MonetDB keywords + */ + @Override + public String getSQLKeywords() { + String keywords = getConcatenatedStringFromQuery("SELECT \"keyword\" FROM \"sys\".\"keywords\" ORDER BY 1"); + + /* An old MonetDB server (pre Jul2015 release) will not have a table sys.keywords and return an empty String */ + return (keywords.length() > 0) ? keywords : + /* for old servers return static list (as returned in clients/odbc/driver/SQLGetInfo.c case SQL_KEYWORDS:) */ + "ADMIN,AFTER,AGGREGATE,ALWAYS,ASYMMETRIC,ATOMIC," + + "AUTO_INCREMENT,BEFORE,BIGINT,BIGSERIAL,BINARY,BLOB," + + "CALL,CHAIN,CLOB,COMMITTED,COPY,CORR,CUME_DIST," + + "CURRENT_ROLE,CYCLE,DATABASE,DELIMITERS,DENSE_RANK," + + "DO,EACH,ELSEIF,ENCRYPTED,EVERY,EXCLUDE,FOLLOWING," + + "FUNCTION,GENERATED,IF,ILIKE,INCREMENT,LAG,LEAD," + + "LIMIT,LOCALTIME,LOCALTIMESTAMP,LOCKED,MAXVALUE," + + "MEDIAN,MEDIUMINT,MERGE,MINVALUE,NEW,NOCYCLE," + + "NOMAXVALUE,NOMINVALUE,NOW,OFFSET,OLD,OTHERS,OVER," + + "PARTITION,PERCENT_RANK,PLAN,PRECEDING,PROD,QUANTILE," + + "RANGE,RANK,RECORDS,REFERENCING,REMOTE,RENAME," + + "REPEATABLE,REPLICA,RESTART,RETURN,RETURNS," + + "ROW_NUMBER,ROWS,SAMPLE,SAVEPOINT,SCHEMA,SEQUENCE," + + "SERIAL,SERIALIZABLE,SIMPLE,START,STATEMENT,STDIN," + + "STDOUT,STREAM,STRING,SYMMETRIC,TIES,TINYINT,TRIGGER," + + "UNBOUNDED,UNCOMMITTED,UNENCRYPTED,WHILE,XMLAGG," + + "XMLATTRIBUTES,XMLCOMMENT,XMLCONCAT,XMLDOCUMENT," + + "XMLELEMENT,XMLFOREST,XMLNAMESPACES,XMLPARSE,XMLPI," + + "XMLQUERY,XMLSCHEMA,XMLTEXT,XMLVALIDATE"; + } + + /** + * Internal utility method getConcatenatedStringFromQuery(String query) + * args: query: SQL SELECT query. Only the output of the first column is concatenated. + * @return a String of query result values concatenated into one string, and values separated by comma's + */ + private String getConcatenatedStringFromQuery(String query) { + StringBuilder sb = new StringBuilder(1024); + Statement st = null; + ResultSet rs = null; + try { + st = con.createStatement(); + rs = st.executeQuery(query); + // Fetch the first column output and concatenate the values into a StringBuilder separated by comma's + boolean isfirst = true; + while (rs.next()) { + String value = rs.getString(1); + if (value != null) { + if (isfirst) { + isfirst = false; + } else { + sb.append(','); + } + sb.append(value); + } + } + } catch (SQLException e) { + /* ignore */ + } finally { + if (rs != null) { + try { + rs.close(); + } catch (SQLException e) { /* ignore */ } + } + if (st != null) { + try { + st.close(); + } catch (SQLException e) { /* ignore */ } + } + } + // for debug: System.out.println("SQL query: " + query + "\nResult string: " + sb.toString()); + return sb.toString(); + } + + // SQL query parts shared in below four getXxxxFunctions() methods + private final static String FunctionsSelect = "SELECT DISTINCT \"name\" FROM \"sys\".\"functions\" "; + private final static String FunctionsWhere = "WHERE \"id\" IN (SELECT \"func_id\" FROM \"sys\".\"args\" WHERE \"number\" = 1 AND \"name\" = 'arg_1' AND \"type\" IN "; + + @Override + public String getNumericFunctions() { + String match = + "('tinyint', 'smallint', 'int', 'bigint', 'hugeint', 'decimal', 'double', 'real') )" + + // exclude functions which belong to the 'str' module + " AND \"mod\" <> 'str'"; + return getConcatenatedStringFromQuery(FunctionsSelect + FunctionsWhere + match + " ORDER BY 1"); + } + + @Override + public String getStringFunctions() { + String match = + "('char', 'varchar', 'clob', 'json') )" + + // include functions which belong to the 'str' module + " OR \"mod\" = 'str'"; + return getConcatenatedStringFromQuery(FunctionsSelect + FunctionsWhere + match + " ORDER BY 1"); + } + + @Override + public String getSystemFunctions() { + String wherePart = + "WHERE \"id\" NOT IN (SELECT \"func_id\" FROM \"sys\".\"args\" WHERE \"number\" = 1)" + + " AND \"id\" IN (SELECT \"function_id\" FROM \"sys\".\"systemfunctions\")" + + " AND \"type\" = 1" + // only scalar functions + // add system functions which are not listed in sys.functions but implemented in the SQL parser (see sql/server/sql_parser.y) + " UNION SELECT 'cast'" + + " UNION SELECT 'convert'" + + " UNION SELECT 'coalesce'" + + " UNION SELECT 'extract'" + + " UNION SELECT 'ifthenelse'" + + " UNION SELECT 'isnull'" + + " UNION SELECT 'nullif'"; + return getConcatenatedStringFromQuery(FunctionsSelect + wherePart + " ORDER BY 1"); + } + + @Override + public String getTimeDateFunctions() { + String match = + "('date', 'time', 'timestamp', 'timetz', 'timestamptz', 'sec_interval', 'month_interval') )"; + return getConcatenatedStringFromQuery(FunctionsSelect + FunctionsWhere + match + " ORDER BY 1"); + } + + /** + * This is the string that can be used to escape '_' and '%' in + * a search string pattern style catalog search parameters + * + * @return the string used to escape wildcard characters + */ + @Override + public String getSearchStringEscape() { + return "\\"; + } + + /** + * Get all the "extra" characters that can be used in unquoted + * identifier names (those beyond a-zA-Z0-9 and _) + * MonetDB has no extra characters (verified it for chars: !@#$%^&*()~{}[]? + * + * @return a string containing the extra characters + */ + @Override + public String getExtraNameCharacters() { + return ""; + } + + /** + * Is "ALTER TABLE" with an add column supported? + * + * @return true if so + */ + @Override + public boolean supportsAlterTableWithAddColumn() { + return true; + } + + /** + * Is "ALTER TABLE" with a drop column supported? + * + * @return true if so + */ + @Override + public boolean supportsAlterTableWithDropColumn() { + return true; + } + + /** + * Is column aliasing supported? + * + * <p>If so, the SQL AS clause can be used to provide names for + * computed columns or to provide alias names for columns as + * required. A JDBC Compliant driver always returns true. + * + * <p>e.g. + * + * <br><pre> + * select count(C) as C_COUNT from T group by C; + * + * </pre><br> + * should return a column named as C_COUNT instead of count(C) + * + * @return true if so + */ + @Override + public boolean supportsColumnAliasing() { + return true; + } + + /** + * Are concatenations between NULL and non-NULL values NULL? A + * JDBC Compliant driver always returns true + * + * @return true if so + */ + @Override + public boolean nullPlusNonNullIsNull() { + return true; + } + + /** + * Retrieves whether this database supports the JDBC scalar function + * CONVERT for the conversion of one JDBC type to another. + * The JDBC types are the generic SQL data types defined in java.sql.Types. + * + * @return true if so; false otherwise + */ + @Override + public boolean supportsConvert() { + return true; + } + + /** + * Retrieves whether this database supports the JDBC scalar function + * CONVERT for conversions between the JDBC types fromType and toType. + * The JDBC types are the generic SQL data types defined in java.sql.Types. + * + * @return true if so; false otherwise + */ + @Override + public boolean supportsConvert(int fromType, int toType) { + switch (fromType) { + case Types.BOOLEAN: + switch (toType) { + case Types.BOOLEAN: + /* case Types.BIT: is not supported by MonetDB and will fail */ + case Types.TINYINT: + case Types.SMALLINT: + case Types.INTEGER: + case Types.BIGINT: + /* conversion to FLOAT, REAL, DOUBLE, NUMERIC and DECIMAL is not supported by MonetDB */ + case Types.CHAR: + case Types.VARCHAR: + /* case Types.LONGVARCHAR: is not supported by MonetDB and will fail */ + case Types.CLOB: + return true; + } + // conversion to all other types is not supported + return false; + /* case Types.BIT: is not supported by MonetDB and will fail */ + /* case Types.BINARY: is not supported by MonetDB and will fail */ + /* case Types.VARBINARY: is not supported by MonetDB and will fail */ + /* case Types.LONGVARBINARY: is not supported by MonetDB and will fail */ + case Types.BLOB: + switch (toType) { + /* case Types.BINARY: is not supported by MonetDB and will fail */ + /* case Types.VARBINARY: is not supported by MonetDB and will fail */ + /* case Types.LONGVARBINARY: is not supported by MonetDB and will fail */ + case Types.BLOB: + case Types.VARCHAR: + /* case Types.LONGVARCHAR: is not supported by MonetDB and will fail */ + case Types.CLOB: + return true; + } + // conversion to all other types is not supported + return false; + case Types.TINYINT: + case Types.SMALLINT: + case Types.INTEGER: + case Types.BIGINT: + case Types.FLOAT: + case Types.REAL: + case Types.DOUBLE: + case Types.NUMERIC: + case Types.DECIMAL: + switch (toType) { + case Types.BOOLEAN: + /* case Types.BIT: is not supported by MonetDB and will fail */ + case Types.TINYINT: + case Types.SMALLINT: + case Types.INTEGER: + case Types.BIGINT: + case Types.FLOAT: + case Types.REAL: + case Types.DOUBLE: + case Types.NUMERIC: + case Types.DECIMAL: + case Types.CHAR: + case Types.VARCHAR: + /* case Types.LONGVARCHAR: is not supported by MonetDB and will fail */ + case Types.CLOB: + return true; + } + // conversion to all other types is not supported + return false; + case Types.CHAR: + case Types.VARCHAR: + /* case Types.LONGVARCHAR: is not supported by MonetDB and will fail */ + case Types.CLOB: + switch (toType) { + case Types.BOOLEAN: + /* case Types.BIT: is not supported by MonetDB and will fail */ + case Types.TINYINT: + case Types.SMALLINT: + case Types.INTEGER: + case Types.BIGINT: + case Types.FLOAT: + case Types.REAL: + case Types.DOUBLE: + case Types.NUMERIC: + case Types.DECIMAL: + case Types.CHAR: + case Types.VARCHAR: + /* case Types.LONGVARCHAR: is not supported by MonetDB and will fail */ + case Types.CLOB: + case Types.BLOB: + case Types.DATE: + case Types.TIME: + case Types.TIMESTAMP: + return true; + } + // conversion to all other types is not supported + return false; + case Types.DATE: + switch (toType) { + case Types.CHAR: + case Types.VARCHAR: + /* case Types.LONGVARCHAR: is not supported by MonetDB and will fail */ + case Types.CLOB: + case Types.DATE: + case Types.TIMESTAMP: + return true; + } + // conversion to all other types is not supported + return false; + case Types.TIME: + switch (toType) { + case Types.CHAR: + case Types.VARCHAR: + /* case Types.LONGVARCHAR: is not supported by MonetDB and will fail */ + case Types.CLOB: + case Types.TIME: + return true; + } + // conversion to all other types is not supported + return false; + case Types.TIMESTAMP: + switch (toType) { + case Types.CHAR: + case Types.VARCHAR: + /* case Types.LONGVARCHAR: is not supported by MonetDB and will fail */ + case Types.CLOB: + case Types.DATE: + case Types.TIME: + case Types.TIMESTAMP: + return true; + } + // conversion to all other types is not supported + return false; + } + + // conversion from all other JDBC SQL types are not supported + return false; + } + + /** + * Are table correlation names supported? A JDBC Compliant + * driver always returns true. + * + * @return true if so + */ + @Override + public boolean supportsTableCorrelationNames() { + return true; + } + + /** + * If table correlation names are supported, are they restricted to + * be different from the names of the tables? + * + * @return true if so; false otherwise + */ + @Override + public boolean supportsDifferentTableCorrelationNames() { + return false; + } + + /** + * Are expressions in "ORDER BY" lists supported? + * e.g. select * from t order by a + b; + * + * MonetDB supports this, try: + * select (radix * 1000) + digits as comp, * from types order by (radix * 1000) + digits, -id; + * + * @return true if so + */ + @Override + public boolean supportsExpressionsInOrderBy() { + return true; + } + + /** + * Can an "ORDER BY" clause use columns not in the SELECT? + * MonetDB differs from SQL03 => true + * + * @return true if so + */ + @Override + public boolean supportsOrderByUnrelated() { + return true; + } + + /** + * Is some form of "GROUP BY" clause supported? + * + * @return true since MonetDB supports it + */ + @Override + public boolean supportsGroupBy() { + return true; + } + + /** + * Can a "GROUP BY" clause use columns not in the SELECT? + * + * @return true since that also is supported + */ + @Override + public boolean supportsGroupByUnrelated() { + return true; + } + + /** + * Can a "GROUP BY" clause add columns not in the SELECT provided + * it specifies all the columns in the SELECT? + * + * (MonetDB already supports the more difficult supportsGroupByUnrelated(), + * so this is a piece of cake) + * + * @return true if so + */ + @Override + public boolean supportsGroupByBeyondSelect() { + return true; + } + + /** + * Is the escape character in "LIKE" clauses supported? A + * JDBC compliant driver always returns true. + * + * @return true if so + */ + @Override + public boolean supportsLikeEscapeClause() { + return true; + } + + /** + * Are multiple ResultSets from a single execute supported? + * + * @return true if so + */ + @Override + public boolean supportsMultipleResultSets() { + return true; + } + + /** + * Can we have multiple transactions open at once (on different + * connections?) + * This is the main idea behind the Connection, is it? + * + * @return true if so + */ + @Override + public boolean supportsMultipleTransactions() { + return true; + } + + /** + * Can columns be defined as non-nullable. A JDBC Compliant driver + * always returns true. + * + * @return true if so + */ + @Override + public boolean supportsNonNullableColumns() { + return true; + } + + /** + * Does this driver support the minimum ODBC SQL grammar. This + * grammar is defined at: + * + * http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odbc/htm/odappcpr.asp + * From this description, we seem to support the ODBC minimal (Level 0) grammar. + * + * @return true if so + */ + @Override + public boolean supportsMinimumSQLGrammar() { + return true; + } + + /** + * Does this driver support the Core ODBC SQL grammar. We need + * SQL-92 conformance for this. + * + * @return true if so + */ + @Override + public boolean supportsCoreSQLGrammar() { + return true; + } + + /** + * Does this driver support the Extended (Level 2) ODBC SQL + * grammar. We don't conform to the Core (Level 1), so we can't + * conform to the Extended SQL Grammar. + * + * @return true if so + */ + @Override + public boolean supportsExtendedSQLGrammar() { + return false; + } + + /** + * Does this driver support the ANSI-92 entry level SQL grammar? + * All JDBC Compliant drivers must return true. We should be this + * compliant, so let's 'act' like we are. + * + * @return true if so + */ + @Override + public boolean supportsANSI92EntryLevelSQL() { + return true; + } + + /** + * Does this driver support the ANSI-92 intermediate level SQL + * grammar? + * probably not + * + * @return true if so + */ + @Override + public boolean supportsANSI92IntermediateSQL() { + return false; + } + + /** + * Does this driver support the ANSI-92 full SQL grammar? + * Would be good if it was like that + * + * @return true if so + */ + @Override + public boolean supportsANSI92FullSQL() { + return false; + } + + /** + * Is the SQL Integrity Enhancement Facility supported? + * Our best guess is that this means support for constraints + * + * @return true if so + */ + @Override + public boolean supportsIntegrityEnhancementFacility() { + return true; + } + + /** + * Is some form of outer join supported? + * + * @return true if so + */ + @Override + public boolean supportsOuterJoins(){ + return true; + } + + /** + * Are full nexted outer joins supported? + * + * @return true if so + */ + @Override + public boolean supportsFullOuterJoins() { + return true; + } + + /** + * Is there limited support for outer joins? + * + * @return true if so + */ + @Override + public boolean supportsLimitedOuterJoins() { + return false; + } + + /** + * What is the database vendor's preferred term for "schema"? + * MonetDB uses the term "schema". + * + * @return the vendor term + */ + @Override + public String getSchemaTerm() { + return "schema"; + } + + /** + * What is the database vendor's preferred term for "procedure"? + * + * @return the vendor term + */ + @Override + public String getProcedureTerm() { + return "procedure"; + } + + /** + * What is the database vendor's preferred term for "catalog"? + * MonetDB doesn't really have them (from driver accessible) but + * from the monetdb.conf file the term "database" sounds best + * + * @return the vendor term + */ + @Override + public String getCatalogTerm() { + return "database"; + } + + /** + * Does a catalog appear at the start of a qualified table name? + * (Otherwise it appears at the end). + * Currently there is no catalog support at all in MonetDB + * + * @return true if so + */ + @Override + public boolean isCatalogAtStart() { + // return true here; we return false for every other catalog function + // so it won't matter what we return here + return true; + } + + /** + * What is the Catalog separator. + * + * @return the catalog separator string + */ + @Override + public String getCatalogSeparator() { + // MonetDB does NOT support catalogs, so also no catalog separator + return null; + } + + /** + * Can a schema name be used in a data manipulation statement? + * + * @return true if so + */ + @Override + public boolean supportsSchemasInDataManipulation() { + return true; + } + + /** + * Can a schema name be used in a procedure call statement? + * Ohw probably, but I don't know of procedures in MonetDB + * + * @return true if so + */ + @Override + public boolean supportsSchemasInProcedureCalls() { + return true; + } + + /** + * Can a schema be used in a table definition statement? + * + * @return true if so + */ + @Override + public boolean supportsSchemasInTableDefinitions() { + return true; + } + + /** + * Can a schema name be used in an index definition statement? + * + * @return true if so + */ + @Override + public boolean supportsSchemasInIndexDefinitions() { + return true; + } + + /** + * Can a schema name be used in a privilege definition statement? + * + * @return true if so + */ + @Override + public boolean supportsSchemasInPrivilegeDefinitions() { + return true; + } + + /** + * Can a catalog name be used in a data manipulation statement? + * + * @return true if so + */ + @Override + public boolean supportsCatalogsInDataManipulation() { + return false; + } + + /** + * Can a catalog name be used in a procedure call statement? + * + * @return true if so + */ + @Override + public boolean supportsCatalogsInProcedureCalls() { + return false; + } + + /** + * Can a catalog name be used in a table definition statement? + * + * @return true if so + */ + @Override + public boolean supportsCatalogsInTableDefinitions() { + return false; + } + + /** + * Can a catalog name be used in an index definition? + * + * @return true if so + */ + @Override + public boolean supportsCatalogsInIndexDefinitions() { + return false; + } + + /** + * Can a catalog name be used in a privilege definition statement? + * + * @return true if so + */ + @Override + public boolean supportsCatalogsInPrivilegeDefinitions() { + return false; + } + + /** + * MonetDB doesn't support positioned DELETEs I guess + * + * @return true if so + */ + @Override + public boolean supportsPositionedDelete() { + return false; + } + + /** + * Is positioned UPDATE supported? (same as above) + * + * @return true if so + */ + @Override + public boolean supportsPositionedUpdate() { + return false; + } + + /** + * Is SELECT FOR UPDATE supported? + * My test resulted in a negative answer + * + * @return true if so; false otherwise + */ + @Override + public boolean supportsSelectForUpdate(){ + return false; + } + + /** + * Are stored procedure calls using the stored procedure escape + * syntax supported? + * + * @return true if so; false otherwise + */ + @Override + public boolean supportsStoredProcedures() { + return true; + } + + /** + * Are subqueries in comparison expressions supported? A JDBC + * Compliant driver always returns true. MonetDB also supports this + * + * @return true if so; false otherwise + */ + @Override + public boolean supportsSubqueriesInComparisons() { + return true; + } + + /** + * Are subqueries in 'exists' expressions supported? A JDBC + * Compliant driver always returns true. + * + * @return true if so; false otherwise + */ + @Override + public boolean supportsSubqueriesInExists() { + return true; + } + + /** + * Are subqueries in 'in' statements supported? A JDBC + * Compliant driver always returns true. + * + * @return true if so; false otherwise + */ + @Override + public boolean supportsSubqueriesInIns() { + return true; + } + + /** + * Are subqueries in quantified expressions supported? A JDBC + * Compliant driver always returns true. + * + * (No idea what this is, but we support a good deal of + * subquerying.) + * + * @return true if so; false otherwise + */ + @Override + public boolean supportsSubqueriesInQuantifieds() { + return true; + } + + /** + * Are correlated subqueries supported? A JDBC Compliant driver + * always returns true. + * + * (a.k.a. subselect in from?) + * + * @return true if so; false otherwise + */ + @Override + public boolean supportsCorrelatedSubqueries() { + return true; + } + + /** + * Is SQL UNION supported? + * since 2004-03-20 + * + * @return true if so + */ + @Override + public boolean supportsUnion() { + return true; + } + + /** + * Is SQL UNION ALL supported? + * since 2004-03-20 + * + * @return true if so + */ + @Override + public boolean supportsUnionAll() { + return true; + } + + /** + * ResultSet objects (cursors) are not closed upon explicit or + * implicit commit. + * + * @return true if so + */ + @Override + public boolean supportsOpenCursorsAcrossCommit() { + return true; + } + + /** + * Same as above + * + * @return true if so + */ + @Override + public boolean supportsOpenCursorsAcrossRollback() { + return true; + } + + /** + * Can statements remain open across commits? They may, but + * this driver cannot guarentee that. In further reflection. + * we are taking a Statement object here, so the answer is + * yes, since the Statement is only a vehicle to execute some SQL + * + * @return true if they always remain open; false otherwise + */ + @Override + public boolean supportsOpenStatementsAcrossCommit() { + return true; + } + + /** + * Can statements remain open across rollbacks? They may, but + * this driver cannot guarentee that. In further contemplation, + * we are taking a Statement object here, so the answer is yes again. + * + * @return true if they always remain open; false otherwise + */ + @Override + public boolean supportsOpenStatementsAcrossRollback() { + return true; + } + + /** + * How many hex characters can you have in an inline binary literal + * I honestly wouldn't know... + * + * @return the max literal length + */ + @Override + public int getMaxBinaryLiteralLength() { + return 0; // no limit + } + + /** + * What is the maximum length for a character literal + * Is there a max? + * + * @return the max literal length + */ + @Override + public int getMaxCharLiteralLength() { + return 0; // no limit + } + + /** + * Whats the limit on column name length. + * I take some safety here, but it's just a varchar in MonetDB + * + * @return the maximum column name length + */ + @Override + public int getMaxColumnNameLength() { + return 1024; + } + + /** + * What is the maximum number of columns in a "GROUP BY" clause? + * + * @return the max number of columns + */ + @Override + public int getMaxColumnsInGroupBy() { + return 0; // no limit + } + + /** + * What's the maximum number of columns allowed in an index? + * + * @return max number of columns + */ + @Override + public int getMaxColumnsInIndex() { + return 0; // unlimited I guess + } + + /** + * What's the maximum number of columns in an "ORDER BY clause? + * + * @return the max columns + */ + @Override + public int getMaxColumnsInOrderBy() { + return 0; // unlimited I guess + } + + /** + * What is the maximum number of columns in a "SELECT" list? + * + * @return the max columns + */ + @Override + public int getMaxColumnsInSelect() { + return 0; // unlimited I guess + } + + /** + * What is the maximum number of columns in a table? + * wasn't MonetDB designed for datamining? (= much columns) + * + * @return the max columns + */ + @Override + public int getMaxColumnsInTable() { + return 0; + } + + /** + * How many active connections can we have at a time to this + * database? Well, since it depends on Mserver, which just listens + * for new connections and creates a new thread for each connection, + * this number can be very high, and theoretically till the system + * runs out of resources. However, knowing MonetDB is knowing that you + * should handle it a little bit with care, so I give a very minimalistic + * number here. + * + * @return the maximum number of connections + */ + @Override + public int getMaxConnections() { + if (env_max_clients == null) + getEnvValues(); + + int max_clients = 16; + if (env_max_clients != null) { + try { + max_clients = Integer.parseInt(env_max_clients); + } catch (NumberFormatException nfe) { /* ignore */ } + } + return max_clients; + } + + /** + * What is the maximum cursor name length + * Actually we do not do named cursors, so I keep the value small as + * a precaution for maybe the future. + * + * @return max cursor name length in bytes + */ + @Override + public int getMaxCursorNameLength() { + return 1024; + } + + /** + * Retrieves the maximum number of bytes for an index, including all + * of the parts of the index. + * + * @return max index length in bytes, which includes the composite + * of all the constituent parts of the index; a result of zero + * means that there is no limit or the limit is not known + */ + @Override + public int getMaxIndexLength() { + return 0; // I assume it is large, but I don't know + } + + /** + * Retrieves the maximum number of characters that this database + * allows in a schema name. + * + * @return the number of characters or 0 if there is no limit, or the + * limit is unknown. + */ + @Override + public int getMaxSchemaNameLength() { + return 1024; + } + + /** + * What is the maximum length of a procedure name + * + * @return the max name length in bytes + */ + @Override + public int getMaxProcedureNameLength() { + return 1024; + } + + /** + * What is the maximum length of a catalog + * + * @return the maximum number of characters allowed in a catalog name; + * a result of zero means that there is no limit or the limit is not known + */ + @Override + public int getMaxCatalogNameLength() { + return 0; // MonetDB does not support catalog names + } + + /** + * What is the maximum length of a single row? + * + * @return max row size in bytes + */ + @Override + public int getMaxRowSize() { + return 0; // very long I hope... + } + + /** + * Did getMaxRowSize() include LONGVARCHAR and LONGVARBINARY + * blobs? + * Yes I thought so... + * + * @return true if so + */ + @Override + public boolean doesMaxRowSizeIncludeBlobs() { + return true; + } + + /** + * What is the maximum length of a SQL statement? + * Till a programmer makes a mistake and causes a segmentation fault + * on a string overflow... + * + * @return max length in bytes + */ + @Override + public int getMaxStatementLength() { + return 0; // actually whatever fits in size_t + } + + /** + * How many active statements can we have open at one time to + * this database? Basically, since each Statement downloads + * the results as the query is executed, we can have many. + * + * @return the maximum + */ + @Override + public int getMaxStatements() { + return 0; + } + + /** + * What is the maximum length of a table name + * + * @return max name length in bytes + */ + @Override + public int getMaxTableNameLength() { + return 1024; + } + + /** + * What is the maximum number of tables that can be specified + * in a SELECT? + * + * @return the maximum + */ + @Override + public int getMaxTablesInSelect() { + return 0; // no limit + } + + /** + * What is the maximum length of a user name + * + * @return the max name length in bytes + */ + @Override + public int getMaxUserNameLength() { + return 512; + } + + /** + * What is the database's default transaction isolation level? + * We only see commited data, nonrepeatable reads and phantom + * reads can occur. + * + * @return the default isolation level + * @see Connection + */ + @Override + public int getDefaultTransactionIsolation() { + return Connection.TRANSACTION_SERIALIZABLE; + } + + /** + * Are transactions supported? If not, commit and rollback are noops + * and the isolation level is TRANSACTION_NONE. We do support + * transactions. + * + * @return true if transactions are supported + */ + @Override + public boolean supportsTransactions() { + return true; + } + + /** + * Does the database support the given transaction isolation level? + * We only support TRANSACTION_READ_COMMITTED as far as I know + * + * @param level the values are defined in java.sql.Connection + * @return true if so + * @see Connection + */ + @Override + public boolean supportsTransactionIsolationLevel(int level) { + return level == Connection.TRANSACTION_SERIALIZABLE; + } + + /** + * Are both data definition and data manipulation transactions + * supported? + * Supposedly that data definition is like CREATE or ALTER TABLE + * yes it is. + * + * @return true if so + */ + @Override + public boolean supportsDataDefinitionAndDataManipulationTransactions() { + return true; + } + + /** + * Are only data manipulation statements within a transaction + * supported? + * + * @return true if so + */ + @Override + public boolean supportsDataManipulationTransactionsOnly() { + return false; + } + + /** + * Does a data definition statement within a transaction force + * the transaction to commit? I think this means something like: + * + * <p><pre> + * CREATE TABLE T (A INT); + * INSERT INTO T (A) VALUES (2); + * BEGIN; + * UPDATE T SET A = A + 1; + * CREATE TABLE X (A INT); + * SELECT A FROM T INTO X; + * COMMIT; + * </pre></p> + * + * does the CREATE TABLE call cause a commit? The answer is no. + * + * @return true if so + */ + @Override + public boolean dataDefinitionCausesTransactionCommit() { + return false; + } + + /** + * Is a data definition statement within a transaction ignored? + * + * @return true if so + */ + @Override + public boolean dataDefinitionIgnoredInTransactions() { + return false; + } + + /** + * Get a description of stored procedures available in a catalog + * + * <p>Only procedure descriptions matching the schema and procedure + * name criteria are returned. They are ordered by PROCEDURE_SCHEM, + * PROCEDURE_NAME and SPECIFIC_NAME. + * + * <p>Each procedure description has the following columns: + * <ol> + * <li><b>PROCEDURE_CAT</b> String => procedure catalog (may be null) + * <li><b>PROCEDURE_SCHEM</b> String => procedure schema (may be null) + * <li><b>PROCEDURE_NAME</b> String => procedure name + * <li><b>Field4</b> reserved (make it null) + * <li><b>Field5</b> reserved (make it null) + * <li><b>Field6</b> reserved (make it null) + * <li><b>REMARKS</b> String => explanatory comment on the procedure + * <li><b>PROCEDURE_TYPE</b> short => kind of procedure + * <ul> + * <li> procedureResultUnknown - May return a result + * <li> procedureNoResult - Does not return a result + * <li> procedureReturnsResult - Returns a result + * </ul> + * </ol> + * <li><b>SPECIFIC_NAME</b> String => The name which uniquely identifies this procedure within its schema. + * + * @param catalog - a catalog name; must match the catalog name as it is stored in the database; + * "" retrieves those without a catalog; + * null means that the catalog name should not be used to narrow the search + * @param schemaPattern - a schema name pattern; must match the schema name as it is stored in the database; + * "" retrieves those without a schema; + * null means that the schema name should not be used to narrow the search + * @param procedureNamePattern - a procedure name pattern; must match the procedure name as it is stored in the database + * @return ResultSet - each row is a procedure description + * @throws SQLException if a database access error occurs + */ + @Override + public ResultSet getProcedures( + String catalog, + String schemaPattern, + String procedureNamePattern + ) throws SQLException + { + StringBuilder query = new StringBuilder(980); + query.append("SELECT cast(null as varchar(1)) AS \"PROCEDURE_CAT\", " + + "\"schemas\".\"name\" AS \"PROCEDURE_SCHEM\", " + + "\"functions\".\"name\" AS \"PROCEDURE_NAME\", " + + "cast(null as char(1)) AS \"Field4\", " + + "cast(null as char(1)) AS \"Field5\", " + + "cast(null as char(1)) AS \"Field6\", " + + "cast(\"functions\".\"func\" as varchar(9999)) AS \"REMARKS\", " + + // in MonetDB procedures have no return value by design. + "CAST(").append(DatabaseMetaData.procedureNoResult).append(" AS smallint) AS \"PROCEDURE_TYPE\", " + + // only the id value uniquely identifies a procedure. Include it to be able to differentiate between multiple overloaded procedures with the same name + "cast(\"functions\".\"id\" as varchar(10)) AS \"SPECIFIC_NAME\" " + + "FROM \"sys\".\"functions\" JOIN \"sys\".\"schemas\" ON (\"functions\".\"schema_id\" = \"schemas\".\"id\") " + + // include procedures only (type = 2). Others will be returned via getFunctions() + "WHERE \"functions\".\"type\" = 2"); + + if (catalog != null && catalog.length() > 0) { + // none empty catalog selection. + // as we do not support catalogs this always results in no rows returned + query.append(" AND 1 = 0"); + } + if (schemaPattern != null) { + query.append(" AND \"schemas\".\"name\" ").append(composeMatchPart(schemaPattern)); + } + if (procedureNamePattern != null) { + query.append(" AND \"functions\".\"name\" ").append(composeMatchPart(procedureNamePattern)); + } + + query.append(" ORDER BY \"PROCEDURE_SCHEM\", \"PROCEDURE_NAME\", \"SPECIFIC_NAME\""); + + return executeMetaDataQuery(query.toString()); + } + + /** + * Get a description of a catalog's stored procedure parameters + * and result columns. + * + * <p>Only descriptions matching the schema, procedure and parameter name + * criteria are returned. They are ordered by PROCEDURE_SCHEM, PROCEDURE_NAME + * and SPECIFIC_NAME. Within this, the return value, if any, is first. + * Next are the parameter descriptions in call order. The + * column descriptions follow in column number order. + * + * <p>Each row in the ResultSet is a parameter description or column + * description with the following fields: + * <ol> + * <li><b>PROCEDURE_CAT</b> String => procedure catalog (may be null) + * <li><b>PROCEDURE_SCHEM</b> String => procedure schema (may be null) + * <li><b>PROCEDURE_NAME</b> String => procedure name + * <li><b>COLUMN_NAME</b> String => column/parameter name + * <li><b>COLUMN_TYPE</b> Short => kind of column/parameter: + * <ul><li>procedureColumnUnknown - nobody knows + * <li>procedureColumnIn - IN parameter + * <li>procedureColumnInOut - INOUT parameter + * <li>procedureColumnOut - OUT parameter + * <li>procedureColumnReturn - procedure return value + * <li>procedureColumnResult - result column in ResultSet + * </ul> + * <li><b>DATA_TYPE</b> int => SQL type from java.sql.Types + * <li><b>TYPE_NAME</b> String => SQL type name, for a UDT type the type name is fully qualified + * <li><b>PRECISION</b> int => precision + * <li><b>LENGTH</b> int => length in bytes of data + * <li><b>SCALE</b> short => scale - null is returned for data types where SCALE is not applicable. + * <li><b>RADIX</b> short => radix + * <li><b>NULLABLE</b> short => can it contain NULL? + * <ul><li>procedureNoNulls - does not allow NULL values + * <li>procedureNullable - allows NULL values + * <li>procedureNullableUnknown - nullability unknown + * </ul> + * <li><b>REMARKS</b> String => comment describing parameter/column + * <li><b>COLUMN_DEF</b> String => default value for the column, which should be interpreted as a string when the value is enclosed in single quotes (may be null) + * The string NULL (not enclosed in quotes) - if NULL was specified as the default value + * TRUNCATE (not enclosed in quotes) - if the specified default value cannot be represented without truncation + * NULL - if a default value was not specified + * <li><b>SQL_DATA_TYPE</b> int => reserved for future use + * <li><b>SQL_DATETIME_SUB</b> int => reserved for future use + * <li><b>CHAR_OCTET_LENGTH</b> int => the maximum length of binary and character based columns. For any other datatype the returned value is a NULL + * <li><b>ORDINAL_POSITION</b> int => the ordinal position, starting from 1, for the input and output parameters for a procedure. + * A value of 0 is returned if this row describes the procedure's return value. For result set columns, it is the ordinal position of the + * column in the result set starting from 1. If there are multiple result sets, the column ordinal positions are implementation defined. + * <li><b>IS_NULLABLE</b> String => ISO rules are used to determine the nullability for a column. + * <ul><li>YES --- if the parameter can include NULLs + * <li>NO --- if the parameter cannot include NULLs + * <li>empty string --- if the nullability for the parameter is unknown + * </ul> + * <li><b>SPECIFIC_NAME</b> String => the name which uniquely identifies this procedure within its schema. + * </ol> + * @param catalog - a catalog name; must match the catalog name as it is stored in the database; + * "" retrieves those without a catalog; + * null means that the catalog name should not be used to narrow the search + * @param schemaPattern - a schema name pattern; must match the schema name as it is stored in the database; + * "" retrieves those without a schema; + * null means that the schema name should not be used to narrow the search + * @param procedureNamePattern - a procedure name pattern; must match the procedure name as it is stored in the database + * @param columnNamePattern - a column name pattern; must match the column name as it is stored in the database + * @return ResultSet - each row describes a stored procedure parameter or column + * @throws SQLException if a database-access error occurs + * @see #getSearchStringEscape + */ + @Override + public ResultSet getProcedureColumns( + String catalog, + String schemaPattern, + String procedureNamePattern, + String columnNamePattern + ) throws SQLException { + StringBuilder query = new StringBuilder(2900); + query.append("SELECT cast(null as varchar(1)) AS \"PROCEDURE_CAT\", " + + "\"schemas\".\"name\" AS \"PROCEDURE_SCHEM\", " + + "\"functions\".\"name\" AS \"PROCEDURE_NAME\", " + + "\"args\".\"name\" AS \"COLUMN_NAME\", " + + "CAST(CASE \"args\".\"inout\"" + + " WHEN 0 THEN (CASE \"args\".\"number\" WHEN 0 THEN ").append(DatabaseMetaData.procedureColumnReturn).append(" ELSE ").append(DatabaseMetaData.procedureColumnOut).append(" END)" + + " WHEN 1 THEN ").append(DatabaseMetaData.procedureColumnIn) + .append(" ELSE ").append(DatabaseMetaData.procedureColumnUnknown).append(" END AS smallint) AS \"COLUMN_TYPE\", " + + "CAST(").append(MonetDriver.getSQLTypeMap("\"args\".\"type\"")).append(" AS int) AS \"DATA_TYPE\", " + + "\"args\".\"type\" AS \"TYPE_NAME\", " + + "CASE \"args\".\"type\" WHEN 'tinyint' THEN 3 WHEN 'smallint' THEN 5 WHEN 'int' THEN 10 WHEN 'bigint' THEN 19 WHEN 'hugeint' THEN 38 WHEN 'oid' THEN 19 WHEN 'wrd' THEN 19 ELSE \"args\".\"type_digits\" END AS \"PRECISION\", " + + "CASE \"args\".\"type\" WHEN 'tinyint' THEN 1 WHEN 'smallint' THEN 2 WHEN 'int' THEN 4 WHEN 'bigint' THEN 8 WHEN 'hugeint' THEN 16 WHEN 'oid' THEN 8 WHEN 'wrd' THEN 8 ELSE \"args\".\"type_digits\" END AS \"LENGTH\", " + + "CAST(CASE WHEN \"args\".\"type\" IN ('tinyint','smallint','int','bigint','hugeint','oid','wrd','decimal','numeric','time','timetz','timestamp','timestamptz','sec_interval') THEN \"args\".\"type_scale\" ELSE NULL END AS smallint) AS \"SCALE\", " + + "CAST(CASE WHEN \"args\".\"type\" IN ('tinyint','smallint','int','bigint','hugeint','oid','wrd','decimal','numeric') THEN 10 WHEN \"args\".\"type\" IN ('real','float','double') THEN 2 ELSE NULL END AS smallint) AS \"RADIX\", " + + "CAST(").append(DatabaseMetaData.procedureNullableUnknown).append(" AS smallint) AS \"NULLABLE\", " + + "CAST(null as char(1)) AS \"REMARKS\", " + + "CAST(null as char(1)) AS \"COLUMN_DEF\", " + + "CAST(0 as int) AS \"SQL_DATA_TYPE\", " + + "CAST(0 as int) AS \"SQL_DATETIME_SUB\", " + + "CAST(CASE WHEN \"args\".\"type\" IN ('char','varchar','clob') THEN \"args\".\"type_digits\" ELSE NULL END as int) AS \"CHAR_OCTET_LENGTH\", " + + // in MonetDB procedures have no return value by design. The arguments in sys.args are numbered from 0 so we must add 1 to comply with the API specification. + "CAST(\"args\".\"number\" + 1 as int) AS \"ORDINAL_POSITION\", " + + "CAST('' as varchar(3)) AS \"IS_NULLABLE\", " + + // the specific name contains the function id, in order to be able to match the args to the correct overloaded procedure name + "cast(\"functions\".\"id\" as varchar(10)) AS \"SPECIFIC_NAME\" " + + "FROM \"sys\".\"args\", \"sys\".\"functions\", \"sys\".\"schemas\" " + + "WHERE \"args\".\"func_id\" = \"functions\".\"id\" " + + "AND \"functions\".\"schema_id\" = \"schemas\".\"id\" " + + // include procedures only (type = 2). Others will be returned via getFunctionColumns() + "AND \"functions\".\"type\" = 2"); + + if (catalog != null && catalog.length() > 0) { + // none empty catalog selection. + // as we do not support catalogs this always results in no rows returned + query.append(" AND 1 = 0"); + } + if (schemaPattern != null) { + query.append(" AND \"schemas\".\"name\" ").append(composeMatchPart(schemaPattern)); + } + if (procedureNamePattern != null) { + query.append(" AND \"functions\".\"name\" ").append(composeMatchPart(procedureNamePattern)); + } + if (columnNamePattern != null) { + query.append(" AND \"args\".\"name\" ").append(composeMatchPart(columnNamePattern)); + } + query.append(" ORDER BY \"PROCEDURE_SCHEM\", \"PROCEDURE_NAME\", \"SPECIFIC_NAME\", \"ORDINAL_POSITION\""); + + return executeMetaDataQuery(query.toString()); + } + + + //== this is a helper method which does not belong to the interface + + /** + * Returns a SQL match part string where depending on the input value we + * compose an exact match (use =) or match with wildcards (use LIKE) + * + * @param in the string to match + * @return the SQL match part string + */ + private static final String composeMatchPart(String in) { + if (in == null) + return "IS NULL"; + + String sql = "= '"; + // check if SQL wildcards are used in the input, if so use LIKE + if (in.contains("%") || in.contains("_")) + sql = "LIKE '"; + + // all slashes and single quotes in input are escaped with a slash. + String escaped = in.replaceAll("\\\\", "\\\\\\\\").replaceAll("'", "\\\\'"); + + return sql + escaped + "'"; + } + + /** + * Returns the given string between two double quotes for usage as + * exact column or table name in SQL queries. + * + * @param in the string to quote + * @return the quoted string + */ +// @SuppressWarnings("unused") +// private static final String dq(String in) { +// return "\"" + in.replaceAll("\\\\", "\\\\\\\\").replaceAll("\"", "\\\\\"") + "\""; +// } + + //== end helper methods + + + /** + * Retrieves a description of the tables available in the given catalog. + * Only table descriptions matching the catalog, schema, table name and type criteria are returned. + * They are ordered by TABLE_TYPE, TABLE_CAT, TABLE_SCHEM and TABLE_NAME. + * + * <p>Each table description has the following columns: + * + * <ol> + * <li><b>TABLE_CAT</b> String => table catalog (may be null) + * <li><b>TABLE_SCHEM</b> String => table schema (may be null) + * <li><b>TABLE_NAME</b> String => table name + * <li><b>TABLE_TYPE</b> String => table type. Typical types are "TABLE", + * "VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY", "LOCAL TEMPORARY", "ALIAS", "SYNONYM". + * <li><b>REMARKS</b> String => explanatory comment on the table + * <li><b>TYPE_CAT</b> String => the types catalog (may be null) + * <li><b>TYPE_SCHEM</b> String => the types schema (may be null) + * <li><b>TYPE_NAME</b> String => type name (may be null) + * <li><b>SELF_REFERENCING_COL_NAME</b> String => name of the designated "identifier" column of a typed table (may be null) + * <li><b>REF_GENERATION</b> String => specifies how values in SELF_REFERENCING_COL_NAME are created. Values are "SYSTEM", "USER", "DERIVED". (may be null) + * </ol> + * + * @param catalog - a catalog name; must match the catalog name as it is stored in the database; + * "" retrieves those without a catalog; null means that the + * catalog name should not be used to narrow the search + * @param schemaPattern - a schema name pattern; must match the schema name as it is stored + * in the database; "" retrieves those without a schema; + * null means that the schema name should not be used to narrow the search + * @param tableNamePattern - a table name pattern; must match the table name as it is stored in the database + * For all tables this should be "%" + * @param types - a list of table types, which must be from the list of table types returned + * from getTableTypes(),to include; null returns all types + * @return ResultSet - each row is a table description + * @throws SQLException if a database-access error occurs. + */ + @Override + public ResultSet getTables( + String catalog, + String schemaPattern, + String tableNamePattern, + String types[] + ) throws SQLException + { + // as of Jul2015 release the sys.tables.type values (0 through 6) is extended with new values 10, 11, 20, and 30 (for system and temp tables/views). + // as of Jul2015 release we also have a new table: sys.table_types with names for the new table types + // for correct behavior we need to know if the server is using the old (pre Jul2015) or new sys.tables.type values + boolean preJul2015 = ("11.19.15".compareTo(getDatabaseProductVersion()) >= 0); + /* for debug: System.out.println("getDatabaseProductVersion() is " + getDatabaseProductVersion() + " preJul2015 is " + preJul2015); */ + + StringBuilder query = new StringBuilder(1600); + if (preJul2015 && types != null && types.length > 0) { + // we need to filter on the constructed "TABLE_TYPE" expression, this is only possible when we use a subquery in the FROM + query.append("SELECT * FROM ("); + } + query.append("SELECT DISTINCT cast(null as char(1)) AS \"TABLE_CAT\", " + + "\"schemas\".\"name\" AS \"TABLE_SCHEM\", " + + "\"tables\".\"name\" AS \"TABLE_NAME\", "); + if (preJul2015) { + query.append( + "CASE WHEN \"tables\".\"system\" = true AND \"tables\".\"type\" IN (0, 10) AND \"tables\".\"temporary\" = 0 THEN 'SYSTEM TABLE' " + + "WHEN \"tables\".\"system\" = true AND \"tables\".\"type\" IN (1, 11) AND \"tables\".\"temporary\" = 0 THEN 'SYSTEM VIEW' " + + "WHEN \"tables\".\"system\" = false AND \"tables\".\"type\" = 0 AND \"tables\".\"temporary\" = 0 THEN 'TABLE' " + + "WHEN \"tables\".\"system\" = false AND \"tables\".\"type\" = 1 AND \"tables\".\"temporary\" = 0 THEN 'VIEW' " + + "WHEN \"tables\".\"system\" = true AND \"tables\".\"type\" IN (0, 20) AND \"tables\".\"temporary\" = 1 THEN 'SYSTEM SESSION TABLE' " + + "WHEN \"tables\".\"system\" = true AND \"tables\".\"type\" IN (1, 21) AND \"tables\".\"temporary\" = 1 THEN 'SYSTEM SESSION VIEW' " + + "WHEN \"tables\".\"system\" = false AND \"tables\".\"type\" IN (0, 30) AND \"tables\".\"temporary\" = 1 THEN 'SESSION TABLE' " + + "WHEN \"tables\".\"system\" = false AND \"tables\".\"type\" IN (1, 31) AND \"tables\".\"temporary\" = 1 THEN 'SESSION VIEW' " + + "END AS \"TABLE_TYPE\", "); + } else { + query.append("\"table_types\".\"table_type_name\" AS \"TABLE_TYPE\", "); + } + query.append("\"tables\".\"query\" AS \"REMARKS\", " + + "cast(null as char(1)) AS \"TYPE_CAT\", " + + "cast(null as char(1)) AS \"TYPE_SCHEM\", " + + "cast(null as char(1)) AS \"TYPE_NAME\", " + + "cast(null as char(1)) AS \"SELF_REFERENCING_COL_NAME\", " + + "cast(null as char(1)) AS \"REF_GENERATION\" " + + "FROM \"sys\".\"tables\", \"sys\".\"schemas\""); + if (!preJul2015) { + query.append(", \"sys\".\"table_types\""); + } + query.append(" WHERE \"tables\".\"schema_id\" = \"schemas\".\"id\""); + if (!preJul2015) { + query.append(" AND \"tables\".\"type\" = \"table_types\".\"table_type_id\""); + } + + if (catalog != null && catalog.length() > 0) { + // none empty catalog selection. + // as we do not support catalogs this always results in no rows returned + query.append(" AND 1 = 0"); + } + if (schemaPattern != null) { + query.append(" AND \"schemas\".\"name\" ").append(composeMatchPart(schemaPattern)); + } + if (tableNamePattern != null) { + query.append(" AND \"tables\".\"name\" ").append(composeMatchPart(tableNamePattern)); + } + if (types != null && types.length > 0) { + if (preJul2015) { + query.append(") AS \"getTables\" WHERE \"TABLE_TYPE\" IN ("); + } else { + query.append(" AND \"table_types\".\"table_type_name\" IN ("); + } + for (int i = 0; i < types.length; i++) { + if (i > 0) { + query.append(", "); + } + query.append("'").append(types[i]).append("'"); + } + query.append(")"); + } + + query.append(" ORDER BY \"TABLE_TYPE\", \"TABLE_SCHEM\", \"TABLE_NAME\""); + + return executeMetaDataQuery(query.toString()); + } + + /** + * Get the schema names available in this database. The results + * are ordered by schema name. + * + * <P>The schema column is: + * <OL> + * <LI><B>TABLE_SCHEM</B> String => schema name + * <LI><B>TABLE_CATALOG</B> String => catalog name (may be null) + * </OL> + * + * @param catalog a catalog name; must match the catalog name as it + * is stored in the database;"" retrieves those without a + * catalog; null means catalog name should not be used to + * narrow down the search. + * @param schemaPattern a schema name; must match the schema name as + * it is stored in the database; null means schema name + * should not be used to narrow down the search. + * @return ResultSet each row has a single String column that is a + * schema name + * @throws SQLException if a database error occurs + */ + @Override + public ResultSet getSchemas(String catalog, String schemaPattern) + throws SQLException + { + StringBuilder query = new StringBuilder(170); + query.append("SELECT \"name\" AS \"TABLE_SCHEM\", " + + "cast(null as char(1)) AS \"TABLE_CATALOG\" " + + "FROM \"sys\".\"schemas\""); + + if (catalog != null && catalog.length() > 0) { + // none empty catalog selection. + // as we do not support catalogs this always results in no rows returned + query.append(" WHERE 1 = 0"); + } else { + if (schemaPattern != null) { + query.append(" WHERE \"name\" ").append(composeMatchPart(schemaPattern)); + } + } + query.append(" ORDER BY \"TABLE_SCHEM\""); + + return executeMetaDataQuery(query.toString()); + } + + /** + * Get the catalog names available in this database. The results + * are ordered by catalog name. + * + * <P>The catalog column is: + * <OL> + * <LI><B>TABLE_CAT</B> String => catalog name + * </OL> + * + * + * @return ResultSet each row has a single String column that is a + * catalog name + * @throws SQLException if a database error occurs + */ + @Override + public ResultSet getCatalogs() throws SQLException { + // MonetDB does NOT support catalogs. + // Return a resultset with no rows + return executeMetaDataQuery("SELECT cast(null as char(1)) AS \"TABLE_CAT\" WHERE 1 = 0"); + } + + /** + * Get the table types available in this database. The results + * are ordered by table type. + * + * <P>The table type is: + * <OL> + * <LI><B>TABLE_TYPE</B> String => table type. Typical types are "TABLE", + * "VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY", + * "LOCAL TEMPORARY", "ALIAS", "SYNONYM". + * </OL> + * + * @return ResultSet each row has a single String column that is a + * table type + * @throws SQLException if a database error occurs + */ + @Override + public ResultSet getTableTypes() throws SQLException { + // as of Jul2015 release we have a new table: sys.table_types with more table types + String query = "SELECT \"table_type_name\" AS \"TABLE_TYPE\" FROM \"sys\".\"table_types\" ORDER BY 1"; + // For old (pre jul2015) servers fall back to old behavior. + boolean preJul2015 = ("11.19.15".compareTo(getDatabaseProductVersion()) >= 0); + if (preJul2015) { + query = "SELECT 'SESSION TABLE' AS \"TABLE_TYPE\" UNION ALL " + + "SELECT 'SESSION VIEW' UNION ALL " + + "SELECT 'SYSTEM SESSION TABLE' UNION ALL " + + "SELECT 'SYSTEM SESSION VIEW' UNION ALL " + + "SELECT 'SYSTEM TABLE' UNION ALL " + + "SELECT 'SYSTEM VIEW' UNION ALL " + + "SELECT 'TABLE' UNION ALL " + + "SELECT 'VIEW' ORDER BY 1"; + } + + return executeMetaDataQuery(query); + } + + /** + * Get a description of table columns available in a catalog. + * + * <P>Only column descriptions matching the catalog, schema, table + * and column name criteria are returned. They are ordered by + * TABLE_SCHEM, TABLE_NAME and ORDINAL_POSITION. + * + * <P>Each column description has the following columns: + * <OL> + * <LI><B>TABLE_CAT</B> String => table catalog (may be null) + * <LI><B>TABLE_SCHEM</B> String => table schema (may be null) + * <LI><B>TABLE_NAME</B> String => table name + * <LI><B>COLUMN_NAME</B> String => column name + * <LI><B>DATA_TYPE</B> int => SQL type from java.sql.Types + * <LI><B>TYPE_NAME</B> String => Data source dependent type name + * <LI><B>COLUMN_SIZE</B> int => column size. For char or date + * types this is the maximum number of characters, for numeric or + * decimal types this is precision. + * <LI><B>BUFFER_LENGTH</B> is not used. + * <LI><B>DECIMAL_DIGITS</B> int => the number of fractional digits + * <LI><B>NUM_PREC_RADIX</B> int => Radix (typically either 10 or 2) + * <LI><B>NULLABLE</B> int => is NULL allowed? + * <UL> + * <LI> columnNoNulls - might not allow NULL values + * <LI> columnNullable - definitely allows NULL values + * <LI> columnNullableUnknown - nullability unknown + * </UL> + * <LI><B>REMARKS</B> String => comment describing column (may be null) + * <LI><B>COLUMN_DEF</B> String => default value (may be null) + * <LI><B>SQL_DATA_TYPE</B> int => unused + * <LI><B>SQL_DATETIME_SUB</B> int => unused + * <LI><B>CHAR_OCTET_LENGTH</B> int => for char types the + * maximum number of bytes in the column + * <LI><B>ORDINAL_POSITION</B> int => index of column in table + * (starting at 1) + * <LI><B>IS_NULLABLE</B> String => "NO" means column definitely + * does not allow NULL values; "YES" means the column might + * allow NULL values. An empty string means nobody knows. + * <LI><B>SCOPE_CATALOG</B> String => catalog of table that is the scope of a reference attribute (null if DATA_TYPE isn't REF) + * <LI><B>SCOPE_SCHEMA</B> String => schema of table that is the scope of a reference attribute (null if the DATA_TYPE isn't REF) + * <LI><B>SCOPE_TABLE</B> String => table name that this the scope of a reference attribute (null if the DATA_TYPE isn't REF) + * <LI><B>SOURCE_DATA_TYPE</B> short => source type of a distinct type or user-generated Ref type, SQL type from java.sql.Types (null if DATA_TYPE isn't DISTINCT or user-generated REF) + * <LI><B>IS_AUTOINCREMENT</B> String => Indicates whether this column is auto incremented + * <UL> + * <LI> YES --- if the column is auto incremented + * <LI> NO --- if the column is not auto incremented + * <LI> empty string --- if it cannot be determined whether the column is auto incremented + * </UL> + * <LI><B>IS_GENERATEDCOLUMN</B> String => Indicates whether this is a generated column + * <UL> + * <LI> YES --- if this a generated column + * <LI> NO --- if this not a generated column + * <LI> empty string --- if it cannot be determined whether this is a generated column + * </UL> + * </OL> + * + * @param catalog - a catalog name; must match the catalog name as it is stored in the database; + * "" retrieves those without a catalog; null means that the + * catalog name should not be used to narrow the search + * @param schemaPattern - a schema name pattern; must match the schema name as it is stored + * in the database; "" retrieves those without a schema; + * null means that the schema name should not be used to narrow the search + * @param tableNamePattern - a table name pattern; must match the table name as it is stored in the database + * For all tables this should be "%" + * @param columnNamePattern - a column name pattern; must match the column name as it is stored in the database + * @return ResultSet - each row is a column description + * @throws SQLException if a database error occurs + * @see #getSearchStringEscape + */ + @Override + public ResultSet getColumns( + String catalog, + String schemaPattern, + String tableNamePattern, + String columnNamePattern + ) throws SQLException + { + StringBuilder query = new StringBuilder(2450); + query.append("SELECT cast(null as char(1)) AS \"TABLE_CAT\", " + + "\"schemas\".\"name\" AS \"TABLE_SCHEM\", " + + "\"tables\".\"name\" AS \"TABLE_NAME\", " + + "\"columns\".\"name\" AS \"COLUMN_NAME\", " + + "cast(").append(MonetDriver.getSQLTypeMap("\"columns\".\"type\"")).append(" AS int) AS \"DATA_TYPE\", " + + "\"columns\".\"type\" AS \"TYPE_NAME\", " + + "\"columns\".\"type_digits\" AS \"COLUMN_SIZE\", " + + "0 AS \"BUFFER_LENGTH\", " + + "\"columns\".\"type_scale\" AS \"DECIMAL_DIGITS\", " + + "cast(CASE WHEN \"columns\".\"type\" IN ('decimal', 'numeric', 'sec_interval') THEN 10 " + + "WHEN \"columns\".\"type\" IN ('int', 'smallint', 'tinyint', 'bigint', 'hugeint', 'float', 'real', 'double', 'oid', 'wrd') THEN 2 " + + "ELSE 0 END AS int) AS \"NUM_PREC_RADIX\", " + + "cast(CASE \"null\" WHEN true THEN ").append(ResultSetMetaData.columnNullable) + .append(" WHEN false THEN ").append(ResultSetMetaData.columnNoNulls).append(" END AS int) AS \"NULLABLE\", " + + "cast(null AS varchar(1)) AS \"REMARKS\", " + + "\"columns\".\"default\" AS \"COLUMN_DEF\", " + + "cast(0 as int) AS \"SQL_DATA_TYPE\", " + + "cast(0 as int) AS \"SQL_DATETIME_SUB\", " + + "cast(CASE WHEN \"columns\".\"type\" IN ('char','varchar','clob') THEN \"columns\".\"type_digits\" ELSE NULL END as int) AS \"CHAR_OCTET_LENGTH\", " + + "cast(\"columns\".\"number\" + 1 as int) AS \"ORDINAL_POSITION\", " + + "cast(CASE \"null\" WHEN true THEN 'YES' WHEN false THEN 'NO' ELSE '' END AS varchar(3)) AS \"IS_NULLABLE\", " + + "cast(null AS varchar(1)) AS \"SCOPE_CATALOG\", " + + "cast(null AS varchar(1)) AS \"SCOPE_SCHEMA\", " + + "cast(null AS varchar(1)) AS \"SCOPE_TABLE\", " + + "cast(").append(MonetDriver.getJavaType("other")).append(" AS smallint) AS \"SOURCE_DATA_TYPE\", " + + "cast(CASE WHEN \"columns\".\"default\" IS NOT NULL AND \"columns\".\"default\" LIKE 'next value for %' THEN 'YES' ELSE 'NO' END AS varchar(3)) AS \"IS_AUTOINCREMENT\", " + + "cast('NO' AS varchar(3)) AS \"IS_GENERATEDCOLUMN\" " + + "FROM \"sys\".\"columns\", " + + "\"sys\".\"tables\", " + + "\"sys\".\"schemas\" " + + "WHERE \"columns\".\"table_id\" = \"tables\".\"id\" " + + "AND \"tables\".\"schema_id\" = \"schemas\".\"id\""); + + if (catalog != null && catalog.length() > 0) { + // none empty catalog selection. + // as we do not support catalogs this always results in no rows returned + query.append(" AND 1 = 0"); + } + if (schemaPattern != null) { + query.append(" AND \"schemas\".\"name\" ").append(composeMatchPart(schemaPattern)); + } + if (tableNamePattern != null) { + query.append(" AND \"tables\".\"name\" ").append(composeMatchPart(tableNamePattern)); + } + if (columnNamePattern != null) { + query.append(" AND \"columns\".\"name\" ").append(composeMatchPart(columnNamePattern)); + } + + query.append(" ORDER BY \"TABLE_SCHEM\", \"TABLE_NAME\", \"ORDINAL_POSITION\""); + + return executeMetaDataQuery(query.toString()); + } + + /** + * Get a description of the access rights for a table's columns. + * MonetDB doesn't have this level of access rights. + * + * <P>Only privileges matching the column name criteria are + * returned. They are ordered by COLUMN_NAME and PRIVILEGE. + * + * <P>Each privilige description has the following columns: + * <OL> + * <LI><B>TABLE_CAT</B> String => table catalog (may be null) + * <LI><B>TABLE_SCHEM</B> String => table schema (may be null) + * <LI><B>TABLE_NAME</B> String => table name + * <LI><B>COLUMN_NAME</B> String => column name + * <LI><B>GRANTOR</B> => grantor of access (may be null) + * <LI><B>GRANTEE</B> String => grantee of access + * <LI><B>PRIVILEGE</B> String => name of access (SELECT, + * INSERT, UPDATE, REFRENCES, ...) + * <LI><B>IS_GRANTABLE</B> String => "YES" if grantee is permitted + * to grant to others; "NO" if not; null if unknown + * </OL> + * + * @param catalog a catalog name; "" retrieves those without a catalog + * @param schemaPattern a schema name; "" retrieves those without a schema + * @param tableNamePattern a table name + * @param columnNamePattern a column name pattern + * @return ResultSet each row is a column privilege description + * @see #getSearchStringEscape + * @throws SQLException if a database error occurs + */ + @Override + public ResultSet getColumnPrivileges( + String catalog, + String schemaPattern, + String tableNamePattern, + String columnNamePattern + ) throws SQLException + { + StringBuilder query = new StringBuilder(1100); + query.append("SELECT cast(null as char(1)) AS \"TABLE_CAT\", " + + "\"schemas\".\"name\" AS \"TABLE_SCHEM\", " + + "\"tables\".\"name\" AS \"TABLE_NAME\", " + + "\"columns\".\"name\" AS \"COLUMN_NAME\", " + + "\"grantors\".\"name\" AS \"GRANTOR\", " + + "\"grantees\".\"name\" AS \"GRANTEE\", " + + "CAST(CASE \"privileges\".\"privileges\" " + + "WHEN 1 THEN 'SELECT' " + + "WHEN 2 THEN 'UPDATE' " + + "WHEN 4 THEN 'INSERT' " + + "WHEN 8 THEN 'DELETE' " + + "WHEN 16 THEN 'EXECUTE' " + + "WHEN 32 THEN 'GRANT' " + + "ELSE NULL " + + "END AS varchar(7)) AS \"PRIVILEGE\", " + + "CAST(CASE \"privileges\".\"grantable\" " + + "WHEN 0 THEN 'NO' " + + "WHEN 1 THEN 'YES' " + + "ELSE NULL " + + "END AS varchar(3)) AS \"IS_GRANTABLE\" " + + "FROM \"sys\".\"privileges\", " + + "\"sys\".\"tables\", " + + "\"sys\".\"schemas\", " + + "\"sys\".\"columns\", " + + "\"sys\".\"auths\" AS \"grantors\", " + + "\"sys\".\"auths\" AS \"grantees\" " + + "WHERE \"privileges\".\"obj_id\" = \"columns\".\"id\" " + + "AND \"columns\".\"table_id\" = \"tables\".\"id\" " + + "AND \"tables\".\"schema_id\" = \"schemas\".\"id\" " + + "AND \"privileges\".\"auth_id\" = \"grantees\".\"id\" " + + "AND \"privileges\".\"grantor\" = \"grantors\".\"id\""); + + if (catalog != null && catalog.length() > 0) { + // none empty catalog selection. + // as we do not support catalogs this always results in no rows returned + query.append(" AND 1 = 0"); + } + if (schemaPattern != null) { + query.append(" AND \"schemas\".\"name\" ").append(composeMatchPart(schemaPattern)); + } + if (tableNamePattern != null) { + query.append(" AND \"tables\".\"name\" ").append(composeMatchPart(tableNamePattern)); + } + if (columnNamePattern != null) { + query.append(" AND \"columns\".\"name\" ").append(composeMatchPart(columnNamePattern)); + } + + query.append(" ORDER BY \"TABLE_SCHEM\", \"TABLE_NAME\", \"COLUMN_NAME\", \"PRIVILEGE\""); + + return executeMetaDataQuery(query.toString()); + } + + /** + * Get a description of the access rights for each table available + * in a catalog. + * + * <P>Only privileges matching the schema and table name + * criteria are returned. They are ordered by TABLE_SCHEM, + * TABLE_NAME, and PRIVILEGE. + * + * <P>Each privilege description has the following columns: + * <OL> + * <LI><B>TABLE_CAT</B> String => table catalog (may be null) + * <LI><B>TABLE_SCHEM</B> String => table schema (may be null) + * <LI><B>TABLE_NAME</B> String => table name + * <LI><B>GRANTOR</B> => grantor of access (may be null) + * <LI><B>GRANTEE</B> String => grantee of access + * <LI><B>PRIVILEGE</B> String => name of access (SELECT, + * INSERT, UPDATE, REFRENCES, ...) + * <LI><B>IS_GRANTABLE</B> String => "YES" if grantee is permitted + * to grant to others; "NO" if not; null if unknown + * </OL> + * + * @param catalog a catalog name; "" retrieves those without a catalog + * @param schemaPattern a schema name pattern; "" retrieves those without a schema + * @param tableNamePattern a table name pattern + * @return ResultSet each row is a table privilege description + * @see #getSearchStringEscape + * @throws SQLException if a database error occurs + */ + @Override + public ResultSet getTablePrivileges( + String catalog, + String schemaPattern, + String tableNamePattern + ) throws SQLException + { + StringBuilder query = new StringBuilder(1000); + query.append("SELECT cast(null as char(1)) AS \"TABLE_CAT\", " + + "\"schemas\".\"name\" AS \"TABLE_SCHEM\", " + + "\"tables\".\"name\" AS \"TABLE_NAME\", " + + "\"grantors\".\"name\" AS \"GRANTOR\", " + + "\"grantees\".\"name\" AS \"GRANTEE\", " + + "CAST(CASE \"privileges\".\"privileges\" " + + "WHEN 1 THEN 'SELECT' " + + "WHEN 2 THEN 'UPDATE' " + + "WHEN 4 THEN 'INSERT' " + + "WHEN 8 THEN 'DELETE' " + + "WHEN 16 THEN 'EXECUTE' " + + "WHEN 32 THEN 'GRANT' " + + "ELSE NULL " + + "END AS varchar(7)) AS \"PRIVILEGE\", " + + "CAST(CASE \"privileges\".\"grantable\" " + + "WHEN 0 THEN 'NO' " + + "WHEN 1 THEN 'YES' " + + "ELSE NULL " + + "END AS varchar(3)) AS \"IS_GRANTABLE\" " + + "FROM \"sys\".\"privileges\", " + + "\"sys\".\"tables\", " + + "\"sys\".\"schemas\", " + + "\"sys\".\"auths\" AS \"grantors\", " + + "\"sys\".\"auths\" AS \"grantees\" " + + "WHERE \"privileges\".\"obj_id\" = \"tables\".\"id\" " + + "AND \"tables\".\"schema_id\" = \"schemas\".\"id\" " + + "AND \"privileges\".\"auth_id\" = \"grantees\".\"id\" " + + "AND \"privileges\".\"grantor\" = \"grantors\".\"id\""); + + if (catalog != null && catalog.length() > 0) { + // none empty catalog selection. + // as we do not support catalogs this always results in no rows returned + query.append(" AND 1 = 0"); + } + if (schemaPattern != null) { + query.append(" AND \"schemas\".\"name\" ").append(composeMatchPart(schemaPattern)); + } + if (tableNamePattern != null) { + query.append(" AND \"tables\".\"name\" ").append(composeMatchPart(tableNamePattern)); + } + + query.append(" ORDER BY \"TABLE_SCHEM\", \"TABLE_NAME\", \"PRIVILEGE\""); + + return executeMetaDataQuery(query.toString()); + } + + /** + * Get a description of a table's optimal set of columns that + * uniquely identifies a row. They are ordered by SCOPE. + * + * <P>Each column description has the following columns: + * <OL> + * <LI><B>SCOPE</B> short => actual scope of result + * <UL> + * <LI> bestRowTemporary - very temporary, while using row + * <LI> bestRowTransaction - valid for remainder of current transaction + * <LI> bestRowSession - valid for remainder of current session + * </UL> + * <LI><B>COLUMN_NAME</B> String => column name + * <LI><B>DATA_TYPE</B> int => SQL data type from java.sql.Types + * <LI><B>TYPE_NAME</B> String => Data source dependent type name + * <LI><B>COLUMN_SIZE</B> int => precision + * <LI><B>BUFFER_LENGTH</B> int => not used + * <LI><B>DECIMAL_DIGITS</B> short => scale + * <LI><B>PSEUDO_COLUMN</B> short => is this a pseudo column + * like an Oracle ROWID + * <UL> + * <LI> bestRowUnknown - may or may not be pseudo column + * <LI> bestRowNotPseudo - is NOT a pseudo column + * <LI> bestRowPseudo - is a pseudo column + * </UL> + * </OL> + * + * @param catalog a catalog name; "" retrieves those without a catalog + * @param schema a schema name; "" retrieves those without a schema + * @param table a table name + * @param scope the scope of interest; use same values as SCOPE + * @param nullable include columns that are nullable? + * @return ResultSet each row is a column description + * @throws SQLException if a database error occurs + */ + @Override + public ResultSet getBestRowIdentifier( + String catalog, + String schema, + String table, + int scope, + boolean nullable + ) throws SQLException + { + StringBuilder query = new StringBuilder(1500); + query.append("SELECT CAST(").append(DatabaseMetaData.bestRowSession).append(" AS smallint) AS \"SCOPE\", " + + "\"columns\".\"name\" AS \"COLUMN_NAME\", " + + "cast(").append(MonetDriver.getSQLTypeMap("\"columns\".\"type\"")).append(" AS int) AS \"DATA_TYPE\", " + + "\"columns\".\"type\" AS \"TYPE_NAME\", " + + "\"columns\".\"type_digits\" AS \"COLUMN_SIZE\", " + + "CAST(0 as int) AS \"BUFFER_LENGTH\", " + + "CAST(\"columns\".\"type_scale\" AS smallint) AS \"DECIMAL_DIGITS\", " + + "CAST(").append(DatabaseMetaData.bestRowNotPseudo).append(" AS smallint) AS \"PSEUDO_COLUMN\" " + + "FROM \"sys\".\"keys\", " + + "\"sys\".\"objects\", " + + "\"sys\".\"columns\", " + + "\"sys\".\"tables\", " + + "\"sys\".\"schemas\" " + + "WHERE \"keys\".\"id\" = \"objects\".\"id\" " + + "AND \"keys\".\"table_id\" = \"tables\".\"id\" " + + "AND \"keys\".\"table_id\" = \"columns\".\"table_id\" " + + "AND \"objects\".\"name\" = \"columns\".\"name\" " + + "AND \"tables\".\"schema_id\" = \"schemas\".\"id\" " + + "AND \"keys\".\"type\" IN (0, 1)"); // only primary keys (type = 0) and unique keys (type = 1), not fkeys (type = 2) + + if (catalog != null && catalog.length() > 0) { + // none empty catalog selection. + // as we do not support catalogs this always results in no rows returned + query.append(" AND 1 = 0"); + } + if (schema != null) { + query.append(" AND \"schemas\".\"name\" ").append(composeMatchPart(schema)); + } + if (table != null) { + query.append(" AND \"tables\".\"name\" ").append(composeMatchPart(table)); + } + if (scope != DatabaseMetaData.bestRowSession && scope != DatabaseMetaData.bestRowTransaction && scope != DatabaseMetaData.bestRowTemporary) { + query.append(" AND 1 = 0"); + } + if (!nullable) { + query.append(" AND \"columns\".\"null\" = false"); + } + + query.append(" ORDER BY \"keys\".\"type\", \"columns\".\"name\""); + + return executeMetaDataQuery(query.toString()); + } + + /** + * Get a description of a table's columns that are automatically + * updated when any value in a row is updated. They are unordered. + * + * <P>Each column description has the following columns: + * <OL> + * <LI><B>SCOPE</B> short => is not used + * <LI><B>COLUMN_NAME</B> String => column name + * <LI><B>DATA_TYPE</B> int => SQL data type from java.sql.Types + * <LI><B>TYPE_NAME</B> String => Data source dependent type name + * <LI><B>COLUMN_SIZE</B> int => precision + * <LI><B>BUFFER_LENGTH</B> int => length of column value in bytes + * <LI><B>DECIMAL_DIGITS</B> short => scale + * <LI><B>PSEUDO_COLUMN</B> short => is this a pseudo column like an Oracle ROWID + * <UL> + * <LI> versionColumnUnknown - may or may not be pseudo column + * <LI> versionColumnNotPseudo - is NOT a pseudo column + * <LI> versionColumnPseudo - is a pseudo column + * </UL> + * </OL> + * + * @param catalog a catalog name; "" retrieves those without a catalog + * @param schema a schema name; "" retrieves those without a schema + * @param table a table name + * @return ResultSet each row is a column description + * @throws SQLException if a database error occurs + */ + @Override + public ResultSet getVersionColumns( + String catalog, + String schema, + String table + ) throws SQLException + { + // MonetDB currently does not have columns which update themselves, so return an empty ResultSet + String query = + "SELECT CAST(0 as smallint) AS \"SCOPE\", " + + "CAST(null as varchar(1)) AS \"COLUMN_NAME\", " + + "CAST(0 as int) AS \"DATA_TYPE\", " + + "CAST(null as varchar(1)) AS \"TYPE_NAME\", " + + "CAST(0 as int) AS \"COLUMN_SIZE\", " + + "CAST(0 as int) AS \"BUFFER_LENGTH\", " + + "CAST(0 as smallint) AS \"DECIMAL_DIGITS\", " + + "CAST(0 as smallint) AS \"PSEUDO_COLUMN\" " + + "WHERE 1 = 0"; + + return executeMetaDataQuery(query); + } + + /** + * Get a description of a table's primary key columns. They + * are ordered by COLUMN_NAME. + * + * <P>Each column description has the following columns: + * <OL> + * <LI><B>TABLE_CAT</B> String => table catalog (may be null) + * <LI><B>TABLE_SCHEM</B> String => table schema (may be null) + * <LI><B>TABLE_NAME</B> String => table name + * <LI><B>COLUMN_NAME</B> String => column name + * <LI><B>KEY_SEQ</B> short => sequence number within primary key + * <LI><B>PK_NAME</B> String => primary key name (may be null) + * </OL> + * + * @param catalog a catalog name; "" retrieves those without a catalog + * @param schema a schema name pattern; "" retrieves those + * without a schema + * @param table a table name + * @return ResultSet each row is a primary key column description + * @throws SQLException if a database error occurs + */ + @Override + public ResultSet getPrimaryKeys( + String catalog, + String schema, + String table + ) throws SQLException + { + StringBuilder query = new StringBuilder(600); + query.append("SELECT cast(null AS varchar(1)) AS \"TABLE_CAT\", " + + "\"schemas\".\"name\" AS \"TABLE_SCHEM\", " + + "\"tables\".\"name\" AS \"TABLE_NAME\", " + + "\"objects\".\"name\" AS \"COLUMN_NAME\", " + + "CAST(1 + \"objects\".\"nr\" AS smallint) AS \"KEY_SEQ\", " + + " \"keys\".\"name\" AS \"PK_NAME\" " + + "FROM \"sys\".\"keys\", " + + "\"sys\".\"objects\", " + + "\"sys\".\"tables\", " + + "\"sys\".\"schemas\" " + + "WHERE \"keys\".\"id\" = \"objects\".\"id\" " + + "AND \"keys\".\"table_id\" = \"tables\".\"id\" " + + "AND \"tables\".\"schema_id\" = \"schemas\".\"id\" " + + "AND \"keys\".\"type\" = 0"); + + if (catalog != null && catalog.length() > 0) { + // none empty catalog selection. + // as we do not support catalogs this always results in no rows returned + query.append(" AND 1 = 0"); + } + if (schema != null) { + query.append(" AND \"schemas\".\"name\" ").append(composeMatchPart(schema)); + } + if (table != null) { + query.append(" AND \"tables\".\"name\" ").append(composeMatchPart(table)); + } + + query.append(" ORDER BY \"TABLE_SCHEM\", \"TABLE_NAME\", \"COLUMN_NAME\""); + + return executeMetaDataQuery(query.toString()); + } + + + private final static String keyQuery = + "SELECT cast(null AS varchar(1)) AS \"PKTABLE_CAT\", " + + "\"pkschema\".\"name\" AS \"PKTABLE_SCHEM\", " + + "\"pktable\".\"name\" AS \"PKTABLE_NAME\", " + + "\"pkkeycol\".\"name\" AS \"PKCOLUMN_NAME\", " + + "cast(null AS varchar(1)) AS \"FKTABLE_CAT\", " + + "\"fkschema\".\"name\" AS \"FKTABLE_SCHEM\", " + + "\"fktable\".\"name\" AS \"FKTABLE_NAME\", " + + "\"fkkeycol\".\"name\" AS \"FKCOLUMN_NAME\", " + + "CAST(1 + \"pkkeycol\".\"nr\" AS smallint) AS \"KEY_SEQ\", " + + DatabaseMetaData.importedKeyNoAction + " AS \"UPDATE_RULE\", " + + DatabaseMetaData.importedKeyNoAction + " AS \"DELETE_RULE\", " + + "\"fkkey\".\"name\" AS \"FK_NAME\", " + + "\"pkkey\".\"name\" AS \"PK_NAME\", " + + DatabaseMetaData.importedKeyNotDeferrable + " AS \"DEFERRABILITY\" " + + "FROM \"sys\".\"keys\" AS \"fkkey\", " + + "\"sys\".\"keys\" AS \"pkkey\", " + + "\"sys\".\"objects\" AS \"fkkeycol\", " + + "\"sys\".\"objects\" AS \"pkkeycol\", " + + "\"sys\".\"tables\" AS \"fktable\", " + + "\"sys\".\"tables\" AS \"pktable\", " + + "\"sys\".\"schemas\" AS \"fkschema\", " + + "\"sys\".\"schemas\" AS \"pkschema\" " + + "WHERE \"fktable\".\"id\" = \"fkkey\".\"table_id\"" + + " AND \"pktable\".\"id\" = \"pkkey\".\"table_id\"" + + " AND \"fkkey\".\"id\" = \"fkkeycol\".\"id\"" + + " AND \"pkkey\".\"id\" = \"pkkeycol\".\"id\"" + + " AND \"fkschema\".\"id\" = \"fktable\".\"schema_id\"" + + " AND \"pkschema\".\"id\" = \"pktable\".\"schema_id\"" + + " AND \"fkkey\".\"rkey\" > -1" + + " AND \"fkkey\".\"rkey\" = \"pkkey\".\"id\"" + + " AND \"fkkeycol\".\"nr\" = \"pkkeycol\".\"nr\""; + + /** + * Get a description of the primary key columns that are + * referenced by a table's foreign key columns (the primary keys + * imported by a table). They are ordered by PKTABLE_CAT, + * PKTABLE_SCHEM, PKTABLE_NAME, and KEY_SEQ. + * + * <P>Each primary key column description has the following columns: + * <OL> + * <LI><B>PKTABLE_CAT</B> String => primary key table catalog + * being imported (may be null) + * <LI><B>PKTABLE_SCHEM</B> String => primary key table schema + * being imported (may be null) + * <LI><B>PKTABLE_NAME</B> String => primary key table name + * being imported + * <LI><B>PKCOLUMN_NAME</B> String => primary key column name + * being imported + * <LI><B>FKTABLE_CAT</B> String => foreign key table catalog (may be null) + * <LI><B>FKTABLE_SCHEM</B> String => foreign key table schema (may be null) + * <LI><B>FKTABLE_NAME</B> String => foreign key table name + * <LI><B>FKCOLUMN_NAME</B> String => foreign key column name + * <LI><B>KEY_SEQ</B> short => sequence number within foreign key + * (a value of 1 represents the first column of the foreign key, a value of 2 would represent the second column within the foreign key). + * <LI><B>UPDATE_RULE</B> short => What happens to + * foreign key when primary is updated: + * <UL> + * <LI> importedKeyNoAction - do not allow update of primary key if it has been imported + * <LI> importedKeyCascade - change imported key to agree + * with primary key update + * <LI> importedKeyRestrict - do not allow update of primary + * key if it has been imported + * <LI> importedKeySetNull - change imported key to NULL if + * its primary key has been updated + * </UL> + * <LI><B>DELETE_RULE</B> short => What happens to + * the foreign key when primary is deleted. + * <UL> + * <LI> importedKeyNoAction - do not allow delete of primary key if it has been imported + * <LI> importedKeyCascade - delete rows that import a deleted key + * <LI> importedKeyRestrict - do not allow delete of primary + * key if it has been imported + * <LI> importedKeySetNull - change imported key to NULL if + * its primary key has been deleted + * </UL> + * <LI><B>FK_NAME</B> String => foreign key name (may be null) + * <LI><B>PK_NAME</B> String => primary key name (may be null) + * <LI><B>DEFERRABILITY</B> short => can the evaluation of foreign key constraints be deferred until commit + * <UL> + * <LI> importedKeyInitiallyDeferred - see SQL92 for definition + * <LI> importedKeyInitiallyImmediate - see SQL92 for definition + * <LI> importedKeyNotDeferrable - see SQL92 for definition + * </UL> + * </OL> + * + * @param catalog a catalog name; "" retrieves those without a catalog + * @param schema a schema name pattern; "" retrieves those without a schema + * @param table a table name + * @return ResultSet each row is a primary key column description + * @see #getExportedKeys + * @throws SQLException if a database error occurs + */ + @Override + public ResultSet getImportedKeys(String catalog, String schema, String table) + throws SQLException + { + StringBuilder query = new StringBuilder(keyQuery.length() + 250); + query.append(keyQuery); + + if (catalog != null && catalog.length() > 0) { + // none empty catalog selection. + // as we do not support catalogs this always results in no rows returned + query.append(" AND 1 = 0"); + } + if (schema != null) { + query.append(" AND \"fkschema\".\"name\" ").append(composeMatchPart(schema)); + } + if (table != null) { + query.append(" AND \"fktable\".\"name\" ").append(composeMatchPart(table)); + } + + query.append(" ORDER BY \"PKTABLE_SCHEM\", \"PKTABLE_NAME\", \"PK_NAME\", \"KEY_SEQ\""); + + return executeMetaDataQuery(query.toString()); + } + + /** + * Get a description of a foreign key columns that reference a + * table's primary key columns (the foreign keys exported by a table). + * They are ordered by FKTABLE_CAT, FKTABLE_SCHEM, FKTABLE_NAME, and KEY_SEQ. + * + * <P>Each foreign key column description has the following columns: + * <OL> + * <LI><B>PKTABLE_CAT</B> String => primary key table catalog (may be null) + * <LI><B>PKTABLE_SCHEM</B> String => primary key table schema (may be null) + * <LI><B>PKTABLE_NAME</B> String => primary key table name + * <LI><B>PKCOLUMN_NAME</B> String => primary key column name + * <LI><B>FKTABLE_CAT</B> String => foreign key table catalog (may be null) + * being exported (may be null) + * <LI><B>FKTABLE_SCHEM</B> String => foreign key table schema (may be null) + * being exported (may be null) + * <LI><B>FKTABLE_NAME</B> String => foreign key table name + * being exported + * <LI><B>FKCOLUMN_NAME</B> String => foreign key column name + * being exported + * <LI><B>KEY_SEQ</B> short => sequence number within foreign key + * (a value of 1 represents the first column of the foreign key, a value of 2 would represent the second column within the foreign key). + * <LI><B>UPDATE_RULE</B> short => What happens to + * foreign key when primary is updated: + * <UL> + * <LI> importedKeyNoAction - do not allow update of primary key if it has been imported + * <LI> importedKeyCascade - change imported key to agree + * with primary key update + * <LI> importedKeyRestrict - do not allow update of primary + * key if it has been imported + * <LI> importedKeySetNull - change imported key to NULL if + * its primary key has been updated + * </UL> + * <LI><B>DELETE_RULE</B> short => What happens to + * the foreign key when primary is deleted. + * <UL> + * <LI> importedKeyNoAction - do not allow delete of primary key if it has been imported + * <LI> importedKeyCascade - delete rows that import a deleted key + * <LI> importedKeyRestrict - do not allow delete of primary + * key if it has been imported + * <LI> importedKeySetNull - change imported key to NULL if + * its primary key has been deleted + * </UL> + * <LI><B>FK_NAME</B> String => foreign key identifier (may be null) + * <LI><B>PK_NAME</B> String => primary key identifier (may be null) + * <LI><B>DEFERRABILITY</B> short => can the evaluation of foreign key constraints be deferred until commit + * <UL> + * <LI> importedKeyInitiallyDeferred - see SQL92 for definition + * <LI> importedKeyInitiallyImmediate - see SQL92 for definition + * <LI> importedKeyNotDeferrable - see SQL92 for definition + * </UL> + * </OL> + * + * @param catalog a catalog name; "" retrieves those without a catalog + * @param schema a schema name pattern; "" retrieves those without a schema + * @param table a table name + * @return ResultSet each row is a foreign key column description + * @see #getImportedKeys + * @throws SQLException if a database error occurs + */ + @Override + public ResultSet getExportedKeys(String catalog, String schema, String table) + throws SQLException + { + StringBuilder query = new StringBuilder(keyQuery.length() + 250); + query.append(keyQuery); + + if (catalog != null && catalog.length() > 0) { + // none empty catalog selection. + // as we do not support catalogs this always results in no rows returned + query.append(" AND 1 = 0"); + } + if (schema != null) { + query.append(" AND \"pkschema\".\"name\" ").append(composeMatchPart(schema)); + } + if (table != null) { + query.append(" AND \"pktable\".\"name\" ").append(composeMatchPart(table)); + } + + query.append(" ORDER BY \"FKTABLE_SCHEM\", \"FKTABLE_NAME\", \"FK_NAME\", \"KEY_SEQ\""); + + return executeMetaDataQuery(query.toString()); + } + + /** + * Get a description of the foreign key columns in the foreign key + * table that reference the primary key columns of the primary key + * table. (describe how one table imports another's key) This + * should normally return a single foreign key/primary key pair + * (most tables only import a foreign key from a table once.) + * They are ordered by FKTABLE_CAT, FKTABLE_SCHEM, FKTABLE_NAME, and KEY_SEQ. + * + * <P>Each foreign key column description has the following columns: + * <OL> + * <LI><B>PKTABLE_CAT</B> String => primary key table catalog (may be null) + * <LI><B>PKTABLE_SCHEM</B> String => primary key table schema (may be null) + * <LI><B>PKTABLE_NAME</B> String => primary key table name + * <LI><B>PKCOLUMN_NAME</B> String => primary key column name + * <LI><B>FKTABLE_CAT</B> String => foreign key table catalog (may be null) + * being exported (may be null) + * <LI><B>FKTABLE_SCHEM</B> String => foreign key table schema (may be null) + * being exported (may be null) + * <LI><B>FKTABLE_NAME</B> String => foreign key table name + * being exported + * <LI><B>FKCOLUMN_NAME</B> String => foreign key column name + * being exported + * <LI><B>KEY_SEQ</B> short => sequence number within foreign key + * (a value of 1 represents the first column of the foreign key, a value of 2 would represent the second column within the foreign key). + * <LI><B>UPDATE_RULE</B> short => What happens to + * foreign key when primary is updated: + * <UL> + * <LI> importedKeyNoAction - do not allow update of primary key if it has been imported + * <LI> importedKeyCascade - change imported key to agree + * with primary key update + * <LI> importedKeyRestrict - do not allow update of primary + * key if it has been imported + * <LI> importedKeySetNull - change imported key to NULL if + * its primary key has been updated + * </UL> + * <LI><B>DELETE_RULE</B> short => What happens to + * the foreign key when primary is deleted. + * <UL> + * <LI> importedKeyNoAction - do not allow delete of primary key if it has been imported + * <LI> importedKeyCascade - delete rows that import a deleted key + * <LI> importedKeyRestrict - do not allow delete of primary + * key if it has been imported + * <LI> importedKeySetNull - change imported key to NULL if + * its primary key has been deleted + * </UL> + * <LI><B>FK_NAME</B> String => foreign key identifier (may be null) + * <LI><B>PK_NAME</B> String => primary key identifier (may be null) + * <LI><B>DEFERRABILITY</B> short => can the evaluation of foreign key constraints be deferred until commit + * <UL> + * <LI> importedKeyInitiallyDeferred - see SQL92 for definition + * <LI> importedKeyInitiallyImmediate - see SQL92 for definition + * <LI> importedKeyNotDeferrable - see SQL92 for definition + * </UL> + * </OL> + * + * @param pcatalog primary key catalog name; "" retrieves those without a catalog + * @param pschema primary key schema name pattern; "" retrieves those without a schema + * @param ptable primary key table name + * @param fcatalog foreign key catalog name; "" retrieves those without a catalog + * @param fschema foreign key schema name pattern; "" retrieves those without a schema + * @param ftable koreign key table name + * @return ResultSet each row is a foreign key column description + * @throws SQLException if a database error occurs + * @see #getImportedKeys + */ + @Override + public ResultSet getCrossReference( + String pcatalog, + String pschema, + String ptable, + String fcatalog, + String fschema, + String ftable + ) throws SQLException + { + StringBuilder query = new StringBuilder(keyQuery.length() + 350); + query.append(keyQuery); + + if (pcatalog != null && pcatalog.length() > 0) { + // none empty catalog selection. + // as we do not support catalogs this always results in no rows returned + query.append(" AND 1 = 0"); + } + if (pschema != null) { + query.append(" AND \"pkschema\".\"name\" ").append(composeMatchPart(pschema)); + } + if (ptable != null) { + query.append(" AND \"pktable\".\"name\" ").append(composeMatchPart(ptable)); + } + + if (fcatalog != null && fcatalog.length() > 0) { + // none empty catalog selection. + // as we do not support catalogs this always results in no rows returned + query.append(" AND 1 = 0"); + } + if (fschema != null) { + query.append(" AND \"fkschema\".\"name\" ").append(composeMatchPart(fschema)); + } + if (ftable != null) { + query.append(" AND \"fktable\".\"name\" ").append(composeMatchPart(ftable)); + } + + query.append(" ORDER BY \"FKTABLE_SCHEM\", \"FKTABLE_NAME\", \"FK_NAME\", \"KEY_SEQ\""); + + return executeMetaDataQuery(query.toString()); + } + + /** + * Get a description of all the SQL data types supported by + * this database. They are ordered by DATA_TYPE and then by how + * closely the data type maps to the corresponding JDBC SQL type. + * + * If the database supports SQL distinct types, then getTypeInfo() will + * return a single row with a TYPE_NAME of DISTINCT and a DATA_TYPE of Types.DISTINCT. + * If the database supports SQL structured types, then getTypeInfo() will + * return a single row with a TYPE_NAME of STRUCT and a DATA_TYPE of Types.STRUCT. + * If SQL distinct or structured types are supported, then information on + * the individual types may be obtained from the getUDTs() method. + * + * <P>Each type description has the following columns: + * <OL> + * <LI><B>TYPE_NAME</B> String => Type name + * <LI><B>DATA_TYPE</B> int => SQL data type from java.sql.Types + * <LI><B>PRECISION</B> int => maximum precision + * <LI><B>LITERAL_PREFIX</B> String => prefix used to quote a literal (may be null) + * <LI><B>LITERAL_SUFFIX</B> String => suffix used to quote a literal (may be null) + * <LI><B>CREATE_PARAMS</B> String => parameters used in creating + * the type (may be null) + * <LI><B>NULLABLE</B> short => can you use NULL for this type? + * <UL> + * <LI> typeNoNulls - does not allow NULL values + * <LI> typeNullable - allows NULL values + * <LI> typeNullableUnknown - nullability unknown + * </UL> + * <LI><B>CASE_SENSITIVE</B> boolean=> is it case sensitive? + * <LI><B>SEARCHABLE</B> short => can you use "WHERE" based on this type: + * <UL> + * <LI> typePredNone - No support + * <LI> typePredChar - Only supported with WHERE .. LIKE + * <LI> typePredBasic - Supported except for WHERE .. LIKE + * <LI> typeSearchable - Supported for all WHERE .. + * </UL> + * <LI><B>UNSIGNED_ATTRIBUTE</B> boolean => is it unsigned? + * <LI><B>FIXED_PREC_SCALE</B> boolean => can it be a money value? + * <LI><B>AUTO_INCREMENT</B> boolean => can it be used for an + * auto-increment value? + * <LI><B>LOCAL_TYPE_NAME</B> String => localized version of type name + * (may be null) + * <LI><B>MINIMUM_SCALE</B> short => minimum scale supported + * <LI><B>MAXIMUM_SCALE</B> short => maximum scale supported + * <LI><B>SQL_DATA_TYPE</B> int => unused + * <LI><B>SQL_DATETIME_SUB</B> int => unused + * <LI><B>NUM_PREC_RADIX</B> int => usually 2 or 10 + * </OL> + * + * @return ResultSet each row is a SQL type description + * @throws Exception if the developer made a Boo-Boo + */ + @Override + public ResultSet getTypeInfo() throws SQLException { + StringBuilder query = new StringBuilder(2300); + query.append("SELECT \"sqlname\" AS \"TYPE_NAME\", " + + "cast(").append(MonetDriver.getSQLTypeMap("\"sqlname\"")).append(" AS int) AS \"DATA_TYPE\", " + + "\"digits\" AS \"PRECISION\", " + // note that when radix is 2 the precision shows the number of bits + "cast(CASE WHEN \"systemname\" IN ('str', 'inet', 'json', 'url', 'uuid') THEN ''''" + + " ELSE NULL END AS varchar(2)) AS \"LITERAL_PREFIX\", " + + "cast(CASE WHEN \"systemname\" IN ('str', 'inet', 'json', 'url', 'uuid') THEN ''''" + + " ELSE NULL END AS varchar(2)) AS \"LITERAL_SUFFIX\", " + + "CASE WHEN \"sqlname\" IN ('char', 'varchar') THEN 'max length'" + + " WHEN \"sqlname\" = 'decimal' THEN 'precision, scale'" + + " WHEN \"sqlname\" IN ('time', 'timetz', 'timestamp', 'timestamptz', 'sec_interval') THEN 'precision'" + + " ELSE NULL END AS \"CREATE_PARAMS\", " + + "cast(CASE WHEN \"systemname\" = 'oid' THEN ").append(DatabaseMetaData.typeNoNulls) + .append(" ELSE ").append(DatabaseMetaData.typeNullable).append(" END AS smallint) AS \"NULLABLE\", " + + "CASE WHEN \"systemname\" IN ('str', 'json', 'url') THEN true ELSE false END AS \"CASE_SENSITIVE\", " + + "cast(CASE \"systemname\" WHEN 'table' THEN ").append(DatabaseMetaData.typePredNone) + .append(" WHEN 'str' THEN ").append(DatabaseMetaData.typePredChar) + .append(" WHEN 'sqlblob' THEN ").append(DatabaseMetaData.typePredChar) + .append(" ELSE ").append(DatabaseMetaData.typePredBasic).append(" END AS smallint) AS \"SEARCHABLE\", " + + "CASE WHEN \"sqlname\" IN ('tinyint','smallint','int','bigint','hugeint','decimal','real','double','sec_interval','month_interval') THEN false ELSE true END AS \"UNSIGNED_ATTRIBUTE\", " + + "CASE \"sqlname\" WHEN 'decimal' THEN true ELSE false END AS \"FIXED_PREC_SCALE\", " + + "CASE WHEN \"sqlname\" IN ('tinyint','smallint','int','bigint','hugeint','decimal','oid','wrd') THEN true ELSE false END AS \"AUTO_INCREMENT\", " + + "\"systemname\" AS \"LOCAL_TYPE_NAME\", " + + "cast(0 AS smallint) AS \"MINIMUM_SCALE\", " + + "cast(CASE WHEN \"sqlname\" = 'decimal' THEN (CASE \"systemname\" WHEN 'lng' THEN 18 WHEN 'hge' THEN 38 WHEN 'int' THEN 9 WHEN 'sht' THEN 4 WHEN 'bte' THEN 2 ELSE 0 END)" + + " WHEN \"sqlname\" IN ('sec_interval', 'timestamp', 'timestamptz') THEN 9 ELSE 0 END AS smallint) AS \"MAXIMUM_SCALE\", " + + "cast(0 AS int) AS \"SQL_DATA_TYPE\", " + + "cast(0 AS int) AS \"SQL_DATETIME_SUB\", " + + "cast(\"radix\" as int) AS \"NUM_PREC_RADIX\" " + + "FROM \"sys\".\"types\" " + + "ORDER BY \"DATA_TYPE\", \"sqlname\", \"id\""); + + return executeMetaDataQuery(query.toString()); + } + + /** + * Retrieves a description of the given table's indices and statistics. + * They are ordered by NON_UNIQUE, TYPE, INDEX_NAME, and ORDINAL_POSITION. + * + * <P>Each index column description has the following columns: + * <OL> + * <LI><B>TABLE_CAT</B> String => table catalog (may be null) + * <LI><B>TABLE_SCHEM</B> String => table schema (may be null) + * <LI><B>TABLE_NAME</B> String => table name + * <LI><B>NON_UNIQUE</B> boolean => Can index values be non-unique? + * false when TYPE is tableIndexStatistic + * <LI><B>INDEX_QUALIFIER</B> String => index catalog (may be null); + * null when TYPE is tableIndexStatistic + * <LI><B>INDEX_NAME</B> String => index name; null when TYPE is + * tableIndexStatistic + * <LI><B>TYPE</B> short => index type: + * <UL> + * <LI> tableIndexStatistic - this identifies table statistics that are + * returned in conjuction with a table's index descriptions + * <LI> tableIndexClustered - this is a clustered index + * <LI> tableIndexHashed - this is a hashed index + * <LI> tableIndexOther - this is some other style of index + * </UL> + * <LI><B>ORDINAL_POSITION</B> short => column sequence number + * within index; zero when TYPE is tableIndexStatistic + * <LI><B>COLUMN_NAME</B> String => column name; null when TYPE is + * tableIndexStatistic + * <LI><B>ASC_OR_DESC</B> String => column sort sequence, "A" => ascending + * "D" => descending, may be null if sort sequence is not supported; + * null when TYPE is tableIndexStatistic + * <LI><B>CARDINALITY</B> int => When TYPE is tableIndexStatisic then + * this is the number of rows in the table; otherwise it is the + * number of unique values in the index. + * <LI><B>PAGES</B> int => When TYPE is tableIndexStatisic then + * this is the number of pages used for the table, otherwise it + * is the number of pages used for the current index. + * <LI><B>FILTER_CONDITION</B> String => Filter condition, if any. + * (may be null) + * </OL> + * + * @param catalog a catalog name; "" retrieves those without a catalog + * @param schema a schema name pattern; "" retrieves those without a schema + * @param table a table name + * @param unique when true, return only indices for unique values; + * when false, return indices regardless of whether unique or not + * @param approximate when true, result is allowed to reflect approximate + * or out of data values; when false, results are requested to be + * accurate + * @return ResultSet each row is an index column description + * @throws SQLException if a database occurs + */ + @Override + public ResultSet getIndexInfo( + String catalog, + String schema, + String table, + boolean unique, + boolean approximate + ) throws SQLException + { + String table_row_count = "0"; + + if (!approximate && schema != null && table != null && schema.length() > 0 && table.length() > 0) { + // we need the exact cardinality for one specific fully qualified table + ResultSet count = null; + try { + count = executeMetaDataQuery("SELECT COUNT(*) FROM \"" + schema + "\".\"" + table + "\""); + if (count != null && count.next()) { + String count_value = count.getString(1); + if (count_value != null && count_value.length() > 0) + table_row_count = count_value; + } + } catch (SQLException e) { + // ignore + } finally { + if (count != null) { + try { + count.close(); + } catch (SQLException e) { /* ignore */ } + } + } + } + + StringBuilder query = new StringBuilder(1250); + query.append( + "SELECT CAST(null AS char(1)) AS \"TABLE_CAT\", " + + "\"schemas\".\"name\" AS \"TABLE_SCHEM\", " + + "\"tables\".\"name\" AS \"TABLE_NAME\", " + + "CASE WHEN \"keys\".\"name\" IS NULL THEN true ELSE false END AS \"NON_UNIQUE\", " + + "CAST(null AS varchar(1)) AS \"INDEX_QUALIFIER\", " + + "\"idxs\".\"name\" AS \"INDEX_NAME\", " + + "CASE \"idxs\".\"type\" WHEN 0 THEN ").append(DatabaseMetaData.tableIndexHashed).append(" ELSE ").append(DatabaseMetaData.tableIndexOther).append(" END AS \"TYPE\", " + + "CAST(\"objects\".\"nr\" +1 AS smallint) AS \"ORDINAL_POSITION\", "+ + "\"columns\".\"name\" AS \"COLUMN_NAME\", " + + "CAST(null AS varchar(1)) AS \"ASC_OR_DESC\", " + // sort sequence currently not supported in keys or indexes in MonetDB + "CAST(").append(table_row_count).append(" AS int) AS \"CARDINALITY\", " + + "CAST(0 AS int) AS \"PAGES\", " + + "CAST(null AS varchar(1)) AS \"FILTER_CONDITION\" " + + "FROM \"sys\".\"idxs\" LEFT JOIN \"sys\".\"keys\" ON \"idxs\".\"name\" = \"keys\".\"name\", " + + "\"sys\".\"schemas\", " + + "\"sys\".\"objects\", " + + "\"sys\".\"columns\", " + + "\"sys\".\"tables\" " + + "WHERE \"idxs\".\"table_id\" = \"tables\".\"id\" " + + "AND \"tables\".\"schema_id\" = \"schemas\".\"id\" " + + "AND \"idxs\".\"id\" = \"objects\".\"id\" " + + "AND \"tables\".\"id\" = \"columns\".\"table_id\" " + + "AND \"objects\".\"name\" = \"columns\".\"name\" " + + "AND (\"keys\".\"type\" IS NULL OR \"keys\".\"type\" = 1)"); + + if (catalog != null && catalog.length() > 0) { + // none empty catalog selection. + // as we do not support catalogs this always results in no rows returned + query.append(" AND 1 = 0"); + } + if (schema != null) { + query.append(" AND \"schemas\".\"name\" ").append(composeMatchPart(schema)); + } + if (table != null) { + query.append(" AND \"tables\".\"name\" ").append(composeMatchPart(table)); + } + if (unique) { + query.append(" AND \"keys\".\"name\" IS NOT NULL"); + } + query.append(" ORDER BY \"NON_UNIQUE\", \"TYPE\", \"INDEX_NAME\", \"ORDINAL_POSITION\""); + + return executeMetaDataQuery(query.toString()); + } + + //== 1.2 methods (JDBC 2) + + /** + * Does the database support the given result set type? + * + * @param type - defined in java.sql.ResultSet + * @return true if so; false otherwise + * @throws SQLException - if a database access error occurs + */ + @Override + public boolean supportsResultSetType(int type) throws SQLException { + // The only type we don't support + return type != ResultSet.TYPE_SCROLL_SENSITIVE; + } + + + /** + * Does the database support the concurrency type in combination + * with the given result set type? + * + * @param type - defined in java.sql.ResultSet + * @param concurrency - type defined in java.sql.ResultSet + * @return true if so; false otherwise + * @throws SQLException - if a database access error occurs + */ + @Override + public boolean supportsResultSetConcurrency(int type, int concurrency) + throws SQLException + { + // These combinations are not supported! + if (type == ResultSet.TYPE_SCROLL_SENSITIVE) + return false; + + // We do only support Read Only ResultSets + if (concurrency != ResultSet.CONCUR_READ_ONLY) + return false; + + // Everything else we do (well, what's left of it :) ) + return true; + } + + + /* lots of unsupported stuff... (no updatable ResultSet!) */ + @Override + public boolean ownUpdatesAreVisible(int type) { + return false; + } + + @Override + public boolean ownDeletesAreVisible(int type) { + return false; + } + + @Override + public boolean ownInsertsAreVisible(int type) { + return false; + } + + @Override + public boolean othersUpdatesAreVisible(int type) { + return false; + } + + @Override + public boolean othersDeletesAreVisible(int i) { + return false; + } + + @Override + public boolean othersInsertsAreVisible(int type) { + return false; + } + + @Override + public boolean updatesAreDetected(int type) { + return false; + } + + @Override + public boolean deletesAreDetected(int i) { + return false; + } + + @Override + public boolean insertsAreDetected(int type) { + return false; + } + + /** + * Indicates whether the driver supports batch updates. + */ + @Override + public boolean supportsBatchUpdates() { + return true; + } + + /** + * Retrieves a description of the user-defined types (UDTs) defined in a particular schema. + * Schema-specific UDTs may have type JAVA_OBJECT, STRUCT, or DISTINCT. + * Only types matching the catalog, schema, type name and type criteria are returned. + * They are ordered by DATA_TYPE, TYPE_CAT, TYPE_SCHEM and TYPE_NAME. + * The type name parameter may be a fully-qualified name. In this case, the catalog and schemaPattern parameters are ignored. + * + * Each type description has the following columns: + * + * 1 TYPE_CAT String => the type's catalog (may be null) + * 2 TYPE_SCHEM String => type's schema (may be null) + * 3 TYPE_NAME String => type name + * 4 CLASS_NAME String => Java class name + * 5 DATA_TYPE int => type value defined in java.sql.Types. One of JAVA_OBJECT, STRUCT, or DISTINCT + * 6 REMARKS String => explanatory comment on the type + * 7 BASE_TYPE short => type code of the source type of a DISTINCT type or the type that implements the + * user-generated reference type of the SELF_REFERENCING_COLUMN of a structured type as defined + * in java.sql.Types (null if DATA_TYPE is not DISTINCT or not STRUCT with REFERENCE_GENERATION = USER_DEFINED) + * + * @throws SQLException + */ + @Override + public ResultSet getUDTs( + String catalog, + String schemaPattern, + String typeNamePattern, + int[] types + ) throws SQLException + { + StringBuilder query = new StringBuilder(990); + if (types != null && types.length > 0) { + query.append("SELECT * FROM ("); + } + query.append("SELECT cast(null as char(1)) AS \"TYPE_CAT\", " + + "\"schemas\".\"name\" AS \"TYPE_SCHEM\", " + + "\"types\".\"sqlname\" AS \"TYPE_NAME\", " + + "CASE \"types\".\"sqlname\"" + + // next 4 UDTs are known + " WHEN 'inet' THEN 'nl.cwi.monetdb.jdbc.types.INET'" + + " WHEN 'json' THEN 'java.lang.String'" + + " WHEN 'url' THEN 'nl.cwi.monetdb.jdbc.types.URL'" + + " WHEN 'uuid' THEN 'java.lang.String'" + + " ELSE 'java.lang.Object' END AS \"CLASS_NAME\", " + + "CAST(CASE WHEN \"types\".\"sqlname\" IN ('inet', 'json', 'url', 'uuid') THEN ").append(Types.JAVA_OBJECT) + .append(" ELSE ").append(Types.STRUCT).append(" END AS int) AS \"DATA_TYPE\", " + + "\"types\".\"systemname\" AS \"REMARKS\", " + + "cast(null as smallint) AS \"BASE_TYPE\" " + + "FROM \"sys\".\"types\" JOIN \"sys\".\"schemas\" ON \"types\".\"schema_id\" = \"schemas\".\"id\" " + + // exclude the built-in types (I assume they always have id <= 99 and eclass < 15) + "WHERE \"types\".\"id\" > 99 AND \"types\".\"eclass\" >= 15"); + + if (catalog != null && catalog.length() > 0) { + // none empty catalog selection. + // as we do not support catalogs this always results in no rows returned + query.append(" AND 1 = 0"); + } + if (schemaPattern != null) { + query.append(" AND \"schemas\".\"name\" ").append(composeMatchPart(schemaPattern)); + } + if (typeNamePattern != null) { + query.append(" AND \"types\".\"sqlname\" ").append(composeMatchPart(typeNamePattern)); + } + if (types != null && types.length > 0) { + query.append(") AS getUDTs WHERE \"DATA_TYPE\" IN ("); + for (int i = 0; i < types.length; i++) { + if (i > 0) { + query.append(", "); + } + query.append(types[i]); + } + query.append(")"); + } + query.append(" ORDER BY \"DATA_TYPE\", \"TYPE_SCHEM\", \"TYPE_NAME\""); + + return executeMetaDataQuery(query.toString()); + } + + + /** + * Retrieves the connection that produced this metadata object. + * + * @return the connection that produced this metadata object + */ + @Override + public Connection getConnection() { + return con; + } + + /* I don't find these in the spec!?! */ + public boolean rowChangesAreDetected(int type) { + return false; + } + + public boolean rowChangesAreVisible(int type) { + return false; + } + + //== 1.4 methods (JDBC 3) + + /** + * Retrieves whether this database supports savepoints. + * + * @return <code>true</code> if savepoints are supported; + * <code>false</code> otherwise + */ + @Override + public boolean supportsSavepoints() { + return true; + } + + /** + * Retrieves whether this database supports named parameters to callable + * statements. + * + * @return <code>true</code> if named parameters are supported; + * <code>false</code> otherwise + */ + @Override + public boolean supportsNamedParameters() { + return false; + } + + /** + * Retrieves whether it is possible to have multiple <code>ResultSet</code> objects + * returned from a <code>CallableStatement</code> object + * simultaneously. + * + * @return <code>true</code> if a <code>CallableStatement</code> object + * can return multiple <code>ResultSet</code> objects + * simultaneously; <code>false</code> otherwise + */ + @Override + public boolean supportsMultipleOpenResults() { + return true; + } + + /** + * Retrieves whether auto-generated keys can be retrieved after + * a statement has been executed. + * + * @return <code>true</code> if auto-generated keys can be retrieved + * after a statement has executed; <code>false</code> otherwise + */ + @Override + public boolean supportsGetGeneratedKeys() { + return true; + } + + /** + * Retrieves a description of the user-defined type (UDT) + * hierarchies defined in a particular schema in this database. Only + * the immediate super type/ sub type relationship is modeled. + * <P> + * Only supertype information for UDTs matching the catalog, + * schema, and type name is returned. The type name parameter + * may be a fully-qualified name. When the UDT name supplied is a + * fully-qualified name, the catalog and schemaPattern parameters are + * ignored. + * <P> + * If a UDT does not have a direct super type, it is not listed here. + * A row of the <code>ResultSet</code> object returned by this method + * describes the designated UDT and a direct supertype. A row has the following + * columns: + * <OL> + * <LI><B>TYPE_CAT</B> String => the UDT's catalog (may be <code>null</code>) + * <LI><B>TYPE_SCHEM</B> String => UDT's schema (may be <code>null</code>) + * <LI><B>TYPE_NAME</B> String => type name of the UDT + * <LI><B>SUPERTYPE_CAT</B> String => the direct super type's catalog + * (may be <code>null</code>) + * <LI><B>SUPERTYPE_SCHEM</B> String => the direct super type's schema + * (may be <code>null</code>) + * <LI><B>SUPERTYPE_NAME</B> String => the direct super type's name + * </OL> + * + * <P><B>Note:</B> If the driver does not support type hierarchies, an + * empty result set is returned. + * + * @param catalog a catalog name; "" retrieves those without a catalog; + * <code>null</code> means drop catalog name from the selection criteria + * @param schemaPattern a schema name pattern; "" retrieves those + * without a schema + * @param typeNamePattern a UDT name pattern; may be a fully-qualified + * name + * @return a <code>ResultSet</code> object in which a row gives information + * about the designated UDT + * @throws SQLException if a database access error occurs + */ + @Override + public ResultSet getSuperTypes( + String catalog, + String schemaPattern, + String typeNamePattern + ) throws SQLException + { + String query = + "SELECT cast(null as char(1)) AS \"TYPE_CAT\", '' AS \"TYPE_SCHEM\", '' AS \"TYPE_NAME\", " + + "cast(null as char(1)) AS \"SUPERTYPE_CAT\", '' AS \"SUPERTYPE_SCHEM\", '' AS \"SUPERTYPE_NAME\" " + + "WHERE 1 = 0"; + + return executeMetaDataQuery(query); + } + + /** + * Retrieves a description of the table hierarchies defined in a particular + * schema in this database. + * + * <P>Only supertable information for tables matching the catalog, schema + * and table name are returned. The table name parameter may be a fully- + * qualified name, in which case, the catalog and schemaPattern parameters + * are ignored. If a table does not have a super table, it is not listed here. + * Supertables have to be defined in the same catalog and schema as the + * sub tables. Therefore, the type description does not need to include + * this information for the supertable. + * + * <P>Each type description has the following columns: + * <OL> + * <LI><B>TABLE_CAT</B> String => the type's catalog (may be <code>null</code>) + * <LI><B>TABLE_SCHEM</B> String => type's schema (may be <code>null</code>) + * <LI><B>TABLE_NAME</B> String => type name + * <LI><B>SUPERTABLE_NAME</B> String => the direct super type's name + * </OL> + * + * <P><B>Note:</B> If the driver does not support type hierarchies, an + * empty result set is returned. + * + * @param catalog a catalog name; "" retrieves those without a catalog; + * <code>null</code> means drop catalog name from the selection criteria + * @param schemaPattern a schema name pattern; "" retrieves those + * without a schema + * @param tableNamePattern a table name pattern; may be a fully-qualified + * name + * @return a <code>ResultSet</code> object in which each row is a type description + * @throws SQLException if a database access error occurs + */ + @Override + public ResultSet getSuperTables( + String catalog, + String schemaPattern, + String tableNamePattern + ) throws SQLException + { + String query = + "SELECT cast(null as char(1)) AS \"TABLE_CAT\", " + + "'' AS \"TABLE_SCHEM\", '' AS \"TABLE_NAME\", '' AS \"SUPERTABLE_NAME\" " + + "WHERE 1 = 0"; + + return executeMetaDataQuery(query); + } + + /** + * Retrieves a description of the given attribute of the given type + * for a user-defined type (UDT) that is available in the given schema + * and catalog. + * <P> + * Descriptions are returned only for attributes of UDTs matching the + * catalog, schema, type, and attribute name criteria. They are ordered by + * TYPE_SCHEM, TYPE_NAME and ORDINAL_POSITION. This description + * does not contain inherited attributes. + * <P> + * The <code>ResultSet</code> object that is returned has the following + * columns: + * <OL> + * <LI><B>TYPE_CAT</B> String => type catalog (may be <code>null</code>) + * <LI><B>TYPE_SCHEM</B> String => type schema (may be <code>null</code>) + * <LI><B>TYPE_NAME</B> String => type name + * <LI><B>ATTR_NAME</B> String => attribute name + * <LI><B>DATA_TYPE</B> int => attribute type SQL type from java.sql.Types + * <LI><B>ATTR_TYPE_NAME</B> String => Data source dependent type name. + * For a UDT, the type name is fully qualified. For a REF, the type name is + * fully qualified and represents the target type of the reference type. + * <LI><B>ATTR_SIZE</B> int => column size. For char or date + * types this is the maximum number of characters; for numeric or + * decimal types this is precision. + * <LI><B>DECIMAL_DIGITS</B> int => the number of fractional digits + * <LI><B>NUM_PREC_RADIX</B> int => Radix (typically either 10 or 2) + * <LI><B>NULLABLE</B> int => whether NULL is allowed + * <UL> + * <LI> attributeNoNulls - might not allow NULL values + * <LI> attributeNullable - definitely allows NULL values + * <LI> attributeNullableUnknown - nullability unknown + * </UL> + * <LI><B>REMARKS</B> String => comment describing column (may be <code>null</code>) + * <LI><B>ATTR_DEF</B> String => default value (may be <code>null</code>) + * <LI><B>SQL_DATA_TYPE</B> int => unused + * <LI><B>SQL_DATETIME_SUB</B> int => unused + * <LI><B>CHAR_OCTET_LENGTH</B> int => for char types the + * maximum number of bytes in the column + * <LI><B>ORDINAL_POSITION</B> int => index of column in table + * (starting at 1) + * <LI><B>IS_NULLABLE</B> String => "NO" means column definitely + * does not allow NULL values; "YES" means the column might + * allow NULL values. An empty string means unknown. + * <LI><B>SCOPE_CATALOG</B> String => catalog of table that is the + * scope of a reference attribute (<code>null</code> if DATA_TYPE isn't REF) + * <LI><B>SCOPE_SCHEMA</B> String => schema of table that is the + * scope of a reference attribute (<code>null</code> if DATA_TYPE isn't REF) + * <LI><B>SCOPE_TABLE</B> String => table name that is the scope of a + * reference attribute (<code>null</code> if the DATA_TYPE isn't REF) + * <LI><B>SOURCE_DATA_TYPE</B> short => source type of a distinct type or user-generated + * Ref type,SQL type from java.sql.Types (<code>null</code> if DATA_TYPE + * isn't DISTINCT or user-generated REF) + * </OL> + * @param catalog a catalog name; must match the catalog name as it + * is stored in the database; "" retrieves those without a catalog; + * <code>null</code> means that the catalog name should not be used to narrow + * the search + * @param schemaPattern a schema name pattern; must match the schema name + * as it is stored in the database; "" retrieves those without a schema; + * <code>null</code> means that the schema name should not be used to narrow + * the search + * @param typeNamePattern a type name pattern; must match the + * type name as it is stored in the database + * @param attributeNamePattern an attribute name pattern; must match the attribute + * name as it is declared in the database + * @return a <code>ResultSet</code> object in which each row is an + * attribute description + * @throws SQLException if a database access error occurs + */ + @Override + public ResultSet getAttributes( + String catalog, + String schemaPattern, + String typeNamePattern, + String attributeNamePattern + ) throws SQLException + { + String query = + "SELECT cast(null as char(1)) AS \"TYPE_CAT\", '' AS \"TYPE_SCHEM\", '' AS \"TYPE_NAME\", " + + "'' AS \"ATTR_NAME\", CAST(0 as int) AS \"DATA_TYPE\", '' AS \"ATTR_TYPE_NAME\", CAST(0 as int) AS \"ATTR_SIZE\", " + + "CAST(0 as int) AS \"DECIMAL_DIGITS\", CAST(0 as int) AS \"NUM_PREC_RADIX\", CAST(0 as int) AS \"NULLABLE\", " + + "'' AS \"REMARKS\", '' AS \"ATTR_DEF\", CAST(0 as int) AS \"SQL_DATA_TYPE\", " + + "CAST(0 as int) AS \"SQL_DATETIME_SUB\", CAST(0 as int) AS \"CHAR_OCTET_LENGTH\", " + + "CAST(0 as int) AS \"ORDINAL_POSITION\", 'YES' AS \"IS_NULLABLE\", " + + "'' AS \"SCOPE_CATALOG\", '' AS \"SCOPE_SCHEMA\", '' AS \"SCOPE_TABLE\", " + + "CAST(0 as smallint) AS \"SOURCE_DATA_TYPE\" " + + "WHERE 1 = 0"; + + return executeMetaDataQuery(query); + } + + /** + * Retrieves whether this database supports the given result set holdability. + * + * @param holdability one of the following constants: + * <code>ResultSet.HOLD_CURSORS_OVER_COMMIT</code> or + * <code>ResultSet.CLOSE_CURSORS_AT_COMMIT</code> + * @return <code>true</code> if so; <code>false</code> otherwise + * @see Connection + */ + @Override + public boolean supportsResultSetHoldability(int holdability) { + // we don't close ResultSets at commit; and we don't do updateable + // result sets, so comes closest to hold cursors over commit + return holdability == ResultSet.HOLD_CURSORS_OVER_COMMIT; + } + + /** + * Retrieves the default holdability of this <code>ResultSet</code> + * object. + * + * @return the default holdability; either + * <code>ResultSet.HOLD_CURSORS_OVER_COMMIT</code> or + * <code>ResultSet.CLOSE_CURSORS_AT_COMMIT</code> + */ + @Override + public int getResultSetHoldability() { + return ResultSet.HOLD_CURSORS_OVER_COMMIT; + } + + /** + * Retrieves the major version number of the underlying database. + * + * @return the underlying database's major version + * @throws SQLException if a database access error occurs + */ + @Override + public int getDatabaseMajorVersion() throws SQLException { + if (env_monet_version == null) + getEnvValues(); + int major = 0; + if (env_monet_version != null) { + try { + int start = env_monet_version.indexOf("."); + major = Integer.parseInt(env_monet_version.substring(0, start)); + } catch (NumberFormatException e) { + // ignore + } + } + return major; + } + + /** + * Retrieves the minor version number of the underlying database. + * + * @return underlying database's minor version + * @throws SQLException if a database access error occurs + */ + @Override + public int getDatabaseMinorVersion() throws SQLException { + if (env_monet_version == null) + getEnvValues(); + int minor = 0; + if (env_monet_version != null) { + try { + int start = env_monet_version.indexOf("."); + int end = env_monet_version.indexOf(".", start + 1); + minor = Integer.parseInt(env_monet_version.substring(start + 1, end)); + } catch (NumberFormatException e) { + // ignore + } + } + return minor; + } + + /** + * Retrieves the major JDBC version number for this driver. + * + * @return JDBC version major number + */ + @Override + public int getJDBCMajorVersion() { + return 4; // This class implements JDBC 4.1 (at least we try to) + } + + /** + * Retrieves the minor JDBC version number for this driver. + * + * @return JDBC version minor number + */ + @Override + public int getJDBCMinorVersion() { + return 1; // This class implements JDBC 4.1 (at least we try to) + } + + /** + * Indicates whether the SQLSTATEs returned by <code>SQLException.getSQLState</code> + * is X/Open (now known as Open Group) SQL CLI or SQL:2003. + * @return the type of SQLSTATEs, one of: + * sqlStateXOpen or + * sqlStateSQL + */ + @Override + public int getSQLStateType() { + // At least this driver conforms with SQLSTATE to the SQL:2003 standard + return DatabaseMetaData.sqlStateSQL; + } + + /** + * Indicates whether updates made to a LOB are made on a copy or directly + * to the LOB. + * @return <code>true</code> if updates are made to a copy of the LOB; + * <code>false</code> if updates are made directly to the LOB + */ + @Override + public boolean locatorsUpdateCopy() { + // not that we have it, but in a transaction it will be copy-on-write + return true; + } + + /** + * Retrieves whether this database supports statement pooling. + * + * @return <code>true</code> is so; + <code>false</code> otherwise + */ + @Override + public boolean supportsStatementPooling() { + // For the moment, I don't think so + return false; + } + + //== 1.6 methods (JDBC 4) + + /** + * Indicates whether or not this data source supports the SQL ROWID + * type, and if so the lifetime for which a RowId object remains + * valid. + * + * @return ROWID_UNSUPPORTED for now + */ + @Override + public RowIdLifetime getRowIdLifetime() { + // I believe we don't do rowids + return RowIdLifetime.ROWID_UNSUPPORTED; + } + + /** + * Get the schema names available in this database. The results + * are ordered by schema name. + * + * <P>The schema column is: + * <OL> + * <LI><B>TABLE_SCHEM</B> String => schema name + * <LI><B>TABLE_CATALOG</B> String => catalog name (may be null) + * </OL> + * + * @return ResultSet each row has a single String column that is a + * schema name + * @throws SQLException if a database error occurs + */ + @Override + public ResultSet getSchemas() throws SQLException { + return getSchemas(null, null); + } + + /** + * Retrieves whether this database supports invoking user-defined or + * vendor functions using the stored procedure escape syntax. + * + * @return true if so; false otherwise + */ + @Override + public boolean supportsStoredFunctionsUsingCallSyntax() { + return false; + } + + /** + * Retrieves whether a SQLException while autoCommit is true + * inidcates that all open ResultSets are closed, even ones that are + * holdable. When a SQLException occurs while autocommit is true, it + * is vendor specific whether the JDBC driver responds with a commit + * operation, a rollback operation, or by doing neither a commit nor + * a rollback. A potential result of this difference is in whether + * or not holdable ResultSets are closed. + * + * @return true if so; false otherwise + */ + @Override + public boolean autoCommitFailureClosesAllResultSets() { + // The driver caches most of it, and as far as I knoww the + // server doesn't close outstanding result handles on commit + // failure either. + return false; + } + + /** + * Retrieves a list of the client info properties that the driver + * supports. The result set contains the following columns + * + * 1. NAME String=> The name of the client info property + * 2. MAX_LEN int=> The maximum length of the value for the + * property + * 3. DEFAULT_VALUE String=> The default value of the + * property + * 4. DESCRIPTION String=> A description of the + * property. This will typically contain information as + * to where this property is stored in the database. + * + * The ResultSet is sorted by the NAME column + * + * @return A ResultSet object; each row is a supported client info + * property, none in case of MonetDB's current JDBC driver + * @throws SQLException if a database access error occurs + */ + @Override + public ResultSet getClientInfoProperties() throws SQLException { + // for a list of connection properties see also MonetConnection.java constructor MonetConnection(Properties props) + String query = + "SELECT 'host' AS \"NAME\", CAST(1024 as int) AS \"MAX_LEN\", 'localhost' AS \"DEFAULT_VALUE\", 'DSN or IP-address of machine running MonetDB' AS \"DESCRIPTION\" UNION ALL " + + "SELECT 'port', 5, '50000', 'communication port number of MonetDB server process' UNION ALL " + + "SELECT 'user', 128, '', 'user name to login to MonetDB server' UNION ALL " + + "SELECT 'password', 128, '', 'password for user name to login to MonetDB server' UNION ALL " + + "SELECT 'language', 16, 'sql', 'language (sql or mal) used to parse commands in MonetDB server' UNION ALL " + + "SELECT 'debug', 5, 'false', 'boolean flag true or false' UNION ALL " + + "SELECT 'hash', 128, '', 'hash string' UNION ALL " + + "SELECT 'treat_blob_as_binary', 5, 'false', 'boolean flag true or false' UNION ALL " + + "SELECT 'so_timeout', 10, '0', 'timeout of communication socket. 0 means no timeout is set' " + + "ORDER BY \"NAME\""; + + return executeMetaDataQuery(query); + } + + /** + * Retrieves a description of the system and user functions + * available in the given catalog. + * + * Only system and user function descriptions matching the schema + * and function name criteria are returned. They are ordered by + * FUNCTION_CAT, FUNCTION_SCHEM, FUNCTION_NAME and SPECIFIC_ NAME. + * + * Each function description has the the following columns: + * + * 1. FUNCTION_CAT String => function catalog (may be null) + * 2. FUNCTION_SCHEM String => function schema (may be null) + * 3. FUNCTION_NAME String => function name. This is the + * name used to invoke the function + * 4. REMARKS String => explanatory comment on the function + * 5. FUNCTION_TYPE short => kind of function: + * * functionResultUnknown - Cannot determine if a return + * value or table will be returned + * * functionNoTable- Does not return a table + * * functionReturnsTable - Returns a table + * 6. SPECIFIC_NAME String => the name which uniquely identifies + * this function within its schema. This is a user specified, + * or DBMS generated, name that may be different then the + * FUNCTION_NAME for example with overload functions + * + * A user may not have permission to execute any of the functions + * that are returned by getFunctions. + * + * @param catalog a catalog name; must match the catalog name as it + * is stored in the database; "" retrieves those without a + * catalog; null means that the catalog name should not be + * used to narrow the search + * @param schemaPattern a schema name pattern; must match the schema + * name as it is stored in the database; "" retrieves those + * without a schema; null means that the schema name should + * not be used to narrow the search + * @param functionNamePattern a function name pattern; must match + * the function name as it is stored in the database + * @return ResultSet - each row is a function description + * @throws SQLException if a database access error occurs + */ + @Override + public ResultSet getFunctions( + String catalog, + String schemaPattern, + String functionNamePattern) + throws SQLException + { + StringBuilder query = new StringBuilder(800); + query.append("SELECT cast(null as varchar(1)) AS \"FUNCTION_CAT\", " + + "\"schemas\".\"name\" AS \"FUNCTION_SCHEM\", " + + "\"functions\".\"name\" AS \"FUNCTION_NAME\", " + + "cast(\"functions\".\"func\" as varchar(9999)) AS \"REMARKS\", " + + "CASE \"functions\".\"type\"" + + " WHEN 1 THEN ").append(DatabaseMetaData.functionNoTable) + .append(" WHEN 2 THEN ").append(DatabaseMetaData.functionNoTable) + .append(" WHEN 3 THEN ").append(DatabaseMetaData.functionNoTable) + .append(" WHEN 4 THEN ").append(DatabaseMetaData.functionNoTable) + .append(" WHEN 5 THEN ").append(DatabaseMetaData.functionReturnsTable) + .append(" ELSE ").append(DatabaseMetaData.functionResultUnknown).append(" END AS \"FUNCTION_TYPE\", " + + // only the id value uniquely identifies a function. Include it to be able to differentiate between multiple overloaded functions with the same name + "cast(\"functions\".\"id\" as varchar(10)) AS \"SPECIFIC_NAME\" " + + "FROM \"sys\".\"functions\", \"sys\".\"schemas\" " + + "WHERE \"functions\".\"schema_id\" = \"schemas\".\"id\" " + + // exclude procedures (type = 2). Those need to be returned via getProcedures() + "AND \"functions\".\"type\" <> 2"); + + if (catalog != null && catalog.length() > 0) { + // none empty catalog selection. + // as we do not support catalogs this always results in no rows returned + query.append(" AND 1 = 0"); + } + if (schemaPattern != null) { + query.append(" AND \"schemas\".\"name\" ").append(composeMatchPart(schemaPattern)); + } + if (functionNamePattern != null) { + query.append(" AND \"functions\".\"name\" ").append(composeMatchPart(functionNamePattern)); + } + + query.append(" ORDER BY \"FUNCTION_SCHEM\", \"FUNCTION_NAME\", \"SPECIFIC_NAME\""); + + return executeMetaDataQuery(query.toString()); + } + + /** + * Retrieves a description of the given catalog's system or user + * function parameters and return type. + * + * Only descriptions matching the schema, function and parameter name criteria are returned. + * They are ordered by FUNCTION_CAT, FUNCTION_SCHEM, FUNCTION_NAME and SPECIFIC_ NAME. + * Within this, the return value, if any, is first. Next are the parameter descriptions in call order. + * The column descriptions follow in column number order. + * + * 1. FUNCTION_CAT String => function catalog (may be null) + * 2. FUNCTION_SCHEM String => function schema (may be null) + * 3. FUNCTION_NAME String => function name. This is the name used to invoke the function + * 4. COLUMN_NAME String => column/parameter name + * 5. COLUMN_TYPE Short => kind of column/parameter: + * functionColumnUnknown - nobody knows + * functionColumnIn - IN parameter + * functionColumnInOut - INOUT parameter + * functionColumnOut - OUT parameter + * functionColumnReturn - function return value + * functionColumnResult - Indicates that the parameter or column is a column in the ResultSet + * 6. DATA_TYPE int => SQL type from java.sql.Types + * 7. TYPE_NAME String => SQL type name, for a UDT type the type name is fully qualified + * 8. PRECISION int => precision + * 9. LENGTH int => length in bytes of data + * 10. SCALE short => scale - null is returned for data types where SCALE is not applicable. + * 11. RADIX short => radix + * 12. NULLABLE short => can it contain NULL. + * functionNoNulls - does not allow NULL values + * functionNullable - allows NULL values + * functionNullableUnknown - nullability unknown + * 13. REMARKS String => comment describing column/parameter + * 14. CHAR_OCTET_LENGTH int => the maximum length of binary and character based parameters or columns. For any other datatype the returned value is a NULL + * 15. ORDINAL_POSITION int => the ordinal position, starting from 1, for the input and output parameters. + * A value of 0 is returned if this row describes the function's return value. For result set columns, it is the ordinal position of the column in the result set starting from 1. + * 16. IS_NULLABLE String => ISO rules are used to determine the nullability for a parameter or column. + * YES --- if the parameter or column can include NULLs + * NO --- if the parameter or column cannot include NULLs + * empty string --- if the nullability for the parameter or column is unknown + * 17. SPECIFIC_NAME String => the name which uniquely identifies this function within its schema. + * This is a user specified, or DBMS generated, name that may be different then the FUNCTION_NAME for example with overload functions + * + * @param catalog a catalog name; must match the catalog name as + * it is stored in the database; "" retrieves those without a + * catalog; null means that the catalog name should not be + * used to narrow the search + * @param schemaPattern a schema name pattern; must match the schema + * name as it is stored in the database; "" retrieves those + * without a schema; null means that the schema name should + * not be used to narrow the search + * @param functionNamePattern a procedure name pattern; must match the + * function name as it is stored in the database + * @param columnNamePattern a parameter name pattern; must match the + * parameter or column name as it is stored in the database + * @return ResultSet - each row describes a user function parameter, + * column or return type + * @throws SQLException - if a database access error occurs + */ + @Override + public ResultSet getFunctionColumns( + String catalog, + String schemaPattern, + String functionNamePattern, + String columnNamePattern) + throws SQLException + { + StringBuilder query = new StringBuilder(2600); + query.append("SELECT DISTINCT CAST(null as char(1)) AS \"FUNCTION_CAT\", " + + "\"schemas\".\"name\" AS \"FUNCTION_SCHEM\", " + + "\"functions\".\"name\" AS \"FUNCTION_NAME\", " + + "\"args\".\"name\" AS \"COLUMN_NAME\", " + + "CAST(CASE \"args\".\"inout\"" + + " WHEN 0 THEN (CASE \"args\".\"number\" WHEN 0 THEN ") + .append(DatabaseMetaData.functionReturn).append(" ELSE ").append(DatabaseMetaData.functionColumnOut).append(" END)" + + " WHEN 1 THEN ").append(DatabaseMetaData.functionColumnIn) + .append(" ELSE ").append(DatabaseMetaData.functionColumnUnknown).append(" END AS smallint) AS \"COLUMN_TYPE\", " + + "CAST(").append(MonetDriver.getSQLTypeMap("\"args\".\"type\"")).append(" AS int) AS \"DATA_TYPE\", " + + "\"args\".\"type\" AS \"TYPE_NAME\", " + + "CASE \"args\".\"type\" WHEN 'tinyint' THEN 3 WHEN 'smallint' THEN 5 WHEN 'int' THEN 10 WHEN 'bigint' THEN 19" + + " WHEN 'hugeint' THEN 38 WHEN 'oid' THEN 19 WHEN 'wrd' THEN 19 ELSE \"args\".\"type_digits\" END AS \"PRECISION\", " + + "CASE \"args\".\"type\" WHEN 'tinyint' THEN 1 WHEN 'smallint' THEN 2 WHEN 'int' THEN 4 WHEN 'bigint' THEN 8" + + " WHEN 'hugeint' THEN 16 WHEN 'oid' THEN 8 WHEN 'wrd' THEN 8 ELSE \"args\".\"type_digits\" END AS \"LENGTH\", " + + "CAST(CASE WHEN \"args\".\"type\" IN ('tinyint','smallint','int','bigint','hugeint','oid','wrd','decimal','numeric'," + + "'time','timetz','timestamp','timestamptz','sec_interval') THEN \"args\".\"type_scale\" ELSE NULL END AS smallint) AS \"SCALE\", " + + "CAST(CASE WHEN \"args\".\"type\" IN ('tinyint','smallint','int','bigint','hugeint','oid','wrd','decimal','numeric') THEN 10" + + " WHEN \"args\".\"type\" IN ('real','float','double') THEN 2 ELSE NULL END AS smallint) AS \"RADIX\", " + + "CAST(").append(DatabaseMetaData.functionNullableUnknown).append(" AS smallint) AS \"NULLABLE\", " + + "CAST(null as char(1)) AS \"REMARKS\", " + + "CAST(CASE WHEN \"args\".\"type\" IN ('char','varchar','clob') THEN \"args\".\"type_digits\" ELSE NULL END as int) AS \"CHAR_OCTET_LENGTH\", " + + "CAST(\"args\".\"number\" as int) AS \"ORDINAL_POSITION\", " + + "CAST('' as varchar(3)) AS \"IS_NULLABLE\", " + + // the specific name contains the function id, in order to be able to match the args to the correct overloaded function name + "cast(\"functions\".\"id\" as varchar(10)) AS \"SPECIFIC_NAME\" " + + "FROM \"sys\".\"args\", \"sys\".\"functions\", \"sys\".\"schemas\" " + + "WHERE \"args\".\"func_id\" = \"functions\".\"id\" " + + "AND \"functions\".\"schema_id\" = \"schemas\".\"id\" " + + // exclude procedures (type = 2). Those need to be returned via getProcedureColumns() + "AND \"functions\".\"type\" <> 2"); + + if (catalog != null && catalog.length() > 0) { + // none empty catalog selection. + // as we do not support catalogs this always results in no rows returned + query.append(" AND 1 = 0"); + } + if (schemaPattern != null) { + query.append(" AND \"schemas\".\"name\" ").append(composeMatchPart(schemaPattern)); + } + if (functionNamePattern != null) { + query.append(" AND \"functions\".\"name\" ").append(composeMatchPart(functionNamePattern)); + } + if (columnNamePattern != null) { + query.append(" AND \"args\".\"name\" ").append(composeMatchPart(columnNamePattern)); + } + query.append(" ORDER BY \"FUNCTION_SCHEM\", \"FUNCTION_NAME\", \"SPECIFIC_NAME\", \"ORDINAL_POSITION\""); + + return executeMetaDataQuery(query.toString()); + } + + //== 1.7 methods (JDBC 4.1) + + /** + * Retrieves a description of the pseudo or hidden columns available + * in a given table within the specified catalog and schema. Pseudo + * or hidden columns may not always be stored within a table and are + * not visible in a ResultSet unless they are specified in the + * query's outermost SELECT list. Pseudo or hidden columns may not + * necessarily be able to be modified. + * If there are no pseudo or hidden columns, an empty ResultSet is returned. + * + * Only column descriptions matching the catalog, schema, table and column name criteria are returned. + * They are ordered by TABLE_CAT,TABLE_SCHEM, TABLE_NAME and COLUMN_NAME. + * + * Each column description has the following columns: + * + * 1. TABLE_CAT String => table catalog (may be null) + * 2. TABLE_SCHEM String => table schema (may be null) + * 3. TABLE_NAME String => table name + * 4. COLUMN_NAME String => column name + * 5. DATA_TYPE int => SQL type from java.sql.Types + * 6. COLUMN_SIZE int => column size. + * 7. DECIMAL_DIGITS int => the number of fractional digits. Null is returned for data types where DECIMAL_DIGITS is not applicable. + * 8. NUM_PREC_RADIX int => Radix (typically either 10 or 2) + * 9. COLUMN_USAGE String => The allowed usage for the column. The value returned will correspond to the enum name returned by PseudoColumnUsage.name() + * 10. REMARKS String => comment describing column (may be null) + * 11. CHAR_OCTET_LENGTH int => for char types the maximum number of bytes in the column + * 12. IS_NULLABLE String => ISO rules are used to determine the nullability for a column. + * YES --- if the column can include NULLs + * NO --- if the column cannot include NULLs + * empty string --- if the nullability for the column is unknown + * + * @param catalog a catalog name + * @param schemaPattern a schema name pattern + * @param tableNamePattern a table name pattern + * @param columnNamePattern a column name pattern + * @return ResultSet where each row is a column description + * @throws SQLException if a database access error occurs + */ + @Override + public ResultSet getPseudoColumns( + String catalog, + String schemaPattern, + String tableNamePattern, + String columnNamePattern) + throws SQLException + { + // MonetDB currently does not support pseudo or hidden columns, so return an empty ResultSet + String query = + "SELECT CAST(null as char(1)) AS \"TABLE_CAT\", " + + "CAST('' as varchar(1)) AS \"TABLE_SCHEM\", " + + "CAST('' as varchar(1)) AS \"TABLE_NAME\", " + + "CAST('' as varchar(1)) AS \"COLUMN_NAME\", " + + "CAST(0 as int) AS \"DATA_TYPE\", " + + "CAST(0 as int) AS \"COLUMN_SIZE\", " + + "CAST(0 as int) AS \"DECIMAL_DIGITS\", " + + "CAST(0 as int) AS \"NUM_PREC_RADIX\", " + + "CAST('' as varchar(1)) AS \"COLUMN_USAGE\", " + + "CAST(null as varchar(1)) AS \"REMARKS\", " + + "CAST(0 as int) AS \"CHAR_OCTET_LENGTH\", " + + "CAST('' as varchar(3)) AS \"IS_NULLABLE\" " + + "WHERE 1 = 0"; + + return executeMetaDataQuery(query); + } + + /** + * Retrieves whether a generated key will always be returned if the + * column name(s) or index(es) specified for the auto generated key + * column(s) are valid and the statement succeeds. The key that is + * returned may or may not be based on the column(s) for the auto + * generated key. + * + * @return true if so, false otherwise + * @throws SQLException - if a database access error occurs + */ + @Override + public boolean generatedKeyAlwaysReturned() throws SQLException { + return true; + } + + //== end methods interface DatabaseMetaData +}
new file mode 100644 --- /dev/null +++ b/src/main/java/nl/cwi/monetdb/jdbc/MonetDriver.java.in @@ -0,0 +1,403 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +package nl.cwi.monetdb.jdbc; + +import java.net.URI; +import java.net.URISyntaxException; +import java.sql.Connection; +import java.sql.Driver; +import java.sql.DriverManager; +import java.sql.DriverPropertyInfo; +import java.sql.SQLException; +import java.sql.SQLFeatureNotSupportedException; +import java.sql.Types; +import java.util.ArrayList; +import java.util.List; +import java.util.Map.Entry; +import java.util.Properties; +import java.util.logging.Logger; + +/** + * A Driver suitable for the MonetDB database. + * + * This driver will be used by the DriverManager to determine if an URL + * is to be handled by this driver, and if it does, then this driver + * will supply a Connection suitable for MonetDB. + * + * This class has no explicit constructor, the default constructor + * generated by the Java compiler will be sufficient since nothing has + * to be set in order to use this driver. + * + * This Driver supports MonetDB database URLs. MonetDB URLs are defined + * as: + * <tt>jdbc:monetdb://<host>[:<port>]/<database></tt> + * where [:<port>] denotes that a port is optional. If not + * given the default (@JDBC_DEF_PORT@) will be used. + * + * @author Fabian Groffen + * @version @JDBC_MAJOR@.@JDBC_MINOR@ (@JDBC_VER_SUFFIX@) + */ +final public class MonetDriver implements Driver { + // the url kind will be jdbc:monetdb://<host>[:<port>]/<database> + // Chapter 9.2.1 from Sun JDBC 3.0 specification + /** The prefix of a MonetDB url */ + private static final String MONETURL = "jdbc:monetdb://"; + /** Major version of this driver */ + private static final int DRIVERMAJOR = @JDBC_MAJOR@; + /** Minor version of this driver */ + private static final int DRIVERMINOR = @JDBC_MINOR@; + /** Version suffix string */ + private static final String DRIVERVERSIONSUFFIX = + "@JDBC_VER_SUFFIX@ based on MCL v@MCL_MAJOR@.@MCL_MINOR@"; + // We're not fully compliant, but what we support is compliant + /** Whether this driver is JDBC compliant or not */ + private static final boolean MONETJDBCCOMPLIANT = false; + + /** MonetDB default port to connect to */ + private static final String PORT = "@JDBC_DEF_PORT@"; + + + // initialize this class: register it at the DriverManager + // Chapter 9.2 from Sun JDBC 3.0 specification + static { + try { + DriverManager.registerDriver(new MonetDriver()); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + //== methods of interface Driver + + /** + * Retrieves whether the driver thinks that it can open a connection to the + * given URL. Typically drivers will return true if they understand the + * subprotocol specified in the URL and false if they do not. + * + * @param url the URL of the database + * @return true if this driver understands the given URL; false otherwise + */ + public boolean acceptsURL(String url) { + return url != null && url.startsWith(MONETURL); + } + + /** + * Attempts to make a database connection to the given URL. The driver + * should return "null" if it realizes it is the wrong kind of driver to + * connect to the given URL. This will be common, as when the JDBC driver + * manager is asked to connect to a given URL it passes the URL to each + * loaded driver in turn. + * + * The driver should throw an SQLException if it is the right driver to + * connect to the given URL but has trouble connecting to the database. + * + * The java.util.Properties argument can be used to pass arbitrary string + * tag/value pairs as connection arguments. Normally at least "user" and + * "password" properties should be included in the Properties object. + * + * @param url the URL of the database to which to connect + * @param info a list of arbitrary string tag/value pairs as connection + * arguments. Normally at least a "user" and "password" property + * should be included + * @return a Connection object that represents a connection to the URL + * @throws SQLException if a database access error occurs + */ + public Connection connect(String url, Properties info) + throws SQLException + { + int tmp; + Properties props = new Properties(); + // set the optional properties and their defaults here + props.put("port", PORT); + props.put("debug", "false"); + props.put("language", "sql"); // mal, sql, <future> + props.put("so_timeout", "0"); + + props.putAll(info); + info = props; + + // url should be of style jdbc:monetdb://<host>/<database> + if (!acceptsURL(url)) + throw new SQLException("Invalid URL: it does not start with: " + MONETURL, "08M26"); + + // remove leading "jdbc:" so the rest is a valid hierarchical URI + URI uri; + try { + uri = new URI(url.substring(5)); + } catch (URISyntaxException e) { + throw new SQLException(e.toString(), "08M26"); + } + + String uri_host = uri.getHost(); + if (uri_host == null) + throw new SQLException("Invalid URL: no hostname given or unparsable in '" + url + "'", "08M26"); + info.put("host", uri_host); + + int uri_port = uri.getPort(); + if (uri_port > 0) + info.put("port", "" + uri_port); + + // check the database + String uri_path = uri.getPath(); + if (uri_path != null && uri_path.length() != 0) { + uri_path = uri_path.substring(1); + if (!uri_path.trim().equals("")) + info.put("database", uri_path); + } + + String uri_query = uri.getQuery(); + if (uri_query != null) { + // handle additional arguments + String args[] = uri_query.split("&"); + for (int i = 0; i < args.length; i++) { + tmp = args[i].indexOf("="); + if (tmp > 0) + info.put(args[i].substring(0, tmp), args[i].substring(tmp + 1)); + } + } + + // finally return the Connection as requested + return new MonetConnection(info); + } + + /** + * Retrieves the driver's major version number. Initially this should be 1. + * + * @return this driver's major version number + */ + public int getMajorVersion() { + return DRIVERMAJOR; + } + + /** + * Gets the driver's minor version number. Initially this should be 0. + * + * @return this driver's minor version number + */ + public int getMinorVersion() { + return DRIVERMINOR; + } + + /** + * Gets information about the possible properties for this driver. + * + * The getPropertyInfo method is intended to allow a generic GUI tool to + * discover what properties it should prompt a human for in order to get + * enough information to connect to a database. Note that depending on the + * values the human has supplied so far, additional values may become + * necessary, so it may be necessary to iterate though several calls to the + * getPropertyInfo method. + * + * @param url the URL of the database to which to connect + * @param info a proposed list of tag/value pairs that will be sent on + * connect open + * @return an array of DriverPropertyInfo objects describing possible + * properties. This array may be an empty array if no properties + * are required. + */ + public DriverPropertyInfo[] getPropertyInfo(String url, Properties info) { + if (!acceptsURL(url)) + return null; + + List<DriverPropertyInfo> props = new ArrayList<DriverPropertyInfo>(); + + DriverPropertyInfo prop = new DriverPropertyInfo("user", info.getProperty("user")); + prop.required = true; + prop.description = "The user loginname to use when authenticating on the database server"; + props.add(prop); + + prop = new DriverPropertyInfo("password", info.getProperty("password")); + prop.required = true; + prop.description = "The password to use when authenticating on the database server"; + props.add(prop); + + prop = new DriverPropertyInfo("debug", "false"); + prop.required = false; + prop.description = "Whether or not to create a log file for debugging purposes"; + props.add(prop); + + prop = new DriverPropertyInfo("logfile", ""); + prop.required = false; + prop.description = "The filename to write the debug log to. Only takes effect if debug is set to true. If the file exists, an incrementing number is added, till the filename is unique."; + props.add(prop); + + prop = new DriverPropertyInfo("language", "sql"); + prop.required = false; + prop.description = "What language to use for MonetDB conversations (experts only)"; + props.add(prop); + + prop = new DriverPropertyInfo("hash", ""); + prop.required = false; + prop.description = "Force the use of the given hash algorithm during challenge response (one of SHA1, MD5, plain)"; + props.add(prop); + + prop = new DriverPropertyInfo("follow_redirects", "true"); + prop.required = false; + prop.description = "Whether redirects issued by the server should be followed"; + props.add(prop); + + prop = new DriverPropertyInfo("treat_blob_as_binary", "false"); + prop.required = false; + prop.description = "Whether BLOBs on the server should be treated as BINARY types, thus mapped to byte[]"; + props.add(prop); + + prop = new DriverPropertyInfo("so_timeout", "0"); + prop.required = false; + prop.description = "Defines the maximum time to wait in milliseconds on a blocking read socket call"; // this corresponds to the Connection.setNetworkTimeout() method introduced in JDBC 4.1 + props.add(prop); + + DriverPropertyInfo[] dpi = new DriverPropertyInfo[props.size()]; + return props.toArray(dpi); + } + + /** + * Reports whether this driver is a genuine JDBC Compliant&tm; driver. A + * driver may only report true here if it passes the JDBC compliance tests; + * otherwise it is required to return false. + * + * JDBC compliance requires full support for the JDBC API and full support + * for SQL 92 Entry Level. It is expected that JDBC compliant drivers will + * be available for all the major commercial databases. + * + * This method is not intended to encourage the development of non-JDBC + * compliant drivers, but is a recognition of the fact that some vendors are + * interested in using the JDBC API and framework for lightweight databases + * that do not support full database functionality, or for special databases + * such as document information retrieval where a SQL implementation may not + * be feasible. + * + * @return true if this driver is JDBC Compliant; false otherwise + */ + public boolean jdbcCompliant() { + return MONETJDBCCOMPLIANT; + } + + //== end methods of interface driver + + + /** A static Map containing the mapping between MonetDB types and Java SQL types */ + /* use SELECT sqlname, * FROM sys.types order by 1, id; to view all MonetDB types */ + /* see http://docs.oracle.com/javase/7/docs/api/java/sql/Types.html to view all supported java SQL types */ + private static java.util.Map<String, Integer> typeMap = new java.util.HashMap<String, Integer>(); + static { + // fill the typeMap once + // typeMap.put("any", Integer.valueOf(Types.???)); + typeMap.put("bigint", Integer.valueOf(Types.BIGINT)); + typeMap.put("blob", Integer.valueOf(Types.BLOB)); + typeMap.put("boolean", Integer.valueOf(Types.BOOLEAN)); + typeMap.put("char", Integer.valueOf(Types.CHAR)); + typeMap.put("clob", Integer.valueOf(Types.CLOB)); + typeMap.put("date", Integer.valueOf(Types.DATE)); + typeMap.put("decimal", Integer.valueOf(Types.DECIMAL)); + typeMap.put("double", Integer.valueOf(Types.DOUBLE)); + // typeMap.put("geometry", Integer.valueOf(Types.???)); + // typeMap.put("geometrya", Integer.valueOf(Types.???)); + typeMap.put("hugeint", Integer.valueOf(Types.NUMERIC)); + typeMap.put("inet", Integer.valueOf(Types.VARCHAR)); + typeMap.put("int", Integer.valueOf(Types.INTEGER)); + typeMap.put("json", Integer.valueOf(Types.VARCHAR)); + // typeMap.put("mbr", Integer.valueOf(Types.???)); + typeMap.put("month_interval", Integer.valueOf(Types.INTEGER)); + typeMap.put("oid", Integer.valueOf(Types.BIGINT)); + // typeMap.put("ptr", Integer.valueOf(Types.???)); + typeMap.put("real", Integer.valueOf(Types.REAL)); + typeMap.put("sec_interval", Integer.valueOf(Types.DECIMAL)); + typeMap.put("smallint", Integer.valueOf(Types.SMALLINT)); + // typeMap.put("table", Integer.valueOf(Types.???)); + typeMap.put("time", Integer.valueOf(Types.TIME)); + typeMap.put("timestamp", Integer.valueOf(Types.TIMESTAMP)); + typeMap.put("timestamptz", Integer.valueOf(Types.TIMESTAMP)); +// new in Java 8: Types.TIMESTAMP_WITH_TIMEZONE (value 2014). Can't use it yet as we compile for java 7 + typeMap.put("timetz", Integer.valueOf(Types.TIME)); +// new in Java 8: Types.TIME_WITH_TIMEZONE (value 2013). Can't use it yet as we compile for java 7 + typeMap.put("tinyint", Integer.valueOf(Types.TINYINT)); + typeMap.put("url", Integer.valueOf(Types.VARCHAR)); + typeMap.put("uuid", Integer.valueOf(Types.VARCHAR)); + typeMap.put("varchar", Integer.valueOf(Types.VARCHAR)); + typeMap.put("wrd", Integer.valueOf(Types.BIGINT)); + } + + /** + * Returns the java.sql.Types equivalent of the given MonetDB type. + * + * @param type the type as used by MonetDB + * @return the mathing java.sql.Types constant or java.sql.Types.OTHER if + * nothing matched on the given string + */ + static int getJavaType(String type) { + // match the column type on a java.sql.Types constant + Integer tp = typeMap.get(type); + if (tp != null) { + return tp.intValue(); + } else { + // this should not be able to happen + // do not assert, since maybe future versions introduce + // new types + return Types.OTHER; + } + } + + /** + * Returns a String usable in an SQL statement to map the server types + * to values of java.sql.Types using the global static type map. + * The returned string will be a SQL CASE x statement where the x is + * replaced with the given column name (or expression) string. + * + * @param column a String representing the value that should be evaluated + * in the SQL CASE statement + * @return a SQL CASE statement + */ + private static String TypeMapppingSQL = null; // cache to optimise getSQLTypeMap() + static String getSQLTypeMap(String column) { + if (TypeMapppingSQL == null) { + // first time, compose TypeMappping SQL string + StringBuilder val = new StringBuilder((typeMap.size() * (7 + 7 + 7 + 4)) + 14); + for (Entry<String, Integer> entry : typeMap.entrySet()) { + val.append(" WHEN '").append(entry.getKey()).append("' THEN ").append(entry.getValue().toString()); + } + val.append(" ELSE ").append(Types.OTHER).append(" END"); + // as the typeMap is static, cache this SQL part for all next calls + TypeMapppingSQL = val.toString(); + } + return "CASE " + column + TypeMapppingSQL; + } + + /** + * Returns a touched up identifying version string of this driver. + * + * @return the version string + */ + public static String getDriverVersion() { + return "" + DRIVERMAJOR + "." + DRIVERMINOR + " (" + DRIVERVERSIONSUFFIX + ")"; + } + + public static int getDriverMajorVersion() { + return DRIVERMAJOR; + } + + public static int getDriverMinorVersion() { + return DRIVERMINOR; + } + + /** + * Return the parent Logger of all the Loggers used by this data + * source. This should be the Logger farthest from the root Logger + * that is still an ancestor of all of the Loggers used by this data + * source. Configuring this Logger will affect all of the log + * messages generated by the data source. In the worst case, this + * may be the root Logger. + * + * @return the parent Logger for this data source + * @throws SQLFeatureNotSupportedException if the data source does + * not use java.util.logging + */ + public Logger getParentLogger() throws SQLFeatureNotSupportedException { + throw new SQLFeatureNotSupportedException("java.util.logging not in use", "0A000"); + } +}
new file mode 100644 --- /dev/null +++ b/src/main/java/nl/cwi/monetdb/jdbc/MonetPreparedStatement.java @@ -0,0 +1,2503 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +package nl.cwi.monetdb.jdbc; + +import java.sql.*; +import java.util.*; +import java.net.URL; +import java.io.*; +import java.nio.*; +import java.math.*; // BigDecimal, etc. +import java.text.SimpleDateFormat; + +/** + * A {@link PreparedStatement} suitable for the MonetDB database. + * + * This implementation of the PreparedStatement interface uses the + * capabilities of the MonetDB/SQL backend to prepare and execute + * queries. The backend takes care of finding the '?'s in the input and + * returns the types it expects for them. + * + * An example of a server response on a prepare query is: + * <pre> + * % prepare select name from tables where id > ? and id < ?; + * &5 0 2 3 2 + * # prepare, prepare, prepare # table_name + * # type, digits, scale # name + * # varchar, int, int # type + * # 0, 0, 0 # length + * [ "int", 9, 0 ] + * [ "int", 9, 0 ] + * </pre> + * + * @author Fabian Groffen + * @version 0.3 + */ +public class MonetPreparedStatement + extends MonetStatement + implements PreparedStatement +{ + private final String[] monetdbType; + private final int[] javaType; + private final int[] digits; + private final int[] scale; + private final String[] schema; + private final String[] table; + private final String[] column; + private final int id; + private final int size; + private final int rscolcnt; + + private final String[] values; + + private final MonetConnection connection; + + /* only parse the date patterns once, use multiple times */ + /** Format of a timestamp with RFC822 time zone */ + final SimpleDateFormat mTimestampZ = + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSZ"); + /** Format of a timestamp */ + final SimpleDateFormat mTimestamp = + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + /** Format of a time with RFC822 time zone */ + final SimpleDateFormat mTimeZ = + new SimpleDateFormat("HH:mm:ss.SSSZ"); + /** Format of a time */ + final SimpleDateFormat mTime = + new SimpleDateFormat("HH:mm:ss.SSS"); + /** Format of a date used by mserver */ + final SimpleDateFormat mDate = + new SimpleDateFormat("yyyy-MM-dd"); + + /** + * MonetPreparedStatement constructor which checks the arguments for + * validity. A MonetPreparedStatement is backed by a + * {@link MonetStatement}, which deals with most of the required stuff of + * this class. + * + * @param connection the connection that created this Statement + * @param resultSetType type of {@link ResultSet} to produce + * @param resultSetConcurrency concurrency of ResultSet to produce + * @param prepareQuery the query string to prepare + * @throws SQLException if an error occurs during login + * @throws IllegalArgumentException is one of the arguments is null or empty + */ + MonetPreparedStatement( + MonetConnection connection, + int resultSetType, + int resultSetConcurrency, + int resultSetHoldability, + String prepareQuery) + throws SQLException, IllegalArgumentException + { + super( + connection, + resultSetType, + resultSetConcurrency, + resultSetHoldability + ); + + if (!super.execute("PREPARE " + prepareQuery)) + throw new SQLException("Unexpected server response", "M0M10"); + + // cheat a bit to get the ID and the number of columns + id = ((MonetConnection.ResultSetResponse)header).id; + size = ((MonetConnection.ResultSetResponse)header).tuplecount; + rscolcnt = ((MonetConnection.ResultSetResponse)header).columncount; + + // initialise blank finals + monetdbType = new String[size]; + javaType = new int[size]; + digits = new int[size]; + scale = new int[size]; + schema = new String[size]; + table = new String[size]; + column = new String[size]; + values = new String[size]; + + this.connection = connection; + + // fill the arrays + ResultSet rs = super.getResultSet(); + for (int i = 0; rs.next(); i++) { + monetdbType[i] = rs.getString("type"); + javaType[i] = MonetDriver.getJavaType(monetdbType[i]); + digits[i] = rs.getInt("digits"); + scale[i] = rs.getInt("scale"); + if (rscolcnt == 3) + continue; + schema[i] = rs.getString("schema"); + table[i] = rs.getString("table"); + column[i] = rs.getString("column"); + } + rs.close(); + + // PreparedStatements are by default poolable + poolable = true; + } + + /** + * Constructs an empty MonetPreparedStatement. This constructor is + * in particular useful for extensions of this class. + * + * @param connection the connection that created this Statement + * @param resultSetType type of ResultSet to produce + * @param resultSetConcurrency concurrency of ResultSet to produce + * @throws SQLException if an error occurs during login + */ + /* Disabled this constructor code as it is not part of the JDBC interface + It may be enabled again when a subclass is constructed which needs it. + MonetPreparedStatement( + MonetConnection connection, + int resultSetType, + int resultSetConcurrency, + int resultSetHoldability) + throws SQLException + { + super( + connection, + resultSetType, + resultSetConcurrency, + resultSetHoldability + ); + // initialise blank finals + monetdbType = null; + javaType = null; + digits = null; + scale = null; + schema = null; + table = null; + column = null; + values = null; + id = -1; + size = -1; + rscolcnt = -1; + + this.connection = connection; + } + */ + + //== methods interface PreparedStatement + + /** + * Adds a set of parameters to this PreparedStatement object's batch + * of commands. + * + * @throws SQLException if a database access error occurs + */ + @Override + public void addBatch() throws SQLException { + super.addBatch(transform()); + } + + /** override the addBatch from the Statement to throw an SQLException */ + @Override + public void addBatch(String q) throws SQLException { + throw new SQLException("This method is not available in a PreparedStatement!", "M1M05"); + } + + /** + * Clears the current parameter values immediately. + * + * In general, parameter values remain in force for repeated use of a + * statement. Setting a parameter value automatically clears its previous + * value. However, in some cases it is useful to immediately release the + * resources used by the current parameter values; this can be done by + * calling the method clearParameters. + */ + @Override + public void clearParameters() { + for (int i = 0; i < values.length; i++) { + values[i] = null; + } + } + + /** + * Executes the SQL statement in this PreparedStatement object, + * which may be any kind of SQL statement. Some prepared statements + * return multiple results; the execute method handles these complex + * statements as well as the simpler form of statements handled by + * the methods executeQuery and executeUpdate. + * + * The execute method returns a boolean to indicate the form of the + * first result. You must call either the method getResultSet or + * getUpdateCount to retrieve the result; you must call + * getMoreResults to move to any subsequent result(s). + * + * @return true if the first result is a ResultSet object; false if the + * first result is an update count or there is no result + * @throws SQLException if a database access error occurs or an argument + * is supplied to this method + */ + @Override + public boolean execute() throws SQLException { + return super.execute(transform()); + } + + /** override the execute from the Statement to throw an SQLException */ + @Override + public boolean execute(String q) throws SQLException { + throw new SQLException("This method is not available in a PreparedStatement!", "M1M05"); + } + + /** + * Executes the SQL query in this PreparedStatement object and returns the + * ResultSet object generated by the query. + * + * @return a ResultSet object that contains the data produced by the query; + * never null + * @throws SQLException if a database access error occurs or the SQL + * statement does not return a ResultSet object + */ + @Override + public ResultSet executeQuery() throws SQLException{ + if (execute() != true) + throw new SQLException("Query did not produce a result set", "M1M19"); + + return getResultSet(); + } + + /** override the executeQuery from the Statement to throw an SQLException*/ + @Override + public ResultSet executeQuery(String q) throws SQLException { + throw new SQLException("This method is not available in a PreparedStatement!", "M1M05"); + } + + /** + * Executes the SQL statement in this PreparedStatement object, which must + * be an SQL INSERT, UPDATE or DELETE statement; or an SQL statement that + * returns nothing, such as a DDL statement. + * + * @return either (1) the row count for INSERT, UPDATE, or DELETE + * statements or (2) 0 for SQL statements that return nothing + * @throws SQLException if a database access error occurs or the SQL + * statement returns a ResultSet object + */ + @Override + public int executeUpdate() throws SQLException { + if (execute() != false) + throw new SQLException("Query produced a result set", "M1M17"); + + return getUpdateCount(); + } + + /** override the executeUpdate from the Statement to throw an SQLException*/ + @Override + public int executeUpdate(String q) throws SQLException { + throw new SQLException("This method is not available in a PreparedStatement!", "M1M05"); + } + + /** + * Returns the index (0..size-1) in the backing arrays for the given + * resultset column number or an SQLException when not found + */ + private int getColumnIdx(int colnr) throws SQLException { + int curcol = 0; + for (int i = 0; i < size; i++) { + if (column[i] == null) + continue; + curcol++; + if (curcol == colnr) + return i; + } + throw new SQLException("No such column with index: " + colnr, "M1M05"); + } + /** + * Returns the index (0..size-1) in the backing arrays for the given + * parameter number or an SQLException when not found + */ + private int getParamIdx(int paramnr) throws SQLException { + int curparam = 0; + for (int i = 0; i < size; i++) { + if (column[i] != null) + continue; + curparam++; + if (curparam == paramnr) + return i; + } + throw new SQLException("No such parameter with index: " + paramnr, "M1M05"); + } + + + /* helper for the anonymous class inside getMetaData */ + private abstract class rsmdw extends MonetWrapper implements ResultSetMetaData {} + /** + * Retrieves a ResultSetMetaData object that contains information + * about the columns of the ResultSet object that will be returned + * when this PreparedStatement object is executed. + * + * Because a PreparedStatement object is precompiled, it is possible + * to know about the ResultSet object that it will return without + * having to execute it. Consequently, it is possible to invoke the + * method getMetaData on a PreparedStatement object rather than + * waiting to execute it and then invoking the ResultSet.getMetaData + * method on the ResultSet object that is returned. + * + * @return the description of a ResultSet object's columns or null if the + * driver cannot return a ResultSetMetaData object + * @throws SQLException if a database access error occurs + */ + @Override + public ResultSetMetaData getMetaData() { + if (rscolcnt == 3) + return null; // not sufficient data with pre-Dec2011 PREPARE + + // return inner class which implements the ResultSetMetaData interface + return new rsmdw() { + /** + * Returns the number of columns in this ResultSet object. + * + * @returns the number of columns + */ + @Override + public int getColumnCount() { + int cnt = 0; + + for (int i = 0; i < size; i++) { + if (column[i] != null) + cnt++; + } + return cnt; + } + + /** + * Indicates whether the designated column is automatically numbered. + * + * @param column the first column is 1, the second is 2, ... + * @return true if so; false otherwise + * @throws SQLException if a database access error occurs + */ + @Override + public boolean isAutoIncrement(int column) throws SQLException { + /* TODO: in MonetDB only numeric (int, decimal) columns could be autoincrement/serial + * This however requires an expensive dbmd.getColumns(null, schema, table, column) + * query call to pull the IS_AUTOINCREMENT value for this column. + * See also ResultSetMetaData.isAutoIncrement() + */ + // For now we simply allways return false. + return false; + } + + /** + * Indicates whether a column's case matters. + * + * @param column the first column is 1, the second is 2, ... + * @returns false + */ + @Override + public boolean isCaseSensitive(int column) throws SQLException { + switch (javaType[getColumnIdx(column)]) { + case Types.CHAR: + case Types.VARCHAR: + case Types.LONGVARCHAR: // MonetDB doesn't use type LONGVARCHAR, it's here for completeness + case Types.CLOB: + return true; + } + + return false; + } + + /** + * Indicates whether the designated column can be used in a + * where clause. + * + * Returning true for all here, even for CLOB, BLOB. + * + * @param column the first column is 1, the second is 2, ... + * @returns true + */ + @Override + public boolean isSearchable(int column) { + return true; + } + + /** + * Indicates whether the designated column is a cash value. + * From the MonetDB database perspective it is by definition + * unknown whether the value is a currency, because there are + * no currency datatypes such as MONEY. With this knowledge + * we can always return false here. + * + * @param column the first column is 1, the second is 2, ... + * @returns false + */ + @Override + public boolean isCurrency(int column) { + return false; + } + + /** + * Indicates whether values in the designated column are signed + * numbers. + * Within MonetDB all numeric types (except oid and ptr) are signed. + * + * @param column the first column is 1, the second is 2, ... + * @return true if so; false otherwise + */ + @Override + public boolean isSigned(int column) throws SQLException { + String monettype = getColumnTypeName(column); + if (monettype != null) { + if ("oid".equals(monettype) + || "ptr".equals(monettype)) + return false; + } + // we can hardcode this, based on the colum type + switch (javaType[getColumnIdx(column)]) { + case Types.NUMERIC: + case Types.DECIMAL: + case Types.TINYINT: + case Types.SMALLINT: + case Types.INTEGER: + case Types.BIGINT: + case Types.REAL: + case Types.FLOAT: + case Types.DOUBLE: + return true; + case Types.BIT: // we don't use type BIT, it's here for completeness + case Types.BOOLEAN: + case Types.DATE: + case Types.TIME: + case Types.TIMESTAMP: + default: + return false; + } + } + + /** + * Indicates the designated column's normal maximum width in + * characters. + * + * @param column the first column is 1, the second is 2, ... + * @return the normal maximum number of characters allowed as the + * width of the designated column + * @throws SQLException if there is no such column + */ + @Override + public int getColumnDisplaySize(int column) throws SQLException { + return digits[getColumnIdx(column)]; + } + + /** + * Get the designated column's table's schema. + * + * @param column the first column is 1, the second is 2, ... + * @return schema name or "" if not applicable + * @throws SQLException if a database access error occurs + */ + @Override + public String getSchemaName(int column) throws SQLException { + return schema[getColumnIdx(column)]; + } + + /** + * Gets the designated column's table name. + * + * @param column the first column is 1, the second is 2, ... + * @return table name or "" if not applicable + */ + @Override + public String getTableName(int col) throws SQLException { + return table[getColumnIdx(col)]; + } + + /** + * Get the designated column's number of decimal digits. + * This method is currently very expensive as it needs to + * retrieve the information from the database using an SQL + * query. + * + * @param column the first column is 1, the second is 2, ... + * @return precision + * @throws SQLException if a database access error occurs + */ + @Override + public int getPrecision(int column) throws SQLException { + return digits[getColumnIdx(column)]; + } + + /** + * Gets the designated column's number of digits to right of + * the decimal point. This method is currently very + * expensive as it needs to retrieve the information from + * the database using an SQL query. + * + * @param column the first column is 1, the second is 2, ... + * @return scale + * @throws SQLException if a database access error occurs + */ + @Override + public int getScale(int column) throws SQLException { + return scale[getColumnIdx(column)]; + } + + /** + * Indicates the nullability of values in the designated + * column. This method is currently very expensive as it + * needs to retrieve the information from the database using + * an SQL query. + * + * @param column the first column is 1, the second is 2, ... + * @return nullability + * @throws SQLException if a database access error occurs + */ + @Override + public int isNullable(int column) throws SQLException { + return columnNullableUnknown; + } + + /** + * Gets the designated column's table's catalog name. + * MonetDB does not support the catalog naming concept as in: catalog.schema.table naming scheme + * + * @param column the first column is 1, the second is 2, ... + * @return the name of the catalog for the table in which the given + * column appears or "" if not applicable + */ + @Override + public String getCatalogName(int column) throws SQLException { + return null; // MonetDB does NOT support catalogs + } + + /** + * Indicates whether the designated column is definitely not + * writable. MonetDB does not support cursor updates, so + * nothing is writable. + * + * @param column the first column is 1, the second is 2, ... + * @return true if so; false otherwise + */ + @Override + public boolean isReadOnly(int column) { + return true; + } + + /** + * Indicates whether it is possible for a write on the + * designated column to succeed. + * + * @param column the first column is 1, the second is 2, ... + * @return true if so; false otherwise + */ + @Override + public boolean isWritable(int column) { + return false; + } + + /** + * Indicates whether a write on the designated column will + * definitely succeed. + * + * @param column the first column is 1, the second is 2, ... + * @return true if so; false otherwise + */ + @Override + public boolean isDefinitelyWritable(int column) { + return false; + } + + /** + * Returns the fully-qualified name of the Java class whose + * instances are manufactured if the method + * ResultSet.getObject is called to retrieve a value from + * the column. ResultSet.getObject may return a subclass of + * the class returned by this method. + * + * @param column the first column is 1, the second is 2, ... + * @return the fully-qualified name of the class in the Java + * programming language that would be used by the method + * ResultSet.getObject to retrieve the value in the + * specified column. This is the class name used for custom + * mapping. + * @throws SQLException if there is no such column + */ + @Override + public String getColumnClassName(int column) throws SQLException { + return MonetResultSet.getClassForType(javaType[getColumnIdx(column)]).getName(); + } + + /** + * Gets the designated column's suggested title for use in + * printouts and displays. This is currently equal to + * getColumnName(). + * + * @param column the first column is 1, the second is 2, ... + * @return the suggested column title + * @throws SQLException if there is no such column + */ + @Override + public String getColumnLabel(int column) throws SQLException { + return getColumnName(column); + } + + /** + * Gets the designated column's name + * + * @param column the first column is 1, the second is 2, ... + * @return the column name + * @throws SQLException if there is no such column + */ + @Override + public String getColumnName(int col) throws SQLException { + return column[getColumnIdx(col)]; + } + + /** + * Retrieves the designated column's SQL type. + * + * @param column the first column is 1, the second is 2, ... + * @return SQL type from java.sql.Types + * @throws SQLException if there is no such column + */ + @Override + public int getColumnType(int column) throws SQLException { + return javaType[getColumnIdx(column)]; + } + + /** + * Retrieves the designated column's database-specific type name. + * + * @param column the first column is 1, the second is 2, ... + * @return type name used by the database. If the column type is a + * user-defined type, then a fully-qualified type name is + * returned. + * @throws SQLException if there is no such column + */ + @Override + public String getColumnTypeName(int column) throws SQLException { + return monetdbType[getColumnIdx(column)]; + } + }; + } + + /* helper class for the anonymous class in getParameterMetaData */ + private abstract class pmdw extends MonetWrapper implements ParameterMetaData {} + /** + * Retrieves the number, types and properties of this + * PreparedStatement object's parameters. + * + * @return a ParameterMetaData object that contains information + * about the number, types and properties of this + * PreparedStatement object's parameters + * @throws SQLException if a database access error occurs + */ + @Override + public ParameterMetaData getParameterMetaData() throws SQLException { + return new pmdw() { + /** + * Retrieves the number of parameters in the + * PreparedStatement object for which this ParameterMetaData + * object contains information. + * + * @return the number of parameters + * @throws SQLException if a database access error occurs + */ + @Override + public int getParameterCount() throws SQLException { + int cnt = 0; + + for (int i = 0; i < size; i++) { + if (column[i] == null) + cnt++; + } + + return cnt; + } + + /** + * Retrieves whether null values are allowed in the + * designated parameter. + * + * This is currently always unknown for MonetDB/SQL. + * + * @param param the first parameter is 1, the second is 2, ... + * @return the nullability status of the given parameter; + * one of ParameterMetaData.parameterNoNulls, + * ParameterMetaData.parameterNullable, or + * ParameterMetaData.parameterNullableUnknown + * @throws SQLException if a database access error occurs + */ + @Override + public int isNullable(int param) throws SQLException { + return ParameterMetaData.parameterNullableUnknown; + } + + /** + * Retrieves whether values for the designated parameter can + * be signed numbers. + * + * @param param the first parameter is 1, the second is 2, ... + * @return true if so; false otherwise + * @throws SQLException if a database access error occurs + */ + @Override + public boolean isSigned(int param) throws SQLException { + // we can hardcode this, based on the colum type + // (from ResultSetMetaData.isSigned) + switch (javaType[getParamIdx(param)]) { + case Types.NUMERIC: + case Types.DECIMAL: + case Types.TINYINT: + case Types.SMALLINT: + case Types.INTEGER: + case Types.BIGINT: + case Types.REAL: + case Types.FLOAT: + case Types.DOUBLE: + return true; + case Types.BIT: // we don't use type BIT, it's here for completeness + case Types.BOOLEAN: + case Types.DATE: + case Types.TIME: + case Types.TIMESTAMP: + default: + return false; + } + } + + /** + * Retrieves the designated parameter's number of decimal + * digits. + * + * @param param the first parameter is 1, the second is 2, ... + * @return precision + * @throws SQLException if a database access error occurs + */ + @Override + public int getPrecision(int param) throws SQLException { + return digits[getParamIdx(param)]; + } + + /** + * Retrieves the designated parameter's number of digits to + * right of the decimal point. + * + * @param param the first parameter is 1, the second is 2, ... + * @return scale + * @throws SQLException if a database access error occurs + */ + @Override + public int getScale(int param) throws SQLException { + return scale[getParamIdx(param)]; + } + + /** + * Retrieves the designated parameter's SQL type. + * + * @param param the first parameter is 1, the second is 2, ... + * @return SQL type from java.sql.Types + * @throws SQLException if a database access error occurs + */ + @Override + public int getParameterType(int param) throws SQLException { + return javaType[getParamIdx(param)]; + } + + /** + * Retrieves the designated parameter's database-specific + * type name. + * + * @param param the first parameter is 1, the second is 2, ... + * @return type the name used by the database. If the + * parameter type is a user-defined type, then a + * fully-qualified type name is returned. + * @throws SQLException if a database access error occurs + */ + @Override + public String getParameterTypeName(int param) throws SQLException { + return monetdbType[getParamIdx(param)]; + } + + /** + * Retrieves the fully-qualified name of the Java class + * whose instances should be passed to the method + * PreparedStatement.setObject. + * + * @param param the first parameter is 1, the second is 2, ... + * @return the fully-qualified name of the class in the Java + * programming language that would be used by the + * method PreparedStatement.setObject to set the + * value in the specified parameter. This is the + * class name used for custom mapping. + * @throws SQLException if a database access error occurs + */ + @Override + public String getParameterClassName(int param) throws SQLException { + Map<String,Class<?>> map = getConnection().getTypeMap(); + Class<?> c; + if (map.containsKey(monetdbType[getParamIdx(param)])) { + c = (Class)map.get(monetdbType[getParamIdx(param)]); + } else { + c = MonetResultSet.getClassForType( + javaType[getParamIdx(param)] + ); + } + return c.getName(); + } + + /** + * Retrieves the designated parameter's mode. + * For MonetDB/SQL this is currently always unknown. + * + * @param param - the first parameter is 1, the second is 2, ... + * @return mode of the parameter; one of + * ParameterMetaData.parameterModeIn, + * ParameterMetaData.parameterModeOut, or + * ParameterMetaData.parameterModeInOut + * ParameterMetaData.parameterModeUnknown. + * @throws SQLException if a database access error occurs + */ + @Override + public int getParameterMode(int param) throws SQLException { + return ParameterMetaData.parameterModeUnknown; + } + }; + } + + /** + * Sets the designated parameter to the given Array object. The + * driver converts this to an SQL ARRAY value when it sends it to + * the database. + * + * @param i the first parameter is 1, the second is 2, ... + * @param x an Array object that maps an SQL ARRAY value + * @throws SQLException if a database access error occurs + */ + @Override + public void setArray(int i, Array x) throws SQLException { + throw new SQLException("Operation setArray(int i, Array x) currently not supported!", "0A000"); + } + + /** + * Sets the designated parameter to the given input stream, which will have + * the specified number of bytes. When a very large ASCII value is input to + * a LONGVARCHAR parameter, it may be more practical to send it via a + * java.io.InputStream. Data will be read from the stream as needed until + * end-of-file is reached. The JDBC driver will do any necessary conversion + * from ASCII to the database char format. + * + * Note: This stream object can either be a standard Java stream object or + * your own subclass that implements the standard interface. + * + * @param parameterIndex the first parameter is 1, the second is 2, ... + * @param x the Java input stream that contains the ASCII parameter value + * @throws SQLException if a database access error occurs + * @throws SQLFeatureNotSupportedException the JDBC driver does + * not support this method + */ + @Override + public void setAsciiStream(int parameterIndex, InputStream x) + throws SQLException + { + throw newSQLFeatureNotSupportedException("setAsciiStream"); + } + + /** + * Sets the designated parameter to the given input stream, which will have + * the specified number of bytes. When a very large ASCII value is input to + * a LONGVARCHAR parameter, it may be more practical to send it via a + * java.io.InputStream. Data will be read from the stream as needed until + * end-of-file is reached. The JDBC driver will do any necessary conversion + * from ASCII to the database char format. + * + * Note: This stream object can either be a standard Java stream object or + * your own subclass that implements the standard interface. + * + * @param parameterIndex the first parameter is 1, the second is 2, ... + * @param x the Java input stream that contains the ASCII parameter value + * @param length the number of bytes in the stream + * @throws SQLException if a database access error occurs + */ + @Override + public void setAsciiStream(int parameterIndex, InputStream x, int length) + throws SQLException + { + throw newSQLFeatureNotSupportedException("setAsciiStream"); + } + + /** + * Sets the designated parameter to the given input stream, which + * will have the specified number of bytes. When a very large ASCII + * value is input to a LONGVARCHAR parameter, it may be more + * practical to send it via a java.io.InputStream. Data will be read + * from the stream as needed until end-of-file is reached. The JDBC + * driver will do any necessary conversion from ASCII to the + * database char format. + * + * Note: This stream object can either be a standard Java stream object or + * your own subclass that implements the standard interface. + * + * @param parameterIndex the first parameter is 1, the second is 2, ... + * @param x the Java input stream that contains the ASCII parameter value + * @param length the number of bytes in the stream + * @throws SQLException if a database access error occurs + * @throws SQLFeatureNotSupportedException the JDBC driver does + * not support this method + */ + @Override + public void setAsciiStream(int parameterIndex, InputStream x, long length) + throws SQLException + { + throw newSQLFeatureNotSupportedException("setAsciiStream"); + } + + /** + * Sets the designated parameter to the given java.math.BigDecimal value. + * The driver converts this to an SQL NUMERIC value when it sends it to the + * database. + * + * @param idx the first parameter is 1, the second is 2, ... + * @param x the parameter value + * @throws SQLException if a database access error occurs + */ + @Override + public void setBigDecimal(int idx, BigDecimal x) + throws SQLException + { + // get array position + int i = getParamIdx(idx); + + // round to the scale of the DB: + x = x.setScale(scale[i], RoundingMode.HALF_UP); + + // if precision is now greater than that of the db, throw an error: + if (x.precision() > digits[i]) { + throw new SQLDataException("DECIMAL value exceeds allowed digits/scale: " + x.toPlainString() + " (" + digits[i] + "/" + scale[i] + ")", "22003"); + } + + // MonetDB doesn't like leading 0's, since it counts them as part of + // the precision, so let's strip them off. (But be careful not to do + // this to the exact number "0".) Also strip off trailing + // numbers that are inherent to the double representation. + String xStr = x.toPlainString(); + int dot = xStr.indexOf("."); + if (dot >= 0) + xStr = xStr.substring(0, Math.min(xStr.length(), dot + 1 + scale[i])); + while (xStr.startsWith("0") && xStr.length() > 1) + xStr = xStr.substring(1); + setValue(idx, xStr); + } + + /** + * Sets the designated parameter to the given input stream, which will have + * the specified number of bytes. When a very large binary value is input + * to a LONGVARBINARY parameter, it may be more practical to send it via a + * java.io.InputStream object. The data will be read from the stream as + * needed until end-of-file is reached. + * + * Note: This stream object can either be a standard Java stream object or + * your own subclass that implements the standard interface. + * + * @param parameterIndex the first parameter is 1, the second is 2, ... + * @param x the java input stream which contains the binary parameter value + * @throws SQLException if a database access error occurs + * @throws SQLFeatureNotSupportedException the JDBC driver does + * not support this method + */ + @Override + public void setBinaryStream(int parameterIndex, InputStream x) + throws SQLException + { + throw newSQLFeatureNotSupportedException("setBinaryStream"); + } + + /** + * Sets the designated parameter to the given input stream, which will have + * the specified number of bytes. When a very large binary value is input + * to a LONGVARBINARY parameter, it may be more practical to send it via a + * java.io.InputStream object. The data will be read from the stream as + * needed until end-of-file is reached. + * + * Note: This stream object can either be a standard Java stream object or + * your own subclass that implements the standard interface. + * + * @param parameterIndex the first parameter is 1, the second is 2, ... + * @param x the java input stream which contains the binary parameter value + * @param length the number of bytes in the stream + * @throws SQLException if a database access error occurs + * @throws SQLFeatureNotSupportedException the JDBC driver does + * not support this method + */ + @Override + public void setBinaryStream(int parameterIndex, InputStream x, int length) + throws SQLException + { + throw newSQLFeatureNotSupportedException("setBinaryStream"); + } + + /** + * Sets the designated parameter to the given input stream, which will have + * the specified number of bytes. When a very large binary value is input + * to a LONGVARBINARY parameter, it may be more practical to send it via a + * java.io.InputStream object. The data will be read from the stream as + * needed until end-of-file is reached. + * + * Note: This stream object can either be a standard Java stream object or + * your own subclass that implements the standard interface. + * + * @param parameterIndex the first parameter is 1, the second is 2, ... + * @param x the java input stream which contains the binary parameter value + * @param length the number of bytes in the stream + * @throws SQLException if a database access error occurs + * @throws SQLFeatureNotSupportedException the JDBC driver does + * not support this method + */ + @Override + public void setBinaryStream(int parameterIndex, InputStream x, long length) + throws SQLException + { + throw newSQLFeatureNotSupportedException("setBinaryStream"); + } + + /** + * Sets the designated parameter to the given Blob object. The driver + * converts this to an SQL BLOB value when it sends it to the database. + * + * @param i the first parameter is 1, the second is 2, ... + * @param x a Blob object that maps an SQL BLOB value + * @throws SQLException if a database access error occurs + * @throws SQLFeatureNotSupportedException the JDBC driver does + * not support this method + */ + @Override + public void setBlob(int i, InputStream x) throws SQLException { + throw newSQLFeatureNotSupportedException("setBlob"); + } + + /** + * Sets the designated parameter to the given Blob object. The driver + * converts this to an SQL BLOB value when it sends it to the database. + * + * @param i the first parameter is 1, the second is 2, ... + * @param x a Blob object that maps an SQL BLOB value + * @throws SQLException if a database access error occurs + * @throws SQLFeatureNotSupportedException the JDBC driver does + * not support this method + */ + @Override + public void setBlob(int i, Blob x) throws SQLException { + throw newSQLFeatureNotSupportedException("setBlob"); + } + + /** + * Sets the designated parameter to a InputStream object. The + * inputstream must contain the number of characters specified by + * length otherwise a SQLException will be generated when the + * PreparedStatement is executed. This method differs from the + * setBinaryStream (int, InputStream, int) method because it informs + * the driver that the parameter value should be sent to the server + * as a BLOB. When the setBinaryStream method is used, the driver + * may have to do extra work to determine whether the parameter data + * should be sent to the server as a LONGVARBINARY or a BLOB. + * + * @param i the first parameter is 1, the second is 2, ... + * @param is an object that contains the data to set the parameter + * value to + * @param length the number of bytes in the parameter data + * @throws SQLException if a database access error occurs + * @throws SQLFeatureNotSupportedException the JDBC driver does + * not support this method + */ + @Override + public void setBlob(int i, InputStream is, long length) throws SQLException { + throw newSQLFeatureNotSupportedException("setBlob"); + } + + /** + * Sets the designated parameter to the given Java boolean value. The + * driver converts this to an SQL BIT value when it sends it to the + * database. + * + * @param parameterIndex the first parameter is 1, the second is 2, ... + * @param x the parameter value + * @throws SQLException if a database access error occurs + */ + @Override + public void setBoolean(int parameterIndex, boolean x) throws SQLException { + setValue(parameterIndex, "" + x); + } + + /** + * Sets the designated parameter to the given Java byte value. The driver + * converts this to an SQL TINYINT value when it sends it to the database. + * + * @param parameterIndex the first parameter is 1, the second is 2, ... + * @param x the parameter value + * @throws SQLException if a database access error occurs + */ + @Override + public void setByte(int parameterIndex, byte x) throws SQLException { + setValue(parameterIndex, "" + x); + } + + static final String HEXES = "0123456789ABCDEF"; + /** + * Sets the designated parameter to the given Java array of bytes. The + * driver converts this to an SQL VARBINARY or LONGVARBINARY (depending + * on the argument's size relative to the driver's limits on VARBINARY + * values) when it sends it to the database. + * + * @param parameterIndex the first parameter is 1, the second is 2, ... + * @param x the parameter value + * @throws SQLException if a database access error occurs + */ + @Override + public void setBytes(int parameterIndex, byte[] x) throws SQLException { + if (x == null) { + setNull(parameterIndex, -1); + return; + } + + StringBuilder hex = new StringBuilder(x.length * 2); + byte b; + for (int i = 0; i < x.length; i++) { + b = x[i]; + hex.append(HEXES.charAt((b & 0xF0) >> 4)) + .append(HEXES.charAt((b & 0x0F))); + } + setValue(parameterIndex, "blob '" + hex.toString() + "'"); + } + + /** + * Sets the designated parameter to the given Reader object, which is the + * given number of characters long. When a very large UNICODE value is + * input to a LONGVARCHAR parameter, it may be more practical to send it + * via a java.io.Reader object. The data will be read from the stream as + * needed until end-of-file is reached. The JDBC driver will do any + * necessary conversion from UNICODE to the database char format. + * + * Note: This stream object can either be a standard Java stream object or + * your own subclass that implements the standard interface. + * + * @param parameterIndex the first parameter is 1, the second is 2, ... + * @param reader the java.io.Reader object that contains the Unicode data + * @param length the number of characters in the stream + * @throws SQLException if a database access error occurs + */ + @Override + public void setCharacterStream( + int parameterIndex, + Reader reader, + int length) + throws SQLException + { + if (reader == null) { + setNull(parameterIndex, -1); + return; + } + + CharBuffer tmp = CharBuffer.allocate(length); + try { + reader.read(tmp); + } catch (IOException e) { + throw new SQLException(e.getMessage(), "M1M25"); + } + setString(parameterIndex, tmp.toString()); + } + + /** + * Sets the designated parameter to the given Reader object, which is the + * given number of characters long. When a very large UNICODE value is + * input to a LONGVARCHAR parameter, it may be more practical to send it + * via a java.io.Reader object. The data will be read from the stream as + * needed until end-of-file is reached. The JDBC driver will do any + * necessary conversion from UNICODE to the database char format. + * + * Note: This stream object can either be a standard Java stream object or + * your own subclass that implements the standard interface. + * + * @param parameterIndex the first parameter is 1, the second is 2, ... + * @param reader the java.io.Reader object that contains the Unicode data + * @throws SQLException if a database access error occurs + * @throws SQLFeatureNotSupportedException the JDBC driver does + * not support this method + */ + @Override + public void setCharacterStream(int parameterIndex, Reader reader) + throws SQLException + { + setCharacterStream(parameterIndex, reader, 0); + } + + /** + * Sets the designated parameter to the given Reader object, which is the + * given number of characters long. When a very large UNICODE value is + * input to a LONGVARCHAR parameter, it may be more practical to send it + * via a java.io.Reader object. The data will be read from the stream as + * needed until end-of-file is reached. The JDBC driver will do any + * necessary conversion from UNICODE to the database char format. + * + * Note: This stream object can either be a standard Java stream object or + * your own subclass that implements the standard interface. + * + * @param parameterIndex the first parameter is 1, the second is 2, ... + * @param reader the java.io.Reader object that contains the Unicode data + * @param length the number of characters in the stream + * @throws SQLException if a database access error occurs + */ + @Override + public void setCharacterStream( + int parameterIndex, + Reader reader, + long length) + throws SQLException + { + // given the implementation of the int-version, downcast is ok + setCharacterStream(parameterIndex, reader, (int)length); + } + + /** + * Sets the designated parameter to the given Clob object. The driver + * converts this to an SQL CLOB value when it sends it to the database. + * + * @param i the first parameter is 1, the second is 2, ... + * @param x a Clob object that maps an SQL CLOB value + * @throws SQLException if a database access error occurs + */ + @Override + public void setClob(int i, Clob x) throws SQLException { + if (x == null) { + setNull(i, -1); + return; + } + + // simply serialise the CLOB into a variable for now... far from + // efficient, but might work for a few cases... + // be on your marks: we have to cast the length down! + setString(i, x.getSubString(1L, (int)(x.length()))); + } + + /** + * Sets the designated parameter to the given Clob object. The driver + * converts this to an SQL CLOB value when it sends it to the database. + * + * @param i the first parameter is 1, the second is 2, ... + * @param reader an object that contains the data to set the parameter + * value to + * @throws SQLException if a database access error occurs + * @throws SQLFeatureNotSupportedException the JDBC driver does + * not support this method + */ + @Override + public void setClob(int i, Reader reader) throws SQLException { + if (reader == null) { + setNull(i, -1); + return; + } + // Some buffer. Size of 8192 is default for BufferedReader, so... + char[] arr = new char[8192]; + StringBuilder buf = new StringBuilder(8192 * 8); + int numChars; + try { + while ((numChars = reader.read(arr, 0, arr.length)) > 0) { + buf.append(arr, 0, numChars); + } + setString(i, buf.toString()); + } catch (IOException e) { + throw new SQLException(e); + } + } + + /** + * Sets the designated parameter to a Reader object. The reader must + * contain the number of characters specified by length otherwise a + * SQLException will be generated when the PreparedStatement is + * executed. This method differs from the setCharacterStream (int, + * Reader, int) method because it informs the driver that the + * parameter value should be sent to the server as a CLOB. When the + * setCharacterStream method is used, the driver may have to do + * extra work to determine whether the parameter data should be sent + * to the server as a LONGVARCHAR or a CLOB. + * + * @param i the first parameter is 1, the second is 2, ... + * @param reader An object that contains the data to set the + * parameter value to. + * @param length the number of characters in the parameter data. + * @throws SQLException if a database access error occurs + */ + @Override + public void setClob(int i, Reader reader, long length) throws SQLException { + if (reader == null || length < 0) { + setNull(i, -1); + return; + } + // simply serialise the CLOB into a variable for now... far from + // efficient, but might work for a few cases... + CharBuffer buf = CharBuffer.allocate((int)length); // have to down cast :( + try { + reader.read(buf); + } catch (IOException e) { + throw new SQLException("failed to read from stream: " + + e.getMessage(), "M1M25"); + } + // We have to rewind the buffer, because otherwise toString() returns "". + buf.rewind(); + setString(i, buf.toString()); + } + + /** + * Sets the designated parameter to the given java.sql.Date value. The + * driver converts this to an SQL DATE value when it sends it to the + * database. + * + * @param parameterIndex the first parameter is 1, the second is 2, ... + * @param x the parameter value + * @throws SQLException if a database access error occurs + */ + @Override + public void setDate(int parameterIndex, java.sql.Date x) + throws SQLException + { + setDate(parameterIndex, x, null); + } + + /** + * Sets the designated parameter to the given java.sql.Date value, using + * the given Calendar object. The driver uses the Calendar object to + * construct an SQL DATE value, which the driver then sends to the + * database. With a Calendar object, the driver can calculate the date + * taking into account a custom timezone. If no Calendar object is + * specified, the driver uses the default timezone, which is that of the + * virtual machine running the application. + * + * @param parameterIndex the first parameter is 1, the second is 2, ... + * @param x the parameter value + * @param cal the Calendar object the driver will use to construct the date + * @throws SQLException if a database access error occurs + */ + @Override + public void setDate(int parameterIndex, java.sql.Date x, Calendar cal) + throws SQLException + { + if (x == null) { + setNull(parameterIndex, -1); + return; + } + + if (cal == null) { + setValue(parameterIndex, "date '" + x.toString() + "'"); + } else { + mDate.setTimeZone(cal.getTimeZone()); + setValue(parameterIndex, "date '" + mDate.format(x) + "'"); + } + } + + /** + * Sets the designated parameter to the given Java double value. The driver + * converts this to an SQL DOUBLE value when it sends it to the database. + * + * @param parameterIndex the first parameter is 1, the second is 2, ... + * @param x the parameter value + * @throws SQLException if a database access error occurs + */ + @Override + public void setDouble(int parameterIndex, double x) throws SQLException { + setValue(parameterIndex, "" + x); + } + + /** + * Sets the designated parameter to the given Java float value. The driver + * converts this to an SQL FLOAT value when it sends it to the database. + * + * @param parameterIndex the first parameter is 1, the second is 2, ... + * @param x the parameter value + * @throws SQLException if a database access error occurs + */ + @Override + public void setFloat(int parameterIndex, float x) throws SQLException { + setValue(parameterIndex, "" + x); + } + + /** + * Sets the designated parameter to the given Java int value. The driver + * converts this to an SQL INTEGER value when it sends it to the database. + * + * @param parameterIndex the first parameter is 1, the second is 2, ... + * @param x the parameter value + * @throws SQLException if a database access error occurs + */ + @Override + public void setInt(int parameterIndex, int x) throws SQLException { + setValue(parameterIndex, "" + x); + } + + /** + * Sets the designated parameter to the given Java long value. The driver + * converts this to an SQL BIGINT value when it sends it to the database. + * + * @param parameterIndex the first parameter is 1, the second is 2, ... + * @param x the parameter value + * @throws SQLException if a database access error occurs + */ + @Override + public void setLong(int parameterIndex, long x) throws SQLException { + setValue(parameterIndex, "" + x); + } + + /** + * Sets the designated parameter to a Reader object. The Reader + * reads the data till end-of-file is reached. The driver does the + * necessary conversion from Java character format to the national + * character set in the database. + * + * @param i the first parameter is 1, the second is 2, ... + * @param value the parameter value + * @throws SQLException if a database access error occurs + * @throws SQLFeatureNotSupportedException the JDBC driver does + * not support this method + */ + @Override + public void setNCharacterStream(int i, Reader value) throws SQLException { + throw newSQLFeatureNotSupportedException("setNCharacterStream"); + } + + /** + * Sets the designated parameter to a Reader object. The Reader + * reads the data till end-of-file is reached. The driver does the + * necessary conversion from Java character format to the national + * character set in the database. + * + * @param i the first parameter is 1, the second is 2, ... + * @param value the parameter value + * @param length the number of characters in the parameter data. + * @throws SQLException if a database access error occurs + * @throws SQLFeatureNotSupportedException the JDBC driver does + * not support this method + */ + @Override + public void setNCharacterStream(int i, Reader value, long length) + throws SQLException + { + throw newSQLFeatureNotSupportedException("setNCharacterStream"); + } + + /** + * Sets the designated parameter to a java.sql.NClob object. The + * driver converts this to a SQL NCLOB value when it sends it to the + * database. + * + * @param i the first parameter is 1, the second is 2, ... + * @param value the parameter value + * @throws SQLException if a database access error occurs + * @throws SQLFeatureNotSupportedException the JDBC driver does + * not support this method + */ + @Override + public void setNClob(int i, Reader value) throws SQLException { + throw newSQLFeatureNotSupportedException("setNClob"); + } + + /** + * Sets the designated parameter to a java.sql.NClob object. The + * driver converts this to a SQL NCLOB value when it sends it to the + * database. + * + * @param i the first parameter is 1, the second is 2, ... + * @param value the parameter value + * @throws SQLException if a database access error occurs + * @throws SQLFeatureNotSupportedException the JDBC driver does + * not support this method + */ + @Override + public void setNClob(int i, NClob value) throws SQLException { + throw newSQLFeatureNotSupportedException("setNClob"); + } + + /** + * Sets the designated parameter to a Reader object. The reader must + * contain the number of characters specified by length otherwise a + * SQLException will be generated when the PreparedStatement is + * executed. This method differs from the setCharacterStream (int, + * Reader, int) method because it informs the driver that the + * parameter value should be sent to the server as a NCLOB. When the + * setCharacterStream method is used, the driver may have to do + * extra work to determine whether the parameter data should be sent + * to the server as a LONGNVARCHAR or a NCLOB. + * + * @param i the first parameter is 1, the second is 2, ... + * @param r An object that contains the data to set the parameter + * value to + * @param length the number of characters in the parameter data + * @throws SQLException if a database access error occurs + * @throws SQLFeatureNotSupportedException the JDBC driver does + * not support this method + */ + @Override + public void setNClob(int i, Reader r, long length) throws SQLException { + throw newSQLFeatureNotSupportedException("setNClob"); + } + + /** + * Sets the designated paramter to the given String object. The + * driver converts this to a SQL NCHAR or NVARCHAR or LONGNVARCHAR + * value (depending on the argument's size relative to the driver's + * limits on NVARCHAR values) when it sends it to the database. + * + * @param i the first parameter is 1, the second is 2, ... + * @param value the parameter value + * @throws SQLException if a database access error occurs + * @throws SQLFeatureNotSupportedException the JDBC driver does + * not support this method + */ + @Override + public void setNString(int i, String value) throws SQLException { + throw newSQLFeatureNotSupportedException("setNString"); + } + + /** + * Sets the designated parameter to SQL NULL. + * + * Note: You must specify the parameter's SQL type. + * + * @param parameterIndex the first parameter is 1, the second is 2, ... + * @param sqlType the SQL type code defined in java.sql.Types + * @throws SQLException if a database access error occurs + */ + @Override + public void setNull(int parameterIndex, int sqlType) throws SQLException { + // we discard the given type here, the backend converts the + // value NULL to whatever it needs for the column + setValue(parameterIndex, "NULL"); + } + + /** + * Sets the designated parameter to SQL NULL. This version of the method + * setNull should be used for user-defined types and REF type parameters. + * Examples of user-defined types include: STRUCT, DISTINCT, JAVA_OBJECT, + * and named array types. + * + * Note: To be portable, applications must give the SQL type code and the + * fully-qualified SQL type name when specifying a NULL user-defined or REF + * parameter. In the case of a user-defined type the name is the type name + * of the parameter itself. For a REF parameter, the name is the type name + * of the referenced type. If a JDBC driver does not need the type code or + * type name information, it may ignore it. Although it is intended for + * user-defined and Ref parameters, this method may be used to set a null + * parameter of any JDBC type. If the parameter does not have a + * user-defined or REF type, the given typeName is ignored. + * + * @param paramIndex the first parameter is 1, the second is 2, ... + * @param sqlType a value from java.sql.Types + * @param typeName the fully-qualified name of an SQL user-defined type; + * ignored if the parameter is not a user-defined type or + * REF + * @throws SQLException if a database access error occurs + */ + @Override + public void setNull(int paramIndex, int sqlType, String typeName) + throws SQLException + { + // MonetDB/SQL's NULL needs no type + setNull(paramIndex, sqlType); + } + + /** + * Sets the value of the designated parameter using the given + * object. The second parameter must be of type Object; therefore, + * the java.lang equivalent objects should be used for built-in + * types. + * + * The JDBC specification specifies a standard mapping from Java + * Object types to SQL types. The given argument will be converted + * to the corresponding SQL type before being sent to the database. + * + * Note that this method may be used to pass datatabase-specific + * abstract data types, by using a driver-specific Java type. If the + * object is of a class implementing the interface SQLData, the JDBC + * driver should call the method SQLData.writeSQL to write it to the + * SQL data stream. If, on the other hand, the object is of a class + * implementing Ref, Blob, Clob, Struct, or Array, the driver should + * pass it to the database as a value of the corresponding SQL type. + * + * This method throws an exception if there is an ambiguity, for + * example, if the object is of a class implementing more than one + * of the interfaces named above. + * + * @param index the first parameter is 1, the second is 2, ... + * @param x the object containing the input parameter value + * @throws SQLException if a database access error occurs or the type of + * the given object is ambiguous + */ + @Override + public void setObject(int index, Object x) throws SQLException { + setObject(index, x, javaType[getParamIdx(index)]); + } + + /** + * Sets the value of the designated parameter with the given object. This + * method is like the method setObject below, except that it assumes a scale + * of zero. + * + * @param parameterIndex the first parameter is 1, the second is 2, ... + * @param x the object containing the input parameter value + * @param targetSqlType the SQL type (as defined in java.sql.Types) to be + * sent to the database + * @throws SQLException if a database access error occurs + */ + @Override + public void setObject(int parameterIndex, Object x, int targetSqlType) + throws SQLException + { + setObject(parameterIndex, x, targetSqlType, 0); + } + + /** + * Sets the value of the designated parameter with the given object. The + * second argument must be an object type; for integral values, the + * java.lang equivalent objects should be used. + * + * The given Java object will be converted to the given targetSqlType + * before being sent to the database. If the object has a custom mapping + * (is of a class implementing the interface SQLData), the JDBC driver + * should call the method SQLData.writeSQL to write it to the SQL data + * stream. If, on the other hand, the object is of a class implementing + * Ref, Blob, Clob, Struct, or Array, the driver should pass it to the + * database as a value of the corresponding SQL type. + * + * Note that this method may be used to pass database-specific abstract + * data types. + * + * To meet the requirements of this interface, the Java object is + * converted in the driver, instead of using a SQL CAST construct. + * + * @param parameterIndex the first parameter is 1, the second is 2, ... + * @param x the object containing the input parameter value + * @param targetSqlType the SQL type (as defined in java.sql.Types) to + * be sent to the database. The scale argument may + * further qualify this type. + * @param scale for java.sql.Types.DECIMAL or java.sql.Types.NUMERIC types, + * this is the number of digits after the decimal + * point. For Java Object types InputStream and Reader, + * this is the length of the data in the stream or + * reader. For all other types, this value will be + * ignored. + * @throws SQLException if a database access error occurs + * @see Types + */ + @Override + public void setObject( + int parameterIndex, + Object x, + int targetSqlType, + int scale) + throws SQLException + { + // this is according to table B-5 + if (x instanceof String) { + switch (targetSqlType) { + case Types.TINYINT: + case Types.SMALLINT: + case Types.INTEGER: + { + int val; + try { + val = Integer.parseInt((String)x); + } catch (NumberFormatException e) { + val = 0; + } + setInt(parameterIndex, val); + } break; + case Types.BIGINT: + { + long val; + try { + val = Long.parseLong((String)x); + } catch (NumberFormatException e) { + val = 0; + } + setLong(parameterIndex, val); + } break; + case Types.REAL: + { + float val; + try { + val = Float.parseFloat((String)x); + } catch (NumberFormatException e) { + val = 0; + } + setFloat(parameterIndex, val); + } break; + case Types.FLOAT: + case Types.DOUBLE: + { + double val; + try { + val = Double.parseDouble((String)x); + } catch (NumberFormatException e) { + val = 0; + } + setDouble(parameterIndex, val); + } break; + case Types.DECIMAL: + case Types.NUMERIC: + { + BigDecimal val; + try { + val = new BigDecimal((String)x); + } catch (NumberFormatException e) { + try { + val = new BigDecimal(0.0); + } catch (NumberFormatException ex) { + throw new SQLException("Internal error: unable to create template BigDecimal: " + ex.getMessage(), "M0M03"); + } + } + val = val.setScale(scale, BigDecimal.ROUND_HALF_UP); + setBigDecimal(parameterIndex, val); + } break; + case Types.BIT: + case Types.BOOLEAN: + setBoolean(parameterIndex, (Boolean.valueOf((String)x)).booleanValue()); + break; + case Types.CHAR: + case Types.VARCHAR: + case Types.LONGVARCHAR: + setString(parameterIndex, (String)x); + break; + case Types.BINARY: + case Types.VARBINARY: + case Types.LONGVARBINARY: + setBytes(parameterIndex, ((String)x).getBytes()); + break; + case Types.DATE: + { + java.sql.Date val; + try { + val = java.sql.Date.valueOf((String)x); + } catch (IllegalArgumentException e) { + val = new java.sql.Date(0L); + } + setDate(parameterIndex, val); + } break; + case Types.TIME: + { + Time val; + try { + val = Time.valueOf((String)x); + } catch (IllegalArgumentException e) { + val = new Time(0L); + } + setTime(parameterIndex, val); + } break; + case Types.TIMESTAMP: + { + Timestamp val; + try { + val = Timestamp.valueOf((String)x); + } catch (IllegalArgumentException e) { + val = new Timestamp(0L); + } + setTimestamp(parameterIndex, val); + } break; + case Types.NCHAR: + case Types.NVARCHAR: + case Types.LONGNVARCHAR: + throw newSQLFeatureNotSupportedException("setObject() with targetType N[VAR]CHAR"); + default: + throw new SQLException("Conversion not allowed", "M1M05"); + } + } else if (x instanceof BigDecimal || + x instanceof Byte || + x instanceof Short || + x instanceof Integer || + x instanceof Long || + x instanceof Float || + x instanceof Double) + { + Number num = (Number)x; + switch (targetSqlType) { + case Types.TINYINT: + setByte(parameterIndex, num.byteValue()); + break; + case Types.SMALLINT: + setShort(parameterIndex, num.shortValue()); + break; + case Types.INTEGER: + setInt(parameterIndex, num.intValue()); + break; + case Types.BIGINT: + if (x instanceof BigDecimal) { + BigDecimal bd = (BigDecimal)x; + setLong(parameterIndex, bd.setScale(scale, BigDecimal.ROUND_HALF_UP).longValue()); + } else { + setLong(parameterIndex, num.longValue()); + } + break; + case Types.REAL: + setFloat(parameterIndex, num.floatValue()); + break; + case Types.FLOAT: + case Types.DOUBLE: + setDouble(parameterIndex, num.doubleValue()); + break; + case Types.DECIMAL: + case Types.NUMERIC: + if (x instanceof BigDecimal) { + setBigDecimal(parameterIndex, (BigDecimal)x); + } else { + setBigDecimal(parameterIndex, + new BigDecimal(num.doubleValue())); + } + break; + case Types.BIT: + case Types.BOOLEAN: + if (num.doubleValue() != 0.0) { + setBoolean(parameterIndex, true); + } else { + setBoolean(parameterIndex, false); + } + break; + case Types.CHAR: + case Types.VARCHAR: + case Types.LONGVARCHAR: + setString(parameterIndex, x.toString()); + break; + default: + throw new SQLException("Conversion not allowed", "M1M05"); + } + } else if (x instanceof Boolean) { + boolean val = ((Boolean)x).booleanValue(); + switch (targetSqlType) { + case Types.TINYINT: + setByte(parameterIndex, (byte)(val ? 1 : 0)); + break; + case Types.SMALLINT: + setShort(parameterIndex, (short)(val ? 1 : 0)); + break; + case Types.INTEGER: + setInt(parameterIndex, (val ? 1 : 0)); // do not cast to (int) as it generates a compiler warning + break; + case Types.BIGINT: + setLong(parameterIndex, (long)(val ? 1 : 0)); + break; + case Types.REAL: + setFloat(parameterIndex, (float)(val ? 1.0 : 0.0)); + break; + case Types.FLOAT: + case Types.DOUBLE: + setDouble(parameterIndex, (val ? 1.0 : 0.0)); // do no cast to (double) as it generates a compiler warning + break; + case Types.DECIMAL: + case Types.NUMERIC: + { + BigDecimal dec; + try { + dec = new BigDecimal(val ? 1.0 : 0.0); + } catch (NumberFormatException e) { + throw new SQLException("Internal error: unable to create template BigDecimal: " + e.getMessage(), "M0M03"); + } + setBigDecimal(parameterIndex, dec); + } break; + case Types.BIT: + case Types.BOOLEAN: + setBoolean(parameterIndex, val); + break; + case Types.CHAR: + case Types.VARCHAR: + case Types.LONGVARCHAR: + setString(parameterIndex, "" + val); + break; + default: + throw new SQLException("Conversion not allowed", "M1M05"); + } + } else if (x instanceof BigInteger) { + BigInteger num = (BigInteger)x; + switch (targetSqlType) { + case Types.BIGINT: + setLong(parameterIndex, num.longValue()); + break; + case Types.CHAR: + case Types.VARCHAR: + case Types.LONGVARCHAR: + setString(parameterIndex, x.toString()); + break; + default: + throw new SQLException("Conversion not allowed", "M1M05"); + } + } else if (x instanceof byte[]) { + switch (targetSqlType) { + case Types.BINARY: + case Types.VARBINARY: + case Types.LONGVARBINARY: + setBytes(parameterIndex, (byte[])x); + break; + default: + throw new SQLException("Conversion not allowed", "M1M05"); + } + } else if (x instanceof java.sql.Date || + x instanceof Timestamp || + x instanceof Time || + x instanceof Calendar || + x instanceof java.util.Date) + { + switch (targetSqlType) { + case Types.CHAR: + case Types.VARCHAR: + case Types.LONGVARCHAR: + setString(parameterIndex, x.toString()); + break; + case Types.DATE: + if (x instanceof Time) { + throw new SQLException("Conversion not allowed", "M1M05"); + } else if (x instanceof java.sql.Date) { + setDate(parameterIndex, (java.sql.Date)x); + } else if (x instanceof Timestamp) { + setDate(parameterIndex, new java.sql.Date(((Timestamp)x).getTime())); + } else if (x instanceof java.util.Date) { + setDate(parameterIndex, new java.sql.Date( + ((java.util.Date)x).getTime())); + } else if (x instanceof Calendar) { + setDate(parameterIndex, new java.sql.Date( + ((Calendar)x).getTimeInMillis())); + } + break; + case Types.TIME: + if (x instanceof Time) { + setTime(parameterIndex, (Time)x); + } else if (x instanceof java.sql.Date) { + throw new SQLException("Conversion not allowed", "M1M05"); + } else if (x instanceof Timestamp) { + setTime(parameterIndex, new Time(((Timestamp)x).getTime())); + } else if (x instanceof java.util.Date) { + setTime(parameterIndex, new java.sql.Time( + ((java.util.Date)x).getTime())); + } else if (x instanceof Calendar) { + setTime(parameterIndex, new java.sql.Time( + ((Calendar)x).getTimeInMillis())); + } + break; + case Types.TIMESTAMP: + if (x instanceof Time) { + throw new SQLException("Conversion not allowed", "M1M05"); + } else if (x instanceof java.sql.Date) { + setTimestamp(parameterIndex, new Timestamp(((java.sql.Date)x).getTime())); + } else if (x instanceof Timestamp) { + setTimestamp(parameterIndex, (Timestamp)x); + } else if (x instanceof java.util.Date) { + setTimestamp(parameterIndex, new java.sql.Timestamp( + ((java.util.Date)x).getTime())); + } else if (x instanceof Calendar) { + setTimestamp(parameterIndex, new java.sql.Timestamp( + ((Calendar)x).getTimeInMillis())); + } + break; + default: + throw new SQLException("Conversion not allowed", "M1M05"); + } + } else if (x instanceof Array) { + setArray(parameterIndex, (Array)x); + } else if (x instanceof Blob) { + setBlob(parameterIndex, (Blob)x); + } else if (x instanceof Clob) { + setClob(parameterIndex, (Clob)x); + } else if (x instanceof Struct) { + // I have no idea how to do this... + throw newSQLFeatureNotSupportedException("setObject() with object of type Struct"); + } else if (x instanceof Ref) { + setRef(parameterIndex, (Ref)x); + } else if (x instanceof java.net.URL) { + setURL(parameterIndex, (java.net.URL)x); + } else if (x instanceof RowId) { + setRowId(parameterIndex, (RowId)x); + } else if (x instanceof NClob) { + throw newSQLFeatureNotSupportedException("setObject() with object of type NClob"); + } else if (x instanceof SQLXML) { + throw newSQLFeatureNotSupportedException("setObject() with object of type SQLXML"); + } else if (x instanceof SQLData) { // not in JDBC4.1??? + SQLData sx = (SQLData)x; + final int paramnr = parameterIndex; + final String sqltype = sx.getSQLTypeName(); + SQLOutput out = new SQLOutput() { + @Override + public void writeString(String x) throws SQLException { + // special situation, this is when a string + // representation is given, but we need to prefix it + // with the actual sqltype the server expects, or we + // will get an error back + setValue( + paramnr, + sqltype + " '" + x.replaceAll("\\\\", "\\\\\\\\").replaceAll("'", "\\\\'") + "'" + ); + } + + @Override + public void writeBoolean(boolean x) throws SQLException { + setBoolean(paramnr, x); + } + + @Override + public void writeByte(byte x) throws SQLException { + setByte(paramnr, x); + } + + @Override + public void writeShort(short x) throws SQLException { + setShort(paramnr, x); + } + + @Override + public void writeInt(int x) throws SQLException { + setInt(paramnr, x); + } + + @Override + public void writeLong(long x) throws SQLException { + setLong(paramnr, x); + } + + @Override + public void writeFloat(float x) throws SQLException { + setFloat(paramnr, x); + } + + @Override + public void writeDouble(double x) throws SQLException { + setDouble(paramnr, x); + } + + @Override + public void writeBigDecimal(BigDecimal x) throws SQLException { + setBigDecimal(paramnr, x); + } + + @Override + public void writeBytes(byte[] x) throws SQLException { + setBytes(paramnr, x); + } + + @Override + public void writeDate(java.sql.Date x) throws SQLException { + setDate(paramnr, x); + } + + @Override + public void writeTime(java.sql.Time x) throws SQLException { + setTime(paramnr, x); + } + + @Override + public void writeTimestamp(Timestamp x) throws SQLException { + setTimestamp(paramnr, x); + } + + @Override + public void writeCharacterStream(Reader x) throws SQLException { + setCharacterStream(paramnr, x); + } + + @Override + public void writeAsciiStream(InputStream x) throws SQLException { + setAsciiStream(paramnr, x); + } + + @Override + public void writeBinaryStream(InputStream x) throws SQLException { + setBinaryStream(paramnr, x); + } + + @Override + public void writeObject(SQLData x) throws SQLException { + setObject(paramnr, x); + } + + @Override + public void writeRef(Ref x) throws SQLException { + setRef(paramnr, x); + } + + @Override + public void writeBlob(Blob x) throws SQLException { + setBlob(paramnr, x); + } + + @Override + public void writeClob(Clob x) throws SQLException { + setClob(paramnr, x); + } + + @Override + public void writeStruct(Struct x) throws SQLException { + setObject(paramnr, x); + } + + @Override + public void writeArray(Array x) throws SQLException { + setArray(paramnr, x); + } + + @Override + public void writeURL(URL x) throws SQLException { + setURL(paramnr, x); + } + + @Override + public void writeNString(String x) throws SQLException { + setNString(paramnr, x); + } + + @Override + public void writeNClob(NClob x) throws SQLException { + setNClob(paramnr, x); + } + + @Override + public void writeRowId(RowId x) throws SQLException { + setRowId(paramnr, x); + } + + @Override + public void writeSQLXML(SQLXML x) throws SQLException { + setSQLXML(paramnr, x); + } + }; + sx.writeSQL(out); + } else { // java Class + throw newSQLFeatureNotSupportedException("setObject() with object of type Class"); + } + } + + /** + * Sets the designated parameter to the given REF(<structured-type>) value. + * The driver converts this to an SQL REF value when it sends it to the + * database. + * + * @param i the first parameter is 1, the second is 2, ... + * @param x an SQL REF value + * @throws SQLException if a database access error occurs + * @throws SQLFeatureNotSupportedException the JDBC driver does + * not support this method + */ + @Override + public void setRef(int i, Ref x) throws SQLException { + throw newSQLFeatureNotSupportedException("setRef"); + } + + /** + * Sets the designated parameter to the given java.sql.RowId object. + * The driver converts this to a SQL ROWID value when it sends it to + * the database. + * + * @param i the first parameter is 1, the second is 2, ... + * @param x the parameter value + * @throws SQLException if a database access error occurs + * @throws SQLFeatureNotSupportedException the JDBC driver does + * not support this method + */ + @Override + public void setRowId(int i, RowId x) throws SQLException { + throw newSQLFeatureNotSupportedException("setRowId"); + } + + /** + * Sets the designated parameter to the given Java short value. The driver + * converts this to an SQL SMALLINT value when it sends it to the database. + * + * @param parameterIndex the first parameter is 1, the second is 2, ... + * @param x the parameter value + * @throws SQLException if a database access error occurs + */ + @Override + public void setShort(int parameterIndex, short x) throws SQLException { + setValue(parameterIndex, "" + x); + } + + /** + * Sets the designated parameter to the given Java String value. The driver + * converts this to an SQL VARCHAR or LONGVARCHAR value (depending on the + * argument's size relative to the driver's limits on VARCHAR values) when + * it sends it to the database. + * + * @param parameterIndex the first parameter is 1, the second is 2, ... + * @param x the parameter value + * @throws SQLException if a database access error occurs + */ + @Override + public void setString(int parameterIndex, String x) throws SQLException { + if (x == null) { + setNull(parameterIndex, -1); + return; + } + + setValue( + parameterIndex, + "'" + x.replaceAll("\\\\", "\\\\\\\\").replaceAll("'", "\\\\'") + "'" + ); + } + + /** + * Sets the designated parameter to the given java.sql.SQLXML + * object. The driver converts this to an SQL XML value when it + * sends it to the database. + * + * @param parameterIndex the first parameter is 1, the second is 2, ... + * @param x a SQLXML object that maps an SQL XML value + * @throws SQLException if a database access error occurs + * @throws SQLFeatureNotSupportedException the JDBC driver does + * not support this method + */ + @Override + public void setSQLXML(int parameterIndex, SQLXML x) throws SQLException { + throw newSQLFeatureNotSupportedException("setSQLXML"); + } + + /** + * Sets the designated parameter to the given java.sql.Time value. + * The driver converts this to an SQL TIME value when it sends it to + * the database. + * + * @param index the first parameter is 1, the second is 2, ... + * @param x the parameter value + * @throws SQLException if a database access error occurs + */ + @Override + public void setTime(int index, Time x) throws SQLException { + setTime(index, x, null); + } + + /** + * Sets the designated parameter to the given java.sql.Time value, + * using the given Calendar object. The driver uses the Calendar + * object to construct an SQL TIME value, which the driver then + * sends to the database. With a Calendar object, the driver can + * calculate the time taking into account a custom timezone. If no + * Calendar object is specified, the driver uses the default + * timezone, which is that of the virtual machine running the + * application. + * + * @param index the first parameter is 1, the second is 2, ... + * @param x the parameter value + * @param cal the Calendar object the driver will use to construct the time + * @throws SQLException if a database access error occurs + */ + @Override + public void setTime(int index, Time x, Calendar cal) + throws SQLException + { + if (x == null) { + setNull(index, -1); + return; + } + + boolean hasTimeZone = monetdbType[getParamIdx(index)].endsWith("tz"); + if (hasTimeZone) { + // timezone shouldn't matter, since the server is timezone + // aware in this case + String RFC822 = mTimeZ.format(x); + setValue(index, "timetz '" + + RFC822.substring(0, 15) + ":" + RFC822.substring(15) + "'"); + } else { + // server is not timezone aware for this field, and no + // calendar given, since we told the server our timezone at + // connection creation, we can just write a plain timestamp + // here + if (cal == null) { + setValue(index, "time '" + x.toString() + "'"); + } else { + mTime.setTimeZone(cal.getTimeZone()); + setValue(index, "time '" + mTime.format(x) + "'"); + } + } + } + + /** + * Sets the designated parameter to the given java.sql.Timestamp + * value. The driver converts this to an SQL TIMESTAMP value when + * it sends it to the database. + * + * @param index the first parameter is 1, the second is 2, ... + * @param x the parameter value + * @throws SQLException if a database access error occurs + */ + @Override + public void setTimestamp(int index, Timestamp x) + throws SQLException + { + setTimestamp(index, x, null); + } + + /** + * Sets the designated parameter to the given java.sql.Timestamp + * value, using the given Calendar object. The driver uses the + * Calendar object to construct an SQL TIMESTAMP value, which the + * driver then sends to the database. With a Calendar object, the + * driver can calculate the timestamp taking into account a custom + * timezone. If no Calendar object is specified, the driver uses the + * default timezone, which is that of the virtual machine running + * the application. + * + * @param index the first parameter is 1, the second is 2, ... + * @param x the parameter value + * @param cal the Calendar object the driver will use to construct the + * timestamp + * @throws SQLException if a database access error occurs + */ + @Override + public void setTimestamp(int index, Timestamp x, Calendar cal) + throws SQLException + { + if (x == null) { + setNull(index, -1); + return; + } + + boolean hasTimeZone = monetdbType[getParamIdx(index)].endsWith("tz"); + if (hasTimeZone) { + // timezone shouldn't matter, since the server is timezone + // aware in this case + String RFC822 = mTimestampZ.format(x); + setValue(index, "timestamptz '" + + RFC822.substring(0, 26) + ":" + RFC822.substring(26) + "'"); + } else { + // server is not timezone aware for this field, and no + // calendar given, since we told the server our timezone at + // connection creation, we can just write a plain timestamp + // here + if (cal == null) { + setValue(index, "timestamp '" + x.toString() + "'"); + } else { + mTimestamp.setTimeZone(cal.getTimeZone()); + setValue(index, "timestamp '" + mTimestamp.format(x) + "'"); + } + } + } + + /** + * Sets the designated parameter to the given input stream, which will have + * the specified number of bytes. A Unicode character has two bytes, with + * the first byte being the high byte, and the second being the low byte. + * When a very large Unicode value is input to a LONGVARCHAR parameter, it + * may be more practical to send it via a java.io.InputStream object. The + * data will be read from the stream as needed until end-of-file is + * reached. The JDBC driver will do any necessary conversion from Unicode + * to the database char format. + * + * Note: This stream object can either be a standard Java stream object or + * your own subclass that implements the standard interface. + * + * @deprecated + * @param parameterIndex the first parameter is 1, the second is 2, ... + * @param x a java.io.InputStream object that contains the Unicode + * parameter value as two-byte Unicode characters + * @param length the number of bytes in the stream + * @throws SQLException if a database access error occurs + */ + @Override + @Deprecated + public void setUnicodeStream(int parameterIndex, InputStream x, int length) + throws SQLException + { + throw newSQLFeatureNotSupportedException("setUnicodeStream"); + } + + /** + * Sets the designated parameter to the given java.net.URL value. The + * driver converts this to an SQL DATALINK value when it sends it to the + * database. + * + * @param parameterIndex the first parameter is 1, the second is 2, ... + * @param x the java.net.URL object to be set + * @throws SQLException if a database access error occurs + */ + @Override + public void setURL(int parameterIndex, URL x) throws SQLException { + throw newSQLFeatureNotSupportedException("setURL"); + } + + /** + * Releases this PreparedStatement object's database and JDBC + * resources immediately instead of waiting for this to happen when + * it is automatically closed. It is generally good practice to + * release resources as soon as you are finished with them to avoid + * tying up database resources. + * + * Calling the method close on a PreparedStatement object that is + * already closed has no effect. + * + * <b>Note:</b> A PreparedStatement object is automatically closed + * when it is garbage collected. When a Statement object is closed, + * its current ResultSet object, if one exists, is also closed. + */ + @Override + public void close() { + try { + if (!closed && id != -1) + connection.sendControlCommand("release " + id); + } catch (SQLException e) { + // probably server closed connection + } + super.close(); + } + + /** + * Call close to release the server-sided handle for this + * PreparedStatement. + */ + @Override + protected void finalize() { + close(); + } + + //== end methods interface PreparedStatement + + /** + * Sets the given index with the supplied value. If the given index is + * out of bounds, and SQLException is thrown. The given value should + * never be null. + * + * @param index the parameter index + * @param val the exact String representation to set + * @throws SQLException if the given index is out of bounds + */ + void setValue(int index, String val) throws SQLException { + values[getParamIdx(index)] = val; + } + + /** + * Transforms the prepare query into a simple SQL query by replacing + * the ?'s with the given column contents. + * Mind that the JDBC specs allow `reuse' of a value for a column over + * multiple executes. + * + * @return the simple SQL string for the prepare query + * @throws SQLException if not all columns are set + */ + private String transform() throws SQLException { + StringBuilder buf = new StringBuilder(8 + 12 * size); + buf.append("exec "); + buf.append(id); + buf.append('('); + // check if all columns are set and do a replace + int col = 0; + for (int i = 0; i < size; i++) { + if (column[i] != null) + continue; + col++; + if (col > 1) + buf.append(','); + if (values[i] == null) throw + new SQLException("Cannot execute, parameter " + col + " is missing.", "M1M05"); + + buf.append(values[i]); + } + buf.append(')'); + + return buf.toString(); + } + + /** + * Small helper method that formats the "Method ... not implemented" message + * and creates a new SQLFeatureNotSupportedException object + * whose SQLState is set to "0A000". + * + * @param name the method name + * @return a new created SQLFeatureNotSupportedException object with SQLState 0A000 + */ + private final static SQLFeatureNotSupportedException newSQLFeatureNotSupportedException(String name) { + return new SQLFeatureNotSupportedException("Method " + name + " not implemented", "0A000"); + } +}
new file mode 100644 --- /dev/null +++ b/src/main/java/nl/cwi/monetdb/jdbc/MonetResultSet.java @@ -0,0 +1,3746 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +package nl.cwi.monetdb.jdbc; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.Reader; +import java.io.StringReader; +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; +import java.math.BigDecimal; +import java.net.MalformedURLException; +import java.net.URL; +import java.sql.Array; +import java.sql.Blob; +import java.sql.Clob; +import java.sql.Connection; +import java.sql.DatabaseMetaData; +import java.sql.NClob; +import java.sql.Ref; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.RowId; +import java.sql.SQLData; +import java.sql.SQLException; +import java.sql.SQLFeatureNotSupportedException; +import java.sql.SQLInput; +import java.sql.SQLWarning; +import java.sql.SQLXML; +import java.sql.Statement; +import java.sql.Time; +import java.sql.Timestamp; +import java.sql.Types; +import java.text.ParsePosition; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.HashMap; +import java.util.Map; +import java.util.TimeZone; + +import nl.cwi.monetdb.mcl.parser.MCLParseException; +import nl.cwi.monetdb.mcl.parser.TupleLineParser; + +/** + * A ResultSet suitable for the MonetDB database. + * + * A table of data representing a database result set, which is usually + * generated by executing a statement that queries the database. + * + * A ResultSet object maintains a cursor pointing to its current row of data. + * Initially the cursor is positioned before the first row. The next method + * moves the cursor to the next row, and because it returns false when there + * are no more rows in the ResultSet object, it can be used in a while loop to + * iterate through the result set. + * + * The current state of this ResultSet is that it supports positioning in the + * result set, absolute and relative. A slight performance difference between + * FORWARD_ONLY or result sets scrollable in both directions can be noticed as + * for FORWARD_ONLY result sets the memory usage will be likely lower for large + * result sets. + * + * @author Fabian Groffen, Martin van Dinther + * @version 0.8 + */ +public class MonetResultSet extends MonetWrapper implements ResultSet { + // the following have default access modifier for the MonetVirtualResultSet subclass + /** The current line of the buffer split in columns */ + final TupleLineParser tlp; + /** The current position of the cursor for this ResultSet object */ + int curRow = 0; + + // a blank final is immutable once assigned in the constructor + /** A Header to retrieve lines from */ + private final MonetConnection.ResultSetResponse header; + /** The names of the columns in this ResultSet */ + private final String[] columns; + /** The MonetDB types of the columns in this ResultSet */ + private final String[] types; + /** The JDBC SQL types of the columns in this ResultSet. The content will be derived from the MonetDB types[] */ + private final int[] JdbcSQLTypes; + /** The number of rows in this ResultSet */ + final int tupleCount; // default for the MonetVirtualResultSet + + /** The parental Statement object */ + private final Statement statement; + + /** The type of this ResultSet (forward or scrollable) */ + private int type = TYPE_FORWARD_ONLY; + /** The concurrency of this ResultSet (currently only read-only) */ + private int concurrency = CONCUR_READ_ONLY; + /** The warnings for this ResultSet object */ + private SQLWarning warnings; + /** whether the last read field (via some getXyz() method) was NULL */ + private boolean lastReadWasNull = true; + /** Just a dummy variable to keep store the fetchsize set. */ + private int fetchSize; + + /** + * Main constructor backed by the given Header. + * + * @param statement the statement which created this ResultSet + * @param header a header containing the query, resultset type, etc. + * @throws SQLException is a protocol error occurs + */ + MonetResultSet( + Statement statement, + MonetConnection.ResultSetResponse header) + throws SQLException + { + if (statement == null) { + throw new IllegalArgumentException("Statement may not be null!"); + } + if (header == null) { + throw new IllegalArgumentException("ResultSetResponse may not be null!"); + } + this.statement = statement; + this.header = header; + this.type = header.getRSType(); + this.concurrency = header.getRSConcur(); + /* if we have a header object, the fetchSize used for this result set + is the header's cacheSize */ + this.fetchSize = header.getCacheSize(); + // well there is only one supported concurrency, so we don't have to + // bother about that + + // throws SQLException on getters of Header, so we find out immediately + // if an error occurred for this query + columns = header.getNames(); + types = header.getTypes(); + tupleCount = header.tuplecount; + + // create result array + tlp = new TupleLineParser(columns.length); + + JdbcSQLTypes = new int[types.length]; + populateJdbcSQLtypesArray(); + } + + /** + * Constructor used by MonetVirtualResultSet. + * DO NOT USE THIS CONSTRUCTOR IF YOU ARE NOT EXTENDING THIS OBJECT! + * + * @param statement the statement which created this ResultSet + * @param columns the column names + * @param types the column types + * @param results the number of rows in the ResultSet + * @throws IOException if communicating with monet failed + * @throws SQLException is a protocol error occurs + */ + MonetResultSet( + Statement statement, + String[] columns, + String[] types, + int results + ) throws IllegalArgumentException + { + if (statement == null) { + throw new IllegalArgumentException("Statement may not be null!"); + } + if (columns == null || types == null) { + throw new IllegalArgumentException("One of the given arguments is null!"); + } + if (columns.length != types.length) { + throw new IllegalArgumentException("Given arguments are not the same size!"); + } + if (results < 0) { + throw new IllegalArgumentException("Negative rowcount not allowed!"); + } + + this.statement = statement; + this.header = null; + this.fetchSize = 0; + + this.columns = columns; + this.types = types; + this.tupleCount = results; + + this.tlp = new TupleLineParser(columns.length); + + JdbcSQLTypes = new int[types.length]; + populateJdbcSQLtypesArray(); + } + + /** + * Internal utility method to fill the JdbcSQLTypes array with derivable values. + * By doing it once (in the constructor) we can avoid doing this in many getXyz() methods again and again + * thereby improving getXyz() method performance. + */ + private void populateJdbcSQLtypesArray() { + for (int i = 0; i < types.length; i++) { + int javaSQLtype = MonetDriver.getJavaType(types[i]); + JdbcSQLTypes[i] = javaSQLtype; + if (javaSQLtype == Types.BLOB) { + try { + if (((MonetConnection)statement.getConnection()).getBlobAsBinary()) + JdbcSQLTypes[i] = Types.BINARY; + } catch (SQLException se) { /* ignore it */ } + } + } + } + + + //== methods of interface ResultSet + + // Chapter 14.2.2 Sun JDBC 3.0 Specification + /** + * Moves the cursor to the given row number in this ResultSet object. + * + * If the row number is positive, the cursor moves to the given row number + * with respect to the beginning of the result set. The first row is row 1, + * the second is row 2, and so on. + * + * If the given row number is negative, the cursor moves to an absolute row + * position with respect to the end of the result set. For example, calling + * the method absolute(-1) positions the cursor on the last row; calling the + * method absolute(-2) moves the cursor to the next-to-last row, and so on. + * + * An attempt to position the cursor beyond the first/last row in the result + * set leaves the cursor before the first row or after the last row. + * Note: calling absolute(1) is the same as calling first(). Calling + * absolute(-1) is the same as calling last(). + * + * @param row the number of the row to which the cursor should move. A + * positive number indicates the row number counting from the + * beginning of the result set; a negative number indicates the row + * number counting from the end of the result set + * @return true if the cursor is on the result set; false otherwise + * @throws SQLException if a database access error occurs, or the result set + * type is TYPE_FORWARD_ONLY + */ + @Override + public boolean absolute(int row) throws SQLException { + if (row != curRow + 1 && type == TYPE_FORWARD_ONLY) throw + new SQLException("(Absolute) positioning not allowed on forward " + + " only result sets!", "M1M05"); + + if (header.isClosed()) + throw new SQLException("ResultSet is closed!", "M1M20"); + + // first calculate what the JDBC row is + if (row < 0) { + // calculate the negatives... + row = tupleCount + row + 1; + } + // now place the row not farther than just before or after the result + if (row < 0) row = 0; // before first + else if (row > tupleCount + 1) row = tupleCount + 1; // after last + + String tmpLine = header.getLine(row - 1); + + // store it + curRow = row; + + if (tmpLine == null) return false; + try { + tlp.parse(tmpLine); + } catch (MCLParseException e) { + throw new SQLException(e.getMessage(), "M0M10"); + } + + return true; + } + + /** + * Moves the cursor to the end of this ResultSet object, just after the last + * row. This method has no effect if the result set contains no rows. + * + * @throws SQLException if a database access error occurs or the result set + * type is TYPE_FORWARD_ONLY + */ + @Override + public void afterLast() throws SQLException { + absolute(tupleCount + 1); + } + + /** + * Moves the cursor to the front of this ResultSet object, just before the + * first row. This method has no effect if the result set contains no rows. + * + * @throws SQLException if a database access error occurs or the result set + * type is TYPE_FORWARD_ONLY + */ + @Override + public void beforeFirst() throws SQLException { + absolute(0); + } + + /** + * Clears all warnings reported for this ResultSet object. After a call to + * this method, the method getWarnings returns null until a new warning is + * reported for this ResultSet object. + */ + @Override + public void clearWarnings() { + warnings = null; + } + + /** + * Releases this ResultSet object's database (and JDBC) resources + * immediately instead of waiting for this to happen when it is + * automatically closed. + */ + @Override + public void close() { + if (header != null && !header.isClosed()) { + header.close(); + } + if (statement instanceof MonetStatement) + ((MonetStatement)statement).closeIfCompletion(); + } + + // Chapter 14.2.3 from Sun JDBC 3.0 specification + /** + * Maps the given ResultSet column name to its ResultSet column index. + * Column names supplied to getter methods are case insensitive. If a select + * list contains the same column more than once, the first instance of the + * column will be returned. + * + * @param columnName the name of the column + * @return the column index of the given column name + * @throws SQLException if the ResultSet object does not contain columnName + */ + @Override + public int findColumn(String columnName) throws SQLException { + if (columnName != null && columns != null) { + for (int i = 0; i < columns.length; i++) { + if (columnName.equals(columns[i])) + return i + 1; + } + /* if an exact match did not succeed try a case insensitive match */ + for (int i = 0; i < columns.length; i++) { + if (columnName.equalsIgnoreCase(columns[i])) + return i + 1; + } + } + throw new SQLException("No such column name: " + columnName, "M1M05"); + } + + /** + * Moves the cursor to the first row in this ResultSet object. + * + * @return true if the cursor is on a valid row; false if there are no rows + * in the result set + * @throws SQLException - if a database access error occurs or the result + * set type is TYPE_FORWARD_ONLY + */ + @Override + public boolean first() throws SQLException { + return absolute(1); + } + + @Override + public Array getArray(int columnIndex) throws SQLException { + throw newSQLFeatureNotSupportedException("getArray"); + } + @Override + public Array getArray(String colName) throws SQLException { + throw newSQLFeatureNotSupportedException("getArray"); + } + + /* Mapi doesn't allow something for streams at the moment, thus all not implemented for now */ + @Override + public InputStream getAsciiStream(int columnIndex) throws SQLException { + throw newSQLFeatureNotSupportedException("getAsciiStream"); + } + @Override + public InputStream getAsciiStream(String columnName) throws SQLException { + throw newSQLFeatureNotSupportedException("getAsciiStream"); + } + + @Override + @Deprecated + public InputStream getUnicodeStream(int columnIndex) throws SQLException { + throw newSQLFeatureNotSupportedException("getUnicodeStream"); + } + @Override + @Deprecated + public InputStream getUnicodeStream(String columnName) throws SQLException { + throw newSQLFeatureNotSupportedException("getUnicodeStream"); + } + + /** + * Retrieves the value of the designated column in the current row + * of this ResultSet object as a stream of uninterpreted bytes. The + * value can then be read in chunks from the stream. This method is + * particularly suitable for retrieving large LONGVARBINARY values. + * <br/><br/> + * Note: All the data in the returned stream must be read prior to + * getting the value of any other column. The next call to a getter + * method implicitly closes the stream. Also, a stream may return 0 + * when the method InputStream.available is called whether there is + * data available or not. + * + * @param columnIndex the first column is 1, the second is 2, ... + * @return a Java input stream that delivers the database column + * value as a stream of uninterpreted bytes; if the value is SQL + * NULL, the value returned is null + * @throws SQLException if the columnIndex is not valid; if a + * database access error occurs or this method is called on a closed + * result set + */ + @Override + public InputStream getBinaryStream(int columnIndex) throws SQLException { + try { + switch (JdbcSQLTypes[columnIndex - 1]) { + case Types.BLOB: + Blob blob = getBlob(columnIndex); + if (blob == null) + return null; + return blob.getBinaryStream(); + case Types.BINARY: + case Types.VARBINARY: + case Types.LONGVARBINARY: + byte[] bte = getBytes(columnIndex); + if (bte == null) + return null; + return new ByteArrayInputStream(bte); + } + throw new SQLException("Cannot operate on " + types[columnIndex - 1] + " type", "M1M05"); + } catch (IndexOutOfBoundsException e) { + throw newSQLInvalidColumnIndexException(columnIndex); + } + } + + /** + * Retrieves the value of the designated column in the current row + * of this ResultSet object as a stream of uninterpreted bytes. The + * value can then be read in chunks from the stream. This method is + * particularly suitable for retrieving large LONGVARBINARY values. + * <br/><br/> + * Note: All the data in the returned stream must be read prior to + * getting the value of any other column. The next call to a getter + * method implicitly closes the stream. Also, a stream may return 0 + * when the method available is called whether there is data + * available or not. + * + * @param columnName the label for the column specified with + * the SQL AS clause. If the SQL AS clause was not specified, then + * the label is the name of the column + * @return a Java input stream that delivers the database column + * value as a stream of uninterpreted bytes; if the value is SQL + * NULL, the result is null + * @throws SQLException if the columnLabel is not valid; if a + * database access error occurs or this method is called on a closed + * result set + */ + @Override + public InputStream getBinaryStream(String columnName) throws SQLException { + return getBinaryStream(findColumn(columnName)); + } + + /** + * Retrieves the value of the designated column in the current row + * of this ResultSet object as a java.io.Reader object. + * + * @param columnIndex the first column is 1, the second is 2, ... + * @return a java.io.Reader object that contains the column value; + * if the value is SQL NULL, the value returned is null in + * the Java programming language. + * @throws SQLException if a database access error occurs + */ + @Override + public Reader getCharacterStream(int columnIndex) throws SQLException { + try { + String val = tlp.values[columnIndex - 1]; + if (val == null) { + lastReadWasNull = true; + return null; + } + lastReadWasNull = false; + return new StringReader(val); + } catch (IndexOutOfBoundsException e) { + throw newSQLInvalidColumnIndexException(columnIndex); + } + } + + /** + * Retrieves the value of the designated column in the current row + * of this ResultSet object as a java.io.Reader object. + * + * @param columnName the name of the column + * @return a java.io.Reader object that contains the column value; + * if the value is SQL NULL, the value returned is null in + * the Java programming language. + * @throws SQLException if a database access error occurs + */ + @Override + public Reader getCharacterStream(String columnName) throws SQLException { + return getCharacterStream(findColumn(columnName)); + } + + /** + * Retrieves the value of the designated column in the current row + * of this ResultSet object as a java.io.Reader object. It is + * intended for use when accessing NCHAR,NVARCHAR and LONGNVARCHAR + * columns. + * + * @param columnIndex the first column is 1, the second is 2, ... + * @return a java.io.Reader object that contains the column value; + * if the value is SQL NULL, the value returned is null in + * the Java programming language. + * @throws SQLException if a database access error occurs + * @throws SQLFeatureNotSupportedException the JDBC driver does + * not support this method + */ + @Override + public Reader getNCharacterStream(int columnIndex) throws SQLException { + throw newSQLFeatureNotSupportedException("getNCharacterStream"); + } + + /** + * Retrieves the value of the designated column in the current row + * of this ResultSet object as a java.io.Reader object. It is + * intended for use when accessing NCHAR,NVARCHAR and LONGNVARCHAR + * columns. + * + * @param columnName the name of the column + * @return a java.io.Reader object that contains the column value; + * if the value is SQL NULL, the value returned is null in + * the Java programming language. + * @throws SQLException if a database access error occurs + * @throws SQLFeatureNotSupportedException the JDBC driver does + * not support this method + */ + @Override + public Reader getNCharacterStream(String columnName) throws SQLException { + throw newSQLFeatureNotSupportedException("getNCharacterStream"); + } + + /** + * Retrieves the value of the designated column in the current row + * of this ResultSet object as a Blob object in the Java programming + * language. + * + * @param i the first column is 1, the second is 2, ... + * @return a Blob object representing the SQL BLOB value in the + * specified column + * @throws SQLException if a database access error occurs + */ + @Override + public Blob getBlob(int columnIndex) throws SQLException { + try { + String val = tlp.values[columnIndex - 1]; + if (val == null) { + lastReadWasNull = true; + return null; + } + lastReadWasNull = false; + return MonetBlob.create(val); + } catch (IndexOutOfBoundsException e) { + throw newSQLInvalidColumnIndexException(columnIndex); + } + } + + /** + * Retrieves the value of the designated column in the current row + * of this ResultSet object as a Blob object in the Java programming + * language. + * + * @param colName the name of the column from which to retrieve + * the value + * @return a Blob object representing the SQL BLOB value in the + * specified column + * @throws SQLException if a database access error occurs + */ + @Override + public Blob getBlob(String colName) throws SQLException { + return getBlob(findColumn(colName)); + } + + /** + * Retrieves the value of the designated column in the current row + * of this ResultSet object as a Clob object in the + * Java programming language. + * + * @param i the first column is 1, the second is 2, ... + * @return a Clob object representing the SQL CLOB value in the + * specified column + * @throws SQLException if a database access error occurs + */ + @Override + public Clob getClob(int columnIndex) throws SQLException { + try { + String val = tlp.values[columnIndex - 1]; + if (val == null) { + lastReadWasNull = true; + return null; + } + lastReadWasNull = false; + return new MonetClob(val); + } catch (IndexOutOfBoundsException e) { + throw newSQLInvalidColumnIndexException(columnIndex); + } + } + + /** + * Retrieves the value of the designated column in the current row + * of this ResultSet object as a Clob object in the + * Java programming language. + * + * @param colName the name of the column from which to retrieve + * the value + * @return a Clob object representing the SQL CLOB value in the + * specified column + * @throws SQLException if a database access error occurs + */ + @Override + public Clob getClob(String colName) throws SQLException { + return getClob(findColumn(colName)); + } + + /** + * Retrieves the value of the designated column in the current row + * of this ResultSet object as a NClob object in the + * Java programming language. + * + * @param i the first column is 1, the second is 2, ... + * @return a NClob object representing the SQL NCLOB value in the + * specified column + * @throws SQLException if a database access error occurs + * @throws SQLFeatureNotSupportedException the JDBC driver does + * not support this method + */ + @Override + public NClob getNClob(int i) throws SQLException { + throw newSQLFeatureNotSupportedException("getNClob"); + } + + /** + * Retrieves the value of the designated column in the current row + * of this ResultSet object as a NClob object in the + * Java programming language. + * + * @param colName the name of the column from which to retrieve + * the value + * @return a NClob object representing the SQL NCLOB value in the + * specified column + * @throws SQLException if a database access error occurs + * @throws SQLFeatureNotSupportedException the JDBC driver does + * not support this method + */ + @Override + public NClob getNClob(String colName) throws SQLException { + throw newSQLFeatureNotSupportedException("getNClob"); + } + + /** + * Retrieves the value of the designated column in the current row of this + * ResultSet object as a java.math.BigDecimal with full precision. + * + * @param columnIndex the first column is 1, the second is 2, ... + * @return the column value (full precision); if the value is SQL NULL, + * the value returned is null in the Java programming language. + * @throws SQLException if a database access error occurs + */ + @Override + public BigDecimal getBigDecimal(int columnIndex) throws SQLException { + try { + String val = tlp.values[columnIndex - 1]; + if (val == null) { + lastReadWasNull = true; + return null; + } + lastReadWasNull = false; + try { + return new BigDecimal(val); + } catch (NumberFormatException e) { + return BigDecimal.ZERO; + } + } catch (IndexOutOfBoundsException e) { + throw newSQLInvalidColumnIndexException(columnIndex); + } + } + + /** + * Retrieves the value of the designated column in the current row of this + * ResultSet object as a java.math.BigDecimal with full precision. + * + * @param columnIndex the first column is 1, the second is 2, ... + * @param scale the number of digits to the right of the decimal point + * @return the column value (full precision); if the value is SQL NULL, + * the value returned is null in the Java programming language. + * @throws SQLException if a database access error occurs + */ + @Override + @Deprecated + public BigDecimal getBigDecimal(int columnIndex, int scale) + throws SQLException + { + try { + String val = tlp.values[columnIndex - 1]; + if (val == null) { + lastReadWasNull = true; + return null; + } + lastReadWasNull = false; + try { + BigDecimal bd = new BigDecimal(val); + bd.setScale(scale); + return bd; + } catch (NumberFormatException e) { + return BigDecimal.ZERO; + } + } catch (IndexOutOfBoundsException e) { + throw newSQLInvalidColumnIndexException(columnIndex); + } + } + + /** + * Retrieves the value of the designated column in the current row of this + * ResultSet object as a java.math.BigDecimal with full precision. + * + * @param columnName the SQL name of the column + * @return the column value (full precision); if the value is SQL NULL, + * the value returned is null in the Java programming language. + * @throws SQLException if a database access error occurs + */ + @Override + public BigDecimal getBigDecimal(String columnName) throws SQLException { + return getBigDecimal(findColumn(columnName)); + } + + /** + * Retrieves the value of the designated column in the current row of this + * ResultSet object as a java.math.BigDecimal with full precision. + * + * @param columnName the SQL name of the column + * @param scale the number of digits to the right of the decimal point + * @return the column value (full precision); if the value is SQL NULL, + * the value returned is null in the Java programming language. + * @throws SQLException if a database access error occurs + */ + @Override + @Deprecated + public BigDecimal getBigDecimal(String columnName, int scale) + throws SQLException + { + return getBigDecimal(findColumn(columnName), scale); + } + + // See Sun JDBC Specification 3.0 Table B-6 + /** + * Retrieves the value of the designated column in the current row of this + * ResultSet object as a boolean in the Java programming language. + * + * @param columnIndex the first column is 1, the second is 2, ... + * @return the column value; if the value is SQL NULL, the value returned + * is false + * @throws SQLException if there is no such column + */ + @Override + public boolean getBoolean(int columnIndex) throws SQLException { + try { + String val = tlp.values[columnIndex - 1]; + if (val == null) { + lastReadWasNull = true; + return false; // if the value is SQL NULL, the value returned is false + } + lastReadWasNull = false; + + // match common cases first + if ("false".equalsIgnoreCase(val) || "0".equals(val)) + return false; + if ("true".equalsIgnoreCase(val) || "1".equals(val)) + return true; + + // match type specific values + switch (JdbcSQLTypes[columnIndex - 1]) { + case Types.BOOLEAN: + case Types.CHAR: + case Types.VARCHAR: + case Types.LONGVARCHAR: // MonetDB doesn't use type LONGVARCHAR, it's here for completeness + case Types.CLOB: + // check if string value equals "true" (case insensitive) or not + return Boolean.parseBoolean(val); + case Types.BIT: // MonetDB doesn't use type BinaryDigit, it's here for completeness + case Types.TINYINT: + case Types.SMALLINT: + case Types.INTEGER: + if (getInt(columnIndex) == 0) { + return false; + } + return true; + case Types.BIGINT: + if (getLong(columnIndex) == 0L) { + return false; + } + return true; + case Types.DOUBLE: + case Types.FLOAT: + case Types.REAL: + if (getDouble(columnIndex) == 0.0) { + return false; + } + return true; + case Types.DECIMAL: + case Types.NUMERIC: + if (getBigDecimal(columnIndex).compareTo(BigDecimal.ZERO) == 0) { + return false; + } + return true; + default: + throw new SQLException("Conversion from " + types[columnIndex - 1] + " to boolean type not supported", "M1M05"); + } + } catch (IndexOutOfBoundsException e) { + throw newSQLInvalidColumnIndexException(columnIndex); + } + } + + /** + * Retrieves the value of the designated column in the current row of this + * ResultSet object as a boolean in the Java programming language. + * + * @param columnName the SQL name of the column + * @return the column value; if the value is SQL NULL, the value returned + * is false + * @throws SQLException if the ResultSet object does not contain columnName + */ + @Override + public boolean getBoolean(String columnName) throws SQLException { + return getBoolean(findColumn(columnName)); + } + + /** + * Retrieves the value of the designated column in the current row of this + * ResultSet object as a byte in the Java programming language. + * + * @param columnIndex the first column is 1, the second is 2, ... + * @return the column value; if the value is SQL NULL, the value returned + * is 0 + * @throws SQLException if a database access error occurs + */ + @Override + public byte getByte(int columnIndex) throws SQLException { + try { + String val = tlp.values[columnIndex - 1]; + if (val == null) { + lastReadWasNull = true; + return (byte) 0; + } + lastReadWasNull = false; + try { + return Byte.parseByte(val); + } catch (NumberFormatException e) { + // ignore parse error, return the default: 0 + return (byte) 0; + } + } catch (IndexOutOfBoundsException e) { + throw newSQLInvalidColumnIndexException(columnIndex); + } + } + + /** + * Retrieves the value of the designated column in the current row of this + * ResultSet object as a byte in the Java programming language. + * + * @param columnName the SQL name of the column + * @return the column value; if the value is SQL NULL, the value returned + * is 0 + * @throws SQLException if a database access error occurs + */ + @Override + public byte getByte(String columnName) throws SQLException { + return getByte(findColumn(columnName)); + } + + /** + * Retrieves the value of the designated column in the current row of this + * ResultSet object as a byte array in the Java programming language. The + * bytes represent the raw values returned by the driver. + * + * @param columnIndex the first column is 1, the second is 2, ... + * @return the column value; if the value is SQL NULL, the value returned + * is null + * @throws SQLException if a database access error occurs + */ + @Override + public byte[] getBytes(int columnIndex) throws SQLException { + try { + String val = tlp.values[columnIndex - 1]; + if (val == null) { + lastReadWasNull = true; + return null; + } + lastReadWasNull = false; + + // According to Table B-6, getBytes() only operates on BINARY types + switch (JdbcSQLTypes[columnIndex - 1]) { + case Types.BLOB: + case Types.BINARY: + case Types.VARBINARY: + case Types.LONGVARBINARY: + // unpack the HEX (BLOB) notation to real bytes + int len = val.length() / 2; + byte[] buf = new byte[len]; + int offset; + for (int j = 0; j < len; j++) { + offset = j * 2; + buf[j] = (byte)Integer.parseInt(val.substring(offset, offset + 2), 16); + } + return buf; + default: + throw new SQLException("Cannot operate on " + types[columnIndex - 1] + " type", "M1M05"); + } + } catch (IndexOutOfBoundsException e) { + throw newSQLInvalidColumnIndexException(columnIndex); + } + } + + /** + * Retrieves the value of the designated column in the current row of this + * ResultSet object as a byte array in the Java programming language. The + * bytes represent the raw values returned by the driver. + * + * NOTE: Since the mapi protocol is ASCII-based, this method only returns + * Java byte representations of Strings, which is nothing more than + * an encoding into a sequence of bytes using the platform's default + * charset. + * + * @param columnName the SQL name of the column + * @return the column value; if the value is SQL NULL, the value returned + * is null + * @throws SQLException if a database access error occurs + */ + @Override + public byte[] getBytes(String columnName) throws SQLException { + return getBytes(findColumn(columnName)); + } + + /** + * Retrieves the concurrency mode of this ResultSet object. The concurrency + * used is determined by the Statement object that created the result set. + * + * NOTE: MonetDB only supports read-only result sets, and will always return + * ResultSet.CONCUR_READ_ONLY + * + * @return the concurrency type, either ResultSet.CONCUR_READ_ONLY or + * ResultSet.CONCUR_UPDATABLE + */ + @Override + public int getConcurrency() { + return concurrency; + } + + /** + * Retrieves the name of the SQL cursor used by this ResultSet object. + * In SQL, a result table is retrieved through a cursor that is named. + * For MonetDB this is the header.id returned in a resultset header. The + * current row of a result set can be updated or deleted using a positioned + * update/delete statement that references the cursor name. To insure that + * the cursor has the proper isolation level to support update, the + * cursor's SELECT statement should be of the form SELECT FOR UPDATE. If + * FOR UPDATE is omitted, the positioned updates may fail. + * + * The JDBC API supports this SQL feature by providing the name of the SQL + * cursor used by a ResultSet object. The current row of a ResultSet object + * is also the current row of this SQL cursor. + * + * Note: If positioned update is not supported, a SQLException is thrown. + * MonetDB currently doesn't support updates, so the SQLException is + * thrown for now. + * + * @return the SQL name for this ResultSet object's cursor + * @throws SQLException if a database access error occurs + */ + @Override + public String getCursorName() throws SQLException { + throw new SQLException("Positioned updates not supported for this " + + "cursor (" + (header != null ? header.id : "") + ")", "0AM21"); + } + + /** + * Retrieves the value of the designated column in the current row of this + * ResultSet object as a double in the Java programming language. + * + * @param columnIndex the first column is 1, the second is 2, ... + * @return the column value; if the value is SQL NULL, the value returned + * is 0 + * @throws SQLException if there is no such column + */ + @Override + public double getDouble(int columnIndex) throws SQLException { + try { + String val = tlp.values[columnIndex - 1]; + if (val == null) { + lastReadWasNull = true; + return 0; + } + lastReadWasNull = false; + try { + return Double.parseDouble(val); + } catch (NumberFormatException e) { + // ignore conversion error, return the default: 0 + return 0; + } + } catch (IndexOutOfBoundsException e) { + throw newSQLInvalidColumnIndexException(columnIndex); + } + } + + /** + * Retrieves the value of the designated column in the current row of this + * ResultSet object as a double in the Java programming language. + * + * @param columnName the SQL name of the column + * @return the column value; if the value is SQL NULL, the value returned + * is 0 + * @throws SQLException if the ResultSet object does not contain columnName + */ + @Override + public double getDouble(String columnName) throws SQLException { + return getDouble(findColumn(columnName)); + } + + /** + * Retrieves the holdability of this ResultSet object. + * + * @return either ResultSet.HOLD_CURSORS_OVER_COMMIT or + * ResultSet.CLOSE_CURSORS_AT_COMMIT + * @throws SQLException if a database access error occurs + */ + @Override + public int getHoldability() throws SQLException { + return getStatement().getConnection().getHoldability(); + } + + /** + * Retrieves the fetch direction for this ResultSet object. + * <b>currently not implemented</b> + * + * @return the current fetch direction for this ResultSet object + */ + @Override + public int getFetchDirection() { + return ResultSet.FETCH_FORWARD; + } + + /** + * Gives a hint as to the direction in which the rows in this ResultSet + * object will be processed. The initial value is determined by the + * Statement object that produced this ResultSet object. + * The fetch direction may be changed at any time. + * <b>currently not implemented</b> + * + * @param direction - an int specifying the suggested fetch direction; + * one of ResultSet.FETCH_FORWARD, ResultSet.FETCH_REVERSE, or ResultSet.FETCH_UNKNOWN + */ + @Override + public void setFetchDirection(int direction) throws SQLException { + switch (direction) { + case ResultSet.FETCH_FORWARD: + break; + case ResultSet.FETCH_REVERSE: + case ResultSet.FETCH_UNKNOWN: + throw new SQLException("Not supported direction " + direction, "0A000"); + default: + throw new SQLException("Illegal direction: " + direction, "M1M05"); + } + } + + /** + * Retrieves the fetch size for this ResultSet object. + * + * @return the current fetch size for this ResultSet object + * @throws SQLException if a database access error occurs + */ + @Override + public int getFetchSize() throws SQLException { + return fetchSize; + } + + /** + * Gives the JDBC driver a hint as to the number of rows that should be + * fetched from the database when more rows are needed. In MonetDB, this is + * actually a no-op, because even before a MonetResultSet object is + * created, the fetch size is already determined in the + * MonetConnection.ResultSetResponse passed to its constructor. Since all + * data blocks for this whole result set are already allocated in + * MonetConnection.ResultSetResponse, it is too complicated and error-prone + * to still change the fetchSize here. If one really needs to overwrite + * the default fetchSize, please use MonetStatement.setFetchSize() instead. + * + * @param rows the number of rows to fetch + * @throws SQLException if the condition 0 <= rows is not satisfied + */ + @Override + public void setFetchSize(int rows) throws SQLException { + if (rows >= 0) { + fetchSize = rows; + } else { + throw new SQLException("Illegal fetch size value: " + rows, "M1M05"); + } + } + + /** + * Retrieves the value of the designated column in the current row of this + * ResultSet object as a float in the Java programming language. + * + * @param columnIndex the first column is 1, the second is 2, ... + * @return the column value; if the value is SQL NULL, the value returned + * is 0 + * @throws SQLException if there is no such column + */ + @Override + public float getFloat(int columnIndex) throws SQLException { + try { + String val = tlp.values[columnIndex - 1]; + if (val == null) { + lastReadWasNull = true; + return 0; + } + lastReadWasNull = false; + try { + return Float.parseFloat(val); + } catch (NumberFormatException e) { + // ignore conversion error, return the default: 0 + return 0; + } + } catch (IndexOutOfBoundsException e) { + throw newSQLInvalidColumnIndexException(columnIndex); + } + } + + /** + * Retrieves the value of the designated column in the current row of this + * ResultSet object as a float in the Java programming language. + * + * @param columnName the SQL name of the column + * @return the column value; if the value is SQL NULL, the value returned + * is 0 + * @throws SQLException if the ResultSet object does not contain columnName + */ + @Override + public float getFloat(String columnName) throws SQLException { + return getFloat(findColumn(columnName)); + } + + /** + * Retrieves the value of the designated column in the current row of this + * ResultSet object as an int in the Java programming language. + * + * @param columnIndex the first column is 1, the second is 2, ... + * @return the column value; if the value is SQL NULL, the value returned + * is 0 + * @throws SQLException if there is no such column + */ + @Override + public int getInt(int columnIndex) throws SQLException { + try { + String val = tlp.values[columnIndex - 1]; + if (val == null) { + lastReadWasNull = true; + return 0; + } + lastReadWasNull = false; + try { + return Integer.parseInt(val); + } catch (NumberFormatException e) { + // ignore conversion error, return the default: 0 + return 0; + } + } catch (IndexOutOfBoundsException e) { + throw newSQLInvalidColumnIndexException(columnIndex); + } + } + + /** + * Retrieves the value of the designated column in the current row of this + * ResultSet object as an int in the Java programming language. + * + * @param columnName the SQL name of the column + * @return the column value; if the value is SQL NULL, the value returned + * is 0 + * @throws SQLException if the ResultSet object does not contain columnName + */ + @Override + public int getInt(String columnName) throws SQLException { + return getInt(findColumn(columnName)); + } + + /** + * Retrieves the value of the designated column in the current row of this + * ResultSet object as a long in the Java programming language. + * + * @param columnIndex the first column is 1, the second is 2, ... + * @return the column value; if the value is SQL NULL, the value returned + * is 0 + * @throws SQLException if there is no such column + */ + @Override + public long getLong(int columnIndex) throws SQLException { + try { + String val = tlp.values[columnIndex - 1]; + if (val == null) { + lastReadWasNull = true; + return 0; + } + lastReadWasNull = false; + + // The oid datatype values (as string) have a @0 suffix in the string value. + // To allow succesful parsing and conversion to long, we need to remove it first + if ("oid".equals(types[columnIndex - 1])) { + int len = val.length(); + if (len > 2 && val.endsWith("@0")) + val = val.substring(0, len-2); + } + try { + return Long.parseLong(val); + } catch (NumberFormatException e) { + // ignore conversion error, return the default: 0 + return 0; + } + } catch (IndexOutOfBoundsException e) { + throw newSQLInvalidColumnIndexException(columnIndex); + } + } + + /** + * Retrieves the value of the designated column in the current row of this + * ResultSet object as a long in the Java programming language. + * + * @param columnName the SQL name of the column + * @return the column value; if the value is SQL NULL, the value returned + * is 0 + * @throws SQLException if the ResultSet object does not contain columnName + */ + @Override + public long getLong(String columnName) throws SQLException { + return getLong(findColumn(columnName)); + } + + /* helper for the anonymous class inside getMetaData */ + private abstract class rsmdw extends MonetWrapper implements ResultSetMetaData {} + /** + * Retrieves the number, types and properties of this ResultSet object's + * columns. + * + * @return the description of this ResultSet object's columns + */ + @Override + public ResultSetMetaData getMetaData() { + // return inner class which implements the ResultSetMetaData interface + return new rsmdw() { + // for the more expensive methods (getPrecision(), getScale(), isNullable()), we provide a simple cache + // caches to store precision, scale and isNullable values from getColumns() + private boolean[] _is_fetched = new boolean[columns.length +1]; + private int[] _precision = new int[columns.length +1]; + private int[] _scale = new int[columns.length +1]; + private int[] _isNullable = new int[columns.length +1]; + private boolean[] _isAutoincrement = new boolean[columns.length +1]; + private Connection conn = null; + private DatabaseMetaData dbmd = null; + + /** + * A private method to fetch the precision, scale, isNullable and isAutoincrement value for a fully qualified column. + * As md.getColumns() is an expensive method we call it only once per column + * and cache the precision, scale, isNullable and isAutoincrement values in the above array chaches. + * Also we only call md.getColumns() when we have a non empty schema name and table name and column name. + */ + private void fetchColumnInfo(int column) throws SQLException + { + if (column <= 0 || column > columns.length) + throw newSQLInvalidColumnIndexException(column); + + _is_fetched[column] = true; + _precision[column] = 0; + _scale[column] = 0; + _isNullable[column] = columnNullableUnknown; + _isAutoincrement[column] = false; + + // we can only call dbmd.getColumns() when we have a specific schema name and table name and column name + String schName = getSchemaName(column); + if (schName != null && !"".equals(schName)) { + String tblName = getTableName(column); + if (tblName != null && !"".equals(tblName)) { + String colName = getColumnName(column); + if (colName != null && !"".equals(colName)) { + if (conn == null) { + // first time, get a Connection object and cache it for all next columns + conn = getStatement().getConnection(); + } + if (conn != null && dbmd == null) { + // first time, get a MetaData object and cache it for all next columns + dbmd = conn.getMetaData(); + } + if (dbmd != null) { + // for precision, scale, isNullable and isAutoincrement we query the information from data dictionary + ResultSet colInfo = dbmd.getColumns(null, schName, tblName, colName); + if (colInfo != null) { + // we expect exactly one row in the resultset + if (colInfo.next()) { + _precision[column] = colInfo.getInt(7); // col 7 is "COLUMN_SIZE" + _scale[column] = colInfo.getInt(9); // col 9 is "DECIMAL_DIGITS" + _isNullable[column] = colInfo.getInt(11); // col 11 is "NULLABLE" + String strVal = colInfo.getString(23); // col 23 is "IS_AUTOINCREMENT" + if (strVal != null && "YES".equals(strVal)) + _isAutoincrement[column] = true; + } + colInfo.close(); // close the resultset to release resources + } + } + } + } + } + } + + /** + * Returns the number of columns in this ResultSet object. + * + * @returns the number of columns + */ + @Override + public int getColumnCount() { + return columns.length; + } + + /** + * Indicates whether the designated column is automatically numbered. + * + * @param column the first column is 1, the second is 2, ... + * @return true if so; false otherwise + * @throws SQLException if a database access error occurs + */ + @Override + public boolean isAutoIncrement(int column) throws SQLException { + if (_is_fetched[column] != true) { + fetchColumnInfo(column); + } + return _isAutoincrement[column]; + } + + /** + * Indicates whether a column's case matters. + * + * @param column the first column is 1, the second is 2, ... + * @returns true for all character string columns else false + */ + @Override + public boolean isCaseSensitive(int column) throws SQLException { + switch (getColumnType(column)) { + case Types.CHAR: + case Types.VARCHAR: + case Types.LONGVARCHAR: // MonetDB doesn't use type LONGVARCHAR, it's here for completeness + case Types.CLOB: + return true; + } + + return false; + } + + /** + * Indicates whether the designated column can be used in a + * where clause. + * It is unknown to me what kind ot columns they regard to, + * as I think all columns are useable in a where clause. + * Returning true for all here, for the time being. + * Possible thought; maybe they want to know here if it's a + * real column existing in a table or not... + * + * @param column the first column is 1, the second is 2, ... + * @returns true + */ + @Override + public boolean isSearchable(int column) { + return true; + } + + /** + * Indicates whether the designated column is a cash value. + * From the MonetDB database perspective it is by definition + * unknown whether the value is a currency, because there are + * no currency datatypes such as MONEY. With this knowledge + * we can always return false here. + * + * @param column the first column is 1, the second is 2, ... + * @returns false + */ + @Override + public boolean isCurrency(int column) { + return false; + } + + /** + * Indicates whether values in the designated column are signed + * numbers. + * Within MonetDB all numeric types (except oid and ptr) are signed. + * + * @param column the first column is 1, the second is 2, ... + * @return true if so; false otherwise + */ + @Override + public boolean isSigned(int column) throws SQLException { + String monettype = getColumnTypeName(column); + if (monettype != null) { + if ("oid".equals(monettype) + || "ptr".equals(monettype)) + return false; + } + // we can hardcode this, based on the colum type + switch (getColumnType(column)) { + case Types.NUMERIC: + case Types.DECIMAL: + case Types.TINYINT: + case Types.SMALLINT: + case Types.INTEGER: + case Types.BIGINT: + case Types.REAL: + case Types.FLOAT: + case Types.DOUBLE: + return true; + case Types.BIT: // we don't use type BIT, it's here for completeness + case Types.BOOLEAN: + case Types.DATE: + case Types.TIME: + case Types.TIMESTAMP: + default: + return false; + } + } + + /** + * Indicates the designated column's normal maximum width in + * characters. + * + * @param column the first column is 1, the second is 2, ... + * @return the normal maximum number of characters allowed as the + * width of the designated column + * @throws SQLException if there is no such column + */ + @Override + public int getColumnDisplaySize(int column) throws SQLException { + int ret = 1; + + if (header == null) + return ret; + + try { + ret = header.getColumnLengths()[column - 1]; + } catch (IndexOutOfBoundsException e) { + throw newSQLInvalidColumnIndexException(column); + } + + return ret; + } + + /** + * Get the designated column's schema name. + * + * @param column the first column is 1, the second is 2, ... + * @return schema name or "" if not applicable + * @throws SQLException if a database access error occurs + */ + @Override + public String getSchemaName(int column) throws SQLException { + String schema = ""; + + if (header == null) + return schema; + + // figure the name out + try { + schema = header.getTableNames()[column - 1]; + if (schema != null) { + int dot = schema.indexOf("."); + return (dot >= 0) ? schema.substring(0, dot) : ""; + } + } catch (IndexOutOfBoundsException e) { + throw newSQLInvalidColumnIndexException(column); + } + + return ""; + } + + /** + * Gets the designated column's table name. + * + * @param column the first column is 1, the second is 2, ... + * @return table name or "" if not applicable + */ + @Override + public String getTableName(int column) throws SQLException { + String table = ""; + + if (header == null) + return table; + + // figure the name out + try { + table = header.getTableNames()[column - 1]; + if (table != null) { + int dot = table.indexOf("."); + return (dot >= 0) ? table.substring(dot + 1) : table; + } + } catch (IndexOutOfBoundsException e) { + throw newSQLInvalidColumnIndexException(column); + } + + return ""; + } + + /** + * Get the designated column's number of decimal digits. + * This method is currently very expensive as it needs to + * retrieve the information from the database using an SQL + * query. + * + * @param column the first column is 1, the second is 2, ... + * @return precision + * @throws SQLException if a database access error occurs + */ + @Override + public int getPrecision(int column) throws SQLException { + if (_is_fetched[column] != true) { + fetchColumnInfo(column); + } + if (_precision[column] == 0) { + // apparently no precision could be fetched + // use columnDisplaySize() value for variable length data types + switch (getColumnType(column)) { + case Types.CHAR: + case Types.VARCHAR: + case Types.LONGVARCHAR: // MonetDB doesn't use type LONGVARCHAR, it's here for completeness + case Types.CLOB: + case Types.BLOB: + case Types.NUMERIC: + case Types.DECIMAL: + _precision[column] = getColumnDisplaySize(column); + break; + case Types.TINYINT: + _precision[column] = 3; + break; + case Types.SMALLINT: + _precision[column] = 5; + break; + case Types.INTEGER: + _precision[column] = 10; + break; + case Types.BIGINT: + _precision[column] = 19; + break; + case Types.REAL: + _precision[column] = 7; + break; + case Types.FLOAT: + case Types.DOUBLE: + _precision[column] = 15; + break; + case Types.BIT: // MonetDB doesn't use type BIT, it's here for completeness + _precision[column] = 1; + break; + case Types.BOOLEAN: + _precision[column] = 5; + break; + case Types.DATE: + _precision[column] = 10; + break; + case Types.TIME: + _precision[column] = 8; + break; + case Types.TIMESTAMP: + _precision[column] = 19; + break; + default: + _precision[column] = 30; + break; + } + } + return _precision[column]; + } + + /** + * Gets the designated column's number of digits to right of + * the decimal point. This method is currently very + * expensive as it needs to retrieve the information from + * the database using an SQL query. + * + * @param column the first column is 1, the second is 2, ... + * @return scale + * @throws SQLException if a database access error occurs + */ + @Override + public int getScale(int column) throws SQLException { + if (_is_fetched[column] != true) { + fetchColumnInfo(column); + } + return _scale[column]; + } + + /** + * Indicates the nullability of values in the designated + * column. This method is currently very expensive as it + * needs to retrieve the information from the database using + * an SQL query. + * + * @param column the first column is 1, the second is 2, ... + * @return the nullability status of the given column; one of columnNoNulls, columnNullable or columnNullableUnknown + * @throws SQLException if a database access error occurs + */ + @Override + public int isNullable(int column) throws SQLException { + if (_is_fetched[column] != true) { + fetchColumnInfo(column); + } + return _isNullable[column]; + } + + /** + * Gets the designated column's table's catalog name. + * MonetDB does not support the catalog naming concept as in: catalog.schema.table naming scheme + * + * @param column the first column is 1, the second is 2, ... + * @return the name of the catalog for the table in which the given + * column appears or "" if not applicable + */ + @Override + public String getCatalogName(int column) throws SQLException { + return null; // MonetDB does NOT support catalogs + + } + + /** + * Indicates whether the designated column is definitely not + * writable. MonetDB does not support cursor updates, so + * nothing is writable. + * + * @param column the first column is 1, the second is 2, ... + * @return true if so; false otherwise + */ + @Override + public boolean isReadOnly(int column) { + return true; + } + + /** + * Indicates whether it is possible for a write on the + * designated column to succeed. + * + * @param column the first column is 1, the second is 2, ... + * @return true if so; false otherwise + */ + @Override + public boolean isWritable(int column) { + return false; + } + + /** + * Indicates whether a write on the designated column will + * definitely succeed. + * + * @param column the first column is 1, the second is 2, ... + * @return true if so; false otherwise + */ + @Override + public boolean isDefinitelyWritable(int column) { + return false; + } + + /** + * Returns the fully-qualified name of the Java class whose + * instances are manufactured if the method + * ResultSet.getObject is called to retrieve a value from + * the column. ResultSet.getObject may return a subclass of + * the class returned by this method. + * + * @param column the first column is 1, the second is 2, ... + * @return the fully-qualified name of the class in the Java + * programming language that would be used by the method + * ResultSet.getObject to retrieve the value in the + * specified column. This is the class name used for custom + * mapping. + * @throws SQLException if there is no such column + */ + @Override + public String getColumnClassName(int column) throws SQLException { + if (conn == null) { + // first time, get a Connection object and cache it for all next columns + conn = getStatement().getConnection(); + } + try { + Class<?> type = null; + if (conn != null) { + Map<String,Class<?>> map = conn.getTypeMap(); + if (map != null && map.containsKey(types[column - 1])) { + type = (Class)map.get(types[column - 1]); + } + } + if (type == null) { + // fallback to the standard SQL type Class mappings + type = getClassForType(JdbcSQLTypes[column - 1]); + } + if (type != null) { + return type.getName(); + } + throw new SQLException("column type mapping null: " + types[column - 1], "M0M03"); + } catch (IndexOutOfBoundsException e) { + throw newSQLInvalidColumnIndexException(column); + } + } + + /** + * Gets the designated column's suggested title for use in + * printouts and displays. This is currently equal to + * getColumnName(). + * + * @param column the first column is 1, the second is 2, ... + * @return the suggested column title + * @throws SQLException if there is no such column + */ + @Override + public String getColumnLabel(int column) throws SQLException { + return getColumnName(column); + } + + /** + * Gets the designated column's name + * + * @param column the first column is 1, the second is 2, ... + * @return the column name + * @throws SQLException if there is no such column + */ + @Override + public String getColumnName(int column) throws SQLException { + try { + return columns[column - 1]; + } catch (IndexOutOfBoundsException e) { + throw newSQLInvalidColumnIndexException(column); + } + } + + /** + * Retrieves the designated column's SQL type. + * + * @param column the first column is 1, the second is 2, ... + * @return SQL type from java.sql.Types + * @throws SQLException if there is no such column + */ + @Override + public int getColumnType(int column) throws SQLException { + try { + return JdbcSQLTypes[column - 1]; + } catch (IndexOutOfBoundsException e) { + throw newSQLInvalidColumnIndexException(column); + } + } + + /** + * Retrieves the designated column's database-specific type name. + * + * @param column the first column is 1, the second is 2, ... + * @return type name used by the database. If the column type is a + * user-defined type, then a fully-qualified type name is + * returned. + * @throws SQLException if there is no such column + */ + @Override + public String getColumnTypeName(int column) throws SQLException { + try { + return types[column - 1]; + } catch (IndexOutOfBoundsException e) { + throw newSQLInvalidColumnIndexException(column); + } + } + + }; // end of new rsmdw() + } // end of getMetaData() + + /** + * Gets the value of the designated column in the current row of this + * ResultSet object as an Object in the Java programming language. + * + * This method will return the value of the given column as a Java object. + * The type of the Java object will be the default Java object type + * corresponding to the column's SQL type, following the mapping for + * built-in types specified in the JDBC specification. If the value is + * an SQL NULL, the driver returns a Java null. + * + * This method may also be used to read database-specific abstract data + * types. In the JDBC 2.0 API, the behavior of method getObject is extended + * to materialize data of SQL user-defined types. When a column contains a + * structured or distinct value, the behavior of this method is as if it + * were a call to: getObject(columnIndex, this.getStatement().getConnection().getTypeMap()). + * + * @param columnIndex the first column is 1, the second is 2, ... + * @return a java.lang.Object holding the column value or null + * @throws SQLException if a database access error occurs + */ + @Override + public Object getObject(int columnIndex) throws SQLException { + // Many generic JDBC programs use getObject(colnr) to retrieve value objects from a resultset + // For speed the implementation should be as fast as possible, so avoid method calls (by inlining code) where possible + final String MonetDBType; + final int JdbcType; + final String val; + try { + val = tlp.values[columnIndex - 1]; + if (val == null) { + lastReadWasNull = true; + return null; + } + lastReadWasNull = false; + MonetDBType = types[columnIndex - 1]; + JdbcType = JdbcSQLTypes[columnIndex - 1]; + } catch (IndexOutOfBoundsException e) { + throw newSQLInvalidColumnIndexException(columnIndex); + } + + switch(JdbcType) { + case Types.BIT: // MonetDB doesn't use type BInary digiT, it's here for completeness + case Types.TINYINT: + case Types.SMALLINT: + try { + return Short.valueOf(val); + } catch (NumberFormatException e) { + return val; + } + case Types.INTEGER: + try { + return Integer.valueOf(val); + } catch (NumberFormatException e) { + return val; + } + case Types.BIGINT: + try { + return Long.valueOf(val); + } catch (NumberFormatException e) { + return val; + } + case Types.DOUBLE: + case Types.FLOAT: + try { + return Double.valueOf(val); + } catch (NumberFormatException e) { + return val; + } + case Types.REAL: + try { + return Float.valueOf(val); + } catch (NumberFormatException e) { + return val; + } + case Types.DECIMAL: + case Types.NUMERIC: + try { + return new BigDecimal(val); + } catch (NumberFormatException e) { + return val; + } + case Types.BOOLEAN: + return Boolean.valueOf(val); + case Types.VARCHAR: + { + // The MonetDB types: inet, json, url and uuid are all mapped to Types.VARCHAR in MonetDriver.typeMap + // For these MonetDB types (except json, see comments below) we try to create objects of the corresponding class. + // As in most cases when we get here the MonetDBtype will be "varchar". For efficiency we compare + // the MonetDBtype first letter to see if we can skip the three .equals(MonetDBType) method calls. + char firstletter = MonetDBType.charAt(0); + if (firstletter == 'i') { + if ("inet".equals(MonetDBType)) { + try { + nl.cwi.monetdb.jdbc.types.INET inet_obj = new nl.cwi.monetdb.jdbc.types.INET(); + inet_obj.fromString(val); + return inet_obj; + } catch (Exception exc) { + // ignore exception and just return the val String object + return val; + } + } + } + else if (firstletter == 'u') { + if ("url".equals(MonetDBType)) { + try { + nl.cwi.monetdb.jdbc.types.URL url_obj = new nl.cwi.monetdb.jdbc.types.URL(); + url_obj.fromString(val); + return url_obj; + } catch (MalformedURLException exc) { + // ignore exception and just return the val String object + return val; + } catch (Exception exc) { + // ignore exception and just return the val String object + return val; + } + } + if ("uuid".equals(MonetDBType)) { + try { + return java.util.UUID.fromString(val); + } catch (IllegalArgumentException exc) { + // ignore exception and just return the val String object + return val; + } + } + } +// else if (firstletter == 'j') { +// if ("json".equals(MonetDBType)) { + // There is no support for JSON in standard java class libraries. + // Possibly we could use org.json.simple.JSONObject or other/faster libs + // javax.json.Json is not released yet (see https://json-processing-spec.java.net/) + // see also https://github.com/fabienrenaud/java-json-benchmark + // Note that it would make our JDBC driver dependent of an external jar + // and we don't want that so simply return it as String object +// return val; +// } +// } + return val; + } + case Types.CHAR: + case Types.LONGVARCHAR: // MonetDB doesn't use type LONGVARCHAR, it's here for completeness + return val; + case Types.CLOB: + return new MonetClob(val); + case Types.BLOB: + return MonetBlob.create(val); + case Types.DATE: + return getDate(columnIndex); + case Types.TIME: + return getTime(columnIndex); + case Types.TIMESTAMP: + return getTimestamp(columnIndex); + case Types.BINARY: + case Types.VARBINARY: + case Types.LONGVARBINARY: // MonetDB doesn't use type LONGVARBINARY, it's here for completeness + return getBytes(columnIndex); + case Types.OTHER: + default: + // When we get here the column type is a non-standard JDBC SQL type, possibly a User Defined Type. + // Just call getObject(int, Map) for those rare cases. + return getObject(columnIndex, this.getStatement().getConnection().getTypeMap()); + } + } + + private boolean classImplementsSQLData(Class<?> cl) { + Class<?>[] cls = cl.getInterfaces(); + for (int i = 0; i < cls.length; i++) { + if (cls[i] == SQLData.class) + return true; + } + return false; + } + + /** + * Gets the value of the designated column in the current row of this + * ResultSet object as an Object in the Java programming language. + * + * This method will return the value of the given column as a Java object. + * The type of the Java object will be the default Java object type corresponding + * to the column's SQL type, following the mapping for built-in types specified + * in the JDBC specification. + * If the value is an SQL NULL, the driver returns a Java null. + * + * This method may also be used to read database-specific abstract data types. + * In the JDBC 2.0 API, the behavior of method getObject is extended to + * materialize data of SQL user-defined types. + * + * If Connection.getTypeMap does not throw a SQLFeatureNotSupportedException, then + * when a column contains a structured or distinct value, the behavior of this + * method is as if it were a call to: getObject(columnIndex, + * this.getStatement().getConnection().getTypeMap()). + * If Connection.getTypeMap does throw a SQLFeatureNotSupportedException, then + * structured values are not supported, and distinct values are mapped to the + * default Java class as determined by the underlying SQL type of the DISTINCT type. + * + * @param i the first column is 1, the second is 2, ... + * @param map a java.util.Map object that contains the mapping from SQL + * type names to classes in the Java programming language + * @return an Object in the Java programming language representing the SQL + * value + * @throws SQLException if a database access error occurs + */ + @Override + @SuppressWarnings("unchecked") + public Object getObject(int columnIndex, Map<String,Class<?>> map) + throws SQLException + { + final String val; + final String MonetDBtype; + try { + val = tlp.values[columnIndex - 1]; + if (val == null) { + lastReadWasNull = true; + return null; + } + lastReadWasNull = false; + MonetDBtype = types[columnIndex - 1]; + } catch (IndexOutOfBoundsException e) { + throw newSQLInvalidColumnIndexException(columnIndex); + } + + Class<?> type = null; + if (map != null && map.containsKey(MonetDBtype)) { + type = map.get(MonetDBtype); + } + if (type == null) { + // fallback to the standard Class mappings + type = getClassForType(JdbcSQLTypes[columnIndex - 1]); + } + + if (type == null || type == String.class) { + return val; + } else if (type == BigDecimal.class) { + return getBigDecimal(columnIndex); + } else if (type == Boolean.class) { + return Boolean.valueOf(getBoolean(columnIndex)); + } else if (type == Short.class) { + return Short.valueOf(getShort(columnIndex)); + } else if (type == Integer.class) { + return Integer.valueOf(getInt(columnIndex)); + } else if (type == Long.class) { + return Long.valueOf(getLong(columnIndex)); + } else if (type == Float.class) { + return Float.valueOf(getFloat(columnIndex)); + } else if (type == Double.class) { + return Double.valueOf(getDouble(columnIndex)); + } else if (type == byte[].class) { + return getBytes(columnIndex); + } else if (type == java.sql.Date.class) { + return getDate(columnIndex); + } else if (type == Time.class) { + return getTime(columnIndex); + } else if (type == Timestamp.class) { + return getTimestamp(columnIndex); + } else if (type == Clob.class) { + return getClob(columnIndex); + } else if (type == Blob.class) { + return getBlob(columnIndex); + } else if (classImplementsSQLData(type)) { + SQLData x; + try { + Constructor<? extends SQLData> ctor = + ((Class)type).getConstructor(); + x = ctor.newInstance(); + } catch (NoSuchMethodException nsme) { + throw new SQLException(nsme.getMessage(), "M0M27"); + } catch (InstantiationException ie) { + throw new SQLException(ie.getMessage(), "M0M27"); + } catch (IllegalAccessException iae) { + throw new SQLException(iae.getMessage(), "M0M27"); + } catch (InvocationTargetException ite) { + throw new SQLException(ite.getMessage(), "M0M27"); + } catch (SecurityException se) { + throw new SQLException(se.getMessage(), "M0M27"); + } + final int colnum = columnIndex; + final boolean valwasnull = wasNull(); + SQLInput input = new SQLInput() { + @Override + public String readString() throws SQLException { + return getString(colnum); + } + + @Override + public boolean readBoolean() throws SQLException { + return getBoolean(colnum); + } + + @Override + public byte readByte() throws SQLException { + return getByte(colnum); + } + + @Override + public short readShort() throws SQLException { + return getShort(colnum); + } + + @Override + public int readInt() throws SQLException { + return getInt(colnum); + } + + @Override + public long readLong() throws SQLException { + return getLong(colnum); + } + + @Override + public float readFloat() throws SQLException { + return getFloat(colnum); + } + + @Override + public double readDouble() throws SQLException { + return getDouble(colnum); + } + + @Override + public BigDecimal readBigDecimal() throws SQLException { + return getBigDecimal(colnum); + } + + @Override + public byte[] readBytes() throws SQLException { + return getBytes(colnum); + } + + @Override + public java.sql.Date readDate() throws SQLException { + return getDate(colnum); + } + + @Override + public java.sql.Time readTime() throws SQLException { + return getTime(colnum); + } + + @Override + public Timestamp readTimestamp() throws SQLException { + return getTimestamp(colnum); + } + + @Override + public Reader readCharacterStream() throws SQLException { + return getCharacterStream(colnum); + } + + @Override + public InputStream readAsciiStream() throws SQLException { + return getAsciiStream(colnum); + } + + @Override + public InputStream readBinaryStream() throws SQLException { + return getBinaryStream(colnum); + } + + @Override + public Object readObject() throws SQLException { + return getObject(colnum); + } + + @Override + public Ref readRef() throws SQLException { + return getRef(colnum); + } + + @Override + public Blob readBlob() throws SQLException { + return getBlob(colnum); + } + + @Override + public Clob readClob() throws SQLException { + return getClob(colnum); + } + + @Override + public Array readArray() throws SQLException { + return getArray(colnum); + } + + @Override + public boolean wasNull() throws SQLException { + return valwasnull; + } + + @Override + public URL readURL() throws SQLException { + return getURL(colnum); + } + + @Override + public NClob readNClob() throws SQLException { + return getNClob(colnum); + } + + @Override + public String readNString() throws SQLException { + return getNString(colnum); + } + + @Override + public SQLXML readSQLXML() throws SQLException { + return getSQLXML(colnum); + } + + @Override + public RowId readRowId() throws SQLException { + return getRowId(colnum); + } + }; + x.readSQL(input, MonetDBtype); + return x; + } else { + return val; + } + } + + /** + * Retrieves the value of the designated column in the current row + * of this ResultSet object and will convert from the SQL type of + * the column to the requested Java data type, if the conversion is + * supported. If the conversion is not supported or null is + * specified for the type, a SQLException is thrown. + * + * At a minimum, an implementation must support the conversions defined + * in Appendix B, Table B-3 and conversion of appropriate user defined + * SQL types to a Java type which implements SQLData, or Struct. + * Additional conversions may be supported and are vendor defined. + * + * @param i the first column is 1, the second is 2, ... + * @param type Class representing the Java data type to convert the + * designated column to + * @return an instance of type holding the column value + * @throws SQLException if conversion is not supported, type is + * null or another error occurs. The getCause() method of + * the exception may provide a more detailed exception, for + * example, if a conversion error occurs + */ + @Override + public <T> T getObject(int i, Class<T> type) throws SQLException { + if (type == null) + throw new SQLException("type is null", "M1M05"); + + throw new SQLFeatureNotSupportedException("cannot return a Java generic type based on static types from getXXX methods", "0AM34"); + } + + /** + * Retrieves the value of the designated column in the current row + * of this ResultSet object and will convert from the SQL type of + * the column to the requested Java data type, if the conversion is + * supported. If the conversion is not supported or null is + * specified for the type, a SQLException is thrown. + * + * @param columnLabel the label for the column specified with the + * SQL AS clause. If the SQL AS clause was not specified, + * then the label is the name of the column + * @param type Class representing the Java data type to convert the + * designated column to + * @return an instance of type holding the column value + * @throws SQLException if conversion is not supported, type is + * null or another error occurs. The getCause() method of + * the exception may provide a more detailed exception, for + * example, if a conversion error occurs + */ + @Override + public <T> T getObject(String columnLabel, Class<T> type) + throws SQLException + { + return getObject(findColumn(columnLabel), type); + } + + /** + * Helper method to support the getObject and + * ResultsetMetaData.getColumnClassName JDBC methods. + * + * @param type a value from java.sql.Types + * @return a Class object from which an instance would be returned + */ + static Class<?> getClassForType(int type) { + /** + * This switch returns the types as objects according to table B-3 from + * Oracle's JDBC specification 4.1 + */ + // keep this switch regarding the returned classes aligned with getObject(int, Map) ! + switch(type) { + case Types.CHAR: + case Types.VARCHAR: + case Types.LONGVARCHAR: + return String.class; + case Types.NUMERIC: + case Types.DECIMAL: + return BigDecimal.class; + case Types.BOOLEAN: + return Boolean.class; + case Types.BIT: // MonetDB doesn't support type BIT, it's here for completeness + case Types.TINYINT: + case Types.SMALLINT: + return Short.class; + case Types.INTEGER: + return Integer.class; + case Types.BIGINT: + return Long.class; + case Types.REAL: + return Float.class; + case Types.FLOAT: + case Types.DOUBLE: + return Double.class; + case Types.BINARY: // MonetDB currently does not support these + case Types.VARBINARY: // see treat_blob_as_binary property + case Types.LONGVARBINARY: + return byte[].class; + case Types.DATE: + return java.sql.Date.class; + case Types.TIME: + return Time.class; + case Types.TIMESTAMP: + return Timestamp.class; + case Types.CLOB: + return Clob.class; + case Types.BLOB: + return Blob.class; + + // all the rest are currently not implemented and used + default: + return String.class; + } + } + + /** + * Gets the value of the designated column in the current row of this + * ResultSet object as an Object in the Java programming language. + * + * This method will return the value of the given column as a Java object. + * The type of the Java object will be the default Java object type + * corresponding to the column's SQL type, following the mapping for + * built-in types specified in the JDBC specification. If the value is an + * SQL NULL, the driver returns a Java null. + * + * This method may also be used to read database-specific abstract data + * types. + * + * @param columnName the SQL name of the column + * @return a java.lang.Object holding the column value + * @throws SQLException if a database access error occurs + */ + @Override + public Object getObject(String columnName) throws SQLException { + return getObject(findColumn(columnName)); + } + + /** + * Retrieves the value of the designated column in the current row of this + * ResultSet object as an Object in the Java programming language. If the + * value is an SQL NULL, the driver returns a Java null. This method uses + * the specified Map object for custom mapping if appropriate. + * + * @param colName the name of the column from which to retrieve the value + * @param map a java.util.Map object that contains the mapping from SQL + * type names to classes in the Java programming language + * @return an Object representing the SQL value in the specified column + * @throws SQLException if a database access error occurs + */ + @Override + public Object getObject(String colName, Map<String,Class<?>> map) throws SQLException { + return getObject(findColumn(colName), map); + } + + @Override + public Ref getRef(int i) throws SQLException { + throw newSQLFeatureNotSupportedException("getRef"); + } + + @Override + public Ref getRef(String colName) throws SQLException { + throw newSQLFeatureNotSupportedException("getRef"); + } + + /** + * Retrieves the current row number. The first row is number 1, the second + * number 2, and so on. + * + * @return the current row number; 0 if there is no current row + */ + @Override + public int getRow() { + return curRow; + } + + /** + * Retrieves the value of the designated column in the current row + * of this ResultSet object as a java.sql.RowId object in the Java + * programming language. + * + * @param columnIndex the first column is 1, the second is 2, ... + * @return the column value; if the value is SQL NULL, the value returned + * is null + * @throws SQLException if there is no such column + * @throws SQLFeatureNotSupportedException the JDBC driver does + * not support this method + */ + @Override + public RowId getRowId(int columnIndex) throws SQLException { + throw newSQLFeatureNotSupportedException("getRowId"); + } + + /** + * Retrieves the value of the designated column in the current row + * of this ResultSet object as a java.sql.RowId object in the Java + * programming language. + * + * @param columnName the SQL name of the column + * @return the column value; if the value is SQL NULL, the value returned + * is null + * @throws SQLException if the ResultSet object does not contain columnName + * @throws SQLFeatureNotSupportedException the JDBC driver does + * not support this method + */ + @Override + public RowId getRowId(String columnName) throws SQLException { + throw newSQLFeatureNotSupportedException("getRowId"); + } + + /** + * Retrieves the value of the designated column in the current row of this + * ResultSet object as a short in the Java programming language. + * + * @param columnIndex the first column is 1, the second is 2, ... + * @return the column value; if the value is SQL NULL, the value returned + * is 0 + * @throws SQLException if there is no such column + */ + @Override + public short getShort(int columnIndex) throws SQLException { + try { + String val = tlp.values[columnIndex - 1]; + if (val == null) { + lastReadWasNull = true; + return 0; + } + lastReadWasNull = false; + try { + return Short.parseShort(val); + } catch (NumberFormatException e) { + // ignore conversion error, return the default: 0 + return 0; + } + } catch (IndexOutOfBoundsException e) { + throw newSQLInvalidColumnIndexException(columnIndex); + } + } + + /** + * Retrieves the value of the designated column in the current row of this + * ResultSet object as a short in the Java programming language. + * + * @param columnName the SQL name of the column + * @return the column value; if the value is SQL NULL, the value returned + * is 0 + * @throws SQLException if the ResultSet object does not contain columnName + */ + @Override + public short getShort(String columnName) throws SQLException { + return getShort(findColumn(columnName)); + } + + /** + * Retrieves the Statement object that produced this ResultSet object. If + * the result set was generated some other way, such as by a + * DatabaseMetaData method, this method returns null. + * + * @return the Statement object that produced this ResultSet object or null + * if the result set was produced some other way + */ + @Override + public Statement getStatement() { + return statement; + } + + /** + * Retrieves the value of the designated column in the current row of this + * ResultSet object as a String in the Java programming language. + * + * @param columnIndex the first column is 1, the second is 2, ... + * @return the column value; if the value is SQL NULL, the value returned + * is null + * @throws SQLException if there is no such column + */ + @Override + public String getString(int columnIndex) throws SQLException { + try { + String val = tlp.values[columnIndex - 1]; + if (val == null) { + lastReadWasNull = true; + return null; + } + lastReadWasNull = false; + return val; + } catch (IndexOutOfBoundsException e) { + throw newSQLInvalidColumnIndexException(columnIndex); + } + } + + /** + * Retrieves the value of the designated column in the current row of this + * ResultSet object as a String in the Java programming language. + * + * @param columnName the SQL name of the column + * @return the column value; if the value is SQL NULL, the value returned + * is null + * @throws SQLException if the ResultSet object does not contain columnName + */ + @Override + public String getString(String columnName) throws SQLException { + return getString(findColumn(columnName)); + } + + /** + * Retrieves the value of the designated column in the current row + * of this ResultSet object as a String in the Java programming + * language. It is intended for use when accessing NCHAR,NVARCHAR + * and LONGNVARCHAR columns. + * + * @param columnIndex the first column is 1, the second is 2, ... + * @return the column value; if the value is SQL NULL, the value returned + * is null + * @throws SQLException if there is no such column + * @throws SQLFeatureNotSupportedException the JDBC driver does + * not support this method + */ + @Override + public String getNString(int columnIndex) throws SQLException { + return getString(columnIndex); + } + + /** + * Retrieves the value of the designated column in the current row + * of this ResultSet object as a String in the Java programming + * language. It is intended for use when accessing NCHAR,NVARCHAR + * and LONGNVARCHAR columns. + * + * @param columnName the SQL name of the column + * @return the column value; if the value is SQL NULL, the value returned + * is null + * @throws SQLException if the ResultSet object does not contain columnName + * @throws SQLFeatureNotSupportedException the JDBC driver does + * not support this method + */ + @Override + public String getNString(String columnName) throws SQLException { + return getNString(findColumn(columnName)); + } + + /** + * Retrieves the value of the designated column in the current row + * of this ResultSet as a java.sql.SQLXML object in the Java + * programming language. + * + * @param i the first column is 1, the second is 2, ... + * @return a SQLXML object that maps an SQL XML value + * @throws SQLException if a database access error occurs + * @throws SQLFeatureNotSupportedException the JDBC driver does + * not support this method + */ + @Override + public SQLXML getSQLXML(int i) throws SQLException { + throw newSQLFeatureNotSupportedException("getSQLXML"); + } + + /** + * Retrieves the value of the designated column in the current row + * of this ResultSet as a java.sql.SQLXML object in the Java + * programming language. + * + * @param colName the label for the column specified with the SQL AS + * clause. If the SQL AS clause was not specified, then the + * label is the name of the column + * @return a SQLXML object that maps an SQL XML value + * @throws SQLException if a database access error occurs + * @throws SQLFeatureNotSupportedException the JDBC driver does + * not support this method + */ + @Override + public SQLXML getSQLXML(String colName) throws SQLException { + throw newSQLFeatureNotSupportedException("getSQLXML"); + } + + // This behaviour is according table B-6 of Sun JDBC Specification 3.0 + private SimpleDateFormat ts = + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + private SimpleDateFormat t = + new SimpleDateFormat("HH:mm:ss"); + private SimpleDateFormat d = + new SimpleDateFormat("yyyy-MM-dd"); + /** + * Helper method which parses the date/time value for columns of type + * TIME, DATE and TIMESTAMP. For the types CHAR, VARCHAR and + * LONGVARCHAR an attempt is made to parse the date according to the + * given type. The given Calender object is filled with the parsed + * data. Optional fractional seconds (nanos) are returned by this + * method. If the underlying type of the column is none of the + * mentioned six, January 1st 1970 0:00:00 GMT is returned.<br /> + * The dates are parsed with the given Calendar. + * + * @param cal the Calendar to use/fill when parsing the date/time + * @param col the column to parse + * @param type the corresponding java.sql.Types type of the calling + * function + * @return the fractional seconds (nanos) or -1 if the value is NULL + * @throws SQLException if a database error occurs + */ + private int getJavaDate(Calendar cal, int columnIndex, int type) + throws SQLException + { + if (cal == null) throw + new IllegalArgumentException("No Calendar object given!"); + + final String monetDate; + final String MonetDBType; + int JdbcType; + try { + monetDate = tlp.values[columnIndex - 1]; + if (monetDate == null) { + lastReadWasNull = true; + return -1; + } + lastReadWasNull = false; + MonetDBType = types[columnIndex - 1]; + JdbcType = JdbcSQLTypes[columnIndex - 1]; + // If we got a string type, set the JdbcType to the given type + // so we attempt to parse it as the caller thinks it is. + if (JdbcType == Types.CHAR || + JdbcType == Types.VARCHAR || + JdbcType == Types.LONGVARCHAR || + JdbcType == Types.CLOB) + { + JdbcType = type; + } + } catch (IndexOutOfBoundsException e) { + throw newSQLInvalidColumnIndexException(columnIndex); + } + + // we know whether we have a time with or without + // time zone if the monet type ends with "tz" + boolean hasTimeZone = (MonetDBType != null) ? MonetDBType.endsWith("tz") : false; + TimeZone ptz = cal.getTimeZone(); + + // it is important to parse the time in the given timezone in + // order to get a correct (UTC) time value, hence we need to + // parse it first + if (hasTimeZone) { + // MonetDB/SQL99: Sign TwoDigitHours : Minutes + ptz = TimeZone.getTimeZone("GMT" + + monetDate.substring( + monetDate.length() - 6, + monetDate.length())); + } + + java.util.Date pdate = null; + ParsePosition ppos = new ParsePosition(0); + switch(JdbcType) { + case Types.DATE: + d.setTimeZone(ptz); + pdate = d.parse(monetDate, ppos); + break; + case Types.TIME: + t.setTimeZone(ptz); + pdate = t.parse(monetDate, ppos); + break; + case Types.TIMESTAMP: + ts.setTimeZone(ptz); + pdate = ts.parse(monetDate, ppos); + break; + default: + addWarning("unsupported data type", "01M03"); + cal.clear(); + return 0; + } + if (pdate == null) { + // parsing failed + int epos = ppos.getErrorIndex(); + if (epos == -1) { + addWarning("parsing '" + monetDate + "' failed", "01M10"); + } else if (epos < monetDate.length()) { + addWarning("parsing failed," + + " found: '" + monetDate.charAt(epos) + "'" + + " in: \"" + monetDate + "\"" + + " at pos: " + ppos.getErrorIndex(), "01M10"); + } else { + addWarning("parsing failed, expected more data after '" + + monetDate + "'", "01M10"); + } + // default value + cal.clear(); + return 0; + } + cal.setTime(pdate); + + int nanos = 0; + if (JdbcType == Types.TIME || JdbcType == Types.TIMESTAMP) { + // parse additional nanos (if any) + int pos = ppos.getIndex(); + char[] monDate = monetDate.toCharArray(); + if (pos < monDate.length && monDate[pos] == '.') { + pos++; + int ctr; + try { + nanos = getIntrinsicValue(monDate[pos], pos++); + for (ctr = 1; + pos < monDate.length && + monDate[pos] >= '0' && + monDate[pos] <= '9'; + ctr++) + { + if (ctr < 9) { + nanos *= 10; + nanos += (getIntrinsicValue(monDate[pos], pos)); + } + if (ctr == 2) // we have three at this point + cal.set(Calendar.MILLISECOND, nanos); + pos++; + } + while (ctr++ < 9) + nanos *= 10; + } catch(MCLParseException e) { + addWarning(e.getMessage() + + " found: '" + monDate[e.getErrorOffset()] + "'" + + " in: \"" + monetDate + "\"" + + " at pos: " + e.getErrorOffset(), "01M10"); + // default value + cal.clear(); + nanos = 0; + } + } + } + return nanos; + } + + /** + * Small helper method that returns the intrinsic value of a char if + * it represents a digit. If a non-digit character is encountered + * an MCLParseException is thrown. + * + * @param c the char + * @param pos the position + * @return the intrinsic value of the char + * @throws MCLParseException if c is not a digit + */ + private final static int getIntrinsicValue(char c, int pos) + throws MCLParseException + { + // note: don't use Character.isDigit() here, because + // we only want ISO-LATIN-1 digits + if (c >= '0' && c <= '9') { + return (int)c - (int)'0'; + } else { + throw new MCLParseException("Expected a digit", pos); + } + } + + /** + * Retrieves the value of the designated column in the current row of this + * ResultSet object as a java.sql.Date object in the Java programming + * language. + * + * @param columnIndex the first column is 1, the second is 2, ... + * @return the column value; if the value is SQL NULL, the value returned + * is null + * @throws SQLException if a database access error occurs + * @see #getDate(int col, Calendar cal) + */ + @Override + public java.sql.Date getDate(int columnIndex) throws SQLException { + return getDate(columnIndex, Calendar.getInstance()); + } + + /** + * Retrieves the value of the designated column in the current row of this + * ResultSet object as a java.sql.Date object in the Java programming + * language. This method uses the given calendar to construct an appropriate + * millisecond value for the date if the underlying database does not store + * timezone information. + * + * @param columnIndex the first column is 1, the second is 2, ... + * @param cal the java.util.Calendar object to use in constructing the date + * @return the column value; if the value is SQL NULL, the value returned + * is null + * @throws SQLException if a database access error occurs + */ + @Override + public java.sql.Date getDate(int columnIndex, Calendar cal) + throws SQLException + { + int ret = getJavaDate(cal, columnIndex, Types.DATE); + return ret == -1 ? null : new java.sql.Date(cal.getTimeInMillis()); + } + + /** + * Retrieves the value of the designated column in the current row of this + * ResultSet object as a java.sql.Date object in the Java programming + * language. + * + * @param columnName the SQL name of the column from which to retrieve the + * value + * @return the column value; if the value is SQL NULL, the value returned + * is null + * @throws SQLException if a database access error occurs + */ + @Override + public java.sql.Date getDate(String columnName) throws SQLException { + return getDate(findColumn(columnName), Calendar.getInstance()); + } + + /** + * Retrieves the value of the designated column in the current row of this + * ResultSet object as a java.sql.Date object in the Java programming + * language. This method uses the given calendar to construct an appropriate + * millisecond value for the date if the underlying database does not store + * timezone information. + * + * @param columnName the SQL name of the column from which to retrieve the + * value + * @param cal the java.util.Calendar object to use in constructing the date + * @return the column value; if the value is SQL NULL, the value returned + * is null + * @throws SQLException if a database access error occurs + */ + @Override + public java.sql.Date getDate(String columnName, Calendar cal) + throws SQLException + { + return getDate(findColumn(columnName), cal); + } + + /** + * Retrieves the value of the designated column in the current row of this + * ResultSet object as a java.sql.Time object in the Java programming + * language. + * + * @param columnIndex the first column is 1, the second is 2, ... + * @return the column value; if the value is SQL NULL, the value returned + * is null + * @throws SQLException if a database access error occurs + */ + @Override + public Time getTime(int columnIndex) throws SQLException { + return getTime(columnIndex, Calendar.getInstance()); + } + + /** + * Retrieves the value of the designated column in the current row of + * this ResultSet object as a java.sql.Time object in the Java programming + * language. This method uses the given calendar to construct an appropriate + * millisecond value for the time if the underlying database does not store + * timezone information. + * + * @param columnIndex the first column is 1, the second is 2, ... + * @param cal the java.util.Calendar object to use in constructing the + * timestamp + * @return the column value as a java.sql.Timestamp object; if the value is + * SQL NULL, the value returned is null in the Java programming + * language + * @throws SQLException if a database access error occurs + */ + @Override + public Time getTime(int columnIndex, Calendar cal) + throws SQLException + { + int ret = getJavaDate(cal, columnIndex, Types.TIME); + return ret == -1 ? null : new Time(cal.getTimeInMillis()); + } + + /** + * Retrieves the value of the designated column in the current row of this + * ResultSet object as a java.sql.Time object in the Java programming + * language. + * + * @param columnName the SQL name of the column + * @return the column value; if the value is SQL NULL, the value returned + * is null + * @throws SQLException if a database access error occurs + */ + @Override + public Time getTime(String columnName) throws SQLException { + return getTime(findColumn(columnName), Calendar.getInstance()); + } + + /** + * Retrieves the value of the designated column in the current row of + * this ResultSet object as a java.sql.Time object in the Java programming + * language. This method uses the given calendar to construct an appropriate + * millisecond value for the time if the underlying database does not store + * timezone information. + * + * @param columnName the SQL name of the column + * @param cal the java.util.Calendar object to use in constructing the + * timestamp + * @return the column value as a java.sql.Timestamp object; if the value is + * SQL NULL, the value returned is null in the Java programming + * language + * @throws SQLException if a database access error occurs + */ + @Override + public Time getTime(String columnName, Calendar cal) + throws SQLException + { + return getTime(findColumn(columnName), cal); + } + + /** + * Retrieves the value of the designated column in the current row of this + * ResultSet object as a java.sql.Timestamp object in the Java programming + * language. + * + * @param columnIndex the first column is 1, the second is 2, ... + * @return the column value; if the value is SQL NULL, the value returned + * is null + * @throws SQLException if a database access error occurs + */ + @Override + public Timestamp getTimestamp(int columnIndex) throws SQLException { + return getTimestamp(columnIndex, Calendar.getInstance()); + } + + /** + * Retrieves the value of the designated column in the current row of this + * ResultSet object as a java.sql.Timestamp object in the Java programming + * language. This method uses the given calendar to construct an appropriate + * millisecond value for the timestamp if the underlying database does not + * store timezone information. + * + * @param columnIndex the first column is 1, the second is 2, ... + * @param cal the java.util.Calendar object to use in constructing the + * timestamp + * @return the column value as a java.sql.Timestamp object; if the value is + * SQL NULL, the value returned is null in the Java programming + * language + * @throws SQLException if a database access error occurs + */ + @Override + public Timestamp getTimestamp(int columnIndex, Calendar cal) + throws SQLException + { + int nanos = getJavaDate(cal, columnIndex, Types.TIMESTAMP); + if (nanos == -1) + return null; + + Timestamp ts = new Timestamp(cal.getTimeInMillis()); + ts.setNanos(nanos); + return ts; + } + + /** + * Retrieves the value of the designated column in the current row of this + * ResultSet object as a java.sql.Timestamp object in the Java programming + * language. + * + * @param columnName the SQL name of the column + * @return the column value; if the value is SQL NULL, the value returned + * is null + * @throws SQLException if a database access error occurs + */ + @Override + public Timestamp getTimestamp(String columnName) throws SQLException { + return getTimestamp(findColumn(columnName), Calendar.getInstance()); + } + + /** + * Retrieves the value of the designated column in the current row of this + * ResultSet object as a java.sql.Timestamp object in the Java programming + * language. This method uses the given calendar to construct an appropriate + * millisecond value for the timestamp if the underlying database does not + * store timezone information. + * + * @param columnName the SQL name of the column + * @param cal the java.util.Calendar object to use in constructing the + * timestamp + * @return the column value as a java.sql.Timestamp object; if the value is + * SQL NULL, the value returned is null in the Java programming + * language + * @throws SQLException if a database access error occurs + */ + @Override + public Timestamp getTimestamp(String columnName, Calendar cal) + throws SQLException + { + return getTimestamp(findColumn(columnName), cal); + } + + /** + * Retrieves the type of this ResultSet object. The type is determined by + * the Statement object that created the result set. + * + * @return ResultSet.TYPE_FORWARD_ONLY, ResultSet.TYPE_SCROLL_INSENSITIVE, + * or ResultSet.TYPE_SCROLL_SENSITIVE + */ + @Override + public int getType() { + return type; + } + + /** + * Retrieves the value of the designated column in the current row + * of this ResultSet object as a java.net.URL object in the Java + * programming language. + * + * @param columnIndex the index of the column 1 is the first, + * 2 is the second,... + * @return the column value as a java.net.URL object; if the value + * is SQL NULL, the value returned is null in the Java + * programming language + * @throws SQLException if a database access error occurs, or if a + * URL is malformed + */ + @Override + public URL getURL(int columnIndex) throws SQLException { + try { + String val = tlp.values[columnIndex - 1]; + if (val == null) { + lastReadWasNull = true; + return null; + } + lastReadWasNull = false; + try { + return new URL(val); + } catch (MalformedURLException e) { + throw new SQLException(e.getMessage(), "M1M05"); + } + } catch (IndexOutOfBoundsException e) { + throw newSQLInvalidColumnIndexException(columnIndex); + } + } + + /** + * Retrieves the value of the designated column in the current row + * of this ResultSet object as a java.net.URL object in the Java + * programming language. + * + * @param columnName the SQL name of the column + * @return the column value as a java.net.URL object; if the value + * is SQL NULL, the value returned is null in the Java + * programming language + * @throws SQLException if a database access error occurs, or if a + * URL is malformed + */ + @Override + public URL getURL(String columnName) throws SQLException { + return getURL(findColumn(columnName)); + } + + /** + * Retrieves the first warning reported by calls on this ResultSet object. + * If there is more than one warning, subsequent warnings will be chained to + * the first one and can be retrieved by calling the method + * SQLWarning.getNextWarning on the warning that was retrieved previously. + * + * This method may not be called on a closed result set; doing so will cause + * an SQLException to be thrown. + * + * Note: Subsequent warnings will be chained to this SQLWarning. + * + * @return the first SQLWarning object or null if there are none + * @throws SQLException if a database access error occurs or this method is + * called on a closed connection + */ + @Override + public SQLWarning getWarnings() throws SQLException { + if (header != null && header.isClosed()) + throw new SQLException("Cannot call on closed ResultSet", "M1M20"); + + // if there are no warnings, this will be null, which fits with the + // specification. + return warnings; + } + + /** + * Retrieves whether the cursor is after the last row in this ResultSet + * object. + * + * @return true if the cursor is after the last row; false if the cursor is + * at any other position or the result set contains no rows + */ + @Override + public boolean isAfterLast() { + return curRow == tupleCount + 1; + } + + /** + * Retrieves whether the cursor is before the first row in this ResultSet + * object. + * + * @return true if the cursor is before the first row; false if the cursor + * is at any other position or the result set contains no rows + */ + @Override + public boolean isBeforeFirst() { + return curRow == 0; + } + + /** + * Retrieves whether this ResultSet object has been closed. A + * ResultSet is closed if the method close has been called on it, or + * if it is automatically closed. + * + * @return true if this ResultSet object is closed; false if it is + * still open + */ + @Override + public boolean isClosed() { + return header != null && header.isClosed(); + } + + /** + * Retrieves whether the cursor is on the first row of this ResultSet + * object. + * + * @return true if the cursor is on the first row; false otherwise + */ + @Override + public boolean isFirst() { + return curRow == 1; + } + + /** + * Retrieves whether the cursor is on the last row of this ResultSet object. + * + * @return true if the cursor is on the last row; false otherwise + */ + @Override + public boolean isLast() { + return curRow == tupleCount; + } + + /** + * Moves the cursor to the last row in this ResultSet object. + * + * @return true if the cursor is on a valid row; false if there are no rows + * in the result set + * @throws SQLException if a database access error occurs or the result set + * type is TYPE_FORWARD_ONLY + */ + @Override + public boolean last() throws SQLException { + return absolute(-1); + } + + /** + * Moves the cursor down one row from its current position. A ResultSet + * cursor is initially positioned before the first row; the first call to + * the method next makes the first row the current row; the second call + * makes the second row the current row, and so on. + * + * If an input stream is open for the current row, a call to the method + * next will implicitly close it. A ResultSet object's warning chain is + * cleared when a new row is read. + * + * @return true if the new current row is valid; false if there are no + * more rows + * @throws SQLException if a database access error occurs or ResultSet is + * closed + */ + @Override + public boolean next() throws SQLException { + return relative(1); + } + + /** + * Moves the cursor to the previous row in this ResultSet object. + * + * @return true if the cursor is on a valid row; false if it is off + * the result set + * @throws SQLException if a database access error occurs or ResultSet is + * closed or the result set type is TYPE_FORWARD_ONLY + */ + @Override + public boolean previous() throws SQLException { + return relative(-1); + } + + /** + * Moves the cursor a relative number of rows, either positive or negative. + * Attempting to move beyond the first/last row in the result set positions + * the cursor before/after the the first/last row. Calling relative(0) is + * valid, but does not change the cursor position. + * + * Note: Calling the method relative(1) is identical to calling the method + * next() and calling the method relative(-1) is identical to calling the + * method previous(). + * + * @param rows an int specifying the number of rows to move from the current + * row; a positive number moves the cursor forward; a negative number + * moves the cursor backward + * @return true if the cursor is on a row; false otherwise + * @throws SQLException if a database access error occurs, there is no current + * row, or the result set type is TYPE_FORWARD_ONLY + */ + @Override + public boolean relative(int rows) throws SQLException { + return absolute(curRow + rows); + } + + /** + * Retrieves whether a row has been deleted. A deleted row may leave a visible "hole" in a result set. + * This method can be used to detect holes in a result set. + * The value returned depends on whether or not this ResultSet object can detect deletions. + * + * Note: Support for the rowDeleted method is optional with a result set concurrency of CONCUR_READ_ONLY + * + * Returns: true if the current row is detected to have been deleted by the owner or another; false otherwise + * + * Throws: + * SQLException - if a database access error occurs or this method is called on a closed result set + * SQLFeatureNotSupportedException - if the JDBC driver does not support this method + * Since: 1.2 + * See Also: DatabaseMetaData.deletesAreDetected(int) + */ + @Override + public boolean rowDeleted() throws SQLException { + return false; + } + + /** + * Retrieves whether the current row has had an insertion. + * The value returned depends on whether or not this ResultSet object can detect visible inserts. + * + * Note: Support for the rowInserted method is optional with a result set concurrency of CONCUR_READ_ONLY + * + * Returns: true if the current row is detected to have been inserted; false otherwise + * + * Throws: + * SQLException - if a database access error occurs or this method is called on a closed result set + * SQLFeatureNotSupportedException - if the JDBC driver does not support this method + * Since: 1.2 + * See Also: DatabaseMetaData.insertsAreDetected(int) + */ + @Override + public boolean rowInserted() throws SQLException { + return false; + } + + /** + * Retrieves whether the current row has been updated. + * The value returned depends on whether or not the result set can detect updates. + * + * Note: Support for the rowUpdated method is optional with a result set concurrency of CONCUR_READ_ONLY + * + * Returns: true if the current row is detected to have been visibly updated by the owner or another; false otherwise + * + * Throws: + * SQLException - if a database access error occurs or this method is called on a closed result set + * SQLFeatureNotSupportedException - if the JDBC driver does not support this method + * Since: 1.2 + * See Also: DatabaseMetaData.updatesAreDetected(int) + */ + @Override + public boolean rowUpdated() throws SQLException { + return false; + } + + /* the next methods are all related to updateable result sets, which we + currently do not support */ + @Override + public void cancelRowUpdates() throws SQLException { + throw newSQLFeatureNotSupportedException("cancelRowUpdates"); + } + + @Override + public void deleteRow() throws SQLException { + throw newSQLFeatureNotSupportedException("deleteRow"); + } + + @Override + public void insertRow() throws SQLException { + throw newSQLFeatureNotSupportedException("insertRow"); + } + + @Override + public void moveToCurrentRow() throws SQLException { + throw newSQLFeatureNotSupportedException("moveToCurrentRow"); + } + + @Override + public void moveToInsertRow() throws SQLException { + throw newSQLFeatureNotSupportedException("moveToInsertRow"); + } + + @Override + public void refreshRow() throws SQLException { + throw newSQLFeatureNotSupportedException("refreshRow"); + } + + + @Override + public void updateArray(int columnIndex, Array x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateArray"); + } + + @Override + public void updateArray(String columnName, Array x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateArray"); + } + + @Override + public void updateAsciiStream(int columnIndex, InputStream xh) throws SQLException { + throw newSQLFeatureNotSupportedException("updateAsciiStream"); + } + + @Override + public void updateAsciiStream(int columnIndex, InputStream x, int length) throws SQLException { + throw newSQLFeatureNotSupportedException("updateAsciiStream"); + } + + @Override + public void updateAsciiStream(int columnIndex, InputStream x, long length) throws SQLException { + throw newSQLFeatureNotSupportedException("updateAsciiStream"); + } + + @Override + public void updateAsciiStream(String columnName, InputStream x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateAsciiStream"); + } + + @Override + public void updateAsciiStream(String columnName, InputStream x, int length) throws SQLException { + throw newSQLFeatureNotSupportedException("updateAsciiStream"); + } + + @Override + public void updateAsciiStream(String columnName, InputStream x, long length) throws SQLException { + throw newSQLFeatureNotSupportedException("updateAsciiStream"); + } + + @Override + public void updateBigDecimal(int columnIndex, BigDecimal x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateBigDecimal"); + } + + @Override + public void updateBigDecimal(String columnName, BigDecimal x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateBigDecimal"); + } + + @Override + public void updateBinaryStream(int columnIndex, InputStream x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateBinaryStream"); + } + + @Override + public void updateBinaryStream(int columnIndex, InputStream x, int length) throws SQLException { + throw newSQLFeatureNotSupportedException("updateBinaryStream"); + } + + @Override + public void updateBinaryStream(int columnIndex, InputStream x, long length) throws SQLException { + throw newSQLFeatureNotSupportedException("updateBinaryStream"); + } + + @Override + public void updateBinaryStream(String columnName, InputStream x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateBinaryStream"); + } + + @Override + public void updateBinaryStream(String columnName, InputStream x, int length) throws SQLException { + throw newSQLFeatureNotSupportedException("updateBinaryStream"); + } + + @Override + public void updateBinaryStream(String columnName, InputStream x, long length) throws SQLException { + throw newSQLFeatureNotSupportedException("updateBinaryStream"); + } + + @Override + public void updateBlob(int columnIndex, Blob x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateBlob"); + } + + @Override + public void updateBlob(int columnIndex, InputStream s) throws SQLException { + throw newSQLFeatureNotSupportedException("updateBlob"); + } + + @Override + public void updateBlob(int columnIndex, InputStream s, long length) throws SQLException { + throw newSQLFeatureNotSupportedException("updateBlob"); + } + + @Override + public void updateBlob(String columnName, Blob x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateBlob"); + } + + @Override + public void updateBlob(String columnName, InputStream s) throws SQLException { + throw newSQLFeatureNotSupportedException("updateBlob"); + } + + @Override + public void updateBlob(String columnName, InputStream s, long length) throws SQLException { + throw newSQLFeatureNotSupportedException("updateBlob"); + } + + @Override + public void updateBoolean(int columnIndex, boolean x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateBoolean"); + } + + @Override + public void updateBoolean(String columnName, boolean x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateBoolean"); + } + + @Override + public void updateByte(int columnIndex, byte x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateByte"); + } + + @Override + public void updateByte(String columnName, byte x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateByte"); + } + + @Override + public void updateBytes(int columnIndex, byte[] x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateBytes"); + } + + @Override + public void updateBytes(String columnName, byte[] x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateBytes"); + } + + @Override + public void updateCharacterStream(int columnIndex, Reader x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateCharacterStream"); + } + + @Override + public void updateCharacterStream(int columnIndex, Reader x, int length) throws SQLException { + throw newSQLFeatureNotSupportedException("updateCharacterStream"); + } + + @Override + public void updateCharacterStream(int columnIndex, Reader x, long length) throws SQLException { + throw newSQLFeatureNotSupportedException("updateCharacterStream"); + } + + @Override + public void updateCharacterStream(String columnName, Reader reader) throws SQLException { + throw newSQLFeatureNotSupportedException("updateCharacterStream"); + } + + @Override + public void updateCharacterStream(String columnName, Reader reader, int length) throws SQLException { + throw newSQLFeatureNotSupportedException("updateCharacterStream"); + } + + @Override + public void updateCharacterStream(String columnName, Reader reader, long length) throws SQLException { + throw newSQLFeatureNotSupportedException("updateCharacterStream"); + } + + @Override + public void updateNCharacterStream(int columnIndex, Reader x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateNCharacterStream"); + } + + public void updateNCharacterStream(int columnIndex, Reader x, int length) throws SQLException { + throw newSQLFeatureNotSupportedException("updateNCharacterStream"); + } + + @Override + public void updateNCharacterStream(int columnIndex, Reader x, long length) throws SQLException { + throw newSQLFeatureNotSupportedException("updateNCharacterStream"); + } + + @Override + public void updateNCharacterStream(String columnName, Reader reader) throws SQLException { + throw newSQLFeatureNotSupportedException("updateNCharacterStream"); + } + + public void updateNCharacterStream(String columnName, Reader reader, int length) throws SQLException { + throw newSQLFeatureNotSupportedException("updateNCharacterStream"); + } + + @Override + public void updateNCharacterStream(String columnName, Reader reader, long length) throws SQLException { + throw newSQLFeatureNotSupportedException("updateNCharacterStream"); + } + + @Override + public void updateClob(int columnIndex, Clob x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateClob"); + } + + @Override + public void updateClob(int columnIndex, Reader r) throws SQLException { + throw newSQLFeatureNotSupportedException("updateClob"); + } + + @Override + public void updateClob(int columnIndex, Reader r, long length) throws SQLException { + throw newSQLFeatureNotSupportedException("updateClob"); + } + + @Override + public void updateClob(String columnName, Clob x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateClob"); + } + + @Override + public void updateClob(String columnName, Reader r) throws SQLException { + throw newSQLFeatureNotSupportedException("updateClob"); + } + + @Override + public void updateClob(String columnName, Reader r, long length) throws SQLException { + throw newSQLFeatureNotSupportedException("updateClob"); + } + + @Override + public void updateNClob(int columnIndex, NClob x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateNClob"); + } + + @Override + public void updateNClob(int columnIndex, Reader r) throws SQLException { + throw newSQLFeatureNotSupportedException("updateNClob"); + } + + @Override + public void updateNClob(int columnIndex, Reader r, long length) throws SQLException { + throw newSQLFeatureNotSupportedException("updateNClob"); + } + + @Override + public void updateNClob(String columnName, NClob x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateNClob"); + } + + @Override + public void updateNClob(String columnName, Reader r) throws SQLException { + throw newSQLFeatureNotSupportedException("updateNClob"); + } + + @Override + public void updateNClob(String columnName, Reader r, long length) throws SQLException { + throw newSQLFeatureNotSupportedException("updateNClob"); + } + + @Override + public void updateDate(int columnIndex, java.sql.Date x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateDate"); + } + + @Override + public void updateDate(String columnName, java.sql.Date x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateDate"); + } + + @Override + public void updateDouble(int columnIndex, double x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateDouble"); + } + + @Override + public void updateDouble(String columnName, double x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateDouble"); + } + + @Override + public void updateFloat(int columnIndex, float x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateFloat"); + } + + @Override + public void updateFloat(String columnName, float x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateFloat"); + } + + @Override + public void updateInt(int columnIndex, int x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateInt"); + } + + @Override + public void updateInt(String columnName, int x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateInt"); + } + + @Override + public void updateLong(int columnIndex, long x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateLong"); + } + + @Override + public void updateLong(String columnName, long x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateLong"); + } + + @Override + public void updateNull(int columnIndex) throws SQLException { + throw newSQLFeatureNotSupportedException("updateNull"); + } + + @Override + public void updateNull(String columnName) throws SQLException { + throw newSQLFeatureNotSupportedException("updateNull"); + } + + @Override + public void updateObject(int columnIndex, Object x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateObject"); + } + + @Override + public void updateObject(int columnIndex, Object x, int scale) throws SQLException { + throw newSQLFeatureNotSupportedException("updateObject"); + } + + @Override + public void updateObject(String columnName, Object x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateObject"); + } + + @Override + public void updateObject(String columnName, Object x, int scale) throws SQLException { + throw newSQLFeatureNotSupportedException("updateObject"); + } + + @Override + public void updateRef(int columnIndex, Ref x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateRef"); + } + + @Override + public void updateRef(String columnName, Ref x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateRef"); + } + + @Override + public void updateRow() throws SQLException { + throw newSQLFeatureNotSupportedException("updateRow"); + } + + @Override + public void updateRowId(int columnIndex, RowId x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateRowId"); + } + + @Override + public void updateRowId(String columnLabel, RowId x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateRowId"); + } + + @Override + public void updateShort(int columnIndex, short x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateShort"); + } + + @Override + public void updateShort(String columnName, short x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateShort"); + } + + @Override + public void updateString(int columnIndex, String x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateString"); + } + + @Override + public void updateString(String columnName, String x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateString"); + } + + @Override + public void updateNString(int columnIndex, String x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateNString"); + } + + @Override + public void updateNString(String columnName, String x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateNString"); + } + + @Override + public void updateSQLXML(String columnName, SQLXML x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateSQLXML"); + } + + @Override + public void updateSQLXML(int columnIndex, SQLXML x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateSQLXML"); + } + + @Override + public void updateTime(int columnIndex, Time x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateTime"); + } + + @Override + public void updateTime(String columnName, Time x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateTime"); + } + + @Override + public void updateTimestamp(int columnIndex, Timestamp x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateTimestamp"); + } + + @Override + public void updateTimestamp(String columnName, Timestamp x) throws SQLException { + throw newSQLFeatureNotSupportedException("updateTimestamp"); + } + + // Chapter 14.2.3.3 Sun JDBC 3.0 Specification + /** + * Reports whether the last column read had a value of SQL NULL. Note that + * you must first call one of the getter methods on a column to try to read + * its value and then call the method wasNull to see if the value read was + * SQL NULL. + * + * @return true if the last column value read was SQL NULL and false + * otherwise + */ + @Override + public boolean wasNull() { + return lastReadWasNull; + } + + //== end methods of interface ResultSet + + /** + * Adds a warning to the pile of warnings this ResultSet object has. If + * there were no warnings (or clearWarnings was called) this warning will + * be the first, otherwise this warning will get appended to the current + * warning. + * + * @param reason the warning message + */ + private void addWarning(String reason, String sqlstate) { + if (warnings == null) { + warnings = new SQLWarning(reason, sqlstate); + } else { + warnings.setNextWarning(new SQLWarning(reason, sqlstate)); + } + } + + /** + * Small helper method that formats the "Invalid Column Index number ..." message + * and creates a new SQLException object whose SQLState is set to "M1M05". + * + * @param name the method name + * @return a new created SQLException object with SQLState M1M05 + */ + private final static SQLException newSQLInvalidColumnIndexException(int colIdx) { + return new SQLException("Invalid Column Index number: " + colIdx, "M1M05"); + } + + /** + * Small helper method that formats the "Method ... not implemented" message + * and creates a new SQLFeatureNotSupportedException object + * whose SQLState is set to "0A000". + * + * @param name the method name + * @return a new created SQLFeatureNotSupportedException object with SQLState 0A000 + */ + private final static SQLFeatureNotSupportedException newSQLFeatureNotSupportedException(String name) { + return new SQLFeatureNotSupportedException("Method " + name + " not implemented", "0A000"); + } +} +
new file mode 100644 --- /dev/null +++ b/src/main/java/nl/cwi/monetdb/jdbc/MonetSavepoint.java @@ -0,0 +1,135 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +package nl.cwi.monetdb.jdbc; + +import java.sql.*; +import java.util.concurrent.atomic.AtomicInteger; + +/** + * The representation of a savepoint, which is a point within the current + * transaction that can be referenced from the Connection.rollback method. + * When a transaction is rolled back to a savepoint all changes made after + * that savepoint are undone. + * Savepoints can be either named or unnamed. Unnamed savepoints are + * identified by an ID generated by the underlying data source. + * + * This little class is nothing more than a container for a name and/or + * an id. Each instance of this class always has an id, which is used for + * internal representation of the save point. + * + * Because the IDs which get generated are a logical sequence, application + * wide, two concurrent transactions are guaranteed to not to have the same + * save point identifiers. In this implementation the validaty of save points + * is determined by the server, which makes this a light implementation. + * + * @author Fabian Groffen + * @version 1.0 + */ +public class MonetSavepoint implements Savepoint { + /** The id of the last created Savepoint */ + private static AtomicInteger highestId = new AtomicInteger(0); + + /** The name of this Savepoint */ + private final String name; + /** The id of this Savepoint */ + private final int id; + + public MonetSavepoint(String name) throws IllegalArgumentException { + if (name == null) throw new IllegalArgumentException("null not allowed"); + + this.id = getNextId(); + this.name = name; + } + + public MonetSavepoint() { + this.id = getNextId(); + this.name = null; + } + + + /** + * Retrieves the generated ID for the savepoint that this Savepoint object + * represents. + * + * @return the numeric ID of this savepoint + * @throws SQLException if this is a named savepoint + */ + @Override + public int getSavepointId() throws SQLException { + if (name != null) throw + new SQLException("Cannot getID for named savepoint", "3B000"); + + return getId(); + } + + /** + * Retrieves the name of the savepoint that this Savepoint object + * represents. + * + * @return the name of this savepoint + * @throws SQLException if this is an un-named savepoint + */ + @Override + public String getSavepointName() throws SQLException { + if (name == null) throw + new SQLException("Unable to retrieve name of unnamed savepoint", "3B000"); + + return name; + } + + //== end of methods from Savepoint interface + + /** + * Retrieves the savepoint id, like the getSavepointId method with the only + * difference that this method will always return the id, regardless of + * whether it is named or not. + * + * @return the numeric ID of this savepoint + */ + int getId() { + return id; + } + + /** + * Returns the name to use when referencing this save point to the MonetDB + * database. The returned value is guaranteed to be unique and consists of + * a prefix string and a sequence number. + * + * @return the unique savepoint name + */ + String getName() { + return "MonetDBSP" + id; + } + + + /** + * Returns the next id, which is larger than the last returned id. This + * method is synchronized to prevent race conditions. Since this is static + * code, this method is shared by requests from multiple Connection objects. + * Therefore two successive calls to this method need not to have a + * difference of 1. + * + * @return the next int which is guaranteed to be higher than the one + * at the last call to this method. + */ + private static int getNextId() { + return highestId.incrementAndGet(); + } + + /** + * Returns the highest id returned by getNextId(). This method is also + * synchronized to prevent race conditions and thus guaranteed to be + * thread-safe. + * + * @return the highest id returned by a call to getNextId() + */ + private static int getHighestId() { + return highestId.get(); + } +}
new file mode 100644 --- /dev/null +++ b/src/main/java/nl/cwi/monetdb/jdbc/MonetStatement.java @@ -0,0 +1,1286 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +package nl.cwi.monetdb.jdbc; + +import java.sql.*; +import java.util.*; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +import nl.cwi.monetdb.mcl.net.*; + +/** + * A Statement suitable for the MonetDB database. + * + * The object used for executing a static SQL statement and returning + * the results it produces.<br /> + * + * By default, only one {@link ResultSet} object per Statement object can be + * open at the same time. Therefore, if the reading of one ResultSet + * object is interleaved with the reading of another, each must have + * been generated by different {@link Statement} objects. All execution methods + * in the Statement interface implicitly close a Statement's current + * ResultSet object if an open one exists. + * + * The current state of this Statement is that it only implements the + * executeQuery() which returns a ResultSet where from results can be + * read and executeUpdate() which doesn't return the affected rows. + * Commit and rollback are implemented, as is the autoCommit mechanism + * which relies on server side auto commit.<br /> + * Multi-result queries are supported using the getMoreResults() method. + * + * @author Fabian Groffen + * @version 0.7 + */ +public class MonetStatement extends MonetWrapper implements Statement { + /** the default value of maxRows, 0 indicates unlimited */ + static final int DEF_MAXROWS = 0; + + /** The parental Connection object */ + private MonetConnection connection; + /** The last ResponseList object this Statement produced */ + private MonetConnection.ResponseList lastResponseList; + /** The last Response that this object uses */ + MonetConnection.Response header; + /** The warnings this Statement object generated */ + private SQLWarning warnings; + /** Whether this Statement object is closed or not */ + protected boolean closed; + /** Whether the application wants this Statement object to be pooled */ + protected boolean poolable; + /** Whether this Statement should be closed if the last ResultSet + * closes */ + private boolean closeOnCompletion = false; + /** The size of the blocks of results to ask for at the server */ + private int fetchSize = 0; + /** The maximum number of rows to return in a ResultSet */ + private int maxRows = DEF_MAXROWS; + /** The suggested direction of fetching data (implemented but not used) */ + private int fetchDirection = ResultSet.FETCH_FORWARD; + /** The type of ResultSet to produce; i.e. forward only, random access */ + private int resultSetType = ResultSet.TYPE_FORWARD_ONLY; + /** The concurrency of the ResultSet to produce */ + private int resultSetConcurrency = ResultSet.CONCUR_READ_ONLY; + + /** A List to hold all queries of a batch */ + private List<String> batch = new ArrayList<String>(); + + + /** + * MonetStatement constructor which checks the arguments for validity, tries + * to set up a socket to MonetDB and attempts to login. + * This constructor is only accessible to classes from the jdbc package. + * + * @param connection the connection that created this Statement + * @param resultSetType type of ResultSet to produce + * @param resultSetConcurrency concurrency of ResultSet to produce + * @throws SQLException if an error occurs during login + * @throws IllegalArgumentException is one of the arguments is null or empty + */ + MonetStatement( + MonetConnection connection, + int resultSetType, + int resultSetConcurrency, + int resultSetHoldability) + throws SQLException, IllegalArgumentException + { + if (connection == null) throw + new IllegalArgumentException("No Connection given!"); + + this.connection = connection; + this.resultSetType = resultSetType; + this.resultSetConcurrency = resultSetConcurrency; + + // check our limits, and generate warnings as appropriate + if (resultSetConcurrency != ResultSet.CONCUR_READ_ONLY) { + addWarning("No concurrency mode other then read only is supported, continuing with concurrency level READ_ONLY", "01M13"); + resultSetConcurrency = ResultSet.CONCUR_READ_ONLY; + } + + // check type for supported mode + if (resultSetType == ResultSet.TYPE_SCROLL_SENSITIVE) { + addWarning("Change sensitive scrolling ResultSet objects are not supported, continuing with a change non-sensitive scrollable cursor.", "01M14"); + resultSetType = ResultSet.TYPE_SCROLL_INSENSITIVE; + } + + // check type for supported holdability + if (resultSetHoldability != ResultSet.HOLD_CURSORS_OVER_COMMIT) { + addWarning("Close cursors at commit not supported, continuing with holdability to hold open cursors over commit.", "01M15"); + } + + closed = false; + poolable = false; + } + + //== methods of interface Statement + + /** + * Adds the given SQL command to the current list of commmands for this + * Statement object. The commands in this list can be executed as a + * batch by calling the method executeBatch. + * + * @param sql typically this is a static SQL INSERT or UPDATE statement + * @throws SQLException so the PreparedStatement can throw this exception + */ + @Override + public void addBatch(String sql) throws SQLException { + batch.add(sql); + } + + /** + * Empties this Statement object's current list of SQL commands. + */ + @Override + public void clearBatch() { + batch.clear(); + } + + Lock batchLock = new ReentrantLock(); + + /** + * Submits a batch of commands to the database for execution and if + * all commands execute successfully, returns an array of update + * counts. The int elements of the array that is returned are + * ordered to correspond to the commands in the batch, which are + * ordered according to the order in which they were added to the + * batch. The elements in the array returned by the method + * executeBatch may be one of the following: + * <br /> + * <ol> + * <li>A number greater than or equal to zero -- indicates that the + * command was processed successfully and is an update count giving + * the number of rows in the database that were affected by the + * command's execution</li> + * <li>A value of SUCCESS_NO_INFO -- indicates that the command was + * processed successfully but that the number of rows affected is + * unknown</li> + * </ol> + * If one of the commands in a batch update fails to execute + * properly, this method throws a BatchUpdateException, and a JDBC + * driver may or may not continue to process the remaining commands + * in the batch. However, the driver's behavior must be consistent + * with a particular DBMS, either always continuing to process + * commands or never continuing to process commands. + * + * MonetDB does continues after an error has occurred in the batch. + * If one of the commands attempts to return a result set, an + * SQLException is added to the SQLException list and thrown + * afterwards execution. Failing queries result in SQLExceptions + * too and may cause subparts of the batch to fail as well.<br /> + * + * @return an array of update counts containing one element for each + * command in the batch. The elements of the array are ordered + * according to the order in which commands were added to the + * batch. + * @throws SQLException if a database access error occurs. Throws + * BatchUpdateException (a subclass of SQLException) if one of the + * commands sent to the database fails to execute properly + */ + @Override + public int[] executeBatch() throws SQLException { + // this method is synchronized to make sure noone gets inbetween the + // operations we execute below + + batchLock.lock(); + try { + // don't think long if there isn't much to do + if (batch.isEmpty()) + return new int[0]; + + int[] counts = new int[batch.size()]; + int offset = 0; + boolean first = true; + boolean error = false; + + BatchUpdateException e = new BatchUpdateException("Error(s) occurred while executing the batch, see next SQLExceptions for details", "22000", counts); + StringBuilder tmpBatch = new StringBuilder(MapiSocket.BLOCK); + String sep = connection.queryTempl[2]; + for (int i = 0; i < batch.size(); i++) { + String tmp = batch.get(i); + if (sep.length() + tmp.length() > MapiSocket.BLOCK) { + // The thing is too big. Way too big. Since it won't + // be optimal anyway, just add it to whatever we have + // and continue. + if (!first) + tmpBatch.append(sep); + tmpBatch.append(tmp); + // send and receive + error |= internalBatch(tmpBatch.toString(), counts, offset, i + 1, e); + offset = i; + tmpBatch.delete(0, tmpBatch.length()); + first = true; + continue; + } + if (tmpBatch.length() + sep.length() + tmp.length() >= MapiSocket.BLOCK) { + // send and receive + error |= internalBatch(tmpBatch.toString(), counts, offset, i + 1, e); + offset = i; + tmpBatch.delete(0, tmpBatch.length()); + first = true; + } + if (!first) tmpBatch.append(sep); + first = false; + tmpBatch.append(tmp); + } + // send and receive + error |= internalBatch(tmpBatch.toString(), counts, offset, counts.length, e); + + // throw BatchUpdateException if it contains something + if (error) + throw e; + // otherwise just return the counts + return counts; + } finally { + batchLock.unlock(); + } + } + + private boolean internalBatch( + String batch, + int[] counts, + int offset, + int max, + BatchUpdateException e) + throws BatchUpdateException + { + try { + boolean type = internalExecute(batch); + int count = -1; + if (!type) count = getUpdateCount(); + do { + if (offset >= max) throw + new SQLException("Overflow: don't use multi statements when batching (" + max + ")", "M1M16"); + if (type) { + e.setNextException( + new SQLException("Batch query produced a ResultSet! " + + "Ignoring and setting update count to " + + "value " + EXECUTE_FAILED, "M1M17")); + counts[offset] = EXECUTE_FAILED; + } else if (count >= 0) { + counts[offset] = count; + } + offset++; + } while ((type = getMoreResults()) || + (count = getUpdateCount()) != -1); + } catch (SQLException ex) { + e.setNextException(ex); + for (; offset < max; offset++) { + counts[offset] = EXECUTE_FAILED; + } + return true; + } + return false; + } + + /** + * Cancels this Statement object if both the DBMS and driver support + * aborting an SQL statement. This method can be used by one thread to + * cancel a statement that is being executed by another thread. + * + * @throws SQLException if a database access error occurs or the cancel + * operation is not supported + */ + @Override + public void cancel() throws SQLException { + throw new SQLException("Query cancelling is currently not supported by the DBMS.", "0A000"); + } + + /** + * Clears all warnings reported for this Statement object. After a call to + * this method, the method getWarnings returns null until a new warning is + * reported for this Statement object. + */ + @Override + public void clearWarnings() { + warnings = null; + } + + /** + * Releases this Statement object's database and JDBC resources immediately + * instead of waiting for this to happen when it is automatically closed. It + * is generally good practice to release resources as soon as you are + * finished with them to avoid tying up database resources. + * + * Calling the method close on a Statement object that is already closed has + * no effect. + * + * A Statement object is automatically closed when it is garbage collected. + * When a Statement object is closed, its current ResultSet object, if one + * exists, is also closed. + */ + @Override + public void close() { + // close previous ResultSet, if not closed already + if (lastResponseList != null) lastResponseList.close(); + closed = true; + } + + // Chapter 13.1.2.3 of Sun's JDBC 3.0 Specification + /** + * Executes the given SQL statement, which may return multiple results. In + * some (uncommon) situations, a single SQL statement may return multiple + * result sets and/or update counts. Normally you can ignore this unless + * you are (1) executing a stored procedure that you know may return + * multiple results or (2) you are dynamically executing an unknown SQL + * string. + * + * The execute method executes an SQL statement and indicates the form of + * the first result. You must then use the methods getResultSet or + * getUpdateCount to retrieve the result, and getMoreResults to move to any + * subsequent result(s). + * + * @param sql any SQL statement + * @return true if the first result is a ResultSet object; false if it is an + * update count or there are no results + * @throws SQLException if a database access error occurs + */ + @Override + public boolean execute(String sql) throws SQLException { + return internalExecute(sql); + } + + /** + * Executes the given SQL statement, which may return multiple + * results, and signals the driver that any auto-generated keys + * should be made available for retrieval. The driver will ignore + * this signal if the SQL statement is not an INSERT statement. + * + * In some (uncommon) situations, a single SQL statement may return + * multiple result sets and/or update counts. Normally you can + * ignore this unless you are (1) executing a stored procedure that + * you know may return multiple results or (2) you are dynamically + * executing an unknown SQL string. + * + * The execute method executes an SQL statement and indicates the + * form of the first result. You must then use the methods + * getResultSet or getUpdateCount to retrieve the result, and + * getMoreResults to move to any subsequent result(s). + * + * @param sql any SQL statement + * @param autoGeneratedKeys a constant indicating whether + * auto-generated keys should be made available for retrieval + * using the method getGeneratedKeys; one of the following + * constants: Statement.RETURN_GENERATED_KEYS or + * Statement.NO_GENERATED_KEYS + * @return true if the first result is a ResultSet object; false if + * it is an update count or there are no results + * @throws SQLException - if a database access error occurs or the + * second parameter supplied to this method is not + * Statement.RETURN_GENERATED_KEYS or + * Statement.NO_GENERATED_KEYS. + */ + @Override + public boolean execute(String sql, int autoGeneratedKeys) + throws SQLException + { + if (autoGeneratedKeys != Statement.RETURN_GENERATED_KEYS && + autoGeneratedKeys != Statement.NO_GENERATED_KEYS) + throw new SQLException("Invalid argument, expected RETURN_GENERATED_KEYS or NO_GENERATED_KEYS", "M1M05"); + + /* MonetDB has no way to disable this, so just do the normal + * thing ;) */ + return internalExecute(sql); + } + + /** + * Executes the given SQL statement, which may return multiple + * results, and signals the driver that the auto-generated keys + * indicated in the given array should be made available for + * retrieval. This array contains the indexes of the columns in the + * target table that contain the auto-generated keys that should be + * made available. The driver will ignore the array if the given SQL + * statement is not an INSERT statement. + * + * Under some (uncommon) situations, a single SQL statement may + * return multiple result sets and/or update counts. Normally you + * can ignore this unless you are (1) executing a stored procedure + * that you know may return multiple results or (2) you are + * dynamically executing an unknown SQL string. + * + * The execute method executes an SQL statement and indicates the + * form of the first result. You must then use the methods + * getResultSet or getUpdateCount to retrieve the result, and + * getMoreResults to move to any subsequent result(s). + * + * MonetDB only supports returing the generated key for one column, + * which will be the first column that has a serial. Hence, this + * method cannot work as required and the driver will fall back to + * executing with request to the database to return the generated + * key, if any. + * + * @param sql any SQL statement + * @param columnIndexes an array of the indexes of the columns in + * the inserted row that should be made available for + * retrieval by a call to the method getGeneratedKeys + * @return true if the first result is a ResultSet object; false if + * it is an update count or there are no results + * @throws SQLException if a database access error occurs or the + * elements in the int array passed to this method are not + * valid column indexes + */ + @Override + public boolean execute(String sql, int[] columnIndexes) + throws SQLException + { + addWarning("execute: generated keys for fixed set of columns not supported", "01M18"); + return execute(sql, Statement.RETURN_GENERATED_KEYS); + } + + /** + * Executes the given SQL statement, which may return multiple + * results, and signals the driver that the auto-generated keys + * indicated in the given array should be made available for + * retrieval. This array contains the names of the columns in the + * target table that contain the auto-generated keys that should be + * made available. The driver will ignore the array if the given SQL + * statement is not an INSERT statement. + * + * In some (uncommon) situations, a single SQL statement may return + * multiple result sets and/or update counts. Normally you can + * ignore this unless you are (1) executing a stored procedure that + * you know may return multiple results or (2) you are dynamically + * executing an unknown SQL string. + * + * The execute method executes an SQL statement and indicates the + * form of the first result. You must then use the methods + * getResultSet or getUpdateCount to retrieve the result, and + * getMoreResults to move to any subsequent result(s). + * + * MonetDB only supports returing the generated key for one column, + * which will be the first column that has a serial. Hence, this + * method cannot work as required and the driver will fall back to + * executing with request to the database to return the generated + * key, if any. + * + * @param sql any SQL statement + * @param columnNames an array of the names of the columns in the + * inserted row that should be made available for retrieval + * by a call to the method getGeneratedKeys + * @return true if the next result is a ResultSet object; false if + * it is an update count or there are no more results + * @throws SQLException if a database access error occurs or the + * elements of the String array passed to this method are + * not valid column names + */ + @Override + public boolean execute(String sql, String[] columnNames) + throws SQLException + { + addWarning("execute: generated keys for fixed set of columns not supported", "01M18"); + return execute(sql, Statement.RETURN_GENERATED_KEYS); + } + + /** + * Performs the steps to execute a given SQL statement. This method + * exists to allow the functionality of this function to be called + * from within this class only. The PreparedStatement for example + * overrides the execute() method to throw an SQLException, but it + * needs its functionality when the executeBatch method (which is + * inherited) is called. + * + * @param sql any SQL statement + * @return true if the first result is a ResultSet object; false if + * it is an update count or there are no results + * @throws SQLException if a database access error occurs + */ + private boolean internalExecute(String sql) throws SQLException { + // close previous query, if not closed already + if (lastResponseList != null) { + lastResponseList.close(); + lastResponseList = null; + } + + // create a container for the result + lastResponseList = connection.new ResponseList( + fetchSize, + maxRows, + resultSetType, + resultSetConcurrency + ); + // fill the header list by processing the query + lastResponseList.processQuery(sql); + + return getMoreResults(); + } + + /** + * Executes the given SQL statement, which returns a single ResultSet + * object. + * + * @param sql an SQL statement to be sent to the database, typically a + * static SQL SELECT statement + * @return a ResultSet object that contains the data produced by the given + * query; never null + * @throws SQLException if a database access error occurs or the given SQL + * statement produces anything other than a single ResultSet object + */ + @Override + public ResultSet executeQuery(String sql) throws SQLException { + if (execute(sql) != true) + throw new SQLException("Query did not produce a result set", "M1M19"); + + return getResultSet(); + } + + /** + * Executes the given SQL statement, which may be an INSERT, UPDATE, or + * DELETE statement or an SQL statement that returns nothing, such as an + * SQL DDL statement. + * + * @param sql an SQL INSERT, UPDATE or DELETE statement or an SQL statement + * that returns nothing + * @return either the row count for INSERT, UPDATE or DELETE statements, or + * 0 for SQL statements that return nothing<br /> + * @throws SQLException if a database access error occurs or the given SQL + * statement produces a ResultSet object + */ + @Override + public int executeUpdate(String sql) throws SQLException { + if (execute(sql) != false) + throw new SQLException("Query produced a result set", "M1M17"); + + return getUpdateCount(); + } + + /** + * Executes the given SQL statement and signals the driver with the + * given flag about whether the auto-generated keys produced by this + * Statement object should be made available for retrieval. + * + * @param sql must be an SQL INSERT, UPDATE or DELETE statement or + * an SQL statement that returns nothing + * @param autoGeneratedKeys - a flag indicating whether + * auto-generated keys should be made available for + * retrieval; one of the following constants: + * Statement.RETURN_GENERATED_KEYS + * Statement.NO_GENERATED_KEYS + * @return either the row count for INSERT, UPDATE or DELETE + * statements, or 0 for SQL statements that return nothing + * @throws SQLException if a database access error occurs, the + * given SQL statement returns a ResultSet object, or the + * given constant is not one of those allowed + */ + @Override + public int executeUpdate(String sql, int autoGeneratedKeys) + throws SQLException + { + if (autoGeneratedKeys != Statement.RETURN_GENERATED_KEYS && + autoGeneratedKeys != Statement.NO_GENERATED_KEYS) + throw new SQLException("Invalid argument, expected RETURN_GENERATED_KEYS or NO_GENERATED_KEYS", "M1M05"); + + /* MonetDB has no way to disable this, so just do the normal + * thing ;) */ + if (execute(sql) != false) + throw new SQLException("Query produced a result set", "M1M17"); + + return getUpdateCount(); + } + + /** + * Executes the given SQL statement and signals the driver that the + * auto-generated keys indicated in the given array should be made + * available for retrieval. The driver will ignore the array if the + * SQL statement is not an INSERT statement. + * + * MonetDB only supports returing the generated key for one column, + * which will be the first column that has a serial. Hence, this + * method cannot work as required and the driver will fall back to + * executing with request to the database to return the generated + * key, if any. + * + * @param sql an SQL INSERT, UPDATE or DELETE statement or an SQL + * statement that returns nothing, such as an SQL DDL statement + * @param columnIndexes an array of column indexes indicating the + * columns that should be returned from the inserted row + * @return either the row count for INSERT, UPDATE, or DELETE + * statements, or 0 for SQL statements that return nothing + * @throws SQLException if a database access error occurs, the SQL + * statement returns a ResultSet object, or the second + * argument supplied to this method is not an int array + * whose elements are valid column indexes + */ + @Override + public int executeUpdate(String sql, int[] columnIndexes) + throws SQLException + { + addWarning("executeUpdate: generated keys for fixed set of columns not supported", "01M18"); + return executeUpdate(sql, Statement.RETURN_GENERATED_KEYS); + } + + /** + * Executes the given SQL statement and signals the driver that the + * auto-generated keys indicated in the given array should be made + * available for retrieval. The driver will ignore the array if the + * SQL statement is not an INSERT statement. + * + * MonetDB only supports returing the generated key for one column, + * which will be the first column that has a serial. Hence, this + * method cannot work as required and the driver will fall back to + * executing with request to the database to return the generated + * key, if any. + * + * @param sql an SQL INSERT, UPDATE or DELETE statement or an SQL + * statement that returns nothing, such as an SQL DDL statement + * @param columnNames an array of the names of the columns that + * should be returned from the inserted row + * @return either the row count for INSERT, UPDATE, or DELETE + * statements, or 0 for SQL statements that return nothing + * @throws SQLException if a database access error occurs, the SQL + * statement returns a ResultSet object, or the second + * argument supplied to this method is not a String array + * whose elements are valid column names + */ + @Override + public int executeUpdate(String sql, String[] columnNames) + throws SQLException + { + addWarning("executeUpdate: generated keys for fixed set of columns not supported", "01M18"); + return executeUpdate(sql, Statement.RETURN_GENERATED_KEYS); + } + + /** + * Retrieves the Connection object that produced this Statement object. + * + * @return the connection that produced this statement + */ + @Override + public Connection getConnection() { + return connection; + } + + /** + * Retrieves the direction for fetching rows from database tables that is + * the default for result sets generated from this Statement object. If + * this Statement object has not set a fetch direction by calling the + * method setFetchDirection, the return value is ResultSet.FETCH_FORWARD. + * + * @return the default fetch direction for result sets generated from this + * Statement object + */ + @Override + public int getFetchDirection() { + return fetchDirection; + } + + /** + * Retrieves the number of result set rows that is the default fetch size + * for ResultSet objects generated from this Statement object. If this + * Statement object has not set a fetch size by calling the method + * setFetchSize, or the method setFetchSize was called as such to let + * the driver ignore the hint, 0 is returned. + * + * @return the default fetch size for result sets generated from this + * Statement object + */ + @Override + public int getFetchSize() { + return fetchSize; + } + + /** + * Retrieves any auto-generated keys created as a result of + * executing this Statement object. If this Statement object did not + * generate any keys, an empty ResultSet object is returned. + * + * @return a ResultSet object containing the auto-generated key(s) + * generated by the execution of this Statement object + * @throws SQLException - if a database access error occurs + */ + @Override + public ResultSet getGeneratedKeys() throws SQLException { + String[] columns, types; + String[][] results; + + columns = new String[1]; + types = new String[1]; + + columns[0] = "GENERATED_KEY"; + /* the generated key should be an integer, because (wait for it) other + * frameworks such as spring expect this. */ + types[0] = "BIGINT"; + + if (header instanceof MonetConnection.UpdateResponse) { + String lastid = ((MonetConnection.UpdateResponse)header).lastid; + if (lastid.equals("-1")) { + results = new String[0][1]; + } else { + results = new String[1][1]; + results[0][0] = lastid; + } + } else { + results = new String[0][1]; + } + + try { + return new MonetVirtualResultSet(this, columns, types, results); + } catch (IllegalArgumentException e) { + throw new SQLException("Internal driver error: " + e.getMessage(), "M0M03"); + } + } + + /** + * Retrieves the maximum number of bytes that can be returned for + * character and binary column values in a ResultSet object produced + * by this Statement object. This limit applies only to BINARY, + * VARBINARY, LONGVARBINARY, CHAR, VARCHAR, and LONGVARCHAR + * columns. If the limit is exceeded, the excess data is silently + * discarded. + * + * The MonetDB JDBC driver currently doesn't support limiting + * fieldsizes, and hence always return 0 (unlimited). + * + * @return the current column size limit for columns storing + * character and binary values; zero means there is no limit + * @throws SQLException if a database access error occurs + */ + @Override + public int getMaxFieldSize() + throws SQLException + { + return 0; + } + + /** + * Retrieves the maximum number of rows that a ResultSet object produced by + * this Statement object can contain. If this limit is exceeded, the excess + * rows are silently dropped. + * + * @return the current maximum number of rows for a ResultSet object + * produced by this Statement object; zero means there is no limit + */ + @Override + public int getMaxRows() { + return maxRows; + } + + /** + * Moves to this Statement object's next result, returns true if it is a + * ResultSet object, and implicitly closes any current ResultSet object(s) + * obtained with the method getResultSet. + * + * There are no more results when the following is true:<br /> + * (!getMoreResults() && (getUpdateCount() == -1) + * + * @return true if the next result is a ResultSet object; false if it is + * an update count or there are no more results + * @throws SQLException if a database access error occurs + * @see #getMoreResults(int current) + */ + @Override + public boolean getMoreResults() throws SQLException { + return getMoreResults(CLOSE_ALL_RESULTS); + } + + /** + * Moves to this Statement object's next result, deals with any current + * ResultSet object(s) according to the instructions specified by the given + * flag, and returns true if the next result is a ResultSet object. + * + * There are no more results when the following is true:<br /> + * (!getMoreResults() && (getUpdateCount() == -1) + * + * @param current one of the following Statement constants indicating what + * should happen to current ResultSet objects obtained using + * the method getResultSet: CLOSE_CURRENT_RESULT, + * KEEP_CURRENT_RESULT, or CLOSE_ALL_RESULTS + * @return true if the next result is a ResultSet object; false if it is + * an update count or there are no more results + * @throws SQLException if a database access error occurs + */ + @Override + public boolean getMoreResults(int current) throws SQLException { + // protect against people calling this on an unitialised state + if (lastResponseList == null) { + header = null; + return false; + } + + if (current == CLOSE_CURRENT_RESULT) { + lastResponseList.closeCurrentResponse(); + } else if (current == CLOSE_ALL_RESULTS) { + lastResponseList.closeCurOldResponses(); + } + // we default to keep current result, which requires no action + header = lastResponseList.getNextResponse(); + + if (header instanceof MonetConnection.ResultSetResponse) { + return true; + } else { + return false; + } + } + + /** + * Retrieves the number of seconds the driver will wait for a + * Statement object to execute. If the limit is exceeded, a + * SQLException is thrown. + * + * For MonetDB this method always returns zero, as no query + * cancelling is possible. + * + * @return the current query timeout limit in seconds; zero means + * there is no limit + * @throws SQLException if a database access error occurs + * @see #setQueryTimeout(int) + */ + @Override + public int getQueryTimeout() throws SQLException { + return 0; + } + + /** + * Retrieves the current result as a ResultSet object. This method + * should be called only once per result. + * + * @return the current result as a ResultSet object or null if the result + * is an update count or there are no more results + * @throws SQLException if a database access error occurs + */ + @Override + public ResultSet getResultSet() throws SQLException{ + return (header instanceof MonetConnection.ResultSetResponse) + ? new MonetResultSet(this, + (MonetConnection.ResultSetResponse)header) + : null; + } + + /** + * Retrieves the result set concurrency for ResultSet objects generated + * by this Statement object. + * + * @return either ResultSet.CONCUR_READ_ONLY or ResultSet.CONCUR_UPDATABLE + */ + @Override + public int getResultSetConcurrency() { + return resultSetConcurrency; + } + + /** + * Retrieves the result set holdability for ResultSet objects + * generated by this Statement object. + * + * @return either ResultSet.HOLD_CURSORS_OVER_COMMIT or + * ResultSet.CLOSE_CURSORS_AT_COMMIT + * @throws SQLException if a database access error occurs + */ + @Override + public int getResultSetHoldability() throws SQLException { + return ResultSet.HOLD_CURSORS_OVER_COMMIT; + } + + /** + * Retrieves the result set type for ResultSet objects generated by this + * Statement object. + * + * @return one of ResultSet.TYPE_FORWARD_ONLY, + * ResultSet.TYPE_SCROLL_INSENSITIVE, or + * ResultSet.TYPE_SCROLL_SENSITIVE + */ + @Override + public int getResultSetType() { + return resultSetType; + } + + /** + * Retrieves the current result as an update count; if the result is a + * ResultSet object or there are no more results, -1 is returned. This + * method should be called only once per result. + * + * @return the current result as an update count; -1 if the current result + * is a ResultSet object or there are no more results + * @throws SQLException if a database access error occurs + */ + @Override + public int getUpdateCount() throws SQLException { + int ret = -1; + if (header instanceof MonetConnection.UpdateResponse) { + ret = ((MonetConnection.UpdateResponse)header).count; + } else if (header instanceof MonetConnection.SchemaResponse) { + ret = ((MonetConnection.SchemaResponse)header).state; + } + + return ret; + } + + /** + * Retrieves the first warning reported by calls on this Statement object. + * If there is more than one warning, subsequent warnings will be chained to + * the first one and can be retrieved by calling the method + * SQLWarning.getNextWarning on the warning that was retrieved previously. + * + * This method may not be called on a closed statement; doing so will cause + * an SQLException to be thrown. + * + * Note: Subsequent warnings will be chained to this SQLWarning. + * + * @return the first SQLWarning object or null if there are none + * @throws SQLException if a database access error occurs or this method is + * called on a closed connection + */ + @Override + public SQLWarning getWarnings() throws SQLException { + if (closed) + throw new SQLException("Cannot call on closed Statement", "M1M20"); + + // if there are no warnings, this will be null, which fits with the + // specification. + return warnings; + } + + /** + * Sets the SQL cursor name to the given String, which will be used + * by subsequent Statement object execute methods. This name can + * then be used in SQL positioned update or delete statements to + * identify the current row in the ResultSet object generated by + * this statement. If the database does not support positioned + * update/delete, this method is a noop. To insure that a cursor has + * the proper isolation level to support updates, the cursor's + * SELECT statement should have the form SELECT FOR UPDATE. If FOR + * UPDATE is not present, positioned updates may fail. + * + * <b>Note:</b> By definition, the execution of positioned updates + * and deletes must be done by a different Statement object than the + * one that generated the ResultSet object being used for + * positioning. Also, cursor names must be unique within a + * connection. + * + * Since MonetDB does not support positioned update/delete, this + * method is a noop. + * + * @param name the new cursor name, which must be unique within a + * connection + * @throws SQLException if a database access error occurs + */ + @Override + public void setCursorName(String name) throws SQLException { + addWarning("setCursorName: positioned updates/deletes not supported", "01M21"); + } + + /** + * Sets escape processing on or off. If escape scanning is on (the + * default), the driver will do escape substitution before sending + * the SQL statement to the database. Note: Since prepared + * statements have usually been parsed prior to making this call, + * disabling escape processing for PreparedStatements objects will + * have no effect. + * + * The MonetDB JDBC driver implements no escape processing at all in + * its current implementation because it is too expensive, and in + * general should not be necessary given SQL standards compliance. + * In this sense, this driver will ignore any call to this function. + * + * @param enable true to enable escape processing; false to disable + * it + * @throws SQLException if a database access error occurs + */ + @Override + public void setEscapeProcessing(boolean enable) throws SQLException { + if (enable) + addWarning("setEscapeProcessing: JDBC escape syntax is not supported by this driver", "01M22"); + } + + /** + * Gives the driver a hint as to the direction in which rows will be + * processed in ResultSet objects created using this Statement object. + * The default value is ResultSet.FETCH_FORWARD. + * + * Note that this method sets the default fetch direction for result sets + * generated by this Statement object. Each result set has its own methods + * for getting and setting its own fetch direction. + * + * @param direction the initial direction for processing rows + * @throws SQLException if a database access error occurs or the given + * direction is not one of ResultSet.FETCH_FORWARD, + * ResultSet.FETCH_REVERSE, or ResultSet.FETCH_UNKNOWN + */ + @Override + public void setFetchDirection(int direction) throws SQLException { + if (direction == ResultSet.FETCH_FORWARD || + direction == ResultSet.FETCH_REVERSE || + direction == ResultSet.FETCH_UNKNOWN) + { + fetchDirection = direction; + } else { + throw new SQLException("Illegal direction: " + direction, "M1M05"); + } + } + + /** + * Gives the JDBC driver a hint as to the number of rows that should be + * fetched from the database when more rows are needed. The number of rows + * specified affects only result sets created using this statement. If the + * value specified is zero, then the hint is ignored. + * + * @param rows the number of rows to fetch + * @throws SQLException if the condition 0 <= rows <= this.getMaxRows() + * is not satisfied. + */ + @Override + public void setFetchSize(int rows) throws SQLException { + if (rows >= 0 && !(getMaxRows() != 0 && rows > getMaxRows())) { + fetchSize = rows; + } else { + throw new SQLException("Illegal fetch size value: " + rows, "M1M05"); + } + } + + /** + * Sets the limit for the maximum number of bytes in a ResultSet + * column storing character or binary values to the given number of + * bytes. This limit applies only to BINARY, VARBINARY, + * LONGVARBINARY, CHAR, VARCHAR, and LONGVARCHAR fields. If the + * limit is exceeded, the excess data is silently discarded. For + * maximum portability, use values greater than 256. + * + * MonetDB does not support any fieldsize limiting, and hence the + * driver does not emulate it either, since it doesn't really lead + * to memory reduction. + * + * @param max the new column size limit in bytes; zero means there + * is no limit + * @throws SQLException if a database access error occurs or the + * condition max >= 0 is not satisfied + */ + @Override + public void setMaxFieldSize(int max) throws SQLException { + if (max < 0) + throw new SQLException("Illegal max value: " + max, "M1M05"); + if (max > 0) + addWarning("setMaxFieldSize: field size limitation not supported", "01M23"); + } + + /** + * Sets the limit for the maximum number of rows that any ResultSet object + * can contain to the given number. If the limit is exceeded, the excess + * rows are silently dropped. + * + * @param max the new max rows limit; zero means there is no limit + * @throws SQLException if the condition max >= 0 is not satisfied + */ + @Override + public void setMaxRows(int max) throws SQLException { + if (max < 0) + throw new SQLException("Illegal max value: " + max, "M1M05"); + maxRows = max; + } + + /** + * Sets the number of seconds the driver will wait for a Statement + * object to execute to the given number of seconds. If the limit is + * exceeded, an SQLException is thrown. + * + * MonetDB does not support cancelling running queries, hence this + * method does not do anything. + * + * @param seconds the new query timeout limit in seconds; zero means + * there is no limit + * @throws SQLException if a database access error occurs or the + * condition seconds >= 0 is not satisfied + */ + @Override + public void setQueryTimeout(int seconds) throws SQLException { + if (seconds < 0) + throw new SQLException("Illegal timeout value: " + seconds, "M1M05"); + if (seconds > 0) + addWarning("setQueryTimeout: query time outs not supported", "01M24"); + } + + //== 1.6 methods (JDBC 4.0) + + /** + * Retrieves whether this Statement object has been closed. A + * Statement is closed if the method close has been called on it, or + * if it is automatically closed. + * + * @return true if this Statement object is closed; false if it is + * still open + */ + @Override + public boolean isClosed() { + return closed; + } + + /** + * Requests that a Statement be pooled or not pooled. The value + * specified is a hint to the statement pool implementation + * indicating whether the applicaiton wants the statement to be + * pooled. It is up to the statement pool manager as to whether the + * hint is used. + * + * The poolable value of a statement is applicable to both internal + * statement caches implemented by the driver and external statement + * caches implemented by application servers and other applications. + * + * By default, a Statement is not poolable when created, and a + * PreparedStatement and CallableStatement are poolable when + * created. + * + * @param poolable requests that the statement be pooled if true + * and that the statement not be pooled if false + */ + @Override + public void setPoolable(boolean poolable) { + this.poolable = poolable; + } + + /** + * Returns a value indicating whether the Statement is poolable or + * not. + * + * @return true if the Statement is poolable; false otherwise + */ + @Override + public boolean isPoolable() { + return poolable; + } + + //== 1.7 methods (JDBC 4.1) + + /** + * Specifies that this Statement will be closed when all its + * dependent result sets are closed. If execution of the Statement + * does not produce any result sets, this method has no effect. + * + * @throws SQLException if this method is called on a closed Statement + */ + @Override + public void closeOnCompletion() throws SQLException { + if (closed) + throw new SQLException("Cannot call on closed Statement", "M1M20"); + closeOnCompletion = true; + } + + /** + * Returns a value indicating whether this Statement will be closed + * when all its dependent result sets are closed. + * + * @return true if the Statement will be closed when all of its + * dependent result sets are closed; false otherwise + * @throws SQLException if this method is called on a closed Statement + */ + @Override + public boolean isCloseOnCompletion() throws SQLException { + if (closed) + throw new SQLException("Cannot call on closed Statement", "M1M20"); + return closeOnCompletion; + } + + //== end methods of interface Statement + + /** + * Adds a warning to the pile of warnings this Statement object has. If + * there were no warnings (or clearWarnings was called) this warning will + * be the first, otherwise this warning will get appended to the current + * warning. + * + * @param reason the warning message + */ + private void addWarning(String reason, String sqlstate) { + if (warnings == null) { + warnings = new SQLWarning(reason, sqlstate); + } else { + warnings.setNextWarning(new SQLWarning(reason, sqlstate)); + } + } + + /** + * Closes this Statement if there are no more open ResultSets + * (Responses). Called by MonetResultSet.close(). + */ + void closeIfCompletion() { + if (!closeOnCompletion || lastResponseList == null) + return; + if (!lastResponseList.hasUnclosedResponses()) + close(); + } +} + +/** + * This internal subclass is not intended for normal use. Therefore it is restricted to + * classes from the very same package only. + * + * Known issues with this class: some methods of the ResultSetMetaData object (obtained via getMetaData()) + * require that its statement argument (accessed via getStatement()) has a valid Statement object set. + * Instances of this subclass do not have a valid Statement (see special constructor), so + * those metadata methods do not return the correct values. + * Special checks are programmed to prevent NullPointerExceptions, see above. + * + * As of Jun2016 this class is only used by MonetStatement.getGeneratedKeys() + * Note: to resolve a javac -Xlint warning, this class definition is moved to this file. + * + * TODO: try to eliminate the need for this class completely. + */ +class MonetVirtualResultSet extends MonetResultSet { + private String results[][]; + private boolean closed; + + MonetVirtualResultSet( + Statement statement, + String[] columns, + String[] types, + String[][] results + ) throws IllegalArgumentException { + super(statement, columns, types, results.length); + + this.results = results; + closed = false; + } + + /** + * This method is overridden in order to let it use the results array + * instead of the cache in the Statement object that created it. + * + * @param row the number of the row to which the cursor should move. A + * positive number indicates the row number counting from the + * beginning of the result set; a negative number indicates the row + * number counting from the end of the result set + * @return true if the cursor is on the result set; false otherwise + * @throws SQLException if a database error occurs + */ + @Override + public boolean absolute(int row) throws SQLException { + if (closed) + throw new SQLException("ResultSet is closed!", "M1M20"); + + // first calculate what the JDBC row is + if (row < 0) { + // calculate the negatives... + row = tupleCount + row + 1; + } + // now place the row not farther than just before or after the result + if (row < 0) row = 0; // before first + else if (row > tupleCount + 1) row = tupleCount + 1; // after last + + // store it + curRow = row; + + // see if we have the row + if (row < 1 || row > tupleCount) return false; + + for (int i = 0; i < results[row - 1].length; i++) { + tlp.values[i] = results[row - 1][i]; + } + + return true; + } + + /** + * Mainly here to prevent errors when the close method is called. There + * is no real need for this object to close it. We simply remove our + * resultset data. + */ + @Override + public void close() { + if (!closed) { + closed = true; + results = null; + // types and columns are MonetResultSets private parts + } + } +}
new file mode 100644 --- /dev/null +++ b/src/main/java/nl/cwi/monetdb/jdbc/MonetWrapper.java @@ -0,0 +1,73 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +package nl.cwi.monetdb.jdbc; + +import java.sql.*; + +/** + * A Wrapper class that implements nothing. + * + * This Class is used to simply provide JDBC4 Wrapper functions, for as + * long as we don't really understand that they are for and what they + * are supposed to do. Hence the implementations are very stupid and + * non-useful, ignoring any argument and claiming stuff doesn't work, or + * won't work out. + * + * @author Fabian Groffen + * @version 1.0 + */ +public class MonetWrapper implements Wrapper { + /** + * Returns true if this either implements the interface argument or + * is directly or indirectly a wrapper for an object that does. + * Returns false otherwise. If this implements the interface then + * return true, else if this is a wrapper then return the result of + * recursively calling isWrapperFor on the wrapped object. If this + * does not implement the interface and is not a wrapper, return + * false. This method should be implemented as a low-cost operation + * compared to unwrap so that callers can use this method to avoid + * expensive unwrap calls that may fail. If this method returns true + * then calling unwrap with the same argument should succeed. + * + * @param iface a Class defining an interface. + * @return true if this implements the interface or directly or + * indirectly wraps an object that does. + * @throws SQLException if an error occurs while determining + * whether this is a wrapper for an object with the given + * interface. + */ + @Override + public boolean isWrapperFor(Class<?> iface) throws SQLException { + return false; + } + + /** + * Returns an object that implements the given interface to allow + * access to non-standard methods, or standard methods not exposed + * by the proxy. If the receiver implements the interface then the + * result is the receiver or a proxy for the receiver. If the + * receiver is a wrapper and the wrapped object implements the + * interface then the result is the wrapped object or a proxy for + * the wrapped object. Otherwise return the the result of calling + * unwrap recursively on the wrapped object or a proxy for that + * result. If the receiver is not a wrapper and does not implement + * the interface, then an SQLException is thrown. + * + * @param iface A Class defining an interface that the result must + * implement. + * @return an object that implements the interface. May be a proxy + * for the actual implementing object. + * @throws SQLException If no object found that implements the + * interface + */ + @Override + public <T> T unwrap(Class<T> iface) throws SQLException { + throw new SQLException("No object found (not implemented)", "0A000"); + } +}
new file mode 100644 --- /dev/null +++ b/src/main/java/nl/cwi/monetdb/jdbc/types/INET.java @@ -0,0 +1,162 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +package nl.cwi.monetdb.jdbc.types; + +import java.sql.*; +import java.net.*; + +/** + * The INET class represents the INET datatype in MonetDB. It + * represents a IPv4 address with a certain mask applied. Currently, + * IPv6 is not supported. + * <br /> + * The input format for INET is x.x.x.x/y where x.x.x.x is an IP address + * and y is the number of bits in the netmask. If the /y part is left + * off, then the netmask is 32, and the value represents just a single + * host. On display, the /y portion is suppressed if the netmask is 32. + * <br /> + * This class allows to retrieve the value of this INET as InetAddress. + * This is probably meaningful only and only if the netmask is 32. The + * getNetmaskBits() method can be used to retrieve the subnet bits. + */ +public class INET implements SQLData { + private String inet; + + @Override + public String getSQLTypeName() { + return "inet"; + } + + @Override + public void readSQL(SQLInput stream, String typeName) throws SQLException { + if (typeName.compareTo("inet") != 0) + throw new SQLException("can only use this class with 'inet' type", + "M1M05"); + inet = stream.readString(); + } + + @Override + public void writeSQL(SQLOutput stream) throws SQLException { + stream.writeString(inet); + } + + @Override + public String toString() { + return inet; + } + + public void fromString(String newinet) throws Exception { + if (newinet == null) { + inet = newinet; + return; + } + int slash = newinet.indexOf('/'); + String tinet = newinet; + if (slash != -1) { + int netmask; + // ok, see if it is a valid netmask + try { + netmask = Integer.parseInt(newinet.substring(slash + 1)); + } catch (NumberFormatException nfe) { + throw new Exception("cannot parse netmask bits: " + + newinet.substring(slash + 1)); + } + if (netmask <= 0 || netmask > 32) + throw new Exception("netmask must be >0 and <32"); + tinet = newinet.substring(0, slash); + } + // check dotted quad + String quads[] = tinet.split("\\."); + if (quads.length != 4) + throw new Exception("expected dotted quad (xxx.xxx.xxx.xxx)"); + for (int i = 0; i < 4; i++) { + int quadv; + try { + quadv = Integer.parseInt(quads[i]); + } catch (NumberFormatException nfe) { + throw new Exception("cannot parse number: " + quads[i]); + } + if (quadv < 0 || quadv > 255) + throw new Exception("value must be between 0 and 255: " + + quads[i]); + } + // everything is fine + inet = newinet; + } + + public String getAddress() { + if (inet == null) + return null; + + // inet optionally has a /y part, if y < 32, chop it off + int slash = inet.indexOf('/'); + if (slash != -1) + return inet.substring(0, slash); + return inet; + } + + public void setAddress(String newinet) throws Exception { + if (newinet == null) { + inet = newinet; + return; + } + if (newinet.indexOf('/') != -1) + throw new Exception("IPv4 address cannot contain '/' " + + "(use fromString() instead)"); + fromString(newinet); + } + + public int getNetmaskBits() throws SQLException { + if (inet == null) + return 0; + + // if netmask is 32, it is omitted in the output + int slash = inet.indexOf('/'); + if (slash == -1) + return 32; + try { + return Integer.parseInt(inet.substring(slash + 1)); + } catch (NumberFormatException nfe) { + throw new SQLException("cannot parse netmask bits: " + + inet.substring(slash + 1), "M0M27"); + } + } + + public void setNetmaskBits(int bits) throws Exception { + String newinet = inet; + if (newinet == null) { + newinet = "0.0.0.0/" + bits; + } else { + int slash = newinet.indexOf('/'); + if (slash != -1) { + newinet = newinet.substring(0, slash + 1) + bits; + } else { + newinet = newinet + "/" + bits; + } + } + fromString(newinet); + } + + public InetAddress getInetAddress() throws SQLException { + if (inet == null) + return null; + + try { + return InetAddress.getByName(getAddress()); + } catch (UnknownHostException uhe) { + throw new SQLException("could not resolve IP address", "M0M27"); + } + } + + public void setInetAddress(InetAddress iaddr) throws Exception { + if (!(iaddr instanceof Inet4Address)) + throw new Exception("only IPv4 are supported currently"); + fromString(iaddr.getHostAddress()); + } +}
new file mode 100644 --- /dev/null +++ b/src/main/java/nl/cwi/monetdb/jdbc/types/URL.java @@ -0,0 +1,69 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +package nl.cwi.monetdb.jdbc.types; + +import java.sql.*; +import java.net.*; + +/** + * The URL class represents the URL datatype in MonetDB. It + * represents an URL, that is, a well-formed string conforming to + * RFC2396. + */ +public class URL implements SQLData { + private String url; + + @Override + public String getSQLTypeName() { + return "url"; + } + + @Override + public void readSQL(SQLInput stream, String typeName) throws SQLException { + if (typeName.compareTo("url") != 0) + throw new SQLException("can only use this class with 'url' type", + "M1M05"); + url = stream.readString(); + } + + @Override + public void writeSQL(SQLOutput stream) throws SQLException { + stream.writeString(url); + } + + @Override + public String toString() { + return url; + } + + public void fromString(String newurl) throws Exception { + if (newurl == null) { + url = newurl; + return; + } + new java.net.URL(newurl); + // if above doesn't fail (throws an Exception), it is fine + url = newurl; + } + + public java.net.URL getURL() throws SQLException { + if (url == null) + return null; + + try { + return new java.net.URL(url); + } catch (MalformedURLException mue) { + throw new SQLException("data is not a valid URL", "M0M27"); + } + } + + public void setURL(java.net.URL nurl) throws Exception { + url = nurl.toString(); + } +}
new file mode 100644 --- /dev/null +++ b/src/main/java/nl/cwi/monetdb/mcl/MCLException.java @@ -0,0 +1,24 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +package nl.cwi.monetdb.mcl; + +/** + * A general purpose Exception class for MCL related problems. This + * class should be used if no more precise Exception class exists. + */ +public class MCLException extends Exception { + /** + * + */ + private static final long serialVersionUID = 1L; + + public MCLException(String e) { + super(e); + } +}
new file mode 100644 --- /dev/null +++ b/src/main/java/nl/cwi/monetdb/mcl/io/BufferedMCLReader.java @@ -0,0 +1,195 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +package nl.cwi.monetdb.mcl.io; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.io.UnsupportedEncodingException; + +/** + * Read text from a character-input stream, buffering characters so as + * to provide a means for efficient reading of characters, arrays and + * lines. This class is based on the BufferedReader class, and provides + * extra functionality useful for MCL. + * + * The BufferedMCLReader is typically used as layer inbetween an + * InputStream and a specific interpreter of the data. + * <pre> + * / Response + * BufferedMCLReader ---o <- Tuple + * \ DataBlock + * </pre> + * Because the BufferedMCLReader provides an efficient way to access the + * data from the stream in a linewise fashion, whereby each line is + * identified as a certain type, consumers can easily decide how to + * parse each retrieved line. The line parsers from + * nl.cwi.monetdb.mcl.parser are well suited to work with the lines + * outputted by the BufferedMCLReader. + * This class is client-oriented, as it doesn't take into account the + * messages as the server receives them. + * + * @author Fabian Groffen <Fabian.Groffen> + * @see nl.cwi.monetdb.mcl.net.MapiSocket + * @see nl.cwi.monetdb.mcl.io.BufferedMCLWriter + */ +public class BufferedMCLReader extends BufferedReader { + /** The type of the last line read */ + private int lineType; + + /** "there is currently no line", or the the type is unknown is + represented by UNKNOWN */ + public final static int UNKNOWN = 0; + /** a line starting with ! indicates ERROR */ + public final static int ERROR = '!'; + /** a line starting with % indicates HEADER */ + public final static int HEADER = '%'; + /** a line starting with [ indicates RESULT */ + public final static int RESULT = '['; + /** a line which matches the pattern of prompt1 is a PROMPT */ + public final static int PROMPT = '.'; + /** a line which matches the pattern of prompt2 is a MORE */ + public final static int MORE = ','; + /** a line starting with & indicates the start of a header block */ + public final static int SOHEADER = '&'; + /** a line starting with ^ indicates REDIRECT */ + public final static int REDIRECT = '^'; + /** a line starting with # indicates INFO */ + public final static int INFO = '#'; + + /** + * Create a buffering character-input stream that uses a + * default-sized input buffer. + * + * @param in A Reader + */ + public BufferedMCLReader(Reader in) { + super(in); + } + + /** + * Create a buffering character-input stream that uses a + * default-sized input buffer, from an InputStream. + * + * @param in An InputStream + * @param enc Encoding + */ + public BufferedMCLReader(InputStream in, String enc) + throws UnsupportedEncodingException + { + super(new InputStreamReader(in, enc)); + } + + /** + * Read a line of text. A line is considered to be terminated by + * any one of a line feed ('\n'), a carriage return ('\r'), or a + * carriage return followed immediately by a linefeed. Before this + * method returns, it sets the linetype to any of the in MCL + * recognised line types. + * + * Warning: until the server properly prefixes all of its error + * messages with SQLSTATE codes, this method prefixes all errors it + * sees without sqlstate with the generic data exception code + * (22000). + * + * @return A String containing the contents of the line, not + * including any line-termination characters, or null if the + * end of the stream has been reached + * @throws IOException If an I/O error occurs + */ + @Override + public String readLine() throws IOException { + String r = super.readLine(); + setLineType(r); + if (lineType == ERROR && !r.matches("^![0-9A-Z]{5}!.+")) + r = "!22000!" + r.substring(1); + return r; + } + + /** + * Sets the linetype to the type of the string given. If the string + * is null, lineType is set to UNKNOWN. + * + * @param line the string to examine + */ + void setLineType(String line) { + lineType = UNKNOWN; + if (line == null || line.length() == 0) + return; + switch (line.charAt(0)) { + case '!': + lineType = ERROR; + break; + case '&': + lineType = SOHEADER; + break; + case '%': + lineType = HEADER; + break; + case '[': + lineType = RESULT; + break; + case '=': + lineType = RESULT; + break; + case '^': + lineType = REDIRECT; + break; + case '#': + lineType = INFO; + break; + case '.': + lineType = PROMPT; + break; + case ',': + lineType = MORE; + break; + } + } + + /** + * getLineType returns the type of the last line read. + * + * @return an integer representing the kind of line this is, one of the + * following constants: UNKNOWN, HEADER, ERROR, PROMPT, + * RESULT, REDIRECT, INFO + */ + public int getLineType() { + return lineType; + } + + /** + * Reads up till the MonetDB prompt, indicating the server is ready + * for a new command. All read data is discarded. If the last line + * read by readLine() was a prompt, this method will immediately + * return. + * + * If there are errors present in the lines that are read, then they + * are put in one string and returned <b>after</b> the prompt has + * been found. If no errors are present, null will be returned. + * + * @return a string containing error messages, or null if there aren't any + * @throws IOException if an IO exception occurs while talking to the server + * + * TODO(Wouter): should probably not have to be synchronized. + StringBuilder... + */ + final public synchronized String waitForPrompt() throws IOException { + String ret = "", tmp; + while (lineType != PROMPT) { + if ((tmp = readLine()) == null) + throw new IOException("Connection to server lost!"); + if (lineType == ERROR) + ret += "\n" + tmp.substring(1); + } + return ret == "" ? null : ret.trim(); + } + +}
new file mode 100644 --- /dev/null +++ b/src/main/java/nl/cwi/monetdb/mcl/io/BufferedMCLWriter.java @@ -0,0 +1,96 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +package nl.cwi.monetdb.mcl.io; + +import java.io.*; + +/** + * Write text to a character-output stream, buffering characters so as + * to provide a means for efficient writing of single characters, + * arrays, and strings. + * + * In contrast to the BufferedWriter class, this class' newLine() + * method always writes the newline character '\n', regardless the + * platform's own notion of line separator. Apart from that there are + * no differences in the behaviour of this class, compared to its parent + * class, the BufferedWriter. A small convenience is built into this + * class for cooperation with the BufferedMCLReader, via the + * registerReader() method. It causes the reader to be reset upon each + * write performed though this class. This effectuates the MCL protocol + * flow where a write invalidates the state of the read buffers, since + * each write must be answered by the server. That also makes this + * class client-oriented when a reader is registered. + * + * @author Fabian Groffen <Fabian.Groffen> + * @see nl.cwi.monetdb.mcl.net.MapiSocket + * @see nl.cwi.monetdb.mcl.io.BufferedMCLWriter + */ +public class BufferedMCLWriter extends BufferedWriter { + private BufferedMCLReader reader; + + /** + * Create a buffered character-output stream that uses a + * default-sized output buffer. + * + * @param in A Writer + */ + public BufferedMCLWriter(Writer in) { + super(in); + } + + /** + * Create a buffered character-output stream that uses a + * default-sized output buffer, from an OutputStream. + * + * @param in An OutputStream + * @param enc Encoding + */ + public BufferedMCLWriter(OutputStream in, String enc) + throws UnsupportedEncodingException + { + super(new OutputStreamWriter(in, enc)); + } + + /** + * Registers the given reader in this writer. A registered reader + * receives a linetype reset when a line is written from this + * writer. + * + * @param r an BufferedMCLReader + */ + public void registerReader(BufferedMCLReader r) { + reader = r; + } + + /** + * Write a line separator. The line separator string is in this + * class always the single newline character '\n'. + * + * @throws IOException If an I/O error occurs + */ + @Override + public void newLine() throws IOException { + write('\n'); + } + + /** + * Write a single line, terminated with a line separator, and flush + * the stream. This is a shorthand method for a call to write() + * and flush(). + * + * @param line The line to write + * @throws IOException If an I/O error occurs + */ + public void writeLine(String line) throws IOException { + write(line); + flush(); + // reset reader state, last line isn't valid any more now + if (reader != null) reader.setLineType(null); + } +}
new file mode 100644 --- /dev/null +++ b/src/main/java/nl/cwi/monetdb/mcl/net/MapiSocket.java @@ -0,0 +1,1103 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +package nl.cwi.monetdb.mcl.net; + +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.EOFException; +import java.io.FileWriter; +import java.io.FilterInputStream; +import java.io.FilterOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.PrintStream; +import java.io.PrintWriter; +import java.io.UnsupportedEncodingException; +import java.io.Writer; +import java.net.Socket; +import java.net.SocketException; +import java.net.URI; +import java.net.URISyntaxException; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import nl.cwi.monetdb.mcl.MCLException; +import nl.cwi.monetdb.mcl.io.BufferedMCLReader; +import nl.cwi.monetdb.mcl.io.BufferedMCLWriter; +import nl.cwi.monetdb.mcl.parser.MCLParseException; + +/** + * A Socket for communicating with the MonetDB database in MAPI block + * mode. + * + * The MapiSocket implements the protocol specifics of the MAPI block + * mode protocol, and interfaces it as a socket that delivers a + * BufferedReader and a BufferedWriter. Because logging in is an + * integral part of the MAPI protocol, the MapiSocket performs the login + * procedure. Like the Socket class, various options can be set before + * calling the connect() method to influence the login process. Only + * after a successful call to connect() the BufferedReader and + * BufferedWriter can be retrieved. + * <br /> + * For each line read, it is determined what type of line it is + * according to the MonetDB MAPI protocol. This results in a line to be + * PROMPT, HEADER, RESULT, ERROR or UNKNOWN. Use the getLineType() + * method on the BufferedMCLReader to retrieve the type of the last + * line read. + * + * For debugging purposes a socket level debugging is implemented where + * each and every interaction to and from the MonetDB server is logged + * to a file on disk.<br /> + * Incoming messages are prefixed by "RX" (received by the driver), + * outgoing messages by "TX" (transmitted by the driver). Special + * decoded non-human readable messages are prefixed with "RD" and "TD" + * instead. Following this two char prefix, a timestamp follows as the + * number of milliseconds since the UNIX epoch. The rest of the line is + * a String representation of the data sent or received. + * + * The general use of this Socket must be seen only in the full context + * of a MAPI connection to a server. It has the same ingredients as a + * normal Socket, allowing for seamless plugging. + * <pre> + * Socket \ / InputStream ----> (BufferedMCL)Reader + * > o < + * MapiSocket / \ OutputStream ----> (BufferedMCL)Writer + * </pre> + * The MapiSocket allows to retrieve Streams for communicating. They + * are interfaced, so they can be chained in any way. While the Socket + * transparently deals with how data is sent over the wire, the actual + * data read needs to be interpreted, for which a Reader/Writer + * interface is most sufficient. In particular the BufferedMCL* + * implementations of those interfaces supply some extra functionality + * geared towards the format of the data. + * + * @author Fabian Groffen + * @version 4.1 + * @see nl.cwi.monetdb.mcl.io.BufferedMCLReader + * @see nl.cwi.monetdb.mcl.io.BufferedMCLWriter + */ +public final class MapiSocket { + /** The TCP Socket to mserver */ + private Socket con; + /** Stream from the Socket for reading */ + private InputStream fromMonet; + /** Stream from the Socket for writing */ + private OutputStream toMonet; + /** MCLReader on the InputStream */ + private BufferedMCLReader reader; + /** MCLWriter on the OutputStream */ + private BufferedMCLWriter writer; + /** protocol version of the connection */ + private int version; + + /** The database to connect to */ + private String database = null; + /** The language to connect with */ + private String language = "sql"; + /** The hash methods to use (null = default) */ + private String hash = null; + /** Whether we should follow redirects */ + private boolean followRedirects = true; + /** How many redirections do we follow until we're fed up with it? */ + private int ttl = 10; + /** Whether we are debugging or not */ + private boolean debug = false; + /** The Writer for the debug log-file */ + private Writer log; + + /** The blocksize (hardcoded in compliance with stream.mx) */ + public final static int BLOCK = 8 * 1024 - 2; + + /** A short in two bytes for holding the block size in bytes */ + private byte[] blklen = new byte[2]; + + /** + * Constructs a new MapiSocket. + */ + public MapiSocket() { + con = null; + } + + /** + * Sets the database to connect to. If database is null, a + * connection is made to the default database of the server. This + * is also the default. + * + * @param db the database + */ + public void setDatabase(String db) { + this.database = db; + } + + /** + * Sets the language to use for this connection. + * + * @param lang the language + */ + public void setLanguage(String lang) { + this.language = lang; + } + + /** + * Sets the hash method to use. Note that this method is intended + * for debugging purposes. Setting a hash method can yield in + * connection failures. Multiple hash methods can be given by + * separating the hashes by commas. + * DON'T USE THIS METHOD if you don't know what you're doing. + * + * @param hash the hash method to use + */ + public void setHash(String hash) { + this.hash = hash; + } + + /** + * Sets whether MCL redirections should be followed or not. If set + * to false, an MCLException will be thrown when a redirect is + * encountered during connect. The default bahaviour is to + * automatically follow redirects. + * + * @param r whether to follow redirects (true) or not (false) + */ + public void setFollowRedirects(boolean r) { + this.followRedirects = r; + } + + /** + * Sets the number of redirects that are followed when + * followRedirects is true. In order to avoid going into an endless + * loop due to some evil server, or another error, a maximum number + * of redirects that may be followed can be set here. Note that to + * disable the following of redirects you should use + * setFollowRedirects. + * + * @see #setFollowRedirects(boolean r) + * @param t the number of redirects before an exception is thrown + */ + public void setTTL(int t) { + this.ttl = t; + } + + /** + * Set the SO_TIMEOUT on the underlying Socket. When for some + * reason the connection to the database hangs, this setting can be + * useful to break out of this indefinite wait. + * This option must be enabled prior to entering the blocking + * operation to have effect. + * + * @param s The specified timeout, in milliseconds. A timeout + * of zero is interpreted as an infinite timeout. + * @throws SocketException Issue with the socket + */ + public void setSoTimeout(int s) throws SocketException { + // limit time to wait on blocking operations (0 = indefinite) + con.setSoTimeout(s); + } + + /** + * Gets the SO_TIMEOUT from the underlying Socket. + * + * @return the currently in use timeout in milliseconds + * @throws SocketException Issue with the socket + */ + public int getSoTimeout() throws SocketException { + return con.getSoTimeout(); + } + + /** + * Enables/disables debug + * + * @param debug Value to set + */ + public void setDebug(boolean debug) { + this.debug = debug; + } + + /** + * Connects to the given host and port, logging in as the given + * user. If followRedirect is false, a RedirectionException is + * thrown when a redirect is encountered. + * + * @param host the hostname, or null for the loopback address + * @param port the port number + * @param user the username + * @param pass the password + * @return A List with informational (warning) messages. If this + * list is empty; then there are no warnings. + * @throws IOException if an I/O error occurs when creating the + * socket + * @throws MCLParseException if bogus data is received + * @throws MCLException if an MCL related error occurs + */ + public List<String> connect(String host, int port, String user, String pass) + throws IOException, MCLParseException, MCLException { + // Wrap around the internal connect that needs to know if it + // should really make a TCP connection or not. + return connect(host, port, user, pass, true); + } + + private List<String> connect(String host, int port, String user, String pass, + boolean makeConnection) + throws IOException, MCLParseException, MCLException { + if (ttl-- <= 0) + throw new MCLException("Maximum number of redirects reached, aborting connection attempt. Sorry."); + + if (makeConnection) { + con = new Socket(host, port); + // set nodelay, as it greatly speeds up small messages (like we + // often do) + con.setTcpNoDelay(true); + + fromMonet = new BlockInputStream(con.getInputStream()); + toMonet = new BlockOutputStream(con.getOutputStream()); + try { + reader = new BufferedMCLReader(fromMonet, "UTF-8"); + writer = new BufferedMCLWriter(toMonet, "UTF-8"); + } catch (UnsupportedEncodingException e) { + throw new AssertionError(e.toString()); + } + writer.registerReader(reader); + } + + String c = reader.readLine(); + reader.waitForPrompt(); + writer.writeLine( + getChallengeResponse( + c, + user, + pass, + language, + database, + hash + ) + ); + + // read monet response till prompt + List<String> redirects = new ArrayList<String>(); + List<String> warns = new ArrayList<String>(); + String err = "", tmp; + int lineType; + do { + if ((tmp = reader.readLine()) == null) + throw new IOException("Read from " + + con.getInetAddress().getHostName() + ":" + + con.getPort() + ": End of stream reached"); + if ((lineType = reader.getLineType()) == BufferedMCLReader.ERROR) { + err += "\n" + tmp.substring(7); + } else if (lineType == BufferedMCLReader.INFO) { + warns.add(tmp.substring(1)); + } else if (lineType == BufferedMCLReader.REDIRECT) { + redirects.add(tmp.substring(1)); + } + } while (lineType != BufferedMCLReader.PROMPT); + if (err != "") { + close(); + throw new MCLException(err.trim()); + } + if (!redirects.isEmpty()) { + if (followRedirects) { + // Ok, server wants us to go somewhere else. The list + // might have multiple clues on where to go. For now we + // don't support anything intelligent but trying the + // first one. URI should be in form of: + // "mapi:monetdb://host:port/database?arg=value&..." + // or + // "mapi:merovingian://proxy?arg=value&..." + // note that the extra arguments must be obeyed in both + // cases + String suri = redirects.get(0).toString(); + if (!suri.startsWith("mapi:")) + throw new MCLException("unsupported redirect: " + suri); + + URI u; + try { + u = new URI(suri.substring(5)); + } catch (URISyntaxException e) { + throw new MCLParseException(e.toString()); + } + + tmp = u.getQuery(); + if (tmp != null) { + String args[] = tmp.split("&"); + for (int i = 0; i < args.length; i++) { + int pos = args[i].indexOf("="); + if (pos > 0) { + tmp = args[i].substring(0, pos); + if (tmp.equals("database")) { + tmp = args[i].substring(pos + 1); + if (!tmp.equals(database)) { + warns.add("redirect points to different " + + "database: " + tmp); + setDatabase(tmp); + } + } else if (tmp.equals("language")) { + tmp = args[i].substring(pos + 1); + warns.add("redirect specifies use of different language: " + tmp); + setLanguage(tmp); + } else if (tmp.equals("user")) { + tmp = args[i].substring(pos + 1); + if (!tmp.equals(user)) + warns.add("ignoring different username '" + tmp + "' set by " + + "redirect, what are the security implications?"); + } else if (tmp.equals("password")) { + warns.add("ignoring different password set by redirect, " + + "what are the security implications?"); + } else { + warns.add("ignoring unknown argument '" + tmp + "' from redirect"); + } + } else { + warns.add("ignoring illegal argument from redirect: " + + args[i]); + } + } + } + + if (u.getScheme().equals("monetdb")) { + // this is a redirect to another (monetdb) server, + // which means a full reconnect + // avoid the debug log being closed + if (debug) { + debug = false; + close(); + debug = true; + } else { + close(); + } + tmp = u.getPath(); + if (tmp != null && tmp.length() != 0) { + tmp = tmp.substring(1).trim(); + if (!tmp.isEmpty() && !tmp.equals(database)) { + warns.add("redirect points to different " + + "database: " + tmp); + setDatabase(tmp); + } + } + int p = u.getPort(); + warns.addAll(connect(u.getHost(), p == -1 ? port : p, + user, pass, true)); + warns.add("Redirect by " + host + ":" + port + " to " + suri); + } else if (u.getScheme().equals("merovingian")) { + // reuse this connection to inline connect to the + // right database that Merovingian proxies for us + warns.addAll(connect(host, port, user, pass, false)); + } else { + throw new MCLException("unsupported scheme in redirect: " + suri); + } + } else { + StringBuilder msg = new StringBuilder("The server sent a redirect for this connection:"); + for (String it : redirects) { + msg.append(" [" + it + "]"); + } + throw new MCLException(msg.toString()); + } + } + return warns; + } + + /** + * A little helper function that processes a challenge string, and + * returns a response string for the server. If the challenge + * string is null, a challengeless response is returned. + * + * @param chalstr the challenge string + * @param username the username to use + * @param password the password to use + * @param language the language to use + * @param database the database to connect to + * @param hash the hash method(s) to use, or NULL for all supported + * hashes + */ + private String getChallengeResponse( + String chalstr, + String username, + String password, + String language, + String database, + String hash + ) throws MCLParseException, MCLException, IOException { + String response; + String algo; + + // parse the challenge string, split it on ':' + String[] chaltok = chalstr.split(":"); + if (chaltok.length <= 4) throw + new MCLParseException("Server challenge string unusable! Challenge contains too few tokens: " + chalstr); + + // challenge string to use as salt/key + String challenge = chaltok[0]; + String servert = chaltok[1]; + try { + version = Integer.parseInt(chaltok[2].trim()); // protocol version + } catch (NumberFormatException e) { + throw new MCLParseException("Protocol version unparseable: " + chaltok[3]); + } + + // handle the challenge according to the version it is + switch (version) { + default: + throw new MCLException("Unsupported protocol version: " + version); + case 9: + // proto 9 is like 8, but uses a hash instead of the + // plain password, the server tells us which hash in the + // challenge after the byte-order + + /* NOTE: Java doesn't support RIPEMD160 :( */ + if (chaltok[5].equals("SHA512")) { + algo = "SHA-512"; + } else if (chaltok[5].equals("SHA384")) { + algo = "SHA-384"; + } else if (chaltok[5].equals("SHA256")) { + algo = "SHA-256"; + /* NOTE: Java doesn't support SHA-224 */ + } else if (chaltok[5].equals("SHA1")) { + algo = "SHA-1"; + } else if (chaltok[5].equals("MD5")) { + algo = "MD5"; + } else { + throw new MCLException("Unsupported password hash: " + + chaltok[5]); + } + + try { + MessageDigest md = MessageDigest.getInstance(algo); + md.update(password.getBytes("UTF-8")); + byte[] digest = md.digest(); + password = toHex(digest); + } catch (NoSuchAlgorithmException e) { + throw new AssertionError("internal error: " + e.toString()); + } catch (UnsupportedEncodingException e) { + throw new AssertionError("internal error: " + e.toString()); + } + + // proto 7 (finally) used the challenge and works with a + // password hash. The supported implementations come + // from the server challenge. We chose the best hash + // we can find, in the order SHA1, MD5, plain. Also, + // the byte-order is reported in the challenge string, + // which makes sense, since only blockmode is supported. + // proto 8 made this obsolete, but retained the + // byte-order report for future "binary" transports. In + // proto 8, the byte-order of the blocks is always little + // endian because most machines today are. + String hashes = (hash == null ? chaltok[3] : hash); + Set<String> hashesSet = new HashSet<String>(Arrays.asList(hashes.toUpperCase().split("[, ]"))); + + // if we deal with merovingian, mask our credentials + if (servert.equals("merovingian") && !language.equals("control")) { + username = "merovingian"; + password = "merovingian"; + } + String pwhash; + algo = null; + + if (hashesSet.contains("SHA512")) { + algo = "SHA-512"; + pwhash = "{SHA512}"; + } else if (hashesSet.contains("SHA384")) { + algo = "SHA-384"; + pwhash = "{SHA384}"; + } else if (hashesSet.contains("SHA256")) { + algo = "SHA-256"; + pwhash = "{SHA256}"; + } else if (hashesSet.contains("SHA1")) { + algo = "SHA-1"; + pwhash = "{SHA1}"; + } else if (hashesSet.contains("MD5")) { + algo = "MD5"; + pwhash = "{MD5}"; + } else { + throw new MCLException("no supported password hashes in " + hashes); + } + if (algo != null) { + try { + MessageDigest md = MessageDigest.getInstance(algo); + md.update(password.getBytes("UTF-8")); + md.update(challenge.getBytes("UTF-8")); + byte[] digest = md.digest(); + pwhash += toHex(digest); + } catch (NoSuchAlgorithmException e) { + throw new AssertionError("internal error: " + e.toString()); + } catch (UnsupportedEncodingException e) { + throw new AssertionError("internal error: " + e.toString()); + } + } + // TODO: some day when we need this, we should store + // this + if (chaltok[4].equals("BIG")) { + // byte-order of server is big-endian + } else if (chaltok[4].equals("LIT")) { + // byte-order of server is little-endian + } else { + throw new MCLParseException("Invalid byte-order: " + chaltok[5]); + } + + // generate response + response = "BIG:"; // JVM byte-order is big-endian + response += username + ":" + pwhash + ":" + language; + response += ":" + (database == null ? "" : database) + ":"; + + return response; + } + } + + private static char hexChar(int n) { + return (n > 9) + ? (char) ('a' + (n - 10)) + : (char) ('0' + n); + } + + /** + * Small helper method to convert a byte string to a hexadecimal + * string representation. + * + * @param digest the byte array to convert + * @return the byte array as hexadecimal string + */ + private static String toHex(byte[] digest) { + char[] result = new char[digest.length * 2]; + int pos = 0; + for (int i = 0; i < digest.length; i++) { + result[pos++] = hexChar((digest[i] & 0xf0) >> 4); + result[pos++] = hexChar(digest[i] & 0x0f); + } + return new String(result); + } + + /** + * Returns an InputStream that reads from this open connection on + * the MapiSocket. + * + * @return an input stream that reads from this open connection + */ + public InputStream getInputStream() { + return fromMonet; + } + + /** + * Returns an output stream for this MapiSocket. + * + * @return an output stream for writing bytes to this MapiSocket + */ + public OutputStream getOutputStream() { + return toMonet; + } + + /** + * Returns a Reader for this MapiSocket. The Reader is a + * BufferedMCLReader which does protocol interpretation of the + * BlockInputStream produced by this MapiSocket. + * + * @return a BufferedMCLReader connected to this MapiSocket + */ + public BufferedMCLReader getReader() { + return reader; + } + + /** + * Returns a Writer for this MapiSocket. The Writer is a + * BufferedMCLWriter which produces protocol compatible data blocks + * that the BlockOutputStream can properly translate into blocks. + * + * @return a BufferedMCLWriter connected to this MapiSocket + */ + public BufferedMCLWriter getWriter() { + return writer; + } + + /** + * Returns the mapi protocol version used by this socket. The + * protocol version depends on the server being used. Users of the + * MapiSocket should check this version to act appropriately. + * + * @return the mapi protocol version + */ + public int getProtocolVersion() { + return version; + } + + /** + * Enables logging to a file what is read and written from and to + * the server. Logging can be enabled at any time. However, it is + * encouraged to start debugging before actually connecting the + * socket. + * + * @param filename the name of the file to write to + * @throws IOException if the file could not be opened for writing + */ + public void debug(String filename) throws IOException { + debug(new FileWriter(filename)); + } + + /** + * Enables logging to a stream what is read and written from and to + * the server. Logging can be enabled at any time. However, it is + * encouraged to start debugging before actually connecting the + * socket. + * + * @param out to write the log to + * @throws IOException if the file could not be opened for writing + */ + public void debug(PrintStream out) throws IOException { + debug(new PrintWriter(out)); + } + + /** + * Enables logging to a stream what is read and written from and to + * the server. Logging can be enabled at any time. However, it is + * encouraged to start debugging before actually connecting the + * socket. + * + * @param out to write the log to + * @throws IOException if the file could not be opened for writing + */ + public void debug(Writer out) throws IOException { + log = out; + debug = true; + } + + /** + * Inner class that is used to write data on a normal stream as a + * blocked stream. A call to the flush() method will write a + * "final" block to the underlying stream. Non-final blocks are + * written as soon as one or more bytes would not fit in the + * current block any more. This allows to write to a block to it's + * full size, and then flush it explicitly to have a final block + * being written to the stream. + */ + class BlockOutputStream extends FilterOutputStream { + private int writePos = 0; + private byte[] block = new byte[BLOCK]; + private int blocksize = 0; + + /** + * Constructs this BlockOutputStream, backed by the given + * OutputStream. A BufferedOutputStream is internally used. + */ + public BlockOutputStream(OutputStream out) { + // always use a buffered stream, even though we know how + // much bytes to write/read, since this is just faster for + // some reason + super(new BufferedOutputStream(out)); + } + + @Override + public void flush() throws IOException { + // write the block (as final) then flush. + writeBlock(true); + out.flush(); + + // it's a bit nasty if an exception is thrown from the log, + // but ignoring it can be nasty as well, so it is decided to + // let it go so there is feedback about something going wrong + // it's a bit nasty if an exception is thrown from the log, + // but ignoring it can be nasty as well, so it is decided to + // let it go so there is feedback about something going wrong + if (debug) { + log.flush(); + } + } + + /** + * writeBlock puts the data in the block on the stream. The + * boolean last controls whether the block is sent with an + * indicator to note it is the last block of a sequence or not. + * + * @param last whether this is the last block + * @throws IOException if writing to the stream failed + */ + public void writeBlock(boolean last) throws IOException { + if (last) { + // always fits, because of BLOCK's size + blocksize = (short)writePos; + // this is the last block, so encode least + // significant bit in the first byte (little-endian) + blklen[0] = (byte)(blocksize << 1 & 0xFF | 1); + blklen[1] = (byte)(blocksize >> 7); + } else { + // always fits, because of BLOCK's size + blocksize = (short)BLOCK; + // another block will follow, encode least + // significant bit in the first byte (little-endian) + blklen[0] = (byte)(blocksize << 1 & 0xFF); + blklen[1] = (byte)(blocksize >> 7); + } + + out.write(blklen); + + // write the actual block + out.write(block, 0, writePos); + + if (debug) { + if (last) { + logTd("write final block: " + writePos + " bytes"); + } else { + logTd("write block: " + writePos + " bytes"); + } + logTx(new String(block, 0, writePos, "UTF-8")); + } + + writePos = 0; + } + + @Override + public void write(int b) throws IOException { + if (writePos == BLOCK) { + writeBlock(false); + } + block[writePos++] = (byte)b; + } + + @Override + public void write(byte[] b) throws IOException { + write(b, 0, b.length); + } + + @Override + public void write(byte[] b, int off, int len) throws IOException { + int t = 0; + while (len > 0) { + t = BLOCK - writePos; + if (len > t) { + System.arraycopy(b, off, block, writePos, t); + off += t; + len -= t; + writePos += t; + writeBlock(false); + } else { + System.arraycopy(b, off, block, writePos, len); + writePos += len; + break; + } + } + } + + @Override + public void close() throws IOException { + // we don't want the flush() method to be called (default of + // the FilterOutputStream), so we close manually here + out.close(); + } + } + + + /** + * Inner class that is used to make the data on the blocked stream + * available as a normal stream. + */ + class BlockInputStream extends FilterInputStream { + private int readPos = 0; + private int blockLen = 0; + private byte[] block = new byte[BLOCK + 3]; // \n.\n + + /** + * Constructs this BlockInputStream, backed by the given + * InputStream. A BufferedInputStream is internally used. + */ + public BlockInputStream(InputStream in) { + // always use a buffered stream, even though we know how + // much bytes to write/read, since this is just faster for + // some reason + super(new BufferedInputStream(in)); + } + + @Override + public int available() { + return blockLen - readPos; + } + + @Override + public boolean markSupported() { + return false; + } + + @Override + public void mark(int readlimit) { + throw new AssertionError("Not implemented!"); + } + + @Override + public void reset() { + throw new AssertionError("Not implemented!"); + } + + /** + * Small wrapper to get a blocking variant of the read() method + * on the BufferedInputStream. We want to benefit from the + * Buffered pre-fetching, but not dealing with half blocks. + * Changing this class to be able to use the partially received + * data will greatly complicate matters, while a performance + * improvement is debatable given the relatively small size of + * our blocks. Maybe it does speed up on slower links, then + * consider this method a quick bug fix/workaround. + * + * @return false if reading the block failed due to EOF + */ + private boolean _read(byte[] b, int len) throws IOException { + int s; + int off = 0; + + while (len > 0) { + s = in.read(b, off, len); + if (s == -1) { + // if we have read something before, we should have been + // able to read the whole, so make this fatal + if (off > 0) { + if (debug) { + logRd("the following incomplete block was received:"); + logRx(new String(b, 0, off, "UTF-8")); + } + throw new IOException("Read from " + + con.getInetAddress().getHostName() + ":" + + con.getPort() + ": Incomplete block read from stream"); + } + if (debug) + logRd("server closed the connection (EOF)"); + return false; + } + len -= s; + off += s; + } + + return true; + } + + /** + * Reads the next block on the stream into the internal buffer, + * or writes the prompt in the buffer. + * + * The blocked stream protocol consists of first a two byte + * integer indicating the length of the block, then the + * block, followed by another length + block. The end of + * such sequence is put in the last bit of the length, and + * hence this length should be shifted to the right to + * obtain the real length value first. We simply fetch + * blocks here as soon as they are needed for the stream's + * read methods. + * + * The user-flush, which is an implicit effect of the end of + * a block sequence, is communicated beyond the stream by + * inserting a prompt sequence on the stream after the last + * block. This method makes sure that a final block ends with a + * newline, if it doesn't already, in order to facilitate a + * Reader that is possibly chained to this InputStream. + * + * If the stream is not positioned correctly, hell will break + * loose. + */ + private int readBlock() throws IOException { + // read next two bytes (short) + if (!_read(blklen, 2)) + return(-1); + + // Get the short-value and store its value in blockLen. + blockLen = (short)( + (blklen[0] & 0xFF) >> 1 | + (blklen[1] & 0xFF) << 7 + ); + readPos = 0; + + if (debug) { + if ((blklen[0] & 0x1) == 1) { + logRd("read final block: " + blockLen + " bytes"); + } else { + logRd("read new block: " + blockLen + " bytes"); + } + } + + // sanity check to avoid bad servers make us do an ugly + // stack trace + if (blockLen > block.length) + throw new AssertionError("Server sent a block " + + "larger than BLOCKsize: " + + blockLen + " > " + block.length); + if (!_read(block, blockLen)) + return(-1); + + if (debug) + logRx(new String(block, 0, blockLen, "UTF-8")); + + // if this is the last block, make it end with a newline and + // prompt + if ((blklen[0] & 0x1) == 1) { + if (blockLen > 0 && block[blockLen - 1] != '\n') { + // to terminate the block in a Reader + block[blockLen++] = '\n'; + } + // insert 'fake' flush + block[blockLen++] = BufferedMCLReader.PROMPT; + block[blockLen++] = '\n'; + if (debug) + logRd("inserting prompt"); + } + + return(blockLen); + } + + @Override + public int read() throws IOException { + if (available() == 0) { + if (readBlock() == -1) + return(-1); + } + + if (debug) + logRx(new String(block, readPos, 1, "UTF-8")); + return (int)block[readPos++]; + } + + @Override + public int read(byte[] b) throws IOException { + return read(b, 0, b.length); + } + + @Override + public int read(byte[] b, int off, int len) throws IOException { + int t; + int size = 0; + while (size < len) { + t = available(); + if (t == 0) { + if (size != 0) + break; + if (readBlock() == -1) { + if (size == 0) + size = -1; + break; + } + t = available(); + } + if (len > t) { + System.arraycopy(block, readPos, b, off, t); + off += t; + len -= t; + readPos += t; + size += t; + } else { + System.arraycopy(block, readPos, b, off, len); + readPos += len; + size += len; + break; + } + } + return size; + } + + @Override + public long skip(long n) throws IOException { + long skip = n; + int t = 0; + while (skip > 0) { + t = available(); + if (skip > t) { + skip -= t; + readPos += t; + readBlock(); + } else { + readPos += skip; + break; + } + } + return n; + } + } + + /** + * Closes the streams and socket connected to the server if + * possible. If an error occurs during disconnecting it is ignored. + */ + public synchronized void close() { + try { + if (reader != null) reader.close(); + if (writer != null) writer.close(); + if (fromMonet != null) fromMonet.close(); + if (toMonet != null) toMonet.close(); + if (con != null) con.close(); + if (debug && log instanceof FileWriter) log.close(); + } catch (IOException e) { + // ignore it + } + } + + /** + * Destructor called by garbage collector before destroying this + * object tries to disconnect the MonetDB connection if it has not + * been disconnected already. + */ + @Override + protected void finalize() throws Throwable { + close(); + super.finalize(); + } + + + /** + * Writes a logline tagged with a timestamp using the given string. + * Used for debugging purposes only and represents a message that is + * connected to writing to the socket. A logline might look like: + * TX 152545124: Hello MonetDB! + * + * @param message the message to log + * @throws IOException if an IO error occurs while writing to the logfile + */ + private void logTx(String message) throws IOException { + log.write("TX " + System.currentTimeMillis() + + ": " + message + "\n"); + } + + /** + * Writes a logline tagged with a timestamp using the given string. + * Lines written using this log method are tagged as "added + * metadata" which is not strictly part of the data sent. + * + * @param message the message to log + * @throws IOException if an IO error occurs while writing to the logfile + */ + private void logTd(String message) throws IOException { + log.write("TD " + System.currentTimeMillis() + + ": " + message + "\n"); + } + + /** + * Writes a logline tagged with a timestamp using the given string, + * and flushes afterwards. Used for debugging purposes only and + * represents a message that is connected to reading from the + * socket. The log is flushed after writing the line. A logline + * might look like: + * RX 152545124: Hi JDBC! + * + * @param message the message to log + * @throws IOException if an IO error occurs while writing to the logfile + */ + private void logRx(String message) throws IOException { + log.write("RX " + System.currentTimeMillis() + + ": " + message + "\n"); + log.flush(); + } + + /** + * Writes a logline tagged with a timestamp using the given string, + * and flushes afterwards. Lines written using this log method are + * tagged as "added metadata" which is not strictly part of the data + * received. + * + * @param message the message to log + * @throws IOException if an IO error occurs while writing to the logfile + */ + private void logRd(String message) throws IOException { + log.write("RD " + System.currentTimeMillis() + + ": " + message + "\n"); + log.flush(); + } +}
new file mode 100644 --- /dev/null +++ b/src/main/java/nl/cwi/monetdb/mcl/parser/HeaderLineParser.java @@ -0,0 +1,182 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +package nl.cwi.monetdb.mcl.parser; + + +/** + * The HeaderLineParser is a generic MCLParser that extracts values from + * a metadata header in the MCL protocol either as string or integer + * values. + * + * @author Fabian Groffen <Fabian.Groffen> + */ +public class HeaderLineParser extends MCLParser { + private int type; + + public final static int NAME = 1; + public final static int LENGTH = 2; + public final static int TABLE = 3; + public final static int TYPE = 4; + + /** + * Constructs a HeaderLineParser which expects columncount columns. + * + * @param columncount the number of columns in the to be parsed string + */ + public HeaderLineParser(int columncount) { + super(columncount); + } + + /** + * Parses the given String source as header line. If source cannot + * be parsed, an MCLParseException is thrown. The columncount argument + * given during construction is used for allocation of the backing + * array. Parsing a header line with has more fields will therefore + * result in a crash. While this seems illogical, the caller should + * know this size, since the StartOfHeader contains this + * information. + * + * @param source a String which should be parsed + * @return the type of then parsed header line + * @throws MCLParseException if an error occurs during parsing + */ + @Override + public int parse(String source) throws MCLParseException { + char[] chrLine = source.toCharArray(); + int len = chrLine.length; + int pos = 0; + boolean foundChar = false; + boolean nameFound = false; + // find header name + for (int i = len - 1; i >= 0; i--) { + switch (chrLine[i]) { + case ' ': + case '\n': + case '\t': + case '\r': + if (!foundChar) { + len = i - 1; + } else { + pos = i + 1; + } + break; + case '#': + // found! + nameFound = true; + if (pos == 0) pos = i + 1; + i = 0; // force the loop to terminate + break; + default: + foundChar = true; + pos = 0; + break; + } + } + if (!nameFound) + throw new MCLParseException("invalid header, no header name found", pos); + + // depending on the name of the header, we continue + switch (chrLine[pos]) { + case 'n': + if (len - pos == 4 && + source.regionMatches(pos + 1, "name", 1, 3)) + { + getValues(chrLine, 2, pos - 3); + type = NAME; + } + break; + case 'l': + if (len - pos == 6 && + source.regionMatches(pos + 1, "length", 1, 5)) + { + getIntValues(chrLine, 2, pos - 3); + type = LENGTH; + } + break; + case 't': + if (len - pos == 4 && + source.regionMatches(pos + 1, "type", 1, 3)) + { + getValues(chrLine, 2, pos - 3); + type = TYPE; + } else if (len - pos == 10 && + source.regionMatches(pos + 1, "table_name", 1, 9)) + { + getValues(chrLine, 2, pos - 3); + type = TABLE; + } + break; + default: + throw new MCLParseException("unknown header: " + + (new String(chrLine, pos, len - pos))); + } + + // adjust colno + reset(); + + return type; + } + + /** + * Returns an array of Strings containing the values between + * ',\t' separators. Note that no quoting/dequoting is done in this + * method. + * + * @param chrLine a character array holding the input data + * @param start where the relevant data starts + * @param stop where the relevant data stops + */ + final private void getValues(char[] chrLine, int start, int stop) { + int elem = 0; + + for (int i = start + 1; i < stop; i++) { + if (chrLine[i] == '\t' && chrLine[i - 1] == ',') { + values[elem++] = + new String(chrLine, start, i - 1 - start); + start = i + 1; + } + } + // add the left over part + values[elem++] = new String(chrLine, start, stop - start); + } + + /** + * Returns an array of ints containing the values between + * ',\t' separators. + * + * @param chrLine a character array holding the input data + * @param start where the relevant data starts + * @param stop where the relevant data stops + */ + final private void getIntValues(char[] chrLine, int start, int stop) + throws MCLParseException + { + int elem = 0; + int tmp = 0; + + for (int i = start; i < stop; i++) { + if (chrLine[i] == ',' && chrLine[i + 1] == '\t') { + intValues[elem++] = tmp; + tmp = 0; + start = i++; + } else { + tmp *= 10; + // note: don't use Character.isDigit() here, because + // we only want ISO-LATIN-1 digits + if (chrLine[i] >= '0' && chrLine[i] <= '9') { + tmp += (int)chrLine[i] - (int)'0'; + } else { + throw new MCLParseException("expected a digit in " + new String(chrLine) + " at " + i); + } + } + } + // add the left over part + intValues[elem++] = tmp; + } +}
new file mode 100644 --- /dev/null +++ b/src/main/java/nl/cwi/monetdb/mcl/parser/MCLParseException.java @@ -0,0 +1,35 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +package nl.cwi.monetdb.mcl.parser; + +import java.text.ParseException; + +/** + * When an MCLParseException is thrown, the MCL protocol is violated by + * the sender. In general a stream reader throws an + * MCLParseException as soon as something that is read cannot be + * understood or does not conform to the specifications (e.g. a + * missing field). The instance that throws the exception will try to + * give an error offset whenever possible. Alternatively it makes sure + * that the error message includes the offending data read. + */ +public class MCLParseException extends ParseException { + /** + * + */ + private static final long serialVersionUID = 1L; + + public MCLParseException(String e) { + super(e, -1); + } + + public MCLParseException(String e, int offset) { + super(e, offset); + } +}
new file mode 100644 --- /dev/null +++ b/src/main/java/nl/cwi/monetdb/mcl/parser/MCLParser.java @@ -0,0 +1,105 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +package nl.cwi.monetdb.mcl.parser; + + +/** + * Interface for parsers in MCL. The parser family in MCL is set up as + * a reusable object. This allows the same parser to be used again for + * the same type of work. While this is a very unnatural solution in + * the Java language, it prevents many object creations on a low level + * of the protocol. This favours performance. + * + * A typical parser has a method parse() which takes a String, and the + * methods hasNext() and next() to retrieve the values that were + * extracted by the parser. Parser specific methods may be available to + * perform common tasks. + * + * @author Fabian Groffen + */ +public abstract class MCLParser { + /** The String values found while parsing. Public, you may touch it. */ + public final String values[]; + /** The int values found while parsing. Public, you may touch it. */ + public final int intValues[]; + private int colnr; + + /** + * Creates an MCLParser targetted at a given number of field values. + * The lines parsed by an instance of this MCLParser should have + * exactly capacity field values. + * + * @param capacity the number of field values to expect + */ + protected MCLParser(int capacity) { + values = new String[capacity]; + intValues = new int[capacity]; + } + + /** + * Parse the given string, and populate the internal field array + * to allow for next() and hasNext() calls. + * + * @param source the String containing the line to parse + * @return value + * @throws MCLParseException if source cannot be (fully) parsed by + * this parser + * @see #next() + * @see #nextInt() + * @see #hasNext() + */ + abstract public int parse(String source) throws MCLParseException; + + /** + * Repositions the internal field offset to the start, such that the + * next call to next() will return the first field again. + */ + final public void reset() { + colnr = 0; + } + + /** + * Returns whether the next call to next() or nextInt() succeeds. + * + * @return true if the next call to next() or nextInt() is bound to + * succeed + * @see #next() + * @see #nextInt() + */ + final public boolean hasNext() { + return colnr < values.length; + } + + /** + * Returns the current field value, and advances the field counter + * to the next value. This method may fail with a RuntimeError if + * the current field counter is out of bounds. Call hasNext() to + * determine if the call to next() will succeed. + * + * @return the current field value + * @see #nextInt() + * @see #hasNext() + */ + final public String next() { + return values[colnr++]; + } + + /** + * Returns the current field value as integer, and advances the + * field counter to the next value. This method has the same + * characteristics as the next() method, apart from returning the + * field value as an integer. + * + * @return the current field value as integer + * @see #next() + */ + final public int nextInt() { + return intValues[colnr++]; + } +}
new file mode 100644 --- /dev/null +++ b/src/main/java/nl/cwi/monetdb/mcl/parser/StartOfHeaderParser.java @@ -0,0 +1,138 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +package nl.cwi.monetdb.mcl.parser; + +import java.nio.CharBuffer; + +/** + * The StartOfHeaderParser allows easy examination of a start of header + * line. It does not fit into the general MCLParser framework because + * it uses a different interface. While the parser is very shallow, it + * requires the caller to know about the header lines that are parsed. + * All this parser does is detect the (valid) type of a soheader, and + * allow to return the fields in it as integer or string. An extra + * bonus is that it can return if another field should be present in the + * soheader. + * + * @author Fabian Groffen <Fabian.Groffen> + */ +public class StartOfHeaderParser { + private CharBuffer soh = null; + private int len; + private int pos; + + /* Query types (copied from sql_query.mx) */ + + /** A parse response (not handled) */ + public final static int Q_PARSE = '0'; + /** A tabular response (typical ResultSet) */ + public final static int Q_TABLE = '1'; + /** A response to an update statement, contains number of affected + * rows and generated key-id */ + public final static int Q_UPDATE = '2'; + /** A response to a schema update */ + public final static int Q_SCHEMA = '3'; + /** A response to a transation statement (start, rollback, abort, + * commit) */ + public final static int Q_TRANS = '4'; + /** A tabular response in response to a PREPARE statement containing + * information about the wildcard values that need to be supplied */ + public final static int Q_PREPARE = '5'; + /** A tabular continuation response (for a ResultSet) */ + public final static int Q_BLOCK = '6'; + /** An unknown and unsupported response */ + public final static int Q_UNKNOWN = 0 ; + + public final int parse(String in) throws MCLParseException { + soh = CharBuffer.wrap(in); + soh.get(); // skip the & + int type = soh.get(); + switch (type) { + default: + throw new MCLParseException("invalid or unknown header", 1); + case Q_PARSE: + case Q_SCHEMA: + len = 0; + break; + case Q_TABLE: + case Q_PREPARE: + len = 4; + soh.get(); + break; + case Q_UPDATE: + len = 2; + soh.get(); + break; + case Q_TRANS: + len = 1; + soh.get(); + break; + case Q_BLOCK: + len = 3; + soh.get(); + break; + } + pos = 0; + return type; + } + + public final boolean hasNext() { + return pos < len; + } + + /** + * Returns the next token in the CharBuffer as integer. The value is + * considered to end at the end of the CharBuffer or at a space. If + * a non-numeric character is encountered an MCLParseException is + * thrown. + * + * @return The next token in the CharBuffer as integer + * @throws MCLParseException if no numeric value could be read + */ + public final int getNextAsInt() throws MCLParseException { + pos++; + if (!soh.hasRemaining()) throw + new MCLParseException("unexpected end of string", soh.position() - 1); + int tmp; + char chr = soh.get(); + // note: don't use Character.isDigit() here, because + // we only want ISO-LATIN-1 digits + if (chr >= '0' && chr <= '9') { + tmp = (int)chr - (int)'0'; + } else { + throw new MCLParseException("expected a digit", soh.position() - 1); + } + + while (soh.hasRemaining() && (chr = soh.get()) != ' ') { + tmp *= 10; + if (chr >= '0' && chr <= '9') { + tmp += (int)chr - (int)'0'; + } else { + throw new MCLParseException("expected a digit", soh.position() - 1); + } + } + + return tmp; + } + + public final String getNextAsString() throws MCLParseException { + pos++; + if (!soh.hasRemaining()) throw + new MCLParseException("unexpected end of string", soh.position() - 1); + int cnt = 0; + soh.mark(); + while (soh.hasRemaining() && soh.get() != ' ') { + cnt++; + } + + soh.reset(); + + return soh.subSequence(0, cnt).toString(); + } +}
new file mode 100644 --- /dev/null +++ b/src/main/java/nl/cwi/monetdb/mcl/parser/TupleLineParser.java @@ -0,0 +1,183 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +package nl.cwi.monetdb.mcl.parser; + +/** + * The TupleLineParser extracts the values from a given tuple. The + * number of values that are expected are known upfront to speed up + * allocation and validation. + * + * @author Fabian Groffen <Fabian.Groffen> + */ +public class TupleLineParser extends MCLParser { + /** + * Constructs a TupleLineParser which expects columncount columns. + * + * @param columncount the number of columns in the to be parsed string + */ + public TupleLineParser(int columncount) { + super(columncount); + } + + /** + * Parses the given String source as tuple line. If source cannot + * be parsed, a ParseException is thrown. The columncount argument + * is used for allocation of the returned array. While this seems + * illogical, the caller should know this size, since the + * StartOfHeader contains this information. + * + * @param source a String which should be parsed + * @return 0, as there is no 'type' of TupleLine + * @throws ParseException if an error occurs during parsing + */ + @Override + public int parse(String source) throws MCLParseException { + int len = source.length(); + char[] chrLine = new char[len]; + source.getChars(0, len, chrLine, 0); + + // first detect whether this is a single value line (=) or a + // real tuple ([) + if (chrLine[0] == '=') { + if (values.length != 1) + throw new MCLParseException(values.length + + " columns expected, but only single value found"); + + // return the whole string but the leading = + values[0] = source.substring(1); + + // reset colnr + reset(); + + return 0; + } + + // extract separate fields by examining string, char for char + boolean inString = false, escaped = false; + int cursor = 2, column = 0, i = 2; + StringBuilder uesc = new StringBuilder(); + for (; i < len; i++) { + switch(chrLine[i]) { + default: + escaped = false; + break; + case '\\': + escaped = !escaped; + break; + case '"': + /** + * If all strings are wrapped between two quotes, a \" can + * never exist outside a string. Thus if we believe that we + * are not within a string, we can safely assume we're about + * to enter a string if we find a quote. + * If we are in a string we should stop being in a string if + * we find a quote which is not prefixed by a \, for that + * would be an escaped quote. However, a nasty situation can + * occur where the string is like "test \\" as obvious, a + * test for a \ in front of a " doesn't hold here for all + * cases. Because "test \\\"" can exist as well, we need to + * know if a quote is prefixed by an escaping slash or not. + */ + if (!inString) { + inString = true; + } else if (!escaped) { + inString = false; + } + + // reset escaped flag + escaped = false; + break; + case '\t': + if (!inString && + (i > 0 && chrLine[i - 1] == ',') || + (i + 1 == len - 1 && chrLine[++i] == ']')) // dirty + { + // split! + if (chrLine[cursor] == '"' && + chrLine[i - 2] == '"') + { + // reuse the StringBuilder by cleaning it + uesc.delete(0, uesc.length()); + // prevent capacity increasements + uesc.ensureCapacity((i - 2) - (cursor + 1)); + for (int pos = cursor + 1; pos < i - 2; pos++) { + if (chrLine[pos] == '\\' && pos + 1 < i - 2) { + pos++; + // strToStr and strFromStr in gdk_atoms.mx only + // support \t \n \\ \" and \377 + switch (chrLine[pos]) { + case '\\': + uesc.append('\\'); + break; + case 'n': + uesc.append('\n'); + break; + case 't': + uesc.append('\t'); + break; + case '"': + uesc.append('"'); + break; + case '0': case '1': case '2': case '3': + // this could be an octal number, let's check it out + if (pos + 2 < i - 2 && + chrLine[pos + 1] >= '0' && chrLine[pos + 1] <= '7' && + chrLine[pos + 2] >= '0' && chrLine[pos + 2] <= '7' + ) { + // we got the number! + try { + uesc.append((char)(Integer.parseInt("" + chrLine[pos] + chrLine[pos + 1] + chrLine[pos + 2], 8))); + pos += 2; + } catch (NumberFormatException e) { + // hmmm, this point should never be reached actually... + throw new AssertionError("Flow error, should never try to parse non-number"); + } + } else { + // do default action if number seems not to be correct + uesc.append(chrLine[pos]); + } + break; + default: + // this is wrong, just ignore the escape, and print the char + uesc.append(chrLine[pos]); + break; + } + } else { + uesc.append(chrLine[pos]); + } + } + + // put the unescaped string in the right place + values[column++] = uesc.toString(); + } else if ((i - 1) - cursor == 4 && + source.indexOf("NULL", cursor) == cursor) + { + values[column++] = null; + } else { + values[column++] = + source.substring(cursor, i - 1); + } + cursor = i + 1; + } + + // reset escaped flag + escaped = false; + break; + } + } + // check if this result is of the size we expected it to be + if (column != values.length) + throw new MCLParseException("illegal result length: " + column + "\nlast read: " + (column > 0 ? values[column - 1] : "<none>")); + + // reset colnr + reset(); + + return 0; + } +}
new file mode 100644 --- /dev/null +++ b/src/main/java/nl/cwi/monetdb/merovingian/Control.java @@ -0,0 +1,401 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +package nl.cwi.monetdb.merovingian; + +import nl.cwi.monetdb.mcl.net.MapiSocket; +import nl.cwi.monetdb.mcl.io.*; +import nl.cwi.monetdb.mcl.MCLException; +import nl.cwi.monetdb.mcl.parser.MCLParseException; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.PrintStream; +import java.net.Socket; +import java.net.URI; +import java.net.URISyntaxException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Properties; + +/** + * A Control class to perform operations on a remote merovingian + * instance, using the TCP control protocol. + * + * This class implements the protocol specific bits to perform all + * possible actions against a merovingian server that has remote control + * facilities enabled. + * <br /> + * In the merovingian world, other merovingians in the vicinity are + * known to each merovingian, allowing to perform cluster wide actions. + * The implementation taken in this class is to require one known + * merovingian to get insight in the entire network. Note that + * connecting to a merovingian requires a passphrase that is likely to + * be different for each merovingian. + * + * @author Fabian Groffen + * @version 1.0 + */ +public class Control { + /** The host to connect to */ + private final String host; + /** The port to connect to */ + private final int port; + /** The passphrase to use when connecting */ + private final String passphrase; + /** The file we should write MapiSocket debuglog to */ + private String debug; + + + /** + * Constructs a new Control object. + * + * @throws IllegalArgumentException if host, port or passphrase are + * null or <= 0 + */ + public Control(String host, int port, String passphrase) + throws IllegalArgumentException + { + this.host = host; + this.port = port; + this.passphrase = passphrase; + } + + /** + * Instructs to write a MCL protocol debug log to the given file. + * This affects any newly performed command, and can be changed + * inbetween commands. Passing null to this method disables the + * debug log. + * + * @param filename the filename to write debug information to, or null + */ + public void setDebug(String filename) { + this.debug = filename; + } + + private String controlHash(String pass, String salt) { + long ho; + long h = 0; + + /* use a very simple hash function designed for a single int val + * (hash buckets), we can make this more interesting if necessary in + * the future. + * http://www.cs.hmc.edu/~geoff/classes/hmc.cs070.200101/homework10/hashfuncs.html */ + + for (int i = 0; i < pass.length(); i++) { + ho = h & 0xF8000000L; + h <<= 5; + h &= 0xFFFFFFFFL; + h ^= ho >>> 27; + h ^= (int)(pass.charAt(i)); + } + + for (int i = 0; i < salt.length(); i++) { + ho = h & 0xF8000000L; + h <<= 5; + h &= 0xFFFFFFFFL; + h ^= ho >> 27; + h ^= (int)(salt.charAt(i)); + } + + return(Long.toString(h)); + } + + final static private String RESPONSE_OK = "OK"; + + private List<String> sendCommand( + String database, String command, boolean hasOutput) + throws MerovingianException, IOException + { + BufferedMCLReader min; + BufferedMCLWriter mout; + MapiSocket ms = new MapiSocket(); + ms.setDatabase("merovingian"); + ms.setLanguage("control"); + if (debug != null) + ms.debug(debug); + try { + ms.connect(host, port, "monetdb", passphrase); + min = ms.getReader(); + mout = ms.getWriter(); + } catch (MCLParseException e) { + throw new MerovingianException(e.getMessage()); + } catch (MCLException e) { + throw new MerovingianException(e.getMessage()); + } catch (AssertionError e) { // mcl panics + ms.close(); + + // Try old protocol instead + Socket s; + PrintStream out; + BufferedReader in; + s = new Socket(host, port); + out = new PrintStream(s.getOutputStream()); + in = new BufferedReader( + new InputStreamReader(s.getInputStream())); + try { + /* login ritual, step 1: get challenge from server */ + String response = in.readLine(); + if (response == null) + throw new MerovingianException("server closed the connection"); + + if (!response.startsWith("merovingian:1:") && + !response.startsWith("merovingian:2:")) + throw new MerovingianException("unsupported merovingian server"); + + String[] tokens = response.split(":"); + if (tokens.length < 3) + throw new MerovingianException("did not understand merovingian server"); + String version = tokens[1]; + String token = tokens[2]; + + response = controlHash(passphrase, token); + if (version.equals("1")) { + out.print(response + "\n"); + } else if (version.equals("2")) { + // we only support control mode for now + out.print(response + ":control\n"); + } + + response = in.readLine(); + if (response == null) { + throw new MerovingianException("server closed the connection"); + } + + if (!response.equals(RESPONSE_OK)) { + throw new MerovingianException(response); + } + + /* send command, form is simple: "<db> <cmd>\n" */ + out.print(database + " " + command + "\n"); + + /* Response has the first line either "OK\n" or an error + * message. In case of a command with output, the data will + * follow the first line */ + response = in.readLine(); + if (response == null) { + throw new MerovingianException("server closed the connection"); + } + if (!response.equals(RESPONSE_OK)) { + throw new MerovingianException(response); + } + + if (!hasOutput) + return null; + + ArrayList<String> l = new ArrayList<String>(); + while ((response = in.readLine()) != null) { + l.add(response); + } + return l; + } finally { + in.close(); + out.close(); + s.close(); + } + } + + mout.writeLine(database + " " + command + "\n"); + ArrayList<String> l = new ArrayList<String>(); + String tmpLine = min.readLine(); + int linetype = min.getLineType(); + if (linetype == BufferedMCLReader.ERROR) + throw new MerovingianException(tmpLine.substring(6)); + if (linetype != BufferedMCLReader.RESULT) + throw new MerovingianException("unexpected line: " + tmpLine); + if (!tmpLine.substring(1).equals(RESPONSE_OK)) + throw new MerovingianException(tmpLine.substring(1)); + tmpLine = min.readLine(); + linetype = min.getLineType(); + while (linetype != BufferedMCLReader.PROMPT) { + if (linetype != BufferedMCLReader.RESULT) + throw new MerovingianException("unexpected line: " + + tmpLine); + + l.add(tmpLine.substring(1)); + + tmpLine = min.readLine(); + linetype = min.getLineType(); + } + + ms.close(); + return l; + } + + public void start(String database) + throws MerovingianException, IOException + { + sendCommand(database, "start", false); + } + + public void stop(String database) + throws MerovingianException, IOException + { + sendCommand(database, "stop", false); + } + + public void kill(String database) + throws MerovingianException, IOException + { + sendCommand(database, "kill", false); + } + + public void create(String database) + throws MerovingianException, IOException + { + sendCommand(database, "create", false); + } + + public void destroy(String database) + throws MerovingianException, IOException + { + sendCommand(database, "destroy", false); + } + + public void lock(String database) + throws MerovingianException, IOException + { + sendCommand(database, "lock", false); + } + + public void release(String database) + throws MerovingianException, IOException + { + sendCommand(database, "release", false); + } + + public void rename(String database, String newname) + throws MerovingianException, IOException + { + if (newname == null) + newname = ""; /* force error from merovingian */ + + sendCommand(database, "name=" + newname, false); + } + + /** + * Sets property for database to value. If value is null, the + * property is unset, and its inherited value becomes active again. + * + * @param database the target database + * @param property the property to set value for + * @param value the value to set + * @throws MerovingianException if performing the command failed at + * the merovingian side + * @throws IOException if connecting to or communicating with + * merovingian failed + */ + public void setProperty(String database, String property, String value) + throws MerovingianException, IOException + { + /* inherit: set to empty string */ + if (value == null) + value = ""; + + sendCommand(database, property + "=" + value, false); + } + + public void inheritProperty(String database, String property) + throws MerovingianException, IOException + { + setProperty(database, property, null); + } + + public Properties getProperties(String database) + throws MerovingianException, IOException + { + Properties ret = new Properties(); + List<String> response = sendCommand(database, "get", true); + for (String responseLine : response) { + if (responseLine.startsWith("#")) + continue; + int pos = responseLine.indexOf("="); + if (pos > 0) { + ret.setProperty( + responseLine.substring(0, pos), + responseLine.substring(pos + 1, responseLine.length())); + } + } + return ret; + } + + public Properties getDefaultProperties() + throws MerovingianException, IOException + { + return(getProperties("#defaults")); + } + + public SabaothDB getStatus(String database) + throws MerovingianException, IOException + { + List<String> response = sendCommand(database, "status", true); + if (response.isEmpty()) + throw new MerovingianException("communication error"); + return new SabaothDB(response.get(0)); + } + + /** + * Test whether a specific database exists. + * + * @param database + * @return true, iff database already exists. + * @throws MerovingianException + * @throws IOException + */ + public boolean exists(String database) + throws MerovingianException, IOException + { + List<SabaothDB> all = getAllStatuses(); + for (SabaothDB db : all) { + if (db.getName().equals(database)) { + return true; + } + } + return false; + } + + public List<SabaothDB> getAllStatuses() + throws MerovingianException, IOException + { + List<SabaothDB> l = new ArrayList<SabaothDB>(); + List<String> response = sendCommand("#all", "status", true); + try { + for (String responseLine : response) { + l.add(new SabaothDB(responseLine)); + } + } catch (IllegalArgumentException e) { + throw new MerovingianException(e.getMessage()); + } + return Collections.unmodifiableList(l); + } + + public List<URI> getAllNeighbours() + throws MerovingianException, IOException + { + List<URI> l = new ArrayList<URI>(); + List<String> response = sendCommand("anelosimus", "eximius", true); + try { + for (String responseLine : response) { + // format is <db>\t<uri> + String[] parts = responseLine.split("\t", 2); + if (parts.length != 2) + throw new MerovingianException("invalid entry: " + + responseLine); + if (parts[0].equals("*")) { + l.add(new URI(parts[1])); + } else { + l.add(new URI(parts[1] + parts[0])); + } + } + } catch (URISyntaxException e) { + throw new MerovingianException(e.getMessage()); + } + return Collections.unmodifiableList(l); + } +}
new file mode 100644 --- /dev/null +++ b/src/main/java/nl/cwi/monetdb/merovingian/MerovingianException.java @@ -0,0 +1,25 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +package nl.cwi.monetdb.merovingian; + +/** + * An Exception raised when monetdbd specific problems occur. + * + * This class is a shallow wrapper around Exception to identify an + * exception as one originating from the monetdbd instance being + * communicated with, instead of a locally generated one. + * + * @author Fabian Groffen + * @version 1.0 + */ +public class MerovingianException extends Exception { + public MerovingianException(String reason) { + super(reason); + } +}
new file mode 100644 --- /dev/null +++ b/src/main/java/nl/cwi/monetdb/merovingian/SabaothDB.java @@ -0,0 +1,246 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +package nl.cwi.monetdb.merovingian; + +import java.util.*; + +/** + * Implementation of the Sabaoth C-struct as Java object. + * + * This Class implements a parser for the string representation of a + * sabaoth information struct as returned by monetdbd. + * <br /> + * Currently this class implements version 1 and 2 of the sabdb + * serialisation. + * + * @version 2.0 + */ +public class SabaothDB { + /** The name of the database */ + private String dbname; + /** The URI how to connect to this database, or null if not + * shared */ + private String uri; + /** Whether or not the database is under maintenance */ + private boolean locked; + /** The state of this database, one of SABdbState */ + private SABdbState state; + /** A list of Strings representing the available scenarios of this + * database */ + private String[] scenarios; + /** The number of times this database was started */ + private int startCounter; + /** The number of times this database was stopped */ + private int stopCounter; + /** The number of times this database has crashed */ + private int crashCounter; + /** The number of seconds this database was running on average */ + private long avgUptime; + /** The maximum number of seconds this database was running */ + private long maxUptime; + /** The minimum number of seconds this database was running */ + private long minUptime; + /** The last time this database crashed, null if never */ + private Date lastCrash; + /** The last time this database was started, null if never */ + private Date lastStart; + /** The last time this database was stopped, null if never */ + private Date lastStop; + /** Whether the last start was a crash */ + private boolean crashAvg1; + /** Average of crashes in the last 10 start attempts */ + private double crashAvg10; + /** Average of crashes in the last 30 start attempts */ + private double crashAvg30; + + /** The serialised format header */ + private final String sabdbhdr = "sabdb:"; + + /** Sabaoth state enumeration */ + public enum SABdbState { + SABdbIllegal (0), + SABdbRunning (1), + SABdbCrashed (2), + SABdbInactive(3), + SABdbStarting(4); + + private final int cValue; + + SABdbState(int cValue) { + this.cValue = cValue; + } + + public int getcValue() { + return(cValue); + } + + static SABdbState getInstance(int val) throws IllegalArgumentException { + /* using this syntax because I can't find examples that do + * it without it */ + for (SABdbState s : SABdbState.values()) { + if (s.getcValue() == val) { + return(s); + } + } + throw new IllegalArgumentException("No such state with value: " + + val); + } + } + + + /** + * Constructs a new SabaothDB object from a String. + * + * @param sabdb the serialised sabdb C-struct + */ + public SabaothDB(String sabdb) + throws IllegalArgumentException + { + if (sabdb == null) + throw new IllegalArgumentException("String is null"); + if (!sabdb.startsWith(sabdbhdr)) + throw new IllegalArgumentException("String is not a Sabaoth struct"); + String[] parts = sabdb.split(":", 3); + if (parts.length != 3) + throw new IllegalArgumentException("String seems incomplete, " + + "expected 3 components, only found " + parts.length); + int protover; + try { + protover = Integer.parseInt(parts[1]); + } catch (NumberFormatException e) { + throw new IllegalArgumentException("Illegal protocol version: " + + parts[1]); + } + if (protover != 1 && protover != 2) + throw new IllegalArgumentException("Unsupported protocol version: " + protover); + sabdb = parts[2]; + parts = sabdb.split(",", -2); + if (protover == 1 && parts.length != 16 || protover == 2 && parts.length != 17) + throw new IllegalArgumentException("String seems wrong, " + + "unexpected number of components: " + parts.length); + + /* Sabaoth sabdb struct */ + int pc = 0; + this.dbname = parts[pc++]; + if (protover == 1) { + this.uri = "<unknown>"; + int lastslash = this.dbname.lastIndexOf('/'); + if (lastslash == -1) + throw new IllegalArgumentException("invalid path (needs slash): " + this.dbname); + this.dbname = this.dbname.substring(lastslash + 1); + } else { + this.uri = parts[pc++]; + } + this.locked = parts[pc++].equals("1") ? true : false; + this.state = SABdbState.getInstance(Integer.parseInt(parts[pc++])); + this.scenarios = parts[pc++].split("'"); + if (protover == 1) /* skip connections */ + pc++; + /* Sabaoth sabuplog struct */ + this.startCounter = Integer.parseInt(parts[pc++]); + this.stopCounter = Integer.parseInt(parts[pc++]); + this.crashCounter = Integer.parseInt(parts[pc++]); + this.avgUptime = Long.parseLong(parts[pc++]); + this.maxUptime = Long.parseLong(parts[pc++]); + this.minUptime = Long.parseLong(parts[pc++]); + long t = Long.parseLong(parts[pc++]); + if (t == -1) { + this.lastCrash = null; + } else { + this.lastCrash = new Date(t * 1000); + } + t = Long.parseLong(parts[pc++]); + if (t == -1) { + this.lastStart = null; + } else { + this.lastStart = new Date(t * 1000); + } + if (protover != 1) { + t = Long.parseLong(parts[pc++]); + if (t == -1) { + this.lastStop = null; + } else { + this.lastStop = new Date(t * 1000); + } + } else { + this.lastStop = null; + } + this.crashAvg1 = parts[pc++].equals("1") ? true : false; + this.crashAvg10 = Double.parseDouble(parts[pc++]); + this.crashAvg30 = Double.parseDouble(parts[pc++]); + } + + public String getName() { + return(dbname); + } + + public String getURI() { + return(uri); + } + + public boolean isLocked() { + return(locked); + } + + public SABdbState getState() { + return(state); + } + + public String[] getScenarios() { + return(scenarios); + } + + public int getStartCount() { + return(startCounter); + } + + public int getStopCount() { + return(stopCounter); + } + + public int getCrashCount() { + return(crashCounter); + } + + public long getAverageUptime() { + return(avgUptime); + } + + public long getMaximumUptime() { + return(maxUptime); + } + + public long getMinimumUptime() { + return(minUptime); + } + + public Date lastCrashed() { + return(lastCrash); + } + + public Date lastStarted() { + return(lastStart); + } + + public Date lastStopped() { + return(lastStop); + } + + public boolean lastStartWasSuccessful() { + return(crashAvg1); + } + + public double getCrashAverage10() { + return(crashAvg10); + } + + public double getCrashAverage30() { + return(crashAvg30); + } +}
new file mode 100644 --- /dev/null +++ b/src/main/java/nl/cwi/monetdb/util/CmdLineOpts.java @@ -0,0 +1,388 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +package nl.cwi.monetdb.util; + +import java.util.*; +import java.io.*; + +public class CmdLineOpts { + /** the arguments we handle */ + private Map<String, OptionContainer> opts = new HashMap<String, OptionContainer>(); + /** the options themself */ + private List<OptionContainer> options = new ArrayList<OptionContainer>(); + + /** no arguments */ + public static int CAR_ZERO = 0; + /** always one argument */ + public static int CAR_ONE = 1; + /** zero or one argument */ + public static int CAR_ZERO_ONE = 2; + /** zero or many arguments */ + public static int CAR_ZERO_MANY = 3; + /** one or many arguments */ + public static int CAR_ONE_MANY = 4; + + public CmdLineOpts() { + } + + public void addOption( + String shorta, + String longa, + int type, + String defaulta, + String descriptiona) + throws OptionsException { + OptionContainer oc = + new OptionContainer( + shorta, + longa, + type, + defaulta, + descriptiona + ); + if (shorta != null) opts.put(shorta, oc); + if (longa != null) opts.put(longa, oc); + } + + public void removeOption(String name) { + OptionContainer oc = opts.get(name); + if (oc != null) { + opts.remove(oc.shorta); + opts.remove(oc.longa); + } + } + + public OptionContainer getOption(String key) throws OptionsException { + OptionContainer ret = opts.get(key); + if (ret == null) throw + new OptionsException("No such option: " + key); + + return ret; + } + + public void processFile(File file) throws OptionsException { + // the file is there, parse it and set its settings + Properties prop = new Properties(); + try { + FileInputStream in = new FileInputStream(file); + try { + prop.load(in); + } finally { + in.close(); + } + + for (Enumeration<?> e = prop.propertyNames(); e.hasMoreElements(); ) { + String key = (String) e.nextElement(); + OptionContainer option = opts.get(key); + if (option == null) throw + new OptionsException("Unknown option: " + key); + option.resetArguments(); + option.addArgument(prop.getProperty(key)); + } + } catch (IOException e) { + // well... then forget about it + } + } + + public void processArgs(String args[]) throws OptionsException { + // parse and set the command line arguments + OptionContainer option = null; + int quant = -1; + int qcount = 0; + boolean moreData = false; + for (int i = 0; i < args.length; i++) { + if (option == null) { + if (args[i].charAt(0) != '-') throw + new OptionsException("Unexpected value: " + args[i]); + + // see what kind of argument we have + if (args[i].length() == 1) + throw new OptionsException("Illegal argument: '-'"); + if (args[i].charAt(1) == '-') { + // we have a long argument + // since we don't accept inline values we can take + // everything left in the string as argument, unless + // there is a = in there... + String tmp = args[i].substring(2); + int pos = tmp.indexOf('='); + if (pos == -1) { + option = opts.get(tmp); + moreData = false; + } else { + option = opts.get(tmp.substring(0, pos)); + // modify the option a bit so the code below + // handles the moreData correctly + args[i] = "-?" + tmp.substring(pos + 1); + moreData = true; + } + } else if (args[i].charAt(1) == 'X') { + // extra argument, same as long argument + String tmp = args[i].substring(1); + int pos = tmp.indexOf('='); + if (pos == -1) { + option = opts.get(tmp); + moreData = false; + } else { + option = opts.get(tmp.substring(0, pos)); + // modify the option a bit so the code below + // handles the moreData correctly + args[i] = "-?" + tmp.substring(pos + 1); + moreData = true; + } + } else { + // single char argument + option = opts.get("" + args[i].charAt(1)); + // is there more data left in the argument? + moreData = args[i].length() > 2 ? true : false; + } + + if (option != null) { + // make sure we overwrite previously set arguments + option.resetArguments(); + int card = option.getCardinality(); + if (card == CAR_ONE) { + if (moreData) { + option.addArgument(args[i].substring(2)); + option = null; + } else { + quant = 1; + } + } else if (card == CAR_ZERO_ONE) { + option.setPresent(); + qcount = 1; + quant = 2; + if (moreData) { + option.addArgument(args[i].substring(2)); + option = null; + } + } else if (card == CAR_ZERO_MANY) { + option.setPresent(); + qcount = 1; + quant = -1; + if (moreData) { + option.addArgument(args[i].substring(2)); + qcount++; + } + } else if (card == CAR_ZERO) { + option.setPresent(); + option = null; + } + } else { + throw new OptionsException("Unknown argument: " + args[i]); + } + } else { + // store the `value' + option.addArgument(args[i]); + if (++qcount == quant) { + quant = 0; + qcount = 0; + option = null; + } + } + } + } + + /** + * Returns a help message for all options loaded. + * + * @return the help message + */ + public String produceHelpMessage() { + // first calculate how much space is necessary for the options + int maxlen = 0; + for (OptionContainer oc : options) { + String shorta = oc.getShort(); + String longa = oc.getLong(); + int len = 0; + if (shorta != null) len += shorta.length() + 1 + 1; + if (longa != null) len += longa.length() + 1 + (longa.charAt(0) == 'X' ? 0 : 1) + 1; + // yes, we don't care about branch mispredictions here ;) + if (maxlen < len) maxlen = len; + } + + // get the individual strings + StringBuilder ret = new StringBuilder(); + for (OptionContainer oc : options) { + ret.append(produceHelpMessage(oc, maxlen)); + } + + return ret.toString(); + } + + /** + * Returns the help message for the given OptionContainer. The + * command line flags will be padded to optwidth spaces to allow for + * aligning. The description of the flags will be wrapped at 80 + * characters. + * + * @param oc the OptionContainer + * @param indentwidth padding width for the command line flags + * @return the help message for the option + */ + public String produceHelpMessage(OptionContainer oc, int indentwidth) { + String desc = oc.getDescription(); + if (desc == null) return ""; + + String shorta = oc.getShort(); + String longa = oc.getLong(); + int optwidth = 0; + if (shorta != null) optwidth += shorta.length() + 1 + 1; + if (longa != null) optwidth += longa.length() + 1 + (longa.charAt(0) == 'X' ? 0 : 1) + 1; + int descwidth = 80 - indentwidth; + + // default to with of command line flags if no width given + if (indentwidth <= 0) indentwidth = optwidth; + + StringBuilder ret = new StringBuilder(); + + // add the command line flags + if (shorta != null) ret.append('-').append(shorta).append(' '); + if (longa != null) { + ret.append('-'); + if (longa.charAt(0) != 'X') ret.append('-'); + ret.append(longa).append(' '); + } + + for (int i = optwidth; i < indentwidth; i++) ret.append(' '); + // add the description, wrap around words + int pos = 0, lastpos = 0; + while (pos < desc.length()) { + pos += descwidth; + if (lastpos != 0) { + for (int i = 0; i < indentwidth; i++) ret.append(' '); + } + if (pos >= desc.length()) { + ret.append(desc.substring(lastpos)).append('\n'); + break; + } + int space; + for (space = pos; desc.charAt(space) != ' '; space--) { + if (space == 0) { + space = pos; + break; + } + } + pos = space; + ret.append(desc.substring(lastpos, pos)).append('\n'); + while (desc.charAt(pos) == ' ') pos++; + lastpos = pos; + } + + return ret.toString(); + } + + public class OptionContainer { + int cardinality; + String shorta; + String longa; + List<String> values = new ArrayList<String>(); + String name; + String defaulta; + String descriptiona; + boolean present; + + public OptionContainer( + String shorta, + String longa, + int cardinality, + String defaulta, + String descriptiona) + throws IllegalArgumentException + { + this.cardinality = cardinality; + this.shorta = shorta; + this.longa = longa; + this.defaulta = defaulta; + this.descriptiona = descriptiona; + this.present = false; + + if (cardinality != CAR_ZERO && + cardinality != CAR_ONE && + cardinality != CAR_ZERO_ONE && + cardinality != CAR_ZERO_MANY && + cardinality != CAR_ONE_MANY) + throw new IllegalArgumentException("unknown cardinality"); + if (shorta != null && shorta.length() != 1) throw + new IllegalArgumentException("short option should consist of exactly one character"); + if (shorta == null && longa == null) throw + new IllegalArgumentException("either a short or long argument should be given"); + if ((cardinality == CAR_ZERO || + cardinality == CAR_ZERO_ONE || + cardinality == CAR_ZERO_MANY) && + defaulta != null) { + throw new IllegalArgumentException("cannot specify a default for a (possible) zero argument option"); + } + + name = (longa != null) ? longa : shorta; + + options.add(this); + } + + public void resetArguments() { + values.clear(); + } + + public void addArgument(String val) throws OptionsException { + if (cardinality == CAR_ZERO) { + throw new OptionsException("option " + name + " does not allow arguments"); + } else if ((cardinality == CAR_ONE || + cardinality == CAR_ZERO_ONE) && + values.size() >= 1) { + throw new OptionsException("option " + name + " does at max allow only one argument"); + } + // we can add it + values.add(val); + setPresent(); + } + + public void setPresent() { + present = true; + } + + public boolean isPresent() { + return present; + } + + public int getCardinality() { + return cardinality; + } + + public int getArgumentCount() { + return values.size(); + } + + public String getArgument() { + String ret = getArgument(1); + if (ret == null) ret = defaulta; + return ret; + } + + public String getArgument(int index) { + String[] args = getArguments(); + if (index < 1 || index > args.length) return null; + return args[index - 1]; + } + + public String[] getArguments() { + return values.toArray(new String[values.size()]); + } + + public String getShort() { + return shorta; + } + + public String getLong() { + return longa; + } + + public String getDescription() { + return descriptiona; + } + } +}
new file mode 100644 --- /dev/null +++ b/src/main/java/nl/cwi/monetdb/util/Exporter.java @@ -0,0 +1,77 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +package nl.cwi.monetdb.util; + +import java.io.*; +import java.sql.*; +import java.util.Arrays; + + +public abstract class Exporter { + protected PrintWriter out; + protected boolean useSchema; + + protected Exporter(PrintWriter out) { + this.out = out; + } + + public abstract void dumpSchema( + DatabaseMetaData dbmd, + String type, + String catalog, + String schema, + String name) throws SQLException; + + public abstract void dumpResultSet(ResultSet rs) throws SQLException; + + public abstract void setProperty(int type, int value) throws Exception; + public abstract int getProperty(int type) throws Exception; + + //=== shared utilities + + public void useSchemas(boolean use) { + useSchema = use; + } + + /** + * returns the given string between two double quotes for usage as + * identifier such as column or table name in SQL queries. + * + * @param in the string to quote + * @return the quoted string + */ + protected static String dq(String in) { + return "\"" + in.replaceAll("\\\\", "\\\\\\\\").replaceAll("\"", "\\\\\"") + "\""; + } + + /** + * returns the given string between two single quotes for usage as + * string literal in SQL queries. + * + * @param in the string to quote + * @return the quoted string + */ + protected static String q(String in) { + return "'" + in.replaceAll("\\\\", "\\\\\\\\").replaceAll("'", "\\\\'") + "'"; + } + + /** + * Simple helper function to repeat a given character a number of + * times. + * + * @param chr the character to repeat + * @param cnt the number of times to repeat chr + * @return a String holding cnt times chr + */ + protected static String repeat(char chr, int cnt) { + char[] buf = new char[cnt]; + Arrays.fill(buf, chr); + return new String(buf); + } +}
new file mode 100644 --- /dev/null +++ b/src/main/java/nl/cwi/monetdb/util/Extract.java @@ -0,0 +1,67 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +package nl.cwi.monetdb.util; + +import java.io.BufferedReader; +import java.io.FileNotFoundException; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; + + +/** + * This file contains a function to extract files from its including Jar + * package. + * + * @author Ying Zhang <Y.Zhang@cwi.nl> + * @version 0.1 + */ + +public class Extract { + private static final int DEFAULT_BUFSIZE = 16386; + + public Extract() {} + + /** + * Extracts a file from the Jar package which includes this class to + * the given destination + * @param fromFile The file to extract, including it absolute path + * inside its including Jar package. + * @param toFile Destination for the extracted file + * @throws FileNotFoundException If the file to extract can not be + * found in its including Jar package. + * @throws IOException If any error happens during + * creating/reading/writing files. + */ + public static void extractFile(String fromFile, String toFile) + throws FileNotFoundException, IOException + { + char[] cbuf = new char[DEFAULT_BUFSIZE]; + int ret = 0; + + InputStream is = new Extract().getClass().getResourceAsStream(fromFile); + + if(is == null) { + throw new FileNotFoundException("File " + fromFile + + " does not exist in the JAR package."); + } + + BufferedReader reader = new BufferedReader(new InputStreamReader(is)); + FileWriter writer = new FileWriter(toFile, false); + + ret = reader.read(cbuf, 0, DEFAULT_BUFSIZE); + while(ret > 0){ + writer.write(cbuf, 0, ret); + ret = reader.read(cbuf, 0, DEFAULT_BUFSIZE); + } + reader.close(); + writer.close(); + } +}
new file mode 100644 --- /dev/null +++ b/src/main/java/nl/cwi/monetdb/util/OptionsException.java @@ -0,0 +1,17 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +package nl.cwi.monetdb.util; + +public class OptionsException extends Exception { + static final long serialVersionUID = 42L; // needed to prevent: warning: [serial] serializable class OptionsException has no definition of serialVersionUID + + public OptionsException(String reason) { + super(reason); + } +}
new file mode 100644 --- /dev/null +++ b/src/main/java/nl/cwi/monetdb/util/SQLExporter.java @@ -0,0 +1,503 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +package nl.cwi.monetdb.util; + +import java.io.PrintWriter; +import java.sql.DatabaseMetaData; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.SQLException; +import java.sql.Types; +import java.util.Iterator; +import java.util.LinkedHashSet; +import java.util.Map; +import java.util.Set; +import java.util.SortedMap; +import java.util.Stack; +import java.util.TreeMap; + +public class SQLExporter extends Exporter { + private int outputMode; + private Stack<String> lastSchema; + + public final static int TYPE_OUTPUT = 1; + public final static int VALUE_INSERT = 0; + public final static int VALUE_COPY = 1; + public final static int VALUE_TABLE = 2; + + public SQLExporter(PrintWriter out) { + super(out); + } + + /** + * A helper method to generate SQL CREATE code for a given table. + * This method performs all required lookups to find all relations and + * column information, as well as additional indices. + * + * @param dbmd a DatabaseMetaData object to query on (not null) + * @param type the type of the object, e.g. VIEW, TABLE (not null) + * @param catalog the catalog the object is in + * @param schema the schema the object is in (not null) + * @param name the table to describe in SQL CREATE format (not null) + * @throws SQLException if a database related error occurs + */ + public void dumpSchema( + DatabaseMetaData dbmd, + String type, + String catalog, + String schema, + String name) + throws SQLException + { + assert dbmd != null; + assert type != null; + assert schema != null; + assert name != null; + + String fqname = (!useSchema ? dq(schema) + "." : "") + dq(name); + + if (useSchema) + changeSchema(schema); + + // handle views directly + if (type.indexOf("VIEW") != -1) { + String[] types = new String[1]; + types[0] = type; + ResultSet tbl = dbmd.getTables(catalog, schema, name, types); + if (!tbl.next()) throw new SQLException("Whoops no meta data for view " + fqname); + + // This will probably only work for MonetDB + String remarks = tbl.getString("REMARKS"); // for MonetDB driver this contains the view definition + if (remarks == null) { + out.println("-- invalid " + type + " " + fqname + ": no definition found"); + } else { + out.print("CREATE " + type + " " + fqname + " AS "); + out.println(remarks.replaceFirst("create view [^ ]+ as", "").trim()); + } + return; + } + + int i; + String s; + out.println("CREATE " + type + " " + fqname + " ("); + + // add all columns with their type, nullability and default definition + ResultSet cols = dbmd.getColumns(catalog, schema, name, null); + ResultSetMetaData rsmd = cols.getMetaData(); + int colwidth = rsmd.getColumnDisplaySize(cols.findColumn("COLUMN_NAME")); + int typewidth = rsmd.getColumnDisplaySize(cols.findColumn("TYPE_NAME")); + for (i = 0; cols.next(); i++) { + if (i > 0) out.println(","); + // print column name + s = dq(cols.getString("COLUMN_NAME")); + out.print("\t" + s + repeat(' ', (colwidth - s.length()) + 3)); + + s = cols.getString("TYPE_NAME"); + int ctype = cols.getInt("DATA_TYPE"); + int size = cols.getInt("COLUMN_SIZE"); + int digits = cols.getInt("DECIMAL_DIGITS"); + // small hack to get desired behaviour: set digits when we + // have a time or timestamp with time zone and at the same + // time masking the internal types + if (s.equals("timetz")) { + digits = 1; + s = "time"; + } else if (s.equals("timestamptz")) { + digits = 1; + s = "timestamp"; + } + // print column type + out.print(s + repeat(' ', typewidth - s.length())); + + // do some MonetDB type specifics + switch (ctype) { + case Types.CHAR: + case Types.VARCHAR: + case Types.LONGVARCHAR: + case Types.CLOB: + case Types.BLOB: + case Types.FLOAT: + if (size > 0) + out.print("(" + size + ")"); + break; + case Types.TIME: + case Types.TIMESTAMP: + if (size > 1) + out.print("(" + (size - 1) + ")"); + if (digits != 0) + out.print(" WITH TIME ZONE"); + break; + case Types.DECIMAL: + case Types.NUMERIC: + if (digits != 0) + out.print("(" + size + "," + digits + ")"); + else + out.print("(" + size + ")"); + break; + } + if (cols.getInt("NULLABLE") == DatabaseMetaData.columnNoNulls) + out.print("\tNOT NULL"); + if ((s = cols.getString("COLUMN_DEF")) != null) + out.print("\tDEFAULT " + q(s)); + } + cols.close(); + + // add the primary key constraint definition + // unfortunately some idiot defined that getPrimaryKeys() + // returns the primary key columns sorted by column name, not + // key sequence order. So we have to sort ourself :( + cols = dbmd.getPrimaryKeys(catalog, schema, name); + // first make an 'index' of the KEY_SEQ column + SortedMap<Integer, Integer> seqIndex = new TreeMap<Integer, Integer>(); + for (i = 1; cols.next(); i++) { + seqIndex.put( + Integer.valueOf(cols.getInt("KEY_SEQ")), + Integer.valueOf(i)); + } + if (seqIndex.size() > 0) { + // terminate the previous line + out.println(","); + cols.absolute(1); + out.print("\tCONSTRAINT " + dq(cols.getString("PK_NAME")) + + " PRIMARY KEY ("); + i = 0; + for (Iterator<Map.Entry<Integer, Integer>> it = seqIndex.entrySet().iterator(); + it.hasNext(); i++) + { + Map.Entry<Integer, Integer> e = it.next(); + cols.absolute(e.getValue().intValue()); + if (i > 0) + out.print(", "); + out.print(dq(cols.getString("COLUMN_NAME"))); + } + out.print(")"); + } + cols.close(); + + // add unique constraint definitions + cols = dbmd.getIndexInfo(catalog, schema, name, true, true); + while (cols.next()) { + String idxname = cols.getString("INDEX_NAME"); + out.println(","); + out.print("\tCONSTRAINT " + dq(idxname) + " UNIQUE (" + + dq(cols.getString("COLUMN_NAME"))); + + boolean next; + while ((next = cols.next()) && idxname != null && + idxname.equals(cols.getString("INDEX_NAME"))) { + out.print(", " + dq(cols.getString("COLUMN_NAME"))); + } + // go back one, we've gone one too far + if (next) + cols.previous(); + + out.print(")"); + } + cols.close(); + + // add foreign keys definitions + cols = dbmd.getImportedKeys(catalog, schema, name); + while (cols.next()) { + out.println(","); + out.print("\tCONSTRAINT " + dq(cols.getString("FK_NAME")) + " FOREIGN KEY ("); + + boolean next; + Set<String> fk = new LinkedHashSet<String>(); + fk.add(cols.getString("FKCOLUMN_NAME").intern()); + Set<String> pk = new LinkedHashSet<String>(); + pk.add(cols.getString("PKCOLUMN_NAME").intern()); + + while ((next = cols.next()) && + cols.getInt("KEY_SEQ") != 1) + { + fk.add(cols.getString("FKCOLUMN_NAME").intern()); + pk.add(cols.getString("PKCOLUMN_NAME").intern()); + } + // go back one + if (next) cols.previous(); + + Iterator<String> it = fk.iterator(); + for (i = 0; it.hasNext(); i++) { + if (i > 0) out.print(", "); + out.print(dq(it.next())); + } + out.print(") "); + + out.print("REFERENCES " + dq(cols.getString("PKTABLE_SCHEM")) + + "." + dq(cols.getString("PKTABLE_NAME")) + " ("); + it = pk.iterator(); + for (i = 0; it.hasNext(); i++) { + if (i > 0) out.print(", "); + out.print(dq(it.next())); + } + out.print(")"); + } + cols.close(); + out.println(); + // end the create table statement + out.println(");"); + + // create the non unique indexes defined for this table + cols = dbmd.getIndexInfo(catalog, schema, name, false, true); + while (cols.next()) { + if (!cols.getBoolean("NON_UNIQUE")) { + // we already covered this one as UNIQUE constraint in the CREATE TABLE + continue; + } else { + String idxname = cols.getString("INDEX_NAME"); + out.print("CREATE INDEX " + dq(idxname) + " ON " + + dq(cols.getString("TABLE_NAME")) + " (" + + dq(cols.getString("COLUMN_NAME"))); + + boolean next; + while ((next = cols.next()) && idxname != null && + idxname.equals(cols.getString("INDEX_NAME"))) + { + out.print(", " + dq(cols.getString("COLUMN_NAME"))); + } + // go back one + if (next) cols.previous(); + + out.println(");"); + } + } + cols.close(); + } + + /** + * Dumps the given ResultSet as specified in the form variable. + * + * @param rs the ResultSet to dump + * @throws SQLException if a database error occurs + */ + public void dumpResultSet(ResultSet rs) throws SQLException { + switch (outputMode) { + case VALUE_INSERT: + resultSetToSQL(rs); + break; + case VALUE_COPY: + resultSetToSQLDump(rs); + break; + case VALUE_TABLE: + resultSetToTable(rs); + break; + } + } + + public void setProperty(int type, int value) throws Exception { + switch (type) { + case TYPE_OUTPUT: + switch (value) { + case VALUE_INSERT: + case VALUE_COPY: + case VALUE_TABLE: + outputMode = value; + break; + default: + throw new Exception("Illegal value " + value + " for TYPE_OUTPUT"); + } + break; + default: + throw new Exception("Illegal type " + type); + } + } + + public int getProperty(int type) throws Exception { + switch (type) { + case TYPE_OUTPUT: + return outputMode; + default: + throw new Exception("Illegal type " + type); + } + } + + private final static int AS_IS = 0; + private final static int QUOTE = 1; + + /** + * Helper method to dump the contents of a table in SQL INSERT INTO + * format. + * + * @param rs the ResultSet to convert into INSERT INTO statements + * @param absolute if true, dumps table name prepended with schema name + * @throws SQLException if a database related error occurs + */ + private void resultSetToSQL(ResultSet rs) + throws SQLException + { + ResultSetMetaData rsmd = rs.getMetaData(); + String statement = "INSERT INTO "; + if (!useSchema) { + String schema = rsmd.getSchemaName(1); + if (schema != null && schema.length() > 0) + statement += dq(schema) + "."; + } + statement += dq(rsmd.getTableName(1)) + " VALUES ("; + + int cols = rsmd.getColumnCount(); + short[] types = new short[cols +1]; + for (int i = 1; i <= cols; i++) { + switch (rsmd.getColumnType(i)) { + case Types.CHAR: + case Types.VARCHAR: + case Types.LONGVARCHAR: + case Types.CLOB: + case Types.BLOB: + case Types.DATE: + case Types.TIME: + case Types.TIMESTAMP: + types[i] = QUOTE; + break; + case Types.NUMERIC: + case Types.DECIMAL: + case Types.BIT: // we don't use type BIT, it's here for completeness + case Types.BOOLEAN: + case Types.TINYINT: + case Types.SMALLINT: + case Types.INTEGER: + case Types.BIGINT: + case Types.REAL: + case Types.FLOAT: + case Types.DOUBLE: + types[i] = AS_IS; + break; + default: + types[i] = AS_IS; + } + } + + StringBuilder strbuf = new StringBuilder(1024); + strbuf.append(statement); + while (rs.next()) { + for (int i = 1; i <= cols; i++) { + String val = rs.getString(i); + if (i > 1) + strbuf.append(", "); + if (val == null || rs.wasNull()) { + strbuf.append("NULL"); + } else { + strbuf.append((types[i] == QUOTE) ? q(val) : val); + } + } + strbuf.append(");"); + out.println(strbuf.toString()); + // clear the variable part of the buffer contents for next data row + strbuf.setLength(statement.length()); + } + } + + public void resultSetToSQLDump(ResultSet rs) { + // TODO: write copy into statement + } + + /** + * Helper method to write a ResultSet in a convenient table format + * to the output writer. + * + * @param rs the ResultSet to write out + */ + public void resultSetToTable(ResultSet rs) throws SQLException { + ResultSetMetaData md = rs.getMetaData(); + int cols = md.getColumnCount(); + // find the optimal display widths of the columns + int[] width = new int[cols + 1]; + boolean[] isSigned = new boolean[cols + 1]; // used for controlling left or right alignment of data + for (int j = 1; j < width.length; j++) { + int coldisplaysize = md.getColumnDisplaySize(j); + int collabellength = md.getColumnLabel(j).length(); + int maxwidth = (coldisplaysize > collabellength) ? coldisplaysize : collabellength; + // the minimum width should be 4 to represent: "NULL" + width[j] = (maxwidth > 4) ? maxwidth : 4; + isSigned[j] = md.isSigned(j); + } + + // use a buffer to construct the text lines + StringBuilder strbuf = new StringBuilder(1024); + + // construct the frame lines and header text + strbuf.append('+'); + for (int j = 1; j < width.length; j++) + strbuf.append(repeat('-', width[j] + 1) + "-+"); + + String outsideLine = strbuf.toString(); + + strbuf.setLength(0); // clear the buffer + strbuf.append('|'); + for (int j = 1; j < width.length; j++) { + String colLabel = md.getColumnLabel(j); + strbuf.append(' '); + strbuf.append(colLabel); + strbuf.append(repeat(' ', width[j] - colLabel.length())); + strbuf.append(" |"); + } + // print the header text + out.println(outsideLine); + out.println(strbuf.toString()); + out.println(outsideLine.replace('-', '=')); + + // print formatted data of each row from resultset + long count = 0; + for (; rs.next(); count++) { + strbuf.setLength(0); // clear the buffer + strbuf.append('|'); + for (int j = 1; j < width.length; j++) { + String data = rs.getString(j); + if (data == null || rs.wasNull()) { + data = "NULL"; + } + + int filler_length = width[j] - data.length(); + if (filler_length <= 0) { + if (filler_length == 0) { + strbuf.append(' '); + } + strbuf.append(data); + } else { + strbuf.append(' '); + if (isSigned[j]) { + // we have a numeric type here, right align + strbuf.append(repeat(' ', filler_length)); + strbuf.append(data); + } else { + // all other left align + strbuf.append(data); + strbuf.append(repeat(' ', filler_length)); + } + } + strbuf.append(" |"); + } + out.println(strbuf.toString()); + } + + // print the footer text + out.println(outsideLine); + out.println(count + " row" + (count != 1 ? "s" : "")); + } + + private void changeSchema(String schema) { + if (lastSchema == null) { + lastSchema = new Stack<String>(); + lastSchema.push(null); + } + + if (!schema.equals(lastSchema.peek())) { + if (!lastSchema.contains(schema)) { + // create schema + out.print("CREATE SCHEMA "); + out.print(dq(schema)); + out.println(";\n"); + lastSchema.push(schema); + } + + out.print("SET SCHEMA "); + out.print(dq(schema)); + out.println(";\n"); + } + } +}
new file mode 100644 --- /dev/null +++ b/src/main/java/nl/cwi/monetdb/util/SQLRestore.java @@ -0,0 +1,196 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +package nl.cwi.monetdb.util; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.util.concurrent.atomic.AtomicBoolean; + +import nl.cwi.monetdb.mcl.MCLException; +import nl.cwi.monetdb.mcl.io.BufferedMCLReader; +import nl.cwi.monetdb.mcl.io.BufferedMCLWriter; +import nl.cwi.monetdb.mcl.net.MapiSocket; +import nl.cwi.monetdb.mcl.parser.MCLParseException; + +/** + * Use this class to restore an SQL dump file. + */ +public class SQLRestore { + + private final String _host; + private final int _port; + private final String _user; + private final String _password; + private final String _dbName; + + public SQLRestore(String host, int port, String user, String password, String dbName) throws IOException { + if (host == null || user == null || password == null || dbName == null) + throw new NullPointerException(); + _host = host; + _port = port; + _user = user; + _password = password; + _dbName = dbName; + } + + private static class ServerResponseReader implements Runnable { + private final BufferedMCLReader _is; + private final AtomicBoolean _errorState = new AtomicBoolean(false); + private String _errorMessage = null; + + ServerResponseReader(BufferedMCLReader is) { + _is = is; + } + + public void run() { + try { + while (true) { + String line = _is.readLine(); + if (line == null) + break; + int result = _is.getLineType(); + switch (result) { + case BufferedMCLReader.ERROR: + _errorMessage = line; + _errorState.set(true); + return; + default: + // do nothing... + } + } + + } catch (IOException e) { + _errorMessage = e.getMessage(); + _errorState.set(true); + } finally { + try { + _is.close(); + } catch (IOException e) { + // ignore errors + } + } + } + + /** + * @return whether the server has responded with an error. Any + * error is regarded as fatal. + */ + public boolean inErrorState() { + return _errorState.get(); + } + + /** + * @return the error message if inErrorState() is true. Behaviour is + * not defined if called before inErrorState is true. + */ + public String getErrorMessage() { + return _errorMessage; + } + + } + + /** + * Restores a given SQL dump to the database. + * + * @param source + * @throws IOException + */ + public void restore(File source) throws IOException { + MapiSocket ms = new MapiSocket(); + try { + ms.setLanguage("sql"); + ms.setDatabase(_dbName); + ms.connect(_host, _port, _user, _password); + + BufferedMCLWriter os = ms.getWriter(); + BufferedMCLReader reader = ms.getReader(); + + ServerResponseReader srr = new ServerResponseReader(reader); + + Thread responseReaderThread = new Thread(srr); + responseReaderThread.start(); + try { + // FIXME: we assume here that the dump is in system's default encoding + BufferedReader sourceData = new BufferedReader(new FileReader(source)); + try { + os.write('s'); // signal that a new statement (or series of) is coming + while(!srr.inErrorState()) { + char[] buf = new char[4096]; + int result = sourceData.read(buf); + if (result < 0) + break; + os.write(buf, 0, result); + } + + os.flush(); // mark the end of the statement (or series of) + os.close(); + } finally { + sourceData.close(); + } + } finally { + try { + responseReaderThread.join(); + } catch (InterruptedException e) { + throw new IOException(e.getMessage()); + } + + // if the server signalled an error, we should respect it... + if (srr.inErrorState()) { + throw new IOException(srr.getErrorMessage()); + } + } + } catch (MCLException e) { + throw new IOException(e.getMessage()); + } catch (MCLParseException e) { + throw new IOException(e.getMessage()); + } finally { + ms.close(); + } + } + + public void close() { + // do nothing at the moment... + } + + + public static void main(String[] args) throws IOException { + if (args.length != 6) { + System.err.println("USAGE: java " + SQLRestore.class.getName() + + " <host> <port> <user> <password> <dbname> <dumpfile>"); + System.exit(1); + } + + // parse arguments + String host = args[0]; + int port = Integer.parseInt(args[1]); // FIXME: catch NumberFormatException + String user = args[2]; + String password = args[3]; + String dbName = args[4]; + File dumpFile = new File(args[5]); + + // check arguments + if (!dumpFile.isFile() || !dumpFile.canRead()) { + System.err.println("Cannot read: " + dumpFile); + System.exit(1); + } + + SQLRestore md = new SQLRestore(host, port, user, password, dbName); + try { + System.out.println("Start restoring " + dumpFile); + long duration = -System.currentTimeMillis(); + md.restore(dumpFile); + duration += System.currentTimeMillis(); + System.out.println("Restoring took: " + duration + "ms"); + } finally { + md.close(); + } + } +}
new file mode 100644 --- /dev/null +++ b/src/main/java/nl/cwi/monetdb/util/XMLExporter.java @@ -0,0 +1,398 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +package nl.cwi.monetdb.util; + +import java.io.*; +import java.sql.*; +import java.util.*; +import java.text.*; + +public class XMLExporter extends Exporter { + private boolean useNil; + + public final static int TYPE_NIL = 1; + public final static int VALUE_OMIT = 0; + public final static int VALUE_XSI = 1; + + public XMLExporter(PrintWriter out) { + super(out); + } + + public void dumpSchema( + DatabaseMetaData dbmd, + String type, + String catalog, + String schema, + String name) + throws SQLException + { + if (type.indexOf("VIEW") != -1) { + String[] types = new String[1]; + types[0] = type; + ResultSet tbl = dbmd.getTables(catalog, schema, name, types); + if (!tbl.next()) throw new SQLException("Whoops no data for " + name); + + // This will probably only work for MonetDB + out.print("<!-- unable to represent: CREATE " + type + " " + + (!useSchema ? dq(schema) + "." : "") + dq(name)); + out.print(" AS "); + out.print(tbl.getString("REMARKS").trim()); + out.print(" -->"); + return; + } + + out.println("<xsd:schema>"); + + ResultSet cols = dbmd.getColumns(catalog, schema, name, null); + String ident; + Set<String> types = new HashSet<String>(); + // walk through the ResultSet and create the types + // for a bit of a clue on the types, see this url: + // http://books.xmlschemata.org/relaxng/relax-CHP-19.html + while (cols.next()) { + switch (cols.getInt("DATA_TYPE")) { + case java.sql.Types.CHAR: + ident = "CHAR_" + cols.getString("COLUMN_SIZE"); + if (types.contains(ident)) break; + types.add(ident); + + out.print(" <xsd:simpleType name="); + out.print(dq(ident)); + out.println(">"); + out.println(" <xsd:restriction base=\"xsd:string\">"); + out.print(" <xsd:length value="); + out.print(dq(cols.getString("COLUMN_SIZE"))); + out.println(" />"); + out.println(" </xsd:restriction>"); + out.println(" </xsd:simpleType>"); + break; + case java.sql.Types.VARCHAR: + case java.sql.Types.LONGVARCHAR: + ident = "VARCHAR_" + cols.getString("COLUMN_SIZE"); + if (types.contains(ident)) break; + types.add(ident); + + out.print(" <xsd:simpleType name="); + out.print(dq(ident)); + out.println(">"); + out.println(" <xsd:restriction base=\"xsd:string\">"); + out.print(" <xsd:maxLength value="); + out.print(dq(cols.getString("COLUMN_SIZE"))); + out.println(" />"); + out.println(" </xsd:restriction>"); + out.println(" </xsd:simpleType>"); + break; + case java.sql.Types.CLOB: + ident = "CLOB"; + if (types.contains(ident)) break; + types.add(ident); + + out.print(" <xsd:simpleType name="); + out.print(dq(ident)); + out.println(">"); + out.println(" <xsd:restriction base=\"xsd:string\" />"); + out.println(" </xsd:simpleType>"); + break; + case java.sql.Types.DECIMAL: + case java.sql.Types.NUMERIC: + ident = "DECIMAL_" + cols.getString("COLUMN_SIZE") + + "_" + cols.getString("DECIMAL_DIGITS"); + if (types.contains(ident)) break; + types.add(ident); + + out.print(" <xsd:simpleType name="); + out.print(dq(ident)); + out.println(">"); + out.println(" <xsd:restriction base=\"xsd:decimal\">"); + out.print(" <xsd:totalDigits value="); + out.print(dq(cols.getString("COLUMN_SIZE"))); + out.println(" />"); + out.print(" <xsd:fractionDigits value="); + out.print(dq(cols.getString("DECIMAL_DIGITS"))); + out.println(" />"); + out.println(" </xsd:restriction>"); + out.println(" </xsd:simpleType>"); + break; + case java.sql.Types.TINYINT: + ident = "TINYINT"; + if (types.contains(ident)) break; + types.add(ident); + + out.print(" <xsd:simpleType name="); + out.print(dq(ident)); + out.println(">"); + out.println(" <xsd:restriction base=\"xsd:byte\" />"); + out.println(" </xsd:simpleType>"); + break; + case java.sql.Types.SMALLINT: + ident = "SMALLINT"; + if (types.contains(ident)) break; + types.add(ident); + + out.print(" <xsd:simpleType name="); + out.print(dq(ident)); + out.println(">"); + out.println(" <xsd:restriction base=\"xsd:short\" />"); + out.println(" </xsd:simpleType>"); + break; + case java.sql.Types.INTEGER: + ident = "INTEGER"; + if (types.contains(ident)) break; + types.add(ident); + + out.print(" <xsd:simpleType name="); + out.print(dq(ident)); + out.println(">"); + out.println(" <xsd:restriction base=\"xsd:integer\" />"); + out.println(" </xsd:simpleType>"); + break; + case java.sql.Types.BIGINT: + ident = "BIGINT"; + if (types.contains(ident)) break; + types.add(ident); + + out.print(" <xsd:simpleType name="); + out.print(dq(ident)); + out.println(">"); + out.println(" <xsd:restriction base=\"xsd:long\" />"); + out.println(" </xsd:simpleType>"); + break; + case java.sql.Types.BIT: + case java.sql.Types.BOOLEAN: + ident = "BOOLEAN"; + if (types.contains(ident)) break; + types.add(ident); + + out.print(" <xsd:simpleType name="); + out.print(dq(ident)); + out.println(">"); + out.println(" <xsd:restriction base=\"xsd:boolean\" />"); + out.println(" </xsd:simpleType>"); + break; + case java.sql.Types.DATE: + ident = "DATE"; + if (types.contains(ident)) break; + types.add(ident); + + out.print(" <xsd:simpleType name="); + out.print(dq(ident)); + out.println(">"); + out.println(" <xsd:restriction base=\"xsd:date\" />"); + out.println(" </xsd:simpleType>"); + break; + case java.sql.Types.TIME: + if ("timetz".equals(cols.getString("TYPE_NAME"))) { + ident = "TIME_WTZ"; + } else { + ident = "TIME"; + } + if (types.contains(ident)) break; + types.add(ident); + + out.print(" <xsd:simpleType name="); + out.print(dq(ident)); + out.println(">"); + out.println(" <xsd:restriction base=\"xsd:time\" />"); + out.println(" </xsd:simpleType>"); + break; + case java.sql.Types.TIMESTAMP: + if ("timestamptz".equals(cols.getString("TYPE_NAME"))) { + ident = "TIMESTAMP_WTZ"; + } else { + ident = "TIMESTAMP"; + } + if (types.contains(ident)) break; + types.add(ident); + + out.print(" <xsd:simpleType name="); + out.print(dq(ident)); + out.println(">"); + out.println(" <xsd:restriction base=\"xsd:dateTime\" />"); + out.println(" </xsd:simpleType>"); + break; + } + } + + // rewind the ResultSet + cols.beforeFirst(); + + // create the RowType + out.print(" <xsd:complexType name="); + out.print(dq("RowType." + catalog.replaceAll("\\.", "_x002e_") + + "." + schema.replaceAll("\\.", "_x002e_") + + "." + name.replaceAll("\\.", "_x002e_"))); + out.println(">"); + out.println(" <xsd:sequence>"); + while (cols.next()) { + out.print(" <xsd:element name="); + out.print(dq(cols.getString("COLUMN_NAME"))); + out.print(" type="); + switch (cols.getInt("DATA_TYPE")) { + case java.sql.Types.CHAR: + ident = "CHAR_" + cols.getString("COLUMN_SIZE"); + break; + case java.sql.Types.VARCHAR: + case java.sql.Types.LONGVARCHAR: + ident = "VARCHAR_" + cols.getString("COLUMN_SIZE"); + break; + case java.sql.Types.CLOB: + ident = "CLOB"; + break; + case java.sql.Types.DECIMAL: + case java.sql.Types.NUMERIC: + ident = "DECIMAL_" + cols.getString("COLUMN_SIZE") + + "_" + cols.getString("DECIMAL_DIGITS"); + break; + case java.sql.Types.TINYINT: + ident = "TINYINT"; + break; + case java.sql.Types.SMALLINT: + ident = "SMALLINT"; + break; + case java.sql.Types.INTEGER: + ident = "INTEGER"; + break; + case java.sql.Types.BIGINT: + ident = "BIGINT"; + break; + case java.sql.Types.BIT: + case java.sql.Types.BOOLEAN: + ident = "BOOLEAN"; + break; + case java.sql.Types.DATE: + ident = "DATE"; + break; + case java.sql.Types.TIME: + if ("timetz".equals(cols.getString("TYPE_NAME"))) { + ident = "TIME_WTZ"; + } else { + ident = "TIME"; + } + break; + case java.sql.Types.TIMESTAMP: + if ("timestamptz".equals(cols.getString("TYPE_NAME"))) { + ident = "TIMESTAMP_WTZ"; + } else { + ident = "TIMESTAMP"; + } + break; + default: + ident = "(unknown)"; + break; + } + out.print(dq(ident)); + out.println(" />"); + } + out.println(" </xsd:sequence>"); + out.println(" </xsd:complexType>"); + + out.print(" <xsd:complexType name="); + out.print(dq("TableType." + catalog.replaceAll("\\.", "_x002e_") + + "." + schema.replaceAll("\\.", "_x002e_") + + "." + name.replaceAll("\\.", "_x002e_"))); + out.println(">"); + out.println(" <xsd:sequence>"); + out.print(" <xsd:element name=\"row\" type="); + out.print(dq("RowType." + catalog.replaceAll("\\.", "_x002e_") + + "." + schema.replaceAll("\\.", "_x002e_") + + "." + name.replaceAll("\\.", "_x002e_"))); + out.println(" minOccurs=\"0\" maxOccurs=\"unbounded\" />"); + out.println(" </xsd:sequence>"); + out.println(" </xsd:complexType>"); + + out.println("</xsd:schema>"); + } + + private final static SimpleDateFormat xsd_ts = + new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); + private final static SimpleDateFormat xsd_tstz = + new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); + + /** + * Generates an XML representation of the given ResultSet. + * + * @param rs the ResultSet + */ + public void dumpResultSet(ResultSet rs) throws SQLException { + // write simple XML serialisation + ResultSetMetaData rsmd = rs.getMetaData(); + if (!useSchema) out.println("<" + rsmd.getSchemaName(1) + ">"); + out.println("<" + rsmd.getTableName(1) + ">"); + String data; + while (rs.next()) { + out.println(" <row>"); + for (int i = 1; i <= rsmd.getColumnCount(); i++) { + switch (rsmd.getColumnType(i)) { + case java.sql.Types.TIMESTAMP: + Timestamp ts = rs.getTimestamp(i); + if ("timestamptz".equals(rsmd.getColumnTypeName(i))) { + data = xsd_tstz.format(ts).toString(); + } else { + data = xsd_ts.format(ts).toString(); + } + break; + default: + data = rs.getString(i); + break; + } + if (data == null) { + if (useNil) { + // "nil" method: write <tag xsi:nil="true" /> + out.print(" "); + out.print("<" + rsmd.getColumnLabel(i)); + out.println(" xsi:nil=\"true\" />"); + } else { + // This is the "absent" method (of completely + // hiding the tag if null + } + } else { + out.print(" "); + out.print("<" + rsmd.getColumnLabel(i)); + if (data.length() == 0) { + out.println(" />"); + } else { + out.print(">" + data.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">")); + out.println("</" + rsmd.getColumnLabel(i) + ">"); + } + } + } + out.println(" </row>"); + } + out.println("</" + rsmd.getTableName(1) + ">"); + if (!useSchema) out.println("</" + rsmd.getSchemaName(1) + ">"); + } + + public void setProperty(int type, int value) throws Exception { + switch (type) { + case TYPE_NIL: + switch (value) { + case VALUE_OMIT: + useNil = false; + break; + case VALUE_XSI: + useNil = true; + break; + default: + throw new Exception("Illegal value " + value + " for TYPE_NIL"); + } + break; + default: + throw new Exception("Illegal type " + type); + } + } + + public int getProperty(int type) throws Exception { + switch (type) { + case TYPE_NIL: + return useNil ? VALUE_XSI : VALUE_OMIT; + default: + throw new Exception("Illegal type " + type); + } + } +}
new file mode 100644 --- /dev/null +++ b/tests/BugConcurrent_clients_SF_1504657.java @@ -0,0 +1,181 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +import java.sql.*; + +public class BugConcurrent_clients_SF_1504657 { + public static void main(String[] args) throws Exception{ + Connection con1 = null, con2 = null, con3 = null; + Statement stmt1 = null, stmt2 = null, stmt3 = null; + ResultSet rs1 = null, rs2= null, rs3 = null; + Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); + con1 = DriverManager.getConnection(args[0]); + con2 = DriverManager.getConnection(args[0]); + con3 = DriverManager.getConnection(args[0]); + stmt1 = con1.createStatement(); + stmt2 = con2.createStatement(); + stmt3 = con3.createStatement(); + //DatabaseMetaData dbmd = con.getMetaData(); + + // >> true: auto commit should be on by default + System.out.println("0. true\t" + con1.getAutoCommit()); + System.out.println("0. true\t" + con2.getAutoCommit()); + System.out.println("0. true\t" + con3.getAutoCommit()); + + // test the creation of a table with concurrent clients + try { + System.out.println("1.1. create table t1 using client 1..."); + stmt1.executeUpdate("CREATE TABLE t1 ( id int, name varchar(1024) )"); + System.out.println("passed :)"); + System.out.println("1.2. check table existence in client 2..."); + rs2 = stmt2.executeQuery("SELECT name FROM tables where name LIKE 't1'"); + while (rs2.next()) + System.out.println(rs2.getString("name")); + System.out.println("passed :)"); + System.out.println("1.3. check table existence in client 3..."); + rs3 = stmt3.executeQuery("SELECT name FROM tables where name LIKE 't1'"); + while (rs3.next()) + System.out.println(rs3.getString("name")); + System.out.println("passed :)"); + } catch (SQLException e) { + // this means we failed (table not there perhaps?) + System.out.println("FAILED 1 :( " + e.getMessage()); + System.out.println("ABORTING TEST!!!"); + con1.close(); + con2.close(); + con3.close(); + System.exit(-1); + } + + // test the insertion of values with concurrent clients + try { + System.out.println("2 insert into t1 using client 1..."); + stmt1.executeUpdate("INSERT INTO t1 values( 1, 'monetdb' )"); + System.out.println("passed :)"); + stmt1.executeUpdate("INSERT INTO t1 values( 2, 'monet' )"); + System.out.println("passed :)"); + stmt1.executeUpdate("INSERT INTO t1 values( 3, 'mon' )"); + System.out.println("passed :)"); + System.out.println("2.1. check table status with client 1..."); + rs1 = stmt1.executeQuery("SELECT * FROM t1"); + while (rs1.next()) + System.out.println(rs1.getInt("id")+", "+ rs1.getString("name")); + System.out.println("passed :)"); + System.out.println("2.2. check table status with client 2..."); + rs2 = stmt2.executeQuery("SELECT * FROM t1"); + while (rs2.next()) + System.out.println(rs2.getInt("id")+", "+ rs2.getString("name")); + System.out.println("passed :)"); + System.out.println("2.3. check table status with client 3..."); + rs3 = stmt3.executeQuery("SELECT * FROM t1"); + while (rs3.next()) + System.out.println(rs3.getInt("id")+", "+ rs3.getString("name")); + System.out.println("passed :)"); + } catch (SQLException e) { + // this means we failed (table not there perhaps?) + System.out.println("FAILED 2 :( " + e.getMessage()); + System.out.println("ABORTING TEST!!!"); + if (rs1 != null) rs1.close(); + if (rs2 != null) rs2.close(); + if (rs3 != null) rs3.close(); + con1.close(); + con2.close(); + con3.close(); + System.exit(-1); + } + + // test the insertion of values with concurrent clients + try { + System.out.println("3 insert into t1 using client 2..."); + stmt2.executeUpdate("INSERT INTO t1 values( 4, 'monetdb' )"); + System.out.println("passed :)"); + stmt2.executeUpdate("INSERT INTO t1 values( 5, 'monet' )"); + System.out.println("passed :)"); + stmt2.executeUpdate("INSERT INTO t1 values( 6, 'mon' )"); + System.out.println("passed :)"); + System.out.println("3.1. check table status with client 1..."); + rs1 = stmt1.executeQuery("SELECT * FROM t1"); + while (rs1.next()) + System.out.println(rs1.getInt("id")+", "+ rs1.getString("name")); + System.out.println("passed :)"); + System.out.println("3.2. check table status with client 2..."); + rs2 = stmt2.executeQuery("SELECT * FROM t1"); + while (rs2.next()) + System.out.println(rs2.getInt("id")+", "+ rs2.getString("name")); + System.out.println("passed :)"); + System.out.println("3.3. check table status with client 3..."); + rs3 = stmt3.executeQuery("SELECT * FROM t1"); + while (rs3.next()) + System.out.println(rs3.getInt("id")+", "+ rs3.getString("name")); + System.out.println("passed :)"); + } catch (SQLException e) { + // this means we failed (table not there perhaps?) + System.out.println("FAILED 3 :( " + e.getMessage()); + System.out.println("ABORTING TEST!!!"); + if (rs1 != null) rs1.close(); + if (rs2 != null) rs2.close(); + if (rs3 != null) rs3.close(); + con1.close(); + con2.close(); + con3.close(); + System.exit(-1); + } + + // test the insertion of values with concurrent clients + try { + System.out.println("4 insert into t1 using client 3..."); + stmt3.executeUpdate("INSERT INTO t1 values( 7, 'monetdb' )"); + System.out.println("passed :)"); + stmt3.executeUpdate("INSERT INTO t1 values( 8, 'monet' )"); + System.out.println("passed :)"); + stmt3.executeUpdate("INSERT INTO t1 values( 9, 'mon' )"); + System.out.println("passed :)"); + System.out.println("4.1. check table status with client 1..."); + rs1 = stmt1.executeQuery("SELECT * FROM t1"); + while (rs1.next()) + System.out.println(rs1.getInt("id")+", "+ rs1.getString("name")); + System.out.println("passed :)"); + System.out.println("4.2. check table status with client 2..."); + rs2 = stmt2.executeQuery("SELECT * FROM t1"); + while (rs2.next()) + System.out.println(rs2.getInt("id")+", "+ rs2.getString("name")); + System.out.println("passed :)"); + System.out.println("4.3. check table status with client 3..."); + rs3 = stmt3.executeQuery("SELECT * FROM t1"); + while (rs3.next()) + System.out.println(rs3.getInt("id")+", "+ rs3.getString("name")); + System.out.println("passed :)"); + } catch (SQLException e) { + // this means we failed (table not there perhaps?) + System.out.println("FAILED 4 :( " + e.getMessage()); + System.out.println("ABORTING TEST!!!"); + if (rs1 != null) rs1.close(); + if (rs2 != null) rs2.close(); + if (rs3 != null) rs3.close(); + con1.close(); + con2.close(); + con3.close(); + System.exit(-1); + } + + if (rs1 != null) rs1.close(); + if (rs2 != null) rs2.close(); + if (rs3 != null) rs3.close(); + + // cleanup + try { + stmt3.executeUpdate("DROP TABLE t1"); + } catch (SQLException e) { + System.out.println("FAILED to clean up! :( " + e.getMessage()); + } + + con1.close(); + con2.close(); + con3.close(); + } +}
new file mode 100644 --- /dev/null +++ b/tests/BugConcurrent_sequences.java @@ -0,0 +1,177 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +import java.sql.*; + +public class BugConcurrent_sequences { + public static void main(String[] args) throws Exception { + Connection con1 = null, con2 = null; + Statement stmt1 = null, stmt2 = null; + ResultSet rs1 = null, rs2 = null; + Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); + con1 = DriverManager.getConnection(args[0]); + con2 = DriverManager.getConnection(args[0]); + stmt1 = con1.createStatement(); + stmt2 = con2.createStatement(); + + // >> true: auto commit should be on by default + System.out.println("0. true\t" + con1.getAutoCommit()); + System.out.println("0. true\t" + con2.getAutoCommit()); + + // create a table + try { + System.out.print("1. create table t1 using client 1... "); + stmt1.executeUpdate("CREATE TABLE t1 ( id serial, who varchar(12) )"); + System.out.println("passed :)"); + } catch (SQLException e) { + // this means we failed (that sux) + System.out.println("FAILED 1 :( " + e.getMessage()); + System.out.println("ABORTING TEST!!!"); + con1.close(); + con2.close(); + System.exit(-1); + } + + // test the insertion of values with concurrent clients + try { + System.out.print("2. insert into t1 using client 1 and 2... "); + stmt1.executeUpdate("INSERT INTO t1(who) VALUES('client1')"); + System.out.println("client 1 passed :)"); + con2.setAutoCommit(false); + stmt2.executeUpdate("INSERT INTO t1(who) VALUES('client2')"); + System.out.println("transaction on client 2 :)"); + stmt1.executeUpdate("INSERT INTO t1(who) VALUES('client1')"); + System.out.println("client 1 passed :)"); + try { + con2.commit(); + System.out.println("transaction client 2 PASSED :("); + System.exit(-1); + } catch (SQLException e) { + System.out.println("transaction client 2 failed :)"); + } + con2.setAutoCommit(true); + stmt2.executeUpdate("INSERT INTO t1(who) VALUES('client2')"); + System.out.println("passed :)"); + System.out.println("2.1. check table status with client 1..."); + rs1 = stmt1.executeQuery("SELECT * FROM t1"); + while (rs1.next()) + System.out.println(rs1.getInt("id") + ", " + + rs1.getString("who")); + System.out.println("passed :)"); + System.out.println("2.2. check table status with client 2..."); + rs2 = stmt2.executeQuery("SELECT * FROM t1"); + while (rs2.next()) + System.out.println(rs2.getInt("id") + ", " + + rs2.getString("who")); + System.out.println("passed :)"); + } catch (SQLException e) { + // this means we failed (table not there perhaps?) + System.out.println("FAILED 2 :( " + e.getMessage()); + System.out.println("ABORTING TEST!!!"); + if (rs1 != null) rs1.close(); + if (rs2 != null) rs2.close(); + con1.close(); + con2.close(); + System.exit(-1); + } + + // drop the table (not dropping the sequence) from client 1 + try { + System.out.print("3.1. drop table t1 using client 1... "); + stmt1.executeUpdate("DROP TABLE t1"); + System.out.println("passed :)"); + System.out.print("3.1. recreate t1 using client 1... "); + stmt1.executeUpdate("CREATE TABLE t1 ( id serial, who varchar(12) )"); + System.out.println("passed :)"); + } catch (SQLException e) { + // this means we failed (table not there perhaps?) + System.out.println("FAILED 3 :( " + e.getMessage()); + System.out.println("ABORTING TEST!!!"); + if (rs1 != null) rs1.close(); + if (rs2 != null) rs2.close(); + con1.close(); + con2.close(); + System.exit(-1); + } + + // re-establish connection + try { + System.out.print("x. Reconnecting client 1 and 2... "); + con1.close(); + con2.close(); + con1 = DriverManager.getConnection(args[0]); + con2 = DriverManager.getConnection(args[0]); + stmt1 = con1.createStatement(); + stmt2 = con2.createStatement(); + System.out.println("passed :)"); + } catch (SQLException e) { + // this means we failed (table not there perhaps?) + System.out.println("FAILED x :( " + e.getMessage()); + System.out.println("ABORTING TEST!!!"); + if (rs1 != null) rs1.close(); + if (rs2 != null) rs2.close(); + con1.close(); + con2.close(); + System.exit(-1); + } + + // insert and print, should get 1,2 + try { + System.out.println("4. insert into t1 using client 1 and 2..."); + stmt1.executeUpdate("INSERT INTO t1(who) VALUES('client1')"); + System.out.println("passed :)"); + con2.setAutoCommit(false); + stmt2.executeUpdate("INSERT INTO t1(who) VALUES('client2')"); + con2.commit(); + con2.setAutoCommit(true); + System.out.println("passed :)"); + System.out.println("4.1. check table status with client 1..."); + rs1 = stmt1.executeQuery("SELECT * FROM t1 ORDER BY who"); + for (int cntr = 1; rs1.next(); cntr++) { + int id = rs1.getInt("id"); + System.out.println(id + ", " + + rs1.getString("who")); + if (id != cntr) + throw new SQLException("expected " + cntr + ", got " + id); + } + System.out.println("passed :)"); + System.out.println("4.2. check table status with client 2..."); + rs2 = stmt2.executeQuery("SELECT * FROM t1 ORDER BY who"); + for (int cntr = 1; rs2.next(); cntr++) { + int id = rs2.getInt("id"); + System.out.println(id + ", " + + rs2.getString("who")); + if (id != cntr) + throw new SQLException("expected " + cntr + ", got " + id); + } + System.out.println("passed :)"); + } catch (SQLException e) { + // this means we failed (table not there perhaps?) + System.out.println("FAILED 4 :( " + e.getMessage()); + System.out.println("ABORTING TEST!!!"); + if (rs1 != null) rs1.close(); + if (rs2 != null) rs2.close(); + con1.close(); + con2.close(); + System.exit(-1); + } + + if (rs1 != null) rs1.close(); + if (rs2 != null) rs2.close(); + + // cleanup + try { + stmt1.executeUpdate("DROP TABLE t1"); + } catch (SQLException e) { + System.out.println("FAILED to clean up! :( " + e.getMessage()); + } + + con1.close(); + con2.close(); + } +}
new file mode 100644 --- /dev/null +++ b/tests/BugDatabaseMetaData_Bug_3356.java @@ -0,0 +1,29 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +import java.sql.*; + +public class BugDatabaseMetaData_Bug_3356 { + public static void main(String[] args) throws Exception { + Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); + Connection con = DriverManager.getConnection(args[0]); + DatabaseMetaData dbmd = con.getMetaData(); + ResultSet rs = dbmd.getColumns("", "sys", "_tables", "id"); + rs.next(); + String tableName1 = rs.getString("TABLE_NAME"); + String tableName2 = rs.getString(3); + String isNullable1 = rs.getString("IS_NULLABLE"); + String isNullable2 = rs.getString(18); + System.out.println(tableName1); + System.out.println(tableName2); + System.out.println(isNullable1); + System.out.println(isNullable2); + rs.close(); + con.close(); + } +}
new file mode 100644 --- /dev/null +++ b/tests/BugDecimalRound_Bug_3561.java @@ -0,0 +1,34 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +import java.sql.*; +import java.math.BigDecimal; + +public class BugDecimalRound_Bug_3561 { + public static void main(String[] args) throws Exception { + Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); + Connection con = DriverManager.getConnection(args[0]); + Statement stmt1 = con.createStatement(); + PreparedStatement st; + Statement stmt2; + ResultSet rs; + BigDecimal bd = new BigDecimal("112.125"); + + stmt1.executeUpdate("CREATE TABLE bug3561 (d decimal(14,4))"); + st = con.prepareStatement("INSERT INTO bug3561 VALUES (?)"); + st.setBigDecimal(1, bd); + st.executeUpdate(); + stmt2 = con.createStatement(); + rs = stmt2.executeQuery("SELECT d FROM bug3561"); + while (rs.next()) + System.out.println(rs.getString(1)); + rs.close(); + stmt1.executeUpdate("DROP TABLE bug3561"); + con.close(); + } +}
new file mode 100644 --- /dev/null +++ b/tests/Makefile.ag @@ -0,0 +1,35 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + +EXTRA_DIST = \ + Test_Cautocommit.java \ + Test_Clargequery.java \ + Test_Cmanycon.java \ + Test_Creplysize.java \ + Test_Csavepoints.java \ + Test_Ctransaction.java \ + Test_Dobjects.java \ + Test_PSgeneratedkeys.java \ + Test_PSlargeresponse.java \ + Test_PSlargeamount.java \ + Test_PStimedate.java \ + Test_PStimezone.java \ + Test_PStypes.java \ + Test_Rbooleans.java \ + Test_Rmetadata.java \ + Test_Rpositioning.java \ + Test_Rtimedate.java \ + Test_Sbatching.java \ + Test_Int128.java \ + BugConcurrent_clients_SF_1504657.java \ + BugDatabaseMetaData_Bug_3356.java \ + BugDecimalRound_Bug_3561.java \ + build.xml build.properties + +ant_jar_jdbctests = { + DIR = datadir/monetdb/lib + FILES = jdbctests.jar +}
new file mode 100644 --- /dev/null +++ b/tests/Test_Cautocommit.java @@ -0,0 +1,78 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +import java.sql.*; + +public class Test_Cautocommit { + public static void main(String[] args) throws Exception { + Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); + Connection con1 = DriverManager.getConnection(args[0]); + Connection con2 = DriverManager.getConnection(args[0]); + Statement stmt1 = con1.createStatement(); + Statement stmt2 = con2.createStatement(); + ResultSet rs = null; + //DatabaseMetaData dbmd = con.getMetaData(); + + // >> true: auto commit should be on by default + System.out.println("0. true\t" + con1.getAutoCommit()); + System.out.println("0. true\t" + con2.getAutoCommit()); + + // test commit by checking if a change is visible in another connection + try { + System.out.print("1. create..."); + stmt1.executeUpdate("CREATE TABLE table_Test_Cautocommit ( id int )"); + System.out.println("passed :)"); + System.out.print("2. select..."); + rs = stmt2.executeQuery("SELECT * FROM table_Test_Cautocommit"); + System.out.println("passed :)"); + } catch (SQLException e) { + // this means we failed (table not there perhaps?) + System.out.println("FAILED :( " + e.getMessage()); + System.out.println("ABORTING TEST!!!"); + con1.close(); + con2.close(); + System.exit(-1); + } + + // turn off auto commit + con1.setAutoCommit(false); + con2.setAutoCommit(false); + + // >> false: we just disabled it + System.out.println("3. false\t" + con1.getAutoCommit()); + System.out.println("4. false\t" + con2.getAutoCommit()); + + // a change would not be visible now + try { + System.out.print("5. drop..."); + stmt2.executeUpdate("DROP TABLE table_Test_Cautocommit"); + System.out.println("passed :)"); + System.out.print("6. select..."); + rs = stmt1.executeQuery("SELECT * FROM table_Test_Cautocommit"); + System.out.println("passed :)"); + System.out.print("7. commit..."); + con2.commit(); + System.out.println("passed :)"); + System.out.print("8. select..."); + rs = stmt1.executeQuery("SELECT * FROM table_Test_Cautocommit"); + System.out.println("passed :)"); + System.out.print("9. commit..."); + con1.commit(); + System.out.println("passed :)"); + } catch (SQLException e) { + // this means we failed (table not there perhaps?) + System.out.println("FAILED :("); + System.out.println("ABORTING TEST!!!"); + } + + if (rs != null) rs.close(); + + con1.close(); + con2.close(); + } +}
new file mode 100644 --- /dev/null +++ b/tests/Test_Cforkbomb.java @@ -0,0 +1,59 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +import java.sql.*; +import java.util.*; + +public class Test_Cforkbomb { + private static String args[]; + + static class Worker extends Thread { + private int id; + + public Worker(int id) { + this.id = id; + } + + public void run() { + try { + System.out.print("Establishing Connection " + id + "..."); + Connection con = DriverManager.getConnection(args[0]); + System.out.println(" done..."); + + // do something with the connection to test if it works + Statement stmt = con.createStatement(); + ResultSet rs = stmt.executeQuery("SELECT " + id); + if (!rs.next()) { + System.out.println("thread " + id + " got no response from server :("); + } else { + if (rs.getInt(1) == id) { + System.out.println("thread " + id + ": connection ok"); + } else { + System.out.println("thread " + id + ": got garbage: " + rs.getString(1)); + } + } + + con.close(); + } catch (SQLException e) { + System.out.println("thread " + id + " unhappy: " + e.toString()); + } + } + } + + public static void main(String[] args) throws Exception { + Test_Cforkbomb.args = args; + Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); + + // just DoS the server full throttle :) + int i; + for (i = 0; i < 200; i++) { + Worker w = new Worker(i); + w.start(); + } + } +}
new file mode 100644 --- /dev/null +++ b/tests/Test_CisValid.java @@ -0,0 +1,41 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +import java.sql.*; + +public class Test_CisValid { + /* Test that after an error has occurred during a transaction, one can + * still test if the connection is valid or not. + * The function Connection.isValid() should only return TRUE or FALSE. It + * shall never alter the state of this connection */ + public static void main(String[] args) throws Exception { + Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); + Connection conn = DriverManager.getConnection(args[0]); + Statement stmt = conn.createStatement(); + + try { + conn.setAutoCommit(false); // start a transaction + stmt.execute("SELECT COUNT(*) FROM doesnotexist;"); // let's trigger an error + } catch (SQLException e) { + // e.printStackTrace(); + System.err.println("Expected error: " + e); + + try { + // test calling conn.isValid() + System.out.println("Validating connection: conn.isValid? " + conn.isValid(30)); + // Can we rollback on this connection without causing an error? + conn.rollback(); + } catch (SQLException e2) { + System.err.println("UnExpected error: " + e2); + } + } + + stmt.close(); + conn.close(); + } +}
new file mode 100644 --- /dev/null +++ b/tests/Test_Clargequery.java @@ -0,0 +1,68 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +import java.sql.*; + +public class Test_Clargequery { + public static void main(String[] args) throws Exception { + Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); + Connection con1 = DriverManager.getConnection(args[0]); + Statement stmt1 = con1.createStatement(); + ResultSet rs = null; + //DatabaseMetaData dbmd = con.getMetaData(); + + // >> true: auto commit should be on by default + System.out.println("0. true\t" + con1.getAutoCommit()); + + final String query = + "-- When a query larger than the send buffer is being " + + "sent, a deadlock situation can occur when the server writes " + + "data back, blocking because we as client are sending as well " + + "and not reading. Hence, to avoid this deadlock, in JDBC a " + + "separate thread is started in the background such that results " + + "from the server can be read, while data is still being sent to " + + "the server. To test this, we need to trigger the SendThread " + + "being started, which we do with a quite large query. We " + + "construct it by repeating some stupid query plus a comment " + + "a lot of times. And as you're guessing by now, you're reading " + + "this stupid comment that we use :)\n" + + "select 1;\n"; + + int size = 1000; + StringBuffer bigq = new StringBuffer(query.length() * size); + for (int i = 0; i < size; i++) { + bigq.append(query); + } + + // test commit by checking if a change is visible in another connection + try { + System.out.print("1. sending"); + stmt1.execute(bigq.toString()); + int i = 1; // we skip the first "getResultSet()" + while (stmt1.getMoreResults() != false) { + i++; + } + if (stmt1.getUpdateCount() != -1) { + System.out.println("found an update count for a SELECT query"); + throw new SQLException("boo"); + } + if (i != size) { + System.out.println("expecting " + size + " tuples, only got " + i); + throw new SQLException("boo"); + } + } catch (SQLException e) { + // this means we failed (table not there perhaps?) + System.out.println("FAILED :("); + System.out.println("ABORTING TEST!!!"); + } + + if (rs != null) rs.close(); + + con1.close(); + } +}
new file mode 100644 --- /dev/null +++ b/tests/Test_Cmanycon.java @@ -0,0 +1,48 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +import java.sql.*; +import java.util.*; + +public class Test_Cmanycon { + public static void main(String[] args) throws Exception { + Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); + List cons = new ArrayList(100); // Connections go in here + + try { + // spawn a lot of Connections, just for fun... + int i; + for (i = 0; i < 50; i++) { + System.out.print("Establishing Connection " + i + "..."); + Connection con = DriverManager.getConnection(args[0]); + System.out.print(" done..."); + + // do something with the connection to test if it works + con.setAutoCommit(false); + System.out.println(" alive"); + + cons.add(con); + } + + // now try to nicely close them + i = 0; + for (Iterator it = cons.iterator(); it.hasNext(); i++) { + Connection con = (Connection)(it.next()); + + // see if the connection still works + System.out.print("Closing Connection " + i + "..."); + con.setAutoCommit(true); + System.out.print(" still alive..."); + con.close(); + System.out.println(" done"); + } + } catch (SQLException e) { + System.out.println("FAILED! " + e.getMessage()); + } + } +}
new file mode 100644 --- /dev/null +++ b/tests/Test_Creplysize.java @@ -0,0 +1,92 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +import java.sql.*; + +public class Test_Creplysize { + public static void main(String[] args) throws Exception { + Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); + Connection con1 = DriverManager.getConnection(args[0]); + Statement stmt1 = con1.createStatement(); + ResultSet rs = null; + //DatabaseMetaData dbmd = con.getMetaData(); + + con1.setAutoCommit(false); + // >> true: auto commit should be off by now + System.out.println("0. true\t" + con1.getAutoCommit()); + + // test commit by checking if a change is visible in another connection + try { + System.out.print("1. create... "); + stmt1.executeUpdate("CREATE TABLE table_Test_Creplysize ( id int )"); + System.out.println("passed :)"); + + System.out.print("2. populating with 21 records... "); + for (int i = 0; i < 21; i++) + stmt1.executeUpdate("INSERT INTO table_Test_Creplysize (id) values (" + (i + 1) + ")"); + System.out.println("passed :)"); + + System.out.print("3. hinting the driver to use fetchsize 10... "); + stmt1.setFetchSize(10); + System.out.println("passed :)"); + + System.out.print("4. selecting all values... "); + rs = stmt1.executeQuery("SELECT * FROM table_Test_Creplysize"); + int i = 0; + while (rs.next()) i++; + rs.close(); + if (i == 21) { + System.out.println("passed :)"); + } else { + throw new SQLException("got " + i + " records!!!"); + } + + System.out.print("5. resetting driver fetchsize hint... "); + stmt1.setFetchSize(0); + System.out.println("passed :)"); + + System.out.print("6. instructing the driver to return at max 10 rows... "); + stmt1.setMaxRows(10); + System.out.println("passed :)"); + + System.out.print("7. selecting all values... "); + rs = stmt1.executeQuery("SELECT * FROM table_Test_Creplysize"); + i = 0; + while (rs.next()) i++; + rs.close(); + if (i == 10) { + System.out.println("passed :)"); + } else { + throw new SQLException("got " + i + " records!!!"); + } + + System.out.print("8. hinting the driver to use fetchsize 5... "); + stmt1.setFetchSize(5); + System.out.println("passed :)"); + + System.out.print("9. selecting all values... "); + rs = stmt1.executeQuery("SELECT * FROM table_Test_Creplysize"); + i = 0; + while (rs.next()) i++; + rs.close(); + if (i == 10) { + System.out.println("passed :)"); + } else { + throw new SQLException("got " + i + " records!!!"); + } + } catch (SQLException e) { + // this means we failed (table not there perhaps?) + System.out.println("FAILED :( " + e.getMessage()); + System.out.println("ABORTING TEST!!!"); + con1.close(); + System.exit(-1); + } + + con1.close(); + } +}
new file mode 100644 --- /dev/null +++ b/tests/Test_Csavepoints.java @@ -0,0 +1,138 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +import java.sql.*; + +public class Test_Csavepoints { + public static void main(String[] args) throws Exception { + Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); + Connection con = DriverManager.getConnection(args[0]); + Statement stmt = con.createStatement(); + ResultSet rs = null; + //DatabaseMetaData dbmd = con.getMetaData(); + + // >> true: auto commit should be on by default + System.out.println("0. true\t" + con.getAutoCommit()); + + // savepoints require a non-autocommit connection + try { + System.out.print("1. savepoint..."); + con.setSavepoint(); + System.out.println("PASSED :("); + System.out.println("ABORTING TEST!!!"); + con.close(); + System.exit(-1); + } catch (SQLException e) { + System.out.println("failed :) " + e.getMessage()); + } + + con.setAutoCommit(false); + // >> true: auto commit should be on by default + System.out.println("0. false\t" + con.getAutoCommit()); + + try { + System.out.print("2. savepoint..."); + /* make a savepoint, and discard it */ + con.setSavepoint(); + System.out.println("passed :)"); + + stmt.executeUpdate("CREATE TABLE table_Test_Csavepoints ( id int, PRIMARY KEY (id) )"); + + System.out.print("3. savepoint..."); + Savepoint sp2 = con.setSavepoint("empty table"); + System.out.println("passed :)"); + + rs = stmt.executeQuery("SELECT id FROM table_Test_Csavepoints"); + int i = 0; + int items = 0; + System.out.print("4. table " + items + " items"); + while (rs.next()) { + System.out.print(", " + rs.getString("id")); + i++; + } + if (i != items) { + System.out.println(" FAILED (" + i + ") :("); + System.out.println("ABORTING TEST!!!"); + con.close(); + System.exit(-1); + } + System.out.println(" passed :)"); + + stmt.executeUpdate("INSERT INTO table_Test_Csavepoints VALUES (1)"); + stmt.executeUpdate("INSERT INTO table_Test_Csavepoints VALUES (2)"); + stmt.executeUpdate("INSERT INTO table_Test_Csavepoints VALUES (3)"); + + System.out.print("5. savepoint..."); + Savepoint sp3 = con.setSavepoint("three values"); + System.out.println("passed :)"); + + rs = stmt.executeQuery("SELECT id FROM table_Test_Csavepoints"); + i = 0; + items = 3; + System.out.print("6. table " + items + " items"); + while (rs.next()) { + System.out.print(", " + rs.getString("id")); + i++; + } + if (i != items) { + System.out.println(" FAILED (" + i + ") :("); + System.out.println("ABORTING TEST!!!"); + con.close(); + System.exit(-1); + } + System.out.println(" passed :)"); + + System.out.print("7. release..."); + con.releaseSavepoint(sp3); + System.out.println("passed :)"); + + rs = stmt.executeQuery("SELECT id FROM table_Test_Csavepoints"); + i = 0; + items = 3; + System.out.print("8. table " + items + " items"); + while (rs.next()) { + System.out.print(", " + rs.getString("id")); + i++; + } + if (i != items) { + System.out.println(" FAILED (" + i + ") :("); + System.out.println("ABORTING TEST!!!"); + con.close(); + System.exit(-1); + } + System.out.println(" passed :)"); + + System.out.print("9. rollback..."); + con.rollback(sp2); + System.out.println("passed :)"); + + rs = stmt.executeQuery("SELECT id FROM table_Test_Csavepoints"); + i = 0; + items = 0; + System.out.print("10. table " + items + " items"); + while (rs.next()) { + System.out.print(", " + rs.getString("id")); + i++; + } + if (i != items) { + System.out.println(" FAILED (" + i + ") :("); + System.out.println("ABORTING TEST!!!"); + con.close(); + System.exit(-1); + } + System.out.println(" passed :)"); + + con.rollback(); + } catch (SQLException e) { + System.out.println("FAILED :( "+ e.getMessage()); + System.out.println("ABORTING TEST!!!"); + } + + con.close(); + } +}
new file mode 100644 --- /dev/null +++ b/tests/Test_Csendthread.java @@ -0,0 +1,40 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +import java.sql.*; + +public class Test_Csendthread { + public static void main(String[] args) throws Exception { + Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); + + System.out.println("0. active threads: " + Thread.activeCount()); + + StringBuilder sb = new StringBuilder(); + sb.append("SELECT 1"); + for (int i = 0; i < 256; i++) { + sb.append("-- ADDING DUMMY TEXT AS COMMENT TO MAKE THE QUERY VERY VERY VERY VERY LONG\n"); + } + sb.append(";\n"); + String longQuery = sb.toString(); + + for (int i = 0; i < 10; i++) { + for (int j = 0; j < 10; j++) { + Connection conn = DriverManager.getConnection(args[0]); + try { + Statement st = conn.createStatement(); + st.execute(longQuery); + st.close(); + } finally { + conn.close(); + } + } + System.out.println("1. active threads: " + Thread.activeCount()); + } + System.out.println("2. active threads: " + Thread.activeCount()); + } +}
new file mode 100644 --- /dev/null +++ b/tests/Test_Ctransaction.java @@ -0,0 +1,97 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +import java.sql.*; + +public class Test_Ctransaction { + public static void main(String[] args) throws Exception { + Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); + Connection con1 = DriverManager.getConnection(args[0]); + Statement stmt1 = con1.createStatement(); + //DatabaseMetaData dbmd = con.getMetaData(); + + // >> true: auto commit should be on by default + System.out.println("0. true\t" + con1.getAutoCommit()); + + // test commit by checking if a change is visible in another connection + try { + System.out.print("1. commit..."); + con1.commit(); + System.out.println("PASSED :("); + con1.close(); + System.exit(-1); + } catch (SQLException e) { + // this means we get what we expect + System.out.println("failed :) " + e.getMessage()); + } + + // turn off auto commit + con1.setAutoCommit(false); + + // >> false: we just disabled it + System.out.println("2. false\t" + con1.getAutoCommit()); + + // a change would not be visible now + try { + System.out.print("3. commit..."); + con1.commit(); + System.out.println("passed :)"); + System.out.print("4. commit..."); + con1.commit(); + System.out.println("passed :)"); + System.out.print("5. rollback..."); + con1.rollback(); + System.out.println("passed :)"); + } catch (SQLException e) { + // this means we failed (table not there perhaps?) + System.out.println("FAILED :( " + e.getMessage()); + System.out.println("ABORTING TEST!!!"); + con1.close(); + System.exit(-1); + } + + // turn off auto commit + con1.setAutoCommit(true); + + // >> false: we just disabled it + System.out.println("6. true\t" + con1.getAutoCommit()); + + try { + System.out.print("7. start transaction..."); + stmt1.executeUpdate("START TRANSACTION"); + System.out.println("passed :)"); + System.out.print("8. commit..."); + con1.commit(); + System.out.println("passed :)"); + System.out.println("9. true\t" + con1.getAutoCommit()); + System.out.print("10. start transaction..."); + stmt1.executeUpdate("START TRANSACTION"); + System.out.println("passed :)"); + System.out.print("11. rollback..."); + con1.rollback(); + System.out.println("passed :)"); + System.out.println("12. true\t" + con1.getAutoCommit()); + } catch (SQLException e) { + // this means we failed (table not there perhaps?) + System.out.println("FAILED :("); + System.out.println("ABORTING TEST!!!"); + } + + try { + // a commit now should fail + System.out.print("13. commit..."); + con1.commit(); + System.out.println("PASSED :("); + } catch (SQLException e) { + // this means we get what we expect + System.out.println("failed :) " + e.getMessage()); + } + + con1.close(); + } +}
new file mode 100644 --- /dev/null +++ b/tests/Test_Dobjects.java @@ -0,0 +1,51 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +import java.sql.*; +import java.util.*; + +public class Test_Dobjects { + private static void dumpResultSet(ResultSet rs) throws SQLException { + ResultSetMetaData rsmd = rs.getMetaData(); + System.out.println("Resultset with " + rsmd.getColumnCount() + " columns"); + for (int col = 1; col <= rsmd.getColumnCount(); col++) { + System.out.print(rsmd.getColumnName(col) + "\t"); + } + System.out.println(); + while (rs.next()) { + for (int col = 1; col <= rsmd.getColumnCount(); col++) { + System.out.print(rs.getString(col) + "\t"); + } + System.out.println(); + } + } + + public static void main(String[] args) throws Exception { + Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); + Connection con = DriverManager.getConnection(args[0]); + Statement stmt = con.createStatement(); + PreparedStatement pstmt; + DatabaseMetaData dbmd = con.getMetaData(); + + try { + // inspect the catalog by use of dbmd functions + dumpResultSet(dbmd.getCatalogs()); +// dumpResultSet(dbmd.getSchemas()); // this produces different outputs on different platforms due to dependency on SAMTOOLS and NETCDF. so exclude it + dumpResultSet(dbmd.getSchemas(null, "sys")); + dumpResultSet(dbmd.getTables(null, "sys", null, null)); + dumpResultSet(dbmd.getUDTs(null, "sys", null, null)); + int[] UDTtypes = { Types.STRUCT, Types.DISTINCT }; + dumpResultSet(dbmd.getUDTs(null, "sys", null, UDTtypes)); + } catch (SQLException e) { + System.out.println("FAILED :( "+ e.getMessage()); + System.out.println("ABORTING TEST!!!"); + } + + con.close(); + } +}
new file mode 100644 --- /dev/null +++ b/tests/Test_FetchSize.java @@ -0,0 +1,29 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +import java.sql.*; + +public class Test_FetchSize { + public static void main(String[] args) throws Exception { + Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); + Connection con = DriverManager.getConnection(args[0]); + Statement stmt = con.createStatement(); + ResultSet rs = stmt.executeQuery("SELECT * FROM _tables"); + + System.out.println("Statement fetch size before set: " + stmt.getFetchSize()); + System.out.println("ResultSet fetch size before set: " + rs.getFetchSize()); + + rs.setFetchSize(16384); + + System.out.println("Statement fetch size before set: " + stmt.getFetchSize()); + System.out.println("ResultSet fetch size before set: " + rs.getFetchSize()); + + rs.close(); + con.close(); + } +}
new file mode 100644 --- /dev/null +++ b/tests/Test_Int128.java @@ -0,0 +1,69 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +import java.math.BigDecimal; +import java.math.BigInteger; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; + +/* Test whether we can represent a full-size int128 as JDBC results */ +public class Test_Int128 { + public static void main(String[] args) throws Exception { + Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); + Connection con = DriverManager.getConnection(args[0]); + BigInteger bi = new BigInteger( + "123456789012345678909876543210987654321"); + BigDecimal bd = new BigDecimal( + "1234567890123456789.9876543210987654321"); + try { + con.setAutoCommit(false); + Statement s = con.createStatement(); + s.executeUpdate("CREATE TABLE HUGEINTT (I HUGEINT)"); + s.executeUpdate("CREATE TABLE HUGEDECT (I DECIMAL(38,19))"); + + PreparedStatement insertStatement = con + .prepareStatement("INSERT INTO HUGEINTT VALUES (?)"); + insertStatement.setBigDecimal(1, new BigDecimal(bi)); + insertStatement.executeUpdate(); + insertStatement.close(); + + s.executeUpdate("INSERT INTO HUGEDECT VALUES ("+bd+");"); + + ResultSet rs = s.executeQuery("SELECT I FROM HUGEINTT"); + rs.next(); + BigInteger biRes = rs.getBigDecimal(1).toBigInteger(); + rs.close(); + rs = s.executeQuery("SELECT I FROM HUGEDECT"); + rs.next(); + BigDecimal bdRes = rs.getBigDecimal(1); + rs.close(); + s.close(); + + System.out.println("Expecting " + bi + ", got " + biRes); + if (!bi.equals(biRes)) { + throw new RuntimeException(); + } + + System.out.println("Expecting " + bd + ", got " + bdRes); + if (!bd.equals(bdRes)) { + throw new RuntimeException(); + } + System.out.println("SUCCESS"); + + } catch (SQLException e) { + System.out.println("FAILED :( " + e.getMessage()); + System.out.println("ABORTING TEST!!!"); + } + + con.close(); + } +}
new file mode 100644 --- /dev/null +++ b/tests/Test_PSgeneratedkeys.java @@ -0,0 +1,71 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +import java.sql.*; + +public class Test_PSgeneratedkeys { + public static void main(String[] args) throws Exception { + Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); + Connection con = DriverManager.getConnection(args[0]); + con.setAutoCommit(false); + // >> false: auto commit was just switched off + System.out.println("0. false\t" + con.getAutoCommit()); + + try { + Statement stmt = con.createStatement(); + stmt.executeUpdate( + "CREATE TABLE psgenkey (" + + " id serial," + + " val varchar(20)" + + ")"); + stmt.close(); + } catch (SQLException e) { + System.out.println(e); + System.out.println("Creation of test table failed! :("); + System.out.println("ABORTING TEST!!!"); + System.exit(-1); + } + + try { + PreparedStatement pstmt = con.prepareStatement( + "INSERT INTO psgenkey (val) VALUES ('this is a test')", + Statement.RETURN_GENERATED_KEYS); + + System.out.print("1. inserting a record..."); + pstmt.executeUpdate(); + System.out.println("success :)"); + + // now get the generated keys + System.out.print("2. getting generated keys..."); + ResultSet keys = pstmt.getGeneratedKeys(); + if (keys == null || !keys.next()) { + System.out.println("there are no keys! :("); + System.out.println("ABORTING TEST!!!"); + System.exit(-1); + } + + System.out.println("generated key index: " + keys.getInt(1)); + while (keys.next()) { + System.out.println("generated key index: " + keys.getInt(1)); + } + + if (keys.getStatement() == null) { + System.out.println("ResultSet.getStatement() should never return null!"); + } + + keys.close(); + pstmt.close(); + } catch (SQLException e) { + System.out.println("FAILED :( "+ e.getMessage()); + System.out.println("ABORTING TEST!!!"); + } + + con.rollback(); + con.close(); + } +}
new file mode 100644 --- /dev/null +++ b/tests/Test_PSgetObject.java @@ -0,0 +1,105 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +import java.sql.*; + +public class Test_PSgetObject { + public static void main(String[] args) throws Exception { + Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); + final Connection con = DriverManager.getConnection(args[0]); + con.setAutoCommit(false); + // >> false: auto commit was just switched off + System.out.println("0. false\t" + con.getAutoCommit()); + + final Statement stmt = con.createStatement(); + try { + System.out.print("1. creating test table..."); + stmt.executeUpdate("CREATE TABLE table_Test_PSgetObject (ti tinyint, si smallint, i int, bi bigint)"); + stmt.close(); + System.out.println(" passed :)"); + } catch (SQLException e) { + System.out.println(e); + System.out.println("Creation of test table failed! :("); + System.out.println("ABORTING TEST!!!"); + System.exit(-1); + } + + PreparedStatement pstmt; + try { + System.out.print("2a. inserting 3 records as batch..."); + pstmt = con.prepareStatement("INSERT INTO table_Test_PSgetObject (ti,si,i,bi) VALUES (?,?,?,?)"); + pstmt.setShort(1, (short)1); + pstmt.setShort(2, (short)1); + pstmt.setInt (3, 1); + pstmt.setLong(4, (long)1); + pstmt.addBatch(); + + pstmt.setShort(1, (short)127); + pstmt.setShort(2, (short)12700); + pstmt.setInt (3, 1270000); + pstmt.setLong(4, (long)127000000); + pstmt.addBatch(); + + pstmt.setShort(1, (short)-127); + pstmt.setShort(2, (short)-12700); + pstmt.setInt (3, -1270000); + pstmt.setLong(4, (long)-127000000); + pstmt.addBatch(); + + pstmt.executeBatch(); + System.out.println(" passed :)"); + + System.out.print("2b. closing PreparedStatement..."); + pstmt.close(); + System.out.println(" passed :)"); + } catch (SQLException e) { + System.out.println("FAILED to INSERT data:( "+ e.getMessage()); + while ((e = e.getNextException()) != null) + System.out.println("FAILED :( " + e.getMessage()); + System.out.println("ABORTING TEST!!!"); + } + + try { + System.out.print("3a. selecting records..."); + pstmt = con.prepareStatement("SELECT ti,si,i,bi FROM table_Test_PSgetObject ORDER BY ti,si,i,bi"); + ResultSet rs = pstmt.executeQuery(); + System.out.println(" passed :)"); + + while (rs.next()) { + // test fix for https://www.monetdb.org/bugzilla/show_bug.cgi?id=4026 + Short ti = (Short) rs.getObject(1); + Short si = (Short) rs.getObject(2); + Integer i = (Integer) rs.getObject(3); + Long bi = (Long) rs.getObject(4); + + System.out.println(" Retrieved row data: ti=" + ti + " si=" + si + " i=" + i + " bi=" + bi); + } + + System.out.print("3b. closing ResultSet..."); + rs.close(); + System.out.println(" passed :)"); + + System.out.print("3c. closing PreparedStatement..."); + pstmt.close(); + System.out.println(" passed :)"); + } catch (SQLException e) { + System.out.println("FAILED to RETRIEVE data:( "+ e.getMessage()); + while ((e = e.getNextException()) != null) + System.out.println("FAILED :( " + e.getMessage()); + System.out.println("ABORTING TEST!!!"); + } + + System.out.print("4. Rollback changes..."); + con.rollback(); + System.out.println(" passed :)"); + + System.out.print("5. Close connection..."); + con.close(); + System.out.println(" passed :)"); + } +}
new file mode 100644 --- /dev/null +++ b/tests/Test_PSlargeamount.java @@ -0,0 +1,45 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +import java.sql.*; +import java.util.*; + +/* Create a lot of PreparedStatements, to emulate webloads such as those + * from Hibernate. */ + +public class Test_PSlargeamount { + public static void main(String[] args) throws Exception { + Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); + Connection con = DriverManager.getConnection(args[0]); + Statement stmt = con.createStatement(); + PreparedStatement pstmt; + + // >> true: auto commit should be on + System.out.println("0. true\t" + con.getAutoCommit()); + + try { + System.out.println("1. Preparing and executing a unique statement"); + for (int i = 0; i < 100000; i++) { + pstmt = con.prepareStatement("select " + i + ", " + i + " = ?"); + pstmt.setInt(1, i); + ResultSet rs = pstmt.executeQuery(); + if (rs.next() && i % 1000 == 0) { + System.out.println(rs.getInt(1) + ", " + rs.getBoolean(2)); + } + /* this call should cause resources on the server to be + * freed */ + pstmt.close(); + } + } catch (SQLException e) { + System.out.println("FAILED :( "+ e.getMessage()); + System.out.println("ABORTING TEST!!!"); + } + + con.close(); + } +}
new file mode 100644 --- /dev/null +++ b/tests/Test_PSlargebatchval.java @@ -0,0 +1,51 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +import java.sql.*; +import java.util.*; +import java.nio.charset.Charset; + +public class Test_PSlargebatchval { + public static void main(String[] args) throws Exception { + Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); + Connection con = DriverManager.getConnection(args[0]); + Statement stmt = con.createStatement(); + PreparedStatement pstmt; + + // >> true: auto commit should be on + System.out.println("0. true\t" + con.getAutoCommit()); + + byte[] errorBytes = new byte[] { (byte) 0xe2, (byte) 0x80, (byte) 0xa7 }; + String errorStr = new String(errorBytes, Charset.forName("UTF-8")); + StringBuilder repeatedErrorStr = new StringBuilder(); + for (int i = 0; i < 8170;i++) { + repeatedErrorStr.append(errorStr); + } + + try { + stmt.execute("CREATE TABLE x (c INT, a CLOB, b DOUBLE)"); + pstmt = con.prepareStatement("INSERT INTO x VALUES (?,?,?)"); + pstmt.setLong(1, 1); + pstmt.setString(2, repeatedErrorStr.toString()); + pstmt.setDouble(3, 1.0); + pstmt.addBatch(); + pstmt.executeBatch(); + stmt.execute("DROP TABLE x"); + + pstmt.close(); + stmt.close(); + } catch (SQLException e) { + System.out.println("FAILED :( "+ e.getMessage()); + while ((e = e.getNextException()) != null) + System.out.println("FAILED :( " + e.getMessage()); + System.out.println("ABORTING TEST!!!"); + } + + con.close(); + } +}
new file mode 100644 --- /dev/null +++ b/tests/Test_PSlargeresponse.java @@ -0,0 +1,46 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +import java.sql.*; +import java.util.*; + +public class Test_PSlargeresponse { + public static void main(String[] args) throws Exception { + Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); + Connection con = DriverManager.getConnection(args[0]); + Statement stmt = con.createStatement(); + PreparedStatement pstmt; + // retrieve this to simulate a bug report + DatabaseMetaData dbmd = con.getMetaData(); + + // >> true: auto commit should be on + System.out.println("0. true\t" + con.getAutoCommit()); + + try { + System.out.print("1. DatabaseMetadata environment retrieval... "); + System.out.println(dbmd.getURL()); + + pstmt = con.prepareStatement("select * from columns"); + System.out.print("2. empty call..."); + try { + // should succeed (no arguments given) + pstmt.execute(); + System.out.println(" passed :)"); + } catch (SQLException e) { + System.out.println(" FAILED :("); + System.out.println("ABORTING TEST!!!"); + System.exit(-1); + } + } catch (SQLException e) { + System.out.println("FAILED :( "+ e.getMessage()); + System.out.println("ABORTING TEST!!!"); + } + + con.close(); + } +}
new file mode 100644 --- /dev/null +++ b/tests/Test_PSmanycon.java @@ -0,0 +1,65 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +import java.sql.*; +import java.util.*; + +public class Test_PSmanycon { + public static void main(String[] args) throws Exception { + Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); + List pss = new ArrayList(100); // Connections go in here + + try { + // spawn a lot of Connections, just for fun... + int i; + for (i = 0; i < 50; i++) { + System.out.print("Establishing Connection " + i + "..."); + Connection con = DriverManager.getConnection(args[0]); + System.out.print(" done..."); + + // do something with the connection to test if it works + PreparedStatement pstmt = con.prepareStatement("select " + i); + System.out.println(" alive"); + + pss.add(pstmt); + } + + // now try to nicely execute them + i = 0; + for (Iterator it = pss.iterator(); it.hasNext(); i++) { + PreparedStatement pstmt = (PreparedStatement)(it.next()); + + // see if the connection still works + System.out.print("Executing PreparedStatement " + i + "..."); + if (!pstmt.execute()) + throw new Exception("should have seen a ResultSet!"); + + ResultSet rs = pstmt.getResultSet(); + if (!rs.next()) + throw new Exception("ResultSet is empty"); + System.out.print(" result: " + rs.getString(1)); + pstmt.getConnection().close(); + System.out.println(", done"); + + if ((i + 1) % 23 == 0) { + // inject a failed transaction + Connection con = DriverManager.getConnection(args[0]); + Statement stmt = con.createStatement(); + try { + int affrows = stmt.executeUpdate("update foo where bar is wrong"); + System.out.println("oops, faulty statement just got through :("); + } catch (SQLException e) { + System.out.println("Forced transaction failure"); + } + } + } + } catch (SQLException e) { + System.out.println("FAILED! " + e.getMessage()); + } + } +}
new file mode 100644 --- /dev/null +++ b/tests/Test_PSmetadata.java @@ -0,0 +1,97 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +import java.sql.*; + +public class Test_PSmetadata { + public static void main(String[] args) throws Exception { + Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); + Connection con = DriverManager.getConnection(args[0]); + Statement stmt = con.createStatement(); + PreparedStatement pstmt; + ResultSet rs = null; + ResultSetMetaData rsmd = null; + ParameterMetaData pmd = null; + + con.setAutoCommit(false); + // >> false: auto commit should be off now + System.out.println("0. false\t" + con.getAutoCommit()); + + try { + stmt.executeUpdate("CREATE TABLE table_Test_PSmetadata ( myint int, mydouble double, mybool boolean, myvarchar varchar(15), myclob clob )"); + + // all NULLs + stmt.executeUpdate("INSERT INTO table_Test_PSmetadata VALUES (NULL, NULL, NULL, NULL, NULL)"); + // all filled in + stmt.executeUpdate("INSERT INTO table_Test_PSmetadata VALUES (2 , 3.0, true, 'A string', 'bla bla bla')"); + + pstmt = con.prepareStatement("SELECT CASE WHEN myint IS NULL THEN 0 ELSE 1 END AS intnull, * FROM table_Test_PSmetadata WHERE myint = ?"); + + rsmd = pstmt.getMetaData(); + + System.out.println("0. 6 columns:\t" + rsmd.getColumnCount()); + for (int col = 1; col <= rsmd.getColumnCount(); col++) { + System.out.println("" + col + ".\t" + rsmd.getCatalogName(col)); + System.out.println("\tclassname " + rsmd.getColumnClassName(col)); + System.out.println("\tdisplaysize " + rsmd.getColumnDisplaySize(col)); + System.out.println("\tlabel " + rsmd.getColumnLabel(col)); + System.out.println("\tname " + rsmd.getColumnName(col)); + System.out.println("\ttype " + rsmd.getColumnType(col)); + System.out.println("\ttypename " + rsmd.getColumnTypeName(col)); + System.out.println("\tprecision " + rsmd.getPrecision(col)); + System.out.println("\tscale " + rsmd.getScale(col)); + System.out.println("\tschemaname " + rsmd.getSchemaName(col)); + System.out.println("\ttablename " + rsmd.getTableName(col)); + System.out.println("\tautoincrement " + rsmd.isAutoIncrement(col)); + System.out.println("\tcasesensitive " + rsmd.isCaseSensitive(col)); + System.out.println("\tcurrency " + rsmd.isCurrency(col)); + System.out.println("\tdefwritable " + rsmd.isDefinitelyWritable(col)); + System.out.println("\tnullable " + rsmd.isNullable(col)); + System.out.println("\treadonly " + rsmd.isReadOnly(col)); + System.out.println("\tsearchable " + rsmd.isSearchable(col)); + System.out.println("\tsigned " + rsmd.isSigned(col)); + System.out.println("\twritable " + rsmd.isWritable(col)); + } + + pmd = pstmt.getParameterMetaData(); + System.out.println("1. 1 parameter:\t" + pmd.getParameterCount()); + for (int col = 1; col <= pmd.getParameterCount(); col++) { + System.out.println("" + col + "."); + System.out.println("\tnullable " + pmd.isNullable(col)); + System.out.println("\tsigned " + pmd.isSigned(col)); + System.out.println("\tprecision " + pmd.getPrecision(col)); + System.out.println("\tscale " + pmd.getScale(col)); + System.out.println("\ttype " + pmd.getParameterType(col)); + System.out.println("\ttypename " + pmd.getParameterTypeName(col)); + System.out.println("\tclassname " + pmd.getParameterClassName(col)); + System.out.println("\tmode " + pmd.getParameterMode(col)); + } + } catch (SQLException e) { + System.out.println("failed :( "+ e.getMessage()); + System.out.println("ABORTING TEST!!!"); + } + + con.rollback(); + con.close(); + } + + private static String isInstance(Object obj, String type) { + if (obj == null) + return("(null)"); + try { + Class c = Class.forName(type); + if (c.isInstance(obj)) { + return(obj.getClass().getName() + " is an instance of " + type); + } else { + return(obj.getClass().getName() + " is NOT an instance of " + type); + } + } catch (ClassNotFoundException e) { + return("No such class: " + type); + } + } +}
new file mode 100644 --- /dev/null +++ b/tests/Test_PSsomeamount.java @@ -0,0 +1,45 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +import java.sql.*; +import java.util.*; + +/* Create a lot of PreparedStatements, to emulate webloads such as those + * from Hibernate. */ + +public class Test_PSsomeamount { + public static void main(String[] args) throws Exception { + Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); + Connection con = DriverManager.getConnection(args[0]); + Statement stmt = con.createStatement(); + PreparedStatement pstmt; + + // >> true: auto commit should be on + System.out.println("0. true\t" + con.getAutoCommit()); + + try { + System.out.println("1. Preparing and executing a unique statement"); + for (int i = 0; i < 10000; i++) { + pstmt = con.prepareStatement("select " + i + ", " + i + " = ?"); + pstmt.setInt(1, i); + ResultSet rs = pstmt.executeQuery(); + if (rs.next() && i % 1000 == 0) { + System.out.println(rs.getInt(1) + ", " + rs.getBoolean(2)); + } + /* this call should cause resources on the server to be + * freed */ + pstmt.close(); + } + } catch (SQLException e) { + System.out.println("FAILED :( "+ e.getMessage()); + System.out.println("ABORTING TEST!!!"); + } + + con.close(); + } +}
new file mode 100644 --- /dev/null +++ b/tests/Test_PSsqldata.java @@ -0,0 +1,81 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +import java.sql.*; +import nl.cwi.monetdb.jdbc.types.*; + +public class Test_PSsqldata { + public static void main(String[] args) throws Exception { + Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); + Connection con = DriverManager.getConnection(args[0]); + Statement stmt = con.createStatement(); + PreparedStatement pstmt; + ResultSet rs = null; + ResultSetMetaData rsmd = null; + ParameterMetaData pmd = null; + + con.setAutoCommit(false); + // >> false: auto commit should be off now + System.out.println("0. false\t" + con.getAutoCommit()); + + try { + stmt.executeUpdate("CREATE TABLE table_Test_PSsqldata ( myinet inet, myurl url )"); + + pstmt = con.prepareStatement("INSERT INTO table_Test_PSsqldata VALUES (?, ?)"); + + pmd = pstmt.getParameterMetaData(); + System.out.println("1. 2 parameters:\t" + pmd.getParameterCount()); + for (int col = 1; col <= pmd.getParameterCount(); col++) { + System.out.println("" + col + "."); + System.out.println("\ttype " + pmd.getParameterType(col)); + System.out.println("\ttypename " + pmd.getParameterTypeName(col)); + System.out.println("\tclassname " + pmd.getParameterClassName(col)); + } + + INET tinet = new INET(); + URL turl = new URL(); + + tinet.fromString("172.5.5.5/24"); + turl.fromString("http://www.monetdb.org/"); + pstmt.setObject(1, tinet); + pstmt.setObject(2, turl); + pstmt.execute(); + + tinet.setNetmaskBits(16); + pstmt.execute(); + + rs = stmt.executeQuery("SELECT * FROM table_Test_PSsqldata"); + rsmd = rs.getMetaData(); + + for (int i = 1; rs.next(); i++) { + for (int col = 1; col <= rsmd.getColumnCount(); col++) { + Object x = rs.getObject(col); + if (x == null) { + System.out.println("" + i + ".\t<null>"); + } else { + System.out.println("" + i + ".\t" + x.toString()); + if (x instanceof INET) { + INET inet = (INET)x; + System.out.println("\t" + inet.getAddress() + "/" + inet.getNetmaskBits()); + System.out.println("\t" + inet.getInetAddress().toString()); + } else if (x instanceof URL) { + URL url = (URL)x; + System.out.println("\t" + url.getURL().toString()); + } + } + } + } + } catch (SQLException e) { + System.out.println("failed :( "+ e.getMessage()); + System.out.println("ABORTING TEST!!!"); + } + + con.rollback(); + con.close(); + } +}
new file mode 100644 --- /dev/null +++ b/tests/Test_PStimedate.java @@ -0,0 +1,94 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +import java.sql.*; + +public class Test_PStimedate { + public static void main(String[] args) throws Exception { + Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); + Connection con = DriverManager.getConnection(args[0]); + Statement stmt = con.createStatement(); + PreparedStatement pstmt; + ResultSet rs = null; + //DatabaseMetaData dbmd = con.getMetaData(); + + con.setAutoCommit(false); + // >> false: auto commit was just switched off + System.out.println("0. false\t" + con.getAutoCommit()); + + try { + stmt.executeUpdate("CREATE TABLE table_Test_PStimedate (t time, ts timestamp, d date)"); + } catch (SQLException e) { + System.out.println(e); + System.out.println("Creation of test table failed! :("); + System.out.println("ABORTING TEST!!!"); + System.exit(-1); + } + + try { + pstmt = con.prepareStatement("INSERT INTO table_Test_PStimedate VALUES (?, ?, ?)"); + System.out.print("1. empty call..."); + try { + // should fail (no arguments given) + pstmt.execute(); + System.out.println(" PASSED :("); + System.out.println("ABORTING TEST!!!"); + System.exit(-1); + } catch (SQLException e) { + System.out.println(" failed :)"); + } + + System.out.print("2. inserting a record..."); + java.util.Date d = new java.util.Date(); + pstmt.setTime(1, new java.sql.Time(d.getTime())); + pstmt.setTimestamp(2, new java.sql.Timestamp(d.getTime())); + pstmt.setDate(3, new java.sql.Date(d.getTime())); + + pstmt.executeUpdate(); + System.out.println(" passed :)"); + System.out.print("3. closing PreparedStatement..."); + pstmt.close(); + System.out.println(" passed :)"); + + System.out.print("4. selecting record..."); + pstmt = con.prepareStatement("SELECT * FROM table_Test_PStimedate"); + rs = pstmt.executeQuery(); + System.out.println(" passed :)"); + + while (rs.next()) { + for (int j = 1; j <= 3; j++) { + System.out.print((j + 4) + ". retrieving..."); + java.util.Date x = (java.util.Date)(rs.getObject(j)); + boolean matches = false; + if (x instanceof Time) { + System.out.print(" (Time)"); + matches = (new Time(d.getTime())).toString().equals(x.toString()); + } else if (x instanceof Date) { + System.out.print(" (Date)"); + matches = (new Date(d.getTime())).toString().equals(x.toString()); + } else if (x instanceof Timestamp) { + System.out.print(" (Timestamp)"); + matches = (new Timestamp(d.getTime())).toString().equals(x.toString()); + } + if (matches) { + System.out.println(" passed :)"); + } else { + System.out.println(" FAILED :( (" + x + " is not " + d + ")"); + } + } + } + + con.rollback(); + } catch (SQLException e) { + System.out.println("FAILED :( "+ e.getMessage()); + System.out.println("ABORTING TEST!!!"); + } + + con.close(); + } +}
new file mode 100644 --- /dev/null +++ b/tests/Test_PStimezone.java @@ -0,0 +1,163 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +import java.sql.*; +import java.util.*; +import java.text.*; + +public class Test_PStimezone { + public static void main(String[] args) throws Exception { + // make sure this test is reproducable regardless timezone + // setting, by overriding the VM's default + // we have to make sure that one doesn't have daylight + // savings corrections + TimeZone.setDefault(TimeZone.getTimeZone("UTC")); + + Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); + Connection con = DriverManager.getConnection(args[0]); + Statement stmt = con.createStatement(); + PreparedStatement pstmt; + ResultSet rs = null; + //DatabaseMetaData dbmd = con.getMetaData(); + + con.setAutoCommit(false); + // >> false: auto commit was just switched off + System.out.println("0. false\t" + con.getAutoCommit()); + + try { + stmt.executeUpdate("CREATE TABLE table_Test_PStimezone (ts timestamp, tsz timestamp with time zone, t time, tz time with time zone)"); + } catch (SQLException e) { + System.out.println(e); + System.out.println("Creation of test table failed! :("); + System.out.println("ABORTING TEST!!!"); + System.exit(-1); + } + + try { + pstmt = con.prepareStatement("INSERT INTO table_Test_PStimezone VALUES (?, ?, ?, ?)"); + System.out.print("1. empty call..."); + try { + // should fail (no arguments given) + pstmt.execute(); + System.out.println(" PASSED :("); + System.out.println("ABORTING TEST!!!"); + System.exit(-1); + } catch (SQLException e) { + System.out.println(" failed :)"); + } + + System.out.println("2. inserting records..."); + + SimpleDateFormat tsz = + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSZ"); + SimpleDateFormat tz = + new SimpleDateFormat("HH:mm:ss.SSSZ"); + + java.sql.Timestamp ts = new java.sql.Timestamp(0L); + java.sql.Time t = new java.sql.Time(0L); + + Calendar c = Calendar.getInstance(); + tsz.setTimeZone(c.getTimeZone()); + tz.setTimeZone(tsz.getTimeZone()); + System.out.println("inserting (" + c.getTimeZone().getID() + ") " + tsz.format(ts) + ", " + tz.format(t)); + + pstmt.setTimestamp(1, ts); + pstmt.setTimestamp(2, ts); + pstmt.setTime(3, t); + pstmt.setTime(4, t); + pstmt.executeUpdate(); + + c.setTimeZone(TimeZone.getTimeZone("UTC")); + + System.out.println("inserting with calendar timezone " + c.getTimeZone().getID()); + pstmt.setTimestamp(1, ts, c); + pstmt.setTimestamp(2, ts, c); + pstmt.setTime(3, t, c); + pstmt.setTime(4, t, c); + pstmt.executeUpdate(); + + c.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles")); + System.out.println("inserting with calendar timezone " + c.getTimeZone().getID()); + pstmt.setTimestamp(1, ts, c); + pstmt.setTimestamp(2, ts); + pstmt.setTime(3, t, c); + pstmt.setTime(4, t); + pstmt.executeUpdate(); + + c.setTimeZone(TimeZone.getTimeZone("GMT+04:15")); + System.out.println("inserting with calendar timezone " + c.getTimeZone().getID()); + pstmt.setTimestamp(1, ts); + pstmt.setTimestamp(2, ts, c); + pstmt.setTime(3, t); + pstmt.setTime(4, t, c); + pstmt.executeUpdate(); + + System.out.println("done"); + System.out.print("3. closing PreparedStatement..."); + pstmt.close(); + System.out.println(" passed :)"); + + System.out.print("4. selecting records..."); + pstmt = con.prepareStatement("SELECT * FROM table_Test_PStimezone"); + rs = pstmt.executeQuery(); + System.out.println(" passed :)"); + + // The tz fields should basically always be the same + // (exactly 1st Jan 1970) since whatever timezone is used, + // the server retains it, and Java restores it. + // The zoneless fields will show differences since the time + // is inserted translated to the given timezones, and + // retrieved as in they were given in those timezones. When + // the insert zone matches the retrieve zone, Java should + // eventually see 1st Jan 1970. + while (rs.next()) { + System.out.println("retrieved row (String):\n\t" + + rs.getString("ts") + " \t" + + rs.getString("tsz") + "\t" + + rs.getString("t") + " \t" + + rs.getString("tz")); + + tsz.setTimeZone(TimeZone.getDefault()); + tz.setTimeZone(tsz.getTimeZone()); + System.out.println("default (" + tsz.getTimeZone().getID() + "):\n\t" + + tsz.format(rs.getTimestamp("ts")) + "\t" + + tsz.format(rs.getTimestamp("tsz")) + " \t" + + tz.format(rs.getTime("t")) + "\t" + + tz.format(rs.getTime("tz"))); + + c.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles")); + System.out.println(c.getTimeZone().getID() + ":\n\t" + + rs.getTimestamp("ts", c) + " \t" + + rs.getTimestamp("tsz", c) + " \t" + + rs.getTime("t", c) + " \t" + + rs.getTime("tz", c) + " "); + + c.setTimeZone(TimeZone.getTimeZone("Africa/Windhoek")); + System.out.println(c.getTimeZone().getID() + ":\n\t" + + rs.getTimestamp("ts", c) + " \t" + + rs.getTimestamp("tsz", c) + " \t" + + rs.getTime("t", c) + " \t" + + rs.getTime("tz", c) + " "); + + System.out.println(); + SQLWarning w = rs.getWarnings(); + while (w != null) { + System.out.println(w.getMessage()); + w = w.getNextWarning(); + } + } + + con.rollback(); + } catch (SQLException e) { + System.out.println("FAILED :( "+ e.getMessage()); + System.out.println("ABORTING TEST!!!"); + } + + con.close(); + } +}
new file mode 100644 --- /dev/null +++ b/tests/Test_PStypes.java @@ -0,0 +1,86 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +import java.sql.*; + +public class Test_PStypes { + public static void main(String[] args) throws Exception { + Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); + Connection con = DriverManager.getConnection(args[0]); + Statement stmt = con.createStatement(); + PreparedStatement pstmt; + //ResultSet rs = null; + //DatabaseMetaData dbmd = con.getMetaData(); + + con.setAutoCommit(false); + // >> false: auto commit was just switched off + System.out.println("0. false\t" + con.getAutoCommit()); + + try { + stmt.executeUpdate( +"CREATE TABLE htmtest (" + +" htmid bigint NOT NULL," + +" ra double ," + +" decl double ," + +" dra double ," + +" ddecl double ," + +" flux double ," + +" dflux double ," + +" freq double ," + +" bw double ," + +" type decimal(1,0)," + +" imageurl varchar(100)," + +" comment varchar(100)," + +" CONSTRAINT htmtest_htmid_pkey PRIMARY KEY (htmid)" + +")" +); + // index is not used, but the original bug had it too + stmt.executeUpdate("CREATE INDEX htmid ON htmtest (htmid)"); + } catch (SQLException e) { + System.out.println(e); + System.out.println("Creation of test table failed! :("); + System.out.println("ABORTING TEST!!!"); + System.exit(-1); + } + + try { + pstmt = con.prepareStatement( +"INSERT INTO HTMTEST (HTMID,RA,DECL,FLUX,COMMENT) VALUES (?,?,?,?,?)" +); + System.out.print("1. inserting a record..."); + + pstmt.setLong(1, 1L); + pstmt.setFloat(2, (float)1.2); + pstmt.setDouble(3, 2.4); + pstmt.setDouble(4, 3.2); + pstmt.setString(5, "vlavbla"); + pstmt.executeUpdate(); + + System.out.println("success :)"); + + // try an update like bug #1757923 + pstmt = con.prepareStatement( +"UPDATE HTMTEST set COMMENT=?, TYPE=? WHERE HTMID=?" +); + System.out.print("2. updating record..."); + + pstmt.setString(1, "some update"); + pstmt.setObject(2, (float)3.2); + pstmt.setLong(3, 1L); + pstmt.executeUpdate(); + + System.out.println("success :)"); + } catch (SQLException e) { + System.out.println("FAILED :( "+ e.getMessage()); + System.out.println("ABORTING TEST!!!"); + } + + con.rollback(); + con.close(); + } +}
new file mode 100644 --- /dev/null +++ b/tests/Test_Rbooleans.java @@ -0,0 +1,56 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +import java.sql.*; + +public class Test_Rbooleans { + public static void main(String[] args) throws Exception { + Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); + Connection con = DriverManager.getConnection(args[0]); + Statement stmt = con.createStatement(); + ResultSet rs = null; + //DatabaseMetaData dbmd = con.getMetaData(); + + con.setAutoCommit(false); + // >> false: auto commit should be off now + System.out.println("0. false\t" + con.getAutoCommit()); + + try { + stmt.executeUpdate("CREATE TABLE table_Test_Rbooleans ( id int, tiny_int tinyint, small_int smallint, medium_int mediumint, \"integer\" int, big_int bigint, a_real real, a_float float, a_double double, a_decimal decimal(8,2), a_numeric numeric(8), bool boolean, a_char char(4), b_char char(5), a_varchar varchar(20), PRIMARY KEY (id) )"); + + // all falses + stmt.executeUpdate("INSERT INTO table_Test_Rbooleans VALUES (1, 0, 0, 0, 0, 0, 0.0, 0.0, 0.0, 0.0, 0, false, 'fals', 'false', 'false')"); + // all trues + stmt.executeUpdate("INSERT INTO table_Test_Rbooleans VALUES (2, 1, 1, 1, 1, 1, 1.0, 1.0, 1.0, 1.0, 1, true, 'true', 'true ', 'true')"); + // sneakier + stmt.executeUpdate("INSERT INTO table_Test_Rbooleans VALUES (3, 2, 3, 4, 5, 6, 7.1, 8.2, 9.3, 10.4, 11, true, 'TrUe', 'fAlSe', 'true/false')"); + stmt.executeUpdate("INSERT INTO table_Test_Rbooleans VALUES (4, 2, 3, 4, 5, 6, 7.1, 8.2, 9.3, 10.4, 11, true, 't ', 'f ', 'TRUE ')"); + + rs = stmt.executeQuery("SELECT * FROM table_Test_Rbooleans ORDER BY id ASC"); + + // all should give false + rs.next(); + System.out.println("1. " + rs.getInt("id") + ", " + rs.getBoolean("tiny_int") + ", " + rs.getBoolean("small_int") + ", " + rs.getBoolean("medium_int") + ", " + rs.getBoolean("integer") + ", " + rs.getBoolean("big_int") + ", " + rs.getBoolean("a_real") + ", " + rs.getBoolean("a_double") + ", " + rs.getBoolean("a_decimal") + ", " + rs.getBoolean("a_numeric") + ", " + rs.getBoolean("bool") + ", " + rs.getBoolean("a_char") + ", " + rs.getBoolean("b_char") + ", " + rs.getBoolean("a_varchar")); + // all should give true except the one before last + rs.next(); + System.out.println("2. " + rs.getInt("id") + ", " + rs.getBoolean("tiny_int") + ", " + rs.getBoolean("small_int") + ", " + rs.getBoolean("medium_int") + ", " + rs.getBoolean("integer") + ", " + rs.getBoolean("big_int") + ", " + rs.getBoolean("a_real") + ", " + rs.getBoolean("a_double") + ", " + rs.getBoolean("a_decimal") + ", " + rs.getBoolean("a_numeric") + ", " + rs.getBoolean("bool") + ", " + rs.getBoolean("a_char") + ", " + rs.getBoolean("b_char") + ", " + rs.getBoolean("a_varchar")); + // should give true for all but the last two + rs.next(); + System.out.println("3. " + rs.getInt("id") + ", " + rs.getBoolean("tiny_int") + ", " + rs.getBoolean("small_int") + ", " + rs.getBoolean("medium_int") + ", " + rs.getBoolean("integer") + ", " + rs.getBoolean("big_int") + ", " + rs.getBoolean("a_real") + ", " + rs.getBoolean("a_double") + ", " + rs.getBoolean("a_decimal") + ", " + rs.getBoolean("a_numeric") + ", " + rs.getBoolean("bool") + ", " + rs.getBoolean("a_char") + ", " + rs.getBoolean("b_char") + ", " + rs.getBoolean("a_varchar")); + // should give true for all but the last three + rs.next(); + System.out.println("4. " + rs.getInt("id") + ", " + rs.getBoolean("tiny_int") + ", " + rs.getBoolean("small_int") + ", " + rs.getBoolean("medium_int") + ", " + rs.getBoolean("integer") + ", " + rs.getBoolean("big_int") + ", " + rs.getBoolean("a_real") + ", " + rs.getBoolean("a_double") + ", " + rs.getBoolean("a_decimal") + ", " + rs.getBoolean("a_numeric") + ", " + rs.getBoolean("bool") + ", " + rs.getBoolean("a_char") + ", " + rs.getBoolean("b_char") + ", " + rs.getBoolean("a_varchar")); + } catch (SQLException e) { + System.out.println("failed :( "+ e.getMessage()); + System.out.println("ABORTING TEST!!!"); + } + + con.rollback(); + con.close(); + } +}
new file mode 100644 --- /dev/null +++ b/tests/Test_Rmetadata.java @@ -0,0 +1,90 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +import java.sql.*; + +public class Test_Rmetadata { + public static void main(String[] args) throws Exception { + Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); + Connection con = DriverManager.getConnection(args[0]); + Statement stmt = con.createStatement(); + ResultSet rs = null; + ResultSetMetaData rsmd = null; + //DatabaseMetaData dbmd = con.getMetaData(); + + con.setAutoCommit(false); + // >> false: auto commit should be off now + System.out.println("0. false\t" + con.getAutoCommit()); + + try { + stmt.executeUpdate("CREATE TABLE table_Test_Rmetadata ( myint int, mydouble double, mybool boolean, myvarchar varchar(15), myclob clob )"); + + // all NULLs + stmt.executeUpdate("INSERT INTO table_Test_Rmetadata VALUES (NULL, NULL, NULL, NULL, NULL)"); + // all filled in + stmt.executeUpdate("INSERT INTO table_Test_Rmetadata VALUES (2 , 3.0, true, 'A string', 'bla bla bla')"); + + rs = stmt.executeQuery("SELECT * FROM table_Test_Rmetadata"); + rsmd = rs.getMetaData(); + + System.out.println("0. 4 columns:\t" + rsmd.getColumnCount()); + for (int col = 1; col <= rsmd.getColumnCount(); col++) { + System.out.println("Colnr " + col + "."); + System.out.println("\tclassname " + rsmd.getColumnClassName(col)); + System.out.println("\tdisplaysize " + rsmd.getColumnDisplaySize(col)); + System.out.println("\tlabel " + rsmd.getColumnLabel(col)); + System.out.println("\tname " + rsmd.getColumnName(col)); + System.out.println("\ttype " + rsmd.getColumnType(col)); + System.out.println("\ttypename " + rsmd.getColumnTypeName(col)); + System.out.println("\tprecision " + rsmd.getPrecision(col)); + System.out.println("\tscale " + rsmd.getScale(col)); + System.out.println("\tcatalogname " + rsmd.getCatalogName(col)); + System.out.println("\tschemaname " + rsmd.getSchemaName(col)); + System.out.println("\ttablename " + rsmd.getTableName(col)); + System.out.println("\tautoincrement " + rsmd.isAutoIncrement(col)); + System.out.println("\tcasesensitive " + rsmd.isCaseSensitive(col)); + System.out.println("\tcurrency " + rsmd.isCurrency(col)); + System.out.println("\tdefwritable " + rsmd.isDefinitelyWritable(col)); + System.out.println("\tnullable " + rsmd.isNullable(col)); + System.out.println("\treadonly " + rsmd.isReadOnly(col)); + System.out.println("\tsearchable " + rsmd.isSearchable(col)); + System.out.println("\tsigned " + rsmd.isSigned(col)); + System.out.println("\twritable " + rsmd.isWritable(col)); + } + + for (int i = 5; rs.next(); i++) { + for (int col = 1; col <= rsmd.getColumnCount(); col++) { + System.out.println("" + i + ".\t" + + isInstance(rs.getObject(col), rsmd.getColumnClassName(col)) + ); + } + } + } catch (SQLException e) { + System.out.println("failed :( "+ e.getMessage()); + System.out.println("ABORTING TEST!!!"); + } + + con.rollback(); + con.close(); + } + + private static String isInstance(Object obj, String type) { + if (obj == null) + return("(null)"); + try { + Class c = Class.forName(type); + if (c.isInstance(obj)) { + return(obj.getClass().getName() + " is an instance of " + type); + } else { + return(obj.getClass().getName() + " is NOT an instance of " + type); + } + } catch (ClassNotFoundException e) { + return("No such class: " + type); + } + } +}
new file mode 100644 --- /dev/null +++ b/tests/Test_Rpositioning.java @@ -0,0 +1,82 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +import java.sql.*; + +public class Test_Rpositioning { + public static void main(String[] args) throws Exception { + Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); + Connection con = DriverManager.getConnection(args[0]); + Statement stmt = con.createStatement(); + DatabaseMetaData dbmd = con.getMetaData(); + + // get a one rowed resultset + ResultSet rs = stmt.executeQuery("SELECT 1"); + + // >> true: we should be before the first result now + System.out.println("1. true\t" + rs.isBeforeFirst()); + // >> false: we're not at the first result + System.out.println("2. false\t" + rs.isFirst()); + // >> true: there is one result, so we can call next once + System.out.println("3. true\t" + rs.next()); + // >> false: we're not before the first row anymore + System.out.println("4. false\t" + rs.isBeforeFirst()); + // >> true: we're at the first result + System.out.println("5. true\t" + rs.isFirst()); + // >> false: we're on the last row + System.out.println("6. false\t" + rs.isAfterLast()); + // >> true: see above + System.out.println("7. true\t" + rs.isLast()); + // >> false: there is one result, so this is it + System.out.println("8. false\t" + rs.next()); + // >> true: yes, we're at the end + System.out.println("9. true\t" + rs.isAfterLast()); + // >> false: no we're one over it + System.out.println("10. false\t" + rs.isLast()); + // >> false: another try to move on should still fail + System.out.println("11. false\t" + rs.next()); + // >> true: and we should stay positioned after the last + System.out.println("12.true\t" + rs.isAfterLast()); + + rs.close(); + + // try the same with a 'virtual' result set + rs = dbmd.getTableTypes(); + + // >> true: we should be before the first result now + System.out.println("1. true\t" + rs.isBeforeFirst()); + // >> false: we're not at the first result + System.out.println("2. false\t" + rs.isFirst()); + // >> true: there is one result, so we can call next once + System.out.println("3. true\t" + rs.next()); + // >> false: we're not before the first row anymore + System.out.println("4. false\t" + rs.isBeforeFirst()); + // >> true: we're at the first result + System.out.println("5. true\t" + rs.isFirst()); + // move to last row + rs.last(); + // >> false: we're on the last row + System.out.println("6. false\t" + rs.isAfterLast()); + // >> true: see above + System.out.println("7. true\t" + rs.isLast()); + // >> false: there is one result, so this is it + System.out.println("8. false\t" + rs.next()); + // >> true: yes, we're at the end + System.out.println("9. true\t" + rs.isAfterLast()); + // >> false: no we're one over it + System.out.println("10. false\t" + rs.isLast()); + // >> false: another try to move on should still fail + System.out.println("11. false\t" + rs.next()); + // >> true: and we should stay positioned after the last + System.out.println("12. true\t" + rs.isAfterLast()); + + rs.close(); + + con.close(); + } +}
new file mode 100644 --- /dev/null +++ b/tests/Test_Rsqldata.java @@ -0,0 +1,73 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +import java.sql.*; +import nl.cwi.monetdb.jdbc.types.*; + +public class Test_Rsqldata { + public static void main(String[] args) throws Exception { + Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); + Connection con = DriverManager.getConnection(args[0]); + Statement stmt = con.createStatement(); + ResultSet rs = null; + ResultSetMetaData rsmd = null; + + con.setAutoCommit(false); + // >> false: auto commit should be off now + System.out.println("0. false\t" + con.getAutoCommit()); + + try { + stmt.executeUpdate("CREATE TABLE table_Test_Rsqldata ( myinet inet, myurl url )"); + + // all NULLs + stmt.executeUpdate("INSERT INTO table_Test_Rsqldata VALUES (NULL, NULL)"); + // all filled in + stmt.executeUpdate("INSERT INTO table_Test_Rsqldata VALUES ('172.5.5.5' , 'http://www.monetdb.org/')"); + stmt.executeUpdate("INSERT INTO table_Test_Rsqldata VALUES ('172.5.5.5/32' , 'http://www.monetdb.org/Home')"); + stmt.executeUpdate("INSERT INTO table_Test_Rsqldata VALUES ('172.5.5.5/16' , 'http://www.monetdb.org/Home#someanchor')"); + stmt.executeUpdate("INSERT INTO table_Test_Rsqldata VALUES ('172.5.5.5/26' , 'http://www.monetdb.org/?query=bla')"); + + rs = stmt.executeQuery("SELECT * FROM table_Test_Rsqldata"); + rsmd = rs.getMetaData(); + + System.out.println("0. 4 columns:\t" + rsmd.getColumnCount()); + for (int col = 1; col <= rsmd.getColumnCount(); col++) { + System.out.println("" + col + ".\t" + rsmd.getCatalogName(col)); + System.out.println("\tclassname " + rsmd.getColumnClassName(col)); + System.out.println("\tschemaname " + rsmd.getSchemaName(col)); + System.out.println("\ttablename " + rsmd.getTableName(col)); + System.out.println("\tname " + rsmd.getColumnName(col)); + } + + for (int i = 1; rs.next(); i++) { + for (int col = 1; col <= rsmd.getColumnCount(); col++) { + Object x = rs.getObject(col); + if (x == null) { + System.out.println("" + i + ".\t<null>"); + } else { + System.out.println("" + i + ".\t" + x.toString()); + if (x instanceof INET) { + INET inet = (INET)x; + System.out.println("\t" + inet.getAddress() + "/" + inet.getNetmaskBits()); + System.out.println("\t" + inet.getInetAddress().toString()); + } else if (x instanceof URL) { + URL url = (URL)x; + System.out.println("\t" + url.getURL().toString()); + } + } + } + } + } catch (SQLException e) { + System.out.println("failed :( "+ e.getMessage()); + System.out.println("ABORTING TEST!!!"); + } + + con.rollback(); + con.close(); + } +}
new file mode 100644 --- /dev/null +++ b/tests/Test_Rtimedate.java @@ -0,0 +1,139 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +import java.sql.*; + +public class Test_Rtimedate { + public static void main(String[] args) throws Exception { + Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); + Connection con = DriverManager.getConnection(args[0]); + Statement stmt = con.createStatement(); + ResultSet rs = null; + //DatabaseMetaData dbmd = con.getMetaData(); + + con.setAutoCommit(false); + // >> false: auto commit should be off now + System.out.println("false\t" + con.getAutoCommit()); + + try { + stmt.executeUpdate("CREATE TABLE table_Test_Rtimedate ( id int, ts timestamp, t time, d date, vc varchar(30), PRIMARY KEY (id) )"); + + stmt.executeUpdate("INSERT INTO table_Test_Rtimedate(id, ts) VALUES (1, timestamp '2004-04-24 11:43:53.000')"); + stmt.executeUpdate("INSERT INTO table_Test_Rtimedate(id, t) VALUES (2, time '11:43:53.000')"); + stmt.executeUpdate("INSERT INTO table_Test_Rtimedate(id, d) VALUES (3, date '2004-04-24')"); + + stmt.executeUpdate("INSERT INTO table_Test_Rtimedate(id, vc) VALUES (4, '2004-04-24 11:43:53.000000')"); + stmt.executeUpdate("INSERT INTO table_Test_Rtimedate(id, vc) VALUES (5, '11:43:53')"); + stmt.executeUpdate("INSERT INTO table_Test_Rtimedate(id, vc) VALUES (6, '2004-04-24')"); + + rs = stmt.executeQuery("SELECT * FROM table_Test_Rtimedate"); + + rs.next(); + readWarnings(rs.getWarnings()); + rs.clearWarnings(); + // the next three should all go well + System.out.println("1. " + rs.getString("id") + ", " + rs.getString("ts") + ", " + rs.getTimestamp("ts")); + readWarnings(rs.getWarnings()); + rs.clearWarnings(); + System.out.println("2. " + rs.getString("id") + ", " + rs.getString("ts") + ", " + rs.getTime("ts")); + readWarnings(rs.getWarnings()); + rs.clearWarnings(); + System.out.println("3. " + rs.getString("id") + ", " + rs.getString("ts") + ", " + rs.getDate("ts")); + readWarnings(rs.getWarnings()); + rs.clearWarnings(); + rs.next(); + readWarnings(rs.getWarnings()); + rs.clearWarnings(); + // the next two should go fine + System.out.println("4. " + rs.getString("id") + ", " + rs.getString("t") + ", " + rs.getTimestamp("t")); + readWarnings(rs.getWarnings()); + rs.clearWarnings(); + System.out.println("5. " + rs.getString("id") + ", " + rs.getString("t") + ", " + rs.getTime("t")); + readWarnings(rs.getWarnings()); + rs.clearWarnings(); + // this one should return 0 + System.out.println("6. " + rs.getString("id") + ", " + rs.getString("t") + ", " + rs.getDate("t")); + readWarnings(rs.getWarnings()); + rs.clearWarnings(); + rs.next(); + readWarnings(rs.getWarnings()); + rs.clearWarnings(); + // the next one passes + System.out.println("7. " + rs.getString("id") + ", " + rs.getString("d") + ", " + rs.getTimestamp("d")); + readWarnings(rs.getWarnings()); + rs.clearWarnings(); + // this one should return 0 + System.out.println("8. " + rs.getString("id") + ", " + rs.getString("d") + ", " + rs.getTime("d")); + readWarnings(rs.getWarnings()); + rs.clearWarnings(); + // and this one should pass again + System.out.println("9. " + rs.getString("id") + ", " + rs.getString("d") + ", " + rs.getDate("d")); + readWarnings(rs.getWarnings()); + rs.clearWarnings(); + + // in the tests below a bare string is parsed + // everything will fail except the ones commented on + rs.next(); + readWarnings(rs.getWarnings()); + rs.clearWarnings(); + // timestamp -> timestamp should go + System.out.println("1. " + rs.getString("id") + ", " + rs.getString("vc") + ", " + rs.getTimestamp("vc")); + readWarnings(rs.getWarnings()); + rs.clearWarnings(); + System.out.println("2. " + rs.getString("id") + ", " + rs.getString("vc") + ", " + rs.getTime("vc")); + readWarnings(rs.getWarnings()); + rs.clearWarnings(); + // timestamp -> date goes because the begin is the same + System.out.println("3. " + rs.getString("id") + ", " + rs.getString("vc") + ", " + rs.getDate("vc")); + readWarnings(rs.getWarnings()); + rs.clearWarnings(); + rs.next(); + readWarnings(rs.getWarnings()); + rs.clearWarnings(); + System.out.println("4. " + rs.getString("id") + ", " + rs.getString("vc") + ", " + rs.getTimestamp("vc")); + readWarnings(rs.getWarnings()); + rs.clearWarnings(); + // time -> time should fit + System.out.println("5. " + rs.getString("id") + ", " + rs.getString("vc") + ", " + rs.getTime("vc")); + readWarnings(rs.getWarnings()); + rs.clearWarnings(); + System.out.println("6. " + rs.getString("id") + ", " + rs.getString("vc") + ", " + rs.getDate("vc")); + readWarnings(rs.getWarnings()); + rs.clearWarnings(); + rs.next(); + readWarnings(rs.getWarnings()); + rs.clearWarnings(); + System.out.println("7. " + rs.getString("id") + ", " + rs.getString("vc") + ", " + rs.getTimestamp("vc")); + readWarnings(rs.getWarnings()); + rs.clearWarnings(); + System.out.println("8. " + rs.getString("id") + ", " + rs.getString("vc") + ", " + rs.getTime("vc")); + readWarnings(rs.getWarnings()); + rs.clearWarnings(); + // date -> date should be fine + System.out.println("9. " + rs.getString("id") + ", " + rs.getString("vc") + ", " + rs.getDate("vc")); + readWarnings(rs.getWarnings()); + rs.clearWarnings(); + + readWarnings(stmt.getWarnings()); + readWarnings(con.getWarnings()); + } catch (SQLException e) { + System.out.println("failed :( "+ e.getMessage()); + System.out.println("ABORTING TEST!!!"); + } + + con.rollback(); + con.close(); + } + + private static void readWarnings(SQLWarning w) { + while (w != null) { + System.out.println("warning: " + w.toString()); + w = w.getNextWarning(); + } + } +}
new file mode 100644 --- /dev/null +++ b/tests/Test_Sbatching.java @@ -0,0 +1,71 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +import java.sql.*; + +public class Test_Sbatching { + public static void main(String[] args) throws Exception { + Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); + Connection con = DriverManager.getConnection(args[0]); + Statement stmt = con.createStatement(); + ResultSet rs = null; + //DatabaseMetaData dbmd = con.getMetaData(); + + // >> true: auto commit should be on by default + System.out.println("0. true\t" + con.getAutoCommit()); + + try { + System.out.print("1. create..."); + if (stmt.executeUpdate("CREATE TABLE table_Test_Sbatching ( id int )") != Statement.SUCCESS_NO_INFO) + throw new SQLException("Wrong return status"); + System.out.println("passed :)"); + + // start batching a large amount of inserts + for (int i = 1; i <= 30000; i++) { + stmt.addBatch("INSERT INTO table_Test_Sbatching VALUES (" + i + ")"); + if (i % 400 == 0) { + System.out.print("2. executing batch (400 inserts)..."); + int[] cnts = stmt.executeBatch(); + System.out.println("passed :)"); + System.out.print("3. checking number of update counts..."); + if (cnts.length != 400) throw new SQLException("Invalid size: " + cnts.length); + System.out.println(cnts.length + " passed :)"); + System.out.print("4. checking update counts (should all be 1)..."); + for (int j = 0; j < cnts.length; j++) { + if (cnts[j] != 1) throw new SQLException("Unexpected value: " + cnts[j]); + } + System.out.println("passed :)"); + System.out.print("5. clearing the batch..."); + stmt.clearBatch(); + System.out.println("passed :)"); + } + } + System.out.print("6. executing batch..."); + stmt.executeBatch(); + System.out.println("passed :)"); + + System.out.print("7. checking table count..."); + rs = stmt.executeQuery("SELECT COUNT(*) FROM table_Test_Sbatching"); + rs.next(); + System.out.println(rs.getInt(1) + " passed :)"); + + System.out.print("8. clean up mess we made..."); + if (stmt.executeUpdate("DROP TABLE table_Test_Sbatching") != Statement.SUCCESS_NO_INFO) + throw new SQLException("Wrong return status"); + System.out.println("passed :)"); + } catch (SQLException e) { + // this means we failed (table not there perhaps?) + System.out.println("FAILED :( " + e.getMessage()); + System.out.println("ABORTING TEST!!!"); + } + + if (rs != null) rs.close(); + + con.close(); + } +}
new file mode 100644 --- /dev/null +++ b/tests/Test_Smoreresults.java @@ -0,0 +1,53 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +import java.sql.*; + +public class Test_Smoreresults { + public static void main(String[] args) throws Exception { + Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); + Connection con = DriverManager.getConnection(args[0]); + Statement stmt = con.createStatement(); + ResultSet rs = null; + //DatabaseMetaData dbmd = con.getMetaData(); + + // >> true: auto commit should be on by default + System.out.println("0. true\t" + con.getAutoCommit()); + + try { + System.out.print("1. more results?..."); + if (stmt.getMoreResults() != false || stmt.getUpdateCount() != -1) + throw new SQLException("more results on an unitialised Statement, how can that be?"); + System.out.println(" nope :)"); + + System.out.print("2. SELECT 1..."); + if (stmt.execute("SELECT 1;") == false) + throw new SQLException("SELECT 1 returns update or no results"); + System.out.println(" ResultSet :)"); + + System.out.print("3. more results?..."); + if (stmt.getMoreResults() != false || stmt.getUpdateCount() != -1) + throw new SQLException("more results after SELECT 1 query, how can that be?"); + System.out.println(" nope :)"); + + System.out.print("4. even more results?..."); + if (stmt.getMoreResults() != false || stmt.getUpdateCount() != -1) + throw new SQLException("more results after SELECT 1 query, how can that be?"); + System.out.println(" nope :)"); + + } catch (SQLException e) { + // this means we failed (table not there perhaps?) + System.out.println("FAILED :( " + e.getMessage()); + System.out.println("ABORTING TEST!!!"); + } + + if (rs != null) rs.close(); + + con.close(); + } +}
new file mode 100644 --- /dev/null +++ b/tests/build.properties @@ -0,0 +1,9 @@ +# add a line like this to your build.local.properties to enable +# debugging: +#debug=&debug=true + +# by default debugging is disabled +debug= + +# one can override the connection url as well +#jdbc_url=jdbc:monetdb://localhost:53210/one?user=monetdb&password=monetdb
new file mode 100644 --- /dev/null +++ b/tests/build.xml @@ -0,0 +1,346 @@ +<?xml version="1.0"?><!-- vim:set ts=2 sw=2 expandtab: --> + +<!-- +This Source Code Form is subject to the terms of the Mozilla Public +License, v. 2.0. If a copy of the MPL was not distributed with this +file, You can obtain one at http://mozilla.org/MPL/2.0/. + +Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. +--> + +<!-- + + Build file to allow ant (http://jakarta.apache.org/ant/) to be used + to build and run the tests + +--> + +<project name="JDBCTests" default="compile" basedir="."> + + <property file="build.local.properties" /> + <property file="build.properties" /> + <property file="../build.properties"/> <!-- included for version --> + + <!-- set global properties for this build --> + <property name="srcdir" value="." /> + <property name="builddir" value="build" /> + <property name="jardir" value="../jars" /> + <property name="jdbc_jar" + value="${jardir}/monetdb-jdbc-${JDBC_MAJOR}.${JDBC_MINOR}.jar" /> + <property name="jdbc_url" + value="jdbc:monetdb://localhost/?user=monetdb&password=monetdb${debug}" /> + <property name="jdbctests-jar" + value="${jardir}/jdbctests.jar" /> + <property name="jvm.version" value="1.7"/> + + <!-- Prepares the build directory --> + <target name="prepare"> + <mkdir dir="${builddir}" /> + </target> + + <!-- Compiles the tests --> + <target name="compile" depends="prepare,jdbc"> + <echo message="Compiling JDBC tests" /> + <javac + srcdir="${srcdir}" + destdir="${builddir}" + debug="true" + optimize="false" + includeantruntime="false" + source="${jvm.version}" + target="${jvm.version}" + > + <include name="**/*.java" /> + <classpath> + <pathelement path="${srcdir}" /> + <pathelement path="${jdbc_jar}" /> + </classpath> + </javac> + </target> + + <!-- a convenience jar collectin all JDBC tests --> + <target name="jar_jdbctests" + depends="compile" + unless="uptodate.jdbctests-jar"> + <echo message="Building JDBC tests convenience jar" /> + <jar jarfile="${jdbctests-jar}"> + <fileset dir="${builddir}"> + <include name="**/*.class" /> + </fileset> + </jar> + </target> + + <!-- makes sure the jdbc driver is compiled --> + <target name="jdbc" depends="find_driver" unless="have_driver"> + <ant antfile="build.xml" dir=".." inheritAll="false" target="jar_jdbc" /> + </target> + + <target name="find_driver"> + <condition property="have_driver"> + <and> + <available classname="nl.cwi.monetdb.jdbc.MonetDriver"> + <classpath> + <pathelement path="${jdbc_jar}" /> + </classpath> + </available> + </and> + </condition> + </target> + + <!-- This target removes the build directory --> + <target name="clean"> + <delete quiet="true" dir="${builddir}" /> + </target> + + <!-- Run tests --> + <target name="test"> + <antcall target="Test_Cautocommit" /> + <antcall target="Test_Clargequery" /> + <antcall target="Test_Cmanycon" /> + <antcall target="Test_Cforkbomb" /> + <antcall target="Test_CisValid" /> + <antcall target="Test_Creplysize" /> + <antcall target="Test_Csavepoints" /> + <antcall target="Test_Ctransaction" /> + <antcall target="Test_Creplysize" /> + <antcall target="Test_Csendthread" /> + <antcall target="Test_Dobjects" /> + <antcall target="Test_PSgeneratedkeys" /> + <antcall target="Test_PSlargeresponse" /> + <antcall target="Test_PSlargeamount" /> + <antcall target="Test_PSsomeamount" /> + <antcall target="Test_PSlargebatchval" /> + <antcall target="Test_PStimedate" /> + <antcall target="Test_PStimezone" /> + <antcall target="Test_PStypes" /> + <antcall target="Test_PSmanycon" /> + <antcall target="Test_PSmetadata" /> + <antcall target="Test_PSsqldata" /> + <antcall target="Test_Rbooleans" /> + <antcall target="Test_Rmetadata" /> + <antcall target="Test_Rpositioning" /> + <antcall target="Test_Rtimedate" /> + <antcall target="Test_Rsqldata" /> + <antcall target="Test_Sbatching" /> + <antcall target="Test_Smoreresults" /> + <antcall target="Test_Int128" /> + <antcall target="Test_FetchSize" /> + <antcall target="BugConcurrent_clients_SF_1504657" /> + <antcall target="BugConcurrent_sequences" /> + <antcall target="BugDatabaseMetaData_Bug_3356" /> + <antcall target="BugDecimalRound_Bug_3561" /> + </target> + + <target name="test_class" depends="compile,jdbc"> + <echo message="Testing class ${test.class}" /> + <java classname="${test.class}" failonerror="true"> + <classpath> + <pathelement path="${builddir}" /> + <pathelement path="${jdbc_jar}" /> + </classpath> + <arg value="${jdbc_url}" /> + </java> + </target> + + + <!-- convenience targets for the outside caller to specify which + test(s) should be run --> + <target name="Test_Cautocommit"> + <antcall target="test_class"> + <param name="test.class" value="Test_Cautocommit" /> + </antcall> + </target> + + <target name="Test_Csavepoints"> + <antcall target="test_class"> + <param name="test.class" value="Test_Csavepoints" /> + </antcall> + </target> + + <target name="Test_Clargequery"> + <antcall target="test_class"> + <param name="test.class" value="Test_Clargequery" /> + </antcall> + </target> + + <target name="Test_Cmanycon"> + <antcall target="test_class"> + <param name="test.class" value="Test_Cmanycon" /> + </antcall> + </target> + + <target name="Test_Cforkbomb"> + <antcall target="test_class"> + <param name="test.class" value="Test_Cforkbomb" /> + </antcall> + </target> + + <target name="Test_CisValid"> + <antcall target="test_class"> + <param name="test.class" value="Test_CisValid" /> + </antcall> + </target> + + <target name="Test_Ctransaction"> + <antcall target="test_class"> + <param name="test.class" value="Test_Ctransaction" /> + </antcall> + </target> + + <target name="Test_Creplysize"> + <antcall target="test_class"> + <param name="test.class" value="Test_Creplysize" /> + </antcall> + </target> + + <target name="Test_Csendthread"> + <antcall target="test_class"> + <param name="test.class" value="Test_Csendthread" /> + </antcall> + </target> + + <target name="Test_Dobjects"> + <antcall target="test_class"> + <param name="test.class" value="Test_Dobjects" /> + </antcall> + </target> + + <target name="Test_Sbatching"> + <antcall target="test_class"> + <param name="test.class" value="Test_Sbatching" /> + </antcall> + </target> + + <target name="Test_Smoreresults"> + <antcall target="test_class"> + <param name="test.class" value="Test_Smoreresults" /> + </antcall> + </target> + + <target name="Test_PSgeneratedkeys"> + <antcall target="test_class"> + <param name="test.class" value="Test_PSgeneratedkeys" /> + </antcall> + </target> + + <target name="Test_PSlargeresponse"> + <antcall target="test_class"> + <param name="test.class" value="Test_PSlargeresponse" /> + </antcall> + </target> + + <target name="Test_PSlargeamount"> + <antcall target="test_class"> + <param name="test.class" value="Test_PSlargeamount" /> + </antcall> + </target> + + <target name="Test_PSsomeamount"> + <antcall target="test_class"> + <param name="test.class" value="Test_PSsomeamount" /> + </antcall> + </target> + + <target name="Test_PSlargebatchval"> + <antcall target="test_class"> + <param name="test.class" value="Test_PSlargebatchval" /> + </antcall> + </target> + + <target name="Test_PStimedate"> + <antcall target="test_class"> + <param name="test.class" value="Test_PStimedate" /> + </antcall> + </target> + + <target name="Test_PStimezone"> + <antcall target="test_class"> + <param name="test.class" value="Test_PStimezone" /> + </antcall> + </target> + + <target name="Test_PStypes"> + <antcall target="test_class"> + <param name="test.class" value="Test_PStypes" /> + </antcall> + </target> + + <target name="Test_PSmanycon"> + <antcall target="test_class"> + <param name="test.class" value="Test_PSmanycon" /> + </antcall> + </target> + + <target name="Test_PSmetadata"> + <antcall target="test_class"> + <param name="test.class" value="Test_PSmetadata" /> + </antcall> + </target> + + <target name="Test_PSsqldata"> + <antcall target="test_class"> + <param name="test.class" value="Test_PSsqldata" /> + </antcall> + </target> + + <target name="Test_Rbooleans"> + <antcall target="test_class"> + <param name="test.class" value="Test_Rbooleans" /> + </antcall> + </target> + + <target name="Test_Rpositioning"> + <antcall target="test_class"> + <param name="test.class" value="Test_Rpositioning" /> + </antcall> + </target> + + <target name="Test_Rtimedate"> + <antcall target="test_class"> + <param name="test.class" value="Test_Rtimedate" /> + </antcall> + </target> + + <target name="Test_Rsqldata"> + <antcall target="test_class"> + <param name="test.class" value="Test_Rsqldata" /> + </antcall> + </target> + + <target name="Test_Rmetadata"> + <antcall target="test_class"> + <param name="test.class" value="Test_Rmetadata" /> + </antcall> + </target> + + <target name="Test_Int128"> + <antcall target="test_class"> + <param name="test.class" value="Test_Int128" /> + </antcall> + </target> + + <target name="Test_FetchSize"> + <antcall target="test_class"> + <param name="test.class" value="Test_FetchSize" /> + </antcall> + </target> + + <target name="BugConcurrent_clients_SF_1504657"> + <antcall target="test_class"> + <param name="test.class" value="BugConcurrent_clients_SF_1504657" /> + </antcall> + </target> + + <target name="BugConcurrent_sequences"> + <antcall target="test_class"> + <param name="test.class" value="BugConcurrent_sequences" /> + </antcall> + </target> + + <target name="BugDatabaseMetaData_Bug_3356"> + <antcall target="test_class"> + <param name="test.class" value="BugDatabaseMetaData_Bug_3356" /> + </antcall> + </target> + +</project>
new file mode 100644 --- /dev/null +++ b/tests/drop.sql @@ -0,0 +1,9 @@ +-- This Source Code Form is subject to the terms of the Mozilla Public +-- License, v. 2.0. If a copy of the MPL was not distributed with this +-- file, You can obtain one at http://mozilla.org/MPL/2.0/. +-- +-- Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + +drop table "foreign"; +drop table allnewtriples; +commit;
new file mode 100755 --- /dev/null +++ b/version.sh @@ -0,0 +1,126 @@ +#!/usr/bin/env bash + +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + +if [[ -z $1 ]] ; then + echo "Usage: $0 [-w] <(jdbc|mcl)> <(major|minor|suffix)=newversion> [...]" + echo "where -w activates actual write of changes" + exit -1 +fi + +PROPERTIES='build.properties' + +get_value() { + local tmp=$(grep -E "^$*=" ${PROPERTIES}) + echo ${tmp#*=} +} + +escape_value() { + echo "$*" | sed -e 's/\*/\\*/g' -e 's/\./\\./g' +} + +patch="cat" + +# get rid of the script name +case $1 in + -w) + patch="patch -p0"; + shift + ;; +esac +case $1 in + jdbc) + TYPE=JDBC + FILES="monetdb-jdbc-XXX.jar" + ;; + mcl) + TYPE=MCL + FILES="monetdb-mcl-XXX.jar" + ;; + *) + echo "invalid type: $1" + exit -1 + ;; +esac +shift + +CUR_MAJOR=$(eval "get_value '${TYPE}_MAJOR'") +CUR_MINOR=$(eval "get_value '${TYPE}_MINOR'") +CUR_SUFFIX=$(eval "get_value '${TYPE}_VER_SUFFIX'") + +NEW_MAJOR=${CUR_MAJOR} +NEW_MINOR=${CUR_MINOR} +NEW_SUFFIX=${CUR_SUFFIX} + +ESC_MAJOR=$(escape_value ${CUR_MAJOR}) +ESC_MINOR=$(escape_value ${CUR_MINOR}) +ESC_SUFFIX=$(escape_value ${CUR_SUFFIX}) + +for param in $* ; do + arg=${param%%=*} + val=${param#*=} + num=$(echo ${val} | grep -E '[0-9]+' -o | head -n1) + case ${arg} in + major) + if [[ -z ${num} ]] ; then + echo "major needs a numeric argument!"; + exit -1 + fi + NEW_MAJOR=${num} + ;; + minor) + if [[ -z ${num} ]] ; then + echo "minor needs a numeric argument!"; + exit -1 + fi + NEW_MINOR=${num} + ;; + suffix) + NEW_SUFFIX=${val} + ;; + esac +done + +echo "Current version: ${CUR_MAJOR}.${CUR_MINOR} (${CUR_SUFFIX})" +echo "New version: ${NEW_MAJOR}.${NEW_MINOR} (${NEW_SUFFIX})" + +diff="diff -Naur" + +file="release.txt" +sed \ + -e "s|version ${ESC_MAJOR}\.${ESC_MINOR} (${ESC_SUFFIX}|version ${NEW_MAJOR}.${NEW_MINOR} \(${NEW_SUFFIX}|g" \ + -e "s|${TYPE}-${ESC_MAJOR}\.${ESC_MINOR}|${TYPE}-${NEW_MAJOR}.${NEW_MINOR}|g" \ + -e "s|Release date: 20[0-9][0-9]-[01][0-9]-[0-3][0-9]|Release date: `date +%F`|" \ + ${file} | ${diff} ${file} - | ${patch} + +for file in \ + Makefile.ag \ + ; do + if [[ -f ${file} ]] ; then + for f in $FILES ; do + fr=${f//XXX/${NEW_MAJOR}.${NEW_MINOR}} + fo=${f//XXX/${ESC_MAJOR}.${ESC_MINOR}} + fo=${fo//./\\.} + sed -e "s|${fo}|${fr}|g" \ + ${file} | ${diff} ${file} - | ${patch} + done + else + echo "Please do not forget to patch file '${file##*../}', too." + fi +done + +file="build.properties" +sed \ + -e "s|${TYPE}_MAJOR=${ESC_MAJOR}|${TYPE}_MAJOR=${NEW_MAJOR}|g" \ + -e "s|${TYPE}_MINOR=${ESC_MINOR}|${TYPE}_MINOR=${NEW_MINOR}|g" \ + -e "s|${TYPE}_VER_SUFFIX=${ESC_SUFFIX}|${TYPE}_VER_SUFFIX=${NEW_SUFFIX}|g" \ + ${file} | ${diff} ${file} - | ${patch} + +file="pom.xml" +sed \ + -e "s|<version>${ESC_MAJOR}\.${ESC_MINOR}</version>|<version>${NEW_MAJOR}.${NEW_MINOR}</version>|g" \ + ${file} | ${diff} ${file} - | ${patch}