From: Bjorn Munch
Date: September 16 2010 11:47am
Subject: bzr commit into mysql-trunk-mtr branch (bjorn.munch:2968)
List-Archive: http://lists.mysql.com/commits/118389
Message-Id: <201009161147.o8GBlQnX028938@khepri15.norway.sun.com>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="===============1831752755=="
--===============1831752755==
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
#At file:///home/bm136801/my/mtr-tr/ based on revid:bjorn.munch@stripped
2968 Bjorn Munch 2010-09-16 [merge]
merge from trunk
modified:
client/CMakeLists.txt
include/CMakeLists.txt
include/Makefile.am
mysql-test/r/sp-destruct.result
mysql-test/t/sp-destruct.test
scripts/CMakeLists.txt
scripts/make_win_bin_dist
sql/CMakeLists.txt
sql/mdl.cc
sql/mdl.h
sql/sp.cc
sql/sql_base.cc
sql/sql_base.h
sql/table.cc
=== modified file 'client/CMakeLists.txt'
--- a/client/CMakeLists.txt 2010-08-12 15:19:57 +0000
+++ b/client/CMakeLists.txt 2010-09-06 11:26:23 +0000
@@ -64,7 +64,10 @@ MYSQL_ADD_EXECUTABLE(mysqlslap mysqlslap
SET_SOURCE_FILES_PROPERTIES(mysqlslap.c PROPERTIES COMPILE_FLAGS "-DTHREADS")
TARGET_LINK_LIBRARIES(mysqlslap mysqlclient)
-ADD_EXECUTABLE(echo echo.c)
+# "WIN32" also covers 64 bit. "echo" is used in some files below "mysql-test/".
+IF(WIN32)
+ MYSQL_ADD_EXECUTABLE(echo echo.c)
+ENDIF(WIN32)
SET_TARGET_PROPERTIES (mysqlcheck mysqldump mysqlimport mysql_upgrade mysqlshow mysqlslap
PROPERTIES HAS_CXX TRUE)
=== modified file 'include/CMakeLists.txt'
--- a/include/CMakeLists.txt 2010-08-12 15:27:53 +0000
+++ b/include/CMakeLists.txt 2010-09-13 10:26:57 +0000
@@ -54,6 +54,7 @@ SET(HEADERS
keycache.h
m_ctype.h
my_attribute.h
+ my_compiler.h
${HEADERS_GEN_CONFIGURE}
)
=== modified file 'include/Makefile.am'
--- a/include/Makefile.am 2010-09-01 13:05:01 +0000
+++ b/include/Makefile.am 2010-09-13 10:36:27 +0000
@@ -32,8 +32,9 @@ pkginclude_HEADERS = $(HEADERS_ABI) my_d
decimal.h errmsg.h my_global.h my_net.h \
my_getopt.h sslopt-longopts.h my_dir.h \
sslopt-vars.h sslopt-case.h sql_common.h keycache.h \
- m_ctype.h my_attribute.h $(HEADERS_GEN_CONFIGURE) \
- $(HEADERS_GEN_MAKE) probes_mysql.h probes_mysql_nodtrace.h
+ m_ctype.h my_attribute.h my_compiler.h \
+ $(HEADERS_GEN_CONFIGURE) $(HEADERS_GEN_MAKE) \
+ probes_mysql.h probes_mysql_nodtrace.h
noinst_HEADERS = lf.h my_bit.h \
heap.h my_bitmap.h my_uctype.h password.h \
@@ -47,7 +48,7 @@ noinst_HEADERS = lf.h my_bit.h \
my_user.h my_atomic.h atomic/nolock.h \
atomic/rwlock.h atomic/x86-gcc.h atomic/generic-msvc.h \
atomic/gcc_builtins.h my_libwrap.h my_stacktrace.h \
- atomic/solaris.h mysql/innodb_priv.h my_compiler.h
+ atomic/solaris.h mysql/innodb_priv.h
pkgpsiinclude_HEADERS = mysql/psi/psi.h mysql/psi/mysql_thread.h \
mysql/psi/mysql_file.h \
=== modified file 'mysql-test/r/sp-destruct.result'
--- a/mysql-test/r/sp-destruct.result 2010-03-03 09:24:53 +0000
+++ b/mysql-test/r/sp-destruct.result 2010-09-13 09:58:11 +0000
@@ -134,3 +134,19 @@ Warning 1405 Failed to revoke all privil
# Restore the procs_priv table
RENAME TABLE procs_priv_backup TO mysql.procs_priv;
FLUSH TABLE mysql.procs_priv;
+#
+# Bug #56137 "Assertion `thd->lock == 0' failed on upgrading from
+# 5.1.50 to 5.5.6".
+#
+drop database if exists mysqltest;
+# Backup mysql.proc.
+flush table mysql.proc;
+create database mysqltest;
+# Corrupt mysql.proc to make it unusable by current version of server.
+alter table mysql.proc drop column type;
+# The below statement should not cause assertion failure.
+drop database mysqltest;
+Warnings:
+Error 1695 Column count of mysql.proc is wrong. Expected 20, found 19. The table is probably corrupted
+# Restore mysql.proc.
+drop table mysql.proc;
=== modified file 'mysql-test/t/sp-destruct.test'
--- a/mysql-test/t/sp-destruct.test 2010-04-16 14:24:06 +0000
+++ b/mysql-test/t/sp-destruct.test 2010-09-13 09:58:11 +0000
@@ -222,3 +222,33 @@ SHOW WARNINGS;
--echo # Restore the procs_priv table
RENAME TABLE procs_priv_backup TO mysql.procs_priv;
FLUSH TABLE mysql.procs_priv;
+
+
+--echo #
+--echo # Bug #56137 "Assertion `thd->lock == 0' failed on upgrading from
+--echo # 5.1.50 to 5.5.6".
+--echo #
+--disable_warnings
+drop database if exists mysqltest;
+--enable_warnings
+--echo # Backup mysql.proc.
+flush table mysql.proc;
+let $MYSQLD_DATADIR= `select @@datadir`;
+--copy_file $MYSQLD_DATADIR/mysql/proc.frm $MYSQLTEST_VARDIR/tmp/proc.frm
+--copy_file $MYSQLD_DATADIR/mysql/proc.MYD $MYSQLTEST_VARDIR/tmp/proc.MYD
+--copy_file $MYSQLD_DATADIR/mysql/proc.MYI $MYSQLTEST_VARDIR/tmp/proc.MYI
+
+create database mysqltest;
+--echo # Corrupt mysql.proc to make it unusable by current version of server.
+alter table mysql.proc drop column type;
+--echo # The below statement should not cause assertion failure.
+drop database mysqltest;
+
+--echo # Restore mysql.proc.
+drop table mysql.proc;
+--copy_file $MYSQLTEST_VARDIR/tmp/proc.frm $MYSQLD_DATADIR/mysql/proc.frm
+--copy_file $MYSQLTEST_VARDIR/tmp/proc.MYD $MYSQLD_DATADIR/mysql/proc.MYD
+--copy_file $MYSQLTEST_VARDIR/tmp/proc.MYI $MYSQLD_DATADIR/mysql/proc.MYI
+--remove_file $MYSQLTEST_VARDIR/tmp/proc.frm
+--remove_file $MYSQLTEST_VARDIR/tmp/proc.MYD
+--remove_file $MYSQLTEST_VARDIR/tmp/proc.MYI
=== modified file 'scripts/CMakeLists.txt'
--- a/scripts/CMakeLists.txt 2010-08-23 17:01:12 +0000
+++ b/scripts/CMakeLists.txt 2010-09-13 10:26:57 +0000
@@ -139,6 +139,7 @@ ELSE()
ENDIF()
SET(HOSTNAME "hostname")
+SET(MYSQLD_USER "mysql")
# Required for mysqlbug until autotools are deprecated, once done remove these
# and expand default cmake variables
=== modified file 'scripts/make_win_bin_dist'
--- a/scripts/make_win_bin_dist 2010-07-23 20:14:04 +0000
+++ b/scripts/make_win_bin_dist 2010-08-31 14:33:19 +0000
@@ -260,6 +260,7 @@ cp include/mysql.h \
include/keycache.h \
include/m_ctype.h \
include/my_attribute.h \
+ include/my_compiler.h \
include/mysqld_error.h \
include/sql_state.h \
include/mysqld_ername.h \
=== modified file 'sql/CMakeLists.txt'
--- a/sql/CMakeLists.txt 2010-08-20 08:48:59 +0000
+++ b/sql/CMakeLists.txt 2010-09-13 09:58:11 +0000
@@ -289,8 +289,7 @@ IF(WIN32 AND MYSQLD_EXECUTABLE)
COMMAND ${CMAKE_COMMAND}
${CONFIG_PARAM} -P ${CMAKE_CURRENT_BINARY_DIR}/create_initial_db.cmake
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/data
- COMMAND ${CMAKE_COMMAND} -E touch initdb.dep
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/initdb.dep
DEPENDS mysqld
)
ADD_CUSTOM_TARGET(initial_database
=== modified file 'sql/mdl.cc'
--- a/sql/mdl.cc 2010-08-20 08:48:59 +0000
+++ b/sql/mdl.cc 2010-09-13 10:26:57 +0000
@@ -124,7 +124,6 @@ public:
Deadlock_detection_visitor(MDL_context *start_node_arg)
: m_start_node(start_node_arg),
m_victim(NULL),
- m_current_search_depth(0),
m_found_deadlock(FALSE)
{}
virtual bool enter_node(MDL_context *node);
@@ -133,6 +132,8 @@ public:
virtual bool inspect_edge(MDL_context *dest);
MDL_context *get_victim() const { return m_victim; }
+
+ void abort_traversal(MDL_context *node);
private:
/**
Change the deadlock victim to a new one if it has lower deadlock
@@ -147,13 +148,6 @@ private:
MDL_context *m_start_node;
/** If a deadlock is found, the context that identifies the victim. */
MDL_context *m_victim;
- /** Set to the 0 at start. Increased whenever
- we descend into another MDL context (aka traverse to the next
- wait-for graph node). When MAX_SEARCH_DEPTH is reached, we
- assume that a deadlock is found, even if we have not found a
- loop.
- */
- uint m_current_search_depth;
/** TRUE if we found a deadlock. */
bool m_found_deadlock;
/**
@@ -187,7 +181,7 @@ private:
bool Deadlock_detection_visitor::enter_node(MDL_context *node)
{
- m_found_deadlock= ++m_current_search_depth >= MAX_SEARCH_DEPTH;
+ m_found_deadlock= m_current_search_depth >= MAX_SEARCH_DEPTH;
if (m_found_deadlock)
{
DBUG_ASSERT(! m_victim);
@@ -207,7 +201,6 @@ bool Deadlock_detection_visitor::enter_n
void Deadlock_detection_visitor::leave_node(MDL_context *node)
{
- --m_current_search_depth;
if (m_found_deadlock)
opt_change_victim_to(node);
}
@@ -252,6 +245,21 @@ Deadlock_detection_visitor::opt_change_v
/**
+ Abort traversal of a wait-for graph and report a deadlock.
+
+ @param node Node which we were about to visit when abort
+ was initiated.
+*/
+
+void Deadlock_detection_visitor::abort_traversal(MDL_context *node)
+{
+ DBUG_ASSERT(! m_victim);
+ m_found_deadlock= TRUE;
+ opt_change_victim_to(node);
+}
+
+
+/**
Get a bit corresponding to enum_mdl_type value in a granted/waiting bitmaps
and compatibility matrices.
*/
@@ -2056,8 +2064,13 @@ bool MDL_lock::visit_subgraph(MDL_ticket
are visiting it but this is OK: in the worst case we might do some
extra work and one more context might be chosen as a victim.
*/
+ ++gvisitor->m_current_search_depth;
+
if (gvisitor->enter_node(src_ctx))
+ {
+ --gvisitor->m_current_search_depth;
goto end;
+ }
/*
We do a breadth-first search first -- that is, inspect all
@@ -2114,6 +2127,7 @@ bool MDL_lock::visit_subgraph(MDL_ticket
end_leave_node:
gvisitor->leave_node(src_ctx);
+ --gvisitor->m_current_search_depth;
end:
mysql_prlock_unlock(&m_rwlock);
=== modified file 'sql/mdl.h'
--- a/sql/mdl.h 2010-08-20 08:48:59 +0000
+++ b/sql/mdl.h 2010-09-13 10:26:57 +0000
@@ -385,7 +385,10 @@ public:
virtual bool inspect_edge(MDL_context *dest) = 0;
virtual ~MDL_wait_for_graph_visitor();
- MDL_wait_for_graph_visitor() :m_lock_open_count(0) {}
+ MDL_wait_for_graph_visitor() :m_lock_open_count(0),
+ m_current_search_depth(0)
+ { }
+ virtual void abort_traversal(MDL_context *node) = 0;
public:
/**
XXX, hack: During deadlock search, we may need to
@@ -396,6 +399,17 @@ public:
LOCK_open since it has significant performance impacts.
*/
uint m_lock_open_count;
+ /**
+ Set to the 0 at start. Increased whenever
+ we descend into another MDL context (aka traverse to the next
+ wait-for graph node). When MAX_SEARCH_DEPTH is reached, we
+ assume that a deadlock is found, even if we have not found a
+ loop.
+
+ XXX: This member belongs to this class only temporarily until
+ bug #56405 is fixed.
+ */
+ uint m_current_search_depth;
};
/**
=== modified file 'sql/sp.cc'
--- a/sql/sp.cc 2010-07-29 13:37:49 +0000
+++ b/sql/sp.cc 2010-09-13 09:58:11 +0000
@@ -440,6 +440,7 @@ static TABLE *open_proc_table_for_update
{
TABLE_LIST table_list;
TABLE *table;
+ MDL_ticket *mdl_savepoint= thd->mdl_context.mdl_savepoint();
DBUG_ENTER("open_proc_table_for_update");
table_list.init_one_table("mysql", 5, "proc", 4, "proc", TL_WRITE);
@@ -450,6 +451,9 @@ static TABLE *open_proc_table_for_update
if (!proc_table_intact.check(table, &proc_table_def))
DBUG_RETURN(table);
+ close_thread_tables(thd);
+ thd->mdl_context.rollback_to_savepoint(mdl_savepoint);
+
DBUG_RETURN(NULL);
}
=== modified file 'sql/sql_base.cc'
--- a/sql/sql_base.cc 2010-08-20 08:48:59 +0000
+++ b/sql/sql_base.cc 2010-09-13 10:26:57 +0000
@@ -100,6 +100,8 @@ bool No_such_table_error_handler::safely
TABLE_SHAREs, refresh_version and the table id counter.
*/
mysql_mutex_t LOCK_open;
+mysql_mutex_t LOCK_dd_owns_lock_open;
+uint dd_owns_lock_open= 0;
#ifdef HAVE_PSI_INTERFACE
static PSI_mutex_key key_LOCK_open;
@@ -298,6 +300,7 @@ bool table_def_init(void)
init_tdc_psi_keys();
#endif
mysql_mutex_init(key_LOCK_open, &LOCK_open, MY_MUTEX_INIT_FAST);
+ mysql_mutex_init(NULL, &LOCK_dd_owns_lock_open, MY_MUTEX_INIT_FAST);
oldest_unused_share= &end_of_unused_share;
end_of_unused_share.prev= &oldest_unused_share;
@@ -341,6 +344,7 @@ void table_def_free(void)
table_def_inited= 0;
/* Free table definitions. */
my_hash_free(&table_def_cache);
+ mysql_mutex_destroy(&LOCK_dd_owns_lock_open);
mysql_mutex_destroy(&LOCK_open);
}
DBUG_VOID_RETURN;
=== modified file 'sql/sql_base.h'
--- a/sql/sql_base.h 2010-08-20 08:48:59 +0000
+++ b/sql/sql_base.h 2010-09-13 10:26:57 +0000
@@ -71,6 +71,8 @@ enum enum_tdc_remove_table_type {TDC_RT_
bool check_dup(const char *db, const char *name, TABLE_LIST *tables);
extern mysql_mutex_t LOCK_open;
+extern mysql_mutex_t LOCK_dd_owns_lock_open;
+extern uint dd_owns_lock_open;
bool table_cache_init(void);
void table_cache_free(void);
bool table_def_init(void);
=== modified file 'sql/table.cc'
--- a/sql/table.cc 2010-08-26 15:17:35 +0000
+++ b/sql/table.cc 2010-09-13 10:26:57 +0000
@@ -3092,7 +3092,30 @@ bool TABLE_SHARE::visit_subgraph(Wait_fo
holding a write-lock on MDL_lock::m_rwlock.
*/
if (gvisitor->m_lock_open_count++ == 0)
+ {
+ /*
+ To circumvent bug #56405 "Deadlock in the MDL deadlock detector"
+ we don't try to lock LOCK_open mutex if some thread doing
+ deadlock detection already owns it and current search depth is
+ greater than 0. Instead we report a deadlock.
+
+ TODO/FIXME: The proper fix for this bug is to use rwlocks for
+ protection of table shares/instead of LOCK_open.
+ Unfortunately it requires more effort/has significant
+ performance effect.
+ */
+ mysql_mutex_lock(&LOCK_dd_owns_lock_open);
+ if (gvisitor->m_current_search_depth > 0 && dd_owns_lock_open > 0)
+ {
+ mysql_mutex_unlock(&LOCK_dd_owns_lock_open);
+ --gvisitor->m_lock_open_count;
+ gvisitor->abort_traversal(src_ctx);
+ return TRUE;
+ }
+ ++dd_owns_lock_open;
+ mysql_mutex_unlock(&LOCK_dd_owns_lock_open);
mysql_mutex_lock(&LOCK_open);
+ }
I_P_List_iterator
tables_it(used_tables);
@@ -3107,8 +3130,12 @@ bool TABLE_SHARE::visit_subgraph(Wait_fo
goto end;
}
+ ++gvisitor->m_current_search_depth;
if (gvisitor->enter_node(src_ctx))
+ {
+ --gvisitor->m_current_search_depth;
goto end;
+ }
while ((table= tables_it++))
{
@@ -3131,10 +3158,16 @@ bool TABLE_SHARE::visit_subgraph(Wait_fo
end_leave_node:
gvisitor->leave_node(src_ctx);
+ --gvisitor->m_current_search_depth;
end:
if (gvisitor->m_lock_open_count-- == 1)
+ {
mysql_mutex_unlock(&LOCK_open);
+ mysql_mutex_lock(&LOCK_dd_owns_lock_open);
+ --dd_owns_lock_open;
+ mysql_mutex_unlock(&LOCK_dd_owns_lock_open);
+ }
return result;
}
--===============1831752755==
MIME-Version: 1.0
Content-Type: text/bzr-bundle; charset="us-ascii";
name="bzr/bjorn.munch@stripped"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: bjorn.munch@stripped
# target_branch: file:///home/bm136801/my/mtr-tr/
# testament_sha1: a4940abc3be588dc94d7d92ca4228b106b59e023
# timestamp: 2010-09-16 13:47:26 +0200
# source_branch: file:///home/bm136801/my/mysql-trunk/
# base_revision_id: bjorn.munch@stripped\
# 4fj042ktf50y00i1
#
# Begin bundle
IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWZ1/2OEATVr/gHexACZ9////
/////v////pgad5u6sldfcz5t9qz5F4a8PVCnPfYPJJ62tZMvbOY2z7Odz2+7dNM6gD3Pvn2YiJ9
uz3mq20Fs7j3O3uK8+7nWNExjGNlo7sXGIs0+3dWxoYHcdrQA6iS3u1t1HJaad26tTa20h3e7wci
7dS9j12tbs5dp9vuN4MuVxxrwwUcoaDIES8m6GjhprBk7ve1VabZ6o6gSe65ayJxXSl7d0PvUreH
XT332d77PR76r57etVsqkzKKS82mw0Vbe9vemooPbUqXZmvVt02j2O7WayUMApIlVTLXZ0ctnNY3
Vttlmt7z7t7Hu7vlZrrERrQEQo6DTCUIBNGgCEGgmQaU9Gpk01I8k2o9Q2Sepp6jQ09EZD0agaAE
ECIBNDVPakaMajamgeppo0aAAaAABoAlNAiaEIBAmQmJplM1ND1DTQAANAAAANBJpJEERimaGpmj
Unpqaah6QyZoGhqHoTT1GTIAGQ00CJRBDUwBGSejTQmTIJqaeSNpqTPUU9T2mqbT0U2KMmRpoekC
pJACAEEaDQAJoTSJtKbSPRG1MhpoDQ00NAN9Z1GehBaM49gVGqQg/xIK0SIBmDMnL/UsO8as8MT+
UfAc+Ej2Lg/hkzUtz/8U9tJnp6iSsRzNUXkPBk9LAKXrNrWVyP40L+/Wg59fG3BBvdz7rMDFu7W8
P685vNoqBW84d5iM/mqIQq2tXtkpWCpD7xAxU7VBG6L/Yrj6wyf04Zl+1aLsvbT/CqRIE1Evyv6y
T/CvtE3PZzEVvpiIwWSDZQzptkwZQg7s125wRO//H/9t/h/7kvcf5938fIlIWHMmLU8PI/if5kvd
SKYGaKviM9HBoDlxXaNRcONqXYJaKM3HOf+j5IN1M/QED3pL/+/x5D3Q1aFLt27OzlaB1NDixo89
9PZBaElYxZvPy+B/E9mPZfcenxZVZWT2p5SyjFUXlpo4X5R4ymeHxBkPf6T75RiUuc6uWcYb5ypO
Llj+mf5H+EeqyF8lplp0XVSF25ImeaKOZn5XK+CceYJ3y3Zu1z45oJZD+Elq/Lbjo1H2SCk1ILM0
NTN0ukakKdKrD+IpPTx3PCn0U9ccW7UxMEsYdGHb6GU2Pbb5f204/eYQKG6lOfs4frcGmJbfyGL/
zXMzVfFPfnnnTGZepcUUhXDfSP/PgeRIDECuUtt4Kgp/C0gpQspLKQ3eOlZO1DxXKe1p3Mz+eNM9
ihKbajEi50sPUWiCqJk0iZNHOkFjDA6WVqnJrpFlc4qZWwZ4qlm28gxjl0CSIGdM1JVe0SmcJEyZ
7V7u68TZUSiKMfw84v+nf8OvrtcL6TAZUvUJCo6CoKqrN3z/k6BF30GzoeKUuCSHb66pXw7+GTSH
gw2Yd+r7GB4MCHB4IYzTpFhxTdgbOM3QU4ZeDJwRSoKNDUyJC70tSModUK7K5hoZqqKm9oW4Tp9r
pXnPTvzw4UARPXnN/b5+vaGH6/6nShn0tzoLodicmOTxJKrEiD1UFW8y5DEO4rHiIb2M0zlzFmI8
Oh+HuwBbyDGmiKiI6uilhcaJJsGNRMk1MDKkCyzK7glw5d6qiVmIe85y491WKvO2Yj1AGGxJdYtN
6qbzCXcXO7K5pdEYyl4gxc4maqrePXpzF+xOlyVVr3RHvZqd22YBWtU7sDyuhFNmIxbl4OwNLjf5
3O6wpI7F6bdOXTmj1bZ3Qe9mZNT58+kHp+/LNXWd0frLcWnvw39O208m9tFBnKi5dHH81tvrzUVB
yrhQQWiP3fOiiF5F5ghayeygg0iMjoj2qnCgD1ADZPi9My1afNdJ/w/Phw9EBjhAdlXhfqsXsj1e
ppzl0f8UPU+1Hf5Jpr/xSn2/2f3lxJT7XAfaU2US882V7Dlmt6KXqvosk/gdgSx+nE4ihgCpwfBJ
vodFC89fs01LoHt9X5tlwa7p5SlPiqh8QzCIcQO5AgoCyCyWQGMWKCCKREBFFUYKKkYsEViiigxj
EUiLFEFGIsRJFFUEVCLCIwRiyCwFiRRi8eU2f0955AceIKJ9wKoJ/WcO/kCCJfy5SxcccRjH8zKx
doEAB5CRVBVgqMFFiwQQ8R1fpFNyV8XK/B00Sui6psKTrH2TtDqu0EaH2h8zMGynd8pkjKt8ZvFw
7uXEF4cp32RYtkYudTC07xOalh1lEXtjEULMw2Vqh2tNi3dUP5axS3NRlSLUvrdOQtO4XnEJNR8o
+FpTrhmaMVFIs4f2+jgsi3YU4A2ZMmWNcttAgI9SI12VHsUzT+jlq8ObonUPFJ2p8rLvL3OFTj1Z
JvGIa5+PADXe2fZ5dNTQAkxg9TK10JMz7+rwexvF2aQqbCane0wkIy7LVxtNYmENjT4KmP2OGHyK
cLJiSFsp4h7eSlIrTopPA+9xc5vb6fzPs8U3lzt23End3Op0fqXMLm3eIVIenHm4aVhFHKuGZXPU
+er2fUP2lzSiXiX3FKFLwnQsuPLqUCTYppUtEAxMdrDLo6IMop1KOiYOGSTR0aHw9Q1q03ClOjdQ
rl42exEo2MODziECJUIMiiHZ3U7UvZcolM6CXYtFvUU6NkuBdGF0ZCszD3+mPgDeHvNhT9bIN8Yv
EkEoN7JJnAyKTVSXxwDgUKA7x79fuc5J/5Hn94H/kX8D1CrDtoUChCZXyejs6/9g4Jp8Mh2Z8qHl
8n/R8v7HDj0+xx2cO6f3HF64y83+NijNr78u3+Fvg7D1D/1KSXpPy/nBcAma+h7/gnRiJITO685j
L7vSd5yIoaDl+9WdVU1JVQW5D9WgHdyC6i8UD7tu4/QHyTfg8ylxPvvY7yHt6BwheCiMCh+nYpYU
OSYZ7KXuzZGFGYVI9pnOn39RE0wBHVSkuz707xK+5YQQxTDVKJj4+Z3ncFfHOCHdh+Z28EvleTR3
8QFmPKZiOJqGrF6pnyj1nNy7ROnxWHWJHIZFxcsV1r6IpSrfTc8I4kR6PThSd/iS4bodu4xpnQ/U
NRzH3+kcQ+9UO/GsmMhQoCjTLN7FQ7JnjvGEaOs5tsSlWeSF+5rOJxRXxRzzgUmqa8I0ZE8LfnaM
IKjEGSq47fiuDk6nXDw0vkmGygxGTHCKpcdKavm46lMge4QrlOUQRDaOa8UneO7Nq2vmtxOhnXUN
S3fNs0dtWDenq2A2gRT+X3MlxA5DkrhVPL6RMSn6Q5mJy2TeeYyUXUw3F3QHaOJyykbrc+BHdfqZ
NpE/RhhQ56/GhgpDCX2VuR5Fll2lzeqQQ4pybF39+xIwzfQmGO9e0QWsHoQRAsg6cz92QOIK5fHp
sAOsSkYGeXi/1/BWKVs2Q8k/C6PkfXQKiXy87by+2GyIiEEywYcaEAyjmSDZRN7afCO8dS4nKMk2
l4OG6wtbT8W2bsh1iGFjr9G9Es6yX0IsbzoI21TuQF4CSYo16FNoGjCAxYs+DghaOEH+8zPYfvBu
7kmbJKnB/v06TgoKLpns9szYwZ3Zi+79AhNDSziCsGXZjVfe8JciP5nBmDA4BnJQMZlpPkEG+uIM
IS9bMzA7webltlqOI9CSewvFYRSlJV5C28cSvfWyM9a582q9ioHpuVHCwPexwIOncDNigUiO3yAJ
NiqL+9hmvXT0dJ2O9TQSyELKSP3irjctJ6iIiA1HThsmY4NRLIWjKvUj4YbcMQDRY5orDdTsji/S
POD+vDhbNGA2WOnbjC879B1963o7ZuEREQpCFliv4y5HxGzUgr7I5x00YgvMiQ0BYoQjlsrb2BA4
YXNLlSjkVt2x6a55cbm3UPV6uHbohmldWypq5+SZeznOjUGcT84P6waOmRhWSOx3GBzPcVN+zGUn
q4t/fxwcoXv4605CIiBBObor4t3b96ycyM7wrdrAkRQoacpxsEHOBfL+hltmWWsKeOMYxNHBMEak
18mqMm0hc4qMUatlqrWVkJYxKHAi76FOfhavt+tscGOhFpEk8VER8ZzU0es4IZZJH2dnI9zt67JP
rvzZX3d/JGOscaeCvRk3mRDG4xGE82HLaCcWL58lcn4fjtiDmvcnq/+kRIaYQUuBRbmMf9yPe4i2
uWLZDuQyrDq0/nd0idOVYHTxGJU5QHp4P5qvbGrszEmZatvcZ3K9ig4hs5ILmRnL4JrJT4bFG139
ai9baMNtDjIJupBoQIfib8alV9ff8fYCfd+n7H7pdKBUPR8IJlvsX7dURknabhbTVyVSaXtZIRIP
k6axkPlB8KNs/TDPpgfuOZ7AdDUyxFMQyBg2IA8FCIXmxaQdD9xU7DU/ALz8ht5+DMrJlkAYOWNo
FEnUH0TydujMGy9nVRzl+TYtgtCMWQsCKVNdSIPiU1LzCxbxdOr9wBFme51vH5E8KPTz95WMHpm1
Mzm7LvETgdKXlFDMzNDQgMfRkJVVVbHhWU7n1x2jffddXOB7KNKdoULoonsO1aLs983X6uVMH58c
hrgKU5DDTW2MGMpgt71lLA1/o493hcn66/mAEDflbXheltLdkOzlKGaYIiogoQikAjEgRggSB9IF
IxRRRVRBVRFUf6GfFIDEQT9FJD6kieYyE/Y+nk1dh2hcPgZDaNwfm+vxgcD5lgQE4PH7Is72c697
cxSL1eaHa91H/sHyR+IfqERx2f7VbpxzzGi5Yf1ilkmiT/OXFzli8WP++Ub8uu8UPwUodyUw2z4H
b2l36vp8+uYxE4Rjve8S36Ps/qOwZQ8t1/TZoPr5xIXMGH1Yxn1IcR6o/764Sux4L1tQKGFoff7P
icLBvh9PHm5pzn1DWAXG0ekDEYd/wCwPL3nT+TBxVsUy7KQ6mb5m1F/D1eWF/087zqci9T5/O6kz
oH5Tp2Kqqq3/aS3425H5096gOZGFJ4eq/3oYhkiYyBwkyn/giflJ6FpLOkPm7W8GaymPZC/dpHoO
DZFcB95OnsJdze9W/xJHthBIr1tEmNI+k7nm37WHRgOgaK4cVF1wPzqyqW90Ur89GWAcQh0n7eso
ZP3NCqFAYPXESVk41D5Yyzc/3Hp4lfOT4wn6ChUhU+gfBIBWt/tA606ApHkKkj+PaRYpFCiKi+MF
xCmiRVAqRRAKBisYJ6AMyjwnxcxUcZ8BOgvmJhHOMAzla4wmJgMouTUT0FoXBZhcqQ1PR3V657vV
LD5N969WPf4HU3UeDz3nJjH+U2lIc00JLDdPTRf/SKzOqxHcXRWUc0pE2N0bXh9zOO/l47R6HaQz
DhXQYuJxib7SbRMiF0I4+GdKqq2xRlRmk3+jhE7i62kD0haPCN42SNoj5Hccov4f0rHJHdNN7bfN
wd3MlwlSSio1c56fHtdDltz3DvLpemirSL4oYZByneydJEyjtIYVW7vZ7vX6fl6PR/Tvd/IF+ssW
cdsTD4NZeL0tOamRhFjlvp6erQaD0Cxhqv4576j6ZVngl0cefI1ltcrL5ly+aYdig/IcvDr+hQiN
IBHhhq4EKPdTrwIf1onVG3BPYDf7087lX1cHD2tn4vf8m58sRV3ZdksSxTFMSAmJYsNyZtrdzR5x
bYFKCQVLGRhYEQtkpSFAILJCkAJZK0lhSh7qa6J257gcaab/pyShddQkJEiRMAZSA5xs8mGb4WBV
sB8/dXzbeuqqpokSApigkJAoJnL3FXczVTVQJgligkJAoInTDH3xj2s+z17/D8nyaP+QSsAh9P4Q
7PL5SW2W2W0hbZb7DJh7lfr32ZmZlE32tsLbCW2BbYFtk9Hd1n687Xhw4W2222Tl0bW3PoJ6cRRV
ULXxEfFiva/bXHZLH3vpuLiIiXSmZiVd4KV1CQlFwlEbO78JLlg+sYPoEfV8hHyojf657FHWUsYa
T3I2uW2kB0O8zmKmIQnb3AkAzA+XYIsDgwMYGIpDm8UJUNkmcLNeSyQ5JxFOVCV3TghiQUOjnZBZ
FhpA5MmJJXdIHJnNANOysOQyTnC3M4tV5HzMZlwDbH3kLQ34m+ZOOSFZ4MtoOWcHDhiAhmCsbM6l
xg/4KysUqfBsRaZg/G2J/xLzmzXrLqUFlmSJMiL0LwcfXZgMkDYSkEEBBBiJPj+XuDQTQGyKFCCq
GCUHNURSgQUWfELw/QYP/6THu08ff3JtRSc3Oeve3a2UffXq11nZRBJSJOCJKXrlYQ/LrgHBluZX
Wrllg0+IsCIBRIAifV15rI5GZPbQtiJc4vo9slBZtmnyQMxQUM2yCQlmHAbmnAvAKzYoqjqLZMwG
MBjXYmgRrRPO84wwsJJgY8++5L2CJLYFJe8GHExiOreuLni5Nzn0ZwGiyFlEJ3R3FxyGj1nWGYbm
4GHjYMhjqxRZc/0Tq35uzfGy5W2raKvdrOrM3WYnLOhNreXiSIwmNtwIlhpG0JsjH5QG22MdS4GJ
EHXgwz38W2L5hp2ogjF2ODDJgOvwVcgl8L5ZZIpwd2DrhTRGuizCOmrLisw1rIkGJZ9lO4Qmrip2
YaiBDUMUH29gcoTcsLOnTi0ZHRwV2asDTbjy1tvVh4y8mSKJutJw4Wkb3CxNCgRuSmtTO9wXRbgc
Jo433Ux5E4LLnXY33c91VwUhmX2JH95KBxUkSZl+5diWgTJgwbtl2K1OLZN2oqINNTa5EwqSaFbI
PNnMcbXHmsUmPjRRDWR3wG4I33EeZ3oRtmCe47DlZGIVMpEbw5aFZiqYBhyMC+xeXjOeDFTUuP5l
xyaLLHFi3uFzisGwVntukeGRrcos3s2h/ZIaOeu7c6vvIfhI3v+gwn9Ecn9IHXqOIfk1JqSwwxKc
yjv5tGlDObLTqUcjc+1DKafHz79uSem5KEg5Fcw+RvyILTDA2M27bz5smyua1Bx7tYiQfTiRUO1p
n9OpDGUAZTFW5ygd4lS1UPp3ZqV1zM0pSRiOFmWomrxYsmyuw9CbpNHMIdwhPg4nS8XsRBxmz02Y
s2j/QfmWb1Kk1iTbIo38pDkvwIXRhd9cOU39KmrKpWTFXyCpidZDE+t6hFA5oNoZVGlhBFB5QReV
S0Fg7PMPnvPANSE5BoLxISMIJQr5g4WDZwziIg49KXRikQUxVFKGLj6gBT1z+cx4KbnwanwDwePD
1uGl3ZazowZRJ2IVgYIwOu1lI0aKYWtmWjtCyvXa2rDGmJrmki6qXrIkxLu7XXHLwpmmjo033nhd
eHgHU0PIiZHmTuQNhq4xk1k1V6yIkHirExmjhdFMzsos99rjMvXRV03Wx1RmYm6ahgx0FVmPIkNI
abZ2pCVwwTHcdPGEzMjqCbJgfg9gvV1V+HGa8de2+o+UKtHX0NdwpfOUijfnhYR72WNETIa1uycS
1qtcX01uMRVr46Jw9anJoHSYOWIA4xIYYG2sADdEDcN6Kuc8FczmxIhMSYTFmcarK4pe5EL77SIY
zDHqusjaTWrQuNBlwvOTVIWmWq4dl16tGDSOultIIa/EOhKHCZlErUdsLS8OrFVdZbTMzEu0vq2U
U4zTDTRsM87zOEb6z2LBnk9CE/ndvBTJB0wel+oUR1T0AO0A6Ymd6KbOmnS/Mi5ajh1ohwo5BMWN
qHIaTx/01dwXwhyARkQ/Us8UBJzAORR7dsvkHHB+lEE1C/Q0nZHm+AcS7DenhINLhFLHdQafaH2z
uR7qySOaPN2OpAxXdufMvhkJUmYLMvc+2OZxAq4e+aGk8JkhEKPQjRFZCRQRwpnAcwC95v0xCh0o
Z5dIlFiXTNFFeZUPOwhJ5fEMjlMkc3jLuUwBEpA2FYPLcqB56YHnUyX97PoIzR4P3o3TooAijcQ5
wHidWyA3O95GXcbWVqNdDgoKvxGGZemZq2M/DE3MtXY2cM+Fyyo7lwXFBZ9EndJIfDpdOVnBR17t
HJvxNXB4NbNaXrteXFji2bNV2fpwZtmLZlHwdJ2Ou949Ohi7jD+uJ5Iggamm5YoYPMXm1xiMQJio
LgPIFMyCLgzLmqriQK6kzzjMWWYCIm5wcBUU2JVMlGOONxw5z3mxUqEqncHzQQ2Q37+w5XEkDIzN
394mnhwPX6+vq9mT50xpDYrWfCndoWsE0RtvD4ENTm61mqsNafA+NtYVbDu2y1s9LWAxhKjJsqqt
qUvkeaeDCjCmhalVMUVESzaQ0Y2UYd7Znt8cWtVKz1N03L5SRfbZcV9McOydUyExlbUx0ta66/Vb
Psd9JDBRGKic5MrGnFPdfLyCTBg2e7CrW2hHIvsiyNV3Vj0CSdsLO3CzF94DQSneDHjp5GXdtmXV
1w1sCyj4ZKDpXmD32HJpchAwgzrvNF435OdNxyOwQjSY2Qa4ZjEzxyZIBsGxxy2gGcgboWHgSJHA
Y2KqnDZGdnRdhZAQcIDXDReIKgYnfY4yYrbjm5e27DU1zQyPlJc4xqx2vv6cHhaZkgPvTO7FzxCc
8yREyCSjOCdgMrmTAxcOKFjEc8JXVWxgDrjENwrXbPLLEyiwuVc8GWJAUzM2HmLSKFxLacQ0JE5v
LDi7QMhR5oRATxy40Jlzdz3ypEOWsEMKLKBAOgZAFeOWAxMIS+nsFQwZQY3b17hrCCjHY4+wDroj
d/FIc4TNaj1LwF4wIXBQQ0N3NUFbQzdSoImNFkrjAU2ODgrBjYzPcBmldcKmdMIIIXl1o0LwUuKs
QSNcbxYbfuA0ddyuNxTUNrdSe1w44AJ7EgvE9Dyk6+/yZ8gmOE6bBERIQ7HUlzcqLJTV27bdF5yX
NmzSaeCsLY2Wbki9yZZLr91/ey0O2TZtrr0zU5G92Ko2ctWp8aM9KkZ6SbkJN3s92ZWDNtaiyxop
h15Ob0sv0QdbvDjlfgX6hz4d+CAXAoWxCpU3LwexzMQwmc2IYHwQsEnIqvhrmTI1GYhMqfMA8wNA
E9AwIqaaWzCWxqeYLDUrU0MiCEzmww5zvIZMs2Lo7djc26LH0jwn8/0Gkft3G7CE+WJU0miyN+s2
io+usbd8R+jujYajukSpE6VnHMTKOZDdmZx5fc0+HaOr/FGcR6o72Q6AGIcAgcHTsD4XSQT39rKq
DKF8YdJI9oeu/QIiMcuwQxOaqoDZ8XTxoRJKxmzMTh87amYjARtiblNMKZeaeX1tGFskU4cgHEcf
DXJp4xqkm8vkbl24kq2+EUPmi+Wfpv38bcfVkdBndxVIRKyzccVRI0Qa0T8xf0F1gpLcUF1oEWDl
bmYPC2LEVIMEDDN9Qd95zazOQ2BZQORz4actODms0yyHMWAt0UZEVLXFrSEwSgOhdexRaL7+F+3W
2MuWNRKBgYjx64+rsJkSK0KAG77DzRDCSqXJ6E99pY3HdjWKkp4OvwP4WQL8TIk9PVYDbhs3kh7j
PYGmLFXFrTY3UxeXhQuuH1H+obBYPjxCwc44POAjrv3MCLROCEAsSZPbtHYbYKA5+LEy3HUyFshM
bsTob2V+9d1cTCJg1LI5FRyo5XlQoOcRHDteTa0BxSrmfgBM+mpSqIGeQaEYYhFEDDM1CRfbAki0
ao6zNC4DQIixW02R5IrAc8hqOQUncGtDS4MoqG5Qo7j1scxjm20ogjtPcA2AwVLujt59GGIO2DO4
HFDKRuVCItjIUbPUvLxTKPEsAcsEHIbCpVRSws0NZ2M5ZEs31uYqPN8IA9BoqkqqwXXBSsJVSBG1
wf3DyylxEHBfNqb76JU3Lsg1UyzqPxMS2pAtcSMR1iExjY3wctz8SJuZRyuvy8lXs2ukcWSljU24
uzQ56NGK/DHq65thMNWrR0dmDe7Gji1MzXDkpOpw0OOK/LEwbFN2jOaF7HNu56b3vHy6ujJivb/m
b2yuztzxdGrT7Hd1dm3C6nV27TJyNxod5wE3ajy+5y9MhlPtI+sbrhMg6RuiYInWPRax9g4ENowZ
HAuNx8RfO35XPYdPq3gG1NxlUPAOtMOwOKDl9iavQOfq4dM0Y8K3zUdZ+Vjex53N53JiGHqitjNQ
TY7PbQbrcyqza+ABe+xgfGyMK7vVRjcgoUs6qIuXM4qMbTiNsWb6+Ac3Srw5K4GbcMb0GGIDlH3s
A2YkrkIkxDz9xjD1eK4d1SZoDi6zJiZmZrqUaKKjmTy06clt2FMUZjUKJjIYgXWX1cMtKSluFxVw
hc1hzmZ5E09dYBqNkOCo+jrJhgZYk2eOJmS56OoaOrE6NGvapCQfC2JYGLGJ4NrOJxczkQnawkYY
Hj2CEbyOBqeBaBwCp6gdyAj7YYmTI9bwWZgbmz9kFNR5kQJgEgErHflxG7YImQY2MX4wIBa8eMHR
5eXlq3COEHskGggxsZIg6M4xXcZC4KDCWNeBD0h2ejPcuy+ngrYqM9vp6XfQZyneQMHtJSM4ueoH
MOXeYmnf4mx68+uey96eDu+8rVw9UfE6i+EyDCsalCZZNC+ValWWTChkaB1NkQMOpgXmQxlczBgi
6asxa7Qdp8tBKcyBbaBAfmmgmd5fviTxXPewahZXIgKnIqTFiIplgG11xtmnb1aiouPnZmFd3d45
lUZXOMwje4vxyBkJfnBO4Y6AiUzIiajbwQibV3O/E4tWHG9i7LvWW1pKqKqK6SuHrecJuOxbXX5z
IOujZR5jmdWB7tJheTVWRAvuHMszhCuLgWxDfl1WWSaxJKF4Ui3D5VKlTOSSMse6N+RTqezmrFa4
4KUXzHwUuN7q2zX3s2Gl6mrRqpyOzW9tw1Leve1aH6orhkTwS+pqY96ZJQSJQ5pgHv0AKGrk2GNC
pYhYFyunhXkKWemGZsClXlDUeQICZGIXYlSvA+c+cYB8hMb5O6Pj94+8ZT76RgMxLNBcdvsYfDA+
5J6eD1R9N/geQuierD75eBlHAvK0C7VUMQ5idujLlXssLYf1F7pdzkojPoN1ehhMKzfMEtCf5s7F
IlU4vfmVrUqZeatyphCJAaZSQcF4jCiDd7rVXeX1Go1IDaUnw2XOgC8VVvpbjLpFhd8eXN/Dlaoo
pFfusYhugd/VbpulNzYchXbIdiCTb3F9UvuqrYbrBu/LRtdr3TSxkr6mCzss4+Hym7CMdyjcN2bj
eoDhUffr4w6BaZHUPqhAErgSQLL1JPKIAajeXOwcnB6g3NtG/Dxhn4ixkI4DeFFIY8LGjGx+T5US
hlQYdlSwXgIzkar9JOVMUsgI9XvSkOjQWVSIZZNzIQLqEyddHXROizvPjAZgpLO2dCmFWbEniQSD
hUQCxMgw0B7aoZl0I4coutqh1Fcm7KqKoiaF2ehQT0DmhjppNyuUPuQ1Ni57GZOUZ40HPggIzkDm
ZZm5vEOAB9Eu0uuq6J2crXLNzdHlRzcG7Yd1Dfv1Z5qOnTlGjuMGfLO1rNT6ePNn3Eddq1rm2kTk
/MiLgkRpib30kulEBF0eZ6vfUqZEF4+Cj4A8ChiHXApjaOosWxZdQQOo6jxxeNM4ax1Km6mBhjuM
l74cLOOEg5RUkaKW7lnJ8JumTfHcdTR2ZshsUSdwUIymYH2gJU+BRJBos5+Ti4bzRs0Z6Z48HVh7
Q3uTCJnHTNmcmKmianxN8ierRe4LzbS9x2bnOzpkfOdhMxvMB7DSIZ1HFdCIUKlh0MZTO4NNdiRb
C8zU3Ltly7fofyijpHQvH6ztHAO4+J5e+E6fj3x+Y+Ueio1nvGTYPKRPgO+OH3jkcOXYnWJs1vFB
29T1PgcvS0vkeiKLG9oQUggIdkmLebrZ4JurHzWILkchRfuRLYMy5GarOLyxrKzHTOzZzF3B6ts/
bNfo81Km3BGomeMTIQ/EFHhApARPe2VDVouXPR3T3VHBEkSJGgTX8Xz+nDUYu3yPFnodOfGq5Zvi
NoWYmDFUHBMfozjIousyiREKIUZcZkAEfIUxKXjENskujOQKI0nYO8FroVuTLQmGE0HWeJoeQuc7
sQUv9UI33UHXbHgFTECZlRyA9Skxj6eEKOhU9jIR5C8DvBvp1pJCBDcAj1QO4usMLJJ7yw3wbnqh
uTRA/jpa68AgfOmKH2CMtq8HdhvWxfQ1NUa3qkSjKl51aNzubONiJkP551Ol1uCqmp9JzBworDxs
DG8gGlCJgte+wbRvYunWOHGr2ze3dS9Zm6nFVbOQ7aMngQHNGxiOj6ju1NTeJRo0ZMB1GoVGBZFa
GJQIzHlFFxeJWsdZDwtiW1BbyDNdg2V7evaM3zcsd+XyDnhMLSSR23rksavgfSL8DEaiG4NOGhEh
3AGOvAPLpl4COyCm1eQTDJwVGxYidE3UV4eN4WLxmVguLjYdMhY1NmajA7mLUvOZdHJjeZODXRvY
3uG9hpTJk0aRcZsA70bfIUxeJXFXq4ab3R1cvkb4R844b/YantPc7htG2hyi454x73kkYCUWJLHq
kN5+qaz7HjHubRZ6eI6u9lyVEZ+YR4lg+kXuzjzQYVfMDnAzAWrGXEPKGIQmSinubSEKIU7MuA5D
krjS6cfSDSgcYVwDmKpUU8aqN2PKZJoNE/XdURe0sCtdDc83XiY4uK2242VotvbmexkXXs3pZGmt
HR8/OphtFENCwqIe8WF2bmZkciBfo5PS5s2hMzYVkEYKA5NSO70MCamoWmWjNmoW8RI7A5UsaCkX
ME94SgiuFJOHLFUoWNCQiEIUMTQ6Id4Cd4R3UVZqcash8gdZ0RS8UMhQtAyHJrmDJBDgc5M8JA4t
01PRCgMJUmFF3iAZYKuuuDc1JySw+W8yGbcR16FDR1BdxqA3I5gHCQfYfoYtxZ6S3eEObFvSka2B
phvVocNQUiKkS8uMhbF5f2RMSZmNcLk1jA9QrniaBMnuYmI4jgpM2YuDRHefskNMqKZla5Bk4bQl
eU1FNLxi6JJw7eReh48QAslpClYX3xeSqPRoffBo8K7MDx7+dcGYscWjivPa0UcncHeedjmvyzmo
lylEXm0dId5jp68hQHfL8aqOW3tNLJucxTEqciaGYXDETMgXjjJ944Npk+2w/Ye/8HRmlMXFTVwe
G5tyYTBzOLMzUspZtQ0FNAMNBTMeSJUDhCJiFzWGoEycMjTb79eWuJu4OXCTBxj5G76ex2kThGh9
RuPM0jA4eTGPoUOW4d/sO4fiOP2hHKPP6w3hgeoKAnI78+inZk/ug5nvde7v7YulF/pSa9b3I+6E
bqdCzQHQUUYWH86B1DU0Pc2drmkzM5gkpkSlMsrZu603azM1hXmlzb6LJki5qm/JgXaPl8lsGO8N
225u92e5Fr11xMUl5wLKcmS/f8vZ5dobnXly1vi+pwsQuS64vVLpvs8A6gzO2rD0PCYR5SOQZdqe
Dc3GPOyh54ESjs3cFml8l1L1rSC5bo6L40VhlOJ2dXIcGWxjgpSJ47AgQeG0eHaqarC14PDJEtAY
GGasEYY5TyHZ5Cetj4btyiByGdY8jApFO6x9T8SCkxQwRy31ynEKjLLIUNxUOeWtcCGy7cSXxe8M
36bmfrnc4jk2pajXm4YKLrqowgGJwkCzMHFCmGWdkQOBQehbEe/WA6wxcMY4SDZ25KPTm6PZg43H
NHJ3hvtzS7Fg5QPACg0CkrKhQqpZ9huFZW1wBvcNZ+NgeB0gT8LqOXUvHYQ25wKGyZh8sDgNiiMO
3YvxJ4riOGMTQduXDYmDSMoBGmBCBaBUoKAGYBC7mDUm/VZlKYt7k3clw4GDo05N9vYG6Ey45nJz
o5ODex4yGhsv4MdeO6NMq2WkTEWJGBkQwCRk/eRkY0KBIeoxgRxMkyFcZDjRrsdxrOd3drZ3DJOj
ccwdwjJk7HHIjszt3uPdgWkPy8+HTqE7nx7t30KSLLjjxryc+nxC8rfz9XpRHp40FliRTh4cboW+
Le4I0b4gw5UrKLiRxUOUiqvfDSaL2fPA2kh2GoA4FkJjDEgJtsTjhxXn2WwM5EhZDgFFldXVeukk
9FrQnDNvbNFsVmuFlscCxeC5rygVSFkVRujVBgZKVq2llvQG8xQtbckgjboZHg3czwdiEZOhVGCD
noZDyzHI1R1fg5rQIdUijB9Eb3webME31foc87jswdb7qDfYmToa7BBtJRqSzB0bp7sEibiR2gev
09ueqiGpRJODJo1cdlplV9rVV684OwRKgxnvF+APJjxvAOe5FBESBtiPKPMC0LRI+Fq4keM56kDM
xNArW0M4KnFDai6ojMuSGayLESA8yLFtTMeX/BEExkSJEriBW8MxmsDidRi4sWobYGJsODYoWmwN
F5ldfRt08QCRR78/aIB6B7gS+hyOhMLa8K85D9MXhcOIGQLphdwY2NiEWIgi4NjyODczgwKr5PLx
JOg/GxkwUb88dYN+oUbmAoLYz74LOIZpcOx6c5mUyzrF2QLfk/3hWuF5iXmRkZjipoOMoah549/r
BDJ3FvVyDeXlVDIo5wqJ3G2x8DNZ7Xz0MK4zDYdf5fFw3sM7jSr1ZAeyB2TQARkTmlFgqIGKgBin
sh3sXuNbKLmaXBgHje9lvcYvhcmetwZ5LC2hd1WjxYWC2iRFapVsUJcYhpdJM5CotF5eu0BUMGEj
LUMAwWpkGESUjJfMtM3yq2uWmOWkiUCYyXXYxgFpJExkWDJoFrpJItfWp2K22ysXmoQAzZoAQBsz
fP+L6V24b7hHKb+DBghnZS7tZKckXrHeRFHn9vlO6POE7BmHS429VOpIwcZ/nzMy/zEIbAzoSZjI
O02bKnU30wDZTeC/YqpA/xfk5vxf6YXWuWH9LbucKFa9nRn9nfBk9eJJMazv4jIAsHTCQkJkwyQy
BCIjGKiCKwYoigiDEYjEREZBk8RPaxYpBY0UImQFEREEEEEREsy2wrCLAWAsjYYEMxVZGwRESMIA
IIramt/g/UAf81UPNtTWexoBAqARQ/JX5f76ROJyU1QJooFbtoJBSIJERYHruD43iXiV3rKUwsN9
pkwhHBFg2wFHw2AB6HrMgfjuLV/g2Fof2BtPxbrjzbC1CiP/LEB92RD7rw/SBFf8Go5FC/OZiFKS
ieFSr2sdfnPhCBtBYCwFgqJGMBjAIyCyASSKf15jIDlKgv8iM/qZAsuQojnwosgBKmgwP3j3huL3
GEfwCpoQP6mpbX7L28XG5ALQszCGlpShVM8gS4hGfnH+bB9FnQuO793/VvZ75LLQ/o3lqpL3aFy9
usl0Kv28iZd1Gg9UjCnO+/uWi6KbYGb2ySz2QE9tWn/Bn/tfYcNhs+YP8QeIN+M5GETO95YaH/oW
knx4of83ini806n+41Qv8Zma/NRoxqHjJbn9b10SySh8nv7I1p4NXftC0zkdxJ58TD1JrLnNUbo6
HxUWXu5O4ssljqvNvkhZP82D/sZr+1F/n87W90ant+X9vS4pJpGinQL6aVPcP/3AA5DPKaKF6oFP
R77DvlKkbPBMxuShgYPGOJeeONnoXtSyeuT/dPl750N6TzWNiYbE06Jlvg/1T4m9Oxyxmm1RVU8C
33op2gt/r4R6HCyjtaTffY95aHRJLIdixs1k6p6aHlMH+6TCc6GEMjWFE62sriMB9ZL5qk+3o7Oj
2m/RgluNVpRlA0vTOP9CwKjnymwM9uG9KET/RcvuohYmlahwSv7HvKZlMOEo5oIQqtBsSINKk63H
7U3xdiGL4LsE2ryPiTt5yFvPudZZJUvVJON0M4e/4RpL1zN+hrvmZ73OHtOhrS2BdrJF8Gdbw7po
ppCoWp225STXY4RsyNuiTlDsybsZMUhvzkuun+/F3OV6MBWJRdLtziTI5NnYnSF8w5yYZLiyS66Y
6vnPoRsi7DTcXE7aLz8VI/vr0GSU3CXAw2JBribMgUuKiksposbcSjnmgqtsEMbiRu2+mMxGc1A/
506cC1YFufMFFyFiGZuSQIMCECRkxx3c85VkpQ1utdIPajFpU3JNuyUzOvbq1zSXdcX/5fExhrJL
z382G/pZ6qlcTuJKh87R4W9N5fTtIscoG2XuP/VJ0Sf3UpShVc5RbHk/Q+h/eeJ/0/f8VkPsxFDu
8PFA+Pn4/IObQ+LnonsOaXUJjB6iuowkVO4sXl8i8mR9PjKGBcgfl7Oh/t/b/T9hxAAknZ+9V/ep
cg6Ah+m0tsyOMuD78KJ+AFiaWpccrVD+R+pD73UD9PvcTYlxgTmrV1ySSDRzNPXOYsoJS00GrV+P
k6hM5HBKkKRRukkKEl0FuW14SXpPGVKVm5+oTAuhsO3rAOJw7YGDz7fK0qVJUoYB/s4MA40zb8aq
3fk2v24UzREVEadyLnOclJzq4LOOl/PW22GUMaq7lVFTSbbsyH5CiZ424zObpc48bTL8T/VN3kjw
UjeFIxKRzoveH4f+5kh3TX/w/6eSl12T+JIShWpQz2BYdhQOJoMpg3lLT5nyLQ3KpNfd7LpJDwcl
y/V7FTkv5KdzJkZMM3VmyNI9kXR/GbJjFHZ1XUZuPXGP8p3zivYORvNtmrc0uY48XOzYw5r3uDn3
u9f11TVi0juMcKgzFMsCQXZESQQGL5Ba0i4zCwxIzBTAgXKQxAzsCpjGxdsUwXUjSg9wSGiTCw4z
HCimA8uFNSTDzKl5Av7APRP7U/7JmY5mTqFAgYmmkv/EzGQMEhgXly0D+7y2JBudMSRyKwLzQFNB
1oZC7f5j/nb1HqKCVivjZQM51uxh/WImpY7jYsanPXtG7DcqWDfw6SokfIIQJN/QOQQICezIB6cg
C71VD1UVdTqJbg8Pcbku4GDjIxZ4tHcvl2dSJkVMY1eNK8N6lNHjsX8Fnv749xo6Zcpg8Y0S9fid
pnG5uR3kzNQ4P1qveVkIjuAF39nqxJ28c3ToAKBUnV/U/OVBs93NdTH5IaI2gdObFigz6UIsbKBR
U1Gk1YUq/5QCy80BRInJ4h/gdqwaCfTcFBZEqWBGgkKBGglaFVIJUQhQI0F/7JltdBiC1PWfEtE0
dVFhlFp7QsM+cHSVhFUOZQu5wlaWTe8w7rlNZCxMKhSiqm9+IzY1jRP8XnItyz23aRdpHrUnM2DR
/tH8l90nxt5XHxUIgenHYrnbOYhaoIzV2BYY5SJsjeZrTcByP8dIHc82UNpPlRDhw5rs2BSJSSMY
IjKyl96p3B2xtCyjKrEAshd5uboZJfMQ/ZN5iEXcN+VQkMOAO5BILREvyeJ2utZPAnp/kfuyEsbM
xGdAGzb2nzl1u7qFC7yDZH/bo4Yy3lLruRPwfuG0jlDyPOM2UcBoCfE8+AN4on+gGQ+voaoJendq
SIIZj/zeOZ68Kz5Ohz/b931hP4v/hh/Ji/mboyXvBvxwrVqls2L833fV5AuHvvPA3PI+ZmcmDULY
liztAoe9D5Ag+4djTeau479InccS+488XhoaPPR3s7HIgg4yFfuRPDnfMJ7im9x4KAn4YhA1FH0H
ua1xxYua5cbNnZTt2dV+jF2uNmBccJcDSA2Q+YDBxu18EiMjnloo7TvR1OSjsaOGps1kN5djY3uT
k9Mhkelw5OEcMttN5dl944OnG+d+bcpqm7Drg/Cj0XvRIbofYO9yCwRQdgZ2qRJFtTFlzHnIhYoR
MDBsCJO8nipCB+GA2QcjyUeJBxntR0MjnVg10FJT2R4x7pxbMXf4aGrIWsdl3dKhjJ4LfpXHd1q3
eaalnpbmx3YvBzeB0Z59Y/o8pY9xrPnv1Ac6rshPaY9YdHB+B6afDOGwNifXuA5iLIO61qqLUKlR
tI5ljhTn8o6WzR9De+mMfzMT++LkIOhRsdQB+GjRPMNZmDoAwNwRP9/VLIylG1E16xK2PuP2hLn8
3omUk/br6S5PLGfFZ37/L9bpEQsZNxfUdzSkMz+YYavH6LZ99G/dY0zuUVqkLiiio2YJMLAMhGdj
2Ph3n2qOcthxAx+Z7Fj3931A+yhdSzUean771/e/DydDNsYOPHebm4UzxdFc+hc/VIm4xYVoDjKB
hexUzBqlQ4CYwUJ3hmTMQz0HaSbAqTMD7EEweaFjMdWuhg8wNaDGtgpTtxQlJcpPNIF5SkbixlGp
hTtYHMGeUwaZDEzHwEiXilAqDEnvHzPcEweSlw2+hC8vmXlAqK47O/JmU7ksgIMD1OInjYu5ctop
wcsjQqTn2Sz7v+tEkSORFA6+LIiajl6OFEV/mZGp3jGg79o6et6uzj3C5qP5nMfCQMWOazWPQ33v
eN+2kmbtLix6eC2vN3LGC7Rl84w68H2ebankio3hfoMjXoIXCiYhtAvsWeg8KMUiHNBn+mj9Ro4B
1awOHjsDqdSQeiJmhd2767r6vRh4xgIYpqOYpgE0EvgfGhyBnVxk3jMBtjuDi7QcdcSpyuvSpYGZ
LLvEDOCWxbpRmnFiSWQGBMGrHwgzDeMIHilcJ0LHqjnE0Lu2KP3WfxGLkPbHn+yRrqpH0/i4+QiJ
RxDwmsXd5XfKnE5i0H/qG8OF0RCe7S07I+ufww9Z3E0ct0qneGuv/bZLShiA8swL8tSWIxxoHQUD
LAIRkBZj1AIUAevyAyeqVYiCJEEBKSlFKaj9Ymj9p597dzTUl3x3KfmOjmNp9Rs/Ld8+U2uxa4Ps
tgwVVdqWOdvous3SylSozkYZAwSKG1N2YWpSjmMsxFtUTV0mgusDHMM6XUUQzLDFNWDxO8OfRztF
VquvkMzW/q5cueQ80hYgBdJuGbNUaS0o5Pk3PufY/R+bm5RzfOvj5HZ8Q2Yaabm++1e5+VamLidn
F+3RxTtwb2w4KTrh56/Y8kLmRkZFDuil10xw+JqZGV+gpUJBWrSiRGwHhbUgOQwC4FLDXkzyDQHS
IzJC5j9B5DVi8v8p6mJcXkjPMuIFlFWgL3gJ6Yx4mmSjtzwOZV7d5VFVPTJIl7i7O5EE0vg8JIZn
GYBq6clHHBz7hEPJ4X6jEwnXWWlpUyku7A2bm1gqJtgNuhqlkUpUAcO2U6GpeczE0LbDPJDG5h6H
cL2IfhiHqgf9PX7esghJh3XkGpYagZHM7ezt+A3ec/AOwvMIiopgV9xfUK9TMwTfr3BxNiczrPgR
cYdZoLplONqYHho4MPLuTkiL/b2uHdA4uNQU0RNQqyN+UMgH07QZZOGQsgPUH6RX15DjA1IQX0Yg
4ZHfF2YUOOonu0E0CdBU+MD1RToITOcx0R9WUsrpmULaRPn8lfnb7iOHGJY+ZcvkTF17j7oIQKDK
aWQdh4GXmOLHI7jzYsTFHHeJzXwRBOofYFwG+OskkVhqXyut/XrLYeiln9kcheWN8sLBqAIlxd6z
xGJ4oQoLEaLCgkQoMWRULJSwqSx909nGRPZH9R+dHyik6eUtOscH6Mh+vWoxZpksy8D+qj4B6DD+
Z9keFx7nwZSfck/+5+PcdhPkXaHtPMV/B6yhcJXri6Zqj+ceU+rvn6tH1sxz563e7RZi3vbwWbQo
IXRA3ghKKI6MCediUTYpXyugKOwX8vwPlG4llwtM0bQ0NztxBfV+RN3IQ96L666Q4xEAtAYMIxHC
KrJY7onuQKK8qhYXgOHxtoFlDTF9KxRRRAgeQ56Q8rautu145qiQnXfDbCJ7O0bTAb8OOljeiJLR
rmLy7K6wtiObQsmFvJyQNCU5FctGq0baCzzffjmBfs6S8RmN9+D2PYN+js9d9UzLtYHkycgLiPBl
wgbCEmEMkhZ2y2pgtYsmJM8oTOUkSsv1/HX8rN0YeGZ8N5bG9aMShpCl/fo/6YN9MylnpyFFT7hb
MEzGx3kBi95IUyFHOzCoBZHEYDDFCLzY1PpzjI3LA7IyLyi8FS8wGMTMkVL05Gkx7EdShe49AePr
Utq8OU9+KLRvTZzu3sis+znrWMGVyv8Jb3eKV9NWleFxscxWhlhfWoqWyzcPle23cvc9KM3w/atd
r0cscZU6cwCmJLcMkQ5qIODFhzhkO2gI3DXIuQMlCMcBAedyHsCZUnrNHBjwOxGbyZcZIcBkS8EQ
mYhYrbQvYeUNCRictElkWvPkLaorCmBqUOwypEYbA0FL+pcES6mRh6FHB3PZx6yTZT2KoRVC3mDr
ikgJkkRWFZCLFIxYILFItBEnvyZwnwmiZLkUiRsEmqOeWIS/BnO53qd4Yk0mB09BcF2ztM0Yw7jL
j+6IQikbG+d0LcqtKISDx1FVcfoTgYzTu12Gs4HJsOmadTgZChu6+8FC8gb5okDLap2+CIHz9j5c
jkh0TpX7FwiL2iXQTMiHZ2lwn6h5970tp+dQfKd58sXHJeTLlUso9FBmjww02tcmvYJYSM48XCQH
xjiBR2PJd56nuyITFZOD5EImiSTI8R5A9DRDwVGHuqHWx5IwMeZEh9nV3ud+VBysq8+npYUodqFQ
C72nlxunzv7rtffj9u/cHGOJ7jx/E1Pj5KeTvE5HI3u509u3sWYJKm2bHC5oweLteA1QcegeYTmA
cBAclk9wHcHiAYKIOBOWd3XHrbKOusndX9O8Au7MFbrpmsnd3WMigBqGFerPrHOhKly1u/EAuERL
0QdyvZw6xeAdrw5xjIIZSlEPONFJTG0avRv6MBSzHBT0y2MK5boNEYhzCBayEgxPPt7J07q3J2j+
wcQKBkgqeYGxv0njefZO3KCatR95NLMALLSSQpDgpsANGqqO/EXn7tFMrcVxBRCiuGT0gWD3FfVj
t4btubsOxUOK1RVFTLlST7SpO0lYwMK5bxfVUUZ2JMtD6Yv64ZgswzGG+gbVdShIWY4ownyiDg/v
qewLONzfHqn9+uzj9Bbxn9RoCujW0aK5Q0gEF/gRIXWajntxZ5rLHJbukh70n3TvlD7uZAuHqKr1
TocUAMXpeJ5BREd3HQVlMNMP2RKQFS1QlZ1nMLRuEXFsw0sruqGphnEsuypKk0Uk5TuOxcKOyCGv
oPdXbkvRAK+oPIDWnkpEMelIxVjjcRI+b+W1JJ3/N2DZ8+s6QVIqopQjFkUn8qFNvCbvcArYAe4P
ee09oYYwvPY7yrifyUpCUVW+5PysnJECdwSC4+p7DhuaEzAx7vXq2jidNWB33N7a+uMSZbuLJqu5
s2a+5E8I3Z4MMTEpvWXtTItfOJ/HX6xxmruaOLyBy1BwMKXl8Xj3GYOIQLGxkdChEwJERhc6Ne7i
vZuSXLmUbUVSMmV7cu/TBo7murojACYJnpiSMC6hAyMTQwJPHZnZnoPLjVMLGi250473HgXV/Hke
6Jq3urYuZN1x1YF7BvjmucGLR2MGS8zpi5dfT6ercdo4G43TYqC2JDDE7GIYm5m+lxInAhjiy1GC
Jl50FWmJJxcRRERB8AcODHgVgO59ipi4Fkbd869FVLLyZfMbMlPYBb4oOChpDnTsxngTcVT7fd8D
ilCeQNEP/1T5KocTQD61UKKWICxSpfT9JFHows/bKnQfyYjzelSqraZveitFZh4jH7KMbxPm9Vqj
7naYPeauKnfEdwxc0zjtxNUDYATXhRLjrA8i31BuH3IySbqz/Rv/u+XoxxRxD0jzOoooUqPOy0Ww
xj3FPTxD5HDM+J4RMYU8SpaUKUIqoqEwWiPnIn5HtPe0j2eAe1MlUwMqCZeZcpYgB3SQa03Gglsg
+xNA+EfiNe9f9bxjN0bqVqhYKiSS1kt35xtdgi9ylyV4R1KYY73wlvwep4aEyxD87ax7wGm4+LzB
4CmABcoaMqVoEJOBSan2ClT5w4PYFoDwTSCzWbmDDuMXT2IdRcIt7JOseBPqJ5RHP7f5O5VT1Nj6
Hp9R6Y6CgeHADcPIH8E8+Pp5ZiRZDRQuA2VCiC5cZgg+a0XSxmsNRNZox0ULNDSwiMsrStBecLQC
r3kXqDno6AO1R9KfKRidEqdnmZhsKqJwnFJJG52HrfC7YBiSwqLCAn4pEpiaUPVO1Lh5wap2GxMo
Y3ReOJIhcEU+yRiBIyQiBEZBEnH2vT4kXpGZPqn4GKKswOEIyGqXYll9faNjquSPT8vTQ0kmdTBw
qKRRVRhPSfaOZ4/Y3H8eoXtxG6liqmb47l0new8ZfRXU2n2+0fIMI8o5+s/E8fnG3hw07bOoyMdS
cPhY2/VBGeom0WH7yHyi8NAnqabU976W5MvUmZOkMDGGA+XLiazryX1mgTyc4/vRhGQp5ZuwvSX1
r08JDdadi6RkvcZ8E9X7ORVEoVKSRGpPJ65DT34hUnc/FLujl0W8hzJeXD/AVI3pj0Dt9f8pGEkf
5w+uL9c2oHOADm7j7Q7M0cxxahoCd/vZnlPiZmUA7Yv4lPd7IbQ8FIRVKilgG9KAXnVOm8uHMnXl
uPUkQHVn8d9e2ezA8LennDgamoslLrBsKsD+QKSID3bTnLp9nW2Kb3+Om8e3YxZNoJP5LbnDNp89
/C/k71ZMu9nfNFQxB8nPsHj45Z6Tu96T5++J8IkUcKRAIigTFBeNvu3P9Xjo95FRp9U0PiwyKlYD
vV87uO7+gfyDIMvQfuZEncqqRShGKoxOdgHabwmZNAc4a93daJ3XngnsL1n1UGCgxGIIjEZERURR
ki4eJow8cSnbZpMiIhovOsjbOw6V8Rc7nTfNrFMWSo+mwoFhZ2/mDgBCJ26lODLjQHo4DWSdU3qq
VIfqen3HiaOj5xwHp08lpH4A15kFN+hKnvOkL23rAIn5LUHrbUz/Y6U1i+8/q+J8HdPUyiZj4x4+
uJ1iocd3uH3fsZDHaPAvLvc96vqlLKsUsqwpYVJaR9jhFif4bxdNfz7jUUHQ8sfrzmZ9BoDlgmMO
7Glx2QyxAJEjEIkSdSDRjIbdx949RJj5xl8I+cXmZee+z2ouPZT6AKki3Nb+eky9GguP8ecmlR9J
FI99a9twlyJ8SHjLYff0DvfMO43cT8BJ/Gke83DjF0dkZfr4SGpx6z2x5BviT5Sw6iYD1T8PPX8x
OUzxnUucXuDZrCPjM4RAab2GB/haSPf59j7jZMO4kCKRETMQIMF5irKWLVBL4DvAioLjUlAIC3QL
gL/0j5Pa9/IYnNBOEokyGYfJHagm1MwBiTRpop7B62gAe+LIvdrNpAN6LQ1XIqWi0HJ3nuLc/dfb
ylyz/ZK1i6dPY+F/rG+ZNamylUrkPctYONMnsL10O4Mq0FiRVCAGolIwhAYBpRFpJDE8qvS5EinP
+3QLxgvr04jrIp+t2Q6ubFwpUkPUmcFA8byCXyQgQIQJEMYbsyRpSMX15fuXpRck5a+V3rB0j0Xg
g4sklv7b44+viYSrOIUi57CjDztBdQ6AKHu7w+M+TvhyknV5Xt8PnmTCGtWVVmW8fQQtLErEih6L
Li2UBeh3fbv8bApmWEMySUb0z+pT0+oOd6A9+CaE5Fpb1RQZEoYlTeH+H/7h74jWJkk9kaJ0LT5h
gXx5dJDKMg5nnn2M9vSvd+Hvutll01HFiP23vIL+IsZ0Slk171iOoYG954BqAT64oDIJF6T3I5Wj
qil/zOFfsN8tHEfsYgnZDgHuC6CICgft/EeHv9PqfycI5JTg9d8UIpmoettsiyS5g/XKPlF+mECl
o/TZ9Frnn9ABIfProqHkHjAyQ5BqfzCmLMKKM0D8Pr+zmHn2fD3UtradbcBQ+UZZJA80296eQqyy
yHpq70+rWumeC0iembSF6UHpjj5xnEzL9MbZP3DXKoV6+owAcyY0TIHgE+F4DiNNh6ndV63yh4SF
d8kkXDdHNVYuAlb4di0+3EOEI11jm5TPdunqF8fyhp4I/cfpY/iOYd4HTyJ9RPiH2LbKlZ8IwPIB
UppoP4xQWZ4IXj/QxVhL6fSXWY4ORAOKeWkzkM52+nznrcMLU76NLmpVowYNzEM0zWsg6hq6pgai
aHD0bF0w+oUs30G4GGpYoWzRkxJvrbuNibN0ZiJFPo31U1teJnOLapGTrY0Gg3GJVN8BSEs6ZnBC
E5QGIlKUJQxIqFQcQEW5YJH5qFzy9dodmMEPJ+Xd3pVMR4d5VJQNYB9oIfDLhpIEgZlUJnYRoAUW
Mvq1ocupVCzZblD+a9Lxofm0IuaVVLWkKFpJrPVdHLNoGDFTCwriH6BmncdkGgEiUpbWVSnstsI2
FpJQd6vTm4Ln44yUvvPXeFQDNychkCBo0Eyf5tRBgRSKSKAUpE2SWsqowRFj0D18fd8A1mt6NScN
uPGbzC89iR8PLAaYUjhGV1x4kmUc0+Ay0khrA9gVXEaU6zE6a+8k93qqeAEQ5SRef9fU3chOE4+A
lj0yp1qwd3fKuzVKV52pf6YeIppgiM3LUBEKy1KSFZ64GEsy2QkHhQnMzUHRKaLgFAIooJK/tjtz
TthrHLR6GkEwV1lFm5F0ZWHz+D+yPrExDw+658CWkKQ7KaV4euf57mHk4YSYhsMxP1M/mZMHnUUi
N4QcMgrU++576fpGDzxjrG5+Rh5x54x3o9B87uJJsJrLR31O05HzS886kcfT8dy+GMKkiilTGWZ3
JIc1xs+s9Fosirr/qo7CnP//P6QHkbjecalKKqKpE+L2z3R+ehJ8o1TiG4eZ+pdwcdoFtraBxdYa
tO5xYH6ira85aAVREHzxAFFCttJI9ZRR5cjCJBjIyCwYsjJGZu+FHrihIbAYgXhFAeFA1RxPQ25A
CwHKtkIQLRhVbVIj19xmv1X7CbkgHPA8nmiJIQoEgBhGnOBUf+p6kX0IlxkcsExRCpDQSsn7aBbV
pbVhBaD+dEKAC7D13D5WF0Kfu72xEOlDvPS6k7SHTlXkUcVBoPSywqSzmygDxA4GFPLtMV5R4zGQ
w8CnKMjcw7T51WPkH7h4J3JqTTr3Taxptc8hGxSgDlvdN+iy0z5TBVtTW/wL0uwxewOgH2JG123v
aAay0OdMaEejrCKFrH6R7f7no4eV+iasFWYurSML7JYS6F/5SO6RLgwkCdR6zCI9TfhO9zB3nj7w
MvM5zEU0tOgsPT0nzAI2KoUVRiMU9oIcA9IajpTdgBlVU5w7FDQxBdBaaSWGkVsznArQhIaf8q1A
MaH7fAB0BwHm5R7Y9IemPZHsN35NI5vnH0HqjwXwwnjziLXu3f4FuwvwZsEpvxOnYdV7tDucYDje
nYGTvh9IuiP2o/pVgWlV5AEDrreGtHoqb+NnAPuYT1i70RI+J9/jgNA4JjaDxIq8FDAPh4piUbuG
QB0gd4cjQb0+QnU9cYHxxwHmP5HcHT6JGZzkPuduNlYhzbwPMN/xU1+LiyZDa7znAPFTboDp+h0l
FEiR31JC6OWI7BxE9cRlHDn6TL0O0id7pKVKeg+zif1lr10TWN654mq9PRcEsjQSLBSIILBigICI
jWUZFKyjaFiCqjoTlDUsqXxalD7xf8wvJ9fK3cfGFknRTvkOhN4V5N+pHWHopq3XupIa1CI0Hsy6
2qIYQXRYJMJLvzIfPAMHpmP3zJ7x1+Co3cf2tAwO3P3DaeQ5GY7w6M1YZD3tEyJKXatkYAX9wcJi
dPkX6vewkcqTHmc2YheVNSF7o9DqxkCESRxl6YoUEBgMVRsDYSKCnPsDWHy+6cPraP4gDgwASt+b
f8OzgUtCgSkoegDaAZVCqqkfeZxOXrKL2EQA0rEkUO8KKee2hZvSGqj/M1BbsTsvS6kBbeAXU7E5
PWGIKcg6q3942+tolAQibQm9dSMVJYVP8+QsqfMS9xRcOOXGR/rqSGEXDz3QfpD8HJ7PDvRrG1QW
fCTwahnegBvK/UgmixNGnoA1uojtRJ+ouSiIdzJpkPEw8kOYSJvoQEdDH1OZAKrFZcF0qJWFbon+
k7iyM+sa5o+0rrkfOP3h7eG/clhYM7l1U2LwXKHpF2zHNfCezR1NqI0Uqboe7NGT4Ifs77LaFqXh
S2UZZdru1PgnJJgjbGImmTFv7pJbTVAf2E3CNFmJg1pvy279jc3LZFDRaLFF4Fkngn7iwdn52xHC
IBCjCJOHoBM3ulVH1lkwZ2M5obba42y5ZbqSLv1iYbbC7CHiY+wze2P3H272uHLn13RtKuV0C54r
sA3nRp5Bj6+ySXO6UpL++l9bsT3h24akx9UuDboSb+756dOb2zGHJAp7ENdeg6GSG6b/BDU6gi2Y
pbTRAqP87XB+Fp7r0C0Zfilfd9dMYaYef4WDpew8/jnRGeOeZCKoKCxSAoKCikiMgsiQhIGpVC94
NlP2wPamvCPRY66Ltna1rcYyQHn8dLkOEkhrNZVTzPkfyALArILFiiiiyEUUUWCjIrISIEleCZcW
wstQtDM+/eH2XAUkGOcVPjCNx3F1O8qSQyqlKUoopQiInooUEEES0paFBEtKKggiIiIiWlLSlpS/
FNpsAnl6z0e/fvRxUh4mglJEG1VKSim5dG+xCFlLBKhYJUqgmtMvf+WneVo9vk3OY1xVo+yEGDTQ
GsrU2pSizUWtazb0xoAX23oZAMEhKwA0MgPSflQoZ2b65AzRxmJNoAtTrS+6iBtCCWK2EIiWBUi+
8vRJ7v7iSF6O7Th8CHqOg+HhhHj9zGMk/AY7Pr2Tr7ujtRuBwvEjiiqktzOjgr8p3FGioV9jR3NW
XMuWdNM0LLS6EPcG0RolyVIg1OLemiZjo2Woszspg3H+yNbuxqnHncWZwJFDU4lKLCriwgossF7z
C8uPvHm0LqfLkW4AGSACF7uUywthWlpLN1nVyMRcKiooo0RCAQM4MgQW3FbDbAEgFcPb4hrlGbRk
W3utpdIh5uAg+5+4uHpC4c4eezNqBOrqynocbUlWDRmPRpMJJDHKg4ridUkhgvDgnYwy2O9UNCVT
6vfHfw8WCmZldpTcJaFRU5R+3XGTjNT8yJXPN8xOLJEwUSJyNgBnWCyREVUTcf2ilpM5zKqS4w+9
/xHa0DcsICJDxPwX9IpjgbQ58cDcFEQPLMFrgSysNmeJgt/vEHa4KhSx5Xi5BqKwwC4JzlSROLXi
Uc/iO2Est33l1XqaRMLpLMNOSS9UhkmQOjxJpJ9b2yhIGnl5zfmZ8qF2Cp3kghODPfHZD1uwE4hl
YwYaIduc8HDVMe7GvD/Th9w5Sg4zwU6ek8WVff6TRds1p2erzamQ1ZGxaNRDjattKUK0are6QWgl
E1AFnql8AgHahr8951gcNmmAEIBIOyJINGJIJW/n4Au9gvunXpfxOMk6ISf9bcEw3SSZ5BwMo/jD
OYnKMGkDPuC+rEDKsV3BmoLchbnFMT7ofzi59yc7OXZMRs0eCYY+6HcxpiV7faGWVHyQtDIoTnIF
3wT5lMap7o+G8PabdmAH0iOw8sFFYSKWskS1DtmJ7x9C56fweUR3tr94nItpF5YbROsiZeMh6/7H
qOR6lp57os/BaMK875jO5/30fGaOToXvXE3AdvZ0KH3sDQw7rw+3gAWG4yDqw9Ca7D5MEgMkIkCk
efODkTuNQHaoXKa/CJ0ENaaBMgehPeBxTMh6f14qCO0VdTZYlfMaHkeMbPjCNvIzEh7qMN0E/5d4
tHBHRv+qPXsi0vmEirqcoxi31VgJisb95Owf1GsbjmaHRN5Pdp0kjqkZufOb440VQmHNA7b/j+oB
79x13cJh5AlBMNC8hmz4hKkoSj5PaWXBUkolGTHd/bdovHYHBMz7gPANoIdqjrsyH1BcU0D4tReM
R5oik6zM/ENIppoSCok4Pi7P5RSfOjwq3ttHU3vOPlHSN24pVllVG+3p+DxO3+Rir129ATUtylVJ
X9RukvJzN2o5jzlwYKP4PuH4Xw9g8W108+Tf3ckBb0s/bCo90b36u9H1N8eSbT1dT2z28XP9zxmw
4Hmfk5vcHievidRunaeUhdq8j1RhyPc31VU3DvosXHieLi+DyXxz3dXHIet2aPrhI4RoNYYZw2Bc
nMHEMyhb0r85xSIdUkBkS319ahlTmTeHANRxxxwn6P79/oC67alQ2BZqn6onDWHJNjYHQBHxYj0G
mg5CI/OGd4N9QfsecbRunrH7C5lHsjyGp7KkMPhN0eL6NR5i9Jkn0+Z9CHuHy/LsPPCRNo3mR99o
+k3dytWWljtKpgwdfE+Eif5jSIud8e9kfXWRx8ufq+AepeG6aDvKE4JHiW6YbxuT8neg8+xE1GtC
tFuSDlTamdyIOMwTH7OB7BVzZUkl6MAzc308ZxmZm9cveuEaxjbtDmLQihs8h+rX0H4hHpOuvqHl
+jynGZRrG6IoJHsinIfE4el2VN3uD1d52cN7avPCUwaBQsRoArZx8ffPRrKsZWRVYqzd04YXkZJJ
QefWaZQnGPMPYfs67DxPM+RyORcQ/mnqkeaVE/keDT0R6Y6+cif5Pf68ubzxj4rz2j4jzbHynm43
xsMtZD4DEYLREcDHDnHnDH36Me5IiPh6hOKc+p4wOw4e48V0ax8Zu6HYcB3AYk0JVNiRuDXaVOxO
zuC99G/m5JVBThX2+lx85xMI9bqHxb83wRdgFxU9O+MTYco7ol+z2u+y8O5memM56fr8J9kfh+/6
y7/atZQWGaL+f9f/4u5IpwoSE6/7HCA=
--===============1831752755==--