Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rn9uY-00Bshz-Hv for pgsql-hackers@arkaria.postgresql.org; Thu, 21 Mar 2024 04:20:15 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rn9uW-00A20e-Kn for pgsql-hackers@arkaria.postgresql.org; Thu, 21 Mar 2024 04:20:13 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rn9uU-00A20V-Fm for pgsql-hackers@lists.postgresql.org; Thu, 21 Mar 2024 04:20:12 +0000 Received: from fout3-smtp.messagingengine.com ([103.168.172.146]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rn9uP-005bXf-5A for pgsql-hackers@lists.postgresql.org; Thu, 21 Mar 2024 04:20:09 +0000 Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailfout.nyi.internal (Postfix) with ESMTP id 635651380125; Thu, 21 Mar 2024 00:20:03 -0400 (EDT) Received: from imap49 ([10.202.2.99]) by compute2.internal (MEProxy); Thu, 21 Mar 2024 00:20:03 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=eulerto.com; h= cc:cc:content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm3; t=1710994803; x=1711081203; bh=BW28d9iZdZ AcGn3tFy3VErTrldg10wJuf6SaUbHR11U=; b=cWuzYalCDQq1rflAcyz54BapVQ mNoPcK60qkauCQGolLNVO1a+nUwzFviIbZxMLaPcbhhu6F9RyyuvM4t0eSGz9Dy5 Iq/Zo5Le0bX/wwO7KGUtjlVh1tyrARDP7HDRrjmaNFy7sJlopqY/ilUtaRMCHpt4 fidS76zjpzkd8UqzF9yMvHnPkR2lwjDWfoBwVT9/GfmOJVMlydPl6eoyXKaGrb3f gwurEoxa0b5pUkFsi6XoiZb6xCRdw3163L/OpgyILKZCcx1jLhYCqqXHt+8/YvWH JGXh38FCPZ1dy9W72umITh7rxXq7GjQ3P0LL4qkLjIXc0LYkw9OtVhj0HqVw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm2; t=1710994803; x=1711081203; bh=BW28d9iZdZAcGn3tFy3VErTrldg1 0wJuf6SaUbHR11U=; b=qNPg/5FEiwITsZKFH7deYfez09jKFPk8//UrdzHsQNff 7Ekg/GWgBcmypMtr0PXLsUBLh7qdaD7fMJ0Sig5qvb/XR4cMOrR5PN/H0fVh4iGi iWMqwQR87I751GZcGcNPkwOc4XDD2PYi37crjR2MwLdqG3lxF6JPUpeaE3yxMcEA qk1CZ3v9g2erasrTZIyQUq11/zUU0TPYUEvmhVXTsr2UyZgoH29fLbk58lJyiuN3 kOgZMS68CZnZozvuJD7jA+0WCNO8S/xt5JrZC+c6oXJx4EsdEEC4Glfq25yp/fbm 2Y2FG49wP0Cuh5HulJg3kbBGq8ZxJTKW46LBMQLnVw== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvledrleehgdeilecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefofgggkfgjfhffhffvvefutgesmhdtreerreertdenucfhrhhomhepfdfguhhl vghrucfvrghvvghirhgrfdcuoegvuhhlvghrsegvuhhlvghrthhordgtohhmqeenucggtf frrghtthgvrhhnpeeiheeuledvvdejteejieduteefgefhgfeftdeggfekhefgueetieek veduieetgfenucffohhmrghinhepphhoshhtghhrvghsqhhlrdhorhhgpdgvnhhtvghrph hrihhsvggusgdrtghomhenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgr ihhlfhhrohhmpegvuhhlvghrsegvuhhlvghrthhordgtohhm X-ME-Proxy: Feedback-ID: i0c21471d:Fastmail Received: by mailuser.nyi.internal (Postfix, from userid 501) id A9E4515A0092; Thu, 21 Mar 2024 00:20:02 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface User-Agent: Cyrus-JMAP/3.11.0-alpha0-332-gdeb4194079-fm-20240319.002-gdeb41940 MIME-Version: 1.0 Message-Id: In-Reply-To: <7a970912-0b77-4942-84f7-2c9ca0bc05a5@eisentraut.org> References: <9a9c7e65-c47b-4400-a63e-ac6169c0860e@app.fastmail.com> <40595e73-c7e1-463a-b8be-49792e870007@app.fastmail.com> <6423dfeb-a729-45d3-b71e-7bf1b3adb0c9@enterprisedb.com> <2f0b73f3-e7c0-4e95-9712-1993442a6b64@app.fastmail.com> <34637e7f-0330-420d-8f45-1d022962d2fe@app.fastmail.com> <7a970912-0b77-4942-84f7-2c9ca0bc05a5@eisentraut.org> Date: Thu, 21 Mar 2024 01:19:10 -0300 From: "Euler Taveira" To: "Peter Eisentraut" , "Amit Kapila" Cc: "Shlok Kyal" , "kuroda.hayato@fujitsu.com" , "Tomas Vondra" , "pgsql-hackers@lists.postgresql.org" , "Michael Paquier" , "Andres Freund" , "Ashutosh Bapat" , =?UTF-8?Q?Fabr=C3=ADzio_de_Royes_Mello?= , "vignesh C" Subject: Re: speed up a logical replica setup Content-Type: multipart/mixed; boundary=b0cc903187b6440280b0a03b3c32b134 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --b0cc903187b6440280b0a03b3c32b134 Content-Type: multipart/alternative; boundary=c993af6435be414eb234ff69196c5338 --c993af6435be414eb234ff69196c5338 Content-Type: text/plain On Mon, Mar 18, 2024, at 10:52 AM, Peter Eisentraut wrote: > On 16.03.24 16:42, Euler Taveira wrote: > > I'm attaching a new version (v30) that adds: > > I have some review comments and attached a patch with some smaller > fixups (mainly message wording and avoid fixed-size string buffers). Thanks for your review. I'm attaching a new version (v32) that includes your fixups, merges the v30-0002 into the main patch [1], addresses Hayato's review[2], your reviews [3][4], and fixes the query for set_replication_progress() [5]. > * doc/src/sgml/ref/pg_createsubscriber.sgml > > I would remove the "How It Works" section. This is not relevant to > users, and it is very detailed and will require updating whenever the > implementation changes. It could be a source code comment instead. It uses the same structure as pg_rewind that also describes how it works internally. I included a separate patch that completely removes the section. > * src/bin/pg_basebackup/pg_createsubscriber.c > > I think the connection string handling is not robust against funny > characters, like spaces, in database names etc. get_base_conninfo() uses PQconninfoParse to parse the connection string. I expect PQconnectdb to provide a suitable error message in this case. Even if it builds keywords and values arrays, it is also susceptible to the same issue, no? > Most SQL commands need to be amended for proper identifier or string > literal quoting and/or escaping. I completely forgot about this detail when I added the new options in v30. It is fixed now. I also changed the tests to exercise it. > In check_subscriber(): All these permissions checks seem problematic > to me. We shouldn't reimplement our own copy of the server's > permission checks. The server can check the permissions. And if the > permission checking in the server ever changes, then we have > inconsistencies to take care of. Also, the error messages "permission > denied" are inappropriate, because we are not doing the actual thing. > Maybe we want to do a dry-run for the benefit of the user, but then we > should do the actual thing, like try to create a replication slot, or > whatever. But I would rather just remove all this, it seems too > problematic. The main goal of the check_* functions are to minimize error during execution. I removed the permission checks. The GUC checks were kept. > In main(): The first check if the standby is running is problematic. > I think it would be better to require that the standby is initially > shut down. Consider, the standby might be running under systemd. > This tool will try to stop it, systemd will try to restart it. Let's > avoid these kinds of battles. It's also safer if we don't try to > touch running servers. That's a good point. I hadn't found an excuse to simplify this but you provided one. :) There was a worry about ignoring some command-line options that changes GUCs if the server was started. There was also an ugly case for dry run mode that has to start the server (if it was running) at the end. Both cases are no longer issues. The current code provides a suitable error if the target server is running. > The -p option (--subscriber-port) doesn't seem to do anything. In my > testing, it always uses the compiled-in default port. It works for me. See this snippet from the regression tests. The port (50945) is used by pg_ctl. # Running: pg_createsubscriber --verbose --verbose --pgdata /c/pg_createsubscriber/src/bin/pg_basebackup/tmp_check/t_040_pg_createsubscriber_node_s_data/pgdata --publisher-server port=50943 host=/tmp/qpngb0bPKo dbname='pg1' --socket-directory /tmp/qpngb0bPKo --subscriber-port 50945 --database pg1 --database pg2 pg_createsubscriber: validating connection string on publisher . . pg_createsubscriber: pg_ctl command is: "/c/pg_createsubscriber/tmp_install/c/pg_createsubscriber/bin/pg_ctl" start -D "/c/pg_createsubscriber/src/bin/pg_basebackup/tmp_check/t_040_pg_createsubscriber_node_s_data/pgdata" -s -o "-p 50945" -o "-c listen_addresses='' -c unix_socket_permissions=0700 -c unix_socket_directories='/tmp/qpngb0bPKo'" 2024-03-20 18:15:24.517 -03 [105195] LOG: starting PostgreSQL 17devel on x86_64-pc-linux-gnu, compiled by gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit 2024-03-20 18:15:24.517 -03 [105195] LOG: listening on Unix socket "/tmp/qpngb0bPKo/.s.PGSQL.50945" > Printing all the server log lines to the terminal doesn't seem very > user-friendly. Not sure what to do about that, short of keeping a > pg_upgrade-style directory of log files. But it's ugly. I removed the previous implementation that creates a new directory and stores the log file there. I don't like the pg_upgrade-style directory because (a) it stores part of the server log files in another place and (b) it is another directory to ignore if your tool handles the data directory (like a backup tool). My last test said it prints 35 server log lines. I expect that the user redirects the output to a file so he/she can inspect it later if required. [1] https://www.postgresql.org/message-id/34637e7f-0330-420d-8f45-1d022962d2fe%40app.fastmail.com [2] https://www.postgresql.org/message-id/TYCPR01MB12077E2ACB82680CD7BAA22F9F52D2%40TYCPR01MB12077.jpnprd01.prod.outlook.com [3] https://www.postgresql.org/message-id/085203c4-580d-4c50-90e3-e47249e14585%40eisentraut.org [4] https://www.postgresql.org/message-id/7a970912-0b77-4942-84f7-2c9ca0bc05a5%40eisentraut.org [5] https://www.postgresql.org/message-id/CALDaNm053p5Drh9%2B%3DVvkH0Zf_3xoLB%2Bxw8RsNZjEwhc5xc_W%3DQ%40mail.gmail.com -- Euler Taveira EDB https://www.enterprisedb.com/ --c993af6435be414eb234ff69196c5338 Content-Type: text/html Content-Transfer-Encoding: quoted-printable
On Mon, Mar 18,= 2024, at 10:52 AM, Peter Eisentraut wrote:
On 16.03.24 16:42, Euler Taveira wrote:=
> I'm attaching a new version (v30) that adds:

I have some review comments and attached a patch w= ith some smaller 
fixups (mainly message wording and = avoid fixed-size string buffers).

<= div>Thanks for your review. I'm attaching a new version (v32) that inclu= des your
fixups, merges the v30-0002 into the main patch [= 1], addresses Hayato's review[2],
your reviews [3][4], and= fixes the query for set_replication_progress() [5].

<= /div>
* doc/src/sgml/= ref/pg_createsubscriber.sgml

I would remove= the "How It Works" section.  This is not relevant to
users, and it is very detailed and will require updating whenever the
implementation changes.  It could be a source code com= ment instead.

It uses the same= structure as pg_rewind that also describes how it works
i= nternally. I included a separate patch that completely removes the secti= on.

* src/bin/pg_basebackup/pg_createsubscriber.c

=
I think the connection string handling is not robust against = funny
characters, like spaces, in database names etc.
<= /div>

get_base_conninfo() uses PQconninf= oParse to parse the connection string. I
expect PQconnectd= b to provide a suitable error message in this case. Even if it
=
builds keywords and values arrays, it is also susceptible to the sa= me issue, no?

Most SQL commands need to be amended for proper identi= fier or string
literal quoting and/or escaping.
<= /blockquote>

I completely forgot about this detail wh= en I added the new options in v30. It is
fixed now. I also= changed the tests to exercise it.

In check_subscriber(): All these = permissions checks seem problematic
to me.  We should= n't reimplement our own copy of the server's
permission ch= ecks.  The server can check the permissions.  And if the
permission checking in the server ever changes, then we have
inconsistencies to take care of.  Also, the error messa= ges "permission
denied" are inappropriate, because we are = not doing the actual thing.
Maybe we want to do a dry-run = for the benefit of the user, but then we
should do the act= ual thing, like try to create a replication slot, or
whate= ver.  But I would rather just remove all this, it seems too
problematic.

The main g= oal of the check_* functions are to minimize error during execution.
=
I removed the permission checks. The GUC checks were kept.

In main(): The first check if the standby is running is problematic.
I think it would be better to require that the standby is i= nitially
shut down.  Consider, the standby might be r= unning under systemd.
This tool will try to stop it, syste= md will try to restart it.  Let's
avoid these kinds o= f battles.  It's also safer if we don't try to
touch = running servers.

That's a good= point. I hadn't found an excuse to simplify this but you provided
one. :) There was a worry about ignoring some command-line opti= ons that changes
GUCs if the server was started. There was= also an ugly case for dry run mode
that has to start the = server (if it was running) at the end. Both cases are no
l= onger issues. The current code provides a suitable error if the target s= erver
is running.

