diff --git a/addons/account_peppol/__init__.py b/addons/account_peppol/__init__.py index 2ae6446f9dc..7d05ac17566 100644 --- a/addons/account_peppol/__init__.py +++ b/addons/account_peppol/__init__.py @@ -3,3 +3,4 @@ from . import models from . import wizard +from . import tools diff --git a/addons/account_peppol/demo/account_peppol_demo.xml b/addons/account_peppol/demo/account_peppol_demo.xml index 110101092bb..0a889be37b4 100644 --- a/addons/account_peppol/demo/account_peppol_demo.xml +++ b/addons/account_peppol/demo/account_peppol_demo.xml @@ -2,6 +2,10 @@ account_peppol.edi.mode - test + demo + + + account_peppol.mode_constraint + demo diff --git a/addons/account_peppol/models/account_edi_proxy_user.py b/addons/account_peppol/models/account_edi_proxy_user.py index bd2d46f63de..e06278b552f 100644 --- a/addons/account_peppol/models/account_edi_proxy_user.py +++ b/addons/account_peppol/models/account_edi_proxy_user.py @@ -4,8 +4,9 @@ import logging from odoo import _, fields, models, modules, tools -from odoo.exceptions import UserError from odoo.addons.account_edi_proxy_client.models.account_edi_proxy_user import AccountEdiProxyError +from odoo.addons.account_peppol.tools.demo_utils import handle_demo +from odoo.exceptions import UserError _logger = logging.getLogger(__name__) @@ -20,6 +21,7 @@ class AccountEdiProxyClientUser(models.Model): # HELPER METHODS # ------------------------------------------------------------------------- + @handle_demo def _make_request(self, url, params=False): # extends account_edi_proxy_client to update peppol_proxy_state # of archived users @@ -47,22 +49,10 @@ class AccountEdiProxyClientUser(models.Model): urls['peppol'] = { 'prod': 'https://peppol.api.odoo.com', 'test': 'https://peppol.test.odoo.com', + 'demo': 'demo', } return urls - def _get_server_url(self, proxy_type=None, edi_mode=None): - proxy_type = proxy_type or self.proxy_type - if not proxy_type == 'peppol': - return super()._get_server_url(proxy_type, edi_mode) - - peppol_param = self.env['ir.config_parameter'].sudo().get_param( - 'account_peppol.edi.mode', False - ) - if peppol_param == 'test': - edi_mode = 'test' - - return super()._get_server_url(proxy_type, edi_mode) - # ------------------------------------------------------------------------- # CRONS # ------------------------------------------------------------------------- diff --git a/addons/account_peppol/models/account_move.py b/addons/account_peppol/models/account_move.py index dcc3d02e027..2e48ec22291 100644 --- a/addons/account_peppol/models/account_move.py +++ b/addons/account_peppol/models/account_move.py @@ -1,7 +1,7 @@ # -*- coding:utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from odoo import fields, models, _ +from odoo import api, fields, models, _ from odoo.exceptions import UserError @@ -21,6 +21,7 @@ class AccountMove(models.Model): copy=False, readonly=True, ) + peppol_is_demo_uuid = fields.Boolean(compute="_compute_peppol_is_demo_uuid") def action_cancel_peppol_documents(self): # if the peppol_move_state is processing/done @@ -28,3 +29,8 @@ class AccountMove(models.Model): if any(move.peppol_move_state in {'processing', 'done'} for move in self): raise UserError(_("Cannot cancel an entry that has already been sent to PEPPOL")) self.peppol_move_state = 'canceled' + + @api.depends('peppol_message_uuid') + def _compute_peppol_is_demo_uuid(self): + for move in self: + move.peppol_is_demo_uuid = (move.peppol_message_uuid or '').startswith('demo_') diff --git a/addons/account_peppol/models/res_config_settings.py b/addons/account_peppol/models/res_config_settings.py index b3691641ece..d3e687d83e5 100644 --- a/addons/account_peppol/models/res_config_settings.py +++ b/addons/account_peppol/models/res_config_settings.py @@ -5,6 +5,11 @@ from odoo import _, api, fields, models, modules, tools from odoo.exceptions import UserError, ValidationError from odoo.addons.account_edi_proxy_client.models.account_edi_proxy_user import AccountEdiProxyError +from odoo.addons.account_edi_ubl_cii.models.account_edi_common import EAS_MAPPING +from odoo.addons.account_peppol.tools.demo_utils import handle_demo + +# at the moment, only European countries are accepted +ALLOWED_COUNTRIES = set(EAS_MAPPING.keys()) - {'AU', 'SG', 'NZ'} class ResConfigSettings(models.TransientModel): @@ -36,6 +41,17 @@ class ResConfigSettings(models.TransientModel): has_peppol_participant = fields.Boolean( compute='_compute_has_peppol_participant' ) + account_peppol_edi_mode = fields.Selection( + selection=[('demo', 'Demo'), ('test', 'Test'), ('prod', 'Live')], + compute='_compute_account_peppol_edi_mode', + inverse='_inverse_account_peppol_edi_mode', + readonly=False, + ) + account_peppol_mode_constraint = fields.Selection( + selection=[('demo', 'Demo'), ('test', 'Test'), ('prod', 'Live')], + compute='_compute_account_peppol_mode_constraint', + help="Using the config params, this field specifies which edi modes may be selected from the UI" + ) # ------------------------------------------------------------------------- # HELPER METHODS @@ -61,6 +77,26 @@ class ResConfigSettings(models.TransientModel): # ------------------------------------------------------------------------- # COMPUTE METHODS # ------------------------------------------------------------------------- + @api.depends('is_account_peppol_eligible', 'account_peppol_edi_user') + def _compute_account_peppol_mode_constraint(self): + mode_constraint = self.env['ir.config_parameter'].sudo().get_param('account_peppol.mode_constraint') + trial_param = self.env['ir.config_parameter'].sudo().get_param('saas_trial.confirm_token') + self.account_peppol_mode_constraint = trial_param and 'demo' or mode_constraint or 'prod' + + @api.depends('is_account_peppol_eligible', 'account_peppol_edi_user') + def _compute_account_peppol_edi_mode(self): + edi_mode = self.env['ir.config_parameter'].sudo().get_param('account_peppol.edi.mode') + for config in self: + if config.account_peppol_edi_user: + config.account_peppol_edi_mode = config.account_peppol_edi_user.edi_mode + else: + config.account_peppol_edi_mode = edi_mode or 'prod' + + def _inverse_account_peppol_edi_mode(self): + for config in self: + if not config.account_peppol_edi_user and config.account_peppol_edi_mode: + self.env['ir.config_parameter'].sudo().set_param('account_peppol.edi.mode', config.account_peppol_edi_mode) + return @api.depends("company_id.account_edi_proxy_client_ids") def _compute_account_peppol_edi_user(self): @@ -92,6 +128,7 @@ class ResConfigSettings(models.TransientModel): # BUSINESS ACTIONS # ------------------------------------------------------------------------- + @handle_demo def button_create_peppol_proxy_user(self): """ The first step of the Peppol onboarding. @@ -109,7 +146,7 @@ class ResConfigSettings(models.TransientModel): company = self.company_id edi_proxy_client = self.env['account_edi_proxy_client.user'] - edi_user = edi_proxy_client.sudo()._register_proxy_user(company, 'peppol', 'prod') + edi_user = edi_proxy_client.sudo()._register_proxy_user(company, 'peppol', self.account_peppol_edi_mode) self.account_peppol_proxy_state = 'not_verified' # if there is an error when activating the participant below, @@ -144,6 +181,7 @@ class ResConfigSettings(models.TransientModel): # but we need the field for future in case the user decided to migrate away from Odoo self.account_peppol_migration_key = False + @handle_demo def button_update_peppol_user_data(self): """ Action for the user to be able to update their contact details any time @@ -245,6 +283,7 @@ class ResConfigSettings(models.TransientModel): self.account_peppol_proxy_state = 'not_verified' + @handle_demo def button_migrate_peppol_registration(self): """ If the user is active, they need to request a migration key, generated on the IAP server. @@ -261,6 +300,7 @@ class ResConfigSettings(models.TransientModel): response = self._call_peppol_proxy(endpoint='/api/peppol/1/migrate_peppol_registration') self.account_peppol_migration_key = response['migration_key'] + @handle_demo def button_deregister_peppol_participant(self): """ Deregister the edi user from Peppol network diff --git a/addons/account_peppol/models/res_partner.py b/addons/account_peppol/models/res_partner.py index 10a20965946..140347e3e7f 100644 --- a/addons/account_peppol/models/res_partner.py +++ b/addons/account_peppol/models/res_partner.py @@ -7,6 +7,7 @@ from hashlib import md5 from urllib import parse from odoo import api, fields, models +from odoo.addons.account_peppol.tools.demo_utils import handle_demo TIMEOUT = 10 @@ -51,6 +52,7 @@ class ResPartner(models.Model): else: partner.account_peppol_verification_label = 'not_valid' + @handle_demo def button_account_peppol_check_partner_endpoint(self): """ A basic check for whether a participant is reachable at the given Peppol participant ID - peppol_eas:peppol_endpoint (ex: '9999:test') diff --git a/addons/account_peppol/static/src/components/peppol_radio_field/peppol_radio_field.js b/addons/account_peppol/static/src/components/peppol_radio_field/peppol_radio_field.js new file mode 100644 index 00000000000..f293d7b5ae1 --- /dev/null +++ b/addons/account_peppol/static/src/components/peppol_radio_field/peppol_radio_field.js @@ -0,0 +1,38 @@ +/** @odoo-module **/ + +import { evaluateExpr } from "@web/core/py_js/py"; +import { RadioField, radioField } from "@web/views/fields/radio/radio_field"; +import { registry } from "@web/core/registry"; + +class PeppolRadioField extends RadioField { + static template = "account_peppol.PeppolRadioField"; + static props = { + ...RadioField.props, + hiddenItems: { type: String, optional: true }, + readonlyItems: { type: String, optional: true }, + }; + + setup() { + super.setup() + this.initialSelection = this.props.record.data[this.props.name]; + this.readonlyItems = evaluateExpr(this.props.readonlyItems || "[]", this.props.record.evalContext); + this.hiddenItems = evaluateExpr(this.props.hiddenItems || "[]", this.props.record.evalContext).filter(item => (item != this.initialSelection)); + } + + get items() { + return super.items.filter(item => !(this.hiddenItems.includes(item[0]))) + } +} + +const peppolRadioField = { + ...radioField, + component: PeppolRadioField, + extractProps: ({attrs, options}, dynamicInfo) => { + return { + hiddenItems: attrs.hidden_items || "[]", + readonlyItems: attrs.readonly_items || "[]", + ...radioField.extractProps({attrs, options}, dynamicInfo), + } + }, +} +registry.category("fields").add("account_peppol_radio_field", peppolRadioField); diff --git a/addons/account_peppol/static/src/components/peppol_radio_field/peppol_radio_field.xml b/addons/account_peppol/static/src/components/peppol_radio_field/peppol_radio_field.xml new file mode 100644 index 00000000000..bf3fb157d59 --- /dev/null +++ b/addons/account_peppol/static/src/components/peppol_radio_field/peppol_radio_field.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/addons/account_peppol/static/src/components/res_config_settings_buttons/res_config_settings_buttons.js b/addons/account_peppol/static/src/components/res_config_settings_buttons/res_config_settings_buttons.js index 12c304d5359..e1b8f1b8621 100644 --- a/addons/account_peppol/static/src/components/res_config_settings_buttons/res_config_settings_buttons.js +++ b/addons/account_peppol/static/src/components/res_config_settings_buttons/res_config_settings_buttons.js @@ -31,6 +31,30 @@ class PeppolSettingsButtons extends Component { return this.props.record.data.account_peppol_proxy_state === "active" && Boolean(this.props.record.data.account_peppol_migration_key); } + get ediMode() { + return this.props.record.data.account_peppol_edi_mode; + } + + get modeConstraint() { + return this.props.record.data.account_peppol_mode_constraint; + } + + get createUserButtonLabel() { + const modes = { + demo: _t("Validate registration (Demo)"), + test: _t("Validate registration (Test)"), + prod: _t("Validate registration"), + } + return modes[this.ediMode] || _t("Validate registration"); + } + + get deregisterUserButtonLabel() { + const modes = { + demo: _t("Switch to Live"), + } + return this.modeConstraint !== "demo" && modes[this.ediMode] || _t("Deregister from Peppol"); + } + async _callConfigMethod(methodName, save = false) { if (save) { await this._save(); @@ -74,10 +98,14 @@ class PeppolSettingsButtons extends Component { } deregister() { - this.showConfirmation( - "This will delete your Peppol registration.", - "button_deregister_peppol_participant" - ) + if (this.ediMode === 'demo') { + this._callConfigMethod("button_deregister_peppol_participant"); + } else { + this.showConfirmation( + "This will delete your Peppol registration.", + "button_deregister_peppol_participant" + ) + } } async updateDetails() { diff --git a/addons/account_peppol/static/src/components/res_config_settings_buttons/res_config_settings_buttons.xml b/addons/account_peppol/static/src/components/res_config_settings_buttons/res_config_settings_buttons.xml index e0ca046c61a..0edfde82218 100644 --- a/addons/account_peppol/static/src/components/res_config_settings_buttons/res_config_settings_buttons.xml +++ b/addons/account_peppol/static/src/components/res_config_settings_buttons/res_config_settings_buttons.xml @@ -9,14 +9,14 @@ class="btn btn-primary" t-on-click="createUser" t-if="proxyState === 'not_registered'"> - Validate registration +
@@ -25,7 +25,7 @@ class="btn btn-secondary me-1" t-on-click="deregister" t-if="proxyState === 'active' and migrationPrepared === false"> - Deregister from Peppol +
diff --git a/addons/account_peppol/tests/test_peppol_messages.py b/addons/account_peppol/tests/test_peppol_messages.py index cc11ebf2948..7eae7628072 100644 --- a/addons/account_peppol/tests/test_peppol_messages.py +++ b/addons/account_peppol/tests/test_peppol_messages.py @@ -24,6 +24,7 @@ class TestPeppolMessage(TestAccountMoveSendCommon): @classmethod def setUpClass(cls, chart_template_ref=None): super().setUpClass(chart_template_ref=chart_template_ref) + cls.env['ir.config_parameter'].sudo().set_param('account_peppol.edi.mode', 'test') cls.env.company.write({ 'country_id': cls.env.ref('base.be').id, diff --git a/addons/account_peppol/tests/test_peppol_participant.py b/addons/account_peppol/tests/test_peppol_participant.py index 1730066d136..27b1d849d59 100644 --- a/addons/account_peppol/tests/test_peppol_participant.py +++ b/addons/account_peppol/tests/test_peppol_participant.py @@ -18,6 +18,11 @@ PDF_FILE_PATH = 'account_peppol/tests/assets/peppol_identification_test.pdf' @tagged('-at_install', 'post_install') class TestPeppolParticipant(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.env['ir.config_parameter'].sudo().set_param('account_peppol.edi.mode', 'test') + def _get_participant_vals(self): return { 'is_account_peppol_participant': True, diff --git a/addons/account_peppol/tools/__init__.py b/addons/account_peppol/tools/__init__.py new file mode 100644 index 00000000000..430be579804 --- /dev/null +++ b/addons/account_peppol/tools/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. +from . import demo_utils diff --git a/addons/account_peppol/tools/demo_bill b/addons/account_peppol/tools/demo_bill new file mode 100644 index 00000000000..d0b1e2f0da0 --- /dev/null +++ b/addons/account_peppol/tools/demo_bill @@ -0,0 +1 @@ +Z0FBQUFBQmxKVDZxTkRmMFBib0VheVp6aEZfSDVqZFdXQVd2UWVrRkRHQUZ5eXhwVFpscUo4VGtXaGFpeE1PLWZnNFJ3c2FTTExjM2dDQ0xLTzNFb3pYbFFpYnpWSlk3RlpOR0NxeXdjb19tcXRnUGlhcXFxdTl1dG9WZ1F2dUhfOFdjWjVjQmxYZ0FlVFBiVy1VY19TS192U203MU1JSzNsUFZwRUVEZUUyR1pzNVhIMm82Qm9oY2VBQ0lpU0tsRWpTb3E2LU8xa0d6ZWMtVVZzcWFURUdqcG8ycWZvTG11YWtKU3RXcVI5RktSTFlGaGZPTmJvd0xKelVtQmZ1YUdwbEdIRnJsd0l6ei1NMHBNQnRXbzZDVHpBU2xaMk9LYW1IWklnZzk5TmlUdHJKaTV3cGM4aWRvd3hiUGYtU0lOZFZTOFh3NVRkcjBRajlzaGRhZm9SNHpHekU2X2Q4bkJiVTVEdjFkTU9iX3lmbm1tU0dQcXNETW9yZWhOTWpDTXh1OW9Bem5seHR4cW4zdlV3SkQtMjEyb3VZalpuSzc3VUQ2VTVrMjVfNU9oZmZRU2FVWW5HSzdWS3dUbzZlRFVEMWwzT0dGWHA5ZGJ0STk3TmJaUExFdkRGLVdMNmstV05tOUUtNFJ0dDVBbnZ4d2xBMHJEeTZRcHVLeHhfZGJkS2lEUXluZl9MN0NyVGpld0JQMl9JeURCZFRuQnVobVFMSTYtelY0U2RfT240SGg0cnhuQUhCX0xnWGVHVXllM2UxOUY0bW1McWVFXzBhRjFPc21ra2IzV2M3TUdqT3VLZ2Flbm1HbERNWmV0d2R2TlQ4aS1uajhyTzNmVnpCWUVzcm5zUW1hOUZBWnB2enlzSEpYUGJ4dWV3NVBBSnd1Yk5sOTlHOWVXWHpjZ0pUN3lQQnpVblFUZ21KUUdoNU5LLXI5d2N3THM1QnlXWWw0ZmxUNFhRaTVzZGtJUk5kS241U0drYU9pYmFKQjNIVDRRTEFmWl9CdGtGa1ZJYkdtYWF1M1hXM3Iwd1FZRXh1SUlaNF8zTHptZDdfMmQ0M0pDNlg0SkVhaElPSC1Semdod2FfTGhNa2hDTU42ZElDSEpOREJNc0pieW9wNnhDcEVFb21vRHh0el9GNEZkbF9LVklTQlpqbFpsUFRaREtTUVFEeDM0alpJaVdZOUxvT2syV2djUS1MeEJQQTBFdXRNQk5mVjR5QVpqLXdFVWxCWmgwSjBBajNoc2tpYWhWU3RITER1N1czQnI2X2d5WEVLVmFlN3Q1TktrZWxxLTk4Uy1wOEZCbWFTZ1dSLXhsRFVSM0xoWHl0Qk1wNHhHN0xyUzF4dzFiVnNlWlVYRFE1UU90Q1hSWHhtOVNERFVSX1ZoMFVBOExLblVnTThWUVY4UnUtWWdLNDZEbUIxN2lYSEtDQ0dYWmVzNzQ5OGhLS2ZXeEFxSVplcHkzbjUxVXdHT08wc0tVV2hnSUwxeW1VRFJYRW1BRGxRYWxIdXdfdUlqOWF5ZDN5NmtHdlhrWEtjd2hBN2xlUkhSZDFEanl6Yzd2SEk0ZkxhT2tobHJxYXRpRDZSeU1wZ0xkZlBBNy1FVWdHRm40d3B5X25HcXQ4MnpOZDdPamw0dFE4SDFDRTRVMVNqWDg0X1FBTlJsczI1NzdON29iZ09EOF93TzhXb1VTRV9ZSkhLcHFyY0g4dzlyZlQzeHVoSXB6U2FoTXFnLVZmLWpCdWF6VmZxU040OEdqaHlvOW9La3pJZWwyaGtTY2VZcFdTVTlwXzNsdm5oRmpMS3J0VTk2ajRlU2JWdktIcWlKZkVUblZBSmE2WXFHbGFrTE43ZU1KaGFFZE4yRkliTWhiN0lWeEJIa0RmSnhWbVpfVmdzTno0bE9JSG5nU2N1VlI3V05uQzNRYm94UVByR0FtLTZyXzZFNVFhSldhTk9qSDUtNldJTmZCYlV6M2p2S1MzRl83UGZCSktRZEp3UjktTUpXX1pYeTBWSE05bXNmQlZaNC1OcTltb3U2b1J2VlpMenJEM1BlWFluRzBNTmJ5LUgzMFhhY0dfWUkxeHE4SkdwbWZDSlNvbHhYUTByMjlKZlZ0MlZuM1pIb1lKQUlsX0wweng5VTlsWnc4aDJqUkJxZ0MwTk4tVVRsaWFocVBWWmhSRklPN24tZlFCQnZOUVlSWXdyZzFMZG5RRXg1UlBXa0tNMUxTdDJ1THlyc05CZVh1dmNwVUVGQld3NHVQNElfRUVXRmJUN2ppdUhLSUxpaHc5TEZpemUwc3ZhRWVzT3VrNW5zaEw1VkRuT0NpZTNITTNNTmJ1Q2N3bUdoa0pXd1hQRGV6OVZNengwbkNqZC1QcW12NTlvLUFYdTQxZUtQSUJxMzFIWTZienNOZ2ZnUUR4UUNRUGRQdnJDd0N1NUN3a1h0VE5jbzdqcnZCY3psTG9tVWRJQTZKV1FFOEE4NFZJM0VkN2ZoSDE3ZmVTVDhxWHl5bHBQb2QyQ0JsTHNoOWhrTnBoR0NqTnc0Z1dmOTd6N0FsLXphU1FzZXNDalNhY0w0VUtZeGRRRmhndTdoaGo1VEVhVlZ5QmVTaVJSUXd0TlBVTzEtblRmS3BNREV1YVNMMUVKSjFmdW5CQ2dZQXNFZjExV29iUVVSWTBhZFk1N2h3OUpEdXVvZHNqYWpyZFBRc3Z1ckZibHp3ZmczREJDYWR5MExITnhRT1U5cDBaSTVvRWlDaTBVOWRKZHJ5YlpDQjE5cmVDcEM3TDhYUUZ2bVNSN0JRUG9kTzBFNzVod2U0UWI2LTR5QlltUXRsWVF1REh0cXYtTHNBOHNFQXB4OWtaTWRubzZWdFdVVHdWWjAxcDFSeVhkOW9YWnhsWTd5RTlfbDdVRzBxbXl4S3dud0pvU2pXZE5WMU1tWTdHLUE0M19EVVNlM2lvcGk0M3BCdDJuMVg1ZF9sNml2VWRDcFBOVlBSZkJpQnVGU3htYzZ6R1NsTWZ5OU9MVVZfNTFiNUJNZGRsMWU0cGtfUFE0bEF1Y0dQZFFvdk5tN2xNbWc3UmFHdkE2R1lCeXFZMDlxRGh0eExTV3NvSXdTWkw0cUdQSnMtMkJUSGVjNGQ3WlNEb2tYeTVvRHRpNGpDZ1EwQV9lS25HOXZHS1V4LUhDU1FfWjg3UnJwYVJ4UWZPdFNyNzBsWWpCdzFYd2FOUXJTdVNHeE1Ua3htOHVwQUhtcEdjR2NFamxRR3VLWjVqeHBta0R4SGdGSFdPT0dQZUthMDdfMHdKMmhKRTBvRXZodDVBS2dvZmxGNC1UT0hfZVoxWWNGXy01aVhPVzlvMGY0cmJJeERLWUlNNFAxZTlEUkFMRjdNN1hZQzJ2OEdlMV95T1NtWDF0aTc5U2kzVG8yM3YxY0d4WHltdU5aOE5JZUdFaFFqaHdFYWhiWklyOVBNWmx4VlhmNjhMeXQ2ZUFzamo4aTNTU3dJZGs1LXVTV1RTckVkLWNUNFNyMkUwUjNIclZraFp0WG0tdG9kdU5aekQ2TlQ0VUZJUDhjamxvNzZxQzhLXzJzV1J2Q0RKSjJaYzFvaVNDM01paHNVZ3JVdUpxS0xfY2pzVG1zUzMwdmphb2FLcjI4Q0JlUGE3eWd1a0pxa2lZQjFtUFVpUGo2dzhwZWwyVTk5Q3dqb2FvZVhxX2kwaEdxcU1QV3Q0VllNalhmdWVCMEVkN0RjU2ItcTloWnVlc1pON0FVbTdaNm95elJEcms1ZTZoS1MtRDNuMHRMUjk0WHNqTnNHNXhCeG9kbm01cVVnZ19EVjJsVEdNVTlTQ29NTmJ3ZDAzZ3hrN1RaVk5TUGpnUnQzQXhzSUd0R0ktaFRXVENNSkU5OENNTjBYbzA2bzdrZ3VxVHpQWEdFcjlweFhaaG5McGc4VUNzUmFJbVBuWWMwd0lzcEZReHI1a1o2OEVQTzJGMTA1dUVmWVFMZTBHdkRMQzJXWndYb09BSk1HNWszemhEdl9BZXY2YnI0MWtBckloU01HM2h4MkpGSTVGSXJ1cmstWldPXzZtajRTZU9iUnYyTzVEcEFUSUt2b3FXcWZ5RmJXX0JwUWhzS2ZTNW9nTWdIT3R3djN2ekJqYXh4akJ6aUdtNEhmYjlkUGdCOERpVjVZdjhTc3NNM0x4LUdpc2F1YllFUklnSUdjclZ4Y1pzcGp6ZXlhQTVNblg3ekp3THFYVnBmZ3BuMkJMZk9aZWg1T1Z3UGprQ253WjJxbWtkODlQX2t4Vm1TQjExSE1WVWF0OERVdi1nc3QwdXo0Q3hoT0JNMS1wNG4zZVkxVFItVFJZV2J6SDg3eVlMNmt5NTdjLTFVNDRhTkljLXlyWkZPZFRNVTZOd0xfemVnS1FnUUlTVTNMeGtzWjNWeEF2TDJ6bmJhNlFiWmFYUzZHc3E5ZG10ZDF1QjVRamdvLVJhT2JzRFBDRm9xVzFHc3pYSmZiNThQWl92UTV4Z1dDUFA0WkVsNDlkOXN6ckcyNEo3RmFDZ292cHNFOVlnUjNITERRc2FseDRMNjJSUHVkeVJ2c1M3NUw0RHNCVmZVenRQWFZwMEdlQ1ZUZHNKbDJJUmR4T0FHSmVaNWNUVjFuRDdvb2NZTHNTbUxpR0pva0ZtWERDZjZLVXpFRlh5UVRPV2NkQUZNUGE0cW5ZOXhxWXFtbHBYUU1mTVBxUzMyNXFCOW5hOHJVaDc5TEJVdUkxMW5vdGFWdzJYdnN0bVFxTGxoUTVsZ1JEc3ZlQTY0WWNyaTF1SE1TOUtfMi1sVXFCSzBwZHlGZEJ4N2tyMkMzRVRWRmZka3UzaXhqbjFVTUkzNVozdWlOcU5XaWJZN2VmNHRCQnZaU3ZmVER6bm4xOXhmWDBjNjFMS3B5WTZxd0lPdjI2dDZxcFRVVzNPaF9jWEZxZUJDOGxNbHFKOElOTUtSQVMzcG0zQXF1UXFRRmE3VnFuVjlWeGlyZUpKMGZpRE81ZUNYcXlNb082RjltOHdqSDNkYktPOFNua1BCM3YtLThncF9DYmpKS255a1NpTS10aWU4aU8wMTF4ZTQwN0REMVMwSTlLNV9YbGxmSjJBWXpENTJjdURWd3dmOURKUWNyWDRZM3RyYnVZMFpmUHhYanNXb1gwYXVzRUJyU0RjdHVNb1Z1TU0zTkJWTUszZ2JpalpKUzVSUFdSSERTemZWNEFNR2tvZGRYNjc3aU9tdzFhcl9UMTBJT1E1N1UxNFp0RVZhLVBpZVFvWjdmSmFfRl9XdzlEZTNtTDZWckt3djlnWXd1MDRIbmtNWTN5VmZhczhjWjZicWs1VTltX2I4VjI5d3hURkcwYzVNaUF2R0FYNnhMYXZTaGlLS2ZYZGVGQUh5V2VwZjg3SkU5LWJYQmNDMjl6Q1dEOVh6YmdyOXZQVEx5YzNBMlB2cWN5aGlkQ2N3RzllRDJuSS1zcUZodW5URTdpOUVQT214RFVlVjIydThlTEYxdVh3SG0tcFVZTjhndWctN1pHa0Y2NmpTdVZmYTNFVlY3djN5b2hqOEl6WGFtZnhPYjJDdjBjMHR1em50UnZ5WmZYQnNOUHRjakw1ZGNIdmFJY0tUQ1ROak83cHJIYzBQNUJFcG9RZnJtcmNmQjJubUVNQTJMRm1idzhubVJtaHFIeTRGZzR0OXQyRWp3RW5JQVc1MndsVjJfc3RaYVlnLVNQSlRlc21tS1FwcmZwV3B5bmxWc21FVEtRenZ6a1lDRDdPNHlwX0RtTzk3UEM3TGtmLUFjUWJQX2JsYjJwZUpFdlJ5cUsyN1Jfemx1anJSSWRvM2VQT3JYcEhwTHVtcWRFUGRhaW1nWGtseWI4a3R1SWlDRUpHY1VZVXpQbEk0cEF5RUo5S2tTWXE3T2Nydkh1VUN6TWF6cnZXNExfdTBPNVFzU05zNTE5QVFEcHV4eWFyWXNSaFZjSVA0ZzJxc1E5WXlhQXc1TXdua0NaZ3lxb3kwV0hFc29mdGdLcVlFa2ZZeVBuUVZId2txRFdOb1RnRFlncGlGYUNQendOUVlfX3FoNUdmRHJ0ZG04T2J4QXJnaGY1Skg0eHV3TFFYb1pHWHpRR0I3SDJkVmpYclFPdlk0Q2c3ODVLTkw4ZmRKNlRpSlJocEJPUFUtQnlWNFZZNHFPRlZNRUtmWGlTSXJkSEc1QXpkRlAxQUkyNE1XcFFmbThpdzBUUG9UdF9xdjNrWmZxLUJjbUJOdHhqa3lQSXpiNElKZjdFTUxfbURONEIzeGkxUWpvUkZGMHlrMDF2R3ZRUEt6NXNmU3R5akVlR0pSUFFoZTUwaUhSMlRyc0h0YlJVdVRtMzRJMkFVTnlZUHdOSHIxSTJzMV9jMEswRnVUUERRc3puVDh0SDkyVFgwYW80ZjRacjhsRVN6M2MwSXRxV3E5dzB5LU0xOENxelU5V25VeWJ4MGhJX01iX0JZSmQ1UVEyZnpQYVRucjNsUjI4Tk43enNFTGtVc194aUdzZjVGWlNxbzJOZTJVVVRreWdlcUtoQmRMZWluaGxIZks0bTMtZGktNXl6cnVUbVhIVEpBc1JDbWc5X3BOYXlJRWx2bzRRN2hJQ1R5elVDZnc2MWtiWEpEVzlTV21VT0c5MFkxU1JCZjU0VWlKS3ZUYVhnLUwyMVU4OWNZRmFBd3pET3hkTlVzRUJULXBrRW03cE15cFJYRjNTcnNubFBzUy0wcHc4Q3ZfRzgyYUlaYTc0ZVVIQzd4V3hORkIzYTRvZWtTYmV4dzRtLXdta2hGQXkzdVpiOUpmTXB5WlJHSGZtMnZxZF93bHdpZUZKZTh0VFphd2FfaXdXeFdHYW00QnVGSldSTzZ0YzBvMUFIZDJFYlgzdjBzcFpWNkZvM3FNelhTZWhCTHM3bjgxaTczNnhybGU0ejhPc0h4SnU1QWhWMXhhNEprUVB6MGphZkJsT2xhbV8wbS1JdndoNGt0SkdKaGZybnB5SVI5VWpCdnVrVElaRmc3cWZWRG84a3ZrRUlpbmVOU096V1VvZkRZU0lMWWhjaDdRSllFaThhcWtTYXNLNVAwMlNFbUNucm96MVB1eFNVcjM0R0x5NWgwYWFrMTBuanA0cWZqS3pySl9rWEpoajFncTRCcVJvZmptblh6cHlzSjQ4N2tBVXdCTWcyc1BxckY0TVN4WlpndzloRk5ZX1RfSW16SjNta3FMbmN1bkVFdU5KOEVrUm5wTllrZmFJajBqenZrcXo0V0pqVjZMX0RWUG1ILURSb0pYSXh0S2cyejFTbGNYRUhUeHRGMlBLOE1TenJoV1JOd2FzempGQjZXdjlacUs1bnp4amhyVm5EV2hWVUxvRHhESld6RVZQdWttV3BtMS1zRHllVWRqeGV0WnVjcHJPU0lycjZrRGI3MUo2VTBKd0tud3lsNUhvWk5LSFlIZlNCdzlQeUNvOUUwM1NqN2FYRThxdzZ3OFk4WE1DTGluNkhOS09yX1V3S2pTNmRDX21OdFF6N1hFOVZyclVXalZwRmZ1bk5yRmRCVW9VZnZ4SVAxWjRhZEdub2hYRF95c2haSnhqX1NJRFpLYml2c2JSRnA0VUdXdnJ3Ym1FNkRrOTlaS1RJcEhwMWE3TmFUWmpYNnRJcTVVOXcyOFk2b3hpYkM4VnEyYXpKZXVHTzM5d2Fyc19TbUdCVGl1YTFaZ25XZnFhRnlLUW1rUzBaMGplRHhSOS0tdWhoM0hXWDJsUWViUUU5akRkaHFmcF9FdWctbXZPYjE4Q0VUemktM3RXSjNJOHNpWVBRTEhscXhYYkQyd1dsU3pVQjV3N25HZFBac05CeWJuc3hodXFOU3k3YTBSLVJqaHZzbllyLVRKV0l5R200eHFhWTR3LUZoQ0ZmanZUa0ZzV2dJeUpIYVowUGdqOUNUTGs3NjBIdTNET3AzR3FyRVJYcnhwREx5RkxFbmpFUEJVSENLUXZhdk92OGNGVDcxRGxkRGxTMkVTd2l1ZUJIX2l2bE1kN0E3ZFlfMzdrdnBDNjFWTWRKSmpSVjhsb2ZPaWs5aWNFTWJ4OHkydERoSzhSUEpTUlJrQjh3OW1GMjBob1ZvTWZ5aGpEbVZ6SlJka2czTklmajNtTTZncklnN25mME9aWkFicE5GMU14YzROSzZ2dWh1a1BHeHpfZWdfZ0hLaXdxbUxoTUI1bm5kaTFGZUk5NnRYSHkyZm9wSklXVFVFRUFDaXhMbXI5YV80djBoc1htRnZfU1VIQUxOa3ZJdjEzMHI4SmUtbDFtZWk2Z0ZYdTg1T0pXZ2k3bDRvMG0tSVJsZXpVMEhFcXJqTVZUWk14RDR4RFAwNVg0VHhvaWNReHhxZ0xlb01RUnNBS3JNQTlDc04yX25PdWh1dXJnYmw3bF9vdTdrTWJLTVlHNFE5MW13TXAzM3lUVjU2c2VvSVdGMWFhOHV3czIwVko3S3RFUzV0ZDZweE44NVY0Nzl2NE1hOW1lRkJhYVd4ZDdMaUJOWGwxQTJ1SEt0VTdXVlhyOFZ1NWF4WmFHaGFIUlJ0cUZrZlJoeERQeDl5V2NXNEtqMnYtQmpGalA0cGluNmR6S1ZIYWtBRFdaenl3ZDZsYVAyUFd3clZuNXB1dW5Zdy1RRzBiX0xxTC0wWF9FUm1CSjFTaXJqc0ZicUNhOG56TXRRT0Z3c29YOWpOUy1pR1BjcjR4dFZrbUN4SGttWFBmZGR4RldBQk5jcXBLblFXckZ6Tms3U1h5M01lSkpQa3JhaklTS2g3ZVlLYlRXak1mWDU1eGN6NjNINXR1VHkwS01FbWdhV0YzU3lwNDFuQkJtaXhZYW0xcF9RdEtlaElVZm9PcDFabW1qaXRPU2Rfa1hwVWFKWHlDVjlPc0liTi0yWmVjZlFvNlNsNlRUUTN1RUd5MmQzLVhSWExscW5ZMC1wbDZvejluTkFTa2lMdnFpdXRVSlBpMWl2QXk3ZjBFakpQV3hNalIyQVNrZWhpMHJTcnpPbW51M1lVU2dPcmJ1clpURVFwN1RMaE1qR2piTmM5ZzRaS2NmMVNSSzlZSTN3RDc4TGVMb09qVnFXUjRVN2RxM3pYZXRzMElSRWtDWVV5R3V6ZDlkSGVVdUZULXVqWTZIdUEzcnR3dENEclhQbHptWnpwNkpnRTlpcE42WllxSlhTb0tmMXRpeWlTXzFsRGhmdHQwY1FmNWdPa0hOM3RzYi1ncURWSlQwMlROYlhkZGtXZlJmeEZELXFybGV1Q20xLWFNSmhsbkVvZXpQTTZDdE90SzQ4VzVOaS1aTlNLZkllRFV3eDE3ZEd0R3VKck5uZnA4b0hnX2Z2SUVJell4YTRHSDFuV2p4TWxsNEhTS05nX3NTNlZ4RVZrV2xZWENVRXAxdDR5cko0V29IVFFoNFVNTThMdVpFRjZBcmNSNXp6Rk9mb1J0bnNiNTM3SkoyX2VoRi1ydzUtcWVjTzQyZkFaeThzQ3h2N2FlSkhwcUdYMFp4enUwZEQyYWV2QVRqc1RZeEFINUxuUFVEdjBGSndyS0txTkZ1ZnZXQmFsdVl0WkxGanljQzB5VERodUZRZEl1QnIxT3daVGhoMzNJNEdUdFdEZGxUVXctalF4Y3E1bVItREs1MFlSRlNtRFdCenFaVWdZVTJxR3paM2h5TWI0VFRkTDAtOUl0dUZBOURiWWZiMXcyYUh0Qkxid2NEWmMwbjJwMHZRaDAzV2NiSHM3T215ZGhlSTlDa2tZWW1lVERld2pDYXR6aF9lRkw0cDEzTHpYY3JWeTlWVUNKalhIWEtxai16ZnVsQWJyV3FwdEdYOVh4b1JmNDlMVHdrenpaWGhUeDRKNjNrQkNRanZuWnNaSGcxWXpuQlU2SDdJdTJxSml0UjFmODNJZTVRdXU3YUZrTU1OTlNucnNXRW43MkFLVVhuM3lZdWhOb0FBV1ZkSURic29Nb2F1SXVnYXVQVXFUb1k4VlhXR1k5bjkxR08wOFYtdU1Nb3Fza19OQzVHdGlBcUtPcHBfazNZeFVsaHNhTGNRcFUyYm9pV3QzaEpHdUpIeHRMNy1KZTIzQlFZSFNOQnNfM0ZDRGZOZElFVV9rZGVGY0FQby1TeUJSX0VZcTVYS1hsQTZRVUlCSk90V0pBUFNqY1JzNEhBOXRleUk2UzR5b1lYbUFsclUwOGNEenFKWFRWWDRRTGREU3EyVnpmUmlQeVdKaG1keGlQY08tcXdhVzgwd05HMU5JTVZZMEdZVjZzZ0I1cjNhaTNWNFU1Z3FrUEd0X08wb0hEWDd5bXVXSzh3bFpBUDZHLU5sX0k3TV9vV3UtT1JCcTIwZHlZUmFuOWFHeGNkQ2w4dm1xYUoyYmpmQnh0ajdEM1NuMkN6UFJ4djFnazZCYksyeW90ZlN3Z0g4VmtlOG1zcy1mQ1JGSUJNQS1jazhjOHlFSk9LdFp4UnBTb2loa2JKdFdPbEJyX3puVWs4Qk9OUVhHSHdvbnhiY1VlbHQwaWxDR0RzeVJUdHc4bHZ1ZjNVT19GMkV4NFhLSm1fMW93UGJyX20xaWQtMjBGc2JlaHJaYU9pWUNwMFctUGt5Q3lVS3BLODBxeHBrRi1KYndjZ1ZUUzRJX0d5eXhBY2liRGp4MUxEOHZ1bTZjNWFzUFR4a1hyZlNTQTNSdXdSck9SdFJPejlpdm9kUlJhcDRnSGpwMFpyUkt2cEgwSDlOb2lIZG9OSVdlTHpYRzFCc2NiT2ZFZmNNTnhnelR0N3VjME1PV2lWYTFvRzhxdmh3ZlFtYzFOcmFWVy0zV0FoUTdDQnlCeTNzTkI0RlhjdHRHd1JYZzdhaERpS2p1Z2dwXzAzYURWN3FWNTJhZUJNSVg3bVk2WHg2WU5LN0Q4SnY4Yms5bWxLWHJQOG1DelZTajFKT2JlOXNVWFZYeUViZXRiTFBmUTFtNXZUMDR3Ny14RXR4SkZjZHVTWldnQnJKMFJ5cFcxMWFjX0JJQlYwcXU4OUxNbmtrSXpsSlV0WFFBRGczVGRsY0FXQUtoSmJvOGxxM3AzTk5iV2tKOHZON3ZGUV83bldrX1JMSGg2WC1YUmZ2MGllWldkdjlyUzRXUHRKZ3djTV92YzNENFVGVFQxMlpPY3VaajlHd3FuZHdMOXVDWGlvY2ZYUmhJanMyZkVSaGc1Tm1Kc1RweFg5enY3YmFoM3oyRE1yZkFwTTVCUWVRbG8xdVdWaTR5Q0t4S3h5ZzB6VTUzb3hPcFUtM3U5aWZQUzZHUzVHUkRiOVNkNHAxTkIwNnNSN0RzWkhxSnlYTVFkeGVrRmtvWnU2dmhMZHBhZGY4cUxFdXVJVGpBeXZYc2owWjVnd1ZrdXhVV2N1SXJxYl9XWUVZSUNiYWhUOXBzVUNXVkh1VEY4RUI2dlZ4b1QtUWZGR3R4STl2SC1aTDVTR0pFSjdKdS1uMWdfYlNWNTg0dG01eU02VHBXS0plVlB2NFpqR2thWlM5RDYyZ2h4Mm9fczlVTmRpN3ZJbHJpWXZJMGJCTkl1akw5aVo4eWlGZ0UzRmpUNU1WSkFqQ1lrUVBjY1o4anN2bS1LT0ZXa3p0a0JhdWR3N3BDajFsSVJkZ3RNMEtPX05SbWVqak14RjVhZ0pDdzRnb3lFX1JXbHg0LXdvNDBjMUN6c092SnQ2UEd6YWRqOTNrQlJDV2xxRFVXWm1QUkdKWUpZYWNZN1l2cUZWSGtvRlFNUUg3UnU4b3d4THB0VzJKN2NBUThSaWM0RVFEM0ZkVjhYQ3Q0SXVKZlFQQmtnUkZmNjdzcXA1aG5IOVZvZXk1bVBJZE16OEFHMmhmY2dXU0RKNmxicUxMU1Z2QVo3Tk5HamRQVUExNlpCbWlBLWY1cFVaeHlwRXA2b1M2dkpXblVyS3ktYzFnTDFEOEg4dDAxRFNUQzhfU3VDdzc4V3VUek5kNHRrQVduSFNGalNDRW5BQ1ZuRTVteXUtMHZ2T3VOQ0ppLXVQbmQtSXZzb0xDQ0ttUkdyY2NjdDNiVkdKS0YxQjBVQW9ZQlktVmtLTFZjQ0RKMGFsaC0xMlcybEdyVWQ2TmRHVW1fS09qMEZ6YmN0aGFSaTh3UWxiNmNpSUI5OFJNRnUyYWkzSE1jYm1jSHRJZUJYZnRNV2UtbHRiX21Bc1lVekNtRER5Vm1PMGFRYUt4TVZQY2tyRWhmVVBvNUJyaGdUWWZISkVNUGxWV2l5U2RaMVVKRzBzWXV6V3dCNEM0WFMwWXNRaHF6QUtVMVpCNHNNUEZmRi1XU0MwcTBjeFB3Tm9MSnpKX2d6LXh1UFNkT1NRd2RrbC1LQmxCUTk4Q19lcEI3UTFzaVRLbHBiT1lZTzJyR2dNSWNlWTROUkhKd3Naakg5Ym1CcGk4QUtaX3ZRQTUxN3dzOVMySzllNGQ3RUZaUFFhSTBQVGV2TWV4LUI0QzZfZ09CcExGNTlFX0c2SnBjZGt4SUZqeUw3U285S3F5TmlHQ0FJMEZuWEpJdVAwRUdsRl9KX0RlVGt5M0RKY0lCbHZyQmJ0Q3l1MHRacmstYkRiaTZXRWVRTVJUenB3V3NJNmpTdl9qaWl2ZGVpSWZCMXJ5SGZ5UUZ3ZXhKMUN4ZExtTnNpQzJ3Sk9YVGVLRVE3VE1OSzA3Vl9qaVo2b3ljWHBoQTBPRnY4RzNHQ2VHTjNhLUYzaloxMnhmb0c3NTNvUXR1MEhDSmVkR0NuMWZxZHlmaDVBU0tKTnZ0T21sb1RLV1NzMFIyVVZTd3l1OUpMZG80Y1plV3BZSk1pXzZ6V3lveXhFM0gxOUpMb0NORWR4UzJseTZfVHliTDVxS3RKcjJ0WUEyN21GbFNRX196M2VZX0Z2eTRvNmRmWmtBLTFSSHo3ZFBBUzJOUXF0NVJRcEw3b2lIakdVbW5jRlVXSDRJSExOdUc0ekRuWHBtQi1aTXhfWG5VOXpNUEJNRjlkamxxcWhSeE40QnIxTVhxTXpqQ2RvSjE0OXBvWGFkX0ZtR2xVWDY2TU13VzhjcDVJSERBYmx4azYzbHNMSHVEdG1lVzMxdk5lWWM4dWZ1eDEwUFRMbDJudFBmTjFCcmV3UHRDY1duTE9GQm1Lck5IVFpHdUhGUENScW9reXFuTzZJSkNDMEQ0dnctOHo1d1c4MS1vN0VBdkZKaGdxME55YXVwSllhMk1RSjJVU1hjQUlwejBTTGQtQW53dXpZVmJZNEZUOU1idnVWckpPeXdKS29vdlk5bUlXMGlCa281c3RneURQemNIUURkMDU4MUM5c1UzU3k1UUY5RVVnOWhQRm5HVktVRXdlekd2dlVLdlFQX0hmVjk5dzduRGF0dGVaejZnV0tsVjZWc1RKVXB1SnhEN0JyMmlUMlZBMFBFZUFkc3pVSDdYX3VTdDdkV2lmQXRYTG9QcFQ4cGJFR2ZUb1BqUS05RndORUhJSnFRamZyMFExNVlnU21vaHZyamNtb2MwZ1ZpMkN3bzM0TTlVQzRpTWN5bFBDVlQ1aWJJNnY2Q283UW5yNVdXMXVpNXN1cXJOZnBUby14dGx5R0ZQcmVxTG9XX0JoaG9TT3RPLUpYbWdQMVVVUFQ4QUFWNmFWMFJtd2VwaDlJYmdhQ29uQm9KUGdGZDFMWDZZamVLcE1JZjQyRVo1MzN0dGxCejBDR1UzRzhUWUh6NVZ0VDRvVFdtOHB6WlNGQ2p2SHoyVVEtWFdUQVN1b01JNGdpYjdYbUV2X3g5TURxUl83TnV2NV9UMFR1U05KWmZQSDcyQm5JMkFXQ19MZzNieEY3eHRCcEN5aFZNSklrVmhLZEZMdGt2SnBSTllXQ2lDNmF2TE54VUE1NUYzeVF6d1F3RzdVaV9OTG02endaTEFRWHpxb19GbnNaSEZ1VlRWb0xqcnYxZEFRWHRNR1ljdDZEbk9YNjBaSHVNVmpaZTFydEtZdEtaNzM4WGUySms0OC1iY0JLa2JEajVhc09lWTNDLXhaVXRLZ3hZSVRHQnh4VEFsX3J1b1FzMWVQZTJGbVBVVXV5SkRKRFl6YVRMZHhmbWI4RXlpMXNLMDJELTBNQzNkM29kdl8xNTJOaXh3TnNlb2VZcEVSQ3o5THNUU0NiMkR5clZBWGVrak1HTlY0dzY5NWozNmV0V1Nkc19sWC1hT0QzN0U5V2t2TlNBVjN3eElwYXFGNGRIcnhGc1YtRC1jYUJMYlZsZll2LWFQTTNybUhJblVRSENiNWFHS1AxcHM5VUdhdmNQdVJFclhzQmt0MHpfUDg3cmZPakVVTU5jZXh4VDRpZXJCSWt2RGxXSDFybGNNcEpFVmh4VjZVZkdEcDVDaEhmd2RSaG9nQjFiQ0JKeHZyYkltYVNJUVZrYVNuZzdleVNZMUV4V1VPc01SdFBFUnNSU3dOcHNnNE4wNldWZm5sc0JQbGtGeWNSSEtJeFVhVzd2MnNOeDFNU1QwanJlZkNwenNiWUVSb2NIZXpuN1hZcmVMcVlETDljeldpUExjeEpzYVAwbWNuMXJxZzdkNDRMd0p4S1UyQTVGa0tFU1BUQmNLeFpJMTlUbVZNUHVENDFyNlJrbldyUi1zNGVnU2lGZ1VQVnFCaHVxWWNta0kyRFRQNFlUMXd5ZnpIQ3NiV1pQYTFEZXptcHJETk45cVJvcTNMa18zV2lsWWV6UDVKNElFaEp0dlRSVV9LYTM0Si04ZU14eDBiN2Y0a2E3QUc5amkwNU04ZVV6bU5VbXZETVdMOHh6OGtOUEdSMDZwZHY3QUk0Rk9KMVdXTzFGQ3JIbDVhaWlOVWtQWFM5MzJNWjB2T0xkNFRVYzhFUTVkUnRwcG1udnpYeWxXekdxQ2FEeXJwNHR6ak9XYm9leG1xWVh6M3hLbE8tampiS3ExMmVHc3c0NVNVZk13dXBDSWl2TC1UU01IcW5nWG1JX1FHeU91S1d5YVZSQmRvTDRKTEtMUFdYQWlydU1GYXJaTEZ5YV9KS3NFNlVnelJWaEtDSXVscUF2TVJ0bUFkdjlheFpkSG5IYjhVS0c0ZGs5SWdhNG1nM2Etd25BZEU2NDVrYzFsa21GbHBpdlNtMGdMRjM4eC1faUtLUDRSRGU0ejd4VC05b29OcVlXU1FrUUtJWmhLbVJNNFBtbHYtX09LWmxMeThsWVZZSHpPOVhnZ0Z1Ymk0UkJSaFVXYW9DQmNXN2NCbWI4cEdPY0xLRWViSFVza2Z2a0M4dWs4dE11NnpleTc0SEpEcHJLQVJpRkY3emlyaWpiQnBvakFPd1pSblo1dTNLNHRoNWRJWlZUT2ZtRkp0U0E4Sl96ekNIOHBEQTk2U0UzWjlfZTNCNDJDbTNBa2FIY09Db0RTblRrYWZyQ0RkS3FWVnFwMDYyTDB4RGNuLXR5RzlhNG1rUVpEbGF3VHJMTzhiRzB1R09icXVNa2x1Nmh1RWJQT0F5ckVFel9nRENONms0WkJSN1VUeUVQVm52ZkJhaGN0MzQ3X201S1lmMGd3T1A5MzVBRVcxMkJUUktfN19nRHJDLUE4dGlmbEtRRU5RUUhIbXJWQm4wWi1VRkFmUXRMYUwwb0lXM21EVE44UEFWeFNKY0RyekFoNG5pM3JKT0RKSF9uMHR0djVqWDZrMmtfUmlIVGNJNVFXT0RvUkVrMkQ2RjJiaTk2OUFsb1EwU2JJSUJzZ3Nmb3NTYXJUdnpfbDFSMXdVcWstTl9ybXp2Zlk2WmgzazlYZzQxMGFPMnp2dVdneVVja25GUFRRdWdMLTV3U1hfWDA5RnBSU0tLeXFZVmZ2cjdKaF9kZjlxeVVjNnZsRENhempMTnNKQVgzQWZwMUlidndTOHNoQThnZDVfMmpKMmhDSm9HVWFKRGRtSWVyQ2JVQ2ZzVkEzUk1DQ1RsRHZzbWRUS2RNalpXZS1OeFp4SjZuc25ISFFrOTdYY0V4b1VvV2VFMXdoVnRaWWJaeGVNRmtjSTh0ZFMxaENSWFg4Y2dMLTZLRTJhbS1wNHJCWDFSYjBzR0QxdnRxOHgxVUxDNjczYmMzbVhvOVdENUJCVUc5OEZsNlpjenlFM01rSE4zdmF4SlRNS0xaWWdlUUJnZVo5MGRMa2U5NTNPZTBkQ0RwOHRLel93VXZXQnZzWmlRZ3hpZTVMR3JmMEhzc2E3NzlDNW8xYjVwcHFWbnpKd2ZxUG41V2dvbHBvck1VbVc2ZGUwWHZrdGtVcHgzRkY5Zm9aQ3BsMm5qOGRsemlrd2lDMXMweDhYTmpyN1Y5akJFclJYUE1MSVpGSkE4Z19wVXlMWkdwWUgwdnhXMi16UEwxcU5EekpLeUhxZ1FkTnNsQ0pkMklxOGJhRk43VFBaSFE0VG9xRDV1V2RyaVBUaWZMbHItSnpaVkxJcVhVX1AzbUdNd05DcWRtUExoR295b0xpR1lvRnNXMHVFT2tKMmN2S2dySDc2akVzRnRHeTdPWWZyMUVSbHdKMm85bGhaTkdYQUxrTDdPM2VZb01iNlJ0Q1FDUnVadF9TN0hLM1R0QUVpbEdVeG04SjhDX2FTMnVwZjdYTkhRNlR5c0lIa2FjU0RuU1ZsWG9JMWUwMkk4SUM3SDByU3M5SHFzdGtrQTNKbDRIRE9VVHNPa0xNTWV1WjQtWlpKSkZYd0R3V19nQ21xVTFYVGE0TExjRVh2Tkh2bVp4U2Q0SF9RNXlMNDR0WjNMRlc3SEpwQXd5dDM5LXRlSG5ZTWFyMmpiVjExNkRMMjlsSHkwQVA0SThabWhVNG11Ui1YNXhZUjdpVUlfeS10blFDbXZSYmhZTEdMR2oxYm9YQVJfN0dyYUZxd0hBYm5iX1NuWmRiTnFIV2xLUjNlSmtKWHNiNmI5ejNVRHVkZXRMN1dnY3owYkFDSm5GZldOQUphZjJfeS0zeEFBU0VxeHFIX2dKWm5OanlFdEdqZmg0V1ZpTlVZeVNoT2tzZDdJeks3MzFLMWM4RmdOZExNNkQ2Y3ZrQ3Z0c2JwOTlDUVk1SG84eFowdlV2R1lVWDVNN2NUYjJpV3NZRTZHamI4X3I5Q0oyZnI3S2RhajBZTUNxb20yekZVYnpuazNDUC0zU3YyRmlxaEFXYlc0U1BIMTJpTnNPNmN6VzlVTDhBNmlSSUZ3d2NGT2drenM3UnhlUEs5cm5rVXBJZ1RCUExvUTlrTnlWWGNudUZ2NV8xWjNzd1RHZERwMXdLQUR1SkdfdThIWHdtLWY3TEFVM2xpTERRMVJScGtQSjJ1SGpOTlN5VjVKRDVGV0Zlck56OHFCSGFlbHpKRDZ2cFBRRHAtOU1zSzQzdS05dkRXTVB2ZVdzWnNqc3BsZ29IVk0zamNmRTluX3A3d1hha1l0YUFyUkVpamdzWVM3NmNqUDMycVBVbm16b0NacGdjbko4QUcycGY3UEpLOE5YVGRTNWlkTUxCVnVtajBwcG5NbmRXQ2o0dWhTcERRREVCN0Q5Y2hlQ0J6Mnpha2QySWE0blFWSWtiUUlnMkVjTFZDdC04SlRWbmdPSUpsQkdqbUpxOV8yUUl4Q2ZndF9vR3Z5OHZGSmo4RjBicVdLbjg1UVhyT29QRUtURFpIU1ktZTJnLVdDeG1qR1V6RVpva25ieUpLRDVINnNpSm1sNHd3MHBZc1U5dkFvemhTVS1wcEpfdkQwaUV3X3M3U2dVMlVXY05ZV2dUb0V5OC1hNkc0dzRsRDZST1Y5aHZLcnRyRFJqcXNsanBoOUhPWll0cWZaT1hNVTNELXFfQ0lxcFRXd0ZzVDNsVVlGRFFoZzVWRGZBNXNNS29QU0hwbWJpYmgxVzlXMGtKM2RKN2VJd2NyVkt4QWN2RjZXOEkwc1dRM09wY3ZZRlcySlYtbFJIZ3lyaGxJWkZBS2lCS1BpMHJma3FJdEJ4c1Jtb0xvUU51MUN5ZDZfTzQyYTRJbXdtUjhzS2FIQ29DMmNINHdtS0JHQ1hQaEtLZGpCRllWSmNmX09HOHktZVE3RmJxTk4tVS1wbWtXN2tDUVRGN3hxSVdOWEhqVEt5RFc1VEU1UWZRdENGLTZfa1d5RVUybmJPdXZmYWoxUjRPdlZhcVQxRVByX3lNWk5uN2p1OTl4aEE2OHkxYUtiY2NQTlpKN29RR2NONjhpNGg4ekQyUXFGdkIxM1pRRWJvZEd0dmRvRzF2MGRrTUpmaXBxMW5MRmEtanVMeDQydWVZUk1ZdmEyWU9tNm9JbWVqV0dGdmhEbnViVjMzdWVvOTAtc1JtUlFLaVMtOWR4dERUazVxaC1XN1E3aVVYMlpYX0hLSmFxQ3oweGthTU4tdUYwVkpfYS16X0lZS1E3QWs4Nkw3Y0MyTDhYeE1oN0hQbmlvTl84YWFwNXZmRUU3eUJqQWVSSW5DNktuUWVnbUg2dVlVVFlvZDl1cVpBNGRyRTlLcTVyVFl3MFVXNy1CUlFoa0U2Q19fLTNQaENyNWV6cWhEcWFwSkoxWnBYcEhqd1Y4M3hGdDc2dWF1THlwQTFVeTVOUGg4UTAzdk9wd1VOZlN3aFpNYktFWEFaWlQ4QjZpUHloT0E5SkVWVmhxQUJCdmJPWm5PQlNJMkdwekJ0UG9qV0VaTW9DcjMza2poUGY0YjNRMm55a1lhbEwxbi0wal85TjFtY1FUYkVjLU85Uy1mX0t6dHdpbFo2d0twRUNUdGI1a0VGa3JyLUs3RXdHd0RUTkpLX05QV1RpN3ZiV3FrUUxrdV9mWmxMcUtjU0ZNVG90RThCa1Z6QWlLX21VcG5LNFZiZWprMkY2cUlZdDZmQXFzcU1ZeE1UdkpRTHhyVE00dW84dzU0NXh2ZzVIcmRUTHFCTE5xZGludXMycXVjLTFWRHBuN1RxZ1lQX0QxdmZGSVV6cEhjVjFjZnJBWUhDdEZBVGhTam9ZUGxTUnJpdVFLYnpuQVFTeGgtd3hSZ0Vnd2xaa0wtaVN4WTJKZ1BiSHlwTE14YVBwbVpob00zQUVQbGhaU0dXTFhyU0pVLUFMYmk3WUFGX1NSWGJQTnNrZXQ4amdoRzFTQ0hzNXRzcXJ6WDFHeG5wZWhPdWdnYnNHN3Z5UHdNYm5EMzFBMU1DWUVNWW9VSnBMVDYzOFFsS2pqUDQ4VmJhUlNIM1VRTHVxUGYxWW1UdWJJemtRTU9YejVIem9KbG5TcmZCOTc5Xzh2Ml80dUVBa2kyYXZTcVRNTkNuQnptajhwX1dXUnBYNUEtamJNMHVHZTRtOUItSXFxcFJKRE1LV0dnWHRvZm1zdERkRFRBN1NVcm5FNEtKS1hBS2g3UWJIZl9jSko2WVhWRnE1ZTZTa3F4RlZHam1kb3ZXUHdzOGQwLVJvRWxsLVNRWkUzRWdSTnFYLU5HcFFRbzFFSW1DUXJmU2VhanRWWXBaR2RkU1F5TGN3NEoyQ1lsZ3JNYy1hODNfRHY1S2NzOXJBZENjdERGUVRvYmlienFsbDJ0cTBRTjhsQ0dxcF9oNDJrdUwxNk9DYmFWemVwSjNCSHp4M3JmMFBJZmRJZXJjb1hRUUVsNkFUaHFWdkZxTkJ2cE9wUkNHblVKdHRMNjROc0ExTkd3NWU2Y2RScVNjcHJoMzlJOV9fWjhCdHhLdVdmR3p5UzdxZlJldm1pY1dlei02UjV0dTdFN0FXSzJYZWRtaWM3UWZzaUxaWVphdVRueXFiYnYyYTgtMUV5R0lQZUMtYi1XcTZiLWhfbDBNVXVsTlBWTUNVaXdCSVRIZlBsbHBOTzhjZTdJekpfTXphQmVVeXNKRGRPZTJGNVJpQWRSNEw4WGRIQjM0TFdLQjZpQmlwNHZEMDAtT1VjNmh1WGN2X01Yc0xWM254VEJXdzFDSXpBZWlkcGZBdVlwSkVQMGpLRzc2VDMwM3ZIREtNeG5lbjhjOXZlNlNweENobi1Jdkl3Zm9zNUprVFRGal9Nb1p0TF9nemFUeU9xNkF6QmtkamVqUWtuamsxU0RXaXQ4QTVGeGJZVXVsazVuazBYbGlNR2hCT0hSVUZ1N012VU1Qdjk1WnBuYWxCdllJNDdzX2owQTlULUVRV1puU3cyaGpuYm9MV3czZlFuTWhIUFJOcWd3OWNXUjBfaDNWaElldXFMeEtkTHBqSU1zUmo4S3ZDUkNkZjFlUkVsZmtQUVM1dTEzUG54YTA1aFZYcncza25BdkZsUEItMzc3SU1Zd0gzbWNRa3YwS2lKTkR3WHU4TVppSEpRYnV3ZVVPYTBILVZVSVVLbWpGZTVhZVI5RGVKTWs1c0E4cmdvWTJVU2dlZW1WY1Fvak95djg5dWxmSHB5LTJxZU1ZVFBma2RCNlBWdXU3NWx3TksxVXpvYkw0eFpLN2pUMjdaTlhGOWJjVGloLUZWM09oS1labDRHejFkZFBnNGNpbm94cE0zVlhCOGoxSzF1RV96bW1oUWFQUVlyRXpUNXdRSFdvd29JOVVReVF6NWZSR2w0TGo5RFhYZHZBYllNNHlYNkpOM21meGIteWJ5dHpQdzNuNzhOY1RITlZBOWEyTUJzc2JuUTUxMlM2bWpOUXFYUWg3N0dtRzFBQ0ZRMjhqVHM3cUFsbm9rMEN6R00zLVZwTVk5WTYxOERQZjB0YVBtck1kcmg2Y01uNjJNalIxa3lORlFzaURrbXBMY1NiY0t4Y2k5aXFOREZHdjZUczRfX0E2emc2c2dNVHNZNFZRQ01yNl81QkRMZVJ2STdxN1pQYzk2WDdkTnVMTzZzeGpwQjZpcGJVMVhBTTktdDlUOUtSc2V3QXl5V3o5MmFkR01zQXh2UXh1Tm1IV043Y0tMZGk1WGMtUkFKc0FBS3JsaDdONEhTRjc3SDhSWlhacFRoeUJYbWhhMXctbkxyVmFyUEtaTmhNUnFYbkNtRHllZnRKQlFOaENveXdRUDF4VUU2WjZYYmVmempYMXNMVWF0MHBOZGZJRzhsaFMtMVA3WXFrWkJsekNQTzcxamZCaWNkbC1PZ0hUdzN6TUIwMEZxR2NVVjFKZldXVk9NMU9LWWFSUlFaLU0zaEV6eEM1Qlg2VkEwYnFNamdxZDF0Y3ZRUjJxTGVPcU90OG1XNUY2OFRjODhTMXBEbDF3S1gydW1zXzdDS3I1MTJraW5fWDVic1g5Y1VjdENnR25VdWQ1Rkw3amQ0MHhuSmFwUkRKSnNqMVU3aUdraVNGb25oZUNRZzNrR1QzU0txN3l3QzdYOGlPUmhnOGh0WWRXZGNjX1duN1pNckM1Y3ZvUVFlOWszUWdfSU5aNlBvQzQ1aHRpUWU4QW8xY0RqbGNjVzk1YWFuUWE4OVpkdzZlWmVrZjFGUURJVE1qLWVBT3U4RWRfQTJpaFFFa1JZMngzTWdlZm5vWnRUVXdsbUVWTUhOQ3BBUFI1ekFPV0hEYVlLSURqT3RQYklSZjNwTzljUTNPZDk2eUROX0tURDU1MDhJOVhuc01fVGo1NzhLdi1Kd3VwYV9lc3NzNFNvVzdBcTBUUVprQU15OFhIaHJzRHdoRjZNWmxpaVNsODY4dkx5N3gwV1hzNzJ6TDFQbG9ieUFfaTM5Mk9CTEZoazlTQWpRRWtiSExLVURhaHU3SVlkX2k4WVNzUmFXekswUGZVQ1c4NFJSTmhweXFHclZBajZSN3hDdU16SlpBNGxCa3ZoSUFId0ZqMzI5T3RwclJiQy1VdUpITVFaSXNBZWxiTmZpaExCOTJ0elBuMHYwZDFiYmxXN3laU0JRV19GQXpsSDFrY0FvenJKcEZsVFRMVkJWcFgxaF9ELTFnWm1sVVgxbE9KUmJzcHJlcDd6WkU0YVM2eHB0UHFmLXVNVEhYcDV5NzNoaG04dFktdEQtbVJyQ0VncktWX18wTFNrNjhkQWNpYXFoRmtKTkJFWlJXTXkzVHlWMDd3Sy1RTnJrY0NBWmRrT1I1TklFU3prRm5aX1VJM0hDZTBETlJPTlIwbVRoT2hSNldtV21YckxKWWQzQ0lPNGVuMG5VcXhvSGgxaDJIQjFmQ0h5Mmt0bmlqazlpZ05wa1UxVGxYcnNBVlNUdmRlR0JMdk56a3h5d1BILUI5X2I4bEtsUDVTOHN2bjN6SEtVZ2FhUGlMWGdjMmY2ZExUaTJJNHViUnNRLTd2UFlJWTBKQk5nR1dxTUNWMkZWaUNLUDdQRVprcmtnSU1ib3hSOXVLWFVCR2g4QktUZVlLRTlzdDRrZXd6RFhyNVlkTzFpLTFIZDBpb1prOHlWT3VYRmVXckdPSDBiTFhlRldtbGJKOUczazNrSW1rdXpaYjZyaXVLV3Q1TW9LeUV5dnFwZTR6SmpSUnVILVdSaXR2Z2VkSG91bFE1NDBvSVktaHRSRS1iTThhMlBjeU4xYUViZGxRRkl1cEtLYXp2UHN0OHdaUDQxdVlBQjY0U2xyMjZoTnJiUG5idklDaExXVVZOYzctSEhJRThNQmxRdS1wYjhVRzZJdnZpRmZDbzdwelB0WThmdnFzejJvd29GSEJkYWZtREJqSzVIdndHVDRjYjVUbWdkdFN1VjRmZExaRUNDaDlxLTNmUzBlQXZSRElGdzc5RGNoMDdBck03czd6TDcxTUlTS3lxMFRWeE9nbTQzUXVZYWNWUjN0STNHSC1fbk5DNVVkVEVlRjNPTW44dHUwNUVxcVZwcDlvR1Ffdktxd1lGbGl6WUx3ZExHb1Z2Wk9LRlB2bkVETHozT1ptTmNpbXN1QmNrOV90RXI5YWRVZFlMRkFLbHZoVHNReHhiRkR1emhTVTJTZjJUNFR5VWQyekFTQnEwcWx6M0t6bWpBdzN5dXdTMmwxOTFLRnVXYVcxWEM4ckR1M0FpU25HZWd6ZDA2Y2ZFMW55d2NwdXNoRkpKZmkxUW43cVU3Ni15UkI2QkNXYXo0M1FwTGdTdENQZHluMlpsZkJQUE5uTEI1eEhRV0Q4WGNqT290S3B0SWV0SEE3TXo4WDIxV1RSckxOUFREMWRNa09VY0VqNENWeTJvb0dSVVpUYkx6OTJwMENwNEwyQ0pvWE40azhCallHRW5NcnNQSjBweTZFV0x1cWdKVERuOGJVa0dHRmFWR3lRMFBUUUlIVTl1VnE4ZmpJZXpjVm82bmNlNHVaYVBHWjZfQkVjVnpNUlNoUFRBOGdBTV9nb2hXMk1BRElvSjdFa1c5Z2NkY0xxNzdCbWZFVzdFNFg3cjQyUk1RX3Y2X0VBVTlrREtkcl9ZcWFCMzg4aDA4clhyenYtTXViTmtlSjZsZUdaTGpvdHVDR1FyaXU0TEI0SkZITklOTVUwZFE5SVg1Y1NBWGhuYllmUzE3eFc0cE9yWjRoNjd2V3lkbHZ1cjlQQkhFZEhlN3JCaHpwcEs0R0cwZmZrbEhJTldTeDVnVWYxaDJ2aGtKUndMODFaVEE5bVpSWkpQeU1oMXMtcFcxaVJENG5iMnlEaXAzdjVsTUZRcUtMUVpEMnJ0MVg2OVRETXZKNlNUdV93YkJlSFA0YlZpbFNock1WLWNYYmg4ZGtjaHZOMzNYbzZ6aUdiYW1tbm85UGNzUGVKTkZjZ0FiX1JMbUVlbFI5R2hONmRaZ1c0bE42bFBMSS03YWJoOE91VkJVOTRDTzljRkRaUEg2STdaalN3Sl81WUp6RHBKZVJEUGt6Sk9ibHRWbFNnTlBxQVBCbldxVWxZZV9uTDg2SkhFT1NnclIyektlem5udGNaaTRqdTI2REZ3M1JoRG9xcklJWnh6ZE41SXQ3c1liUGhPbmFOdWw4d3N6NFlVXzlFbG4wb2dnWjA3dTRhS2pFVG44YlhuUTVsWmNZWEpweVNXLWlsd0tINHZZRjVja2tCQ3dfdG8yamxvRVVrSkpJTVlTcHFGdG5xRG4yNFBkdUZHeTVzak9lZ0JlSjlELVNmWFQzSU00VnlTVGx3U3Y5MFAwazlTVm5TY2VtTEtOYmZUdXhjSXBtSFhjaVBEaTlyMHRSOXdOeXIyczhKRXBDeFYxTWtKWjFRVEF4SHV5MkhsZU00M01HLUIwVjhHOW1HdndhUzl6WHRXdFJBUWlRZzhnRGlGQ3IyY0xRZU5FVGprM1NpQjgxSXBDSW1ESXN1OVRpLXZnTHpmYVA2SGVzMTJuN0daSjRETzMwODdzTDVfQ3NXb2FrUmU3U042M1hTbDltU1BVaEZDeHNTRjZuUVpaYU1uSVlmZk1IcnlsM19JTktNWHlmbDB1X1BCZm9BVjdkVExFUEhLa21Gd0wzUHNSQ2JDRHRqbW1OSmRLdXRLZnJLY3I0SVNBRHZlRDU0SG1sOFBuWVhyN1pBRlVfa1Q0Vm40UzI2emVlb1FLam9Ld0hua1BuTmxQMm1Ha1BwWjRzcTVZcTg5YnYzeW43NUF2alk4LTBIN1p4ZnBQUFVOX2hlRnF2QkY3SEY3SkIwdE1Yd3R2MTNUSzlFMzBrV0E2UEttRW12LVpPemFhSTM1SGh1eVNJODliZUZJQTJYdnZhdndTWmJxd3llLWVyUlZPZHB3cHdrUDd5OVlpanR4Z3lManFFMmpEc1BOTVhFUURIYmZlZWp6cU5vbDlETDhudFEyejZ6eFdDUVlPLTItWFdGbEF2Y0RHeXZVWk52YUl5MUszTk9kbUZ1OC01VGJFRFBZWVl2bkVRWGhNX2EtN0QybTE1cDZQVkxtT3RLWVp3V3NWTEd4eUppS0lkQ3FEdUVpV2Vmd1puc1ZQMnR3a1dFZmlaekI1aFNQcHJrd25tb1NZNEdBYnBhM0tycGwyMXNxUFIxaXRtb3Z5VFB2VmtreEpDcnBram0ydzRQamdyVVRSejRHS1NsVUYyYnRXU2ZrR0gxTmExbXNlNlhiVTdrb1k2MGNaNFlCblg1aHJIUjk3Qk9xS25lNWd3aC10VEpZM2NmZEpzc2dac1RLUlBqS1Jqa0pBTzJELXQwSUNWbU9RX0FfT195Z2U2Tm5YYnBxTkh0aXA3Nzl3WEtZZFVzTEVOM0I1anlLczhhcnI3YXNKNEo4eUFfVVhjdnNUT3dpRVF1YXNweXIwbHlOU0gzZDVmcGJjUVh3RGFnWVBoa0VkUG1WQzZxdVB6WDZxa3plZWJHU2JWZ2VyZFN4X1g3cXRnbGhBVEhPWWUzcEpMSGxXSTV0bWkyTl80TjdOSGpod0RYaWNHWGVFbE1LT05oV285QkRpTmxSamxxUF9BRnlKWkxuVW1vRmpheDRCclhmcnkxN2lYYjNmTFg5ajFRWlZIREdmZkRxLV9aVmJEMjFuaEs2Y1lxel9NUDBsYklxN1YwdDlUYzNhRldGMWgyNThpZlFLcHZXT180QlF4M2pXMUNsY21XempGRlQzRTExX0JiUmgzdWIxWFRhaGxqYUROZ2dSTUxuWjBhYzc2Yzc3SWRZd3d3SkFOTU9aX3I2aU5hWEpuTGx3a2VldTJMV0pibWxEYzIxRHZ6NV9Lbld2WmtCdmxFODBWOXhHVTVjcU1BRjM3cDFCWHAwN2EwV1d5S1lZT0l2S3o1ZTVxWUQzdmUtUTY4SWtHVFliLUR5ejV2dFY3ckNMb3ZSMzJLVnZWa0VmMUtpWFJ1ZG5TSFFnSVR6Zkc1X3JzS3dFYkt2Y0RpR2JZMC1tYnVQS0FkOFl2YzhZdFRNZHJpY1ZDRUVOdjFZcnYxMDdrRHFvZnF6emsxU1JocUZqQUtYMFZIbXF5ZHFEOU1tUDJuZVlXYXp4M09idkFNU3RFczlqU09ld3VXSkw0aDk2THZHWlZweWx0RXlXcWRaOEhhUzl1WV9JTzVWcGZyb05KT3JTR1NxNFM5NUFSSTljM0U3ZzFidEdRRElHbFBVSk9HbGdiMzZ3SWo1QWN1R1lLQWphQlBSTkRMbEhRN09TX2d5ZlRGb0E4WlVfTngzeUVSZG5xMGVVNEV0bkNZR2FFRFpqR0xUb0lQNm5xMUoxVUpQYk5YUll3SjdJWF9GN1BNVHFRZHd1SkxQNUNuUmtkLWpYd3JzNS1EYkw5UE1MXzFWX2F1U1pvWGdWR29RR3B0TlZ4VURtS0FXWTU1SHlLY3ZqSmxPNGxwLVBBSW5KRmp3djdoNGQwZ05RZWYyVmpQM3hvQ3RYaThOZnBWSXFOaDVMUUtweFd4d0JPZXVlbmU0UGUtc3hLajZHSXpIQkNVRnZUY2VESmF1VFNPSVN2alNHQVZCYzd3RkRIdUY3MVB2VDh4cV9JWWdGbm1qNDNCdzZQLVRJUVJGREprd3YyMGdBc0JUMl9lWWZ5ZWZWTWV3b1VaNWcyQmI1cW94SXRpVm5zS280MUFpYlZpOHMxMk9OR1JJcmVCZm9yWldWcGI4Mzdma3JTNWowcEtwTnVkcTllQnZhcm9tVGpFd21MZkVNQWtObjhheDFTUnBDam5HT2VHODB5ZEdvRGFnWUFNSk1saEtxMW9TcjRQWU43STYtWkp5eS1NaGkzMlM2ZFVxRlJFQVEtNkFSVW1kSXdtYTVMZW9NRllmcFA5MHcxVWtUVUJ1UjJkTFJDb2ZvbzBVdlIwNUJqOEctY3NuSXgwU0U1YUNIdnBKaWozMjdwLUw0aHlJZzU5N1F1bWlsTWRtdl82WDV0VzVYSEdvNVVhR3AwdEdyeDBodEpWa0txa2pqbXVBQ3BsY2hvQjUxTnVQNXotcG1PME54U2FHRVpxM1AxX1VrY0RfN1U0a1hqVWhiUlFtSmdma2tUSm1IUlJVYVIzZ3htbUNqaUZJT09GeW5OU2Q2WURPRGxkR1NJbWlpcEFSRnhlRVdWekJKVHlGTFZjWWZ0Zk5JVWcyVnl5dUo1TFVUM2Q3TXZsYmpjQWI0dGROZ0lQNzBsLWJfN09Xdm1UU203WDFtNVdQanB6RFJmUlZRSHc4d3ZWR0tpQWtHZmMyUHNHNFB4WmpqYXktVVJRLUlYVE5vaVFQUkV2b3BwdmFxazRjZV9FQ21tejVfVDRnaEdIcUhHMTVuZ0VnbEw3ZFNram1lb1pacFBrbjRsbWZFTER5OWhvRnFHTVFDdWFxZXRQREJmWjNUVWRqTFZsREVVMVVaTXlFOHhreVZuSFlFb3RZcnZoQl9SZGsyMDlCSGxSZ3Q5Q2x5RGtNS2xOOEptNGlfeXFOdklsbDhScldrODVQWUVFeUVia2l2TTFvSjM0aTB4NmFzeEZScUJqTk8zRXpsb2cxZEM3VDFaUW9La2k0U2hMYXRCT2V1VG0tRXZqdUlpUTdZQW5nZEktNTA1Sms5SFhxMWRtUnd1azA5cklvVW11Y2FoaE4xaDVnekp3b0tVOGdoVFJWVTdNczhvR0xKb09hRmczUDNFaWVWMmtRU1c3TlFNNFFyOFBwbDZxa2thdUlRemFmb3luNEJYX2E5cHFDTmxFZmptcDFPM1FWTVF4Y0xuUF9sYVExNkhLSVoydnltb2JQT01sWGVyblFGdmhpdERQbVBVS3FwRnBmXzgwU3BwOWtsU3d3TFIzckJ1Uzc5NkdmNldTNEc0QUtrcDAtbGdnSE04ZzhyZ0VLdmlCNlVRQllyNFdheV9oQWxIOVpPcm5KdnV6RHpCRjhxY2pwRHJ5UVdTWjFfbk1MeEZELTl2X1V2NUFvX2J5aHgwcGdiMlJfZkczdTc5OXR1LVE0Wlk0TnBUVmhmazJoMWRHdDlQd1RYZE8wNWNFVnQ1VUE4QnVqcGJXT3hOQTBQa0x6elg1amRaZ0pLcEtLVTM4QjItSmtHRnFHWDZQOVJwNnFodl9rQy15NkkxMlh3NkU5UloxNE1SczV6NWNsc044dXFkS044RE5JUm0tQ2pCalRXVGt6VTU4Zldsb3JMbm9kaWVRTmZRT0FZV2ljWkdyZ1NPejJoNUxMNFBITXJfRlNrbGI0ZU1Bb21haWVpUzhUYXIxcVlveHJYZHF0R1VPMWZCOHRqQ3JxRXIyeWxTay1kTVdZSnpsSkRVc214T013ZDYyWm1ZX3FEWWFWMWp2ZnhIN0xXM1htTFR2cmdRazd2NUo1X1JpRVdWRkNhODJNcmRpcllNWmVMSGFqMmg4VWwtSWwwUk4yc0NwMWpTUW1tdlZ2eWowUEJLaURhQzBvXzBuNm1UalRHZzE1NmxJWm9LOFJZMkRaS0xyYVlmUDhfRVk4SElJMUMtNFcwWEhlQlI5dVlRSnR0SHBWdEM5NWlBVDRZcnhiXzdqSFUyYzZyQmczNGI2WXFBeVg0ak41NzdPREFUeWtLRzQ5MVFyMi0wX1g3eUtnN0ZQOGNZcldfeHFGMWtmcTNnY3cxVjRCbmxVMmMtZnZSbldkamsxbGhQdkZDNVg2WXNicDdBUXpBX1ZKdUtNM3pMdkJaYzVocEFMZmpXVWFueHpCcHdCUE10WXZVUGg0bWVGc200aDZZVS0wN3Q5NTZUWk5OV184alZfdUN5eHFza0VfdkQ3aTN4ZDdxMmtCRlE1eHhhb19KQThNekM5SW5GYy0zaFNMXzFRaW1NUEZLZ0xIZlhpUlNTVDByVkpXdkIxVlBOckQxZmNjTUN3YnlGYTVCbXVQSWE5MFg1VGhfeGhmcWptTjVEV1ZKbnRZUDVqTFRtOXZZVk1QTU1pTUFkQmdqcFE4UEYwaXBKdjU1VWtsbjJFbmdvNjBkaFZnWk8xSDBNdmxEVmhBM2JqeGNkUkVKNWZ0YXBQQ0tiREdmbVhvQXBoZnBaZHgxWnVrSEZ1emJwdGRxY2stQzJzM05pUGFTaE9VNTVJRkxuWjByeWFBWk5DUml3aW9vQTZlVTVJWFVqNlFyWlU1MFRBU0lZMXNLS19vcmNqLThJRDFqbmRIdGdMZm5rVy1QTmRoM3RlLWlKR0VNVWJsbFhLVWhxTXZ5VmNieUp6OVpNeUF2VVh3OS1YdWdJOFVEX196UDdoUXp6OVoxWnJuZktOeV90T1J4SlMzdlBoLUZaYXBUTEoyOGh0VWdNSHNRZW9oNUVfYzhxUjNSUG9iaFpzY2pEeEd0UEVKSFhqWFhCY1VicUNia2JmUmNaSXd2LU94cC1YaEprMTNqNk52YnRQZEhQUjdSa05mUGczXzJYQmZFTG9DMDdmTDR6bkJCZUNtSWUwUjVTTkVtdmhVTG15QmhmbFB3VFNOVVJLdW5nbG91OWNDQ1pQc3A5ZFV4LW9wN1FBSjdhTGhNYXA0T0JPTzBxZTJ4eHNITktzYnE2OU1uTlBEUUJUbVhfdUdvVVo3SUhyZW9SX3NzWEkzQVM3SjhxV0RIRHVLbm92QUZfSFItYTI3dGtsbHRjVHlvT01lNWEwZlNsSFFRalpNNVRYNWZleVBadm5CR1A3Rms1ekx5TThNM19kRkF2SjdUdlNHOTF4dFU2YjNvZEpqUHdRU0dOT2R1eFYxNVVBTVJuVzUxbXFhbktmeGxwQUdjdFc4aDBUQ2dnVjBsdFRTcFphTHRXdDFSN3d6NjRmaFZ1STBZRHJEbWVUd3dRbDVlZE1zdUUzdVkyM25uTkFfTGx4Z2REQUJ0ekVONWlXOWpicWVLajRnRWZmM3pPUElya0s2c1RMTUlmekZacGhuQnAtLXFDcWJ4V3RtSzYtU0NETUt3aHhrZDE0QU9mM0NvV1NEbGM5VzhJdGUyV3NzTnJfZXZETVJzTXI3amZRQTFsWEtPV0hfbzVxRTB3TElZd3hhN2JUdF9fZU04MzlDUG1tdDFFY0hENTE2SUZjN3d4eWlOdGhOcW01bTVZck81bXRyUlB0V2lMYnJ3bHYxZy1zZTlic2ZsTzliMlo4UWVDZEdlVkxZcjVTcVFGT2p5NjlxTWs0LWpfU2NuNEw1ZURPbFp3bWRPLVJKdUJ1US1MejJlV3Z4NXpfWjlWZ2Q4aThPOVExNER5Zk85dU1XSi00VTloUlZjR2RQSE12MDVkR2ZqcklGWVR4bGFUWmIzb1ZKbDhwM25YSE1lTFVETUFjWmhVOHlsV2ZvSTZuMEF5NVcyVnJnUkItSHd6cWxJdHRweklybm1PZk5SWUg1U0MzVzV2bkdzLWpkLVdxamx2ZEJXOWJUcHhSSVZsY3R5NEZ4MzRHdTVSemExUjE3a2ZCWDdaaFVSWnZQdWxTMV9iNGxkWmdIRWdSV0FsaWtCWnhMakNubzF2SDhBRkVqUHNqbzBwbUxsRnBaS3RDcjgtSXVrMHhhOTRIb1lzMnFzUVdzRVdidHR4Unh6SXpNRWFYVXZHS2xqOC1WZExGX1lISExWanItUVNid1ZvU3FoaWU4X0lVSGlGSk5LbXJ2cXBvQk5BMmFTTDE1NFNKSHFjczhTLWRPLURUejFmdklfamlfR1ZtU3loNFhIcV9oQWlBNzV6djF3RVpIU2ZEbDBNUnBGTTNrVW8tQnhBY29tT1N3RjFReHMxbG5lbHlNOWZaU3NWWGxRSW5wZDNDUmdlNUhxcGJESjJFLVRlaDNEdUZYcWNvRVhUZmJtNnJBZ0o4d3ctWmVOSmhnR1JLRHN5MmVOMnByMEwxMUJmMDlOWGNFSmVMUHFNVzJPVGt3OWNCc210LUdXTDlLcTBkQ19DYmNXVW9iUHlwbnE5eVBhcEtZa25WdXR4anJOV1BoUnl4TTNvLWpoeEpCTnFhc3pGcDd2eG93SUZRM2xKTTZpUEEzU1FqTnpJdm1SNm1HalByS1BNendCSlBOeFY4dHJ2M1lOR0g3YW5BOUh6REhWbEl1dk9ZM0lYbHFTQ2daV1Y3ZjNWanVrbnhtSHJ3OVAwNUlqZ2JqT2piSG9yRWVUU0lkR1RpUk43Qjc4enRpbHhndHk0SkpmMnJ0OUczdDhyc3F3cF9GNVhIWW1NOFJscFRXMjJwenpBNHgyMEdCbGhTWExkM2JaUndWdGt2c09HcS1kZDB1eWtYYy0waDUwNmJ2cEZ4c05uUzZDRUNmTldpQXdKUTVtQTdwUHU2NjhNSGNQMjhkOXZGYXMwQUM2TzBNU24xdEVENzdBUHRIUW1NQVVQUjNpUTRTajFNdEFZMVE0alhBQy12OFhxWVBnVEI5Rm9GYTdxcjFwMGwtYVBueDNub0o2bERTbWpaOXA1M1hQbE5qdHZnTVhTUHk2X1dtamY5MzRmcW9zT1N3STNIT2h0TXVPd0pwTkNXMHJyWU5fWEVVRXZqZWdmVncxU0VGU1VmVVZIcWQ3RmVWWUQwOUhmZmJUMGVIUWJOZEtrekNKdnJPOWNRZUxrdUZrRGk4a3pVWERHOW5pOGRaMUVnT2VjalpDaTJ1VEQyTWFjdDhla2NjV0tudzd1OHk5RGdGY3dMMmNQWTRqUGlTUVVTa3FsV3dTWEJ5TDQzSnUycWtkNWpZekpDNmRsanpuMzR3S1VrMy0zTFhOQjRISm9VZzF4N1Q4bFl4ekJtOF91TndqcHNpQVNtQmF0ZFQwM05zNFVJNnF2T0owY2tMRnVyaDczMU5aTnhkNGxnZ04tZmJQbGMwMzBBX3RUN0JieWhqdEFoNDVLWWp6cWVnb0I5aEdvMXJ0amtVRGRrM2RlRkhXSFJIYjZRbURuVmF6ZDF6SFhvbEVUNkd2TXk1LXExV2NNYWZxU0I2dWloWEc5WTQwNUJXZnhmeEZCejQ2dXQxRkJMeDRGb29DeWpZbVJYLVFKY1kydVJKcF80MnJYMW1jVU5laUFMdWdER08xX1JhdHNvc04wcHRkZmF5Vm9oSlVzT1VMSVFYay1jQktJN1ZjTTNKNi12NXJvQUQ5ZFlfdTgyYTFtdE5FU1JzMW1NcThwU21xTHBwSk1WWlJSRll1TlVDcHRVekhLQmlzQUR1c0hlNkM2c0Z1Ym1TWFhZUHNwWTU1SlBZSktoQVJoZUVHNE1kSzRLMnc2ZXN4UTVEdU9jbG9OMFJMYU9ja0lLNURHREtjbmUwVHEwTm12UDdlcXlJSWltWExjbGxaaHFzVHRrRnRzb1poUFpHZGlBLTZGdzRkOHUzNmJBczRJOWxEMkpjMzVUd2FlY1dvY1VJcFM4N2IyNTZ2SFNpdnNJWkdITml5c1c4b1Qydzk4LVIydGxhNG5PUjFKOHNaSmdhaFJERkM2NmFYZ1RIVzFILVdCMjRXN1hvenFsTEFpdWNKWXZ3V002TE90LW5NYVN0a2hXUFVUamlBUVlTZm1wdVNNeU1TZExaaDRpYWI5TG5vb3RhbmhBeTN0LS11dGJWMkZjQlJFR0x3MllwUjU3aUFlUlItcnJ2TlNHbVYxb2VKay04SnhibUpBVkVMYmRVeUZGUUprd1ZJcUQzRjJmanJMNjNFRTVEa29RRjBTbkNNdGxqWmdXU0tpd3NkaWFZa0pPTzVZNnlydy1zYmlLMUtUaVVuc241MEZuODlEN3k4OTl0alhzcnNHT0txUWY3M2xjTDlnMXhkTGdlVWxXSHF4Z2NSanlkSGpjYjQyNDBDZjBYeDhCTHFyZWtTYWZXUTAwbmtvVGwwV2ZOcFZKVG1zQ3VVZV9nb1RhWVpIODY2M2hjTjJRQTBHeGJZaTVwajVHOEFaRlpvU25LaGVDWk1meXZDalNjZm5ienJDazdkUFdyUkpNMy1SS2JTU0VBY0N2dFlQZ1ZuUVEzLW1tVU1VWTBia3lvd2RIb1N6YUVsMXlrZzlqY21WMW0zck1yazkzdUtncW1jRnloOXJBN1FiNTZDR0ItZHY0ejZ2UVJYSFRJZjB5UU1HWExtd1BwM09rS0REbTVfWGtzWTZVTmMwVHlMQ1JGazVHWGpQaFo0Qk9CT1NZMDZzWnFYOXZxZXNSNXAtU0t0d2ZYYzY3Y0NCMlJhMlFjZVNmdzlhS2QwN1BnZ19Wc2w4bWFieC05Zm5McTd0LWFvUkxhMllNendWNllqZ2doaUpicmViLUdYMDFsenBidWJ5YzNxOElGbl9MUkxuclZlMlBHTDNEdUtjekJ4Rlp2X0tGMENhNzhrc2RSUExTUXNRU0QyT2k0dWx5eVBXSTlGWlJZbGtEMEp3MzFra0hUSGtvckdON0VMaVl4QXZDWXFZVmpndU4xVVFtb2J2d3UySHhfVDlCVEtra1BkTHpwUF9VMUhqanNRd0RpeUtPa2RYQUtTUWxaWDJtbkdHZnNWbFlEeEZRVnpvczlyVVJCZGgtUnFhNUJrc2drYlFUekVHRW1YLVFudWNSVmoyelgwSXQ3a21nZTZUdHlFRG13ajZPTGNhbFV4b01TVXdjTlF4b0s4SHVDT1NIRS00bDVuV1AyWjlPdjFIdzR4RDJPQ2g2RnRzQ1ZJUDVTMlJQYXg5ZVNGdEloTWkzamN5SC1Xbm41NG9VNW1rQ2I0R3BWWl9GWmtrNmpHWTRQN0hWa3BsZ19nc19pcC1Qc3kzWDNtZjNIbGdoRjc2LWlXaDFiTXE0R2N3dkNuNDdmWUd1b0FxUXdjOUpvblItVUlvVWJIc1NHNGtyY3diek43bUJtYjljQURlVzNUSlpuM2xlUHNway10cWhycWJqbUpZa0hYeGFOS21hVTdZZWJMYWRxSnVaYmpfLU1xdGxyS21IMGdBa3VGXzlsbEdUNXBDWk1iQ05QUnBsT0pOQ0JfNWVTTFhqc0ZmUWZtRmlTSTV0ZXJIVzU0UkVGSTV6VlpLLTg1bl9rNTJRbE9ncE1MN3d0c1ZJY2p4cUU0OXJiMjdBRHVEc2pvRVdlbEVlRTdCeHhEWjVJNkF2SldrXzAxZkNwa1ZhVkh6U2NFNGp6T1BnN0ZNYkEzQXR4NE50VVhrUnZYMTJOZEhQWVlZaHpGY2UxVDVnVFJQZUpPSTlzckZtXzlZbVdBNHpBZGNjWGJXTkszVjlCUFdMMzRuWFZKRURFeWNveG9NczB6ZUtYYTBfY0hvSnZJOVd1Yk5lVmRSNmRxUVhmZkdfWTB1V3A0X0ZoaEhqSlRCd283MGN2WnFIX1Y3R29Gb1dPRXgza3JNeTZvMkNVTHFnUUtTVjNaaVpmeDlQeVdXVVV2OUhRM0hQZHMzOVAtMk5aVTFGSF9acEw4NERYaVRfODN6QW9EdS1VTFppWFl6NnM4N1FSRzhoRnVsZXNXTWFLbWM2ZTFhS0VtZVZTWDNzN2xMSWdjNWtRR0Y1OVhnVDdQd0NIQktJX1VVOEdMMWx5TmUtajBUZTdtT0VBbGFuV28yODBBendKRWdoX2d3OFcyc1A5N0hfRnNGNEF5TDVFTjdkU2VSMENsM0xTR0kxTi0tYmU5ZThsbHNqRHFKV1d4NlNwUzZZQkliQlRhcGhhZW5TaTdGM002QzYwN3pZVTgyVVFtclQ1UXpsdk9EUHlBZU9rN0hhYUNjVG5rXzlZblItaHE2RWRvSGQzZm54RFd3VTFRM3F4Z3g1Rk9kRlJ6TnVNT3NEdEd4U1ZvQW4teEpDSUt5dk5GT0ltNHc1T2hVQzMxWm5OX0VVRXJITnByN2hkcWZ0YlpxZlhsUXQ3bGotMWRTcXJLMHU5TWkyMk9PWDl3MGdpNklad0hGclBzem1QdHVzMTFLNWVTQU5LVXlNNXRzODdCV2N2U3dvX1RoMW83a2I5czhTWkVBMVp6MzZLaE5LZ0hqTkFvelJ5eHQwYlhkeDlBRkozSzZxbkJ6RGNvWklnazVjdEQ0WS11QTNobDd6Y3BocUhYdnBxazdqWDBhU2VSeWdRcXppMUF4VlBWZzNONGc2eTlVRUFwZUdsTnRyMHJCVkdYRTJ5NWdfZ2xGanRjWl9ZUTh2VUdXLUo1QmRpRjF3UlBLbEJYQVQtNHBmV1BET01CS0wzTkNPcGo5SlBoUzZ2OFI5cFh1WVBENUtPYTNjbzZLVjZhSTFaZW9PNUF2dDlQenpXandwLWo5VnVDN3EyRC01SUdOV3Vva0JmcU9QZldHS0ozUkJ2N0lqWldoTnJmZ1hvUXNqNlhqMDE4VUN6clZ4ZWVRdDByRkVsNk5adTNReFVKcWN3NzItcnB0dEdyWnVYMnlHZXVJdFBtQmkwM3BJcXM0dEdpMkxiN29adUM4OEtwSFBaRU1SM05TVjZ3cGZXMUhRYU5FdXB2ZVFjclVvNjVxN05uQjVfMjFUR1ZZWlc1VTNEXzZ1MXFhZVIyaDltNl9MS2x0Vjg3cDhDaW43SHJFN1BqcG50X0NhbWo2NXpFd2tGQzlDSUxkdFB6cFBmTmVNUWhKNzZqcjhEN3h2cHJTNGN2cVpESXRGVktrWXotbE8yWGIyMHRfYWFaTGJURlF3bnV2X0tBYjJ3aDRwQ2xDbTl6V2ZxN0ZFUlVuSnJPN00wbVc5T2V0NG9MUVhlTlNoU0tUTmJmYjFTeC02bWdPZ18xbnNrakdXRmFVVHRTZmZtVTE0dVJlQnpIQkxQQUhFbDBSTVkzZHhrWjBNUWFmdS1RUTN2amRVZnFiQzBQOFRVT3AwUElKVVJKMzl2Z1lDMVZjcjhfNUU1V3Q3R2tMVktNTldESHRxbF9YcExqQmY3bjZCX2x3ak9SNW1VSl90QU1kTTBWQ09mNk84WE54NENRVWNxbW1zXzMtUnpmcEEzZl9Ydk9EbzFUQ2R5YXNSMGFMUnQ0ajB1RGwzX185X0NwcklRVG5McTBORk8wRlczamRHZU93QnBVaHJybjlpTGxTakQ0WE53enRCRklJSkpUVFFENXVudXhZMEFIYzVoSXR1X2xscGp6eFhDSThqZFNGNVhtd3p0eE0yVjM4azVuWDhkVVliUzZOMTRKRkEyVVYyeEdqbDdRMlhILW50a2lxT0p0MFF6Mi01djdsX3pjQV9kV2NBRm4zYkd3SjgtQ05BZlNkS0h1LU83NWFjQ2JZR0c3U1l3TGJwc3FPTTMyQzJ4Rkp4eFRlZ2JJc19JRVQ5dGhETEhVLWNVSTFoeGVjalRWVU5WVkRlNTRTTjRuSEZMMFVOWG55UTlrdWMybG1fOUt1REQxOS1yVk92M3E3Z2lHNW5IcW5xTzF3VExBbVp0Z1RabGFrX1ByN2NxdnNyZ3Faem9ROWV0WmZRenhIWkRSVlgxTWZyR2oxVVlmRmtFWjMxR2hqNU9CNnJrS0V0eVBjNVdJektDNEZIYU5yejZWOV9WdmN1cW1fLTNKUk1ORVlBWjZKZTFQTk1LWktzZ0RHTXQxamFpYVk3X1BiQjBxWTRGYUk4N29hSGVFWWhpTkhST2ZKUFpyQ0FwUlUwN0w1Q1hDNWdjS2NfV0JQX3hqNlRwZHJscEVCSE12T1ROSkZFcENEOHl1LWZyemZ1d2hMNHRHQ2dCVEJkNFI1S1hobnRtOFV0blVSQVdveV9MbkFoZ3JQczhJUTdUam84M00zc2NnMDV6cG9nOE43TzEyM2RpSzBVTkJXdzREWHdZVzdyNWJFT3lUYW12U25xUUtEOG9EWkgwdG1tNFpFOUdmc3dmM0ZaWWR2T3dMRVpfUVozMWdzal9mTFhCUjItQUw2bVItb3I4eWNWU3RKaVlDV0packxOekJfRFYySGFMMVBaRnJzblFzT2JJbkZvUE1mYmZxNWpKMjB6OWJLaldKelZlZXdyMTFZNjhEZElZdlYwUzZwMlBEWWpKV09GQ1kyLXhNOVlmQ0lrVTNHYm10V1dLcDVKNWZWZGlNekduVWRZN2NUcnM3a2Q1NlBCX2ZTVkVSWGJiMTZHTWZqN1ZKZmdrVmtXWWx5YThOTnNuSWtyWkFveDRHZ0NDS2RnanMzd0xRMnZOc3JLVk5YRHMyNS1OaExzeWg5azZtZkpnNkwtSHVMOWJoTEhqcHExaWUxVHc1THMxSzN2b3JMNzlDeG83VXlieWUyR3hsWjQydDVsYVVYbXZXOTlVZ1ZIUmlmN3NXUjJCQnFCNE1iR0pHR1NhSEF5TUpleHB6MGJFWm1tT0NiQVVadXJPcFlHT0Fhc0JuX3B3Q0F0YjhmcDFTN0NmSWF4VjhiM3RQeDJtQWF6cnB0MFlwZ0VocWw4alFDanl4bGFrczZQNlRZWWR3NnhfTExZeGJMcnY1UHJsZ0RIc241Tk1DdWEtTnNJbTI5V29CamU3X0hPbzNjYXgwZ0lkVU5WVFV6bzFxWGlaRTlVRGJzMEM3c0puUXd2cFNodzZjRkwzSWFBY0UtZ0F5UmlXNDZFX3dvV29GOVNJcHZwQ19iMmhHZWpsazZ5UzNsa0ZjRi11LWhzUE1wLXNoazFQaVJjRXNJTnN2cnlkTnRYRmVSV3JCU190MEN5YmFNQ0dQclNnN1RrNmN1Tk5sLUttR09PdU5LbFlKX1J3dXE3QlRuWUM4VFpCYVBBVWx5R01Uams4V0JQaURQclp3dUxsMmZNSzlleFd5cGNLdXhVRlJodVM1QnF3Z3o5NWotUmVUMUtwc2xqZGRPZkk2QmZUVFJKVGVTMGNDT0QwZF90dHpoaVppOEhzaHhmZ1FGQzhud2NXN3g3Y1VZbGJ6YndTdUI2Wkx1VTc5ZG13Mkh4NGVKNDc2WEtIVW1yZzB6aFROYnQ4aWpUN3Axek9vSmdkUWZ5d0wtYzJ3bXpyMzJPRzB0eUEtV0VPTWI3dXNJRUlCY0ZwdlA4UjlHeFV6Rk51RGJZRFI1OVRnbzNRWEJtTS1OblVyZFY3RXplNklFbXVwV3JFRzZVdUNINENkektITjZDY3FNY0tia1VtT3BRQ0syejJNdy16QWVraHMxaFRnN1lSbjVEdjAwakFjS1U1UWNpUGo2OVcta2FSR0RvT3Nfb2c1X01jWGpGM25tSVRsengyTk56ZlJFQjA4Slp3SEk2WGZySVlIODJremR6Z3VwYmQ2M1VqMzJacGJjRWZiZWw0OEVMeU9aMHpTRU9HZ0NzbEVTeXF4U1B3cWRQeWlURm5SNkF6YWRNRHFqdURVYU54WVdTY3MwaEk2YndzYnc1TElRRjBYNnFEeEc1My1ldEJtSndVc2Y3OHlobS1KLThiY3F3SFpMTXZacEtqYlB0TkNabHZ1RVo4NDJoX0FDOV93Ul91VEF6OE9CR2pjTjdtLUpabkZ3Tzc2anZFbzNyQ1NXN0luVWo3Tm5TZGwxV3dBZUdpWUJqM25FaWxFMWd0QWFZQmIwU09JMEdoWXUtV3c4bGRtUzdGYy1SYnNOR1VOMHRQV0dHSlFLZGZET1lOY3lsMXcwTFVRM2w5dXZkV09yZzZvaFk5c0p2TThHUTRvRjVGWkpVT0tKSnpMNG5reUtOTGpRNGFvTU9ybWNZejk4Y05TM2xmZ2RVbU9mZVpWSV9oSUlsZFlUNVBfMElma0FBR0JZNTExSDU2SU5KQTNtN0ViZW9WUDFqeFFIZWF1SWF3WDVEODNkN1dzRTdBcXBaOFFiSEFIUTdXODdkSGZvdWxxTjVTSzZqd3Z0RHZqR3d0LUVwMTZieFNsbEtRYWdrbDZvU3pYUThtMnhsTjFqTDl0N1VQQnJCenZvQ1FQbXRlaXVUQ1l1dUtNdDdUcGo3SUJWTXFmS0VjVEZ2ZDNJcExkLTFwc2tMd1ZlbVo2TThGSXJ0S3NMM3RHaURQLXpZOTh3aHN6dy11RW1BZzN3bXdEcVpyMTRwTlBwcC14cUgyQ09OaVcxN2p3TWFQSzg0Um9tU3RPVXpDMVZKTU9VR0VJdDFuSkJiemtMeWhNYWgtYkoyX1ZsRk1JS0ZIMEdGSWVJaVZxSHA0ZE5qYkRINUtwTXRfM1h1cmtKc1VlUFBqVnBiVW5RbHllUk1nMmtnaVBOdEpTZkluVndpTFFVM1JpZEtNZkRFcjhyZ25zQjB1VXB2Sllwb2NLUzhWXzlnU3NpaVhHSnRDUjJIdEZncGduWEpocWNzcTZBeDgwZTVLTXJoN1BPSkwxRzNJV0FsOVhVRGpJVWR4NWtGUWdURzVsb1FWNTBKWHY4VHJpVWpsMTZ4eFBTYmREeFJvQ1ozT2VFRzRzZzlfTDB5Ym15ODdHSF9UbFRwY1laQTJrNFNleFFkUkZwV01RMnU2cXc3VUFyQ1BnLUl2eVAzcnU2SjVDQUVQem9RNHNIUGhSWGVjSFZrQU1McHVGcHZfM3o3SkNCT091ZGFYTlY3NnZ1dFgzNjBOT2U3R3hQWTBDekNPWFhqeXVzVEFlZ0V6ZlhXZTFQSmVLcVZRVlgyaTVaZVlXQlA0WFJDOFc0TlFGTFpkQzJLQWRkcl9DRGR3ZTZERXl2UkJjanFBdUVGR3g3MXppZ0laZ2UxeVExaGNqWFJUSTZNRU5GSmZ0WklrV293eDBYUEtUQ01jWm8zME01UkpacnpCTkw0UGRMWVV5TTZXemIzTWF5VEtLVEY5QUphOHdhVzdNQ3JmUlJ5S3puXzBMaHNKN0NMUTc2R3VjR0k5MWZmaFVfWWphYkllaWRURWV6X0Y1TzNDc3pWNlM0UDVHcFBnUUJpbURpLTdkT0NZUUFELVo2TU9WNDZEZlNPb1hLRW1VSDh5OE00cEpuZkhLQm9yWEg4V3AyVTFZbzdQbHJkeHZ0aTJQSGhoOC1LZ25NMmlfVHlldEhscEVFWi1yTjF5My0xRzE5UjVHbFlJQWYwZTZtckNkYnJBYUluc1NOZUMxcTgyd2NQSk9QZXU3OFBsX2lqMXBCby1DcXg0WnFUT0xFSnRUUXpYcFNFTjk3SzBUeml4NFJkSk5Lb0hfNkRHZmRkMEF4OFRGcXlzM3FZVVNFWDlEODl2REpvc3MxbzFDTVdSVVd3dmpPeGJjTWNxMzNFR25HZ0ZrSEVlOFdlVkVISW9xNWRjd2o0bzdzZGhmTFY5ckZIN2Y4cElFMFhrT09fc3BnYXpDdlVTWlhlcV83a2FhT0dacGZxQVBTNjZaeTdWcUF1RWZzZnZ2dFoyWWE0OV9KQVhXZDNKV19YN2lvWjlRQllSdzE1X3VNNi1zLWFObFBIQkI3akItZnNkM1ZGcjlTbUtBcHlld2h6cnRjVVlyb1Y2bzdNdUF5MlFqcFVVZElGcDdEWTJJckdKNkstTjZpenlRVkNzRWpEVjNlcDZuTzF5TDByaHZNLVJSbE51TzE0aUFBR3pqQTdIcGM3SEJnNVFEUFBiR2NkLU5JUjFYTnRUZE9fVjlLa2dVS3U2WGtsaXczYUgxeW5CWHg3ZWtzbTJWN3I5dzJLSFNnd3BoOGt5Z0o1Q1daSXhJQWJxNnZFdEJFLUpVc081V2pCR3FDWmRNbDM4RWlYWnJBdjE0eDlxMjQzZHpWUkxSOExYdm9tanVick9NZU56UlNrS0o1WFlaMDVjeFh6TDBvZ24zQ2VBTUs5cGJrUEJlYUZQNTVnTWpJbUE3NzF2NGlORXFxVlo0N3d4elhLQ29rdmZlaDY0cHRxOVl5Tmhmb2Y4b1VaYWl2ZUlYYjd0bkEzd1JfTG5RWW5PQW03TkFFSWpVcE92ZlhSbWRfajljMVdFdzVHZzBxOG5WSU1oLUEybWtIUm50NU5VOS1hV3d0ZXRuRlRxd25vYUlmc3pZbEVHZ2RTRzZhWjhIU2ZveVdrTU5Hbm5LU1VodUJvdFM1b3ByRUJZb0VpSmN1YWF1V0F4MWRDa2VsZEszZEVUV0gzN3BaRnNWZ0FhX3RrTFNLdVkzOHFfR0NnOFBCWFdjbDJJTXZSTW0xQXlvLUYzbVcteXF0dWxtZm1BRWpkMEtrWDZNek9FUTRDNEVTWEI0dVRJS1BqMkpCX2pMeEZQaFdVbFo4OGxHcjQwLTRZTWRXbEk4RndJYnprU0VVdWlyOGtPRnVfUEE0Q3Y2akZxeVZ4RlZRMmRCWEphWDNBZm5iWFlDZmJJZGx1UWdfb0RaZzRxZDgxU2JtU2lsQjhSVjYwVXFLZ05hdGtaaHVJaXBscHQzaXh1RDBnaXhsb2YxbWJST3ZmaHFveXpGaGFKWVNQd0JKQjJUYlRZaURBdlJXYjh6UnVHZVJNQ1JNQ08xRTlfcTlDd3F0UmoyM0lvQ1NCbzJXWE9JSzg2OFZ3elpmeURzRk9CN2prckJPNndtOExGZ0xPbkdNVVlNWE1BczRRWVpWdFlEWmVEamNPbUtXZWtLYmVfTGlHVXI5cFlJNm1TY2hUbXFnTWhkQjJTUUFYYmJuV3B6MnVPNXZDZ2VWOU5hbTBPWTJSZDBGNkw2NUFJTjZjamVJS0RfUXV2VEM2Xy1MMVFWUThaZzB3MEUtd2IwN0htbHl4SFdxb25NckE4a0p3LWlyS0p4eTB4YWZMcGluaTRHbFltSW96dWdDR0VfRDhnVkNfbWlORnc0ZHZBbnc4S0NXaEt5TlRZY0RjVVQ2ZTNGZ3Q1X2ZuNmhacFBzNVhUbVNkMm8zbWFnMTJ6YkZyZXQ0STMyeVJzb0xlM1VFdHQ0WTNPeTJDVlJtNWk2S3loUVNfdWZ3NHFfVXZIc2dDdGhxcmVKLTlINjlqX1g2c0JoNmZLS3Y1WHZsYUxlemtPYUs0aUlvVnBGTHZTTGpsZzczMTlkZnhxLWdaNUhiSUQzOWgtUEpFRTF5Wjg3cXdWRFAzblVtRVRYQ3Jza3lEZWYtWjRBaDdWRFM2c3c3Q3N0Q29WaGJLNEdWRTZrUTFwTVNvam9ZQy0zWkNfbWNRMGlZc0lQZ0ctY2w1aXhwUXB6aVByTnJaNmt6VzNqU2gwNjZ2RlB4M09kWkZaMmRQcWVEQ0lXTGZaU3JiMTZIT01iczJZc01JNlo4QlMzMDBGeVhfYUdlenExb29oMlRCdVRreXZJWHhCSWdBdTNZWE14by1QZkl2V1dzR0dXZUNFTHNXTlpMRk9ncUllZERMT3JPUW84U21xZnBoMjE5aWUxc3QwemJDLXFXSHpHMFRURmdvNHNydTNMNndVQ3duSGd1amFHeDRPcTJxQk1YTFNYY29zZ25sUng4VkxNR2RpNGtidW5iTUhyeUdWb1psM19mUVl4ZG1rQVBLV2YtbGlHZExBYWlWTGxMdVpvYWVVWEQxUmhDVGVlalIxcUxpdmtUSmdWNFNEdTRubDJCaUpjTVJJYW5iT1FlOVJCa2JUMGd2aXlBRjZPVmJyUGpQYTF6VXBFYmNjdTVNd05jRU1oa010cURMYVNPYlgwRWE4aE1ZOGkteTNTVmlxRG5lMWMwRzFzTTRlV0tqNE5FLVYyN2NsdUwtMjkwX0ZJWjZHdWFYZVNvZklUT3B2ZllaazBNRkJTYmQwMUEzU3gwQWZMY2VURHJaN1BrNjhFdUhBTmJjbHJLS25VZDcwX1VKc0l3emhDU05IOFVhamlMSDR4c0Fkd2owS2VPdEdMWTRVZjIwQVFNV09tOE9RYjU1SDRDWndBejB5Q01YM3RBbVgxcmlRNW15QjBBNzJUZ1pRbnlGV0JkTUlyM1RsZ2NSbTV0aDJ0ZkdYY1Y3WGMzLVRyMEdVdllSenNMTHk0WnNuLVpBNFFFXzVMUlNHM0xjMXJLVmxsWUlmWE1aNHRhTFQ4S1l1NVpQYVEtN0ppNm1BMGpSY3ozMkpJb1JSZUx1alVCb0tQbTRmYnhzZHVCc09rOEhJUVpoelFkT2lpU0RhdzNURFcwNXNSd2tLakh4cjh6ZXpjYzdPRF90Q0ZHTm1TRmdiVmxDR19VLWJxZjM2bTZPQWdKb2o5UEhOaFZXcXFiWFVDa1kzdWlycTZTZ1YwWmE0NVp1UUZsSUdPU0IxaWU2WXA3NFduWDZHeW9sSGJvUmtSS3Y2cFdsbGZOQUpyV3h3Z210S3NqSG1YeHd5NXhsTy1aYTlFT21GejlGcGV1Wk5yZWJzazg5UUJJODNfSUpycW9ZSk9mNzRFWWRRZ1JKejNrNkVxUEpqT0NTWi05MkF2Y1BlZ1JvejZDNUExOUFuM1hZcGtoSHlGSk01ejljem1STjlkSWFVNVQ3YUxkNWNaT1VxbzVaNTdoV3RZU29RNy1sLTlkR0hTNWdlVmJxTURFaG45NzUzLTVobDFWcmdCTGJWemJ1S0xMaGxBWnFvakFsUnlKYTI3ZFJxTnVEcFBsTmdLR0ZlbDlvQUQtSTRuc3BKbGFmYl9JcndacS1UQ3hqM2E5M3czWFJ3Y2hydmM2aV9McTAzVk16RGd5Nm5zWDN6SXpjSUZGTTlqbGxNeHc4S3dfWDE1WkNNMzZqQmRrZXgycUxFbTA4WXNRbjFhTGZGOWdycnZRSEdkeEFtWTJzSWNWRWpzbmh4eDFYT29WdjVUTXR6dmw0RGlNejhWQjgyZ1FHTFhvQTJyTmY1NHN6eVRib3l5UC1oUVVmYTNxYURuLUl4RVBhZGtPM3JVMFhpMFMyQ2o3ZGZ4VDNOd0pYTTVoYjBUQU1TN2VaR0pKWG1CeWxzcS1YRjNFb2FWY1ZxenUxU3p3b1hEekp2R1JrVFV3dlJiTzd5aEZDREVfdTBNbFhiTlFqbTIwTlA0aFFPVVpzdEVNbTk5OEJuRDdRQjMwRzBzMmFJeW9MZEFvcklTYk4wWnMwOGFXMnI1bGV0NHhQV21yc1BtWTY2ZEo2SGdpME1TaHVRX0FFNEVrSmtqMTZmaWFzbmJMYkVPQWt3dE55Tzg3NmxDSC0yem5JdlFPRFczWnlYcnRMaDRJcFljcnZBSTVTTHFUVUZzSmpBWmZBYlhZQlJ2eDFobzMxNmFGNW5sbHptclIxenJ4YU1qZDFvcU5YMm11RWtyWDM3SHM2V0pRVUNtVGhKb29lV3dDOHNQNjNLam5RUm5MZWRQNS03b0ZvRllCT3BmaVEwUGtlN2hoZk5zZkRwOTZkQmJyTUNCcEFBckxoQ3kyVGJtclloR2hJYnIwRGtBVUFBcUpMWldFWk8wWWdmdnU3YzQ1MzN1WlBaZzNHdzNpbkROUVlrbGZ2b201ZmQ3NDlMMFo0Tmd4dmhKUWNhMy1ySmliYWJzRkNZVzJHS0lzdndBV2VzX0dwQlQ4S1BJc0dKSFZQREwxM3lGQ0I0QUkza2xwZElRQUJmRFN0ckxSUTd5X2hLOVBTT2RMWW85a1BIZTFRN3hYS0Q3dVA2MC0tdXRiZnBZTHd0S2Q0WlY1Nll6c3A4YTgyZERKdHJYMEhHTXRMVnRBRm1fTUJxUkxwa25ld0pWX2lBdGE5c0NkRVlWM2ZIZ0doT2JjTjRUUFhoZzMyM2tldm16WmhNM25KNk04Q1l4YnZvY1NfNFRRTlRXczJTaklpR2laei11bkFNSjR5bTRqUmZ4UzRiNVdYZGtza1BlMUR3UWNOcURQMkM0WW5pd1hPZHlmR3hXVUNkU2IzYjR2UkRJWXg0akVRTDRfNTFVc1NWQ2lVY2hIajZ1b1JudnEwVHUwa0RCaE1YRVZiXzl0MWluS0s5MFFhOHE2azYxai02V0pEZzlWcEVzUkRPUlJ0LXlEdDZMR2hOSzlOTWN3ZmwyVWN1Tm5yLUR0V0wxN3FmNHhZRzdLVEhUQkNFc2htdUFmaEV0RXJOMy0wYklabE1TNFNUbGRqUjd3bDN4Q2VfajR5bGhuRzg0SG5kNVJPV1lnM2swVWVaUERMSmhxN2kxVEluWjBGNlJ2TDhrNmlrWTZtS3JNNDRaeW9qeEExdF9QUVBQSGR2bDVJcmFLd3B0bmZzWVdRaFBZT2JqeUh6TTJCUkhEZmhEQW8tbXhna3l5dU5IcHpsTElBZVNiLW5zb1dLTkRMWi1uQ21UTkN2RGw1SVFrX3lGSTFuU0lEQXpRQlEzYU1SQWthQjloNHY2SkVCYjV6SDhlcExrbEdocjJQOGVOQ2ZrMF9kak9oaGlkYktPWE5zbUhXV2YydG9vLWhWQXpfNDgzWDJKRU9vVlNBNm1nay1lUzBRRjBPQ1ZzaThlbXU3a1NNbERjSGIydjN2bzFrMTlsaDZQNWVnajdmOHc5SnhCcUI1Vm9EdDJCNFJ2bEhybnJ2b090R2JFLW5SRjFieEpTYUsyMGxVSllRMEx2ZDE3RDRPVHRLWENoalpUTlZuYTVpMWRrRVJmZjVGdVRnS0VFWEJRT1JVRmxqVjBXR2RfTWZqMDE1b1FkaWRvUzlFWFZudjJBWjJTRTNSS2tMMDJHLXJ4Y0daX0xsWWYzdnJFOEVFOWV0WGI1VktDajNsNVppdnZvWkxTYnZkS0tpNzJ5QWR5TnV1STJZbTdULUdYSHRISW5hbFpKWXZhT1Y4ZktLcnRuaEcyMVBHWU5xQ29wRWJWTS12LVdNLS05OXJNZVo0QnBfZ3ZNVDVYdEg4Y0tKMHBIRTM0S2w5Q0NWQlhOdW01Y3pEcktMUTdwYzZKeUwtcG9SdmdhQ1pBYVh1YXNIT0xXSGdnU1pJTzFmZjZRVkpDa3RTMFd1Wl9fbFJhUUlxSFJIYXVYRWFNUzc4a0ZrZFZXTGtSUWtPaTZHeHhXaHFlT29qT3BCY01kclBDcVQ4MG90VURHTUxkYmpLRDVRdlpmSWtESkQ0am1RYnF4b1lQdDBmanAxZEowbGF6Tm5Eay1PT1NhZVdrdjQ3cGtoTGhQLVRMSUdmZ0VpaGZZU1NfaFg3N256TF96UWVPdlpkM2dBMDlETURvNC1QYVVZajVlUnRqZWN6RURXVmtQM19NV0lyaF9qWHJ3UUNMd0N3N29sTFJoZENFcGZaUW82RzVhWHV4aG5oSTdVYU1jT2pYcFRCZy1fNUJKTFZXa1JNUV90cFR2bjNucXM3eFBoXzdfdnVfaHBJaGUyTTBGaFNtcEVlOXNGOFdFZjNCSWdqY3pkUi1vQnVMdnphQVFzMmVCNHBRVzYzYTVEczhBYy1KSkZHSFpPY2tzY0N5LWJwenF2OGJzOGltOFdNcUUzWVRTZktzOGx3Y2dzSlJPcldTVzJCR3hyYVlzTzRrQkExU0tfUUY5eEsyU3FRUzlrYm9OTWl6Y05oUFlzbVd0elB4NXl0ZlpOX3NlSVZjemI1WGZVWDFwQnRpeHdDaVRCSGV4RW5vYmdXcnNid2h1eUI2cTI5ZndDT2ZYVzlNX1htZDdXTVZuS0hNOG5XRndBTDl2UTVWOEVDN0JseUhwanVnU3dGeG1BYVBpUFpETlhCRFZQNWZBNmNBS0FxSGJ6SXJTWWZqYVBPUE9mV05RLUY5YkkyOG9aLWxPcGpTZHVzTTZXMHBSdnMzUXpHa25QWWU5VGw5VE1kMVBNa0FOTlhEZ1MwT2pnQ3BEc1FNYl9ZSVhoOFFNLWs3RXg5aXFvTldOdDJtR0YzY21yRXdIcUNzaHotbGpLaS01Njh3ZmhhbnJkWnJ1U1ptek1pTG1hcnRRMkVJUjB4amoyTXo4NXNXb1FLbkU3UjFKMkl4UWFnUDdHNndZMjUzYlZ6ekNqS3RVcDB3SFNtMkRNQVROTGk0amhteTZaeHJLLVNleHZwRVl4Z3d5aDR2aGJGRlNjNlJOZWN0Y0Z6ZUZqV3RpSDNwYlduanU4aDd1Yk16RFBIOWtheTcyZ25vZS1uTkdSSkh5cTRHdjYzRER0SVNoMWlnbmZJa1Y3NEF4enBDVDFPVTl5NGQtV2NnakRWSmhPbXRDZXc0RXdaZnV0eXh0cmJqS2NiZkpTcnd3Z1IzOWJ1X3lZbERQRnhUTDBXdmZHZEtDSXJPUVJTNkxDb0pRMkFFTTVWMGJZYWtvZTNEd2swZ1pvdXRhNzI2bkNHYWllTkhpSzJGQ3RHOUtDY0RXN2NqSWNOZFRLQlVVLVlNeVdoaXAtdTlick1xMUVkOWpXbVRWWVdZNG9pZlhJYmNYWmJvbG1JTUhqbGwwN2drMXFwMzNCa3Bua2Y1VmtDRFpqOE92WWxITHM2MHNIX21nX1RDNVNCVHJ0VkEzRjdaejMxQVRUSXBnUDJBQnhab0xJUXR0cGZhbmM0Wko1YUlmdGFJcEFHY0EyRTlkbVdwR2pOLUVONkRFZmlKd3huUXA2aFI0M2lpeE1iYUxWdjhzd1NYcDduVHJBOE9TMWMySzJwWkxpc2NuTkJWMEF3MTRGdmZOZjhFYVpNVENlUHpjemxsV0h3Q20tdzRQT2w1MWJYaG8tcEdCZUNsbm1NTFc1aEN1WjBBbGxVcGxRRHFWWGVNLUJHR3NsTm9tSGhiQ0xpOVdyRkFfNGIzUkFWa09pM1lhZkRsSkw5NVA2azZQbllETEdVOF9WcHZyUS1xM2xjRWNpRmV6cXpNUkNUcHZ5ZWU1ZkFzM3ZYMVIzbW5QTlk5RXktQVdtd3JmYzZsNVcwRlBnNnpfY2FuTktSU2hOUmdMMjZLa2ZtMUdta3l5SU9VUDJuR2RWSVBXZ0NFaFJnOEhFQUtKWmtWU25YMXllYnY0ejl3S080N1M2Q0hFTFNTaENaaGt2STZLdFJvaGc1cTNXdkNpVnUwdVRKalN4WGxaNTE0WjNHckxhVDI5LUJiMDBWMDNBeVVlVVA3elpNV29PV0hwbW5Ed09IYzJYbFFJN09FMnpOUTJuenZEb3ZxcUpXa3NRRjdKMHhXZjRtd0FPUTVtLVZBNldTZm5PUTZveFJ6X0VlekFMWWQybjAxMHRWSXFWR0tTTlhsWFpSNF9PcHo3OGZFTFlocEVOVUdWNmZkUmFGb2pYWWoyOGNkT2dldV9yLS1tbXlUSEJEMDFWQ1RnVmlHNFNGLUNDSnZMVWRDMm5wU3Rlbzl6R0U5a3U2Mmh2TG1VTGx6b1RVb2x4blQ1VWxaR3B6VVJCekVYX3BTVVB5dkdZajIxLU5NcUxtUFpLQlJZbGxFb2h3dHViQlQtVnpBVm9NdWdVdXFVQ1RZbGdCSmhncFlTSGNLblhrUkhCZzM3ZFFpVmR2amo3U3kwMFR6OWNVbUdremY3cHFxMjhmR09WTGRQdkk2bEFDUVo4RUo4a2pPZWg4WTV1U0xWS2VxRC1YblF5RUY3ZTFubm1oX25ZVXROVlUtZ05IcWViXzNKaW81MnplSy1tMkwtakNTeU5mZVZYTGxlT1JLMjlXTlpIQ1pwQ2M3cjNRbUZQMTZpSjgxMXBmV0R1amhqaWZlZHJVZ1B5blVsTG8yVW94bWduTHd0U3pJQk1TM2tCdlpPcHZQOFpfbi1FZjk1WmlCRGxwWk52Zm9vV1VHQTdUODlqcnYtYlVGYV85ZTYwUlphSWU0V0xpc3l4UkFEeEwtY2FDQWZQYlJNVkVtc0U2SmhHQXB3QUlMa2ZxeWdOcnVRaHFmcjd5blkzWDQ1eHhqbzloUDhacG4xNnlZcFFWbnllNURKODFlZ0JWd2V4UUhjWGhuM2ozLWFLQzJaZDdqbXljWnpDUTlEdDVHY1JJZUsyWHRCY2lWNEdiZDRRZGRQS3Jwa3ZqQkR5WHd6VWRkZWl0TUM3b21SNGpJVFF1ZURoSzJVeFM3REhjTW5MNW00czVmX3RiQ0JvTlJ3ZC1VejBtZmI1bHUtc044dFR6V1FfVXlkZFBEczNYQWcwSUViVjlrVkFVZEhhelhpV2J3ZDUzdEwyc0FINUxocDVLU2t2QUZIdEI1TUk2ZjZ3WG9BdWtRSHpqelhIS096WXlIM0EtTDNRVUhlbV83enpUeGZoZkFnaFZJc3ZkcV9HSW5DUW1PMzNmR2VwMFFLeGVQVTBMWTR6VFZxMmExTTFTdVhhQm5mREtjS0gxZ0c1VHdnbjdWejBIVllQQU02VnZnSER6Tkd4UVNVV3ZSQU1JRVl3ZkFqUkh1Z2NGN2I4SFBLTXY0RU0tQzlvXzR0ZWdFajhST2Rvaks4WXE2Q3dhRDRnalh5a2RGM05xN0lMUnBfRjBKQlBfaDBmazc1RlBidXhOZ0RlTU1OalMxanpqYTdUQUhHTUpraTk1eEMtYUpqSnZvc0ZmcFNxODl0UHRXUmNZaFhDNWludEFnNk5EWkhvNGg4TW13MHZJUGhYNXBSZGFaMXlmenQ3ZHlwZ0twZzVlVFdscExNQ1JJWEtHdlBnQ3BHWnJTc3A2eUY0eUoxODE2Rmg3MTBuSUtFa1lWajgwMjNjOHdCaGkwY0N4TDZRakFaWHJjaGxoRUV4ZXlWTjFPU0hzeHJyM0VQSUZ4NkV2UkdLejdGTUxUZXlCTm84VFdfOFN6YUJvdEVmT3NRTXE0RkFsTTVQa3RfQ3hxVWM5SlltUzQyYkxJQklGU3B4cDVVWE9Cck5PRkxkdFp2U0NhblU3YUR1clY4NFBtb1JZSUt3WnhvaDVsUmhkT2FDRXQ1dnNLcmNnaVVSdWhGckFZYXN1bDNySzNtb2U5Yi1pZzZJSjFrQ0g3Vlh5NHdnRzlfT2RzdDZTTGxtc0pPaVBBZTVfZ1JpWTZOMUh3WUVvdlM0d1ZJbGxJYUFLWVFHdkEzVGZ3Rm50RFlGVG83WmJrYXRjRUZWTlp6SEx0b2tpbGk5a3d6Wm1DN2xrMXlPM1pPdWx2SEQyX2ZSMVlOZWFiRDM2YjYzUERYV2UybWJWUG1HUGJac055TjlLYVBBb1l4WEE3V3NWdUt2OXNuTkR0c19ocEZjZVotVlkxSVg1SlAyYkFYWGJtZW1zYzZQZ2VQcXA1eE1paWktSENmTE9zYXUwNVpDU05pS3lmQzY5RVdHeDE4S0tMN3psWl9FTGttODNnSDBDLW1ObGJhemZod3g4YWtSOTE1OEIzY1BBUjhpT0xobl9MbmNpdXlwVWZ0ZTBRd2tGVjc1M2VxMDRhMjNVOHVmNlVaS0R2aWE4LS15dFluVEdfS3JMRUxmNjJzWm94MW5hazhCZm5KeTBydlZNc2N2aHRia2tSaWxUclduSnRFMEttV3J0TktOT19MMDhneVhLZDNXdmN6T1dDT1prQnA3RDlrSjhGbU8wb2R0MVp1VnZwX3B0QzYtQzA3cG1fUmVVTEZDOWtYSnhJZUxFbG9laUd1bzlCSTZHTGdMN1FpMkI4aWlnd2kwUzlFLWp6LWduQmt3Q0RyYzFtSjdZTWdFNnhPSl9Qb214X1h3VVBGXzFPWW1NdFhXX2JpYmlyZTdaQW5CckptSzNSbEUzU29ERUhoSV91NEtral9HbE1LeHZJd29iS3RnLXdCTFQ0WVhWaGlVbTUxU0ppMEhpVGxkVmxsdDQyUW4zSGw0aUtxaEZGdklEV2NDZWt3cWUyWjNfU3kzLUxoY1pMRkctLUhTbWJjUHdqMVUxakZfcGpVWUduUlRkZTJXV08tdld6RjVFdWVZeUQwNFc5UTY3ZUw3SnVSa3A5NjdoUVZnM0xRN0paVEdCbmcycGtyazlyUkhKM21NMFYybUY5REZQcnNCOHR5aTJfNWhhZC1HeklGd0k0OGllWG1WSXRDZldJcG9IcEZ4OUMtQy1fNDRXdFJwTDFKemFCUjdsZHk2b0M3T0RyamtDUWtVdEhWcENmb0FDNlNlWmN5SGlUMVNva1lxMlc5WVdVTC1IZ1hsbnhfQTVoWC1EQkFOUTU4SURrZ0NzSEZNTXVGQkg1M1VhQVlYY0JKbUh0VjhGbzlVUkhOS01SQS13LUgzNFFHSTF1SmFuQ2JHZ3dkMURyTU9nQ1dTRzVDWjBWdkdjanJUdW5DX1BjeFRBWDB5bXhVamlLVElUMWNnejZCeXA5UUYwdnIydXkxVnM0c1pYbThyVFpvRTVOck1qQ3V5V0pvckJWUlM3czZ6VGZBREdYTnVBNDh6ZFVXaXp0czJ6TmpfRmtjOFlvRHBBODFZZFpPWFVsSmIzZ2dqeEo0NDZ0cG5DN0VWWDJuMmotZnJTXzN6TDE5NUswZGVqSW5SOTZrLXFhWUc2UHI3OG1QZHNwNjZJcFlUWWpqZlBvNXhPdldQWTRhOExsT2hqMXJvZHZ2N19TdDRKOTdwRXpvZ0ZzTDhhamxZeTNOUzdBYy1MSlhBdFcxcTVhdjBQcXh5UEdOUmhMM3RVbHE1SlFZRE5oQjMwWVNCZFY4QUV3T1c2VHBpbmptWWdiY0lTV25vdTJla2UyVS03U2k0U1Y0U1dhVzJrSUVUSnYyX2hGcmw1UmFUeWxMcTI2V1dUQi1URjFfYklDNjVzVDRPX2dYTndvZjdsbzl6QkkyZ2F5d1plYWVTalNSSzkzeVh6cDBHNGVEXzNYYWVUNjRWeU5GNEdFM2FTNE5YcVhGV2FqeEVDS1h4dExkOUtMcmdnRGo3OWxwNUM0ZGVSdjBhak40SlhnTGNSVUw4QllGQWNYTDdkV3hFZkZmWkRwVERfVmZYTU9BTG5BRUVFNmV2RHlFenBMRUUwY29kNkVuRDlJODJJd2hFZGRqTU44cHdpbkg4TlMwNzhvbkNlc2FwV3MzS1pEc3V5LWJPZ2huczVtTzRTRS0zYzdzUkFsV3Y4VzJHZEhsUmNYdTdOUEVySmsxaE9uMWk3eWFiMmtraVZjTlhxNnRHZE1JNWg3WGQzYWJkQVhLcEQtZlFYeVYzT0IzSXBWQnJFMXM0elV5U042MGJpSTdhckc1WXpQX25iVnhFd1JxNjNYSVFDZE9YZ09rYm1DZEc3WlRXX2JjTkh4NUMzY2FkMVlwX2loMXU0MDZaWHVSRnBaS0Vmb29PRXV6bDJ6V2QtbWV3cVJhbS1ZOGdkZ0JLWjA5XzYtRm5KTXBqc3JzUFRGMUZENGRpUG91OGo1enVaXzVEc2VDS3REYUExM1Q5UG9WVk1vSngzTWphRnNtNEwwcWpUNHdzUGhOVEZvcFdINS1RdElONFAtQTBjamZ5dENOejNUUkpxWk1ENGtwQzJaYVVBVkxEOVBEU1YxUjh0X3JYNng0bkFIc2NzRTEtSUJnTUg5cTJuemNXdWx5MXdDaDZfNnp0MHRUUUszMW5IbWI3elVBZ1BBZkJuQkU4c0dEVDM4VndRRjh3ak1lZ1RBeGJHelcxSTI1c2tJaUVVMjUyOGNGOW0wZ19DUzlhNVNLRk12ZXBIY2Y4UmNDMEJsczlMTmF6ei1fNXZWYmltOVhaUE00ZVBPNFpQa1gwRjQ3UHdrWXRHMm00T1Z6Y0JNdnNFRkQwektObWEtTXZncGdWc3lOUG5jT190QTlIVF90R0pSMEd5TFpFQ2cwQi1RYUg3MDVKMi15T1RFV0UtT01DMERUekRTQUQxQnVORkpJZTBUcUxaOEZVTjJoaGJwTl9KWlVqeXd5eE5lVzVUR0xmVjZEazNuMnpJNUlyN1plUERlRnBOSEtrdjN1YlloT3Z6bW9XYUUwdmN6NElTZTh6RFpEZ0p2LXBsckt4bjJwOTQ4YndYbi1vNDdGdkNSZHBrWlMtbzIyWnhpVnpqa25kLUVVV2sxa3VKSm14dXNKbXlpU1FNQUlkR1pTQk44NjhfQmZZVHVlYy1rZllOeEFaOWFHVERVSU94anhMNm5qY1N0ZWstUUVKQjkzYVk0YU51ZGRBel9tT2JzdlEyOUF1NUNYVTFZRy1hYXNMTVRJTnhIWVdvVDdWS1RCZkFVeXRxZVZwUTRfekZGS19pSTNFTm1KVnVsZXRoZy15Xy1ORlFaMk9LM0hFUnRrZzRMMTZxS3JMZ0ZGOXVxR0VSSG1lRFlteVpNU1R6aGpheEdHRXJpWVVaOGM0VE5wMTBXS2t3SGhac2gzQVB0SEVxVGJwQTBENjRETzdua1h4QVRfTEhseVZGRjN5ODVjS3lHSEhQZldsNHRZdFpLQ0F4QTRkNWFLTXpoUmNZa1NwTmxEdXFyYlBlSGRKRmJrVGZLeC1GeXlDX1NmbklNTURIVG1YRTRtemVfVTQ0Q09CVTV0NVZ6U3RfYnpOVXdTTkVWb0hLc194dWhkMzY0b3pVLWoxMHRNNDh6bXdsUGlxMFJISzc2MUxhb0FzNXE3UXhQb3VOZ0ZSWF84RU04SVI0cVU0MUt1THdxNEVYR291bFcxVEhMNlZjeXAwa3VKd0lnRk5aQ2xzTFV5UmpyczM1OUJOc09taGxMTUpjLUlfcUJvRF9ndzFMcVBtWk9xeEFEM3FPVDR6X1JSUnRiZGxXUFpPdUNVNEZBcmYxdmpwdFJpVlBwRklGSDNLRURnd2NSYzRnbWN2V2NYMWR6Yl9Lb1JaaHo2MEpodnFsSENGMVVoQlVuR1c5SlNKa1dpa0xRa18yTUZJdU05TU5oZ2dvS1JIUlN0UEV6YllJWHZGZWxKdjF4UjdWZThUSHdJLU4wZ20yVjZ3ZS1fcDBzam15VHRLcGQwQ1g3Q2l0bmx0S3NHWHE3NDROdXFKbU96Q3QtZjI4Nlh1cjJIT3hzZTEwaG01akUyb3R3cXE2VDZrRmIwVEhPMVdVNzJpOFdIYi1TMzN6UFVXRGxfZzZCV0ZmTml0WW03YU9LSEstYklVWDU3UzVmODBGSDVQSGg5VGtnaVlWSWJyTWx2Vk5nTnF3Z1VnX0NKSnhUUkVtTUpGWDNHcGh3TmsyNzJGTU9nMVMyTHFIZS1RYmJUeEl6WjRiaElzMEtMR2JLR2ozWjdxeVJ4SGJHX3c0dzdiZXVBRzA0enNOTGFUTEhyTWhDOTNrSWFVZTRHc25WNTFpelllOFA2c2lOZTNwaTVDVVFNVElHdHhhMEhlZ2FzVk5pMnkyU0N6eWsyMVEyalliLWdST2tXaDQ5c29YWDZGbTJTaEVJaDNYSEpqY2tNOFRMb2F1ZU5nWWY5Tk1mcVRYX01uNUpMOXhwRlpvLUkwMGppRTRCOG9wT0E0bHhRMjlocHR6cEZVOWotTDBRbExrVWJZWHRGZVNrX1V1SmF5bFNmcUpHUkNjRmk3cDV4aVNtZDYxREdFYzZvcDEyMGtWcm1KRVRjekpGOEw3ZlN6dmd3STM2d2UteVlvUW5Qc0NtTFpTWVVZZGRJR0dyczFIXzJ3SU5uSlhJMS13cVMxUzFDTzFCamw0el8tT2hmNXAtTlNYUnYwME5FZE13ZE9yY2RhalhvWFJMN2x3eTIyeGptWHBnaEFlS1BxNHdYZmYxQ0t2cWhrakFjdGNyYmJWLWI4U0V1bnRVTUVPM2wxUThxQi10SF80MzA2WE9EMkJrRklBNXZfcW1scEFmR18wQ0VsYm52V0loOWUxc2ltaG11am0wSG9BZWNKUDV3NmlmY0JpRGJaVlJFdVAzUnRfR2x5MVo5UVpWZHJUZ1UwNzdDU0JJWW5FWWs3ZlBHSVphMnNXQUl1bW9GaXFPaEc0cnFxNEhRZWhEdTZtZ2ZWLWF0cG1HVEhHVHY2OW5aUzRLUEw5dkJmSVY4aEF0UjQ2a05aMy1GTnY4LWZnQ2dmdHFnbmRsSTBsZC0wN29FdFR4YUlXbjVWMkJpbk5WUklEVnlZT2hVT2RsZjl2X3dGWjFjcGZpd3RrdU1wVEREWjA1S2FHS01mbFV0TElwNjhmblphZ3NXNGl3dzlJTGZpM1ZTU3JZTzVpVVBmOHlMaldhb1A5RXlnWDdCWmVSdWFqSDdhYV8xRVJPUUY5TWJFRm1TaFJYRHpRa1hsNFFSQ182ejQtOV9mQ2REQXcxWWZhaHhreVpCaHBwYnliSzFDVHBLQnc3QkQxcEhvanNKU01PTHJwZU5IWWpXRk1HU0xxOUlQR0hhSXVEZXYxYVlZakRqM3ptNV9VVmlrU0tsaWlQbDFyMWhQUFhXMXY0X01CcU9Wdl9PWVBydVZDSEpFeTFGbnNEWnJtd2NGVWlxSlpJaTd5S181NDFXemZab0ZhMjBxaHhod0tYd0c2TkpENE1zZHJ2VjJ3Y3lkcDVsOVF4anQxMFRCNlFzNFo3QWtZbkNFRnVEYWlyem1zYVpidGlxODVINnBGS2U0Y29GRlRpWFFkWXFmTGFaMDYyR21RbThtU0VGa25TcU0wRk4wbEwtanFiRFZKUThsWWVZN3B3OGZmUm9LaEJBbVRIaDFvSzZPSFN4eUE3UGVZcF9WWjRUT3Q2ZFlUbTUzNmV6TV9GNEVzTk1XUDNLNkhHMGpkX3p1WEVtQ1FkM1c3MEh2UzRhZjVnWGtNdHREd3BySGZOODlNeWN3UlJxN1pIc3dZbXBSa3FlMEFfTkVlWHQ4QzBHenFLTEZwV3Q1RkNqdWxYVnJzNWdycjNRUXZ4UGg5UkRhYVFrVTJRalpLeG9aTHNqVS1yUkV4SW52SlMwUHFNYUhUY1UtZmw2a2R3MFBnbFdiWVFtQWtPa2Vqb2lSVnBJTy1CcUozeDFhaGpjdGY0aWdxQVpsdDFMQkFRZ25QbWRCWktZZ096U0tGdzhUN19oeUNSb0M1UktkRnVkSkItWG1DNEh0LS1oSDZYZ2JLQXRJTTNHQlNDcU1VdGUyZm4zTGZXNk5SS2U4d3lrbW1LdnRnbUZxTnM1Q29zcGktZGVYNkFyelRMQUpubTdBUVlRQzZOcmkzQ0xjckZXeElhV0huUmtNLS03MnpOeVV1YVJ6RG13bkNTOFEzSW81SkdjOVRZNUhZaE5Ca1A4WGU4QS15Y2VraEZNc2FvVHo2R1BQZFpudWFxMFA0NkVTdURibTZndjNJVDluZFB4X1RPMkx0aEQyY2Fva09zUEo0NTM5QUxRUFFfSG92VTFPcjMzNkNXY0Rvd3M0a3lqRDNJMHJFTERuRGNMZVdNcG84eUdjVm10U2VoYmw5Q0dlR2J2dGhfeWNNMmR3RVFtQ3RXUjRHam5wekU5MUZveWhWT2ZxdDE2MjVvbVhEaTZ5TXE4U01tWDAzM1Z1YnVubFZQVDJoZDBEdHJLanZkazRpSUUwVEpraURQN2l0OGhKREpvU3ZPLW5YeDkwVTJjNkZMLXNnOExQRnNhdmxnNXp2Rzg0T0Rvb0V0OHc5M0l0MFU1VG1KNUhZZUM4dWE0UVJYSWZ4WmxkelB3alNpb1U2Vl9vdnFzYWFBaU9OTTQ5M2M0aWV2V1ZDSHhtTVZGVTJOV1ZIU1dCRDZSYnpKSXQ3TG1pdUszN0g4QktuSE9SckJrMk1aNmtqU3ZRWXE1aDRNQV9aSWFReHZHZVNZb3dJdFRMNml3REdhSDM4UlZuSE9XZ3FrRUYxUUpTSVJuSnFmV28yaXVTTmVlU25qMzZsdUFDTzJyNlBpOXpYeE1EcmlYS0k2bWREOHhKVjRqWFJDNkVSQnE5SnJSNGs3OV9zQzg0WU9WN0VObngwMTlHaExfWTF1Z0VINHBZamZTT2pQWTFVZThLUTc2VFVjaUVuZjFnekdqMHRIWjJIcXd4RGltWGRLTE9vYzJsbDlQVVM5SmZLQjVwZjllMlFmOGVncWZ2QkcwZmFfM3hyT3pnaTJfT3RzUk91eEdtcVl4RFM3QnNOalRWLXNIUGYwcXliZ0NvQTFoWEVJUWlUNndkTm4zVkpocnlVVFBfTUJiV3RNcWtFbEJmMWF3bnpNOUVMNGJ4LWNUVUI2TTdmLXY2M1MwZEVLejVGeWFlTVd3cU5keXEwZkJsZkVRSHdqVk95MGhvWnNfaWJDdWh4RE5XZm5GVWhyTU1sUW5mVktOOWhCRXRNdFZWU2pUeGdZSnRyNzVKdHU5bHRqNFpRSXJrWDBhN0c0Z1ktS2xtbWRBV2d3TTctRmpDRmxIdDRoQWFLX3ZPTndKYl9EX0U3QXNTYVpaT1lPTGRXeVF3V3pnQXJ5WUVhaFZHdVI2NHhHelZqeW9VdUthRHdZaVlkbVF5M0N3YlJZUnZxUzFWWWRiT2pkQkM5QndpeHZ5dVZycmgySkNhTHVhaTlOR09Ib3ZQcWVYbXg5WHpoaV9iVjFQMnhHQjNYWmZJQ29sclBXUzkwOFdWUmwzanJ0cGZqQXo3bVVSSEdhR0EyV3V5M0VvSnBLRnhaNzRXMHA0djBWZU9xRVVyOVcxT1BKUkY3YlRfaXRBR1VBZWllNzdzMGFfekluOU9VcHZEc1VQSmIzd2NDa0s4dkhqOVIzMTdNY29nRWl0OWFYREQ5elZvMGRUZ1V2ZGpOSHN0NElDd3NFU3JSemNIMHFKeHlnVGc1TUMtZnFOUmhYS0ZFLThJbnZGdk9WRzB5akkxV3pXWkE1NUR6S1RPTWZZNTFveFFVUjdzdnF0SUVhODlSOEpRaExIU2VPV3J3MDhTTlo3R3JOMGR6WXhjbGtnY19VNGlEakx5dE1KcWN5V1FOOGhTVzRORVY1QTR1ZDdkVndJMHNLN01Tc0NVSXhzSUFvOGIyTlpPNlFoYTRSU2NHZFFhZUVvYXZST1dTQWhRNURNLVN6MmxYUXFtY1NjQkNVRGwtQU9RZE1ZUG84ejNZMWpQa3pjRTJMZTQxRzZ2S2lOTmxKS3dLZ1d0YkdLWHRTSmZ4eUJxTS1oZERqc2NVQkxvc3p0OTd3aXR3em90N1dEMS01VjBCaTlXZV90Y042TmNacmVxQnJuOGhHYjZTWTlvX0xfOEk0M0lhWjBMUEM3WWJSaGUyMnJWLUhJd2NPZmV0d29vYThMaGlSaW42RWExd0xLTXZab3lIMHhyZGM4S1V5bUdnUWwzNjltWXhJa3lGeGQyT2U1Q3JOa2lvTmNNekdhTWdpNnhoWGRMZ1VoTjIzNHo3OVN6ZVhucnBJOFpMSnlqUHRiYnhfRWc3OHNVMEdiVHBlMnhhRWZGTU96VkNIS2NNcERLUzdKZ184czFSeHNlWlJBcGhGR3RIXzc2UmdEV04xYUlLYVJyRDNNVG4xQWY4NVdLMDhxbVh6RnI5V252S19iNEQ1ajJMUXBVelYxMHRsUDFDOXEyTU85RzE2VDlXVkNYWVFrUVdSdjRwMERmb3dsWk1nOGFua2x0ckUxWU5KRDBBM2hFek1Rd0hOc1hwTFY4YkVoamVpZXd2cG9JcmZJdGUyTTRPQ25MR3lmTTV2a3VMdlN1RGlIVzZpWnl0SkZXZ2swU0czNmR3Rm9nSFBkNW1UbGFfX1A5ZEJGLWkyMFd0MzR6NlU1X3BfNUxFZHJKVHlQSzMza0piTk1DVkxldkc3UjN6U01lNTVpcDVWLXpqVGx5UmJHUzRsN2tqVTNJT2pVWVBjYnNEMmt5S2d4ZGg1b1dsQ3NJSzB2NFk1dVpQWThRR05pT2lnZFIzaDJJTF9iemctS2RrbWhMNHBQVU5xMjZwaGZCUHl0YzFUd2ZaR05wXzdZVTRtQXFMSE1yMXRhWVRRdmhmUDBMUmJaRm5ieGVhUjNSQ05hNm1jYmNyQk9JcmFCcmNJZTBPSmdjX2xHclBGS194bDVTaklhUlZtY0N3M0J6cExBNEFGVzVKNzYwcExTMEpoZU1naVFkc2w2NjJKNFlyWW9vNGkyLXFtS3ZtdXhoRDZRRjVBV2YyelZRNHVwMWxiN1RfdE5vR0pBU3FicWp2UmV3OHlfUGdpaG9mR08tYk9Gekh4c1RFcmJNbWdFY2Y1VXJ1STBIUElVcmFOMkU3Q0J3elBoV3MzQkpvRnZyQm1TeFBrSnAzLVBIaGtNbU1ldkZqTS1EdUsyd3dnc2tsTm5saXB5czUxVmFVRjBTa2RhdjA1ZmZJdnlYenlXOHIyY0tleDk3Nl9XWm9SN0I2TnJsNnJMUERyQWJTZGpLelBRMGxCVGViSmsyVE50OV9rMnA2bS1wX1pQVWNwRXBzMS12VjF3TkhudThxRXZoOVpoeF83QnpSR3ozY010ZXpNMXpiREJZNlNURHpLRVJsdWlxQ3RLYU1JVW5fWkhJNDh0Q3BlZm9UYnZQVHFHQlRBZDJOWDFYMEt2LUx2RzdqTTdIQ1MySUFqRDM5SzZGcnViSEc1RXJSLWV0UHROVGN2VXdBc3cwcVZrTkd3QXliVFpiREQ2Z0dHVVE3dDRlTUZNLVV4djBfaWc2dnNlWXc0Ti1XQlgwSmxpNWZRamZYM2JWeE1TRXpiby1fSDZuTU9SbnN4eE16eGhLR2JnbGtCbS1abVFIcHlVQkRxSnhvMzNnelFVYkRmQ0RnUW51V3hxTTNvQTRGd0tiX3RuM2VTYUwwUFpISXZWcVhSQXZ4aGEwdkJ0RzU0cHRfZ21keG1rN1JwR1BqVGtsMzRXUllfZmFyaEN2LWpIdWZiX3dPRXE4c29UWVBmR2V3NUJYM3hHRExSSlhNVDJ4UUtCR2J4eVB5TkEzVElHdlZNbzUxdU92a0hmeUtWTk13ckJXTmFwb2JYLUZVUF9VY2d3QThIWWFIVlpVVU1jSGFBbFZEU1pqTUxLRTJfRDFWX2dWUnU1OXNyS2VNVnREQ2VYNGNOWnRuNkFpejNHMHRSQ0FEdTEyZ2R4c3dqZ1BqdUVzU0FlTmtTLTFiMXkzVVI0VHNLOU01MVluYU5SX2xlcHA5ZVo1U1ViMFNPcEc4cDhVeWVmQTFHTV8xUm1BUDU2MVcxUW0xU2ZXaHhlMEM0elQwVU9mWjAyQ2UwMkVWcF80aE81bzVlMzJPc0trMFppRnhIUXhwZzIyOS1HSFluakZJcE4xdEFfS0hjRVMwSTd5NEZmbWpsSU5scnRISHJ1Z1JhdllBdklSTGJGa1ZRRW1hbVhodHVDX2VmeFdNUU5YeXc1SzA3SkNhLVpuOUl3NTY1czM1Tm1pUnE2TDZNT1Y2R195blpDZmptd0cxdkdNeElBcUtyeTBPdTlKbm5CWEc0SzdZb2h1YUN2VDVOOUtwMzVkX0VyN1JtaWJ6VXFNMzQ2YW1xX2dJQjVQWDhGbTI2NExfTm1NS2dGRjZyWFpLTjU2UE8yQnlrTWxJTlhEZFRhZVA3UUwxaVJQWXFmUnFfUG9BbjVsajY0dmRBM1owbnVzLW05Q09FVlhoQk5VMkY0TENveEI2QUpQZlA0UGlycFNNT216U1ZObWNMaG5ubUExbHItUG5nc2k2MjY4Z3R3SGVSZzFfZ194MVpnRFVydzk0T2pVckpFanF6UHd2UDhsOUtYdE8wY0ozSXA0SlFNejlSc3hLeWNEVTI2eFV2bHVEblhaSHhGYy00YnFnejJyYzlmSnRKZ2J3MEE0Nm5QZmhzRWgxRTJBVW5zSHh3b012M29JaTd1eUlEb1JBUWZsbnNFRUZEc0cxSWtZdHV4dHBBWGN0dndsQVZ5ZTBFN1JNSDh1cmp0Sk1zVUwyT08xWXYyVWo0NVFwTnFQNkdpc1dLdTFaNGhaQUJnc1JZdVJPZzZMUFpZSmlreHpSTUZxYzRDMzRKc1BnM2JxN21NUkNhNEtsMVlrOGEwNEVhaTNlU2F1QUJOcldGY2hKQWluV2ZnS2w1N1FOVjIwRUNETGFtbVJBdEp0MF9LenFsLTVxb0F6N21kVGdUNjdVaXU4NHM5bFc4ZmVra24wWllUNjI4V1AzWjNXeFZ2bUFKdlpTQzBxR1A5dFlVVnNQLTdWbzZKRDExS1pKay1ieWM5YUdRZW1nWUFjNzk4UEwtREVsMjRiSmVIWXEzZGF2blVXdXpkM0tKdy1rZXJneG9KS1VMekJ4bEw5QUprSFprWHJpb0xkeEFvaHpNNm1OMmRxa3VuZHVvUm9xcGwzcldtOV95RWh2MFJlNjJjUllFemlVU3Q2U0w4R2RtdTdpMm5mU2VhdG1XWnliMHUxSl9WQkQtX3NqR0lKME9lTE5XUGJzODNRMTZjdkRWeVJOMG1ZSjM0eXJCV1BOajZZWjdoQmZEVzZEcTdWZnFMaFZkSFZjUW1qVndydGhrLWhjTFFCR1dLZTQ1RE44RWZ2MmR3Wk94UHc5bkhaQ3V4ZnNqQ09qM2x4X2dReFVwbDgzZk9HZjFvUHRueXR3WkNIeThrQmFNbVRRZ3B1NGVvYnF1NUZQczhQRUJuTUtMZ0dVOVBmdmVzeWFYVl8ydW0xb0xiVG9NeTA4Ml9BZ21NNlJKQ05NV0ZOSjl6c095Mk5zLWMwcGx0NlVTSjVzQTNnLTFmamRMNkN3bS1ZUXlyb0tMUlU1MlZvNXVHTFk1N1l3M2ZmU1pzOTRNTTlMUFEtOUREd3NOeE4zd1JLU1NudnV6anBzbnhHZ2FqOEZ6S29TenMteWpETWM4MjJYcW1DQXdKTmJRc1JKT0dadnNDdVBEU1dpUk5VWHdXM2FYQUpfWnNtMy1RQVVMTzV3UmZZS0lzRXJ4OTdEdldFWnZyN1ozUkp4VEZKOTFWbU1aUEFoT3U2cjhuMktxai1OMnBVeWRKVTQ0OW51N0FHeVRwNHUwWWt6UDZNZzJLYmhSUDZWZlZuODlYc2U0bENPMk10ME9kT1d6MkcxeTBJRzdaZmpGa0FTVjkydUNzcmFfTTQ4dGV3Z1dQeVJVVThkc0JMczVoMERKbVcxbTMybnp6dXphMHVyVXpSRUNSWDFBVmtubmVHOF9pd0dXcHREVU1IS2ZidHhJYkNfc2JUNUtUaDlhdjc5c0psN1FBUDBmX3RnYWNsZ0NJV3M2bnl0SHZwU0ZaLXFBSGtTR0tRN0xrMURZMnlLSkFzam83elVsRHZXUHBoc1RHU1NMTjFzRVRGNHNiN2FIMkpoa0JiTnVGNkZNR2puelduQ0pRZ3RtRjk4SHhPTS1vS2FJT2pvVG5NSU5lOWIxNlNqU21QYVc0SWZFeTkyekRiajdVT0JyX0FqdlhHYTRacWhKR1hiaVk0ZnJuUEoyVGdTUGxWUWV5VU00ZWpTV21IRGQtaHlQQ21xbnpjRE1yNHpBQmZnN2g0X29wb1N3d3NOUmV1bDlNZzFjd2V6VERBQTNYZGMtQ21NOUtPVnZ6ZV82QXpWMlR6TjNmWlBCQnFPckZDekZMUkJiZVk2SlpmRnZzWWw0T21Vci1ueWVzeWlhRW85X01aTENULXh0bmhRcTdYSXpBZTUwN1RzSHI0dmtyTVBYUER5Q3dCVndUWThSOGtraEt6aUhTeVNpOGZQa1hTY0lHYVhRdm1pVE1TYXNCbE5oelpRX3hnRm1XMzFZeXRqeEhzOG1UR1oyTlVrUjFRRFQyTl9mR015MGFTVlpvbHRmUUFWZHNicVJvR2ZrSHBzSllKbElSeDJ4c0xvbTR6Z1hGTDFXNWxOSWVyVm5Ub182NVdkbzk0eXloUnhPcENpdjBIcERFY2ZCaDNkMW9qcExXQktRS1FuMDhlc2hxaTJOdTNsV0FoQ1N0MlJwOTFLejBaWUNGcnloQUVUWENKTzJkTUp6cy1TMkpzVFFhejhCcThvYnlDS3Exam9pZWJPLThPTVRrRGFnQkZ1TW9ZQ3FIZll0R2RIMm9JVUhWdWRYMDVKcGRiV1FwNzBPTzhLVW5FOU5LNVliOW5oWmxlNFc1MmNVbnN4MHpyNFVELWZJLUNMVE1LOWhCaENMRmlkR09tWmRCQ2daN2ZEbnlEdDF3RGZrZ1psb085cmpDWGtCQm1FUk05aXRqZ2JkV1dCY2RNVFRmNTBEMzNHeTZNaTJ5VEpLdWtsUGk4cVlETi1OUXAyd2gtM2J6RVpfU0hYbUF6Q3hVekF5MUFPTXZ4Tl9NQkY1LXNJejFlWDBDdUJRSXB2T1JEbW5vcnBQbktzM2VGTWJMeGdkVzFvNDg2dE4xV01xeHEwY3JGd0JjQmpHZUs2VUlVcnhFbzdaajBJQ0ZQd202SW1lRkhvTVR5aUlGYXRNU044YUZqRDF6RlNNa09KY2FfX0FOVkdoNThBWVNFUzJzRnNPQmsyS2ppLUY1Zm80NEdHQXllNG9BSDNpTWE2alh6WjQ2UU51cUpSdUVMeGp3WlQwSVFEcUplNm5sNFdGYmZvVjItckVLZ3hBMzJPOHhHRFZNRFRycWpkVDBIbFVLVGJMdjVCVDdBWXpULWRDcEo2dE9VSnllZHNlQi1xY25YcDlQRVJ6T3lLcjhRcWRBWEU4bmY3VnRLRVpaRnNJY1BPelBrcWtBSE92TVFsdzRVYUl5T25YSk5rSFg3dkgzc2JCOGxrSkd1MTAza2RWZE1fMGEzWnp6TUZ1NjRrb2VidnhtNE50SFhEYTV1X3BEUDFJa3RQLUN0Q3gyclBiczh5RWZkN0szNFpGOTlrSWx3TGlRblJWZkRPQlYzU3ZDb2tWNFdhUlRXSEs1cERXdEtkR2FlbHltbmlqc1Q3SGhmYl9YTVpWMVlXZWN5eWdscmQtenJ3M0xPWG9NYkhzd0RvcF9NNks4Rkxxbjg3M3pfbUFhcFpzZmpyTFJPQkhIMUFQRTRmT2E2d2pDVEE3c3NzRzZnMk9zUnY0bXJJQlFIRzhrTU5Db3ZpQ2hHZHpHU0F2b3dqY3BTb3lWaVRWZXU3WWx0eEIwMFYxMnhiUC1VQmJuN0NidHdQSWV4dWxiMFhwWFBfdmQzRG5qTktXcmlWUFZoTWxnbXozU1BLNDZMU1A1YzV4Z050TTI4X0ctU0FnRmVpNjJNLS1JQlNLTUFGOGctSzdqRWZ4T3Y3aWY2eEU4a3hULUtkZHJfTHh5bFo0dVItM19zZm9tUWFQM1A3Nkt3cHdNLVFPN3JXbzJWaWpVcjlPZzFVT2g2VVE4QWJ5bmFJNEFOTTdsSkIzeHctX3BOMThRYl9PTU0zTnNjZDZ3YWk1blpYZWxiRWdEaGpWMER4SlQzeGRtRERGVGd4RzQ1R0F2Wmh1TFhOaHhhbGFRb1l4NlBaYzlZUklTZmtmamZOV184aTJsc29uelVxZWJ5eUc1dF9fS2U2c3FBMHlwYk1nbE9KQTNGdkRPVmxOS1pzSklQT2h4TGpGWkNyMExCX3hvZ1FuWElVTEEwVlB2WkN4aTdRVWlMN2xqVklpSjY3VDdDcVBOdldLeGdzaTVjNkh0d1dnbnJmc0JsUXl1V25hRzZITURoZnpPc1gyZnNrR3FXdXBHZ044b1J3cVZPQnFnMXJrUlNjdWNqRWpLQ1lITVZrQTExS3dfRW8ybGFYdkdqTEw4YUJKRVk0Rnh3Y0MxUkU0U29sMG1CdGRXdVVLQk1XaTUwbUJaNU14OGdpMUk0VVpfZ1BTb3N5T0d3eGpLMXBwUF9ma0RVUWl2M2Frb2lmMi0xNnpoSS16Z2kyYzJjN0pkakNtVlJ4d3dOQUFoX3gyUjZXV29kUHUyeHZHQ2ZMNHNKQmtkZ0MzaGlRUmVKWnNXbFVmVThJNG5XRkU2MlBTLWVXMDJVRVBCYnFwVjFVN3VJUDJtVmdpTXY3Q2MzcjZDZ0kwX1lmZDY1Z2c2ZmtwWXpneVlkeHVCcU9PUGNVU3BaRVc3UmNBZ1dVbEF3R2hQV0o1dlYwYkRaSmx0YVc5eDdnekFnVG1rRjBjc2xQUGMzUFlUU1JMYlJHQy1WdHFwVTRWbGdxMkNFTkZpRVZrQ0FLanBnMUhPVVBwc0ozTWFra0tCTkRkT0pQWWlrakFQQjRzSzBEclVMdzU4b1pkZnhEZlhKNGJZa2ZEYWZyNjd4QU9sTjN2OG1OMkhiaVl5bkpySVNaUGlEcTc4akg4X2F1TDl5VHRNcVd5aTYtWTFJQmVyZHQxZXM2eUhldG5hakFpRlE3eUpEd0VvTHRseDlVRGJQdVd1RkVIOXBtWWo0Y2FPWUQxQ0F5ekNoeUtNV05NRjRQWHU3QVNzcHZJVXlsZDZOOXJfaVFEYnVVb3A0eC1Gc2E1Y3Q2VkJzcDRXMFBKTWlOMXZtWTZQZVNRd0xYVFlxbUNJMXRib2xFUWx1X2FTM1FlVUFtTGptX1FPVjhwaTBwSGtZLU5Nc3FqM1Y3M0hMOWZ2UDJTaTVJQ0NlT2VheXY3bV95TG00a0tVejRkZnRHY2JacGFscG9VSmxNTW8zY2JQOTZtdUpJaFY2TnlpLW5ZSG44YUFnRWJiQ2pKNGVqNlE0cE9fQWZLUFFWc3AzRmlEWk12TXY5RmEtWEYzTzJOeXI4eS1GWkdYaktHcnl2U2lDVEYySFVpSDZUQ1NYeGF0Ri1DUmxHU3lseldCdU5KUFBfQ211eUVRLVFuQTRFU3JxRFVjMEM1WmFldWY4cFlWYWQyN3dKNWNwQ2JXSnFDZmZJOHlmUC1zNnFvVFhsd0o1REdsUjlTWmdTTDlQOGJnbm04SHQ3enpMOXE3LTQ2eDhXWW1XTGhfalhIMzRnYl9uTkVBWEVneEVoeGw1Ukk0MHVTT3JwaUlsTGVqY1FjM3g0RFlRQUhSRExQOG94dEhKWUt0WWZCaXdRT212SlI3SklFNmhpVVBacU9jc3hyaXNXd3NoUl92N092SEcxVXRieHZSTjNQUThaZHk3NTI2TVZvLS1vSjZRYjNMUlhrLXpGczE5bzVMOEhlMDJEa090UUJQYVFaMUNweW1QT200YnYwWnYxUFhJVmg4TGpuenpXWmt5YUFqbUNtWUxXXzNnUXY2SnpGSTZKSDA4Q1JTVGZCU0I4cW8ySG16TmNQUm5JcGUzeVRVX1dHQ3pQOGJ3ZF9Db3RjS25yWnpST3hrOXctRHVqUW8xZlM2UmxuVEJuQ2laMVFFLVZoOHc3TGtkTkprRzU4enRxNjM3YjRSTXBETWJ1M1RhTzVpS0FuaVA2Wk5fNExsc3ZIcmJ5RndTajU3dzFIWjZNbTRDRXYwZG1oRFJmVmd5dktWcVlsX2hWWU4zQmFTOFdpWks1bEduZmo5QmZHX3E5LWt5SVVTN0tHTFpoV0pXQ1kzaDd3ZTV1ZjJGOERhR2tsZERLTTR2UWFCNmhmcGoxbVNfQVNrcF92dURsdmlybGs4NmNQby1ZUVdDYnpPOWs1Z0tOaW55X0h3YWRDU3JldUdQcmdIT2NBTEpNd21BUFYxZmg0ZTNXRHFfSWJEX2o2Y1g0SzhGSXFuRzVUMGxucXdXY3hhREpENGdZWlk5Qzc3LXZzSGtMZjNscGV4S0c4S2JmTTlFUDRZaXE4M1VuU0g5MDItLWVWcldBVW1NUGtKQXdtOHF5cFFFaWM3MEU0cU1nbmtER19yNFF3UHVzWEtoZTJtUDlvX2ZiWXRZbmxLUjZFUGlKUGp0cTF4MGZDM2l1U3V5QWs1N0hCazgwOFVLQUNhOFhpNVVEQjBMZnFNZ2M0SHg1eVNJY1Y4dnRRYjBoU3RXRGc4TnVOWFFSOExoalIzZVlhenBCci05MU1hN1Y3SWQzcUg0Mm1DSDBFdURVVDdHMFpHb1Y2Y0VUY1JOODIzYXBhMFFqbWdRMmlQYWdqaFdIV2JZbEV5YzhaN1BNRDJlS2xvWUtrRkpnVmwwOTdBdnI4azRIeDl0aURGOFh5bXFqcVZVa0VzQXRRTDJIc2R5ZElwaDh3Z1l3RlY2N3ZaZEpUYzBrdHdMNWMycEZIbl9OcVRaOFFzaWs5ZXdIZWg2SXRoOTU5a1NvWGx1MTRKeTRqM1Nla2NyQUFQbk9YWEUtTW1oNU1uUUh5anhqQUtYdm9aZHd2NzZTSk80eUhfVXh2a21QTWpFa0lUWVFCaUY5eGk0Nkpoc0VINTJtNVJUc2lRU3hsc2FmQ2ZyYWM0cnhwUWFoSHAwWi1xdnp1b2t1WnNMLWFvUFlCYWNKcEZIWjBGN3dETE0zQUc5azU3bEx3WllwTGJZRmJlenhuZGtHSmN1eFdtSnQwNk5Gd0ZpWkJCcXFxTEpSTFZXZWtTeWhNbU5oczlGZm00S3FyWEdJNl95ZUpZYjBHUm9HQ2JqQzlmb3FvV25vYlFDMVBTUUg3d04tZ2pJZUJRbVBuNDFsX2M5WEZXTEhHUzdBRmVYeklYMFRnb0FkZ0w4QWlEdWROTUJwOEVJMXRPa1J1RWc4dTA5WE9wSE5IZ3FydE12WU82NnpyMjNrNWw5a2VEVk1KRVFnSU5PcUk5R3I2M001UWFaQmdmZERQX25JakhaY3BRLUg4SGZ3c3I1S2pQRzl3eGE0QzczNTA3RmlJclZSaFpqeUR0Sk91clNJT2xUMUxQYjBHMWdldmVZcHl4V3hRaEZRWjRRbkxrMUpmRmt1Ykt5czJ0NXhBekgzM0IzRmxTdzEtU3NiYmZiQzc3M29lYThMTlRFcWl3dWtvZWttVm1TNTB6RVk2ZHNwaHI1SGxzZnAxMW83RURoTG9IS0ZKQnlVYkRNMDRRRWoyNjIyTXpibUxkYmRHYjdqY2FmTEtKOVhlZHVMWG42UnpJdUFZQnZPbHo2ZHMwaEJiNHRrYjA0OVRwS3N1c3pOUDJHcmIxOENXYzRZV2VSNmlZQVBVQlRFdzBGWWs2NWNTMVNMbnRCdDN6VVM1Q3cwR2NILWhsWlZyZ1ZVN3pvZW1fRzgxeVRNUnNTZ0VtZS1YenlyanF2ZllFOUROZmFSYWFzeElOZDVFX2hSQ201RDdFc2xfY3l1dTEtNVF6VTBGOEk4WE5aZkV0TWV6YmFaZ1JEU19OOEh0d2pjY1RCSldBX2NuZldvOFhGTFBVNFpscjg1WmI4aVVLVHZoc1o2XzQ3WUNZRzFCdUxCcG1hYnZDOFQwUG15VEQtaUhKX1VHUFkxWTRDbmZIMkdMZzAxeXBLTnluci1lOGJFYU9rZ3BHSkJILUdqekpKSlpYLUdHbVVBZU5ocWxneGtrSEh2OWExak1hQ3R5NFlyT2RpMjI0YU5NMEs2WElseGhVR25GUFZJbnZwRHk0YW9aR3BrekhFQTl0NTB2ZVRvajJ2WFg2LTFVbExxblZhVVM4UFU3bTRoSXoxeTNYcUJVMG5Ta3ppcllBZGwxcnpDb1hmZEVoVVlVU0lxOEJ0TndadDY5OWhlRW04ZC14ZlgxQjhNTExqdDNvdjVBcG1HUEpjNTJqNmJFalFSWDZ1eEhzakMxeUp1Q0VmUTRFR1gzeGY1S0JIN3dnd1RqR0gzMTRJZnkwR1JDdi1TRTFBV1JJWFYtOVpRY0Y1ZUtRWTg3ZllyZkwyZ3lZMkI1UWgxX1JqMzlmNjJGTkFCMUE0X1FGQkotYkFvM21tMnBjbHVVRXdFV2dsemJHaUZFSDEzamt6am5rSHRjLTUxRUVVd3RBOGI0UF9BcUEtNGhZdU9jZkhWOHZIZ0MyNDRBY05sV29qTk5PbDQzVHgxWWRvQ04tRjBYUlBkN1dEVlhSTWVnOWhPVTFLLS0zbFlPeDhDeHR3cThrd0VjeFBOTlFoNjA4ZEQwYk1KaldDN0pFTXdyS1BQd1lNYTN1Q2hHQkdXRGdnSDVZQ2FMbTBrRUxGeHFtUlU3SV9YN2R3S2RxeEdUNktEZzROT0RCcy02cUtodGlweC1DbndTZVN1eWluaTZNeVNzdXBlTS1mY3dwQzQ1bmE4ajJnZ3R3WmYxTnZ3c016M2tyR09zNmRDR25NYU1LUnpxN2tsUnpDSlg0S05NTkNGd0FHc0J6RURMa0hJeGVBekhMTTV1ai1nRUJTTGJZT05IWng2THlQZUloVF9mWjZoRVFhcUplei1HX3NsQnhlTkNUVnlmQi0ybXhVZkV2V3BTVkZtYV9jelhTV2tjNXpvcWo4aFNzazQ0SXpMUUlDb1paNzZKZnQ2dW1YQ21jSDVWdHBWck9ZX0NUMnhiN2FLOGtIVTJZVFBMUWxYaUs0ZXdjNlVHcnFLR3lMUDQ2VjdreHU1SWlhU21jbmMtaEZtWXJMZVpieGVzelZ0bWZ0aGZjbTFyeWFWcUlwckhoTUd2dU5KaldMbTNoYmRDQ2Y0S08tNHhIeXNFbVMtLWVJZnpXbDNQRHBjVGRuSjFHT1kwenQ5Z1U0S1lSVzZlS2hQZjVYX2hnNXdFbW1ZbXgyb01NckpQVUg0T2tMYlY2MEdNckxlX3Q0ek4xcTZxSjJvSi05ZmdDR2dlN1hXbWpPWXhwSW5jcmRQNndxYXNEaG1aRFV5WjJ1Mnp6QnZ5T1JoR3BTd1g1eVlheTAwTEtkV1R5Z0NRZUxYZzNzODNqd0d2d1cxRHg5ZjViRms3c2ZYMHVRNmlQSkRWbzRLS2hhYkh1RGN4X2xfWHc5cEY3N2o2VmcteXBCZTdGUTdpcHNOS2NQV0haYURGTXZiamhaUU5QZUJrNFNma3B3b2UzbHVZN2xpZ3dqS0FyQWZpWWtDd0J2WHdOUW9lbnNQZy1PWUJZU3dBWXZPLVk1QkFYdXFLSHhjTW1TQzZHSGJ4SjNScllfVUpBNTBibDdobk1BdkluSWNnS2VIRVdSZlR1eGFJdHo1RUctTnZneTNEVExfWHZsUTJNYk93QThueVEtTllLcU5Ldks4RjZ0WUlaNUhWbmRNUldsTDYteDJwcEQxcUJNSTE2ZDZfdU1qSVhSZHlDc2xrRVlhbmRMY2pjWVFiSmhqejNPVW8xWDl1VzJVMHgyVGhWajFKNUR5U0xETEhaR2ZEMkd5UWJpX0tpbnB5UmtVdmlvNTdQQjBjWXVJbFloSWZVcm5uX213WWVWS2ZfWDQ0T0loajNxR2V4R19JeVB5QW15S3NsYkwxZkgyTTFQb3UyZ3lrRXJXSkZzZlpQYy0wRm5lcGp5VG1LcjlmdG1GV2VfWkl3empzQnRLdDBhNERidHAwUm1xNlZUZDN5NEZ4RF9DUlhObm9RWTBBRzdUVDRkajJvRl9WZmthT195Qkpmc29OTnVLT2huVTBCRFd3ZllSM1RNdjgzWm5rdUJvNHpGVWJEUFktQW5pLTdRR0hDZjh3aTdHTHNWR2hLYXloRXlQWkNjUUY1ai13ZjNpVzlDekdOMzZQZ3h3NDJmRExBcHByc211TUl0TGtNNy1NWTRpRUtQLUJuUWdRZWtmbGVWNHFIRDdkYk5leTdOTkpyeXFmWWJ0dXN6eUVyeFJkdnVTZlZ4MS1MMG9LVl9KS3hQeWVPZTdmNTRObWppMHhoZy1VR0t0NHlrMDF1TzRVNGI5OWtwb2VlanB6QzJ1eC1wNDBRQy1FaG1WbURQOEc0YnktaVFUQjJZVnJsYTctQjExM3Q1ZlR1RzBXazRvR3AwSGh2YkZlQldMOXdwOEMzVGdxOTZNNjJ4TkFLZWNsM05NR2ZqWTZ2OXU1N3ZINDB4S2FzaEhHeGRLWm1XLVNYVTFNOGtnRlFCbDZ6TDlCZGJJM2pDZkNHeWtqSjZKV1B5TThlTmxQdmJuQUlzMk5MNW9XQkJlYUY5SEF3Q2FPbTlPWklwUEFlNGkxT0hBaVFybmVSTXcxS3VORDNwb01QeDFGRy1iQjZDb0FGS0dmWndyRWJHZzR2OTdNSUxxUFZ0NmQ4aV9HSHozNFQ1ZFhrSDlycVg4Y1RUM3R2SXpIZ3VmY0dLckJwdHhZZjhPZVVMVXhGNWZXeTRqQl9jdGxuQWM3MTl2a05EVDlUMDJrRkhHS0pXVXJCc0JlajhUcUR6UDRSQ0dDX0s3eXBqNUl6aWF2LS00N1hUbzU2NFFURTFVM1pjUWppc3BNNTFiUkpmZnVkV0RqNmxkM2RnRkFPRmJKdkwxQlBFT2V0TkNkTTlsb0M3RWRFWUZROEdkZUlDODZkVTFyTW1SVldPdEpyaVZCYkE3aG16VG1pS2dpeHBSUy1ITFRxd0FCREFpRGZ2SDFFQ0RsVWNJN2ZCOTdvd0VGYmZoVlNKb01EbWdQM2JPeE9PdHRhNVo4c1Vfc2ZDODNMZ3RBZEgtWDZ3YkVKMWFDMzlqWXBYQ1RsYVg0YlByLUN2NFVrY1l1THJXNzhXVlBIOWpvdGNHWjkyRXRveVJ0RWhqYUhvZVh3Qlh3NzRXVGNxWXVkajVibC1uZVN4dFhDdkRPUDl5UHNvU1pMbHZRSjc1U3lvRWxvS2dfSkh2N3IzVjRQWWQ2azhtaDZBT2xCNVFnUWdxVUU2aHVISVdoaGJrT3NVWTdrSlQ4ZWEwbk1sN2VYVXIxM2d5S0V0QmdQV01rc2l6djF6MFBxVWZhS3RTX0VqeU5hdlM0WG5rUzZjRHFsckpPRzlENzZpbll3bXl4c3A5clRodmN5V01zaDhabklNRlY3MXNKWDlWQnR1UEhES0FlUFpoalpIUjJERTVQOFdTTTBzVGVFQ1RnSXByRTc0WjZYVm5OUkpCTHFKbm9LZ2tsWlM4V0ZEU2hWdjZjcEE2Y3NhcjhkdTllc2RCYUczczhJclhrSnFpQXNoOTNHVldNei1TTk91Z1pVOEZRNThyOXRxTmxVdmJlcFBjMkJuQk9RMGxVN0ZjVHMyQlJFRzRENURlSnZrQ25fczdjMEpGQ0ZGNDh2VTh5bTd5Y21LQXpJUFlUN1QtVTdsd2Vxc05GUHRlRHVFU0hKcVNzcnBmY0ZDSmc3MXZIcVBDNE5NWVZIR3lPMC0teEEzQTlNVVFhMk93Ml9rNno2bm5lWHlHeHVMVEtwSDVFNzM4WmtfcmZZUURZdkdBYmtTM3dGOEpTQ0ozdS12cmIzSTRQZmxNVXo0ZF9RLUNaM0F6dDJSd2VUTW9hVWFiVHR0UzRPVy0zRGtRMFZXZ0pKU05pMWlPUXBuSWFnYXE4QlczRWNHVDVHTzRsRnd2bl9EOU0wQy16d2pnS0FoYWNwXy1Tcm9oRTdKdmFhajFLaUZJOFhha3ZRQmJvZlFfV1JhaEtoRWlhSmc4STFXdHFYd2Z5SUdWc2hLSTJDM0hUY1lvdFV3UHdLWEJ6XzZfWkdaaFQ4amxZVzY1S3N5UzJLMUtWeDE3dnU0bUFpWG41b0tnZE5sVlFKbXZ6XzJ0U1N3T1dvZFNvRTZ6ekRKZmFpNERUcS1UNm1GdXE2Y2k2UHBFSUFRSC1HckdBVkgtUVhkdWZRZFBCU0x0TDZFUEx1eW5DMkQtc19pNVJodWl5RWZkZ1Bhd3JDMlVFVGV3T3pSSXdCS1J3bVVRejVyeFowcjR4S0Y0cURBMk5rYmxYMXlibUhVXzA3S0ZETlJvNjUzeVVTLW92TDNiRHFnai13TVJrZUFSbnNJUXZEVTk4OE1KUnZXcU5FYnFoLVhwUVQ1eFZFa25rSi1VdjFBeXZVX25vcXNDclo5MEN5ZW95S0JiUXFwMUhwdTBqLTFpcl84TXdIV2tielpUTWR5UXo2a3YyQXg1Z0F6aUotdXBKMUdqVldfdDNvRWdUcndjaFZBa1hJMGUybEF1VzRfUjRyVmRubXU1Uzd1VGRKSWcxeWY4cUEtekJ5R09ISnVnUU9heG1YblozU3QyM1hqV2l5bE10V3VleFUzQjdydFFpRFU1NzgxSnJZT3JCVTJ0cWxNdllZTEpDYXB0eDZheG9aVWw1bkw0NXgwQTJtdTRjYjJpNW1BR1M5V0Z6ZGJvc2NCUEc3NmU3b2Nha0xWMHlDMm5ONV8zTmxzR2Zsc2pyR3czaktyYkpEWHF1YXpWbEVUeHRSU1hMV1FEY3lqd2pNb0pXYUtjaEtZajhVTmhjSEVXZ3NfRGlJNEstUzExT0FjWXZ5c0pRSFBnS29XLV81YVFvTUxWRG9hTWx1NGxteVRyakZXQldZYVhrWFNFLWgtTWtxeWJtVFFSSnR5VzJRUXczeEpMUjFEVG9fcWxPUEhqejBTZU1OR2M3ZkhjLUxBeUEwN3hUeUJMUTUxM29rekp3bERqM3hodlFUX2JtY0xZUVRqcW1pWE9QemZaaHI5aXZzNE9qOG5TZkpIalRDTHIxNW5FT2I3LXM0SWtfVnIxTXBsVFBaQTB1alFoMDhXTmEtNGFLbmNfMEgtcUthMXB6Nm9DUzlaeHViODY0Z1o3QVkteVBpdjhWZUlkbU42djhMT0VGTF83WHlUbVdick5qc2tGcmxwdnRKZHVYbWdHZDZ5cVRicy01c1FUYS1MUlBLMGZJSnZTWEZRV2lkVGg4MlZrWnY2V3pBMW9ISkxlQ0hlU2JYN0lSck5xZDZqZG5Qc3czVFFtTkoyOFR3dDJEOURWZURPTHVQR1NYbDBaWHlmTlBTMUI1T2tWc0t2YVNUXzUtOFdQVXI1XzBGVHItRDhjbkcxTURtY1puZjRyTjRRTkhvU2otZDl2ZGdYZXJ3dkdlbG1ITGpwZmJRRGRFQld1cXJjYjZmUnh6YW5HOFpwbDJGM3Y2LWNBNTRiVnk1YXZmY25JNnRMamRycFpxN3RYZ3FkUXNub0UxUnNjSmpuWkhBRVZsU0NDbjFOZlpQY1RDRlRKclZXb2Uybi1WWFZyb05UbHlqaGtYanl2M1F0dEJXbmE3bUJpcnpOdkgxeHFtLWxJcTQ4bThVTmdzWnF0TlZKTFpGbkJJMEU2N0dZdXlZd2tSTjlrWkZmUjROSFRZWUlmUnBLcU1aTEVLODJGMjBtRURfUjdpVEVzTzExZ0FlMGZ1eEExRkJJNjcyaVFQcWVtbmlyYzBwZnN6VWhLVjFfakRfVW1sZFJ4OFdETG02WXl0Qm1GaGRjNi1VLTlWY3Q3TjZYWFJXVmdBQk1JX3dvempDdEprY1BHOTRVQ1FDREJpbDhmb2VlNGdlS0FZa0lIb2JNSVhUa0VNNW1La3pKaTk2bEVEX29BVUY5NU9uTVNuQXNtUkNjQ29oUUpYQXJTNVpQdXpxVFh4VWYyQ1dSSE5wQ2NlNC1jY3kwdGZlSlpjd0ppbm40UnNOQUpBMi1BTmpTQzU3MEJwV0FMaHNGX3VMV3RkODZYWUhyQ0NtX0xUOHUzdmlWbERWRGM5UXBLVW1KU1hWNGY2c2w4RU1LekxPQlZfOGFnM3JHWUNKamc0ODNiUjczMWx4aFVERDZqUnRHZGdzQ3VtZ0EwYTZOZkhOTjBUOV83ekRmQXFNVG5lVWZsYVF0NldtVjFYSWcyYnZWZk5LM3Nkb0RMdVBEMkJjeXd2b2l0SWdSaEFKZHVpU0s2U3VrZGhPNTJVUXctaC14bEFCQURFbWxQYzdsM2FQWHl1MHFQaWE1bGh6WGFOUWtucGNjSE5NajdNOVhDbnVnaVpzVXRZcU9zZGpQdG5KLU4tYWNPTHZGZGZtZ3NtQjZTZmRqWFl2VkdyYjV4aVoyVUxrU3VuclhOa2MydUhHcTA2QmF2amt3SzAyaW85dml3cFZiMTRzeUI2SF9iUi1yVEtMYnlxdXJRWldCRU42NTc3eUhSUkNlS1ZmZ01nWnI3UjRockxpZWZGQlVraGlEU2ZxUW1DeGNLNFVmQlduRkJkYmRoVnpUYzkxckVQcDVXT191UE5wdjBESGJsYkViLTVPdzQ4MlpWZEdoS0J3Q0FNTWxYN1BBRklLSVhjSjhSRThacHlGTXFZUDAwT0x4ZmR1bHdrMkFBYng3c0NuTGk3VjVHMy1iRmNMX25taGdiaFJGNjhKRERvUHV0R0dSNGdDamNtMHNkQlk1dUxiZ2g1dldIOU5BXzM2ZVNXRDkzTWl2SGhTczBySWlWUVctM3ktbjVRMk15TFptZkt3a3ZhN0ZYTS04V3YxMzMzYVVNcUU4WTgtUkZRb29TemlteVVUWW4zS3Z6Mlo3eDJoZ3BDME9rdnNBZ1JiaDlwakMxNE5VYjF3VHNidDVNZnh1dUw0b1dZcFF6ZEVmYnp4a0ZJYU16SnBxTVVhcDhOaHFuQmpzZlBZbWplaWs2aGl2ZHdlV0FuVGRTY2ZzeEFjQUNTVTQ1ZzlITENqczhqQkh3X2M2Ykt6RTU4SnRoT0dkakZTQnRNcnpDcDdNOEswZ3A3RHFHSU03VDFIMWhsY21nNUY4NENnZXZtWExJbk9lMi1yRVBPdW9EZldRNzIyVFUwS3JjUVdIb0xlcVBlQkxPRTF6LWZFb2FCMWNDcW1aeE9ianpmanZrRUFHdVhjYlNib2UwdHJpNkJkUnRlVXRpRllWU3dqRnFyeEo0S1h4YndKdE1EV1c5cGtuYS1BeWJobDZDTENTMGpEcENVa1o2NzhWOTdoTVhza2Y5U2dnZnBzWUFOR0xQaS1TTEdpa3ljUkVaZ2N1OEhyeGNEemxkbU42TDNyd1JjUXVXWTUtOXllTl9QLTQ5RUtJaGJyVTNYVmJSeThVbDludWRHT2d6ZHlFRHRZTVpmWVU2SkFQajRLMFotMTE0S3RXSmR5Ykg1SEpsbnFXRVV1X3BLY3pVZ2R2cE5vWVBkSFhpZncxb1lHdF80b1dKaFhxR1d3OEcxbExIOXpXTFlkY1RnQ29aTWhVbzY5SjBKT0ZFbFVlREpJaExjV1JwTEdMWDJMLU1IekUxd1hheG5wdmZyMVl6aTQ0ejlQN05rZGVUM241RjJnZEx1bkhaUFNIUERPenJlLTUxN21FY0J4d3JYSzYtdVlNZnJnc3cxNGdhSzFsN1ZhY21zWUw1ZDZkeVJtWktoa3pmbk5nMGFNdVBaWnBXVUd4NjNFUHJ4V3lVRk9RUDVPYUg2VGNYejVDdHk4VXNEQWg4UjNkNzZUejBDR21ubWZjQld1R0d3WS0xQ2U5WHZFSF9TTWJSOWd6SC0yTVNYN21LYVlJV0tINmJxVmNSVUdDMDVOV2t3b29pbUg3czgwV3hoYXFhS3ByaWtndm1HRzBHdXpoc2NXRHNPUDFWM3o1a2lrLUpYd2J3VzcwS2FNalVucDMzQnFDa0RKWkhhRXZfZ1VrM01nSFdTNUhPMG9vY2RBZENkcWlxZnh0bkZaR3Q4LVBla0ZUeEx1RUdvSzR2RlE2UnVtOXBVa2dtTi1TY0RYT1ozUFdBN0ktTmVtT2RXZDZSNjdPcHVDYWhtbzFpZ1VZMUFPVmtya0ZrWW9BeDdJLU9Ha0x4VTdDcjNSQkYzVS1nX2ZfVS1rUzY1QTJnNFJCODVMWWlOLVMwcHdneHJhRDNsREx1eUlmVnBrWGpCckZZNFFRM1Q0Z3JXWXZ3QXM4bVgxaTFra1hvR3E2ZFBaa284VlBCTEZzdHpaZmstRm5FcmdTTlJkb05qdVhVN3hOcldFODRBdENrZHNsaTQ2Y2U4Q1Y4MWhWRXBjTEh4RS1NMUJUVXVVM0hsNlBIWVdNZDlyNVQwZE0wazdEejNLamZicm9DbmdXQkhVMWtZWWl5M1Y4ZzRJSXByUzhFU1FxdEtPVXNINjduOXZweDZJZ1U3RDRxVEF1SFh5WWg0dnRRWktHTmotSVlTMGMwTHNHSFA0UER2QmI1SzV2NWIxZUt3REFMS3N5VTdyWnc0QjZuTUJjejE1U1hDYzU0ZVBwZHpXMThTRndKMEJUSDQteGwzZlJOdFZzTXpBVjA1TVUxOXgzY0VCcmZLUmZJd1pubTZGdEVOV0haRkhtRzZtVkhOVFlsSXJKcWZzN0xFamFxWVE3aUZOc01fcm1zSXJVQ3EwWHdlVDFOa3QwUXRVU2dBa3F3M0Z4eUZaYUo3RGVEWWhBQkVWZmxUeURZSHV1aTR5dG4zMlFHYTAydlJHbENBXy1BUFBFNVBpdkFQeGNkUmtTdU92M2w5U09paUR2dlJtX3RVdzFHbl9jWWRfVlU5SlE0aUlybHdWZTZkOXNWQnctLVF5bDliazVXVVNBelE4dmk5S2c4SkZJUmN5Z2hudS1QY1lwRkxJcm14X1JuM2pGcjNDUGxhYmJSdzRPNW1TX1YyOGx5dExDMmJsUVV4YzBRYWpUXzZfRWZ0ZGpiOUczSmEwbTNBTUtIZjBITE02ZENEdTNRVUY4dVYtRmhacFlQMEZGeERpbDJFTmMyRUR5U0NXUHZnM2FBTzFHZmFJc1Q2cmRmYzl2WVB2cnFLWGNYM1Mxc2h2aWVocnNXYzBGcXNfemhEaG1RYnEzMUVlV3VBUHVRd1BUb19mNW5rVWRpZFplR2xzbkNnbWFERF82TjhkZ0lCOEVuNW55MXBOTHQ5NGtmMHlBcGRDYjNtN25TbXJWZHBwSGN2T3BURndUeXRLRjBpWEdSanFpY2NjVHYyZlB6dHZBVERLbUdsM3NvdXg3dmV0R0V4VU92Q2N3bEpvZUFOakdOZ3hoem1VMGJIcGhfN2wta19BQjRybXh6bGRRYWxJZm5KcDRoUUVacDNFZi02T1hOUzRGSGlzSTI2SktXaEk5Ulhmb1NSQWNVdTMwNGtiWEhtOF9JcFZEUFhIajZFSXpjY2NmUmxDN0tfV0QtSjlQMnk4UlBuaC1xeWF5SklRaDZEMlJUNzBXempUQUstdGZoU1l5akp0NW5sQk0ycUVuRkxCX2ZidEdULXFqTE51bHdrT3BBajQtVm5zZU8zNGx3cjZaaVRFZlJMZm5GUUVFLTJJc3RlcmxrR1pPcGFLQy1nOWg1ZEVKT0d1MXc1cXAxVDFBNVhNNkZWc3VzVEo3QXk4S1B2UllvMVN3YXp0MVdwZzRyYlI3dHdfYjlHUlNWRUN4c3MwOUQ5ZzlXQ21nTXRmYURMekVyNExfQV90OXZUVERwV1ZseU94UExaM2VOZ2o1WVRuZ2x3SUlWLVdET1VHY2RLaUhVbHdvaGU1ZkFfVXRNZ0FrTWw5Z3RQXzBiVkNXekNQY3FFM0NZWkdBN3hNZVVSYXZ4ci05ZVBTN2gtVTdGRmYwS2FiaEl2NFVSSDBhUGEzT2xfaFVHRVU1MWdwSlFTTUUySGR3NTE1clNxYkotNnczX1k3NEItNFhzY0RJREtieHV4VWl5N3hRTjdKVXo2c19vYldDd0FOdnJjbEljTUV1SzVibzFiN0xXTVBZWW1KWjJab1diaTl5NFVDRzNfeGJNaEFsNlNyMTA3RWVkR2xadDNGME9udmxCNUhrcjRTVWsteXBHYkdETjNzeS1hcElmUlFyVUVUZGRoaFB2MklxbGtpVk1DQThXUWdGUmgyWE9YX2Z2WER0cVpGQXBhVXg5cnAzQlhoMHcxTVRTcTlFMEo0TThPTXFJOERwa0hNcUtTanpKdFhRc3oxZXE2ckZLZkVIeG9fa1FrVWlXT29kR042WDE0UGhFSUk0Tk5Sbk5HNDFjMTRVdjFUWTFlM0NnQjR5aFVPV1pXNG9oMFZCVHB0czMxOHZveUJYZHVaQlpodWZJekpQaVBoYkctMnBDa1hKYndLcGoxQ3hveUlYWHU4WGFvMjZnZ1RqZnV2WGpTT3IySmNaSTBTaU1MUDV3cTd1X0FISnRZcURDOGJPRUM4R2swZktJMGFIREdqS0VWRVhFdU56MEhuZ29BVXowVGh2UjJwdi1MWkZsUTEtY1p5SlBoeWRobW85UkxWNEo3THNnZXJDcG5OdmZXZmNPZVhJaTExeTQ2T2VVaVJhb0xsTXY0X3UwQVR6RFI1a19OemFyVnJsSmNhWDRFWXUxVTI1STFvN0tvQXVhUDI0V2ZJTWd2UGZhX1pMMl80VmN0YTZETlpWbWowVjRnUnNBdXRMcC1fYnZocFpUX053OXhLQ3RjSEFEWldDM0phVGpCR0dhR0ZEaklsbm15ZEQ4NDFEVDBQa2lpQnA4azN2cnJRR2U5eEtONUhRV2tDOVYtZU9CSEdFSVhBM0UxUFh5djVMVDc5bWk2TUIwRnlDaW9ibEVlUkUzMUdPTU5HX25wOW91c1hINzhMSmZiS3lxNTRKOHB1NVVHWmpVN0ZoOS1tOF95SWpPYkRRMXpiOW9nYkI4Z1U0VnF3aG5RVndzTTRKZ0VUd09HekgwNUQ2WXlITkd0bWY4OGtUN0M1dkQ3MFpZX3dMNnd2VVlyM3VFYzVPb1pScXlnM0x5azlRZ1RxR1Vna2tZR0NxSDYzMUM3M21MMk1LVDFkOXNsUENicTNud0pvTmdMaWlHSG9xUHlNR1BkajgtRTFMNW1ocUNORmlIMHAwVGxzSGYzUlp3MnVWVHpxMzVVYTlDcVBNYWpqVG4zaUE4d1pZMHo2MUgxSFJoaE1Vb2xqU2dKdU1Xdy1HMWlnUHpVdnZYZTMwSHAxQjZkZXRJdmVsZmlWMzFkYWlnU3VqdDQyQ0hwNWl5alB3VmRJUS16SDdELW5wR21BTUFsLUpKYjFvQ3l4SGdxdHFld0JCMENxOWJQbmRmR0tlazd4d2c2dVVVbjNLSHpCajBUMTM2OGcxU3Zyc2dfY1NRN1ZZdS1mT1IzMnpWS1dHdmh1QlZ4bUtHTnJSbk0wWFlEc3ltTnB5RVdmM1Zycm1sNElYZm9GN09wTTV2dzJiT3pWMUQzVnZNc196SV9wcld1WkhoTmRuZ3JCdkE5VGpTU3pCdG1adWNJZmNSQkJib3ZVemQ0YklZZGlVRHd4dTJBNm95MXY0d3RrZnJPYmhfcXg5aGdRQ253Wl8yZVBjTnZ4ckxfRWVkZkpaMUZhSjRob2R3S3lQdzB2SkliOGRJQm42allycVNlNFdVTGIyWGx5eUFCOEdnVldEaUJuMGJreXl4WUtUX3VzZDkwdXpDTVRmNHowVTlxa3l6LWhtUGYyVlZHX2FVYTY3d0VIcTJ3MVVWYzFwM0hnbDRwWDZEZUtFeFBjMXFqczNvZkNpdWdVdjMxQ3hiR3V3b2N4aXRINkNxWGxfeVNxX0ZJY1hHY2ZoNFMzNzUwOTNnazNHWVNaRE81TVhHcjQ1MnZnSWw1QWlnNTk1Y2I5cU92RWh2ZC1LdkF6Qlg2ZDV5TjJ3UmxhRC1aUGtqWWZuT1lMTkVab3pkWlVFclBxalJ3MVZuZ01jVHZhczZlejg4ZUYzelFoQkZvQlBybjJwZEpsMzBVOFh5MWl4Z1diTUhjdE0wb3JCelNub1VwdWJ2YlBUMXdfbTYzZ05jTEcydy1QZG02ODQ0ZFlEbWp4a29Mei1uNG92Q19jb2RIbnNNMEZiYjJxRlF5c0pqNEN5TlROaFd0Wm5lQXhBZl9BWTV2MEViYU1Tb3lxVmVJNEhIRl9EX19RdnQ1SUhQRGh1c0FVTjlUOXVFYVZkWnZoZzd5bXN2c09wQjBXS21rMGwxYm1yaUhPLTI5Rm1PMGZ0YnJ4VTBrOW5RVkROSjdwS0pGaGV4RFFHbmpwcGw5OXp2WFpGOXJFYVpjS1lzcDhXSUxRSXlQWjg0ZGdwT243VW9FZG9QTG9FOTdsbnA1aUhlajVkcW1mTlRmNXREbUhMUXktaW9pd1FmOUxqUEhSVXpWNXdDOThrazl1T1dFQWJyVFBpNW8wNEl1MVZJUjY0TnVkTHhvS0g0ZExkdk1mVERyXzdtTTJaLWFFTmM1ek9qaDkzNTFqSVY4azUyZ3VfWHlMNDBDV21BUHpZQVRoQUlUX0F6TndaZXRRUUFDWDhFM05qeDVwZlNsU2tsM0oyTXVPMDJmRXYtRjBnQUI3SUw5OWZCN1lYMHREY1JRdUk2WWRIcW1kVWluTkwtOUJEQUZKbUE4YVkwekpkMXpPVmRuTXllb3JncFpyOFpJbmZDX3ZTazRYMmowUHd2cU1jckxzN0FCSDBUVkhiamlFd05IdHZCV25sTzJGenBLNE41TWNsTE03LV9mUk5zaWw4bGxmZUd4WE9jc1RYaTNaa2l0QUl1MklkcFNxWEZTT3NhNU1NQjE0LWVNWm5oMDQyVDA5bUZrVzBIR2RFNlVZa0tsaEhQU2dFLVhiRTdpQi10OHNiaWpQYm1hNTh2VE5NXzhKVVg1TGZZWlNwa2RVVS1CZDRtaURpak5oeGpZY3A0cC0tZTVUWjNwZmRCSTNnS2tydjdIcklFdEVsLXdXdlRER3kwODRkWXFTNDl4eFNuZEJrYzJiUHBwckRaVFpwamNBRTdLQ3o2Rllncjh2aXdOT0Fpblg1UUhIRFBnREJxcnNZNDl3aFdJbHVSOEUzcEJpanZRMVd6cDhfUk43Q2pXTEdHMEp1MmdRcjVFRF9WNHhIU0I3cVpiOXpWdXdrNzhNa1ZaNVQ2VUFMSnVlb2F4RTJyWjdlWXZPbTRnUmotSVV5LXZWNTEycnhybXhNU3l3YWxlNE5IbFd6MDAzcW9qSFNXVmxxQV9wWGVJRVcwTGhHZ3ZTWFZQemxJZkg0NVFpYklmSExfMHFwanJWVUJDQUNEdksxVktHZTVWeW9xdnEyRjBxT3lRc3Z2cFJ0MUQ4a1lraHktYkpZYlNCc2ZyeWVvb3lyZXhoNnFzUzdVNGFGZExKY2gtcW9fVW0zNXBNMDkzTTVtemZWY3lwQzlBN0lnS2toQ2JkVFBOX2Jnd3prdjFqdEdPRG5iaTl2SjVJQU8zb3k2UGZtdkZQNHN6cENkN2MzU01NY0hkZE9ncVJkZTQzTFNRSWdzRVBMWWdtdFZ4WE1TY1V5ZzRqb1QwUk5KMGI4TmxZelZTeW9pWlZla1ZEb3RqdDdyM0t6N0lvcnhWQ3NjSU1NakFEbUUzSUIyWklRdzF4ZlR6UE42TGZjaUtkSzBKVHZoWnJMMVl2bngtR3Z3MjJVMnlQZ3NFQnlTbEN4TGdaV2pwa0lzZXgyemhkd0t0MVRMNGFBWkhDSGwwSmdkMXgxVTBfV1g5d2hTYnQtd01fVFJLY2MxNUZPV3BIOWpwNlFxLXRxZkl2Q0dEQ1FtNFVxQ2FQTTRrb3JHa2lEc0Rmc3BnX2J1R1hWbEtZdm5ZSTFJTUlWNmQzdVRuWEhQdk1xNDlLMk9sd0lDRVg1eWl3Y1l5VV9ZWDNTN1k0aGdSRl9JSXkxYzNaMFc1dDJOblo5cUVpY1FYVVNSUjVZTXh2VmE5UTlGdTR1VF9xMjQ4RHUzUmNVQUJUM0tqRW5mRmgzb2xUUDhKRVpTZTlOTUNVRGNZSnB5TjNueTZneE5CWnVsa3R1SEhTcVFwRHFfMGhaTDJjMGxtOGVleGRnd085WlZqQ3NSOU1UQ0RoSm85SVdJMVN2MHhoOHg1V3B4VU12Vjl1Zm1jRTh1ZmpkQ0FSd0JSS0VJWmZEUzBNb3BzYVhhQ3ZSaHJqLWRZUVd5Vjg1UzdSYjU1VWlVMUdqejVJOG5jTnRzY2dlTWc3VFZhZUk4RU1jQXp3UkthT3BSakhYT0JqUXpTRkhRWU01Y2JHdU5qc2ljVVpDNnh2V0JPQ3FrUk9tNDFGVTU3aXJUT1htQW84OWNIRDUxWGxWQldCeHZvNHBGQzdaYy1idVdQOXVsYTZ4WWgyeEd6QUlHbzI5Y2xQMV9aTnlER0NrbVhCalJMbFlEeXRlalI0ZldEcC1xRTVwTHR4c0hBQktSNmV5T0c0MFFxbnV3ZWZZN2VPeGdqUzV0eVd5UUI2bkd6a0I5X3ByTVQ5dF9qdkQxZnFGNUpVYVFQb1FqbWtVaWp6YW1KMWpocTFrcHg3MktFMG9rX3liUWFrOG0za2d6bVJyYXlTUm51TGJkV2c0X3ItMThvVzFGejM4NnQ2c05pMzBxeUZxcmJVc3laeUY1M1BKSVJ6WUF1T0RZajh2bVBoNDJvUjg2ajAwakItWkZnZzd6SUF3eTBfQWM4RUlWSDFfWUJtMWFHeEJ2NkVfWHNLVVN0RDJrMlN5X09FVi1tSmt2R0tsZ3FnY2lUX19UM3VkSVQ5UDZjbGluYmk0WW1Ga1BBWXdjUXZOUDBwX3p6U2p4NkhldUx5eGtsS2lIYkJhVFY5a29QLWFZcXllX0gtOEJoVkNlUmhZYnBOU1V1OVlfcEpfRWdrODZRS2Jtd09YdTl3X3FuWHQ1c3FvUjNlRE04TGl6WmNLQlZ1blNyNkhNdDBiYS16MEJFWHFXMlpwZDd2QnQ5V0ZyZjFtLWpLS2FPc1cwMTBGY2ZrclhtS3NXTkVEYVRqdHlDdjlJOXhGUm9vSkFNdWt5aS1PZ3BPaDd3ZGM3RE0zNmZObnZGZnBXMG5FTUZQYU9WUUVOb000ZkFWU0VDVEZtSmptSEJLaVp0QUNWaGR4bVV3WmRES2JKYWRDS3dnc2stdGt6QWc2c2haTnNKdnhhX3J3cS1KcG5EX19vbXZPOWRNeko0ZmFPQzZQbnA2Q08zbWRHNnJyLUF3OXVRY0owanRZVXNEeWNZOUhXY0VPQ0pqdjFHbF9VV3pQbENxdkkyRndZQmhxN0RST09JWHYwc2RsRmlFRDF0SWI0OERfNDluMDdqYTJEbm45UldqTWJwaVp3LVE2U0syYkp5eEszZU56U2I2ODZRTFJXVTFIZ2RrbWFENWt1ZWplajZtNk1ObjBmVUlCYUdDaFhmYWVEdGU0QTV4WnlsWEZFY0Q1WmJzV0RYZ2hzTzlQM0ZxUWl1MDlPNGo0cjB6TkpucWZRWGRkM0FBNW4xTkh2RXo5UE5hYlMyZHBTaG5RYWpTWVg0V0U2dGtMNTVmeDNaNlNUVGlHZnRMWWNwZmlmSjI1dXZ5UjgxY0QyRFRrbzRhLVBtRi1CLXY5czFfMDFRV3d3eUo4Ty1kM1MxOWNnWkNoa243YmZiUk1NZlNyMGpyYUw5Qk9QaWZwVlVWdGxuR21Kdk5UdEcyVmhpc1BUYl9PMzd3X0o1OFNWTTc3RjdHRFE2dFZaeG5sbzR5aVRaMVkybWlVVGJFeHc2SWxWeDc3TXZkTHpPeE04NEdZYUlJQzVyV3NPaU1uNTc3QkhScDFFVnp6S01fdWw5eHR1MFJ4RERCS1VZamoxM1dadEhrczJIWWFkVjhBa212aGpQUzBBMlVYZ0pMWXE0eWxMT1NlcmkxQzhlMERzQzdHbUpTMHRfMS0yakN5b24xTXhlX2RRb3JFSlpiOFFQazZKR1Z2SGJVVDd0T0YtMW9sQWVFaWR2TlpjX08zSHg2T3p1X21uYUFkWldCOV9jZWxnOTJZZkFicTl6VldxaTQxYzRnT09BOVp3Qnk1bDViUDgzcUNVNENod0F3T3BrMTBWX3ZueHBId0t2UHJVVlRBYkl5RVE4RGptOHVYaTBvNW9XQzl3RTRNWDV0MzNmaGdsX3dzZkZ0b0pQNGY0bExSc1ItM2Z5UzZzOFVzVjMxeXAzSWR1WUw2dkc2NUU0NFhCdEJPTUhTX3VsSDVpYl9OMmRULXlLU0lUNTJxYlMtaHJaS19ycmw0WVR6Rk51dFdiTV95dzBMMERCSFQ1OFJEdzZyZ0NYSmdTaVRRZXUybmdTdVkySFh2QS1uNnFKa1JQdzdIUERnRzM5amJJc3hCaTFTYi1zMzZwOVI3NTd3Q0toZ3F5WlUtTEZEZFdHVmVRYUUxUjY1U2RzSG9iZ0pmdFZiLUJrZEUyZHQydjFFZXp1RnNoanp0WWI4c0VUa25PcTN6SEh6aEZIUE05WmhFRjZ3X1pwTHRmT0FkYmhJZDJiUU1CN3lCc1VHUmhCdkJYYi1NZ21jUW14Ykt3dHR4ZW9jbXYyRFN0LWgxbG15VWlWTFoybWllUXVsM0pBQWVNWENJa01lR3doQWkzUGJMZmhsZkFsUGZkRVRVYmZFSWEteHQ5WHdvV1hzUnRmNHBrZWlxUWlhbWdGV09xeGkzWG9DcTd1ZDh3c3NieXk0LWRvUGRSTVRSNDE0VVNyblRLOTBfdEdTVkJuWTRMVEdkdFp1OWlWc3ZESnFwRFBwa0Y2STV2Rm9rOXFjNnczSlJtSlRjMWk4S0Jhb2NkYTNpajJXVU90WnphZUU4aUplOFpxU0x6V3dKaHFhcnNmc2k0My1iZkhpbTA1MUd5MkRfT2NUT0N6czdWZXl4WHc4RkUwS001cWhmWkxXdjJBOXNwaTE2N1BXVTRpN1JBa3NIUkhlMUpwQTNRWGpWZ0VNQ3NGN0lNLTdtUkVrYW9kYVFWSXc4MGpQUFI4SXFzcmJTbV9fQUZYaVpWWVlRVXE1SXRzRjBYLXU5SUxteGI1MGVSZ3V5c2pTanM0d2VaQ1dUUnFZTXBuUmpKTW5RdFJDY0c5Q2JiX2dCMkpheFZBVFBrM0Z6ZTZwaThuQ1NCeWpKSTlDa1V5SnpIX0JyTzJENXZrQU5oUkxja2wydHI1VGcwNkQ2Qm41d2lHTjZlX2ZhdkJFWkhUZ3pYZ0dKeGI5RC1fME5nOUpmNXVGbkxWMHBzSl8yczZ0WlRlUmZVMDUxOThTRThFTTVjRlhoNndTaXRNY0FJbHlBaHdPY3JGenFUQlBVbUpWLXJuTTluSUtBazJfTXVzb0RVTXBoTXYydnBNa3FRdFoxVWhJRk9YdkxWa2pKX21ia04xU3Z2MkdxX1ZJQ091YzlEQmpyWl8tR3ZTZlVNR1RvVnRuT2ZKUXBjbzU0anI3UW11NkJtS0EyN09SM3AtcjJMNjJDZ0tVeG1UNkNmN0FoYjltRkVwWXl4QmJsR180ejNaZEdBMjczVExKaXdKQmlVU3lFdWZ6VWZfQm8yN3BLX2tOQ1NfTXhaNlhfMGx0UU9ETnVPSW84Wjg0S3hkWlJKaVhSUTBZU20xMzJqbDVvMXNEVzRJakRVdWhJNzhkM0IzazJUUi1KODRIYnkxV3Q3WkVraTU4Sk5adzRGU29mQzlFSXlnTzBFRUh0ODlyaVhSN0pPaEMwS2tUcVpINzNYUzA1N29WaU16WlYtdWlra0plUXJHcEZXWGJMV2MwTjd3eWZPcXdfNW1rcXRzZ1RQaHd5aTQyb3NxUTRDM2tNSllFbjg1ejU4c01YZDNrenkzRjVrUDhmUjl5UG5RZ2V4czBIa2NoZUNCSGZaMF9PZ0hhbGd3QjN4U2VpdGpKY2RXeWlWTW5kVVN1SWFsSS1RQnpFd2RQMGtWcENqUDFsUHZTOE1KOG9uc2FaUmJKWTBaQzlNUUpwUERWbm9jdmVHNGZtV3BuWFhuU01EejA4UzRuRWNabXpPUlJYUUJ0TWV0alJRT3B1eE5WYzBxRFNsWkNHbk5xS1dFM1hkdl92MXFaT2tuazRvZUJfUzBUOFJOcW53YXh5WVNNNVZ6M1JHcXcyYUE2aDN6b1FiWFA3UnFOUlZac0hPRTViNVdlV2dMN3VTVnZhTE1zRUdJVWNDMVpBTGd0b0NDLTFSdVhob0dYcHhvajhIUGUyYTJWTERuVzlUYlNHZWtaWFgzXzZyc1BtbTJEM3R1MXRtaE1sRm5TdFI3bXd1dXJ4NEsydXIxamJ5NzFrLW5odE9yTmFWMkt0cGhudUlJa2V2UFhrNzhhdXpTS1VaYmFDTUFoVmdnY3czX0xSbXY1d0FRQ0NNaXFidFpCNFgxbFRGZm45MTJqN2piXzZUXzRaN2hyYU9ZRkJvaWJZX2ItdnFTdUJNTTItRm52cEoxNEQtcjlHZUZ0SnpwNWNzOFZ2MmJtLTgxbng0Vk93Vy1HM0lrWktuVmN6RVItSzJHM3VKM0FhN1YtLVVseGR3S2U0V1pYa0tHam40dWtMOWdwNFByT0JmZnM3dy1hTVViQ3FxcG9UUzVCT1RKQ0tZbGcya184c3lmRlUxOHVDTEt6Y1dxbVdBdGt0TGkwUldiOFRjRlhETV9VTWE5dTB4eThkWFZkMDY0YXhaSExJeVdvUUtDcGdyYkU5RWZPQnFzUzJBSjVCdzhXSUhCS3lJYmN5clZ4bnlPNjczbEJac0cwRXR4MEV3RGdpcFlVLTFOZ213TGJvQk1Wc3hEWjhYTkhyTm9FNTJIekZQLWZUMFlQNnVNLUQxOHozU0lXUk51dUJpYzJyX0RwOENEbU5rbmRiWTlaeGRNZG1vOGxQUE03M0ViRzQ4aUQ4YnhOa2Z2QzZqaExYWHQ1U1RfSTc3MWE5TG80QXhoY0c0TlRjSjctM20yemdhUTlHWTZSMG9wbHo1U2VtSjhHQ1NFc1hCT0dIUE1EbnJlNlp0R0FRM19saGF6WFhoZkx6eWRQRUUtTGFZSzdtaTJSTV9ER3FkaWkxQi01OHQtemJRYXUzazAwWTRJTmVzd3FPY0JJMHVoY1ZJX0F4ZGpEbUE3WFpIV3NlOE0xenlIRklZVHFDNDlXNGI1VHg4V21maWtZWjk1dTUxT0tldk9QOTc0WGNhUUh2TmU0QlVTd0twU2gyb2h1TVJubXJKbXBwQ0F3dlBOWC1yTkhZTEx5cVp1LXNEOWlrOXNxVG1hTUdWMEFNSjIzcnpUOGYyU2p2RFpmbWppWmwzaFdnaGpJRzFacDRIMUZxWFNFaGdkSjE1MmY1T1pkZU9UR3pOMmozNUg2T2RIVS1UeHdQdDVwTENWOU1mZElvSFlLbGRWR09faU02X0NKMW5PSUlIekVJSXVnTjJ0RWVKd01ic2lnb2dCUk13cHF4Zm1UamNtemZRSjhQWTA5TEpVSjBSSzhPbjNha1RWd3hwcDEtRHBMbVNjUTBYVFhPbmZwcW4xUjhHcmFSdUs0YTAxOHVMYXMybld4TmJ5Wno3UlBnZWs4b1FJbE0zWGllY2hSRGk1QWljTUpuSV9PMktzYkJJaklheFFDQS1TelhDcDlFOTZFZnZWeEtHelRwSzl4MWRSZXc5STZ1cFdVUWc2VFZvUzNRNlB6LUJxRDlqN2NmSWdGQWpRd3h0eDVVZ2xUc3phRjZFUk1EeGlIWENMOFd2MmJfbE1PblJxU0RCSUh6b3lZMnp6Q3ZpaDBYazFCRGE5ZHRnVU41Q1duYzRFbzVkbFpOYmxXNVY2MWw0LTREVmM1TkNuU2N3NjAyU2ZfcXItcWp3N0tSU3hRSEt6YmVMMUVzYXdYMTJ3RjNtYlc2X2RJVWY3eGRHNm81VjZGWmdlWmtCUzluTTdGZWJiTXNIZ0lZTVRwY3poYXRrV3dqdW01OEYtbXJfMUVBdkFHR1Mxank5RG1XZG5sNW9VN083cklTYkNaVmZNUVN4STJMQ0ZkN1pPRXFDTC03VlRjUm9LS3BRSXpPbXNaQzlWSjVkdF9oc0syS05Lc2l5a0NDcEx6c2NSY2JkSUVxSTNoZWxUU2hvVzdINlV2eXY3b3Q2c3pGWElWTGJVMENmVmFmeVBHdTlneU5VZjVzeU53amVhNVY0LUk3VzBERkF0SUdBM1hhU0JkcndFaWtMWkp6RlZoZnVIWFJUT0dHUjRJeGs4YlJXVlNWdDZac1hiYlRiazVraEhfel80U2JEUU5GekNiZ0RXXzhqbFRQVlZwa3pIaDhjaVYwNUYyYm81ODZqTzVMOFNZdFNCcFpXSWpUUnRkOExOV3NVRHVGTDJjU2tiNlJ3a2Zuall6OTRYVGhKQ052WFIxd0c1Q0h2WkFHYXNmOVlqRkZqZVFySnhqdkgxZWdLeWV5MnA0TlFEZ1dnYlA4MGpDa18teVI2Y3U1bXkxdmpsbWtnX2pLSF95eHhkdElOY2lvRXlFNWxIQ0paa2RTR2RIc25pNjQxYmV0ZGJ2dThuMFlnaVltWXlRRVNpOWNXTGZGaVpBYnpGYWMtOFVIeTE4N1lhb2llZzRXd0V3TlR5RzB4ek11RDJvN192MHpVaGZTdThrbnRZSlVLVGl3OUZsS0RRSXROcDFRdTM1WmE2WTRGY00tekk5Y20yVkxMNlVISVRZWDY2bmN5SWZUTVBVdHMtOG1hUXYwdVg4RFNrWmJreHVLTmhFV1JwRDNIT0VsT0lMeDVWdWdDSjFOdVM3ZDVyenBtV1FIU01TbXpvMHJYM1NoM3pwem93TV9SVFYtVWw0SHpvelVSM2ZhYURUOEczbnNJQzJDYWlqQi0taXNQYVgxb3lzczg4dTBqX0ZpTF9ncGVtWVVYQ3l4V1hZUjFRYWRlSk5HdDJxYW9maE9tRG5Ud3doVi1YWkdBRTYzTTZteHRKQzNXV0pNUUFsYXVwNlZQRXVkZTN3cVk2ZFUyNGpqNEN2VGNTVW85dkpFb1RMaEZtUFFiOG0zQzdtallJNVM0cVluc01DN2VFbVlUd3h2a241SXViQT09 \ No newline at end of file diff --git a/addons/account_peppol/tools/demo_utils.py b/addons/account_peppol/tools/demo_utils.py new file mode 100644 index 00000000000..3b405c44c9d --- /dev/null +++ b/addons/account_peppol/tools/demo_utils.py @@ -0,0 +1,169 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from base64 import b64encode +from decorator import decorator +import uuid + +from odoo import _, fields, modules, tools +from odoo.tools.misc import file_open + +DEMO_BILL_PATH = 'account_peppol/tools/demo_bill' +DEMO_ENC_KEY = 'account_peppol/tools/enc_key' +DEMO_PRIVATE_KEY = 'account_peppol/tools/private_key.pem' + +# ------------------------------------------------------------------------- +# HELPERS +# ------------------------------------------------------------------------- + +def get_demo_vendor_bill(user): + return { + 'direction': 'incoming', + 'receiver': user.edi_identification, + 'uuid': f'{user.company_id.id}_demo_vendor_bill', + 'accounting_supplier_party': '0208:2718281828', + 'state': 'done', + 'filename': f'{user.company_id.id}_demo_vendor_bill', + 'enc_key': file_open(DEMO_ENC_KEY, mode='rb').read(), + 'document': file_open(DEMO_BILL_PATH, mode='rb').read(), + } + +# ------------------------------------------------------------------------- +# MOCKED FUNCTIONS +# ------------------------------------------------------------------------- + +def _mock_make_request(func, self, *args, **kwargs): + + def _mock_get_all_documents(user, args, kwargs): + if not user.env['account.move'].search_count([ + ('peppol_message_uuid', '=', f'{user.company_id.id}_demo_vendor_bill') + ]): + return {'messages': [get_demo_vendor_bill(user)]} + return {'messages': []} + + def _mock_get_document(user, args, kwargs): + message_uuid = args[1]['message_uuids'][0] + if message_uuid.endswith('_demo_vendor_bill'): + return {message_uuid: get_demo_vendor_bill(user)} + return {message_uuid: {'state': 'done'}} + + def _mock_send_document(user, args, kwargs): + # Trigger the reception of vendor bills + get_messages_cron = user.env['ir.cron'].sudo().env.ref( + 'account_peppol.ir_cron_peppol_get_new_documents', + raise_if_not_found=False, + ) + if get_messages_cron: + get_messages_cron._trigger() + return { + 'messages': [{ + 'message_uuid': 'demo_%s' % uuid.uuid4(), + } for i in args[1]], + } + + endpoint = args[0].split('/')[-1] + return { + 'ack': lambda _user, _args, _kwargs: {}, + 'activate_participant': lambda _user, _args, _kwargs: {}, + 'get_all_documents': _mock_get_all_documents, + 'get_document': _mock_get_document, + 'participant_status': lambda _user, _args, _kwargs: {'peppol_state': 'active'}, + 'send_document': _mock_send_document, + }[endpoint](self, args, kwargs) + +def _mock_button_verify_partner_endpoint(func, self, *args, **kwargs): + self.ensure_one() + self.account_peppol_validity_last_check = fields.Date.today() + self.account_peppol_is_endpoint_valid = True + +def _mock_user_creation(func, self, *args, **kwargs): + func(self, *args, **kwargs) + self.write({ + 'account_peppol_proxy_state': 'active', + }) + self.account_peppol_edi_user.write({ + 'private_key': b64encode(file_open(DEMO_PRIVATE_KEY, 'rb').read()), + }) + +def _mock_deregister_participant(func, self, *args, **kwargs): + # Set documents sent in demo to a state where they can be re-sent + demo_moves = self.env['account.move'].search([ + ('company_id', '=', self.company_id.id), + ('peppol_message_uuid', '=like', 'demo_%'), + ]) + demo_moves.write({ + 'peppol_message_uuid': None, + 'peppol_move_state': None, + }) + demo_moves.message_main_attachment_id.unlink() + demo_moves.ubl_cii_xml_id.unlink() + log_message = _('The peppol status of the documents has been reset when switching from Demo to Live.') + demo_moves._message_log_batch(bodies=dict((move.id, log_message) for move in demo_moves)) + + # also unlink the demo vendor bill + self.env['account.move'].search([ + ('company_id', '=', self.company_id.id), + ('peppol_message_uuid', '=', f'{self.company_id.id}_demo_vendor_bill'), + ]).unlink() + + mode_constraint = self.env['ir.config_parameter'].get_param('account_peppol.mode_constraint') + self.account_peppol_edi_user.unlink() + self.account_peppol_proxy_state = 'not_registered' + self.account_peppol_edi_mode = mode_constraint + + +def _mock_update_user_data(func, self, *args, **kwargs): + pass + +def _mock_migrate_participant(func, self, *args, **kwargs): + self.account_peppol_migration_key = 'I9cz9yw*ruDM%4VSj94s' + +_demo_behaviour = { + '_make_request': _mock_make_request, + 'button_account_peppol_check_partner_endpoint': _mock_button_verify_partner_endpoint, + 'button_create_peppol_proxy_user': _mock_user_creation, + 'button_deregister_peppol_participant': _mock_deregister_participant, + 'button_migrate_peppol_registration': _mock_migrate_participant, + 'button_update_peppol_user_data': _mock_update_user_data, +} + +# ------------------------------------------------------------------------- +# DECORATORS +# ------------------------------------------------------------------------- + +@decorator +def handle_demo(func, self, *args, **kwargs): + """ This decorator is used on methods that should be mocked in demo mode. + + First handle the decision: "Are we in demo mode?", and conditionally decide which function to + execute. Whether we are in demo mode depends on the edi_mode of the EDI user, but the EDI user + is accessible in different ways depending on the model the function is called from and in some + contexts it might not yet exist, in which case demo mode should instead depend on the content + of the "account_peppol.edi.mode" config param. + """ + def get_demo_mode_account_edi_proxy_client_user(self, args, kwargs): + if self.id: + return self.edi_mode == 'demo' + return self.env['ir.config_parameter'].get_param('account_peppol.edi.mode') == 'demo' + + def get_demo_mode_res_config_settings(self, args, kwargs): + if self.account_peppol_edi_user: + return self.account_peppol_edi_user.edi_mode == 'demo' + return self.account_peppol_edi_mode == 'demo' + + def get_demo_mode_res_partner(self, args, kwargs): + peppol_user = self.env.company.account_edi_proxy_client_ids.filtered(lambda user: user.proxy_type == 'peppol') + if peppol_user: + return peppol_user.edi_mode == 'demo' + return self.env['ir.config_parameter'].get_param('account_peppol.edi.mode') == 'demo' + + get_demo_mode = { + 'account_edi_proxy_client.user': get_demo_mode_account_edi_proxy_client_user, + 'res.config.settings': get_demo_mode_res_config_settings, + 'res.partner': get_demo_mode_res_partner, + } + demo_mode = get_demo_mode.get(self._name) and get_demo_mode[self._name](self, args, kwargs) or False + + if not demo_mode or tools.config['test_enable'] or modules.module.current_test: + return func(self, *args, **kwargs) + return _demo_behaviour[func.__name__](func, self, *args, **kwargs) diff --git a/addons/account_peppol/tools/enc_key b/addons/account_peppol/tools/enc_key new file mode 100644 index 00000000000..51aa184fba5 --- /dev/null +++ b/addons/account_peppol/tools/enc_key @@ -0,0 +1 @@ +HjlTVuGbHXeCBWAhlIDfR3xZcCtykbMmvRoeGLARDWN+AhOdTffFb0hR+3GkMpwCvTshTkIx4nJwdFyIx/g3OuKpGPQJLi1d/4IhwYyhhSFAuHJRWE8rm2Z++aZ4Qd69h4bQjr5ymy/icqiYZ6Atyu1EXfunZBk5LsctoTp99htyFD4EzX6IH+9sBzvb32tkdU7p4LBYalTonJr8cK7IzTHyoDhg7UIwArztHwCrnf2SMLDJB/BdiihN0alf+vNN8/FOhGmJY3qH2nqrDTKk96dgUoapNi6RRWrE6rzmcBL2Lr/dBYfDXqJKqC178+m89ezaPySSToj8MNKNpqXFUw== \ No newline at end of file diff --git a/addons/account_peppol/tools/private_key.pem b/addons/account_peppol/tools/private_key.pem new file mode 100644 index 00000000000..d05bc7c65c2 --- /dev/null +++ b/addons/account_peppol/tools/private_key.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCj4tVufRBH9j1Q +1cag4xHHgYhNOWSTPtkZbB6ZVfxng/MLGgUF+InNRn2ZWFKpTsQucSa1JKWaYWt+ +gmq+7NMUu1smgdhyZxbGXubVEm8bp1AQO7432V4pOU06NW8i6YqRb79ru+wY32RN +yWU1GnDyoGFfndM94ewlAkP9THwg6RHl5uYPcy+4PLRixhnMi+CoPhJ53yA8stHZ +rsTKpYXvMLgbOVjI5+7mRq4ixlbmtIwifXdv0yExcj6Q0VJ+iq8aRxcxIRlNV6/6 +ifp7+cZUNpw/KzWVOQ+DcMgzMir7nn2YatLSPTcqv7YjQqpS/D2ZUu8S/SNxmQ50 +nF4/xoknAgMBAAECggEAen9gfReqBb/+kN9ZeoR/k5o0oVRW4uDFMYVpUb+9zDoK +fq/SNWZSykb4NpiYIMkpRnV5M0jTJ5PN31/oHhGyrPpl5WCEwu5fTaM98uG2fvsO +kzO0uNYW1cVo/itWiMf7tT3L3OE4VlcUCDiTF6BN8G0Em43CiazG79rDqx9yYL3j +Vnj/NLiY0OnxXL6SkjxZHvjXPl8jjTrf8oZl+twpwskiC5cqIpfsTGSsDq5WS2rh +eYdGhH4EcUAfK5PHTTIwBGFReekrTXv1PXm3EK36T8himQVX5sSd2F79QsVXsnfM +PR5W85W7MhEKYD4mZSQsKThj+CCE8G7U5uJ2Ah+LYQKBgQDOPNQYdfrY2Ivcy1X7 +umVniEyoJ5fs3GLRwXTH+nPNxIa5/YtzLqd17GU/Ec6nyEDGcDqEpuKfopcEEqqw +w6Z9JPudOPJoVRugTHkpAzv/A9Sq5IC3P2SJUDV11u80x9qe3j5oKj/woEE2HsUI +uCn8HF9NUO7r8G/eg5+8vFcHiQKBgQDLbfnt2xFRFgF06+E2GIK/GAKbkJHhYO1L +2obZQnGj7+irMlt+uaDbHk+jFCHk+q3xd48x+o1aliNwXSDQ3QJfxCSIfcP9xG2W +3l6kCO5irwgt589E5rEUEegQM2F6oS3OtcUr9zjeW1rDMjHHLD87Tb9rB2GAweQf +yLqsoZovLwKBgERjX2GNHdVyWU6qDqUetimSxPityG8+1XYA1JzLrEL7fEGIlgln +2xf7f8dePEze1rv20zDRtiyBWdp75iYfesHc1aLZE2kNb8/EDBlRfT+fIZJZm2Uo +nEn8Uv30e/Xgn9o2kDMyb2l3eqhbo7K0fxeewOt+fvu2CyKaOwn22lUhAoGBAKQz +YfAmykR8EbLxjnhesnJSjBBLUiTsWr3GZuBI7HdZ96Dv5cBVT0xum/NTFcTAvtRQ +IApEZgJ/e51/3jQYoIjyRlbRxPg5rAeB+DxJZTnMdDqxiLDh0H8VsQ4amw0juljG +iZ9iTsnUTV+PTXSp92QD7oUSkRYf6uXo3Rzo2A5LAoGAI4o8zbghCrqJvkuk0hfh +UP5X/eu06EMYVLamZit64kJMdumKcJuVDo4jyz+DYhz6T3bMPbAzRBqsZA4M8l73 +XWp9z1bKS/AHsZSXLLRKk1C/OR7z5zLz/j8BgbqKpjNtRCp1DFu1IgPC2+3rVr89 +mQa1nuu+xYOkgxcs7F5qM7g= +-----END PRIVATE KEY----- diff --git a/addons/account_peppol/views/account_move_views.xml b/addons/account_peppol/views/account_move_views.xml index c1ca397eb82..3df8b2095c3 100644 --- a/addons/account_peppol/views/account_move_views.xml +++ b/addons/account_peppol/views/account_move_views.xml @@ -21,7 +21,9 @@ class="d-flex" invisible="not peppol_move_state or state == 'draft'"> + + (Demo) The invoice will be sent automatically to PEPPOL diff --git a/addons/account_peppol/views/res_config_settings_views.xml b/addons/account_peppol/views/res_config_settings_views.xml index 628e6122688..715f31cc644 100644 --- a/addons/account_peppol/views/res_config_settings_views.xml +++ b/addons/account_peppol/views/res_config_settings_views.xml @@ -99,9 +99,12 @@ Application status: + (Demo) + (Test)
@@ -123,10 +126,23 @@
-
-
- I accept that Odoo may process my e-invoices. +
+ + +
+ By clicking the button below I accept that Odoo may process my e-invoices. +
+
+ Test mode allows registration of the user on the test Peppol network. + By clicking the button below I accept that Odoo may process my e-invoices. +
+
+ In demo mode sending and receiving invoices is simulated. There will be no communication with the Peppol network.
diff --git a/addons/account_peppol/wizard/account_move_send.py b/addons/account_peppol/wizard/account_move_send.py index 7235d69072a..a383b8ca20f 100644 --- a/addons/account_peppol/wizard/account_move_send.py +++ b/addons/account_peppol/wizard/account_move_send.py @@ -21,6 +21,7 @@ class AccountMoveSend(models.Model): string="Warning", compute="_compute_peppol_warning", ) + account_peppol_edi_mode_info = fields.Char(compute='_compute_account_peppol_edi_mode_info') # ------------------------------------------------------------------------- # COMPUTE METHODS @@ -71,6 +72,19 @@ class AccountMoveSend(models.Model): ) ) + @api.depends('company_id.account_edi_proxy_client_ids.edi_mode') + def _compute_account_peppol_edi_mode_info(self): + mode_strings = { + 'test': _('Test'), + 'demo': _('Demo'), + } + for wizard in self: + edi_user = wizard.company_id.account_edi_proxy_client_ids.filtered( + lambda usr: usr.proxy_type == 'peppol' + ) + mode = mode_strings.get(edi_user.edi_mode) + wizard.account_peppol_edi_mode_info = f' ({mode})' if mode else '' + # ------------------------------------------------------------------------- # ATTACHMENTS # ------------------------------------------------------------------------- diff --git a/addons/account_peppol/wizard/account_move_send_views.xml b/addons/account_peppol/wizard/account_move_send_views.xml index e92afaa6e09..a948314cd93 100644 --- a/addons/account_peppol/wizard/account_move_send_views.xml +++ b/addons/account_peppol/wizard/account_move_send_views.xml @@ -19,6 +19,7 @@ +