The -p option (--subscriber-port) do= esn't seem to do anything.  In my
testing, it always = uses the compiled-in default port.

=
It works for me. See this snippet from the regression tests. The po= rt (50945) is
used by pg_ctl.

# Running: pg_createsubscriber --verbose --verbose --pgdata /c/pg_creat= esubscriber/src/bin/pg_basebackup/tmp_check/t_040_pg_createsubscriber_no= de_s_data/pgdata --publisher-server port=3D50943 host=3D/tmp/qpngb0bPKo = dbname=3D'pg1' --socket-directory /tmp/qpngb0bPKo --subscriber-port 5094= 5 --database pg1 --database pg2
pg_createsubscriber: valid= ating connection string on publisher
.
.
=
pg_createsubscriber: pg_ctl command is: "/c/pg_createsubscrib= er/tmp_install/c/pg_createsubscriber/bin/pg_ctl" start -D "/c/pg_creates= ubscriber/src/bin/pg_basebackup/tmp_check/t_040_pg_createsubscriber_node= _s_data/pgdata" -s -o "-p 50945" -o "-c listen_addresses=3D'' -c unix_so= cket_permissions=3D0700 -c unix_socket_directories=3D'/tmp/qpngb0bPKo'"<= br>
2024-03-20 18:15:24.517 -03 [105195] LOG:  starting P= ostgreSQL 17devel on x86_64-pc-linux-gnu, compiled by gcc (Debian 10.2.1= -6) 10.2.1 20210110, 64-bit
2024-03-20 18:15:24.517 -03 [1= 05195] LOG:  listening on Unix socket "/tmp/qpngb0bPKo/.s.PGSQL.509= 45"

Printing all the server log lines to the terminal doesn't seem v= ery
user-friendly.  Not sure what to do about that, s= hort of keeping a 
pg_upgrade-style directory of log = files.  But it's ugly.

I = removed the previous implementation that creates a new directory and sto= res
the log file there. I don't like the pg_upgrade-style = directory because (a) it
stores part of the server log fil= es in another place and (b) it is another
directory to ign= ore if your tool handles the data directory (like a backup
tool). My last test said it prints 35 server log lines. I expect that t= he user
redirects the output to a file so he/she can inspe= ct it later if required.



<= /div>
--
Euler Taveira

--c993af6435be414eb234ff69196c5338-- --b0cc903187b6440280b0a03b3c32b134 Content-Disposition: attachment; filename*0="v32-0001-pg_createsubscriber-creates-a-new-logical-replic.pat"; filename*1="ch.gz" Content-Type: application/gzip; name="=?UTF-8?Q?v32-0001-pg=5Fcreatesubscriber-creates-a-new-logical-replic.pa?= =?UTF-8?Q?tch.gz?=" Content-Transfer-Encoding: BASE64 H4sICAap+2UAA3YzMi0wMDAxLXBnX2NyZWF0ZXN1YnNjcmliZXItY3JlYXRlcy1hLW5ldy1s b2dpY2FsLXJlcGxpYy5wYXRjaADcPWtz3LiRnzO/AqdyYqk0nIfe0o4Vay1v1intrmNp46Ru 71QcEjPDmC8TpKTZyo+/7gZAgI952tZdnSuxJRJoNPrdjSb2hyyJ2OH54dgbHp6fnp2fjI+O jweHR4dnx+75xD09GRyeDPnJyXBwcOyyn5KY3fKUDU/ZYHBB/2MHg8Gw8wOAuWBvi5Bn7M59 4EHmshHHX3u5/PU1j3OepVkguD/ueUl02bl2c36BMLvsmP21iAHUwSEbHl0cnl8cDZgzOBoM OrfF+F/cyy/Yf76/unvzI3s4PGDD/sF/sXR672UcQIhiLLwsGPPsgqknzGUxf2RhMg08N2QZ T0P4ocMmuFuXidyN/fGcCZ498KzTeZezqBA5G3OWARqwyXzGWe5mU56rQQxmMDFLitDHYe44 hAEJ85I4BuzwR5jSEUmReVxP2U2LcRiIGc/2aHoT6K7Bfa/HrsIQ3gNk0QkkCiLlXjAJuM98 F964gu8KgJVxFsReWPjwQo2sbTUPkrgjeF6kAJalbpCxZMIIH/lS7keuntKDhOgsCLoko88m Sdbhrjcrl+91OnewWuTCsq7/4Ma5O+UEuskNluAWETngdgQrKBw7Fo6McGSBoHFBHOQBbAJX g0npvMeANW4oEtiXX3hcDoOp3qxIO+lMYnSbRJylGc/45yIQAfJfszPixBtReDBZTIownBOL g5xAw7qwK0QqnHcWkJER2IxHIMCCZoH4ZEAo2m8QT0GgLMJ2CoHPfvjlA7u6uWF3V9/fvL0l arsVqCJMcqQvI/o2Gd3rfMxgKzDHQzrOgYmZC9vhmQA6SXnT0kT08gFHL09gJLEWcSSZrEic xF8tJql5c/szMpB27wLV6kh2ditPCG6aAAp7DDgHiDzOAtgBzi9xfQxAlNMs8Tj3e+yjG+Sd Is6DsEUFgAUwMEpyHPmGRAgUkFdlMwUtbZKI7Upa18W6QWYtzii0HRCUhyApBGyFp3utyt4D I5erHRlQgOY0AynSyr6ALBZTrS302NtYGo1ZdW+dJTKwALkr2OMkiFFou8ybufGUk/CKOWwp YoEPkoqAsvb5HcdxOsxPvL7I4P/TKOxnfNIHcJMAbE8Pn7Dan3/jX0O23zKvRfMNCJh3fHDM 9uFPcyoobOzx1vUqS+KccRDjSkiVset9KtJ+bwrGYhonYK42mveT+4njRtvWG8I8Z9HEiAvg 47gIwAU0Jp4vXjAORS/6tPkG2wjr0byD4fCMaFr502G9Xq+f98Ft3rfNTcPG+ocHp4xmnjPi vZImv8sOwauDvoDIoJCK3f09eMZ8HnL5u7PXUWrFosTnbDgYnBwdrS8drbM3oMMG85dRpNPx g8mEOQ4IE3P7K5RivGIAuG2fP7Ej9+jg/Px8PDzr9SbHY35yeHZ2cqqQRO1buVIHmLJ6tdev mXMwOO6esH3855TBgzdJlAKPwJYHYMvBrheCzA7hr8ITyWoKHMD6ln6j12Gj/3j78927u3+C OwdAQEpFQxSX23/e3r39ie0gIe13hMvOZW1yPAmmlqxVJuM7B7azYGaeJSF5tJaZ+p2eum9P JfbemvjDntomg/Wl85qC2PPzcBHG10WULprmw7tFc4CXC+fAOz1tuXwuNL4twrNQFTFUJoto 6ZIS5UH5B0R54E24f+YdnZIM933+0I8holokrAvXQ7kddAdsf9hF5/D6NbIRfNL++iD23yci B298+7cbtDkFBmcy/Np3HBALgIgOBuRlDv7w1Y6bpk46rcNCAWIj2inEVRH7HQKPpWPZCBKY yM3mly2Yjfr6JULtl2AJHYb4QPjmSjAauTzIQ345giV1KNEO2R4w6ldnE8DIjR+SMC6iy+Go b37Ri0WB8IJ4klxeGUAEp3xBOBscFcYxhJx+8FDCwd/bMdQv9ci0yNJE8EtQWgg6cgySZ3Nh B9cyjG3N1AichqAxM7go5MQ8TlIRiBJBL/L1M3oATyDzgJCwHWX9Ug6FGAmXf7UDf8HIncsR IuN6HO3nZZJqkplnwJZsqmZPswTMpDdLAg9ECMYEsZSYxjtIJ/QbuWht0kguden4o7760Vpo xRxHh46tc0d9QkX/Zu/FHyN5q/v7MvSvSxTYBvinU9zBxtjDHPBjXxP999tQv0z4HRlrb7oP LCeIvG0f9iSQ3Kqgk3pUtUGrCLj2oZwkjcU1LzOPUd+yH5hdaow2skbtJRcJSSu6KruUBqBa f7ELH6xe+JCAyoRozdIHq5c+JJht6h+sWv+A/FnCsgtGbt6WZhGnFF3rNL6a5FhTsgoTCKgr 955TDjxpT5ZdyPuSKeavaDwltAmkpbNldChrNhhNyLQLcM8fOa+QsMI1qzyDtNpMKiSkpWUd PwF2J3E4l5uex94sS+Lgd5VsY22nK2sLEhiPRQH7lPwgaaHyDWjFdJarUoRrweG+pORSRiBh NpR3yRHBQvy3FAyCJhNwQIp7biFw44uZ0oVoS0boxOYgou2A3MdSwPwESxsLyPdDkcGbLILk t4ubhpSfceCspwACpDDB6QBWYoZwLeIgbIIHIwtRYCkB4MgtuVFSxARIZoMkaVjzRCoojdzN ZyD0jyBKWBbB0pzP/CJbiPKeqhKB7gJ1BbLxAWQPN0DwSho8znirVsuSEmLx4AYhch+oANop IsAdNEPzQXSluQyD+BPDv3gM4Z8C5lhc2LmsIFmTv1Ef514CeQgcFrYiiDHB6jTESRpfZWcX md1fyMYIY3IllttbXRfsRppL/ZokYZg8Au0lJBXWOLADNJhTCo7FhVqTjR7cLEACYoZYujV4 iL9TWKkfAvIYvpqApOKsmBe6QoAT1HXJndYgwnKBKhhuhV0GLq++5hq4pQBUsnxSITlTBqD0 LgiZqvqytFAv1fXYT0WYB5BfG3FjnhuDWBqAgofAfFAH8G+PWUAF4khPa4ntmHgMcm8GOb3B sV9BEmWxuo1Rv8auTbh4vZKLuiCwHSNlBLeSjRsush4ndT28LIWTmcK6ATg/DFEgchDoec2I Wmxi4Clb8VxsiddWlGzuQKzwBZS6TtD6Qvo4Q+HkT2hJwKDk0g1ECQQJc23J6xR9LnKkq6Q0 TbJ8OwE1NtVBIKskdYOF1hNSBMggOR/LAr05PmnEepJKyAoMRNVZI/qRnsVMPnHBvJCTBrGI a4xTwDCiwmWPB0eHBxQpPSSBzwoYnpNbMwA9cPJx3r7at+X5+1U8b02P1rZLtdxsFd83W2w9 1huiQmwqoyV5kFciJ6Man4PBCiEc5OAzniCgsEKZYJx+dhRyAGGnf/lc/BFreI4tVTLxPvHc Ka3MGt7j60YAxmEkDCN31LcU4vPIJXch8RN0nlY9i4PZBpQvdRFV1yuyDNXo2xvOOjHzVVyC 4DSJfbEeARus0me8DobrSbHSfG642nr8itynICqi0opOmFqGzqPdQB7ClsfR8BB0h051c6V0 A4trAR2RCJkmWzwcLOTZ19asX1fxDGQy2z62tjyeBrSKbRsuuB7bNFC7c8Zt0yrbqVHHh9Qm Ay1JeSabL9ShN4Km+P25jOHDusSHDY2TSkF2U9LJzgHBFCQ6pkFhBRGlrJiKDWb4pvWMhIEa p0VuGhwi+MuFxN/AxAqQdEpUdwPtilQZbQyTVf9CzqkIQ9U9N/MZz7Iks0KVD1RY1wGKJIdE HkJz3w/wd8zH+biYOiGEqGGJCYUsKUzHUMZKthYs9W1Z76gjTDwzW6VHOOar6tGvgtdaw6iw p+I8iVmRSebQoR5aQhMQWmav0jTU26IUZmARCzGUzKgrhdZrwMrDeuVYFiqUzGR5VdxEnqRt 3S/UERYmj4LNk4LmEiXkojKLsXRB0/8ylQeG4nPYQyKN+uWbNqIFExaQDwAsMjs6Bmmnaluu 6gbPnxk5VhV7lfR9dQtuV9C1JRdcll/bS/GmaGIgWVB0AcWS55bCicXQNjK0FFMIWxMe2A16 JSzcgGoVjLClkLZghRSNfizRZQnWXR8DPIqIpdUx8EBcYOOQZmErG66fZL4EhYDLIlCDhhpp QsWAMziVcMpKldnnO1XvVeYUfooT0+Lndy2lYlMeo9uEHdG6eJogRDCNuV/JQyzcnk2o7Trb s0t15Rxoe7G2wWwv1zaU1YJdaSX835bsJh3/D4l2A7lnk21LbBzsR312+W40xG4v43VQ28t5 nSqrZd3ubTdKp/fzJfJuwJHgryvvrXS1ULOFf1uZt5S6IvztMt0m+MvJ9mx1iT+vXWKY8TD9 ggrB7Sx5ZAhDJSeb9jPIqLQEVz1G61Jsyp+C/NsVB+oE+fvalIMAWdhuY3Pivc+whb01fl9O NrX01yQPPa4dVW588vpzAkhXz12r5/+Z7CoRzY9IJsoFbp5Q66a3RvpC8FTfW83iKt3nqssF tR38Qbf0xuUJeMUyEUDV10u5lL2asjwz90HljGghIvdfAKxkFx0hb7FNaRenAR7jW5+hECRT Tm1Zv/mVgsRB76ItqzJLlSaTCj7V3Lb+HYxZPM2CB0jrdEmDTlP01zu1VgFIEJ3KzlPZLVAJ 7nR7gLYT9B2KJGIVWjqt+LkkC6ZB7NCXUx7fuRxNitjT9LYG3suB92rg7h6kq3qkWntlW0v1 AEi3KwHZfCR4sxur15xFsEoqtu1vWnhO5D41nLmAvYHyUn4N7yt7o/ek2/Ra7Yega3ouWKWl jcN5TLJPIMu19dTIyrpqZPvKugYg3abLHtywAJkjQUAZAy3EXrDPBRBM+dWW+EJKv44xWii6 HjUlpg59QCUAUG1z8vV9+XrrHa2MkoyJadmFbEEBM4ZCVD8uXCaZ1a8kbVgWFHkw31L/qRk9 GwrazDG1XenSf2/RgstY8AgiRuVHi+7w7J6eNYgN2qQBAWHd8FLJHr6WD3rLdv5MmvUt5Jul YSHQ2QsypI3UYCvik/wDAwQeSzf0Gtmg3jzjPlVMI7S/kGwFXCQqhtOs1MkWJXgEdAGAimNk QPJRPrNbcSsRGYQEG0YfEzo4dic5b5Z9FQ8eXfPNJeURcUs5U/YffOLhnNQKP51UnanYUyPh qdRPKRtGJO9ibGmdwRvs3rS+kMXe4Grbb5nb1JvrqmT7kiY53dmoPthdRI4gn5WNsXnljF6e F4qytTFzY1GeffTYj9hIq8oQtumqfp2rllEfjyN/Vm3z2nRSms9/pWR1sTTdBO4HQiFgDKfa pK1+3U0pKM+XZtz7JKG5bAKMxKNfoRGx6DVzsfeVo/nlAlt0saVB1fdhnUjtiD6nVgnWx6ub XtkNjbDdHKLDFBOtAOJnyF6CmNrLiUs6Fl5FwNsAO5yvr290NifKmFpbKVmoaKl6dGVvjATE n7hXkAhXgMm2MuqOLVVHJvJAq8jFnp6Q63acbURXJwM1Ns+Ur2FuCNP9uaS2yjYkpWs7knWC CvKWq9QKWJJENiNFAbZUyx7mdUm+raWSpFLSDdRS6qS78Xfts4Ju08fslb366lvnirwrYmUo dRHokarm0C9AI7lPxKNdq8C+IZ3MJQ8SXmMZY/dcZflABKRl1yeYUpPkyalRTr3LkE/yBSzH UpSUI9IInQTi6Vi62mAqkDbZqOObjLISzKYPVt+xUbzhoIu1vLB6R7HGvaxU1vyw4qCFrCK+ CemqMYFxVos/YVhvn82vJcrGbvxiwugEGnJXGi3Ui0D19mi+qE0qAbEaSgxaX67iX9fXlb36 bRcBSIiS7XW4GQcKP7phwwDBxsljyVZBEeSFOrELVB1xUeeipBoaD7Du6mvjdtZrmVd6Vbd1 5qqWquZLuQJ6fFIXa8gPYNRY5ffKu1qUgajRG380Edm61aQfk0ckzEfIwBYXlcjG0L0iyAL6 xgIMMxUianeA2LdGtBJIGTA8Dpel+kbZiADpE3QNBS/VQKgXLakYWlqIZ3SwiV0bWuLsOt2t vkCkxhbyw9UGhMoHB7LyKKqcXWLTtmo5IAEog4O22KBSdRz11S6Xb/kNxjkLPQGJkva0Paty SPfTyOCFIiVdsm9zSEQWN57ro4RqwdGu++nS6BbxWoMwCtaXkkd+FeGuvm9l+ZUmWiSatHmL c2zogSjduymxNVyWKdlZcx06UBMO4OJAEuDI7wvBkelcrXpDj8nh7PqaimtUNd2GLj2fPrFa dEKJTnBmlViZ+VZHHtekGO5m8YXe2OcCkjKDYwvD7/9Y3P/xyUZXzoFISZ8gamglzUflq0sw 5ZL18lewq8BBsBnWELAb9pC9FkrUixI1cjTpYAjQEBZFn2ehjPhGpLmjsn3zbFQHQFR1Hc8b Z3ZC5tWTIi/wCAIE2ILYfh0T3ddEMZwu5FIoSPcgkSMJrDim3jyOwZ1p4CUL54Qi3ulfmuul SKUlrgpIFWNac4EXo6hhWgCoOOdc5UlxojXeiro0ZcJE5NubpC+6Iivj5pKsFi9VuyoLHABS fndtiu5pNyAtPR6Jc8edQdqGLpzKpkQJ+xKtBRdoqUvQNDtKnIw2yGqOVYhSSqWoTXwg4bNr EeWuP6FZ9ni14KCIQUfhYJcRj6uySbPdEGd4yVfEdX/kI5XqK7TZuWxhll2/k9ma6/uqgKc+ U+FPqfqqjkMcFeAnEotrJCoV034YUNNMKEcCeUQij7/wA9VYyMNHVeEye2a7GMJWyGW+hGXm TrOmPmj+yqv/rJYBiUFF4nRBwY110k1JKdgE1eZLrbWTIMZ6ijC8UtyEDeq96hIb3eSCC2MO RLV1WaF1fYcE0dZF0WLgm33+bc5ObB2nWIWdYGLYgt+EK4DoQJBzhsbyALDR8v8VAppKG8XG 97E1qWfDW8c1tnVx/X9wi/orf1lESeemiE7meGFOaE+j3WjT0PCGWHkB9roy1KI25IY6otOU n6u7ZTipAJL3rVwI2Gs2BFpB6LjIVV+wFE+MKX0257nttvEDdzmtjoppsFensYLni7t07Oxw zCcJRQjwyJg906m1tQ5cZ0la7cdtvf3UfO5v10/VNQcwXNszGlJSSyK93D4Su1HYY/nllV2G YUaKt9/hGlc5Lk7KlS1oCYR67KM+OKnV+c1hQ0vxXjdB0h2mIK3S+y/BQXkAJU38CWw2BSLy TgaMArVyoCvTdxrYwMpIY8HFlHet0ic7EMqmsmSMn1DjnRpB6X1sJbF0ax2I+jrcRYTHIIAi XF1rer7GCu2ZK92Ry+i6vWguuBJ0axfUMF1KFtH1zssDLLd+wN5gggIn5W/r3amabO3UDwVl SS7/1crPOvVWZoU2GyePSD+RMB/NXvAFm/s19csrIta7dtX6VLSWQ8gL53QdFpMxWSBDGZRf 47evY7O9UWBTBwTSLNj3oJl6r35o33C8jCL02C4frlUyffvk4pWUS3rwygs3GsVN0gRzDl+G OTP7zN1qGpJP8G5cUG5rSP0CKg0enJqZlSRmBgREI1AjzrHkiDXTKM0vX9D28Sc2wvazIE6L vC3kYs416xci61NvTD+dis9hn0Ie5z3bmUHK+wpW22GOz2YZ/l1ibMDCsv0Sgy36Hm85Z1eQ NNbILgJkBl0Oms9T/moniLFsq+5EG0Uco+vLVgE1V6qCiI76aqhEzoBtkQtzYeGK6yztC4Gb F0pab9XtlK57fjQ5cf3JSa83mZwdux4/O5wsv2jVhtJ+caU9gq5YPTugK1bhH7xitYP68ad0 6mbeDDISL+RuXKTf6cdURBZFJMwTc23pd0TlPzXvKjWD87D8+YPSVOsBJAL+d1Uirrwdebxy iCLnwcng6Gzsj/2zXm945B/7/MQbDKvkXAlK0nTlMCTssHtEd4ASUatDO/ttd3/KURBVcSA8 EKb8/UFfYMbWoU15A/QiPPUALWbjyRgoMOBer3dw4h0f8qPTupitALSMKuUgpMnRURcvocZ/ jvA+3++//+X7v96yV+y3DvvDeCz7KCCpA3vfS+oPfxe530uACFjxvmCVZViFcqxGt/32CQ3D thQI61QhXLAXuxL/PfhJ/vtvDFAi2LFDF1lUfpvSFSWVJxNeQPovYJsvdt+8QTBvfri5+gsB rIN+sXtzXb5UP96//Qf99u57eOok7MXrF7v/2ANM91v/8xFt983CpN2P734+PPjwdnv895v4 //cmCO93qqS/qP5KSH5lAi9aYCMyo0gfn6L5PBnIC6qrMnNR+33zjaDUBTEEmSjALvVY0C9+ kMldvfv59u7q5ub+/Ydf/vLh6qe9qowinuzli93rt7d31+8+7L3YBQWFuXv9xrCXxMU2cHWZ WQq0bfDLhZgaFiwFWh22FJwm9Sp49riXipUnx93hAfDyvDs8RGZatL5ARuB9QpIVgEEWMWey AW2Xj19EtuWzmnRZOb6+b0YeHjvscvrpouMoIE1BajKshea/AYA/GPNV17OGQvxW0qZ1wVbh WxOR/RoiLcZvDfQYQiEYir4ZZH5Rei/7BtdyyfZ/W2GRn7TGKMc8OeUnA35ycjro9bzBwPX8 Yz5cK2CxYS3zzfY4VIDDM7Rl8PfBkTJmlsN8pdoFManffVl597LbYQD9Xtf7919V56Kctfqk /2nvW7vaOpJFP8Ov2FGOI8lIGLBnMteOnZEBe7gHA4NwnFmJz15C2hidCEmjLRkzGd/ffuvV 3dW9e+sBOJm553ol2Ejd1a/q6npXyrrRHICTI00NOchqtCQC3CF8KDb6FwmKGKnIi8+fJ1Vk G0fXeRU7zxsEpjXppjjRD9lwU7RWNej9eAfEynTSbcASp5NOCsvInyY/AQJVm82j1pv9aiM6 K1g3NXl1cLgPF263pFnSdCJgJB14vG5TtfEe1gsCSv8Clx0DWziR2Pzmbgl938vG6J487PYz XDXMhrKmpd1RL2sk9Dy9p4a/XPPGSBIh2kn8pEFHU0SAAoO7UXjpiwiQMAKoW9lF9KoTgv7p fyGCbm99y68tAOfBfiUZArtOH21tb6cwFQovTtkvYgz/3BwPEI5rtkNVM9Q4YYPHpoElB9Ri w7UoLbxhAL2nvz/Dz8/L0AmppVJ2XflrQx26T779w9bW4wzEmW//9O1WN+t8u91dhjoImHmE QZrQluOO/4n3+/X+2dn+j2cp4nsb1/cc+JlXp8dHZ/tHe+nu8Zs3x0ep1wjJcBL5E/D63cXN iPsva+fNnlptxFtFSs6UQtQoOLeVxY+yZgIJmlGTJTAhPtWy44q2XrrwxfaTP150z/+Q9aKF L1YZUZW+oCI+WPvi0cPmff2BQ32I/8cPEr9ZU2bPpSmtBbs7Gt9MyLuzBrLCztbOk0aiKnG8 HozOAdYexkmNxqhOTF5j1nrb/2APS6C8OthtnR0cH8l8Vtk/AXSvG/YIqe7XklU+qZhEQelF tnlZ8b77Dp7UR2gP37x8EX6MTsLBx7alBt/tTDGBO66vM5te9ntpj4ZRLaha3iPxOi/90uiU UhLg4s0QudNxNrmKfw3z+NAffoh/CRMcT8q+RN+ZSR89MtLp6BfgFfxWFxnP6pGxgBE/UdKG dYcpKg+DJvBSjsbTFFOZm6OAl7U/zNb29l+13h6epe23L9OT49OztQplNqU2jxBPix6pdNAw 61l3moTqN0nPvb7xK7Ar3cvOBNAyechuLClu4rM1gBrJE4UwXYfx7ByLFA3RzT+FoaiXTe0Z yf7pd+cskynIIs/WsKdKUjyaJG+H/U/N3oizfVFLigVCZ9IADMwC5WMGopU3KvEsd4E1UxzL hHuZ/HzPgo42bx/1atN5tWkFh6hINgp6ssfk1NlUn/JSa+cl/XHbuGuiuoapiMp659HehcwY Zd2R8Fljkj/5aHoPgdMfTtfW1ix6i5MMbxwmLnOeRhLcgAbcvmzh52eIp4KLh0yBT7PxAaAN o+BxvwfQR/0enCFhgtnG44O94LQ5H3rYzp2WRk6Dm6viZdBTYcairjCITM+MqBNfFYZxbYuZ TfzG5tgsusZz3DBxXzsfjQZra1edXpaajvFOyozNA6qeavrPwuWE/cwJw7fdhHzYxE6QSshP Ck0/9ac1/K7+zG86w4ChmvqUbyhQQ3ogLYmp6ftrPmzI74IYUSi5olMCZD5hTB4CEY2CQvkq HXeml95kQMj5uNVI9EfochFMiPcFlQQpPWSW3nmwpLZPYXRoA5vv6C2vt2xPNMBwY6IXEfAR U//hqdN+rbZXKPaqP/5OADTvHOc1zsPGat4nr/FDXiZsXGprBMf3AFGZUrOko2FKsQDhWbgo UgdLD7IAxgyI4h+fJIgW1kx/k/d70fnE+wnfGelXRAOaMtvHUy24q66rYTUtjjnetJ+jiGyo uLcLkXvAucfkbtNLUtZD4bwlwP5kQzTsnQfbJYiBYXEKxrK91QTcpq04Aw4IowkoGHN7OxxP AmwQ19t0kBf2iYewh7DEJIObzjhjx04S7+vIiOgXYpE3TK2w7AppJO8Sy0NVpGGEmNFsJTSg d/k8KrHaWdGy5kNfsK9u8OLS0hhd54yveKGns9y7yfJN9wqdNkFEnHQL545OSI4W0I28Fe3l K62ElQ6V2yqOB9sTHW4u7UGRLwXWPEVdYIClAfEtbt9qpIlvLWOL4jtWOcI4qt8PLJmZZtoC cLcjMB7OGqfN1SHrq7OIArBT7z0sxQmrb9v7u+nJ/mkKf69ts1bJffuudXCWHhyd7Z/+0Dpc 2ybud1uc24V/NTQjwk5pPtN8E3jIJc+To7eHh8E710MCNxuiWhnzmGg4/A5yZbrY93OX7oZB EQmkTWDMEMoW8/Vz0w2JiO71Bgxd0N3zXo5AyBdC8AOcIiCM0CBwSsAU47+84xOFSsoxJu6f kSNkColsdeHwbAvjxxc0I/2HUd890rJaEAKllmlZTcNDQSsNUeOFFXkpYYtCDw95hJaagjQa iTLYuuQdkM6TN6dZPhtMWeQ9OW6fvWm14Rqkp/utvb81/M/aZweHh/CzdXp2cPTaCFi4WFZM snRlEyo4f3XrjH4TdWjhaN8JJ84cEiwbJsugTzR6xcJd/ZKR5F1ONxDLGKDdCDfAerU/5Fie PqedkBBRiVXnNAkctyX5PSxUWZfJS85K3lGe99GBuIbJCyUpC0btD6v4c/JL0ptlnAZJyen9 PJ9lFKLxUIKYKZzBCKjlzqs085L4gM6EF8fmNhSCSe/xUPIMUVqVS8qWw8UyTYB6w4U6JVcw PgZe2ZCPhxwiXXDaHAqHkHQ+dPrkfq1wmXO3zJO2Gd9gJ2tC4+r4PEyA15wMCavWEKnWUF19 ocOs+kHWJLtz1x1bN4YS4kjpF+JeGRBPNMFsT9SEkhcSjrIWvpDvQqUv6I2GmYRSMLDphHy5 zeLXRCEF6/HvJi4LV7oGeA8cZirZDmoVxjyVdkMi5Ez3Cj5fYbf0Eo6rVin6GkuSlHhuQXdm N1jrcTNJKvYtrvxtNONIGHPm8fOWMBJUefeHM9RX8wQ/01mharRGca9Em+Gv7xJ5deCXjQ27 C7hB/ET91H+/GWp0kn/+Mwm+NUSf0INArDEjYJTDgi1ra8QdPDeXzMnODqBSvjWYFvIe06yo +1dMb2kwGW3BlOuykwVGjtmUb2xPGSoGzlujgVUQFEKADbVVWhFnBorpERiGXvpn+pkNsHaJ WzPdPeTT6Pp5lKtLV0KQTSWYaqi8OnS1LAS6YpTZ1RBQehMw3Y4i1ExRzIWznU3WGhPGFFw7 avRohYOSBRauo8bCnysP8p8rGJdmVbnykZou51c5l3WcZ3AzexVPxEg8zMOj0UfmFGCR+cg9 30XBHNNUI0aMOeQMCaCaa2xfKgbq52VRrmxXCqrZ+98ajbqr7g/FzdGWFCZKgcU2dhneFYzX wALTFy4fTrhR9POzJWr0OPk8FG1XTFD12TYE+znQPa9vsEZZvX5jTPN8UUtrsIPxCt7zLcKb Pw9/HlbqtLNo5VfKXQX7LQ77FBsGXyQJDPvT8Qlagd9vbm4SrDIoPw9FKI5CasL1V9Vj916i N1LgXWARZqpCTTTTHwW8h4Clmule66y1d3Aaui14oXUqjKvIbkdHGNLUuZ5nzCsCpw5ITZXB /xsfyhxTm18Tb6vZgyjwMQIPa12irdQBL7EN1kwNtAd5nU8mNLcWBjuhvQorLO4eHx21z2TX 5tibovPPaf5hYUDvEPjbYvU+u4BCFb56dKgpDlUobAfSetsNtbi+XBT02+AUbP01h6YRQ2sU 1EcEZWqAxf9IIS9bKEyqZ0VvIPzxK1mhO5J/eXAvl6gzBeCJiCWVkmn5f8hwTnW+bb1SZiil OG/5bHXlo+I1D82L5XAKBTk8YFFLYjkwr3JNYVYFO2b0aH+Qo6WU7IuOlhqpGmySwhUFnCjw 7xE41UMo/UN0hV4zbDcf4M/DU0pAn5zPPtB9+O5B/kIo+Elr9z9br/fTl29fn+5HCAVQ/UvK s4/vAnX0++H2ud/enh7a50zk/B86g36P6XeBimwmpyTD4UNG1D5SbRVJJ0r6BKz4PebLwpIR Hd+S7pQBnFj0OhNGwyQcuSrUBW9wAK9vkJekNwQJq9kNe6ZKB8ypbMojHOUj1hzrUJygzrUt CgVevZVWSXNoKlYg/0WPqslagJ5rmE6Pt4q/FDUIaxV4tF5kLl1TSLvP2SolE4h7fmUMD06D 0zLIQJLVYjQc3HjPMku9kRyQbu8PpiYKHr4eZJMq8l75GBnV8/6gPyU6fDHJTMYBXGB0GRww +lCmFOgPWBe2vnE7a7vosv66/2n8coYZheGWXKBoSFyH+pzM+9DQAGIWhwGnsK+507/NafVM u0Rkk8lV/kH1U84S1JJ9VvosteqB3AAnnYnIary6bxgoTdaIqtLLyatayUDKs1rFiWpjhFg8 hKfAXFQaiQIvGhg7e+GESao3cr4ZXoRtmskz+8/mi1+ym+vRpGeEafdVoAeAOXSvxrVCx0ZS 4YOs1HGBW8k33yjomDJWi+m/Wgnenj5y9IILCXl4w0i9mR4JgAjrLwqN7Jnw/mZy0QELM/lp 6z1+V/15qxpMpp+8SLZkLkxlFN7tAk7UACcbSTWpykQKjbgBUOvndEiRbYqtp7+xYZYiy4ET 9XYBwDZf4K1n+8haDw1zo5tg5OBmvIIb7fBOegquMGLrB+IlhZB05voobSbHSH44ZaPKGUZl YGZjrq7CpJXIfX9qEyl4WTCdXTFhu+IcUnJLl5sV6Ulw4+GTsrMlaYBOl07R+AwilK8Bib5i 41SPIx/rcwBRrImGZJ0YCZaEZxBi2pGsP6G+TaUDYOtgqgYALbq04wU8E+hNnKrUU2QRY2ha 3LwTss7Dxx+yCeZvQEdN7Sl9Dg85CA41OwfiSj52+gPKCNKX1KG4RyppXV7m282pvlwuReoo rOIm5WEy7z0ZF87z0WAmKnayHtlspDybOXi8ur9X4FQrs0LvWO/xMnDdQ2Vx2HXBA8qFnURm sua2tA4PCjCT7liBj3yd/rB/2j44PiI8sUPwMV9hFdlu7U3rx5PXJ62zv1AbRgJA/V5K9eFo vTVZnoPsZtRILFhBBVbET5PvmAgTXaZlrl0A50Utf7KDvn/m6D6NenXjDWm71A08VAJNBt3x Tc1+p2eW9/+RjS7cd/W6GoFW9zxpbjMg2IQL9EavVci03rmyOjbg4rKsx1Yz2GZMe3XdYfbx YjRDXCtBUIFgVW5qZpUI3lb0CunxsOrg0snhRHgSMDn5TE8wxH+cFd734ozUBkYnp6wMwt1Q aWrCPMKjfv40STxaUkQHoQwavzV9OCCTXcfIvm4zv5ekovgojSfZoH/FJINTDG8KN3wBVw0V dATrqvMLs7f4HKFsnnFr4tVd2jIcDG1KNv+P1czYDPNsy/sI4gMX0OAU+ZFUpUXD27LunEwW 5A1EEPQDKKolC+beo76gcGPkQOg5rdCguHRAcoeNDpnV9npKOYMUyr/HKV+nNeM+lnwjU6vj g7XlcZLAwA5HeKn2j473j87CixXY3GVKNrsd5cMD9FETiF4Bx04zo1EAKex04PBGZTeIIadp 1hVC50Mho2qTG4ndZeL+HjkCGszRbpHX298m5Fgju2OEBbNBkeNiJLXSYeFqmGPzpvTZv1ct YgoC+VsK78UlbSdoGplYiaouO64q/YE5RNW9krAVSxxxmLieQXK6mcxjCbsyZ5wPU0bH/G7C y1aAMA0qJaDiT/VdnaPvzHe2cmDRplaStJxeCVfangrXpt2Dyzk7niWzcc5as4iJuyUL10Y/ 8ELScz9FpNPGKX2FF8NSrF1SBMPxJWSi9KocP+Qy9MThZWhFP55K7dpGsfSxyawcloFlCygn 1HuYhO7D9QCRSny88Ps7e8UnvgtpmT980KzoCe89IaXeaIWQn90MNojCYfAfTl0Sb5cv2c4Y E4PGonMRLQbiIM1Ls6BpZzLp3MSdixvGl0G9TdYrzoj5bikkINlwqk1MNv1M9cp1r9zvlZf2 cs5vpmuwVurvx1EZIEZxE98z3d8PIuP+CTbgn0h74K/mi2H2aerz1UniiJkwu48eJq8og7a1 OXWmMDawiSZ+a81SpudJCbEs4qVMwao8ov4dopsy2LcW2pXtSj5iZi9hIwpnulaw4CPK8JG5 rpZViLU2KDjnINfixnDorI947nhBPztoidVfuQIW2mgSq5uZ09Ty7urHWaAfc44zLz/O6F3y u8pW5EucVl48LVgtkXeQQrNBz9UQAB4LvbYGVMhQ4toCucSR8we9+lP9+iB/mDwrPEHycZl2 tm8ZySJ+fR/57GlSqXVm01G9EunoIcr3ZV/MBaFumeeiJstXsSi0fv223mKleWSl+TIrzf1p lt9xR7jtzUbyNgfPHNHOS3tErnlAsP3LLQAIBKtwP2uGyD6kmic6BsZM/EXclpKc6QWHEQ89 mWW2EArIpiC5Z7kUACSGlmsKGBWW+GEhmKR/dZX1+oDwg5uAPTEe+cTp3jL4TXjcgksffDQh x2RmaHNnL7GmEhiwd17zcBF3/+SvLtxlSFIQekDs76KbS3r8n6W2EouTwKpZiYW9NJ96uouT v1KfN2zX52Hq9vDD5aF3HXq9bhssjFpYgN60sy4J9RnmtGQVGVHVScbWIdJIsQNf6/Bd629t jGR4e7oPf7VOd/+SosSYog7ObQTvYJu3A36h3Th5fbrfTs/enhzCX3P2wwi76MU70dMKd4NH 2dd7gmPdaUvQ9IDjEiRPNBD80PdgdzAyXr+/xzVgncutwjYZ+5WYFohoJ3/lehOMZI77LO6o 21CPQlDC8JIEyVyJTlTOobWZS8+pyjnsCj7COmNjVIeRMr1YrdbotUaYFIG0tyC7h7psjjVl XfYSQaor0Ig1Bg00GsFFtFQfuJpsZDtIE2cf70rdozhRT1omaohTFkULV7XS3j8E2iPjpWq8 V6fHb8iMwLlINvGfnFBEkobV6pX7vsvkMR6ufKX7XO5VbPaBri/PeQjiLWbLMtPdvu0EP8BX D3rJZHSNPh2mDA1/oqeuB2wk26tMGYVYxBl81aeT6Wj2xyewApgPFa9GiI1kC/4DuHhBAfpW PYJfRbyCS/FgMJiRg6zFLplzbTYU/QCmV6Ef9YSmYQmARwaXcep2pNLcgaUpAl0BQULyECtQ AUUBCNxqVIA1bpMRFvPNbP0sys89uGGHnKGUusw956I59GNxsDqTj11eFsgw2R7O92GXlNyc WqI76aajX+6BfgSGCyQgqLHDicq+4rYqpTaPbO/5V/K7r5/VR0I+S51JLrUnuqPJZDaemtEM Cncvmi8KJGdVdNUmoiXxFedMrgIXi1Hxzbys+uLkFbo8oxWG/qVrrDIm2r70wGOWWqyNNBSH Yy4T3Z86n3CvlqqU/nrXOiRgqlyqoLEbLXf+7VIcgzV7JW8dcwd3z5CwEhYLQHSiRfeV6UfB RaupueqlbPwNEYInGsdwl9FnEX777vD3j+YmNqydDVCdKpXtI6UZ1hJp+eOPP7KHH6aLJDMl 5dCkd4TO+eVoBK/rpDP+8fD4NWliJbKEbvxVNrrodW5q30w/NiyDtha9ZbAdtRqTkTrs/Ob0 Y5pn3Xry3XfJ453yXv8sdpuZftvz+8EMx4BL9eSbZOvTq1evHJ/4lQQY00bPqFrG3HPqXnj8 zL2TiugSYoMZp2QVYmtLuRZRkLHZ80sQQ1Zzz5i0XliruAbKlmfDQGg3cN6Qvf0fFDseKHrU 3KSKBxmj2V2L51SPnwVbLtnBooscBzN8fif2FuiSD5w1aarzcIo4CaFEU/qNkLpenK5WSq2b CpyEJjqyGeHISCbCuwTr7cF6OX+EM9SrV0DT/NdiJkHhS2whpMqRYuhI3i/6nxqq0g5Qai4v LRXPYNeyD1x2xXijGjLc7YgYSJGd1r7LVpybcEhd1F7sO0pVVbQUhcYZ55CzKPGMkV8KworL MCacx+MdQIjOsOeZ8wCuTTIQETEYea2ggRsWES3shlZM+3d/2T/dx412fpKmvURsOBbz/iUR LmXl5VT7AnLIHSSR6ATnySH5/Qkijx4me4VkcyMlmwyWFE2KWhQAfcoXydJnuVGibcLL9tym SWCkrH3jEiUELzC7eirTJrmuUaQ64RWFFrOXBZZRTTC4AOO4DvePkmayzSIBg7Ih293L7KrD DusdYOQ+9a9mV8h8PNmiS4ePNjAGtZ2tZAOWij/g/z8lGwyGnHHd8y23x3scYqmmqUAjujf2 e1xd0Wdg3SX0NE8qYnpxhoI+hkhm6MVgw9Vs6Y/Ey4PnoigQNFaaIx4FzQ6RasSelGYiCMqK upnoCyPNdXoU1FYsilzLs8xYqaMpYMoI4mpJsQLPxEE+1Ekv1my+DkAejYaNxDJLNcv//Bdx vDV6sY3P3dKh6RH9kpsWEHnfRLS+sXLEuWKsJMBawqv9d8m40LmYL0xrGMml2hDvAoGkfRAK dzFa8BuF9guqtAQ4NRtkmwKpUMHOeOKE3gzxdI9AcbHatIRvBy2wKJpZGOEtl1ZVHrM4E1zy 7ul+62xf4LTfvmzvnh5QrKpM85FhkVyCGnR4+uc/E5dvRn2gssdYfsqdavQRN0rXyDBzzMPW 7UWg+xDyMgj5shBiCym1BDtYhZEKqCjETBuAtc5KV0F2iTFMrhGB8ZDj0W3KEVEwK+bSyt+Y M9crhXgOrHSWGXTuunrQSP9MrUoU9PQM8eGlHCKXHjABQgG6mIgll4CkaHdmNMh1EVX/nHum rtEskvSrG8nvwNtpNrKA+3o3Ff5i/ivLjCPbLAmx1taYGC7KTxebiYVsQ1cwtYYSBgPfzZIZ q9j+UHVZhnSBgOEbepbJSeHZPWEFzwq+ujbkN5/2qdaQLSX7vf8ioVoE36OFySRLOfTACX6O gt9nt4PB6hUlCN4vB63L29IefBE2et149UnQVgUdZqM8aCnn6Vz7iHAVj5UtUZxCQrR9nH9J MUoaRb+3Tn6o3NkbceIl8lvFJwV1hzfD7uVkNMS60tLx+5h27japQFcxSrF6TsRqnYbLMRio ixhgyn6HdcD54mUnWu8+BS458im2vUawwx7wxn5r7/NQ0WK9tnNWbOf+ZV9gBRMSsFXO6QRZ nILz7RNTbFG41t8EfgXE+G6HEnapw6YsFwDHpJDR0ntdpT9yZa+5LDZ7BiMekQ+xn6opThnY oB+/fsH83bhqGZWVpb37K6SAW3RYvCqmuGxejLdj/SpWWfYeewbVNnWm8yyM0WP/cFW0lq5p mDdKlCv0FmeGbSCcE1086umBPWC/Wk6ahvdEq26bib0cgINWYuKv5JJ4L2KevHhupckNlSUQ kyAaffIQjor5FguHCv3wTVkdwj2eYNzrw+ptDs7+klwPklbb6XJqxsos1in47hrDs3HLIsog e9cDZZAwjVW739V6w7WZjgBAegWbs2DoKba5xbDRs/SmgOSsbALwMg6ntYd1/LKLjWyLyFQK w0QWer3EQq9vvVCFbMUllgztL7FkbHjYUuSCP2IwfjABDMTEPLlYdVgOmudQrbumMphBoAad Z4P2tEFLbvDg/v5eY0ODIY1ETsp+dm0+u86/HC/kuGtzAl9Gp6jpkZOwStkh7yWHLp3pqB9r vc2t9Qs/p/WOg+1e+DntHzvoS7V/Us7KlTi8PnWEWqwg9ncaurRb9OKLYUHv3Xwohl4XFG8C Se/r4vmo+6lm4nZuubmgbciH4u9/kUty9u5pnozDNMIN83helOQ9I46KgSH7o7Ky4fOMqc9c LrTxbDIe5Vlu/DJiOiLS5Agwl6uSRG2V+0ayivadGtLk7etMVXJLBsU57Dhpi8+PFZbrlHMq CIpNffEgKGxbDFjCEGEjtSaWwG3HyGeRl6ionkxFibpmSetoL9H5nasP8mpFjVNczbOYv3jB dAiz9WLeY1Kn12ZtRVIqaSoWCpYharn4Ko+sLqSryxBWnXujxFxzH9NeypGs1ICz7EJ8A6sT tsxVxItVomtxkyhFn9AnjHduOc8wlXfF0mZgPoSprgSxtYHsY19XK024h/CF5cxF/LHSLu6M b47znsOmR5edcn75STyI2FoaFI1OUaP0NaZNc3yADOE/LsFMvNgGGjxMygmyEdAgMlzHpRBU dU4TOKsckW5T0wZvzRs6vmzhzqnHuxm8JrfcPfdIGbKcrbKBcya08iZqEWzB9qlhl99A/mqO x7TooQKvszvqodAq1exlg86NS1Dv9zrAQA5WfIQ57LvZsDPpj4AsJs0XSRt/7NYbkizMTwPN jnB50qanWJQTPXjvu1OVYN0mFRX9B4Cz6hL5pC25dtgns9vNxlNOoA7oQO6ayjeTrZ0GlBlV vsdDxDxlfyEGwaQTN0m7WYMw6FO6FUng7fKs5bM+1cVlfXySd26sOUEGI3iG4zifYA1En+Hw eI2kJpnYleNOaMPU+sAVK/Pcj0LQqfMGE8we72nz4hpBuje4xqX1exEXqoUKvrxUwZcU05GT 1f9cu29aHu+r1ZVuC2D/G+vbVFnVfymFW6lWbWldWsxaJfi8Ehzuk9p3CTtvL6WSu9dDnq+S CzRD8zRCShF0cJTUrA6lumDTqkpFVKIoC1uEW+c1KHCXWgN0fLq3f5q8/FvCWfi+lLpGezB+ UX2NR07nqDxWUNdse62Z/Ja13bFtFfsdNnrMDlwVxYMXRYC5+qbHyvxWFpP7dNHlZC2FIIK3 bxGFRwj3ljqcEEyIuFr/Qhtt9zKqMJgDvdD+qckcFZe1iqqv5cUsD4sWMebqKty3XPNlBZlV JBd3BW+5HRHmOxGQK2yMj9Gr7My8R+2e9kgoid0g9G5cbZN4QitKcjhM4YatJLiF7/Ti/aCl 3VlgUy6Ynv9iQ3s29of9aR8QxysVUOJ7SeIMF6ArQkVVaWdaZSFx0CGhIBvPBUfukFExY8Xi nfNqdrLwcQdfx3VxXXJim+JNVXqP+f6OZUKCczKzDG5p5WZT0YTDuZUPWMNU3WJ3R5unsxAX wnnto2WMVPko4+14ygW/PP9dm5VPAVUeBawYR524dhJbqgTQuvMm86obznEna2fTgrelcfYx npgYH4Xnhq5yPJvSwo3hSI0kwCU38j7fAs8XlKHHCjSWLWFJpy99qd9N+lOTQZwoW0/5OVmx aM6lunu52kKJynL5XtkmzLjw3QUGWsGe5r6JZy/Lx7g4iSmMLMtqNK5hF6bZ0Jyxw0UR8Mgm Ey3pwU6/hqsxVxKx3/kI2/B/BuY6W2bcGWfu7v/DJxo/RCt4nvk3TnREJhbsJkNP96GpxoJV p7OGt4kMRe3kQxJwH6rN3ExamCnuI5YwoNtiXOFJmMb4ABhK4FjzWKvHeSE6g+h5oXTe6aHi jhPDHUwlhlmOaWgNDefZZedjf0QRW5fo5BwUfcOPqHJRR+Kf5V4yIK5Zye5MINL3VK05VpHU 6e0ypfxE22XLIvi7xD3ypMZmRVRRNpJPGPwAu6LiJ2IYDahgArlO5etdqkUi99oGSBZNcTFw DUyu6C0ErWlVrEqxAhDD0RSApbg2cpwHqBxCcX+wKd9kjuZA5l7uDTA7MqPAx+/VioCLAI2V ctW1x/fzfiB9opgmC0h4vjBQcmnwX3u0QfSCq51E7CjYDbv64MdHD37Eqaq2cFfSV8enb1pn aev0dbtW+xHeGLgTJ9NJHWgVkRn1kXnrjH1wteWVzSsPJmX9x4noRm+ofeViQ9lZLifs+uJ2 hEA+/XlIUnZsLGfF1u8/FXaLqTadI72YUsUMYtTMyEjyw4ZWhxY6LNgapqHTQsjIKXOMrS1D ybYx77JQdmAJsg7QyOtMGSqkKB0monXFD/3czcgb5iUuG5RMLp5TiDhKecULfv8rMDXWOb+M iVnnyMBwan6OZECbEf52iYt1Cv24EkaXcl2RfXBsYaww56+W114QCbEFrK0flbAkJ+rdzrAk otNi4hzmhkzwvjhZOwmm8wVrGn6OCsmdqAbFpsGd2MpNQNbcheDOCjfauNe2lBFxT0o4sjhj Lgjnb86ak9G1CMdkDcszCUbsmoJGEutYlk15QRiMn2xrKVvdkk5FoQVPV/cJLpl5ZXkcl5BV YkfL4xzLc4AVA3WMGXQO7gXVOQ0OKj8yM0Mvc/Nc1ynnOYWTj6WvWnBC+FI1Ev75IJdLZ+6e uiZqlpXxB665Bs9HhRpWoq/OQieqaAaG39ixanGUVXBsgZtV6ekt74kVZNozXleMjcu4spZ4 H2F2WBBrTPlyIzrxK2EmG+agFW3fejQnuMuDUQwFKz6Sd6EGDvGit/mOxGKl663q/P5217sk hC2+r3h765WGw8V/3+u46P2+7WVc7A5Zch/YDQTvUo/s8lNUCHDReta6fZ7rAFh6hzQnwGUj c+1eIwVKkZVGDJgOiOONa9e4QeoyrLoE8vxN94oqgU8xIQxfHMliUyja8e7g1f6PB2f7e/Bt vfS41IyAzaCKXzb1DJsF3yGU9lnr7G2bIBm6xk6YiQzVPnh91Dr0B8MaW4USWyUTQMEC2HSs /zLlkjyY0IJVolufHvyoMOPd2f7pGxjPzcY3pPQyYHcGtUo7y5JdU7CCk179XAGRiPZ28xKQ EHVSHZii076K1vAy+wS40wX+cpAQmWa27+vQ7XTRGjCcH0A86AXIrZfQkHeB29a81fGgUl3M 93ydc5h4gOYwZ0OUCj8M+/+AT3jpXkIhg/PRHUR9oWCGoTiwRmPTtQgpIcnWfGS5Y19xjB5v YV3v7rL52SS9q6tGl3KRmMjr4SZW/oiY3FBldFvfNpPrirN8uIxXTeVJYQblQkvFauVSmao4 +TIVhTeBpDmCQZvjRBJsLVfNbl3bhVrDJLsaT2+SAWk8006vN2FDIn4ANKojAoJ4gVkpg9sn I5sGY3iTHJxQUpvJRQdW8Yxtn2+H/U/N3ojrJ1N5vBx9Ff3EliQbCiCjdedS68nJhMR5TBuH Ze98D0hUs/aH/SvAYjbHXHaG3UwAwZ0Vlay2FkWrr8R2tVvYkufVagIfz2BFqVT6G+O1zqkc 2vOtb7e2Ku69DAsCEkosPFAfvEnu2cfBvTAHQK1IxcGympd6kGql6pEPkzaWwHVJWZUSUZxf nzC+Zar/c9+tXuarGsQieZhQFdgYN5jiSnQGt2gD/9EMm1hSZ0iPsXc4c3jkaQ+om58ZTspj ojEBaULWq1g2ICB5wOJFKV4sg6qVXd3YRVLlEbdCOj4cMKBQHmVyh6SrSq16NnNOZe55zDkJ WwejfKOBc9cbbfkt0anY2CnpxIm9JY+pTuJga5ia+kVO7YtpKNGXQ+odYX5TeHjsk550zoeo 3kSFoymizcOQTUvUoIWxkpc3yAZ1gGPlEK5Of4rV/ZDgxfWS2CKFBinGkgam1nhdqxXKrBYN rIxhwhwAp3/cPnvTagMfkrbPDg4P4Wfr9Ozg6LVrizs1MUWLJRMCxs7SR2Tadv6jOEHMYYM2 HGUE7Uyn+CDlUuXja369gBK9SbGeQNo6O9t/c3LWXtveKspxuEGIOMjAFbz08bUgC17o40D2 vVslHifHj2fPlH9HweVcfM6VzzXej3Jf7NBxg+IaYvgjKPZ91DRrPP0FiO2LDQDxULNOpd5L QF+yidQ6a9icOV/pdQSpbZjzjKHL6X5r729GESKXiuu/O1oLGwWH84vmPXWyLs4nYRPPGDAN 5VddPHDrtCKn6TJo2XwSI4nYQIgZoqLn/IDq3anZRN7vkrtsp+h03TgaWX2xcwF/uaLkBONU sJqnORFK4jXlzKL+9pe5Qa/ND6ykuPRrUgvSAieKRQkC/mxeKz5JbLGxwff3RXEBzND8KhqQ yIsW4XYLkkkQ7+NtnivRKQp9A8IhCos+fuSfJjhIcSjkhEP4ESXonGSQnMV8W1Co6HaKANxt obek8CwAFRsNe7mNDfaeCXV3pFJY0PsFF4tkyvnC1hPzW3n3a8md9jfaYixC7OFyzHauECQK m/GfWTZODJnltcFAs3wAn9fetQ7O0oMjuPI/wMV5mLxt7++mJ/he7O+aDeWFbjxPvMZKnbJC PCVTmjkvU5Do2mIZK6KyoXNvCtTb/Jz41MR4f5S+HrqzWJUOLqIVq0nRY3kTdI7DHJGN5GY0 4zgbmJZKcRl604mrHhpw+sMZFsIs8D/W8qTd/TgHJSs+coySS0gTlZtc6mbD48FZxVxsv53p x7Ph9CXrn/dh7j5cn6f37buUgUBL825nnB3Y/MrGSi+KQmlKSxtkw1rwOWuZ8iLAwz4cLCDc 6tDWSaW/63INBLU3BxwRSWZh0fIvaTuKPg4adsV14WAZty4dG5KY9TK3v0h1/IWSjcicy0Lj v2QW4+c6i7FlUd7iTKazIRUqasgzwxQjVwnwWQ9k8jV0Btedm5yogYCpzYYDZMCQEKCisaer KFB8JZ48ZWhX20DHYVykBdJ5p0cO6MyVEOkH2P1fYHpMB2zCbppK93I0IrdGKaM6vRQ4sZy9 ki5ccoiySpMn1wECEOYQNwoik0mcRQDN2kSCpWVlIrD6eF8p3KnFbvOTDNqxhQfJrRqihJiu gCShXYA4jrhNLW5Ujqy43NhUICcrmZw4u2ty8vbl4cFuC9O6Ym3AV8enSevwMDlrvYTLqC57 f+wlLf0XsTbtHr950zraW8n6u9QeB+r4BVu9hMVp2bwVd7Xu+tVDnYHXpDbV52g/9Cj5smas 0GnfctSS8VWkJGQuMEQjbs4quOz/TpzEkjzDPbMMIR2w1uffkA7snR6fBFQAdXn/9redjMu/ z10vv48LDMzUnTkJ1vhgG0c6ODDqk61/Hi3mdX5jxGQDpubIhpvLo6LhXdzVbf5l82Svucoc KLLUOLOU5yEB4+rwnTqFCZyPppdUEkR8ezE1BqtY5InNaEHGS60/5NvO8T+ityO+hNR1OKYC wwWAAWXM4ozJfM0yE3PoqSF8q9M9K055MTlkSc1HV6iiyMTMZrLEO1Vyq7jnqLk2PI2JvyJ9 EMD52Me0uUg7N5PDDGPe2MFvM0kOpibTCMVnGC0VmdDGN4Tgm8Us8iasxQZ6MVeIHxM4yaTK oUV4i65ttJ1xLywNgzJJIVDTQXhjld2u8WjS/9CXZPY1VdbrYjYUle/kw+yKHKA9n8RCbRiq yQGQUE3OKfaPTVCb16xvg9oacwsp1CiBrZEr2H4I76s/Y06yMk0A1/qSmCWMapwnLnuRWv4r t0SI1Jd565TQ/Lu8f2v58vDyEnj5nPfU8tUeViz9oOa3eFCd7CwMti6cgBy2q4VMjpghA66F b8wzWzPoozyUGvaK2g9UtzAjXoNoArGdpr3n6xku0vMEN6dom8f8av+NuQSRCZbDjxJGoQRN vrhQEHvELEe/8sPWRn+MxVGuOh7YvWxB3CC8FRi7AZQy2s+VOxZ1AcZxF8O2EeNJQaGCk/lV +zACotunWQlFVjHmBMiLM6chIn73phKP01jg5IxORL8652JktqHL5Q+OuZpGtUMOAAxrCmsg 1YMYNDA838xzNLzuTHo5vu2xAMvw9bO1Wqk0x4TfXUz1JYGV5JOWezGVLpyyJGo3/jSu/FSV Bu7e4e3iOm2wCVKqLfJuuc96xY/4HY/FANginOWPXvGRiqt1l3mh1nrLwerFQfW8t25JhW++ WVKSzkMq7+k5gDfqNPnfxwdHZVXsegm8V7UcEw7A5PAl6uEw9aL2OFeVdeCBw6StvU1X9c5X KTtSqh6W30G3HN6337Q0HpoBCy/jyhP+jUrlxeJF+aLCmUkA5jHf2jW+b55fEsV0Vhr3Esdp h12hRl98UsivmCDOqGp33QXW44Ok5QQ0/YsEiC/Gh/TBbDN5MDMPTXhQm/DySgaA1ng8uHlH eVzewJnqGriOgIV19B7MKuRPOtIloLWH1DQarmRf9toQzREEWRifZ/SoPABkLGeR3Xxoo0iV FOWSy1TgyxKv8uTQPIW00/uIrp4qtklzt8V5/msxq6uES+ATHz1Cw+NEuNhFLOtvxKLmERa1 V/zInZb3sTu4JXlZTptSvG9RhnVcSIBTVMBYVUmH/HqIw9PRzZzpyNwzpxYo8pyG4WuUZTiK cmexbC+/qw5hSX3BF5bvaVt+W/k+qbQOz4A3CsX6/SO0mDEp/jeXibNI0qHflJqsRk8WkIQ+ Jm/BoAPKy9WZfOg2RDR5CL98lEsht03ujzhuYcn0VLS4P71PnpsD+bViZk85FVj5mhrlpeEv qr3q5wY3H3/ADnMb79nGcPxNOH5oPRwV2w1tOyeaNjHKYy70sZuKSVbUZGemud1O3GAUXdA0 YQg3c7vltptxqmqK+9rcbtPY0tAAQElQ5/V8a3vCYOcjOpfY5n3U7TBWo6TdD7bdZTYYlzT6 3jbiUIYmhjLMm+a2dwb8DMxrv+N20b4fTdSKzOv0ONjD8aJRnkgH/m3LfLyFr/pnoeLzfcfh hgB9+nVLWou39zP7T75BQLJ72SduolXRKd4jmyErfGTmfMvE2uXW0sH8XJl4DfXVaX6Tu/ru +GGuP5S14f2nH+ezi2COXS85m/pybdzv4Zn/9Kb148nrk9bZX95rov8BU0ogK1BDOvPT1nvl GUjfocqFajfAU54eHr9O37VOj9BXkdoBcydPJ2aaMb96sBDA+AOlg8/gH3ih+13bBMjx6/Rs /8ezveM3rYOjaNHtSl09PEgbkxfKp0klyyWY2wCz0mzSnajb2r7FFt9XCi7EM3oK5BmgQMAt xTzaONEirB8EFj868fGa5jYXhh3Ppnl04fBejvIpsM/tvx7Wkwpu1Q/7p214zEvm6OrCc6CG S+dO8pnveKvyUwDyb+pYKv8bxE+DwCkzY/prF9MVfiGhffDx3v6r1tvDsxQYkvTk+PRMNzHE M+htXi+yEiBvUWv3r8aDrD0FsfLDISB7nW8ztS44KnNUh5KA2U7NtRY4xznWH5pRErXJSMqj UzV5Ewd72e9eughC6smgoHvWn9r6h48ochEIx0VCQYuCqXAjshkVHH9eXi3FlYY0JZJR3fxz BWcEvGCpp9jfrOstrOBBbkIjHL4AZzTOJri3XlJVc0UZsB/samLs4LcPpGi1cZ5TrJlgKifB vgCK1GpdvvWw+ynyIDXmWhDjAd17T/eeDsdPT57mT6dP3z79qEIBNcPSSL7RhLdO3GDTXe78 uj+FQ6h11XVBYz3yLU8ZIlcLINRA5ESahZGQ6VWGfnu1b4q4RJGnME+O8LZBAWsRIMxezwXy THpLBtWNDfngM/9lHf3tMD4C9GbinFCUA8IR1Gk5+Cq6gDdmz2xM4ba7xB0+YMDB0RBFsf4/ MgqwK4mFKAw1NEOJMODFxxSbj03zgDiUzasA4EQDiFClpQHl3kw0/Vp+j/yupUNN9VARKkWp 4BdM9224cYpkLr3mjwaI9/BTduYsZY60P72plfXfVlPwn4plZ7CzwoXFw73LXS3219cUvr3D PS26a93yqj5eYUOMJftOu1ICRG+NaXKH/SktWXarTXqywibld8SaYn+9NfmdsCaiqFh9RyT+ VrYE+Dz1/jqv8ytMYdujzLCw3A5qFNjXLMpJnE1uaD4J88yST+QKncxVvMImlT/QvIM/W4/7 bA1vgGUaNkVDYR2mvnfpAPGrYS/5jnQdZQV9RliHBmCJRqpJ2VkttKR20Z/kZBvn/VQqdeK7 eYz3pTzUbVfuc03rkhNRvNvc9Fz98OAhDpIU+ose6pTqxBMkVp+R5OOsi2rJXjljeJ+Lwjqj 9MKpKfS9rH29RmIc7kwtU9dUH7b3ygYbwHJq97pXkFH51gOSw5c1+L+R2BZ1m4VHouWUU23G se6ROcm+zXn2YRRus9SL/9kTMU46k9yLDmdCs5m8nPUHeCGJvSt8z04WnEn0XKxsk8z4ydrE zIY/DKqhxnmhYItt4M/Z8d4xHVkh63cNgNls+XX2/lCY6CJjsk/TCbqhxDKK2xW38hyugXVT wdTXE5PppE/adbQ5wN+YLMQvUYW654hRgoKWTay4QILTpiSr13T2lIEV6MV156Y8XAfu15yJ /3Y3zLcRkOWYvQCLcxqpktUSuRnqnEQB430WxQwnhiGZxCSonn7KOipERlD5VdxSVl1IUFNu raA9k5Xkat70OCsVUFEY27yEl6+MsPLE4NytgEWZOLyD9u4I4Fmz6cLCrNOUT/fQK3460u64 4jWDN0cg2YBIi204GcJkaWzTH9tSh+YKNtjBXSCBsBAmNwiPbt1KyCsKsjEc8OVZQ2pVEIgv rNKWCmHwYuHLr5rTCETHX5glTB8obWV4de90d+01CVUm5VzPkc0VMjr/bwyEYMUVaWkAbvdS V6MztNzRcSOYmBB7+/tXzxeUQbqeIPvngIexlnk5LTsq75TUHvTq82evGhYq9+DUG35No4AA mkXnwaLzWy3a46+XXnWx1x2XnS+9bCtp6bW7D1fegILYtfQmxHvecSPsSubuBt+c11K6pnOe jwazKccdE1KyJpYCcFw11kgpH7pFKkWUvCKoU2XezZobJDGUzYBggC7RzTQ1Lway/bNeH7l9 TM7C5TMlGaPPt3N1FCoXi9/YRGk3EU2b4ifbUyRMdrcVhWKOyRJXivpQhZgOpqamp+EngZka uKpJIJDiMdRVQu5c8nrbEC1+1KQ3hy+lTNjy1PR3nChb2cmrDQZIyaQF/9vnm5z0/ZeevBD8 j9TGZh/QnIV7aQNvMHAIJ4Ku1DITnCWpCVz2PEkzwDOMTzzYZi9/QbnwdSk69pweG0oZJqws OoowKOB3h8HD50NxO2atftZ4Jvnx8bN4znvLMel+NrkK9SvJ2egGA7piIYT5RkqXbsswU+CW BETlo9mkq9ATK5xMXa1gLEnlAJ4c7HHuUjZEDcU3UIyTSq6Dq/YgfzQe5dOrDoLbhCaVWC7K dd+5MUjNQ3RLLCuSn80IEC7dksl7l8ywQDjDEvskKh46H+RqxUxzmNgGK3g3LEjVi0GxRIdZ FaYcYoBltSWGbNiTRJxqQhJjeYYyDl5TtIdfzHK5g1z0GtMsWVS16zAZ6GzWf9i/vI/+MXIp ApkRbchu778Rk/JcQ5XZXyQPY64DwIOWvzDt6Wjsld3AXi6YtFL6IBjqh/vTQUo2mTYH/Y+c +lWfMkU0YgK20aTjF1uqGUadYZ0HSiQxP9ULkRq8fTppZ2828Spg+fVBbNT4mn2DlFsrrsBW Ize1R3DOscmIQBTLL8sU1C+n7VMtf1+4+FN5LXr9IKnCguKBN4c62kRky43D0b+i0ZAQYBqV 0k91ipxHnyg6vkiqeAtnPcMK8JnAgi8Lk68H0lih3ogNE72+vLE1At3TyOmN+lNVzoyGsJQ8 vj0Wyb3sS4xXhUR1tgCnTWnCzY3Oh/OvdAr5mmy1QxrDeUoLeMqXSTmZpD74G5tlLgJLVwbL o7NnIB9mcJ2G0wwTLk3ryUOew8NkbnEJPD9DSLHCntu9euklUcnsC+qBpdKHaWx1eahswLHh FRBJKaGik+2VZkUi1fE+Myj4hbRN6JY3uHGs0gWVTA9pG3wmtnyYY//ClBxiUBaTPRzfTN5l nImCa/QNWYLWojJOGVCVHXsZFjokoCdDngH/cQ2k8dIrwKe8gChzo38IAQovWUFRHm2/ZKKJ o/KPo6RMpE/T9TM6ml/fcIqYnF1cwH7AdnXMJsyA6wK5oEu51T1d03K0uIBmSxLdd5JKLuAU 2ZnExN3x6PHsp46v84qgKg1XBJM9KTWKxQHzb5xWGJK4yiLJu7rKen1K+qRr8QyBqeDXz9XC 9S42RwcSJiOVMQGTGIExoUoBkie+cOUTqnI4yIVzR95B4Og6qjbU/4aZpCnmSOdSQyoOcqTv mzvlQnlcHeAXQUSbFKZQNZ1Tw0iyMvX+sIAzt8iWGbOsQvgj9VBExNb7p4bwbFMSroKcUlDs 0xyuRj2gWWoXRZxQeEk5PvM8zNfjpr43GmZfGe5fhEn0wfq8DrBRpfoBdrfzKJ90H8FuPYK+ iL3nne4vs/Gj6aOtJ1tphNHeHA+S81t0Wh9m1yxxYHxqsr219ccnT9bJyyjZsn82N3eePN7+ w+M/PvlDZ73ZbCaPetnHR8MZ5prY2LjdwH/+c9LcamwlG9uNxzvfJn/+8/rG18kuCE4Tkgdq 3Xqys7XzpKGdtV4PRufAOu2ho+VojBqF5DUwTGPKKYz9z7J8KiXrOiG318kDbNnEbni32YHr Gf8iBcTy5FXrrHWYPH+RVIHzqcq3bjJPn+JgT5/usjxX+v1bIMG5fMufvAH+gI6fgn46Vynq WNPRL7VqZKsorbtpKL6RS7UVdjkFBO9hXMXcTusbVzfJf0iacAxQiC/j6VOUIqDJM3/HkUnv kAgso65vCOueUiqX2k/Rkd+jMqy6nCmXpukDhc4/JVHAjaTabLKjPvzbrsuOt5Rpq2REFMbK BxWf9Sqp+WKTsF8EvvvYHZ+I53948ninCo3sZEvU97/n9EwrMzX69sN26ed2ORE3PlzVv8Ja 1FOLDS5Go+2lvltuD3ZiexAaE/7Vt2HlpS40ufyrr7j4neun2U388rwzucetKppc/p/dq8iX rmcYL8MN/nGPOx2368iz+DXmUkFVHkVWn1AUuMnIhk8mfpyOoy+mMAbNF8Bi1arckKBKp+YL DihBh/k8dQlFkOMQJZHfnOSLyKxeUYHz89Fs2pyOmuTegZ9js1cj1D33JZ0IRbJiVZ1Ogmyf aKIpWRs6BlD5hvENMU/Y2UTNghSEfXvn1Z7ps5kcKQCXVGAd2deM/IiK3HQ+QoAs/CdYM9xo ykShYqeSx7XnZli16RfLbvqF2sUL2fQL3JeUV4Ubvt1IFp4DruB4KIiAvzRNxiFrpvY+pWVy Km7+HPY5I1Ut1W5VLTvl1Zn18Xcu4O/87wO89tUxLx3j5P+OH0iGqj1gWl+22vsJXIVn0Y93 4OO6j1cWMF+gpCq9KHFsMj0fbCe1Dqzn07Rend+zcnDU3j89Sw6Ozo654w+tw7f77VqVnRBh 5dV6pRzGTmz0HX90xACTrQrTYpm9I2myOg807IdORSCpz033YnVGO4zMObx47YSLApGUATz2 L2JcMChiJ8LyUK3Kf6fbdh3UIF8Wk3O1+zljcopyairwZTyikDJQAy+nj9TbHhD2eEHT4oWH V38fkP86otfff0KpIlQDwM67/VnfeO9BzZXFDQXLmv+tImSns2HUcITWnwJJS17d5wtoKIKx Nc95Cu1JorwAu8n4XrcvWBBRq6FfwoYGL50J89XN8PdbP2n3Y5KMPnm783C8rQ41wPEdH8e7 y+J4V+F4txTHc4fjOwtwHICwvo5xPILg1QJyw4do67zwoERxegEKyxbWTpLmCyAX8GO3fncU lqhyX8zF7+xcLUonUXx2bfOVUbq7HEp374jSRROaKhBkMfVAnlTAcZTmsfCO2fWThCtYouKW iTU6RpCLDiqMbvOGcU2Y2CNmtdj4iHRuUhrHYauZLhsJKbfsbHhFBWyGvb5EXg+L74YmzjHK /CtWDxtw4DFcMHnBMEXCp8Jzhq/MNn+FfXIs1TTRH1KuolRscBRKurO+8dlbJsY6MulWtHw0 vge5ZAFK5yug9OpUOl8OpfN7QmmbDrccB7iYY3Ka5ezbFMYpk8UNzV1UjbODuaaQy5faMxmn rzE2gKQNCIfgnEJUwIj3kziAdBKs+zBJXJopzKPrmYk3b4+cwkrPQc6tKHZulaLnnwQ9l71Z 7RK2p2TyCy6RrMdrwpNc7lL9/xuzBF8jCLv4xrSrpVztqse7tcz5PlmIlXNu70jyqfNJ5FEC iwB06lCNxQZ1Rr/8z8CbQLMEv5ZqneDXcq1TrjtGvlxVsa0wdVLCA9r9DjDV0SyqDUj8iS2F aE1XEZmpn9fcZ4p1ceqAajTbXlCVss6HVSV9mnJaC5ms8J0nvVBknVRscTa0lVLdVpnSef/z 0DamujT+3tuLUSeyldVlRY67Egn7+7/Pbq9AJE70VZ9/Ssu0+gJkI0IsMJnA5CpaOtCprlET e55lQ6mx0WMJXFL/PXdqjFDoUZoxqqlZe1i3SYaLj6TkAo6rgirrG3WhUzwuapBqW0Ju5s6e HOqdhl0pm8J1VXkQJQJiIlzctpPbiXbTy/4kKtkV1JMhjB0LA6XPba0qDLy4SjRgGNZRtPZA 4+DY8nkqYNIBmxzRkqjRHKAHXM5OmvyfpPpfsVpwVdERA/b8Wdoib5PDgU1rlZ8xCZlMzywW Xb4CX69Q2M6VnKznlOY3w65TXv6HGVBSY92y8/Z7/52V3dSZJAEpFmyzUYjLzj7kPUXMqQqS JxrLrZIbc7AbXcH6hkUuvgQxT2NkJPNwctUlVrCzeAU70RXsVCPXlFC43kiWnuOOneNeufnn e1Hao68UGcuit8tiM+6RQWUClSpLkk19DiLBZDRIpSi9Mg3QKHnZbtzDKPCi2rV89dyOiIxU wfBFqWjJx6xnd8pE5ygqM806k97oepjiBxrn419cFL9Y3+iNhlkqsj/qJpvNZH1n8/HW5s76 +v8FeTqmxRSPAQA= --b0cc903187b6440280b0a03b3c32b134 Content-Disposition: attachment; filename*0="v32-0002-Remove-How-it-Works-section.patch.gz" Content-Type: application/gzip; name="=?UTF-8?Q?v32-0002-Remove-How-it-Works-section.patch.gz?=" Content-Transfer-Encoding: BASE64 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 --b0cc903187b6440280b0a03b3c32b134--