From f12d6d95cb947bd144ed03b7517ad1d61155dc6a Mon Sep 17 00:00:00 2001 From: Cameron Fairchild Date: Thu, 27 Apr 2023 11:03:46 -0400 Subject: [PATCH] Merge releases 4.0.0 and 4.0.1 back to staging (#1306) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * bump version * Fix permissions for release github script (#1224) Co-authored-by: Cameron Fairchild * should be 4.1.0 * Revert "should be 4.1.0" This reverts commit 3db08ea24f4fc4775bd46858e6c77cfa165d85ed. * Staging into Release branch (#1275) * (un)Staking multiple avoid tx limit (#1244) * add tx rate limit * wait for tx limit if not done multi stake/unstake * dont "decrypt" hotkey * additional logging for prometheus (#1246) * Dataset fix (#1249) * fix * added try except * Grab delegates details from GitHub (#1245) * add url to init * add dataclass and util functions * use in cli * remove delegates json --------- Co-authored-by: joeylegere * Add raw spec for local test and new bins (#1243) * add spec and new bins * fix config netuid * use dot get * check if config netuid is list * add start to mockstatus * add attr to mock neuron * add info to mock from neurons * change ordering of neuron dict to namespace * remove test for wandb for axon * use regex for looser match * fix blacklist metagraph mock * use real mock netuid * use mock network and netuid in constructor * fix patch * patch delegate check * use mock network and netuid * remove check for wallet hotkey * fix tests for subtensor init * dont set netuid for overview test * typo in docstring * add mock status stop * add low mock tx limit * oops typo * use dot get * add wait for final and incl args * use args during setup * update bins and use 100ms blocktime * pass block arg * remove bittensor.logging and a old test * use random port * backward fix * fix block time to 1s * compile no symb on linux * compile no symb mac * remove useless init on var * use dot get for new flags * update test durations * update test durations * use dot get for config * output error msg * mock to_default * remove to defaults in help * reduce neruons, remove flaky test * deactivate test * mvoe key pair tests out of the subtensor interface --------- Co-authored-by: Eugene * Fix list_delegates on non-archive nodes (#1232) * Change how pull of archival data is handled * fix for list_delegates too * . * use empty dict * fix spacing * specify exception * log out * add space in log message * use warning instead * Blacklist fixes + depreciation of old signatures (#1240) * fixes blacklist error message + remove * remove checks for parse signature * remove sign v1 tests * fix for the syanpse checks * fix tests and remove duplicate sign * [BIT-636] Change u16 weight normalization to max-upscaling (#1241) * Change u16 weight normalization to max-upscaling Use full u16 bitwidth so that max_weight=U16_MAX, then rely on subtensor epoch to properly normalize weights in I32F32. This means that weights submission extrinsic to subtensor does not have to be pre-normalized. * Skip zero sum in weight conversion * Round u16 weights * remove duplicate command #1228 (#1231) * remove duplicate command #1228 * Extract create_parser for cli testing * mark as private * use in tests and test for duplicates * fix test using mock prompt answers * test_forward_priority_2nd_request_timeout fix (#1276) fix * Remove btcli query and btcli set_weights (#1144) . --------- Co-authored-by: Eugene-hu <85906264+Eugene-hu@users.noreply.github.com> Co-authored-by: isabella618033 <49876827+isabella618033@users.noreply.github.com> Co-authored-by: joeylegere Co-authored-by: Eugene Co-authored-by: opentaco <93473497+opentaco@users.noreply.github.com> * Remove codecov (#1282) * Use alt new preseal (#1269) * use new preseal for reg * bump cubit req * fix arg order issue * cubit req back * use alt impl * fix typehint * use 512 * modify tests for new format * refactor functions to use helpers and remove useless * refactor functions * add test for CPU solver * modify tests for privitized module and methods * private register cuda * move formatting funcs * use powsolution * privitize most methods * fix test * fix perms * remove test script * remove debug * fix call * fix seal * fix combined hash * move to method * fix test using real example * update mock bins * use new builder * fix block update tests * fix some patching in tests * mock live display for some tests * fix chain mock * update linux bin * add mock network flag * set max diff at 0 for mock netuid 1 * set min diff too * add try catch for setup * add some logging during tests * don't submit on cli register * update test durations * fix test to use mock keypair * return mock wallet * should use subtensor instance during rereg * update node subtensor bins * use fixtures and multiple subtensor instances * changelog update * skip CLI tests (#1284) * skip tests * dont test mock functions * update test durations * [Release] v4.0.0 (#1271) * bump version * Fix permissions for release github script (#1224) Co-authored-by: Cameron Fairchild * should be 4.1.0 * Revert "should be 4.1.0" This reverts commit 3db08ea24f4fc4775bd46858e6c77cfa165d85ed. * Staging into Release branch (#1275) * (un)Staking multiple avoid tx limit (#1244) * add tx rate limit * wait for tx limit if not done multi stake/unstake * dont "decrypt" hotkey * additional logging for prometheus (#1246) * Dataset fix (#1249) * fix * added try except * Grab delegates details from GitHub (#1245) * add url to init * add dataclass and util functions * use in cli * remove delegates json --------- Co-authored-by: joeylegere * Add raw spec for local test and new bins (#1243) * add spec and new bins * fix config netuid * use dot get * check if config netuid is list * add start to mockstatus * add attr to mock neuron * add info to mock from neurons * change ordering of neuron dict to namespace * remove test for wandb for axon * use regex for looser match * fix blacklist metagraph mock * use real mock netuid * use mock network and netuid in constructor * fix patch * patch delegate check * use mock network and netuid * remove check for wallet hotkey * fix tests for subtensor init * dont set netuid for overview test * typo in docstring * add mock status stop * add low mock tx limit * oops typo * use dot get * add wait for final and incl args * use args during setup * update bins and use 100ms blocktime * pass block arg * remove bittensor.logging and a old test * use random port * backward fix * fix block time to 1s * compile no symb on linux * compile no symb mac * remove useless init on var * use dot get for new flags * update test durations * update test durations * use dot get for config * output error msg * mock to_default * remove to defaults in help * reduce neruons, remove flaky test * deactivate test * mvoe key pair tests out of the subtensor interface --------- Co-authored-by: Eugene * Fix list_delegates on non-archive nodes (#1232) * Change how pull of archival data is handled * fix for list_delegates too * . * use empty dict * fix spacing * specify exception * log out * add space in log message * use warning instead * Blacklist fixes + depreciation of old signatures (#1240) * fixes blacklist error message + remove * remove checks for parse signature * remove sign v1 tests * fix for the syanpse checks * fix tests and remove duplicate sign * [BIT-636] Change u16 weight normalization to max-upscaling (#1241) * Change u16 weight normalization to max-upscaling Use full u16 bitwidth so that max_weight=U16_MAX, then rely on subtensor epoch to properly normalize weights in I32F32. This means that weights submission extrinsic to subtensor does not have to be pre-normalized. * Skip zero sum in weight conversion * Round u16 weights * remove duplicate command #1228 (#1231) * remove duplicate command #1228 * Extract create_parser for cli testing * mark as private * use in tests and test for duplicates * fix test using mock prompt answers * test_forward_priority_2nd_request_timeout fix (#1276) fix * Remove btcli query and btcli set_weights (#1144) . --------- Co-authored-by: Eugene-hu <85906264+Eugene-hu@users.noreply.github.com> Co-authored-by: isabella618033 <49876827+isabella618033@users.noreply.github.com> Co-authored-by: joeylegere Co-authored-by: Eugene Co-authored-by: opentaco <93473497+opentaco@users.noreply.github.com> * Remove codecov (#1282) * Use alt new preseal (#1269) * use new preseal for reg * bump cubit req * fix arg order issue * cubit req back * use alt impl * fix typehint * use 512 * modify tests for new format * refactor functions to use helpers and remove useless * refactor functions * add test for CPU solver * modify tests for privitized module and methods * private register cuda * move formatting funcs * use powsolution * privitize most methods * fix test * fix perms * remove test script * remove debug * fix call * fix seal * fix combined hash * move to method * fix test using real example * update mock bins * use new builder * fix block update tests * fix some patching in tests * mock live display for some tests * fix chain mock * update linux bin * add mock network flag * set max diff at 0 for mock netuid 1 * set min diff too * add try catch for setup * add some logging during tests * don't submit on cli register * update test durations * fix test to use mock keypair * return mock wallet * should use subtensor instance during rereg * update node subtensor bins * use fixtures and multiple subtensor instances * changelog update * skip CLI tests (#1284) * skip tests * dont test mock functions * update test durations --------- Co-authored-by: Eduardo García Co-authored-by: Eugene-hu <85906264+Eugene-hu@users.noreply.github.com> Co-authored-by: isabella618033 <49876827+isabella618033@users.noreply.github.com> Co-authored-by: joeylegere Co-authored-by: Eugene Co-authored-by: opentaco <93473497+opentaco@users.noreply.github.com> * fix my delegates * fix perms on changelog script * update version * fix changelog script * Catch bad endpoint protocol (#1296) * catch protocol not good * add protocol 4 * catch assertion and return bool * catch assertion errors * changelog --------- Co-authored-by: Eduardo García Co-authored-by: Eugene-hu <85906264+Eugene-hu@users.noreply.github.com> Co-authored-by: isabella618033 <49876827+isabella618033@users.noreply.github.com> Co-authored-by: joeylegere Co-authored-by: Eugene Co-authored-by: opentaco <93473497+opentaco@users.noreply.github.com> --- .test_durations | 438 ------------------ VERSION | 2 +- bittensor/_cli/commands/run.py | 151 ++++++ bittensor/_endpoint/__init__.py | 194 ++++++++ bittensor/_endpoint/endpoint_impl.py | 158 +++++++ bittensor/_subtensor/subtensor_mock.py | 48 +- tests/integration_tests/test_cli.py | 58 ++- tests/integration_tests/test_subtensor.py | 2 +- tests/mock_subtensor/bin/OSX/node-subtensor | Bin tests/mock_subtensor/specs/local_raw.json | 10 +- .../bittensor_tests/test_endpoint.py | 177 +++++++ 11 files changed, 731 insertions(+), 507 deletions(-) create mode 100644 bittensor/_cli/commands/run.py create mode 100644 bittensor/_endpoint/__init__.py create mode 100644 bittensor/_endpoint/endpoint_impl.py mode change 100755 => 100644 tests/mock_subtensor/bin/OSX/node-subtensor create mode 100644 tests/unit_tests/bittensor_tests/test_endpoint.py diff --git a/.test_durations b/.test_durations index 15fc882802..35d208dc0f 100644 --- a/.test_durations +++ b/.test_durations @@ -1,5 +1,4 @@ { -<<<<<<< HEAD "tests/integration_tests/test_cli.py::TestCLIWithNetworkAndConfig::test_delegate_stake": 21.748504499, "tests/integration_tests/test_cli.py::TestCLIWithNetworkAndConfig::test_inspect": 2.0752911659999995, "tests/integration_tests/test_cli.py::TestCLIWithNetworkAndConfig::test_metagraph": 21.305854791999998, @@ -219,441 +218,4 @@ "tests/unit_tests/bittensor_tests/test_neuron.py::TestCoreServer::test_model_output_check": 9.921326915999998, "tests/unit_tests/bittensor_tests/test_neuron.py::TestCoreServer::test_set_fine_tuning_params": 6.299140666000003, "tests/unit_tests/bittensor_tests/test_neuron.py::TestCoreValidator::test_corevalidator_reregister_flag_false_exit": 0.008880706999999433 -======= - "tests/integration_tests/test_cli.py::TestCLIWithNetworkAndConfig::test_delegate_stake": 18.220543085000003, - "tests/integration_tests/test_cli.py::TestCLIWithNetworkAndConfig::test_inspect": 3.0217620000000025, - "tests/integration_tests/test_cli.py::TestCLIWithNetworkAndConfig::test_metagraph": 41.75566208300001, - "tests/integration_tests/test_cli.py::TestCLIWithNetworkAndConfig::test_nominate": 4.365600458000003, - "tests/integration_tests/test_cli.py::TestCLIWithNetworkAndConfig::test_overview": 41.304447666, - "tests/integration_tests/test_cli.py::TestCLIWithNetworkAndConfig::test_overview_all": 0.7478832079999975, - "tests/integration_tests/test_cli.py::TestCLIWithNetworkAndConfig::test_overview_no_wallet": 0.20667745900000511, - "tests/integration_tests/test_cli.py::TestCLIWithNetworkAndConfig::test_overview_not_in_first_subnet": 4.357551126000004, - "tests/integration_tests/test_cli.py::TestCLIWithNetworkAndConfig::test_overview_with_hotkeys_config": 0.37298754200000417, - "tests/integration_tests/test_cli.py::TestCLIWithNetworkAndConfig::test_overview_with_sort_by_bad_column_name": 0.5826632899999922, - "tests/integration_tests/test_cli.py::TestCLIWithNetworkAndConfig::test_overview_with_sort_by_config": 0.49717008400000395, - "tests/integration_tests/test_cli.py::TestCLIWithNetworkAndConfig::test_overview_with_sort_order_config": 0.5882970010000079, - "tests/integration_tests/test_cli.py::TestCLIWithNetworkAndConfig::test_overview_with_sort_order_config_bad_sort_type": 0.4390866679999945, - "tests/integration_tests/test_cli.py::TestCLIWithNetworkAndConfig::test_overview_with_width_config": 0.6466628750000041, - "tests/integration_tests/test_cli.py::TestCLIWithNetworkAndConfig::test_overview_without_hotkeys_config": 0.5408287510000065, - "tests/integration_tests/test_cli.py::TestCLIWithNetworkAndConfig::test_overview_without_sort_by_config": 0.7807917080000024, - "tests/integration_tests/test_cli.py::TestCLIWithNetworkAndConfig::test_overview_without_sort_order_config": 0.46395829299999036, - "tests/integration_tests/test_cli.py::TestCLIWithNetworkAndConfig::test_overview_without_width_config": 0.5854254999999995, - "tests/integration_tests/test_cli.py::TestCLIWithNetworkAndConfig::test_recycle_register": 7.742245374999996, - "tests/integration_tests/test_cli.py::TestCLIWithNetworkAndConfig::test_register": 8.239201958000024, - "tests/integration_tests/test_cli.py::TestCLIWithNetworkAndConfig::test_set_weights": 1.530555581999991, - "tests/integration_tests/test_cli.py::TestCLIWithNetworkAndConfig::test_stake": 5.834140792000014, - "tests/integration_tests/test_cli.py::TestCLIWithNetworkAndConfig::test_stake_with_all_hotkeys": 20.01785195800001, - "tests/integration_tests/test_cli.py::TestCLIWithNetworkAndConfig::test_stake_with_exclude_hotkeys_from_all": 18.001597874999987, - "tests/integration_tests/test_cli.py::TestCLIWithNetworkAndConfig::test_stake_with_multiple_hotkeys_max_stake": 19.03489229200001, - "tests/integration_tests/test_cli.py::TestCLIWithNetworkAndConfig::test_stake_with_multiple_hotkeys_max_stake_not_enough_balance": 18.013517250999996, - "tests/integration_tests/test_cli.py::TestCLIWithNetworkAndConfig::test_stake_with_single_hotkey_max_stake": 8.981573292000007, - "tests/integration_tests/test_cli.py::TestCLIWithNetworkAndConfig::test_stake_with_single_hotkey_max_stake_enough_stake": 9.215721084000009, - "tests/integration_tests/test_cli.py::TestCLIWithNetworkAndConfig::test_stake_with_single_hotkey_max_stake_not_enough_balance": 9.992123624000016, - "tests/integration_tests/test_cli.py::TestCLIWithNetworkAndConfig::test_stake_with_specific_hotkeys": 19.767345958999982, - "tests/integration_tests/test_cli.py::TestCLIWithNetworkAndConfig::test_transfer": 9.988371124999986, - "tests/integration_tests/test_cli.py::TestCLIWithNetworkAndConfig::test_transfer_not_enough_balance": 9.58771091600002, - "tests/integration_tests/test_cli.py::TestCLIWithNetworkAndConfig::test_undelegate_stake": 15.005209750000034, - "tests/integration_tests/test_cli.py::TestCLIWithNetworkAndConfig::test_unstake_with_all_hotkeys": 14.999142043000035, - "tests/integration_tests/test_cli.py::TestCLIWithNetworkAndConfig::test_unstake_with_exclude_hotkeys_from_all": 13.412810584000027, - "tests/integration_tests/test_cli.py::TestCLIWithNetworkAndConfig::test_unstake_with_multiple_hotkeys_max_stake": 16.98674204200003, - "tests/integration_tests/test_cli.py::TestCLIWithNetworkAndConfig::test_unstake_with_specific_hotkeys": 18.001071501000013, - "tests/integration_tests/test_cli.py::TestCLIWithNetworkUsingArgs::test_delegate": 17.015344749999997, - "tests/integration_tests/test_cli.py::TestCLIWithNetworkUsingArgs::test_list_delegates": 0.44300966700001254, - "tests/integration_tests/test_cli.py::TestCLIWithNetworkUsingArgs::test_list_subnets": 0.11281795900001157, - "tests/integration_tests/test_cli.py::TestCli::test_check_configs": 2.0494227909999996, - "tests/integration_tests/test_cli.py::TestCli::test_inspect": 7.586330416999999, - "tests/integration_tests/test_cli.py::TestCli::test_metagraph": 7.554449458, - "tests/integration_tests/test_cli.py::TestCli::test_new_coldkey": 2.0658513330000003, - "tests/integration_tests/test_cli.py::TestCli::test_new_hotkey": 2.029390042000001, - "tests/integration_tests/test_cli.py::TestCli::test_overview": 5.130012999000002, - "tests/integration_tests/test_cli.py::TestCli::test_regen_coldkey": 2.028690748999999, - "tests/integration_tests/test_cli.py::TestCli::test_regen_hotkey": 2.0244493760000006, - "tests/integration_tests/test_cli.py::TestCli::test_register": 7.166524375999998, - "tests/integration_tests/test_cli.py::TestCli::test_set_weights": 7.979190456999998, - "tests/integration_tests/test_cli.py::TestCli::test_stake": 7.4056144170000024, - "tests/integration_tests/test_cli_no_network.py::TestCLINoNetwork::test_btcli_help": 0.03574645799997711, - "tests/integration_tests/test_cli_no_network.py::TestCLINoNetwork::test_check_configs": 0.006742293000030486, - "tests/integration_tests/test_cli_no_network.py::TestCLINoNetwork::test_list": 0.005562831999981199, - "tests/integration_tests/test_cli_no_network.py::TestCLINoNetwork::test_list_no_wallet": 0.0018997909999995954, - "tests/integration_tests/test_cli_no_network.py::TestCLINoNetwork::test_new_coldkey": 0.0034439579999911984, - "tests/integration_tests/test_cli_no_network.py::TestCLINoNetwork::test_new_hotkey": 0.00243258299997251, - "tests/integration_tests/test_cli_no_network.py::TestCLINoNetwork::test_regen_coldkey": 0.003061874999957581, - "tests/integration_tests/test_cli_no_network.py::TestCLINoNetwork::test_regen_coldkeypub": 0.002017001000012897, - "tests/integration_tests/test_cli_no_network.py::TestCLINoNetwork::test_regen_hotkey": 0.002920959999983097, - "tests/integration_tests/test_cli_no_network.py::TestCLINoNetwork::test_register_cuda_use_cuda_flag": 1.1516492930000197, - "tests/integration_tests/test_dataset.py::test_change_data_size": 41.044700582999994, - "tests/integration_tests/test_dataset.py::test_construct_text_corpus": 20.38182166699997, - "tests/integration_tests/test_dataset.py::test_fail_IPFS_server": 10.506560500999981, - "tests/integration_tests/test_dataset.py::test_mock": 1.3165037909999988, - "tests/integration_tests/test_dataset.py::test_mock_function": 1.2944558340000007, - "tests/integration_tests/test_dataset.py::test_next": 12.471198208999997, - "tests/integration_tests/test_dataset_ipfs.py::test_text_dataset": 19.509593374999998, - "tests/integration_tests/test_dendrite.py::test_dend_del": 0.0002277910000039185, - "tests/integration_tests/test_dendrite.py::test_dendrite_backoff": 0.9906876250000067, - "tests/integration_tests/test_dendrite.py::test_dendrite_forward_image": 0.0009124579999877369, - "tests/integration_tests/test_dendrite.py::test_dendrite_forward_image_endpoint_len_error": 0.00021287399999891932, - "tests/integration_tests/test_dendrite.py::test_dendrite_forward_image_endpoint_type_error": 0.00016291600000073458, - "tests/integration_tests/test_dendrite.py::test_dendrite_forward_image_input_len_error": 0.00017533300000138752, - "tests/integration_tests/test_dendrite.py::test_dendrite_forward_image_mismatch_len_error": 0.00028954300000805233, - "tests/integration_tests/test_dendrite.py::test_dendrite_forward_image_non_list": 0.001766249999999303, - "tests/integration_tests/test_dendrite.py::test_dendrite_forward_image_shape_error": 0.00021279099999560458, - "tests/integration_tests/test_dendrite.py::test_dendrite_forward_image_type_error": 0.0002654999999975871, - "tests/integration_tests/test_dendrite.py::test_dendrite_forward_tensor": 0.0009247069999993585, - "tests/integration_tests/test_dendrite.py::test_dendrite_forward_tensor_endpoint_len_error": 0.00037887500002398156, - "tests/integration_tests/test_dendrite.py::test_dendrite_forward_tensor_endpoint_type_error": 0.0004299990000049547, - "tests/integration_tests/test_dendrite.py::test_dendrite_forward_tensor_input_len_error": 0.0006030419999945025, - "tests/integration_tests/test_dendrite.py::test_dendrite_forward_tensor_mismatch_len_error": 0.00018224999999816305, - "tests/integration_tests/test_dendrite.py::test_dendrite_forward_tensor_non_list": 0.0027512070000028643, - "tests/integration_tests/test_dendrite.py::test_dendrite_forward_tensor_shape_error": 0.00036791699999128014, - "tests/integration_tests/test_dendrite.py::test_dendrite_forward_tensor_type_error": 0.00017579100000020276, - "tests/integration_tests/test_dendrite.py::test_dendrite_forward_text": 0.0007503759999849535, - "tests/integration_tests/test_dendrite.py::test_dendrite_forward_text_endpoint_len_error": 0.0001501259999976412, - "tests/integration_tests/test_dendrite.py::test_dendrite_forward_text_endpoint_type_error": 0.00036879100001385723, - "tests/integration_tests/test_dendrite.py::test_dendrite_forward_text_endpoints_tensor": 0.00901104100000083, - "tests/integration_tests/test_dendrite.py::test_dendrite_forward_text_input_len_error": 0.00015474899999645686, - "tests/integration_tests/test_dendrite.py::test_dendrite_forward_text_list_string": 0.0022893340000003093, - "tests/integration_tests/test_dendrite.py::test_dendrite_forward_text_mismatch_len_error": 0.00021645799999703286, - "tests/integration_tests/test_dendrite.py::test_dendrite_forward_text_multiple_endpoints_tensor": 0.020752084000008608, - "tests/integration_tests/test_dendrite.py::test_dendrite_forward_text_multiple_endpoints_tensor_list": 0.009608791999994537, - "tests/integration_tests/test_dendrite.py::test_dendrite_forward_text_non_list": 0.0009244160000037027, - "tests/integration_tests/test_dendrite.py::test_dendrite_forward_text_shape_error": 0.00021299899999860372, - "tests/integration_tests/test_dendrite.py::test_dendrite_forward_text_singular": 0.013061000000000433, - "tests/integration_tests/test_dendrite.py::test_dendrite_forward_text_singular_no_batch_size": 0.0024163739999991662, - "tests/integration_tests/test_dendrite.py::test_dendrite_forward_text_singular_string": 0.0033444590000044627, - "tests/integration_tests/test_dendrite.py::test_dendrite_forward_text_tensor_list": 0.0016055410000035408, - "tests/integration_tests/test_dendrite.py::test_dendrite_forward_text_tensor_list_singular": 0.0028248760000053608, - "tests/integration_tests/test_dendrite.py::test_dendrite_forward_text_type_error": 0.00016716700000074525, - "tests/integration_tests/test_dendrite.py::test_dendrite_multiple": 6.5574445840000095, - "tests/integration_tests/test_dendrite.py::test_dendrite_to_df": 0.2788206240000122, - "tests/integration_tests/test_ipfs.py::test_ipfs_init": 0.0006287920000005442, - "tests/integration_tests/test_ipfs.py::test_retrieve_directory": 0.05891929199998458, - "tests/integration_tests/test_keyfile.py::TestKeyFiles::test_create": 0.1461402509999985, - "tests/integration_tests/test_keyfile.py::TestKeyFiles::test_decrypt_keyfile_data_legacy": 8.269536083000009, - "tests/integration_tests/test_keyfile.py::TestKeyFiles::test_keyfile_mock": 0.05605349999999021, - "tests/integration_tests/test_keyfile.py::TestKeyFiles::test_keyfile_mock_func": 0.04060141699999065, - "tests/integration_tests/test_keyfile.py::TestKeyFiles::test_legacy_coldkey": 0.06407849900000429, - "tests/integration_tests/test_keyfile.py::TestKeyFiles::test_overwriting": 0.061239708999998754, - "tests/integration_tests/test_keyfile.py::TestKeyFiles::test_user_interface": 0.05060941700000399, - "tests/integration_tests/test_keyfile.py::TestKeyFiles::test_validate_password": 0.02793304300000443, - "tests/integration_tests/test_metagraph.py::TestMetagraph::test_factory": 5.287162084000002, - "tests/integration_tests/test_metagraph.py::TestMetagraph::test_forward": 5.291731625000004, - "tests/integration_tests/test_metagraph.py::TestMetagraph::test_load_sync_save": 5.374808458000004, - "tests/integration_tests/test_metagraph.py::TestMetagraph::test_print_empty": 5.12950120699999, - "tests/integration_tests/test_metagraph.py::TestMetagraph::test_properties": 7.230609750000006, - "tests/integration_tests/test_metagraph.py::TestMetagraph::test_retrieve_cached_neurons": 67.308825001, - "tests/integration_tests/test_metagraph.py::TestMetagraph::test_state_dict": 9.186601499999995, - "tests/integration_tests/test_metagraph.py::TestMetagraph::test_sync": 9.395195751000003, - "tests/integration_tests/test_metagraph.py::TestMetagraph::test_to_dataframe": 9.125698542000002, - "tests/integration_tests/test_priority_thread_pool.py::test_priority_thread_pool": 0.0007628759999818158, - "tests/integration_tests/test_server_compression.py::CompressionTest::testUnaryUnary_ChannelGzipCompression_MulticallableUncompressed_ServerGzipCompression_ServerCallGzipCompression": 0.03409933400000398, - "tests/integration_tests/test_server_compression.py::CompressionTest::testUnaryUnary_ChannelGzipCompression_MulticallableUncompressed_ServerGzipCompression_ServerCallUncompressed": 0.019888499999993314, - "tests/integration_tests/test_server_compression.py::CompressionTest::testUnaryUnary_ChannelGzipCompression_MulticallableUncompressed_ServerUncompressed_ServerCallGzipCompression": 0.01714158299998303, - "tests/integration_tests/test_server_compression.py::CompressionTest::testUnaryUnary_ChannelGzipCompression_MulticallableUncompressed_ServerUncompressed_ServerCallUncompressed": 0.01679120800000078, - "tests/integration_tests/test_server_compression.py::CompressionTest::testUnaryUnary_ChannelUncompressed_MulticallableUncompressed_ServerGzipCompression_ServerCallGzipCompression": 0.014608248999991247, - "tests/integration_tests/test_server_compression.py::CompressionTest::testUnaryUnary_ChannelUncompressed_MulticallableUncompressed_ServerGzipCompression_ServerCallUncompressed": 0.012151373999984116, - "tests/integration_tests/test_server_compression.py::CompressionTest::testUnaryUnary_ChannelUncompressed_MulticallableUncompressed_ServerUncompressed_ServerCallGzipCompression": 0.011205498999999008, - "tests/integration_tests/test_server_compression.py::CompressionTest::testUnaryUnary_ChannelUncompressed_MulticallableUncompressed_ServerUncompressed_ServerCallUncompressed": 0.011530333999985487, - "tests/integration_tests/test_server_compression.py::test_compression": 0.00018870800001025145, - "tests/integration_tests/test_subtensor.py::TestSubtensor::test_connect_fail": 1.0364464580000146, - "tests/integration_tests/test_subtensor.py::TestSubtensor::test_connect_no_failure": 1.0296838750000035, - "tests/integration_tests/test_subtensor.py::TestSubtensor::test_connect_success": 1.4724152079999868, - "tests/integration_tests/test_subtensor.py::TestSubtensor::test_defaults_to_nobunaga": 1.6318341670000223, - "tests/integration_tests/test_subtensor.py::TestSubtensor::test_get_balance": 1.1495107500000046, - "tests/integration_tests/test_subtensor.py::TestSubtensor::test_get_balances": 1.9509755830000017, - "tests/integration_tests/test_subtensor.py::TestSubtensor::test_get_current_block": 1.1489556670000098, - "tests/integration_tests/test_subtensor.py::TestSubtensor::test_get_uid_for_hotkey": 1.3765501669999907, - "tests/integration_tests/test_subtensor.py::TestSubtensor::test_hotkey_register": 1.2495805830000108, - "tests/integration_tests/test_subtensor.py::TestSubtensor::test_hotkey_register_failed": 1.0935808750000007, - "tests/integration_tests/test_subtensor.py::TestSubtensor::test_network_overrides": 1.0013002919999963, - "tests/integration_tests/test_subtensor.py::TestSubtensor::test_networks": 0.8798416250000116, - "tests/integration_tests/test_subtensor.py::TestSubtensor::test_neurons": 1.4288173339999872, - "tests/integration_tests/test_subtensor.py::TestSubtensor::test_registration_failed": 0.958876250000003, - "tests/integration_tests/test_subtensor.py::TestSubtensor::test_registration_multiprocessed_already_registered": 3.464545665000003, - "tests/integration_tests/test_subtensor.py::TestSubtensor::test_registration_partly_failed": 7.775373124999987, - "tests/integration_tests/test_subtensor.py::TestSubtensor::test_set_weights": 1.1819839159999788, - "tests/integration_tests/test_subtensor.py::TestSubtensor::test_set_weights_failed": 1.2720431250000104, - "tests/integration_tests/test_subtensor.py::TestSubtensor::test_set_weights_inclusion": 1.1820305410000032, - "tests/integration_tests/test_subtensor.py::TestSubtensor::test_stake": 1.6801819169999845, - "tests/integration_tests/test_subtensor.py::TestSubtensor::test_stake_failed": 1.5585160840000043, - "tests/integration_tests/test_subtensor.py::TestSubtensor::test_stake_inclusion": 1.7288922910000082, - "tests/integration_tests/test_subtensor.py::TestSubtensor::test_transfer": 1.7601447920000055, - "tests/integration_tests/test_subtensor.py::TestSubtensor::test_transfer_failed": 1.5735664160000056, - "tests/integration_tests/test_subtensor.py::TestSubtensor::test_transfer_inclusion": 1.9037362089999874, - "tests/integration_tests/test_subtensor.py::TestSubtensor::test_unstake": 2.337488542000017, - "tests/integration_tests/test_subtensor.py::TestSubtensor::test_unstake_failed": 1.4223199169999816, - "tests/integration_tests/test_subtensor.py::TestSubtensor::test_unstake_inclusion": 2.3442849159999923, - "tests/integration_tests/test_subtensor.py::test_create_from_config": 7.217087957999979, - "tests/integration_tests/test_subtensor.py::test_create_mock_process": 4.051651957999994, - "tests/integration_tests/test_subtensor.py::test_mock_from_mock_arg": 7.136701001000006, - "tests/integration_tests/test_subtensor.py::test_mock_from_network_arg": 9.400860332999997, - "tests/integration_tests/test_subtensor.py::test_subtensor_mock": 7.160256124999989, - "tests/integration_tests/test_subtensor.py::test_subtensor_mock_functions": 5.35605912500003, - "tests/integration_tests/test_subtensor.py::test_two_subtensor_ownership": 9.281600166999993, - "tests/integration_tests/test_wallet.py::test_create_keys": 0.010658041999960233, - "tests/integration_tests/test_wallet.py::test_create_wallet": 0.008245334000037019, - "tests/integration_tests/test_wallet.py::test_wallet_add_stake": 0.1313672499999825, - "tests/integration_tests/test_wallet.py::test_wallet_mnemonic_create": 0.01866858300000729, - "tests/integration_tests/test_wallet.py::test_wallet_mock": 0.003017958000015142, - "tests/integration_tests/test_wallet.py::test_wallet_mock_from_config": 0.0029224580000004607, - "tests/integration_tests/test_wallet.py::test_wallet_mock_from_func": 0.002787750000010192, - "tests/integration_tests/test_wallet.py::test_wallet_mock_from_name": 0.002862207999996258, - "tests/integration_tests/test_wallet.py::test_wallet_remove_stake": 0.13184170799999606, - "tests/integration_tests/test_wallet.py::test_wallet_seed_create": 0.005926000000016529, - "tests/integration_tests/test_wallet.py::test_wallet_transfer": 0.9075257490000155, - "tests/integration_tests/test_wallet.py::test_wallet_uri": 0.005230124999997088, - "tests/unit_tests/bittensor_tests/test_axon.py::TestExternalAxon::test_external_ip_not_set_dont_use_internal_ip": 0.004818041999996581, - "tests/unit_tests/bittensor_tests/test_axon.py::TestExternalAxon::test_external_ip_port_set_full_address_internal": 0.004437291000002119, - "tests/unit_tests/bittensor_tests/test_axon.py::TestExternalAxon::test_external_ip_set_full_address_internal": 0.0060892500000022665, - "tests/unit_tests/bittensor_tests/test_axon.py::TestExternalAxon::test_external_port_not_set_use_internal_port": 0.003459290999998643, - "tests/unit_tests/bittensor_tests/test_axon.py::TestExternalAxon::test_external_port_set_full_address_internal": 0.004544250000002137, - "tests/unit_tests/bittensor_tests/test_axon.py::test_axon_is_destroyed": 0.019335791999999685, - "tests/unit_tests/bittensor_tests/test_axon.py::test_backward_causal_lm_next_shape_error": 0.0011359579999998815, - "tests/unit_tests/bittensor_tests/test_axon.py::test_backward_causal_lm_shape_error": 0.001475749999999998, - "tests/unit_tests/bittensor_tests/test_axon.py::test_backward_deserialization_error": 0.0008057919999995278, - "tests/unit_tests/bittensor_tests/test_axon.py::test_backward_grad_inputs_shape_error": 0.0003788759999991953, - "tests/unit_tests/bittensor_tests/test_axon.py::test_backward_grads_shape_error": 0.0010970830000003318, - "tests/unit_tests/bittensor_tests/test_axon.py::test_backward_image_shape_error": 0.00037495799999476276, - "tests/unit_tests/bittensor_tests/test_axon.py::test_backward_invalid_request": 0.0007961649999996823, - "tests/unit_tests/bittensor_tests/test_axon.py::test_backward_last_hidden_shape_error": 0.0008102079999998679, - "tests/unit_tests/bittensor_tests/test_axon.py::test_backward_response_empty_error": 0.000418541999991362, - "tests/unit_tests/bittensor_tests/test_axon.py::test_backward_response_exception": 0.0012296260000002057, - "tests/unit_tests/bittensor_tests/test_axon.py::test_backward_response_not_implemented": 0.0006552919999904816, - "tests/unit_tests/bittensor_tests/test_axon.py::test_backward_response_serialization_error": 0.0004681670000223903, - "tests/unit_tests/bittensor_tests/test_axon.py::test_backward_response_success": 0.00056016599999964, - "tests/unit_tests/bittensor_tests/test_axon.py::test_backward_response_success_causal_lm": 0.004192626000000033, - "tests/unit_tests/bittensor_tests/test_axon.py::test_backward_response_success_causal_lm_next": 0.0030783750000002996, - "tests/unit_tests/bittensor_tests/test_axon.py::test_backward_response_success_hidden": 0.0011742500000004874, - "tests/unit_tests/bittensor_tests/test_axon.py::test_backward_response_success_image": 0.8819560840000094, - "tests/unit_tests/bittensor_tests/test_axon.py::test_backward_response_success_text": 0.0009965420000099812, - "tests/unit_tests/bittensor_tests/test_axon.py::test_backward_response_success_text_priority": 0.011433625000002223, - "tests/unit_tests/bittensor_tests/test_axon.py::test_backward_response_timeout": 0.0012938339999997162, - "tests/unit_tests/bittensor_tests/test_axon.py::test_backward_seq_2_seq_shape_error": 0.0010171240000000914, - "tests/unit_tests/bittensor_tests/test_axon.py::test_backward_tensor_shape_error": 0.0003756250000037653, - "tests/unit_tests/bittensor_tests/test_axon.py::test_backward_text_shape_error": 0.0005198759999984759, - "tests/unit_tests/bittensor_tests/test_axon.py::test_forward_batch_shape_error": 0.0009045010000003906, - "tests/unit_tests/bittensor_tests/test_axon.py::test_forward_causal_lm_next_state_exception": 0.0010675840000002879, - "tests/unit_tests/bittensor_tests/test_axon.py::test_forward_causal_lm_state_exception": 0.0010968330000000748, - "tests/unit_tests/bittensor_tests/test_axon.py::test_forward_causallm_shape_error": 0.0053829169999999316, - "tests/unit_tests/bittensor_tests/test_axon.py::test_forward_causallm_success": 0.00776383399999947, - "tests/unit_tests/bittensor_tests/test_axon.py::test_forward_causallmnext_shape_error": 0.0009754579999996515, - "tests/unit_tests/bittensor_tests/test_axon.py::test_forward_causallmnext_success": 0.008058166999999727, - "tests/unit_tests/bittensor_tests/test_axon.py::test_forward_deserialization_empty": 0.0017824590000001805, - "tests/unit_tests/bittensor_tests/test_axon.py::test_forward_deserialization_error": 0.0006239579999998135, - "tests/unit_tests/bittensor_tests/test_axon.py::test_forward_empty_request": 0.0006896670000000604, - "tests/unit_tests/bittensor_tests/test_axon.py::test_forward_image_shape_error": 0.0004079989999894451, - "tests/unit_tests/bittensor_tests/test_axon.py::test_forward_joint_faulty_synapse": 0.010429708999999843, - "tests/unit_tests/bittensor_tests/test_axon.py::test_forward_joint_missing_synapse": 0.01298628999999929, - "tests/unit_tests/bittensor_tests/test_axon.py::test_forward_joint_success": 0.008827624999999895, - "tests/unit_tests/bittensor_tests/test_axon.py::test_forward_last_hidden_shape_error": 0.0006645829999993857, - "tests/unit_tests/bittensor_tests/test_axon.py::test_forward_last_hidden_state_exception": 0.0010538749999997599, - "tests/unit_tests/bittensor_tests/test_axon.py::test_forward_last_hidden_success": 0.002595915999999754, - "tests/unit_tests/bittensor_tests/test_axon.py::test_forward_not_implemented": 0.0027110420000004964, - "tests/unit_tests/bittensor_tests/test_axon.py::test_forward_priority_2nd_request_timeout": 3.0165430829999984, - "tests/unit_tests/bittensor_tests/test_axon.py::test_forward_priority_timeout": 27.015091999, - "tests/unit_tests/bittensor_tests/test_axon.py::test_forward_response_deserialization_error": 0.0012857499999996413, - "tests/unit_tests/bittensor_tests/test_axon.py::test_forward_seq_2_seq_shape_error": 0.0008198750000003585, - "tests/unit_tests/bittensor_tests/test_axon.py::test_forward_seq_2_seq_state_exception": 0.0009729579999997462, - "tests/unit_tests/bittensor_tests/test_axon.py::test_forward_seq_2_seq_success": 0.0012621250000002249, - "tests/unit_tests/bittensor_tests/test_axon.py::test_forward_seq_shape_error": 0.0008149159999994993, - "tests/unit_tests/bittensor_tests/test_axon.py::test_forward_tensor_exception": 0.0005099600000022519, - "tests/unit_tests/bittensor_tests/test_axon.py::test_forward_tensor_shape_error": 0.00040729200000555466, - "tests/unit_tests/bittensor_tests/test_axon.py::test_forward_tensor_success": 0.0005274170000006961, - "tests/unit_tests/bittensor_tests/test_axon.py::test_forward_tensor_success_image": 0.003017249999999194, - "tests/unit_tests/bittensor_tests/test_axon.py::test_forward_tensor_success_priority": 0.003147583000000509, - "tests/unit_tests/bittensor_tests/test_axon.py::test_forward_tensor_timeout": 0.00048729200000252604, - "tests/unit_tests/bittensor_tests/test_axon.py::test_forward_text_shape_error": 0.00041154199999482444, - "tests/unit_tests/bittensor_tests/test_axon.py::test_forward_timeout": 0.002071332999999953, - "tests/unit_tests/bittensor_tests/test_axon.py::test_forward_unknown_error": 0.0009715420000002695, - "tests/unit_tests/bittensor_tests/test_axon.py::test_forward_wandb": 0.0008447910000057846, - "tests/unit_tests/bittensor_tests/test_axon.py::test_grpc_backward_fails": 0.0058421250000009195, - "tests/unit_tests/bittensor_tests/test_axon.py::test_grpc_backward_works": 0.020733750000005102, - "tests/unit_tests/bittensor_tests/test_axon.py::test_grpc_forward_fails": 0.004570915999998704, - "tests/unit_tests/bittensor_tests/test_axon.py::test_grpc_forward_works": 0.024784540999995386, - "tests/unit_tests/bittensor_tests/test_axon.py::test_grpc_forward_works_deflate": 0.003892916000026503, - "tests/unit_tests/bittensor_tests/test_axon.py::test_grpc_forward_works_gzip": 0.004013417999999547, - "tests/unit_tests/bittensor_tests/test_axon.py::test_sign": 0.0013777489999853287, - "tests/unit_tests/bittensor_tests/test_axon.py::test_sign_v1": 0.000994751000000349, - "tests/unit_tests/bittensor_tests/test_axon.py::test_sign_v2": 0.001789041999999963, - "tests/unit_tests/bittensor_tests/test_balance.py::TestBalance::test_balance_add": 0.17875808300000529, - "tests/unit_tests/bittensor_tests/test_balance.py::TestBalance::test_balance_add_invalid_type": 0.12623791600000045, - "tests/unit_tests/bittensor_tests/test_balance.py::TestBalance::test_balance_add_other_not_balance": 0.1511739589999994, - "tests/unit_tests/bittensor_tests/test_balance.py::TestBalance::test_balance_div_invalid_type": 0.11404720799999968, - "tests/unit_tests/bittensor_tests/test_balance.py::TestBalance::test_balance_eq_invalid_type": 0.11460812500000017, - "tests/unit_tests/bittensor_tests/test_balance.py::TestBalance::test_balance_eq_other_not_balance": 0.10987458300000075, - "tests/unit_tests/bittensor_tests/test_balance.py::TestBalance::test_balance_floordiv": 0.15771337400000007, - "tests/unit_tests/bittensor_tests/test_balance.py::TestBalance::test_balance_floordiv_other_not_balance": 0.15567158399999848, - "tests/unit_tests/bittensor_tests/test_balance.py::TestBalance::test_balance_init": 0.1151449600000003, - "tests/unit_tests/bittensor_tests/test_balance.py::TestBalance::test_balance_init_from_invalid_value": 0.00037533299999914504, - "tests/unit_tests/bittensor_tests/test_balance.py::TestBalance::test_balance_mul": 0.14384608299999968, - "tests/unit_tests/bittensor_tests/test_balance.py::TestBalance::test_balance_mul_invalid_type": 0.1816125840000007, - "tests/unit_tests/bittensor_tests/test_balance.py::TestBalance::test_balance_mul_other_not_balance": 0.154648624, - "tests/unit_tests/bittensor_tests/test_balance.py::TestBalance::test_balance_neq_none": 0.11336362499999897, - "tests/unit_tests/bittensor_tests/test_balance.py::TestBalance::test_balance_not_eq_none": 0.11257045699999946, - "tests/unit_tests/bittensor_tests/test_balance.py::TestBalance::test_balance_radd_other_not_balance": 0.14504054200000116, - "tests/unit_tests/bittensor_tests/test_balance.py::TestBalance::test_balance_rfloordiv_other_not_balance": 0.1691772509999998, - "tests/unit_tests/bittensor_tests/test_balance.py::TestBalance::test_balance_rmul_other_not_balance": 0.1413522079999998, - "tests/unit_tests/bittensor_tests/test_balance.py::TestBalance::test_balance_rsub_other_not_balance": 0.13983612500000042, - "tests/unit_tests/bittensor_tests/test_balance.py::TestBalance::test_balance_rtruediv_other_not_balance": 0.17475975000000066, - "tests/unit_tests/bittensor_tests/test_balance.py::TestBalance::test_balance_sub": 0.14165345900000048, - "tests/unit_tests/bittensor_tests/test_balance.py::TestBalance::test_balance_sub_invalid_type": 0.11540512599999975, - "tests/unit_tests/bittensor_tests/test_balance.py::TestBalance::test_balance_sub_other_not_balance": 0.14228754200000004, - "tests/unit_tests/bittensor_tests/test_balance.py::TestBalance::test_balance_truediv": 0.1629649990000006, - "tests/unit_tests/bittensor_tests/test_balance.py::TestBalance::test_balance_truediv_other_not_balance": 0.1927186669999994, - "tests/unit_tests/bittensor_tests/test_config.py::test_loaded_config": 0.00042041699999995075, - "tests/unit_tests/bittensor_tests/test_config.py::test_prefix": 0.7480909579999997, - "tests/unit_tests/bittensor_tests/test_config.py::test_strict": 0.004024459000000924, - "tests/unit_tests/bittensor_tests/test_config.py::test_to_defaults": 0.0007196250000003346, - "tests/unit_tests/bittensor_tests/test_endpoint.py::test_create_endpoint": 0.002782958999999252, - "tests/unit_tests/bittensor_tests/test_endpoint.py::test_endpoint_fails_checks": 0.0008919580000004146, - "tests/unit_tests/bittensor_tests/test_endpoint.py::test_endpoint_to_tensor": 0.0015022499999997052, - "tests/unit_tests/bittensor_tests/test_endpoint.py::test_thrash_equality_of_endpoint": 0.5255487069999987, - "tests/unit_tests/bittensor_tests/test_forward_backward.py::test_axon_receptor_forward_works": 0.01259549999999976, - "tests/unit_tests/bittensor_tests/test_forward_backward.py::test_dendrite_backward": 0.01523300000000205, - "tests/unit_tests/bittensor_tests/test_forward_backward.py::test_dendrite_backward_large": 0.0015242090000011643, - "tests/unit_tests/bittensor_tests/test_forward_backward.py::test_dendrite_backward_multiple": 0.0015146669999985818, - "tests/unit_tests/bittensor_tests/test_forward_backward.py::test_dendrite_backward_no_grad": 0.0016201259999988338, - "tests/unit_tests/bittensor_tests/test_forward_backward.py::test_dendrite_call_time": 0.028703458999999043, - "tests/unit_tests/bittensor_tests/test_forward_backward.py::test_dendrite_del": 0.00031962500000304317, - "tests/unit_tests/bittensor_tests/test_forward_backward.py::test_dendrite_forward_causal_lm_next_shape_error": 0.00042037599999744657, - "tests/unit_tests/bittensor_tests/test_forward_backward.py::test_dendrite_forward_causal_lm_shape_error": 0.0004933749999977977, - "tests/unit_tests/bittensor_tests/test_forward_backward.py::test_dendrite_forward_image": 0.0005188330000152064, - "tests/unit_tests/bittensor_tests/test_forward_backward.py::test_dendrite_forward_image_shape_error": 0.00016254099999457594, - "tests/unit_tests/bittensor_tests/test_forward_backward.py::test_dendrite_forward_last_hidden_shape_error": 0.0004425839999999681, - "tests/unit_tests/bittensor_tests/test_forward_backward.py::test_dendrite_forward_seq_2_seq_shape_error": 0.00036766699999901675, - "tests/unit_tests/bittensor_tests/test_forward_backward.py::test_dendrite_forward_tensor": 0.0005102509999801441, - "tests/unit_tests/bittensor_tests/test_forward_backward.py::test_dendrite_forward_tensor_pass_through_image": 0.0018767509999975118, - "tests/unit_tests/bittensor_tests/test_forward_backward.py::test_dendrite_forward_tensor_pass_through_tensor": 0.0004976669999905425, - "tests/unit_tests/bittensor_tests/test_forward_backward.py::test_dendrite_forward_tensor_pass_through_text": 0.0004831669999987298, - "tests/unit_tests/bittensor_tests/test_forward_backward.py::test_dendrite_forward_tensor_pass_through_text_causal_lm": 0.001402416999999545, - "tests/unit_tests/bittensor_tests/test_forward_backward.py::test_dendrite_forward_tensor_pass_through_text_causal_lm_next": 0.0013554990000006484, - "tests/unit_tests/bittensor_tests/test_forward_backward.py::test_dendrite_forward_tensor_pass_through_text_last_hidden": 0.0010996670000000819, - "tests/unit_tests/bittensor_tests/test_forward_backward.py::test_dendrite_forward_tensor_pass_through_text_seq_2_seq": 0.0014387920000000776, - "tests/unit_tests/bittensor_tests/test_forward_backward.py::test_dendrite_forward_tensor_shape_error": 0.00023812399999201261, - "tests/unit_tests/bittensor_tests/test_forward_backward.py::test_dendrite_forward_tensor_stack": 0.0021737919999935684, - "tests/unit_tests/bittensor_tests/test_forward_backward.py::test_dendrite_forward_text": 0.0012069990000185271, - "tests/unit_tests/bittensor_tests/test_forward_backward.py::test_dendrite_forward_text_causal_lm": 0.007381167000000133, - "tests/unit_tests/bittensor_tests/test_forward_backward.py::test_dendrite_forward_text_causal_lm_next": 0.0024072079999992724, - "tests/unit_tests/bittensor_tests/test_forward_backward.py::test_dendrite_forward_text_last_hidden": 0.0012834170000015632, - "tests/unit_tests/bittensor_tests/test_forward_backward.py::test_dendrite_forward_text_seq_2_seq": 0.0010211249999976246, - "tests/unit_tests/bittensor_tests/test_forward_backward.py::test_dendrite_forward_text_shape_error": 0.00015795900002046892, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_axon_receptor_connection_backward_timeout": 0.003753625000001648, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_axon_receptor_connection_backward_unauthenticated": 0.0038261260000211905, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_axon_receptor_connection_backward_unimplemented": 0.004116499999994971, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_axon_receptor_connection_backward_works": 0.004269708000009587, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_axon_receptor_connection_forward_timeout": 0.00417120800000248, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_axon_receptor_connection_forward_unauthenticated": 0.00416258399999947, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_axon_receptor_connection_forward_unimplemented": 0.003970291999991105, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_axon_receptor_connection_forward_works": 0.0044996669999903816, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_dummy_backward": 0.0008820009999936929, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_dummy_forward": 0.0005081250000102955, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_print": 0.00022841700000242326, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_receptor_backward_endpoint_exception": 0.0004099159999952917, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_receptor_backward_exception": 0.0005865840000041089, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_receptor_backward_no_return": 0.0005529990000070484, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_receptor_backward_request_serialize_error": 0.00021162499999149986, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_receptor_backward_stub_exception": 0.00027399999999033753, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_receptor_forward_endpoint_exception": 0.0005279989999849022, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_receptor_forward_exception": 0.0006141250000126774, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_receptor_forward_no_return": 0.0005615430000034394, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_receptor_forward_request_serialize_error": 0.00025729200000057517, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_receptor_forward_stub_exception": 0.00030129200001738354, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_receptor_neuron_backward_empty_response": 0.0007327919999937649, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_receptor_neuron_grads_misshape": 0.0005370420000048171, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_receptor_neuron_image": 0.0004494580000056203, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_receptor_neuron_image_backward": 0.0006862079999905291, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_receptor_neuron_mock_server": 0.0011010420000161503, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_receptor_neuron_mock_server_backward": 0.0006962920000006534, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_receptor_neuron_mock_server_deserialization_error": 0.000529290000017113, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_receptor_neuron_mock_server_deserialization_error_backward": 0.0006028330000020787, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_receptor_neuron_mock_server_shape_error": 0.0005716670000026625, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_receptor_neuron_mock_server_shape_error_backward": 0.0005199590000017906, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_receptor_neuron_request_empty": 0.00017691699999033972, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_receptor_neuron_request_empty_backward": 0.0003473329999934549, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_receptor_neuron_serve_empty": 0.0004373749999899701, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_receptor_neuron_serve_timeout": 0.0006042509999844015, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_receptor_neuron_server_response_with_nans": 0.0006599999999963302, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_receptor_neuron_server_response_with_nans_backward": 0.000678000000007728, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_receptor_neuron_tensor": 0.0005636240000086445, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_receptor_neuron_tensor_backward": 0.0007858740000017406, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_receptor_neuron_text": 0.000911498999968785, - "tests/unit_tests/bittensor_tests/test_receptor.py::test_receptor_neuron_text_backward": 0.0017325409999955355, - "tests/unit_tests/bittensor_tests/test_receptor_pool.py::test_receptor_pool_backward": 0.0006532499999991614, - "tests/unit_tests/bittensor_tests/test_receptor_pool.py::test_receptor_pool_backward_hang": 0.0014730420000006461, - "tests/unit_tests/bittensor_tests/test_receptor_pool.py::test_receptor_pool_forward": 0.0008868330000098013, - "tests/unit_tests/bittensor_tests/test_receptor_pool.py::test_receptor_pool_forward_hang": 0.0032055849999892416, - "tests/unit_tests/bittensor_tests/test_receptor_pool.py::test_receptor_pool_max_workers_forward": 1.1926470410000007, - "tests/unit_tests/bittensor_tests/test_serialization.py::TestCMPSerialization::test_bittensor_dtype_to_torch_dtype": 0.000389959999992584, - "tests/unit_tests/bittensor_tests/test_serialization.py::TestCMPSerialization::test_deserialization_object_type_exception": 0.0005278330000066944, - "tests/unit_tests/bittensor_tests/test_serialization.py::TestCMPSerialization::test_serialize": 0.0012914579999829812, - "tests/unit_tests/bittensor_tests/test_serialization.py::TestCMPSerialization::test_serialize_deserialize_image": 0.00046487600000943985, - "tests/unit_tests/bittensor_tests/test_serialization.py::TestCMPSerialization::test_serialize_deserialize_tensor": 0.00040574999999876127, - "tests/unit_tests/bittensor_tests/test_serialization.py::TestCMPSerialization::test_serialize_deserialize_text": 0.0006660829999987072, - "tests/unit_tests/bittensor_tests/test_serialization.py::TestCMPSerialization::test_serialize_object_type_exception": 0.000402582000006646, - "tests/unit_tests/bittensor_tests/test_serialization.py::TestSerialization::test_bittensor_dtype_to_torch_dtype": 0.0007596669999969663, - "tests/unit_tests/bittensor_tests/test_serialization.py::TestSerialization::test_deserialization_object_type_exception": 0.0006222919999885335, - "tests/unit_tests/bittensor_tests/test_serialization.py::TestSerialization::test_serialize": 0.001339792999999645, - "tests/unit_tests/bittensor_tests/test_serialization.py::TestSerialization::test_serialize_deserialize_image": 0.0004825000000039381, - "tests/unit_tests/bittensor_tests/test_serialization.py::TestSerialization::test_serialize_deserialize_tensor": 0.0004521259999847871, - "tests/unit_tests/bittensor_tests/test_serialization.py::TestSerialization::test_serialize_deserialize_text": 0.0005249179999964326, - "tests/unit_tests/bittensor_tests/test_serialization.py::TestSerialization::test_serialize_object_type_exception": 0.000582751000010262, - "tests/unit_tests/bittensor_tests/test_wandb.py::test_axon": 0.002615875000003598, - "tests/unit_tests/bittensor_tests/test_wandb.py::test_dendrite": 0.15170525099999566, - "tests/unit_tests/bittensor_tests/test_wandb.py::test_metagraph": 5.170249042000023, - "tests/unit_tests/bittensor_tests/utils/test_network_utils.py::test_get_external_ip": 0.14374883400000726, - "tests/unit_tests/bittensor_tests/utils/test_network_utils.py::test_get_external_ip_os_broken": 0.1401760410000179, - "tests/unit_tests/bittensor_tests/utils/test_network_utils.py::test_get_external_ip_os_request_urllib_broken": 0.001625458999995999, - "tests/unit_tests/bittensor_tests/utils/test_network_utils.py::test_int_to_ip4_max": 0.0001705419999922242, - "tests/unit_tests/bittensor_tests/utils/test_network_utils.py::test_int_to_ip6_max": 0.000238166000016804, - "tests/unit_tests/bittensor_tests/utils/test_network_utils.py::test_int_to_ip6_overflow": 0.0001579170000098884, - "tests/unit_tests/bittensor_tests/utils/test_network_utils.py::test_int_to_ip6_range": 0.000235292999988701, - "tests/unit_tests/bittensor_tests/utils/test_network_utils.py::test_int_to_ip6_underflow": 0.00015141700001208847, - "tests/unit_tests/bittensor_tests/utils/test_network_utils.py::test_int_to_ip6_zero": 0.00018679199999382945, - "tests/unit_tests/bittensor_tests/utils/test_network_utils.py::test_int_to_ip_range": 0.0002124999999892907, - "tests/unit_tests/bittensor_tests/utils/test_network_utils.py::test_int_to_ip_zero": 0.0004066669999929218, - "tests/unit_tests/bittensor_tests/utils/test_network_utils.py::test_upnpc_create_port_map": 0.004047126000003232, - "tests/unit_tests/bittensor_tests/utils/test_utils.py::test_create_seal_hash": 0.00022616600000446851, - "tests/unit_tests/bittensor_tests/utils/test_utils.py::test_hex_bytes_to_u8_list": 0.00022791700000368564, - "tests/unit_tests/bittensor_tests/utils/test_utils.py::test_seal_meets_difficulty": 0.00021983399999214726, - "tests/unit_tests/bittensor_tests/utils/test_utils.py::test_solve_for_difficulty": 0.0002950839999869004, - "tests/unit_tests/bittensor_tests/utils/test_utils.py::test_solve_for_difficulty_fast": 4.0171239999999955, - "tests/unit_tests/bittensor_tests/utils/test_utils.py::test_solve_for_difficulty_fast_missing_hash": 3.7956513339999987, - "tests/unit_tests/bittensor_tests/utils/test_utils.py::test_solve_for_difficulty_fast_registered_already": 9.721047041000006, - "tests/unit_tests/bittensor_tests/utils/test_utils.py::test_u8_list_to_hex": 0.0002779989999908139, - "tests/unit_tests/bittensor_tests/utils/test_utils.py::test_unbiased_topk": 0.02680033300001128, - "tests/unit_tests/bittensor_tests/utils/test_weight_utils.py::test_convert_weight_and_uids": 0.0009547919999874921, - "tests/unit_tests/bittensor_tests/utils/test_weight_utils.py::test_normalize_with_min_max": 0.0009058340000080989, - "tests/unit_tests/config_tests/test_sample_config.py::test_run_advanced_server_config": 0.0013850420000238728, - "tests/unit_tests/config_tests/test_sample_config.py::test_run_core_validator_config": 0.0013664579999925763, - "tests/unit_tests/config_tests/test_sample_config.py::test_run_template_miner_config": 0.0015359170000124323, - "tests/unit_tests/config_tests/test_sample_config.py::test_run_template_server_config": 0.0014079590000051212, - "tests/unit_tests/subtensor/interface/test_keypair.py::KeyPairTestCase::test_create_ed25519_keypair": 0.0016246670000015229, - "tests/unit_tests/subtensor/interface/test_keypair.py::KeyPairTestCase::test_create_keypair_from_private_key": 0.00024491700000339733, - "tests/unit_tests/subtensor/interface/test_keypair.py::KeyPairTestCase::test_create_sr25519_keypair": 0.0013777499999889642, - "tests/unit_tests/subtensor/interface/test_keypair.py::KeyPairTestCase::test_generate_mnemonic": 0.00021116599998549646, - "tests/unit_tests/subtensor/interface/test_keypair.py::KeyPairTestCase::test_hdkd_default_to_dev_mnemonic": 0.001469708999991326, - "tests/unit_tests/subtensor/interface/test_keypair.py::KeyPairTestCase::test_hdkd_hard_path": 0.0015190410000087695, - "tests/unit_tests/subtensor/interface/test_keypair.py::KeyPairTestCase::test_hdkd_nested_hard_soft_path": 0.0014302510000021584, - "tests/unit_tests/subtensor/interface/test_keypair.py::KeyPairTestCase::test_hdkd_nested_soft_hard_path": 0.0013964179999987891, - "tests/unit_tests/subtensor/interface/test_keypair.py::KeyPairTestCase::test_hdkd_path_gt_32_bytes": 0.0013550420000143504, - "tests/unit_tests/subtensor/interface/test_keypair.py::KeyPairTestCase::test_hdkd_soft_path": 0.0015772919999932355, - "tests/unit_tests/subtensor/interface/test_keypair.py::KeyPairTestCase::test_hdkd_unsupported_password": 0.00021200000000476393, - "tests/unit_tests/subtensor/interface/test_keypair.py::KeyPairTestCase::test_incorrect_private_key_length_sr25519": 0.00021808399999656558, - "tests/unit_tests/subtensor/interface/test_keypair.py::KeyPairTestCase::test_incorrect_public_key": 0.00018979099999683058, - "tests/unit_tests/subtensor/interface/test_keypair.py::KeyPairTestCase::test_invalid_mnemic": 0.00020970699999622866, - "tests/unit_tests/subtensor/interface/test_keypair.py::KeyPairTestCase::test_only_provide_public_key": 0.0002024599999970178, - "tests/unit_tests/subtensor/interface/test_keypair.py::KeyPairTestCase::test_only_provide_ss58_address": 0.00023120800000242525, - "tests/unit_tests/subtensor/interface/test_keypair.py::KeyPairTestCase::test_provide_no_ss58_address_and_public_key": 0.0001879160000015645, - "tests/unit_tests/subtensor/interface/test_keypair.py::KeyPairTestCase::test_sign_and_verify": 0.0013652090000135786, - "tests/unit_tests/subtensor/interface/test_keypair.py::KeyPairTestCase::test_sign_and_verify_ed25519": 0.001402334000005112, - "tests/unit_tests/subtensor/interface/test_keypair.py::KeyPairTestCase::test_sign_and_verify_hex_data": 0.0013810000000091804, - "tests/unit_tests/subtensor/interface/test_keypair.py::KeyPairTestCase::test_sign_and_verify_incorrect_signature": 0.0014586670000085178, - "tests/unit_tests/subtensor/interface/test_keypair.py::KeyPairTestCase::test_sign_and_verify_invalid_message": 0.0015113760000105003, - "tests/unit_tests/subtensor/interface/test_keypair.py::KeyPairTestCase::test_sign_and_verify_invalid_signature": 0.0014469590000061316, - "tests/unit_tests/subtensor/interface/test_keypair.py::KeyPairTestCase::test_sign_and_verify_invalid_signature_ed25519": 0.0014761660000033316, - "tests/unit_tests/subtensor/interface/test_keypair.py::KeyPairTestCase::test_sign_and_verify_scale_bytes": 0.0015354580000064288, - "tests/unit_tests/subtensor/interface/test_keypair.py::KeyPairTestCase::test_sign_missing_private_key": 0.00026504300001306547, - "tests/unit_tests/subtensor/interface/test_keypair.py::KeyPairTestCase::test_sign_unsupported_crypto_type": 0.002111874999982888, - "tests/unit_tests/subtensor/interface/test_keypair.py::KeyPairTestCase::test_unsupport_crypto_type": 0.0008027930000054084, - "tests/unit_tests/subtensor/interface/test_keypair.py::KeyPairTestCase::test_verify_unsupported_crypto_type": 0.0008987899999937099 ->>>>>>> Add raw spec for local test and new bins (#1243) } \ No newline at end of file diff --git a/VERSION b/VERSION index acf69b48b8..831446cbd2 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -5.1.0 \ No newline at end of file +5.1.0 diff --git a/bittensor/_cli/commands/run.py b/bittensor/_cli/commands/run.py new file mode 100644 index 0000000000..c2cf2ebea7 --- /dev/null +++ b/bittensor/_cli/commands/run.py @@ -0,0 +1,151 @@ +# The MIT License (MIT) +# Copyright © 2021 Yuma Rao + +# Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated +# documentation files (the “Software”), to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, +# and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in all copies or substantial portions of +# the Software. + +# THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +# THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. + +import os +import sys +import argparse +import bittensor +from rich.prompt import Prompt, Confirm +from .utils import check_netuid_set, check_for_cuda_reg_config +console = bittensor.__console__ + +class RunCommand: + def run ( cli ): + cli.config.to_defaults() + subtensor = bittensor.subtensor( config = cli.config ) + + # Verify subnet exists + if not subtensor.subnet_exists( netuid = cli.config.netuid ): + bittensor.__console__.print(f"[red]Subnet {cli.config.netuid} does not exist[/red]") + sys.exit(1) + + # Check coldkey. + wallet = bittensor.wallet( config = cli.config ) + if not wallet.coldkeypub_file.exists_on_device(): + if Confirm.ask("Coldkey: [bold]'{}'[/bold] does not exist, do you want to create it".format(cli.config.wallet.get('name', bittensor.defaults.wallet.name))): + wallet.create_new_coldkey() + else: + sys.exit() + + # Check hotkey. + if not wallet.hotkey_file.exists_on_device(): + if Confirm.ask("Hotkey: [bold]'{}'[/bold] does not exist, do you want to create it".format(cli.config.wallet.hotkey)): + wallet.create_new_hotkey() + else: + sys.exit() + + if wallet.hotkey_file.is_encrypted(): + bittensor.__console__.print("Decrypting hotkey ... ") + wallet.hotkey + + if wallet.coldkeypub_file.is_encrypted(): + bittensor.__console__.print("Decrypting coldkeypub ... ") + wallet.coldkeypub + + # Check registration + ## Will exit if --wallet.reregister is False + if cli.config.wallet.get('reregister', bittensor.defaults.wallet.reregister) and not cli.config.no_prompt and not wallet.is_registered(netuid = cli.config.netuid): + console.print("Wallet not registered.") + check_for_cuda_reg_config(wallet.config) + print(wallet.config) + + wallet.reregister( subtensor=subtensor, netuid = cli.config.netuid ) + + # Run miner. + if cli.config.model == 'core_server': + if cli.config.synapse == 'TextLastHiddenState': + bittensor.neurons.core_server.neuron(lasthidden=True, causallm=False, seq2seq = False, netuid = cli.config.netuid).run() + elif cli.config.synapse == 'TextCausalLM': + bittensor.neurons.core_server.neuron(lasthidden=False, causallm=True, seq2seq = False, netuid = cli.config.netuid).run() + elif cli.config.synapse == 'TextSeq2Seq': + bittensor.neurons.core_server.neuron(lasthidden=False, causallm=False, seq2seq = True, netuid = cli.config.netuid).run() + else: + bittensor.neurons.core_server.neuron(netuid = cli.config.netuid).run() + + elif cli.config.model == 'core_validator': + bittensor.neurons.core_validator.neuron(netuid = cli.config.netuid).run() + elif cli.config.model == 'multitron_server': + bittensor.neurons.multitron_server.neuron(netuid = cli.config.netuid).run() + + @staticmethod + def check_config( config: 'bittensor.Config' ): + # Check network. + check_netuid_set( config, subtensor = bittensor.subtensor( config = config ) ) + + if config.wallet.get('name') == bittensor.defaults.wallet.name and not config.no_prompt: + wallet_name = Prompt.ask("Enter wallet name", default = bittensor.defaults.wallet.name) + config.wallet.name = str(wallet_name) + + # Check hotkey. + if config.wallet.get('hotkey') == bittensor.defaults.wallet.hotkey and not config.no_prompt: + hotkey = Prompt.ask("Enter hotkey name", default = bittensor.defaults.wallet.hotkey) + config.wallet.hotkey = str(hotkey) + + # Check Miner + if config.model == 'None' and not config.no_prompt: + model = Prompt.ask('Enter miner name', choices = list(bittensor.neurons.__text_neurons__.keys()), default = 'core_server') + config.model = model + + if 'server' in config.model and config.get('synapse', 'None') == 'None' and not config.no_prompt: + synapse = Prompt.ask('Enter synapse', choices = list(bittensor.synapse.__synapses_types__) + ['All'], default = 'All') + config.synapse = synapse + + + @staticmethod + def add_args( parser: argparse.ArgumentParser ): + run_parser = parser.add_parser( + 'run', + add_help=True, + help='''Run the miner.''' + ) + run_parser.add_argument( '--no_version_checking', action='store_true', help='''Set false to stop cli version checking''', default = False ) + run_parser.add_argument( + '--no_prompt', + dest='no_prompt', + action='store_true', + help='''Set true to avoid prompting the user.''', + default=False, + ) + run_parser.add_argument( + '--model', + type=str, + choices= list(bittensor.neurons.__text_neurons__.keys()), + default='None', + help='''Miners available through bittensor.neurons''' + ) + run_parser.add_argument( + '--synapse', + type=str, + choices= list(bittensor.synapse.__synapses_types__) + ['All'], + default='None', + help='''Synapses available through bittensor.synapse''' + ) + run_parser.add_argument( + '--path', + dest="path", + default=os.path.expanduser('miners/text/core_server.py'), + type=str, + required=False + ) + run_parser.add_argument( + '--netuid', + type=int, + help='netuid for subnet to serve this neuron on', + default=argparse.SUPPRESS, + ) + bittensor.subtensor.add_args( run_parser ) + bittensor.wallet.add_args( run_parser ) diff --git a/bittensor/_endpoint/__init__.py b/bittensor/_endpoint/__init__.py new file mode 100644 index 0000000000..d3256d5f82 --- /dev/null +++ b/bittensor/_endpoint/__init__.py @@ -0,0 +1,194 @@ +""" Create and init endpoint object, with attr hotkey, coldkey, modality and ip +""" +# The MIT License (MIT) +# Copyright © 2021 Yuma Rao + +# Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated +# documentation files (the “Software”), to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, +# and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in all copies or substantial portions of +# the Software. + +# THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +# THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. + +import json +from typing import Union +import torch +import bittensor + +from . import endpoint_impl + +MAX_IP_LENGTH = 8*4 +MAX_VERSION = 999 +SS58_LENGTH = 48 +MAXPORT = 65535 +MAXUID = 4294967295 +ACCEPTABLE_IPTYPES = [4,6,0] +ACCEPTABLE_PROTOCOLS = [0,4] # TODO +ENDPOINT_BUFFER_SIZE = 250 + +class endpoint: + """ Create and init neuron object, with attr hotkey, coldkey, modality and ip + """ + + def __new__( + cls, + version: int, + uid:int, + hotkey:str, + ip:str, + ip_type:int, + port:int, + coldkey:str, + protocol:int = 0, # TODO: activate protocol + modality: int = 0 # TODO: remove modality + ) -> 'bittensor.Endpoint': + endpoint.assert_format( + version=version, + uid = uid, + ip = ip, + ip_type = ip_type, + port = port, + coldkey = coldkey, + hotkey = hotkey, + protocol=protocol + ) + return endpoint_impl.Endpoint( version, uid, hotkey, ip, ip_type, port, protocol, coldkey, modality ) + + + @staticmethod + def from_neuron( neuron: Union['bittensor.NeuronInfo', 'bittensor.NeuronInfoLite'] ) -> 'bittensor.Endpoint': + """ + endpoint.assert_format( + version = neuron.version, + uid = neuron.uid, + hotkey = neuron.hotkey, + port = neuron.axon_info.port, + ip = neuron.axon_info.ip, + ip_type = neuron.axon_info.ip_type, + protocol = neuron.axon_info.protocol, + coldkey = neuron.coldkey + ) + """ + if neuron.is_null: + raise ValueError('Cannot create endpoint from null neuron') + + if hasattr(neuron, 'axon_info'): #if config.subtensor.network == 'finney' + return endpoint_impl.Endpoint( + version = neuron.axon_info.version, + uid = neuron.uid, + hotkey = neuron.hotkey, + port = neuron.axon_info.port, + ip = neuron.axon_info.ip, + ip_type = neuron.axon_info.ip_type, + protocol = neuron.axon_info.protocol, + coldkey = neuron.coldkey + ) + else: + return endpoint_impl.Endpoint( + version = neuron.version, + uid = neuron.uid, + hotkey = neuron.hotkey, + port = neuron.port, + ip = neuron.ip, + ip_type = neuron.ip_type, + modality = neuron.modality, + coldkey = neuron.coldkey, + protocol = None + ) + + @staticmethod + def from_dict(endpoint_dict: dict) -> 'bittensor.Endpoint': + """ Return an endpoint with spec from dictionary + """ + if not endpoint.assert_format( + version = endpoint_dict['version'], + uid = endpoint_dict['uid'], + hotkey = endpoint_dict['hotkey'], + port = endpoint_dict['port'], + ip = endpoint_dict['ip'], + ip_type = endpoint_dict['ip_type'], + protocol = endpoint_dict['protocol'], + coldkey = endpoint_dict['coldkey'] + ): + raise ValueError('Invalid endpoint dict') + return endpoint_impl.Endpoint( + version = endpoint_dict['version'], + uid = endpoint_dict['uid'], + hotkey = endpoint_dict['hotkey'], + port = endpoint_dict['port'], + ip = endpoint_dict['ip'], + ip_type = endpoint_dict['ip_type'], + protocol = endpoint_dict['protocol'], + coldkey = endpoint_dict['coldkey'] + ) + + @staticmethod + def from_tensor( tensor: torch.LongTensor) -> 'bittensor.Endpoint': + """ Return an endpoint with spec from tensor + """ + if len(tensor.shape) == 2: + if tensor.shape[0] != 1: + error_msg = 'Endpoints tensor should have a single first dimension or none got {}'.format( tensor.shape[0] ) + raise ValueError(error_msg) + tensor = tensor[0] + + if tensor.shape[0] != ENDPOINT_BUFFER_SIZE: + error_msg = 'Endpoints tensor should be length {}, got {}'.format( tensor.shape[0], ENDPOINT_BUFFER_SIZE) + raise ValueError(error_msg) + + endpoint_list = tensor.tolist() + if -1 in endpoint_list: + endpoint_list = endpoint_list[ :endpoint_list.index(-1)] + + if len(endpoint_list) == 0: + return endpoint.dummy() + else: + endpoint_bytes = bytearray( endpoint_list ) + endpoint_string = endpoint_bytes.decode('utf-8') + endpoint_dict = json.loads( endpoint_string ) + try: + return endpoint.from_dict(endpoint_dict) + except ValueError: + return endpoint.dummy() + + @staticmethod + def dummy(): + return endpoint_impl.Endpoint(uid=0, version=0, hotkey = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", ip_type = 4, ip = '0.0.0.0', port = 0, protocol= 0, coldkey = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX") + + @staticmethod + def assert_format( + version: int, + uid:int, + hotkey:str, + ip:str, + ip_type:int, + port:int, + protocol:int, + coldkey:str + ) -> bool: + """ Asserts that the endpoint has a valid format + """ + try: + assert version >= 0, 'endpoint version must be positive. - got {}'.format(version) + assert version <= MAX_VERSION, 'endpoint version must be less than 999. - got {}'.format(version) + assert uid >= 0 and uid <= MAXUID, 'endpoint uid must positive and be less than u32 max: 4294967295. - got {}'.format(uid) + assert len(ip) < MAX_IP_LENGTH, 'endpoint ip string must have length less than 8*4. - got {}'.format(ip) + assert ip_type in ACCEPTABLE_IPTYPES, 'endpoint ip_type must be either 4 or 6.- got {}'.format(ip_type) + assert port >= 0 and port < MAXPORT , 'port must be positive and less than 65535 - got {}'.format(port) + assert len(coldkey) == SS58_LENGTH, 'coldkey string must be length 48 - got {}'.format(coldkey) + assert len(hotkey) == SS58_LENGTH, 'hotkey string must be length 48 - got {}'.format(hotkey) + # TODO + assert protocol in ACCEPTABLE_PROTOCOLS, 'protocol must be 0 (for now) - got {}'.format(protocol) + + return True + except AssertionError: + return False + + diff --git a/bittensor/_endpoint/endpoint_impl.py b/bittensor/_endpoint/endpoint_impl.py new file mode 100644 index 0000000000..e124205b89 --- /dev/null +++ b/bittensor/_endpoint/endpoint_impl.py @@ -0,0 +1,158 @@ +""" Implementation of an endpoint object, with attr hotkey, coldkey, modality and ip +""" +# The MIT License (MIT) +# Copyright © 2021 Yuma Rao + +# Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated +# documentation files (the “Software”), to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, +# and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in all copies or substantial portions of +# the Software. + +# THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +# THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. + +import bittensor +import json +import torch +import bittensor.utils.networking as net + +MAX_IP_LENGTH = 8*4 +MAX_VERSION = 999 +SS58_LENGTH = 48 +MAXPORT = 65535 +MAXUID = 4294967295 +ACCEPTABLE_IPTYPES = [4,6] +ACCEPTABLE_PROTOCOLS = [0] # TODO +ENDPOINT_BUFFER_SIZE = 250 + +class Endpoint: + """ Implementation of an endpoint object, with attr hotkey, coldkey, modality and ip + """ + def __init__( self, version: int, uid:int, hotkey:str, ip:str, ip_type:int, port:int , protocol:int, coldkey:str, modality: int = 0 ): + self.version = version + self.uid = uid + self.hotkey = hotkey + self.ip = net.int_to_ip (ip) + self.ip_type = ip_type + self.port = port + self.coldkey = coldkey + self.protocol = protocol + + # TODO: remove modality from endpoint. + self.modality = modality + + + def assert_format( self ) -> bool: + """ Asserts that the endpoint has a valid format + """ + try: + assert self.version > 0, 'endpoint version must be positive. - got {}'.format(self.version) + assert self.version < MAX_VERSION, 'endpoint version must be less than 999. - got {}'.format(self.version) + assert self.uid >= 0 and self.uid < MAXUID, 'endpoint uid must positive and be less than u32 max: 4294967295. - got {}'.format(self.uid) + assert len(self.ip) < MAX_IP_LENGTH, 'endpoint ip string must have length less than 8*4. - got {}'.format(self.ip) + assert self.ip_type in ACCEPTABLE_IPTYPES, 'endpoint ip_type must be either 4 or 6.- got {}'.format(self.ip_type) + assert self.port > 0 and self.port < MAXPORT , 'port must be positive and less than 65535 - got {}'.format(self.port) + assert len(self.coldkey) == SS58_LENGTH, 'coldkey string must be length 48 - got {}'.format(self.coldkey) + assert len(self.hotkey) == SS58_LENGTH, 'hotkey string must be length 48 - got {}'.format(self.hotkey) + assert self.protocol in ACCEPTABLE_PROTOCOLS, 'protocol must be 0 (for now) - got {}'.format(self.protocol) + + return True + except AssertionError as e: + return False + + @property + def is_serving(self) -> bool: + """ True if the endpoint is serving. + """ + if self.ip == '0.0.0.0': + return False + else: + return True + + def check_format( self ) -> bool: + """ Checks that the endpoint has a valid format. + Raises: + is_valid_format (bool): + True if the endpoint has a valid format. + """ + if self.version < 0: + # 'endpoint version must be positive.' + return False + if self.version > MAX_VERSION: + # 'endpoint version must be less than 999.' + return False + if self.uid < 0 or self.uid > MAXUID: + # 'endpoint uid must positive and be less than u32 max: 4294967295.' + return False + if len(self.ip) > MAX_IP_LENGTH: + # 'endpoint ip string must have length less than 8*4.' + return False + if self.ip_type != 4 and self.ip_type != 6: + # 'endpoint ip_type must be either 4 or 6.' + return False + if self.port < 0 or self.port > MAXPORT: + # 'port must be positive and less than 65535' + return False + if len(self.coldkey) != SS58_LENGTH: + # 'coldkey string must be length 48' + return False + if len(self.hotkey) != SS58_LENGTH: + # 'hotkey string must be length 48' + return False + if self.protocol not in ACCEPTABLE_PROTOCOLS: + # 'protocol must be 0 (for now)' + return False + return True + + def to_tensor( self ) -> torch.LongTensor: + """ Return the specification of an endpoint as a tensor + """ + string_json = self.dumps() + bytes_json = bytes(string_json, 'utf-8') + ints_json = list(bytes_json) + if len(ints_json) > ENDPOINT_BUFFER_SIZE: + raise ValueError('Endpoint {} representation is too large, got size {} should be less than {}'.format(self, len(ints_json), ENDPOINT_BUFFER_SIZE)) + ints_json += [-1] * (ENDPOINT_BUFFER_SIZE - len(ints_json)) + endpoint_tensor = torch.tensor( ints_json, dtype=torch.int64, requires_grad=False) + return endpoint_tensor + + def dumps(self): + """ Return json with the endpoints's specification + """ + return json.dumps( + { + 'version': self.version, + 'uid': self.uid, + 'hotkey': self.hotkey, + 'ip': self.ip, + 'ip_type': self.ip_type, + 'port': self.port, + 'coldkey': self.coldkey, + 'protocol': self.protocol, + 'modality': self.modality, + }) + + def ip_str(self) -> str: + """ Return the whole ip as string + """ + return net.ip__str__(self.ip_type, self.ip, self.port) + + def __eq__ (self, other: 'Endpoint'): + if other == None: + return False + if self.version == other.version and self.uid == other.uid and self.ip == other.ip and self.port == other.port and self.ip_type == other.ip_type and self.coldkey == other.coldkey and self.hotkey == other.hotkey and self.protocol == other.protocol: + return True + else: + return False + + def __str__(self): + return "Endpoint({}, {}, {}, {})".format(str(self.ip_str()), str(self.uid), str(self.hotkey), str(self.coldkey)) + + def __repr__(self): + return self.__str__() diff --git a/bittensor/_subtensor/subtensor_mock.py b/bittensor/_subtensor/subtensor_mock.py index 0669d18c3e..e03dc51d3e 100644 --- a/bittensor/_subtensor/subtensor_mock.py +++ b/bittensor/_subtensor/subtensor_mock.py @@ -131,20 +131,11 @@ def create_global_mock_process(self, pid: int) -> 'subprocess.Popen[bytes]': operating_system = "OSX" if platform == "darwin" else "Linux" path_root = "./tests/mock_subtensor" path = "{}/bin/{}/{}".format(path_root, operating_system, GLOBAL_SUBTENSOR_MOCK_PROCESS_NAME) - path_to_spec = "{}/specs/local_raw.json".format(path_root) -<<<<<<< HEAD - - ws_port = int(bittensor.__mock_entrypoint__.split(':')[1]) - print(f'MockSub ws_port: {ws_port}') - - command_args = [ path ] + f'--chain {path_to_spec} --base-path {bittensor.__mock_chain_db__}_{pid} --execution native --ws-max-connections 1000 --no-mdns --rpc-cors all'.split(' ') + \ -======= - + path_to_spec = "{}/specs/local_raw.json".format(path_root) ws_port = int(bittensor.__mock_entrypoint__.split(':')[1]) print(f'MockSub ws_port: {ws_port}') command_args = [ path ] + f'--chain {path_to_spec} --base-path {bittensor.__mock_chain_db__} --execution native --ws-max-connections 1000 --no-mdns --rpc-cors all'.split(' ') + \ ->>>>>>> Add raw spec for local test and new bins (#1243) f'--port {int(bittensor.get_random_unused_port())} --rpc-port {int(bittensor.get_random_unused_port())} --ws-port {ws_port}'.split(' ') + \ '--validator --alice'.split(' ') @@ -278,10 +269,7 @@ def sudo_force_set_balance(self, ss58_address: str, balance: Union['bittensor.Ba return True, None else: return False, response.error_message -<<<<<<< HEAD -======= ->>>>>>> Add raw spec for local test and new bins (#1243) def sudo_set_tx_rate_limit(self, netuid: int, tx_rate_limit: int, wait_for_inclusion: bool = True, wait_for_finalization: bool = True ) -> Tuple[bool, Optional[str]]: r""" Sets the tx rate limit of the subnet in the mock chain using the sudo key. """ @@ -302,19 +290,13 @@ def sudo_set_tx_rate_limit(self, netuid: int, tx_rate_limit: int, wait_for_inclu if not wait_for_finalization: return True, None -<<<<<<< HEAD -======= ->>>>>>> Add raw spec for local test and new bins (#1243) response.process_events() if response.is_success: return True, None else: return False, response.error_message -<<<<<<< HEAD -======= ->>>>>>> Add raw spec for local test and new bins (#1243) def sudo_set_difficulty(self, netuid: int, difficulty: int, wait_for_inclusion: bool = True, wait_for_finalization: bool = True ) -> Tuple[bool, Optional[str]]: r""" Sets the difficulty of the mock chain using the sudo key. """ @@ -332,10 +314,6 @@ def sudo_set_difficulty(self, netuid: int, difficulty: int, wait_for_inclusion: extrinsic = substrate.create_signed_extrinsic( call = wrapped_call, keypair = self.sudo_keypair ) response = substrate.submit_extrinsic( extrinsic, wait_for_inclusion = wait_for_inclusion, wait_for_finalization = wait_for_finalization ) -<<<<<<< HEAD - - if not wait_for_finalization: - return True, None if not wait_for_finalization: return True, None @@ -345,7 +323,7 @@ def sudo_set_difficulty(self, netuid: int, difficulty: int, wait_for_inclusion: return True, None else: return False, response.error_message - + def sudo_set_max_difficulty(self, netuid: int, max_difficulty: int, wait_for_inclusion: bool = True, wait_for_finalization: bool = True ) -> Tuple[bool, Optional[str]]: r""" Sets the max difficulty of the mock chain using the sudo key. """ @@ -366,7 +344,7 @@ def sudo_set_max_difficulty(self, netuid: int, max_difficulty: int, wait_for_inc if not wait_for_finalization: return True, None - + response.process_events() if response.is_success: return True, None @@ -391,11 +369,6 @@ def sudo_set_min_difficulty(self, netuid: int, min_difficulty: int, wait_for_inc extrinsic = substrate.create_signed_extrinsic( call = wrapped_call, keypair = self.sudo_keypair ) response = substrate.submit_extrinsic( extrinsic, wait_for_inclusion = wait_for_inclusion, wait_for_finalization = wait_for_finalization ) - if not wait_for_finalization: - return True, None -======= ->>>>>>> Add raw spec for local test and new bins (#1243) - if not wait_for_finalization: return True, None @@ -423,12 +396,6 @@ def sudo_add_network(self, netuid: int, tempo: int = 0, modality: int = 0, wait_ extrinsic = substrate.create_signed_extrinsic( call = wrapped_call, keypair = self.sudo_keypair ) response = substrate.submit_extrinsic( extrinsic, wait_for_inclusion = wait_for_inclusion, wait_for_finalization = wait_for_finalization ) -<<<<<<< HEAD - - if not wait_for_finalization: - return True, None -======= ->>>>>>> Add raw spec for local test and new bins (#1243) if not wait_for_finalization: return True, None @@ -438,10 +405,7 @@ def sudo_add_network(self, netuid: int, tempo: int = 0, modality: int = 0, wait_ return True, None else: return False, response.error_message -<<<<<<< HEAD -======= ->>>>>>> Add raw spec for local test and new bins (#1243) def sudo_register(self, netuid: int, hotkey: str, coldkey: str, stake: int = 0, balance: int = 0, wait_for_inclusion: bool = True, wait_for_finalization: bool = True ) -> Tuple[bool, Optional[str]]: r""" Registers a neuron to the subnet using sudo. """ @@ -462,12 +426,6 @@ def sudo_register(self, netuid: int, hotkey: str, coldkey: str, stake: int = 0, extrinsic = substrate.create_signed_extrinsic( call = wrapped_call, keypair = self.sudo_keypair ) response = substrate.submit_extrinsic( extrinsic, wait_for_inclusion = wait_for_inclusion, wait_for_finalization = wait_for_finalization ) -<<<<<<< HEAD - - if not wait_for_finalization: - return True, None -======= ->>>>>>> Add raw spec for local test and new bins (#1243) if not wait_for_finalization: return True, None diff --git a/tests/integration_tests/test_cli.py b/tests/integration_tests/test_cli.py index 43e57abbd4..546e214532 100644 --- a/tests/integration_tests/test_cli.py +++ b/tests/integration_tests/test_cli.py @@ -42,24 +42,54 @@ def setupMockSubtensor(): # Start a mock instance of subtensor. _subtensor_mock = bittensor.subtensor( _mock = True, network='finney' ) - # create mock subnet 2 - created_subnet, err = _subtensor_mock.sudo_add_network( netuid = 2, tempo = 90, modality = 0, wait_for_finalization=False ) - assert err == None +# Only run once per session. +# Runs before all tests and only once. +# @pytest.fixture(scope="session", autouse=True) +# def setupSubnets(request): +# # Setup first mock subtensor +# setupMockSubtensor() + +# def killMockSubtensorProcess(): +# _subtensor_mock.optionally_kill_owned_mock_instance() - # create mock subnet 3 - created_subnet, err = _subtensor_mock.sudo_add_network( netuid = 3, tempo = 90, modality = 0, wait_for_finalization=False ) - assert err == None +# # Setup mock subtensor networks. +# try: +# # create mock subnet 2 +# created_subnet, err = _subtensor_mock.sudo_add_network( netuid = 2, tempo = 90, modality = 0, wait_for_finalization=False ) +# if err != None: raise Exception(err) - # create a mock subnet 1 - created_subnet, err = _subtensor_mock.sudo_add_network( netuid = 1, tempo = 99, modality = 0, wait_for_finalization=False ) - assert err == None +# # create mock subnet 3 +# created_subnet, err = _subtensor_mock.sudo_add_network( netuid = 3, tempo = 90, modality = 0, wait_for_finalization=False ) +# if err != None: raise Exception(err) - # Make registration difficulty 0. Instant registration. - set_diff, err = _subtensor_mock.sudo_set_difficulty( netuid = 1, difficulty = 0, wait_for_finalization=False ) - assert err == None +# # create a mock subnet 1 +# created_subnet, err = _subtensor_mock.sudo_add_network( netuid = 1, tempo = 99, modality = 0, wait_for_finalization=False ) +# if err != None: raise Exception(err) - set_tx_limit, err = _subtensor_mock.sudo_set_tx_rate_limit( netuid = 1, tx_rate_limit = 0, wait_for_finalization=False ) # No tx limit - assert err == None +# # Make registration difficulty 0. Instant registration. +# set_diff, err = _subtensor_mock.sudo_set_difficulty( netuid = 1, difficulty = 0, wait_for_finalization=False ) +# if err != None: raise Exception(err) + +# # Make registration min difficulty 0. +# set_min_diff, err = _subtensor_mock.sudo_set_min_difficulty( netuid = 1, min_difficulty = 0, wait_for_finalization=False ) +# if err != None: raise Exception(err) + +# # Make registration max difficulty 1. +# set_max_diff, err = _subtensor_mock.sudo_set_max_difficulty( netuid = 1, max_difficulty = 1, wait_for_finalization=False ) +# if err != None: raise Exception(err) + +# set_tx_limit, err = _subtensor_mock.sudo_set_tx_rate_limit( netuid = 1, tx_rate_limit = 0, wait_for_finalization=False ) # No tx limit +# if err != None: raise Exception(err) + +# except Exception as e: +# print("Error in setup: ", e) + +# else: +# # Seems to be the process owner of the mock instance. +# # Setup mock kill to run after all tests. +# request.addfinalizer(killMockSubtensorProcess) + +# yield # yield diff --git a/tests/integration_tests/test_subtensor.py b/tests/integration_tests/test_subtensor.py index 8d5567c459..04962cccdd 100644 --- a/tests/integration_tests/test_subtensor.py +++ b/tests/integration_tests/test_subtensor.py @@ -215,4 +215,4 @@ def test_stake_multiple(self): self.assertAlmostEqual(kwargs['call_params']['ammount_staked'], mock_amount.rao, delta=1.0 * 1e9) # delta of 1.0 TAO if __name__ == '__main__': - unittest.main() \ No newline at end of file + unittest.main() diff --git a/tests/mock_subtensor/bin/OSX/node-subtensor b/tests/mock_subtensor/bin/OSX/node-subtensor old mode 100755 new mode 100644 diff --git a/tests/mock_subtensor/specs/local_raw.json b/tests/mock_subtensor/specs/local_raw.json index 4da7a3193b..0214187e4a 100644 --- a/tests/mock_subtensor/specs/local_raw.json +++ b/tests/mock_subtensor/specs/local_raw.json @@ -2,13 +2,9 @@ "name": "Bittensor", "id": "bittensor", "chainType": "Development", -<<<<<<< HEAD - "bootNodes": [], -======= "bootNodes": [ "/ip4/127.0.0.1/tcp/30333/p2p/12D3KooWSgsFtQKFGfQAkVrbEv38sT1KFwcFAJQbekjBmfd5oDVK" ], ->>>>>>> Add raw spec for local test and new bins (#1243) "telemetryEndpoints": null, "protocolId": "bittensor", "properties": { @@ -18,7 +14,6 @@ }, "codeSubstitutes": {}, "genesis": { -<<<<<<< HEAD "raw": { "top": { "0x26aa394eea5630e07c48ae0c9558cef74e7b9012096b41c4eb3aaf947f6ea429": "0x0000", @@ -70,8 +65,6 @@ "0xc2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80": "0x0060c4b9c45c0000", "0xf0c365c3cf59d671eb72da0e7a4113c44e7b9012096b41c4eb3aaf947f6ea429": "0x0000" }, - "childrenDefault": {} -======= "runtime": { "system": { "code": "0x52bc537646db8e0528b52ffd005874c304dee7c555125210706794748862d1380d46b1dc5c84179c15eb47798893fe2e099789c3f350cf79c8e23364fb62fa956cfcafc12a4e90ecac1600d5928e82b6f91c06e0f422410829d0ec250743a435d208218490bdb7943296124f11c41241b6d5f1dcfd88bf3e0df7d7e31705b73c777d1787d7c15087a7e56718afe77c1a5b2c03439ececedf3233675f283e3a11889e7fe9c496d72e886c092a89df6b27440ad94750899e55dbac04dc9e3369c770eabafeda8374bdd6b4a6dbbf184ed5b4fe0ac27ddcb988c3fb696fb7e976cdb4cd69f743a78bc7a8eddaf5dbfd5810276a5f0ca3f4dbf745b11d6e6bdf2f8a6d4d935ce48db1b4a04eec1390d8fb05af34fa6deed34025d9b9cb4e27ebeb1c893329e642babcf6ed2ae0c56ba072d91766d73630f4e96d7f6c1c18f234f7fdb42ff2ea8e7da8001f21b4ea8ebd769ca8c3d3518bdba7133b5eb50f8917bd8ec761feb439eca3697df6714bcabe707e8f7da70575b62f10660c16ab03d0d85e2b60820d9c121e772030e3473c25bc3d497b74d163f57e59ad67e0a294dffc2e965d733e3efbbc391908b19bdfd6d6cf115a19352fbf6d2e92e42f1086511394db92d90c7da63d6208d3f11bb347ed117bbc1eafc76bd7b32b3e5e8f317ec230eafab4e70f26020ef3afeff593fc36f7491ae1fac44018465df2db965fa634ca5ce0745e6a8febfaa93dae2f8651f33f681846cd6b17c34c099847d5f6795454719fafe19416c3a8ecf336dae34a937d9efb3c9ec9be7d19cf643864d9e763b0e8791cb4c7f6fc05c3a8ec51e8fa74668ffff969fe9e51d94fd863739f305067b734766dfd08a1b5f50384564665bf74646b200ca332ec9b4aa3d74e2a8d1e87af6fbb877d26c72a9c720a8b5610714ae20e8804c36df9784e92b06f7b12312fcff3d3d92d40e2e53121f1f2d92518662db16fa72385140e4cc16a9d10036b60c396be0ec5a72f100a0686f23cbf2599140e4cd19c0ca5e04e4806865270da11312f7f7540aeabd28413fbb6af4f67b7f47efe90e02948bc7cbc0495f025a8c3d361ecb93cc461e7b6fbc19df4f9ecebaedaa3f4eb5ce903e2d321e9dcb50392959464d793be30fb9edbd6d6cf173d95e6e20e08f3bb2ffbf66d739c7647f035eddda77dfb74f538ac7de1b682a176eddbe68ec39c7ea4739f36a71d110a86db7ad2392671446cad4a13ea396e491ce938ac24eefb1ee091ce7deb300b92350954a29db92fd4bec789da09e16bdbe9ec96de8e137178fbb4b54f3bd3bebef9c94f324a491b4fc0e9023cf910a667e6a138352fc43cccfc7faee859d373474f989ef738c59f73ceabcc0495684b049ceaaa2e124ea70b8951f26508a7c28ff172ea50cd909fc7b2f9c6aec3e0702acc8ae054e83dc129ec3e389543632fc2296dec47b234f622b588c4a91c1dbe7468d3d8b5cb18358fc3311c7f58156b2c158db1073ad0d839e5d558d2d92dadd85f38258f61c7ae3218a844b5c4214e17f02a807801de3e848189d1ac0a359a97e3334e8530315e7c498253ae0a2f24a1b1da438687e098f03c8e094fee1547bcfc3e0b70f12a136aab8b18630ecdd9795986c4281806f87cc00953a802096518e96068a59ccba2fa369ce2a36a38a5ad2acc68be109ce2e6fbf01887e6931624b5b6aa18a3a5b6e2159c0ed1c169111e9fe3940c5d48838b2108bda00a56acb4e3f62a13d67ccbedca678c6224384e3b222e307c5fcf74ba484681e14edc0ec329eef1319cc2384cd3c050fb760d938cf238853dfe8553dae339ecdbe6344691be1d113734090c49df8e7ddaa46f27b6766e593796b04f9bfbb437ed53465d95268ce905c3ebf3f15cdcbd3eed21f6d9b7337b414e392649d1d7f50bb3d8e974d9cb4e3117523c76456160d42f63145f7ee1b6fefa7662ebf7f318c5dfee87821324716aaffda8922c168bc55ac5a3b447ec6d670aac0871f1f14b80b7975e98cd671e96e6bfc46fbb035d343f467e09f0765bee0638658e53924fccc129129eb63a8045cfd69614a156172c561e872598817187b3f122ca1417c7d34e013e2d259881ba9b801d20c0081657c4a8ca67929e3b237c5a89823a3dad0ff9abdefe400a16ad2d2ad6e8306bf900b4b6a8206a799550a0ff24a36667844f4b22b62f9fbec08cbf9209e639d9fd98b133c2a7a376d77138e3d4e902816c5fbfc06d9591a0128f0a67a3641fc6f3ee5742c1ae02e114c7e3949c91cf60bc9c1711fc781c564e9d80f0e3e315ce2b8997bfae679ce2be5a9ce27872c18c51f2f29c29a5d3d3522bc0294753c6a978bebcea7646f8c86f5bbb28014e39c524fd389df164939a3329a798c4a9f9c90bf57e4fb6f9fcf8c96bf74367e7a72d2ac6686dfee2a73dbf4e92e6a72d295db4728ae5f719a7b6f7dcfd58526b074482fcf9c85d22702a4345950ebd26d5702af4d1f121ca07a7e4e377700aeb782f520124c31e86eac82a2fcea8e49412fefe8553fc786595c699185d94512446ede59551fb30db93f6ca2a5d698b03535abf1d5f3b207cf9207c094a462d8953ac2dae02a7cce955265c56b32af1b4f573d4cb6a3dc72afd8e784ae2b5c36575d8dafac04f6fefb74362a76805c365c9eb17856cbdfc84985a1f3fd51ea1fc29c8d612d431b55ecfe89a0e754b87f1acad1f2749fa41e1edb79509a0df4ee73a5e47108651fb65f110a70bf0f8e7148a53a184e154bc4c36c5d1be638731b143522ba7640d4f8d033c6d4d01466b6b0a2a1da29a3f80d616cba8b5fbf1c30b3d1cf63c12a73835afe7e6a71dbf6d4e67bced2b92e6777dbb1ff1ba7646f8f4c56d1764fe02c3f9798ebb1f9251f2da0931f53c2749f1dbe622e9fae6b75346852fbde738ed2e30f4e9ebf10bb3f918bf50f6751ce6e21726a0e339ed303094a2b1c72fd456c7cf2f544649e1e48923453a3e544685433a3e9c57468545743c4e9c9f36f6e9c42d5bb61cf57cfc421f2dcf2d297ef2f3d3d60e09ace3f5e9603dc1703b823abb65cb962d1dfa74bcfc32462da9f735ad3df85c2b3bc0e9b7004f5b2ca2ce60805aef714a5baca1d6c7bcb45e655403a0719c724ab73993e4145fcf2db72455170490c10c466947f9783e773f18d475410019b0304a7b1f3f8eb7db6b2741c94d92724a3bcc5acf45127fdbdcedb7cb1815af5d11dafde0e3f06681d366fe32833ebb41b8fd7e3fbc50363fdb67994695f24ce8f53ef45a728abfcb44dcb81c8fc31b638c711fe3323f6b064f42f8f2bc6730e44750c957099cca846f3ea700f0389df1f4f1dafdd06f07440a168b35452ba88c0ab3e6734c929c8ad72ba75619c5c7e1f84946f1519e3c0ca7b43d4e29a342d97afe0ba7e2f9309cdae66bf723ca2f0a1e1a8a4fd6fbac173c09d9cbef25b8b31d41ed7e2c18ee5b7bf089bb49e0b45526f49acf659c0a73944ce0ed4352b30e6f8fc45e490475bfd89d5147412a714bda4f6a691daca3b01105a9a43d9e2cab7586e828aedef34ddae3c9b25a6788def3b50b2259acdee330c724d51efb305e324a9f712adc8ed773f1cb18a597f1e2f5da11a18cd2473063941e873926edc74dd21e4fb6d5515cbde777dae3c9b25a6788def3b743c263f59ec4296dbe764196d57b1cc6611cc661fd94517a95615089d7da830f2f5b8153e694fbf1f67addbaa35417a8b0f19438d06de9ced0a9a13bead0d049a1bb4267850e0a1d16baa1ce085d16ba2f744de898d0117544e8cae88ed015a123a34b42a7840e099b18ba2e6c69745ae8b6b0117551e89ec0e180f3823b014785330157028e04dc148e055c10e7020e88530137024e045c08b82b382b3810701fe0b2e05ac061c175c1d580a301c7055785db829b0127034e0b2e061c0cb817702bd87eb6346c68d8d6b0a9613bdac2b08161dbc2a6850d8ded0bdb0fb61b6c5d6c3ed88036146c543615686cd0caa04541a3829604ac15b9b061c1c2a059d9aad084a0b5b232b2246443d91132246464301958049811240bb230c80f646b6064d8ac9865986a8863c08a9081211601130206847d41e4224343fe44224c30685d3012e40a38048c020c0c19822d0b9916e40b341b6048d819cc3168583623c4116c676459985fc084b01d4c33c42c581a530c7b04ac0b710b9919b43062156e83848194419786d214bb83edc106616a9964e8c41049103f1085a4227a204b03a6253bcad6a091916dc9d810cbb00d61e3c056c654234e99475a0d3430622b0661334366868603ed8ae64504d2728085a1dd208e118710c3d8ce1085b0ad1173905d61a26181b04dc9a0d079219a4033030b420401063030603ed8c4d0d6a0ad81f500fbc1868599467646874614239680c5c060e02f7017980b5d966d68bfc056d8061d172e10603c986998619867d8c6d88a70517171e0bae29a625ec9d4109bb0469715db083031646dd842b058d833e6cf76056c0cab8479831dc28ab1616cab5bc2de608596078b83fdc1da607db01161b55818ac0b36a86bc3ca60f380063260840213d8800422a00490558800220d384288027a880318200a0f1f373d0aa02280100308420052f8d0c30fa011cc046e5b57b641e398030549058c384192f3841123dcc62698e41831b2695a40d1a1c500ca4e0e930a40d100190d06ca83f60285722d48467381e6ec245962040a13264d9e4091b3001d5a16da440bb4070d0b85d2441227cd80261660122467078913394b721220a3b16005349a0a6a34a0254b9030b164091204a4e0891d2798e42c4181e6e458c048931d233b4f389124070333da0914ca92244876729a30929363811f342adac4024c9218c9c0931c28748c2471d23b4c722e90012443ae9940739860d284891124469238e91c26983459c00e13289a30c144eba095402dd0a4c91327469c247902ca931c261868622403394a7ed048a04de4307122091426501861a2491449a0d0c931b2f3a489939c274676925ca0025040b1d1a66813498cece4407902051339682370c249134c903c2162074d044d346122a7091eb41028940ce4283102054a067284306992040a949c067cda150a2527c94e92274d9ed88102c90dcd0a65d224c90e922750346164a7c9122846923869244fa0681c1a081403469a1849e2a49fe42879d2e4014c92207982090b5800894ffb80e6ec206922c912245118c98122078a24883491e3841348880440fb51284a98c87982090f28941d26394f729e6092e45a154c9258e0a47540994802854992273b52e418c9c012274e90187992d3c4922450ac9430d164c92a4693a2173082640749134876728e70d1a8d04092254892ec2461920487c60155c2449325153092b30305133952e4d8d0a6d0274d1040d2cd595201243b4ca0b080911d26729e2469824912234672f8610b03d61a4219be68f5e1b4c562f5fac41c2e6e0237619d2c26311c580e38301c3870e4d0a30026139b4a1c554a559573aa649553159b53334d4a4c5e515e2eccf3d224efd4f972999833134ba971ea54d5c92a5987a6aaf2c69c3c59d338e79c9a94cc31dacca9a9549671729c734a89a96419a72a6bca4c52a598a38b64295959354a6519254b9eaa2c25ab4a9712015c4a2a3796da0921a5b2b2d42959e79c5362ca92e3586a9ace3955956537008eacaa5c9aac91a5943ce7649d73b226554e55952f2f2f52e33829394e722bb9e5b8e556aee4b8e5e4ee2ec7ed4ab9cbc995bb92dbdd952ce54a29a394aa5da752c65310df8dd3a669945233bd784abda4cac8f1c4cc0a04ab7652d64829d5f33c9923470e554fcee9a21a65c985a594caaa1c59aa6aa7915955aa5429a5cac953a7ce8ea554a95293cc7c63634dd334a952ea46561ca48c5a648d7990d82cf110402992483d805237558d91142329c618238974836f9048a4488a38dc6095f2861be2a49937483be5dc61ce1d52a564c932d3d321d3f500b2d4544e9daa2a73901aa3aa943aa754559d524a6696324afea494acaa524a3903704de3a9ed620700569a3ccc89cdc9582962da9c332c59ce39e764e6b039755e1ca34be41825eb64292f19b1c972aaec8e3a354417e50c3c6972819c0b5cd9929c287296189102c90578d8c189264b8c38c12489134e345992c30f3a40c981cba18409241558b2a4c91300a090e43cc90193a3c4c88e14394c76c87122071b5076a0249122e7da6102091426489eec18d94972810b3441fda04124b140ce1327a0f70449ce12264e3a34c124c789132446729c40f2a4c90e9455202eb083e6e43cb18091274d769030d164c91224300ac40592ec3081e209e85960070a1d3c05428a9c278cec3049f2c4891126a024b9408c0f1ac44e93264f8c3491f324a789274d8ca40810444e92273b001022a583144d30b0b3039227a0eca00409134ce42849112088db50206c8200c24810394a902ca9801127982479020a92277eed3c41b203e587209e40d1b169104de4408192f3c4c9059a3061e4494e144d98c879620409942698c83102849214018270c2440e1455f604133b482a60e40928499824b1002a26031648f224278a1ea26092136f50208c30699204ca939c288ce4ec207992c324c70923050082000408a2891c234d769c64e009134676a4c8d11105939c086e36e01e7944d5a7677b7a7a7cae9e1e1f9fd9d3e383f5643df188cffa987a7ae2919ec58ef4ac8f4f4f8f4f76447b7a7c7c7c7cb823ead3e3831df159ede9e1233eebd3d3b37a447d7a7a7a7a7a7a7a7cf888f6f4ec11f5b98e68cf1ef1591f9fd59e9e9e9ef5d9233deb338ff8ac1ef159d5233ecb3ef288faf8f8c4233eebb347d4678fdcc41facaaee05a020d1adaacfa2aac7096108a30958d038030a2bbd87c26195b654892b42371042d630cd99b2d066bdd4f6d7cab544a6b563da97a9179e6c6ddde0071d55e1662086dd80078d61187655d1d635e7bcc10e60fa32281b78576beb06573a7c6f6c420d260db6d8a2668b2d6a5084ac0662c81e5a5b3570410d4a202f3f2c3d3f4ebb1897f0b4c5055187a466a93de6f9537be822a137f62046956ad4a81af5ac1d9bc029a7a49c734e392fa59c97761d8b9139dc96d73583c4a9fc70fe3a4ed489ad84af301e8a4f04d927dba8054eb9463d2c3c194e61dfa3425086517b4689b186343c61086a404208d84053832ab21a88405ee0929ac6300c538c0c3d78c108be40830b4470861d6acc34749741a5e08faaec7bf53e6464822f56a00219708007ab0034762f4b638d9d066168ec31acba56d86538251b3b2aaa748581e1929abe40991478dae197f5cba0486374f89af98217188f8b1f68fc02137aede9e4e20a87815cd0e0ea5a20cfe06a5a7dc855a863b45ee5ca65714a84a72d1a14b54b6b8b0ba3d68e05defcee61c225328dfdfa82126303efb545968117186eb60a497d5dad2a5bfaba64555c5d7fe1ebd71eda17182e91794181a7de5e41efe583b1e2e1d0dae2a28a96ad2d2e38d02ab3a0924f818b539acfa9ba648cdac1a88728e9221f6aabf9a7ebdada01183d3f845f1875ba4020dcd7b5a58356cb13291255b1c562b1a658f1718a6835df084ec5e62d8a9abf448a29ab50d1682992b545960e558b4a4a89c88ab6aafc74a86b34fffa1050862e3e048c010b4669cb0f0163086294760da7787f9a0f809ee9d00702ca708551da381c3f6d0565b6c0408f6318c52e081803198c0abde66c4ad4c1ce008c2d803acc1a068b0ccc086338d3c6c00bdf8c9db579c9699f5c206fbbf6f63dd605c1be8121865dbba8e4faf629899799766e763f34237c7a3788f605434d49dc2e5efb945cdab79d6135da4a2a328c494d760dab69edf39c3655e06551b52c2d0399d434062a91bfb25e2e470905f16322d34ab067e7ebf2e11299ceae9dcbbe6c051e76ed295ba34a5bfc0c89283090894c5fa012f9087ad9f294b897891b37c618638ccbb10a71e39e8009351db38e1d04070d9e50839a50f69ec00bbd6666d94b647a873b488cd018d0e8bdfc96c8c8decbc5a2dd46307e189f63f78377cfc0e52899205455952ab70b1d18d614910186ddb55b52d34c6a5a09e95b581392c0b0a649c7f60b656e3c94a2775536ae60b8c4e5e191def089de7b9f0f46f16f7c42f08c0d50e30c77ee2edfe34cf8ee64604a61d65d772faa5c4ce7bb7cdcfd30810a86a463c789a52ff4ba0343d2a71d7aef70fbc2211a7d4c2c6d80611886611886a902c19868512bc19e855a64d3a6873b528459dff005c3275c1e1ae13d1c62e321111c0f8bbc3c94c0911b0f9b680519cc1a87175537703670c0300a3b1fc7f7c228ec377ce719ecdc876214761bbf0ca76e9c8fe2948df35f3e79e323310abb8dcf63147697af8651d8bd4f084661377d096014f6d25704a3b0779f118cc24efa86280d768d2a1b9ec1b06fdf0e083726c4129b179e451c7fa5786116d5687e0b866ad4b364024fc7e8106641e0653f32cfdf298c0565c6c980d131301f2a2178661ecb32cf8381f951a11a35d7304a514ba52f700bed132469a0b6308e5f702a13d6344f0c0c518de9177aaad2c39de6d968e075df46034f7be943c5197e1655a533bf3476d29555249ec152d8b92bc734f6d2a77106fb763f3a306314769c48fabe10a6170c49db17eec896d7400c2491987fc0ed32c728e5bcba1fdc45d20feb7ec070c05370a9f014bcd60a4f3f4b9a754c8a9cdca67691b28c512ab3f819af64829e829bb5aa2a560aa568d959c628d5568fc562b156ca7540cac8617badd24cc913a524a5e4c31863cf993b941c260119d6129996bf96cb48473ec56c79acfb214f8a3146c5ae2923af6625551abd132f043b7286188661f20a77220c57026e35e31f05c3225a6d3ca0aa40d8d1016f2f1fc61855694254ab04431f305a3ec6ef8fb78f4b748c962b8228a5cc5a00f0ae441db7873ec21ddaa388d2ecbb87a42e3d7c890f655abb5e0856a1e24c3ce9aaf39cf66d73f60c5c1378a10786598728aea6b76726d48e1a6e898c100d3c81064f98d24b6acc307d46306a9f7d44bd252fce6cb72de9dbee6c6ca2ca7b3c8ef7699c216d1a552f3c131fffa2ddb7045e68d391f4f81a1b1f09e054f6f82238c5dbb97760184302c377e48ad026814b6c7a7bec84f01ca1045a5ce9255ad49bc43e9b25eaf8e281b6ad9edf51d4f321aa15865545c499a9b28933f37add84e0c965f16c41f036214f99c19ded1f9c0575c1a90cdce20aa7843875e2bda2e7b5b3cf3b892a2fcecccf6b9caac5cbc0f01daa1650aa968d06de7c1145b4c7142f54a39e3fd204a7348ce56487531c2e41f5f21811661a18aa19fd030377e47ea134f3f2e3ecdb68e02d103fccc0d0eb38b36008d34b022f542d3d1f2e50cf3bd9096da4d82a1bc4a9bd04e2d485c56ac129f9791b1f9cca52da99f65da26308d9800c9a90c5a897a8d1271bfb645f2facd2d57c0cab56bd9eaba88a9fdbc252c0e1284d4cc34840a68a25323da70ffd8bd773fe4ab95778fbf89d9f571a8a3d8c31c689e99cb36687cc7bae3336a7d2c8c708b319a7b4bb306b2194069c5e90734ea9fa9817e6180249ea0933de8b7f9d19dc91bde787a4f6960c8ec4a83d7f6b04a3d82882fb8535bdbbbb21aaf55b52d3bb6610fdc061147fc1508b7aaf63ac4db6451da70e35873a868dfcc2256ad4f14cd4a89530188150c32169b1ebe7375fe639ed7e68da24f594da658cba8d10ab877909af1f2f8c7a5f1738bff5389d25a9347c996686b1994de0384ecf9f10a18e210199d6f3ecb49330e6fb2d9169f5d11cda34cb05439bde5fdf810adf1af3e37397d8744d73b8a3bf44c7e83d833296403e46d5cf87d7a5bff44a2ed547d5d8e3ede552f1f68b859b53755ee7954819eec49e973130f3a194524e303cd2f3f20bdff23b85b7973bb3e7f4a47c38a79229c1f829cf8d5a70caa93036c7cccc91237b8063a98cba6a8fd8a15eaa5e65aba6e243e656f2843b6ed972231fc6c8bdad243ed96621ba654bab6a8ff8f0cb40e0edb090215a7de2462a32e00111dabbbbbb31ee47fa8a78dacaa28b1774114f5b2d386a3ed7daca0205ac67adb59545089a53fc0d838925a8b35b988addb2b2a23447e076bf18638c39280dc7ef85517c8df1da2d08a334fcfd20e069eb878cf672d01eda5a5a19d502355a556922a8fc022e015e896b6d65f1d39a439cd16ba74048f91df194c8ffd0616bab035da8f6086b7c66cfcfeca104c39e960fb523340b3dc12db279fdb2cf4f091e6784b165a5975fc8d332bcbec4078bc61ef6f4bcea8d2a8f505b1f0041ef6c63201345a32f700b1e7d4ff442cb2a0359214f4f30940fb58ec789f2fba1afdd12ba84292bfd0fddb33e93b9099cce36bf046034e9f3fc41d9e6735784b6062a995fc84f5669e677b2d6d12dcd9d3b20a46fdfb8c9da05e44925e8a249d7ce7193c4db35ee84c820da49dcf7e3ae7da4c74e48f65d50956643065769f6dab92f642d8aac75621b583bdbfcbdcfb5fc85fd75243cf90034a7493cf9eb2450a3af63a82145827288f174fd32a8234f90e08a0e3169ccb98353e175947253b3c72248458e706aea90119cda9eafb1e194b6a660e9296b640e433daf9ccaa14345a3e7392669868493c6cefa9dab598653f34f783b21461a7bf6e9f0a033446fa7009f1d0a72dab55dd7878b9dbf0cc4beeb0b7dfa521262d75f5d100cc48e8161940b0cb7997f4ef117cf2dc7f385ec050ad9330ca7b06b04477d7df3fafc4ed161766d75a00bef858b1d11d9c32841f61718f2149d9d536635f6ebcbb00f275e53f472d4a27d800b7db4aa4cefae7fe1d476d5c75c8653d9f5284e5df7e9edeb9e7d3e1cc71d8749df29bb7601a096efce6993eb5c9596bfcee9053c6d8d40a8e539798ef359d2358d3bb7dc756273e7aee42404fb94580913829530eed9396dbbb6b68140b26bd7b2b4fcf6a2964ae63590f4ecdbd6620764dbb60d54321fca43f141028a4f93aee43a12f218185e2781da71626bd924694702439e26fdfa42d9d74d5fe42a5481d89514d3ab5005e2faae7022e9e326e9fae24d9faeb24f88062ae92edf5dbb1fa51278dde3c5fd02c3ee1c78e28e7d0a91efc013070ac97e3de3ae6f3ba624cb302119960591d7c0f03a778efb42d24fdab5b95fdf490381cc73d7b54730d4f2dc392629d9c2eba47391b47da487dba44f201cc73d5e0375768bf688843c0786dbaf73dbd7f6b6f614c24746da1b9ea2f525eda1adafb1e9599f8d495670cac573ca459276444430dcee8ad056dd1137eda13dd49a8bd8398ead1ca3115787847c04af2b7218297ee1f6ec14c06124ede3debeedd919e12304ac4382b9ac5b004e730af0114273e736d2068449ebf474762d088987ceb26e013e41cd7544f804b5ce91e6ce65a4ad5380cf089a3bc791b42e488d6a69ee5c47ea8ee0d0d4d97796c29e29dbf71c89b46d60a86da914f6043576ee53dd1172df933a24f81cb87dda91b64ffbea82f031b014f6f415478d7d5bfbb6b98cc45d10a9135b49fcfc7657064201d33b308d81aa34617c8c407c7a824af67bf99d84841968bef645822c4ebe60720595252c39fef6dcfc4ef3ca3cbfd7779adfc674bac8ffd0f1d8f59b67bdf4d20bdbebb58ba5f7e363df759c787db3b9f9edb97dc2dbf3c7a419495392e624f1b79ffbd8fd70c2db73b303a2582e0c555a707e35cd0a7a8cfaa1a3cfb551099c42d9f1f806adad13fca0d905ad2d1360d1a8d65609c808b24385960e7dc0b83a8482044568bd69c78b62b4b6565045ef18ad2d20317a476b2b055ed88e884d0946ad73a4b564d13a3da50e77b05005181774b853c5051c163adcb1020bb3432851d041007c40d4211421a2d68cc50aa25b5adf7a3601a7b32dcfc96f4a7092d1f38cde23e2190c5b2e306a79f93def771232cf68f9794687507c5a7e7eda3aba65cb96d0a7f9d3a8f79c26e1692b0b30faebaf79e8f9cd337a3b221e058e057758c89b1f3f8eb92362b7b4ce6e99e029c83e9e887d0477386d6581a577b82718f2a3d88ef7e9afe3f735ef70adf799cb6b04f59ac08edfebfbf0ba0a415edf72124f5b564c698e08ecd9b5eddae749e773a5ef54ba76e8d3a593bef0ba401d5347b1c35d3a77dfa9f46dd33949e22fd4cee7f83b05912c5673971d9b3b7fdcda055916774494de7da693bed2af2f92ba4f362749a44fcdd0dd179b9b24d2a76be8eee3e624af4e4c5ea6f3499fb2a13b9dcbb27412a243d8b2a5f9b1431f30582cd2a758fafaf8bb6efabae3c4ee9baa84af3d1ae12304edda11b1d7348daf40f6fced82f0b573a58f3bb7a4d2a761688e49a54fc9d05c24953e55a33949ba3eeea50f0ad651703bf1649bfb9ca2b97357f784c75d3b273cd901512ccd9dd3197725ef5e3d94b897be9abe3e1d83c581dece5c77559aac3b693b69236de7be27a4aebb4edab86b0355776c60761cd6f4fc69eba7cb043d464910ec6eb12fbe0e9cd1ba1d0fb5328a9506db63d78e79bf4c69b0f307010878f29af6f8c1c7b067da830a1c11daa673faa918addf10609486f7fa6d6fa7342692d298ce5f11aff4eea4732fe26dd79e1d7b11effa0cb336994ed21e7cd33beda16d3a7fa62770f15cfc4c412e22e2afe33077da99b347ed598c99c65dd9e317c57696fd5ae5588af1117ce370062ac98e5dbb23320d0c7d5a5b8da7afc72cc6981d27eaf034ef33d689cd191f879178fce54c7a798adfc7f3778a8f5f1138adba23c4be67d2628f9f36762c7bb24372d2d9b50b72a4b3674a04f685d995c463e7b20f7ca2a35a58acdeb1d1db63dc21f5f6ecda21e1a4b5e370f63dd119a25969e277aeceb8e3b5ef49f69dabb76b27c4486be7a1b5679fce10bd4aa3450d54dd11df01998fdfee47967d7b46cd2fec88d88ef1f318a5f7c9161302a7984b9ce7663cb71d7fc5610c863ecdcb83a9aa1ed3de4f87a717d389addd1e8739d382fa8532cb56bf88135907dbb265cb1a9d21b19f4eec0cd489f3ca615f883d0aaf9748d6141df275b035a6d8d25164a1a6443e3ebb82a1d77afe48fc28309d2751600dc5478f13f5bbce3bdcdbaf6fa0ceaed152fb76b8e5c1534b62cb33a4613b24aad0058f5f5a1ed955baecc39dd2d94f7c6ded008cd6946899f75b25aa7498927da7704a81b4e86c7606c60e714a3b330ab7d5d9f70aa7b45504326a582c5616ab70bfe88c9b52042f74b8647476d67608a742af4424fb114e5dcfc4e850b1a0d1592684bd7de6cdde67dca669db0686a4d69e314abb769b541a0d2ced0daf5157054eb714783a042b66f410ac10b5b6c729d5a81a2f97062f5e10ece73225ea254ad4b20b2f7e9de0ed17722f0f7efcc29e8e17783d7e3bdb3011532d0bb53b18b5328cdae58e202bcdf2d8f3230c0ca3f6861fbec0c82fbcf8d08bd9f2e08ee0a6345df0c25f065523840da7348cdefbf8e3cd70c5db532d57083895e16438a5cd37e070bd7ec7deecf502d89b787dcddec8eb83d89b79bd107b735d9fda1bec7a9bbdc9aeefb137daf53ef666bbfe007bc35d8fb337a4eb577bd35d9f80bd295d0f646f4cd717b137def50ad81b97eb8dd81b1baa2c013e18a59bbaf1f2d203efe505f418c54b2caac8f2e0db34c3c4197e96b14d336fc13bcc37abf0f6387c9303dedec627cde0ed5d3e69056f7fc3373de0edbd4f3ec1db9b3e6986b72f7d720bdebefb6414bc3de9934cf0f6dc27c9e0edb74f6af1f6da279de0a9e1edb14f72c19359f0d6f0f6383e09060f0bde14bcbddee0c922ca3c6f073cd8418730428d9de405c1cbbc3296c00498cc230a01a7c5def00cf666abec4d4683bdd1bad89bcd067bc35dd91b120ef6a6fb626f4a3bd01e180fb487a90828a8ca15a122a2a156d1941f56d10a0909091509151515156129c2b24645588ab0ac515151515151d11a1515ed5151911016a122212121a1352a2a2a6215150915ad1116a122212121a11d4461afb05dd8311415b1d18b14ce8837e379ec3ab6840e9748ec935e7818111898316aada034fc096e15caf0e21727ea98e1c5226f6fc41e98628c305851a88b9e5f2d58b5427146b54371267ec6f905636f82b037fbf96ded8d187ba37d7ec7d89bedf35b84bde13ebf437b43fafc22616fbacf2f197b53fafc2e417b609fdf32b487e9f3fb135537a2eae5132c99c0db1fa1a89222cec41fb58e868e88a2ea08464b968c81a26a8174261ee68a5725a87f5d7efe3a816e519c89bf8ae6398da29a38136f030c331730f43c7082214c0f51c1e35f29f0e6c31d6e218f7bfe5aa3ef34c1c5d25b4405cf03b90a1edf64327a79f97425a5503aeab4670748242c1c87864d96a14931dcd889373e5d492fe8f20877b6b32610a1bd6b306a82cc926df0e4153ca0a3a3a32329bc65c11c0145204659c1db202c9cb040524495ae58bd3f1d57e18e405ef27282ea049f6c8759476e4854316b8f60b84b42577b1467e2104645c12b32412243a24a57459a453b542d7b3499b56b302a9e9fe0855b14eed1166d514d54dd701c0fb3979a1b351d3b5e53d50de09038138f237379f172b801865fc725680fee3478583f91f319a38644d5a64167e2a728fa40472641c7b8474a13ef812446c5782ef2b2c8f2f8862a50610d54a0c21a542a2eea39fd429ffe317f7d3fd9eafafc88306bd5d31a85ecf953900dea292318f610f156578f70fe1464eb09ea985a825b5cfa6535abaf4fe38ce438855f41acb84654236ae12eb3e4e075ad61782145ba20600c5dc80832d84348a303d0da1a420b48f7f8d217c110d5a5e7f0f1e4700e08e8743ac52b8c128a57625a43ad98284b444544a5c73c06e4c91113a55196188d622c3d9c40320bf7de0832424366915a3815caa04e43aab1402798d377540dca0647dac4cb0974dae127f0b4458eebea24a7ccf11531644ee185324b03316ab360320bf610264b54e92af3606691d2ec11bc198405a396085e048bcc60d49e0c46ed10a3f6c710a9ad374722a974893fcdcbcf2cad384120dcf3fa892a29b175c4296d8901d4fba925aa6c5c61b15853acf6b3681a714a5b6368d1fb8906a764ef671a9c8abd9f6bb00a8bd5fe92328553dafb8b0aaba46c5ac4f8a2f753ce16a7c20934c4a9506241c4a9700af57e3fc7e0d424835343f47e9ac1a903f49ed41d11fbad1c39be2247beb5869103349a5b3d5b5b80f19b58a611a322f83df139612978f2366eb8f1c2bd78376c38bc1b9a8d4f0a961ed9b891ddb081753f2678030c3d30846919e3af34a8115d1030063518a55d1455272231070f823c391e039e705c5731f759bddc6063deb80d1bbfe145deb071038e6f7f18b58ff9768ab67e7a0f13d674bcb61a87df0086d90dc701861e8ec380214ccfeec77c390e6098ddf80d609cb1711c40d1a5358c358c81855054e5f84e43a42c508e05e2e13cfc141f13034a011f735d7540877fd755b8204f8ef7009e9e9c9290b90f5f42c77f223ddc0790e7f41e6264dec39790017b00a3ac509cd9cb7c880e70abc4998d798e875ba5370604774828c765cec97c3ff8f1f8acc0e7f8784ecf71edb67138c717657580e066d9a2285688f4f01c8f023ee63ac0283d3cc7653e5dc93c063cc5ffbae2c9f153049f9c92009fe34bf470999f9288798e1389790e90c74a8c20911c970179fe1c3f818ff912e01e4561f04bf400ee519cd9e7d0550f8f79b847547a008118e827e6e04306ea3d17f3f15821d2c34190e7efe13ca7c79c49e0d7c3b7d38ef9a2700c0b55393d063c99ae2b1e12ea7de9049ecbc1c73ce4a1dee7f8b828ceec7bf834ce70d190d341e07907c153fcf7283c5618a0ab1cff405dc580a7083640a3e4004f43723c0738a7c4992dea1c3a1ce8faf51730ccaedf00ba6e0304fac73c7c5176788ebb7c3abaa59598aeaddd109925ceec7138f38277fa4a20f03c708b9309dce2745d9dc013037475fab2561938fd049e1aa02b1daec3a3e8705dede55054c92cf33c39d47b1e83577a28abf45e0645d50edf733b7ca72152f8e8275057252a9e078658e5788e4bb1121f7fe2cc3ee4a35e9c0802895bb674fce93cda62b14e6015352b2b110b958ed755187f7a3f23d01757308509d4bbc3a72b1dbe53bcae4e9f7262d92226c67c3128ceec4f5fac1267f65815bc69044e2c31a8f7530a5714a71138b114c12b492c3855fa3ec7f73853e29ec3a7abee0b97a0b88b944304a711a366d10f0e9c58b0267860c7cb4f17048c618c78f9cb6fa006828dc3aa37d9a5e4526b186898d22c4bb03cf6c976388bae2fcc3a94597aa72c8f2c8b17462dbd0fe594de472d510d4ef1f7f12868b5972c4ec5efa5144efd70ca00bd9757680fed9d9e7c3c7336c130e3879ec2a866517ce3f06c0d630d29cdb3c8050165b88251daa65631b4a4d1e12cba4a3e30dcc30439b486f181160769886a29dc49d7f84ef5a51378d9a3582162fa7c1413d74990479ebb5ffc09f278e759fafc12a67b3f25717d9ec8f579cd7bb3f4eb4b942e30cabd2f6102bde9d5d4fcf2c028a55f0f6b9a275ed7755dd775b586e05cb225237844894a8f3781514a8fd839d2c7e3b3e2b142c4f40de4d96e0249971f8f15d365ec1ebf44e9a69f92908f27221f65bc299e92e840ec128cb2ac3883ddf4254aa093b83d542d53760a2b8a1522dde5a390bedd0446e92e1f2ef7f1703f69ef59f9acb68fc74ae91b785af1c89f34f0c92909d2e597e85efa2989edf244b64b90c78a761efe760d24225f0279f69404e9db896c6094bd1267b06f27d2611b6e101512c881db8a33d8c3bdd2d84b5678bae273df1e6e6bc8f631ebe3297106fbc4ce314f2192b25a8ce20c76f949210ad7483e622f9dc0d3401dddd24ab26b09045e769ed2d8c3100195f65ac3108116adabed32708b130374c5e7d1d62a03fb0cf0b72152f81cd4da430fe61379fbe1f69ffc82a752aa10c06aff636345643fc153fc8f00885c3f4570c85c6d3744cafefafc4e49ece78bec27f82380d57c91eb55d858cd6b3764e6905ff0f4da39c067b5975af0f4d757f3699c4982478569cb8ac70a913d8f1767e4f73cf254f4801a67a4aedad0b10d2b2bf1e1e74ffc1f01acb644c5d3d589c121fb2a6cac163ce9c42d5baab0b1a2226ed9b2b212cf61e034aad4e3542654a3ce9ee1c063233815ca2ca608a7b23f7b67e7217b4c76ce2eb367d9bdec2a93814ad4689bc0a94cf6016f23c2a990e481324d702ad4f104a7421f96702afca1b97347c52cf33c18984535f71fb4c776ee3e680feddc75688fecdc65b40776eee0de5ce7beed0d9fe3ee45953c7798a89ae7ae321c77c0a8e3b90c668b3af0b2162c334a69169c511e1c0813808e0fb7080386b2396314ab8b328a84d28c051e7f5c045a81bc5224279579615b2e4c0c2cd341a65da16d44d8381f70402b2091a088d409a12b85513205c1e475e1b9a0c0c5c60b6cdcc8c18d97d60b0e2f70dcc0c50d388000071820c0e41094438e9f1c272c4e312688d1c18a0e3b64b1030f5ff070a17f401fd00a400f1481402be84104453dc85821a3638c04481d4552f081073850484011d3871f4e60049bc1fd80fa010e8aa451c57c6efbb8d7a0a20a6783a2ea9201bce2409838c3ab6c08de10194bc4a9300b9a2073d006edcdde5c330000c3fb29b25998ae2182024c0dea5abc0c00455208400f8064cc0b899747009477c0c0b3892a9c2114514d68d3210c14a400edcf79af6095e42236354b251bf242189810e6a8e3170a4051b51d6607cd90273f2fb93c96a6480a0258237c3b77edfb6b79ecb58f942d8f3df65d1f2bcd7e7e51699466cf7ddba7718613008f293c6a547004d5bb59e46a8aa4004408566d728071e9d59950eb8541d52811ccc301dcec43205affa8e2aea8bda234f10bb4370bae17ca233e3e8b2a0edca038131f37072be8086e5010a473d71ba434f1389cddc00b37a8e325c0a9708b70864495c733ab920c1355518b3a5432b2ccf342980e61faad7b231fbf4551152f3f5e1ebb46186f07d4c0b92ca9c8075b38a14a546159400083a39646392f2cd3368ed4954c9e0b5108d4b071e305c70d38c0e490e3647406568c0ebb83183118c3f210c616c0c0fa07f6400cac1e843843195a32248d2a0098e1042c1d3ec8346451f40347861f2c58280d0b144cd19ad9ba507482054007ba584100b82a661003d68e3288c440a34448386a09e0a8072c1e58fce08b1a52d6ea71409034aaa2165968011a5a2b7de6690f05a2868700687604000033a81f7cd021d303f89d871d748839e5c80106871b70bcdcb0e1e2994a1d89dbb42c8852e8d3242d7840a5f5093dafd2e58551278e3f3108841bbb60a2cae319fdfce785c0a9e9eda14d4f9ee1873a464f7ef6c1ccf0b12b12ad1798d356c92973e11611ecb1a2b7a264097fbf44cf2093def7b0cf32900bc3b0ab496b8d1aa8410564a8a2c506072bd07010831ce60b0cf6d0f3300f2b620b6d7842116210832c65a8bc580309071eb8c1c5b26e686de9208b0ebdc72d56ae39e735a5f40233e79c3a90d2f39255a4d5fc0bcf7fce39f78a576a6d7d71066d79e10b2db0b88c539cede5eaeefaf0ee1252a914142774010d4664f8220b18a4b48b2bcb8e65d7774699a161e0929aceb22c7b36c469daa5615976850a9d65579cd0d9aeb22cc3402e6abe40030725b407848c2717baf099410c48c0062a2c30bc30c600bc5882e6c5191f17012082f681cb8b1f6c5f7891054c175ee4a0c4854703edbaae03d0400c6b1c210b2028e18a20bc1841e70516252eaeaca1e4c507b8b80ccad4dafa02061dbee6fa81a9b5950335b40becfa7cf118b56bb0411947100313a4b47ab002a2af7b59e8ebca16704c70494dc3306ab9d897d6d6172268aeb5f50515984c28899abf39f042e5875cc528aaae2cabe55aa2387381512e56d17564f4b353a4a8f2531355d8e5439bb992dfe3cc4534bf9312f2f3138c925dae74c52d09fb3164a893a869965262cf2436cf87892a299900aca3ae12d47c5262fefa243a29217f5dfeda95c6192fcef0e5c7a09c3ecc580a7280466b0b0760344d6b2b073b68bea23d32a59197d2a8e593e0954d9c91c7e1d58117f295960fb396e72b5135d57014c462b15853ace4e3515445e1ef4f5431f6c9c74056cf75de1b45d55e5eb2a22aca9c125513e4b1a2c48641074860adb263e7e9b93e9f6160cf055a898fd2334156c4f2052aac153f4b5415b180e295a2a825aa76252f7fa28a87128c582b7979450e0945d5eae08c2d8a56f2dc92538462101b4595ae88784802b562959621679146ad3df4489fe55806ae26aa78a5e74c557a6d68578427bbf70d73e9ce9d03a3d878775d61dcca856d646cd42e597a8f69c171c3a50b66e35d76ae3bd771cc5aa238b3b751748a47bdd7f88783780a0371fc3d99efb8ec366e038ce2f2ecbaea5ee4a4848ddff80d300a761bd7157722b4e3cb6fb8fce5da15c17ee3879bd2fbee03eafdcb77baeeb37a3937bf277c28db3a4f748a98aebdc8f6d2e37594e0e14ebae94af074f7be9ddbae88cbb36f5704bb8d0f9192dd06e9d96d8027f91bb68a147166eff2b14e72837a8f63afbcec50ef6f7ca76b85b6d5bb7dde0713679ee840d9d6d16180aeb233405736ae53e4a4c476d34d6014eedb7595bdc849095394eea6ebcac689509763e75cae5d91eed8f9dbb6f1699c71f94e7c9f55764e760cd09594ed2625b86fe7ae4877d3bb22a46fd7ae88079ac0537c89a8fb1e67f6a42ffb34ce6cdf2982439409a08145d9a7a57d561a6742cdd2fb1ecf6772668553de003c0671d705865948eaebbab48a66d8276bfaba77182f8efa7acc754d306394fc72e14529af3292b5e06a5a6d02473f3ffbe3ed701b36401bdfb1eec70edfbd4f5b7ee065a4ed62020a329d07201793e9de56d92a5b658556c8c4c33dcfc5fbafee070fbf293ba8f1f071ef502aedd012959e63875c4aa57b45459b65b36429e5b8e7b9783a7c763f72e8f012183a8059abd4dcb6ed116bfb698fb6ede7e7070808683bc55c763f4e31dfb03562c08c75fab8737cdc9ca655b9a21d47150d2c0909090d0d0de178e9d389255369e6f0d8fdc0b19dc3b52e18157300b32bda456cb4b37d1d07b9c92c1cf26988141de72d7ebed2114b54bcb865cb4a577c74c37190377c3bf90de6dafdc0611b0606cc8270f8b86ff8321c1ff7cba74979e32b6f7c6fc81ba0d605a3e292885a638c01c66524b5295f54518276c37a4215214e85da4f879a50c72b5b696ebf76eaec047554abd205a7b6edd2b06054d4aa6841170a3ca0300d4e6d3fc957a11145d5498243f83f5ff17515cfcd2b1815b5cbcbcd23c9ed9cd4b46d82d8353bed8751324a794d394ba51251f763888e5f8b3f5bbcae5865ce5825024520ad4bf3ba2e4dd3b44bdb3eed0a0d87b529253094a24bbfbe30cb7ad3be508ad67834ce6cd78e13b7cf2b7d3bb1e7fcd1aed8c09d780a62fabce9b364024f7b69d3b6cfbb769a677aa6999e99ae657d7d1918f3cb5ad91a8cea221bd613b0c8be18638cb17465a54b6371c10b33a123ed0b1eea51a45471293f5c573f5fa1c098c50bb3a1ce62c52a4a3cca42e50750fec4232ba40f60153b563e3c943f1d774af0b2fae1527e5e563e8027791f1ec587ebaa8a1dab1fc093041be0c37d004f437cb80fa044c3dbeb2a1679df5efac2edd2105c40a55d5ebad6c515c1b884b44ffb6a64f04cbcf612152f8b33da413974993e9dd26d5c3b245c5eba36970fb351fab4bd0dccb0302a66475e88151561211bca863232b2a18c8c8c8851312323230a4336348029474259e9f29950064676fd9cbcaeddbc8ad0ceb2a8f45016993679248f641699a5b49970b854ca82322c18150451962a465e8865a9d211a8e38198620696ec87e80ad94fc767f1b2b4cb6bae984174b49a173c56dcb2e542c1f238eaa86dc1bb50800d757c968e77b9f6963f303f4073025da56fd7ed5954cd2a71267e7b29059eaeb238b33d9c553aca07e8ca0b7d7e5a7e5953827caee00c39d21ad73b0a82b569033d30dc36813a5a0225a9a58bbca6054f5b4f6075780975bc86861762455851546959245684a58851f1129424795d8c22cd0bc4b07c468cca82176245558ed448234be9bad7bdd9aee3120c7718759d939f14f2e4af6bfb7479ccebf84e437454b103d015a9e76dbcf4853b1cbb232678152d8f78975f6878df858551d1045e468c8a5ff08a302c8c8a77f9302346695a162d0b6bf1f6fa4051c76b59a26ae5f64b53c3d3216441a5af22ee18003086a210b83d9c421d8bae2b0ec5520abc1f400f0cb1d2711d97f2730f0cb1f2e1e11ceaa8692f5dbb213ab229bf50c7c7a3e31a67320fe633f238f1ba742081b5bc0ed61718eef66126adb469a69e9e5d302ade549a53821811a3e23c76852b494e962e7b9ac3c86054e4be1d11f2dcb5a1224e71a413714afed810199c9abf76620729220a9112c4a6302a1ebb8251f13346665c11d2aae085d84fc7879850633b581ef13341664cc176e0613bd0825d91df949ff3254e7ea67959327d3a3ced5dbb20de71d83b568553dee3b12e38552a7918168c8a5e95a8f23c100b62543cea8a13b460fb10039ad73926fd70c50966603f441d9dd06aedd73949da4e48e9388c4de1d4f5782edc897ddd74eecb83511faee352aaf8ca07f0e72b1da0aee6f6f9997eeddc3e9ded09ea28f6c3a92b386532813bb1e52fece73adabe4bb382175e471d2900f669888eeb007547f6f56b8dee880bd4402ccbd492a5e3a7140fbcc860146b9680bc0b0c9df4f520dc479c5ae3027764cba378a16079c4fb30c50942436568451dcdb8882ea2d2c31cdb431b2dafdac3ada74a77e6025bfe2283511711a3e2e50d3cf9f01a22e21aba88342f2c8fb87da1d7575fe013d9cb230d4f1b8aaaab28f3ae226da8e339cb5054fd2292d1e2042d8456fb64c2516b97a72d7cb8ae7420a15d5e3e7c53c7776155f0342d5a1a13cb9685519a1646c56fa09686fc5ebe0424c19d78095d605c2d4e691ad87d1b49dcb76dbfaeeb52bebb3eae1423b306655b95460343f9ecdd71a22c85daa1f874f612a824bb76ee7e74329ccf2619da90a61d699a0ccb095248dfb676711f11a7e6e32f2c9cd22574cc2eaf0d716acad90599ddb79d6d73331d73138739ee79edf20bbd96da83c8051467e279aea0381333ad0dadb576813a8b7d5e5d5c571815df8396aba84a9112a414bc7d7855e91e5845414151a5046f0f82017400a0a8b272ba7eae2bc2eba7a376d451cbd2f19c96453be254a80d6daca8fa5a5a164e69b9a2e3353538b5c646650b0a37a08edf7e9a4065bba2631013a474b869d1f1d794da10a7c20b051a199c5231e48582bdd9ae80bc5a6881d3e061bc37ba5ec4a6e02df8c2a8788682b72410308a2455878e9ad9071ef316b6b5adbdd2ec5e66de0b0ca762987959878ad099e5359261702a13f2956626d5a038018ce2234ac3e76c6ca4882aee2513787ab483b5bc10363ff0e4c39a1a9bdd8287fdd22e095d6d413a0e07318a39aea205a3a4c0df9f18e3fe64de54a33ea23458f0701250c4102264345f0252ee8fceb0d61a861a8ad0120c3d9b1a5510c89baf688c79811be356735011a67b37e144d569881497dff8af19ca46d168d54b8053dd432dbab22a66edec0db75dff04ab24f6857c8369f2e364c7971abb2e2943eeeb2177b63c2e30c42e9f812176adf4e9f07436315007ebcedd0f0d0377b6bb6fb5e890e8eedcc68e59514502c3ecc6c7533e1b36401e95c2c2b2ac6cfc71c68a9a38c32f5de1e94a03dbcac6ab48ad6c3cac69d39330c31562f005318c40c45ae9ca1b62e32e9faeb825b96ce1721c36c2b1f115510539a5185dc72eb521dbc7802ca0348217326b3330f42228f90aa3b815553c05f355d0dc8a2a5d651db394865988bf60d41523f9c5afe9f3401eef26b0489ce1f398cef3449ce117691697eb8aa7c4994d82671364054f57a1cb8f8b9050867dbf6094d015a1dd9281fc238d3ce5ec5b2c2c0fee80cc4b3064205daf11a7c1c3b0b03746daa3db9614d9a7811dda311815af70ea0263fcfcc29d5d2d1865fa74e55d11ba82a5308ab51c501a16ab4a959bf87067b5a8f2455050959f0581d2f04f96b117bc6d6d106baf96e64d8351bc68308ad788510c04241f5526305c42855140563cf9298c026214739538c343981567788d5851b5ad38c3cf32cfa8c56978e1b6388261e679ca539a5b1de31006f7435f44542d18459e51309dca1478daa6c89b0522205d674ac3e73378dc6156e4fa4989f9d5a3f63b2938e42b1965bf8f43aecfeb0a278b337c0c0a5e116478fa505b44bb86a096a7c0aa5487680f53cb17d99bd9f24b4840cfd052c3d052b7d0f22bb9b8c94f1b170030978ce7975a1ef25f741c922a82c8119961316be07164ac913d725209401d8fc81791327bfc7c6a6f26b8540862459a8165a7e0c55805efa444940c8c52f07475753f560b5e36bb1f8b869781b30aafe4490f78b2fbb15288524a29a7cd1351450a1a52840c2c2d2f812678f6c789dc2b5a9e57967cc817c1a97839464b29a594d8e533e7758119a32676cda0ad0d1c135678a0f79c89096fb6b6acb0a27bc08e61188645c42276dd9d01536079b09607f624b03a865a052096134e2d15ec1b74e4090c93dd118c216108c3300cc3e6e3b173588621010d0cc3300c9b8fcbda9b0c5c2a787cecdb05e183d20c8f3f3f2ba7c6cac0b0eb024f7b5d5d9fd912b2ebf3b0ec2a869625cc4f52999fbb1f0ca3b06fdfe30c866560b8418da16a506d8363d3d8a79413918d677e034f5b70d7d5769fac8838837dfb86c419ec5815bc059a5378523e54a32351b524d019ec2ac8f282c6ce4563d8d14e511a6c7f18853d03570aa3302c5b996532cb968af62d50b6cf7ee4d9b75416480a9efc7198c38ec31910b85418855d12c18bc776b52cd334302475f64c3b0e2f05f686af81a14f06aa0c16d9250b43e7dd8dabf1ec633f1c2c5e68e3c519fd50328c8697653021cc8caa975f4ce34cbcee27832ab289d73582a4cb6fbf1d5af00217c0c0ab1224831868418369c5037bf7181866595430aace44d5efb686b1861e449b6f5b1ef1f2db6179449b22744e9d41319671a5638c31c618e3e7ead6f13bc8c41d1d85e8b8c3de48509ae16d7b43daaca0b6431b1bedb19f7eaaf1f2fbf9d00f07cbf2f7367ba39fc284301a7aaa2a9bfd76d4e819f3169420eb6481874285fb1d47ec6b1825651b3c05516d83e38351cbe30adeb14f343c1bf90c0cb3ec0243af27c86008d36008d3b2003a231f8677849692092da594d24669640db88351928bbcbd5c1e525ea58bfc898be0941c12557cc5a6458446cb278053b2a57c134ea451a8595ab6ca206a7945c12a542c2db732b6d0a1aad152531ea74286919727c99796574e0dd1614ccb282fcf7bb35f16298c2960d104686d49018de64cfcb98517c6f43eccd17b98e5b13996c73e6361c97104375f0b193becb037d10c0f66797027ec11c33023544b0a41bd17c2079123cb5a8a8082506f0a56a192d1bb0541a18c0e158dde63f19c0a616416666ff4fb1c7bc3dfc7ec4ddcb2a5e5b9ed88c848a46f277d03b59310eedbbf53106ed3ce3149b36f3b7ff1db11313d4af7d2b93b820472a0ce71780d4f5ffa768bd275d5ed85753518b883b178f13b18b5bbe3880862af61d4ea4354af6a1916daf46ed90292783b8251a90443b2a89ad1193e105e019ac3f3514ac34516242251b306dcc12849046f49f05d5d5dfd7adfcb0723054fdf79302f44f096c3902bc14d69f8d8972d0fb6298251360ef0b4b5842cad2d22182d018c7612554546007485944892dd12acb865cbcae5252bbc5377edae2b9073f9e4e5b7fb71d0e51b628b96d801b9ae7d7ed7495fc84d7af7853a42b6974ec43cf7ee9ce95c8974cffb8e308a6ffa8a308ab58ba00418c54ff0c096313ebb7e48ec6b68d199f60ea378e3bec3284e8a8d93df12cb83bf1d115d17511a76825a1e7cf9016079f0b1297893a1e0859a46f3b187aa65cdf0f61a269d308aa560143f823b6778d8f5d957b33c588241280dbf0b363e70f8451831844f447be81565944e742682a1d7534c4c3ac112bae898d6961288b8a91b34a78f20244cc1b0583475833855258642b4860ed0fa0374b85d7c91840e170c990e3708091d2e196b4647d5b27426b2745964588351da5218a58dead0468802a88f9fac87faf8f16ed4c70f8c0ff5f17303a88f1fd401d4c74fcd10eae3c766c58fb7511ffcf822aa42c519553dcea80a26cea8ca93c2a8b89b855371b54495ea4afc16ed12a8a09106a7a2149e12778d8efcd391a974fc35a50da742350a97a547186a2374a864f4dcc7bfe5b5873059d4606032cfc3408d33aaaa05a50cda2a7b2528aa7455e54a47a12e529a88e34322c1930f6d24b8c5121e0ef383246f60e07e44a2e6339486afd2457f8afb08c4a9908b3a467d0c8a2a21b4c49f299cd25612b450c1825357f363154e698b8ca0e6c72f5a44a10c47a1e63846f3e32a174931fac932858fae4416a7423e83b1704a8bd07cd6c2a93d113a6434d26035c6e8508687d0619472846c3e437b5c61a1a8eacee7565479e7f35054bd7c0c88324f84bbbcae78f817c833b5654dd2e7e57579222ebfce712f81dbe2401e999d48e9f2739e3b911b9f274db9e1a46be0b278ac10c1f1eb2e46da5d6e035ca238a32b1790e7da409e0ce4e19e1091279d4876f99212d978e9261027ce5821e272d36f045dbff11bc09d8243cbfc0bc87303e431813c25af74ee4c643be9991a6537dd063824cef05d409e2bf21ec863e2409e7327bd047a3c56886cef401e12c8c3818f33fc0d74021ed92b71867f811b04ae9638c3d7c0358a337c1cc6be9a38d3223282d1b2ac9db241de95d9ba88d4288b333b2f0f93d755c653a24ac2004515e60545d5955589aa094a9122e5c766254f456c036bf583c2d660b1563f302b792a4c472c166bf593ade4a548a182072dd94a9e8a218c6056f252a8d02d55a056f255d8ac24a83af3c35770eacd67299cd248d4da43cf0d1fe6d20a388e1bb72c0f3d277507b0844c2aa79753789bc566df29dac3d4d9ececbb82bdd19e7db1d89b3dcc0e3c1b7476dd706790f1e30d12c77cb93012a7c1bbc169f06c701a3c00701a3c97fda2581ed9d5e8d8a11e857a861f4e2d154ea91852b086cce88cd4e14e7969ae3b826716584c2e3cce086818018b153cd2af67e74a244e833786970d51e9a82d1e6831744567ab45678b4567e7ee88ad82478a820a419ee09596476686b7753f16cb4ec1bb8e5deb7eac1426083cd2c39d9275a51278efb0a6b38d02d6fdd8a2ee99aeaa74b64ff0c29aee9360f0ae6ea9302a9bc2a8ec38bc9f1cf2ae1078f3b353825751e249971d91781268e5d45819dec3c0410bb2ab550c2d5874ecd80cef3a774804a33fa8a4c9552ba4a11ee59c4288666606414001d31400404020168dc7032251d76c0f14800e96b8505a1d49644910e4280e328618438c0186100040a408c00ccd0ec576d15c94581886a7d8cbca60b639de0a5eeb352f156538b2f40d06b681608dbbde26deaff53c82a7dc2625363d6c923d29bb5525c62fe6cb8a106dc9d662ca11f89d6f1b35e051e1df9e915b8c3613c870e7e72423ae205b0cddceeb21c2b7f248ae9e3e98e51451ef0a591d12ef23ddaa02ea591e0f57fb70888b6865550611fbe127959deb5a6b51a738f1593781fab00472cdacc1078fbeeb8dc18d8cc904c23879c26233a7f63644e62fd447e35c7ccf01acb2bf3ff291865d417ffeda2bb5356ac96cc14921431da7bd975697c33319e9a91fe9ff605be328de007ce5ac87451f54e537b72405de21233ecc1089f6a26d46be8397dd921edf2681670983c9c7c3ad1ac517ab3dc5aecafed28ad6d752edeafe5b51ddeab0bdb519c5c9270fd96896b3b3fd93a9c3bc872ac70c57ad459335d58cad646e8702ab0d74f8024a8f64a86347a9625aa636b0c8fb486b2fa265cc65ef34b0d24e05f7540881a46d8e13ceb4c3b66b40e3b7de8c80b05e96bd209315626118fa4da9728f3a58da552df2b4cc5b4bbe7f19ecbde7fc2a2b408519289e961d583202406287e21abe04c02818d48977bfe4c97d3e169724fc34ca6d76ea728a9bd714f54f138ea66ec6cae036152d18770a2d2d8c15d69cdd331f81dbbc8efaffab90b7022fa48c2d289544378140b52bf1f0e035e219290f33d060d5a7f61027188a4d7ad7485f15de4efc53412dd06d2cb9ea84164968efece24107e9b62cbdd71856a772cd2ef9ff158903f84157fa02ef342b25202c126ceee5c39616b0ff2f71b788c7ac834ff2e20d7ea638afb622683e4d1bd8892cf52f2d33c74a48b60cdaaca0bd778f54a73a9b3354722215e689d88fd8e720e452579d46ab28e0bd59de9a92a936d390827a19823bb19a7573b29ff2ea6c4af0cf763bda30a4ce4ac48b71f37d0ae756c084139269a94138f0eff0bce803893c1fc1c3251e165dc982d68a592430f69c17ef38faa7bf2ec214eff9459fd6fbf2177b30ec8a582101e6ac39de74b095a93c4dbffe8fad1d7fabd72c82f643b68e6a4a96a82f89f2429b347d7335b7594e013a471fcd882aedde933866a4b40905c1b9d152eb953a2f797b0465daec4558c0e54fdc2a360e5d94efe8a9a9feb2abd7738a86f1b7d8b34c174d304b617c334f59e1e6e2c559b0c9de971669c4748c059678548fd1a8451143f5ff3e12857f89c1fd8c7d9b7e61939d28f574eb28c67d1dba9640e88222f53dfc574df0c53414e0a2c6a0c84bd19017f8b909fb00035de2963c8b78a1c7eb25823deaf4bca4eee99d46496e94128eb3dec908278653013d37450eff33ea8885b13ffdaa7af0af67939650681e7172909793027f10aea49f9a47fbd5f41b21de20412ec8cc93921d5798d77f7cb69d826ee39266ab5f6dfa8d7b9e5b589983827b1d3c8512b4dd6ac549b945ec061b76a10f6213763e00591bbef81eb73d70bf587a18e20f344e382d8a69ab6f61b9ef9e6063a1a12856b022508f02fb447414d1ae75dd19b65fc8eb811a588e4534033dfec027c4379d6e369e3d6256c121eae6236ec42185022ec49495688791660aa5f583db070c54dc28899b996beae529285b3706423d5c789eadd1509e2042fd789e66b68327f90e16085151e9f6c3401016e1f43d6f230081cde5e3521928531d786e32050d2527c14075da9919e84a2e19eec2c21b6c3c61ffe0d423a0d97a5a70649426e329aaa201a29a01e23a580ae13cd0ec92bd9a64c26e6112972d39a4d076104e93a75b6f10b68ed353d81ae26a3866c9c7e825d49429efc76c172d0346fd9a2d6db3d2b90d2d724fde5e0cc68d95aa10ef6bb80657d4a5784225ac596b9829c15b6deb3ed76031db8d9432d4171d4506aca35a50c0b393b190caac5c4ee0c567fd135f809a872734b83875c0ec24594aaf55e108820d160649b4a025cdff384d171629ab793cc5a030115245272cfeb347999dd700bf3ac2217682d787ded5004309ef923e0df38be76678beb2b9106b14635882fc4766bbb8849ee31e998f104fb9a2dbb855f0d2a9266785171be4c635cd2b8342f07a99b2209a071bd568b27f04a5065c875135816938e6065e85f698911be63e05b20e876d6cb82dc5d4a8a2a3cfa1af3c1913a2b05a3f527aeb2ec608723f422a186e9a7785326474f8511b67901c374be7895b46f4c228790d3605310e8155ab29d90ad8d6235c38540ad5f2f4d0a6a0ed785f43e18bef7a40608ce33913103a6e20f264c8db8b225746301c7c08688c51b84a1d05ea21e486a07a001d38e74297c3e42cbba88738876b50843b08c07e37d91cbec9167e1520c46b676fd49e56c379df9b0b0cdff9753a311db68e1c87629ac4a8c84ee70823bc1f7d27d0aaf8c5cc0320ce484d195877d8ad1a18c3a95cd8d07f1002601d29e5fa43b8e15a94a4d1ce474f28bafe413f840a73a363e961c20c51a59177be315d2a21b1d20250b09b10e4e3f4e05df0d3cb953a4492712f998a7f7005ed5e67798074e6bdfe190f5515f22f15e0f4cbd8a84603ccd80b63caa15a04537732f5cfbc513be9562ec89f88601f3db2d7fe7f0de4fd8dcd32e188e701e5d21c2a39e414c9e655650900517e0916fa203861371ec0e0b09c8dafa615e35926c5e7cd009f173b06c47b2ab0f70f9fafeb9fed91ad88143d50b9c159eb72efd394831b1f5872a6e5e6eb1bbc4af694213f7b701975b902769bcc0c19f480ba6a0c1acc54f354319cbc0187f29f04b17a7ff8bbf9098bec5feb355e8a204da037071055894bab0e5e7dc5437a01af1b45e22580830c95b0104449be6f72c94d061ee1e278fdb3a3466819b4e922155c8bea37b61534e9a3d3c497107d668aad088db89cde3ab7ad9e177fa40b45b1b5a32404797bdceef154864c0366fa1addf6ac8a9f62326221c4fd7b0d32e3bd439575723764d4c516ffe6baaab0e1a8bc6c36ffc24c9f0a8490e6ad51188407a7f1fab1e1900ea88c0a586fdca38e16dea3f1588bf065b911ddc34885c5d9b234de6617ae5c249535124b05c43e9b80981bfcf7758b08357de3453b6f932647969f2ad607561a82fa19ad748627e9ddd2e15d9cb442ff416f1f8377ec2fc2623c55e6f18e43d455ec7cd686fdb4a18cdd9f2e42cec16567c000b51399665e5de2164cb0e4e65e352985f032e04cc88dcbc693d3f2ca5773ddb0b81bb243729f5c9491f85060322d28491be4b601e4b0c328cc16cbe23ecec86ab0a053b1d4674fb49f91aef0e412f58c901248a8d478115b1d7b359ed36e3be3459f671c0d8d7ca964cbdccd6f5bb47edd165d7b874a0f12aa8ca9eae9874dc2e884bde711e8b7177796af70af0c187a1265179fe5d51e545055cf6344880d77476becd70cd26aa3612cb140073c89d0e7ee2e69bdc66ce0418e9e9fba8ad4396ccacd315f54c79858921a936a8935d9b126818be55542d3d9a438684591c0c5a96b3c9856ce09053699acd45971bd0ca25f431e4c69c2d11570a81278aaf0b2978e3f8bf836215afe7ac45c42e31f856a6e862f26982905265877269952bec8b93853c7f1349e2bffbabd1c02ad5c7790d3474b2f192db411cdb7df8bce27618688540ae9afeeade3365e219c0e02f546edb17aeeb3fa2ab9316af0b422522c46d47ce30cd78616d4161e5eb5f15aa9725f3977f8f240109b7da251554c7dfbcc3985240e2e3d1b4324651de97998b746b736e87afdc88e3bc7e1380e498e714664dbc7ec43f5907618a8a5bf8d0bc0bd9e364a21480173598ed1b1dad07dd51740d51e870893e4e7929c15723ce53598bd3d8ad1a508d3fa3981ee3a7c3fcb5005bd470f756a18c88decddf4cfcb61eec322b2d3581a0c0025737ebe8ef624765fc90946d980281d907109a461bf5fa96553e39c2244a1f28019b20a658151ae72bfb13f1668f3406400d04f287601d2831472e2277314ac849b40cc4c887c256816693f021de3fa5206955c612ce97b2aafb3ed867442f577c5e904aaae10c8b230673aa13e8cb43a23c113b04f7cb3707a2c1239aac1295ead59761143ced4374cf07f237b6fcb99c6b9a250fec513618af75143764f566d022c12f5e742c272a719d7c99108805a40ea46790709e94ce97b91106fe32a78aedb31cb9591be02fd73ac80822cc0ed6d6724564888edc907bb493ea80967cebe72e2df010917e16c8785254c24da5c2a564b6114f6a5b5dfe0edfa25cf4d6ce658e1d26041631a123d30e81e30d7a26282266a172d253335caa4bbe2404e1e3499f29dbf72d53e2a795dee8ec60fe3439f21e9f0ae8a3d7e35942c6cdc41512410cf638144b76939159a06d8b9425a879c017ed2b11f1d8dba51b9dd378cfb01579fd2b7bd7aa03eee139b413a632843cda60bc6d7a2af84ff6aecada1d486d943f1101d05fc025d9715b8410d6df83d91014d1a0e5c7894c50a30c288fa78c26a43cd255cf806dc223d3416b60cdc7073c4d585a05e8fee27f2496992f3ddd17ba860142e40fb3f91be70164d561d5305c472c853019d82c2fc01944c5350059d6c65228da09fcb7b7d366f30f943b3e2e455d57182a06117cf7a6170945e88cbd61491d4cfff057faecc2466ffec8e8c3c38068529b7f90fb326a32b2507149c532211f523928ebbdaf3605d564dc6368f09b9e951d8b9ec59304ef426547f2aa05dd55f1bbfafe5224f709d90baa7b4b049c8a19fa4fbc7104e4a8428db15474a764e811360e14d229fe950e3a3cc811627656a6fee6fc863985701008751552ad758a99d8c3ead737c6280b5c539ec18114e080eb789a855b9a332d14ff265f1d8ceeef5ffe918bbb6ad23f66ccec912e2e0c17f15e681e9ee490f318522e133683657b4bb132a503a0a27fe720d442ea09726f28212bbe7ae1622bc08c6b8010afa4c47ebb253560e2d585d103f046f98c191ebb74eda04ae9dc04be06f4f1c054491ebb0eb61f5fad3b012b93fe67005f7698a045b517e0f353b2d7fb15a78741d4e2f971f0f8232e35878fe124e597a556ec19dcea854a13c9e61a3d8b111a618bffa60745214eac55ae9ec86dfdd687fc0c05b6340bb09f1a321d4584272372945998f404a16b603975ed3387b6686c389a5a42afb4658ccf997c8c41d22b9defa51d7b1a38f79ae81a963c2632462013f74852afcfb5ecf55445f61297fd5771f7482ac8a1fa13962bf5c423a2a350409c74c72a3d99a512e54cd2782a8ca5d8435b56941102e3859ede2eb011f847073988e05088596d81881f1ee657628d80900ac93aabcbfb7f051e08c80e9b8ae6e0cfc9f1ab00c8325ee9b52753c96634f353eaa01a377738edea52a6b7bcc546c8f05ebbcf8e909a39450bf701b5865ad156d6798473a0f09cb0176b8d1ea23aee41226262435df61649185431090f44413361a5e9d66a28a86d0864d49cf1b8e9fddb34b11874e3e68a44b6044b476f2200a499ea14aef9506c223a2a7382882bf6b35ea3a51a8aa72ac1d542ec71bcb2a4e7d6fd381803dea6e050c846c1da004e33369d884f9fe9089e505874ec02d597964a2862966f4cbd34cc2b7473d2a5da31a2ac0e2a906e02c2933ac9d126fbf0d980b813e7a0816c038db023ff5f336028ffc3e609195ffed0dd47daaae67cde7f57e39498ea19860c826b929f1846395c7107bfcfbb0e4026360a4d44971493031346bea2e54db8677e7a3a0dc3f8e2186bd8ca726af728fdb7b8141e61c76f6f08a79004bfd13eb5b3e1fae1b3d279a31b9924ef7f72575e5cd7a55a32b0ea5923eac13fbc1ebc54c309875d2ff45eddabc7f7f9c81b9641f186ca80106acc5404de1fe634656345aaf9fa0865623e4d939afa11e49443946c174b796ff901b0129f4cf1ea710c75d0585e7d10b4e2c57e81ec36796531cdbc1e97d736542f4a84a6976ea30908f67c867abccc1ab7f7f83af67a43051b91ab383253344688584f5f4f593f2721305df54d2eb1f1a4f159fe839e652ca9346aac8b8e42fd66e385f6834e0dbe7d6156be2b3ef637b2a0bca643a22d33213ad4a55713099c6002f7898804db81eb8486a1703c9437771ff9cf14991d5c0abf784cfedc5044f5f35dac845ef5ef06df63715024fe8446ca36915e7df42e9e829e6daf5248ccbe714ae5ce904af8337ebd2eb705c0e69c280e6c20a6ef63ef63f2e39c0e275a195ce5059f15b721d758626f583305811a75d2c0ec2b578de2cc0e589666d3f4c0bb15a217a35fa95996feebafc254b0c9cd490f2f25caeb9b64d865fd3614f65c27cdbc6ec0fcf8b5dbc55e9d120b24d11613dc2180a2accff1242c171ccdffe03fb9954ba4ffaad4c2a6cbfc3e940dc3ae3614fdb5fb2593a6db2beb886b1b1d032b575568e5eb8d374463a9963a94c32abbf7334eb2f434075ea73a12827801aad11cef22e313bb4a1040028d676ea7b06cc0b3b6e160e4c00f2e0859ddd30574fb0b64f826e23414c6971fdea54031ac481fc0469b3020c636a2ad2b43e63f32264da1c421f6a74dad0e621491788ef9b01036a6a99970329c6835d328e749eb98d5fecec6ea0c69779c9b01c24ef6e60c583c65626ad6814e13096aa435608220d281198b5e8ae427694f0e22fff1ec9d8d8d84572181d4f77345a45adbf749a1f571d4c00da7e94f3146251893bf49beb9eceba98c7b7a44e552faf3d1b6fc9530856d2ca0b0006fa58b2e6ef9b5d992d83b4c746b507c420b3b094fbd7b00a34368338ea43a709c2e7ae3da8fe5a683dbc7daf3847c7f72e1efae3ce025a88951e9f0f6467eb6dfce5932d971e3dbe9fe9def6716adc2e98ef0eab7b9561625a6e78a102f92a11b468a122f2cf8995e20a8b4ce5286859c3f363332306dd0e78e180c90654a16a1aedeabb594169258ab3f60b54d73b1e67d89d0f197dfd6e5e68d6a55562f27d9819ef4f392ebe565c29e3a7cb9f21793586946d638e00e4258a157074ce6724fbdefb2b084aac8e7e15794711f62bb954577aea9b59bb2c85a12b9a343f0a1cd010baf75c9b84fef054fd6afaa658ae8c32fd25f576b303b1140b06b987f11d1c1de562d42841794d585d1393f8af20cfe96aef40fa3d09a4e7694f2dfae4a0e8c927d1140740766b742cc887841006969e003411365c866acf4a252f2e09a4786be0d7a97920c0e48d42d0e6d616a51b1de7ef707459664655f82667c84bf2412c36b097c0ff5768165a9e9475ddf65a79ad346d64ae9449492657d3be411a3c8779981ea8640e8e08f1058670177529cc83e843199c89d35c85b4a10044f4a43dd4d8d511ba698472cdeaa943941c60bd3979a1d3f9232e3cbeac24c01012ab058029b5bdc86722cd3f87bc81528a9d602352bdcf9fe9c9411864a352aa920a9f1b09ed9ff28bb2def70e6846c0a5c4273f34528c53623184fa048710ec7da206e2e1b06e673d4baa98f37d38ba03f4332d572a6307ea66100b13dc41c6e7d5ff881eeb15a314e2344137ba403034d02308b5799b09f4142010f83d01d6be9634a341f1421613b2b53bd0e9a52c5bf3942461e3c0a35d38f91866a968081f142aa53168f4c80a5748e123e2fbd6e4606b56780a3ea1b890ae532d309893a7516f5fbea1732d95224231392db097766a107b8a1d1c45bfa31dd151c81f7b3f2f154e11b7cde31c545e2e912f0684540d0a1e275452b9438e41f25c5c1c5db98ccbf020f73ae70e52027317c9bdf025d468f0a43100bc869c4a679d32b989f5cadf69af06dbbfcf72f46718ad939a7d88cf9c457254caf95f33f1fd16ad2c82ab584da8cdcb565c23ba8bb770d77774e820aaef860f11192b5c6ebce2b67510845ccf2703bdc7ac370de30f11ceb73e7686fe895a25112e5892e7acf07ce07be67a747c9c338bf4f46532f20f100e378a92192a073484488a7a4cc4dca5ad9a1202a502a090997b361974e7950d6aea2ee4ea9105eb3e5b23b74c41c5bbb53dfe8d995332525d197fe61818d91de04f449bce1f9d74bff31d94b452916aa38f50114d440e0b1fad849226606c109e5022aa20062e34e49b8e7a25037b50340fc624ce98f6f49d2b4f94e597dc267cf07eed909bddeb7d88fb23eef515cd8bc8fe4e614d6d0303d774bde50f69084ce2325856feb0770c5229fa3faed7ba2ee02aad4fece1f1b2dcc51bb4484a3f3bb40543d6bbbb1d63035f91148c5d5436e9c4c970be3bdebbd35ec44a77634fda509ad1825009c5f09de72bb2878af8605967281e01f063a552cc3af0a13f55766682f178f11a69102649ded58c75efd1d6e3e8a83d5a997aabf8facf384833f787ce1712b421cfa8787594b8fc5f3928ea30b240f525beb1427a1b834ff1107a7a29b4dc15ec0c499b43696728fe95f0ecec18eab6d0cd3d81bf44d0bb8776b32867c2b30e8333a2afe163bf0c1ca8ebd5adf5bce02a61c86aafa1a5b4440958b59dc027b8a9dc414b43a8c9f6c4b22e3d0dcf9c4b1c37781a2aeef5b557b21aaae23f8465d0f72d943adb0ca502d0085dd6a8a19b450d694b791ed7a97ca695b58699a3826135ec552b849e0ee36a766e5e5db1126b803f724062b272762c76c3575faad4a226615912c1898db28ccab04d2670e36634c8509208081c3e0b3272585d939fdbaba8f1badca09b46dd2800f50f37b25ce386c5362a441ae91136cdb1caacc634f8b00ca0628439e19634f1a93dbe306c44d0b49f180af74abb76648090159253809ce38c41332c305cc3784b7e32cd11fc20582669c0694b227a6f6772b0940245d1178f31fe69b524b304d3d32a0c350f463092bf6964a759a33d24400ce212a1365efc3e38a1fb5ddbeca08cdd538724b775cebae4a73bb79f12c5c1769acb466ee96593b1992641332cd980b89d10b823cc55dd07315e5670a40011b30512ae440ca58501c26cc23feaa561eb10add0e283430ed8b3395aade38119a1f48f35db2d45f045560cff1b855a732df8f5395b48f1a433c5b268118f0a19cb0c16c2152ee4504068ddc35c51e4c5a9520dbe2074132a6a1f098df1090dd3e929771c099561379dfa204889626251b55761d77f70a2d7e9374d0b59286849a6b0a67a0a4472d5de5a5ac29824fa272436734581da7286931641d694bc1e826d830c7e60130be147d169cfbf9ac991205d36c59432539020c8c7ee2e03560c9b5813303ea49a1683420a0cb41b1884147fe593ec52734611df9411554707a0fb04eb547282d7475e8aaf5cdb7320e489f9002b1402cf0659838076e9e9644d8e07af679604f4e2b98f977078f07f9d572f44285ba16aa76034c400b6171b66892e651fa9bbe99d15529a9650f58f648d41f319308f2d81d9ee248cb86807dc61e8ca3670cb81d91f3930a8351622f966f91bcbd828dc7775ff56628dabe69af7d79636bd3176d083ab80a6ddfd20f6a98d50cee68957576096c256127d0f26ccc62e7f02bea30fdac9e09dd0bf7fd8093994880517f3c4c22d6329789f30b01aec05dd7508c71137543f5849baa261d4a32698098ce71a30c9b7c33c3b5a63d19964c862f877ab9641063050941e35c8b1e783f0e30881060a21dc7c9625c43704468a88c06f2c8d73b9fc9e985133c454b11b3829cb26c24e2f9f672c0ad42eb4df0a8e9e4f196c3fea77d48ea3dee7979d76d052dc63d1b9f1a0c6b996420b18a6a34c8888537098341b833c1025d45800d88037a16d30b35e0858cc7b17ff956751d7fb90ac76a371bcde8e6328f992664a9d509421ab21cb78f88be8408f3ee1dc9a44ed67ce81c8ce07dca6c34f58d35c3a64f239179021d57e381dd54c4ab3ad81ed5b14c0e6e6e9c6538e3542c990833cfeefb9cd65e2282a86a50fede357b636c7a4b670fff39d7387be9aba1b67abb6ee52cea6e2dccbcc2245abcf2decf54ddb029095ee09f02313fa35fa01f1e6e042ef3ffa1663844f189aa650d364f3988afdcd33657a58a16859911e704f64f2a758dccbab1083173f85657272b0d9479e31e2ba58deb814521dc7eaa94027b98dfd24f2a0a48c615498c97bfe86d2cd33f551c4019de63187bf5774b0f850d406b4c082dc5009d1b53be05026c8f78cd6836e50145892514474d4943092cf6f01b146e4f7bbf75dea539d06cbcdd2cb86c1579546d1ecf905fc678da77775760b62056e412ad86bca3199d16220f46c29c7a0102ee402865c0b1ef6a1bba9edb85db8e6f9626646452875305fc2246140f788f84b0003558192dac166a60455fc030402ffc205a3044a6342887f467b1aeb90f9243d34f63bfa4913d5e96fb485468d08cb66a8f6095a7f0098950b88efdfd00b0e04081a48bd54bd4881f118fee16037c01be83d284fbd95b24547f43c6a7b0990c17785acc1e940719a504ebf0627ada5d31e307aaa00388d6e260f064988b2c58a9013cde96fc9f0aee71e1f2292d36b90e446b248b6bad29c869153cd11d62c221293bc6dc674f6573e1074434aa35b99e72c5bd66913a0e875d3d20bb56bf0e6c0e30516fb4e1434443939c7717068e35dbce0cccb9db92c58ece624640f1cc30d241df95d736fca4c5ca7f01c7418ea9b60300d4a8df9158bf3d79a7447d9d7a630ae52066c6acaa1107722d209eff136cdb4fed73ed9ce0cc1807bcb53e7bf38d43853e847f035c6f42c73d33f8475ab0dfa3ac854c55210082e35c8867480e5ba20ef605e620ae24860ac5ba18aec963b0474da52013b728708a9993ca80522b88528106881a916fa0dd9e4613c4553445677d90076af9926393e67ecbf40a11ad7e70ff3baef40ddea36620af6cd347f8e5ede6dcd44182c1d4d451d6c554d441dcc9d2646102c3574c6142ceb40a701bb9057c77c9001f9d23df297f8b8990aec2627b80a4cb6229aa385ac277f92085b03e3042fc954dd454ef3116613454ea902e1ce32b9bb34c7148aa9f0d588251cf4f62d7b8a445b617028e30e1b139f2c528642fda559a754f8bfe5ff0440c9fa99d0384aa9e6f96cfef375b9ac28a12ec2f5f9fc4a95cb841058b21c26f94f04e80131f481b29cbb9893faa56c7df3b35e4e8c8358c8a1298c63913e5ced8497a8d753839c561560c2fafb12df8c9dc1ca06007b08c2050db9e0817ff3c6f51a084c8c66dbfe0836dadbf7f69d79ed3373349d14225d2a7f1919429804848f4a8e99ad062744c8c39fcfd911bf40ded3793c21e4cfc40567d182b0db62c1c63e15c32402d7d4dc2bad2de4b98889f5579944fbe98671e5e09893a28b7b39e1e25e642c116eb8fb54d315d8e4823fd35d40f7a0af04f311b2aea8731b6c7922066926cb9c2a9e052ef5800b840720378866871200967267c86dc3c796a1b17249f789b624b5cb0266f31a1c30ecff80297a7c438522647f1c4320b0c7f68b2bd8f7c75950d81bd808bdcfa396adfd325bef420e50cb36fded1d488403249464091ad348548d526733c161505e7858909ae80bef860b09ed88b0ac18ea5b3d8769eef1f5cb19e8e2bcac10645e18c24b628ba7cd214a5fdec7d6a7136232322fc2420ff4b206fae7b235333b57c877b896293d623463196c5cd4c09ec48870ccf09c0c84bb2dda66ff33832c2613bc0ab7d9448cea6ef3e4a3733de56aa2c86d352b3e472119592ea1a8ec2a3e22643fbc0e08a6426010c8573a087dbf9881a31fea25a34a444769829255a65a1a3c9eab268dad1a4ed3e4820a374f144867a9aecd568117050e54f3eea21bbb3dd20752cd11c7f23cc3183c2cf84e8193508b4c36f809e75ba0c31f2b8372b4836effda5527d6da4f3f55ab8b62c95535451489d5c444b7cf0b000914929c30450d1a3a4e98abb0f551bce9032859bef3ad7c7a31566925dc47c4fc90588056ff1fb3b8d6a89d54a08aa31017da03aa10048cf1bd789ae588e7a9386f35416051bab222729112ffd39d97e6827f191556f86373b63f0861cf5e48fc47bcd8254328af51590332806985a5472f2709a18f9712627d589ca331bcb5a0dfa2efe8b192b1bbb8f3ac75e29281e5ecb598037c09ab8cbc475129f9282b251d37c1c03e4b5933d3f224c6112fbe39992d772486717a02acaaf090e1319a23a2b9646f5807c3bbd633a2ef214a73cb217f463c0cdd9a58811cfc5fc701995cfa541e8042e1dcd11e1c330393baa925c01a3b306e969924b0a0652de363ce78277910c4182958a07e9cb5797d8f64e38291acb49c9ab1b293dac7dd28bc41ee9d723ed6cabcfb97b587a877aa2544bb261a0cc6b2923f4fe6a03b410c69d98dac99835e04b1646cd365f5c191da1c66537976d1b4eb57585b7a001260c11608d97f060f17c018612e88a053b0e77f5d8f54e32965bffd4f71262f9560c9b5a264ec749a015822f0c32942ed2a628b04872415c3907520b9510fa8c27e2568354f3ac00944c4f91ade0d00df6ef0fa0cf1925fd98a39381eff59c8e3148a835dcd6a61b094d9c294ba9ce9917b82d33b0c009a992bfa5238eac43eebc0c3389ebed1d4dbf3abacd4fb0e7c6f82a565c7df8519458b641c2fa482fb177bebb8f185210862af1f684087a6e81a27072b9f39f53ff2199300a0ed2c1f9318c585519b6156e04f7fa58cb667eb4796e2f6e0c7aa9cfcc2b2d15857d2d778f0a2720da01f0f7ec90af337de21ec18c2a7da79ad66633ade1e4b1615679aab2c8345c98c7dcf020b5a307ca411f403f751f2f3e24ccc7e1729efc448055f8564131ebdb05054a175b84546160596bbc94470b9a0debf7db56d588402451dc33532a5a95e399e0de15e5a1b3e67c58c6b1410ae8b8f5c9b53ab754e1ce1749d2508f8111410004c346618c002e41014171da9d54e6a05fe796ea9367d1b2e0ae465d740e332e9b60d1bf19e8af1e04faf3058009b8fb67365ba49b5a42fd54f365a1c47a0b2782292ac486bcd526119b5c849402438596b7a6277e4a57c51b40326496111fd327cbdad0bb6fa86f2018d8d34e563a22aaad7ca891bf34b3686d5f1bea3cbdecee5d59baa61b3047cc70948d9db7d749841c8d075b1845ea8ff37f11610ba65069de9d81bda0781250ca8fa4917da0b5b30f873cc018abfa5150dd0066740ec5ad34dd9296213a87fed41a9fff35fce04cdf8df019d3036f672eb28b1e4da98ded7ce7bd91facf06cb7992894db2c3a1c29bdbae6723cff9c4a804f64509686e388c56b36daa3be0859f8c4abbe657b3714d0c7fd06987c3a1d24fc9b892cfa7c6243d5d7eed433e7c5bc78397f1ebe562f15b8abf7d949e7be891b44132492f5591e6d6b66181f248d6649534c5fa33431f0094f3721cdc8b03569d74cffd40edd48d2139d8c6acc33b165f640324f544c919746a7caa9fbcc5c08214d521440b1124db25e05529f6508c4650efb9d9dded0cacc54d0a9de4464b762a34b59daae557ee04c78f82556124265033665dbeef08d478b2d69cbd5b4378acec7b277061d45d96b09eecb254042557db5dd5e8c00363364f9af62d90a15ecbb16a8570cc87580fa5ae21cb0e77d4f0638d4341301058fd69eb0c1b87c8044eb494a8961722de2311a3cff115396659841d11e8a4e0ef122b850c14c6e54431cd597192335ee1c7d18d74ca3bcb68735a5b7d184706383f9e7794de6d2bffbfae200e806be685aa10aeaec3cc76adb6a59618ce2e23a572e54de77c09db660d6dd8a422a8d9965d8fff9b76e0fb2c5cd9a5f4aa03f134648e3fbb9c3bfab9482fe5ac0faae984cc5500d9983bbe13e8770acb05332218c28ae6d447830ea5822317ecce2e35e2d2350944a789e664d8a3c52b249af937b45a80bc49ed5318eec1873091af50a52d998a35eac9639c313acc5be3c3e190728553bc2fb9bcb244844368d9b16cf468203e7a2e1a5cc63880e5441732a56da7f427c096091d392fd01efc1f834154aba031fd96e480b4f665df4bb83b0f7870f0034ef9a3aa4fdf21cfdec1e03475c8c51d0ef08f80a4680214858ad64016ebe529c93c034baffe8ceda522fa962112e35888891f8bfef2e7e9a4247945eeedc2a0a31869e8126def92b303ae34b35c507642a0c48bcda41a97bdcebbf708b8ae147ac1a4ce93dec4305c7df10353a9cbf3da6f5799e954df5a0b66e4fedba02b0973ef8e8cc633385a5353d4730f3223f43a880e9d0e39426109ddff70c13a0a8541ed043bf16725e01366bd657aa214dfbb37f0209907967f21db12d7ccd74fc7dcd800ce4886256654ca83861754800ba2ccb5e9318c464dc490cf347908983dd8666bab7dbe763968d3cae89b02a403f0041efa3d2f188e3f654d013992380a8180243d25bfc01fa84ff22276df964080def031d2ed6864c51c890d6e837e306b97455e1de2c99bc3a4372934af5cec1324bcb0014d1a2b2a77c8c414c0216bb31a677ed16c666e08e83851e63fd222e8cc9e0cec7c5fd0cfa245e10c3c01d1ff821dcfad4446628f97b05f6fa86f8c0287ecd78c383057d06fa21581ccbc81d8f0b7d8cf54db410c3d03d0e17f418f498b8280643370e17f733d68778612c0337382cf433d657c47e25d74b31ea6589fb91ac4c67a84f8816f418cbd89d38f8b79c95298c7a225c109bd18d070b7a0cf4405c1c9b911b1e17fa18eb9b682196a13b7c5828d5cf40af212c861783d1dd070b7ba8cca2f4ef0aac77036128f593f820947ec7c0b8d6280f4d28f3f995e1263c60636235a35b73aeca0ddc7ce04f2d6ecb00d81cc226fe686441516e4209ef100c0f351e0202a829ad74530d12a4d9d88c51a0c9781b9e5c65781c5a57d567c0ba1f98df07d13503360282adbd23fa4b6774bef382fb06472827ca70bc649426b6d5fee274254f29609956ff65a382e1de86ef68cb9c6463504acd0a8aeb624ba5d486d42aa4bd40cb4f1ce8126a520f77771e4606d47b1bb9b8664f6ab1a4da43e68de91d7466224556a8bbfd27a8959e435d27bf4a1ee1b10feb401bf7141900d877a6fab554540b74eb2ad69bbd9350a41e811d6f2dab12239976e064808efbb28079dc1a138e4e73de8a36a55219c43e50145a41b74510eaf786b8590e5c30cd8c95f84681fc9989ea29b37ee9b2281b19afa66ce56ab64fc9128a28cff21a9ecdd2e8c27069a7ae4d433b1111b77fbbaabe0f9cde0d56e23ad5ed5dec963a18b7ab89ee7c93e02e796c27b568a8d47297ff875c7446e2dcc58d7c636d1004df8cd7675801c7125e3ea7c6aa370fe33d0907829b28ddf7768e16cb20727b21c6100412b7e1d13c21533a2fdd5cc139880a6105ea6b0e284021a8450cdd88438d8e7e86fa2034e919b9aaac9256a32c945b6d8ca9027183a7f12c350640bc20b99152bdb190572684f073bd6c9cb2db5e799c6a5bdf0edb0963395786a27089792b30832d8ec53fd088cb20c58c426631748046b7449731cb54042b3dc9a1e1fcdefbbf0ddf0614bddf732b0807a668637470eb09332225865186ad678394343c11b04684f0990c56d69dd243efc4dc1e06174f83e30788b4c0677b72a8f0501c212e71a4b2fafb2aa1806d2cfe9b306705e5218cd3611ed8da9a60443600ec92864382ce99cabfd29d1e34d212add3dec2411af2ca5bc2c3d726bf397f0570ce5fa439e9b512b330915963af40c59c0d8c8b57c869c261c9a7500b83695691a1937bdf2cced3a8ebed07a653bace3d0cc5697b7173a4019d9f957389e763b0012704e597fb633465817f15a190313f733a12b0f79f5606a84da6be5a1fb0a87a0029d29604ee41934426aed561f682e40b4cb26efd47b590b782eb4f17241a5699e9838e639ad9234bd1a74e777e96106169f9cfb8c0e98fd03a0cb85b38b510ca6c34762982b24b2ee022f99d86a3dee485f128c804b2a0e9db589bd48fbcbdedc0098f62e3b16b28525840871bc6ebe913720af1de8b80c2fc94c5639475098127766381d5fb5e9745c4ea2dd4a4c9482d7831724205e4120695c2e52930976d00bc94347fe0247f491b60c3d1fe85da5fbc74a194f3f7e5372343fe82f17e1f262fae1ee61ab1b85ec3b3fd227f95feed0576afc314c924b45a78329b8bb3b54bb776301a787b88dacf0028108082816356b530829924b65ed01a77517090bbc08a9a34033121d25cbeb96dbec8f8888e13c220e83b84e49a23cfe5a4ecbc1451e3cd15e34252f3014f6a629f463fc83adb666d72371108a4d88850724e30135ca2544a87ce4d130e91055eec0d12dcc21937fc51e90c70fee49dddff88d8ba6ed299f04ced9a3dce7c14741323706559dd6b0c2eb9cab2d6d0dd30cf40b87194f8ee5fb6e5c9d3ee19117fffc04d7d1098640312fabac33948a04e58db3f6cdd7ae9c2f7318109b5461c01bdde46da1e19a5a3b3020ff0f52d84e2afcc7a6c2e68c6836e3913b49790ac15809d87a2e02150c67edc69485a4169c18e4ecd5ae3dfaa1b1ac117d2fe81f60db939fe5d4dd7e3021074566065910c8478b990dae1f30d3568ba0a1282d4397c6f9e0b4fdbb08e7e8ec096be170c46f0c229679f006e8a62aa782ee9422d549209093c7266d844bd2110ab61634f8d9a79188a6a21722240298fe7d35d53ad03c33839b75f71d2978442741298eef7ac0b0c6a4056e199b03030b38291334baede60f223585e84d98a9c269f69752d451e6765acf456880ba0a37fe9f0dbf99304e29f5b8856da64f7be98f9fe45416fbc4965bb892c2288344198268bacf5aa71296249049d0f9f2597bd5f3a08bceca0845d29e936731c118e0574428a604e812190d2367f81a486a48a6c636914c6e80048c92ee8e1a18880f5c77934001c1b62df71ba665c6f885f996086700d8200dbc4253d0e7aa28bcad73305e78281eb87ef8fe5991d6046a7d55f65900dd89b8871eaec0f2845464a716e3445c0c458ef93950eead2336ac09497111e5b6e44512104a2da6ae0574af51b047e4c4564908241ad30a004482a03494b044fadc1cb10c4ab475684d7b0f951c11483b15d8efdd5bd25f0c2d6eb57e75eae731f640a96ef9c0e64b15e08f6f7288ce29940d82f74fe27bc524744894b8fb49b7a428997c0a2723f09b81d90783da5c9340bdbf01bb62a8ddb62a803f83ffb0a485e585284080d5a81d847d504945ea81abd8b88af2f5a06b3439f02dbbc4dccd600b834c0f87301e018792b51f2d35c3721915cd2c1abd8756c53d24b2e166b3ee0a918237352754d375c0a032a144236b404b8355b0211f3a0a8dfbb469d1a5e2ae3d14504ece2c566e93c95b58331b660e37a9da2879e831856e1068ec62f41108479f9c471ac373c4d27a68b668cb08f4b1e30d7c04ea17dcaa1cef1b6e9d0c63ca737596c02572615a017cc10d20e193287c99c8c9a7a3e8ed49be903a918d5e0df749705d173493b3f646d7a70847f451f2e3b70305eeb22bcf43c64abb749b15bb9e2fbd35e9586dc27f7f7c2a583a60a1506871503370d0333cd11b8ee4429e66e267dc10d5bc5cddb32b81808441363ed70692ff681d9475e53d659406c558162e78a8f39a26a0d11fac13ee41eee81e9d6f8b1428bbe321e0ab3f800b6db5ff2ba7641735ea156172085a6f274dc23375f2abd19042d889996efb1d865bd068a1529570b1f62e556d18e1880b11471aa4c5a3eafb4a88f39d6d2468d98e93d87f02848575064fb611461d44df7dd8b382f4402c5fa93fb476328aabdc3717010c13cf9960086efb39cc7caf866eb53be38b080b42f5b30ac036f376368545002deba4d60273b21d1c767001a03d4a50ac64c694aabc6ac81b9f258097f6fc3ca8a0baceb6223854b1a036174fa68bfc437af489acad6d6bc599c0d0210554fa138fe87980d052941b9e3c75539e11320c2f241516a979f46812a86ea1dbb5d04ec44e265b169800f6477a365f5d1a7d928fd8593f11e8c4e078b916705289e6a90389530eb73d0d6f2a99b52ea063ad3a9ed2eb3ae46704e44614dc43376fb7f561b6629078fb99ed2741300dcff1f9205e342d96f8bb23cd9d16780f018205e2923005dd8bd88e06ace0c51905638e3ab1551002ec418a59250986e8d3a8bb916b329a46788872c7e3de106d703cc80f64980922d6131983c24666dd48ec6ca30f1f09b14ab17183e860707eabfd9eaa5f6961c8ad979c48c1502d04b64537bd1b0e420faf29e359d3ad1a4eb8eb0081aa4e0b5e1dd6773006450e6d1ca9ce8578b8051167893f39eb954345400c8a1606d7a123024e32f17d174e3dfec97c24823ef32c7911273df798c3c7a91ac6a7e166a502b2a7805580588c8b78b3143ba312fe0f048f9d6b639a985a8d6a8ac4fbacc976e469f2b5ba4229fb40b3874543812eeb0d179b2011af708672807663186e440a0224f0330083a8216fe4aaf2abdebf2eaceba45f04cf02f41a92e18ff018d85c67a039c10c1befd2b96b950f0c9dfeab51e4601f15ce4a0c94b1e439315ad645609996cbea580fc9d65b1552ffcec00c9ceb7ae809a3a6348bddb403188f85de0e409aaea51a375a9861ba925971516ef61cb10514ebe44bbe7ab21d8b2c0fe40af24d950add488bef97b443570df79050589e6ecb97e46b127ac0dd817f68ad5b8f419ef4f74fa29de6eeb2fb2324c40824f1c3cebc611697c5514176a47d97d527311b86b76a5eb992ba81198d337828797212298465a64e90ff82c78e5b88ddaeae0cd00c90560f95d6ca90d2ddbadea079cd073e9ca94aeef83744d3931c79a729b876fcc302441b6fb5cd22feb97d544f332d9f6083d71441424d81cf154e86a4a1d42da5c06852c831da82efaebc05662d8c5ad0e3c1eca69a2a3b8966b9e91a5f04d345a70982df5bca77bf43cce824c22803a24ff4096da0bf26d31e5ba18b222e285b50958c07bcbcc2c1bf9735efdcd63d0798207d5e5cf1f7466746a2db3d23da3fc11ffeef07608b26561c86d4c74878c8d2a1e9d9a45bf1d19ffb3a27af6fba7fd2b28f893a9fafd56d7a12f8f769073c7a77cc09e5c95ef2f1c77d68855e562a927725a1aeef0ed6506a19e8aef9a90537fc637644b867e9f333bd2e268b20b6893f153c6d3d3441475b15c902d6e901b9d7f1bc84ea974224983c942adb6973c1db6100f3e1732dacd7c51ac939547a53aac28769d0b355e5568dae9e71101c20535b581bf0be7a9de78f96c332c133ce34ca2c09631e8f3c2d0552dd3a278a446cd0d04c26570f1161dd014a4fcbc4a37897b8bfea28877b3ccbb10c1731610c6fe43cc5b3dcb4727327aae81f92aca0d602117d1e94d62ca1cfd4312edd6c0ad77c5046bb2b78aaf875ebf6a55046d67884cafb7c2fbba6a00df07857453e446da1bee3e2c46c3987dae7093984d7e63400a651c723a6039a6cedd890651f33d83c148d03e5a34596915865799aa1d3e66f5ed51861a65c0c7f36b577217070030cc50f5f817ebc554e0b8d6181b64d966976fee790d400690c4a673ee4e4681a47b22bb7f1bc41d27b512b857762230cfa488103c3532f84fc76aa132acd05c9e9f9e6cf42fd23935f8660bb4a624cdd3032febc39927d1f025079a1c00d211822cc277cce9ddfcfd405c49ab9c30eb43b657d0e97e944c95eb3d91ade2040e19361254474e873fa1b65799745ce94aeddb386f1b2008ad19cd0453b7b5176e4a1334fdd4df3c71b4f589a3d1f15bb15afc89b9df3c3a1920834a36209a963e233afbf1f26fc87c21c63ec5be2ad057e27f9cbd042a47133807b66342b082080da95f3c3d027c6dc2f732e40e7dda305348579ab87c25c4e5ab4c5c5a45e2255b9d9050f270939abae7a510f71319ee5c008ed638a906915fb98c30798b5551ab28fcedc17fa928ce6c3090b9a0c9953a154ea5607f7cd3227f7cab6880cc40c4ce747d85b92ec541bae2188e38dcab7c7037f60ba5651417782b6dcee22f32a08ffee67f0ec914ed4964dbd0298909441f3055fc89192929e7408833e4bfab266c1897740611c3f45e31ea6ff7936708ee7380542cc0d2ea7e2ad648c3ab02a11597e1962d2561b072537aa3778d09f656818879d8885cf441c95a7905b6dca8cc618b3a9d6bc2a5502742e79f423f020a94522753bd528aea86aa1994100f04e1e5b51e4496984c6cbd7d72dd125e729732a032e5507120ea853a0046e89a650dfa10252da52114fcaad9dd846360178c91163dc4688950a824de36b60cb89b28a04b83843bf3f26be0e7b35afb85f38533007081e7c5bc18bda630d613a74c4c00488205355485c8b58b585e47e3b813c1281336acda4b0579cfaa56ac891d7c24b6d88c49da914fab2000223217cbdcf89fdacce3c5de8674ccd14741786ea684a5e4b9be43d3b6d70af094c352493aa154a941885e3ebc1c10832800ddad5c911c8d40a8eb09d21800d17f94401f19ccc6ad5155e153310b2679892fc28219415984eba50256a1e6c83bc0830370e01bcf4ccd6f57bb45cbe56f4b8b335a8a66a40927a7d80736e442ea8d1e47dadfb4d71462032252089f6274c6f1d58f22923e475988727097ff68df9361dfbf5b438562acda88ac5d180ae7a62625712271d3af12fa2271cc3f61e466206a621d0a9bb307552d2fb859b4265d23ab20709699d3d6633a12c793be3f4194a9df6509d8844b8bc5bef49d7f54614b6d5feef696facf7c9586aa4382a3e0b8e3880bd486ac1e85631b997e0d05ab4e12bb1159052642702a071f8f6500252c1001142a871cf4329a97484769dd8d214801bc5d233cef8d2397056a6a054704fee0cb2874c385a06f21bc08d0f82dd4e242592fb8bb2f6136030828e1082f8570ad5a57160a300615d903c94f064bffe388ad4b591a037c7a771e689d1eedcc111af44c033dc97ac82ba3715f794369490c341c2a37bc97b98308c4ee891c1bff9001376242fe3755537fbf89cb8b2d4b52dd76fa639748e836e5a8f937d610a492c2d2bbdc78e7fbed58c6138402e16c7c5ffcbe587da40963a0f91217e69ea23e804477eb62c60de67b0bd921c8647f9c225607bfa95cb9f3b2f8a3b4027a9f79c4175204f2b11326272cf568be38963787049b5c7d0ca4fc96a3b03ae91d9f3d16b4a79eac39828754a659710d630d65c9e1e69d293ca6f998da62b6c160d68be2abdda56ba0803b7924e2e2dd8eb8bdb7f5be68a7d621a7ec18f000e3c7977846cd3079aef5c06a761507c4e6c916a39ba717dea2bc001fdf4b8a23bb5c218a464885f203d7ede797381c21ead56d15962dd3894e5a52731e849f0234622a4b719e8c89a283715eed4195c59143d4e6775d06fbf329df8c60182ce016ec765fb56cc217155ba07f53eb614a79e42c26c6896240a7cd7903d53088b48854f9a687b05df316f97f74980ccb58ab4463c269c0b47b05e49289a2e438e1273d31686d029c11ba72180907d085501e7da292ca377a1b80b68688f51c4a7c884e27b8c3663d94705f7ccf246d71ef31bb47ae149f0360523cbe405720c0506b18c508e21b8b7c7eac9d112965816efa4016d6c23cf1a3da0fc70cd2e7248b28872970808d4b44ec732d314a67fc1eabfd955665d8c8a118b5fd953cec51d3b3bc97c584130f0da9577c1917d50b2960cdd0ca854f6a8346ae9c7839047949f441350ede7959cfb22adada0fc8538a21fb83dfd50441a73250cd2b45555498d945634c2e6ab1f7778ab608c6f695f912eb9af5442903429e73d509702b29b61fe883976189be486033c1bbca60b9c35e26656c81c41cef7bc50d6c2fb1ec58cab6c812f073d956c22932d39a223a561be75961f83e5ca558ac3c6c58377723ea11969e26f86ce8765511227f561d1b3d71cd61217ae0fad961019d2de9abab21a1d34c1d708c0590209240841eb9d0bdff29fc9e4ee683e239789d3b8222b47dae8adab15895906fef053674b4bf84438012c5ec09b1ad797ebb0c4f6d7c9d9b49003b99ab5063c121dae06421660931ac4f4da9228912813d24885a245251d9f0d6d4ebb2a982a58144709d8af082ca27ce7763e268c43ea1c003c207916c6d0954a1c84202324da250ef11a936bd59c13e964cee35c7422c041a88019b610ad48c040bc86269d492adba2d4b7a063f54b068882bb2b5488be54429b148e659c348042284d20116a25be7386a90b8d10b0122a2dcb0fa80f1f496083b624990dde24a5f0f0f87f5d59f1207b434eb7aa93d62765c6aded03ec787242880134c78dceaad27da4ad746769e03d3270d4bc883ba70e77291ac216e75f5a39b00cf1de47eb5c79a45a97c772e725761a26612c513a1fe460fa0525b142b5ab70d0a7add9e12b289355433da90681d33f38ae7b57bc79968d20070500bc9ad3a995727970b41d72dbd207b19f742e2d76632e09e7daedb3830fb6fe0bbdcd88529ce4417fdfed61db3b304b9264338c4bb11bd53705834d7b0a23f4e0bc72c5ea3a44449c78b1df4d436f62cf245249770e0222a37fbbd5c85c297f984a50e9cff376c9b8c9cab2ab8afa4bf3d2493f9a05e58d0e1aa85611c01c8060b0f8c8b76ffe8174d7af7f00d0906516dcaeffda1073b558519022bd388d022e6cb8d8b0e7448411002a05e4bf5c298436af7005d4c79188d899f43a3ee69a0ad5d385d16a06e45bd63b88f8676a3f1d524059f99c85693d6b2759ff5331a8c054f8be1c1e7292acc97c9f3e4aec9094316e314a9382cdd6c74c1e7d75e0a796a1e9d9ac9b097032efe183ce34836858c22090f1831b96ce401a44aa9b5cc9af2e816511b1a56555a1ebad75311ffa94d692eb799f8a95e2e30322aad487737aeab918c5b1cd2236697d6ba55b8b815523213891af72461301e4d4672c2008b1fae2b64aa556e6a14fd0532b401005d5c964e9b1999699a81e743d9640dd42a33a4ba6d9edd91ac1c82be3239b1229d21839d88ee4f98c7ead2be47e22ce4bc7185d16c282b106a695a38266d812ab826d55c0db3526bdbd5752843ca44b7fb6529f83de7414598be806c0896cdb64a728043f046e8e17fd31191654eb4536e25050a17678b40e2c202dbda321de91e9248e00238e04cec493d67134d8604608c1b975e0c4d30f2ee45552b83d27b8465aa22110965e9bc16336cd1a95abdace7a05392a0a957868b3028ab9c1aa1cdc0155e0348878689ec5856a08d5b688b0851a426a15a2346e7fdd7b3fc1b1670dddc4e3b172df55556343da89290adf0873cb94c522a90defae42b224b8aebe080503c2feeda92de23d1c386cab4cb9f60c40d375a0393601cd83a0d0570115c987d31818f1d3044060ab225ce17f66544f8d5bc5a2910abcf93c408a930f4dda7c63cc0b1a54e55ff20c8cbd4eaca0598ab2692bcd23a43c5e31c5841c28617b9348cf26bf974fec6adc1cb72b8cc9a4f3429675d8532de7521fd4d215d89025a495792be4c9efe3b9f5b3773470c866ada409b5d5a2779a63a0681d9f6ad82a47e7c14704b13be555727397b125aef72ab3ed2dcfedcc454e7a3ea0697eab167dd3d5b12de7fcb2bb3ee2ab0e2bc799d6629317cd5f58e7a44714029eccbe2d0aee970ba60e1520d3c31dabe8486d8a3c8c95310bc0cc0799a052b8008c433815922ca010120f32ab647ad1f56447b7a4a58c0522ae9f36839f3a09f1ca5a46fb58f57c0fb93a3df049fdbda4ecb93ecdd2a65f7944e356502983318f6ed84330815e84337f0c85111fda153af789cfae8b3364e387d73a0262bde2552e4864a98ce28ea782915aed00024e524d5690c99029fc1388658dea05fa7fb8d4141ffb6fcdc4132b54548e87e5f1375d51c7473aa3fb0f26b7008bd922cbdc71658f85f004b57126cee4157e38f636e077097b9176d508d0b961cfeba6532627e6a18ebcabbbc699bfb9fc45edc2309a71ccd3a6c7eddb55154f030bad124319b945070352a56f18ed3fac9ac83b60d2f3b4770864b6730fbd7ff7569efc4e2d3fd910f4e1061475b0c52c0727b932ee4b57546cf7c0c133d3505f660b32d8f6fa7342a7f96cc50dc054b75277416207d3334e25f39d1acb4911c544e6aa5beef1560b37e9b0e4306f4619bde7b880aa9b4bd5a169a6bf0485e4bf15001dc58a29c31856d69cbb5c75ac165a81a2568a6065d1634b67b127798eedd726ec291598c985fcd9a72c32b392eedde3bb07f0c8c0d70a291f61bb5d7243d76bc226037f7d3b9aae0d075cfe22f100e51418938dc1736832e000240659a4825df4df2b1ce90b1bcacbdda2ff9a636e1024d4f613c5a27e01be9685283a1ce7f152f6678dec03c5c761d7a450125a531ba8d052f3de8d44bb0a8f57d51814abea7439d3953a9761bccab1c2b8153cff4e5b23dc09946e3950c197f7623a85e0c6495e69feedb40c5a4be5808e8d4509ecc53c8d67c80e0e236546e141ef9a1b19310b6c2d25df79a58178ede8183864ad72f08aca12b8f19941652987e76798b75bda683e21223b5c128430919a6de61f53c6d718c5b92cd777cc05cee07403ff7e5ee02274e4393092cff84b0721083465cb1d927b1c5f8bf4ba597d501cd811a4dc1ac11daa223decb02e5b97a1267df8af0c39ac248062a6a6177156c98e5857f149521c7f4d20d3f4980f3eb905544f542283c5e54efe657164ab5881d2b2cf2f8a8cfb7aa0c540493feba32007e4314c05b692d1c0eeb68e15000518e9e1f2993c2e8b7c88be513652d28000b070cd72b3e5c021e7213ac0027383e17aa84629225b0e5af9ae0258e88e12429b0eaf6431cfffcbb74c81d0cb7ea1d23ef1d9f1197c073c4491fb3c1f3500db6f1709c1e6dcf0cb65eca18766fcd16ba544f873c0490b5f4115027ca002a2294695480946bd4390d31c0b440b91e322926a83c1e08b2f5cc459553fa2c239a88b54d1ca5c486759ed54311255fc808852832b25d2535bf88041ff25c513d5db7b2bc51bc8141a1f9f669e1518ea94a794d9b55f4b3d38c7af37ce85aec258dae80cbf61d7c516f85e4e4b69a329097af51d331b6314051b15ccaf1250880a7a0f212b104d4c424cb1be1631e47ae7b98abb8386dfb2bad17d158761f3184d4a2f0844042931e52ce90c30569d2531e6bcde291723347e8214a8ffea2d29d0eef21016a83e36ea761cad943f851627f283274bcce7b435c502ac3889e98842410434215046e48589775be4f444010a57e440858730cd1b501742b982c0c010b40a466d186ad7d7044259473a5f31df439e121b363b09a99cd861071012b69646aa9fcaca6c16e2fe810871e0387aa55e1022755e2899875ab0299834dcae6e47781b88435195aa86eafdb272c5c0568f5d70098b4139350b4de20ae78c730435a38a43e21cf427109db181c2200e275a20be5448a2c35313ace8782662ab5635a039abdcc410235caa728dc7224b2777864517bb4c608a8e99053bb176aeca08d535f1c16e54f3d44a644d0d4d15d45ae7b34a8f8133ba1bbe5f8ddb16bff76e543690298e1a4f320d39483d45a310ebf0a0acf1bd50dc4aed800da7dc33f6f17cb74430144d2164de5e98d3dd8485475ec336b241ca63f4dca264dcf56aab3982844942c714e530c1278f2760c49b52314cfd784c91d95c43de10d3d8b069bdf3892ac201bb8579190f3121b05110326e135f3f1e9bc9504cc1508c8dbf62b5c13416c1eba42e464c8140b31f78e7f1e49071c6437de002bf4cffbd47d875b3e50b6a4e10c964655056bf5befd045f069b05ca22ba9f2eba3993400a1f9cfb3c4c9abf5d926e97ce926c7fb07208663236937ef0e9c79e041438b3d7a9c909898b220be9dec9105a144d2f3c90c621e5b8592c6fb92c021745e10360cdc421165a4a0ca8386637e1093885223224f572de742977f36011ae71ea111830dd55d73a010108b8dc5e825869fe2acae299c2fc703bbe97167fede23e95cbabcde58c600283c0be2a75c62f971e4076a95663917018e60193a1e7ead814902f63cfabdcc58bdc0cf2d1268a7c7180d9e684def7996480807744b6c5d39e8d86be3be77b910fa2479c5c79ca070e29a0e370b78e9067c43e6cb824d6e0b692d9e004a5ff6fc405004dad192e41e5043755ea54b84452f3861e1803c1fc2f4f470704c17fd558a00a568e32846daa100ff073823e9570cb31251aeb3123b068ffbe6f3783ce5e1021717c209e8ddbe948bb7078562188ca9499e1db1a04f07031997215f62935a93c8364e52a7983ed578fa975560e3f90e67fc48201bfc488228a87533dfe25b9ba5ca5a017ad05e1270789f650f882f2d909bea7ee5a91d61e0d31a3d3b929c6e2a78f56bb9952e4ca887aeb7cb9c76275e84cc28f002e8a37d3886ffb2114721cecb5d04d823a6be56e48a085b95606a4e73814041b48aa157a201ee7fd77bfb0b3c71d32b194e0e8eb04e15f8644a50c215f0442d367c863a2bac83a0a7c708745439f85ed99e7c01a1b4c060bb8ed2841b6ab047e52d04cfb04ffbecbeafbefedc2dab8c0b4199732e1b3bc030e7360f385737cfdab3a08fabd921ad09420cd28303302e96a08236615ac7616a960a581ea444354c711f87cc492fc5c41944246cbcfaa7edb7a7e688a548498e4de176a2f49002218cb766daf1d05efdb3356c0d752d1e796fbb18b637f6ccd9f1b09f72db3bbc154621c9de109bd35f8d4776c7c808833358b9de34064edabb282699fd3b09b1bb2683853490a09b4e0c739a7dd190d85465c5f771ae2d741207d1ff5df3c87597c656cc850e9e9c1bf1d5a9f6c213f911ba10f5cdec346e34de7b25fc22114ad34b0fe92bfaedddc7be4e80a895449fc76eefa8e0af2251100bc6f37386724bd507989b8e15439eff15bf68aa762e42ade9158d2a4ba9d3827c2f0645b2775ef006b5015ed6ae912b35df569c16ce7c7ff19b09fc8e3aea82c19a55a0607a7081c4102494e4d26fa4c7157a1c2659cde5bc5c01f03c04c531e60bdf10d561f924195a2e81bb6c1e1ad570ae011f8b5820d3b045216e8f72f0b644915d8ef53834bbe9c75471e55000994da81cafc12c6a268fcc84b4058aaec959b71c8d70349c8fa1be617c922166efe36762d1967fc4ce0fdcdb151091a97856b092c588d574865003b6b012319c792f597c0bab1cc9a84ae32b4ee29a405e752f23509f152714f90e21944aa5e7ca54fea5b0f30ad60693a238c1ff4ebc5ea94e382311a72fff5a670986ab6ddcc3911f4562955703af2eaa5d53e61c4331f40e95d2c8daf48f628fd36789210dcf39bddd0c1ba3118f1e9a12225b65b47621a916146a1d55a2bd0b824558bcbe04db13d9f9532fadf186507cd0801501d487d327c2fb5bf9e9561d46f82c0f4adaef24dc31641fd3518c412805271d503d7fd4232c22d26e10b61b704c6666f24fc716ec1dabe9f4e461a6940bddf7d7ed5323021c9f74119e489e6d28460fdf2fb7ac71e2f1ed06e04f1401c0a3c7784b63c36b36e9edf2fbd28001858595bf99061ab494bdbb864aee637e57b9df66ec7e122aa1c4bc24b2c7edd14bea2c9a1aa83b6ca2a08ac4f62c657a01aee499e335b1b0c76f973a6522fa420aa030232230c0da0f4fe2ab0025441806390fc967534e8423fd6ccdef03332624a6812c6ac10276460bd113d0fd51aed1f511fbb06c16d0a7cc003360fb8b4fc2c3e3f805b064154ec6e687cc461c2905c18d0d9dcf0fca6fdaecf75186739b71c4683b347889b9c4102fb8e55908fb147b207698708a3e220757ec2c6bdad37e07c2138ecf77ed69c006cd296ef5da8432ab3d409ff4b75f0eb2133f761da2bb60a7f04cb9a3c5e59d50d085d6619296ed9266032e483f899a203d11a026f6970c1d31b7f6ed6acadceff2dd292db8893b095034d88a5427b5a60161793d170c4d7e3b90cdb58677b0d3781320cf162e434293fb2fdf9e56ac231769d703923ac9abab0cd787fb2a6d13461fd95c40ca7194fc5da5b1e44b8bf8bbbd656aca7506872e95ecab587013b2680998b00561e54fd89e6e2311a1b03c346f32397fd0d0e0f1fe1029ad2b9ebbaaee136f195b774e38bb56e508f2251ec07f13a6b5b4975b6c8765ca8865fd053293908257f41c35e7dcd530cd4aef9ab74d48bb80da1977ef6a4326f1ff41ddc82f98a9bec6007ad1c2087db9acf8488ac79bf3a7e823e6dea7086133feba70cc56edf0d97c500e3a35f600a8fa0c1ca7d863d50d36d7ac6ef92fff4875b86c829be879f6f5d63046312648b9611661b6c77886d63b48a19d2e877d9fbf7eb0b18001c793ec41e8ba7352c585bd9dccd1e08e458136309e590243aa4631d310a6cf0a9fcc4d2bf90411b21a130428617f94ffdac2a26f5a3f5e1e079e8ef80d24456748311ddcdb550855f353ab8a9554151d678e28cfef9d0d180df9b8bad769e91f1cb8beab31481e42660b90e9eeb7c8ae82eda60de427d8d554c9be42df8d07d900119bce7556ab433643d0197dce2b9fbea2128ead6be1868b2d013881a370033226a6668dab10b4858440e540bd23d1fd5a032a09d3b032c857fbf2c8232a59c48f33976310302acda4701d7591ad5817914e61dc5516bd2714ecdec09527737967a8e089b7f14e4a7943f55ff01748b028a2d82705c3090424a070a512f1e5d7d2fd1481a7341c95c7c4116cadef3169cd06b9b3ce7f355d6364f5084d0890f0853b80dc270001818068781109420850b1607ac081f63a2eefb2e143bb8d5bd0e547e317fb42f09917b1322b79449262903a207e606ba06424351fe431169a0f5a1a6d4f00f55a5c808a66504ffa1903ad0fa505c6cf887fa828aa1943e3a6a09c5a4e53fed9581d6a739b9e19f06456888888a97ffb4a21d5a9f76c5fdd3b0c0903e2da90b2ffed362ae81e1fcd3c27cd49634a65750d07f9bd050ebdba274fe6d5288a8141911fdb7c1b62c38fcdbb66c485bd247df62d1e1b70df1dfb6f4d16f687ddb181dffb6331fedeb63ebb3411f5dc77158970e082d1cde59178eda39675d1de76e5ddcebdd6f5897cba6a6bfe136acebc6dbf01ad6652347d0d7f01cebaa91e32cebca61398e75b140781cbfb12e9cd8baf19575dda078f895d3b0ae55083a3c0d9f615d3444f8192ec3ba66b00cb7b12e19afb7f118d665f331bcc6ba62f8eb6b9cc6ba6a6253d3d3f8b52e1ad45f5759d7e55779caba543f3e5f10b5526ead2b05e6ad6fd6657973cdba361ea3022f48af96e628ebd2507eb22ed4c9ab759d06d0543db3aefad3545879b532a7d6955558c5539fd64533a59fded6351ba8be5e46685dd10abd4eec5eb084c5f326d7c274ea56a2dc2900ec589025b4c397de515c0861357c2be45022781f840559ad5aecb1fe813b72e5aa823186c9c261f69b2284406a82072aa41ce144112590c228cc078068824a171c4690dd006d4f9e7dc54d9419424563c6142bc3868b9928a918354933063dd0dc325aa8524c579cec7646cad45047249145d2156788967082cb0b7daab1007c2f134d3cb082284e40840c2048cad2924d308df1a1f254c4cd91cf4ead8b7fc2b849bee40b2858c1952ab45811eb52832694969082881bc0804b10339001122c38325262da403a91309c608b1050d0f09329b5d8e704f3841029a0c113690120b24c01840d1778f69e479880092c50b8c08824bccc2fd285288aa0623a718170226b0e17f8a99c0207aebc68400597171826a4fbe01f7fbd5e3448e9f04b9417a1d5fac20314441cb0126687968cc1cb195ad289747588dbe2f8810db25a6b90ef50b1f1b0c4c8b184d641143338b06249a56345d30a070e381d1032b824547e45170e6e5c5146868d1aba1a406c392848b15e300327cc14343761b6a059c1b0a2b1c36a86109a8c14d0d82cb1c5f0726bb0b88286068b33356e0e345445a85411d6b240c696c5171a2d0b2c66a060a071d2615583b0c992a04ddc59856d2d9654f254ab164d5f6badb5d65a6988d1aab5d65a6badb52ef1f0b5d6da7d48746c3aa6f910f605d18e101c85010343cbd7185dd0027d9aa9594e1c62ccea83aef042b9d183eab2cc88049fe5b4b28ce7b32c6b2c37cba813462c80c14806d9947bf302e5e1ae76a02bb89d1017b8380f614474d181082d320b5c1d1a7c28e287a117f0504416590db77b0833c2861d8c10e20523907ab8370f6146844101160bfc80250358b074a0065886b801cb144d58c0a026b8378444706bfc903db9390f6128d852827be3210c054a5d5c1a31d0232e0d1e2808ae354156824b8304062e4d132cb8331ec25200260397f51096823256ae0c0d64385c1d3e5871733c841dc165cc1166966e8c0c5026ee0d012573ed093e70552ac8866e65c2c9bd51e470510f61302b3a70b78730d8182ceee921ece8955db9aa87b02319680aaef610763414e48b21b9039fd6875ec0e0e75cad1ec28e9cf0a20527d6ce6c1f102dd97878e4c5161a35603710ba797864a68b052a52bae205930c9c980dbeac1e1e31551163a3836483170d2e313a78d5800a8d8747663cb02406c76134409af1f0e88b302c1a4b6098623c3c3a23c3d28c1c303053cea8c0c60fa12a906c1e1e95f122a6c65ba2e24c0d12626a0400464595334074300336c5179a32ab1ca12984c854b144a32396c50b1cb49b1930d53c3c2223d473de5504daf9761cb9c3a294ceae29ea9e8196efeeee6e3aef953ff7dedb8597ff6ef3c3d834c1cd8dd70c9c7471029609928613b724032c4764b8540f62528c29c3444348a437e4e02092a28a992762523c4b5fc0749183981c31625fa494f1c19321e425c91ec1e3a5bbfc817267ce4923148593d9235428e40c1ad4b1df2edc0b81a85efa2a0271f092461e5999733cf9a38a41c1e5452841f6481f2f65ec8f6e5e8528e29fb37bceae4e393bc85eac31202f70d9bf24d2935df40ae30b289f181452989eecf0f18a7961b4e401008a92a8640f8f98b65c1e424f2c91a1418c8e1ef943abdc0101e9092cb48e50fbe15199256804e225cdbd08a4fa761d3bb6c8d32ea77f1eef9c3d60ee117dfb0e047490ee38b794cdec7ebad77a674f873bed73b2c7281f1e9de9e1bf9e6f9e93d2b94520f6f6540492de4b538c5624637a95a71c55f4d2abb0272915ebd06e588ce816aa054a9094a12a54b0186dd19285c994ceb0273326284133ea50ad52a96031daa2650b52524c69a9d63395094a9094a153152a9476dfddeae4df7d0e7c3a44e2fd9c56eee4808372e75405079e50df4e9dad09a94ed59d8a9490744fbd3b4a91ba247d8da35ccbb7a35aeb2e5a6a8bd60017956ae70abb144d5dd19fd7f3648ace68a7d350a8627eaa42b9664d406d91b5dcd3d2290c3f4b71511ea5105913505e35ae6ed6753bba010cb4cf4659d7cc60190d1d0e9a1c381b1707bfa1d2400d9c940d392c14941b19a71a5634689418362e63b8f4b943d45c73ebad853959576b34dc179fe60784d1388e1f3a3434256829924483c36b6a746a3aafd685a3731a28ece1e0f8a1edba2a74b92ffe4de1ba0da8d4ddeb354a609a6bbe82fcb1625d73254b983489afe8829114e4cffce293d73c88e65b0783b2fb566fb98ee16ad19e70bd05955b614587af726889dcaeb9b8dcec691e39c89ea6a938a6d7a2f7c5195e732d62e035ff7c2c00b68c7881ad98027b9a6f1d77619f0fbda9751171b2c4ca090d430b2d55b724b6da35ba450b644cd1b2884c67006c4d4741d5d4d41446ab5dcb620665ea5b022d112793a5756dae6d1c09d6a1dd3a12fa6db739796de991b0a73904d8d31c5a9711f6340fc2b143411e5a106944fe04913b9a6bf5c2d86bf735cd354dd3526eb7cdda6d7368ad07e194dd629156869b11c88d399b4a3da12a6ca2e987304040ab68dae1cacd1ec29aa21435b9b0c4bd623610c61453c280413682308ef8218c208208438728c270722b185cd07097160146153b80018507c040e20930accc008694ff3c04603c71c1bdc1a2e8d678f1728605ff39dd7286044867a2d02b2e8b4c0bee4d8ce8e224e1831920a0dc180f616678d0c1cc06bcb8f421cc8c5046824bd344b7b82c30495c1c176452ae0c130c5186ca1438309579f29f075dd517ff5dffc09541c57f7e3b702f13ff5da772515afef37b84e5bfeb372013c47f6e0499294fab90197a2723e43a1e13910683069db30179744e4befee6e877207b6cff4af5baed86b6e6ec24c985949631e71077b2075f4cef4688e8c3ba8cc9299999999bdbb1ba2a4942d9959323333edc8c3cc92999937b652b6f4544bd9f286cac6ad419353c38a81637323633583068d192b19373638315835393435ae0dd58d945b6eeb989999abcfcccc289d1307b5832c07334b666666ce9f99257d387798753033b364660fa67f524a39eb773333f3656666f68f9959327b3333ec910ac24c6213c94288e407b187658fe63177500f321d75e7e4a172681d6c1c589d140e5577391aafb911c3864d0d1939335834705637372b1c1aac1939326ad8d88871a3c669b82bb9fa524a2955385240b3230ff35b0e36f910caa9e590b2254a72fc52b63ced745729a5949d9472ce397fcc395755c7f4afbb7b761663ecbee91042d87d13c2e69cb0e94aee5429afdca13bbaf2e4b1b5e41a79a0df0a7f3297dd27e53d22b92b77a067dcc6400e69e481de43767757b903dd2557ff5e29af945272fe10c6d8eddf37fe4877072597d5ec8f48973b737aec8ec8c9401c39f2c00608a145963d69564f286db32915040242cd0621900f20901e9eaf4aaa8c1e3366f0a04163c76ae5c1cd8d0e1c9c1d16cb632639312747555223abd1810d1b1cdcb8a1e38e83e3baaee370e0701d9d1b1c7060a3830e6a30931c31470e33f1a2c7dad9c161263aa28e1b0f3c58edd84183078f193d7ac8e0e1b1e9e989f1c10735208040f355490de1d6aac447e603002a00a49889e6135f3213f6b13d3d3d3f3fd625fdc7062190eda137f49110fa4c87de8feb08c9d9a331130ec01627944ca664127d5813a20f20a715d28f15fca9eebd6d9faac404e863853894ec4640b042fc27509d0ebd379b1c23f20311b695fcb1df8f9e93d3e929ffa016957f10e9aa529a0036015817f51b1aea94f907d6356db8716e5ccff43a9dc70aa94f7b4c01d0f608145d12081020404698404e0e9d2190e8d02504321dd20844235056ede6df0a421e724e39e3898390476c92b922df152a07a127e4c6253f45b026c89f518438800e1264db1cfa853ffe795fdbb5df86641e57fe33c29f946ffe9dac7f34370f3dc54108e1cec641fff8db5bd7c95b05d8204720bacd8b8270e75382e23c21f565073b1de73cf6d843b0aeee74d863a737dce89483908799806085f01360831008082180908290c7ec60b3cfd7a46bf62444711032b5325766666666ae5c6badb532b3157a1c381e3aacd1ef968f6e53432b7a4eab5bd17b7e2c79f90fc2e2168864042a2d71f11f5c82633ec233af281487c4c4f05f248a533ec62a4546518b180efc179122978ff14b8cc5a5c83482fff86543eb6327cf50848688a814f11f175df9c85860489ca4c47f1c8bd2fa18cc470ec34bccf40aa2e23f29f4c92828ffa414222a454658fc2761593eca2d52c6a4921833ffc9250cb43e3966f34f9e7975d0476fa11eda4286ff9aa8a77cec2a5dd4461fbd61ad650b0ffcd748cde5637fe9582f359311ffcd17085adf74f273ce39b788fd37bf79e5e3c4326153cb479f4833690b2bfe9b3128ad6f82f938c3cca5c9f4d1e98b066de1c57f548846f948a550224ae5a3d3226a44c37f149643eba3593ed22d1489c6a8121753fea34b74cc477ae615243474c47f195136e56356252bca8c3e7a06cbb470f1c47f1952c665867fd9972c962d654c5c74f15f7d552734fcab50aa501dfae895a8521913e5bf5a54afacfcab582a2c7a45aa4963aefc576315cc8d7f354c5daa4cafa02dff9d844e5170fc3b4921a2526444c57f2718075adf290bcbbfd39613d229e9a39f6227a5314dff9d964e6372fc3b9d79050529eebb0c50f9d7136df72979eb9353a9e69c73cef9835aeb5a54656fa72a93aa87493756ee63e2aa1e447a6feeb18fc75ea7fca3ae699cc7e95cb91a7ba9871e3f12a65bcae9b0d79edab8cd2d9724be7672cedb00acd5e3449e3640d6d1d658d34014618bbd091dd1504587d82c02abbdc97f4d3e4a2981acab8104c0bafa47fb00c0bada0708aeeee1b1aeeec1c3ba7a8707d6d53a76acabbd1cd6d51d70605dad83c3babae3acabfd8675b58d1ad6d5392ceb6a9c28372bd51034acab6794c1418675b58d75c51835657aa0b94c57a8525ad8ed888c083414d398937575959251a617985822063648573afc26cfde3c3bc64ef685019842833a9acfe99e8e1d3dbdb954e4990e9b869d157b38c6e93fe44f8634dd3d283fa723a0c8249a328f6698f25387897434430aa647cad3e7f439674ba5cb35860893f3f0884988cc173cd8604c155b341183f9821756c0e08ce42eb5b1e8245371d99bd6e8524d5f536d76eb195c76958d916a28bf1188453dfe74cad5c8333df3727ddad0a7fa8514198db333da3d853fa9d3492795d645539604d9d4a400f91d81a24fbf5e4fdfc95cf99f3fa49452af364b45a0f6999500d32afb44a0ee4bc2441c40862fd435ca99c0826c6ae2d11ce5aceaedace9d159ac75433497aea1ba8fd66e48775fcf6ec874e9b3839127ca8ec55dd78f63b9e458b11b125d7aec602721c71d0b127219e5da351d5a12b2ae6370a18cdf84467901ad765f679ed5ca7d2c8017ca99c410da9bb39bda5095f6121843a88ef22052c9536f47cd2c8bcc613403c067ee63c293230f279115d0243373f0b599f957b9be72e78c3cd233afde908b3fa3c7325a4fe83d6dd0da658371a1b79039bb88641e8433e8b4368c471452da4fa3538f5022101fc5f0e557104ac23e3029062e917acfbd38b21cf6218742e4099a927202892028289475ad40e6e2f01677728c3d7a7cc91f9a651f7f7406c185b19e58426011ea46a6dcd82949c21e75c85e9ff80337beda2907f83eb4ec81ab7a68b9870bd9ab0e5344378bdcf6d0bab80377765632e7ee33ae63b8284420ee1c1079a8539fd4e30da86bd3320045045544ee509fdc0a72877acc72a90c442f7be0d253a7233ca532043da574045a44fea0ba2e73a3535f41fe4ca71e39c976482af250ea34cb2a8cd227464fe7538f51287d12a34f624fe91332d4338ef70775ea3ea807a1223c7d823e4129a534cbb22ca30e7568772422a56c380a823d7cf89aca8476166453932521f2b075c92d2ef4263126a00afff4c89d9e210249cffcd3f92fbe74be3de3a0dcc9c258f8ca9512a547e4e164268f2c3026be7a40187b112edf4848c49797dd707b449e768635932ffaba2bce0abd3daee3527a94b15d803bed3224d9f0397cfb4b89ec9278944e60d3c829e7941db3409419654f8f138a7c79303d52f6c81ed943a594734a3a658f0824794b8a31c59422905c62210e3ad5cc099797ffc558c7949c6019138b45537a2b71c29253c79a4d5a5509d831c63aca45799d283097bd957b8ec2a985ea1a6cb5472e82894aecf5fc984e8ae40f2b48ab04b9d3de5d9c2e9ceaa9631129523b1920c58ca420b358148aad9024b684627b827496084e0e5b35a644090c7bddce515cc9696c53375c8f48ec7591fc8953747b24f3ed45f207b68c601fb57c0cf2e89814b9b0d71c5302134b22a604468b2db1cf178b662cc5949c38093386a1f0100b7d3bbfd8094bf9763a639110ec0afb4058966fa1168a4231888b9a6368d1fe7a08441581f85bfaaaa81d4ad4110c462f8d300c44df31caf7085ab4433670abcb2f9775c269c9a993505c2a188a3b876068d2629f429775c2c9518eea969cbaf9badf8f1eb9d3dea45563b788fc91ee3d4439b4444e0e2d0aa88e55955a2d9c3a9608500e5b27af1e843319c40cc5ade44efb89732b2ceaf06750179d28115fde0ef63a765f14fa7e7d3f1e4926313b0645272bb8ac354c2a8272160a27af730556f44824773856ec88c4d750e6c4559264a905e9d5a125224f905e3b169122ec757cc99df6cac520b9d39e39718d3c80bdee2d57935c8fdc69a1a46f6f4a87e48f250a7a7d7b84c23e6dd452e88b45df472f107df7c429b0a3178868a73316619fef470aecf3f53c807d8cc0303f7efcf8816465509170f5afb5d67aaa5e5da052ab573752eb910b435f4fb5d62aee0763ac79adbe8449130804e5d58da41044feacbaafd6aa596f613b6d768b5cfdead78ae262f85a9d6710fd543b08b057575febb69d4ea8d38923017542d55a6badb5d6401eb556afb5d6faad9eadb8dfaad6aaa1ea512c7a0d091b814054af790a11e80610472767188e79cde316b35ccde1c3a317d2cbff7eb0cf0f2322b04f100dd684f4b158d458d379388469703f188b2f449f1ef6021008429ef62f468e10a250a8ee6bd8f5f7695da71861f7dc79ec491df664e4c0fd20eceb71048489317adc0018ff5da4d9030e2348dac097ae9bdbb5e9be7be81aa5946e271a0288b9f2dd474a3dde78e38d91d2cf670f47d9811b8a78ae5aca4f87f048872b1358fda7e4f57a79c3685bb677d9ecbeee8e74f64d97926977a4274fe6e941188a10f444b660c85a5624d01f9d5fb0d7eb15250886d6d79d6496538e6c307a7824047bf88287473574f1ae3dbc0f211253c03e5a971c841ef74b97dd7dd2db597647a4f37737ecced91d912eff48f747d6e2e8a77f908f1e42d81f81decc7076c75aef5daddc3dafe7e18f87b2fb1a36803fd2d267d74d1e3408816c1a8428084f353247c82363a610ce86d0e763d798fd3e4b668e10da5405d3d3b3625a6bcda80aae7c7854c316425c7e7854c392145afce7fd6461a98c0e3a441122e28bd6fcf2f3a8862cfe896031c3192f494cd1058c56cf510d4a44ac260f1f5a1b35725838372b1a3364d8c4a8a1b9aa94dd34d4a96674b68436421e5004d28370941d640e7e64129b3033184a1b52cfbaa61e27a55946bb6373c60861b7ec27cd51b21f6929a57f1b3709324a3da359463da37e24cbe6ec92c4d7e919e79cd18fccfefa3b2aa9ba1b2795812f7ac78edeb1bbfddbbebb3b8b40b714527a4be92da594b24b12a5123697c2ed63ec6ce6b52eeebe263e95bacd8acad5a49ed1668f3a8e2b93d40ae96ea35db53504d766c5db0f734e9a6559964d4ae79c4c8db8d17bd913893bb313b01d12bf3b087934094d26cde8a4738828bbc6e1d28e664e2925e252ca90277398f164ce564836bbac3b097fe6d10ea1ce4e3b0af0cfaea18eb422766cefeeeeae9bc87ae4a94a2b37cbe6a952efe734e2936634cb3a24de4f8f53054f2645292ba559c6b50fa8ee24dd882799379a9a9a2205668faca2c19d6e9fec3103977d76cef5d06587cc9108ea0d735630c6f8d97c7f3542083b05210f9ba7cef16b1859760a7e36cfdc75ac303bc19f6bf3dd26b82da50f84dea752fd7749983f3b0ff2902e8b8840845d23db0c0921872d35b09966a6379c3ebd16dd093dea902ea91c5321f5db27f36cce0ec9f6b08b0f5d7c78eafdd0d28e25847daab07df392ecd9925946399b3d09d2231ced60f4ee3a3574a3c39f71da12e0c76e7697443e3b0bb1a9a949c728454318777f4856cc17c90a059579763bc2b871a5a38b0f5d7ad53dc8a5972e99083d3b7572db29f7c5a56f1704d86b879007943b1d752471696bf681d4a38c4a48f2a77a77dfc65e07715bde95fcc9662723d27ffc5a806cd54e227171a37499f4d2b71b91c4a521ed011b825842bc3b15e2d2377b4bd106504a29a594b2e7ec2d34d9ec7d514ac94094ca99e39957f8539d7652ce539552ca2ae157198406f9a8062a2f01ff08795c13985d70040694082a7202024a4821f2b0f792ebd24c16114e1d2e0a0ca3d75c93be6ddb665dd37b346724de87c47b4de37a76f4d195ae45a118645ddd4517459d7a3ecffbb6fe798da7fcab2a9f359ce55cee4c577128ebca3c5a12da37cdd9ab7555d72ab7c99b2d35b8f29a679ed921375b6a20c46baed16c4b622be59cb93a8693a733862bb9fa9ec656f3b62c222a67006ca91c851a4fb57bd6ba2ae5926b0e89f7b5a0e5a52b5171459a04a9622f5da5327ae929eb2926422fddfa122b27a4dcb6a0a4f220b239166075c97d6c2484877e764bd8e314075b19c742a682f7dd7d457eeb90785d7c452b6e0dbbc7204aad4baa44f0b486eb2cae74681990f21796c456aa5be22a441e99795926457ba980ca337b26bd9e1d3e6695ab42e4e1179a43127964f7451ea634dc92d84aa104041029f200f671013c3b046077978b5b6eea870ff6d863863c5876b1829e0c5fb275cd2e42323fd48c6aa796925d9072eab07308d419f5e9d4baa64c7151893bbd5d35c40e995c7ba194711de6aad064545c6391e2e693ab823d218518027b0b2bc81df69412b9c36e8453b40258947ef6582566e11feb5910611f864acfce90e98407b0434089fc49755658754b210275d35521f2703b71dbd9558840ed2cb95be3ede8f9c13ed2dda700b72bed5652060db10f47894241cf1ea5306c883d5261875facf2ec901b01ec33c25b61ad3e67e8398836d118042470c4203aba40141d3496dc72c6e9e9b0d73c872010dbf58840cd9167faf44927a557080a52ff741f949b6e1cdb0ef1e8d46b04e274388fbde9fc844c22813b02c92904f7ed3460b90f5d9b9666b99306a597dfe3c57cecf8be11ed90595394abd635a747cf5291e7e42aee6449b0dd17df7ad6e4039849a8c42adbca925c324612000004f316002020140c09c46251926469b80f14000f6b864a584c249586628150244a611844310cc360000186004408718621a75c1f00ac118fb4b064b02a1e01850416dc6ae3f2715c49628968a0c36d3cf30c953c0756351ef71107f8cb440e1d5808a6ba6b9847109440710536bc4cc6f65f307f6a1e6a6fd93d18cf84c9ba02622377cfffe3e68b95d1c25f4e6e427a99a854da84246f97666b832e2031c8d5aa9c0bb57d2af30235bc4d89e42ec2024806ffdb4b3768ca4e7c57ffeb834614de2041f1de3adf741c3d111414e3a480e2369b9d45474977e921f349759b389d8172f7ad78f8c457066199a5c91ca6443bb5c0b38a38e965fc62e6f807c4dd7c1cb18c33bb33c7508554802dafeae675346a1c7ab37d334f99768688907f8e9b45fc3be3f241ba6526149cf510d06777bb2602c8d2564cadc055b56018e4c433395cd699cb2044381ec33e9d95931f29fc2dffa24e14643fb9901cfab04103e04446e15e98a99d4f9401133632378002d493c8bc107d2e4c07cd44331c4b228823e027b344d60eb78fecb54bba33f2c9d2df27ba8d63e044df6a6683bc49972e273450d9e9292b9cb0c766ff50427d3c58e76e75ba5ec6f166260cb64287ffbb3f922f20758e76c464b5cdb0fedc94fca8cde571c2a9101a47ef91f9ee0a7f4d7aefec6da0f9db36407bd71025fe813e397c31b2db2c270b197598696c75b4bf4bf03dd253aa959b4eb68e5484763ab38a81ddd63e031789aaf802d391f4ee436f6100c83a14280f7a9d9b5b533943ef010b1d3a7911690e3497e0256cce03d4e815812f0f2e06174f813393a6b41e791b3d7be7bfef0ab581f5bdd315a76973d1f3fc02f52e5615481bea1657c2d0c6a0da0f1c8b98007275301a13c3f04932e1fe5521907760fc1e737acefd0368996ae4fda696824adb23a4f50287fc9ac930d671d672ff6334ca1dda8fdae3eb3060ed7c757334b1865c4b4d9a83c1b70495a9cb0f645bc3beffc9676d8278ea55864ef70bc5b987a39fa23c6a88b8d76a5541ec4d4db29893acd5e44f9785690f3cf064334416d1eda02e034e596f51c3b36d6cbe2c670d3370bef714e44619ecb5b99930fac424bf52196a7659710ad9f783c6a06f55ce8c3739fe3caeace9a8c2ededefda954700731fab576826eec4ffefcfcccb9a313594e54f34e9974e9c372c0d0b4b4b7d5e0576b67d0c70e84a02c0d79ad63cb6e57ce31858976ebe195338f00586ee63eb49e54269546cc6e442287a15b9ca957381a7910963121dd8e64595a1918cbacd74e4277f2fe7fd98c5c8b1d20d77483d518ca74ca1d2230404c092987f42f3029e13950396b758f5de109e9c0634d51ce6138213b9dcd9ffa42324d27080e119e183d1f446f21bf02232dbc65770f0f936c3d2a1e83ede289cb61f795c3d03a89c4326b328d44a3e3c4137bb71c1e67c3012e6a96875bf0687c6806e688fb29273628c07450b6da58286ccb24a25638421c8e6db8bba063256400d85a062103182a42c42a85d8d83e0b8e729b0cb4f9655ccb6c80faaad473667d30a9805e641bec83d16392375775d85cf224ee07086d8ccc1d940e035a53e82a243c4d614c63ba2ed8bf2888d4da1d87df861486e37e447db986051de2f2b8b4bc3c884eae8b3a6c5f155c8b5ac2b9320a05258847f87874fc3f076c28b1d7937038861b7282e5b10ee64271e6e00837e66e886a9e0ae7f44bd461acf2767cb9ab3c8359051bf5041af26b26a01994ac126010eda9a361ad722b4d2ddb9f934ef95ed995c4f34e574e86dc2b331912d1cb486836630f22d601e49eea10632d104404e21c7238050af9b68de92826abef8060b28ebcd4e4b38f3f2c918ae09f37404368abf8e01c11177c53a6626bcad41cfafa99182a07633dae170a7d339bd67807b7bde51e4805b32f6c8392410c52d8e3640c0beb58d1fc91a39fa1f85870feeab5f39fcfd2b1cecfd83999d372556317b9b4b7905ff878ddc80bec3a13a2f7da6f8de92a150757d54888687cfddc755c6fb3b9655669791feb8870a3dfa89035e797db3a41372adc3072c93dc6a053542edca18547535e1b01a81f0efb127a763e8b5cef74c9c0da65a4a350f68d740d09f0519b889f988a39e0da5bf9ff73058691389033e5655a3a33c9fc1fe3be0e7f3e008ed98ced438930e9dea69b0136fecfe03814213e8cd0ffec6055927610401a9cbc31a603018d11a300fba06b89e2abfe5bfe4623156e905176f8ac2530645925c792ccf3f84253106446065804de7846e9941d9ad771e75bc049925ec08472e29f9f06fb2377dc29a240b672cb7b6d49ab83a9c1dc79e3c24ead52a7590838e12ac28d5d0c10a2f9869d5673d2d7bf52d0787a267cc7b7531e90325525f87be5ac9c4f41d6cc678cc6f8640f7d98d3284a9dfdc257b9895defb3a718221c3658fa9c0f5f7eb673a04ddd8fd1d2a404b547e5d9fdded90427fce2a99d696f7e2f38d32c86c299ed3da9f559a0c60a3a1b442520812f5f383952cb6161d73fb2557a3a789308fc45ca80e919fe3d513a20f6977cea78ca448ddebeddcdf5b54f306daa5b3217221a3a60708201a3768a91aad546c7e2054a265124f56eae2bdccf003b5c0ade4a5d80c4cb6ff3062c783d2651a289c6978e4ed1a38586565dd6c841564e7d69d39f45de565771a82e8b0ffb38cbd5abdb7fa74a541b42b96452129eaa6531482a68b7915d09737f8d43c4b00d2cc90c2a442ee98845760c297164013c621befaa58ab501d33524ddb0013b91b39755cbc977f2cbf48b8df456c876f84b3ee445767cf88698b63e6ae4c88d9621dbedf1a2ac1d7e6b86ba5a10d94210dcc8cdc44955a23239588239844d815d43d45000729188dcc144e0e328c4b63f5f001951176ed1a8a8b1e7b1bec5a3a8b87269fb488e3f44f4cb9ac6eb73ae4fb2a32c78145195df5b6d32d6e37ec6f00724ef6651777c2c4efef379008245172f2d7eaf8d625f2f4407ec3886c795211fa990e98a826cad5877c28eb8e283bd5a4b810bf58f488e2a02727c7de56ac2daa341ea4a1c65832cb50820e9ac5447b9f5cb36aaca0a101834e7f791818496a302f6ae282f25d3d0dedbc401aaa8a33c1da23029e6965d8d9b97a9d1ecaa806465b8bcd65719890d8cacfa004495fedab3c380008408f5ce463e229dc806964cbdcf38fa74894e0a16ca5b520c39882b0e9382cd0511d42f496f263af37fbce8307abe9667ec7c3e8151ca71d0a44f87a1761f3cbeaa8e80541a1b6255f0acac9767bc85468c46d488bcbcfd114d24ccdbcf1329574ccd4a5e718af5e6a169f7c22d0ddd6a3ca6bb1355acea8524d0fcd0f09f5c6915f465b64a1aba8f56a11fedad3e2187ee6f9e428245992fef988783de454c602565efb1020237c043a4d55aee99099d184c983c9f11a99e4bf083f49919a17adaba4392b7da584dc7cc7492996112125a26e6173d23043c2092fc9bb8dd9b27261789a39837fc97ef7cb3a3158e8c6584781c866e5a6020c0d69865cae89008a03c5cea51d4221921fe0fb3b3d80efd42bfb21e365df5f5df4a638d2c33fbdd7febdfdc8165077aa287b64aa3d618f29f29c315e18799da029c53ac3e4cab7b85cc410f2057b5d2ba5f2cf80bdfa851f5d77262f0c943f0bb3bde63388bc12e0d927b07fd80fe3d42b535c0f8331c47e88ad5c6e796da2d17d625c4a0cdae918f485d74ad57dce3102b9fe556ed6eb2da6f3ef002a127b36caf95845b938d9640bc21626c8011afc9c0d83b1b9554eb3e167132add8e0a305cc27ce521c4cf580113c7b4ceab97c76f10e63002689101183b3c881f48f8b6d219c6245f8afffd2ec57abab101b025e2966c4311fd5da038196102709b5ea395df24b1cdf9973e798f8cbc1951825fd7c05a2c220e067b326d3ad3bfe6da03aa475876d4e055b0d4bb66fde94c64070ef0a0249bb9f46c669f3a89153dd15e4f4a094a65f7af59992e2f8c28a9f45a9e865d445d938f68b05b9ad607719088f818ad3e3d6d1c39126c94e7a28ac30a23cf13cef84751fbb5c409b661a9ea54c3e6801c9aaa606972cc0a6fc504cd5982874b81f167902e321e7c160c10907e11849153bbce7f9eaa8ad484f95fc8576fad099e0fe905ca4968dacc4fe1313c5e43b146b178aaf683615d5aeef5f029eb8a3279b04fbaed5daf0c4fe19dc0bf1b1cf47b27b847b3d86cc92a4b02aed510ad4c3960843947a64c576fc81f5d48bdda0946a385877ca4ec412f514e2fa6ca4c6c28e3f08776b4d6f3d5e1ba13688a52b90da7d322d5a9319292a8e03ce62d4773a921e09af98112ec3bf4a6085be2eef3c80b85c52b3f0009e68638bc22796cda198e2810b3e4eac90525c545230c800ef3312621104db56fc9c5d26f91d7e207bb08d41dbf25d198e37fcfd70f953f58c54265f6ea7dd9143f99bc6be485cd76b05fb82feb4a82b6635d270f2d584ef4950c108ff45f28157d76fcf60f709b89f28dd2d1fddb3b3714010372cb6eab7b7fa724a0aae0cdd8d60ed5a1d58b652789a809338c5bf7d23ce9c06c706af753ebe81a54b4337a6a9c66654a29c1c7871f4bd1b5f92727eda7eb29d1b54788bd4208875c0cd967c8032f44e147a8e1cee6743dad852fdc0820a8f2dad1319abe4ce7f4026e617f13a2ebb5964be89f15ebfa6f7e8fe487aa2303eedf8648cba13b39002e1882bc33dd55c7d061a687311620545f7b2fa302b2cb19a98fa930f145564018595faffffd45872ad686d1126b528e52f2d298ce462c7cfe12fd6bd3871187c9549f7fff1eb8fbf3d983e2999269a463f4d81c682a98aed3b24e5a6d4fd235f5e0b3f81fd7fe03d06224dc1e94aee7ff44901951b2bca29b6494ab4511271334d0c95ce129e61f57aa836e8501300c736693b0fa059529fdadb8e2ddcb87c00b61b7b72c208bfe34d611487b835776257acbca464a638395fbc151ce7f2d3be98f91d80c7d744a5e977a0ee7b229cfd0b9ab4711cec4975fe5561d0aa33a64a79e7b44fa741daf33cb1eba69d088961b398d8ffc2cbc4e46935da25a5cb91ae9ff2a9a25b7b61d680a720e99103c67277948da94166f795d587d97d7f65b64bab133a77100fefc50ba459c77a456917dfd3a4fe6f7221eb1746e9344b03f84969a162b0075f5833ed919057affef5ca5f0b6839fc65c104d3bffe541603e00b32a9d122cad9831858a73087b9b25fcf8e11f5309d23c54cbf6eec899f757d96f7f5bd96ce0269b1bc98478446839a1d2aacf36f899680a7867fa1f8e7f7e856a459a2c1fbfc098d333abf45c95b27d3ccf0ff647d656a4b7d7f7ab5ada7db14b0046e9412e18690581ab4ea41aad2a4b490a209bff17d133a330104908d4a847bb5ec42bf1cb7929f6265f0c98b6bc4358c07e84abfbf4961a823536a279de045f9b0f83f89abb8bc246fed251397b2241782842c65de9483dcc276f160243d3fc5b8d456827d9697168c582d4ccdd99e08c57ccfd4d9537df96ab393ffa675785fa688c0e7a102b64481fe6326a5dbbb60ba3fcc67c11e5ab6d73eda124761f1fe426abd0afcbaabc2b7928dc2484fd29e7b9d9a0ab8c345514265a896d2cdea563d5755753057f7d945e1a4f0c02ddfac616d4a8182ed2b1fd397fb62655b1b3138deb3e46bb27c24885fba932082495d8a16ab51957d06406c94ac9e744f2f7c458f5e83aec71da8e93cf9b801be002a6e4aa441db03b3019e72921486136174008951d8df45363b0ce4cd00aa23cfd83205daac99648fe7fef1776e9efbeb04baff0f6ae6d4003aa8e8c269c65eb739782c91dc9ef2476d03e6e0b80f5e329b25945c525071c6a78f1a6cb034a342c58737c84de6a8411f9ab4475f71f5b2e91832127c4a8b63f33a1619bdd66f9a1b0ac0f61423ce35f7b7024de93db564b8b8e9c432f2f599c239f0f9a53be05d6e8356095bbd5a9b7c8d075b764fee7cb819bbfc0af1f091fa0d8bdbc592b0006d8d2f687dad1a0214aefa0355c31d964d4d28503a2043d5ad8249bd45656a56eb42a3f86a57d3cca1ac55d1e47e46f534a9570e15c46e8b417b2597803ae9da843be86fa81618fd9d600c65ef92c0b92d11f40d62cd1e289cf9d455c87ad09e1da54535f944f1ff15a677a800b2ee35f09f42ea042cb1ae1a9161aa81fc717d05e4b057129382a10a74d2072e64a9126fd4211312de829a4401d55dc8a481bd1c4912601766425928d45a67656f9c2e6a7e59748dc0c7454e2a52105102add1f956df5d382fc8ce57b5ea1d596ffec85e8f2850a8d07e4c4d190e74d172ee1030daffdf185e61af6bb716418e0c7b6b80512646157e7a1635ea8c63ef385b7061332bcec82f94c4f660aaf56cba50122f3b912fd912ca2bf057ca165f3cfb6d1791c4fccefe4d7685f24a7e3185c567e1fd86481597fa662b237e18206fb55022de772a0970c34259fcda2923ec360b65f1bec3cf689b2f94c4fa8e4c646eb8502a36766615b8f942597ced6c66ec360b65f1bec3dc699b2e94c4fb4e80686e5828153f763626b8cd42597cedc0beece68bc862638741d16f4129144e4eea42a9b413e04e326b58b442b953979900a405fd2c9440599505ee8972955d35442276f83ff2fe50c7bce84e8cc3c40a605658656287fb090f27e9e0fa454799249826a46f4129a377bcf3e17444e2b281a0085265cb2e9ad0685a14a9068600d83c3c2f152f959dcb7df4be6048163a69eb8412646318061bec9df85e47527a299cbf5dafaa08c46311bc022ace63450b2f3ec5cd71548bd324bf53e5e62139a87020acefd7012279ad76a40a18b10d0a44679c4c03fc79ae104b1b22a4b900cc34f040665f41dd2b89a2311477913182d913a2f5a33da0ad09ebdc9c8953f690d8c0fd0a891de828b288b5569e53f54c4437f63b7b338766e22a5808e130435f93356a01788448a5687c0b1ec84c5c6c12fc1e1d6b82177079b68fafc703631160108d9105c74b873024dc727c32c26dca511b5b5bc5c0d8c686d576b532aab1957de48d1d271c3636ea133c3570c79e231c61f7854175c24a15fc71e08683cd406542459adcf8708485cd4665e24108cef871c261c5a03e11230f7eec39c311f6531bcc233216d630750fa8b8f30e928d1d5fdff36daf4b511e73d1a31066b5dd5ff937f086c1f9fe30284ff08283fb8e384f5b4981f9c39232fc370c82b298d8499fe3f58b36a64b5d6dcaff20511d0a57dd7a7c95aee81f631102034d9edb95c0bd0df539ee5e22932f827c57a3c775c41f9d2ce7919b3c7ea5a2579ceafa8b2282135f7605388518d29906bf713642655f4ad41075d369adf57603e8e1bfb36b01737d229122f3294b622e94dfb1a53452d2b57c102d04b54afa26e5b2af0f91eafac50f37acb14a763bef22b9976f20c62a9c1d2e856f09f503f750c6b7a1082595301f50cacc71ebf2a053518f13115d9f4484729d519fb09597d511fe8976ffb4d81bb3b22087f28b24e8aca2ef2ca3861430afb4db703cfcd96b0feced98284f1378c48ad14bf910b374ce1b6d6f212c447c3f7b990ee3a45407500a80c41f2561f469c1e671f405cc7fb16b2795b16af0bfa80cca9e3e46ded507581c6a853b60e42510b9cfac50853d0fefcd6a82048772dfa0ad0e221b3906a53a8e9a53dfa26ded5a0f97cb72935aef44ec64c209ee6257c81887fdcaf00b2e61b0607fced8f2b983bb979ebeca45eb059fd0a5c1fd0e4ef5cc31c6ed2b8ef62047ef405e19980c254f4f09e780009d2818e1e077181b61280d217903f18400dd46e60e6529fc772dc25de6a09c6b4ee2bc1beb6b0fbe9c531a87879814bb39689b6f06ca514ebf96146499d38f2ec386376cf13e14918ebc171526a67842812a6c4def0cdb4263f8346310f93f6becae56bdb9de67e37115ec8fbfb6eb4c948c9e88830a3a8a788f92116d207b3e86eb042c089c32f73010668bf48e48de74792531b6aefd4518694863a9b7b514fd6a6ce2f9667e2b8c7c0cd88c6c8978fab88804647c4f3bec255c643d1754a1991901818dfbbc2a34ca7e58f94f24f97502be4350554f5ff2f02e3ed0bd97ab054cf31d87809a89027f13e729c106f0ffd44aeef7ba953af357009596462f7fedef49937712a077016b0cba822ffaa4cfb7fed07b192b484cd80e6f579b1d8ae19cbbd5050fa86c228e111461817a01e5bf79dcedf404a6dd379002d25fc39bbcf0904a728a643137b0e70ba5e8bbcece0c790927cee326c8df11a5789b0836ef2af46511d4f4bd3c80f44795491baaa058022dca0171fa05abdcd64d3e6a775bee080afc67ab85154ac37d705dac1a7b8251eb2b2ad00ed858c38a69a781d50ef38427e34fca16d13db6c0532b2744e8a4dc6ad314edf2561d0281abc6e3518f009f794bf5a58c7666c620a70c994ce6e74bd9f1929e081d44b9546c57404ee31b6435f55b2bf2c74f3995f20a3ded790e61df1e952245a3b13937c16f32a0b0c53da5ae505ed668658b1189dd604065ab42203bc24dc47ebed7928783422707586e5d7b83568e3d96abd1b651123ac7c4bcb2f5697e0f7fc47619f97c9aaada8e3dfef738bcd4cc0cdf5714fa2afd4521eb5a767b476b2a4d147a9046515baa320ff6b9b0acd32e99e166ac6f7a958a94ce64f1fbeb597b83f3bf8954eef0290f50ee293302809ddf3f795abf92f97e5387f68511f1136822a56f298f9cfbd2a5a863c95e830e18a43cf98f4ce26a8e2ac13221f19055f95a620997be81e8881af3ca3f10657c3da1ea690e58da7923d628e7f84245726fbf17ef900d0cfb3ff4c51032deb22e3b1fcb2e86ecdff2ca496d08ea8e72a187fef04077a9185225e3e754c1bd4134df82f5af2e5e304e10028a0ac33e04b8c686afbb0582502508b9df1b100028407f8a9b1b51f8fdb5d731e9168b060024edcf8883d6099b6a8effdf7c059f317b7e535d970370d551d5e85bef785c6aaab3ebe972aca38c9f8c58947a704df1b35ef06397bd47955bf4c1295acd008625c9852d15368df53dcf27c27e736166f83d4fe643bc653df98e8940365541dab1f5bf75f8f703d7ca142c4c6ed6a9360116da005df37d90124a661409ece73ddf3fd44bd3c389106a8fcdb22f8de4105c05fe07254210822fcf8369dc12fb28b7d9d9c8bcc2f0fafd9e3e78a29e94dfbc9aab21dfe9aab998f7620edf6a86aac1d62fa682939cc0a7e49dce5743233cd48f9d62543b3875e2a76d0c814a75e0a479473ddace7f72c98d0fefaa5bd4c03817a9b9f6797635b60ea19c3e37f1a5687ef3e8a86925f361c9813e0ff0c87204c11a9bcabae6779a640f1b2deb7b92b72bedda60bfa0e838a460b31ccbfce0eca8e9cc283d12024cdc9faae5726992fb5fc054a87d36c9b177052b52c50b32626b267209ecc7e42ff54b3d2d0d8b95770eb9da835d6021c5715baa69edb266896376318f76219a8fb299fc52206bbc2d267570c08073a5eaa86f214876aed05a45c83a2e51b12d02c1f890cb9e6d36fc79677132d25910b23b69df9ca6e667648335001c45ad10074ff3dd8e6eff501cc258ca1faf0080c3c66704118e0a679bab67f649633273b46bc9d86a497b8c1758315ee37af1c8788273a5bb6e1730e0991c15f84e3392d09af0b9251521bfb2e4c3ba3cc983bc7ef582107468f67b1f6cadd8c744cd0da5bcba4d757f84fa9f4d8c93818c5d56d54210ede3a68bca498d4cbb43c875a9e10033a5f0b9d503d09ee8da94343902c2781891bfece247356e28d0eef485b49793a5428c123998e09ac59edc05cc982d62fb0d5ddbeb4499b4e3149315dd7b5721d83cb5cb1db1cad0d6bfb437a5856146b2a0b9df97436e56c909a5f4b4eecad56beac5c18ddb90af08ddac8500bddb814f68c3fe0f7dce9d1fd3c1f394a65ee904dc022ddd463fb2624a4d51378b4cddeca063e0a5fc7ccab41d4a1a405fa7b02b9469d576a8133b78dcd823f16921ad76b7c36287907a76a1abb57056a649e8b87be3ba4dfdc7c1fcd18a0b01e96e950b3c3e7afcb0c4ff47feb8aa39ead1ae0e6a6dbdf028793296a949de13f67283900d6dba61e2db8ba1fc4fe4d0c0a38b8d8c543a9e81c5c639db54a947114188da44ae20ca47eb933f4b04a91b008eb3e8685cbdac2e5bc58802a12f85a2f5aff3fb1b6a8d6dd5ef3562ed5f5327b45b20be6894e124143c0a1db5db572ad0f740beeae0ad4c14a55e80d9784fd0aba1718b836f411fd7f9afaa803a0e11c67a87cbba5b4c2a8efd0a33bcd013cef4632eb601c202e904dd3454eb8443f28cebdd547ef752c67a3c480070cac4b699ae9f8bbeff318a98af8c8a02af0e6917e5bae1f012d4b1796607d37eb05ba6603d73fa4c2d06af27572e88fa4dffdf9b69248ceb82055a2da328c57a7f7e79ae64d49ff77c3e0941422e2f7d1a72e2920eb397647d02b7b6d0b8829ef559d8814a921302c26cccca364e0c1e6e6fd9ea6335a0d0e68cfb77b43d317073d603f3e761239b03c3b8053f73b08be8bce81368b6f6040383e813f217caf9e28b2d15f680b5934e2b56215fe9004903567455f0bcf2cd0481d89160b1bcc6114127f47b254543b27f32d48f2f10b06ca60644ba1576832d6f1d644bce228788dfffaa946eb41262dbdef1083f945987442c0620aa0c6cc01cd84102ad1ec7940186ff8ab39a0aca01ed8de2fee7acda70d20f5c4415ed6468e418362241a9a42584084a55a8ac09516e89d89c9a3a94feb720e7ad221c7ca60fb3a0ef33b670289a7b0308818bc092cf7145310cd3c26dabf90076fa56990295bf1c44b16467fa830bb78673ef8491f97911cb8e180119152e201a5ef4b925d30083e6717cba2ae274ec131d70a36c1e78853c684f3c3844c1035af60e0e9d3ba063c4830378fa879f70c5de0ac58d7b4d525c5429cfdac39c692c6aee20cf1687cdfc7da35e83da4280da04e07ed4f8a474d90fd286007fec62194f9e44b1991594337f5d21321117d1101f225575d463157b5da6de3aea0a52c9d10ae890ddfd6cb5fe1374d1afeefcc7d7271ef8620f76532974bc7fbb840dd4057f370eb9d32a93255776e12453b58da6f2b124d102d63831d091bda4aa83de16c1e43a1bc791fc4325edfe465c4c52860d7baab47a1aef77bc1035081b6e8858b844da03e2c4e79e39a4d10d490d2a7cd77de547d68eb0f8c5d205b9cc40d00a41c2cc8a41d827b1607de2329da3d76e75699e5e92d3af5805cda65f84b197bdd821c8945ceea878831955aa17b074ef844633ad71a8c922efea654a47fd0630b80843ae66a50be84eac258e53ae5ed455db5cfbb8440a2f1ca4397b57eb83d93535c26c7d622dd6dc6fd4959181875f25addb496955378254430d23253b1f3590016610b978149c98f96d39775fd45b82a45a7673ac714561aec53dedc3f44c26f483872d47e7b3a7afe630dcd8cbccdef172e4487c9d590693e8f274f2846e1c27e4ee725895d820f424dc365f997b784bb9bb2f39dd7d7fdb59b1d6b0ee22dde4d8ac27a4743f4a8237a111d5efe8b06f1b6e8da841d21e40f869a33e3914e101f4637e5c62751f5fe0c8218dc35e75442669d2332ee5b2c6b2454c0b449d405d8867c57a9969d226dba82590df0b613318a3ac7a300024b8b0af4f9013d66b828c8de726d7429ba53a6df64eb6f7d332a0d191dac033affc2d897de3ae0b4f5efdaa751fe2f13863a18ac58895646a5544d39d0a24be114a7c4628e95381e4778492df982036629ea3903d45afcdfcf6f9d1dccab6cea8a4d202d958ee3473c32254de352cd41b1882934f938498ed312528b95ae9a5c869c07e32e32433ca3df55fa21261ba7f6ed5c3c5c2d81e332b80dcb26f6cb96bc27e9ebae555f8d6f2166880660c56f006b9b62c21ba6e88816a037c4790b667b553adebef878a985764c52a46ec92a8fccbc2dac0cc0f570a8e2817fb2090c094ee95f0a4302092a603bc1cbd4c7bc3975c8de57122d9d354a1c4b7298099344de3da4894f29370c57271ab9ac6716d24caf94bb89393f45581e43702c9ef10e0a639169b64397e922e9d5cde90798cc72e59eebf846bf2129fa45041fafc380bdadf8a3b1a09d2472f938dd8218c8590635c7612e5cecf19e386dd762edf47ad000561b79013692a4b8d65b3d3a1a9ed442221c4316a127b7955bdd963b0b0f1f1e2ddec640fa8394741b4b2d50f5b263b86281774b23aec9672b8cd3f75137d8610fb3e214103bf224e713fde996e1a735f2a91ac08f9a5275758412422082a52f10b7612442e156410022a78435cc1f54adad1048e5f4469d473c56a2a2a1d5c2ec21b14efe432ae99dcd3a29d7f7d6e195cb34dbb5bfe5453802ef32db327178f5c089e707a2103efe31ccb5bbae0f0f3b8b0b896c68ec06c25a0274381c4a40436051aa8f888da695a90c1da25caea27e96e4ee2a34209df0a253f2394fc8440f2bb23c827619ee3b54b94ea27e9d69cc4a70209df0a497e2394fc8480e4b742896f05257c2bc04dc7b865cf89b1fa22ff321f87a084238244673914d2667385129f114a7c5a28f111a1c42702c95f11487c0202bdd1217ced790d08690136d0ed7e6154a1ba0b97a697c58efdf54ca11a1b59123b855c760a96b814bb284202d71dbf386d5852f056681e6cfb42c8139a409076de5b3a81d89330ae2e403224ac87d4fce12353c078d17f2636566a095050ada842072387744fe6245e07d953f727e48f9649f6c4090a8b1fcbe93680f28e17850d9985ba3216e5b37d92ef5101883747aad4f16ad72fe834d9ae8d5eecb6cfa1c2e0f58e88d0158389e70e31caec19303d3192735dd3cf06fc691e036856dbfbf790de4f9292bc5cce1ddef9c88dcc39c5683fd9fef437da17b2cc85e4e4869d40e771c5ba43de0088f5e57dfa47acf67cdc764d7f58e46632766e35bbb07a77fd2b4dd11ccfadac2ab539d3ac1b502f4cbdd9c8e2409337edaba928b2252752efb3220758294b96b3baa918422b4b1de8c9bf840fbd3a02fc4dc4ca3905f3fea3cc25da078de6cc4f36199ade1c3a9481342a14bb7cfa8d4b011db1ca43394fa081dc4b844f44874fc0d94e791e2181cca5e4a1e0ebbc425998e58af323b7a943ecc9d680e227d44f258167a5f6034445bda7288735daed5ba4619fac1ef64c50710c9a5e3f8db547337542fa5b8aca3179f011e3688020ffc17ac593be1660b02b173f9cd6ff2296740ed0c295de41445a4781fac868b1669a1eb9d81401a687d871e7383292665a73b9ceff389d82b17f8eac0d5a64f2852a1993f3605aa623977b41ff563631042551357dcb004c10560941491e1b91f59b5b34a8178e83a91c4ed29d913ee1d1e8b7734c6c6fe22118a72f579838dfdbbd779f4617013a5db0658a573ea9c4757ca10c74e796976a81a73b5ea96a581d0e55bd9259fdff911d3357ac37e7ac57c5eb4f3b38d35e050db50d8d34177561de3034da5a4fbd6af06dea34435e41b1a93059d8876175438c8f893808006c996e961b37f086d962a80e3bf056aa910bebc2bc6244b4359fe5ca72dad5c94ebc4a35d242ba346f0c116dcd794094b7efe01a46d3c60d4243a33fa2d1369439ccb4f9f1c909bb9e311e801327946da1b213615998378c8e36d6935c1b7ebb389a8157926a8849c23a0bbbfac44a14a32eed5003ca948bb5473e35583a10c8f1bf1b22598e74cf44dc0d0405344450fd0192f74be8ef24feeb6e15859a98b01a410b625a78213b059af70cf75d23c3c69fe15fc8defac2ee75295ea0ef267a066ffe3961c3f24282dc3d8a260cebe32c38056192314c0a38836ecbac92da57d94f45d18387d8bc37f09e0b403776ce83b05219884e36a8e7dc48bfe3831ccb1a8f980652a55750ba41ac004537cac4300bc17bbfe5b421aed552099ace691d5a18c2d50034f7e65329130d32037313f58ec6ee940a0b7e307c9acc9af142bbae5d103d5390eae6e27dacf9479dc8678110a0136faac20b8e005d2f269a3513bcafd08ab97b4325eb81b19c5f4d71408cac34797e268ec57075602c23ba8a608127c3869e7255090ea736ed190fcb9257bab5a780f08af7d882dc1e955a535d5cfd52cd08f4c1b07c32b0c9494235eb0fd8159bfe414158fbf9685c72b6925afc4e6072dfda02ded22c473b794d45691eb140263ae56d249439a7d03ec81995385a2b0c0c7b53b999c8bf968e5a01329189ed3d99346a1005312d7c363772a4b94553007a0766ed52e58a8acc3d6c99b8a1218fb21c6fb9e0f2d6410e728e0079347b53a715427ce154494ec2ffc385b751d0d88b451e5e9bfb76a38821a9d1d1106d91ecd2f0088bc3caedfdc08f535da48e6d14179ad0f4ea212040871c9a05f6338832ccd1318e099544eba144b87ea93151dbdb75bcdbebb8ed5836e2dbb8493a74bf5c9509e71202c385d1449f9a9ea4e429c85aada007c86d3b04bec07471956d214290205863816c0b7c758746c2eb08cca2defb51c02d93c6e7aa92cdafbec85a20e6a325769834e532e3466b028f6f670c98114ec1409b32eb50220089fc5312d72f59263f05c0b1ac6446eb1a58581f98d2aa3a184a79e25ac0f2c86e307276810e9464400adcdb0816aaeccabe6794fd9c0a690b09211fc22d24b968110f150c8a0cda80d6dafdf4770ae8fea70a7f82a8be615dbdbe8931c6a5a17a60a9bc76ec439a37ade54c8671e60c7988e5499709a8b0bd702377135a026b95811097ef6c6d1c1e1ba0e738f5204ac6e550e6dc650c035106739f61b639f05e14573c886521906864de3055e874a3b65e6daf49fd8f84b45d9cb07be1f33b81e37684eb17938d1ee2e60037fcf35fb0d5b7d3072a4b73340a685e6b3a7e961e10c3ab27bbb5606fdbfd735907224b7b6e9cbb7f6512d9803d829a9a18a89e6ef46d58d745ed8da7968136bcddab4121cf069af6fd249d05ae1ea6788f203910c4ffe310827a3c273569d28636a25b4c8f1f0c34255ee517490d81e91715effc4d56006457abb000629a75ba2c3935be304a913a0f5e38f637fd6217da171a6d1aacdd269e468e0bb12d8cf3e101fabe41b3ba851a765db5e71f77823906c543137c1612264455d04878274e97fc18c3c2833451e7834b0561103c1710f036b7ab637ac8c8407a86073e3611d3a8b345fb92c49a24d989c0ef6242d76d2eb24b646ae772499022ebe8a18b9b87971dc2a99bb1ea8bb1896b3671f7acbf5222744b6ea70fe62490ca9acf818f9f3ef575851da209c70ee1ab9be1b82be2cf292e83a44a046d9dd0e9da702c5060cf4c2fd81d292d02a21f0bd384211bb194546197a25ab6c7e1634eba6ef81925deaf5114cb69bcaed85196f133dad9f3b6d870a3f9cbdb1dc8a42f279f02b443626fb9bc9b86b65e28fdadf5c3683ce025564aeca12b81153ac5f9e6b6748a97ac530e99f8171777a195c973f24643b67ee7b324c16037faf1f48e90f277fc7fc4c04faa6f1d5db9e1109e536870b8f1beca70c0cbcd7613e8dc6a5ba8852ba3ab4b348a619e493b94b78ad3640dd85075fea79bcc98be5b163763006a8f9a547ba86a6cedd796b62024c730bc6f69f649c8bc31ca9837daef7282b878e6e836cd6402ea63698772206551c7ab9063c21c47de79e367f3bc7cd7c60af26596cdb3c619a37374c06a75f89f842e990e1645bd521f84b418a74eab699c0bd986319bc7e7b9d55f1b2617d68d03d2b954cd6970e12de32b187f23dc24ef15d6b2db18a3174e62f0ac1feee64ba8d9f74e147a439e55557a98b8b8cc21910f74a7ccc84955e9347c5c5dc86fb83a0183fcd9c1e8b0f7193919adec2f9d8f77f41f9b16f2efae8cb2afe68f253059135449e8b8505be73c58fd15ea50b1d02350dd85028e4c1ce65467372825aa458ab6209f0b72856349b53cd4fa4cc8ec27db510029be5a14f23c6683b6366888657bd1a6fec07c894d4983358eb252da43a9bb2840248d455ad71b9194a12e3c0588cf43060a720d8bae6de0419acbe5bd0e26a62223a1e5e00541af7ee88caa4a340820fc2c3ead615c4a86056a256657ffa515e7371d810d22357a7ced984c82cdb1818f57164a69d570f8fba919f00c08f0f6940399f3d7af3a08de373f080665301346134a616e4462a9cc8c262295a9314e282125b33109a43136229134a632b807cb2026e322d9c2c0915ea365e40c79228dd9f804a4631033a3997098d56863b4721bde28ebf4b0a6e892dd2d693b33b3f104d233319a50ba0ce600989b31486418a834494e19d5eed121c978e7c9de1c3da0e753f3ea5eac7b9858afca27a61b68d34a17bc704d1c9be9eeffd21ca17501cf7a825857d8efffd4a68e96d45c34a92d45d54e6fd6439043fba0c4c6797ec0615ce3445357f8c0c6607a0b9c23f9a4b66799baca997b17b53735853baeedf099f14304659af15b865b2a3ed001ad607cebea6bf578d9b9eb25775209baa1c7652a40deb2629a2cd0cce06c3154063c9aac0775aadf1c4df6813a2def46819d37d5d0763f9a984faaa4de1995ed8baa68733f5a6cde5412fd7624f907d469bf1b999d27b5d1723b12c43ea992f2c648b66f5469733b3a9b3755a2bd1f49f6859a68bf371276dea9d2763f22f14faaa4df309afd8b6a68713f426c1ea913f57634992fd469bf359a7d404f4937ad6cbc528996db35d28054a23b0dddd9d968eab4f824180e54516d47e34d7feae54e0a6ce5d7de946153fc8654676dbbe5d702dbd66a5b164e1ea44a39bc98459c51a656d7ab381973688046e86d054dee9781dce33481bebd865ca7610838e9b6223566e64274ca3fa0bc81bbd4cb52dab62dd9d6d9892607e5a233b46d03fbbbaf7912a966d2acd30d3aa4dff8fd8b0c50935a872baa1a04988dbf8de48295cec25959c85b391fd25055c9d73b5aea37ee679e8a35e49614dcfa30c84d33ab2f15f86a298afdfaae48c543ad4c95577c8d654860abffec0570a72bf9318579c6cbb918444d350bda0b78a63bf2469878b0c08bb137f0f6427a36a19609ea839840a464f516952d5e5ad3299c6d8467288d7e1fc4df15d6cfbe15af463c51a970dd0f97457a1cf0c46ab73c03968a858e130a33e38933d3f9c0bf5a16ce0dbf2dce21ba238c39c949b932ff42a944c2a27c7790e9fb32b06ec84b4be6eaa37981c264179abd773f3a57286057c9d4ad4c0f5d159059957f2d32c7d1b7c2e500cb5532eb95e82b6b5e7bd2da605f103273a13b01749ebc34ea0b32362f4ad988a60a642d4aad7732974bf3acf5f9b210dd8b4c962fa53d74554a625156b5c9de73b6f55abbea2dee243b64cb61a54db5fad23cfb69cf9bcb13af0d7971ccfde85bc972186953aebed89b3fa500c25dd5a48bb27752a9276d0544d6dacbc5894583091019e86b833d69c68ca4b9e540ad5f1f2db28fbcab044ca1ebb457bf4045f1d35ecd3b049abca7b26eb58d2c2114c515cc0a4da99c8bc5df851a87384820d028749ad2d1445e17e41fa0714ec47e44bc2964d2608ab2a6b59b5f84cafe59ac0232564a6deda141fcb6c901630c50cf5bd049f2aae4b56bf9422602d1be726be024bbd0145c37e211ad1b899e7446228e14609a0207c0a7f0d08b8c86cec0b6fca5cc2cf5144b237a21dade95f6a6ad2ab98b526ad36277e4c869a58432ae183d79d1b87bd1593db7fe7456a86737e6ae83f6505716d83fc22507381d36f67d10df96bd8914f617705e310b56de5189ed6a8409d35b8adad1d0780e2c738276532aad089070cf4c6128a95fb1cc5a6341d79fbeb031e616171579e3227259e9c45b19246ee10e3802e4d91c402a07b33690c5426333516e718a6fe11cf5f51ac950a7208a591def4e18c449af90e1b1a3cdb6526f4f8d12f502881afe0cd13599ec22bb48b19cb693c2b58af9556515b518f49dda41b05222feb573a91c9fff7c6459a621e84bafb9aa94448eae72b56e5bb8f7a3017c698465492f66c7d2012b4e109770d25fc663424ccd3d01e22e35b3603cc186f78fc91df5f4b5d15fca8a57a561ab3ef756e5b9b3b37ab3576a43c61286bc1c283938b6ebcfc4d2d097b0d81d9b349ed1d0f312ee582e6908c9638cdad0d0dabde36a3df3577bba68d04e4c21297b94ddcf6b1f5cd9ee4f9fb1a7b6832202e3b444d7031f9d5eeba9996903431df5de5278fabe59ca83b337f3fb2c51dfa0f8767cbc760023ec06d26de3a91c9280b36b04b3ac01e57ad46f38704ae3687a83c7f72a1a265e415fa29eb17030fe38c0eb0e0d528288bcb6d96996d2aaea4dcbd9837448500b1b633eca57226466f3b3f77813130e5b6aa92c7a99a3cc7d0c30cc6d544b09d5ea53edd556bda084c5527864280fe0350bec351ec2ea685562e96ad55740d2e3c0d42e3c82ddb9a02e89be841e207630ce11303cc6ac9a9b6f0646580e43136ccb4fd35a02fa1b201a7003bfa82fec10bf2e9a7af3275e8afc6f67245802cfcc65061ef9d30a6469bcca0406ad9a7020bb5711e228a49b75f8541c62e27341133f265de342bb8b5f4285c59287c6eb2931d816335afe794c8140203d34e5b2a14d7cc742226b7b6082ce79fde4e32d7ed1b43b1f88d0a144a031fc09ad1cfee8f0e87eea7f036d945107fdaad50d22d3938d1b7e00c505a2b4e82cc2299da536082d185447c619dae53ab768ad182953427f8f017f0720d9ba26a9f10baf02c35638336e214ea52c86d8dfa96eddf752bc41c7183407d2dad627bbb6daf12a6931eafc08ca7a3fee23964b8cba81ad43009b84e73a2b8d65ca02a957f85e0e337e950677a692b363201fd46522399d5cced225a161e5fa67c469ff025a58840aadaadd752c91342d98f3a36ca99455c83ff55ba93fadcaee85453d1b856b47fa5442091d32a904a14ef39d2b63de4816517c5372bca870508f8c4c2833c08d6f01918ef170dbf2419dc02643833239dc9e6d35f2cf276583558d92f41f614db4166983a7ee0daa8d21daed405fe4c34e2252d1190c7a8d2ebb630843392d085dff3e9e0e6fa0fb73e5b4ee4181149bb72e92275e434a44b74a75e01c63692536ef4e98985c384f10fc93640d257d104d67915e407074bd92434b6a8ab6e60f5587166f938757cf4695a18200bb6a9748f7003b2dd1ef8fed1c2d5847ee55687bc74725e184b8f5da0f85f1b07333702dd55d341d9d4ef6fe2a2b8cdd597572a22d0a85015b843e52fe1bb815ec3e046a74d7ae5930d0b24a07e50aebe90483024fd8b5257edb8632bef9f8a6cf7e89b5bfc76158904ed922c34241f6c47438103eead8c1cf7c5c40a8a605cb5ccab0824f7e32e252b7ccc5ae30239a72352d877ec5eb5b4236d9726f29534a29d70ac50ad30a211805050985d047b531ea48ce6a36e687fdd4eea6aa060624c7d8d60073a6477799b77bb7b77bd69f6d308319cc60967d3535a33d62fb942364a84e83e93a5107403185c93b7d8f87fa1e4ffb1e4f06c8b6d15510b90ab27dea539449eab71e6fe67b3c7e7fad8faefc33329c0e12b3c33862c1abf6783b2609285d5e2fef5b2214d7444c7f95c665fa7b98f9f5d2cb5d95b965505ffcd3413a5f3f67216a535f6a1ca744de7330bf56dd24c9756dccedc7e725c55fcba50c2699caef40ec499927934b194c755327c8d4957ffc1ed31da751bb490cd74c262c655dcc2fc288daf4dba3caf0358fd47e5f1c54a43d729a9891694e8c5e53975a398db32e7bb2debc6c6bf3395065254b98302b75c74ddbbbbdbd3bfa4718638c35cd45ca4bddb11824ac486192b2c4ee8386135884a99bda71fa7dfd6615a1295feac72fa0295ed68170ff612651326be3a08d1d81b7cdc6cc2d0a0289fa75d398da4d448dc34e30da5c511063ead74dce839820c4547627eeb3dbcc0dbfe909db7d0c510e53277885f05327ecdec487347583b9d96f6a07eb1ed338dd4c8d8351d8644a1a08a06145686a0f5f98313eac61f67b77530f013355239ffde64e4d90a9ddb437fceec3fcbae9f4dc10e98f5e1570ef44f9c8598f719166af71488e301313926c311a08a05145775b85a8c2352c845065e6efa6c6014a02ff841e26f4e80ab46ff5ed6e9bbae3c9cfccee5a4ff55d65f617ed37bae38753ccafa73691eeb687b90ea4e38d56f7182d7cb8610a1c4b0071441b3008c1200496d974ff2fad54094311ac6519123186b0020b367288230a4f3619a1041b6078898c604a010d8c50ca61c95b030827dc431824cec04186303068038816b638c1c5970a425d27b820aadb8cff38bdea6e6dd13457fbb565f57726c5cce9d19de429a67354e26f4a8817e90a2ec4c79e49f6185d09c156c82846afc05fcfb99e0ab955a4d259eb2c6e95acd5dbbdf4ee3e6f4accac69c9ad5a38b6de676666665e77cc31c7dcbf9aead17f3915bc48118c1f49bba6b33c50e448e344a59fe92e667256338f2982bbbfb497ee981aa9bb1a4c17a8987396bab88111d3942119d4f8a266ee650ba6aa58758b7e48e2072a4ec4b6357357c87c6acd257c0cebbde9a7bb450c8b1994aef58937995e41e72edd46498d0fbf2ccb9e333e82aaee5a3677dfdd9aba3aaa915d0821bbfbfbe7eeeeeebb2ac9ccec580c8c8235476a38b6bb4354d36ccdba5ace6a25260a320834759f9d23062917aa1d4e9904dab22ccbb28cca8fec42650a6c2153ad9155f9d243fdbec231351570f9e1c9d28c758b7e4881d00f327c118a03155fc622a1356a8caf7a9bae48084c45d52d12c2028c5601bac734510336696393524ad924cc267db22c8321055a9332240c3744187688637e5883c70f29883d2d50e249183350811635bef05a453f8cf1c317524ceb5f00eb9a0760253020e3c80d19c4e145280d2a4a644d6436ddff675a965159818c4d16e34fd5db746ed4ef5b980c1f744bf998ec82032e545aa832f3a494734eb9d45c841883667611228dec08194a7cf1461c29f0410a348408433353b748882c8430aadffc1b362191bdfd08c72875370fdb4a08131e63c88b0f5f09d70cacf87d8cc7c4c778159b4568c185690bebdb2f95df072fb5ab5be48395ea4394ba453e38b9a95bd403983ad707d77e9a75b5b2046189628724b018e3f56f77dbdd64636e510f5b74ddfdc3b6365f6caa1249775e24be4ef31123b9ab29267df2931d1c33b7a631cdb4379e542b6c66aa1f7c55c0bd48e391b33c8df9f5eb55715e91a9db8584ead72d72220c1800d556dda227921a4a0e6fd403d42d0a3aa3b252dd6660163f53d24a7595e8a7fa529d6e4ce1549d72181e613fa64ec03e6e755ea5c6f1875225371d256177ccd5a891d3dbb5068684e11f5c95aa733558c32a3618808d9fdb999faa4a27c41855ef45b564aa5fcd0b2a205425348e57e7ccd0c205075a86a898e2b91946d020333f54ed3a54fb61bffca95d149454bbdd28d2c109f30c1b5448e1f2450d2e536e9083106ee4e086325ed0840bcad08106177860de2db0c0c1c90ca8282d00a38225a8d821082635c4c081829e1d64e0e20834bc40f2f2848ca6177a90728b306c68c28394bc5d80d0a2880a2a6e7c99628c2e49fc8244b9d003f3f6eca0544315302d0863c8061b60f16532e4e12124a142f825348410febb0bab62ca0f67f0f0a292830797e0f768978f072184504e7ffeee252284cf8cf5f6af91fe55637af7f2d224b0427a448d35d28698dbcc42f587ceab92bbcb511b42a592727dd77f352be6be4ae574a1cc380e73ffe3ca4dc55c08793fae9c9a20539beedef077e56ac63e961b8cbe711cc6d60e51aa4779a27a94307a0a5d3d3ea435dd357c6ac41f5623feb3adcc6f66667df037986e26312c58c1152a2571d486404908218447ba5d2f755fb362f2be4a25630edbda7c92df8ff847a411881d8bf5c1343ed91b7f1f33e5cb39c8e573f6fcdafad5494bdcc50ec5fc3829a893bc97dc95bd1fc1a1ea9fb797654470e8c332220c4972d81191bbb02467654421c40854dda8268175cc8c40fc232b8a4fd647e6c4def83b510ce6871d6544ee3a924849474b1853f58f4cd59fc38051c958d7916525f10f0eec08602c4e0d16077e1b491fa751bdae7b2710d91b0f2c55e6523ff6a9217852287b43054b5fde883a54514520ab0a3395bf0766aadb8c5c7723bc652ecbd40eecf7d70bbe2abfa3b04415725c518dc35446315d8a2a66f3bb0a263ffb40c954dba76cb0b9eef6311355d91deec7565d88c56c51117a73dc9b7d87a91d666676ff0851357211722a38aabb5d557f13cb322935eeb41b67325f4f85116b2e4bed6c4b29254b29a55c948c3786715ca5a080ca1feb3781ca54cab0adcde742b599c8faf0e7f74091c6c99e9f8fa88c0d7393eac7bddb89a93b0318759f03fb839df008fd9e3aa1ab0a1c477bda6fb1c7cc550ad048e52aeb63bfa849b826612aad98eda4ebd74edadb248a8fdce5de02f503d57e0f6aa5fa75942a1dd4501ac809ffe81a7684feb6616ffabf9ea161cb5039fda684b077a24c58f034ea2fb73223d053bdaab07154a7bb37a8ee36255d288ab149998e75c9556508e31b12932208228c20b4b4b0040b5e5e56839afdcce01162d4efcba85fc7238cfae59c51ebb74f28d56f8fa0b8519f08c34b0c681031651902038a18d907404079c10b328cb881162f7ecb5d1320428c175398b1454a172f3e1077d168d9f2051234b082872dbc98d4d52d82d204142bb04bb682b8fc43d55d9cddc51a2626ec2e4e9910d5431877793b57caf758603642835e99b037fe5db19e6613b665b5914e5275ec616a879d817cccfeec6f849999190522d519b2b34bc0dbdde3103beafa1ba1707e3575bf7041a1d7eb0584b7aa6558b7bf87f94783f96aeafaef581f5b77653f746c3275ffda2d77a204c9508b678992254c48962c51c2846449abd56a2d51c28444c912244b860451928424690993a4de9694de925f58bafd9d080b66fffef73a4e3dd09d17e9cebd8914699ca6eefd58110f74e744f6fd8bf862451c48091e689c22471aa7bbbb7b1da341e52e0e35bb730e34fcecf783f237b80f3f0821849ad6f06506bb352833c8586c95ea71d081db881bcce45f245f6491ad404718bd5aec3c06b3df18fb8f598b328b51664b8475a45002d0218430266135d85654e0afe7ce4915ad792236fdd4a62ebf4ab53631360e4e82bab9bbbbbbbbbbbbbbbbfd25d0dedd5562d3feda60bffb182da13b20fc5df7dbddd7699ca5bdbb4bbfc801e14ae8aef7754a00d298ced68f56a65d776dd31d0ff303d238fd12d875875f3a167dfc9e39d93503b01100e55e0e6dee3000001061c72a0410541f78d0418d8e1c3473462685da4e9accb008bd3330b788a80a0899882af61b7777e157cc5ee21f4d21108f30c6fa600a9fec0d86da4f3dfced359d76174cff6e2467612fe59c2a5523b12fe5a09933322914f4a5b8f9d249f32589bd73160641f58107d8675d25849f2ff3a83fbdfc0e2183c18c0f41a09f54d16f7e403f9507d87bd2fac87ef5d83b0d16076ad90e7b6c452190b3b05f7d07f4fb1d5f433f9508af837ef373d0d08fc7a4590030433f29428a7e1345bfb963a39f4a45b18cc22c7b83bd96c40ff652cea9faf9a9d843212becf8d5afb7e2567061f5223c1311e84ac88e17e145a02b88c064f522509e155ddfc15d596d854010c8b314d94e9ac43ecb91db3ca9b497598e9c52f55d854015fbcfb3540c02c1202804abc02198e547cdabae14f3f39f8afd344e3ff69e85c85d3d1ef62baec773233fc2de91b0f72448d4417bf04257b719896118864929650b57d090d2859f1324b1557e6c7e99e254f9e30b546093ca3f990d2c3008b5ecc77e6b8e93fc935b9567d852e5a79292525834b94648bfe9b4e9f7368d93a34a9e5ab6dfd1360b218490f99db60b6d6bf341a00a7f5b7fc9a45e62d15f5da5ab7495aed255bacad755aa3f7c1f72192c0e8c613bf870867a92b3e03ff6d94b8d078ffaf9500e2969e69c2a155d6725c12b66863512ffc8a8277517eb03a31e666f28fc818127d52667c19732f4933345bfa942d14ff50ffff4aab0c9888dd8888dd8888dd88883828238888338a888d4a654658fc51ca94da9ca1e8b39524ad563f4fbaea6b2989f270d252d3135c117fc591f433d1e7c27323a7217f4e03bd2fa60a0ad654eb071118e6159861da3b68f349a841e7579d8ec90f4eb3ea35f0ba3f45b22205ec45d28ea946e146a54ee30f9a7884a157bc9b988bb388665f5777f7fffec4d67a18c44775b3f1e22ca3a0ab1257925b2ee6fedc5df78abbbb49774e5ebc5979c7456fc0cccfc18278ffcaecec4c4949852cea952fd3fc155a735aee5ac7d4cd24e07ecb7ce5dfd2dfec1748802d647d30cec0df6d86fbc3f46206bf60beb7ee7aef6927665d0a5ee4a51f7ebbae4a736ac5bcec29eca4f13f7aef8770b4447403e4e5ede568485a972584d61df9273c25405da43517eb5c033273aa31a121dcf86b514f35ba48a0d691ca0d858508c31d2c516a524d6fe2dae04562aaf9510f6e2b317e90fca8bbfce5af9735da13053fd67aad3afa7522941a43bd7f8a04d15531841f10417a20790e02307a76e0f05d47d6d88160278d47d1eacb09428cb50507b94c34e5aecd3bdf163c4acb3bca88ce6127dad5749a7dfec1ca6d65297f448479c8589ad6c177f73140584788885239851b6c282974d2727a7d5eaba7f272c8c397140b68b0f35c942445b458d4860de1032915196eacfd9bb4af5cd21d59f3985c257f82b97f0a9513338f161882d9a386ad2821774711287913b154e304cf660b9a2073398624004135a588629c888533061d967728a35a6c84153f142a5800d8703cb189c032c643cb139089303143f5e20c1c18482a51abf4615bf6584e50bd00d4040b124e6882522252fc6a0b292e50a1acdc48af98545cb08758bb0a0e04a52fd66258281ea36836a9c11c06a8421bf9cc5cf3f489a882cf120f54b1d22f82c869431a0a822c509b0c8c183b4e5ac1d6e525b3ff553c150bfae49fd725ea8df1af9d46f914e50bf5d72a17edbd442fdf867a6c827e88d33acb0e2067e75600c15345021030b74d0c1c3400c6060b8e202d250981c5f6ca9c1c885314300e16d0dd84883280823609083148f9fc75d3d4240ac51450b52946184131e3f1177f5a420075696ba80238921ac78fc48dcf5e1008d20355a0042a30daf2707305a5e60c30c29406cf1f8b7462db42c8470c1126d8031ba428c2ae290538049a9600bc66a54734e390516db145e700b0b166c60e9d2c25284654b0e6a571d2564f0228e18a8400a3184e070400d5a58092262a387301effd74d7110db8e6677c1e7069acd23c01e6f7f3adcf55ece9aae505840f55f0554a7dcedc3b6369b17a065226e2f4c5790da851ca2564e4de8ea622d8e5eaf570b9e95a1aaeaa1f3e554b692a512f1a8fcb26254bd3785028cbbbced501ec93154936374c114de2ec61a9f4d50fdd9d9d905537abe80dcbb3b54aa6dae999331e6df9f90fbd40e539b947477f6ae3bee533b4e6d522b512b177aef2e6b70230d91791ba769de533b39de533b332f517162afe1ccfcbe4de3e4a0f97d1e8d337fbfd523a771647e9f84c6913e74fcfea683dbbdd97eb76d6743414a3901af92a236859adf3665819e1d865a48e30628ae68f185b77135f4c47db06e2fb94f094a561ddfb88f495dcd7c0e9a97dc11545dcd3c0d9d744777337476d76dc8ed3654dd9e9554f9bd2da9f2b7dbde5328c07ada9854a942015649617718dc2993df05738a0e8e676c6bb3bbbbab6d9aa6695bc403451a073e12254b9abfb0174ef2656224a626a631aff804a83a24b237f0f43a1d54193e33ad0f3e635d1dd4593a860abb850ab98d0829f67216f6e32cffa599652828c6a008876250841281b017ac8209654c1fc484aa337f4328819c340e66b34ff5dddddd8aa471e0bb18c8592e39c33efec74eaa0f3512cdf2f766a2fa6b8e313fe633fb35edb167ee083369cddddcdcadb176da4ea7d3a95feb2137e6c7424351ba83d2422da5ab7450779e034b6922ad886d7797dc60dbde18f2ca759a7516b1d83cba63e8b45b1cef86dd10077e77466cbf9ccede90a0c6dc9cb83dbae385b0d51df48ddff1798b1132c4c186adabe22f8c71637ca7ef729ba9949005eebe41fb95daa6699ae4652ab598fbdcbcbbbecbd31d43a078a4f22fe73a4cc8dc919a7aa4668bcd573517935266383cb287de45b7c128f7dd712a7ec7f747e2aeb6591fdbef1771d7ccef2359e22e99dfe717ff0c60c709453f1ef54493f00c3739454556d9a1eaae5f13626640e65194859510f650cf1e8afea03c99ff819e0fea9b488f3701d9a738f63a15047a32b4c909663cd4b7f7d8694743d1dd04649f69dbe9b934513314b688bb51403c27a7d5eaba7f95ea9bdf6a8fbda06628c08deede68cf559358d75dac4e7f6fa09c3adbe2b9f8730a24aa7a4d573787ea0fab88a9be022786d0a1fa8fa901b6308be82106e71b31f5c78310c21378b0716ca81841225aaa4ce3e7d1389acc6410f221ea5c950821676d8d5b86b84206a7e2546216fe116913f1085bd687d3e6c2ddfae89ae35597ca7c32fd9ba63b74f80edfa12a463a83dca53dcce22e3f6a228dba91b3e047a40a9d498dd92fa6bba5ee608c1193524a195d8c33790ee612391351e340e84d15c6a44cc99b1727bec78f14ba7f77fbc3cf857f42811bd99a1418a4f9c1bada9634e0eeeeee2e8430c20823840b9783147ab461be1463526c863943165e372aff6e1111555017d8b6711e5af9b10265688b88f8529b2ae9cee2c8c1ab26e18752e6fee6349844eba367733288b912d22bac84d015e0fe27b377ba0ae24ce27bd32110fba6ab20fdf07bbc1e4fd24ee5906b398b3f723918a7c30171968771ebc5f59c5baf777854cee2f9f56ba2229aead7474dd449dcedc6b6361fc6bf5ed7691795d9d9e888a7581f4c1b8bbde9f9823078d3d2deb00d3e0843ed7e662367a52a74617ede14979cd52f655c8a4d7bd398111ff10fff7ecc85f591c5ba7a068bbdf887d346e211e8a9d53ac001042080d54a878eca7de4ac7e0834abd4ef6130bfc741932760862b8876e392bb968a262280bcce6ee0f5c726fed1b5a9f462bf37ded4dd1313befc8deefa6398d91573d62daaa28bfac98a7d7fd96f93bb322996c5dfe52583ca9fd1a07253bf1a2833cafef4c2b0d38fbb58088d698baca852f9b5371a2755f94f3e8d838a72aac2443624646d856768081244b414d9826489258df33113959fd9a8fc0ca5c02f821ae7cb9c547ecea2a851ac8f7eeee18b924dfdd668c7ec1b24d46f8d9c4011aa1f47a9ec43fd588aa665464ccee25fa40c2803ca8032a02c2803caaa644059962fb017f60393929cc5df38b00a1c825560952aee5a6f681255fe601578c4c6fa7030e68a68c5b3fde9d7636eca8c9a32d1381f1365938d544459131b1d21555eca8c9cc53009262db13ebab38cae30a58a712a6e4777aaf82158306a08b02374a0abec37848c7b9bee5ecbfac03e049e19f16755f004320af4ab3a0d01f69e02c751210d0146572970c59e2b46bf13b61a39b24a180dc12a6d2a05e717ccf87abdaa4e2bd5c8ad52851c8faebb0e89c659b57a1cb144ed550e092b9d5a4266d4f49b7e2212018d6d6d7ccaf4553f151be5196cfe727db48f2fa6c7ba453138a236527f51350ed36ee1549ba8895833010d2842e26ad736a367b01f4765a33618b59b0c77d25d2f97a39fda1d83201a98280654a013b993dadfb3a63beea1320fdd0d9d34cefe17b206b5db8cdaf1d7c7095b93a8f6063ecddef073b699c4bec7e3a5b937fc39b55741e4672fe9528c5b05c91efb8cca95d30ab4f79f74206fd9c5b636bbbb37fc3bb6aada1b7e7e21a121e795095e2bff11245ca7afd60708fb8377847dd5fa90ffad1151cdc969b5ba4ef5da0ef69dcabe53276c956b671ce464c6c57c6eaa62226c699779ced48eeca95c7f8d2b46345179872a532c0a14564c67e698da39bd4e27818fb515933f854da35699baea8f34097cec67be7fe665be6764b814f79c0dd7b5b81e3925d4ec8d3fe494c89a44c9ac1fec8d7f073b82d3e95a263f1a50badbea29762cbab91a55775e85702c4670219c8d3365bec369e333e80ce122377e4132b7cc78f847531076047f2a5758546fb9373af01548487cc5fae0bde92c074e43d72cfed650e521e2a88a0b799003f1e8705d44622446e2212c5b3cc45d53b630bf45f291b2234a0d948f9d2021213176e4810d9b0f10c54f64777777c3e63e1425c1c7bdbbbb9bf99b92d09d742107054f10b108b10887681663116251b6607e6b9493191965bfbf1d1077f9bbcb4d3699df1a19f51a357c89f0b33d73fdbc43ba63088d88ea01ea16458144fde6b05f8e57fdacd41b1cd229ffddd4ce62588f0a190bcd4c01b8f1122514b28af5d47e1d5721ab5df92117b9c2484433ebace3c035676a96841eddb57c8df991807d1fa921a1c7af31bf5daad4a6bbee3028f35b2209f49700640632791a92290b51111151d116444a48113323939404c42529080b97a4a2259b211610b1c008b2008cccd06b8b1c20bcaa7002480a232ba4068486182e688ce9242e69a020f5e272869828b28c4906222764301a0273e4840c67f4eb34aa71a013332fa1284252fc25b42525c483982dda26f404e9491226f4648d496443152056d0bf6b085549afd7ab85298c2abf0d4f7154f94be02181488cfaad118a690a372af466c83982d896a8f2194c95a912af3ff947029a536254dd245d01d92aff84ad92ca3c99b2caf7efa959f69d653d35724abc42ca61bc27327bc1b8ad5ba322c72914bce6e8e9619a97341f294043bf9e4af392c394749c86cb418784592c466c61dcaa67588ccfa13e7e532dc0511452a2f8a99ba362131ce34c2d06ab72a9623f4462a7971facff9da892aea797d8c794095c359ad4cffffab19f3ade9d86867eab54f3343454d27c07dc2e8b864abacda279a734349fe375d07cf6297a045553339f23fbf91855e235f55f7682117e5853d4c80cc5e6cfd3c71a69a891d3639f7da752c850f4eb395123fcb17a8a02b132d5b0b8a3c6aec61d291ffb6ae4ebb409d8a35e7221a8a946747035339cb64d4e7e5663011d5ff39edad128aa3b0c7b1ddc89d3f1ef0ef5d80caabbd4679cec2ef535dc362bf518f7d5d454ea396502ea53da67dce96b381d8f71a9dfd457df99dd71284e7657d3ac1ddf383691a33a9e456cf6f4d2545135c74341541950b7088a1f24180cd56d4130b708064b75abfcdbf71b51b35d35cc65323f997e106b7e89497ea9a49d33727a162a639bfc21d87bcb8d1a41fdc93f25dbd7b52bea59a9768bfb639634f5f56bfa418e3d4c5860ec5ba1f2175f491bf167a136f77965544cfa78a97e91aae0f563a6894abaa2f8318c7eac541b7b0c638861ef98ac2d77edfc6d02278a51aee9eaf4f27fe6652680027f7fcbc79e9368d7d6e996b1612ae9daf2334e2675428e6f9aca21b79fe91c124361f4e30d623936daa7d48eb6a1623d612814d715c5f5f7c9932a967de4fa312e3e0da7bd0eaee6759c313aa4bb0827fd64d5417f86c21467ffed9725995123fda897ff49ffa6f13b82e210646e984abca2a89196ccdcf72e1d28fef655f6a76f1d41a12aeab71395b1612af1caa88faf3d963a81df088a9e3ea62880aafc2dd44394fc8dd628f12a3fd2eff49ab6557b98dad13a6235fb48c0dd329f09b8fe4da1b0552c521ddcdac099d601c5c68405fe7e2657985e59169c77b6ed4d364ee7acedf6efa6dcddade56577bc999599a36ed10b7eea37a7ea052f5ab78805609a006a28b80a6b310288211934a59186158fa1b8a0a9720795bf26687340fd6c3e1e5f0f12aad76fbdd46f95aaaf9804ec1bd57dbc3843a9ce5164eac7529478557fe82f95d8a2fa4fd56751a2fa7759c654ff969628aa7f8ece161caa3f1021aa3f4f0baaff102232a8fe45b6dca0fa2331a2fa2f59028c97124a3f4bd400888925829e547f1672c118552a4338b6c8b1110c14a0b1461415c4b1856d104335e70cccc8020b3768c002440df849114f740debf2242e7c8ca902613acb935325a7ca89682332c8200348baeba4fd3650cdb2d4ecfb7a855fe3563c3efddaf7782b1ef93ddee935ae97b857cd4e56ccf5b457392bfb2b41fa4a10f91a65229d95bd6cda4bbfde3aab29932b741524d28ee9ca165b9600ca94e617f144fd66cdb8306d51bf5eea2667659f452763327325b2373ce547ec97cb895c6b15243279676d8a47e5ac3126a4347be3bf5e46a5b7736fdc023098fc3efda5ff7487906eb71fb16a9c31a58b22a6a440284a0d3d452871c694187ce1924314a0563714a01b94e0384194a51f98062c892c4d59ba44d12284440c37982109256a6c0da06e51124f92f099c12e1b4708716a2965f7ca66da7c93aa6022882bb690e1c90b3c4f41114d5b7577771831adbdd95da45f0bd22fc78f72207a230454e2abe071bc518fac52a5b2cf45a96e51d1979a54b788cb98ea84974af382a50a42dd22a257e5d410ce40bfbca52ff82b84e3f0227d41ba12c21e7cf6206572c502ebadc0c22a79af55f284f0af529d9c0612632ad39a30e6b7a3f6ffd7daa454a994c40a29c00f2992ed52bf9ef94be110137ea7d02f65dc9a2ff323e5c2048413651184494f10263d54b418cc4fb2d79fe3724ed54b292446fab5f93bc759fdf35b75bbbbe5aceea5dfaced1c73c321b6b54902eb2799a7372f94d9273a82c01952c4cc6f8f781a2748733b6a4890c649c2541ad56fb24c0a22e53323063ac1ffacaa2c3720bbbff6db78d738dddb74468ca95c98a2603466c4acf86dbe1653d95607b6b5d976b429f3cbc9691c7e121a678542acfdb136452d0d0d04cef85263fd5ab37ead32a013f59b5bd786d98adede6d5f9fbe0ae290ae2ac09e275de5390e42e80afb90aefc55fc3e9b7e3995f77b09324dc4b2cca671ba365051124cb59f47510b5eb5bf041e18bc8f84daf028892733402d80a17eeba5f667581c1ad35c85f455bb43cba251000204fd5ba3ba1532d7b84993c4af3a449cda1141f69c5201bec38cae82689f7d4699c8d7749a47d37a3c1513171b0cd57e09042192a5f61f59325769e8052f2e63740197cb1843b59fc74e2a03d96b94c9e9b3154e7415845f7b76ce02ebcd7cc69d5e86437d8adba80fea7db6f7915a078407c51171968e8ffc4ce37480f038ab9f884f3db1b723b67669352728edaa59927d93f7501fa5f6fe31be6bafd3dbd6933cf909fe866a8d83a7ad81c07722ece9d8c840a9cfc1c93c0db7c22637d37217734e0b09a43c4e2560c43169627fe27c64d28c3a0d398d5b92717ce2923003e2087801f1314e85bd894830947354520f537fe27ea6977a4fed8860e637a5827f127f4ca3329f7a9ff948a9cc7c7c9b7e008afebc3743574152afc5f8d25db2db25eeea972a24eb43c635a6d724708ba81eebc33f3e03d685c2b2e27f5f6a9f3021559d02d99b683424f52b21f2675efeccccca04ae2ab00ab5ebd615fc198e81789014f140d20e64225fe657a34c64e80a4bd115fa65907e4957d8128de313c71bc74826aabb1899c81b85c5351f0585da3f4b54c518b5981f4069d73b2b7ed03feef2e0e33750e3681de563462513d3ee6294a7d79b8666cb382af337a3d3d05008404020cce408819b0f0257f333dc0acb21b35e0ea020a0a013e5a32a36ffa944b498f3797e0c728c7ebb54a38ef688a87c68bee6371d1c1167c59f31e6f80fbe86a3e1b6eeeffe39bf856d18f6fb468dcf9383fad4fcdc3efe90ede36ba01fa0a23fef6d74fb6dba683e3e1177e9f8f845dcd5c1c747e22e0fb48f1f7c7c26edf2a9f1371d1c7b1d78a0d534d5a8e3aff0ccfc065b98dce4590ef9f1fbe55b6307f5b60c95ed755ac5adb751263d1ecd075c07bf0d7517b5cf3829b217571f8d3a2884fffa05c27ffda3faaf57dcf621701e3c08395ec5e9f84dad1702b71e08dc7a2a23777590508d6f1435ca5990489a1f5749c2a37ac9a1386eea5777f173703e4ddee3357801f1190d6640fcad39c567ec4dcc2833f13395ede5f639b66ff9fd41f6327b2177a1a88afa78f0db671f7c7caef2413fa003faf3de077415243e07d1d02b3ca80edacb382a342f693e07f7333d1aca4393ebe07928721667c5871c130d65f137146f1efc166b4ca5c0b583523b0da5bbf8f08cc9ff41a3bd89df6bcc8e9f0dd9be83df140fcdeb74c64c1d2c29c55f05994ff3349449cdcfeff1320ed68d5bc17f7b4e05e9e02765e2dfc16f8c9a5c07bfa90cf86f74257fbdf95e3de056925a603d14f5d1f13e39de87e6e7af47f31d6ceba1b2b84d9a1c3ab8064acd703e32ef937a1fd46f9f6d3139883294f89b0ec74d5cbffac759f165b80672960cb71e93b3628cf16115b39fa6076b151c9b6fdda4bbfa37f59c7a7f2245f821bfc6a9081d7be8fe43dc5dc6ffdbc9a164b8d3cb9427dddd310aa484e591e1b8c286daba07397d7f5326fd27cf3839a5c6f9687f72df1ef528ba42ea37cfdddd398e88bfc623f39ddaa9c0de38a43c7be33edaa31e5231f953741504f528f71fe2ae5ea66da2d2fd1af733bda63c9ae5bf495e8307ffe89f0cc8475126fdf2374ef16cbf290be8347477778755f0f40b693db14f406c5208f59b6b31e52b69570d4bea73057e93f766be9f88bba4ef7863eeb2f625b7cbe3e3efd3647afc4da477028ec3bb129da3221d8919df79dcc59e8edfd6c1c9cfc1694fc39d7e72db6f2a07b71ecdd6b96bc9cb5debb5220552c24c7bce5191acaf07e5d1acfe5e63c2ae767b4198a0b21e6f4a9fef5229bacad653a5b8c7682a09cf7c219e8627c30de188588019d02fb926ef09e105f46fd05315d89b76cab33754ccfd7d54085188b9ef1c15f991a3f2233df9ccfd4c4f3e4ced882025c4d3f0f839a5427c8f7f45050bac3769a4417c0c15fe19eee73de667ca64939ccca3387ed8c224c2b33eb2da2e5f8632e1971e7b9c0ae2633cfe4d39b5c07a3edbfb9cde27b59e77dc108d2372e28a70489cd5bff1895b8fa7c5a33bc98feac17a8363cb3ee35642b295101fe369af51263ec65b017bed7b38b593448514b8fa27d989cf2357fbd9af07658f1c4e88f6195d6125247bf9d9a6619ceabd73564b67751b6d6b031fc3300c62daaeb69aa669bf3e98bac6d9f4788e4777f131aed51da49347581ff163cedec4d769b762c2f72e737f226c02d6006b70e69fab7a31f52a92beced249ee9279f8df0f780db582ba979caaf591aa10a9c223a0ff51f96b36d5ce22e59c2a151177f58fb3e0cf4d7a2ce6b74952cafc7828a9885d1ffc2a2966d191960afde8759ab9aedd6a75ddbf4af58165c167183e0e151bd30c24f832ca3ed56dda59bad8b2377004b2c68f0f6b98fc9fe6de9ec00019ae3d9a3931fdfb03ebe221332a64a3c28d8361a8d08f904ef4931a1d42d1ef7b6908e8e75faaa6c954e1f74b4e55a415684f86b65331bf2e0b24b22cfe2398e29fea4c39a0707777581d3aa684638c71177a8c4bbf22714c7e3fa2aabf0ea147d898e41863f46d876d7749c8e9eda04720ddf5434ea7bbeed18211239a3cba2e62d18869f38f6570872a933e975459f984da124eab6598ecac06cf4e274c8b520d5e1429f96440cc53dd2230dc782925186654b979d2a6fb97b4b3c1c8599b4101230907601cd5cea8088c4803edee6e6f7787dcdd4dc5e4779ed196c0b21c74b0852ac64b626a3f337553181bead7afdadd4e5cf0be06eaa01ab73b0b133a94aef8228b2e61d880ca0aeac74656eac747ece5c859dd8b44a477e98b23ea8ea9dd3d4f54f08ac3880560b6dca04afd3828e9042ca57601386a4389262e4a283df19aa934982c7a6b5904105bb4107dc182028f8500c343edafe6dbb1a37e3649471820c90b1a104103367e18a09e3e4bed9c549c24030e57b5c7523b1a110939adca3c2ab3aa88f9a942582e6654a99f4aa53afaa2a8ca8731b523bf7146e082cbcbfbe0ef78d5370efc4d0d2622efdbd11dabc0d4ec717224d52602b3821a1f368e012a3331bf3e4adaf1c2ebf592eeea242f6c507b684db4ba4e3aeaa54e6aa1da4c324de61ee57014ac49861976781145ed5fa5765a7e1b6145500839b8a8fd5e2401a6f68330b70c2415b02a8b2f32d4fe0fbe253a40194dbc08a1039619a4e1c1294518f1c4032d66d082dadfc1e9d4fdfdeddddd2860d9620d3350a0031c6c782d658d2b5b8d8e01402f360da81f0f126a165cf848c1450cb84003090a19e050e1b764705461174154d8c51a157e8ed40e3c6a02053408d8620b99d5e6f9eeeed9a1862e4142dce0c888295e07d1dfa3bb9b4ad8a8287ad46f874d853c7a54e865055d852fa7972e15be2aa842298cb4a8a2c26f6d8143852f93da8139b50428a68c19307174e48215781008238cb09417086116659050fb516164d1c5a74713c639412e59d050fbb5d44e534154e1153b303a81850e04a8f0b32580b03dea3245ed8fae34f96dba2e557068850f533b101e41c50c8b8023376a7f439e2ab863b8a14650104a880183e441fea1c235802a846ec47cfe564e5d22a2eaa3f61100662055536a9aac02159f24658c34c370aa7e30ae810e762857d670e4ac9dcc5dd3b5a22bdca89aa6bda6699a56a5593bd4acad1e0d599ab515a676b2e9ae8943085c354dd334202940567cb5d68a8e8aa89aa669324ab3d67b22a5595b3bb593811114a6699ba2c92cfb61d2d42d324aea62748618a3377898db0f98f9810d59a6ac5b24c510444c99ba455218f18614446198c2fc5034851861788038541427afc0a278e00a26ea1651a15479d42dba02e84454f98978a071560d6bbf1895aad54998d4f4eb72c1242099914625cda804ba53f188a9df66d911cdaae80e043e54ec51c811a6629ffd6646eed29834a6cc080d251be62a6efd342a51dd654b50a9bba4a48c7e1952658c5b05a64fa8448db585452c152a1a0100000800a314003030140e088562b16034d545e50714000d88a24a6e509888b32489619842c82863082106080088c88ccc060d72de5ac4b0be45dd24c32bae8ab694e848f0e56564d2af38bb9ed4d39e29379d759dc179688504b3b8a121385681e292e70057ff936603d61571110edde42946f4f17e08989215d29ce214871f03851a9996f6abdfe56dd42a3b807ad433a8d0391976945a7121035f21a9ce7dff527bf1fffc94106add8e0b376a052a14066c11f806e3ff92fa4044eec3df697a68629c98de8b65567dd713c5cfdfdf99d094e27068fdfae8f3d780f15d193b21368b0917cc87f5cb9e797ffc09cf60e5023833f91455c0faa504dedac42e1e06127ec956f7a1971f5da615d4890a3581cef9954ed3bedc4056201a7e7de845cc6b32154018ab0d971c2598d2631c20ec8237e3a214a4374ca158aff9d9072b58403ba585121528bcf1e22bd9d13cf053c03d5ace956643dde0e76e42eff0e248e2dfff7b00886bfce4a98e452bd6480d15f357048c077ca2551c01476702cd441ee073983d1270283337a82ef138f8408dc0bc7edeed04d7027349b7e2c0f0ce62b7671754d79d322b687472837546cd54a7d5f158e03b6e5435031988eb366f61a3080298393aa2636c121d2f3bbd26629da1bfa6714658ba673197f9b84f1190c6c3afc022eff88cc848bdf3192460efb4dc2e690e00b79cd171c0ebdeee1e8e9717cd30a2a43136800d974dc7a9678e8672554e52e8f7bee717ebf1aee6a384d360ae7af6f8e2e32bf9fe64e33862aff1daac6365bf4bf0a426334396b5aad99c70f2ba4e55b787979134f4eab6b6a0c7c77ecb6ae5ea903116282197ca1dd3a4f0828c837909e64999240bd8fa5b9ff54a3c4e4a8b37ef16e34302fadbc0f84a392122fad0655852afba0fc183cff8c0297aa44a03527b142b6a987ed6bb5469595f3e4edde66070dfc972eae33d2d60f0f91dd598127deb820488a5c7cddd6cf98b9fc3d402ae1da2d08f228ce1e1619678109a424c6f4102e320000b56808cdbf85d113095d3ff72e979bdd70a792063bc63c9f55b13efebfe7cc0a06648d417f2b066047bc37c6ef0a014996bf4cab8af8bbc39df7ba95e3891ddd1ca06309c73521f2ab0c8ba0bf446487e5c53d6ec8a7ae42fe760ac968f5b8666a50004a8873cd90222a021eb9f202c57d804705ff935dfd8cfce0e3fc63f030781fc2e80649204ae181ffd8c6aae369b16e51d89514c2d26aebe2986534f8519d9f68fa672cfdf541831cae51db9d56087ec144907d9177c6363d88a1f3ece3dba7a28d9233df1428294dde6c2f9dbbc8a8087dc146f7eb17b5fdd0f484db9995bd58237018b4667a93d0582a8550ed06043deed34ee196bc343857fe8eaff68601eb469bd5d4f60b79362a8884317b520c9ad62be63b1eb19f323f19b40b095d5e08b1720871091ffbc79888932ba5ca46ef63e9c8a9321e1446013ba374c5e2cfd8ea8444fce1a6c3c5457bab75866023814359a08b851fc6d14d134d95dc80d80403b17f67fa9b80ee346907801e60b93ff9bbd13f2531c3a95f22abee8b91994d8cc22577bd472e2cbf3868e9a47ade092cd99a58505bce0d594972f27ef329b2fc5d7fde93f17d17f8f73c6269196f9ed1deb616907ae134beed8677f3b7a4f82268b676d95d194b5d7d9d316f88c6815f08e59eaaf457d7fe3a989b522fa545e7c828711bbcf1edb8be93e74b6edb12739bb22f7c18e372aea678391b3637004489972ce9b4f4ee970269017597e2d6f55fcbab6e57f305e054a9cf13fdba0d70cdcdef2ee21d6fc86011d5b21617ab9c5fdb0481bf5c96f298183f661a2e02c165f6d5dc3a5069b64e47fc172d76d0b93859628e3795d30b3d27e55509151b637577f758c10bec006a0b37cb94b3dab0ffdabd0e97cd92c019ac1fd44ce6300c6f362c371e217da2b6ca1c940163ce0f9dbda89c04b8c9adc92e9482a7a54f4a266a276e54d5a44faa447db65f48f2d793f537943ecd03a4732b000bb519a5e48d69450122376c52b1ee9f6de1784634abc99194794fcab4610891ae57993f317e13f3653250b3f1de9a5e7a4c2619c9192bea365d7dca084da33d242c4db5e355a09f17cdedc83e9f1630b2dfbe29d1b0c245e9b4eb9328fe221b88886b76fb08b50810ba7914e3b638d83f0465dc7a6dfae824674236b207f6c5540241ebe4926a23d459181979ac17e79f04d580e6fdc182914afd9110b7eb053fc4ec48fc61c7b93b7ebd3a7c842e3f762d81d18a488edf1174148128e08257b603924b274715b002ca34eceb9273106625ed026d3e2c34c4ec4916a72af237d3ab99446f5ef8d0fdcfe7166ccd83d794aa342a99c96f85438ec4595afab94b07570119398d2c946206763d67a47e6f20b4ae7908579832721f332e1de9d09d34a2e4e1d978c84163e75f6098a297bf9af1fe0e1adf86fd62913f0dda0a40cabe12a998af1c2bbe3ccbbaaf66546030a280209f406886b8f2c8485fcb9ed2b892c04c954f9e5c785d07b86d50f8ee0cf29e6ab115188886792be19077c7002217501a99c1933026610b1e01668aa6824ecafe11363cb97fd3801fef2a4fb498c925bccfbd4f21bf2922a6574acb69946b1846cce5600753d74cd09b9311676773533324480ed3614f4fd1fd8288a760f35215367587b1f0ade766addf6134aee3466e2d5a123cb88d6d89a909e2ef7389773ec2a75ed9a6133dbf5b0cba1b91b1b4f240872524483e14ddfae4fca3ae02ffc845a10b68d8aab7046e052a14e0e656db4c8232e6829aa7518736a6868e837cbde9672744a22b1f3277ff6102b9d2455d187ec008e8a4da2cd5108e53efc01e208a2601974a63a410e112b54e5c4df52e8fff2563fe3fd3f6943f0ea7d329a0e158f8bc104b107fedcfed4f9a10035b11d9d5ff87269b061c082ef2223bca226e32de3a9fa63685f7d44671b1727cd470c78a81e6ea183cc61253c2eca9785b6b51c2d97ff7b72a1b07a6fc44bb085eac705c99a0987ad1b73a8be12dd95b7316453f8689f95c7adab7f5fd6d2f1e71a5cd64daf7302d79a0849d457fe36143005bc81990ae7624dd8a078a2b87b7e1b36c88ec64b676daec61b5a4fddf0a4a60afa3609454a3d7ac1fb3289c900bac9db40385798528877122afe95e1e901e205ed9f44c099e41556ecabb6094e644a048b5560115d20f48adbcfa5440c33fd9cbdba3c4f1b8996d1ab0af3b3cad447f38cd86e437cdb68182ab4e33c4d536408e4c16f9a0938a15cc9414d461e8a945ac8fe39758af23241e6438b77fc3a464c8403b43dce72708e84363af7ecb1913d7c43202e9fd57a51451f8d9ecd2e668c0fd6842cb966a097935a6330bcf0197311a18d4da2e79a492dcbaf260719df3874bc537de9eb5cc31cb287ddbe638496b6a26731c78b29b0805a99a45d4bf98cedfa6c8b5a631ce99d1181a1908a117763574b8ceb5198856733157b7aa476bd2551d4115157b7dbf21b7418f41aba27dbf6efd7e89856c821ed1183bcf6e05482a3f8b6cd9a8908ca1ac2c34d9aaeb5009aa5b36d164950423205ca53040af311335704b1c4756f1705fd33a1664e8d8c5b2512d604d798fee362ac49a831d377d762be528b488c36cb8daaf2bd7210e9c0b204b37417f586894701498a06c72bc67080f4061ad93d5b22e87166c5dc8bf41051862e9273fec00154125c3f726bd1fa22594bd178542b13db876f8eb63a4144f90dbc7e22b24d0c570520aec52203180324798cdc28e324d2471e23583f718330992303aa5702e7a14b96b60ddeb284fc48b1503fc346a5de88c03506add507c7f7f90a21912f230134768ef3f43abc1371676487981c959a1679add6ed4782575ab1f723014e42a0377fc480a45291139c37a5bfe869a8d1839dec584a1baaf1101765255b223320416807e9c19dcaf00ea606c14bcb2ab942bb4e45480e93635beb03a474fe94bc18e34f838bf11a9b69318eae498169bbac3013d441604301c09fa4ef556dfec1810d529205ca4cde215aefc909b411501ea20d82a87d0aa3611d8c15e3555cebc1f0a778153a275df514011099578037b2aab278440e355f21be40c40b15cbaac3c00af23a1d831233be2a4a22c14a66b7423ddf33384ffaa7da5cbdbe8b8f03acc3a4f20021a21c8f69c7dfc5ffb0c66e71aeaf7e9e6fd5bb9ceb0c46f5c38d70367a22c5cb64a7aca1bcff3aac0f85464f4099528b755c8a2a4b5ac2261dc5fc58d2da77a7b3837858b90e18775b4ab4022411bdfb475d31b2e986ae764817c53dc82d08797db4c54d218b3d43b6ccd16029e10b89ab37e5cab66c2f61072a2022446d1c5586f44ccb86ac92b63273a5e0b3af97d5a234caaf62dac6945b6198b057d3218cbe1cd6f1100be1c109a8a81788309172fb9121a8619188664c596d95bb3f1808e85cdb99f8730317bc81be89d3f1c4f45fda7bdd3370eb046a0880f7ce7393ce8b7b531c779506316d83ab8e3c2f75a1f0f564b4acff2143d1a908999fb1866939de891461033aadc33f9d31f557b90230da87558a887b52fffbcd3f6a539ed61af33ad0719601dcf638734ea76029bf7a97284ce896e77c91bb84082a09aa9ae9ebdc172ddbc46a8093e8eff7798cb36c9f79937c2bbdef8534bc4da47c3e9f53eca8f1237af740eb10c80f6eb344abe85a817d491a137ee1f2a6f8f452def1d3b4f897e862afabe6133dfac1e884d743467d43445320fffa1eea8fee6b7cadbdb400b615131da4b5bc4640f8ab352e3f467ffce27f2900e857d603806a4369735a91dcffa884b04c4b1dcbeb12b0fe66e5a78a08a029bb757c22743ee69e66249c6b979d4c00ef3e2216e04e7c332f68f76c8d6b23f762eea581500f7a54d18b8e07a9db4a5d8e7aaac0a3242dcf7fd8352ec96471a38f9f8104fbd02b312de058fb0e1af0423bb2c6d0189ce25d7325e374c81cc52dd5d0d0bbd890757292e3ca914530d30bf78584a9fc396ee3fc73bbb435996b6d7a787f792fe7f0fc9846ec192e43821bac5b274487898f4cbba4ba124435d03733ee58c8026a51b8dd34feef44927b563c8d5dc88003c18763098bf279464b02a58879cd34e354a5297ec12b82c157fa016f4fd3764f4522005f08b1f7b1c27ef71965120dc834c27479f3d7d97c4838078765bb71b21523f7f26e553b5a9e63a9f5f884489a001afb8b4bc35f775ee992da7a91b6dd66487d989eb31820d6ec689f48687bccceed80b0ee0b62332443e0c2c6a1b42473e1d8ed25a7910611e53ae07300c9a752bb7e182e3d983ab3b972416863949ba9d8ebde9f155b1f803f9086999f4a15221f02b8301e852e013be0aca2312eb3868cf9cef4d9985de720c48bdf9eacfa941133e8b792192a847ea65b3299dc3b280e5563fb0d9b64a35dc3477148504adae01132b5fa9725d0b04d80c70b6048a54a78eb803f3581d0032587facd9cc7e1c6d8901d384832d4592f048d7ae48d521e31817eced76e21c41661350d1101086865030e0a710586b11c2254b2194610f1b8cb785f6cc99a471cb55dc222a1638987b8429a4f24da106dd99490ea5e4b275717f1a6604667d8a58ffac004928c4840b0d69182b661e70d0803edf482cb64610d5f186dcf3a7d8d30eb21419f945e969b39261d69120e15ff045d02e85e26de59610c39b8debda17bddbcf8f12b7dd96a5e1b16b0c1c3f4a77f4f22c92a86a8e0a1296d342378367096deb41727b3025342472ba76f7b87631c119ad409ff7147290ec12d644827da124cba7f509d1416250923960ff6b7ca585738153d985f67539b860f9dc5dcda246c0d2baedb4d3f709bc68d7d872975e35337d5ab9de052cec427abd6f623347951579f20389cfb36e921fe2aeeed22a7be8c54ade2dc22d18c68a72415992ce05b37d08eb6d350e30e80c2f3117a4aadebaf19bcff8f5a1336233343eceeaff252fd6a77e6d35a29dd104dbb7a30dae33c262ca12d0e0a45681bd4453a3f39cb9d5d8da9013315ad738120f9825b18c39fa1849f79a194c8c56624a80735021d22722221d30ca3176d1265294e2ff0318296585ac06726c3220130c29966130e3f70025ab862c592397956000ae444c293bbc1e35dd4c29b9b2a67927963c245bbf895482baba6c05b50ef1e8c0b786ba90ad9912548f399a1ff0469cd3960c475329ffb14441d40575b02fc3b7d24a0ee5603902debf616e20d4a8bc2688abddbfcec71d720c5ab372649d380965a76196c09fbc883666520e32ebbf36150b614d87855d336dda096abc71d08ea8f1a5ed4a9d4c0167c522f38c3c0a1278a3b625403c25f04a9e823d9d6da06d6f56b518627d2479305fb8a031d988506a9cae8fbaa5249effaef09a5260f9da71b842169b6ee62c34f2a8a29e181e175f20f633d91c35936917022702bc2af89b4c010820f156551ce2c1f7fd9a05ba1211cd417167b28372b1ac894ab253856fe35176224f39d59cfbc317437c2de48fbf46a513cd041a2a2e107a7e8aab5d374a5bb7a13d4c379b4580284a3924937ffc756d1bfab7de8281a4322561e1532c47bf62bfe9bc4041cda06dd8df353dc5a5a3982c21b242623e4a4e46f1c7b8f99f61d4e4e9ad6883ad3bd3584ed0a87764b26a736ae49bfb0cf8d150b1997a668d2eebafe36a59f9a64b395e915bcf48090989e86f9ecd1a65aad4e98faf58fbe5fc587fe3926402c23fcc731fb05c837fd7db21544341b88849da30a29d9b9a08818624f81c04c1894c5410ad793e784113cedbaee417cfed200c339a2953618d7e44e208d45a4e785ca3d2b042c4899f676d4cc9ab3eb9b96bd0b8f443d2ec50dff51421b9d86c4c68fca89feaf174838eff753cca3b31c079e289b70febf09f7c0b831975cddbd40622417513c675cf96b76274c770299c335b513d33bef35d3ae5bd1ebcd7366837f11b7ca11ed122c08decb742da4872d452a3be988860bd78f3871e614d06f9b385731bdfcceae417d2d0e7b25de9905377e13840c3c2830d085423e2730166197383cdb98e85e169f46286c329f2783578804f776bdbdd027a39d6be4a03992677369946938f6bb7c82dc48c99f349d765d6084fd28151c7307f1853a5a1c098423ba2ef982f401004c1e623887c6a0f89dd25e6ef14707477f9021e8095a360f8940bea9a0951fb2662aad4fe235acabe85f1461337908f24e61b51a2cde747e529be4a07f1be3261b41f5061f2f2189d22644b13a3f5e8c8192581d665bae62e9887dcbcc5774e6b4245bc5d42782a0859f123a909bd811915c0abd1f20c18866dcdee58c34c5a31cbb071cbac98ba53971cfd4fbca20ef9299ad38d9d4e558324b4d57fac4c78365608eee8b77aa8f85698f05916ea29c3ca951521fe7cd2e671b9859a14b162d566ddfe9982ed030372c753517f306d85528fab64b91076d141267d701e139b5746ed039dfb4bc0ea3f1946d8ccf4afd8c362efb2a4e6a2315f7dfb959efb5f7034de61252b0f12fd0332b965522991874efa1d3a23b788638dbe569f72e3125a5772207858fa657b4b5dca8dd4cf01fc1b7e353ef9b5db82b7b554c671f7eccc88b0059a8f550e4de9ac201ebd4ca19a4f8bbd4708d224bc1e2684d12235e8eb93278402a2388e3cd60b5c759475edafcf07c8a105683555ecabf63bf2edac712265b19653baea67bb3f125d98e0c30976540b2a049240b1aacf29ef9c96362bd541bdbe0d9894b45b9c7359b777bd7446d2b7336366d12115261c8bfd1803911d04e0ef184a1137dbc6382f34b7ffa1b828d01997d4e82c1c1d105516e14de3513d48f8b7094284bac67ac2f7edf965f6452affa1c280ae62416ccbe9d4829984221c144e6c208660c416d10b919c1ecf18b1f8c2ff77bd71ec1fee5f929dd503a32bd00b980307852eed9b31115ca66cb48cb65ca563659608d5fbc188a2928b2cc4f3d87a548fc6637ac159ab22d4769e61a6a8ef75947d1d3e8a0c4821cfa5feeda03a0a54aa406c9e33ed079606358d7c9cf99fdc9e543dbb65188a08c6a95aa1c6da18794930a3b9b0437e879b0a19229a8184c181cd792dd60fb15a30340ecfd5fc7c018593b3de28d3250e8f2e080affdf9b3aef86efb075b37fe022377b4088b623ac2bb0faa59c0fba21a667c632a10726264ca35d79f56f0e4e531fd28e5ae1b68944a251172fc0c2da6f4717f98377fdabff9a6d658696c4a54b407d15c9d73bfb796a5521005cf2d828bca466511dc251897a9292c7d01e6933fa25e2452c19243961b2e86041d5223156a2bee350cc716f8aa4caeb7e4b7b27f9680b6ce151a591d7a47faf7f2cfc41dff4641009a13327671147801099996b77446c850586d0e7a9bc8439c196114f6e88aa2577940017047d311f22e51d8e768a4968f02e1e5fb5584c3e7db4801bce94a0a8aa507692dbbe418b6ed2411c05d6530208bc3c025290c354312f4e23b654602055f0ece01d26a0b94de6decf78c50b067133269b428cc442d9ebc80d636811099dedf2b4e5e9c2fa5800abf8b92b52ba16318e8127a88c4692ec81e0197cc3b06b100ee044901a5a40b90cc8cb9463b116790019d49c2ccee524464c4308a1c113faeb6dda9d0d1f27886f84428ae1cfe0b95bc503625d6bbbb80a50c232a841296e403d5b148a882507e9250e93a525a82ae156f1ae8bf638207c2eca8f24f45c3a5159cd2a369331d2624ae8506949d31ee1eb82fec33148b21e34d0e8d6ab505b69cd54855c4a7c2bbb22c54ca78e160b1634c1aac5995f44e127749a729b7c3cd390b000e28cc5500e031bab63d9ec7281aa30780cbf1c366476752503abf02805336a3e17b34180f39dab7a11614cc0dd3dc50d961781c7d40e62ccfc19211fc72074f42c6128a288b3a3af7a6a050606a927a029d6e0a23ff34f34ca9ad680bb53a13af4eda848c4fbe056805462f818c2ab921ba9636101fc31b7bce1b426217a3cfc683579069137c994616e83eb30bfbb8ea03693da683ac0163b80ba62a333541faa8c2dad41c04c15e91b4fa49398e364e9873a63f0bc8f08255ac70e260d50365281ea1457a9634611f60f7cb4dad6b17a681f8a51c823be895eee2fcb28368f7a8411a8f88e5329c4a2787295627c030eca70f35943fd624453a0fc2d083655ad383f05602240335737c702cbd0d249240908716c517b256f31db6ebaa4da71ac865f0d912b1945124a19a9f5ccfa573a8b9b1bdbe70606200e34cb81394cd83fc39c8eb7f844b05190838c40e656162e34400665e5167545438517d3afa57cd3b1a00dd158d894085b64809b777a28a0447a81b5a23586f84117fbcb5d951f65f483cc200066aeefd6a3506110729ef506c63f1bd92ca10da3565553c4740cee202ed5ec57b2c2abce3dc6aab56ed3f844f1ce0673f5b1676dab891affa8cc3b33923d191473a032907f47ffbe92bf5a193f02e136e68b1a4df90f0ddae9f30a90b9a898665e222e61cbee78b68cef48b4624f42fe04f7fafce7e3090a5c1b6d6c71b1ea9a5f793d3f305fd1baa48579d0c9f3de70c520e04d7cb7e091b22ec840642df13417a3978fa2a7c5e2f5ab90e22cc2a9260c9c839031b51ca45c000b096ee04722e2b19cb0e55820b833a48ff49fb441dd9b69a5682df378c1e47a7ec3deb3fc7db70b0e69ffa15499750ddba7e25bb12d4bbebf1931c957ca2c6a0be02f2ac450b4197723a7dcb8285e2b31f2f41f2b2560101b8fba74165c74f4db35cce6107721ef6db3492a9b2c5c6952352dc992a4428d823b0f3c5ac1a43b157e4f62a9dae7d5b4bd1e7d794f45762bd086bf48cc2f758aa593fcdf5a319412639cd7f687093428b7d161341193b743f169b93ecf2298acccd610738fd8dabb1e08341ba624cc817c30c75042318d3ba99aeb8cd11f3d8a8396b27239a3abe96c02e76eb5b26621752fbde070c26daf755a9dc383fd8d7198c84c3f542cac44390632262d9d07c51a47d19d642cc7e3ec3249e727a14d63bf73edd4cb3dc46aa82af6ae670edbbd1950d4e998733e25309a3d153ca0db7f03ace403cf9c6909fa851fee77f6b9d12e2bfa24aecdfbb17fdb3924951b2e619b48c3135cc19718720117d19339c1165c380aa30655b5d375c77906739c2404f9000c2e287d28df2606448a203ae3a37937bdebe00290f1aa5b5049b2e4718f89387182f674957ca74cb3c81452af31626ff6b728aa79a064916a7bf368da3ae94220f663dc7088739025ce06d805e8891970c26fed6255c09ac4bf3e423d61f8154314f1a5507c7a9415d6ff9909688afacb1fdb43a0f82e0916a078de49b25960b2b6729d285a51a8d68eace4fe592b3d434933c2f3b07c738d1dd0ad75a6da9c7e65df6bb6c910f256713f4e7c5ad23c4b94afc0bd09ff1bf950c203d1e6d953718e06580b7553e87dc929a97aec151430ac665e64d72bc10d4c7504ca91a7dc3cd9b17cc561a9601cce9bb992b5358d9e33f21edafa10547676185e47c387da898705524a7885da14666899f592769eddd6c4dfb73d9ce1ec434589c0addac6388c2ef712aaba57b4be84ba0d8e9cb43112f707ec8396fa970e84d53ee466f829251384f51a47a84103bcd62d11e429682fa139a96fbee0bbfb845662e2a2c6c7ce80188f6f690d8660abff9f03e11d7c45aeb533e76ce1ba77deba787de2e83187771f44cb91a887fe86b745d2f2ed00766719ace9b20753ceb72634865311de06eee917d033d7efa45f2c35e1776e5b453f745d81be241398ebcdc9ef16ba297c9b1f3629359d17a3fbf8287eb306c6cd2e1d9e575cbdd5ae9a37800fa8c19bdd7e64897d2050629972056790a30ead83b3d2523884046e90cd41406380003b02f1ebdbf26e8ed1d3d70e9327f3f472905e2633e22ebd8b0159fbee2586a0b051c64eb0c4ab00e392ec97d99be9b2f024eb9d2514209047da0e994b2a74af024077d16923fc3f7c8e7d3d87d69085cd0695da55f4329d377f0a5257041a775957e0da5540accce4970fbbde82de14f547aea4257b8cb52e95179eb6428af50b2d2a4706156e96354eb537d7dffe63aa5860e815253ac11e17d5ef44a027352106b949608d044ab7c97b1d45f2292dab5b49fddc26e5fc5051c752d796ea4c91e858a9a1c67b9a08f699dd5060592478dc46da4010d947294dd06b3b3cc695235ece4159df438bfa445a8ef034fbe980b579c90552d12959087f41a5e90d1a3688d928cc9d2c33d3a287dae3c530b99decbb67258ab44001020a122bd581664895ba4564a6de018611ae1f2efe2bbb8f809ed903127d16e98e991d689e54cbf74d0bbc95d4660b407215843e3f0fb77f82b40317f7b951ef0bc766eb487cd70936eb087e71f6fe9db2447f6ce00501c40e87417644ce8aff515518c3cee7bb6b82ddd77cedf27ce09cc24027c3f373e7fe7c684c2f7f90b12791255f6ae2273eb023107e76229c85f9e6a28f62b7e0d0c0f2450d7edad1358ae726aa6b54da0b9ef1678ad9349d5f908a86f0347d50d222da35086c81ef600cc6a7672fd21d53ca4f1a2883cf1fb70d41271bb39724eab2e158f031e65c53ab64e3974baae547d1bbd7e91e801132a356a09f41bcf7c4151a0a7bbcf0006302f17869d65bc070c02b95c83eef93b70835edd2223859e0bf28b89d8c869efe4064275a6a0067c2533ee3874fd454a583c20587b6af43afc4d489d6f60f694daa133db279210d1741388c02fcb788b3f84805189f2c988bbfc3bb5309477d1e4513e3baef3fe0a9146ac86228f07e3a07f503ac7520ce812052e1b00049a4b9d9a14b79e83f6732aca7c0e97832df05e65ac40e272d244cf00bcd477203aa652bceb52f3fa0b66664a722fccad77b08fa0c21cd69f5cd046bc6aad1732b1a6b232a65f45aeeff87cf6294c7fc8bdc4586a87dc71ec2d683dd019440412cf09fc67db87ef3cc41e185a47062957a4923a849303dbb37f86af67cffe0009d6e4c2fe30fb5bf05ee1563a910560d6d644842d94f546a8893165e9b036c116777af17f71796215e2ccac1d68339708f2db815f19143a17057e79e21b307966523f7ce3f4ddc210bc81f2a5944380ec20f35bab49390ff93e1fcd9ff77e0ba47ac2eabd320a057787fe6780240b9ba4d01cd6132464d101c0dc57ca848ed0ff7bf44cb8a7317f3adcce9e5527f3d8ec877546499c2d023c3c3b75ff63de5519866da87ea04172ece54f6c6333855c1fac7ad8f99c4daea5ab4aaacfd7226a701e8a70e386f37d8765f8a8897da3488eb28f0ae8adc78bbf372d02e3ac6791dae1bb690cb5e41e8e23709b0c87bd46af36e7f1582d1f821cf1e2bb27b2ec5b3263fdc4c561187f37cede5d2d5d1f067a3a6a7902cd1b3260bb850d7f4e54744f953e8c11eb57ebc08c058b9874b2a1f1a89b78dee8d3cbc62c92757925b34ef09c0384893f1c1c2718613d6b574877789ac65b49c7dcc2435a5f7db7c8b165b004baa718c440353079ab2f4b0cfe1f7c8e4e91e24fedcf673654561d6bebd79496531deee1fce0ef515657e008261e59af07e7c613e857271560bc49585b2510d448d0c77fbe046cf2170164edb139d681b82df38c019261785680e3f0e61c7789f8ac43812a3ccd54195adc8027c0e2e988d44fed28368aef01cea8d3e0e01d38e2aaba61eeb430145737a165ab9b812134284316e78c239025b5dfb47ae7bc0028a5ca3ccb8025bad25ba2e463e04f918109069d4210f1f4ba576efa0bafbfef13d2fc74441a5f14d5a252a3ebe354e3f40eee75822254fe8d21ca7b01d06dcb1f0d9ba550f3a3a35492cdbf8c969208d6eba867b9326ef2af9d8f1d99f0f820d760415a23939bcc918dfa5e8073a59091ba4660a372d5e012fc67cf5870332928f45630ab3cc388cdcd7e20cfeff2356061e61e299cd7514f54babdebbc48f386bf5fa858b9b5a31cc73896716fb01cbbc35691c0f2de79e8288aae76750dd9710489faf0c6aaa4a70d4b8bfa3bb43f0bbbecb4b82318ff79f1c46e858d9f313dd7ad647f87fec25ff4c2e10e108e01441b047cc1b2fbdee08b1df1abc30bcc0933a307c35ba266787335b32471fb0aec6e45d52295539eb8b5ca037258059cca5c65b68f36078af2ae388e2fe8abaede33ede448543ef1741c129ef1db70e4e8b7b176c8a008b95d6294581705414d8790b94110e696cbef9735bf4159a4734b3b6c9786309e2005b6254c5536314e1498ce5a134d939ff5d551da704f9199b8dfe55944eb45c270f017db953bc314a8f480d2b0dcf436f4c7ba808b6887c91a6b8be81827271c1ad8809223a53e3388d53ba5d039a7dacef96b3a9168d1bd6c5a7e4cd2b17b55760dd312d3bb764d7e60c367e7984ba89b06365fd3039b9e3a12b2788889eeab145546de60aea4b544d56c42d27c4ff3ab1358b095ed2f97d383b46860dbbb5589e706d52b2e0df4bad54fd2986d7027df23cdab33d264c780334938d78db060caa9f8703567f15e7298dab660b2de6a19e8dfb0badf5e65bf638b4d7bbdccb83ffcb228f705327699890bcc953e412012afcb3762dc187a75550ccaeb0538e056f3acecaaa8059e1e627ad1969680740bfd1f5d73036b704d09b51859baae260080061768b510d895b40df1f0ca27c9f92ea8c48a67f05c2c5570a353d0be6ca84a2030eaf5d13c181c7257b3e967a8e8f424654380687df3e6095796991cf115a751aee837c16625edc58052ff92d818ad3230e82835534914b186de9c1713b37139742eb7223deaed1003f6a2e94f0ed04ec36022071aa0b5e36d7fd0d61eb74359a97aa606609f20fa71402393f9861f43c18db3afa201c7de5734bf0982eef58ba2bf945478001ff19aba48a07b94afb0446eb161b10f411f007d9e69d30b141e26d30be898529016e6f6a514d6187f17baa81d27d3914ec8bb959a0fc63188b22e25cc8dbb98e5e4497e992bda32a0acc5cc2d528fb5ab3dbd9f0fa7b6020e247ae1870a5dddd63e707dd06fb58c8ac424410d2bd53dd4742dc838b0c3ad4fbbe6792cbc3979031b56e01f902a5cccb71201d3e9df3e566fc51b3d882b1e5ce1ef75e404860ee63080f231d0170e1555a6178192fc0cd8d8351a4359ffa841ea06c715badedf5b25baa03957f9887008fe16af42f71bf4b5b7732d2347c819850a3a0a4161f5557aab5de7aa05564acc5d49f74c639975c35d405b4b8ce67dbebd0fdebe0739aee424dc5ff88c3440fa424686dcf4590f66d360e5e22e46c765fec36c88206857208ad24ea895c3397c5c3b28e224c0c560d294efd7a42d42b5ac6f7113d819b625742d019c88e01eec36fba3400399860e6c07d2030adfa4902fe4aeaaf5d98b226f82873a931cfce2b5422616feea3701749525da4666f1814557a31418e6d4836077bba9187ec5bcdec52521dd87bcf7b5ef2b9835923cd3adbfbc69fce04e8d0ec331271fd4b2a546854e0cd4b2f64570129f07e6658318da4c51264ef494b86f79ebca5e61b175115973d72aee54098b675b4f4e12e1660e8685b754d32c32ce53a6a3619acbfd1a51e18fcabfd912443a04c1663775e58f0905dc94068dbf55d78b9f48c33fe196f49f516e04a23033c0a6da50688b760fa70dc9af9f793323ed447eee34486b5844084241a181b33a37985cf83574833f736880afeb2b58a40f1c86b418a02623d512d535fcf9aa4277e129321200b74ef2a45b314b2d81a6cc10d184631030bd4c10a1697868d6a857b5cb031067d27cc63cbb04413d3bfc90967a5cb79b8ff40e43acec0f61c01fab2f21226399edf10c137d6f0c8ff1d76d6a9e1b074086464c5cfaeb40444a0180d725dc06e6ac96f3db6326f369ea97aa6f678a1ad39b0c90041bd9354146d2a24112c76b57c1eb7c801b58b8e62113ae44e8f94244535db62115c7333cbff93a1e481b33bb558ad4e9731cb89af56c28d2c4c57f346bc5fc958fbc806599109f2325405a023134d64576d07fe62beb28989807ea6430d27043bb9bfde3f64d4e7978d8254ed57ab91d68bb9d78998585c2e1b5736f6e166a226a23a4be57722e06ff4e2f0c97dc7c0fbf443fa0367afdbb8924797c04044281280f01077208024babebf1cdc9c63b92779d43b30ac0d015ea2c4e543be836546df1b0363bfa64ae857ab9489d6713608249ef05e5a9f04cc57396b2a98f785abf6c2c409092366143886e1086311bf8008c4d71e0be70d0d6368352ecd578a29fd32010ca8a7e9664d882c1992b6c8e29d1dc350dda310b2076c12fb3848a32f17be7ceb9020f2e002f2e069f1281b6c59f98238e090ae77391d52963fc85505be26d62c5bd1b14c76c66262d5719d0724281f8e642f0c393e1629910235767123865fdc1e5437cf9713fc958df97b5d0e41275a80a06bbbdf48f764c2784c22e24cb50252d23c33e9398d9814e8be341d92d801f509e9f30793e89826400ee2565ab6ee93dfb89285573f4265ce7d4028c85888b22062a95979c3d6f3c1424bab7c7bb34c239c9da860248300b712b946e440777cf353c0398b98523badc60f5c42499ecf1011ebae70706bd9f69c28bad84f6cd67977776d79f556c960191fb0f6102d85e59938f991c57eeec25cc106be8733e391f2d3c9645b2bf44d10e9907bc31653e37b6cdda3a34eecfc02a5d673d6c46ffa62613fcd4ae98fda9aa2007def571fbd4b268cde591a21b16c245460be9429c9394288ec8b07a9b3da692793bdf545965a103aa95871a51351ab6c51d010210ae933bbabae5b6ef8bfc6f0c2f0b91880fb3646b598c6e6e448a0e6ee1790e08ec4c191418b18b3836baff78bbecdcc5cef19e66c65cae3316c1c8db22e202825537eef161d35a715a02449c5cc8f0187086e953f09e956fb998f35bb6ce49e8aaf01f10e984be6f96fc4b62114610c7daab864af0c774139b66b2495fdb948da3fba971d62ddb4c0f67e0d0077b9615051d9f2635b149a69b6a4a934d36a189a637cd54134d6a6293a635d5d426996c42134d6fda9426a6715bb2c84801142fb0919fc02d0529c24829914138c301e5eea4239d533d00a744aea21cbad9029dd9794a13e75f16b82779a294d33b4a4b2de87690ab871d6946c2e2301154212513a79e9c0b2bdd5220e07e49b2cdcc715f19649cb6a3738e50ecb33cefaf99b2ca20104b5a4099b9275d315cb24a33c3057cffde4d92b3055375ddd8c8d17f14d4e005438f9dc17db2a4c683b24dcc4c4cb9ed905a67f40185c8bc82e43aae781320c3243d2d85672b59c976cb8e9547ac394d530cebd9b6ee2bc5f19989286ab88e0b495a6df55526d7e9edcc4e97e586e283e65e93b9684ba6b72c3b6e85d0fb0942beff18eb1815ffe57004260a02bb21c07183657fd9a76a0cd63184ddf11f15d4b736e426868e8eac56b825ec38d4cc4018c16ba707cc64b81933c79cdf310e1e2917cf686d0dbb852ccff8f6400f478b25597887b55028f1c6ae0624749c84d679132db19dee7cdd3a25b5c10572f920b4c61c6b481af03abe66785578256033aa3de45569232ee7fc70a1b9e06ce1b9e874cbed27baa5ed8c7cb5a51b08842f1d05716bc45ce5619d5b5b324227fcc35b623b926554b88c5b0e40e82d46bd5d90a27c69a8868f85763e4523020cd660e61384f6f8af26337ca87d570a72e2082db02e5f5637020591dbe9de658c48c83845029cfb9af6cfa081aeeea458241de1e322bbf5551a9422665f9709f9f1556d1486313c9603e951e7fa61269937d0034641677286ea56c46b9ed163719c673bd83fb6f99b42348d523cdc77f5b624ee0667cfac5dfce1c09e9fb1013cc4fa90dd5d38a26b60ebc584ec65c666e04698c57cfda3599c71eb7aac37552beec5752e66f5e000cd8be20d7e1330e8edb685aba977c0ea9cd70525e062a21e35d1d52a70676ba7983c0bc05a4c55846d17f8cbfc07a9a1aa3b3f8f5915c3a94aba728266542101953eae33b97b1e2bb4da1dab8aabc1de765ccfa2b1a20964433b30b3018dae322c200c425835a586d5183e0889acc20fe4d0aa8d3cd3d74c1a4ffff3289ce227d04f2b83ed6f32b4a1b8310c3a3bff3d0629c25abbef18825a67150a261cf54bf3e211ed12cf502841ccd03523c601b29c3e01c13753ae446d2f8d8d8c746c53b135a4c3b86e4bbcb4d2b2d8e25ce42a20f0358f28e5cc60231a1c688acc98460b3c11c3423bb8bb7fd1d14b4071168b5ecbae1f18dd405cded6b398da52a9c3cd1e6340833160ac72e23d7679ab2d8486efdf66e51bd3e91b2ec48dfcfc50f1f789dc96c596a3316e5321fe0647b4fa538d4a156c8bae7e2393921fbae0a42f2d3780cf1c17b0b3a5d6ebf39df4eacc0654e837980e797b453f6caad2dcf477bba4e4e92618246baf24b5f23e25e1c8e5ca6e5b37f5ac773acc7507eb8b2e7f571734f42eb02606d0f78c965bcbd2b7b5c83f91cfe3691eb5421c40df62c43c8e62ac50464e54ac9769f4767089759d132cefe273435e2d9d8af2539b12d15d24b6dbf4297644a336ddd1871d47e0e824469395065098366a9f1d615221b49b6e9405dd3fbf91184f6e6112de361b34956772b0927ad8569a365cdeaa89043c18fc6aaf0a353c4e629a8b774514cd4c3fcb765f4623a1785de04206590dc0be2b189ef1b5e97b2f9325a61704c5c4b71570f9fa87d5309c4716c9428f1e66fdf85503e85c6340cda80e98e0950c2181888257c2d954e7a25aa496651565b48bdc742a1c37dc6af6b9a7fb24528de11cb3274a0960f60fdc339da3e3a5695f7536c4cfb695abfa5a7e1788928e1a86fccd93ac040b616717654098eaf8b654456fdb5d6632410a9676f949752ba2155a29a9c94d4ad7cc9a3f5aa3c48a1a4b3a9427314da014ebd8c22bc668303bc0d1eef359885f8e0028ab960dbaf3f79e925f2133e744048c5b3c4748f40a6c5cda6345f2f38e1dbcdcff29e08857cfd040cb2ea52f288b79ba5f69293008077365ae52a30ce32bbe633856689a6466fdd643ec22b267b54479f406c1bf07b4735edd803e8a0f1636fb92757d01a048ecebcb8aa000c89f3bccae74973946e9c3dca1932a6209248eee33e8502ae5bedf5ff0c8b245a98580c4e2a5f7c09ee75ed3499c910b4bc91e0bbfb2f8731e992f8e6aed2ccd83da410c24010d2ebefa58be38566fe406574a3b544dbe2755ba7b18f6fe89259f2ce11f1734494d2e68d0096b07fbd9bd8b64cf874404c552250619a07d0587fc8a1bd372325d2f67f0331251877996d9f0d41bb6b3d0752a1d503704b0bc2523bcb1fc290ce27affe3055a0d7f541e17e42aa09f4d235327f6c9d54c13413e710b95ae541dfece057426da52d1a066a0113c813180063761cc4e21923f021091ba2d39b760ad2c480bb3320305291877c92f83fd938aef6416ca5cf9dd49e36f362d430e78fd4446fa4772f526c3fa744f4f92554c44ad311750c90b061a0c6558689bc3851d1900e8a679ea7bd2534a28a9fe514ff0087b526b116e7ecb5a2a094934603dac29c911d741fcd269e41e8f0be02a625f21b43106168aa50253fa20e8ee0a294632a497dfa3174d900997eb75b7acb7801d6efca089704e77f3767ae7d829521615fd3ad271066a102372d29a241026150af3a721b7cc0fbe0cd97abf8e720ec936de77dca70f397d67634f0e2312a33f0ac3abc9aa53565e0c2a35612841a1231762e41405e3676f8d589d406ae7232f75bb0e99cfce0c65f1d4c1a0574d7138cbe09fac5aa6731ec13f5a67505cfb3497865384b4a6f8462eefbf442000a958f1e68260b0102c0820e1e1eb8cb688e4a69ff4db5219b51509f79eb6f499bd4deb49b6bfda4b72befe889f3a47a6071b636ea85644b1491f42c4e5a683e5ad9903d6baac8b87df33bc6a555bd04f0dbe7ee81c81e8d31c1b4b3aa40892bc2778d9ef53975e34ab455f79b01dad53b72faac13d2fbe3ccb03c7618006d4b0b7801e2871cd0627ab5fe4c34cd02881cec0f4e68f248c03c3d36531fe2dd77fb40ae83bb3a33c390e0d0ef3013b46a0ab2ff813d863dd15af1d7d257d6eb47066aaab9e1a09d874faf708720b76e269e9a997afa1ff1829ab0fd1178eae38ac72a164f5d70bac4257854a213662c7cd59d4a871cb86a17291e2e3b942a4d485c0f18a1f3d0af76418f6e00d4cfbe8e87636a97165ce3b4dc84cfb9f85e76649ed82d78adee1982adc2cb139a9e5e994d53549256a3ea1cfafa02b619a3865c46ed652a20786ea1d53223cbd391d208edb816c05c8c3d28ece74aa82c0bf07170c7aebd426fa2517e751de3ba65833aeef995211933cea1573b3fe91ba7d09520515e486160c13cd37661faeffbac134c22647d8eb6e2d3d57a643f00441635656a5d6adaf8096c6ea7bfa126c1cab8883a3e6d6bd24f6b3f880f74ef401bfedc270355758fd1589191d4d4d4299cbd2913e39c58f423a5d16557df7d3786ef18aba334a7e41df113b90f15e95e4f1a0c0cc93a75d3b699779aed00050a72ef66264c2612587e46af4bdff9add51d966a402324e7ee89549ee2db3cb6e5c832dc76db78687040396ac09d915623afe06e198c129068d8e7ba8e2694fc861dd1d44b8ac7eb5ad7aeb4c49d7ca379fe546f3ed082ab493e1c620417a5aba8208581d0c4e84aac2c7814824a45797c558daa6d496775e725f0443c803e93753272995f2c1bed3f45c2a1d0d122bea265e371a8fb4ea3766829ecdd80b2f33c1187b12f2ccf4476bfda77d81466cd0c65639e35403e79484978d12667fe571a64009154edbb41360e864ba583db5f84a461d2212764abb8abe4b87669131d468891343b3b0aa08801dd465d6a2f101282d9ed0918d0d402b614083fb01f92eb7146034221dba26168845c058969cf7c82ac7285e5bcf4ee83a13fb2e08f0ee00fbf9e8906e219c3f4353c9cb6ae50dd0d05526e0eebed7ae360642d5a3c3176433875671e156d76390fa761b430005c40548da98d61d14da2792dfa1c89f51d5289f7f2bd1ced583a9d5261a0be5431dcc9c29679d236c6b2afab0ab9966ca39fab79df0f3bd86545570042e6ba72a6b781b61252a0bc32461bb094bf178651d37b2fe43872727377411eb885cc2afccb528f80a171f69d06b28557cb7613131ae42c27ec03c208c861f30aa5f82872c5d49ad1c5491819fc2e823705a6971d72da754e7841b06b3ffe2a3306a72a5b1a056044628ef87fe73734bd2a29beb23b95a2adfc4bc27d56d31efb2a99f923e7c64cd68eb4b8b0c2de7abbefe71b9e2ba1cc227f3ea068fb7e8529b8dff90a882cf942538f354ea268935727441de5e415e0752f541c3d72b15b60d59c50e28bab90ecfab5b8074e4df552ad0ea7d9f5403e7853b3b6d00b2239e1a5c18115d9b4958f888094f65f1d4696428530933567a27730c80e5f9030b338a7ebfb012109fcc7877174df4d5f6687ac7351233308563849f3892feee31cb94944e62b2e094d854129e039f4bee217a02ac8770807dd82eb14820f0ed11a17c9895486eec26502b1064e0caba8126b3f10ec3003e5887671de6a1eecca716e4c9884c42fd14472589e03164b9fd6e7f6d8e2e72870691ee21525de8bdf0a05ef1bd51196a2eee38a52739f92bd679313b7544fdb0765e3ceeea1412631044024ba80abea6fcbe43dc0b6864cc0277fafbd3d3659875805d68190080955b6cc780eadd46cc30121a58d25bf622ecfb58de4c733ed6320c74428b14341c4ff3602f7dfdf0a3e37e66277ffaebf5088fe521c628e473f3c5877f0a52d30bbdec0082a5071884ca849c8b2938a015ee689d0795d50e47e8da1bf772f1205202e526da0fe9e06f003111d169a7a3cdca24e02ee648b933db84dd3a8a4c2b821796ac4f92ab6516d41ac6d681c8326b3a0778efa62b53aa1f6814d63f5c30af443b1939612960960258f01e7c60605d84e9c9cce7b6b015c57ecaa87cce92fa5f7f0fd9cd87f140c909da56c091645b7f38a617d359c95e6d90c4f19645a1609b37c579a3b9404c94e76a281031d3e52504e084821a8a41af906f6f96399cbbc6d325154749ace57aaaa2020ca7dd1fa035c3c946c17b8cd7a998cf37b0726f5a0309e8cdc2c22689e82ab1cc8f68bed747b8d496a2df2e18eb49d32ef8ba611b46ad8daea82cba4e0dcc3a975aa83a340b6a3469da20e938c08e0888365489bfe4b6377ef0be00c9c3194afd27170b407389bfe0cc1d3175529f91056372fe25e22c14de95c5953f40deaa442bb97dd7304142fcc015a47dc8d580bc09419eacb98163f2e68537151e200b25efdab6e8299f3d2a9fbf706ccf4ed18814282e931c1ee355fe1ba99b85232dea90d4cadeb0f0e3ff86770a38b3f15513a0f83dbb1837b27fb0d73167c1831257f0c0c6d51cc1da59443e30173dda34ea84ee358374094e092ee87aea9c43d54cef66925504fb3c6d3f2b2465961f16ddee0191b152bcdb5a4ce26b4c2102103c7b7722208691f18c376f5fe96636b24355cfd50a040d52201437897826676fad6f4614160180dc76037e44e8a5338fb1a555174a42122d07853ee7a7408f39811433801d8bb9d92f5afaf5ea5bc6ef5c3a36ad90d497ca6ef8a96954a074515c5a239cc9f24bc5eced3a460dad43937387db9465ba79ef492aa1ab0d48a76b085d74900b1a9f729506d5bb49ca5ac2a43194e24b66dfd16de9b7326db78d2f5a47fa78f22fff7e18c5bd579b8104e687c013c1cd742f7498ca5c895edb917bbd4b331c8a7e501693236ac1a6622d332750d8e072f09c79413e2a22e025af8ce2411c1b55613281f524cdae860e2fd8afa8ab0308ae0488dfef7de434cd639f484e72bc3447a0d9b43c64bcc9488d37823dd4e20fc4c77984c9b0f3ac45c0c19f28da47ee44e0e379b3d8d18405e9a2cfadcd7b0da012dd1e4a7518420d8b6fce5d6d1c5a281556cf65761ce5e8e979effb5daa0fc0dde3354298890a447c0cb227c27d7b3fbd79a7eaac9610a2e2118cc3b36e39e7cc528231cccc0a5b771252ed21f0d608eea3de2273a894224c893c257cafa8937f11ce6033041fdd5b023fb572bc663061e139648463b4ebb7441adbe1f827a5d503598ec0a96b81731b1a862e806efe35c8453d22ac8039c40f6d94f4ed0ccd4e7a561240db8128af398b061575ae978ae0eb077ac8cea96c86f5a8a096220f5c8912c25a5f06a668c828effd3e4e9e9e89932950a47e682934e6af62ca4a85a0b8c15295d045c967f9e56a728be4edb4ce2b22c9321a27ef84f931b8e47ac555df48892a7d7641ade24bb190c74149ebb3256fa7effcade05a25fd26ab6bd8073e8bc2115dfcf0a50e391a66ebfbca99342f1c815808841459c4e17dffe48b40249c2e5491ba30b4be5a70208c45c99e2a9288b23c5694444136db9d5744b049f3c0be98b92e8a5e643427d15d64e8bea64b6d19ea6fb1d3d1e0fd4f4285ab5b0479cf5fcde9d48e74dc31661471b492101093cfa35e4bf954d8010790af61d10b899147fb9b9b03e878199e3c86b5abeb824216f6f4065766b4e4dbedc3508c0ad12a0da6706ce51d499e0c7e2e03bbd51bc987a2b1d9ead971f2bfe14fd8524514e9ae10be8cb6367f62485f192ab0307ef7b02d55adc8414eaaf849a92c5d80da64a5e186a467ffc142f2719cd34dd20272f4ea9f19c6a48f14c965656dc1e63a54f259e72dd5d4cc488295fff84389d49fdfc756498213cc96ce03978013ffccd91f5734c3df0fc4100cdbda7a80b77f59f6f80c24d10c28c1fa2d6c6d68559ebb23de9ab6d43c18981aff2f8409aab17061723e5485f00838824c05f42511c0866ee38d2728cd3af483c936246100172a8856660cd7b113e323790bed84cd8883f1ef03c03af8145263aa144ff720b08dd639a304043ed6bf88c8fa821c7354c46aa6c18cb1ad5a3b9ac8245760e9a6796916d47e3f0b0f5718ce9360c443fcb046a4c6055f804c8b74e5524d3ae52fe132fd4516ceddf894a16ed3748927a5f1b5998d7b2b89880ab812259f07aa813ad21b9d87993791428562d66e1f4bcbfa9f606798bd040ed0308e6277de535851eef5fc21c956dfeb5e40ead82e5ed3926bb56cd73286dd5b136d9d3f5b287bd1705e1b0cdd6577e6a052a3a543204e0d42bbcc23ea954acb97698c40538a3a0f12ea89a46a49be4c384f1f61612275d7f1d0450638ef569e9c52d2798a9326230601e18f10dba32bff778f6524b2b662b27e3e22c4abb35b95875a25c3e1f2333cd6c235e38a4e266207c787a8184ea15d2e731fc4e12286264d7979d90355544a949048943fccbf27a4fd917d4298f1eb30ab72d12ccb2f9110df5bc0692171b02ae330803eefccdfacbd3f66fce783aa15e3e705f472beb943f1aec8d914db735c105030d0e322da6a65667b7c23ce8f29838598639c7f56b19dc9d44a8b4e801b653ced938578ce6491f543c0a201b2194a8156d51b6b6f3a999944f4d3790f96484076a31633aaf60f064a06116110081797940b69543d1b907bf04d1b6588f7a445d34bf4e9130a647e9325ffbbdccb714b4962a9450eeac500e16735befcc755558e07aecc2a75f9648240d380600f3eb736f3cd099e930078d445eb37abad58d02cc50f033b571e827d77098724977f165067767a4e9302939a4e0d92eecf070988951bd6fc9125c8aeda400aab7235aa7e68c6c4540923d09c28ce2d467f71e4ecb40a2172f38709ca316d2793f92e8ab94720fbe505f29e7f373408d7dd86415b633e2bf4636f26842a13115dc92a8afe7a25bc00d0552e6f852c1a7754f898aa0d0bf8705cc1402fa623a68402417e1bb52065421baf7d73b2badb61eda2eb56080fa67c945be440d85280da89e866858047a7f580026b3c28adf0b0b5074efc987626195eb819ab43e2134f3d04cb99a6b0fbac6ddd84d491355eb14be1b3632d3631a21e5fce8a9430fc6faf1612c963d4a2909b3ede17b919d56f003f74a667e9190e93ef22c4b022f03b2c39b00c405c9c6db13e2d6b4e9cbe3631920ce7e578381ec22d46ed579d5239d1d7271cc10a1b011f6e2015bcc3eda4d14349cb28218d175b8ec41b975e43e99d8bfb9ef8d86c491cc6328192948f99418832d4adfeb2d5ec50e3dcda07d3e3a5abea344796c3ad1d7fd4d9d34c368affbf5999dc1e5ccb979a30fbd4f8ac56863b98727559b3291d523eb1907441e9854b9ef40eb0286039e0564c86eb3db3fad6c535efcc08de289bb106f74b1a7a32f6a3f70b30148968272935a8097fa97207e22d91468c4760dfb2638b2dda4ddbc7a770e053f29a93d1a878dab541d862937276730cd0e666fef336bce9f39b2eeddc1f2dcdc24c7cc82a670c95c9abe0331073c57bfc093603ae1a768407e44f0af6047d8e6f409569d481c5d1cece19d509f96f3e886086b8b4e0058089e39e6e40d844f57f8661ba0e4ed9e048eb95739d34baabf08fa6c6924578414ee6f3bc11ef45964cb031dd12ffee3a4ce93b4ad60ae7861b8f64b8c1c912dbd44838c077de15d5e4f0bec3fc3c9f27575c3e1d21328be735bdda48d7b828545057216f38fd9c76ed053f46ce48faa827ce3dba3453171fa56c95cb4c48f6990163109ffa0a825dee7879012f0dfcca43856e0cd5f820c9c3cda3b580801a927d817e2c474750b220eaa5cba2280207ec73a8c11b7e0cbf45d115c2e46fcccb3b4c3579fabf303a4de3a3f43a2783eb6ac7086d803e9dfcb9c659b22f7c85a2f4c496e2419ab8a794605bcf30d41bfb2fbedbd2878e11e716c9742e91e98d64245eb24376177c39eb8beb4a4c1fbb889b00a5f50cc6fa30a48a9181ebd4a2a57f016e8b09dfcab52ae2fb6a404044c7005ccad80ebefdc47182454536b52dcf56d502b4c6eb6f6a33da67752f2dd70c0b1fd80f8dcd318dc25f9e1b9efa53688ca400a257617a9af6a0565eb4ccdf2ee7a81c4d0cf4729a1f8ba12ce805db1651a95f6ae714c824e8912a210f47d6e070de60236fc6dc8031b19d869adf424786f5e14491907fc6c7eb1eb4ed839ff91ed5931e4f91c981211386bbe4534fc5ab73f6333cfd6bd09fb4814d809af372dc1ee7829af76f69373a3d9eb5f5f4db38250a141980418dc40fb299fdf71042f10b0852220a1cfb19fcf12afdd191b72aad59af347e1c2717bd68444c7a449c500946a2969ce3f8194e0b25dc94b0fedc13f429c59f1942b96faa8c5cb86bef71f9e7902f2e9f2bba95f51110dbb57500b619777f536b104136d6354aa15ea4d5694b3cce466f3ef39ac2323672ba5bc8f743232c65846c615ff4dc815066fbdee1643296563f1c89e20693961a9049e682640d0efabc6d8f3d3d5d59c717660c6f7433eb5e8c271c6a520fe9ebdcc0697592e49d13e5e7bb61205a8f5418d3560944410af8062d198549a44663065e847297d1d3118a5357253ef62dfd333b7dc5665ca233a6211ddc9b15b74bc943c98f54d08d21b161199dc9cc5c08d4242f77a1015a20fe3efee68dba48c28ad19ad9e3a8ef66f793e6e756c6a04457a0d2a9bcb1baa7a05d9d0f8755360780ac27a586d1e65253a5a4da81eb860fa965b01376296617fafc35c3aff48e8ea50ed59d4411bfa664c368b12f1443549cc5d4bf8ea57ab78dd17de0f561c0176dbc92d3e0040c21709842b02dcc0caec2c11770f77b4433e3b87c1cedaf2649cd6111463b1ec77a860aba2ae53205f254bd4f76915387be449ac0b4374f6cad9a100beffd568d8b799d2657cd4eb34f274ae6b558efd83a10b5f114ace69c875bc2aa3d3c13229518679b74258693bc5a88d11c820880c678a3fb48e52a0fd6734b578a4034d38c6b0a3061c06916392ef37ca2239b95aa3825d1354d0875e701befaa408e73f58f9c43472936a1082be7acb3b89a4e7be451e2ed8303f2081c2789340fcb56897b2514995e72b6f80a7409e03fe939d6ad171d593cd0ebdef6663a04a61825957ede50a70db122f4b364049e622f0a5929f6b251f4b4e790b442a04b623886bbe37d0f3039db85bd82977cc65666d044ee7d3130f6005783d8d57170f321e1cd29d915b49c5844ddd527831267569629baa260316458c974abef365a20bd5510b167699873490ec1e265424d365163c2646922ecb2c389a2347256ad794a2fe0a93fec34a8e71d4de311e10b38e6e8655539b9089918e9125428ee79051b002094aef54420dccc484f88cfdbc0d14e44e88d813e4cc06d2dcce7efa604ec3a0fda6b1497166e20635f206b11353cd6e549259cda835ac28601a113a6d88662af05f9831942e7c77088be8cf1fd43daf2cbac0431072629028f4449ab9b81dfc2c9b110308dc6784a67b407e6fbee2bf24cc0f4d81f64ee7d1413976a3af54d8bdb0e77cbbd5ccff0acaa642ebc10fcc13bf4ba8d83fde5f9f312455d94008286160c66db74018abb14f849355aaef303dce40fd686cf1baa77fdb166d75a513bd0803c10d21863dcb95b667498593955d57c757ab840166b5b655b95101d8c27f4fe9e919df81a7a9e26192110efe2b4aeda9a18e2229b63754c48803f34cd300ae1daa33a8c5510166fe79c6afa7f8ec99bf9ef11b3da5c38762e5dff69633f0d2a94e63d4031c446348ef885aedda98e70240bffd3b989435073160c69ba172d3f7befa6bf6017f2a88427db4d0137213c53c7bd68cf3a957674ca749ca53201e960f24d151b2665b7f528730efe3625fcdb0eecdfb9f03a8e34b7d53a089bf134d0ce54ae68417b13995265b608322e304f1bba08c561e2059a425060a48f8a79f98c4c3fe27d3733e426729e61edc44af29cefe9a84b601f9fdf4d959dffc2ec719159e52f7c160f47c4096a71fd571d5d2362ad42ccffe4c1479ee8e436dc7a9d1b475da5982139b006a076406300e5c8b3caea5ae96b100619310622e3518a8fcb4d150db7e9a4e22baedc5de1beb4336f30ccb70b37f0658d43dd5e84271d9dcafd87b63728ae334cc2ae241e0b48f41edbc3c01318b6956508bc05a0adea69c9b6616dcbbba1df8f34cd880f81422d11baf6cb88d3fad08141a3d636fc13d8af2f64c958c376ca1c96911b8ea054e864d62bc70be6ad5c0a6b078db5875a3a7a8e80350b9aef2957efb61d4680067b405db06884a1be75209584892bd95b4fa40b4088c8fc9dd5196c6ceb88a6185885699d422872fc3229363b196d311772c8112b75657326aaf6c40e895d2a0f420f63299f35610f8da8cfd3d4df189f913c8edef9ba9f6c7e19df15cd2e3002ffdc128868de5db21006c7fc590a595b11c09aac32ea41e571639cff2ddd3f355d425f8e16a439c1e3a90e9878388dbda2909675e1e5d45be41fa8b5b2de3fe85ebd22bd2aedf9e8bdcdff874ccc3b92547744c742c78f68cd473f0f42ae9ab503e531ca7ceb97c828e1296193fd92830ae64332fd8ce960f3fba516d6cbe27a03923e5030f836375019f455f9bf0eb37a0ac08a7a34ccd7a52b46514a9efe6bb8d89f27010c9d144972750bf7a3fe6366052b81a1a10b11a6baa8744a1ce1355e4ead8c61ccc531034d4af1664f80f922275a3b856e81ab74c2a324af877a380a4be96e2da8aedfddb26a22f5586d0f35a9f9c70ba42e50dd5010fcbb337b92e507cf3b2e57f263013ed3f3acdc653230df7815c869518db561caa808f0f71601be093d9c0a659877dc12d49d0f19b2d7ef94248bc93c42edbec38773c1cd11f9267f90a1a2e348fb48c95c4babdd189f22f25e263eb9bb053b014d8a75a0940b3146c9e17fb0b1a3131a99831a7ca87a9864bd0ed211b8638b74a6b87b6547d37f978b726a87e8efe394c9be68c1803daca32c26493e38a092bb3031dc64fa0fc41b7d3444160c9ebe0e92b9d909cdfa89e5fd145ef375a613a4df31a2e37753d742abf4931f1d085b12773ab85f13f2ba1fa7030632028d000992b6d429ce354ad6397c5025676952d58cc7557b68f36924d9d263635a502ac7e3741cfb2f94469597f2f3793ca7696768508c55ee45b2acb588e41b3fd945805121028190a813a0692091bd0548d64f0158add83c18486d3efff88eaa3387bd64c470a9f5283371ff196cd94d6f22755d2e6bd6a1650619c2b995d3211517c2a4ee002b14c992a0634d0bf7a5d52fde8ef9e0a7d47c13ddcedf67413cc76d139f0a33774a926b34e4088940dc2bd2f449350c067a96e5d305f51ae9c453f439427bf934849d8beb60311f884dc98eb2d56e0e2f2e339d06fd94511221175a28d52fb20353313c30b01753115a9671ec1a602932224cd6c57e7bcf4e417fb401d9747e99a72f61d880640c46dbefe82b319627317ac735ec2a7873f90891b50b2f0aa63452b6d362cdb09ac25d9bf6384c76466a822192ae45c04a3c1cfce2baa1855e4ea467149beba99f791c5dc6ce7ad9a89a34ce82644a4f5b0d2457e7d82376253b56c2bb63c196701eba92af434590f36bd573e4e838349561498e59f34f0d1d4d4d76c0bbea929b8d88c87b92de31dc267955d9a9178e4e02999a9493896efeec2b7486912e6a0a77bab017fc87192593fc2ab46f2d9b5379b00806692420712a70162cc94f61d7acf9f85a76f83088f40c603861c3bd3e60f6a24342cbdf186165fbb5ac51d2b899d8e111b4489799e812c7db84a2c2d49eab3e573d08dd8098b08a0f8cf8bc75edeeca46909eb915d6a3f72a7a756b2f78b1344f4a8a8f6b4b99b8e12cc459a54f8844a4b4f5121bb3922ec5393abdbf24ff02990274b35c58fa8606010c785bdea97ae984b153942ae9ce70c12dfbce2009186e7211c9e2eeefd995c7550b20645b926f87ab0ec895d3e029f6be4db4d8d08325c668ef3f51aaf5fa7120ca914ad8b4a2b62063303865de216c663b26eddcd842e09ea00f51dc003c3db5b6e17f61fb027e3114b0fc4d0a08d0083bbe8dde451d190b2d89cca1dfb72c1a710e1394233d2114355159e2d06b70c92e90233e019c5ba70acc01bff2ec30b62c5b696d2765d7cc1d8f091059d172dd33cd805adff08da7682605be211bc70100a9837eaacb0630de40e31d9ce7acbde58cd699cc2c178dd39ee5ed361dca801419307b67a8d80db2c7817f625af1e396c04297c0726035f736775527ebfc70a8f5ed36c0f59c8e835a9c9d292f745d5b372fa745eac67824d7950c1304340c07ae9f477d772efa324ed0b109a67a4732102def4dc86a070c6c9c7d6791e5acc0f365ab2bebf9a5d02b80e8a837476db9171db902ee973934517d4bcbb0d3e408728866ae5540d69de23037c5d13985ab1b24eb02f4ac6d81bc9ff593b564236c05a23c0f641cfc7c3889e5abcc090f8829a5da56e08ca435fe4bc70b5174371feb79a77f5a20c316cf1c2ffdd6af8afb6c73efce969a9bf47c77b822d103cea49b897d7ff9b3a5500d535d250d764124b09ca2ffca9cbd58d17fbc3fb5507013a76f05d4b7460720b754312fdad3934dd3c9b0146f230acb4ce1ad54cee8fa25f13982bdeb35070a45fa9fb0012928592013137f574917d0e8733ba05dbe3c7a85530f01bf7ed656dd8a79a8f6aabb7c19ed6d129afb58276e065beb676e6c26646c0380ddbbd4ebc4dec6e62751cdf7e95f70ad26372b078bc420c3dfcf4b6a8073d0cd8abbca6da033cd1c6e48cabd84bcdf43fb9224fe5c8bcc6064d8069835976a8d8a616a35c0aea35a9fc4c4a96e40d8786c710e6a05218a5b5cd760b3a7b96e7e24a637b5d4c93185479d6a87ae4f850b90983493c0b8f753af30c144f91d9a6571074372540a43354a2ba6f2cd7b274db154db581678d6a2d429533fe5d45339155544b328fa3527a1651a1b02764ab34d91bbb74e91112c09303a61f8d001d732916be7294ee03bb750c6e1d10988d3d166bd90121f1d7a46cb6630787bc2d65bc07d947dce1d311eec0724464d8f5ba592b9f5945f1aaf6bf9ac9e09733bcedee0bbcbd2c5157dc17165f54ef08b0babf8236fcc795f8654db8fe8b712980fde053c1238cd4634a318239fec514faec929d4f4fe231a6b4ccfdc243ad2a754b4808a27708d603e542ab320fa4f100eea2a5f4804bc8bd22e4bf191be0e7a911dfdd7eda3ab9ecec75c4e532cf67cd18b405e962d5baab85197444df16c5c34ad4457bb780ad33cee255958e7d42088a7dcf0cdabf18064f20dadf860307ad55cf408e1501ef4d64f44a1b1205da5ca0c9f1c2336dabdd715024dc2824b9b37dd1222f63c31b1bbfc2058e08138a00903bb0a6a33a4191c2b148bed16f44528f80616104fe7ece8df24c9c039909a5bbbe66b46eb9f01ba75b125724a0aa71278e23ddf7a9c1123502595367aaf46b624bd1e243faf8afd17ac35b14551acd89aeacedafa5e27875b26a4ab4f01427feb216f39b3bb51a631a72a62520e8203b449eb090b830f2c95d7ac4ea5dc84e9a5b654e9eab754da5aee0226bebb96fca4c0df3bced58ff7f2479c8c2b4c3fb1f4385c6cc470bdce83c9a40408b6834e2c3adc687cb7371de2278163411ccbd8167f060f8e2d4650dc3187c442673badc73b54a53ef18b2a459a57dd744db355d2b073385432e63900aec681de5a36071bd20fd05df308e05a9e1423cedabee83167dc03742cde728001ce4583bd2b9fe8dcb0a97acb4b86d43f0a83eab196efc1befd6b8d81e38b9ca84c2b3d72db5c35346ea33b0ed32a0e1d4c4877518bd59599653edceda8daf4f5fa01782b92a326150c3416d881775f20914707d0709492f6b5d8d60edd640431950cd6e05a4b8a9af7f44096eda25be363bc3443013edb6e0ce48763cf66af1a313f5b6e2c7b557e43cc27f1362fd97ce0ef10f37769f2cb72ea3fd3b527cbc2f877bf213e86b1ba72b4591bb0c46706b1febae2b7b518b0b1583c33d63de03b57402816bf6c360083bbf9a53c30755efa167be9332db77cd00fa9455f8989c235c3a3454b051a9ddadc37422f00921ad339040743b31688228430b7f6bc3cf53f558f2d46f28bce94bb1042b6dc15e5165810d423b56734bb7405ada77297e8682109f8545b08099161fffcc1048321dd659ac8f450775f1ae46b340fe82f5f7c803be412543be22ec5a4581634cb83b6153846cb8b72232403b9c3986b4029d9bb4a5b1d6fe340cd35688f338adaa58aa49cf0f0f9afee983f9b057899820d2eeeb41af98628498c264223489db945b6e0dfdc04515186424a78cba8348d07117cb5dd0e53c0c0e8f85491826d1b5597805d0e5be4952bd2244d5f8cc17e720a7ab913ae17d12512aa028d38dc0c2f13b54be5588dcc5a413637b27087a47b07c35aadeb707a9846d866063812aeaca7418b7c69a5503cf8e7b4c9a1d1a600a9d6cde676baed1ceea6ebc62d0640dc50d3528ae7a196cf23de653dae6fe3c49c5c59ad2c49df0bf11ffbc227714e8059c1741e1b85c0ccb43db22f60b9d94e5c960bf2c06e8f2aae3002a8e4898a74fba9681790edd4482d9e9d1f6e283780efcb3e8e8dd1d738af4879f7dcbf7cef1029df3b0375adb75c65ee1e03aa211f618241f316bef9ca01145bbca25f8451aff8290ba4aa76a1a6618d728eb144925e9f69baff8ad723ad276e4e65b202be606278453c809b52715de63969b6b601e39fc596e1b5a399f72056f00696dc676c73da4fa022687f8edd20ecb3cf5092d5d6aae78d609fb371ec1c29b226064508f230351022139e3a6e6e0a8be963485048b39a1c351f20b9cea309482827d9fbf759cd88dd696dbae8de017158381dc21224c13e5fac694afdc1ba3bc752c3c8aaff98a0e22788aa0f7a4706c43e7a6390085acc811c52f09a2a50f743feba2b149ff4bd77fab85df5f55e310ca1b0c04e7d6e80cf9f37b2973e15171c2bdaf0bf3e9283ef03177e0f3fc53957950335d0b608615ae28a1203bae2709c1807264dba61d78ae806d511bdbdec4e909f0e686080b4d87f682efd3b7db78effd153bf50b2afbc0506fc39e4a400c73c49e2163ceaeaa19b5610d064d6d993c82c1ac98fdcf6ca5bc24b146227152c633907dc931a0fcc47b1892b135d7b58022013d2940dcdd52287e885eeaceaf7bbd8b81cf60639c327366fd1ee0690afe7f4acb4b002407705e16ee47c2799b0a607bf3e9bba116ffa5cd511cc03cd667b125e17626ecbb9e8af983f96daf01bf2fc2d110afe60d0ba84fb0941698b410a16a799799f4523244234daa896e0a9c84c867b6eae95fe8ce8ad8928b15958282d35b82d44788e4d446d52b409db9323b177c86b49fb2dea693aef96e2e877447e00cb2bb58ef4eb8220af94fea1d070c175b447d84c676ac11d2be3210b093e9d3450ec166afd74a957fc20c3484142ad552ec025effb47aadcc05415d59bb9b3f63d54c106c3f31236b9e799d800019330e99672b1ffa7ee8899bade63155b903a53655c645d971a24015f0e9cfa45e2e8a5aad30e9d98b4ac48dd2e104b5ba81614b6e1a3371ac7dce604cffb4528c1e1e8e930d6048501b0b239cb22e5c4f518295b35c60c98b589ef5a5d590f3a1a54504ccba019d714d9e3748b5b12273725cb247843f259cafebeafd70c3348f2903bf2eb9979de35f1fd4b4854ad05e6f5f6ed8323805632535bc75dd078f6e5d10de5634261c49e17a34cbe00d09f25fda14c93041545da36984b8f3d4142eace868594c27253ed553525019bac4061b91c05d03989b291400a9e96bbe83c2a393f71ac85c5afc955959004585ff8056ed23a9738225bf297ae5e1a3511da717aecd02d16422b52fafd6e8311d088fa182bcc2a49d310a22c9b74cfe7f657e475db0e889c979fd34901072566554a0586a59ad98d274af24142a44df6fff1d82f77a02d2bee004cc353a7c9c9e02eb0a1ec409ddd6a5f9a46f9e790202668cf80480802bcfbb22e09c5351317904a3477df4a3c1e540f683229f4d3f0378df69033d534c5c4e39f6e7b4eebcabc64c666219981db63dd3187f1e6b9a0dfd4f9acc33b5f768c2c2af8c3b542c03b4b95158b481f3895a9a05d5c1efc7317e42abffe4abb4c39c077ac796a33909a96f97b977af479b65756b3edc6a36cac051c4e7b2471846763fb14fdd5a0e7afe431ec104e7137e1b3519960cd39fa56191a31ce08bc6b04fde1396d12e8170d5757453e96d88e2233b031b1694a904403659b624a87ccb8b10b61025769ff1cc6d208461cac87b9a7217a1c51d41244abfbb02e1179e4895df70c9b76098cf6a566af27f441f2145dea555320a14ae0e658edef21ee16c40e75ceef0dbc01c4cfcce017a27d93e5c408cc99b0eeaf15ad82d2e1fa95ec163b835864f228a8f34e72bff36adab19c1afe0a8129dcad38c8f23b96602fb55d587975b6768467370927ff22350ee3837fd09c298b1ecca99363986bd28617a33607f8a7a93bda59452ca2465a603d303ba0397bc913df3ec8a6cd7c26dd84dd7802782f38611e430b4b3641db3ab24dd4e60bfbf73cf39b5b6f75eac3538a7063339b7cd7f9f46b38fcb493fe8bfa47d4dd22d76ceb756532e8eb324e43d3fc7f57e4ce63beb5da24ddfcd9d2e33ce0ff2b479bf75419c36a59eb7c6e7e936fd3d459b38bc51246f5088e2fbec66adc3a44015bffedcdd50c0bff6b53204b4779e65dab3e6817e1a8f854700dcf77578f301b8ef83fb7e4ecdf11c1f21fc5bde7c701ffcfb60f901df23e4bf79c08c2213258acc8f28323f3626c17dc915e0a69fdd6b0092b445064904648a968c139cc154c8ac5003d318ee1925368399187a625742c6bc6794581431df17cd41aafd7673f7eaeed8de6bf178abb5d67aad9a8213d4614d05607a04fec7b5d65a6bf539e7c4559f3f6baf0e1c32d2e789f5c648dfce3967256918d7a04d1ced81bb578b43728214fc594b5f8415a129cdda4e27e09b96f75e9ced0a9d1339e2fd5bf3c0777e0d569d3a22d41c5021e0e741979b2554d00ffef9757848782d880edf152ac4c4b20e0ffdf14bfa8565a791370d823513f6c19a07be838c232ec8d71c937efdf77979afb8b3840efd10927ad2232ac3718ee4395a8212cd0ffe3f68528c9900c7da3b54594b6bad31ea48106ddea4aa02a24ee9d6a631a8181af9f1dc78c4e6890dd8f775d60d37f6140142835d7f8601d356cb47abe82b250c93dcb69f7f237dde3b4f04e3dbf62d18317bb47ef3db7e7f9cbbbbbb3bfd0d713c84e0605239b1364c6df3e69887cd9b6832d83c0a446550249a64b16c1e6ddad6fe7cb1ed5b3dde1ef76568db2791734227ecc6b6bf93c2c9b6cfb3e26adb2fc18b574f86a130a3231adb3ed5a1146686a9062a4e40a26c10f3b170e6a8ea2e51404505e8c263bb4f44a2b5d6fd843b6cf21413c844c352629a0b920048f5b84c01a37470d19aa052295d2e5d00e0513ecb858c022ae5abb9a96997a21a3ad535dec6fc6a61ba1f0f42652c1f55bdd8bc1fa94600ec19553563f3c6bf52b534a6caa96bd47b4655bda0c5ccb03d44554d15d126ceb86d4ee0b79fc25a9c3b689db9ada5965a6addbe5b6b6b6fadb59666430b92f96924fe90141fac596bad7d2f31b881f985f42ec4daadb51d9e0295047b2ec03ea6a4ce032803ecefa806b6b603cb9cb900ebd3f5bdbeebf20645ceef03941fd790b417c99a48ce5d254fe8d49c7dfb343245cdd99c9ab3a5872377bd45a31f82f0e99fa823c2bf3bff081bcd7504f8ef9f228ccecd59d3c9991bd411a00fac5639f0e588d9d0c0b721f58b64ed69644d76f79c9af3c720386badb5d65a7d410c66308fb7ac95561f13147898e9e13c289d130b179a314ac8b678696167919839da80269521d341cbd860a4cb54f5f0cd03aa48ff28f3044353254ac3ca3005bdbb5026070d37b3c379503ab1746064d07b029623104e70388f253340f0d03aab0441b47bd60ea312061872f7d9bfd9ff1b4a20a308d3dfdc371047792bb6df7bc52a11b25d89fc767d0c42e438f99a7abb8e1e766db271a9bb7f752e2f71bb690d96e4b996382d7becdfcc9dce593c859b348666cfbf5fd2a604eecf52bb7fa5eeee94569f42f300dd7af48d6173cc04dd3927e60655635dd12265fbedc064b1c27127c2fe6fb739fa525d326a413265846e61e2b44ecdafb4f45bdf5a23e37c9f5f6dcf92738f74a423ad35cce1b7fa9c2479ae250ea5be57bb64acef417da763cd96b68aa4dc53d30f34a41fe8ef8092bd3c066c1527e098a9399dce5aab9322f038ae9e98735adcc44d1ceea610e179eee4993a2038cea374edadb985628e934e3aefd5386b6a6809ebb827e3fc0b5c174ea0d83099b2ee642c37c6185f8fe1d3450c90693d17d04d90fa73772b6d8ea33f3f84a3a0514b500767312ce80154fbb1c4b5e4401c80d0bd1fcd71007d2e70ccac5e6090ca3cc1d8a202d0cc8089f7400c8930a314047476561603aceaeca0d0edeca0f8e9ececa0f8e9a0d8d1d921e138af3f143e1ddfce057c97c9260c58152d364c966808a2764b919e10d752487b5b6655010409f43df04dfdf3d658ee39a9189a425712734e1e1172787844f0143c2e8252aa793c85083c3c6ebdbaf3a8983f5c43977bbebff85e10d0e4627f72d89c538f3b1221b4ae85d2694fdf7f9620185f9abeff0ef5a96ffaf6ed66e72dc9c0aa90f2a6be0186b6ffc4d16458beffa49352770f3ac24938b4446d4f5aa284b981d52e88288d324b7dc63a82ee6ac4b0687700bf7e5ab639dfa0a331a57cedb41d9c0ead28016cd31e0e614994a9e2606693e0457debf47a4da6652d0a58ea5c6dde861cad8cbc51f4fc85d33a0f28e0429070a410db4398d9aa5c6cbdd45afa3767bfbf29ce93713ace4cabdea0cd9f3852c6f920ccabb59e377f9db3debe0c931562d3d55a6badd4b360d55a6bad957a9d813edd284d53f4e97600ae21566e5e397b9169aaa51a645958b8f7fc4bd7afd945c37241c7ecbab2316047d5179b97b5f65a6c2995c14b6c8906915816fab3656c5cd9f497856b0817914d4ba7fb0301cc8041557ad5fa85c379cd9fe805c909f397c5ee3a7df6ebb2b8f47ef0bd5eef8a65625159d4af0e3db58b044abb16b419358d16a75d0bdd092880d9ddb764cf2cdbb5984f76b72c7243df67d7174998762d3e94d1d1a587ba78f1dbb5f8900686110e56b4672bab2a2e3ead54b038b8ff098c29c17201c6a84c8a8ec02a885b09b138b8ffd7555565a3221cdcfff838ffba9fcf39df8c73ce39e79c73ce55a22ea8366cb1c577e6d7f9c7a69da9f8a848ac7dad71d74b4bb0a061a891d2fb39f501f4efd6f8dddad2a5727d4b751d0134f4bbf0857ed7f34550d03e7cdaf7e46cae81bfd0efc2b267d65cd9334bdd8b0f3eeff78b258c0e684f2b6174b00b3d04cb9146c95ccfcececaf67dcd2202f50375df7284595350da341b1c0e874bbd69e3a6ddc81ab246ce9a4bb1c39287a34c3507d64ce9bee48cb229a943426bad711e7455698b241dea757551efd59c0d234ff7dcdd9db097ebf06be962cfb656afd8b6e455aa916e9acb108ecb61a4bb9238fb797483e08dbc6d406919228711fbd068057bfd3cf166f2c69fde6ebcb48d5fc65c128d3cfbf44172047f8ab5dd33dfa7dd9cf1575b6f22e023ec9f2109a5d78ea15947328a3a67ce39e79cb5bab5b6d6d2fa92708b4f9b39abc5913671fe3cbbb5e31c24eba64d11e13bf8a218beae81e0b343aaa983ae5d448d16d6c40769efe2831f3e4dd74c84650d049f2d9638aa6b26b426eb5b15b65db1095aff5e5bffd65a15e9edaab4fa38dd4012ad826ae14df409edea89af487b761647db0d83af1e74cfce55832458529f4d5f932ceafe60db0ececece2eb03513bac5cee04fd73536764ecd24092d9c04ba73c9f3a1d35ab7ee5ff3bf5a468c33c69f75a661a6adf869c5b8f69450e74c83dbf9f16b9acdf92fcd39e772cef95785f7b07ace3927a552301006c2403084508651514e2f92ca1d6fd6ba3eb6d6da5b71d685b15692e2bf5b056ecfca642da5d6dada75b5ce38e76cf3fdfcf5be9d80bd7ff1bd750915c50be8a5b49cb6ba102b65a742e8fab9b185ac8bd91585615aa90035323377e6d10e04aac08c6cd430225582174278a2e50b980c588260b9a0011f5c6cc0e8d26264a9051f20338af02013938390d3d34e072bb8f86241490d575e9449d6fc52013d9176bed025345b3938403345c3b5c6d90fd1038d8f173cd010d9400314444396181c5967b876f8192a1a59675a88c16329879f11322333ea996141ea257d31d31a4a32bb02520a337b42e428980d294ac12c47686dad56664036c2cac68eb2ca68a041cbb66a75f724a9e75176c446d6dc52223a6ba2c44a971e4b8268bbddaa5a2af4a5c544051a3f9cc8d859aa64dbb2a56dadb5d6fa91b21a5cbc2c46d0d9190a59663492c2c8c06224d9f945ab1634de2e10b22a183e1e0445c4dc0003b2d5eb42939051693b34ba0b644d3a1870c276b2a3a4492664824e210c0e105f339c47b5f6df7e534a68886d7c772ae5e7b929a54b8f380cc3509c714115a0b07ac0aa1cc8f165ca17d40b395ad0fae91943460ca41849317e84e189a4e483c4ca90148f24505f886421a1a9dd2012bd086c052d2c408d69f5c0c2c22526884e5b3dc954ce8c651107f7ff58ccb902d13affd5dcd4563cc1268b82263534ba6468e7ab238dafb24069aed717df7befbdf7de7befcf8f9fa69f243f30fc50fd54fd6cfd78016d010ac3f4076581a60600a6660129675b67459c2051b992c1063021c618d7233eddc51a67ac31c618638c998c652668f213507e92919f90f253527efaa1dbf9a989448e834fa2d65a6b1f980ec330ac36a1798190a93333844cf1615425061755fcaacbce612c88d7041dce058392322d2c381c51ab22335b94465320fe64d0aad4d0565bdac3446a0407598d1e34684983a34a8b07f9b400315396c398174456a022d4842624a506835f1a326c8289a24f2925a09db312979b1adb6d1ce77895ce6a5e20e012a006d91732635d311c99f275e40620a008434f90c028ba825245ca0c41734c5720861a88d0481953921565ca572227a227221f51148be4c31863d19a2063d41b42f6f302038532a66f650541f00aa7bb1adfeb44c23011314c840c37f570d3d06f8c7138d6ead7b6d017f6badbe574c10a7405333bed2985c46b67a79de3fada8432c80af8fd6ae6912b5c68701c552193e689120c749404e00a5e2dd1555aafb337e0a2a3221d454a454c6f24548d8eb0118eda5401d4e3461b56054110eaad9d39ba3c377380e91c61630eb1db87c002941e428ea894e0cb898f221b1f49e38f2d4ebd266651528a28958fa6097c34f96004c7cfa5b6db388e53442b142b00778ad205b6ebd3ab52d2a4844aa8496c87e9d4c6f88a978d07b0c340c62b291b6331eb00452cd0d23dce396721439e9b475ac7a87463f2dc14e284d395f0c44b8fb1158c829851299f984b83cf0b88888d7e79fe3adaaaed368ea308950550034a060a3ac8bc50d128198edcd8986a74f371b09a6c5a05412a4f596ffdb25c2a501a04413c630056606e06565e74e317af0d3133376ed81b3b325219176f31c6180ffdf0dc6cd2493c070ec170c3af7191988d6fc895281c759e73ce4ebc3c3747ec9c70f1dcdc3c3d3e8ee34020034c98ad2d58544dd467644f30c587c330c46118865398c2300c9b32044bb120ab0a910360414dac44000bc509c8190cc4542dc0c9aa62985881555105351857c9d8181f995018636c021808e2221caad704503ae37c73ce19fc9c73ce3947e9ba17d4539ef8a8c2300c9168107bf6662566bb810200565519ad026041e16abb8de3082580bfd2314e1c95a60bbc61483688f50a01546ad8d8dc28c6181389d5dcdce0c4aa62c1ea04137c1041b3c3501b1bedd8d8a847ed2be38b31c618638c319e19b07a61885899161a523bdc44ea0a16052228ab86d8c66abb8de3387e85d2d927711c57058be8555de25592caa864ed1a8b2523190200800433170000180808058441c12cc8e34cf80114800c5484445c483094452381401c0e0443a12086411088612084021806a22890e4608ed305c0342053ea79ae45e08d7c1384d717ab171835d13081a4ecd07f7426d2f7626c12be48eeed5369f19845166b320e0b67b321db541e840d3fe094a9aee521460d0be16dcfddf62fb1ce9302d1425f343790acc839e5455037811b7edf930708aad1803e47985a59590da0c865789b9a27acdd73fe5fcb12e46d3b224e7934254d1b486f9a6506105bd57fb3f521427f9507468cbfd982bb770e132bf9eb383c836624a8b434e70e33f998a601306f2fbafa0805faa16847a44418f0d951d6fd6782dc559f5529729a552ff9ec0d05dd21d0aa60dcdba91ef6faf107416c322c5fe46e23d3588dde2fb4f0e57267d6309cd317c0228937edc004d8063d20f4aa2cb9eceb2cf061f99ea96c146fa024868ea09f2f1c190ea49d89314f4d126e7add5594a3545a8e73a5a211939b2ecf48326c6b4f312edb18f3b44f1c8034ccb4cc329100e7c6c8beeca69135b22a3281442eb48cd7a70dcede38ddf753421d01f654425d27ad96a7d798a22f79f3d04aebbc259016b5221576f6eb8e14432e99f6630757df88b744fe89fa36ee08ee4de6dc9a7bd9c0101a8d48c76506a4e71214c1daae71895c443876642cbc7617696e117c607e70742a4a0c96010250f2433449c6a0d4117026077cf6a4b0329a8f248b61854028e3cdf57db3d1977a4cb1e33a1e00baa3315b6befa115129675e1e59b228101bd94eee22d16708043ac0ec4def06560f951448e679a2c8cd0d5c5a046d2e6ac2dd65d83674113107cda8e4200e032287bfc340ad710b52d0296d2f8f56bb007bef24f52627b43bca7834e64613808e1a6fe39e0bb8fe705fce499817e09f212af9921860416f4cd4cfef9d049cfa644c2610b4a5e5907208e5c7a43ba07eb133bd9a2cae0d7c7c56994f308744d1913b0775db99e2149a4e41351e4fd8f0a65924d200768e56a8ee078824953a8003465bc431fc3dc5af072fc85e53e77576202b1373dd3c7b432aba0eb8b3c71855d4c078872e046bac74b62d6e7d9190c599d0d5a18374120fbf28d6d5d4b03050cd49ffce76addb807d5c5bdeda5dd2127f4c9a86e06f0d21ed8a461ab979d144bbd5fe8b9a89da4b46d8f3065c234ff9c1c85d4d3c05eb736f2843d6655bd53a663b90559bb484d14f849c50dff39a3229a15f5c71022f9e142cf246a13e85ee095ea22b4963499ac13000bf287d49ec7979283b850338e428b96cc5dc7fddc266df7f000968d6ea487a097cc55690b2788db7d67f06d9232f556111069efd4a4e04b11d482b38c93598a7e7cdd4cc57f36952128f45d7c0db8c6de6679d9fdb3b5871b6de28bab852f6d93ec8453c7957c057d65e91c525b4d261c37094a01883bc74dbee94660ed896f9883acf0318239c4ac11fb2685c1767d1837d3f5cd87e53a11b16ce6878e50806b29e1081ed224565081916add17008b8b864966d8b74227f47986c8682ed9ab9dc5d39fbaab91ef35039c0639cc851c78f9fddbf523c0a6932b2d12315789ac481da893650e2410841ee089f6353a92d6fb249b6f3a581c72476809348fedbd8a0ded5ea79581512acf904670c63fef4a3bf31890807b54d464eda83609bba24938e40ceac0c83bdd988fd97ed2ac7c2b9dd84ad217d5baeca12942ef06dc20590ce57d8422602af9320b0c138b215aa7734ad9fad922d704381a6a8c9c24378b4a26190ecfc382627cd4c7b275b59a06b46c5f03b353bd1e667924483f8344d8daa039c355b028965199d9e2286928c44c3796d2a8a4063b6133f5d19a6e14eb1574875d24b57cd3b652e95d5ff434315fb8369cc6ac589b0b1d7f4d58145a1e8dc71208141ee92a3a37435a2d6c935c73adb3ee5f8e2705561859ac7e3aeb62966ea0f3a4799c1b4bcc0756c8e097474e8a2c3056dfd5158866ed0c7ea19b6e00cf716de46676d351718cf7ec65a0b0d25b78bd5d2d46888b8e9f26de5748cc0778c654c4942bf83ebd7281827516516d16d4ae04818879576eed4ac1a79079c4c97db7a703a359838f4ae80ba2a23739398ce5546dfba14d38da2f2dd92b13f74eeb68aedc516ff1d382ba2430646337605aaeff8b11a46c8933761fd2a6382905890e33a8276a08c85447b126093e4b1bba4d05ae1fb0257f71c58f4250bfd6359a1687a428a9b3c4783d86df99fbcc03827b1d5fb274e9598e0b6ae213ce1693474fafcc9a0744f31247ea2db02493e5fd3e366c45175e71a4bffb128f236d5c2f9beb2b5308424f33fcc5eb5f3ba98b9e44c6d2cc156e3d0a5ce7742da4c00a3fe65ee8e51083860dc862f0141dc8bb9c74d112891548ef83f5da20434cc28ef082b2a204f1b048a211065f8bc0525e46599a2e00e7a09948fe7686ba988503eca4b2df658b3229bdbb714903b8e61eb762d912a43666ff247c21f1f2782c2b656a3df705a3d08d0cb0c7b232a8e5e5e0b90cb794a3b6506f45bb429eace0520e4def2c0a6f8a64afd14b93abdbe15103d77b653e0497f470e6ebf04d92aeb081a35e369b39ce20ade8cef40092fce21063106938f87e6e1f40cc3ce025f92e705491c35e8c325cc0cfdf064a86c5d735e024f92205959e9456b56aefa10a91bbc5f055a5243398b55795728f54a4f1563ef52a2014186a300bd1b2fb757197cfcd2c82d95a6f4643f11aea8ad3440e5c65ceeebd08073b27739275697b5251823e8565a94884239d3b0870f452e60f41c60e6afeab5440c07d8e4c4a1ccea3b541e50e6d75f54ffb566976538c93bb814a914386ddac03e365beac3a72687d353c6ed6ad522de5e225783f68507e95968f34b33f395b2559d877e44c0afc91c61e41d05deaf58255b95fe07aad7e34e27ae8f3b6956bb6fb61bd06b44db2cd689537cee1a90125ec6c0cd22bcc87f78b69db74804e7b805f6d7462ff17e004a9c21ad2429a7f02b6dced884a38318d6643d84cfda663e04212f01c0bf8276fe3087c812b8f17a5a6e9aa5d605a7ebc605b2f9500e2229fb89065804d2c7d5fc68bc6ffa3d31c6e06e66d628f5d16d51ab8080341e53e41cdfb5d16d5e6f4bfff4e2135c76d693a3cd3b8698725e8ccdc80862032d8b13de330b192246a4099bf549c1db596cf8662e229308f3fe15da03f1755c4fc36cacdf5b626555043e5c91aaced5055b65ef05704619e086449f25e8328e6db568264cba0b76e6476ef640aab1ed8c3a2c937d5fef50102f735e1a820997f1d2d7b22815780c18e54ad7a0947e6f3c16dcb7c3a33b706dbfa0a474fabb8b486c4b4341ace01acdbbde7424d6c501a25faa1e4c4aca67d5f82c437cf13033371ddeb92d168620834ffe09af10eba452d3bcc17e4887e1f0dc4793f8932b192c99c85c7a71d360bc0da84aa35f87c0fbd109ed8a2cf49b2fe12729f2eb98bc7bef94ba78475f4302b999d90307f41207c9d72231adda90f0c9cb21aaeadcb0f2f5ef614aae8d816d574447c55d9e036b585452a0ccea9d0c7a2cabd6e0d8b58ca1533da8f892a71f494321cd304a2724c391b82e44f4c29ac44d56121e238219af8a6d918975941a0290320bbb235081597f96127699c6d70afcf0d0e8c04e890f581d8920c6fcc3b59b469701d456e908dfc7123494f6898cb49be1c2152956814149628f66fd8c45041cdbadca9300444f9b181454a53982575890414b69efe11ec68de313319b0e40555b8447d5fc578f0908c9b60eb6e55dc9d06132f653b54246a10ad9beaae544c53503bd22407386cf226f24b115b7be0f3c84f7d68e95920566bf5cd9550c5a93455e3ada544a550bd6bcfc735675a00e8bbebc37ad471379226c774803ba0137e94ac14c9c1508dbdbc812c138050ddf255314a806f4ad80b08f445c8356270255eb10ee3d04e778d9ebe8e66b847b846e3f3845ffec899e1e7ddfcd2f516b9c9d47fce1f0e3ecdc4cad617cba0ec8314c32d5eb4d9091c228ea6344c87ba367c4bc025d4aad365d3794745664a0c47dd1a4d1f6e2a7a06d17bce4a530b44b5aa7e2c04e0fb115a33499682f42dca702e8a36481f85e3b796e562c4cdfd2a194ebed91e6ba97be9121660b6c7699a7856fa1b248a553b4437f0d8d9fad1cb2c0c728d5420a4206f7d02a85b1083a90869db800c517d0c07bc16bd3ec4806d803cb4d5b1a75b470ea349ca57fb0fa7384e484a968b227b93e83a37ed5c4b010e90f681c20b9dcd89419d8aee5533241c535e2c2656d1a5c6dd117b572d1408ce2eb94aadade63ad6a2011adecdfb4559875e384bdecadbc53a06cb34c96a28e72818cea83ad9915bd4557bc5632241fd7445f16f6ffbe4b9d819fff6f312800fa036109736be4d00df72a0ac655f001f074521a2a2b696c64e8d89e3b5472fac8c39592f69596000fe7a0c6822526eeff561250c19aa7d0c5e388d2fc569918b12c1729b4cf6d71d585b70ab31d378fd85a3238316de3e7ca73907da2b9561cedd14cd6b6d7ac178933c2fb9f359ab9a8898d411b1b3930837b790d1e84a1081c31bf5fab8d7ad0d535c79f1855e4d7d2c4754414b6ebdb07d0fa6966b56cb871dee2e50f03723b9861bc5cdc6ad3a3ebfd5b14f0c87e76acaa6930a75c921ddafcb1b441c8b5b8638ba4edc258e0bb2832be8c77a90180905b26e168794de3fa671a9d51d6fd89e4fee67d1ec1332a4983d701152dbe5242a28a3c87263f152d7182433fa4738337e3eb312806457db31b8f322a33f20cbdc6451e83bcd439e9d0c5bcbb16160d33a7b4e9e6bf0be1114496b7aebb0d55d35e465ee307a3d11034fe4849ad1937dafb0c2a5797ef061282f934b53d6a7c1d57e0d1ebd9f950218c72c7e0020a720736f843af807d4de005869910e0f98e70aac9cc5ee481f009675080981231c1800220377cf6ac53be4af3d74ef34645a4e137056e058c6936bc92391909d43992ac408c2461a3b882ad9f75cb3a3b54054c50f377cf4292b0ca90c414460cf0fa59689056a4e73c46e0654322d75e2a895e36d95d9cfa50badc8cc2647f8c2db928442667a13d3e0fbf875bb92854219eeb7ad8c797c95f958d521008e87d3b980511f92ae702a797d5622d90f7bcaaf370776259085ee96f116c552543b6aae3ba91465cb537f01ff069bac87da4457c5566f7cc6e81b3bb76830abea1b9ce28f88bee8d2dd2350776bb8b36a6a582ed119ab175ee9d023448d66586c0251b538d5291fbf1423c07a4d6ec130ac8c0c3560f7aee69a4ecdaed82ccc9cb90391192232d9570c0d794becb0e44b67da1028a8982bebee5df921ec1d0a0a967441fe314079bd0e5256a710d47bac7813480ee23317111eda47cd84f77621b4bb6dc958d8a5b27151424324108da21e5b9310f6de4c1db8cf0c532bb00593d99fdfccb2d0448e7fb3435734e7787093d2f224e2c9c3918556aa4cee18c52b4affc592f3ead69fa2a4f8cdf5abeaed234654fb60225cfec92eba150abf38143a79a48c12dc6502a8c319be9d9e9369f222d9d91553a31cba12f620d96105a47f106f67f6a7ad619ac3afc12114919ee55a73de2b92b9eb45cf3c64b95666e64e1d9d2214b56f58bfd116ba3514bc93916f6ebae550ff641cf6b9f7274bd792652411ae1d8467861b3520bfc04fea5b436e0f3d9fdac540510d936fb461da09c8b48cdc01accc513667fe2f3642d2fc4136d356c13135c29641f1d226acff662687ff3972d9ff27dd9ac005d1a03529f2bf25892022f952897ac6f436c664978402876f3487b2d2dc43462d764043919ea47757109f1da14636a89dad5b193995f8416569d78c7580acf65eab8e4922afbb951c035da997389cdf52013d874a40c7b9e141868821aafd0e6af4e78eeacba5b303a82a339fa541f320ba27681b6ba8499f468086aa35b0f7b414b1b0e7a55f91fda75094f6ae657f60ee672fcb47761c323a48fa7f214eb5c6458fa8f18496716add424935e2b604b5b2a3e68030f315ec37c9836f7c541b264e0c363f3f4013cc35e894e2d9da7f1291102e709c67f5a3f9cc45de5d57d3549b6221d9482d4bd5da36fda0674d7ce5f422091996e66dbdc2f4e5bfe83953082fc55809e4a7a9f1e9c9954d10dc32a3c5514ba555767e7ea942bcc8ac30e0c0dba2a14523f2448f2076aa27642a5c4b67c3eaac0c2e27640fb116fc098151440b9f2a625d3455b8c922221cc826e601d6540f2727e446a0f360d588dcea4dba6c6f871459ef2e1a71a9c85ea666447b4d6060a72400c4a7216597988175d3a712d59ab4d8339548bdf71bc6fd664cda1bbaa669e9b8d7d7423283432f0ee6642d79ad067a94a464503ae66b69a8331b7bc820940f21d623b050c9fcc350a6466541a1d17635d4b0762cb016e08719a335d00cf3b1027bcc644c1fad236e5d3a437ad1ca0b310c6958dbb16c04454002273399133d38b3a241283ce37189fa18ac284942f2bd0d2cee47e8ccaebf34964bab661f2e23bff392c9aa0baf073176c6dfc8023c92963db823931526a4834dc41e95789430cf8dc6510668b3c51c6249662794d16abd4450aa8436ae92fdf02da4e01a0883e2d740146193a3cb17b739b0d4b54ff1ae4bf5184f0913b394d15b0db77173253dae900d4453807094f8c782a34691c6fa142374cf80c1d393b6006f705991b5b93028e2579edf2125125c6c466e3949f90cf35f06e1d40038d687d58ca566aa44480cd13ab2522d5486ca8cca07b8028bac578290402595bf43009f5221907223ea00437286136f1122341e2b9964f13ca93c90885184478d12187845c4b8b682add79364886cc6b2291023915eaa56c62f1e0c944b8c36c1a660778c3849f20f4888886eaf338a3888c3e746ab9ad734f1b3133782dcb794aca7592dd07828f59f85f3a1cb9f635f666eb505b2067a8cba969033dc3c0e6e4a7e3b7afbf049fe97549c6a7b2581953626ba69f88b6aa035ddc3a0c6e4b0e3b6d3ac2dcae903c59f4cc45232c3ea093108aaf3e3964c0eb93d0c6149b18add4a0d52c5a9cd3b277eb090952764c7bbb6f1cec2d026bbbb9e97f76a2ea78dad09fcacac21b557d98860ce1de065bfb29f3d8ae538d606a682610308466629e9277124143a42731123c0ad7c9404a4902834c66008e5e4924aad813bd7166e2571444af43852b92edcccca8b6c62d11d5228b5fa033eb1554b4380085f014cc5153e08b3226d9fba97eccab0599db198e2a2390b55df2a9905a812bbc4d70cd0a36be5014c3fb27333d11a10746a7310844b7aba0111cee75f8c5f99d66e0e6a7530f5896b325f59b4ade8d6df0215e509047dc49812e87b1fe8d9b5e709f883f9389646b8355a44a9b2ff0e6d478f3ead79448510ed295096d3e86d8c60b122e8e99610fa6f7e455f84112e704b9a2733a256671fb650753662a64583ed90373deebc9661dcb1750cc4df8984847f3e2045d198048fb5ef39b4bcbb4bd531129a8bc50f2d9ea0ba562b9ac16c6a8d4240d00730e7ecbb9bd60f9dfee38eede64aed408be98d8adbfb75a12523f6f6014ebf1468b72a3ae46bef3e23985157466e02538e9f4a36e4096ba14487ddd617cc6dec481e3e1ae989c8f9f2a5e5d87ab4673fa9524404823790e509a42980399636b2da405ce23c6ef26bcb391d5aa39af6e0a582c5856269b51fdd8e582387e24ad6a73240f501ae52b6f12a4472fe3492820f6ce3ef8626a7ae2078739f916e35fd9f62a29bf858720380c533956f6090cd5c53195267cec7d69a2ad4a8e97b43dd853b6825a6d4500ffc3dfe2b5daa307c22517a045371eeb3e0527287b9e07c068ebe80a8777804a67af129cd272ac8eb55f78db83e36b94255c8a384b562d5686d997360c3f1263248fc54aa55b7bc528dfb0a19a56ae46b2352a4697b3e53c2d58d9db2d2df4c904ec7ab4ae958180a9d946a1e32e06d5dd5a68cda8d802a13c9c08b0e015b328ac9d407dde2aaef48a4316cdf63e66a17a3b8536344dc0a79298d134c68c7de218c72d58a0dc84775a915ab370eb62199a165a9176a12e49e39e318ff56805e92cb2d11c6e964bde647832ff4236bea8dd024f3a8e2544c146cd531a4e283e86e398588926b8aba98eece68dcdd3b1e4d7ce8cd873d9b5abae9cb973b0a311576bba727ff7423312b000040ccd8789d2949e0ee11e67a31cfe471d19ff18d63b80a48c8bbfa2e002a53c778511308739e3711b0950d39863b430c6fe1cd753e3bc98a3bdbc6b49664c770fe8cd64eb5c8718abd985344bb5200db048dec63b76c2c77c594aff2a40383a2c4faac6601ccbda78ecdda00e24b4f83a079db1564bad9f848be74e0a91b6a2f19b4f59b015502584e094fdf12baf3a7762c49ed5393b736481ea5ecad5cc1bb2bdb546a6b42a8b130145875bbc38bfed505620718a5037f35445511f2b5d587d3d8d4b8da8de714ee8ba1b304b562d70a67134c1b3904e758ddd9d32defe24eb6674cf25330088745aede94801cc141b2c585313c35f02e04f681ce889624063242c053ce8c46818c1b28585c464c9e2d96b35471fb60f8cd467b4619f21a4c793e3d54ed5ee3d029732d5e35ec8faae0e190626cd121f8fc41920c7cfe557a078ce17d6f4eafe826c12b807191921be8a423ba13bac5335b44b5208bc535f9df061574ceca91febeea35d2b0a90765214b141f60c0100c591c5f72be5a84d2b9dadbb8bfb1054aeb8b1ef6076641fb315c132c05209017226556860c28584da4745919b199612b2e2805ae536d91eb635e7ed697024010ab47e04ddd0ab357c1b8e6dad6b38ae56231ef9402ce812d858001d2ec0bea37dc291c6e5601f7a664d14741c194080a9cc2e5c2d9a91b6910499cc7975c272eec52b78a37c9cfd5ff5d535c347115e4249f512f1f2bae70f3adf49263034b7806a70e6fc80e47695bc351cf7c20e28e778aab95197187da82294e1ad23fa5fbf41892e6bd8116983a49c67b2d583a895256820bc4bc2b0b69cd0c36f209860c16029078ac6e662c7fc4100af0a4bcd81b72b1bc8a9e2aaddcdc45e5c9a4c6872624a553bf0a0fcb9b028dae80c8509337ce35c4051eb19350876ed89d312e94fad0b69f3ca12cd3e22e433f2d9519535d5e67e6c3f048a078e02e248bd7dad19b8d4b3703b4c06b8e4b6c6244cce73e95991572ae5d4f05b4162cb21d875d66395e119c685cab808b8788485eddec79571bd955f4889f576e48588774c499f0a95b6346e08a03750391a8ac2ca91546c68322d0075432ed2c07fe824377d3c1a019f964e977871cbc0a849f304cac4271180a6561aac5adaef02ed165fdfc44fe6f3ac15fa200ddf7165eabc7b298105e5c4c1b058b3941b3ab026486262343d9f0ee78a4db679f9181af320eee54219c0be179a062459f9e0a874c90b3ef9f818b790f73c364f8c282af7d25f49300912d3ac148ea3b8ac88caef214a52208d88877f55018efe52c6ee92ecc2100b8781a3f517b1626e6cd8a64c652dfa38cf0244e82d92c2ad3940552497e7e318325554927853a7ac09961fc4ec60ba7f8302168d6c686338d4242f410d473086f1a210c6769519cae594dd06cfeba56ed295c861a9f45032d50f7f7161147a2812409d1e2401911b2de5a6b4386f4723cd1ccb0b239f7646199815b06e7cafec0dfa334aec950a83a49bf4459bac939d4e8527aa47abc8a3ef465544a500dc977a2a48008b7804c1dee39ea761f5915821ec6c9ba191c885712059d0825944139bff7b2cc5db4e03b0f679e09a2af54311c6a819d5bf8fa956a7fbdcc000adcf39a356b93a5c70aee0b4e2009c2b2b8dc3a01e301ba16cd6d7d42c357593ecaa019ba606b31a66614f5604a429cc994d52119406e732f670dc2a29c200d5ed6baabc331ccd85b921f8081d5ebcda003e0ac8277fa0b2dd67877dc6c1ce5b738625ec07bad62c22c28e7441a104329e4266ba2741b73a1314c9ddc6e4b5ca3609b19d6f13d02a55eb2cc833d71a79761908d85b08b4995173562e5e776c8f75affff7928615c88d81c103c4e7e02b93d101f4858cb24a4129a6b932bd86cc6772e364d47499fc0b03ea21600a494cc6f20e8a112e317de5c5bbeab9131d60a4072614225732312ea990c35ad141e72112ae041748c809d5a483aa3497663bf007e597c39c900af66e8da3025d048f252b99e42efccdc186d72099009ceaf13879e33121aef2f4ddbac9982a829195d98e87e594d3a4ddb6795b15b5acb809212bb4e070f50bb7a8cae292fa0dab4d54388638668cf62a51c4a83c317e5fa228d00f8ab304aacf2529310849c6b8d7c7df7ec84619f80847a91ac22176560e48362306cd87638981c8a602142d2ac82245640b1767e11630bb0acb3f8a9f2f69fac2b0da9d618946a0d8ad8632147996da5aa219ff3c13d5f8c1ca8c05cd677912e5d1ae525a310c94f4b89b642e31e2c8c38d12f59f842ccf98a78e9f6f7a46a16d67cc46cd3ae109ebf0d52423b0d1138ee6628cb6a7960f1b8952af02cf4704f36d531ef878885843108dc53a78fd42a64ee30f65f19254f9f3ea7ef40470840f3b4b1c77e26cfff95f30b0dba9de06d5014b97f521e7df518062a1e43180bd36424adea19659fcdaa6159fb599af316808d59c9d8434e90c248a4931b1223aa422729c00f7d654d1a8130878f26febfa0a1875c6c17778fcbfe33adec57f57fb2f58d51f60f488c82ca376d6933a0baa536acc8fbee810a9670ea5e75b3c64083ad35f61b98a45a97a8c6d1770c365dcc3192f21b2cd1554db8b030d98ebe28a20029c2478f157b100a79fe7e8b4b16453e3271280aad4743c9869f0e4c190a101bc33be869b0ac72609ff3d9f67dd72d1cc86a17123133cc2a318e8b696e1d62ed82eea46646721d323486e325069f57ebc4f730189acb6ce4318bd29eaa51d7bcde308b8ad79c72bcbc0cc3f1877373cdaa0f7b61a2d598b21e3acf1b1dee979b2f4137500039bf7c5bd98b1e7470209c1d43ed2c79e5d0cd085f7d77802d3686420a0eaa5ad51f677f8b629afa6e018a67f4d023382406909c5ecf8067db0b6b4f3949231a69c53a064137bc827134e5021305bffc4d952e59764b518c6c150cfddbf0c98a7e82403292a18c9fdf971b43e766dd7037faa3192a7c83cacb2813874abe5defd556200324787716dc23d94dc24a05214af232f27e9f08a39b3235d6edb54f241cf28465e4c709a34c85c9c6c8c002453a74261449bd601f91d199ed9396af8c89841d8155b013a7d6a0055668e328ce51c2608aa72c51719776061441455915bff131c4992cd5c01ed502279ff65dc07dc69b2ccf5da881db05dc9e235262df05e2d0ac17aaf7a6540799dfddd200b4eb85ce2153ab6de898f9eb76ea48dc8ee55bfec0880da148cf6160f6c837b6b5d2848e60861deec82cec4537ef4e49b49b6b874676237af59e0718418392ff4046fd3e8ecea34dbd78376a24502d938f616d8f9a100d792905af82fb6f262f2260d1be451b51e551e551806291030d6b1ceeacadcd28a3c371f49e6d35a27d2ee65325f329b11ca88256eef6dade8a3fa952e3597887f560ddb7fc9a66e72488d0b4229ef23270fa14bb28bf562980f9a6ee5d0c036054df021edf08bbfea1dafb3d7975ee7d6d2b33bcc1c07bb1d836b078136b9a50e3e3364b323515c28af5c40ee0fe8e456bce732f1fcc731ac5c411fa8eb2c8a616c3cd6ad72abc5fa6b8052c9d0a27f99e8fd0868d422aba4e81e17ee18d3263cf56df8bbf109af0f850ccb3c66911628fc9d83e8edd04c270ff4a26503ef1c3889ea6227c5f415cab34e9195af82e5d804ed0d9b41c81c703e0f604810b2a9f5fd1ee99590b26d94e37cc57d50e9046c5c1726f3f8e5f2c109a5054048466f377688c19f6a78a8066311af1863d6897207faf4d66ec7b1dad8ba89177471efa6c5dfc83df8cb0ad281fd7e8336aff08ecfaec5e7f3b8c06e19d7169b99c0948ca8158899e64567d86ab9449ef800795aa093ed2b0e1b73666f9ded445be9c227518b5ac5c1cd4e3aa9a99cbdc62474380b18900ef97244416848bd81a036a7148814a54facf6b1d76f9e1abac8abb8e87176a9fe920f155e284113d9a213b9e640c3be6439490edc2a59d78256b29be2a84daa6cecf2a3a3acd3ee5879d91f9675076f16a5913dfe9809968e068de9203b0a68948b4b27b1c5ed60e67d6321de1884c3c8396ae3fa9810be2b729130a7a433496414ffe27050a87545b584ab0aff4292f32d36898b7db33101e6c30c2f703cd3cdba045c3c0499593e64dddca15df2c40c5725c8ca272644d9fd40f148e1ee21f693e322e2c366360886dddbcb3e87651543e89c285938bd6599740eb49bb2f108dfa5b5e3523c3f59b5b35c871f2ff1e6f264b9ffcb1e43ac35c4e7eda824d90f9b23ad75bff276ad5f19bce262b15dc3e656b48cac2932b920af3d85e16f3a64eb44f0ef326be8fbda5cd8c8b7f397633870b91ca13d77d64588d415f3cf0a8aee3b63d0a7227e77ef4525a8e78c4c6401a1fdd45c146e514db5fb734480ec08e853b261503e38ec68dd8b9fd07f43839ce7f74101d2aa31fb22c1016a7de7e4eedaa8f2d1c8741e569cb4bb09f4200c09e5c29e313a9b00137e980350294b294888668ce2c4d7ab9140bb8837ef374b36eb00704e7ab913619e24ca325c2d3e99f1e871be23f5b90361ac2e2adc516f22e3d51b62dde08fe0d7ef8051f8fdaaf58ca48776f0cbd7f469f6cfd6f810e4095a9565a7e26cf073bb1d37876e9082da75b2cb9dc96326b769c84670f8d5baa6e1a5e1adaa94284f39b8e5a887ba8c068308124b32703ceedfe63f53a0f8d6efce0c5da58091c7d210724ed47c7c5c009811ba2fe6edf8508a863e2dfe755a08a07d6076a284c392168deb2cbbc9d4fab21cf00680d09109c8c9158c71d16a9e38a6999bb15c5a8ee4226090f8925136f1bf9dc3156976054213d796016de78b0608b3ff7ab4647ea8b3848342d8d5300959f4f69863c203560c20b1f4843cf988b169e26cce768d55fc88c4b24e1e979833c4ae006e703c6207f5fa37e71ea2995668bd811418648b4a8e51769ee8afa6ab63a0b5759fcc3fdba2c6a92a24879687a9bfa8f7ba6f7e67d74ba2237c1123c49f6bff629d040313b6b4683a11c809d5349dc87f5f5328b55cdd8057f1843f8de5a9d6dddde1a564a83ad577885b9250d8dc9bd2d4c2d3d57be935ec1b4779f39fa2e0b14bb90d397ad38939ca2f1e96904bd4e558c94eb4387c7d4675de41d7caab51eb4da934377d6873c7cc909fd47766f2f3b377bdd23340973acadd0cbe43269bd3c2165fb96f4d3d710f4f3ac5b9bf49b6c98a4589b582799931cc1e865724849ec9ca086eb29eb735ccd6bec77c80a68ea650b94cdae04f53a4b471e2644c1c94d77793fa52a91d47878b046b50b8708988a3e2022a58e28b3cb920bf69d9df8022eca87ec94678f40d84c7c938777859dbd81871ba641289cbd652b338fefa41e95d97c067010f4f7c6f710af875cc6a3eb1bad9845dc25fbdd044f6dc0d2a6fa8ebc17868ead30af95955c3d0bfb3978cbc2252648f0c961aad3e91cc2ccf1e88620832e02f624e9419614f1d4debb79879c85193d8318601567898a14dcdba6bb3b11d8b05e90c2f66d582eb1ddba6325242d29367298225ca89da473dbb75651cd04572d65351c3ccdadfa5697bc1b512ee5cc87c543e5df8a0f4eeba540dfc57ae9300f1d7b805356209943c06d408cb42f1b01ee685fae395470548328369d027f4cd3ca3a82322642797261f8121c10f4fb3ff6b1fe65e3e77b3b5dd81b63aa22d6fafb79e79e76de5c3299e5707beddaf744ef659f7725eadaab764a44ff64e4384965edceb11ebf69a8a8093d7fc903508c5583bb1b590a28b1cd67f661de9dc8fa94a2efe9c4f4654197cf3e88401fc333e506e3bbe8c63d953a99ef0460f79403fa6b2c9642334e37f660b6faae88597cbe90c28471c8debbedee5e0bf5f5596ece6fac4e01d23e0f13434b7f9a6dcf4b770aa0529022a358d25a4a4612082ed562d10079a79e944b2b1ae8255a1e87a09cfdd05dfe6d792311dd70ebee23f1e84b30a32fe2151e6d451b3395e1d20acee2fd197c9b43484624b656c02b79afa0c35a0288a46c117ab86f11b8c009d143073b7151228bacf630498c78d342db12831b755e779e50e3ccb0a579a6e5206ad2546c432f1cc38c1ac3abbaa56615322d519aa455defbf9b7330cec6380a0a18d17debc379eff42256036fda9da11f14050c3cbc1f09773552be41e2c5b15262df0832b82db5b41bbb2eb035d0bc3e61c5a0f979daea5aac2d69c55de921e9158f2940faa99396b52fe48ecb056367fdea728a9e88a5bed80eb194880e71048f13d44cbc3f924b0c4ab919397b0c6b9c8557943fd1a22af75e2659941fe15687a1c135f03675f837b9cb7dc7c00cb98a2342536f2c961847e0e6ac9845dcd100178d260a1950f42c4aea04d027e20248879718cb869a2924e586c8028c75f4db77128b87cecdaf4ce9cc9f2cb9cf9858d0e9be8b18c65e27a583b5f0b5128969649e32109eed67a5a22a028e217e2b2ad9c62aab1d48480502b7190a5fb6f27a855911421709dec217e8c874dd17b0c293a5a843064c4fd5027d3f7ab8dd47768d2808f8bae184b717ce12b52f451c9daa626ad17882015654837425e933460b04137240b52c204d304fa168de615298c74c15e0a69673581a78180f1cccff1731f742030ee5bf6805dd6d5983eb37388766818b53b0c2be0d14f78f9ab45c55902298ee702257483f65733e50317d23d5b1a44101a5483046522a14c71cf8d334c64f3cb68235a8608605db1c83e8674ca25c47abec888f0bd85c0c76d9248ffb17d082c10311b8714ac8ac14b8fb2ee6973a53d02106db58e42edc9cbfdc07a0584260cb17daec3002ab1572f6243ef96b5f3906ce1bd734f260b9a8c3e4e1156ea9d7f733581bc3f113dba8c41d69f786c4e8a54a5a5806bc006d048bfd064d1e9fbbd918eebbd45fb89772f0bddd78d4117fcced695f526299b2e789a7a1f284451b3d8da4ded5de7e70552c48a601e6dd6ecd55b77aab06f5d274e6a9a18bd65353f82e19fb2580879afc08f6a69302ecfd997edd1b7232162da93f7019c378f05ac9202fabbb1565930561aa50375311da410262b74fcd19601d0bfa942b2dd0d10c46c7acb1cbce8a2dbce8bba89f3924615006263cc98324046f4e75910efff6d054add06c16f9d18ebe705e37fd9e7214de4e3759384ecbdf796524a99524a017f054e051605d5571b1187bc1c8cf1c57843ec18a58c70b32cd39369c4f08e1b3b7300ae19c072a79735545abb22b5e7ce73818d746ea971e6c2acdd91e6f5477a1b77c57c0d7ecddddcee8e312ff7ba23fcd649bc3daf47e0a69f16c5bf6ec3bdc796e3dfb71cff2332e444ebdb88e450b159ebdb8818a9cdd8a32288bf193e8690e1e36e5e12b7af3dbd49842f4218e18bef7b3c2734fe0b5fe35f31c6b743d5608d9a092a8c0f057c11be075f845450c8190cbec61abcdc8be135efcc33e282c377b8ddc02bd3387485116e0b897a34e752bece705ae0017ddf71572ab52bd33b034d10ffe2f79db9d0a94ac46f785f64d65e198fbd1c7fec4a50fb3d86571f0eebbd4e9212f02a37222bc31d3797f1394dcf0731f0517a3afd735cdd751fd08edb96c8ef4d6ed34def45019f659452c6d676e192397f705dddcdbcdc587036816c77d79bd7e111ae28be82eec95128ff3a11cbdcfeb0caccccddcedabbf64118d93de3f1b0873d8a35c7dddddd51ca8a2d7ecdc58c076d29a5e4869061f75605716d4cd7444813638a7fd5fd6a773c8067fafffd15397bbdecc34a34e7443f8077b00c76a6ff49131a3ca047fa603fdd8d2e867b7aa4143add66fefe56bb847e7c6f6ed5b1730ff7f4b8bfe67db353b16712d5cc9284e4815a7583b0ac200714d60dc2b28345270c9e27dcdd83b01455f7203152d5dd7dc783c4f8715f20a06ae5f24b3cbbe1bf53c4b4e815e9400a24cb5a6d2c9c077e3a3577829d53183b416098e14e38f1c03f144915505937088c2b110daa42dd2030a4c827c010ca0103e8a53e2d51626d2cf5394c67468395f702fc86afbb767ffdf3c3d575633a4a44f92f50cd203fea50fdd4417e84f1516d13c647fc6e2d6ed3514c5988eb062ca68b435ad7ca0aee611f9ff3d9b7ec070deb13e04a9bf361a151fddd7ccf42db582fb70ec7f571eb626a77f370eb6ed4ee86ae94b955605b77e3dad6515a6cacd542c38584c80feef4523f9e1347f5f3909eb41979d9460367345cab4d47617f61db921ec31eb619c19eb44dd25f9b91eb49db3aeaf1e8d4f619f8029c936d388edac7acb734ebb28e62aa833dd0a75ada13d2fc5dc851fd73527a3a7dc73d426ef3a80f9de89f9e15176a27aaed42b5dda8f6f37154f7113f4ca552f5e25d7692c3b8103bfeb81da9520bfadd712836690d19a18c90063673884f72da2d32c237270e4ee354d387760b14c47174fc46ca4d7b0404040454fd020571947f0f1a4fb0da701ce539f306b49bf39b773223f063420f503708cb12f5aa1b74050a31241454a210c508ba920326ef443d055db1c116f33be07dea1a53078a66505434031aeed9620b2a459c04c788d14858c51917c95195245525d1a992ec544978aa243d554513a7785008b0240eb1048a1588f1842b69a4ac9c2001241495016c8145942d9cb0a1456aca0cf4f0a4882a8810838a0f86700424924069bad70b1e2f7aa88f635e34615949025b827480a116bc18c0270d4b29a594428edaf9313386fbff67f9c9a594928914644287891d7ab22ccb92a6242a2369850f0e296350772ea49452ea00dbc20977253a588c3112396aa77c71d389523a855311a34a8c8b182d9820002e9e9c428a2a4454a106153d5d7c0145cbb58513a008e3a8240100379d28a52b5455bc41470ccdc42d128b5896294448b85252d8d34c2bb2391140854b3e6451430a1ba8c00b290861085a0cb18f941910981184485d6425293c3660867cf0c285ac6015abaaaaaaaaaa2a244011895044321491588948882292a288c428c618cba8319a7690a2f46dd0144e5275c998625979ef87026459c1050b25e6a3e01417b8785555ce85cb1e954a31c67854374808556a8c47415d48f12eb4a8aedc608ca9c82d248410c2944fea27e5240594124a0da5acc81b02988a10002a52d24000165740970903461b62e2c5d98701d000892ca6a0829e2329557ce8b16a02505060841acfe16a59851a6733a464518e7c98792d7950987321643e8cf8969cf81ea4e5a876343843d4d692a40a5e47cdb039717b47353333330d0d84fcbc42729db8c7117372cc219cfccb3b2af626318c043a0d7aba1173e386c9849d62e47034b7836b63aaa08d03236a0331d152fb8bbe78bb491c5db639fead4feaba4d9f9c99f9794755f717ca1958eaa2eac668bbc2d668cbf5af7705c1a2fafb8c0d40edb9056101ddca510003db83b74ea6f2f7bfb0316c8d7f67bb755b84da3c9c9d04b972de73ce33aaef29d46ae31838a1467d5c73387c26c13ccbf8f9428a11d7a371b61e47d587748fb6d92b3c8081133b2d3441b7760bd4ccdca36bb62eceec9ea3b9a97b539d86e6e4fc5f8900a9dd4d5e8c7b3dbcaca5f1231a27c092a5be0d480d4190689727001965e40a35ae2e420441095722c08427242514be277c47163a00caf13f92539fbbbbac8e3dadcca4425f733d83f7deec2b2e3e99a0a01809dea3a795598c89ae243e7c0e936e7603f8579bcdd5d37cfc3dc3d2cbc67379cf545f672a95b64e487d5b074b0fb5cb06d2f3fb9797d2db80a5772995bef46feb4cb5b4176353a6a7be5721093bf5bd095efb6ff321b588571b4cff1e834185cf3afa01f8b77500782c86b7996c20c1bf485afc6b43c05f4a42aa963efba022a3fa5e05175cfe6131949e840301ea052f786d303db6621be91f74d9f7ac02f45dde4b5a47fa6b2329a1a4871fdf0b2f5fe20c06f86f8371f9f7d797341897c7be44b2f1302edbf518a9f497d609a90f7bc99576a57fd9484a68e9d1bf361be8bb6c36645f7a9cc6b4a775a44d88a9d2ed6d2ff0979e3317b26d4f5b11af2a3cfcd2d605607b00d88a78353d5461ebb89a1ea74d5ab7437da42ffd55d248da6baec4753554ccebc2d05dafb9ae8857d3d6e9704d0ccb7858ffb47e3090b6d75ce92f6cebe017f152e78f52ebdfdbba22bec408aeb79e683d8bc1aad89734eb6d689d906ae37dbb9bf5e55ffc5ffe7ad13a53ad00692bfd3684707371d16c3c49cb567879928b69eb2689bebc6c9da9c2cd82c1facc056bbb1ec76d68305415b3b4d26f567a9c0e2afa6b474037a868a85e5f22699d904a7a79ba75f445dbe66c6c1dad2412e9e10afff2b275b392dec6afa06da36c6cddacb0a32fdf45c381ab8d8a6d36945e60174a7f5d577df997ad1362aaa5df2769361ed33a21b5b4911e6ad8dbd05c1ec72ba675749b5a49ebae27c1915a7a4ceb36b3c056d243ad13422a823309941e7b1cbfbe7a4ccb7accda093155d2d6edd00931d5ec37dbba2396a5710bdd8f2a248ef1c411532affe2c0758c278ec8a2aa5019006da309ac42e78ee106b30fb3db6e184ba1ca0cf47d3737284b151576906bfbdaba8f77775d56a69b5bba325baa00344037280b96da9d5c9a6ed015a04dc1498799a4988b90a241093594283106cf097698082c050a244cc1769d72ae96a0318260d2022a4f8ebc884fd00d1a430bf884e6eb068d81836ad50d1aa30695083ff2b34342749f9f7717ee0eb9e009001f3beddef5b775276fa1b9759ce65e931b3a25fff28f1b4c75646e57ef82d2b88d0ef1fde573376ec3397283f1f164cee598945505b57794dcba9b2a3d9b8173e0afd61566bf08571aaa6b30bbf9880f5f07b8c170cdc9a771945c0185a121eae01f7f7376897c3d5a4b6e295b7267524a19a594514639675c52bdeaedbcf71e33f37befbdf79e10ae729276cbb2ace7be1bbb7bd68df12d555569bbd4bb8010c20b8bcb4dbe7ab9e76f1c8e0a8757c981cbb2079948f18329c27053ed8de11d370eb03a06b032ddffc28cbd2492737ab6ffe0097c11be075f8411e2f4e085abb97778fe8c786d874768de31d3fd227c31be081f7d3e9010c237257c6e87fa2607e19b5206f035ffcb909141bb493357c7abfdfc56dda0255c51992184f021644ef6d03ed0e51932e83aaa0cba3c33e79cb38fa0bb32cdcdaaca7113063f8166fa8cdd29abeece10721a3118e2085f35e5b745046517428710ba4377e80edddd1dba4377e8eed0dd1dba437777e8bbebebbeeeebeeeeebbeeeebeebeeeeeebbeeeeebbbb5950f8a033cfcaf7647c3d59050279892084f0bd546127d07554f7f0c338d05a7d5780baff318da36db0d776070eb3cead06f7da695efb730832c46db06fac47a6c3f558b55b8cf1ba1e7b6c93e1870e194cf55b6994a49d58c638974807ecb30d64d91604db7aacd13b4286ab87db5c3ddce6fabeb6755402b80554ae9e7ff5dd02ed98d35a6bbe65591690c7d178d55814376ea3a1a2bc09f81a5d25133d44777777cf9f9f9f9f9f9f9f9f3929fde79f9f1f28e53fcbbfb62e87dc1a7f59e5db3a94efe5987b777b2639073fbca4a9e86721d60688a3faa712221d1ad426aa0cc2cf12c19f9f98031eb00e15b55f0681757e7e24eb4829e59412abf2379bf3e7674eb93234242ab8e504ba3ed9d3ab67c12b6232aba0152f89659d6559c6599665d975cd2a5af29a589559240b9b36a0d7bcb06c77494d2291484c229148a4c6b0ee9d967669585f1946ca4add17b619b65a67a25d2a954a5c2a954aa5cd32dedd1ec5e6ca603f5c17bbbb7bb7b7bbbb7bf37b90e564e9527aac08a2eeee4e4fcf52a0409a4f6ca576b3fa4e11af0548549d776dc8caf8b30eefe08dc8ce2c1ad5bfe320aa137ddb007194034939efa8411d88dbb073d5843bb3195aeaef0b324ad27d83ee692043826cd1420484792e2c3cdecfe18b50c629abe618fdf112da4def17e3c318638c50c619e34f1bd06ed618638c1c23c71823c6cc3c6e331fa573ba4de74cdeba6719ac8df5fdccb33a48b59f91581dbd3a205b1bf36c47cc53aaa99569e6817796d406e2a81ad08e8f7894a0471ff0c0720d4180ac0eae0b85ac6ec72cde8f58547fffccc1caf4dc3a8ac33cdda342143cd405edf867c7c6bb7cf5fcd31ded1ffadd2c91be3b554e754d92aed1d16c682e1a07daa68546f157df58d4f802cbd3ad9bb3b4759492b6eef4d8d67134373841840ce1723032247bc050404297678c68b8ee6fa975cee3813eb73ae0890a07a0bcd70befe64c025c1f8410c2ff182187026e024ba1570e0b3ac5cccccccc7bf11ab5a530bab999d35903576651e9070febbb1b1d3711d801811b2c9e123a7bf6ecaaaaaa9b2a2e3083aea3a617816e7737673c628c31c63963c4f17ac0532092555555950f853f3a5627cb5a0e074d8e1bb82408ba3cd327e07961696eebeeee132573c22c780da27e010e03790c0b3970c49c4e10f6785ab8075f7c754739ffea7771752d95fd6285fcede34be39a00065cdfcf4d05ecccd6c4ebe228db49f371da7a0cc3300c5ba11e18f65686c3b13234cde590c1c78f4a0dba8e323ad11ba639dddd5d869601090ab35f18519b67fa3b1ade76699666696c623a078e39dffb1f8e025d9e41832ecfb014e8f20c5fd7755d3c745726fef28cfce519eb3a9d30ac391c34396e9a059c169ae3873f340f741df5de7b6f0b5d47f93b9db835cdb9bb45b8bec030fe3e700e13df5ce8caefbdf79e3f29fa974e13b62b80c743fb7b6d765d422dabf0a53633f39c1a57be969f93e057555555dbf009463a21d81ef127e21072d108373d70f6e606c2dfdd853751686e18bb719b394ba5daddb086dafe25a1fef1a5bcb9919223c411c3e013bd619adff5bdf73a7befd1d4c7cc81caff0347f587ae3da811e139b908041e6281866677970c2232ac40494192ac11e16abd6bd3daac9529e2c2aecb093d3cdd1756d36d1135ddc052b1b72426331ef09b6b78075bccf14ce5726ace06ebb1ef2c6bdbe61ef6d6d3744d4765d8f2d3842a395aa8c00f0e54168c2f838fbdfc0adb9690defacb331e565ba40dc3b66deedabac97d16d3574f20982848902041ba0648d7c41f2b433b7d63b494ab4441dfcfcfcece0e36c4c88d1ec8f31a9d906aaaf3af6e2b883efd9ac8a09359680e552b383ddfeb6a09da3fe7ca1eaeea8a39044782eeafb42a68593fc46d9234d116295ba4f090daf2a4f657c0470d6d438d74052d16ba06553b68cb4eb51ec6aa76b39bdde45373fc9d43b832ecd7cfad47733898968494eae1de647073d32766762bbcc793544f35e77f545b4bf5a2e6a024b13a580b8fc194a1295a0c59a932e43d4bd0216ec23fecc34aecf05341191aa2fc54c8a8ba0f35e76dc6eae01dac4c19ab033ee528368a95f1672a51ac8e86eca4398d819edcc049354a83bbbfabf4d06acc53d9498590f92b20b0107652fda11076b205a55d463f6666664f751a74fff16e37bcfab622b2fa36b374969dda6ca556694e4a73ad06edf6a80e49e91a7f22a2a222a3daed5195eae3f2d1353bc69cace5307b63231f5dc6be161e3b54dfd6c5873a35fed38ee8fe831f35e7a7bde6b8fa26648f6a6f938b281df2de169c7ebdddbddd0b21841b05da5fa5281f717e3d104926110c3aa748185019250d5af5e08c4b898511091488be22a9036aa30b218a041502fd180eab1b74064faf71b511534e91ce84387b201a94ffbd21287f57b5bf6b87c3ba19d7e60040dda0337aa8320a6710d5abc4630841e50a3272f61908ca40d41eb789c00cac003101860eb630c9e16f9faee1302a7f3f591dafb2bf08b86ac3a949e5ef7e54f8adb177075ffbf40cd1ae7b588d4e754d55a395de89526295ee894eba27027551086a815b6ac3a3da1f53cd41e82e0ad52ef2d42ea367054ca64043065372bad853c1a85df4893fb563932368e5880816d5ee873dfddbc19fdabf1d74c2c2113e484cb9c2451628723a0874a57610c22a437088216804d111114cf5732254bb7bddb3f28a9e918ddabd2d3ecf099fd7c4c9e371f27a88ae68285b8a2062881b38c109922a72ba9722aaddd399d2dd33a2f64ba95ea5b63b01e21da1a2227e23b6d47e4ff56fe73ab5b7739e1c5bb8e00a2184a868c114723aefa948a89dfb74fee34d5a4bed231f272dd4435d57a9dd3c3a321cf116a602d45bc566857eac8e2d3a3a35652b44f0841708b5c00933d0a0414e1fe15b05b45340bbeea11d1f19d18ecda01d1355fe0703dab10fff34a2d30c5af1807a139409ea3af40941f95f101d892a100dea6e6ee6666e66666ee6666e66e666666ee66666eeeef75ef7141a6bf735a0dd1605292a2a5ae8626aee713b71888b81406514fc8876b36e19390de50568658aa0fc1d0d877aedb4828d0d9b519bb3d41312e2739cc40263a09aba348a9595793188321b00058bda1fe40ccaef36f0445d188801759fa3ac4d10d6a2f6f310ea5614e41141596e94303e8f1db9473e01d45d04e712da9a9cd5cd8d93c9821766a2935656c6e3e458631886318661186659fc7b0343e8acd3cfe16b52fde34f3562659c150f519d7556c621eb44d9b111bcd39cff95a439afbaaaaa8aabaaaa2a2939b532156e3934270022269a53a87f0eb52b25d736d77dad84f24f99854c82f2fbeeae33e1ed4bc1eebabf2ba612dc4d292bb125970830a18ae61656e6412a82be56bb3dcac16d2ee09f04ad763bf432ac4ca7ea5302f57d0f02f58f4281e4179d8489a6d384ed053a67eec9e766831b16e2cdcdcd7238682010473aac0588fe812ecf9cc157684fecb166f6ddc4ae1833ecb2aa79831344c810a098845e22045d9e210a8332b391115d47c518635c822ecfc02865e470d04021a2e172e0f8770cc2999ca8f4ed9804b164342301004000d315000020100c87030291682c4de284fa14000d699240724c3e94874349100331888218c618428831c0184300200619c52c0d200ce8babd94ebb8a11ce8dcbaa7897176bf2ae32e5bde4f9639bcf29f58780478c5286aaaf17501d50b2e711cf6fa283f346ac99edda193ccecc8725398b94b894dc748e85d1b7c7e46e26799718cad830737ea921d0add15867ca15e2eafecb79a85e224821a1585f60ad2ffa889adb0e9cd108044fe4d69b94534774e23bcc72f94eb464f823fe89e111196ae6815182476cb99ecabe520a0a887ada396f9a18e268d3c67f43ab28ceab5c852a5d72e270ceb6b95ccb752ae4cc4d1a72f84db2b56d1057dd697f76f5186c102d811acad146e847305cca0a28816b41c6858a14c6bf41525981194bb8b55037864fb05566ceef29dd09508b7c02f5162b36c723714058ea70cc610613bedc25a0c11bcaef65e18e2481fc4aac62505f4dec1b699175c02a8bdbfb06a37b484eb488df472764b60110fe74be2ce562f83688780801d09021354f9632ce05dfecff8ef43e46a4bc588a44d8082a982a3fb943d22aa0221b76040d97bd62ee4a78fed4bb0802f2221ee27fe01d316526cc9d2801f1a9788c8d1f6309c1cebb6348edea169a8a1a28725de2f08c9e8b42eff52cd2798dfdb5eabe334d01bd5beb36810c0bfa294d2b1afdcbbdff3ca8b083355e04061dca650c0b5412f521ec098d3fbebbaf47c8fc5512b1648fa0046dfa0c1dc6200cd4719f5d4dbd9adc6293d50b7d30d5a704455235fbccf14b50ed4f96cec9e1021be8c6f18d02308d2ced5788824aa291edd13e4b1068858e26dc88917b34d3d9965b49d6d1ef3c0bb8517116afc1fc440163f54632e1fca7fd1b2632cd521fcb21db8f41c83a474205a198da0388cab2dc8305f47c7f4c16f64c44bc3f8076baa7183434fcb71c6cb0c8395806de1a9513a0f5e9b495ab86200f177941c54c9cccc92dd9ce4bb4e4b75c7ca173483d98d5a7dbaeda87c93d28880f0a34dfe8ac9b5f254c3888013166fcf945b870d7335ea1bb1d04bd13f71ca43bec90976f1449fd5e8d0676eb43f394bd7447cbc077ab293ebcce7425f7372d5a6028485500a599b38ca05283a9b869b79a07941b1465c0821770108d7e6db3f9406fae647e2b9700ddeba86594394448b1169a3b2684d64718950b8a8ab650ae6404519ce1235e5ac00d8955c27dc98899238a440676b6a0e72f6c8738be429a05058dd28a063e79626bcc4904783fdefad783803d336def39cb0cf75e6e1a3f4f54acb574504276ec1339eb090ae193723e1eb6790f3e0a2e9547373d048f834d071af34a49fd54896f3ad9072cc08014e2fa09cf72e176160f430f170c90fc0265d4641b800be50d96435291e2f0022b647d5a09d224084e83cf10ee8f82cf7df8a2c9171f45ee0241880e481830094f360aea40a66f116d827008467d9c8dc0b4722fd0d1d07ad9c893d6f6818da2aa4b749154db257dcf8b1d64802f21f54e5bbd0b65717a12b9f8812354edce18015f4eb9363613bfe9fa19f4fefcc623a1c5905c3b9cd5f0c4ed0a114896ecbd98fb1b8c190201c73532ea6e842d0b5e60e506e70190bf3221b112b81685bedf5de72949bb47ffb70008cb5584f6227e690b701d336e30bb90a7886b08b6680e55f2ecd1a43f582a71770ca6c6adf67d26486a9b3d979fbd4752fcc478ac945a05ce5864aa4e49e7214ba1eb542c3a41a2e77b16abba6d45d66c8d822da79ee99d253e6987f4cda2dbe63dacec0831bf93c0a4934504e4b5551ed5ba86ee2cb68c577b458756acdeaf00060770a738973834b49de6acbd7623250c113946efefc2079eb60f0e45cdb9e676d0d63a7cd90f17973954c35e51c1188dce4007336db423cf4f04b8cb7bcbafa1feb25e9cb05589eada91be9d56e16234425c5c6f41a4ca0d66c4df58938e35d7bada4c4dbb62a90fde4397d0df8d672847a806d7764f1e7440e6f4b35403b9c717ae8404828bc4181a3ad225e37f7ffeb43f3bea5febf155fa514fd41858741dca5bbc3876eee0c7d9f1cd052f812df764749ccf5073565cca44cac9979a9656c6ca06c760d71a1e35ea5a8bba15d329a365b5509a98b5864f4bbf7c788b99575d3a80045654ec084f26d849a8e72540013ec418df05f17054f56cd3a20210cc6a59aa1d9593b7d68937e3e762928156ba56abd538ddaaf0e9eec1f29f4a1913a31a5575a0b0bff91b7846cc70f5760f6af931c0f88b64f22a0cbd7aa7cd1e223042c999f540ae45ed3286bd17f176d2f30b68faf93066ae19bcb0fc2a7e2700a1b2103d0f018ad5277ea6c75634679e0e3a3e37e585007ae59bedfc46b25236c4d368814b3ee808f3e1351a08567b42c2fff9fc7b5fdb2f25ceb245c905032be171e78d313b0284cddae019c34fe995b6047e7d840224b1bf385f60b5e8b2399b525e6f21d5b1a78f5b94bd37c3677cc70d92a81b2c1743227e0c61be4ad94d5b7e5a049897b4a07a2b90902334f4e0ed9772a766c9c7e9c2c2f91256713ac25596cb36a555823873f02023bd14652c39e76d1e927604e735a126eb92c1b9fea7f70796a1793a142e248a230c89e02a2846d583f725b255789f09f731723f423c1af71f11dd00b6896cbba5454c0134b7ccdf26053d11d4db1153227f61172e67479d1f421b781acc0753dde643ff14982d0bf7a9d27133ccf66ea2a43e16466aa11c3110c21c2d7d182454950c7f60679b0b0aee505b983aee82a5406a80199ec135af629b99ca8f329a03c122e941a7e44f679f9885bf8ff3b17b2e25018ce5cac971c9bebd0cbbb5eae619448bdb60643be1e33ed9a579212d54ad2cfc167d27fadafb85a89281294cd85988da35b70b4ba8d909182f5bfe204d2a0734d9a4d9fb0077b3994e9fb295e111b8f515cab9bfd474ed848b0cd98c1412340ad96458d6af7ee3175a2eba00f03a4426607853ba23766e26f404b995306f82fc9315521534b6d988a1768193f5096f6f7573ee55f4a7e19a5dc0a7cbb045e214629531ea520b5dab4643a68b2a0d42a36849a608829cce2f19d41ee89f824d8e77bc19c909f589481469039441e4682712e87348861a09f3084477938ac9e017f29976ccc05db286c1f4ec5b72b8dd22d2daab68d70808d5ca26b9045fdfd763a9d39dc238e7f5275789e76313289758798c980145735a9af6490ee20e91b0bf5307229d1b92256df98c63c575bfc97cdcbf038af283abc8632645050112abd31e039dfb0ea2bfc9d47f6aba6b775da7e067ccb8a2d3a4d4393be4ae0e7f62df0436d7fbd73833920674f5bcefd5739978607028473a728f99f2df699edd06481b82d20b68a505a23942837f340f6ca4a00d34f3818d6d9862835d559d816658aee05380f976fea4df3ce02e8dc2e0043068962e93481128121fafdde29c25b4c92992f070b6919be6d36bcdb1cf54b2438f2cb519f731040333a7c1c3cef128816d448cb2f57ff4549820ed30cb783cbbd9ba74b633a255be758a50c44b17f928162d9626e55764db0fdfaab15da479676445837274d5cb0246824af32bfd3c7079d106fe2a3d6d2646d700d8ebd2a0022f46f4b22b6c10851e645332faeca4fb943a4cf33a4790b8aa766809c90ae9faaacf9ef404e240bdc043bea8e917804d0829c58ea2b262e004635c9d06ecd05cf0344ea5057641063a813877b9492b23de673f0046e82122e418834c39794731a13c79762cbf62758a2f8a217308f5f7d711a9e7d9e74ca12f87e62bd355936d554b47afe236920e61a3207e4fb719fed8e35dc0519bc00aeb6667ad17a8620b958cea758acd429fbc22aeae80fccbb1ccff76f57a96795d55d9c01770d3e4724100a9e6338c9d36268971e2751c75c2d96c696d7232821ab2bde58f35a660445d25f387638fbd7e2644e50b3d74d9e5cfbdddd69fe43a439a320c30956d7a8098f84e12ac186fdda0fe9e3c9c2c3efc2fb7482717cf0d33d5eb9625e504e0b94425a63057b6d81a2b9923eb39f2d4b3ace469b05aee2a72f4bff8e341c1de56489cca7c97803854fa623405bbab56ff14face732ca9164e011990e581cab6fbf3cbc70d0e7419213d7a12d46e25d71b86e828752e5299045fb25dac602754e32903dc9c19909ae2ecb987e38a81a40c17312f100889a5690f60b6adb7e075c774505cee59c0eb6aa9b4e7395997fca502b4b46a3af639148bf614f7d623255436298414ccc9b968b5946c2315cfc39c25c22829a010f09805e93b713cd0005dfb7d4ace506eeb5001b53f209abee136ea5c2b1df318c6579286c679461fda1e3fe95b351cc8c86fcff7bee619cf67f987d626f53cb21a8037cfdd27189d1d668a5c782b21f656b29eba05da532fe097ae48ec85491fdb98724b9d76e36b010f56c13493ff3f093c1c1e107bc0192cd65d89543642e2731454f35088d949ce1d03987a6edd6a8d5494d098b3f40708c877e26e95e4e092dc5757bd79ecc7a88074f43179f845a262a7af8054c76500cfab6147b70b09fc87b09f6eb2128cba97f06d837c95384cbabdaca46de5915bfb63db6704f6a176c0815fa1ebfadec7aaeb3b31bf47ecf788597b925b490219c7ae6347cf3e6e5f3ed743d335c710d1bccf11318f56c8f6b127fc23cc2ce7d985bc881603cec17c9ebfaffa75a0a9e29931451dab6813284263c5ef63196bc10905c0d40bd349888b091fb50f97f12be39e8823e6ff1a0eea2c9882d14a4acb379dbcd89f5b5926d2e4420895216a9322dbb2041bde59b436888a886db1543212209955c2d0336f44caa1b73efe5eb649228d1c4d1c1b9b820892aaba5f7d58e2caec7ca6df45a4ef7d69efd0ab0b3b444ca36727cda7cce3a988c503fafe4fc5c93a792766e9534cc0bd244373db395ac8049293bbd47835d79038b1816becb2209244cd376933c024a333870cd70178d1493f9df87e4ecaac388aea80ba2280777a8fdad0a5cc8aef8d15adc5023ffa721f063ebf0d5522f8b46f351e7d1a7d63a2e43bbff517eb4d45ff5f1ea30ac6f5d8b8ef4b92abe153dd31746adf81fbd7f3097b2afab503ee43a5bf18b1087691e546fd10256b2ee3b3b4597dd03e99e6efce0f1648d05179a0e9880351d407e741a6c96a233a72556a896fdace1d82b2fb6f23d9ce3fa75aa776270788bd165041dfbd90225822b405b57730d2d3172d3b345ea62bc12da4aa3ede63b7e902a916e469dc8e0625c756fbc3eebd481029fb2085aec7a0f0833e3846873d06dbc662d082e07095afb1eba71ed67e30dd1938f18795a22dbb1f57ce2fdfe009b3668360db41612544e7830a3b27e9c315c808c5d9085820d4191178f86141e2f958910e8d3e7325bb70162e49c4fcbba2f4fd304fc6d21036b3c8e6527246f4982df3ba91386cf9ba1c3fbc5a9ce898f73c23983a5efdeaa5cdd6239275e3de3d656732b0639a147b2d4dac9f76cee4adb614c17414459f5fa62207e2a0f9fa4f574d4f88abee9c31ba994c6907e939a80125204e110c6470501b53ed68089e08a00ed5fca7856fbc3924afe473a8ffd6d0079cb38711691d57bb98c43dc40f533ecaa60790c7120b2c784320314cfb96a11ad5011e376c86666d293ed0fd03da2996b8a2ec35b697a14e77c9087eb126c9163ebe91dc357087a27b9abcce6f4628506447ae382c18093a79756756d09dccba7bb5e75eb66d07cb2455018eb6f001ddaf256aa55cf6df42e2f5d714da3ed8b29802ef2630430199f7e22acbe1ae8f0ea5e33ac14f4f396a2dfa72080e23d81b5c723cef69c80e48fd397f4eb29f8109d0a40adf0e70f2ed327e23efa25bd13f5971676f8ca219cd3f0807334ea0024df0a0ed754499527a2fca317a116d70862834ebfbf5014f5840a6fa04c645c861aa58af6f109e04a3af681dd36db4bec56c9757352550ad9004bd45cfbff4b64c4779d96f321a1ae663bc6986fe238e0436ffcdbd7b4ba05e2f3bbdbdc169fa78cb0f3f6e14309b98908864827046d804ecbf37d340a8c5b16b88bdde6d59c2d90730580b441797cdef7c78003e016d0b7a6086481aec5da41b0e67e7bc6988574d42c435b16a5773915ee54185d848b3f59693cf21b0d86bab76cbf2b0752322455db343294b390727558d6b60e94cba1d85531564acb5d96cac4a07c480fa2b28086d5c6b7d6ed5c082920cdcf0242dd9edaef96f9c89f575d98fa0add6c026a45abc1392ec282be99c4bc7efe4858c0ac3455e61577315bdb768b3d0c6b954f01f8160e6497c88b2a48459130d06c744f7fc61e57b82b76cc4ede45d8e6751c40ebdce5e065af75e584e02fbb22402c2d1d270bb7a8b3857ac02a42e3ea530277252b280ab702474a46e90a81305ebcabc58ce28468e3d04355cc74920470740ea9771d411c93d72c39388fa1993f1e2744c03425c83600e81b0a91bcc67bd977e9e026c04495963446511db9996c3fb0575dcbdfab97279c21f06c617055cb3c9df438ae95b2b510b1a074526b6cc06b5cf4a79a3c4747d2974ac4fb310b9f63d7e83a82718e164df3f5df7f222d55253107ba2d7da317fe66cb9ecadb905cb347bb2f3882051b98f9c5a0458085caf8d21256e6c701c452de8ce387f5a1585226ce2cd8c39e16cde768644d6edea2d9f4c583d9a6cbbe74a85d734d7c747f1a37d1eb5b19caec9f6a1d4e9424cbce32bb7b98ad06dd84374314cb4ebabb9aa18a452da37edc8af21c886d88f8ac5fb3e90776ec2750ab8f889bd0bcc60b11d4c591c1e61d3364129116a6a1366bc7ec7c1cb0106a96af2079e13d01f841524fb555e20c2294636d6c3363aad996d5d3e57d1fc4bdbfdf9e20734848fec0ac1d67f1dbfe0cb78113f9c12f0dd3e6381cbc2e7eb3ac9879b319482cd4139008ec456950c57ce229fcbaa402687660835e3ba271c4e73709413606a826849c6b87b900733ad3e174113a686f9304ce3d4ab669c89a6728721cb70279a60dfaf8de648344c39dacd9a4749be0d0788a4243d2931faec8021a37cb9ff604b5ba456ebe9751121b592cf791199fb2a16a6853548c5e46a740071a0eba62bad628d48341642dd2bda87d619ba353e6884157418283785e7161aa37aca886514a1b92b872add128614cb171efd753be40ab4a922d54cc090cb006321208e1def2ce3bada92f196b107f3bd91b4a626d0733a7d75d42f3abebe3e0a6acca0247239c32d4cefd5993ce98782c1e2f159b2fb194a691743b9182668784fde7b69fe32368cc70fc29f96d133057a14383ed310bcc1b906aaee20a0a0ae9689fb92399be1030fb9e4c48e5da1efa9e3df954f4f7a4c6f5e98d0ffca1779c309b108c01832d08aeaf24ed1554b82bdb22f2184a27d42cd2c224983be6b127430b1c7faad062fffb56baa3bbc026380fa51092a3e3c14cf6ca95ecc35c69d8c9ec70ef7bfb570d16bfb53a41f0ab5ab3b86c3e180e942a141b2c021accf3a4829c0a69344b2c21c15a6cf8ff9baa254c6bb0b32b81ec37ec845d900872f3f7efaa1027676a7157a84afe36d833e04ca0facb2cfda95c96fc5e9a928681aa10dce62c3026a8b3d7b5b4d89941de22c8b0409832ed531aa8ccfa18566f66f86ec0d73c6d205033aef38295b402e9a1d8a820385f1990c7cf60140ad512ab47cd03b0e8df976f8edd2cc6c190d06ad6d4de98d589e77be5e884e10b404d008e65652e5351ddbc91afed7ecce62336a2ed4170340a53ce9449fed35adfc2d5917ca0df261f6e74c807812afd2423fad3f880ac1003de1fc4325c6803f9b85c7706c586249b864722ad97104d7312a193af05ed6ca6083bafab7daa4f1ea2777a9301ef1dea4339b13c5e431f66430cb5eaa46cc495e693e11a711d73c42e63a60f9a99617d2078577da9f6a0ccdbe3086f8586ec9acf86bdf523602904e7c1a3d381e4e165a3164f8ed716e49d0ceb20b7a05816a513f43e47beb24015bd0ac69a34e18f91a8543522f6dcfecae4cfdb3ff7aac1a05460b31c82ac84e0f1c8d26d74e439a2083107391822f1752eed672f7de2e65708f31348ba2993bb10ea345227ac4e8ee3711b4dec6e4a3560c9ea1aac4e0d29d9ad14cb7a9aa4873ab3476ce95b65e5233a0c6b35a26832c21b034643f851f51cc3ef4edb8652c6626dd9eec684c27185ab27ec8243b48b00686d42938bd2035e8ea85f24ec48193909f21a0fe664cdcc7fe4fd4daa15ac09c292e0a62acce057889ca12fa2f74e240ffb4c0eaebd3c56f7cd907c85310c47712239d486a3f4b454a513e34cc26bd246d8be09f092c2078126a8a89b52d6a61505e8baea26bc4efcdacce8c7197477045b6e39f104246412b06f98abc001b7c8ef9ca337afd7e7a239197d719cd004c27fd7adedc0663c98887694d37115d5bb5527c965a351735a93dadf6857bb10aa8dfa735989c40989ea73f71ac4e224c5b5d49f9f7da135a8a235eb1326fba2ea3c9b1473ca4d341dab162c5424be5745ea9cee5aa42580166abbdc5ba97e59363f304a79d7469afba5f518baeae5f1c1e869c02a8fcce0e29f4d91f59c81f12333f25f863344b69f3d7f35e7cb8da845cf5aae7ce794d9bc2327ae1c2668003afb4c2ed683dd23f283b7138100bc06adc0ec75281a4024ef30cef6a236c7ac6bf5df4637812921e9a539ac14d7a4c477a1cf2b5ee3320d05165eb4681a4e3f78d948dd34bb7f57837635c2b0479b7891b7f0d3e8ae52528293effaed865741247fe01fed6aae95488943b8d6f933505ecd4451edc86162e885b5ef8044a35ffef1814d50b263bb4a7d4440b415bfded74c4581645fd6c8fe44aabc770f24963c3a315257afe05a7c48807be5bc0d0cbd8855d733bd5746e843863ecf4966393d76418ef73004080d4c9479e9f779b01c84fa0190cda155906a85b793a83483e10ab25e956e2865f06b19c5a7d2c78c91b2df46efeb9984e45b1d30e6ffe3fadcde7406bc80ac7ac7f2e8765a2986ca898fb68963e29fbd28ca3814f379a093d2da2a47bb83ea26584bebbb7b76f3bb5d081e90688c83f3e00d2c6e0427faf95b060349b70cc40e18eac1ee019f289a1f4c3e7e28ba6091f8319550bb32f2b3410da74e467881dc6721dffa593d23e037bc093189a0b309933e896cfcdb9efc2d005718e2cf0669f7e7e7b6485d4cf02f3c31960ade8bc875832e08bc34824aba0731e56659312292eaa2b7bc0ece7afa6c6f80321a36f530d12e234c9feb77adf2b0a59b69d11d82c020db496704a2664931c20a583804e19a90bd13648d066cc07faf19af24fcd063f3f333e17a343e710ac3e7f09f576764e32468af836446bdecef43352f88aae6e2998d85a879cd31ef3a2a651000facd36664213deafe234cea431a0a10ab724c58da323a55f67f17ad1f850d8a4916027e4a4b183a270d054918520e96234e37bc3c8979b7e6096c56b9982fe0912542c17a378e7940bff67569bad3ff6074b11426634ed06ecc923a581ad05b10d42157dd3ca5bf589606e06ba14fcdb171c79cfcfb773a98835e1f849f67b457999ea4c752df1929efa339bf0d8e92a9e22436820730c4b9d65660a8fc613ca5136e3e43e6afddb00948440e2ab2242afcbb27d6c39921320423b3e11d20aac1b508571f876a9090cdcec402ceb8f5cabb797185b9dad7f3a4b7d5ac05b40564262aac6151114c05b44b522e96e763aacd381c3b2b90b230cd18ecfde8c626dd51bd747d0e8b19fa9a53e2a6323480beb5379e45256b961bf1c237600c481bb3c39c494e57bb82f8f203ef0dee23b1a3d549eb17be86ae04e404522081d10b5e89ec51f95ea525f6b4320649d1b84dcc9891b0bea51e403879bc45440502a67e95ea6a3e7299aa821d758e39f0f89b9862142142867562c8d1e6c27354a6e57b4c7cae27ebf88b5bf59d3bb563c255aedf6f2aefa628434a4727ffe4fff3f6c19dea2b51e8799e8b4d4f51e97dfd72b172fd67f1e82a231f3adbf7adbed60f29d6c7b4991debef2e01e3f5e09985d0c0af27e52d6464ab230b234982894b19ea9cc282e5131cdcbc66a4dc98dc1885d5911693c45743285d735ccd83e119a1075c558a4378bba2df4a3118a3ae89d3b252757c670cc3392af478b0b322202552f6eeb2e5de8439f3942ced297bba0af057761326a6e3ad01f1fafb8782629c30cbecd601b9b442ae930e9fba1cc0b49656760b359b872e3ddec2bf542c72dac9f6cd51b952aad30180f5353d341c28b675e7fb09af5e77f274517444f51058de0feb2aabbf2a7c4014ee595b684322fc26062f6e8ebc5b865a5101df4c565b26a9f64921f3a5617c0f4c38e07621ff2dd3ed46a6821709937601e93d0c805d9c91ce2e0f0a0088a67c251e311caf67cd5cda3fa5aedd7122775b112b3be61c5d87cc895f82659554f2d4694dc46a56ea7b2188e92ffaea5b08c528eb1b9afb32f8cd9b2ecb0333dc8b272f789ca1d5c4dec33bcd081c0366a40f2e2f2ed968a0c5a2aa002ae177f0c02dcdbefd599aa4e3daad9d3b6e359dea742f19ccd15c530cbe78d4bd783dfbd50953d713914197a0d09744c8652d4d8691ce0939c55f1aa4733688212ecdffe43c5adf57936e69575e2b0a8fb1f9d769f9dd1b17fc4a18bb58cc854422721dbf062b9199799c14d2ebce50bb8a9a8d3c4f310f390049adc2d2a4519b5425865c001f42aa7d8349c21d288f3aace24ca9f2032cab53c0dbddc9130b397d148d5d13a88c1ab973995a3f42acfeaa555afe871d025e92df48f35ad24fc60b9465c86ab43a032ee379766a48afb41b8748cc29683cc52b4dbffa038d4f98353da99ff6ca455593e8ac2868cf10c4b7dbc9f3c56d3395e43dddb52dff09dd4ab5613d9c6acda812ae7d38ffdd173faf3aa40ae3bd31c8d855dab484fe0f8eaaef5257f22ccfe2d973ad480d15773c038560a3f2f4e0d2b09d4d0d2ce8ebb50f024c09c6466f4575664f5000c658b1329b1af6ad238bcacd3a35c745d39258d8ea7b90cf3b3a741dbac98b7ad694c71b7e49365583497538d66e76e3fb25baa44c0d62026b0c5d9d273a3595970cd224912dd8f9e450184a75e54437bfab4334a0ad2b002f1f56bd7dcddf9f876e4bbaae4a4468a6d5f630c5a3e5d3ee81b491c0325a11d922c7e2efdac34cb81289239ef996662367ea31c694dd1d4c5afe787280bb289dd027cba6310590752ef45e82b47bb64af085764e7d8c88f4c299eefcd78447424968fd14d3c53a5e5cd12a436227dbc081a51ec985d2fe23605a8bf461c072c5e8b0e6f8c1d12b1e1ac8fa53c291afed8d02f729a6942e31eadbc3f9b42945a25b06c8f9f532628e22bdaf911a7ff59247fe1e8e9f215da1f1f942784146f2f8fca3245ca8d7089165b4616e9c425c59b4b2ee8e42f7e2c03db3ddde2f2350711091cf340d8a887d2e58414667a88ee20c9a657b65ec07e316508ca8af3c23ce3f2c9e13f453b1baa7b2a7eabcdc397f0b4da212de0c53280738c7ea44e4c20ae5222f5dd9ed835741a4dd820ae248b1c2fc596e77587433baafc8858fe7ab6cad0147ac45784e1dcbf6530285aab8bc4dc60919824c785d6223fca3d26c129f0be8c2923c0e41373081189deb46baabddae79a9da909b87639b1df118c8f47c0c8565f17ecbc001d4aa93489f3384714f288de85fd2902f0c8df2e9522b5b1a85eec67799e3a19352bfc49c50b3d101fe2d08694b4309fb1c1827e312eec42e5b14615c559ad0706c237f8fae3f37ff3064f40302f8cfb0ae3616f28fee105409bc11b6667a82a400024030ce406d01af2c9ba9510a5a7460881ae21210ae602753a3f4cb2aba2abe84145e390bb84ff088876e708fa8ba47e504a7050031527464af25e572aadbe4220ec07d91488420440c586dfe6c134a54134a323413108118a6159948d337fc1e3990617e66bb297f7f84efae6fa3f9b6fe85ed8b4e5d2bc59f74f5b43b068a12ae391f4a029a45d7881f073ddcf33fc84e3b2c0797c6a7ba6d3601066ded7252eefcf9854803eab3d0a922f59209cc2b94bd299f7efc199ffc89cc0a1f229c68017ecfec80ce0927c3fcbe1b97a2082da7715f34949cb4f8f63619e133bdbc3da5a5456674e823b4e7b5e0473b18eab98b7025e60581403f56fa085c7785f272dcdda4a8b73d620b7147135bcf6527539fb6cc06e231d636386e4cfb8ebf6cf59d68832b487ea08d740193085e07af8aaef900e265c25f676134d36ea3144ecd67c996e7c58ae3a99ecaad17bd598a5e406e22fdbbe924df5a79c086982ae18b682380130a3897fbd4ca995327b802e6d0e886d395090969e687ed8aa5d1e433225c18aba1f3d6973babc7750c4c07e0a5651328ad5dc3b926d0adc7d7c79d45c64451ef1e5092418f98b2088100ca4065105b22c7b53c2e194f6f549914728952d55d3862c03014c1308e7c89ed7f497fab255d8db2b588966fbbb92799786ce77506dea9f5e14c8f0162d30067420c7627094ad17d3db742506506e544a956ff5dac2c578e7fe6cc48c14d376009e3755b094ed00f4979f9cce6f6aacb448a3152c49f11f579fb80a344d5954e8a5baf410aee7bb2d0dffe190a6af6f10bb05138049316aaf32646240f94d0a6711573ac0cee005806e2eec9fdce0b456215b0d6070077ae4a01e27503c39e6416fa04fbd8133802da61db27b214fb1dbac8e002082a58c78f10a85d698141eca39ba1665ee9d4caf2edbcacb9fb7bbe129d539829c5c3a6f1243581235ba4b19576dde044652bb1ff817f3fee7d7b27a3a3b02cac77444cb39e5602d97879f034766ca50cca5fed5fb76c259daac43a1dfd4801cc9ca97b44b4ac19d4f61ca15bd298354b0c3a5f721f4aab915a6efc03177c3efce7670f171eb0b7054e273b935ee28253deb388b35c782f437278b3e21338c85c58b975c6bdec09ad5bf5364a6fa39e3a314a220158407cfea6602bdf23bd4ccd62735728e542bfe38ab706500ff0a9cff696157db35b3705527c1eb9c9d2216076e50a14c8e9d47ea75564e1c484a7c668eca90b6e541708a810df7fe273206cc4ab1b3df76cf1852110ceb8d1893732d5fe46ef0874720b838a077aee21a85f3df35e7339aa66374cd7e31ca19fd27a16a96455cca88194e0ca1ce3b2d530455b6d0abe120bdbfeab637612ed020f38d057ee3f1a763cd713c8ae80ec55bf16d587fc7cc12dcc8b2a6540e6c86c4acf2ad9bb162a7dfa31854c2e74c857e2052653255d5186b5a26cf1e492e3e1488359e0d0aa06017e800098e82d3744cd5af9f9253e0a5cf70a3777bf9f9ef160f1f54e50519a83a452a83454e961f718cea1d5f2a50d9ad25c00a1c58dd042e3b0fc49e647281b66c50d49514d9218f32825407a612563fa10dab27a7ea73aa915a0874d6b2c5ba50b7bec88e715abab942493144d250f57324cc7e0ce8d4f4386f0d55ff93d6ee6ebb176ab51db03fd933008b1407576ef07c8941eb3c96819b43314970b58e66bca82b33fca19395515cc9b401e502d53e69410960b27fa9e45d63ae1f35dcf86b0b2c994276401bb418b07419e024674614a0fb43f493648b3ee6675c559781d6f53bc84e7680c7a2de118b0caa46896a1d3706a2131191c418f6d3fbeeffdb5770ce5f9069c69d70478eab6ba01be56bc351a232d08510e31f87d4d4473f039db01e255f910738feb2a017dfffbca50e238f5f370051bd770665c53c0b05d6d29417a3096e0d711df5eab8799b128a9b6c8b8b21b783c7b4077b1de98937a1178cea8f2efed8861631581c72302141f8e2e20878a8f802a8bd57057434fae8c09fc41c6003db84b72280c3cdd82b6428ab2aa2eb2bc8b4ead04b789fd6e5e97d92c4f2e2da01a6f3cfc0a253fd8b99b356ee9927033ff40d2073ca6ed646149ab5bdd71323f6c3a6f222aa18fd45279cf576905f0ce42e456fb5cfda626820a4cc29c8651c46b902718bba77291229ca2564c01f68074dbf9b49cb782037906a48d0411bb332c0e0672312380c68e8658a0be816e31f92dbf743234cf1e252b84b3f7167844d5f2a1db394e60b86be127b7fd09b3489563e8658307fb0b7b35ec7d08d02efca284df3c49f37c45b45b4b575b9972dbfb21b95ee07a6d3f6a56fe95ef4824688bb7f9c47687ddd119d91d4a231debb006f7b6087f8eaf42db0ab201a8d9156b4db44a517773b4f01b3ee2dd4c646196377a7d892d9120614e3f4d479373e2490af408ca268135f899618cf87d37c7054413598346d3b40d2728e2fe778a3bffdde93511afca3b82b73ad48201aff3bcc4032ae0fb30fc3ff197923437047db0b2fea3c6c90e33497c11b2fef8e75b48bb35aac62f7d2f94de1d75e9b359fecb617181bd8033c4b75132e44b54f78c04d4fc2b27996b5ea731931cd46d275409eb4d19e1f2eca8e9b5d3820c8e174f5bd876b610631c595771623100d13c521f92fc66c8f4862a9dfec79c02d1e112d5945d0c0ff471cb665e2f238fd2a44efd131e9c48b5ecda56caf2621d2049e81df26898072bb64f0870cb4e5895e1862a2d8a8dbbea874af39e819e1146a1634eb4d5720880b573347ffb8d546b853fd5420b6d5dd6fb2e12881f45d9c8a3ce4d900b140ce658e32b2afa0e4e4cc2f74f7ee580748ee94ee29e415529ee9f603d5d1eea4fa73aa8ec00ae239946ae39da5cbc06266a9051bf52c601cb4d50344dd7c4988dd56f132793987bbd2c7cb34eadfa121e6293eb447e5474b06b76c28ef135dca2eaa89fc6faa226df6ace415b66b1bab014865d3768c964b9d52fc3d8749577c9d3b5f545fc77c910f2e43d457bb6e484c63e81c02e8b562c8828d13fffc6d2c772b0e328d171e3d553c3937d3213cdaf0d3dd2899cc7ce7470d2f944bd7528cd3f54752a295922e917ccbbb4f39566dbb92d0cbf07863c5b6e66715e2b0b48dbe8d831b4a51064da06f7297e2f15bb12fac28dc14a2ea19f19d3420ab01a690272f161be90da03e22e4bab30975c41c22ee334c88cb947ff9e1df91bac5a97206a456b004eca9d885876a9513339f68a77de66eb702cc3663059fb1ad1660461b53cf438ba84e2948ebe5a312b29efc27c45c4d31d143beea95abf3eb809618f8009f9c12253bca89acdbf194cb2fa7d0c2e688537a22a076b9376fcd566170727abf51a083dbfdb454d83b2af03e3462e455a7e5084d493e93657106e77be11e15ff1b9b50ad8c4c8c674408ac0ebe1b959f8b2b604a92e77e502ff7215438ae32b51816ab950b8c550fb04ec7f1090842dd2a560062dcaef3dd13c5a61f2dfb8ae74fe63e54eabb77efed36d535c35defbd26bab435e22f5cbe78f786153a8f167ce5d5874319ac48ab16c54ff2da3ef8e55114d4ca26c8df1c55da71aebccbf19f66aff723045e69467caa9e2d41d14206f095ba88b5001aef10747e673b53b8f74a8f5f4196f11992058b416288b8c5afa020c8dfed5f508f86f95b700d19e01c0d5b9afde5d8bc77c3767d17b86d6e8b5f013e424c5991680b82419c731db0dd3509c40c1a380428d3992d9d52cef93bad0d074bbc1c23d08495038fc7fe1ce2a577ef219726c38a8f08af8b79a646adab42f89f0bab143e351f837d8dae4431d0bbf14f06354178689e4be39dc0bc2b7784852df9fe8af267909a75ad8d23c69aebe76ccb9a1151abf3b86ca8194d98b9aa9c322b25023ffd14786db5ef3119016b846e6d6c89fb0959bbe361890d294710aad6f7e11d6413fc1d492d44714fc424e91fe5c88d29eb6d1b645055705cd5d137162474f4819462c82b44151050544e571df754fca905d659d6b50e08398be1086a143ae6234794c7fe504970d7ab46af001e494f85c741b49c18e9187f3ab768ae3949592bc2ad93681f91b4d612d7e2d56930e21776e93e202b85ce6261a2b7c7e059bdeeaa68dff26d3f03f796c7e97f94d66696b132a34fa10020b02cb45730151cd7b9de38917c796234ee4bbd0b244539838ee4ecd6bb2b5c9eb415e5e0cafd5fdba9d4babf0130087af4dbf65a833b922c23bce8696fa4021b420c5648d7f9bd7e9e2db906282e0128ce0377bbe88943265b9022a40e0ef65d4935bf0bb08871e72baaa946b806199060efa552e0549b2edef673ee58155ea59d6a13e4700ec8a3d058aae518afb9219eabab67aeaca070d64981f3043fa455c51e13fa49ac4f120b00332e4d245cd413b59d740eec9fc91e670a423ba173e9a4c524b27e1ef0d0cb9523fef9472eae43cf167ead16b67a1427805d9447f0615b65a2d03196595c0573c03ff31cf0ada9e3135eebde17f134a0df811d1a2bf26f260b44911b36be878eb78213e3fb5e42c4560699f14398e9a109553404e4156969a212163a2f5c747507bbe61afd528efc441fff0ab788a4586244368a23ffd1a363028da165ec96f3e4408a5065e48853a3449c078738f048459c7d510aec5cf2a3232e9fbc7a5d89b6ee0f613fb0af8f339046e8e9e919391ec20861915dbb33525ceb84a0a8b762a20ddb1e0f9c005050259aa91176b3bfb3567cf30317d333972f1e5b0cf71f3c867ee1612ddd9b8d8c08260127861edae3db55a353d81fcf1d328e7ac110f62cd8221695f292a056cf194f44ddd031309dd820a5ce669fd51b95787e81976e5de64009d4bf2cbd269debc15ab7f412acf2b1aab5752c8b14e97ff8ef12f60edcea5d20c283564ddc4ce75ef699978d14561676bf8492f1a1f2c4634ff0d5bbabb9cb7a01f6f838c6af5eb52ef9f6a7f12c69f5b664c836b0af47dd0a35bbeaf734f5c95fb9bf8e171de519a7442a260516b21039e01ec16ee2e73d1bb4064d99664b5fe0c2b71b80f07311300cebbca51c16d8ad633cc0ed16b85fc9536e551263973ee4ccaf9bfd2a6c9e57f4b727e995644c4d99f535178d842d0a87f21e63d0fe4693126917db34a0eb5f50aa72572cc439133d4e0f4aeb4b191ce0dbfc26ffaff692999e1094b5416ea3acbc7223f740d9c7fd45582e71a2d42ed9401dd092f07d0ecfd231f05fbe231e245d88f0a517600cd6fa26068d88bc60d40a2b405570923eeb1a217068a7baeabe9832974c690f840186880b99e1499b3e957269bb0277b54c65cc5aef4d10ae9c6c643cba23bec8fd6bcccf8baf68db13033c3c14473ba157b321bfbe4b7070394c0519c312db6053e08a97b86fc699e8bbca6d703c2b841d97d7a63df0b0d259b6883c03938847b516f097b1c2930e2fb4b632b7cc37d5561c25fb43e6e5631d31974dfa358d21275c23b9a478ed38476bbff48984226b967ed96e0773bc6a5eb6e968cdd2518a3883ca3898840a791a83e4894e9f7d141e3d6c1d6aed392eb28da672c996b3ed53e133cc221893402fad9c81f7317dffe6773e8db4793dc617d546d5c9fdf38127e54f4e54c2dc827dfc8fd1214ce277c19bd839c114da11764530bb17a5bf477d59dc2a27bbb4cce3d0305ee822866196498b9afd02f1e0dfef4cd0c7ffdb5d79cf5ccb88d97dca1e5614fe960a8e45222a56e3823f0b18d7e66dec21e0d9c1e2f9f3c3604f495f4789090b360c4994bfb37263d87277c166bc05676a4831520849d5466f0ebbf1df96992cdc8b5007cfc09ddeeea36fc18e2aac893ca3886f1d74d396a190418d2e769445445dad274c11e06c57ad58636e7ef7a6f9fa3a674dc3b6f26d7b9dae6760060c42cfeac5bef5cca6de945f96053f64908f8d30e27c83591a9585ed6f12b222d1bdb53832e1e7f28ba78df6585c4547b39f471381fc0fe0e3ba5304c5d81915aeb7f843c5295cf95c87453da137154af21903b62855f07a882e56c2429417b68d4675a748b2cb32880e6be33e3ddaadcc000069bf32f48a5a0301e0a41ec04dfced255c7bf9cfd48ad0a695a21de9c7c6696784b3a22e2f69672924f7b4a18990c2a2384520fb0bc09c0deb3d80e540e9f3e24d32f0913e546a44dcd4f98d5a3446d96869066553d4b4e36b64065e6cae8dc7641a3df3936187cd561ca0613fb131213f1f78c3cb580e17ffd21b2f0f54864834c5ea1e8a52268f288c2356d9d4d4571c6cb29e9af1776b29cf56fcda722e8ddeef4c63dc5f4efba281ba504b4ca22ca3eb6dd1d0cd8a35c1651797e48b6529f5cef44af106cf7a95818fb033ed4fa21d97b3630469aae2b29914c3a4eb23f6a42d67a4474d085a9f2a80b30c7b6960b37d3df2348a14b13b2df08566f3252dbf569d9a5c949d1ad9231cb9f4256b04fd12b00b1091d28051640e643fb9362ff85ae81e9bf3bca088d62bf9171bfed5f0c6d8c4e0a4894ae85db0bebedaacb47dbef132c3a7b993e71a660ee7b69182c39ad4286d131588c618b6a8ff61365bb0a3d26f93fa3180be7daac1c37e208a84fb825fc49ccdc707d3399bd2c386a27dd1de2a85e49bdb50a40868f0fe8284474b814eef824c829567cbd5f46b424964174ca1bc0df14829f2a8603cb85cb82ecb576de91be8af81ec469277deaa3c48ba2c5d1000a16c9ffb6d6a2e50a09b1828af6ca94b460f27ea961ebb1156c5e43d9c02751ec4769efb2ecaffc025855a9754cd4110b5959aae50893892a34c1e335cb04cf597e22bd867464e7a0238fc1ab6e04ace1ba4e07b01a0a1bf0c6544686892f73d6aaa3c201ce6a73de51edca51856df4332e6c2d9f3778c899f37e33398d360567b114a32391c0bb75e9391dfcc77af6ce31f645184ece15613f77da52ee2013966f4e6db30c31f71f4e8bb0f0d2c35476983edafb86739807b4847d5b9789ff282b612635b73f02804633a031666cebf6dcb472598f968de3eb4e5303ecc4aa54538254da52bc1d3f71f9c928ca9d4e551a46c2e0b87f46fda88ba196b5a656640bcddd79436792f8b78092125f0e7f1edd81e6975459d5a810c37722090fe8af2bb50402b20c6a6820dc450dcbef2c6ad06786f91c4a6f3c384272b4a3b6adde5da48f43e5e85b4986920aa428f2b0fa13908ca8aedc88615a1752366ef22390771088824cf8736139042eaa102cc4187e4d31f30e276fe733496b6824ecee7012f4a0b47ab5c5b5fce60fe1f8697d620c93e4ff0e4dd439f7367ecd77307a88428a12277e7cd012119fbdbe3a39b08ed115a58b2759a15f95962d3bd39a83dd0c9af101ee85a8ba71c9e0634686c808074321a1df2a5017417d54b88ca722e3f7f97f398949ea6526a747767a4af6af5d9bfd5f54952d9ec276abdd4e9396a743e7ccdc7d97c242ea7b5a1a8fd2d7a9d7082f5446be7261c5d8bd945d7d270c60cc75a1a90a2e7ad961613a873aecea068e407069942293dd0385ac47b2328520cafce102d03c6ee1c23e7aa29365831e5d6e2733d04bfecaab8bc6b8c9d374279e4ca256a27a9c9b05cc5bffaa8755b58eeec4e0193b55b036b173af1e78b41d43666181131191ff71d86e8358127b980121889f88905286d4b0892d6ec08fb386eef6e604f1f64dd7328df24539ed1371556531853525226479b72b3840f8837f06dda705f4d07378030295e7027cf7908edc7670ef1d17a18101cf37799183a9223b914278c1c8a39683a522f10cfdf496e52e4ad34d37185aef23b12dbe9ceae72fc03625b0a52bfc8545a753b80441cc7a177eef009dbd7d25778f92542a8e89d69bf0560c1b023ae060fd0eec13dd82a155f88199df56d6a6243c3e981fd351bcf48aa93243abcb4bf02bc4a84abe4a8e2a2de85609d33c036d3a0af015886137a4fe1768c9451a7bb4dc4e83bce4b9c36a42bedab43b73887eeb39686f55ce0d9a4b390c00fdd314e5224f8c3917e4cda2d57772b27b5390820828b4f9bc93e87f5bab85cc009d2f804a14695d9fec11b3a1a30d83ae0ab911154db950b4ec1feecb57e998bc583a3217074641b4c4690e932f9e4ec85a8f079b84aff0c8641d433ebb4045c10da12dd5f8adea7c7bba62196356a9b6ab0bb26d3ba758cee35df9cbab74e0241b5358405ee70ff0a043aa6cc6540dd6b2ce8ee66012a6a78d41ce3ae5063c72744bb2b4e383e6be9bb827b15da34c6ee7a0cee9f524307017d88a04a00ac02b5b453e930e23443219d982894892388f375f5a51bca2b1c783058ca25b11882e4666e8a00047ac8e42a25839724e80058925058f19992848a6f37270a7d8404faf3f4be45dfbbca785bdb265afd2985dcc7e18bf311f55a9b1ce6782587f7e52329177b955f1718c4a7e7cc9d5ab6905fdeee5ad18b379f62993404a642b202b9ec654e88d6a7630df7be0244e970ad23e9956387d2a9c5567433b645d6dfadb6b69e33038a57f987371b30896198f0b9b7e89b04e02807e0a89598b4f8fc275e142c518e86da3cfc873a78f1afb0f2f8006681e4a1a2b9d4558860b6856223bd460ab1e4881d48dfc0b4fc81db0e2fdf7ae51a622522aa9518270a9257c1a8f1e18a9e123856c1a55d2927413dedc014fea90d28045095ad50c290709632791cc91669563a498b050d8efa264de8e66fac3259dfa9a6aca847f9edfa9d43e42abbdbad41cc3635f4e939d0e75ace7930ea4188f699e0a52cea6e9e4b4c81aa14bc7b92ac6c4d2f8d71a43245ff42f998d4de0d8835021e418fd0e647644a6f2c737f77c61ccd47e7928e2ed5c4fb13316ba236f646e40cc3669eafa64d7e5276a5301ea48c157c4eb69b987d034e1c5c27866b257d46b1b0ba729bbf0e6907fa7ea2d6bafa1a15e374077bc6259b6bdd12546f74ac3fe87c3c561c787ee4646e887594b53ebaee30754361326061ffa71d19cbe4757b9d7fb49508555893e11136d85f78049759bdd29cb00c6fbd61e288b076335c15f8218a1c387ca00febb16b30fdd91cb8b798c2f0e9c5ea9944df3a80295a9940bf4ca19a2ad949e056d862a3b5bb1800f00168fca8007700371f748f9222c692267c13418cd574ceb581cda30a53aa32d18417a680a90f406141e2aa314b13a8408d21f7035278630aeafc63304f95fd00bbc5d6bd0afc6e754ae4c7c25a6d8f4e274068bd5b68310271fd8885592b57787441946b96d1912569835bca610e5de786f0a75dd3b0c083860cdb8f266537ac28b19f7b775440165d8ea4a91357608dec21f3eacb91086289c535191745d0c4860689151e31f193331c43837bb25a97835981117cac3d4c30316ed9fa6c6c86893e10ad06a3273817c4255b56e57155766067f9ee6ae3e580448eb85fb111040511c30e9f72367323b0fcee038d52c313a73c4360853ed57625591b7e674ccb093e5a0f87d06965e2d128383bfc51eb319480782c99a2e0b9b85ae2c31d80093a33d0120d1e889c5b9d69cc2e6f4c3e33530ba4c13b67e33598771d7083cf18a65d215c23eb9eaad4da771cbac9afc8da847753b4a324131ba5b352b0ac8c3ad4b1ae5cdda43187ab69714d79701770053221f5bc5ecff9f319008760fca387d636de18e72bb492dcb86a31c3a54bfd8541218aef2037d8509f7e0ca5d54f2482e5b5dc86c94ba71448608f47ee6c73398b28c41eea73ea22ea8b706fe438ac1897c70703a9448dbe8ae2a8229807b136b7a693ef78491899500aaaa8320159d8590fcbca7e74d8f170604128d9843580b51e1cef2a4359d275072dcd71ec38aaad4d247d807600608a5693b9e88b2a54c156d2356f29fefb0012412c572b9c76153b12dfec87f90fb29040ec71cccb67c57153f57f7f3d38211f65b81e485d2e28a4cbd09768613baed6637c95e52d95a50d2e29e3eef7dbee5b8ecf6164c4f80a82514a3a1c9f63efb3291207a20f7e8743078e56ce74ee72958d29ae0cd85b7b02dcdd37639ff871a63e8a9b3d96935943103eba994a32e780e719c75622b7a06c800060d04bb276ca9963ed893ebb71623d95b529a715b9c11e81b00f569c633f52e6cf04d9b09acd43394a136b5d7aba1852edfdab7bf0b334d6030af292935920562a4a7371f5875a17cbd28b7977f181f089547ab49f2eaea1cc59f5cee94989b8b2e84b9a7d380c3b69acd1300a311d809800ab7feb7f7a7e5d9c4d1f325ee8cd2a54766524d7fc1b8211bd21b4c4da6ec4daf6d2d226326f090a09ed0830bb63f706d2cccf088cb08f70eabdff5473ce95cd8ade94dd0a0709f6514a0836c238906662974a4a0886611b4833b115a4990e5f78f588a612776f086b04f2e8813caecbe7d03c681aa765d0b22c4239c12221cb8d264bf955f3a036b2f175e522026924a5f74a0f90469e87c5c3aa2e834fb00f1ebb0d693a256474ec23dc902625645b513a7fdc8b61d4c691bbbbfbb25a0ac7dd945dbe9ed603ab20cdfc9da77852f8046be3dd29dce8ead520cbe6ecc97dd5089b71a3eb32ed631806b187514a2b7658ccf46e3c546a3db0202ee6ee1af70d7b7dc5ee85fdc2de4ff59cfda2d45a0cc35b86298e4f75450ab51e98d6e3fa413f533874fec2353cd5942fa840f47568762920fdeb2fc32602d43df090562895b2e50f9047051e0af2b8a196da58d4cac6888e4d4f12a2a0840cda6ae2843cd2410ea26c6f300012e42c068e00b95b25a062043f6e8bac558211c8e46e39194246e56e8dc0278c8ec02c42184e044e8eb8d0b0dd12411a22c845a81921af87753d5e30ca85e7ef6624c73f47e7e5888380b9ef925b033280dc388a07624d840fb6d1c69ba1bbdb688335bba3ccb716011a58131f8b0b6a431e402ecb5f17881ff1478c2dc4f560d8354d7cec007681628c2ec6d8830f50119b9ca30333bd2af3b0b0d7d67ec0e3cd4d2540456cb20eccf1dd07907f9a0d3cf9b1a2105b7481bfa0067f61172888774108a924511cc4eb08858bdaaf2656e7eedc733f628f83413c878198d1c1cb2c8877fd421779a67b59307132e59473ce99a76a278fdd7b084784828598e2e8c4b0f28a291b0a55c41af97d060344d6b8d274481c42840806fa0a0a0343e08d993601acd31cc0e3ee4e96f6a91ea462374add11d935813c6ea850d9503636a81e0f0842605829235e61e808b67bc7bb628511eceb1dee4584c82ec22bc022a0a062a40ec60861846ea608b67bc77bf00a118a3802c286104208216c3a04e893855a9aa5e14324e155ae1fbe10ec860ac38c347ca814d5782c76d5c415b9347ca4501ea872ace1d304b5ea8e216e415be85dc15965c9ef30dcdc20460badde85596c4a887cbcccf15428d5cd2bfac20af61d4661f5a4abe4f788468d3f571a4eb0eedbfb59fdfcac56f1095d62457ecf56365cac200b16419a23eca652e5883f6ddc6c36364ba4e47705d8b49073f0aac8b09bcd7b9809b7a489855095dd0b724fe8d56c8fca9b32054b7e7f56bc9afe7935fda6783f6f8a756f1cdb1b72d2e4a91e0af381cd4350090aa5648afc3ea35a2940958a22a52042058750d2448ce11dfb62e6a93eca625d87b152030950fc5429396bde399d5ecdb9c441eb64d6892ec7c5865d3d95921ea8ea1c6d8d00123af5456d16a39eea45d78db778ad61379b5549ace4f71caaec347851d97b15b67b78a56a2171446e2ae46e91c049b6a1340917f93da36ee63ab029f8ce36a340b0577dc84e51a150496650ae071e42294f24796213896e48627363d35772564f563d69a58b12f5c078432f86f70a977026b0dba332f46a5c563d2a0f0c0885dd221111e4f1a4d06f36daa069deb5c8ef0b1bc3c88fca94d6119fc02aecb65ac1d04361f00383829058f99132c54f090a4528ecf6a4e4cdfdbca07bdd93e28082dcd618e2174514ade3fd49a96237181404836c130fca93d2e4a9a8b01bcd2f8342724945021465f72712eb9c730ec3df30f3542f86f7c786ddb0606f708fe5f036c415d52085ed2c1bd28cc0cabf1bde869278a55a8191df6140fd61c16e2d74823c661e0aaa61b795cdca9e7a82f2fb4e1af40d81104238af79cd6bce39779eaae7c5f04ead60379aa312fb6363121b843adf38363904ad3c9af78705bbb922b8022ba7c820d8126f900a243a2cca02afc02c90e865b19b2baa22c653bd214705f2908d3747448437772543a222f9f7c82128f4afa691f4e4f768510fa25e0ceff09e9e60b7a642020a04bbd9a1474675ac2b561c74ce41e762cb962dbbbbb1bb82e54a4f5156c3f9b81e12d8adb3ecbc1ad7e3aed026d8cd159d663d4c54c76a1cdb4b81a5bd46dedc93ed3da992dfdd11d46e549b62df5f4fdedc93947b3f09444cb141598d16114f1e96bc65252440f18d6353c107e0bc18e0e10c2cc40d4023e8d5b4983491755ee640ccd4d40034a03c5503d088025697bd26d6c89d1b70c6cfabe9160f8872e706a011c5ab8138c316d4787233bc1e196884dd5636dbc3303c15843cac4d0ef8432cd819115867030cb935083c4bf64e6e0697e185207cee892180e71e048275efac5ec042071f12babb9b76eceeeeeeeeeeeeeeee9e5fbc1f15e685a4e23acd91dd9faa620ede3c206276d8b7bed203e65c906c1e37eddc1bb0835f384a769abdca960e92369efca7baaad8573bd7eceea4bc9a79797717f46ae69d9b3df6947b0b2a1461b3aebfe5782af75c678fd6d8ee916e5a218092e7a79c17d634b3128e46f00211f3d6572836caaebb7511065a87fb5d0fbd9c069a470f8d8167a06be2106c00a58becca98403746c56e2d745383cb6ae48927d7d3bba9323d763755c69eaf8b962ee93ebbf54ef381d53b47f7693db0b77661f3f4d6f93a6f931dcdf1e6f853b93f4a76871b429412ecb527dc4f51cc3b89080b4f2ac2c6f7907fc7de8f399ee463e3e91d96b7f82b88ed9614a2c85aee961938c8adfd7021c8db8529ce89e201f71692213db12e04b9739d378acf593b42c42b5aa0a0c5027aa91f39513e80bd85b2adcef90015a1213f25404568c839efeda385a0541f1db51e7dd810be5695a732ca862e8c9e5c4bf00de163a601811942e878684f766938968345f00aa461412fa0eb47a2ad63ce0ee478382149125d442b5aca3f486cdac092897a7a7a7cb62e42833193e57bc391650e366290e5a33c95b76cac91e55159a092e58f44966d9491e5638c37d82822c3bf9a3fad872ba2d68bab8a11fc28cbcc84f1d206c85b837185125ca10919dea2d41822c35f8d1f647815165a90e15758a84286b7e922c333b0ac41841ed0074a414486104218e90188d22822bf5f164a9165c9c4b18417e11010420883d46012775091df61841026808d2567c4608826f0400450c8508a273284c78110c278002b24c9ef0ed6008540218b089cc0240a549660c1274841058410f3c256010938f27b191314c328158a60e6134da81229e552012a3a2134a9b82014f20aedb56008d234d5410605099423b6a8c218b5053d2df0b1a8215a3d55321b58b13238819dc9bdc51938e8c1196434a067a8d5a3040d2639e66ef5846005830246a39696dc9b8c4c6e8c798c1ccd7bd3ec34863dcdf41135b410911f7ab8b9e101422a30c4c84e365ac1a080fe5b08e7d510f9a1879b1b1e20a402438cec747c400d9007097776c38d50ffa902d164ba35611d1c0b925ebad3e2ad74aabd2fe97497c7bf8f3009b6fce59bcd0ff7a6834b784876f3b2939ed8ec9d497d4997cb557296cb5fae92b3e04f2e2ef808bc6db910de4d77497ad38bda38a490a7923833cb6846b35b0412657a5a94b16350f3e1f0b35b6f760c738235dde6df5ac8873bad77e2ce2ef748bc49b240a8b260286ba7aff5ca9cf663de1209a2e1d1e92f0d87c64f2756bc0dc98294ee6e83f27c63ef693bf0b83aca5afb3169aeaf51dbc1e52d2dd8bdedabfde5826d208d0432ed6fa0c540059e4a96487762b5564a293d86bd334c735bc16246b24c885ad455abec5c112359db84c888e8c8da726d1cccb40717b36de4b2cc652e7399cb32976557d6993ebb9bc511f26a469738d5948db2b7e6b2471f1f1047b32c73b53ecbb22ccbb22ccb7e03aba91eabd9ade186a792d434aa787bb99edea9300cbb9396b02e78090d2cd34d2d2d5772560ba5959aaabba6bb63bacbb00cd7f054f2f516b97211476fb8829527f26aae0bdfc6749b355da0504d6f1cb57ff2f5eb4728e7c8ddfa719287f2758c885e7b4b3d36346db93b2dd9edd55ea9fce97034d27acca9a176803fbdec749bf5b41e38a7d7574b99e9624eb0a7c7370ff02daf266d0793b6034f1765fa0b3a1634c95a562feaa9e63129d87a4db3c1568cda71f93149dbe174d349da0e3c2cd36b29731a0fa79bee341db41c4e16eb40d3e98b1601f89747984c6a3dc0bfbcc8967b7a6b38a7c36811803f7da4e9d02c79d2e1eec4b7fc2eb7592d40c43c4fba9a355dec15637ff83a868370f93a75f0912edcacd747add4ec0749c61ead408d076d071e56294bc68e938444721a0ee951e3a159a547ad07d24ba492f39169afef76917dd7b41d4a271d6a3bf0b0483efaa9b43f4cbaa557a9e124299d0822a5124ee94ed3c1b148775a0f251d9a5522d1ace14d07cff9a4b4b10a76ca458eaf626479077f655807beeb8deb2f5a2776b721525ef5bae48c3246d8456d9a5a8adadd5cd6a064793745ceaebdb5202f3e9af8c64b6860914e8a7f5a90eb0ed7bf20d9b5bb2b6775748fe1939e588a3723134e49b3c445608452d4b90224393bcd924b7756b23d8dd7d572e77257649d6bb92ef741d9374ca7a792a4430d0787dbedb85eca4e37ed18666fe992ae96d5d175ecba3ef3bca6f62292faa418993ebe5aeb63bd5d64eb6dc8341f23ac13af1e8d37221d2f257610bec73e2840c9165fdab329727ce422637f35d9b7d8f2556a9a4e761b6b1f3d0cab828d773df1d5c87828860a90bcfa9a65577256e35479af8b66c9f153bef1cec43e1bcfd1e85ec7b621d99caf13429ae1126a3cf4311f31b5e288fc807313d4973c4d7e5c7924b176b8c855a4b11e70c26f46326c0dc686d88b3ca84d003b533005ddc4c8f1cd458e8fbd8406163d3d129f2b390bc3388f9f46f27c5f57c6eb8aa75723235c59d144101341b99652f2f34776802646929258876625b9ae9df423a45a9a27e11dd2274ecd791f5e4ee734dd7421583c3eb8d817dc2612be259548df7e21583cacd22d9148a4d24917523aa9442295f0919bd38a54bafdb62a0de108b9bcf4232db73fe1232e2f7d6b7b778084d8974a2d2fdd07979f9ecac1be7421f6255bfaa9e4430b3e4204d2b8bfdc0717fc4389bee5f65b133969c124238e000939ddfe88cb5bfe828f9c6e5f5bee0ed0cb5b708ab5639f921888540e2eb7f7e1f497a77268b9bd90965bbc0324bf33df728985d8bfe01d7afbf9540e2eb8214d0b3e22c4bccb5b2ee4845d93df3c17dc33df82534f6ff61677d3753f489c5010a471b7174943f743bae99b0b6aa178fbd2373784bde536ab92ee11d293f0b0b4976e121e16497bb34af7c87cb34cb759a4df3c7bb59778e0614ded2e7144b1df99c4c4368e928240b346df69219607b07b60f4114ef5aff92bd55887665d9f3f32afe120b93e8d6cd72d221a5a7d67074808fdc43bf314ef34952a34311ebe633bcb239f7602d94a81931c9ff31e530025d347fad12716841ebb3eba393a2fab61b7abd21be7dd5c1c61f87944248f74f2e83dbf19c930cf6f3bf3db9c2f6224c76b5e391e3e6dbee96ded3d66973665a0d9d382bcc72ce1b3c21330961023d3d82387705d178592afeb59541a733ac7840adc9c4460a2098a091f694fa8160a926499bb850257026c8c069ca0278b8fd63a81121a4646158746105641682d01a5658228b0a130200f626b091d40ec07ad257090afdcad25a6c0c2c0818551040c0817117d3daf46c6221f794516492c555828a083f20aa481bfa4fc737f34718d57e32e2288057c313e085f7708c4a8348b757f3e029f04e22534b0dedfa3f8d0c07ab8218d10cf09805ef352c262b95b4ec230c35eb95b4e74d07282451436b410d28113ac805183298ca1846c0c29b4504bc318a3ca1ce308d24acbc9152d272fc8a6dc2d272758e2bd7e31e296db9028a50d42ad94c65cdf7bef4908a183316fef35853410d217df37e79cc3742ab1579446d457e85e8deb07bb1be67e2a07b9a8aaa32cf6020b9b07dd3d45155204c5208a1748a1020a28a72b54daddddef176bde83f4a966807f0fbebf7765703b1a02a11b8c2953605c587718455f061fb48e7e131d50e9828b2d7c628433cce766841142ec84e6fce93f25de12d6f5a075f4b1703bfa376fce30fba9648cd859e17634a5289473304e749d7862733ead074629dd4e191e4b828b9c80dcad24887212532411c5a5d9e045eb891e1624c30876f4d67c181d56b1da0f5a6fb326092c3631c6b261fa989f1f92e7afbbc9438955c77111d9b7107d7309a5930756cbdd4ac288eb6a2591245fd7755d585584cd72b790b842a602aa3e01cb0b4c9c4821638d1b4461e30c2570a084161813492c29410daef8828d355c91126458259a90baaeebba2e47a91c63a5836c8c25c8151256b25c9172b7901823bbe46e21d1cadb575cd4a22a3da55d0fd1a5c6a58675d48cda38e0bb210ff94961147b9bd5ea869b28b6071c48f31c0b8b62dddd7369385700257e30175c945217541d55e2052e28400b89289068c2c7d43a3adad6d1a75650d45b31c2d514985045d00ccea04151194e0a338862c40b40de4e4db8680205e5dcc80a529c5cb18449142b9c193388426d352922959f099a50e28a097ab668c2147926f7164c189aafafe7d2c6a64b41a0592848337fe19eebd82906da807c7c53bce358f43caccde699927739f5235e1ee7c2299cebd8af3bd6abb148dbbccecbb9712132bc1bcc1283d723169c256fd36141b6576406de62519ecfbea2b931260c4acc7d7b984825848781fa626b2d1270800cf36d95dd74bf71e3124b813c1af2a09acb6186313cfaf5898a790a6f36f519bca166de420b77c185cbe06dc70fe866807718fb0dcc18dc643ebfc5a27cd9007fe3252d4896a5bc5cee02de7694de02de54da67f0f614de50311885618c0c46c993306cbae6e45de44bf29a7c95a71bcac19bae675a8f4bfe4008218410dec0d10c2cf2bf8130d7f4974bfae95ea3bbdcd2d5ae93f2e22db6a96ab61d399e5a8657d3f2a6f936f16e87cadab40ddc5619c33096236334c3cd305bf0b6a2f0ad329478cabb559ef2d7dd331c5c76cc5d1e4bd15f9f52204ddcb143a5fa5128295222f639040618644849d86b37ddd66cc89e6371fda505c972e6c8a019ba549c8b3064ec254cba1ade629e19f66a869ba1288f6ecb29a594f2178e66b81d93a6dc0b594491b33c2f9425c790bb258515598a236660254bd144aed9bd9e34931bf268e92b469fe8137da24f8c3eb63289a5aa69166f714463fde831fa449fe8139b88f18ad167734e624e8cae0993fa0dbb3e2bd679f9c23a6fc3b0ce9bda658c118751fcc49b8b31fab819628c713335d126764cdc0e1a4dd8d2196d36231326b5ca99638c4ca2cfbb2dd76e56ba58c43dd43bb7e93ceae808e7c4d7d3df53c66e67c78454a3cecb89f255ec98c4e898b819e848c3b291ac8e0913264d628c3146268e87f46cab763b15f420c86794c40d054625588d4ab06ac9a0a815832b8c94982e8d3c5b413d748484755110015911e34875433fd89c7997b7f641dee6fb9d5d763dec7b5f465125bf6727d9439927d7d67ef450deba0779cec681348d811f6e0f6db3a4725be528d9b789e163d0d63ec8fdec128134fdd111b67bc4eabb294da5abfb715230e989eda18c4347d8b5f3c532ea68043836d8c393abcb503676b5a99ebc299006be9fc8bffb2366251008cc2ebf0b73cc258206d69117e8500c1599439ffb99fb60570469e0672895b116c298b116d34777339247a76fef498e0dade560e7c92e55de9907f3fa6e4e7cf60b8410173e73210378cc3b06ef00cd3cf5016017765278e79bfb2867a4bf9cf4ce30a4c39c7498d40fd2b3939ef5f8f6aa388c7a6b3d6efce6a1ee76fae68a6e8e7c67bc0901849098b770212e3c06080821a9c7dc851670e323317827e6a919dca3bf1b9353848636dac8424efd7879fdcbeb3bd7ce41768eb9cd72376e11971d4efda887793d4ccbed5f6e1167fad47aa47ed467afcf701030e79c54596a3d4a7f69401e44453f5c89c13b4042623ef319bc13030f806f4d84e35b176dae8725803fe6cedc5d1f623e8377fe98cbdc1d1e96cc9d96ca61e631f76106df07f793c26f96cc37f773c405919c34a471d809419a3fe64240627678132288cc0f6f970fbf8bcce561f5463a86b5b7581c04cc9b2ae7bcbb97ee8f99b50be0ba2187e33a2248030f80eb7eb191bc6d6ecb715807eac0a2274f94dca70e630e650eff7c208f160e5d383ce96e2ddc9d16aee45e07667799bb237325f74aee67ee8db93e31ff65ae4fcc67dec2f589b9ccb59be3c2f58979431a176eb33e731bd2e840998b632e50c44568c80ee7d0b7503efc239255f050258206d6cc5b78e37a99bbf091cf0c3ef2c29b15f33f8b4a88a081f5c267a228caafe6caabe95614606488e559e9c38e01951810e52ab3431e475c78cfbcdf9d7a770b6fe12ee0b63378f51b48033ff316305d396948138371a0cc8f0821f314ee9179cc633e03351b60111a32c54a5e780bcf2a06e2e577252f5ce61bf6ed55c14a5e780cd681f9e12066a638ca0bd8032e5c5a78176e1033cbe086319852075b8b9c79f98873a2a4642e2f659ecccc0c46419a9e5ce36da19cba1e485d0fc8c8600a697ab20cb690c6c5dc188cbaaf279778605e8c19d5e1202b38ad87dd50598aead5740b0643f93d47f78da3221c74918a7ca2e66eb9e0899cf0739e2757a9e1e0dac80e676ec77bd44644d8e766a85746653622c246979f6c19e89f6a9bbfa406040201419e3f62ce998741bc4c5fb1cc693f6094b808cc34fe9a875606f5b978896b62f72bf59f7bef56a3350003a11c637c78e3c9d7c9dc7771835103227fbce7406c256c193ab68e8744cb053e2d2924180d2182d7464b0a120c6b43e6094918f564210b45c021257b945e4d6473ce399d5024de9b73ce498750876ab7a02842ab0556302a187121f1aeebbaae284862141f978517a527ba2c171620c592af16146740cc8c56942da24c610597c3dc6d27c3bc9a5ea3adf3e64193c683f6a8e1b0995e4d1706e675da1c976b3cf40e97a6bdd892c41b4f7679bf04f3b2f55d828a72fc0da21cdf7245da22f378e311d38cf418d4236dd1feaaddf8032688e9dae52ddd1a4b30d3ee16b3e6ecadcbdded5bc3a15aed2e17e66ef501a4bbdc69979f2e302fb99b86b2e91914a11c7fe3f5ca4c57bbbc11c8e9da4d577badafda353dde9797aecbabdbe1c1fce6c1607ba9e1e082fba95ef0b693e3611e351c4a78dbc9a6c3e0bbd55fdaa77683cba49bee66fa099392b026acf3b2f61884740de790ee8273b29b5eafcecba612d6799964ca646e5cde14836ab98137975bde626a29994c95a4bd74530ba964ba564d91520d8b828def5a9df66334facbdd76f24b35c593cb4dafd1870d3078e3c930a6975e9ad1708838e6d25d7e0325d0acd4cb616e76bac6434f7bbabdd3703861171c759e0b49bbb41f23a90171af979a8bcbc6019eec7298e7e8bc0cf3edf4bee9a5db4f6572f9cbcbda6b6ba005e527d74b17bcbdec72fbd2dda8919cbae9fd78147156e9a9db8fe6c574b7d3b1db5b04e64ff3e1320c0ec265ed2eb7f3cb3d5da8e11c295f2dde78b2bd76b79dacd95708a3d3ec6f9eccd15e4d6f8118b974f97a65daad1fddce4ede470d0793e9a5cfdc54a599fdcdd3eecb756a3bcc3cf5a9edc0c34a9d8799a752332ebf79d005471c4cb6f47e09f75369d7e5518647bd935b07f5504dfcbd77c67b2f6612b87315c207a9b6c3757a0a2f4c7d449cc5135ce4f787d512e5d9b24d27cfb77419868d6ee88ce128b51ed7fbbc87b04b2df4783007913898046c0a2d27aeac302c903a688467040c8b834670424a56e56e39d1a3e14f71a24ac6aebda7edd072824a967f25bc19c9a5bfbbb936994c0fadfd78cfe1a24ff13611f6d1e7bc8b220b582f9a9072b7bc084176b78da93ccd0677ea96173f27544bee961741ff41ab0ba2185d15b59fcd1221b8c009134041052b904469e9820c31baf0c94113345a7c72400589299414394144174f4a677491451736c8418f2aab7ac88feff00e515d623185a2229e25965003308840224a107c108221920aa20802174a7091a40d27cc1d2001051624f98204504019a20a568520d023b45a4c68118d9ad0833288b4f8a1857eb86285b6a8620b2cc4684dd9620b27bc9e16157a8492945c5360042318418b2c426b10a1c3d8020914424beed616466cb1448c2154a9f21b29a1a02caa1883c8184b80f2c4145660016a4348a824865010f2ccdd12f281194100021056ab1518ab110f466160b106290b26340b24b0910eb278412ee56e65c1c4154eac68e207575c0125ee000b21642c770b0b34ae53c8e33d7e4355f8ae5dfabb3b4042b25aeb312c847488779cf6b0b546c48f307cadfd6e1ce6e537fef21d2021a7bf3be7e2dd312c0485c23878074808cc1dde81f90d0c83776ef00bded939e1fad2255dbb19de014ae5307abd90d12bde01c2be937d740cbb26ee0e67153fbc5371937787771edee9d9011292dde19d1f20cdf5ec3bb76f966b22d6d5f2668d9a45afcbdd011252df82771cabbe74d3b5f70890900cbb9f23d9494e4a41413f538ef011f9ac071650b010ca299c7908346b3e028e25715c38c709c177b9e00b1c38bef86235fa22ea40ca467426c954e48d1547e4eb54c2bb377cdfe4e600acb5c65c78d48577b9f1be14215f57ea3d6460e8163fb2180ed6c8d7210eb0e4ec51e6f1de38bca520d879aa66c3f59763f7e52d37277bcbedddb2dbbbb8fc745332ef8c3a359dde94cc63deb9bede1490eca9674fe1940cf6c1934f4f0189b9e93137dd142f86baa7dfb81be9d8616e4ecb3b5798c18bfd056fd9b1d375c1389e4a7ee6d21cec266cef867d7e746d9e4abe747348b89f2abb76379e9cc9bb971a9dc6cb0197e1eb288eeaa14e510662749d992b518eb8c68fb077ebc03407f0649103fbd470a0bfe26fa00f4a71fc9307e2dd787489ea669c90420821a697f12ec618a38487b7080d52899eb128cb9ffe6c21bbadf236048658d4a44913d9243b21f9b41e6d24cbd9444a199bc4c8a4896c225dccc2143f3440f2de85cf31d218a310596e3c0f7ee2be104b7ecf0cb7e37dfecd1bac6183a25c9f7be63623efc622f8fe6a1ea641c5eac9e5ed9e462ab098cc48ca0c037cce7a0c7887f591277bcd3004de35cc93b1bbd18c6577c32eaf539e3cba5d253b266e87fc0d9cf152a0a9a5da2dc3157f2d3dca4dd750303a6996e9cb9301a3a3ecab79811dcdc06ecfcedd2bdb5aa0728f87f0ef27d48f756fecc2143aac469050cd6ebcc2dee09c73ced5c0024bc4861b1fd9a14dce6e36343454c30d948ef0662d0af55f7853a95646a2fb1b62935ba07c8184cd4eeb781fc1c09e9eeab92bec8642bdf75043b83ea97bbb476f3f1a97b3846635b046762ebcc1eb3c611d911be8b23cefe9a9de89e8188911f554a31ad8edd911b56c40946169ce5ff3970e57c3fcd132905a0677e55c35f166467eb69c5e31b27c0a08dde64f506bf9bc1bfd364fbadead23c6bf6cf4334b9653ac5cd9d47ab49c5efb99d2e75db78eed3a0c2283d4535cb50c870f9e6cfaccab89dae34db5dcc5067afacb1d9d5e7fc2a996a780b85cbbcb351c221ccba7fb001b3d3ccc4d6fb93e78b209c35c9a53c2f5a49ba35d9ba772785698652d83cb6e3e6b1938e0b2bc8b94b67c11d746a61f1d6244b0eb3a33634060d799417e18d163578e0b6f53bbe12677e7d846f331ebd6b191b2733d7e64211ccfe9d1211e23062b84d6e5ec57a531eac4fcfe168a3454f7c028459ee72b83d09620c4db75f952e9d8e161e9f6ad956c2cc5588a59ae99f4717dbef84a0e2ec1064324db3832e93339be98e3e749979484253d3b0ead47e9ad914a928423a975b867344b1ff4173cc521e1ddc391e19f066466ca194a20396806a5945ef4ba28a59fa3faf9ebce49e594730e5961ab8cd167b748b72125ad121bc50de0c839d7b19bc53c82c2f653e1ec530914ca09946d5561255fb95b5518c194bb550518ad2a1e11555891375486d0612143584514194208e77b725485dd50190990bb92b380dee11f577107db2d2ad6c8dda202494640ee560d7e907fa800c5411d7481eda7729fd765e8aef854977b720536be311d5161a5c511f26ae20c2ecb033194835e1834b6744a698ebc82e17aa67d93153ba170a4a4582a410873d49add6bcaac5dd73aea9d97b98ed5b746eb3cf6804c9cafecc25cb3fb72bd59769d1434cb6ee78acd8b7aaaf8110dec14769bc9f0f1a34b4ac2d2ea2e7ad10729ac0ef589832a338a62b53794189511142745c3eeaed3f5d67abc795a29a593e27af34677cbf2f5ec36369d738e5e1375fa356f111aa60f9a270eb79233283bbaeeba313b1d34477678ab9f777311864cfba94632bbf34ec301fedadc472e1bfd0676dbd8c0f637f7c43da1f4090c146399cb99b3cffe6e4778e28d3ed221a83cef7472648724bfef3cd59f8a3e2b6c431a6d4ab545e29d8b1808208ab832b2bc8f2e23cbff18e164c9238b64f14386670539de751959ba4c0bfb72b76a0046766f07f0e4907d78b71ff1ef20116f3b291ffd7cf362ab3ac2271c95a79409932bfa44264de8c5f15414d2c438a33aa1c0baaf56b68bd08e499334c4c8cfdd0a7a32032ef22a776b0649e41a58910b90bb3545509617f60bdb628610c218f136935f9c776ebeb1b48b3d1cbda87bb230cfb48e87c384c5807bcf5d515d898fa6df5d655be5185d7471d5556ae3e86dab78c391ebf61cafa65463bab4f6d56897976fc1db472db02f18cc65f61697cb2ba08657d372f91b60eecc53c9bfdcff6cf4d5dcc074e6d5c08c52603bbfdccea7db72b39b6e767bb3936e46ef560f71e40c6fd53e69c38589201ba3ee6757bb89f2a86e6095379c9c337ace753a1abdf4ad02d97d1ba26352d9db77f4025bbab666b592fe5e228d7ea172ad783423a3f662cbc617d8776ca4f39cbbe2958182a821362d50be4862884d131042a823dfa809f86adc7b7df7498c77ed9c14277fb258941d6d21b70d406e1db963c8bd80dccf9e5a06d35ffa7d3e2635d3820b32b0d60cc3304ce7653767d437302c43dd6137704ef6d10d075f0e6fbc1465b735d1d642d83a0cd85a2420432910e26d080cd80621cee066b39c3c3b42c8b91dc932ae9103a1c0a8f44df5843d2d19a211010000005314002028140a874442a1603022d204c50f14800c92a2487a4a1708b3204731082163082186184200004000c8c850cd6c00b8b5174846db2d075ca15f8c848ec2bbbc36d666e6f881afc9d6b0053784b006f38bee61b4216da0296d25d7a44f4d62240a70b0af433f5aec13cf7668fed94b4adc2088af2f7cbaeb5863d816c24660652ea2b8a89b793f7c16770ec1e118c82945eeddfb1aa4e638de7c63d3e69ea977e39bf80e04a84a102a21ae2600a5e6220ddfd909ba392777167e701b46424a7aed5481473a56eb3824ab3f9f2fe0707c1af7960183071424ae874611f2a548dc062da923380bf916fc2cba36b592bf9a5f98e2a5cfb48bcf42bad72e63e01d204669f71264314b52751c8133ebd0aef80e991a3bb298e3a9a1d2e2a7da180ff2ab9c8724dc92614e17ac4c8989caf5fa5c2192deba44148149a12063141642ce76a11a131f29a385cc8dd21da163570487e85f1132eca88abece7be2d768510cc53d2766ebd687006d9414b6eff0d6ac00ade655a463d502f44f992c5aa48fdf3370ee60808e12cc400b1a7a00b38b486c6ed20fc4b97b2ab30f0b2443ffd86b4179aef5bb0159576549a9ee57612d2071623cc120f06d8e4c9b74852de0e235d960f1e6665dfeaaf38277c33f4d3841c496df8746e6bc22087e641730dc8890602c9cbc0dc74b11e461cb628c815e07db13efb4b45f4ed10a085c0d01817e7d204fa8d2f82783a546e359f7daa04fe9ad48f6132239285662cac98a90fa123f9ab24b68fbccc0b9851a42cf6c4b5a5442a6e3970a011e903255f843d4aacc193da19386a1f0e65eb4dd37be25d7586557ad591a1192124496d94057e6a760ac16207a7262ba118fe5267a813bd983a47b534ca4ab2b8dab7f3a3960447fae0d8d5b52d8085dfff4e4b4f4f30713bf289166e5997e610afdb99c52970bb7ded44511395ba6beea35441bb73be438f461b7c02bc6f5a27482d4fecc0f02451b2ab8523287cbd061cc16c742df3ed34f1b9c84a937a15cc3e1d7bd46157958648370a38ca08a5f2bc41545de21e17002f2f71aefb80bfb7f1857717c488447e778460474ae4b79211f9c8b63a8a24c1e65e5387a5647b1251bc89baac0a9fb83f11c49c694cb2cc9785bbaf093d93612739d3b472f990051d7ec324854a4da08b128afa40a091b5479d6f25ac8032521f33ed574925430754034d59eaaa1d3a0311012acb9839c9f679752d1232d05229cfc54d610deb3bbf1ed53dc81ec779a5096d953dde3b24772ef5ed319eb8ca92a3af29c54095233ea889c86a92fc43296d1ad0d1808ec9aac203acaf977d34872cba6b0d11224198207f013ec12eacde0078b2d348c8dde7558fc58a6c0547e7fdf547c79a7a22d1473d82d46ae8d60fbd3239e2a32154b669aeb23dcb0b85aab7479538062852ef45b6da14aac7df60ebfce1dec9dc2378afca1eb7a4fa22ddbd0bdbeb687cecd1cc45a8a89544f213762639f9b8b37088fe2bba010a83740291cf47a33136387a5af2326fac650fe71ecfc3a9fb2ea7a5ea9696c015a5c1c8d89b38eac77f0299fdf4964fbfa46149e1872faa024cdce418b905a7a814929ee4439258243ee4013b52adb30c2d18446c88ab1140fc88f1fc24f3aa0a4cfe382592f269cbab0d4172042a0c1da6d2bb83824927657854e9e5257c57bb0f10a4b435db10774daedfc955a1282eba9f59ef229d725110c0124ae25de8905ea9e6beac42676bb524fc274417e16b554509fcb8381232cd66939c74fee0bf5f4affe345270d36210ea0f983bbea17e86ec96a823d35c16257a34f9d048ed7c84aec8a4b388e9121251bb217c8872e919dab5b8e9fcece78bda40d471a645185cc8867426b9046dd42c85aa0acd4453e5168b6fd84641bfdf40c577fb1b1b8aa438c482093a68a1ceb7b1dbb23430411542632ffaff1b64a3e47c9fc85a825e2a8b61021f904288d329220dc47f275dbe8838e7cb99242108a47e9e330e68cc86e461883b9a5a885b470c3eaf2b05b1ee5bd2063a4e04e5a7fd8ab05ad35f64afef467f444023dee0bddbf987afd703e5daafa1044605218f9d6c5f05bed37601109b71e13f36331d7f0d5d6cca4369aa56d82dfbfe39d57bdae888489a0463827bd73aedc90f6b00a3cfc4fe3573fd2cc6a0e2b74fc2ded498b4dc83f1f462792972d63a25e941aaa37226efa156316f9b99132ca52f103f55fe712a93a37195649fe5dd673508cb50e396644184f5a6be8a3dfcd01a867c1ef630c4a9d37423bd0f074441f62e955a6cf1419e605411930ce0fddbfaba203b08a761de113142ce599aa0b80db6cf95e5f1dd383967e90e70d044d38ccd7c5a5bdd001d97fe30c1fb3bdd9f5afbdac5ddfeac0ab91295a9c3f452fd68d757b9f17d53e1357e61baa9cf68b506414b6752ad9f0b433fff6ea14db70ba52b7fbdd39569080eb3cb41574ca589014d0a55de97fc3a361c6323b4fa78a7aad77824ad805c68c206ff407b4a1f0b182883391931a20bfe1e7a808c79b0a8eb764816680ec99bbcb852584b3f7bd9634309bacd8c96bf6cccb5257feb6c33c379b72d5237ddddc978b8bf6b06d74e03f0740d1034eb4357b14e2fc4cdb72f1bb2fcc31f724dc9c19738d001f5cb49df8439381a14a81f99335d51198cccc9e07f0950b25ce3931929232202f9a767ee68987d567ce90b0018918aacea1d133cb98c0b3e214455b1809d1e8fcc502cffca675226c105c1ff0071dc11c57d4027053ae60bb1c48dce3ec2540819d6d1208ea5a4f0f4c032ead14adfe8377e43a6e9b89e00dd5e159e0b63af51dabb2e928c9cca1aabed2cd3d76a8ef89e5bc71525184c75caba2e6cc0fcd5b6e5ebe520467d87cdcf3cfa384bdf740e959e1d40c03619192637d17791d8783db5d3a425072bdfb2d2c0d03b7b1a4b2559cf7f268db0d46abfa56883a3368d7017d22a7563f063c61038ac59b437beb7a5b1d03a02d681dff5f719266438338070a7fb4d911ee1e8bf84b6e7133ec7d859bb27577614fcbb5f6e3b5fd741298aa18acb4bdb4e18f947bfbc6c2433f323a09e77d67f856d20812efc1cfea7f99ed85bb729837f28b2f6e32e3cc284859d827211de3fb2b2702108b889dfd5b9abaf8c433d5d93ed8d9d318d69e8c7a353ed8c5214613dd16c850e0e645592681ba831bb04cb2752a7ba7e254cf0e967fb17d73602d6d03fd1492e141458d2134ff760423cfc9ff1c1edd211ef3494af91249a55815d09386810bdef98399d34fd88eb4cfdcf9f94f188bd43afeb68d19181c5676424cd9de468ffd16b5fba87e1330a12a447f34be015060e2eeaab8d16f80b633544d98c23d6dd6bf2135d7818db2641a67677247cb21c239a62d71f458b09ea336adc50268409dc33176bf7e250663231481532be60c3ef19e824f32abc4f26abe710ca8822fd52a1087e355ef787a7ee875cfacda10e5093d4ecc4f7034db9681810ee5d774360d791e2a99f22eb997368af64167e26b0b1d902e3a4c2b18d3583e24643d944c6628c6dd0d9eab68770c7f50490ee434f27b919930b1a3e46cc4116c86fe9ec0b352c4a178c0f45d2858f826276067129fc05c5dd38e86ef57272fdec8c7d073805c0efaeacb8d15141d1a1baf473246033b089d66d4095e6090afdc3c6f44886c4987c271a0ba9bbd1adc52f9d8704a6276c450db0d0a11c2cfc66317ba8f7de081cca8158a69908e2c0c5004856cfcf7a58b32e99ef34771f197fd6b9003dfd6a82ba2684e8d35f536177c2313b8f8fa68c09bb644346c035c2907b83cc0b07102b18343651b6e26e832fbdda34b28804670438506e288f53f37d9d2a7a1a5302f0d3210a42abbb09aa471c4c9a66d0092425f31b45997809eab5f71b2da8386ce6505109db70585d22c1e103a50127133d78824805199f94116c4a540284774e5662c9b462cc8621876e13767a263c0273e2b4f7fec3ba06fe0c00c0fbb93ce4f35953d9aa95c999a6fd117cdb89a3d736ddd77e01be3b0359978b85360c97d79ecf5fbc214f85b3bced65f76c2ebc50950244f81ee8ad1d00a8f524c3754d99c0c01bbdfed323cc9a5a68760b9f79b8e047faf7f03888a1c1f28bbf8c070797d4ec89b799788a6c40262f559847d4f7c79ddcf56388eede902b86156ffd24143a06c09f407430a0549c6284a02bdd032c9191776c3da32dc3e84337e815692d1f9b18c842828fbc1bf68dbd344b812fdb83ed62f1d8aebc3ad075c10250b9e7cd8497660c59a4fcb2b9314e2e3d136c35df2aef54c4750e18c73c8033a619c7e2f31c809d84033161722856135f87cedd64d9b8a675c2a11602ea1571dfc73aa3d52731e7925731eee47a3c9919e6fd131a00d2b3b3f30a2526aa6cfe87cd252f7296e4a6d45f8ea14975a3d258f6c7da50bb09203acea2cc811ae52b6551df999ee64641ca4508b9f95c0b3e1a0459c0f81fb1295e923fd32d739d8ebe3ba8b076c7eb87fa407fbdb5892315f2eb34a62c45ead2e1dfa98d779c22c0112adddc2f77b87132cdd84704805f63260d6a57c547ef707b274ffd25418a7f86d90bcd10fef51dea1f50b19293a45dd0f1a7ef6f5de140aca41ab30786788eaefe6881b1b9ceae759756d71362ec47f9d3855174048525c0b2c07e2e86669d80a3973038ebf49bd3c7b59df5cb97454447e1c868554e7d652cda8fe50f233cb1c87065a4b9e60964870f2ee0a4cc5d8170df8046d02d527258158e0c24dbdadea2fb82e441c2ab0b8f60eba5b687024e9afafc46fc591d393801af785321f924d9ef7f30135d620afefd5a50015a90bb0e877372053d010ef83fdc19120998f628fe67dd2e94c6c754cbee068fe27707402a42348e55cdf17056068294b1f92b15f49a56d49b62f37e8c78b8f50ac14381607fbe85cb9310ae0b892e9591e50efb3fa92de12f83ae2881e58cf823fcaf3d66e0720e5d7b1de318959eba081d5da68c0101525e7a9569c86a95c8daf9545d29fb237d02a39d93104909f40ac33865b644cc3200b4e552324650bea3ed9f1ed1989c28b6269308592e7a455c842961ebcacf8d8193d8b666c34996f89e2e691f116f10d9b8e730eb01f0a64034832c0505b22d01c8c4a8afa49c55ffd0a42c41d6cbca596d298aec12f9b5ea16ddd9ccc35b6bf078a872fdf9194ba17476112c8ff34bf4066e4fd9f95602466b61868c5ee15398346d3a8271640b9617d6b7d688de1cc650dac052d62d0b6ba321fdc9d10a1e57f27b64fa37eb3c3dd44112859788bdcd313cbd040d6d87656d0d8ac7b73dba1052b984e9b665d2addfa7826a60bfc61bdd9e39d9a85ffe146d8c8aa8c6798017618d5913aabb4c80bd8e61e7be9f959a7511888bc464992e59399e3c05ca929726f2b509abf3b50affb079b95faaec2488d448d158c5743432fad7a12c01f34e28fbae9651ebe766047a9fa5a335492c1e6a693b3d1c797f8398ec7c40240ae9f62da59bdef7fb5e82536b78b4a00c22b960e574c9f310d6864c8a77cf9ce6fed00cb91d629d26038d4df97576c681f595eb07f3942a7360c61aeafabbe840a372bb588c677d5a2d29ab5c1dac33c94880312db2efa24c7fc33f52c05932c8f2e29f9d4e8c7d4ac9e8188be314d7f8149245132a32033b9d7a0271fe8587933c3c0d792e76884c4c779b2237e7826b3dc3b744f16d29b858661a6f67682702432cb0ce72a33bf0156fe6f587453557bd85ef62f2e64bcf9784d0491d07d21269f135f80fe2aac14050f7c0b06a8cb862cfcbbcd121b2fe608735554ffdcace8a7c1552917a003487813fda76eb20ee22312dc9fcf1716201cd490e962ca87b5c0c42b83739d3daf2b903ec5e492cdb4ec5f6bc6cc21d972269ab302b57baa9b3a84ac74493e38a69235244a09af369fb3dd8d891256bb30013abed4a467dc8c4b1547fb5d1fcb9c4dae52117cc6363eb8e34d0a22960a10811f94e9131832c6f05928c95839b443042607db929150552bd0528c37be0bf22091e1d8e44f0abbe687b1866a0cc8281a35540cc0f2d28ee58a2ff7c9822030c0f5d3550e4bae5a176e7c8857770241a56b1f842c1a190b3a5359a49b46830e669388984270b13f18a3ed010d44888aab49a56ee23ce77631190a84c70fa0d4c9ca9b3477eeac6da0865d0b256d0d29b5589918b8ad352d1f232631497b63c63bbd765c914580371d42a1efdf9cabf7f15a4592a090bf926fa66ecae170378e9c031a409db85c26de168036b962367c8558c462a94b904723e3026181835d7e9f0f47a1a7e7e931dd01ff35044dfe54d3a8ec900493c3ac5d18618467a057ae8d83bff201d3f2a382c02eac9d008e0ba2928bd48a78b8eee66693c34404b1aaeb66a48cb7091c78b8af25560a4885e0bfc8080849dc88a26506249f2a8506a0bcfca748142ba240fe3a61e7c40f05ea87191e8d2810067dd509d789f399f01ac39785a11d04e7a550b2eacaee0a438eef034a2a34496dd30002d66a02ff0c6f294d362ca29602a4f698e72167249e3944ac9037d8c9a828dd8dc9afbc0b111ae34570ccbe78999c6cc7d5c417f9e338694607df7e79d08dc0efd74fb7c346676401179b24d41c3d280a61d89378da0a278047f390e62c1281aa59bd63d7315961315f43abddf7405ce0ed8329d01ae7c7f6e82864da94556da09c8a8c7f3cae53686e54ee0f9864aeeefe6d6b20590dc8cc0f28c679aa3bfbcf1d9e4899ef6a7a502723a9e0900e27f21623e6a9eb312f0edfbe8957a59aaa27a6f11f6c9fe6bce84d3c331dd299dabbd7895be9cbfe6a050ecc9d5c5d9e426c4a1a21ba36029f3c57925cc74b0d325d46f429133795158f15b64b31fc7907071d958171a72161e354dadace17493695e363fa8adc1b7c9997dcfd0b10329833d6d437b0f08bcfe3eac4272b496a229e71f1d3f91d500c20cdc54c964bc91568cf1d8bae5c54eeb06ded18ed805ff36eba1e13c1faaa08ff1f5a980107bc69fb3cd08166c09b3909e1847f08effb59ff0d620f855dac98d468c13d387591fa936771bdc248889202184702066f31171d8bc7b1fec44677a779b3699e478b6a8b4bd9d2fbb5632aacb9da8e6a3e5f981b17a4caaf965069d78e4653c6de2aa129a4481306530623c563ac9f4aefaf5dadfbbf67ff8037a0e47af141fa1ccfaad04e06e6d8a3e3e75eb8c53ae90d64a3a41934504c4978518e522dbd278240604f373d63080c1523fa3571fda2701922307e80440faf8b1e51d72a6e05ad78f5a7ccd83ca35941eaa010e241d3cbe66521bed5dc1542d9e063e9bb79375e19e354bef03dc692f7fc31ab2d7084ec4ed2ea8cea569db8b9801e510b91c920df3909e58fb2ba09154797b11ba9febce056be74cce5236d17e59d32ebe50a0b8c4ded6fc71a16dd4fd68ebdbde9f759f4d563e90b8bae5f334a3d26cc26ae1afc3e63689550c519f7844a6b15ba600947a1ce4b728ee309d787db25c114d00e939d27e61271271856bfbaf35082e1a7f69d28e3a01e1df38b638d535c70a718cfabe5dba40dce48b505ad65cc136abefe25fae9850f781a6f42ff97afa999f52bfba00fe670e2f65675a6c7b53035fdcaa8d6e937282f329138fa234c83566305795d77f5443110261d6c927d068c3466ab97113703b1b45795d8a2c68b1fb9d8c78dd5177e8e70d08eb0f48c741bc2eda2e3391649990c40bf4940e2f9aa081f548f1da5ff182c3162ea79878d51805d668e255901c86c368f487265eb136f07d987ced91bcfb3b960bd27689e16071af7ef098373714f2c1f2a3832a36741fe63ea13415a3071929280d1fafec2b090fbc4b25d273a50263af9ca92e609f5ecec8981ea1c77f9db297a4e2ffdcc92db4a7f3304c2f1b9e1626d5b5eb747bd0c9ce0717d427f3a95f073efa72e834e1f33cdd837ca1726c507e01ceb668b61d83269597a430353612415c3a81e3e3c66fee003b3d9806512c175b6ec9eae92118c1df372c1f030db83ade06035121576686e5b5b2e603ff0a2675a1d94a8b9adc1eeea2adf0f76f5575762137faabbafed183b2c828000bd78ba3794a8528a0706ff5f546f7864cc07cf336447ca82ec7a75714e42a0670cfbf4543c3fc593a65195fc8828245bcc876ad51de48e8428fba1545278cd55c7145c27850edeb1f8e2ad7679102b065ca7940d8c15593b0db106d83b6f902df948c5df84b55d0cdcc56d7b6675d50fc7cf3195a80e15776a5e8bd10a561ac153c518b0c15dde5451f3dd6af82cd6d50561e45d7768c9b191141c68b3b66042fd0c3a909df1357de42f9beec818bda834c895512233c838d97ebdd6d43d90c3bb28e0bcec2d601802a21c2032cba1f11d6c8c2bba67c8d574b784e72f590ffb2182404c3747f512a4f9fd19767fad998534d887ade5556b01ba66f7c5f633d4b356b1172ce21715b1d5770e866c92cee14975f8dacb201be462ba1118218cebe08ba465e779194465c0a46ad66eccf7584de5a617d365c3c25cc095f970576f6316f62ea7d898f3ff8254a99a62756137e967212f57d2b3ee8335a593e1b8b25822f18ccc3f6fbaac20ef096e39e190aa55ae2633e781ec1e6e7a2e232eabbe546e4d856531ddc102156f2ef878e0ef5adb70864077df6e8b95a0d938014a0352b1cc5ec24bd43af71ae8b432da637bbb98550c312627167729997b6d86b614e9bab3c690a1ebf3f0221b791b1983c1bbac93291a566fa3df161fcaac23ba05d9e66765fa8c99f3e9446eb7654ef96b766d1acf87fc6d4dfb7116fefe8e2146fa731e7087271de740539f5701067f4aba628a38e7285c79bce116684b354c328de99f4169c06ec8f39ff41b78bf43ada09b46e93fa8df572b4d040e2c50d66f1f19e53b9198117b6edcb045f8287afe01d602a4b18a907b11a193bc466007e573abc92e28965a81eb00259b6d8ac69b8179b71ac3b3ddf208b986d21c8b4a9c165341cedc8d6f5cdb15d8a4110462b95834f5999cd2c3be772f0f656288dfea1f1a01a7d2c69fe6c5d34169202889b52189fbcad312f337240f13fde359ecf4b4a3a1952228818898f493a5e1d7897b30cae336c0bf3e814c25d1f3288b08c9570d7990e48b7428c8ece0b7ecdc99913f18046ef2abf0b90c54a7b56c3bfabafd7bb797481c0aa3c6c2ee589e45fa36de38829001096afa6dd7407ecd059ecdff2a10888419f48af278313aef0c68a216b70d42c324b9e0f0c1b62ca293cd0a55c748c80e84977fede0a12f27aca7717d8683a0b3d26ad31ea69651b7db3f0b2cbc7684505f919ad44838c7249466734416c39cfa5d389ba876f4fb89bf6aa451f5e357e0504cc883ed2838097d1c1b76515b2f72deaa9f224598181564d583a30c2f88aab7eedf3a05d7c6e2367781e2853e4fd76fd98c81ab882256a1e502769df6db40fcc6e8b6b5ffc7143b4acffaf35f6918e70f8071c5de2020cb701e9e142f65d1ea541a35c5ca83984ac59283b82c20076204f31d15e9109cbff6505ee39f141ca118c5105ead7ce70c5ac71b8e662c60a4c695f88bb4ac05261654a87e2ac4b05cb47faca6f8f0465f485c87f9b42e76c35d733056e6d456df45a395c89b8360e97664a695178d0d60eb55890ac0202b7ebed9ed0d46c54e1b7281910737d0ae434492f15505d01abc5c24e484f2310a77e522ff1fb6f01cf8dc1042275ef9b982324ef2cfd25a93b84228e6d248e702db1018d021089e01fb64044b03f0e441a4f4933e1007d77e300c80b8ff67dd86bd3d199b702c9ff2f0f269df60cf1e2ce2011f683ff813819637061157247ca79206efe40ec881f58d5d3a18eccde137ba92dc025cfc9574fd32388edb63d2fa286a48a2731c44b41bcb08db912017ea9fc2b2e0786d17341a43583586906a4998ca153436b11463388b78724306810c5c7ecb52ad28a7cae7f0d177f7070e995dbb5c0513e7c29906db206bb60570bd42d000f7e1047f293acb6741e59be8751a0012f5fc27cc863c719908ec05f7b8aaa761c7e106f79d65d931ec449091f44526a6e9586671ebe3163074dc6cc61d0433face1564ed811202d0b37bbab193d6109abf74b997f796dbc5554d060be93971fdce5e77f36b6424c7eec1307ad64c41f401884278cdd0ad17226d3c3dae2e19b6d68b779173d8c89d5ac2c35c4a3416caecda76f0ca0164973cf6f85280b17699408d5149b68b646f964889f317d24553938975d36f6583a20154faaae656a16bf225bce9531c68fd424e74a039bca15ba9ea998e563dfb2face599009258e1920a840bc0bbbcbe1c1ad4cfb804b5eff3c73674a1e3738cddc7c1ef2a542c6ddd065c40d91774d7bc8bbc00fb432546f6f9c2a312c8cfd674a57331682effa9cb5b0f0cc611a8335099a1228e8d5aa9152893716e0d89cf639484c3991a757dc284192a87a44570a7c44de08077c66b170ab3dbbac8ea264e72b080939f7978d2cc1ffe3af02d3c6466133d096cff87fd3f4fa939385c53ff795000c5d3c85db3c1af74b047617d61bd57d8d627c463694c16ebc402626deebe7f7a3bcf0ffef02afa55329565e8b295660b9d6f85654d704aa6d796cd804ba7cab89ae50b4f9e0dabf69ef1c770103e92e85bfab57b4f31c7e07ef61e9b24f9f2ef499e73ffe0feb7a10dc8f96d2ca0684a61b97fb1d24318cf20479e314e2675691618f4dc9724d9e9339e64b7b07b6b336682923135460202cf1073438d5d77f9a4193c92a574da8fe0048c62c28b6227891983ff7184f29a1c90ced6b6a0f66099fe323163ec3806716182bcfdab3292a009e9481f101c6ba66376ecf15f00889a30e2642d43bca381aa342edeccbb3208546b39483a392f71fd0fafacfa710b2a5e078785eb242ed59d2cdab983ea86f13f0050870af55dc78704c247666d9e2aceae2df32495d1b9154838a823b27dea87d2f9322f667aa3f0a8056e5ac21b96848d1341c42b08f7a845d6f3dda9b7d3257be05a3f928094015d670d2ec30dedd65d1894963fe463be3e3f62162cbb497138bdac21c5798d4cea17ebe5ac957cd95a0357ff89ccffe0a8a444c59ec1ef6cf0e96cadd7d8b96e476393ebb1b5fc39f00ee21054833b64700c0fd63a0c16c368b84a412eea5d03a4a7c138d391f84d18b9dbf65214bf93948fab90b049fc67c83038cfcc1c62671cbb522ac107284f141e3127877c2c7d84390065ad33d9bd298407804768c958bd37ab371181b4a0938068ef939a9e796842a726544dcfee77124dd560887e423d59db135c829ae898b0f9cc10a9595b5a3790a1aff89e7f2322c9c01b6946181d909a9fb82df840ed8e1eaa6577392afff8434421105a36418bf867e773dc569fa339a7bf182be32bc572f3131c9f1af7ea88e82701357aa2ae081980f8611d0148ab86d29bd5401b9840015d2c5acaee7160fb7d211bb6574eaa733aead724d86fe24ee6ccafc2043792f7773fe50fc58a48913d068ccb68b8afb15055a09a93205c771f4d17f7f35068ad1d161ebf8655807f99e51abcc39ae96e76e90b446f81dbfc58b3bdb950d859e194070736f7ebe52db804c1b88af1bcc06da6a6962c54b964846568d5603bce45a4351eaba8f511b4c03f9aa86f722783c81f84782ad00e6f60e92da79fae5dcbd105055b9e2497b7cb8316719c1d3ab322ce2ee5c6dd0c0d3541af9a8270963c4c654b87dedf8d8e2b5250bd722b453ce9b73da28170c52916b553e04b6d0b953cddd074efe49b05a0970722eabb5e98a872e0d82c9667d8b933545131000e2a5276388c4f1e14b6d66f47cb90812f2d84d81766f5b2b1b5126e77eada29369e4bb3e4213c7c20d08fbd8a009fd730757e499c4a88a9526a2db03f667a344bc75ea9a0471ad9f0997dcbe235847e4eb66f1ca028b5ed11ff10fd4ec56415eb0fe7194e797691c8e75caed90996beb4cfef00e6185223e4af2bee27e9e5d905c3e8208ef6bcade4d499924d71e750cb4c0dfae165f2a496061eadcebb1ca17febefb0271fe34d1a08cc606ae46b35e5d55488db11ad3104c3530dbad22d076460b06f2a04eaefa7b441e44971bce9fea11c33e4d45267f4e4725b6fec8c8e249e2eca38bed0884309d2859518297a80280b2e87a324c5c490b3c8a627549db0d2b3e19a02d31769c19bf82c42f1ec5385b64d9128993f7905893394a2c2414b6447d2c3f82a45dad5ebc3057f83ea120c438a480f05f6d6d63de6892a68ed1193ba799a558d05b1d631f830310b3bfd148de90649bd075f31ba550414cfe0c712a6a10a1b386d7f03ff2125b3da454332d33f1a55db663aa357d104aa3b9dae4bb7bc0136c423bfa96389bf874a0f072f2c668cc6ee17f27edbe5442a1394916b9a1edf651822c2ef49820f10e9fc01afa4761c2e555124c14d4d495a1d619f0d8e24fba42d4ebd2ffecc23551f089df2a37688cbe26080498177ac59c30f45d7cc3c574425cec48ca2121af7384ba42800ce8f11ce529106a1c088e9fb55ecf006d29361c17cf3a4108019587bb068a2e6df1733977477f12b2ada08358c3975fa3f37784a165a59db563c273575bb28f08c8aa27cfe8dc4399ac4ce6931b75d4bdc15734d6155e9e7e9b4b38d7307a02098626170c02474f60a4225a26e31e2b300c83098dfbdcd0cf890bd755e59437b58ef8fbf1ed9aa5f959eaa82ee1d62c662b132e985d8280d36772938ec944b96642d5f98fd0fb148cf05d776f86271f870fbb6eb879a38f89e8ca632df62381671cc54fa235d7bbee177c54beb1b8d3921937053474e2300910cb529b4e6666e2f7d74fa0e6654244c984ef9a70ad73860d847f10892a5bcaacd3188e1a24b9399d22a3ceb6024e42fc1a3ec46438ce752c7d7b948ac46b5f599ac543e7e1c36527ce3d30ed3816aa1d6f8fe5061d492175d5f0b125be48f8a9bd2eb3d406114c1edb4fec4828ceb8e64d76e3a8d2aae1ff3f3554ffd154c685532e648765241d35dc193a5086c97c3901ad8971e83649f1f7027cbd9e2655c2197264f5e02246a378d57dce93d8ec1dfa50fe6cca0ff2eebcf43addc528911309d60dc13684aec3228676f61d9ee717f8891f2a67e9b138a56b5180cd0a3bbda5898a2255babec036d52bae6497f15581d2c7c7e89b69409681d900eae77f08a8fec79871f7af717f16e970241b1b68d383877083d794244edd23192251cf01be7bf76ac21596dc5874cc7b9862336fabad479ae982f2552fdb4025ce14b52c9ce793a81042d50c2b4378555212d203c60ba60eeff839edbea10442468b10981204d4491a2e45b17a5226c2297e098e98f3f7746adcb84dd1cb3e002aad3f8c2531580d9df25e206b761704d541be9a73745c28b1fc7f10bd36d94056d0929e890533857067dac6201c74c4772477ba6f2c9dd81007f72d9fa893c8be66ea40db0991b0cba2f8df481fe910a5dabb5740f03abbd25bf32850cadbb69023451917b63d8f3924b8cff01b8d7b6179cb823c46c3bd9e767952fc90c228efbd069f14490819b435c01defd3db16ce3973b2117000e40e5ac366d389f4143ab39f1039899587cc6880302afb9f4c8f33213c2789290d53cba0b592ba69b6e4fe81459c5e555e8a2a67d16cbb2a5475706f36dc27448a874a9af1062d9489bf787ea016e94af4cc88818feb9ec99847deb12e51b3e935ff787da44889cba6a2df8b9437439ccb6f025bd1577c7646ca16a6addc27e561373b209814fc601895ea88ce2332854a783e0a7ae6e09afea352e0e0544ae7d02ed7987b1ba690f478479f68137208f1d07eed044839cb78468dc84fb34553aa14408a948cf94dcecca9e5b01b8cddbf1af97b1c851cde16682d6d284a9d2c4a2fe98fa08e5f759fd755073635bcc82a89484d851a899d1cef2a939f5c902dd4514a9ec5797ac29e54a4c10ea3f813e393da85a16804a26ca73de7f141b1ab4c3bd1259bbc46cfd26e04c56c73c828188190b40d85446c4fded7f1ead438613c09d2cbc9049bd7f486db8662bce3e33b8caa12fad08ee89b87df64e38fc56ef0e8d7506867cb5cb217680e31001587993f54a39df18507e72d97c949013fdeac8a8c4f2ba78d2cd0064ec9309dd442cad04a0b1e6851a9f9b31aa6f6221283d3930713f68a3c6ea1cc7ae8db588bd4bdae6114de036dc8e697c8176f5085f72010c539d112c4825557a8f08f1334ba1f90923b6c47a9e50776602bd08a47c81ce0ec09a29c48864b02a100c5c65d3ae792c7a7c26ced3e82aba210ad0f69ed2b51b818265c57b32ea1e937101f62db5fdb34f7901c524093fb58cdf6a83758d9e371510c9fe795377f1725f5beeba283c971fec6761417a25b1f20729e555504ef387edbd482e8fad1a0e5cbcb53fa7e0e1c1a5862b56338c5d1f705de3f7417ef4d73aac0a9e55f17c0cca0377dd707ae8a8e8469c59242a9b24a31c76e02a71f9f7c2ea797ae01586e3fe061e3963371033e9060f11f8b090e0aca7596981b8b529afcf7063b6e47ebbc32cd9d65ffdc8e26437db03335c535650a6d84815f3f55e356e956d53c3006eac3642e0bf4ba05d4308b6e06895c04b99a398d6d331aea5c9557a72dcfdc92d1698c0aac6c4f782b411cf1b8ae930bb4a07d42815d09bbcd7fd7e16c86e20c3c327e80c5217b6c799764106eacb2d91bc7f00ae6184b5429a948b16b5b8a87d26518f878eafb91367c7ed7ba5baf56cc9342d92803f9e3baf93f75b980ebd4f2f1b47842c1bb399e277c2b8e4de828312a500197027e5c9b9f8165ad141aa246c72727e0d6b51b2cda4d13e8521b94fbc1a344bba43877e188b4670ab8473ea289748cf54f48799f08622e200a013e5fe7924491028cdd81fbb7a438d8ce4c192529d80787fb02d9680c5d81b5a314a10bbb338965d339ea2233855d1497c84b171ccddf37319f262c115d4a16b14d93d402eed1154cc63e220957424ee9b9d9dba2d595980e6af6bbe07b052472e3da5b7a7d05da010139e6a54a3ff51222121da77764050739ffe76ead5071876db2772ce4588aac4cfc3f57dc48b6a93d33c3e989110b3b0c385f3210f0f67359666c099844524315cf430907a64cb515766c259ea26d8ccff4e2294830010a4f4aa024ede88d6f7a12387db7bfa23c550cb802812bc6a14b3445698a520c8a4b11c14d4b9cbc9f254ef40f47794afab29403aa121eecd5bd6559fa8c9eb8252eee3341bda312b89859403c87fd309e64c51d5272913fc1b68ac09941b37642cabe3c9c4ab885a371fcb11030f4317219e122c7469119bf8a2cd1f5875a52123d77924acd61cd29a89cd1f3a2289c70b5e26b2cb73aaf51402605c032e2baa7b48b8b52e7ac86868b762c78edd9a0bba659c22df4bdf48c0b2630501df65c1d8c7416d4544cd2a7913cf45b621a361c06161c5a85695486bfd2c7b26e19dce299fe300aa2d5fb58d6bf82aba2a7dc7f1bb4d849cf1029f75eefb8d8bb09446db39c0fde64a6c969af8d08b6a7bed7f1ad71dc9126215ca392a60df44720295783cc523452aa60900308f638532553fb232ed0a043c106538e8adf5d462f318e12b480d4434b148367e1edf48fd6d5c2aa3447dd35739a54a464f10b965eddbbb2ddfcae6a3025300db72bb286522d1bfea5402035184166b2a7bd9f45e65516f55eb5c62b83778115b8276461ea08d66187b67380f58ecdf6c5715407e560ce93638c805decbd0bd421e105d8230a5a4dbfa08ff0fd464a5c4f4a3222ed68f3ec8c8b81292886fccb23313b0e04c66d12be5a81e6a1632928daa821e018c2eb982acc6cafbb6d8d58347c4b93e16a896bb16d58c04ceea468ea52742399d476a69d53c9e684384f6c7ccb55a58c067a213a473a9d59b9d4b529f8f55104d074fd8afc712eb345a4923726b561f65ad2d0e30aa34af304b62044a032bf47dc593b3f6631104c2aeb9c66e1a89abf50e7e0190a7f6888a603d7f959251d41fc70f1acef1a8d866f02236fc3beaf74436aae6c1522734109f92f6e28f9d92106ccdf0d280eb132918286abe39efcba6c553b30b3e92e95ab03d4e2c1f43e2dd0d69f330fbdc27b47162ce34588028b236fa0bebf3eee5af31c28c1d0d9924083ce87458176638e272a9a1795afd555bf4d22f254705acbd4470a1a4bd2b865921a68ff7ce7cab0b2a1dfa5a1bb15a7c4944be94fa9c2e6c7138da91072bf4afe86795395eeb87e20082217c53e3eb61ed9cc1c1e851b491f574cb3300e6126dcd89b106093fe64fad0f621b3961192446521162ee849c487a669cbc7d5347d0d0a2c2b65c931b2c649d102bd0833f157d11dc9251ba39e1828e1da345ef26001a4844798aa66f0328d16d1364c416bbe0a4a4697d95bbad4203ed2354045418bc2d10369e1e4236437c291f7e329e55b153049867f6a8f935fb88770129747f7c677c5c7d6bc952eee8654200df0798d27ab10e9c94ea8c06ab5ba011fc195b031e44d906df17c46dc132b3dd0af28f4e96246147d192193f1791f021f6dcf3ac28c887af7687942c32136689caecc92d56365a1748b99f5e1f96a986c567a8a31d32c2d688531bc4b2c4684f750d586c95ee1f9d76f33cbd909d8979aa66ebdac41cc481c0501c4a01c70e95505c0205f7129a7b4a6fad0f2282612bda9430c7429c0ba8a383250ce8bbff819e38227e4da94655f34fb4d6342a0ac8c5073f6893e277927998d850e97d91a76586e3465c96ec257d134c5909731606444ff0f49b4db08067af81d3fb39c53d1709ef1ddd4da5203ca83643c4e890b4aa5ac756530aa2bc203b5e3d037b2d205b00e601402a29feb65009c829bf2e646f2106c37f002745ff07e331a8382c0e670cf1552b6cac6fd0e54ec642213776b8461f2079b9e423626d56b6bf911813d6a13c064bcd695dfbcc17e34cb62fea8f550e6b4897ce6424377484177122922999afd132dc600e105012ba296d9958bd5b195416261e5f73b5f59bba08af08f4ba37ce5dea6567792a4ff77d7c406b4ffef3815800bcca89b4c6477895547d226c94a3a00d72efe0969ad333bb33d6012756bb098d177cf45b1aea8b88ef171cd0cbe73d65cad5b51c887e8f8b41d7c4d890dc15f41d10163c63413499e29db976e8f2e5d276cc123e8075f21a570bb9e6bcbb52880d22fc1fd0d5428aab42ea0319a4a8854392a4086991b1eb99c929cf3456da04c2009fa66b81348c2fbecccf91ed94ce8c1d0c933c16c19b458c4c859a45a36c8f2a1f9b067647fa7e94e9a8d25d3e8b47f8b764fe60b8bd801f7ca333fb0860eccc2e97ee1f344fe17c9eb9168a80dd47558d75af2d8a69dcc802050d351090fa09b2817717ae8d97b70a8a8e5fff24b462c993c4de387d6415a2f12a209f0a095836e26deacfb0df86204f483a83feac4f7f710a499c7ffb2ba0274ef66042d6863a83497d8b9c61d5e2dd1189734d748c32b588c2abbc96594b9bba9053dac0ca78082235930844ccb5ff11e40bb0b09dec431905c734b4102f32c878238847bc59cc89211ef4c7c784933764d82cd0bfa077e24f25d623826998dcb8fb8868ba4c2bdfe96d0b18e9ce49a54a7935ccc9d33a7c9525be5f9642de7b12009bd4aafa8ec55bcb838897e4c48c383e30b85605a1d591b42bec0f744f4a2028a205a2cb1ccf258579c47768f529e7c42ca149eecc2a1d93c75524491b44e03e91e73096cd7bac4f8a5ab6490daa11781fd199a89a8ce0f9c7d9ab6c0bc4597227627de314edcc5063d5aa50b8592e173b7a61f28f36b0957a270cbc40e0cd029099abbf31078b0295218ad5a89f34f3ff812b9c490fd701af5991645ab1d6e7876fc23160fc7a04b1801b22945cb37d20a1bd4eadfb7b2e4c1784e0be5f9aa2bc1b95482123dea9f70af1c7fe17ac61b2295e88773f6e7c4a46d62cab29e2dd082673de84c84b163dcf722675d5e7286f1fb0e371bb3d92aba8cc9ac51821fbf8c891efe09dfefc0ab7221c355ba7d34e14579a50cfd5a2625e9fb58a926aff82c99aa32984ac30d348a2362d3e169a420399ef7168bed1d89084986532cdc5d9831c6500ce28e79d58da6db48f3ae394d5887c5b418a9ebc341068fe1a1ca8c405089088157ee1c99ebf169c2f6e76fdaad3397816e996a18d4545b49a01080abfec402db285ca9e54a6059b7fb023705693156cdb7f312cb242092aa40b5db9b27d150fdd8f62398768b278a118cb5c1f2ff069f7fb420460ce9dba62d8aa551345b01106ea48c5fdc6648a6529387f22e359628828b90a1ac2085b1dd168a0839050dc731f9ebf5417860bcc11625d94f93dc0105bf720fb0d67460ad811570c256128b90c8e2faf125c65ddede5c6c58b0b1b3a0664c78e95487b060528e39391cf4253130fe24e48b3e1564aa550b8607d0b96abeaf9261b74ec826901a54f0833c2b669527bef27be7cdbffd61ff93ab3539b3f779f133ceb0720e8b2e952ebe5e81e9ed2c4d7f167d5c229a14496f60ab2b9a7658de859939d8315d677a00e10083e10b50eb3d2c84a9a7393f3699ad170a36304c66a9ab2b78db4c46458b90babc41863037c3b140a94714c2690dade59ea242ca01dacb741004d1d682f33ff3623e617a2d4cb679082569ad80c0df4ac4a6391194d0687ffe03811ce0f00d88479a19bc1e100947d5ce2704a1ab0ab6e2aff2aa007b3fa9a00e7fd9c905d434995e2c8372a0aa2af6dbeee6720ba9c37c1d0640a0bba55b8c11447ca8da06fbf2200050e044db03a293d2f234bc6cd32073c2305a2610c808c0590a3a588d47a01631e234c0a9895ad47a7b44b322e349440359b84b7cd3dd2b867311579ac9b6dc267e04fca78a24292d98a95b68bd28c4502563bb057845e4a98aa88aaf4770da69cafda63257e49fe127cf135006e9196ce9b014e37fadf42d54368c57ede715f3575d988a98a723cc88d575226a36d224ddc1e86860ce19e20a92ce9a2d3e20ecdb92f4befc1022a9d347dda9d6aa8a607379e6ec63d1c3a908f5d1327df15dafe0765ee406b9851d19932c25aa9682206c71a9eb0bf34821d2efbcac96bc60bdd926bcd129e4bbfdf5effd158394fe03f618ccc97e2a0c48ed13b7bcb47f955e492cb2935a9f49ec99803e2209422a8ca03190ba3311ea5b4a845436f6b1ce45ad9bdd9d592976cc4fa1ed17d74a69bf0ae39ee1867ef5e3511b682906a783989413d2427168f6b1947bc9e28526f57895135e9b19b6a1d8870cf9c7d0906762b950ed9dd80af6a66a3751c29676ef2dbce72fcc509e1bb0771fbe035d4d09aad53350d43360ce640f0ebed777da66a3cfef3eae8433dac9aea85382726cc44b9785682927929c042f62935dfc7e4e6e12574609cf3714d478ff791fb117b3e8cf0865a9902d67219a2d98f3de69c6023e45ff61e66ed79254fb90a74b7e145af081769649a044e9e511a58c0ea3a1749fb7966cfb2653f7f1e3ae0d1d5d53513338d63ab88eec95a16412804753b297ab7a8734ef0885244989e624a6b4c40969439de194efbcd84a9802cf054b80a598f2b7eeefb1ba65e859595b446d38e98f3db68707f033785830942ef5f244ad9c1c50522b6770d8060a8709927c53022ff210547a40ada4c854e816c827ed26fc6f78cc9d4efc587fdd7074208ec5f72a434033fe49c22fa599bf7ef1a05294924fa464fe2ef80820ce29527a39f8aef2779adf4a308df0d921029f685a50619f266e73103a41e954145eacc4b8ee6d1627150c88dd859c50db180445dc1d0aaa735a779135132c3c65d82b4e9dcbad6a000b0f3e3977472aed2e45eefc1780672a9ed1feb116f05af6f7baf963d7d750b89478b9c4b744b2abe6da65234793da5780f4d5ab09e3031957d3a08523312779532d021d3ce12b3d916bcc377c1b5a011681eb5a3a5db7669b3804132ffa9d74ea2af7e92068e54350881f5c18368bc07377e28a8048a677850c30686cac0f4fec5103caeca9cbe2232a2f157f978a1a6a4eb9af7eb2a74a428779d42d4ccbefc6e76aa07d85b28a429e4d47a56b066ce4c8c87fa25c9b4b92ba1143df3390f3c6d56df1d3c31cd4becfc8fb53489c8ea14e431ac1e98c8e499e728afdb7eccfa6d3f99724366bb634de7772b99f4c18279b5c3bd1b8ac189ccf40b3eab77c966b1ac7f63649f05070446279111813dfbdcd706df65479829156431e9e8845bf29710d187f78eb2e3984d75756d932b9de0678532c7ba5291ac1fa9d1cfc06e96b1d30c883091134acaf2876310f43526afc805e008718d53a0423e206250186534a3010a8c3f2b6b6af0205029ea9fdf1d75321fabf473bdd4174096e6f1dc0770c256d3cfc77e038646569a996a9cc5dc0e2feb865fc437140e335e7b6a5efdab5612dc578ab6bb83239e2eba5132bb5e792062fff6c16091e8bbc7fa059f8b030556d206c12eb68b2c5e8569304490651ce8d6877d957b3b9658b898e7eef8d23f656bfcbe28a9e9f3ba7912bcb38dc526677a564be6bef8b9a1c3dc0a6f1aefe80844b08b385988dbf5a82bb34efbd6c5820d7643d72a4989a5a69245c4dca4722a69b2b5e88c132376faca5834da3ec30a329e7991286c0c722b1b3251c5c16e14ecbea9cc40ef7d12ad5c36a4cab22822f3382463147f729077d98cc915c313f74c3c6d59452dba0e453eee06a59db604cd3be62070accddb322c11c7e74194ccca78e6ad7fdf2eda2023135cba552d4483b9877b7aebf082a9e3a2ed37a30af82d5a0e0c19b7be4498ce52e97b497048878bd2997f10350bf5adff30f0d6a860316b70077f43de35a9e4c643305dd31ea630554064835d7e75e57e9173e23b2a2e07900c695b50ef6b6e2bacfac9bee3bff28b58d1902b81335052bb8879a7e13cfeb692bf737a5e4e186035f9f18f3f1151961b6b8fb65441d28462b782cdffefa5108d27104317e2cd9903c4dcf97fdbb2d017f4919bd122ce76740a2ee91ba70f5a9870cf3b81c1d30c8d8500d8d159bdebb20ee09b9f6a7920680094d4f4ec06176c514f51843332871b5ee67801500030bd4701fc8a20b55c974a085f8ce347238ca4b37a068034ee68bba4a44e87d7c51ad4ca50cb1a1526b4071eefd5e7ea1fc3e89b224f39041879b594b00ad90ec97007563920073da765f1f0f75e5bf33420ea01bf0ced64474046fb9b8d69a368964d88f6779fb291a33993e59124b2c939548caa749aa54c021e3e21627ca1e24d4cd54be184b3f4e0a7399cca719c65c408f10b7ea7f1a4b41fee1cdad6a73676e5d5ffd73764d6aa40b50347a1520fe773306d93132ffb0fcff322c984f486b17cc30e93ea4b543806d6e78149b05f16c3ce4840fe04f5544d668df8f2216ec9565836c70e9d684b2fb4823f158f03ae315063dc691ef4210f514084f976d1288d5457e1f38fe98f5eae71de73525a4850aec1aa3dbca293b30256fbdd18dc0533f3e0594eec8e8c9d971b826d16a59cf02cf1e1ab9451c663c13a9f207a66d8e31e328daba0b5c3f7a697ff5299b12d8a03a448aea0cf79d7bf6a955a46199aec75917e10966c548b0d2f494c543b0898a1eec80fbbccb4c73000e1fea8be37bb280bd906303c19b13f1b24c735df547da40acfc0b6ec8554f0a9c94d574bf58862eadc111a71a838a3c339badeb220e6dd487b29557056be37072c052cc4585852744b2cb3f53fcc5cb7f9686739570e34d9787588bf17db1ece369707eb1539f69dd598eeffb037b54bbe5ddc4f03823fa3731037344a98d6d5d0007545a89dd47278193cd9c15f969248b00e805dec815b746a79e885c30e779912c41694d9b396ba38349b72aa1d46cc58d5bb1ebacd096e225a19ee84e94db27b217b0202295f64ebf9390597447d909574c0886c55b5ffee507ef0db434e8f09f059ec39b9293d1789f0823e387183f3f00beb0e5615a4088c38b83a1e38fecd7da5d35a22a2b428ee75fd683e1344096812d252983fd59644fc22b155d8e80061175f891c2afe3105e27b6d50a855c939a680726046db337a4446bf5e3bd47a68b4be45122235ba24d25664883af8d6a7e1651b421be9903ed2ab8237e81a9c43b71229df2a8710a44295c74ac5855bb2b99434fc8363bdd34d9a7a3f211e24f618ac916bcd34b9f310aca765c2330c18b85a2e4d2cd2736b1b076f4ffdb16ebff102faec784b75b7ea554938411fca1e2ff5cae424cec799b775608736dc6797b5bfb59cc6b91ba85eb31d02c534e43c56c31c3c2774983e869724187795f229b21811c921006c6195eca5ffb5a75756c6559fc12d67b7603e6570e7d479a3b7599823fb9cb5ccf92c3a08f42ecb4173dced8f1f6b0ddaf8fa8a29d45aaec92c428cdef1bccc83936502b8e24d762ad11873e65b49d4ab62a720d5d3244f0a98eccfa1be21eccf4951fa848dab5e8fe89bf4b9f4db6a239fcb7f69730ecd5568126ea7b4bfd5cfa3a139e92444ea3822b77db0be7e74d842f0b20761b4ce051aa38e157aab20582476748c584375f230c3f126e21802d621f5e16b553563774a3cdda0e3fcf24cd9a0b5e957aeaee5a32c3c6a0330805aa11b40db384029436c95644cddde08b46d4dc8a66819db6da90e704f66a98d521f0ba17068cb706e21c0b18c25341239bf65fcf92bca899b780e69a4276cc994a3940ffd620c7de1c1abe02a36bc910d2cf03eae91cd375f1ffcca187cda457519ff3977a91e99bfc95e98242813ceaf3ad3e6f9cf39d5e3865ad749be887b552add5e493c3150633a16d1451aa9f22cbc82f3958ffc9a695ec89a39b921bd21d618943409068708189199e13334b22dd29d1d3ff23558c4bb5d1d1bfa4b9f02c76c83920230509c741dc03d2c23214a5d0aba708cb6a05fbd0caa7eab8a93ed6c84aec16dbe8805383b3932f7ede6b5025b663e1528998ce39a229660fad0fc37438434843c1ba114bd6022f0a34ad8e4305095454090d319225ed404d608d0835a5edcbccb9d9ccda0e1cd207a388ec61a94f7c24462009394baf199f680423999cb9b981e1e5730bc4134542a086b5e54b64835c982cab26542b3159268794ad97d7c00f023005bcab2fbbdc269d47e78bc02532a1fc20f63c24eaa0525c85a743adaa124eca1b126a77a5348f72d61f931877cda8326cb5af99d6dce4bc19e58ec983fa6c2c51e2ade4f152f8859f06a7472b6f3aab44c1c938e4feafb3f899a38502d75dcb18e9680a21490498ac02f1af8df0fbfdea1d5517fd8443ee031093a6aa0cd31f429ca05451064891bce06446400a8574d611f1a19eb39e85eabc170cc7f9a04a4099964ae468edcf0637f14b613da00be848e7702d085345a2814ab78e4afbccf495bf2a7781cc85c9c02fe502d69017b24c58eef90b0bd0410da8d18ac9c1fe6bf03c71ba8d68753a0ca0ee337f0e428ce21f167b3a077ec321457e3aad87b65dc6effdca8efb14e05df0a5cdf51c9e63f998ef585ddf571d7bfced97cd71f6710d64587a43f69262721fa4a5f710376d4d01dafd7b080230c6c7db2889200d0f4ea726ab49d4a4c2a8c96b231d97fb843b5f6b2b23f75f8c14b193e4960d3092443d3931633533c415ea57d96774d9dd05a90a3ed7091a9d5e149aafa6ceb52b9192cdb701c11f1245116ab38245e87b6fee1d535af744997b43beb732272d84ce3ff38c2596506fefb23e5f3827034e647b15e022e51f375d9d146196c5d3a688687d717f86d0440910b09b725e68b7f079f8b7ee5f1103aae8441496aaad4301875afff6ecc48444bdaf9abdeaf01921673edb3de78557b9254d29600a6edc91009b65aa2588196549fe4844d67aec3e193c37b25f193f009a252ba82aa8be4487526f705f73bd42483cc6bbe5cada7d6e23ca5ec996c91b2c414a32bde201b19ef4b79f2c83484a6124e0f4f7aaf192241d9b86c126a2ac4035a48a028530d237d6ad7aa31649f336f59a78d7a2671088bd1155780d9e0bd7bbc2ff3417cc25a2efb62143d471fcd6315b2cef72ba903cb8205bb4c3a86a245ec0b0ded4bdb1efdd9cbb177a89f47fa60ddcf4a369d1214a4c03e9fd5d83ccf89f173f34027f23b34346d8b2a84bbbe62c2d1a0a34231ca25e894c8ec5740f0fbf5d6a4fc31cda712867e4ee420bc8cfe3cd0336acb7e28e87c62d735278e7f7236552b9e4eab3fd72db800e7ba0f2f1b0b95779bf1b863bc4c4bcb3b4b1153f888749dcd8fbb57c0999928cfb09f3d1121da9e737053611b6d3923c3ef22be1a7071fcfdf89f2cfc777ab860b21a99d64024664336c1a8ff6ed13c44f8e32ca476ffe24d418f7dab989e770d621a38d7850c647a04cea9ac03f85d3802d6b751b9ca407c63c75c91639c26f863e6b545013b470b67198319d9cca0bfb48d7ef07090f85dda63236330d15fa3ce372e8d0fd21d2c74f0424347cefba401a368b2a629889b7e811167c990bcc1b07b7cf8d1e37e6f555bca0f2cfef210b082add3c204729e1cc62bed500157ac39980a74a2082a137f4eb795476c3113813b42f1dfd46bf9562a70fec08fcddf92848fafe36be5bf342e26827cd7768c63ddd1800375c2f39eec0188b803307306cacac481f96d99eb7e1b2ac77a079ea72e0f2714f3fcb34050b7637a2aeb79eb1aad4e7d6eae02a7ad559abcdbab4c3eb50cd2ca999d69fb7ea927a7a0268222bb8163ba869ad7d52fac755717df4acbc4557040908534ff9b76ea853c550f625f63c1ae3dfbd6e7ecdbac784f5f067b782bfb63500a1a49b57c9f7961a6fbaa2581ff26e86a24afd59941612f80ae38465b78e83879bec8ff611cad39fc350e475e510106bbc9bc17be388b03dbd2fac25021225000c54adf753c902fb4372000af44925b3673e3ab314639310ca121117b83bb7341c8b8a20b1eba18875a4941df7481069fb809b746d9a59671426e8e04eab94fe3b159a0a7d2a5da83cc44361ca3e39199d29ff272df29b09f5b90d5442729c6ec19488fc2a97422782410c18d1c33b1aff801f64996f783819ff9d9c84be2e13a2ba9b4c63820e91e3e910978082c383e838c607c0d30a90c817bd2a9806ec4f3c77f65c83fbb9858c2efb9703bbdfd97703a917d9d16a48587a9f5c13edfcf708209f677d32d94109bbacbd5e63caefc0cbb8903320cdebf2f22a99a248e9cb65f96d23843bd4e978e95407976d9daa1fa554f91038f60fd5227d9469bcdf96838c6930e3d64a79ec7003b71bc8718377b9751246226008b0d2bcf4c88b18a1a7020783e555190e9a0540c1b014b44b94eaab63aa1628f3d6e5a0f2810a699f75fadb9dd284670309d98087643bd71c41562d0044e04fa15b048466f7b00d50297ab26231440e3b1732c0dcdaf887b0102c734c8296de03ed7e193fc464f4487032e0d3a690371e335e629d5e51b5e648e8b02a520150cd090d362dc99de8dd3556e2436654f6607cd43cc9df951a3ebd5c24cc49b8a103a79a07ad1ffdcf213b550411f33e18971c9c5943be93e0b55600afb468338e52865c35752dc85795b392e41351d8ac7f0a0ba8d89ad4c8f2f43768b5ba554f128412364d8f6fd8ee3c747f919f910622e9b67eebcf0d05e1516d18fd10b364283e0e4192212e7e107ee14ff22dd1268a2607e2427f2d9905aaffa06b1ae9990af9f0199722a29a50eecc4f31fc126cccf7a72b0dcc2f9c4b1322411d2dfd40000ec088aaa188e3ebfb07e96966fdb47b4560b966e6bee59a938b8d5833e27c66498eaa924d37a313543b97390270389fcc0b03176a706308200197bb1c2e8eb1598d7c582f64ea26245ef9203b90d875b546aae2616479812ae9ff0ba53b83bac33acc29ce09ffb38f2320d6fdb49a4c384dfee4a368684cfda9f3d5ff829e71904a64d2064fd67e027c29d1f8190057d300a88ffa9c59b585fc47f768406ca43cf54a5325ba5d1054662861db4b965513b805d52eb6de85ecc8faaaa993c7a443684bd6bea21a5c9dcbeb39d2727dd44918b688ddb8cbeec43e7a011069f003536b6dde5acf500bf5c7252fbdab991a04c65636fa053f78f6dd9e87b6ad7d10461ed72cbafbe2ffd51858513aa6342ad6aa0b65b47f5757e569ef328e05d57530ca87df9b057f814244e00ca0c909789b065357f4decb7882e2a99860ed5ac14cec0ac34edb319530be1d742434c9e91f1bf09c24b218d0da41c9f9a0853b95f10fd985408749e65818d93076e8a97004eb8387d9f7c02772709873b2e835d08f688373eb13232f945ba30a7e241fd54036e77cb4404c82ff65fc00b3de2e61064653d18c9a309c22f0b3e4f360e6865c36985c79332aaab3368dc3742b34c2898e5b64a17e3445b6038098cb1892d618dd6def5430ec91b93dd30b229067a0f2b3573f7f73ac8d160f2b02a44a39436a9fd7803ef72fe7c62dcfe4dc8a5efae75267fa7d706a444cb3db03af5be5bd9dcc4fea2213479d07508994632152b3d955e946acd0bc91bd417b52a152c3da54114fb46733307aa106d6627b5f8f165e23751cab28523ff6e72c0d7cc3c19e11d4b7bcde0d497670c52f8ba53b29c193111651bfe5ce2dc4367b8179cb549d29e14626b12f2d0a6489e2235de6b256c08d64ae8a1c339fdaa1308d49e0e1b84931b32da00174287290acce136b2458a228ef7cd8d9cec13fab2d48ce52f92221e0bd50c04538d7388b8162262e40c1ce851fa616888cdcdd933fbf95a1cfddbc9042ae25776b9229afe83505546543800735a25dcc38a3689d02a5abb6a55afb60d3b6402f7e72734a78fbbb31c91f8fe0c7ad04552f8b0f92d63355839cfb0e783866c8740952ddf3971d08173375703a0fa53ed0539bc1dfea16124111186e13dc1dbc1c4a68bd227cace658fe2e4e9f8455f2680a30826c9f119495151b67b2c480a35d8f9af287d2b9da1482055451f5746be81a81235338e18c76570058a10c2d57a1332b5205523d396612c1ec40d3b5a1f5ba72cb84f8f5f429ddd5e8f1f67f42edfb5c01f3e8678b9f1cd7b8eca28c1c09759134c25874240336c1c81de1d4f8c0a7b07155e57eed7be00342f6b4f2e49c7bbfc2c80f0377bbf112883007ea728610d733997be0443c6ed54c2ade54feb33cc4a7da29b8cdc3aa94e33fa44a8f7d521d5ab1007ae8dee75d003562a3e686053201d0da288f2c27ff2f50fb491521e2230f105d21729df9d39630867473bad9b417351ae8ce530ac93604f06b393d90d732733443e7bd1ebcc5040a4250355be8fbae998f4043634c33fc1a88ee8f6df5307fd533053fe32338779205b09f3687c3f5ddf6b8617ca64985be88f31d9904d2f852c94ba4a5a45f10a48b2d3d3cdca9f5240ae254c30cf494f0c37c21b02112e4f39987c4a8020175c234ef96b349f0a431c7ecb51d849284693c018692bf605734b882ff5d2d152e1af40add8933bca8312833cd3b90d09f03880e4c3a006d3248e4ba7510daef687f94f1c2a34d27e0cf2dadc72b2f4f937839ba52478d6bb1a9dbe6a1855db1a1ba949340e2b6c3de0cb83c4ece669608902fcde361ae872213b75f6c47a043a2fe2ae787a10f2413fcca4258c8f915057a5efbf2b87ae4b38c02ff820d02bf4a488721c081a12b6963488aad5994b2f03fc29c67690a9742835a0932878debc8b2e54cd7bb3cf67679392d0735d2ce22ee666fd1ae09ed5d1f834d064a6a6d7dcb06509ad83575c893ab1e701b5bb439bd0ef8a4c767a22f456d3ab5a3afc34c29df0e83d29d8f573bca12eafb8690b3a513db501519ab14ae4295dd0e7d438761e7cb7184de7d433c5d291ac97927028a6f2b15a6d59f141d163e3f6e3d1f1b4dae1da98c271591e8adb10b7153caf6605a1788148a91be789d50d71964b051f9fbbc1d392e34810295d499a3bcaee4fa791e25afd6073d9634671f2f0bd843810c94e2018cb07d2a823bbdc52c8fe892981e8abebb62329aa54216ae158cd6655e1ad91a743420a68966f7dc42ae7d0e72e614be42b8a91a7db46c7f6817034372fc9b15da5d3e5f90701e35d25ab4f493b2a78c0189c5191dc133446cd3e30e6ac55f6ffa4ec218f82571e302de89a64b5200c20d3013fa15809012bd3f04cefd3e4a5c0034fe32a51a2e68e758ef8976a8f207ea1ff938aef4c072ea55293dbc6d92154889e169cee6602f3534becb98cf6edbc5d0a78d80726880c0cbeb0a867873d18307f999229e65544c156663aae73b4b666f9662c8fab3a371bf338b6d19a1f8a89d32e891a961c424bfa07d1cda8ac952b93081546477a9966271fb7b58eccbb8f3833fa1a0f85b35f37ec5e7e7c47b90514c86d45862e652e7aa4a45ae1c33e7a80f5e31bab925eb1985f29310aca799c615a7e1a073cd8ef2134f8cb922cc805d69b8ce8256bb23279a31b17defd9e362a27e72c5d3f1c205b0fefe00e2f5b3e0aae3f73cf899b7e610317aa61bdb791b72cb7e923cb845980c4d2fc95cd4fe058b04c7f0061c10d330f929332b8f037845a5f4ac6d9f7aaea3e7ccda39c091f30df70510f7e33478938cbeb6664a411b42a85e5bc9f768d7203d8b261229907d793201028279bd18672b7a7e9076927dd261e48001a56c75d2d0018314ca027b7879f3a68bac508ee505a4b9e2d443982ec5e19086c84c722dc50bd214015d9235b8574852a9f664116e2ed586365d3ae03cd3f2d1a5ec570bdefb8a117fd5b8f6cad308efc102e7f2048fbda8b88caadfdb15af3521cce323854e149e18abe2f00b81ca44c1c4cea6fdf2ecb527efce75bc577a8bbf0103f2bad96029e68703421bd85241966ea7d8f16fb3cb5c4cd02837c8c81ef0c66313409d6f567babf31e13d06dfebebb6ca3470aed0a53b3be88b94e6a06f4929c0c1fa3c9b1d18f8cf0c4e79aba61db97888da8df58f5d2d3607ef54e521142997cf0594b185092724bf24bbec1ea035dfae22bfd0be638fcf259a61959ddcff9d552169d9456643866474d2572fa0cf7374679ea45c74f3212352911df5cb457f8f40120f581ec7992fd8fd5616e4872b5fa746d3f6d9f57e0fabc129c552ee5157ea58175ee0ab3da39a2babbf0a5ffb2cdb03f23ebc912bb41d04e562f51bdd6d54eeaee2b23774eb5bce701f6863d2c0f7847a842dc7de0cef45876762e3d778e574e250020268c12e5e2b53d550eb5f80598ce240315579717434db5a48e679543f52eab7871849f456898b72c2264efbc97d1320d304ef4da56ddc9539dc675836d4a0e97ae5321ca0965f141fdd46ad740c66fa40f90f3e06900da44fd0bf9c9b3fdb9cc1939b94ee073a52890480b1089f925adeb4c1007165fb3885b542dc88a1fe693347937b9ec5caab0d901b3c613f8d0966a9a1a5674a0a74519ee3ee6655c9703c6e4416733277d15fa47f3abe396d2fd9546172d51b99ea333e99bb41aed083903c15c74ed0c292de266b4760dd80526b25732e547a547cd04014db2acd3c063778c106aa4355083367e756d0ddcda6da8f4e0f8c7be5f5a984a819895a30fc49e234445e5f8d2ccfad4cbcd3a3baa2bdb4b606a40e2bd6ae264a5dff19e7581dd6f9b6565e6869cab9a156bd462de5a1e16fa7f90021ac9020a2693ae4a3c3f259e934e93f0f62a03b83a7ecaf3a3f85d9ca4f5a7fc64d82ef52e2eeafc2e12a2fdeb0952ce5b8c0028b0650ad2a8d6494ac85a59a5c3a25831e291f0e5691cc86d3ad7116f156d5d951b06ef692cab6893c392c82de5350b6bc579218b9f3b5cd35931f6b0b2c9321bd1d1fc7b2afcc2815cd4a7d9c35067ce59400de88154c14178b40d75a4b32db16c2301ec7934fddd303a6e5ec584da906610e584ad293b0dfd783e63b7836b42a62a20b299d44fb01aa070ec0a09141f7d23224517ea77609c1ef4ccbaa18f5e1830309a5fb76224de990eddc7677d20105a27bd2c6d1a60214a423368da4a82c51bdba5b61a82b1fd9355b795edda36ec014323df6a4d80c17d777996d0c9a95d61f51c09bd1300619217ab09bb16dec52b012aaed4a6fe56af93e5ab4b02d11568826c29044ac45812519b6060a20a2c2653eaa8f2c902e026450aacf3541b2a603ddedac7e37382efbf268c9cfc75d93703dd586b6e82ecf794917e3cb4be1b5937749dd3c3b39f51c0e4dc6fcc99a368a98d5d2fb76b6abd3afb9bffb16b18139254e36dd7fc6a0822f4aa5f23c267f0a7d978588ee1c0bc2b05ef8da2c56c07bcd1172ab7b28123e31bfc935e970cf7ca9a230795b55b047a55f0f47db5c45dfcc5080b9a6aceff2e31334a226382654fa9f90ec04c86daf773683a260d0d335e4ef122df7aef234661dca4a3566343f58564e3f7ff3b51f46b3079f93646950c4f94d386be1e402da32fff6690e190655eee445320ea7949f942ef5d693c619f17b72cab18b156cce0fb0e69c4c5a00082ca0958b38a15326f6fde5d79cca463999174cc471e1c94d2cc07c57865b262b09cad956d825def0957cb55b8b058eb32140e9c300343c8fe8f393d26da083493fa59e6b4b89b2c7a6268f67da4bb2e7e78698895581ca39f680ab5ee136ad5b4282e04b3ea74d5af48bc78ac014ef58ab3d9598e4c626a4ca6b4229da33456fa1cbf443676453bb3744dff641c8191962e955c49253bdc9de9ec6b920ab76fe6e212512765642efea084bb3628b2385c7fecfd981f3f43d7ce5c5c3cf10b034c4f83434b7f8167e1430cb30878f2dfb0de4a11ac85d622d756cc8b2dc0b6d286eb2079f305b82d4bc70017ca9c4bd2cb747f50ca4246b22a070b9d80c90a2036051af43a85e22cc922f944a19fd152e54fc527f0c05e12d190d490bb047e2f5016240346a313798618de2c40ebc09e3db0209b60e5faed7509d56cd256f382ef97ba8277f67f1306fa3e093711e9fc57983ea510609d3922b9b3385dfe7bc506e2fc3c9383b40d1b343113a6d77d42859101f8c686030007c4341b505434348d6cb59f7c17c3bfa69e49b5df78001ad74d8638c07a18ad2148c611929d43027c02af3a51b1a0f78cd301f80544793515bcb40494ca756ae501e43b02aa74ee8b4f10108a15e70325cfc398029dff0ec6f4b4e37f1fb8b7674c2027abe4a6304eed4f16adbc076c46737b6b8143b16f513b511375860ac42f0bfd699aa6ebe317fa644fa2983503718834dbddbda59429460914080009667e48c5f84933849f32e9d0cf0be80d7e564005f94141ede2670495063f1ca45dfc5cd00322210a8990845a258f6a031d948d1b621f1ed0327d6e20d40786544b9f2faa973e4404f431000a449f0e52297d3060620a384da07504a932ecc1a18827825033f0418581cf190ef8c890aec0274c2a051f15d0367c4c6081cf0757f86410031f618ae58974cea00bfa00b2538493c29a74cf9e1c42d843439a3d62d0437bb8a8627bb4a0c53d21a467f658e1b3472c8504a47a08a147fc01e188d48c1c366d5019f4143fd063430b7a5c4067d0e3452d41cf01523c7a0aa0cea0678334909e31358443624ca8202061003ca90643a858804013e5d9415d218f994279c8289187853e798627e421c14e1e2c681079a8a485a4486130843a11888a1ed40f1126bc4195c0d343193c38bc802706940c1e302a09785248e9e02921033c1e80c15345152652c938a16a80003f7cd24175541684482f50a3c21d34289e3b33a41ddc69c1863b5b523577b27070078404dcd100dde18e142b504ca1c4147ed23a46a07be24c6153840e886a08620ca02e3c9c908408355cd9e08829570edd29a46e09840eb1271d5327fd018e5a0036ea98226a4319d4073205f892fe49c18e0968201052178cb092a631620aaac3212b85d22981d40ff6a042d499010e18366999a2caa50c9a03993c5fdea480e260821c109ab063258dc2ce94120ea9c4423204d2614f4a449d14093872d8d450449728a31e804c1ae60b0a430a0930c10d08a89a3a56f2d49992c3a1170aa55b02a528ec5187755029e0a484d8a45c8a6a0c65b29041e97c514748c18c09478060421156521e8a98a27a70a888427a02a183f6a031d489034795c226cd5244cf941143c6cb970e5210c104f50b08a92122ac0041c414d58543299942289c4068147b92a8a38ec1f9c2664df1d07a9679623dc96c000675b3c58813d43023a46d3a20814e0650d01163bf6e680eb15f8fd2308421f6ebe6b5bd8710c4eebdf794b3375d4373c3043988ca391894e49c0dd271f5390648f778fa3a674b3ac785734e0de61c34279c385ad0348e9719bac67941369bb3be59d335eb95b55cbd960525c7d3d7b22cc7126d62cdab29e78d0c8d1c22d2d5e5f4218520849e808ea5cf502d5ed2382fb0ae99f6de23e9835ac64ccbb22ccd93cf8cce2c95c964323548469aa1e9a6e53888e2185ad34c5b592fcab9c2fa119a45c5519735353232325a5734250db23799268708d6351392fa0309e905120b16ea8f5d9323484e1f140e14269c44291a15ac17e35851ed94a669966dc4ee1460ae269b436d84fa4cce2b5292952968914d718d5aa754515853487bc8c27ead690bab0833d68b70acb045ac178590020dea1a8503059c44ac6b261ea83f6db77a110e20d6c4f386fd3a7d60bd088706f66b64351c3270bcb0f9f4af94f5da1239884a0c36304071ce96392ecca921ff80aa78d2a4243587245507358dde67b814e594c9c22503ad430863c51fd2ac7983e280e8d4c0a878e683517db5f604f5aa183a883b8ea599f94b4b4c79dca38c96d5e20856ae7a372ded536f36a8ebf561fc58bf9896581d4b496658fde7aa46a3f902d6bfc76ccc9a4f7681e20f21b0bef4b5aa4bac31a0aeb3ce5cff0289e6c51f600053fc618cd625a0ea109e94978e48d33b47a837242da93720d5c02008a28ee1102710d3106f0cd11013113395156e074626963f105b0c0f11b3086ce8389b3c442558d081f834d4391ff6a080e500308410480637eb16dc3001c425883686281033146344a6a111194ece924b78432c609834cc2318e2b347089f220721a478822803b1682888d8828c6116de2144cc372441448769bc101e62d621f7d981c862c8410f81861904446b92d04234e2310444c7a5f8f3e505e20ac4a9e101888888070c873e840f0a44446038856867061e8833863ce43848107d2056210d8f186e319d10983642314536445c89e183199726884ee4285ad624208c0d39cc81a10c0c3770591a26f23830a0214a0dc1e462de93b9781b27fa1c220241cc21d7b0015145d4500ef10ed108e2589b2f2ab6604921aac332441c882f8673884e50c30410c9b8a9734340f6a00d31c630032f1a80389a255996655996655996e61622882e862e74492117f22768c86786d9065f8204b12c28ebb1e251941e84093e34412c00d19518e6218a21ae56c3e12c5fd97dc66871f30686e2161bc8b4c100e5824408c4288839863f54f961662213e173dc4fe69363183520e60ff2140820d2866aa0703d5e08113b20ee50cb869a868e8728836386501b422be061e2cc0b3f88a9e0b263388878e4868885f8220426901063e7cc091868178a6db2186d39876afc10b39937c4744835f422e410ff381363c2c0f135e4983ca64c268b228216381c8041610b0b34683145366f8ec647a334f41e8a382203e17500118743a20a441a5743b4f40b5434a57a8688e6574303eb451fc0b053ac177b688255f2ab2380d2588b6bbcb0b16695982ceca41d38be03a3b06bd66c2687682051b46f01fd15d458da4abede56d016d01666ac3ea232d6b1307a7f12aadfdfb5d5aa6b31d69c77a04aab8f5ea623ac3056f2c7c2ecf189bc409a726212ae5f4c574c3ea6494fa04032ebe2086db1fa48ee9914ebd7ff7e967c5db5cf279f89ac22ffacb158c7c2982ffbb130f9cfa7f91bf3b3578d6f9a543e2b0cc9def40e2812ba621d0b935d53e940551cadfe5ea2beb463e8ed534e4c52d62f2626262626a7db9922ad2b9a2c056a54b416e9777777d7a47657b2bb984949eaaa5fa9ac9db5a402aca4ee830a4151d7a86ed5ac17d790c0c4eab2444ac5d618b437976826698e664a1ad6d51f5df248dbb7b15153ed8d8e234992245913338e5accbaf7dec574e93cd1a999cc9392ce24e879d6cc750a2d571fc9d1dff8de9e9fbe7e4d15d68b6aa0606decea4333edd7a199f65f69a631ab0257db6a5fad5feb8aa4792415d5f8c0eedfc53559d8dda5ca678db52d06059259bdba8902c96c5ef7b37077f7752c0ca9a9f6485b13ad5a07d4510ca2e49c167b80c3ba0cd45d769440a12c9ac97b68c36616bd601d5b536da5d8439a2c82deea8fadb5d3fa75b2e3f82ea0aeabf6564ac33a3b46d939679aea90fd2669669334b50601759f36336b925f0e5187108064c7cfba560619b766a394391f81ba0f35f225d66753a061d6bc8b7efc5557ed71490762010dfb7573723b5fee0305ba8a7cadc10a6f3460bf52360a1e7f2f6b49b7759319ecc9f58235ffd6bac81dc7bae2d9457cf9e828667502b0d92cc7512542d63132d2e3d7fef2b72a842403b8999396d6e3622eb7f73fd36a8abdba78ef7fcce5f698b41eb7737bbc96eb7561b8ddb163070d76bd7471eba33163dd0d1879a71a353e6e7fe782e978bf366c33ad1a8cbbe3f6b86a3e7170eb1fe6b95ef1aae9b8db6c4dee0f5844eb7f405e1cc600ecee15f8aa7738fcdab678bdf8056eb5eecec2dd91dc7d85bb0b711f8fa2dcc7adc2dddd60af5df25aeffb43eb7fedff80afd5c414d6be4c7e411c2eee0561f788d6efdc5eafd5b9fbeaee46ee5ee4eeaabba7ee8ee62ceeaee56bfe35c7c8c2c7c1bb5f10b8f55cc08f83c007c6b998d70b83e1d776b34dd9a070c06eec64eb492aea4ae7626dedb0b0a2aa743a170a870fa8b36d05bd625e97933786795deefb04ec7a5b9ded69d7e379e95e5ecbf503beaeafd53dc1af0b3bf0f43b74bcbbccddcfd5f5b87b0b5fbd8dbbabf0d5f7b87b1377f7e37daf5d02f4b96fd3c33ca6ffb9bdd7f1eed6ef7a41a017fc4deefeee7ae7ee49beba0af06b8b7d5ca5bbe717f8beeeffdadfb9bf3718bbefff80bcb88d7faecfed85f9781ff3da37feae1f2f8e5bdf0be4fa5697ee1ec3574f72f7235f7dcadd99007b5cafbb04f84e629eae0d6b75f06bd3b94b724cdaf749f7c24f4f4edef6dde2f5dc9ddc7a2f910575344221eb7b177a83a2451d2895bfb3bcd43fd67c37fda629953fee1fa1ecd79fcb1a12cfd29f1f4a7ecf12012dc2a2ab5419bfca58a3726eab274f2cd0bfdf82fce33f09f364acca679149644fbe05e7cfde6b4fa87c16597b6241f9b39aac66c159abf259f9c9276bfbfd2d28f30f2de2a0c803303208598bb2f310d4350d45b57e3de618c671cc192cfff9a692fdc4f5f86449bc9ffc1e9bdce413f3f34803236b60e7eb2fcb2ffdf9ac8de3de7bdce3388e7bbf7eff5f01f52fcd9a8fa2a4ec5dc8ceb4371e978c3425492c98ae399b6b4a9eb0b2cfaa02993dbfce9a92273a97e5179891bee154691aa5e52cfd674da83f7ff6ac347d99391b7f360645f659cbd428421a1504b2f6cf68635572d67e2a08648de3ab9f643f9966a13455fd19fa5572d66c2c7d543696be2aab41099364f6f9a1a0af57550988f9259859ebe2447f59ebe2643f02a73a867e95cf9afd491b539fca67cd3eab35616d6c0a140bf6cf6ac23d56e5b3d4dfaa042a0d8a05fbd19a70bf7efda3dac0fead67b42a396bf6325a959c257b9436460581acd957c959e8a39aa67ea6a5bfd51f4a0d8cafbe047b4cf6a75a83f250660f054567e5e7ac220d56259e882d6b605d9ce8efe2647c23fa4955a981f1f527d946c677d5c8fedfbaac2169f5a50d74a0e7b6a24265acca53196b619420c0eed7aa124703019adf7d6d4cf38f641283513f00c5df1ff03f6b4a4af21332ebac5930cb3add1cb392ae01c91f45e8594956643d9165796ddd4de3bbebf0dd4466799693e46f21e4a380165dd0c57fef1d64fcfc5a6b4dbe675dfbcdbaf8fbe899f66501902d743e59e5fb973ac466595e13ceb2ca771d502c98659535e12cabccf977de5d9a088542a1d3ba98efee269515ccdf87f83f9b7f49fe2642e1978cf55a17f3dd7554f92cb366c12c2b0c6996affda0f98368a150af6cbcb2895874cc45632b4a963b5122253b5159d680ac466c7e2d2c5357830859c12ad989d6b124ab98c9665867338b1aa1a8ab41b2671ff70f0732fedc71613376d77e33d66bec06ebcdd85cfbcd582551fc6bb3fac71351f7b5298d94fc8364211b8545d5214a72ae2929c92cc9ea5a6fc66aa55c0372b2f9972831d9fc59c83a8b3a3aae909dacd77a33f66bf437e8f9b4ccfab218eb843a60fd651f6417fdf9c309d961bd48a80d7b83f5222114d8a46d95ea26f24fda8d2dcf54339199d5aa92154cf6fe5fb29f91fea32a44b6d74fdfc83c1a6ba9662a3fc656d2afbe17095d618d684adb7cb4043b6b4b325b7ef92bcdb58f45ef3846762dcb93553a951860c18c6a5f60b27fd14fbfacb16a911007ac17096dc09ab44d5332b288d82cc6965ffa2bff5e59b08dd294f4979fd994a604fdf2222143ac09e4c66615884d7663dd71cc7e892aac19a4c1c632d8b3961df765fe367f9bb5ec386e6c79ee2f6fe547f942df1c62c4a26fd26468ed741c7ef3d9cb684a40f610ac155bd6becaf751579535b0fd65f96899cbfd2563bf5c093b6c1603ee3fdbb0598c5542109bc5d8f35147cdd455133dd39276fe3ebf046293fdaef5d05daa50d9f973075098e1404ad649fb32d92f474d06f214f62c7fab43b29890f377ed4bab4af2c97e6529ecd645664d49b3659ad11250d75a4873350d306e44838883c048810043820e1509b1cc36227335b59b4163e7a02b1b110bd68b82fc08c223e5d0a19cd526cc42ae5820214aa8f244137f341082baac48499bf5a2201544f040634970a006924215a48199c48a1760e818fa322610a23259e60f77c63d269cf4d6439a66dfc81ca5d92ca881429005d2a2aa855e500982aeb05f7ffb72e66ebacd70023758087de9218f1267d8dc6e866e2a133726544249ba6a090d165ec04a104dc8c0c418b120b24abd862dd900624b36828c92a832e69c73ce79fc1edabda6c464f7e7d42cd5fdf934b52c4d5767ca9f5d0da2d9fda8996eda668b481862d1d9fe205ba606d97bccf9cc24a03e9e9adc63a67dedcf7993ff95f757ae956c8a48d479914592244992643ac24ace41d1aca310e81f24d4a463eb1947a3c47a110915902861bb80fad2ab46ac5f37f67635be9ebaca26a991106337eb454089d8740727d8af1b1f04a818f049efd4a1410826d49c00088d6a0040335001d442ea03a02d42405950220081e001200d50040092a26a81c208255415fcc431e20071d22a6c96f8a383a03f3518fa3306ade14f973e7f4ef8e18f084efcb98222f167ca0d51a4182c8108500ac59d34d11c3436f4c579405655c0d0236452bfc863ded9b511fdb33cbae695fe5a7983edb462f61e3ce89dcb3c9a59cd9b04ad4fdcce573b6b3dbe4e654c99ccd9bc8d50346e59cfca539b39e3b2d6757699657adc4b724d0773de38b20cd5f934b3eea167e8195ac6f6edd928975a67755cf7a85f68ad739947ae2c5bca28a933998bac94b4101395e9bc75a6a6ce0de433e7adf39815c83234968ea1516d6a32efacb3ceb82c43a3da1cf32677ce567967a62ccb69ce39479ea167dbcce79875ceb89ccb161a298f3a9363c6d268de7a46de5beb518f194beb0c43cfb22c9fa3ce39e3b20c3d33771ecf31e76cf539c9c6a963df20f3ceb23c2665990c874ea03423173066ad4b6dba7965714315c859679d73c6e1a687b9045132a10806f9473004f426021a1f4110b47a5a70200f1e4f422bc2910c837091b46efcc8d08c96233420030d0cbf081969a77a1019ce28a4401be386354c7ac26a8bbe58e55197ac68b35c95274b51a595e884aa9fc26d5a8766e0d0f2a29df070013afdcdc60d149c94a0a1f5298d77a1c251582100d7223df01fa7b86f770adc8dac453eb83bd3cfede580712e2c98bbe28a1d7881effbc3dd6bb83f6011d7074402bfb6366e77b9726c66001ba129336563d15965cab68c34899422b593a99c9d57636a94c7b4cc8d4cb6ba8f463a534a109645da948d4eaa8cab1684b307d2dde85424454f29910e8cb9d4a1837007111f4753f4381b89343d21f42366e38d944ce28e68f490a247181b4758a6f1206fc81196250d23632c8cb22ed841a460207c218320454a9106008445d809cf9c10ea886541b43e584dd95649b031832b52ceb1a894918da4a4fc21ca6ccc193ba118a148a3648f23136b1ce24e30466c05c93403323ba0a460b4616289d5300c22c6029616eb6d4cd511d1208d100d729930458d32ca0fc4d839cc175552662656393b8bb69590205bc60c8813c299294445722aa0f403c84ca6408a64a7a306a18bd1a96a56e256a8e50cfd51ab808b70762a3063cb8a90dc2b99cb06ca1999a3b4c1230b0dca6a9c0a9433f385ea43b6341691b9408a71008c1636ce1b438e1c206576da4c2955ca4a8811331d4d18246e57c9d2b1c6f73065e66c7c22878c573d32a9b469648b9becd46dac1f3992ce590b999594048aa05327d3b8342e952c086d148d3ec81be40cd9d218c3086acb1013da9ef2e6da38c64d12a056010838007f625a7883668c181654d0200a9426301897abd3aa80020902f08003488c10018002b82b29a6030c28e0471e7648a484a03f08f030a006e38589c20f6dba7069e0070238192c52b44c63c686305ebaa890c210052d0e30d578b29950421224891019da924089416772c0a30fb0f0b878e498995e3ce8c04a46049d15bce0b0aa5c20a1b3d38ca134830c14b83b068a004008901f27709001062af050dd20a60516a240f080555512d218c49b420ff0d85125334b17a8d8f002b100205821c0014e38010b034578e4a891e6433b0a0dc548e8076940e31f9d87c4938bd043e8393239691c1d8476a3cd6817b6180d367ee5a54ce39441c6505f68179a45463a5a41aad047791d8b344aceb4ec3cb569927acc3be7d255a3adb471108e1b084722a58dcf661352562e42924ccd038a90320ea14617a90a5f4a0d842311598b598ca429425904a3047b061a97e909e4bc2a673b47d28c64233c69102251204566b5b53091de11928984640a638e308d6b3808654945dacc413e9121546181be18416cbc2234a219d1368ea3a733e928911879e3bc32756ca3ade35441b817807a2a672518e1464b18a3130ab5f3988e4e3320e40d33821246392bbf52a4144996246b6146b0a5102b61ec3162a40f4203be46dfe70c9031e252a3f268cc1bc74e603492ba28b50981a96416215914e512dde498eebdf536f7b965b318e3361d30551819991d99a599b7394e8d4f633e5f6c2529321ae4176111182947e5a874fa101bef88d572ef89a6f843049d20dea8f121d885c4830e7e6421b0c30af85362d0538dd5e834279080812289808823040d2c371246e851c29d21dcf4706606315d9e6c071420186381df26962064474e9c1d628862410514481000068a04014263868b1666ca4411d3820550723262007f348aee1ca1c4274c34c5134e5030818b164743f4c0430e676690c1052c1c6490ab200208182822c40d103cfc7003090ad429c24d0f3b9cc1818b0a562e98b204a121e49cc1c1cc0b63427727e4c7914aa80f9f3b6a762863030c2b78b081bbcb5540c1041008f99103d774a4ba01428d16133c18737715004008901f397045eae87df8b801620d0f656c80c185153ee0604c000010b22307ce6a0aaa49c5d1e889faf039628d1a1e762863830b2b7ce001071b8ce9c9098002049e6c880e1119625464448c0eae5809000437e206569c3409234bb4a7d05290877414e7979105bd82ee92a334d4be651b8a63dfd8df82868e91954c18fb454e1a5de416b2152a54ec75344a8b561546fa028d313b92996769eab224c99ddd1d86fb6c958dee0ebf36b7b7d5c63fde1bf6e4ee803ade2f28c33d9b271d2f7d3d59584fe27a3e697aa67f77c7837fbc87791ff33e8793b77d5b2fddb71f037f0ff3fe04c009643dafdcb5beebc7fbb95e4cbee977e878a61d3afec7eb72b7ce7335a570d77a2ee0c3bc8f9d6c09c066b34db0d395543777f2811a99b59a4d1c7e6dbfd78de336ece98df7d67a2d25287df8eee7c6edc36bb9b4fbb92bc90489e7bde2ae9fdb7b2ee0ff0be48adf3686dfedfab5afbbd770772f720cfcda5e2f9dcff53db93a5e0f7619155914b2e7c2bd96cb0dbe31fcda7640df01ee6e80bb2f3916d615961556151615d614961456141614d60d0bebeaeacaeaaaea8aea6aea4aea2aea0aeaea7685657565656555654565356525651565056575b3c2aabaaab2aaaaaaa2aa9aaa92aa8aaa82aaba5561515d515951555151514d51495145514151dda8b0a6aea6aca6aaa6a8a6a6a6a4a6a2a6a0a66e535852575256525552545253525252515250523729aca8ab28aba8aa28aaa8a928a9a8a828a8a85b1416d415941554151415d414941454141414d40d0aeb7675b3ba55dda86e5337a95bd40dea76bb35b9b9eeaee4eb2800f8b5f982bfa7d8c7e5be409d00dcbd8071829913d38c09ca437902fc3bcd9c6604f8ff7f77afb93bcdc719e3f9383e5a38acfb0514dcfd85af1b03777f9c96d607be7dadf1a5cd9497c7fdeb1a79a7883cce0791a91652861ef7ba46e0234dda056e9022c1fd710dfc90d249f5785cecc2ee91d7352295ae51801e87248acc1ad5813f0e0905513a621749940c90fbe3bce22e2f1d30ec07540c2b54083a281fee8f1b000f89972e6eb3a056dc0cb93f8e5d00defd80593c78799c1377c803f0006e143cce25e2fe82af91076e38dc5d86afb7d51ff73fde024f745c08dbe4eb5316244f614f491ef7ba4c804698b444903cd5784add1fd7a45dc07627cd8e1784773c07d826ed02233c3122c4c6806d2a01d63623e48ffbf116c0c1c38a038c3fae49bb007b8301776f7a1dbfe3057124c1c1d4f45d381c8f243a70b8225b41243890dcfd77bc131f7f5cccf3f188b8717ba449122718dc1fe782b5497c3861716a92a4873feec7738ae174fae39ab40bdcf073238efbe3dab0b07688e9eb8d176e0c7f6f70ebf706b3e0d706f778718f17df48ba71ba3f0ee8f5c62e12a0d711777772d7643e94a1c84f98f1c71919e38ffba1c2e37efc48f0c7f998c0dd2588c046d8e39a8eec607a213b7f5c121b0178dc922444fc7109d8c861e36a36c321b1919463e2fe9aa0785c931d7f1c1cf37caf1b967be38f4392ab9ac0c04d57fc711fb7dfd4e427a449cbe3761716fc186e8934f968bad174fae37e32985cf370f723be328db9c3af8d8901262bf7c7e580716ec70bbabab617e6bef06b8377bc20bce3056b7ca991058bbbbbf0b54613f76fca31717fff241737717fffe473bb9f1b16d67a1e9263a8511e10c50182fccde9dc25b607d3017b5355c18f5f77c90fa873f7144af8e0801eee6e801e038830808d01665a30208b3f6ee73ecee971eff4385ff09783db9c17dc7a393dce87bbe3ac6c06e8253e6ccc84593ac0bad4c1e366b37fa7c7e9dc25b95eebc2b92aaaa8d60bcef57a412e2fb8f59aaa0ae666eff4b8d7ddf2057fb9997b965a2ab22e0959bab97fd33f6ec70b32eddc2345dcb38d2577cfb5b580afb500220514dd3dfe05813a5dfb3fe01b747fcfc4fdfd6ed7c2afad805a01496b0127a1a6c7bdd3e37ebc2ede0b7c26770f80bb8f11d45aa891e0ee49bed6844ddcff7170dbfbc7d588d47cb8fb8dc7f5dc5dcdc55a2ba221f27f9c13172c067a3971c1763da02ed7f5e3fd9800dd9d89bb5fb93b04bed2a65cb7d2445869566e3c6ee706dda0927f1c2fb7e30563f707bf36daf883dcfd1f17e6c6700e87cbe1583f852e9eef81bfbf208b1e376ebbdc9ebbcbb93ea0cedddaed5a17ac8de11fb0490b075dafd8f501dfb0dcd6ebc2b9d88577bbf6e50595b86fee07e4c53af7f703ea72602f9049ecfe722e581be75e176e1237697f3cdf1bdcfaf17c6edcbeb9d8855db01cdcd5beee9236d7f5e32d01fa72f0ee07dc7212f7823a1e17176f17ff5c5f0c07bf766daf5df2baf18f17bb5d6f1b737101e3a02ee724e62de1c5ba16e8f5b661612d18bce3059bb4be9dcb04d8ebb5b91fcf37001e9cf3d2c5ed9657dca5fbb941252e1cbbb0fbf678f1af0d2ac9b9bb604fd7c4757fc137cced7add25bc5d0e8e795dc0decfedbdc0b87d5d26c0b01c93b6d7eae09c93aed7fd39817740deeb86e59cc4bc5fd0e7e3e55e372c07bbba5f1b84615e2e76e11c701784e15c1c047ac53c26392f1d30cce5f9dcdc8fd7bebb1cd8dbfabc743f772b767bbd36ec496ac90b847f6e0c0c73df2738feb9bea00ee8a3bc727701f80ac38ebbbb6f306e5daed7827fc1dc1230ad77bde0e0efdcde56fb73dfddfa180efa7ef76bbfd7c63fd7c77bddb026eec3bc7f1c4e5c30772b28db94ed86a30bd8d3e1ee3956183060eddab72bcc81186e890801f2c3492f2c8c855b2f2349703822603a602f8bc7ce0d0be3bd318cf3c12d131d990177fff2f50511dfb94a3ec7bb5b0f8c3f86e35eb0e57277eff6b678f0cf4502bf3638e6f9783d9f1bc34edc9dcaddf354d78ff7c6488ee4c260d7d7fe625d1be6032680c3e9dc1d50172515e4f1ba46e0dceb8635697d603a606febedb53130ce35697d3c7434697d2edc6ef188920aea785d234d5adfcf9704e8e28dbb3e2012f7072c92c4dd1570f701f8eae2450b430ebfb65edb6bd71658dc66b3d588dd9e53dcba6fd7c7c0226f83bfd7b6bda0aed7eade2be631f9ae1f6ff70bbefbb6ef42808b71f06bf3825b2f2fb8f562f1c63d7e815ef00381b117dc7a3dce855f7789fbfe4f88fbce5df2bab07bc4755f203a98e7c3e1e09f0b068c71383818b7311257f76b7b6d16eca435e2ba5c39d8491b06c36d4f07410e2bd2123d5e700bca26658bc201e4faf170b8bd5607c35e716bc4dd9f6c40ae9f10272f306e77bf76815efbba610cf45adf0b2c02c36d2f011f5ebab80d83793bd8496b0476230016815fdbd3d353d4149795d415d41354547bb392d24deda4a4a6ae6eae150e376edf18de0ac24f701c0482e95c2fdd53ccebdab95e70ebf50be270f10b0c0b0bc239d7d7be5c6e57fb02631887737dbcf8177c57e0b0c2ccbac28b6b3d4eebe3f6ddb88de1dfb97158f07d8109a048dc9d88af2b88e45061c7dd18767fb9d78d79391ff0e5cae9dc30f849e72e796aa7aeb85a28ac28f736b5a3c2a2dabadaaa6aadb07454525ced14d60eab95baedb6a4ae74534fba180ebe4fab0a1de220d0494bc40909b5dcf4993efab823bb8942de9147d974a34cb6c845f98c1aad7c8730ce30f57992e3ced95d689b6bcf0d8c08643773906e5466cf3993e49446b5e79cb756206733eb9c7739009d7536758b233997d9749d55dbd665c934fb3c6a3d7690c79cf52c37a1b3ccc93ceaede6fca573d6a7035a49675d8e3a07d239973a37905de4bcf55924b759945be49cb3c6d22cce9db5649d4b9db3deb9acc7996c4aa799c799c9a5bd239b5a8f507ba6756e32aaca0418a15020db88f6d1f5963c6ea691d4793b2942d6935dfbbaae9e3d8f59e741f9d43672d6a4d63b67a9fc94cf9c6aad759940aea1f5a8f36d078f7fa884aad6d28218540c2192111901240000331600303018120a87834114032926ca1e14800670b2385a3c1ca0cb2181288a822086611884810006610000600004610086a21094fc4bc5b26417d2ae9f62135f1ac2fd3e76d3ed79b13b85711be45c90cea92e161d5a3b4eaedb9b670facde94e2a79db34cf2f76b08434ccedbaca9a8fbb7c8ec32b243141f45cdd9b5e1ab378e5d265bc3085bb6fbdcc4c0ae14ac0dc6832a183390fdd503fccf15f8fbd504327afeba26dcd51eabec354bc4be4dc74ce370d2ab4c297ba9762fbd4b031515d432a1af491c7feac1e9427f9383d5f6f84d64a1c967b36637cdd3f6e567d3f7ae8eadd842e74c99bc6e0e6f02ac6f364d5f025390528f84343e22db877cd4ac8fb06687daeae1bd3a6688a0c2f326bf51339a69c46c816999a487a45ff2033d62c919cdfb1c46f113c8b7b53395a67b9d4f51325c4c44a858c6017b1fc621062625b01e1c10fac4f5b36df0e67194b0d29694a22d4f60af453f4e4a22a84c498226b9103a6e0aecfd10a513990015ff753aae96ac170dfa9aaa25ef239f9779daa1f0764ce281e9cf71cc9542f590b10f837580a63c00b01dd7d10efd8d93b4639eafbb27dace26e1eea396db4c87c581c55e8e590eb835f66a6b81a7a76e080b5865e2fc0f7799dfdd6fbcca9a6b1b1fe03437db5fa5b8146bc8794fe23e25cda49439807ff1c5de0de04d28de3467ec406145f8db8706293b480d0d12dff7690e0ec4bf861013d303709bcfdd6870040e188fbb78aeafc7ffa3f18c001ff801b373619e6c6dc5da028d0931f0125e9432a64f6b6054f47f460b0cb6852492852df5ec7624cb93d5dd6d14feedf07f34170c66f711cd07c275b55d6f4267007b44e93c40fbf5652f36dc88c3ede9acae598a6ac500b6d45a5d704c64208cf77e50b284bd5eb7e47db0aaf9862707960e83e78d7959becdc7eaba14ef3f236cada63a12f305d4d46c3c580ba8edb90b45ac37b97f8def9f75ed96cd5a677853ebfe302987c4f18dfc1b0e3e7c09475f7663422d1852ddeaf6911d46c10fbd7c2b02fdb5ae5d81d2d1ce075913e1fd9a2306d8d856207bf997a3901d30b40096f2dca4ada59c103f13ceddd9fa059ce894ad53ff1e44ce53918ed5e1d5077c7eb26d8e343b35f95c68a6968f6418a2dc2d7569747d28fd4aca67f3e884da37fd28ef05bb468fe578166679f8d3f3ef422c01c3fc2f13894fe3cf92b5048f0175ecbd580fe086239c9fa50a71820536abe0bb7ab19bbd514196d24d7981033fb3d907449cc624282d78bc794fcadb66a67f2f818bccf618fca60f964c1b2f9cb13af492cd874aca66cce5a84aa3587fa3c5bffb7919f033d65327f912a0115e816f22e5fe8985d9ae62dc02d1de5449b83c688ed9a7dd6ab4bbbc64b8ad15725905e38335e19aee465efe7d19cd30b3ea80016f7cfea0fd3107fae267cc042b6cf6f907e6f9a55efcbb742b5a5c7cf5bd8753afe364e34ba5df6403e69fc745df968ca33252a910ab18c85a3da308e880a2157f52d3f9cd165dcd5b9d3b7fe885ee1aa04be318a9f11e392bf5c04b4fd885f053dd7b9dfaa6b2ffacedd018e5007153a96e8e8c59defa99cf4e4ac2718a773bf4ba4946bc6c666b35e8e7a823ebd7077e2242e8dea8f0b8455b1678c92521bddaffeaad727718eeb41a5c1259eb57376907467c1b93762be537c70dbc146f39bff01cd4ea70cbf950c844814e88f26f97120137df0a58e0a96ee036c7932caa167fb935fb756f5591c267fa398212e3ae08af0862e9398ca58f30ae65383773fb28f79073b0ae00b4dc286d93af1888e334bf3afab2d54cba6e993e115b4fc68de63bf396831aef39f72f1392953b6c5b6ded4d4d192e14556a128732dc8bf1d249a6af5e78b9215367aa96d345eeb2db0d7953aedbacdd9563ebf6a6eb8fbfa6596877caa504576aab0da4ef610c9c1e40cb16b57d1d6d052d61f5ef05cd9802973d5d2533e741178350f164032eeee7c8d7ca2c19550ce2d840a4f8dc77351577cda62b1cb1a2b49584b58ba591e191071e225df91d856c488f42559d99aef7c73cb5ed63e64cdacd3ad4b8e351aa38c2817f82a84b4eb62c1140d186d327ec2dd9ee215fdfb7f3e7438b4ec38b799f303d6de85cbb77680259946c42ef32c25cb5eb9487085d31101c34962891e54968c450d994e2fe7ee5bf1a232a08608023ed573fc12d3699ae9e4be180d8ce379cd707e5a6b38e03ea81786caaa5cfed87d1c806dfce11459133efd06cdc3350a3906eeb3cecfcffff38bfc7dc58f69d83102be55bbfc6d23bd8083c7436bdf3b043159b39f37f87c21a47e11c0f25d5de7b39270537aaed6f386c2205cee2eb39bd6105e9aff5d18bd0b861ddd0e68791d9cbf1eb5f467ee98549b3f09aaa8d77e4f28cf46e6757595a925db9452b990cbad3f8bee575dc58a568329fedfd4290d4ee7742c88215f39a4a9f435edee7bfba93afc2f9b62f1e93023f30df7e99aba59aecae94f27899f2ff0ef101d70e88c776183f4d59a1d05c0d0acce0615876bf798ba1cbc4e1d8b47bf1b6ab3b5afa0a363e28d74be8f9022d5b7e66e4c65d55d5fec70cdf8c1b7dab7db13bb07ddd723f6bad53409aac82ad59a056c3bc0eaf7ac31d15aa3722cc8fcaef2951e36fa3da465a35c5d16feed21056665a85e2839f2511ba1111243c109721b3d172e175fe579a371f9321d1f789e549ea586a67b4db31de9b3b5f51a3278cc1be3ef013e5b57883c8ee27b17d8bb235f95d854bf67116cbf3824dcfc4bfe2cbaf5048a8c682e02361262a440686df873f21b82653fdafa34a978c28760522ad3eb89db9b1df740db352fa23d92ec12df78d6af018fef6fd5b32f02ac4155e666ef1aff642f787c8b2c917ae787f2d2dfba38c5b4497807f3ed70b6ec726a12d6734bea61164f934c3d32ae3d2a61c252801678f9363e0ec06b50569911d3dc4f02b97eb28213e3238a7405cb1d6488830acfeb90f35de806f7a05d1df912d8ccecb76914f1849ccf7079549b155e5ae8a16a50e653d1a8450a69d7c1bc7f11af349abf26da0bbf91ee233403234d6130cd75dee98326e2c0cf47d6cf291c2088a3afdccca44d1df5fd0e25b28de3994e63481c500979496b2c2e248071adcd077f6c589823b90d6d65e395b42963e80925d21be7dfb4d6e41ff1d3be4f3da745a001d2377079d956d431a78b36c86e2f16702429a81bbc043f93897375607e559190934981043ed61469181e55a6608d7e15b15ac3aab0239d7955a094d8651e8d9821b2ca4e4cbd91ab9b9140cd66ffd6c38018080ff7a8a3a044add2ae97a7db7fad709acd42e671b00f7b4993d58c98152500cbd35d96c7fad5c012ed5e50276210129d097e5310bf2a4e56a1f8b7e0bfa733c810b9b4695850f61aa13183f03dc2f9312da64a88455edce4abacabc2bfc87416ed3867b89bceebbd793184f41f0c0bde5d84a9c3faf59d06d75e59992c700a72258a6bc028c9c71c9d225b00c3c64e922feddc3c19b1fa7184517189b89d90099ac403dae0366e0a78cf8c95e9d48aac25dc203d901f8f77e118a7ccfc6f358605a1f9a3fcde0c5a1a77919d50fb53d0a4e011bafd4dc5d0a089cbc9f90218e5e7354c4a364f80a907b6fbc95aa3f4b73d419d897ccf9af9dd32fc60109e7fd02248b6f912a2be71052ad854e80627e275b9c62fe91c617603eba7ee2eabff76449c737a50bb474e0bb7d3a00e9ac4622615363a9029194279da0256ae6fc60fd126f3a4f4a7fb44b70cd3cd9b3595d274cbeea3d1a89ba96bb29db924ecd49276b7a112e24c6ca30fbe38a5df0d97898a9f9e62337f96fa0b09524e91ac8ab5f243eef3b1a19ae2afc688a8a04daf565e179debf93cd99376cb0d4d821baf8b92f7da1776580f1899c06a73a0150f65a232c8047641c5cd85ae5d84cb43eed62fd8eeb672ee873c104da4b8a6155b2c039564f9e57301e7426637edbb8f84faad31e98fa4d4f151fa0b8656f0c265abd2efcce1149116ce9f6cfce9fea2f83f2a9ea2829acf1846ce9ef21abd44d700884be5f899529ae64cc483a2f4171d166d4238a7cace5f8f17cb3521c34b72185085b8d5f27043bf51fcda7336c12a7e1f182dec6f99f7253aeaf5228832538fc0e7b712e266cc16784d6e093e442bd0d91c4bcaa97525a2b03cd274901bbb6417265eb934dbe4fa360973380ce8b1aea81a10ef1519f45032e0c43c5190bf795d2b0e203e31f5638a76c919e52d666c47b1f948924587cad9ea03e68de21aadb631e4d270c35883c792a4c28a9e09470b047c59d2452671f26882a7f823fecd85703008e806b74290a3afc1bd15eec6537909839cfc415216195f3998492e282275a6cb9790928195937bf3d13b4c2bddc768acb21826f2cbc3fe79dcd6ac365586f4e06a4bda24410314516bf3ffd59ab26f2a13acae1ea0bbc24f8980d3964bc0efd27172a09b63ab6db84f51da1dab60e36a8df04e21c4c6642a5aeeab2759e4d06e92a54dd389363a262786675e4da0f6f5dbcc199fc24031915bd952e624c9b97544059d4023678e109c7495fe27154ea02d7a893ad33c4e91b39265ca2aa86beb85e97b83462935d0a341d55131ed21cfc866e6f9088c99422a2860ac7d9c72950cf83d4d3080cd49df8034c544554f725b474dbb3ecfd51d37b6a50d0c8dce1b74479f186e9b004fa80d5d91dc8a8ec7c23ed448877efb262712b16fa3f9b85a150328b86c7b34d13fbd35f24df62f8ed8e5d2c2bcbf1e381ef53622ed58787f33f45d0ee04a9f611c30870b715fb1ad49abf02166b4ab088e6e1c56d59c7bf8f80379a8e5a83aeb7ad6330654c77e638d3011331aaa44ab23089657879dff0b4315ef9d628f5e8197155881a951a8dc4517fa889fb5753439472a6f4b5083d345d62ccf11023f56e27acacdb69c63b6e89db9e1b02ff112e3e692ea0cc8551878351689281b75db5231c3c3922a243946f82ac2525cfd835fb3014840726c552d0c58d82143738ea4f853b7850730a05898505a16329659fe0517b5de3e902a35b0f0f34287713596b719e742a16c138f666b9e33bc03487e3f2e5988d8487c89390a0fcc2d9c8c739253265ada223cdb03a6252defa1416a62347175e05e47fb76ca8f6cf794829a8a5e6318f941424f519e1c36ba9cc3bbd8b4c85703cb3b1b5bbb78c0fdd0b012bcc76129a4d60ea25ce11b11fb620e600310f0f03845fbc1a35b654e0b5ca77578878bbd121e883a341fa6818a0e68e40661509e2a2ff55ad68bcd36f86eadaf06ba1e1e8f5065d12e31f7fc7b639be737eddb6f02105ac3679d5373f35a7626fb01ef95c1b4a1039cd707b1f723bfd5659fd1f376d40718a3f7000ce11927c7ed41cf62ac85cf204823321ae2ff59e0f3ca234813752377617ac225d5785f9abf3ed56d2ca819d7b030105338b456ffbb62f8d715873c248c1434b10c7592d19ac571176371154bec571b1f6c5fd87e8dfab51adb053865a567958913cd943bbfeb312fc643980c02b29e200d3c8980db3f9e2a2263911a9be26dc45e9f7eb31b9518bab909f63afdd36737cb2ed588799fb59c0158b31e42c369381bb46c6c456330854bfa619ff015db43c39cacd08d7ff87a3c6d797bdb6dc6154e8c6b8bc50f9d31f3d6b4ac86b006239be70ed2b508dabff5fe75b93610208fa26d6bc2e131f2ee7674e1c993e749559aaca10d185946d309678f14171a07834e632d21e3f4c6e61d2915e4605739f680ce1f1f85802cf7258e2611d31fb119aaa65c7e9d21918e87444c722fd889909aa33beec97a230b7d3c995f9a37d0955beb05858b2436283b87e0242e8485d7e4d96f1efa6175a528a88d13113fbf49c4c20783947955171992a174506458f27331cca2e33d942f72e37ce860d85d6de40c3779755daf0be40422c7b6a2e26c53f400f19a58f44b35c7eb6e7d11ecbc08a283cec96e5c78a5fcc59f4b72d32756e7fd956c72eaddc7c74d6c40fde24adc63b60c66aa9311f79e0be12939732a1e7dc5ba71ec7f6483e7a9a6ffc18fe0b72f89f2a35ebec4c7a683399d665c450ee3a1d984378a1562f6ddd10ff543c7323dcffdeaa923069890d03801ae1955b5385b315d581889fe6f2f9992f1918395c6140c2022aabc3e764e55cf0326d374cb488081ad06583c05874a4f6264d2dd43e1d44451616091487a349ed0037a597a64f30822ff10118b8a5db67f3f007b47f3c811b96bbf0a51213033c713d84ca3861d897faf46bba933d6c80d0704ab1bd9a2e51da1a82434aa2931e480a37c7f7248b7ec1b998fe7a089a83072d34ae91b66883d3902b31459126294f88b5240260738d1092270a6205533e36f3686a3e7edca097b3bc0d524906b17aed0d9390e7f6c99737432357ead91baee91e516a541de5e0c6c4bf8912c6fdbe755a4d9f0989886c011af26c75e58a5f9b6bc93f1c5be6b669e5f6f11fe81a29f9875e61aafdc1d5ba4cb79aa0af8f7b473e08fe86d895449abcd8424fc07a07baa98c5c6a7a7da47a0acc99402f167faea2402f635c7576839b0b7b790c21986203b788f66aca732b60484671c7d8d1f706862c6adaf56461f6ce67be64914bce81fe3f822a8c16e362827d2c9a3fea65d0bdb70336ef8112ad61a6f0adbffd3eda4201ff500d766818588fa403739ae9649d767da2230b482d40dd3a7e9b4792f2dfbeb152fe50473de097da85a1a6357679dfc3ce31c36e9288ff439cc333d897422f3bb9a0d59e0f5bbed2d025cd15cd71af86ad729610a64c096c37044e1390a7a8792b273b2d33e52127a17ece6d5f2dc6413819d8e0282bda0fb5ccd482bb607b44e1f350734c343b0ba2333f908efbcf827622036c61ad28719f6adb58022631f8260ca2291137227e3d287f172a6b478fead2dec13f2d8e9108ed84a18b326233c969fbe04d03d19a7d546933f1816b5bb2a5656262ef421473990438c1f8af379e12a131e2b95ba9b01a9596b17fa1e99ee43d178031bb0dc7bed7c8674bcda19f990dda17aacc5793b447d15d355356d7cd267b1797cb4461595ad8863d8662fc6c263e3ad69b32ae786ca3217954f082afca3a9081d8a112907bf85b2e3e1023f987b53df3c9609ff92a308aa7a16a2a58142dcb84c5c7eafabd639fd5e630e1d526a857c3fe04aa6b18ff1afb7cc192e6d85cad0dad4d52328b6a64a6b42679ec8f6a06c2f87f37fa52165758643d6dae396a22995a61a46abd09ad7e64fa17da639b9190ccc23abcbbe3dccafed04987eca85fc377b9fe2a95fe84301cc1eb7cadcd0b7d42f290995e288b65c03ddc1665b8651f9b980ca21abcafc05d62180c807cb42f28a36a9c59bc3f9bc79a622356dedb8994153a94ccab0ffcd1ca7a64676f1446e16f32254e35441fb5e5d4897bd24558d3404f0f196c7515ed8978d6349bddea0f2593ce21139578604d5c85322da4ad85812b4eefcba3ee139ca82f161f7919ae9120c42fe4185d96089ca3b07d1c21177266dc2c13b1ccc53bb86e08df7ade2af5d1b459df4caa8dd39907ca5b140169dc981607b3a943695bb1df86fc64023e2bd844fdc7aef65386d96cdf99e76e6322731bddfad146500f3434da15b037b41c20b7865ddc6b128722ec2dd13a5808d8a3ce9cab97051343182696b4c4dc7a2f3032cf2afa9544f04d27c4691094863de3824b4f07b468335c2cd77a25ae2524a11e150beb519a61070bbbc73d9a66fa382457c74cfedf37b33f44221f9b62b0a3bbcd9a9940cfcbdfbe3f53e0329b0e9d84a3585d5fce848d169f316e7fb67556a9a9ff3621c068f337c218c5d94fafb1e3be3d2f582e3ebd2fbb8f21ed8ceff2b0aed057bb358cbcb30393f5373f14731b70dc80ec330b36e512652dd65fa055e0cb1efafdd5c71b70f3d9fbdb1ed35689c3917798d2c6777919259dfcf286598470a45a1237cf178fe72a12fc63138c99ee9a32a2929923b5bf5432fd72855e846fd751d276d51d0870d48bb28ce68727b75f2e6ad5bfdf5cfee94bcbf2f5d3dee0cb91f65904ce810037084a17025a4cb90a1d09b5531e8b60179245fa4e034ac4decbb26764917472495b8ed1724992b4b5675158938a1cc45231b047c6a3e6b505c17afb9a3fe2c2b7d847647b9173fc6295f4da2c0bd29c299e2b5e7b7840524a824887074c37ebfa9da4a2d279ff66bb34e85038c3a5b3a7ad824ab78fb8968e842bd92fda4acc14126a42b2a681df8ac0b516d5d858c76f912891ba114d45d9405e011e0dfeebfa3425882bd90be82c7f4e63b8ef0c71ba7e126bbe1b6d8a02db7efa956cc9beea9d7e8e79fbe1252b8e675b3a5bfad831400c35b6543c217649d4a0ad5974674ba68c8571df6671209ce7a15e1c60c36336843612746e5251d1528f2cce5b9dfb480532c6c409650acd3256d41e708c3dc843029361bd5a1910c67f610d60435ca32ac6a7ab3154fe102c14a1cf6009c19a08557c6ec79c21ec10c732a74fd5af8c635b686e6ac54f85d767ed73e88a29df7565d9a7740eb1ae4c9d586af36568e369cb4ed2256917d5c7adcb8206d4b3e0a48872ab355ee140059feaedea411cbe22d507a3522a32144a2f453887e02f577ce3419638339f0726a42064ecd79f9c09846aca25300572532e9102dbb2f3cad0010a306ce583067ea9ff8979e6f0272a1898208a44bd1667b75cfcbf1e85553da4be50cf76ec3620c54cfa4e500f505ff84dc5711e41adf627d7eec348ca1f7c2de8b9d704dba4826f0355394f5002c537a32cbea2b98ecf2d8245c1c8fae5568edf11638a9ea1186da864913a2a1859ae44492dbba0f8c60827f954452dc3881126094d636fe2491562d2d81d623b01e556e9c7bd395b9789e94d24a148286af5a8acf3cf48d64c991587ffb4f1f7742b0a9f10c0bda0d6107a1c6a8940ad52aa763905577e24267ad4014caf9851b55718cfcc16b7de0df9b4002992732cc0b2375663080a15e6c57570a8aafd59a978b5a48e6ef33cc564fa23265054576fe24f1b2ce40e2fe0c10252f849e93af262b33cbbc14954791ed6dcee6ed6772003043015fb311a6e513eed3758338a014b627e4c1f8f8e2d03012c61f87ccad8937d1c68430cd985b8e293dccaa01fab146e782fbd83b448af2ce6a51069cf16f3430550b1a5e638c0c1040c8cf0b6093142886f928e5f85d15f14ca309b4a66400b5e22819c0be23622e59834399cb24de2839c78a5fc9e4a42a92d9726a694d7e7125c2aefd3ed2cf59ecc7dbc7c88fca8f960fa111d8812eed47869d22765c19c0451eaa894037982447d1c0d486b99528c660e840b4420d21537ba3d299ba4521a19d841cc2b9b94aa9e2b88b7da3969c24f39609e1ca67033dbe6533b72ff2a9314ce826d085333cc133929beb42f885b94d4eba5492a453f597da4f371fe91ba2021e1a6ac234dfe290c482588a9831207a40b1205b20672ee6307b203e4016114c8097a8aa4b3b653ead5a4499792b7699b2c653717f7a1e42df52485406a0ab2449fba4a9a03712b9f7a8934a94e494e841f7a829c80a4e0cbc11f8803d908ed146cd2a435253605417020a8a9d2b6db7c290a6b2a862400c907d9801c2b484878a94f69a20f13d41462460479f88880a8038919e4642fe5aaa9a497ca5b9a9449c9364ff253ce4dfeff53359026c5293cccd4c249e5487f1f5509621b3af564693299427f6aeb9f129e4510d40791a49b1a5f9af4a784a7e21fd7839c883bb5c5a1999900e0a500c9093e4c245ef8940194e4b9eb742ebaca92d5cde881d8a9d879f091cbe7c1b7d5c8dc252ac3a95b4dea39411fe984cf0f6fa241f02ae455359934e94f014c611f7120d102e9bf9dda9276aa4c42608a2953983a4e383e1c3e407ed0fd3001a1034107c85b776ade335b708a7c3eff2827486d5da9b734e8c3a4794a8679929f72dd8ced7fea83191771ead04512df60462b7acceae8884ac8458328694fa595269d5312ce93e2941ba792fc547a69d23f25c349a4e214a364fe87c93b45dd336de154f96c06e906793f4483d47db4398824ba94d6a4493ee53acdfa081c084934537439ac2bf3f9703dce60b9c6cb0558a1220d65ca193423d99c6c393ae94cbb1d021ef9fa6d76ce2d65535bbe9402d2a450ca36e5813c20513ed6f83883e8abaa90c883d07fb2a969b2ea83924a35fb20e57f58fac881d4fac1fa68be24d920460e40e683540b72d29e7276ba7d4e0d4b255429a9f1b4e8253eb5ce3cf9a76878ce464c3196cc7f98bca7e89d6dc15325e9dc47e7c7b749f3b8f6a7f807563a994b0539c14a91396b7ba45e509a14520ea770aa13dedc9f8a5c785002a7983a20e3fe78ff88f0a1f6e3e447dd8fe02471343ee7497f4a8854e0e33a1049ba53cf4b93ff94c12400d1f5810b8207c80934b531d3ed20653fe33ede3e0af950822e5546da2975ab589fc995d79b18d1df153ce921ed100eceedaa3e833499a5e46e02402ed593e40359dbaa146d2eb4542db474d9a9d279433634b4f13b5de22d24d6c7d6c5d8e6a134d9a49c53412027a7298752382091bc53ef9226e194c8a412e7945a691c102893a7a6a6ca1f0b102e902e08948fa6ab80432a9d0943eee53981eae333fe6f8f94235c52ca392c0b116592c6cd886ed8a08f6904f74bb1df0880778c9e26d0475b2077ac3052495eca55ce80c08368fd68ff913ec88968ca03d3642185c379924b5177b6f5a506a4123e4cb62f75b20e5d19ed4fd905be36518e795a5d14b52f05bfd473196d0591f326e95d297940606b1b3d4ac24ca7c59bd1738e1f6b4212f0b187fa852e12dea12ae2ef437d5048f5142e2d0560095c220789bbd6757677aa934a378137f8524e29e42b51c014e9b4f45495bd3ecbc9de9dd9f0e6ff0af44d4a12292e3afd43e43ff9c29f39c2ca0e1dc888aa943e658e878380cbef07d07e8bac3828fbaba394d5a813b3b08b08df2b965a966922ed47df4633c92c38cd2466bff219c16f03a62b9708e8c090d553d6f959682ac298f444d8fa74f2aa92347c84c58b38838a2d854e3746f34d98c90dd6dd894b66c09e4078fb3cc7f17797a1c1e93953d7f93565135230db992529a4317acb100a24f5e2ff5746c0b47b9cabe3b0f5a0cfee79c02672e62568a108bf11393d99f48ad3fe04181bb90ab7ec58314010f045178be65589e37a7a11cb1a467345229d710fb17b8d0bef23a36f325d2fc006506b1a3c13766cfa313da43e52b98c3791fa90e3c94796ce72a591d27d9a68b875a36e046556d91afe5e2e570f140001aad853c555cc2c3f64849263b3983bfa429081f6542197dabc981366d23682949d1b08311160d101f201e4daee2335249c738c975279410d3526fff990164589757f99dd3996ecb47732f87dcc05ca5b3460231d6bbe0b375f442d0d5ab540f1a9e1d8cc73462bf8f242666ebd529741fab701ca65e9aecf9bda2e9800becb16d33de4bdd2813cd923b2eefe068c8649b6f639814cf6bdefe3db416e64f54b2935729decde29a15fbf4c11e792220655944f61158c34582037619a2a3edcb1ba66f002ae807f92117f91f056d32a4bc68ded2fc49ab7270ad289a06d4efba80a2f707b2d9efdd0239270b3414d6665e0de90a17258a5965de32a84ce36ccd8585620773d68ec9fe9f83e2a8ddb2455dd3e81bb79d4833f41ed08640fad826724e2ac4d094737835d6e3ad4a5c61e147a3398d7bc4d6abbfd64608962e2ea394242f08299f74534e26fbf3a3c24a6b2b123eff2829608c8a80968e8bc74019148e19ca3424159e7ca0fd3616387370fc89abde63fdb2ac09943a2918f0d7e8729a7881ec31acfdb45c1b98fddd8662d043188c706da44acd545eb581f21041e9f0446d4c76070bc6bb6b2c4d8034ac2f52cd0ebb66182776354c0b998e95b86300baa55fccc32ed15cbbc68790402f2144910f2692d93b712a02ad6056bf860c0c748fe5408146e25140aaf8c717e62d8cb59eee8db00421b02d512f82a94284f760b3b5eab908bb0552db570d14b521f7a6ad58b8890782f0e2093c9d25eaa91f304402b05719002f8b3d22f98dd86059d6f6099f2e246cf46b681448e93f1f6dc6b98618e5590a763c47c3b98bc16141cd83561b4c1593846766abfc96491e181441e3a792164073f91d2291b2d849851a0c68c66346a34d1f44985a4b477ee861b1d02e6a16a4c4fbc4a5a3dc6886e009b3d12751374a4c41f46cac814d08d8796e54bf793200079823c82b2bf642542f63783d094bb3f35d14f9aadbdfa9e3f390e2fe3c256019404054aeb1a0feea134a749e00cf8b040c6b5a1b0a850e49ebdf48a1aab220037edbdcb561cf31847f78daca5b119ab73410a81028d07fc85b8ffe019004c05471acdacac804f2466cbe1eee7f388d66b954fb41ef599325bd9c589eebc3c2e007ef738384037e6aca819a1b293d33779c6af787a6d9ca07f7c3c2a33a7a8b1419f2aa6f6a74cdb56ef01f7ec6bc7e8564ee58bd429c0a6ef10efea1d8729f06e43ca6bd380a16dd1afc4cb3385581cbf5d656e8fcf8e59b93a87adeb16a3be67b46fa8fea611b6a91e9b2984e6ee4439ae89bc98077df78efb78f080af1ebc72ebdccee82e73938fac7931835b8f642d902ee0e77bacba5d4393a47033bd168c09f7873573f360acbc80a8e2d1409cd803888e31a7c9e13c0fb56bb17a1347bfded379bda99b307c885a5c6358231a1fa405360e09388a81668272c9bb96bc68bb0c673f8452d62df293c09390ced4b34c41a3dc377e6af83ca78e1344c829f78250e8bdeb57f0cbf5476801391a69bfbee51a7c975319c7a2c7bc3a20d3fe8ca7ae3b416d2db2ba78a63bb6a297ea67444a7d7fca4a640da73ec168b2ff2fcd1fa83c08cc48fd420958746800e43cc6c2a301d8ee33cb8b8ac89b7e443eb81ad7adccc1eca830b87cc378c52a09a5ca2792d284393fdaa10420f194e5eed80cc33625a8ae350c16a8fcc37fad42dca366a9d12f4811befc82c196f17298fef35dc7c6aa37d7405b8c434c62477b1153996239c652a66631a2388aef57132e30da026a80a723508858ca2e3c93f4595176fd35cddbf88881a4152e1083393a86a9ab19ae4631e9313b4e6b18225c4009177d2b305c4b32f03f75b318f42904ee8a05b2104110a8b4491b3033338b5188a8666716913446b89ec78f1a21618d908e0491955cd9fd6b501e131bf8a80e1e147c313c6493dddddddd3d04a01a89ccc7d5aab0df764d127a11540f45c00183582e8aaa589a25dd60f93d512936da5738be7ae178a8cae3c9ed060b8b0d6892aabf38596a9dca10a10944e0c20c4e98b106335cccd09861468d218861083f18c21542f08410e620041a0801678490618cb53665178b85854f1f4ebeac0f0f139315963e64e3f2d366a24c4ca62026262b2cad35ddb8c4ad96a335e8a3ad97ecc2c92eb9e253de9baf3ed6f42c2d476b2643a04fa3260e274f16ff9c037a950659d7c7334956f51e0a07276fe992aadd2e6a6aa9a6e7d37b9e47cb0155140bcbc579178af3ba5952b33ce003aade88f4fbabaf7ab058d01484387c825024081160d04be6546f84d27f49954be63cb71c10ff5d7d28cbf3fbc8371ceddaf90810180104313068254890215346815e74668c3996014217192078000811f8811b1863d006389d2b12025dfb535d563381ae29bbb40ff5c2817ba18faec6e14845320a58584cf09dac6259d557ff7dfa30a8aa4b991f38065d56e64c146535ca9a328a0f0071e2031e44970fbaf0410318836ef03722717a40881e9801dd686f44e2bc0dfed6277bdae581c992da773ed657273dd8e28573c2834a4cf9248b2c1a0e1d3a8e503b3a4555425e9e0b139395cd0e2ab10333ec40da410374a0061d483a80401a323968c9410418f4a2395310c8e5a78ae2702eebafcc89aee6f213cb867f189bcb7acd425d6da22823cde5278ba2a2dda68fa6d72d93d4d292399d9a5c286eb5d7ed25776cb4bf72b5e29c7bfc5b2a2ac757d4f4d135b548d6773e9695db0be77bfe16b54851cf2c2cd4d570b44cd234492ddff8ef66b56fe1b9a5b513213c524e8668f1567bc1811bc4608c6196c1c1159932400155fc27a97fb43f56b372c37183a58b67b1d12ea97138795b2f9c89da521968944183327c94210056fdc6115d946edd47837aa71aff49ca2db9b5972fd23855791aa7a2eb3b152519c9d16b4bea58d1aabf28236dc84be63ccf42c765493f5e72ca9537dcca226525b27244f5c907d52789aaaadfdcc086277f754206285e389c4f27630a72060b0b193c608cb11332222bbb9c30c624cb908103e2df6d00884e9e40c03236e00183b695232e6de9a36203d9527d3cbfbf6a54f561e498a8a9e566492b36c8d4400d109ff2472b991af44c0d3ec0d22aaab1b0b49649aa3eba240c7d162fcf058c9f2c5e9e8b972f22e9e739b56970c625753e08cbd0208b19608207cbcce00a8c31e85f387fe5eab3776e948bf5f245f4c76ad47551d49017ce57edbf685554514515d095a32b73387906319841c418cb8dd7724c542b928130c6b260991934c6204ffea8591eb8a6ef4c542519d19db7ac13fd5f8c010ac618c4e1485c8c9107c6584bb63a9435c60d3263f0608c592f146fd78792411f646006c618cb66ca2c2acfa9cdd23ac582c2d2befac8a5b1dc50691f68283682b0b41cd0736abbfca482b358d1b1df0bcbaabef3b1266a5bf9cadcca153631b9381f2b0bee6345c7867328c6580acbc4200e8c41fcbbf4b19a255df172f18ff625b958283841f514ff58263841fb68250666a0e00495094ed0a05684a24e620046fbe872f9290b0e27a364d1acdc5674e83842ede070f2ce6245470fe2f914a1a81f54e4028332c08033e8e58bb8fcd46eb0b8fcc462a3711f27d75b193140c118e38265c4c082182cd07e8f657d1ac53f2a1f5d3cff654d120e0e274317450d110303622c20b2cc0b0ef18243bc000f8c31159679010b18836e3c1b415a8e974b3af21c4f8742691bd800b4d958d2472bd01b915a5a6661993efde58b348a7fac6bfae8fa9ca0c0c12cec47c77e2f8e3c9f500063bbc27e4ce08240301e30c644c0322e286251d190cbfa549ebf543a9205e4b2f20f14eb53ad585ceae28d48d7f47bf2f1561753f5d961597ce27159f987e72f95cbca3f7e4f928ab585957f3cca9195cbca3ff295797c11444891290fa93e3b78a67e58d6963cd4cae412c4ba8e7cca7542ad5829afc27d48d18ac59ff313c67684618331ca322f9298bac8bcd8a85a26697ff857f979cbcd644b2dd48f0678f1810120020f8020000918cec8c2180a98c3193d5e1001c61823c0ca0ef2c018e3c2198c6981319605c61816186357608c59817154f85f59aaaeecf921bc0bde2f8bfa71591f1efc5d283e611740b8b0f8988a6ceac7910c04ea4897f515d579bba894e9c843d37ba8c63bb9f1efe49406e5af7ae3130ead3251ad71dacb74d220cbfab0b0b4dcacb73e2dda52e4d270b050577ba972754dd4e692d532519cdc58589af5160eab77ea79aeae667d6707c4c2425dd6872a410b5acb220b1df9ca3c1a0e5e09316938b2d06162d239afa2a323452a9e0ce45b3216adb5b68286d2da73244f87dad4c4c2c282db061a945ba72aeab2389e4e3ef22d1b91ae9d9fb77c59d7876a9d823e962535eb92a64fb3a4eab27ec8cb2571e90386744d2f6da9f78f35f9e0f14624ce89e79f8be77cf8475ba565922eebbd6899a4fc3cac21cfe1485cb87c0a7f4ea158d6effd5101030a8c81d102153034c0186342ec545191da7415c99d465dad7a5e516d92289d9b0b3515b1a4365156fe210ddaefb1da5799b39fb797ab7a0f55799a067ad869591a68cd4e1595c6df7a0e591e98a4ebb5689a07f44528239364e97c65dea91659798bcbaaa4deb88de6f92fd269401a5464531c0bb24cac0eb406bd95234ffbf611cb57d1755153eb52bb61a3bdc5c93d1ac402e387a559526361a1acc63fd54a83f847edd3585858bea22e95065d16c569af3bcdfa44dfd22255d7454d8d3af2d33551bb4bd347576361e15d6a6f7df27edd586ee0303159b1c192a3cbfaeaafffdea98e254d39dadf692d935464e7eab2f67324cece71452d12a7599cd6b67459128773a2a353f94664e52d4c4c56aee9adaf3c5fd9685bf25057cb1e4f06d2a0cb92388d258b151d2c5374492e1d0e47baacf613f51dca6a6fe56d7d54d0a91c2deda2a623d48e06bd5454e73b3926a97d4b95392db73792232f2821ed33a74f527b4b72a93ebaa8dd26aaf1fc557bddaa37f253fb8aea5f7d744d9f6649adf39764825782a4f0e7cd6a50953d38ac0f2519f9ca1359798b06b1b0b417ddae5769107fcbfa4d559e1b97d4a8cbf280e5c91d1bcd6a90657932101cd547d7b75057bb3e1e4ebed126c9c64a8378f8d8d255654fcb93d4389c4fff4e4ed9ef51b1f2577bf241ad58fc3f65bf67532bdfa150262a857ff51747eac1e1641400b87c18dfc9d65b9fead322f589da9c4ae1404b025a485a58af4447440f44cf432f431f431703f350ed06076c34936645bbc181d67070a09978a8868303cd466b26381a0a4cf09cda7d8cae02d64c6ed8c86d6362bd118993379eff221c4ede54dfa7cfe6774575c6d88d2a30f6cf0aeb5bb2e77acb7a4eedeb2d0e472ab2892ec9e52b120230b761997d882bb74846f28479d70070838645166d7acee6eacfd9700e55a28523d4384100047159bc618145bb61637a0eb42b4b0737c86800bc96a373de6a5860d122e85bf85b15f49c9a4ab0e203e544c8094ad3d18e70a987c7c322001f19164a30ab8aae4df59e2d5ddf7923d22575a4ca7384205892255dd96a173555fb3d2f577b9972b32a4fa3aa9d3bed0a9623b9a3693ada8d23b9a3b1020c1b1ce977b3a281c1c2183342118860c6108410040c2418634058665304cb4371290bf9efb1710064591e497ae912c7d3c9efc2c26265dd3c9d8f6ed97a8ab717ce44e1a0541af4d7f45663f14817657172b35ee2783cb9552f7d647ddabbb4df93645d544a6361616957dcf840bba255d13ed0fefb66a224cb46c3a279a46b733de78a1b1ee9b2b139796fb068ed7a8e1556b4afa8a945c271599f8a8585a54139ba5af52d93c43f9c3d49ed45371c373cd2d5a8c946cbf1c2a93247ea4856cb6dfa5439ae89aa7a9bf266616953fe4ebb7c34c89aa8ccf9b47cd526a95dd34f9447ba5aabfeca9c1ce53649f9d254a3aec6f2df372ced1b7f8ea75952638cb1bc5c5245499587a5559245511af048572519d140fbebe3e950bb5157b358582e89f3e9b4ffde4e9a5541137a90cb614d14914210190383acafda7ba86db5496a1575ed37d2f8e7d6a9a6b2b2dfc8a6487e17fefbbde0cfa70fb5a348fe2f28c6d8182c53024b3036fd0f0ee724b2f21613852f95e778a46ae5e5b9f82b5f2ad6b74c39426999243ebd102043b88feb4faee943a1f41f026317d40a77a152aa97389eff8be2a874c1251ed645adf0df15d5e33af22939aee93b2fd9b3f9620a8c310c0d96a0e205f7812fa9d3a1f6574252b678b9fa5f9491af84ac581baafa303613354d2d928a4af57c7a15aa7a221395c218c38265bc308331067df551b3fe7b6b9c2c5dd35f94a7719e3fc58b9601fe3eda45a59c6420b1069681042258261219e8c118bba20a0c30c620701f5183651e41019679446699471c81651e5106967944235806120560194854c1329038611948442c030926645228d1850a638cc3c9284020cb6a1365491f8ab7d797d470e4ea73d22aaa47835aa06f90d572fb49ea547f3d6fd455a4a25cda0b87931b8723b9b4667dace9ad89da6d7a8b8a76ab3e54091a64599f2b57d9e3c9edc3a9cad3be0afed77ecf91afe22da9ca2ebfa341d6f4ef72bd6e93d4691fad34105812ff96c6251e0d6a1f5ddf91ae86d2b6f001965199c124b5df13d578914dfda85eead2353df7b1c957e6f1433ea187c7324328c118cb4db2288f1c8688019abeca42308f1822066390d4a5ea8db4130ce10149d5d556880ca9715154d548564680060f921f23d882b137225d9ffd473e33820330887fb4afdcb13a7f49edb2be45e2ad532d05f38ada3f245f9907d5573a1b13136ba2246bfaebc89b985c1505a4c8fe08c541185df210eee3c8f389fb38c9d2c5f974a48bf301224400d75b8e680429f873c908557946914209c6180b18639815b0174ebe326f6dc579f26575a4cbd3c997f51de96a0548c00412e000033c4001115040c6020470007b4003320960c01c00cb4c1b2c3375b0cc0cc2329308cb4c0fcbcc17b0cc1c02cbcc2db0cc7c03cbcc3eb0cc1405cbd004b00c7d2c43b16019ca05cbd0cc32b462192a0396a1466019da0596a16860198a0796a18360193a0996a1a460992a0196a98e65aa09cb542d58a69e80656a8765aa0c58a61681652a1758a6be81652a1f58a62e82652a2658a69e82656c0158c65e80319600c620b0000754126099ca06cb5491652a11b04ca5c232d5b34c758465aa1c30660006b009b4d481655a00c1322d8f60991651b04c040196891ec37c7e1cc1aaa097ea9ade0a4fee58f15f5dda0a6ba2a0cb7acea1da3796fd5eb04cd2ebc6f26ce34063a9bef78f6e2d9354b5dcacdc78959b25354b8a561ac4c952f557ee34fe6fb566e5665d3b5bcfb6cbca9c0e55f56655cff347eda5ea555af5baf3407c581375e4e4e48be4cb7a792e484c44008a4530c6249611c10b2c9dabeb089e5a24150e27a37c4c4cb654fdf42dfca72e72e4c8e191387df346a46b3f8743ed8d65fdd4a1f894abcd579ffdd624f90801634c148cb11696d9220e98016c21843146f12dc0f83024ab753e1de948ee5057e3e40f181f86647dd52ca9f1af2a5c24085e21b101634cb38c16f292aa3c519225199138097a5cc188c437cf25172a7597d98a08e9b68fd35b3be752f61cfc8f48bd8787f508418fd9a3018c359366a2f30685314c4a1eb006d781ddb08159410667817fc098554118c38312261d4450d587d15e747b2e199178a3ae76793a7f5d9991c1c325c3430863ace130914418282c28a740a1040ec6be4079b14333b12a08a5a240281e40c9dc30b174eca0c30e2fe0d851c60e0f63265f245f69ecd030c64e287192066326bc0627f7a49de4c0aaa022f90a412442900663cc843fe779f37a435d9b866311678480058c313db030c656580604a10001221808ce60e37a9557b1b88a1095893a7272bd8a75bdcaf52ad7ab4457cbf52ad7aba85caf72bd8a5584f3d96115e17c76706e84eafc908c0e0ebc682aa8a08200fcaf4bea7c3341fb68850a2aa820c035bd11cc18ebb0cc1550605450410501a06649d1d53a4505155410e08615560eeb9adec85b616d8ae798a4dcb1829220c8da14b7c20a13cb735d910d145826681deab23e2854504105013257a430e845b7d76dcabb5d39bada73746ed57bda3565a9ca46da4f54b326295f1385b2c2e16494afa8add23249d3a712624543ac95a9faecb02c1f8cb12e1803401d321478026328967404bf5c1227730ac87b5e563c3eacaf383ff1f8b8a89497e782732814fe5796366559271395425dd4ca45a570b24bae7874495f08a1523e0c4985933f60e08b4ad9ef0597baf82b6f89e3f9f0e0521751cb879a70cb245d452aea8b2bbfe78714a9a82f38f9552e2ac5e23ea815948b4ae19c0f85c29ff3932f922f956f99f2901ee4fa0451b95ee5a252acbc05e5e9fc8a15ed2b03b9a814eb291ed67f38d90b3c843f8a6565211795c2251e3c5e78fe8a737259b90745adb44cd29572edaf2a6a4f3edee252171697bae0cffff7116c493c2c295ab15ea60c84a256180bf16fa7bb46f551d7e66a56b4d06008dacffb0f812068b3712f85c80683031760bae79d5cc7985fe74bf5a5294436ba0538f3be5da497eb69e7fb0e4110545d92a610d9a08005d871776bed7bdfb8abe37605d8752dff556befe514421906b63353f8d4c27eaf853a6af18279945bee4da97c3a42770453183f5e09ad7390bfbd926a179ce7957dcb3ef93b7a61b62f1b8956eef79cc6b86f96f4b3b93abd6ef1c134f3f7f857d821a56eda292f7c2974eea3d451f75d9fbb16de7476fa5257fecf9db6517d2e3fc5eaa35de557a92e95f76a7559b1c290cfdc237cdb358f1bc2a83edbafcfb56c755931828179bfee459debbbf0bd6a278a0753b963fe2da19cb343b96108280cf7bb9de793bd6fe932ac78c25c5a1ae5dcfbd5c7e3d57c7ab9a3836bafb6677ba57eb3662937570b0ee6b73ed430eeae23adf6a7e76ce0e45104effd62e75357ea2ae4f4e6480558bfaedfddb4c37799ff8ceaa3afba2c09f3a73542781d77fa7238a3bab124f86e842f74dbed7c27a491f64aa3fa28df7ce7234fae5ae683af8aa0054f39fbb4f3d5fb14be9c2fabe318ebab9d4f49f99bbb4ef81ccfe79af8f1959cd39f94c69eedcc2eaa2f6e5a3efa39851cf397e3769cde2a637c3c7b22b471959adfea6aecf1cd1c6d541feca1b17b3eb9ebd756797b8d1fd5676d282edfac2e8b66bc67a794be75505fbee38deae3e4aa85670f7cd55fd7b2e0fc3a74d241181dadf5da2e3698bbf8f8a51a5a2be7d5d27d91022ce3bbb2c7a7658d0f274401ee14729addd45dd2d7f53d018ed1f579ddb6d276ee7a9c57a74713cc0b699475da6b6b95f2d16bf5942ede086fee4ff78fea9bd54f930f152218eadaa7db0fa7ae9aff7e8ee7b3e24a80e7ee7543a821742fd7f7a2fa38e7a53e55deb357a7471d24c0714a2eed8bf6739e8fbba83e4edec847e7fd02ebe9fae4f9716eedd57bdf139e85589a4264d3e205ded73e0a69779cd7dcbb8c8f7e456dd8059ef36dadd1e918297df49edc9942644382159cfb4ffe5f758597bb7f50a610d968a18261bcdb39ca75a755d2f8f78a2158de2a1fccaf4fe8b2a63daacfb26f04b8cfae9fabee5f97fa421dd5b7896f0ac1d5cd18757d0ecefd3bdba8be89230886b3efa86dccf0f1eba27529f8ea5b6d77716b0bddb3d40710dce7cd5bebcff1dacba1f674a4a87fe0e77fe3add376caf78c960b7c6dcd9df2fcb1d2bae54b1f22c09dd727f78632ba09f9cc549f7c6c69ca422028d614229bee03cbeaee9df3f53b576fae2d9354e4ba2df09533ea1a29a72fe3dc3abe89922e0f45a116987777edb57beff7fd3a1dd5c7a5cd7b5eaeaa59d142f3329d40d0cb9457684c21b2c13d30a571cff735f78f2f6f18d5373b8031ff0cedcbb6da3ae97e30ba13f0c08ed36bf35feeeaed96d323dc8766e587068220c8f2509b5753886c380ad690d759e75f6da9e3f045f5557ff9408120fe9287da1064557f7932cf1054fd25f518a281ee55970743c60e1cf9ebeecad9ef8cf9ca17d5f77ba2eeef29c8d4835acb43999c60a8a7d3d55a49efdc15d2a8beaba274de40086285b5d23d2dbf91eaf8440002d7e9ac72cbfa9ce72877545f7c3fb288ced1fdba8e5c3a4af7838f0b2c1ed5cfda0e5fec11da4939a7ee1ba24367f735d7bd9dbc5dcaa83e4ead5ca1af7535eb2b259d33cbc939a56202b5ae907fadb1d3ea1e772a17bfee7ab6d35ab97b8e5546f5713c1d69b3dfc85739b26cb5523afe9c9b52bb59a3b310765171b4f9b97aa3851f6baf35b2eaa3f4f37eb43f5a23ec4f424875a8caf3e0cac47cca2c759fb677cbeb95517d1eaae2cf49fcde75b7f7eef3d9cc738feadb6f64435df1454c2b7caa2f7599ef0d6f8feafb89e2eccd96ae7c59f03d88b98437c6291fc2afbcefa8be0e55750941fb8d68567e683a54d503827640d04d21b209e3e16eebddb1eaae7bacbcd3a83ebbc35519b785365ff86fb384200e04c5595d1e30ac780ec6f8eca455de3be7ad923ea86384c381f0dcf6f7ee9b4bfe36d7398621599f8aea2d1ffd3c389e8e0467e733c5abd38f4078cbc82bdcf3de39a39e32aa6f131fa56fbf111f39307f50c6e9a29d90db2b75545ff5d3246de0ebf4eaf44871e0e9f8d39dc75da1b451d3a8beabb221f800be3c4ff84f219d313ee4517d9b6aabc0794f9e298f9b5ac86be5517df6d51b986b18e5bd39bf676fa437aacf85aa5a1eb481e7bbd0f187506e4a2594517dd56579003b171f5aede6edd5b9c9a3faae4ebf5d74007f7fb1c61babde7ff9b6517d7c7ab096800398ba9ca573714ffd9b5b19d517591fcfa6a2fa869e6850342b9a951f9afd5eb8e421f7d5994264f34383fbdc5b774b777efd5907a3faaa1ced8dfb4baabe80a0abd3212b7fa171f0a3b93e9d8d9b2944365f6c00ef1d9d8c7052e772bcdc46f56956b4d0d88fa6c7108d66e5876633491b0f55f10aabcb13bfa2b64c21b2c14203d56fac4fb5d94c2003477207030d031eb88065810a544181094ce0021278d7b748200210b0f1000d38a0010cb8c00214f03490e9d7c702094040150790d4020628c0050840c50004e081004000d42821d900862180080648231398efe4a98601fa2085011480b56113573861500e1c1fa8e2860d0f7480039a0c340c5cc00215a0c004241001083cc0010d60c00214904900020e60009699801a5886023a48785000d6864c1ce1848102011c9601c5c432a0f030a61de58e38c6580fcc083042e8f0811c30609d71205a6091f9c4165605bd648ec79238cf5f49faf1040e8c6c3c9627b4f0c4f5848d1bcd044733e95fd95871a1503c96fdecf7c2923c2796e4c92d13c7d3913a8101cec9aff295905c7daef09c73ce39a594524a29a58c31c618638c114208218410c2f7de7befbdf71c74d041071d74d041071d74f0de7befbdf75e6badb5d65a6b6badb5d65a6ba594524a29a574ce39e79c734e29a594524a29638c31c61863841042082184f0bdf7de7bcf39e79c73ceb977efbdf7de7bafb5d65a6badb5b5d65a6badb5524a29a594523ae79c73ce39a794524a29a59431c618638c31420821841042f8de7befbdf7dcbbb6d229237c1d1fac048cb10fcb4c42045605e5eaadb0f8f4e941a5bcc483733ed4172e14e777a05c6f5927d38741553df84f5d3086b9a2fae80ac2f30ec6303e86a008a15250305b3086d182314c0f3c5192948de4a98b68e71f52fd4bfe41a53086c1df922deb3b8c617830c650b2c537c69195b7e04c529f5ca8a9c8d4c50debff257bf2e4e3abcff5e959b7e8aa24dd729b7683da94391f2bbfce9c66659713885fd122598e2005639813c63021600c03029671441a5864810563982b18c3983086b98c616c450126e24365c303f3088292823743820c198237f847173c8200d990e004c8f445a815fbc9a2f3978f168a9385e53e7e925a26dc88123076c306863176e32bcc1418a1835915f4a23796953d3bf71c980d6034704d79923a52b52d89b7ce677aab636597466dd132495745e993f6c9d1916f8b408331ebb2a4238c61a8600c330001f0e07fe51e8c6102800180c7934d4c14c10445cc6cf1fdfcbf42819c34112a5ca2bca02ecf4bb54d4cbe82d1ba288e75511c15493f88c881c793371e6b4b1cfd11626272df9cb0b20e110776d24510aa7a222f3b7858f8bae07f44ea714d12e5d998986c3c56908c21a620690bdfc6aadec3f9c8c2f731440e56081cb020148202352a21c6c8000340170020054294304ba565922c4b02c218330529c618040e04910796591f44033c56bc5ca5208535a4b5bcd5a22b7b1a87736262c2d8062a41988005420b80b04c14a1f8c30d6a10c10f90b826e9732197e39aa40f9d700b1d8cb5c6327e58618c9564fa90870ef4210fccf28317cc1d717eb88c31f820972307a6097d10c218e31c48031169c82193c61474b466c2d232492cedb2b2c708cffb3985924663d08be9e47961fd9113aa4f3ee0b31ffa3e57457960fc48fad9432718d37b10430f69e8e188273a71884100220f9c43b9fc444206232183640c19c480c4c40709264121c182040b922b2a6a5b8a300486101834d0d03086f9c217303168a902d34920028c8f1e18045c42126c9000638c073b2883f17d8710b0dcb1831cb8f5928b1d2850873c3088d7a109107f6b5387133088a73482c339d99604e4bf071db00004c91f186317cbcce1cab1c5c66351d58741b52ce5ce571f608ced8d1ccc60ecadac6244faf157455d29dce5c8b502b14c2c196071f9589f0c4c1faa372a65ba21137058612c17c561e158edb7164756bea5ca114a0ade700663ac65925e389c465dcdba24ddba14595f64dca0e30d5ef007a35de1620a609bace7bc74aa2ca4fae4ea93dd60851da1982307abe1861a1625d000046368a0c1ac2b303480f097c4d94c2c608c7134223484308686432302a440441bd060ac0d6730f652fd078c3698c118dbb4e1f24891958365daa083b13668581b06c028c1863a30c6d8200666bdc486253066033670569895618365161b1a636c18c01a4091afccf3f59d3520425a431c18637858835cc314d81ac2608c35eaca57e63cef500320d48002c6981a04808f642010557d18375ea6dcba64a36592ae4c69cb933b8da541d7f4d6a749ed4806d2200e555dd4c492830441be5869d087372bbbfc17995c9ebaa087a486c3e252bbde7ae96ad495df25c7cb17a9a8fe9cafdea5599d665d5215d7745954a70a1e3e4e1a6449d64fdfd23ad53470bda5811bd64b97c491b4644dd4963ad444ed17ce94abbfda24d978e15419fa96c905ba81c3463369cdfa642143268a52a1a8158f1459414cc870e5f6f245c87031c66ebc7c111bac240b8c91c192a131d64c38b5adf0b0cc1896308615b6d96cfea2a6e7d444f18f8a905c7d4e3c12a707ca904830c620f188463002830903030326dc7019e10617998f0c18639819a491842ad481131d31186318161324c1098cf880237630c64a4ae01962853e34e0149b608c954ca1095410c28032c4a132c63020f0810982f0800c2498813156d2894aa4800b577003112ac118c39431090cdca800a0c30a8c314c1a1abae1043900a3108c31921f18048d28c303657c823156e2801de4c1124330c30c7b608c05a008410005260d1353848031866144277ac002520c6111953156c3082c0220424407151c82b11ccfa9090f60b0016356163af624d9010c0660ec0b694c94277f646255d0b6a48e15db923a4758c60b62b0fe63599215d1feebe592aaecb1a25db9713ced8aeaf346246bfafebce533d450a3470dcc6a8020028cd5b882d58035345ea801822114a20884d85de030ab823c9d7d24773a2a5c782e6c2e046113c5c33aa1f84785bf3c175ce21f952d20610b17638ce21f2b5fcf3fd61998608c412ceda3952f28ae85503ce7c3292014ffa8341c3a2a0ac5c4840013b537d6f3cdf49c4bd146f2e48dc7b228feb13cd27505185ce103100b15b9b048d963e508c77f6f97955da22de1f85c3bb3b41302e06838b80f13932c521a8e2d74706973bd754ddfa1809898acb85053159050851c54615221125ea0c213a8b042050c4c610e53f80263109006b15c6f6daae7f029476da2585a9ba4c6f245f26562c2d23a65a341365ae7b51c375eb35caf320561699db2d1587cb0b0b0e47f9d231c6fe5c8d37d54eff9c6bf235dd6653de71687dad445551e8b4b9f2c24fde8d8ffd02a52512eef79b9361ec9c2f7f148574579a6eaa3ede755cf395444793a7ff12f42455516f47d746c17fa3e7cfa5015f77143a5e1f0c2c6169195a37f6bd3a1aa4e5d4f4004753d410b4f60618c41964571daf5a1a4d6324938ae8fb6a8c8e5093618839c0088c90962e0ef8423d00deab2d142c0324e70d00d4adcb0d10427344188e7e5e27c921a3451fbadcbaaa4666517954c136c58d9850988601fce84331863c291f64cd882e5f8caf35265694bfda7dfc1840130c6c9d512e2c018635633d24e96b004c620aa51d4b504cba559f15ff58dcb4f94363159d9b8fca4841625404224818c24c4241400098340021d1863236019248481840d1c810e8c312f58e6089f2348ab922c0f546f7d78feaa88c46997f511416bd08dff54978df6d794abfc69c9cf69577ea9dec8b71b367058396ad35b2c1c4e9ef273284ab793669203923cd2fe8ae5b29eb3b41c1004edeb1b0eeb5b72f52f537ed19eaf3cd3877ac1c13f376aa555af71dc60f98fc462a35915d570701cfca76c6d9ea3f3a655d235bd11e060041b1801a5089f608c69c132453823f8b97d0e5f7e2e6b9e75d599be81e413f87ea655cecc37bdd0dd49e117483c8129adf4b9aef223ccd2c9a83eda8918e3a673cb19a5ee4fd7595d9e8b8413f86d4927b7b5ea499da5fd79d07906924de07ee57757757ef26ead79aeae235883a2d1a06850345d4010046d0982ba40a2096c5d8f6fdfd73aeeaa6bcf04be975a5e75ec3dbeab916322420b33d5996a49fbccef12986ebe39cf6fe1edd3466d096ea9abae534bf7aeb412583ed7a1ae7bf73aa97c9912dcfd74fac918adb63f096cbbb512e6a9e1c31bf59584ab947e7ccaa9aeaf5b1b099c5d8d7abeec5ead4f758584b4d1d6df70e7159247605dbb8371ce77bce6ff4b7a5a70a159f9a1798e86a00b061247e09edfa6ff6fbf8493ebdd08ddf97e95f3ee1e3a68232370b43547c99d8ef15d4ded2230ed1cc2771dbd5311db554daf7dee69ae337f89c0d3be98effc67277d7b556f4d12f5020922f0beb4ff8bfa5f1fe2cd9bb3b6efcd4ea1a3da100e421ae5e5fd4dc97bdc85d8f4e3cb71f657a5de9210f85ec89d8d52d3dc79b47210f47507737ddde93a2db482c039562b2f856ecefce8fc96b8059240dc0ea9aefaba2effee3a01b1dfe9ba2dd4945b4e35fcc3fc6d3f56a9f9abdb0f3abb0ae55bbb5f86bdf601df6ba5cb4ed3ecfab45aa611a1b5d3c6eb2a94ef6d29bf723aa7bd1d4a6a61455df9f201432a257f733fed99e6d8f780a18cdbc118eb95fa5a78f580fbfdccdf7efbbe6eaf7d79c07d5bdbf7fe5ddd73babaa83ef88e64201a14cdcbe5e9e029880645c327898b97ea3f23d0a06834281a08dfcb73a141d1bcea232b6fa141d1f0a0ee797267e3de8c6520c103ae363eccfbbea7d9c2abaf1548ee80e7ebe766962fb795f9dfa3f8a302891df0d6d06eaae7edae67aa7b192475c06ec74ae3d5aff353eab623a1039e6f422ded7c56c6eb34c4104406c91c70d455bf5df59bd76a0bab1cf0cccffddf58dd7bb7731e07fcacaeb4db0ba38603e60e3a0bebabf04ab85f7e03ce337337a17b164a18777503eedabd6a27a45dcfae351a3846ea9eeef6f63a618f520b923660fd9cb4f24a79dfc7783b1bb0e6166a5be9acb356eb7e0d18cadfdae9797f473a2d5703be3ce77f58ed85fba9db69c0bbc33ab7b3d4f21b65d7689034effb66ec7beb3360aea3855cf7baabebb39b01d39e73b57ac2692f9cf19601477bdf77ae7f6fddfb2503e6dadd38af7575febc760cb8d26ead9c96d32da99e560c58baf9eebd6eca5df7e730e0fcf0c1af0f257cfce50403eeb05a7ea3a3d07228b3fc02aeb1da3ebf5b5d6bdcdc0bb8d30a65de30feeb5dced8054ca1bdd24e17adcdf4c2c7055cf775db39d9ffb9ddd373eeeb41b2057cf376dc7298277cee4e7906d68ff2cb6bbf99bfde658ceae39bf836245a783a7ffe38b3bdfc4da9a9ac2e8f4492057cf37d09efd572cb0975478a2cc888934448b080f5942ecfade3cb3952cde9b42f85c806042457c0b4ee4aa7865ccbaf39befa07122be017f373092fec30464d7754df4c024915707e3be99c9d3f7775d61dd527a9805feff6ebd471bee7bd062453c070420de5ebaae7ebb54a01f3bbe59d55ea682bdc7647f5491b052c79a41d3e4e7bd7f473962450c05dbf08738f123eedaebd4fc0105e4d21e56edeb99fd41f86541f0c489c80e57c0f3b972f6f7da7f7e69134013f8f1f779df34e3723df5839b28f09783ef7d2460e5fbe554248b2045ca37b6ef7b3d9f1a829891270ecf3f59f6fafee99cf479204ec749413c6bc91807bff2ddfcfaeef73d0921c01f3f9d3f29d6186d7d9b9a3fa488c80dd6bb967be10c2fb72fda83ef858405204bc25e414daf951e67ffc5e1222e0072bd530bffefaf49b3456123370b5dfb38cfafdbe57de6797403204ace9d6bd46e976a6b2d62c046c7bbd97eaab3985ceca1b046c63e6794b3d9fb6cf2d94522001027eceebec575b487b749c4781e407783e959dbb586d7f78fb8beaa34e20f101a6ddbd6d697e92db6bebb4ae295ff304243dc036dbf993beed976eab6f549f09487880a3a37b7217ffd669efcba83e921de0ebb883b053d779873bcf4704121de00c259dd7e91bb5eefdd5bb3183240798deaae5ab2fbf4cb9843daa6f4a121ce00aa3cbb5d76e6b7e39c3a8be32f08eb5737a1faf9f218437aaefc62090dc003bfb78bd2f723739df64601e9f7ef0bdddd5596e81406203fc7ddfbca7dcfb67e74f46f5d5005bb9e1bc5bfed40ecedda3fa2a090df03f9c6ed6b7778e914b18d537031c759c373f1d2dd5f1e918d537068e17ee997be75a4aee9e2491018eeece377b86f39f8c018e1bd25a9f86d0fd9e900406584fe8feedb44fce3c5f251103eb282b851952def393b146f59d02cbf7249d3d5f2b21bf5a47f59902571a6fe71cbed8f3d397a3fa5e29f0a4f53a692b9cd0f14b79549f8ba4c0f7a18c136aa8bff2c87754df1d05fed961cece71e7dee63746f58902c7cb77e5ddeaf8609dd745f5d950607be7947946070afc3abee55bd37fd4f2fa09dcefddfd699696efd71446f579027fbefb520db5ae55f3e7a2faa80d309dc05a4fda1f97dfe5eb71baa8bec909fc2084ced2b76f8fcf7e8fea939bc01de6fb9e7d8e539a77a79fcfe67a2b6a02df09a39c4f4a3769de39c24ce0c829e45cf22c37a71b13784aa7ffc549eb8e0ec619d57709fc7f6da696c6fa355a57a3faaa25f084325bf7667695f27f4b5d80a904de3aba4cf7764eee297754b5004309eca4e39febacd0520a35bc7e345f7d2c8ab335ba7e341b0b79809904eeef3a2d6da55dbe672f8cea9b92c0fbd57bf5ce6e3e9f19daeba74d45f50d973eb0069848609e67b7f3ee3921b570c6a83e0b12f8badc6bff285fff273b8feae3f13d62e659ebb3d15eadf59c2f1ac6f8cec03802cf37ff69eef4a6f6f9cff9034c23f084733b57a5de3bc31e6954df66cafb0e01c3085caf7b7b72ae2b7fa95fde501ce200b308eca29b3d47fdb36a6e73e75094c628023b28a9cd70c359dfebd9a3fa36147730110f4a010611d8dedbe9fd6a657530c6303087c091f7ed38773cbbfda07c16973e72051843e0fd56cecca3bbf2f54d5daf10f8b37bbf67bc55d2bbadc985dadc27030c2130fcbb3f7ea41b3ab9df45f56d266ada74c9c53a081ce9fe07a3d4ddf5aeadb7aceca95110f8515d3f539737b49cbe1ed54769800904a65f3be5f242ab7996b246f559d77f671359397ab00c0c20ec8597ee79a19e6f73fafe807b7f1fa9eb11ee27b3fea8bee9070cbb74b47e9edb39c8f78eeaa3aecd7e230fc200d307bcada37b3ff9e2ec2f611ab8c268adadbad6f7d5cd31307cc059cb68f76bad9fe3b9c7a83eba076aa7adf1de7a5fd2973be75a01a307ac5dce96eb6e9fab5af21ad567bd2706260fb46e386faf935f67257c78c0506a7d23b75abef9b5dee1d528a973af46682bacd33d4a3b84f5c10ee9c78ff283b1038efa594b29fcdc73d63547f5c93ae0ee648ffc59ea6ae59ddaa8bece571b231287aff3438c483c9e4b5f4010b4b1f07d6a0a910d18183a6047f7d70eabe31bcefb9e66458be9de0b3073c0b353d97bfecb35a7f25f54df73b8b499a80a41529f280ef731058120ab08454573c0c8013b0d7977fca98b91bfb8a3fa681c708f7957f9dca3bfe1ec32aacfbdf9e84b21b2018281038e8fc3096fee32e75e5ff40642fe531750c0bc01bfde7984d0f5dead9deea3faeabb5e0b0882dc8067bd11426edd7d68efbe7f652352e5d96c52886c200c1ad8cecae9bbda550aad759bd3a708306dc0afdf39ef73b772fe6f69545f0bc5895b60d88021e4f965fdfa46caffd6a8be16ea875cc395b3d238ab7dd6cde96ae5d47e77ef9c8c2f25cd517ddfd242fdf0502910d4427166dc60d48037ccf742e75e7699dafb517d9c4f27a668567e68381f20100441168723e9ea8540109442645361d2809fb3f4778cf6be6a370fde0083061c7f439bb9e5bdd7577987a0ba792f983360b85db63b6aa8f39b9d926062cc805ffeecd04efbdbdd1abf0cb8f6ad67968e43deebdb0d414ec090014fae9fbf869d464e2ba77633067c61df5547c723bfddcd6a7d8011037e764a2d21d5f961ddfacd9a42641361c28069dc8f7eceb5baea9e7bbbc1e8000306acafcbdd397bbf6abae18dee1770cc3d3b27a1b35dd2ca69549fb5892ec905c221182f60dd5fe75cd7fbdd390b1f855d98f2554a9f8dd53d7721a534569d2b85d23d7b738f2eaa6fa2240882a03b5d305cc0944368ebb5dbed19dda65bc0f07d95b1ff8d5ceee96254577e68acfa260fcc19f849a7bbddf76bec76c649af16f03f68efd33b3f8cd03d6d713c1d6966016f7dedad0fbab8b7a6ba62015f6d77fe97f5e38c1cd62b607ae9c37ff239bfd7d16d05ccef86346fa9e5eef07dad02ceef4eeee8db5ff9869953017749f9feabadeb1f1fbf53a0d4d6292f7c313afbe273b1baf7f0f385d1bdafd13e2960bdffda3e21a55a56e71e0441ee6ddeb6a48ea4340ab873f9f893154ec9638c170a78c7be759671ff7d7f1fc43c01d717eb9bfdd9ace367ea76685034279a951f9a49ca110a0451f7304ea8153e0a9dbc55deeb6ab7563b4765fd4bad95982660dbf3d373d72ee7f77fd60601c304cc5fd3f87286714afd4e5e21609680a7ccbbbe6db7e416d2fca2faa83e592f5908044190dd3c8bc9014609d8cdaea79ef969f8913f8feaaba8cdf52df2d91a5f0a918d169824e03d63ecce3d59af0f7b9180e5c76b1dd7f07eb6bfff08386f4ea5fdfb1cdcfbe78beabb1daaeab1dfa30241351a013bf871baeaae86b36b5d042c679e39becefb7de75713015b39698ecf559a3f4e5a028c1938beae2dbcaf6da490e61f02e67777b8ede531f779ebfb8111c2bdcec9e7e0b5efd10b69cd2feeebf8853b576977e50213045cf3a390bfbbe7bffd3284209b426463040304bcdfb44eca9ddfd612ca1f60079db495c61bb38430761fe07e1dacb3e76ef9e4f3d51e60ed6e949dceed227d7c535d5e99ba720f0d8ac6938140902777e00c303cc0da3d986db774c747f37e93445d930ffe6f07981de06e617c3a5faeae67e9e07b5e56eee6f500a3036ce573ffd33e7490cfffefe42a0b79cfcbcacb059d113039c0d9ca99bbfb0cdfe62fce87050c0e70cdefbecfedb48d4cc0948133d5113ef9a0e5f5ce6aa3fa3cb1a284b818606e802774fb3be77bda5bfb7df9bc40c19081b99d5a4ac7b5be995e9dadb30196d33d9bdfefee5e9df05faa6bc22af20a981a6097a394f4c5efb0420e37906bca97355128907c462088beb779f21989320b181a60e8b4dbf9e50b6dbefa219f1fcd8a46cf8f66d2196059e3ddfb4ab9b7bd5a77ea9a7c4010754d12b529443617660c4cbbfd49337cdd4a6ee3cb00cf5d1f7c177996b13a2e352b5a683c54c503823c54c51d2606985738f3a6f451396b7cca392ff58020f736cfa24dc0c000f3b9efb32e679bbd8020087ab92068bab779f5e5829b2860c4c0bdca6a69ceef4509239df7a610d96068f0026c6bd5f51fac0139c03a4368637f73f27df3e300bb9975a4bdc6afb36ffecac0f41f950eee7725cf973b1f00e00693f2ddb5adfd2785900c19dd944f3e2b9f6e9b3b006c80e9d4b34b2965d4b5bad96b80e9bcfd71499dbe8ec34e036c39a7573bcdddbf0aed0ce4ecb9efaee994f9f53cc7c08fe6efb76ffbdebf6765807bacf47557618fb34ef90088c1e6b9d26b617e1e69b6170030c070f6feb6fb8f5377ce3900c4c06fbb985f3fd4b26749f92930743157fb9753e8fe456e0abcefee32df192f9d77f25d0a6c6175354b08ef7efaf42605d6f5fbe3cf67ddbadfac4781bb8cb7ce39b9e670d3a945811f5677a7d6354a47fbd3a1c09dcaa9ebddfc4d37bbcea0c0ceeeabef9e3c573ab9ce9fc07b5ebab595d53e9721cc9ec0163e0921cc34f39a77be9dc0d3ded86b84977302735d65adb6efcd6de6ef6e02bfe4baeb1d27bcfde97735812fe752ca3cb9eeee5fce047e54debfcfe52767a6d4620247d9257ff9b6cb27afb497c07dcb487fbaac5f7c9b5a02c76aa9b6515a5a094cefabeff7b6fc56bd272576d4bd43cbb583751278ba3cf9c36dfbbdfbb92a09ace1d37a7fbd3647024f2a79a436f6275f6f4e218165ced6ba3a6dec993b4e1f81b5a376db9c9fb34f5e481d81e99c76bb28f9ddfbcd3a1b81bba572eef9ec9617e62b19812fef59d67bdd7e11d6291781657d97ebecf071cbff494560fb74863b3fdfd7d6bd632230dfefb9d3926719a596111138ebaf93de9d633c0486d546ede0eddb5e7a613404d60f5ad9ad7350537b1f16023f5a25e4bf9fee57670d09819f5a7963a4fc663bf58583c0d0c1d8a5a5d57241604b6b8db3bb0ef74b6e0381638593df59fbbfea1e20b0fefebad25b35fceee81f707fb4d7cd6397b5e637fd8027e437d78fae4a6ba1ec03decf3a5e39affff9d29706aed7c998e5d653e6e8dce303de14ea1a658df9e9fcbe07ec9ed2e8a2ac54dfebb61eb0ebcef63ef59b53bf67f380ef7377b39b73cf0ce3c4038456bfaeb5fe6adfe535ee80fbd59a47cabbe3fc2974d10e9a4ff83aba67df8bfceb80f3ebfb49f7788cda4518372fd5559350830e70d3fcbd4abb798d750e39de49f9ad76ba6adfbe72c0f44567ff25ff9775d5fc594fee4422d48843ce71bfa9dd7613be49351c687e5839b7aef2d7a39e6f7872ba4a2184f2467a2fbf924e99a38cf1414f8e35dc80f97efce5733d77dd37d768604823bf9cbee7dee6b9b701cf9d1f9f51ca4c9dcd33b301cfbb37953c3bee76dff0d65803e6bfb9dcb14e9d2f7d75d65003bedfeddb5bc287d4d6094b50230dd8d9676d9f70c7fd9adf8e065c7b8757de3eafad77777e064ca786d1ca79339d7c536e064c9feff872a50e4a67ed2e03e6f2ddd355c64ea3a67693014bee5caedb4eb7b37c708f01bf696b87513b77ef73d58a0147d7b9cd123eb7a3e5b28601df9de194ef5eda1a5f5230e09af7bfbbbc3b4b1fcdf30b183e776175d3e6976fddf4027ebfbbd6f75ec77bae2fbb80afb632e618a5945cc099d249e7d533c6d869dd02b6b6cadcf77beecd5a1d3c03536e2dad79ea3a37cd5c0b9853d72dcfefe68575eb2c60b9678ddbc2cc2774b23e2c607ee973f1c97f17feff15f0dbedaed6f251ede0ae56c077dae9f6d7bf7647385d8d2a60db79e6f476573befdbb91a54a074de59df84f3526b9dbb35f2f71eedd24d9ddf6a286b4c01db9ff933d5f7bdfb993e1cd49002be33cff8b8a6ceca78e32552230afaafe6d6cd7a2dadb206143094f96ad8f99557f36c6754df7b61481707359e80df3d8c4f2d8fb2bedae194410d27e04cb3dc19467b6bdcb4f21a4dc070cf3c21fdbbbf5f982113f0d3ad1dd759662afbe5af52a1c612b0bcb4f2cd2394facefbec146a2801efde5f8576d2fa1cbe7e50a891045c5dedeffe96566e6a2001e70edf868fded8297c4f5f2f6a1c01db0b1fdc4fbb96d208358c807ff39ddd767a3fef4fd322604a6d775c7eb45243bbaba49308d8e64e339cf771791db531aaef0ec9b08c1a66e0df5af71823ecf9ea21e0c82597356e373bb79adfa83ecb891a42c0baeac921adf9fdbe1692c4a04610709791d29cad8cf42db78fbe6c087ad91008f866fbb8ec345f3a7be7683ef980a0e768a965faf4578a1a3fc0125ad99fc74a73ff472f166af8a0460f30ad753f9b75fd4d9f9b39aaef85e3f19ca0d8588307784209dfb377fe7e57f545428d1d603e638f3b3b1967d75ad722d4d001fe5bdddb77cafc68e539c056db3cfbdf4ab9b5bbbe126ae00043f8a48bf3526e69dc9193a04619f841d965ce6e73786dee2e488d1be058658fb56efa60ed410d32f08b8f4f3aff7eac7abe68373ca861031c2bd459cfaddd9595422e6ad400c3f72e77b46b9821bcd045f5d9961a34c0d7f547ab85f3f1aa3b9d517d963c52630658c2fcf1f2582175ef4dd2183005356480dfce67e77596f2970f8dd48801bdb33e59ebb50fca4b65967af65ce9d3b7b4ef07e10e6ac0005b3adfdb18dd6bebaabc6a8881e1b552cafcf49c9556c8293905d61042785fbe7b9a152d263405867b4f793bcd35533abb7e532829057e79420df973af3fab2b7faf841498c64e5dd64fc2cd6dfd8741c928f07e2eee7f96d377fc45c9c5572b3b9c28b0aef59fb5f4d56c39ec3daa6f3351560825a1c09df299fba533c36defe4111438dfea1c8774d7afaecd7b2e5455513be4b3fa50f2091c357c5d4e5abfcaefbf8b703e9a93a720fc279720d313f863a45b669e27c9aa3efbabcdfb168e7bfe1f289aeb030482aa2f52e5ce732a0582b6700f3ea726497284924ee047f9de56d21df7bb71f2124eccaf2ed3279dfcdd6ff5a26413d8f26bf7f3e776d3aaed2d438926f0a66f67bf595b2bddeb0e6602e7f8f05fe4b03e7e33cfbd041398c6afb65bdee7bdb9fe4341c925308df635dc9c42ceef83d0072596c09df6bfbc56fbaaae34eaa8be9a83924ae0996fe7bc464961192594b04a2621639c4e460b2f75ee4d0a679df446d73377b067975c4d4960f8743fa721840e4ac75f541fa4414924309f56470b67dfd95ad91f12b84778af7c3473fdaa9d9abefb883d2f759b72a8ebdb344a1c8127effde548e1ad7df2cc1b81fbeb379fe69b5bf8a2a67f2861047ef1b3abb3526d2b84f15dd3efea8554f7e25b04e6544f2deb6bcadddbf88ac032f37bdd83fbf17d634e04d6f9f10977b4161118d67e79e44fefdedd4917d547575072087cdfd2e7d7dec7e37cdb0d816d7fd23969bff2eedee385c07b5718a9bb13f27d6f8584c0b346faee84f7e9a5efdec733089c279dd3b987796fb9611604aed5ce28f75739e7e6d60602ef0ded9befb9b733bf9b80c0734b9ee5fb1da37b9a152de67f38d9c814a3e40fb8ef0cad7d4f3f0e69b66491123fe079bbdcb542eb72bdf27d54bb9882c0d7916e1ff07c77cf2cb7bc3adfe75b0582205892068eae6a0bfbbcb4531a6de703befbbaac65e4ddddebe24dd191bee4aaca7bc031de9d1f84f442dae9c7a83e3de03e67964eded9759e395a9b07fc2cefb33a2e2fd492be5a8207ec2c747b539e277cfdb91ed57707ec24bcfbdaeb74b65752298a123be0fa38df333e6e379f35524f94d401dbe9a8cbb3ca6825ff4cbff2405be994113e148dc31a213f343085c806d389123ae0ee3aec575a2db7d6f4f71c308c8f5babafb4fabddd8fa2714134281a97a241d138201a148dfba141d1382e34281a27028d901f1a3960f738947ff386bb7ea4f9fa290b2571c0fdd6d7dde687f3f3a50f87baeb7eefc52aafd3f30df2ca9db783d7ba18efab7008da3c2f94b8a1470d2b8f3c4fbb69ff2e861234eee6fb712de9cc71ca09dfe63d888992367caf5bbb0eebe707e94f1f1a14cd161a148d161a14ac41d1f0d0a068503428d70a256ce0aec71927ecf356fd97df2b94ac613fd7f5b355f7beeb7e590df2761e6ba47ddbdb1f450341b40a256980f64d2aa59577c2fb607ceed6abaf8cd04a177387427e68e80e4ad080f33f3923bdd341c829ad3a283903de533abe77a68f5b6b519e589d1970ddb6e7ecfa8599f3dfb30c786afe92bfd6dbcd0e2384a09b4264d3821232e058e7b69a4b9d9fdf379fb32944369e9231e07a2fdf8e6f48eba3d9be18b075fbdf39e9e0bfbd350f03aeff3dcb5c2987d5eee8c0807bbef4a176f1d5fb77c32110b4ab14947c01777af5b456f2b969b69b9678e1bddb2d974eca58617fd9f2584ef2922e60ad39bdd9da3ab7e63d772e607b6daebd473de394ef7f0b786797a3ec35d6973cba7c0686b9ca6de93ff764dcce81a0440b58ee6d25d75d3a4ded7e390bb8eef9ee5d7e2e536aedc5027e472ba596c3a8b37e18852ca1e40a98ca7c6b9e4f4eea2ad71a9ea0c40ad856272987bddfbab9adb3a40ab8673d5fcdf31fa4dd755a4205fc5edeb2e70edfbbd03a5732851229e07e35dfda697aafb67aeaa8be8d8351c09bcb3cf796fdf6fc3e5a28609ee9eb6feb9f72e7fab2e409785efaea4b5bedbf67ffa3fa9c80abb62f5ebae175513b4d634913f073d7564b3bddb6c3496917424a9850ffba27779671d35b292ae270094237942c01c7de1f9594f347f33f75517df309254ac05bde97b2d2f8d652bea12549c0eef59ef7fddf56ba7d75545f9c82a04497f485c5e19c6850341a14cd75e4af8942d1a06850349a951f1a2cdd9b4d2841028eb27f9694d2a8f7ad5f513418072547c06ecfacdff367a19b396e6b53618911f0a53b4a9ee34badbf3f79779414a1d6ea227452d6e8e2abf6515aebb555db9b6be694c2be8566e58766f366dd430911b09c36da27298c7dbfed2c0441d07b9b379f3303c747e98c165ebbadbb57be5c12846c281902ce52f2da397cf93a9796931d24438910707fbf29ad3cd2372be7f90d2541c0fa79adf2dafb5ec636940001dbeafe6e4d9f959b67ca7f80ebedeed6685d7d3bc23e2108becd836328f101def6ef96b0c21a5f96f335289a23cf271f106484921e60f750f25add93f1eb7cbff2435364537702a1840798e6d8f7cbd2eef96a954f83a2d1acfcd050a16407385a582fbc9bbeed66d473f6a04407d865dae9db51e73dbf5b18d5b781a0921ce03edf7bcfea6ef37ccde1e40a352b5a682ea9237136d1e5794e53886c8e94e000cbf93f77edcfbdbdf33e2f34289a6bca3b7b61a12777e27c6f5352c667f768e5513f77a95441c90d709dda6a972587f6d9feb6840c9c33b7b7d63d73b45c4fde29b101b6cf599837afffae7eba96d400bf2969ce703e9a77a6bcd3005f2d6b97d34dd9678079cf35e6baf34338e5dc63e0f7b293993f85945348af0c30d5d1d9f82e7dd04a186d0cf074bbf37ae1cb3e2f951506d855bab5a6f4765a220676164af9e2fe4ceb7637caa759d142034116c214221b121d909c02c34be5b63cbe2ceb7e506f369bcb081253e09ded8eb4dedef3f3edbe14584efa66ddf3c2ccef7ea4c039cff7d23ad9f5c3e84681f7936e57a97ba5b7f6cc850cd1b8211a148d1b8146c80f4de5783a127d49201105a6b267daefd6d6ddfca486a1c0d446c8dd7b39e6fd3b4708da3c500499bfa8046f2a76993c8881180531c6208a2aa3a0007312003030241c11882362d9809b35e21480025d90728e3c198964a16092c330888120886128060043882104108318938a0fd17782d227814cd28e46605bcd9d070b832572ea46217a180db6a79490a09e1907cbe0fd8dfdfcefb47f2b47247b93fe8e7ccb7fdd13303f280b79f0bda3545ef4f87189e71ffca7ca6b8faf9878bbc197557ee57846d33c0286f915f1e19f0bbc7fef3b71dff6f8c4b41f277e4a04f9407cffc4fa29d2569967bbf92d263eb8818ff2f3e38d1a7f0ef07ecd77a2bcadf189809fd33c33ca5f315e5c21922c2a23fe28e3e59cefc7bc4f1a9ecad861e3d7faace04fbc0490e6ff7ff73bfd7f6df62db27daef897b99fcbff5b04cd8f1837e1a5744bba2d8ac12336cdba032309c550fd85757361536f620082f64f711501cbea12c8894c545bc6708f6b4bc79b2fca83748f72c347e5e1a349e26d6fc635b7226fc3ad7ed2c425fc53d4fe4128ce5c1b8d1ad03db190ab72481c612308e2904df28f9fe3ed1bfe4464f83b73df776fdc71bb7d44e4ce9a949f5410258f8d32012dad892c4a378d4c032a4b934d4aa58d260b684ffca4d9fc49cd5cf6745767b9d3fcd6b456662d97263749e91b59e9cc13865b31bc9bd539e7379f65a7ecf30ed015b4df15470b89081090aa274c46b2909c7f8c4b8430194a3feac54388e05051fb17db125d51d0a1deaa7f83f89a3dc3234bc157bd1f96ff7bdc733af65ced0acc6f99036d56b8863f3b11a53d0eed5fbd565e251b11ca119bed577815b69634e4a7e85c077dfd12c627b0424b2c5c240e5ee63013ea96f41443170d61e901a4ced9d009f0445304bb40536ca6264094d3a8997dc090e108b90c76785599ebcf889303498b50ff78b2c510a0705ae48a88032e7d5953d70aa5aa839bae18a01ece5238c71429c116b2e917948f1f37686691ab17efab611e0e8b93d0190600125ab118accc109e2a2c0c1070cf573d880d399f8cf5a7e1a5ce6cbeb4d74ab94e85b02b76ffd220ac8d1555051b5be6ceaad8669e1b388f972104d32f2d820b24ef83276e9c6cd69cfb05a5b51e8a1b870ccee50bc4082887daca56f2896e623d8f1cdf7eede3d1f880c21212a6a739ddf9777e558aca3101f427b2ccc58be3cc196fba6b620266b786f495898559ee70a050effe9fae7dfcf671fe9ca4ddf4440851d676479eb8b7f918d254503d7fde1d226193ef45e1d4c14880ab1d76ff22b402b23b253b6682b3c7c2d399632314dddcc866b190fa30f59e768c2921d01fe518e8e35bf27945d74f5e0a84b81bba3cac757e91ef380c75f0f0ff50dd6fa493e57bb8185fc5a1aece0a380b97a8b8bb480fb453c1f074a2b56c018407742511b6cfa61110e6a85b3f924b9c2edf1470d7d31e61b261ba13c096cb4e0626ccddd9bbf21c6dcbb4720da19b088d5c1295d73f8c979d26e89946b05d27863032357db5ec477830cb87b414da573e5c72974152c4ca5fd7fbecb6dd828ad6ea3a325051d1674f05828de5874e8866e20b4fde1955de39e84d0686d91e16081f932c652199f552dd92f0ebd2a795de533418adbc0939c11c909d7c157071eb7b47ecac1e75bdf525a616f725bc1156a89d2b9b8e1cd0600cd17b7edf89ac76b897764d72b474be4c76cea607c7e2a1524762659a7944bfe1887a0a30eaa13c117057337cd5a169bc7d24399bb5549b9408527559f4624672665c9900ca2a9184aed4ad9b136e37bd752c77ae44dda6bf9e97855216c67f7170ef7ce1c68980654330e31075d6d732cced5e035a4b4afdb37a2d977d76710cef14dd42575043529e52c96197cb32696b07bac31745534b092f9cdf6c92aac6581fe214006ebbba619f4cf7d708f46df15572cdaea2539e9b0070416c40be429223031acee01b4b0d08cb893c5fa2920313f56b8717d2ae6369a5349a5f9cc26aec1695d5686ddf541fbde22eb90a8886e16363ac428efe105361de5dbef8bc658ef8631ca52160ed021f0cb3b636c8c18ddd37a4130af3db350c19188be44321c3dc69690d8c69a0744d0872cd37550108ace3eadad8b02cf57bfee74219f4321ce8476858700a84d69d0c2492b4daa221bd999495091e6606b68b4450808925ff9ea93852a0fc32d769ca18d7962a1409ca129c857310e3ffc0a38126b2718cd7a026f60d3005e7842ac704c2bc5b3f264e46ef6fdedf7b794b0aefb9351873c7c5b8d7325c88d5b61c9d6d901e0e72f1ff254889614ac2d6c91f1238a5fb74422754e0d26931d536b656af2cae8620e0d979435ca9a53c431798679bb1d41a0238264c96667ce1864de76a883415a567313f59ab850b638994c703c2eb0248a790c69349dcc42b96a12f4f532723ec355e4e6fe68948c1b70656a9117a2c1ccfd6f71849c477e292748773f5382a98e02bd00ae2bd694b7e8aaabb5ccf8e26f5afcef2a6fa30d981684f98d2d4cde4d9f9d40546eef0993c7febd99a1bc1eee24d59e4410f475e82df5634c0242ca0de4d7d8de1d35c639584a7c4b8626b04be4e41a803a737f3cfb4a97d2d9582e293e353aa01a6cfb783e2ec8b5e83c16756ebe443ef9a6189b48617c9bba9a5301302f362e43c1e295f233c5e86789773d152da65c1f27e4948abce5b26c962901ed4fc5c6045ca5595adf8ec82655f37dafe5d10feb7bcf47391abd8280b1623f866217f83e9ba2303638ee21503618d1d350f8bb74a25101a8e1779b2539215c95f899debdd41e16330d27aca77358efe3c8bf1b8fcfeb80c02d757384a18cccfea8dc563303f33ab649a3bf6a254870f2235abbecc8db9e96c9cfb28a7012aebe015fc6ea391565a9bcd537bd65a85b4d9f008cc62581b54957a89d960e2a401213ca002392bc2f4b8049b363a7b3132b2ca4f13ed800131854588c4158b566cdc395b72e5a0122a8484bd198b458db3890d6c275944609257886326fc385adfd78d1ba0f7553c3141141816bb6e381a561bc5a6007cb6d064a1cc3efae97f369c871b53ef602598292659c42074eac7568861603cfbc91217a5476016d53115299f39a32940764b77f88168852224d6558c32f02be36b3a26c9de9a2f94510a417c2750259ca839145c492dcc1781ee25933180fb02afb9df1845fc8a492c1b40a1584a4d44a6a22e81d0ea74e55e1ba204a5217d41becd7c8513c003658485bc287ea941f95520184aabe15890e864868597f02495ac1cb0f84cd237d56d799980086addb6e9294300835c677f5c77b1047c4c08d428b70b2060f8dd1957f845d2b5711487e37ae97af9e111817fd4b551dd62475129dfcd8f284412eac634cc91942c8aca5a9b94cc61880d497b11ce001b25e4ac0ba5edfddaa9aa342fcef3cc2a696491cdc3581d7b6a75724ab920bc19520d7ebe0791c37719db018599676b443ae390305882ba0c3023374f54bb141e60681f0932d164398d40146b329603730a6c2e474a4d7c6ad2ed0b238e687661cce520a3670db762c8e560b30fe114d97ce33bc2cc81de4915a2a68b5e2ef4342b67751f93af07d8277610db9b431b97ed20e362cc6f5e8fdc2e1ef1e33449bce56234bbd87b8cad4cfc7751c5cd4113934cf9cecb2d1906990b73b79111de4509726d7cc2320445a2b02a99be9b5dc1549c175ced0f98f217dcd386af6170d23e8348e15025354edef4e65f63759c37cd2d60c474219cf4c8d73c6e094a137ef80593e0bdddd498fd688168594eb9fe4e0f58c3c8047d2a8e85c52a53ae80a3e9e900ef4109d0d979e8cfac30d96f586581b48cfaf17f187cb2510d20bccf396bca67eb70f947c7414f9e89ab1ca4e18b1c6c006b8b14feb4d8761cdf3dd3316d98bbb67196fdf2011b6b582e5a07877d7042e49e9d2ca8c21555156e9bedcca0536d668407572c3322719490c97a98679e210fe6ebe23b4454cc7a993a9587a5ade6593f948d9ed87d637f633bd320778420ea6462178b37f6244ed9efe671e3a508438f14ee80b7ce6c3c0eff3d859c11bdb025a210ac179da40d806867c9b79c8c82895cace4ca58d4fdc97fb69c1c0768a3759146146b827dc9a61c211f037d33291906e18a47e149865fb4dbefcaa9952c92f5bb69fddea8be6fa69f3750bf025eae987e80fc0ad37619838debeb71daa138bf288904666ee3c6242470eea451bfd794e7762d695073236b7c06d56d297d6f4c7a9a66404ccfaa041c48105a3ca7dd450482d06289b41862a60b3a871506b0230e1e43fa296dc765dc106451316dd7780c0cf535e1d5da22450be1b46d55d9bc78f79c4fd8748079e590dd58eef89ef5cfc12f27aaa92df1014c174c56433a82645b4024dcbece5a4af36ee6772824f0b6b7f7e3acb5a6c95e26cff458ae64014f6187fa35293477ce94b39c9313a7a627f7380bb343f4aaff2d28b1b81f2b109e9be65417aed5151b3cc5abd089e4deaf8c8985eaa2c45e7e4cb3889f1073dd20ea6ab58c959aa1b2ddaea55446cdac82b1b4e10a14a9753a8cbd6196aede1b6f6ccd450f66b9d237dc2a757bb522c34596ba8ded495ac44ba18a954ad08dea89ecff00814aa3b3b8e9b8624a14be1995696f8ee00bf3f7d01af404b931dbcc32d60bb4b913a93fadb921b23b8ca84ebcba4d0efaab2177590d44826bc4cb12923f4e0fc8bac54aa3de6e509151c027fba3dde84c2291474ddc6ebb2286802cc790453475c17de6ab3f087263ba2eb6a3d2180cbc0deeb95d24d3e08c2025ea71880907b75da8ee3c1cd3b8934a6f758313e7308f0add274604eec821e6fecca7b2a97ec1474293b16262e448b35e46d97af446ca6f4771e839496a0fa5008702e345038ffe33d827dbca0cc6a65aef517d2faa124afa6013fda34c345f40b44ed06d136b27e41f4799beb1213205113ef0d8d99782f00d05c454ad2f12e3dce70321533d5bc078401c4b65d78bacc274fd3b517fbf554248be5ce7c4e8f8d06b2fd6affade95cfc8755ead9770d5bed32684f574e975b508f79097ec561a93b69af9d6a47847d163dee0683d2add39a49887709d4ec65e532bcf07e7a078e79e60866290fe2062e24fb975eaa1ada65dd9e366e9a8afed88f6da2d689c1ba58cee89de1f39e52f10cdc0522aba3bcc6bf8d6522546a55b225a2ae5ca75c8f29af51a36a594b6bbe8ab9c69968ed2c8dd8bcc1d0508835670c67aeb7abf568149f32fd625bcfe9db01b2cc72581fc20fb26c8348f7466144a7b118bf47c3add68d58a83b0757d14b136319f8f8b50d6a09eac07167852ecb5f5b92da873d6448b1d1b71b288443ca5c4a9d5aa89a9ed86ac96895789b66301dad28e01cd2829563255f41ee2432dda3f286e008ea37b9ed66bd830f7d4801a333cbe93386ef5473bedd5e5e45b07198c7836fa06cd9da26d6770f42765e79d5b96bc5ee6a0cf6a6fd7f6e31746777e9411c697e2ae54c81ee3a0186461fc7fc18581fd95e6994819eead1a772e7fa4d867cdb1e644c3df2d972c320e9325b45edf30d52e87f73d3d923e800163c2e42e8139a7d03a8ab340873d18e6fc1981f7bf9c7513edc92853b89a1898ea5518bfa9852314017e57865c7be2fe313870641557ea7c62ba2edf194189633139b87d42211d783c03a74428a68cec7d83b0f7b03138ad63b43a867345f5c917fc66458a1311e74ed4f33f8d8f12cc0c850181d27e76a90e426901f7bf3125c1e532ea7a2b89e8a118a6347240d0323c80d93355cdcbb8a3a862d62e54fb5daaba40c36c28205e85454c51ea89a906a4850ab8eead30fde12f2002a1ed99c0c1379e2b6da617751f573a294884ea9b2f17acb0f8e6e1817932913e7e944f80998aa63c9a3c608a4a134053b347a5640973c4d3225fd31a27ac2cc3e4c8ecad2dd3e3758cc6302c369c94db1da2c9a839eaa9c310e0b42309971117370ab25257809b52b90bf5340da5b71512f65c6c345ceae2567689c7b8fbda704475a3360d702b95e682ebfe59c2854e6c73c9d57a41a802d3d2181638f99e115270a28742a69afd5b200da6e2614600473fd30734e29a654c2e7aca3165c17919cfd0f2158a3aabb118c7f0244043b9d28358cda3a19cf818acbc7c6082c45e148ec5ee8ff831be9900909cc87f6d189dc12603c8f878fd8e95015c3ea126ab226b6976491f62d1715f619b8d552483d8702e23d8088681acf87a326fae9cac11a690d9aa1687812e95c9f390e9224b3077903c0737be571589281af62e07a70389562141183418540f7e5b0c2849de12363ebf0d30c038231696298c0d039b4a44713cc0bbc515ad86d82253e2b87912ce5d2b4189799b2560c0c06fadd82753f55929082053a40ce954e69950d506dcae0c186560484c374c19bb54000f16e4644f8da4bda87ccbfbdd7211c6989790c468afc42095d305b848531b6ac01c533294e8f71613178ce9dee2b789f196ef0cd51214e0d976140b6aacdeb560fed984275a06a0ab186428a610b8026bac297e697aea0bc9e71f053153e5aa259e4a25271a367cef99a4c34d6d0051a1aae0b553fad279ca2de86cb6c0c42ac5eb24bbab66b11207505679d75e366a886bd2bb5342d65054400a28bd85ec1fa4769576da63d17215c86efc4013a984cafef4bae1bbe8beef23c83e4299f863458f4192c2e105713611d9da194bd7d04c224fe22a23be208bb384c99e1d07e166f8f4aac46b4082d09e842495fa933d2c5db6f0fd11385041abe544795e8106dbc4d0518e1dbe4484fb502380c67da76bd6f08cb48c1c4cde7fdceddf842477ad575158f8fe1611343e6919fb79f05532d667f3ccf5a08e69ce548da4cdf76952b14c123c86d695584b81fb349b7a39553b7e9f2116e4d4fa6df2f502274198e892bfaa3f0663818105d7b79fa98411862f4c19a05215992756358c9ba04b545c3ffcaba1289644dc737a97f160f5d35d9c34d91bbfa8787135ccb437b636ab1b4219d857171798c7361f11404444aca8a48dedfa0b2f2e607123d4bc7c12bd02dd4f3f0f715ac4519c60d1c3b1a68f81aa60a9b048ffefbbdd31ced7b375a8bb94f5a31b085f2bd3896a09063bb481ea0ef4044b11118758f289eca8c6ab570b46290cbfcf4b839100b24e41f6056370c04a15ca31fad7c0e2c6d8b37eecadf124b32817139b055534d44b84719ea279360b1f30468a40b77f651475ddcc79b553e9ce7188f7247a648ec9d32dee0d8c0740b3c54815e54dc75f9a70d18bbb30f9f855005df424e164e9db07c610eb84e2ca5b2c760703334dc4d0bd196554b26f299000e70334e3a9b227e8293ec3b35019af5b5df678321adea5b3a5883fafe6b4604b0410673a181c242abfd9cb24b0b3090e8eb43966acd003041e69e192c5b34db1ac8138bdcdf0a8a95f9ad3262f8a6a0caedcbb0ec06132f13baf62e774367f7f7d520f483f847855df1189111ec52282d8a080c477c59534cc7971ce26b1137bdf2d7ab97bd67cca3eea6654ddf0b60c7e32ce075ce212e78f1c6221160e5e5264a3edf11a3c964f92a89ecb31f5121934e5eaac94c35215e272ba484a29fcedd2b6cbf71d89bd011c8980f87114ea71584ba43641641de892f15c51397393311a3e0fbfb2d8afbb42738d9c0e541ca6a7243fcbb220002e42bbee29b9094ac0bf0e697c1b274120c1e1f64d4ce67f385f9a060cdabd9b0daaa86f96f48e4637edbfb820a53ad3d63b11619075b5798dcc6d3a85f579a07d4cea7f07816b560eb5470ef14019fe99254b5696678ee6107cd7d9ff8dba63d83022022038602df15acae5112cba6468d910f8d2133e90d84f2f8eeb82bd0fe106e6c984eeeee050d1bb09e86e4db15196f53218802da59de0f4a058b6e1b2013532149197ceeb1c9aebbe4c7792486cafe4b174d2a244073f2e0aae7a2c7d46523622fc5ca2e0badd408c8b586844f43eec83db30e7eef19c24808ed1f05753e4a9792c3a1ec839d1a847b019e3717a8c74914ec67215bac1bb3b74476b6beb47ec69a92e0c05d4a78cd26ed37647c0ca77c55fd70e4e1b866123e306d2e79ae2bd5a0b1640336445695fc2763c037a598f8d0a460193d8f176e08fa2239f3f438cfe2c79864fe55d4f49fed225919315ffb84ad1e77c2ac6ea72caf66fdca0f98016a587ca7524d6a338e7661c05533909be7c03a7f3b268c1ff9d7b730d8c965fecb082d0fd2559ab1d3f3fe540d81adbce69d9d9c974c9c83e325c34a8356ba1500bfe7ac9108676f5999dcb79872eb8ba9a8508f37fd06ca08116118e56a9f34c79106b6014a77975b992ffdaef53ce175e35f0f9de608415e6bbdd2d6ab677a1f374e9c3e715158a00dcbef9b17e62b088ea9192d35c65ac6743e3754ba481afe5ffd4099e0d5dda613a7bd5eeedc2ace5bce1e7bbb3277784b679f72be4e5811b0e1f3983ee3ce87814658d5c04dec5a1d70542b55440d16fafb65dcd82b9b6ff6a1ad34db7cac330f384645e9ee123bc0e32e64c3d42ff39c2da25aecffb629f548de53a90a9c6c91407600034df3665bee3a86fa60f72047f15d7b5290d7eec60a76093083b5336fa3b1a86999eecd6f4556b76c813922878ba9a6a68c62025a15a28187fb8066a6d17ffa16a8091c686ac4d2b9855e4f0fc4f67fce58dec2fa862203e3a64eb30fd67bf728030988d99e4081706122649c286311761ce287ecaffa1cb2e010505c908cd13d01f65a82f95c8622686b9282349d17d0611c4489510e7e91032b14d4612080350732a1a700c420284be712dd4892064a68dc051b92b052669b014048db65b2cd982f438f1a55d4072c683cdd2dda0bdf47cbe06c1dd0682c324ae26211010955da199dbb5b37f4af03cde50700070e9e200361f34582814b864107f279d75973f926cf302c48628175f0dd6df930770f0fcdb03078e591d9c2e9e1f0d9dcbfdcdff3fac08afb9b60d32ad2a2408bbb733c0809b00344da5356d6f1fa7145a4b8296a48327104b8455f26a0ab740bd4cf405f90c058b0e6cad06e900270907e7a16cbe78a905b2ac7a5663e83e03a0272f1fd312ad321aef44e59d8cee4801cb4f7105e8955d23b1b94c97141f65d370faa0806dd0b13247b2dab4fc35d249e31c47ffed01ce1ec5417a0eb138b7fb8b091016501839995a161dd90972a82eb7c08033803000e8969e96e77225f31f271a98ee0a2a18e37862fc9e2d136127e0c2c5a4e972755cbab542952e956083c26d9d8496ae31906a4a136f8c161838fb39e5a5e9bcb1da69a2d34dacff4a32b0576e7040e96503b92cac9c85f7247e7ee44f3a5523a3fa912a972addabf0bc25a3bf02e42869bb305c80d8d8e1802f38dd8b768fb43c661f09727f1dacb125ab531639e45a1a51b10c09f6a7dca3f15448221b60d7890484bf871d510c883ce1d1c2272ab51485fd602f9368a139d69b5e6cc2555dab89e69979fc3f63f2ff5fa144ac487cd156895bea461cccce5475374a7b11e7a680217d9c887e674873298ed8762e1f5b83dfc498fb2e2a28af2cb78e1d59e7f69a4d90629721d0a424fa5772cc54964f81bc96edf0eb7b4c4561baae2f3a1822b167e8441a70081da108c667b2ad4dc5a94f42cee1ae790c04844f38c55b2084bbd1be40f1bd93ece36801632d196e50234970d6060b4e18730af2a556c4ff02b9a2d31e913dd1707239f1b93f13f15dc92aaf90a0d1a6bb7e92358814a8daea6fb782bb7ad3036dc15290f3d9cc72cfd5c6f10ca6095b27ed26ecb784c6309164184fd8d7b788b0f6095b7bf9a795a0b0f7937658ce0acb1477be858c34586991c23ef38ce3d952d87de351a49bc2d6e380d311a0c2be424b85ddb5112e0e8a85aab07b2741f17c15b6c63c3f20973fb9df57e7fd020b62a03f7c59818b545f6177ff1f16b6f82920c26e31f29a6661eb00e3949416f6fe2a8c9559279b9203b985ad2528277192b02f897585dd89980b5b8f77e5a430660a2fb8d958919fc9ea435a2fecae4bf485adfb410bfb764871100986ddbd4090b09561471a4bac1806568911817b2c4e193532ae1e45e9b848ad8db8e1c4ffec4b382e18c4722426a1a063108612be4304d47f751e362cf5fcf01cba98d98c774438d97d0e79b8a7acc0a4f6b67cc96c39c4b1cdc445dcbb07e9d3114c9fcb003645e65d9e39981b81f833f82f0462afdbd88989a2fb266007660543578b6e7906c0f9c7c4ed9cecc4c352c8217730b838445ca1b8f6c07e2e0d4075124be2996cd79c9d89c46cb0672e9fe7ccc090907b92bb491c7779f061bf1d9f6d997cb4e4becd69bb7b56df34355f9911ef257dcafc4654089f2d1d8931e51069f5fe231525d6579d4dafcc5e42bfca5dbcfb33f90e7855796a6fd3fa13ef63d9b08d7fdf57dc477a03a78f464fa38e495c9ffcdabe42f7e6f2adc9e22e454c4ce8a17e278fc64cbe035e559edadbb4fec4fb58366ce3dff715f791dec0e9a3d1d3a86312d727bfb6afd07e2a9f0e7df6fd43fc2fb83b78657610fc53e8e4d59ae77dc857dd4b7383debf789ff5866d8e5b9e023e531b38fdb4fa0de775a25d0eb9659cdcee6c1b82b658d96ec736c6b5f0d6eea836206a5d99be3d176935916c98f89d7e09e301bb584e186c32503546d1b1702dbbf861087fd8953b5e1acee25c4121838c99644708f5b98a2fcce8c8be8cc58061f4f765c51be8af20f5c0a0a05bc4444487f4b54d850de773750a4272b18832a4f8039ad37c2302e6e3a580c37abf9f65f336966bc12381a50d451c9b22f91c58631203a7fa6aa1a28e92f4233eb58de9877fd41035ec5503adf3c4b9ee3e25ae5eca152561bd088b21bad8719e08b0be7a48d571ae4d38df795853c04b70655ce8324dfe70dfe8f2d995534e705f4c8ed13431e626352b7927a02bbd015e4285df76afba5bce441aac12df15e7022693efcb4c2da4ae1cafee45b542024ed89a4a05c12c6ff63a36cb1b1f0794e99b87895bb763e24966c169c47a99c0efcfd05ca80a4c56231437424a2f8b52a247fe6f8faa1135fdb15c10b29de2aeb6140ce210eab8f9142e988611a456411a8065a0d995748201f341a8cd76ca88e14c92942fbfdcfac1b67c04d074cc3838ea92a2fb80d191f6a87beb6d02ab081aaa5b4c1f15a890d9180710d9468238503aaaec5977e25dc8ac552ca2a5d864961c796861baba53cbe98c6a69ee2d7bdfa028d0ce655f8fdb269f72e09a8d0dcee5f76adcf76c3a0ec6e9dd972a22c4f1ade0bebc4cd8e9b7831f2014baad749335c4fa380b941e25ad55c6ad447b1ca7f2ef6869ea7b018366028709e0e9e9eb47f99e3d90e13c5a6b39cdfaa48352155761f8abb26aaecf65d5e7c45ba2cb928160c29a621e9c533c971dabac44d0432cd7fe7472f420137c220eb220ea740b2db7193fc0678d850d08fa4ae6479d5b1d864027d983f0d47f7bfa10ff517fa5c1bf2d33052546ded383e1e09f05bd8d76830057c583e5d177b0a09665856ace1df33ff05a05128df5a5e28e52aa6aef0997d3dd4724e34c626d4be083e07d82d6523919789c56454e1c52517df96201ea9eb42eb85a8d50fd7978f5bc38a556b0c1082b26cbeea69ac35bb63062ae856fe0d6eef8506c1f0c420b3f1f6409f071faeded6f4278bca17578c39f0aa71e969a7af9b2fb67e39ac959091721d48c2e965bbbf59fdcf4f930784ff57e1b87daf961094e792a1d32e38381c3e1d5b72f154913ed8e75d9d2ad3065df3d058d75d7d94732d73177d8fe5a74e5a54a7515fbbc51540ccf7cdace4b606244946dd7bf64db159dfae9d0effb3d7c4468db38771a9f1a3edcc053b821177f053e333cb1b3c4747df758a2d66893630031f6d2023b90ca8d4de1161b9b371ce01046ad9ac534f6b517d2b693798c53d9432a3d108363946fab77a5566d1805cde7ca65c89cd7fd046ff2fd7d06ef9ed48209b95fa5db71b56e7ae32e2ea8df8a4e6a16353ec066278a81f1d80c9dae253a701fd277bf6937da20c0b94ada3c5566ac16e30588bae65ba660ea08914b353c1532c6649898127e5fcf664f8c782c3a7461c5bd409419a59cdb5cf53f9836d5a592cfb0bd30993d83df009f187dbfc0f68c075f0e16ea20149f5722625b83975e16cca0accd2e790ece2743f00beac41f7c64480544314496f7fce9807c2e4b9ef5742fff16ff417b1490323bdf75ec9e365b8328827348789d93c9676d5adb6662b69dab6cf59f130f561a3bc3646b863dcc71b40af9da0afe9bf4733aaaf941e1430ab29bd6227b50518e1998c1efc74369301fcf61af761c1b8809efc718fe3b81523535b746259ba4df1b06a31e8c680082278a8df7d28f9a2a42427e43dbdc15370408fa3e1a9ed7b39566d0def71971ebd4f237dcf1a70ce23f34c9f507eae320e7811c0222b1a6661e51f0a75b54805e0e9006f0b20f1166445031aa347419dc002022c048ff4ad86bac3c4a6c5e9d4d1adb065d4633e52437be500d44b13a5fafc38cd6573198cb567a6d21e448cd395f57e762bb37ff264a29f58cd916e3f2e9c00a177dbe1bc56b954c0f135bf53c1154979da6584dcafbf107b501730ba8971d340aeb19206e8e7b4ba4a453832035d20595d1afa7b8c90f076b8f1484812ed30db87f8572750e636fdd611aede17ac9b3c57850b7b883729ce35b06373fced69fcfc01438e25add51ee9771230f09a6cee06eba881e68cb7435f56101d85f5da770df419ab213841932ea809ab7f6515e606691cab8e65c68b6eb8aad8dd0d9eb3a28ac45e8f302334ea386dc2badd3c34ad9b006b180df7e7f8565661b277590ceb45a570dc3281f1f253c420e68b2eef9cd5598aaea47755cdb06475df9cc7fb9ad4a3308fa5bbb9b6573bf6b89a873db13fb83c234fa5f17dc1a53e2d6ba6258cd1a0eccca39d5fefc9ad5f9608fc1d9d8836ed2cbca4aecb2fdb53aa79ee166b15650d22b53d194c21527a71679b46415150bd1b7d97255b00939886de0a8fc7d8a1fef5ae8b9917361f78f1f5198396ad70abbb341bc6cf9acd822aff47874f2e03997a01753c5b9a595b73ed41e4a424fa11cb95b9dca2c02eef6e7a4cf9adee792a3fb16d3cd6002117cedf37d7bbc1ad067fd7fabed51d57d2e8246cc3ff7fa45eb943e77734c7d6e59a6c917d81b0e40782570733467b95adacc4ba48b5573f8093f6bd941b6c5f0f3114e0f7141186e320978b4edf0bde8f7824e21167bd6e70759e195880ee16d638ef1b356f77443e3e7cb1bd06252b54ae2183f8585341ef8d0ceeff7a357b3331dc52527e415bfd852f19a9f8bf3176f796b485ee2e7e3da0de6bab5160998b1a743aa857eacad20d09eb903f7c022e3fa9e4ef8fa49630a306b66697f3848be848337416cab6b2ab0f6dcd6b7ee6920b1570348e86adc116ed19df33969a01a3535428614ada734164632a942179647512898937905342eaec8c9425870642ec0e7ac9f12b44c8cf87abe3dbc05acc1dcc3035f5584285785acb5f0cd0a4d3a4008fd9187236b1f00ad3def7404599c8e5ed8a0a328a453089518f35d821ee5824156827ab246d4560b5bccc5eeab0161268d99d630b7e23d48be3cab5e938b37967caebb1349f692014d3a2b702bb07145af40c3838c70d0a87657752dec10197092e8563048aa730b964e5f29061502ca04f89c988237bf7eb66084c69e7bdc9d5940e75e508bea1dcc25a5a30cc8e0c213b53b1ea804c496b1a99720c524e396540c74214f2da10c181654656566f43eecb4c77cc36d725c681a95587c96e5432d4869d814645b18da5567cc238803ec99a66edc3d68c17b2cb585585eeaee63610f7770a5edd95b3384b42dd9bd6873eef9c7f8e5e454d43565576bdb0a47f331e43a47581b206daefa5af93c0ae045ecbb5c41a13b3793e227a0ef505233379ca85c5b9293ea6b7c2888fc8fd1cfd39c3bc0419eaff3f127f4e3c5181ac1c1771a74faf2323a52ea67f3617a899ecf80aa6aba1b79d1c2bf0839dd41f4e2eb9fb98333219429a24ae9ecf4e0dca3b30f70d37b2609459188243e67c532282f8dba9c500ae99543854b84d61cd7b8707c5bbc6c51629d769d0458ab5c94d5285c183018580e6fbd7037822d7f040a4c538bc6528fc27fd658d65af575b82b78b8c75a2269f937b0190368c72e480a76eae9b453eb9ce54f18f6c35c776a4db3574a7f1aaaba9551576d405553803c57c775d9719ba15ad763edd8ebf06c01e686e6b038cda1f102525454761a3f35ea0f2623000f0d8624fad7360fddd2a67ca78f49e00e301628a1de360da26671e43dfa89ad5e13b73ebde9bcdd41c283671185c6e72d7fd90db54b904ef54c44d2c177c27d1c8d5a52596fafe3eb2b396f622382f93124fc322b7cfa9f7e105a4b487dcf54ce2a12642584408c1dfc8731abd3ee1df4075f5eb37a0aed4b50bb5a59a9dcf263e726468aa0d89d845af54c33b01c3e8c844ad50316c7b044b6e510e14bcbc463572c6b8bd281dfda40d6b704fdaf2fc551faa0e42a5a3201a78bc14ca03bfd77b8836e5aac78924ef91cb4b1466e9c1267649c0fec2c34f91821e9cf6352b0958a7ac29d9f9d53265f565e75b70b92102661755ac0b0f2cc08f1764b94e6de88180b084d1edd6a1f7c789511fae226c60d64d4047ec6b6996e8ea8a498edc0ca377b6dc0b672505cba6f268d884a054fbc65dd941966a3011d59b1d65c94eef808d9193984f8840fba376768914771692073fab3ddb431c10a540a44f610e7accd53901ea81940027b4f9c8253d7497b95225c455c48195220981c6947f175a6002bd89d7818d2a15ac06a9545e4982bc9bd5b2f6dfab3c13d72e142ec7c0b167e4cc4b688e089c87555b1be85a0cfa14ce5b94e0892972b3ee44ae26e45365aad0b7e47a157a6a8f98456243c27719bc1b3d2cfe0314a2bf99679719081b323ad6e344ad5bd99ab1ae1a4b2cbfc18767a0b87259e7b2b35a36c794db720fe0a00d9c4d396758055d5315147669955046f3c6d5015a37cf4ec4035497e3d4bc1251d6cbc8d30914819e16d343e2b55fd317ab0ca313652566c8b88664b573a282c66c1b4535dd4d1b433c0d3133d9801869d9d163cf9bfb511576c87c4388760f25344c291422f8201d1ece902b60ef2a7612b92d7c973f66d783e8479e02098e8a26f219d672060c35985ab4488c34e38b8586f9bf206c978f2b77cd775073ba58ff8bd3581e598e09a913ec1e40cfd019bce20020f423fb30dbab5961dff3ea76ecc6127997eb8b10e6a36c852fe4aae7520c87c69c6bf6f0a4cf7e2d08ae32381e50f4ada83a3a2e4bbac625e72bfcdb4ef4840228e5298bfdb0c7a93d9658830da357eb7ea431de9631c1987f406c6eedb76d68a0e6c4bd7f71978128a3788a667a26292d040f8ad0280a03c931ce94b549a78f5b942820cd2379bec1e8613cbb57dd202ecc241f98026e103aa019cc0d9d0b530e115b2b7ff1ec7c9a43ab509102912a6547a9a298482ba0a6a9c612b6645388975fd44211931cfc6c331660b44540cedc5415f820b597272c602cf39ef911f098e918f63f27adceda54abf4ee5b3839ae15d6c2a892008344be81ac70e4194c04fe616236351327c536c640b1d9c84281f84a428f93cadfb76ea107a1510fc7eadb2a7e527e05510c65709bfd45ac591cb3ce60ddb84e2262fdbfde62307e8481937b16ded52906e90a8673d5a9e4021edc11db00956dec37f82be3f40b2df69399dbed3fa589f5c1b7e8e3a2fe983411e289477c50563a0a443e58873828d2a0708cc20c78363d2f43603f3817ddcbe073a1d8887102dcec9e97135d72fc4bb813bde6a15b4014f26d14f46e3d0f79b7296f9ffbaa7bab4098fdda7f32b6be3b5e3cf323f47b86f6c7b551f6b92a4f04a7fa6c9344fd62dbd4e26ab58049bc5f4f3a1cc80b0dfd09327c57ae12b7437b671d0b1b24f942905fe0fa58c9d180aaf5836b11861007d13c357f9814e633cac3ddaec11b89d3b49f7be224877e0529d4bb4c51c7b709d80df860ae019e8ef24fe8d67b4c1407dc1853aa7139874a4ad1566acae8400779e4abaf03604cf7edf45b87aa5750cda752aee3086dad93dfa636b9f35c11204dece5813ef6343f5b49c78369fc708731a3003a763027c2732aa1b1c978a577a1278447233d2cdb6b974703cce78fd983b22a7ee2210c069d327026f1c67785b099ee6ff0b02946dcbd58bf93a6626647d213b0513839bf803260f090b28eaec069f31630da7ebe8cfb4451c3f9f8121ff5b912f900ab2ab31a89528d777a521bddf14606ec386ca2b6b6a3d1f876dc2456d78a01954793384a256701e00de8ae80f7579583d4bcab19208bf6e29bf103256aefeead39a6366db87654e99f14e68e0049173d03f34dd7f589d9ff1b7397f62a89b802c97839d4044b4458ad8f5a3526e7c3d04f4c2fc005b6c451c4568129a44b3a586436b6de11d81ae6b2fb776e6ba1bac1006f7106582515a157600055cd7590eb1cd8639a03620db6599ee9ce35c040c2e4a0d69b109701333351504b022f6dca0ab11ab68e7a8c1543f95c1ec472050596e737eee5ae3c98b088177db1f06c510dbc912db08469585ceaa04d7a2f136812792764de1ccb7c197d0cd34900c0487e3bfab0bac4503175c27c378aba76be41ee218821212fe7ed9ff07bfc6c9ed92da6456d2072e551a1015b88cdc5ce289ec802d12d9450172ee7898f132fd0df0bf6d08c5f6eb02330a2963c2831291712ccc45de671112d002002417b8d032f0f6127b03964d1f8760df58e2f5b4996e842c7bd97857582f0241178a71f1863325a968ca8249a1202a8eb72e6a1d8a34f1961ec2259ca012f742604f064bccc9fcba806290c4ccf74696f0e7299ecba2f6dd03348a907b68c6c8770231f25f3625763fe8fe7d78f66387393c62e2d47f4691a81ae0ed46a2dab801ca0219408c5accdf0727d60dd4e366b8b6f066c965aa083bf6b3b1f75f6e36fb86089e8f218931f4f85dad00ac41951d43cb058c0d51b2f788665b008cc9eb772e3c519d5f0b31a44791e83729a675e880bb998afb77ec3bc089a54438eaf7eb83c6614d7f5756276e73fc55538dfd05a9e87cc4e23bdfe8d82ffdf837feddc837fbe5e2e8df849076603d8d665eadd5916eb85e0197de8c9e9be45eeff6f73cd61b446dea825cf59ca5d566848382ee82fc8d4826a2d32b1191a09cc089f48913775163fe259cc2217c4450f9202d9b2fc009fb92d6574d89ca978f25b781395ab54ee143dc0f2ffdfb079074a41431c050bff9aaab553a27df3f82fe71e5be9252dfff29521e71ccb40186c9c3b60e1b29472684589f67cbd04a1117fa1fd0b49b8d581a53349cc92143f98f8fce86115368d7d68862ef45af3c9f1e44ca3faee5f7c29f9058fd6d16610ace3ec1d41c864e7e6f98100cc432432a9755899b92e47cfe57accf0da34fa895efa0cb4eda20af107ac1f5d722a7821ab77622d41e815bda30fbb7d85c0434e0d0d47e600f66c9cd976fc930972359640416d85b8624a3e1c1ab77a9e46888ca3f6955bf9769b9cffb7fea676fb04fa1327eab8c8a52cfcca3325dc4c2aea8efc6c6a164257b1ffed573b784c16b9b77921796841f3f9267d0ff482b42615416d63bfaf8121ad162d7cc5de2ad08b6e10fe304a48d7cadd75e32bddb3c9ae44c78102c5ad0422de2080e4d3191810179119986db8f31d84e8f3fed46a7c1f08d3677e0c52830f265eebc0c9b233f5282b5c32a1e197031d8d876d9fcee1beeed2ef265f6bac815f7dd1c09a4b604ca211f951b69d47511b334bf70cfbdd66491dde1fd3820f9dd238b3df81e184d8a7976b66fc9d18fffe2247b59cbe244e002ff83575267e6e1c394e5a00266f70c48052bcf159c0c64827ccf2b195419f5176f6d51b80a18ab7580fe0fbb0910da7f1b02369091c1a4483141e8ba40d4092c0e4252f45e2dfc951c791ff24781f960afbe903aa8871114888b22dee85e8f4e69a0284e31c6c909e9befa8b6d34db46d14ff92ab7c8713840adab51e477eadaf7a849fece973fd1aa48edd030ee9b2b8a3f0f90daac09e5b6c64de3673eccd73fe30df62b65184eba64c2627da7fd1f5eccc68b0d15b5c58fcf77b378a8ab7588dc8f74c79099c3e2ae47b923521dd5e607af5546b6933c54e6cb2351a6c172c8d6e2195e8793d6c6a56d94860a1672bdf907979059fc4c3deeb13a905db588c580c22f74298bf0b8f7d52057825f87340cb71a11eb0cd3024b2c15a2b31a032067146a9a24e7c951c35fbcb5ca3cf28bd2b105cdc79bcb3361c25ff6fdc3b327f105c7acd168d32545f5dc0c923d4d0fc434f8e699c69c8c9697a815ca1c0806b4353f19c301158ea600756d816efc611fed7ceb4e505a7f1c0384cbaee1dc5ce81a3328d9a10a4f5f207f0aaf9f3f7db1fafdcf68715f1e0cce371d7c2cc88b014427b81c6d312ab3033551dabfa9ebbc8fae656004bfbaf7f05fc4fe8632f932c98f3f00ab3e8a6d2780217d7561ec588247692d77cefc464fd9f670190c11791647913603da231765a3f7e830bf1a687603463d924c8355cc6cea2202ae450b8f1a33ce9120ae93dbcf26ae925acb715b9b52489f67d675597f59f77651d4d71fcbf089eb8b86cc8cfd9aa06ef36b5de1c21f3cdcefa41b6ba99f600d03f751a270168137a14ae474ea2e839c85f890121a61b4fcdfb1e197148c4b59523d0f99c813ad6367686c4daa91a80694f011ab8e41c10959b2466b94fe081c412a14482260ccd910232999493484274f3a4b2666fb903a44880ab91047422cc6e7c4acd4e716450ba74393e1148413ecf6f406d9f0079ec608e61182452440626c1c140ebf838835f4db215082e87fac88ca450daec58bad3f5fb693fa3779634c8d0041407effbe7a7d8680aed0eef726813a70fa7d8b67482bb5c95d58f72a0ccc3d75167ed6cadc8b46e68b966521caa70f9988241168c09f84e2ebc884d02a63e047509867161baf1fe27b4786e9c8de0dc0c73354a8b553ef11948127661b0f34d65b81b62711ee8728d815c8ad36110490f0691fdc4a1a93e6fe3d539e470f0fc14871f8d30e1a84f9a3f70bb0dc19026169f83a8f95cf15cfdd9de5abf9564de20921baf6abc24310aee7b217874e84ee6138763bfa9d1f4e74760e30cef8703b527a7c7c69c7516c43926f4b7b1b7bcb2cd02ebe8781bc33bec4836981eadc459fc3e4f7819ad71ba8806a146922fdfe66679aaffa914e73b8d36882e718a62be65f03e52de8c87892b376e0f192f11347f1aa27f82a6091adc53b3932d248c0ec7e556cf7b5ddfd65cd77bf71506303c117fe8df7a29e43ef27d4ac1ffe7179a8fcf3487484f06918acaf93ed570823e4f31bd453224a6a35b4cf8eaeb75bed346febaa6da06e793f51127552ddd845e094a94f849ce724ffbd94b8811e0bde57dc47cd00d5ef941428be281ae56e5b6de00c7906ea49f789cccfc18948eb84d7a9c2754ebc2bdb3572a2983092c8845460830fd9cc5aa6cad5b93d82181f2302ac651e20167fe9f51542bc41914d42794cc29784e102e3416628507957aaa334ecc40d5b523a8c14b5d6bc8c613e512d165027fa3fff9705254835c6181400db7a40ac551ac402a03790476afca08f3dac676f439ef2cb2fb2ba0f8e65a6ebfe5ea38d14a871973bc96c046e0f53b18874e3c0684c094a206cf659107f85d1e847e7e657219972300d7762a83ed3adb9ef7849ab2a45c09d537da71906cce832e33cc20e6df80bfc099581ec006deba863800c607757a5ac7ca4550db7243276efa032dabe6601a970391fbcac6335ab5d1c9656669b6ab65d5fe3eb9ac35267eebec54f55b680713272c14d963dd3e196c9ed98bff3aaf568d6f80202253ce4c95bc025838f0684e50349e4d44dd18cabde47cc8571dd470158d7a596729790d581f38ba46123e5a578d8e1a223e046f873e661e3e37a39b6a33cf26d866770607270056e8bf2f4d85dffc05f41c7b1a9aac19f9302406a439c08ab8108c5d683524744a8398ef081de9247a7e0bd00643c95212f51b57056f71acb2e58be2b0b9ab93358489b884a5998b53198bd72e7b018e0565d6568d42b29e8e368504a35313cf5ec219ccdd26618e4f84b310172619942831990abe7f45909e9fce8eeb02fcd2b9960dfa1895c0c58d6b4dc9b239c20ca0c889a2ee18d5050a6af55a38ebbead8388c67ec91f8abb9f01075ea26f997babe13c1d5efeacb76853ba035d86f3b851390dd4fd45634f47c6d64dbedf85a6b730641e0fee4212d18c3fcf07f50b989db92e6792db749b39a28d5b8258e00ec0e2f310340b949893cdc9f26bc803d76ecd08d71dfa5aa008dbcfa46e99372502ee4697ab5f19e304ddac532f66cc802ef89309d4e83412a3062b843e69a66e3f645006644149956998739db13a713df31b15e69ca897834b2c6598fec43d6013f219777ac1932a7b14335d7ac0fb1cec3a48df392c0205fbee6dd1967e2fefd20052ca49bbaf181906dfadccabc8144489877ca6d6d51642a902be1d8486077b52eb58c1a0d6c8b545c6f10c0363c38cd938c6f869a41264dedfa25b28e2c445e324def414bb460e75639bbfe0cf11ef10b2ad4c613c19494d5a66ea0d6cc5f6c21291a5e9feed863f084a604ec81df76e3dc472f8dab6fa5e5d51d6dc90cc4a14ef7d700eba64418dcb98498a4f702ac3fe37b80e43b3f0c98affc082c3d3dde9684521e852b1648ce308a0f4882a4c34a3c475739f499bb310d895e86bdbf07943d3b55d026406d536ae0b34d9482a386345d118dadcdcb5a8cf76ef167cf6b3cc5e3851bb319989a757fb6ef5bcb44987de5f96523a5c54e08c6920226ea38f0441820ff7df38cddb286c35da524f618f7209210c7e509cd6a2c3fe9a8b855d0b96143761d7cb4fe90f5514c33c6963937ba6c477bde9556d1388c0077e3d027acce51018b52b02576ab57fbbd417163fd9c9099e98b22f49d3b00843b4d8d3ed85f707e0338c797b03cb3fc45f84f6cf5c7bc822c4f3285eb865d425a1fb1555fac03fa101014f7f7f97bdedc4715119e81bd9ad79a20430f1e4f7f5f3f111fbc8008e3c4c4b1e429639f23c1e47484c523b043f3bd62c3e8d3b22b439bc97a075358c754c81aa6d53ad280617f54c37db679d15cb135ad17245d68e2f95365efd66f72fbb610ba4c091386ec03c0700840ebe95ea9f030fa340a961935ba1bfd375ec60568374983b09bfc801ce47f4b59d3459a4db75fe0dfa077758ad66d99d022ae20aa82065a6bc9d56c168a05ac2700322e8cc7227a31521bc840d8c819837f9de0085f89324917f0fb304e82c247e1224b04d14f0cef642821da2de440c7c325998f8993e1138971f45ee413e4af6b194bb5778208eb3cd600125237947f0f3cbfd8954c6f098c400a6a537fe502c06f0edd714ae68809dc221462285493490ed22389efa17fd7eddd8e420c3135084a8dd3ddc1ef49008a261e6734c66ad71675a1181980938c5fac74ca1b2fb07a304999653e7bf8abf7c3069001ea25d728a9c76015bcd372e2c3d39eae2ae89d0c622740c9a326bef0910f89b2af215a1985cf56c69fe283595397b8f0a8e1a8eacfcb36f418e4d0e50077ac13d6b45837d295697eefcee1d455fca9dd5f14fbd294dfb83d7d73926ed9ee09369c1e2b4400de5622e12b079370ef00e60d4d7949583a1fb135c84e7ce694c70c03351ed1dd7e3e56a3e6897d359d9a6918888617d1a0891563daeacb078ee6901b1f7e09be9017a1dd0bd03b4a6383f35ed0de82527887a04864a3c74fc08038c9ba8d8b5e776253115e2e13504d5f2d67234a5c0b0bc0dd2771739de3de9e110c3295ba0831931e05ae01b33f7b111f9712a2f8692c40cb8cefe23800ab055ba5923054c1ba5d95f5672f99b81cb85458a882fdd43afc8186e04a2d695d8d92716ebab90f49c5c59e99b49d1121fc0a798ccb8a266acfd4b584b67ce6b8341dc16283551285c7848f5ee826a272d9f29249ac92e647166da5c35e68bb2fe7cc5d094fd6ca5483554a4013ef4fc75e8f18f167cf1cbfb3770f820eb58f0ba06f0920de2deb06e50db39fb51b7cd93fccd5888db269f0f3974b1b6601eee5313c6ab1e55bac66ec76f21812e49471dd219873a3e8582648ea61276b9fb78e54a5a4047a24c93aea3d65506389598c78c0f49db77a5b60a7a9633be7946df199d90637eedc4b6514a0a35863dce177ebfc3f90dd6b19f2648c5263a6d88275e47f331dc75e619feabe6552f82265debb64e67e25321695a3ef0c456f8e7d3e07501f6374b078f044df4a78fbfec2196253b96470bda0cba49ad873ff03f2f387ba13255837c67d0c6d79c95df0fe961afc1084f77e5c62634698571e93aba50754807d2a87156895234e419e5853ca6280a60ec54a84e685868f0c95dc31ac666c7b61afaf090b079403a14ed16e4913fb840eed0078da19a4fb47846e826004a3e3129ba3147a78b2a126257d18c6ecd57b4a63c628fce28d2ad3e9d1668ddd71364ab7e698f6aa911e11c3bdcffef002d0abc99a26e713a46dc6c3f4f5221bfe8da2e50045aa0a7b93df60fdbdb766d7362f1bff1b44d129a48899de5ca207f7d483be6b983a21fe82b9e96def7dbd2836711f776344e7ce3ba253209e8cc9e93955cb616a018d8ac7a9f61b2d8834ec85738b56efa5ff78f3f8ed46fbb15ef97663f739a1e263a1bae26ce74587c817f3edb037ebc57f5b659a7e7104d42fc47cf6cce995fccb31c488ba5bc17eabf08a56f94abf1557fa049afbb5b1b90df07ac4df6be906d6dec1c46a7ce5d1afea18e573c94aadc7d4ccef3984d3cafa50450a1eaed0dac5b730f4e3a80a88f9dffed73eb15803db829c88c3127bf7015f5951a0f2238290ebc29b1e27052b65eedc7f73a063c5fe8fadfda0a465b4abafd90edb631a30d0a574b814464cc390453e809def599e8f6ffe857311ab5520c2ea03263fc1ed8d54bbe20d061f6afdd6e6a940ca13a18e4b5af827d9b86d4dc8be35628bb46b0f0da03e644cf852ebe7d8fcdce254b6562aa199f03e38cbfb9b1303230dd60e9a859ae78ef38436abd2420036b09846ecf06978b346ad9c1dffa1dba90e380cdc536e9e2590e2b823efe318107c0537ff257bb6e1e707ab31351d1b068dd4124ea999cb74cf577fc5df7354ef5050dd5d2b4d89004526b0411e81d02e63720edd4ed3d066ce72709471aa2c907790c31dbae00e6cda501a2a4209c4470b9436e9278679884eb71ef82d169fadde33430fa615238ff4d62f42f316653e02584ec515fc500ebe4e7201d607f8545b7c82452bba2f1cacbb974ce2173c8e6a53d73e7be012b84d84cd47f6a83fa18a63b728388fd381990ba9c154a81e013f5ec09f0d0a4fa6f876f08c5cb54536badc2c78b90a715221bfe897a2804749280978e57bc86c1c89ea3991f66bc5d9e3cb37eccf79d12dc9b06a7588b4d58c15dd341b52e751bc6cc199865c42a8ee72be225814d8e07f44997d1d82fe05d6ff2bb31a7f10716aca6a78c5640943ecbbe4a069b0ad968525d99171336df3ad1a1b1c83da40181b5b977bae33aebfa3b174f184f8809474372d20f5cc1b0a7045bdd0ed42f80bd51130f6f733731442ded80243e7558f0c0fb4d1254a415020e528235c0bf6620038d83328fa4ea6fc62aa2d882216a7125de9cd116ab9bb83c4c56a7c9f64860985b1f92cc14d68d76755909a30036027fe6d8efe11b74364a0861dc419f3c7cf5d6e026db6d5321889da7ba6026a6dadf37cf84bf76a025e8cd514436262235798b05adf8ace12a5bfc01a2d3ab857efc80fee317f85e5fe23e2528417453560705d50c0479c7241148d1350d3f7a89336ec9d57627dc238f736b18fa122dad682e8fa1670cee8ba05a494625d5f642f893da54065847f4fb10f7c352ed4ca74cca30216d9f0ef0d64bc4fee461470b7b0b7736e1e6f0f2be9a57efa1d146582020e26450b0d3240b0a6d0013c0c3c0c3c0c3c0c5c7536dffabafb882dc8b4a554daf7a2982320534a29a594d0f25d44a02f865c34b64d33666e0c7c0d110d84309c87892e27a59444e64198f43b2513e92113618620cc9e947ea6c9e983324f208c2b5e21562c8030a81da5540c1d15cdbe3f98d4e86c23d7d428954ffc6036e9afd6822c29e3737d30470ff17e72a764cce083299592d646496e76257b30f8dd9924fe5232a51e4ce2c4f3b7511523a23c9872434458e5bf0d111eccbb62e756a9a4922e7730be8d9a1c6f0f576a3b987b3e6fb776e549e23a98d3b6640725bb86b97430868ec8e5d698a8e41c8c1feb32c5e4e5a933c9c1a0524a92a4529cb4ac521c8cad39f6e5d184cb090ee6f68f9de45c6a45f96f309e5c324729ab8aa5c40da67072d454df559ef6db60b4f6ce776ac957b5678369fece3bc70929a3afc1a4eb47892d7bdd6f5183f1e4a446289bf9cb953418f7a424eba952bfb9d160924f4e5e9a5497a4ee0ce61342aff30751a26f06531039cf3b39baed9694c124885cd3b32564306ae9289352f02489a631984f050da1bf240683c95ea1848b1fa2fd30985494dc2767d3d63b0283312df7875bef144ce70bc6344bcf9ea36ee88f174cb2a7be92ba25d4eb5d307cf8f990224eca9f73c124c98ea9ac24bb6bd982415f2993d1ee1466d182e1aa73ce99bf617e67c1f4a9716adb5eaaa45830677f564962fea913bd8249d394a79da4154cf2958b4a39ccff2b5405d38c77fdc5e950c170bf72d9b13405932adb119edc9312762998e2df87f3adecab9428987254371d47e78550a160aafb501f44ab69984f3098096e99fae73d32279883888c887ad295d66982515ef4c4b2bb2ccf33c128a24d949c56fa5492259864494296ef4809a6f3138bb926c1d4e9e74cfe3e71d64182e1d47b094fb30ee611cc279ba5e96a8faff90c23985d458ccc950e3f2a866994986c5fda89613c51abdd37fb30cc716b3e492184f093ba308cea6149fe1f9dca541e0cb32515c2aca40a6b4b018661ede5b47fba9baf945f9872b4140f2f3fd92bc517e6f8b94db97de896bbf4c2f49e44fb89e9f9a32cbc30e8add8b81cd73f62d9857964fab675766b118b2eccda9e1f3f99605f61c98551ae73bc501ef485abe0c21cae847a972ad736b98549fa1a93d7b3941e79dbc278e266bbdb59daf5ae85c14cc4ec3aef83df4d0b63ce056d73752e1af72c4c298cb6a98c6561be8adb23baa478938d85516e74d5e76f5fa9b0308e4a329e174a084f5f610e273e4c52ad0ef26c5718f7921cf7342a5e08bb15061dcdad733f9f247ecd0a9349525630e9ee96bd5e85a9b42b5d6975dddd5a1526cfd982fc8b699bd6a930887ebabea7f8aa0915e64f22c65e67449bf8294c77c1c2f96f678bbb29cc6ad9fe563f97924b294c922a0d25ca665298fcd776f3f48c12661e854929b16a938478b8cba23048fded1f93f7d99443619243484b29d75ce6c9a030bc9b7c7244875182c89f304977dd0a962479c2f07f5292ed9df47a52278ca54f25a17a1d234f3861902bcb415a3a495f6813a6687541c5ef9fa9ab0993c7b37a3d153cb3dd4c98ff547ca7cba9944517138651d1f294a14ac9e55ec2586a4d44deb4fec9ad250c2eb2725016649738a98429e9ccba7bbda57828614a9672b0cb95e4b47c1206efa427db95c9548b244cf19554aa9a97eb3a120693ba6eb7249394c79030675ab8dc75e2daa7fa08c38bcc27d91742ae544718744a56a54bdd8d0a6a230c3b52e4ed87f4e49632c2942d2ec49769112619966207e596c4f38a30fdc5fd88378bfd7e228c569289195abe83ed88309e454b1ec2ecf9e1e927e7a85ad310e61aebcf161f5472330b6112d1c1c492a4de495f12c2686341a93ce13408537a1c6192084fefbe204cb94349154f3e59bf24106635cba6925f49320784399997924cb4283d9e3f18ef94ceb81cfb34bb1f4c17b27f7b95b4b97d30eb09f59d72ff5d311fcca954d4e5537af3d23d985b2e9f5c3617b6eac17ca2fac76dd54f66611e0c5b822ed54f62ac9ef0604eaabec453d48f1aba834165d4578926aae81c3b9892cbc5514bf9d47b1dcc27a8557193d3c42c74309716d9a652e95f129e83a9537474c77fc4499e1c4c262c9ba0a34c9fc4c1a0daf6937426cd9d090ea6cd4a572a4f1ed3923798fb469af8cfcf1d8f1b4c79f346055569f6f13698a26555f68bc9bd0b1b8ca6f489cc4e417ed43598a225f9f2a3aa7e0e9a1a0c6f6949848a9fc794d260123bdded2a48ed150d06f96b8b9643d5cce40c066d29e55e27f157416630293997d49f264cb4bb0c86d3e5c1f3f6a9ee4c06a38ed28bf1e749a8770c26fff88e4f1bea3c2a0673d589975e4c08f5320ce6fd2459aa5c31934630984f7699b8eabe602a41ee7a4decfecbca005e308745d50a9e5a545ca80b26f59d73f37f5a3a752e982b480b4a4aa904a9e16ec1246bb47ae796a825955a30da5f7a2c594f41e8ca005930c5d0a7a74bd588668d05f3b5e9b1cc74159faf60924d790725beb4b48b2cb8c1080f0358c1247c50b1b83b32af2a0354c1144fd235a92a6c896652c130b315bba47ee9a453caa3870e118888f031c0148c263444658ff5944b9014cc737275ee9a1db51747c15842dec7b6e7d40050309eb2122da47c123dfa38d876bc8e1fd9d1e3472ae87d801730c0134cda26099f62c49f38bf134cfdf376a97e62c7179b60126d9224eb67056d57198009662ba1a4edcfb91d9e1b6009a7bac65dacac95c4ca450b620025984d1abdfd1253cc822909a61bf77c26ebdccf739060caa9c357be08dd9215031cc120447ad0b1e4547a723680118ced5529deb2844fd3c85080629844d6c3294985afca27c43098bcaabf49628e9272c250806198a2e55bcae751949051018461124a4941474faaa458732840308c5a6b7642093a68f31330cc9d4bce59942ed9429c7e61761dfdb01cb54aa2c71706b196ce57fd845c917b612a15eba4cbaafc6cb2bc30e56b4f92147458b120dd8529e8657d122696ce3d75613439dbcc82923b251f7361ce15469852b2c435a5c385a9c325ebafd02d4c41093afe29b14b68cbd9c2bc6e4a92e32a97bad7c2d4c9c25a4a956aa6420b53c965f946c8a5da55b330cad8c78937ca7d840a1ba100b230a9d986c9eb381fb1968c02c4c2dca2a2ff5fd236ba27589883aa20bb44f9a4929e5e61523a3c9e575712f3922b4ce37e794b3eee3cfdad305c9ea89d9442fcb36785e1f4ea522cb5bf65bf0a6396c98e2b3989d6255185693c95a814f63ba9344985297a50777afc92341da1c29457bce43b9f897fd1290c23226cae647aca39640af3b7a65b961ccf5f43a53049d639094a8b496e15228559ab4db64ef31c3ec74761eef7b2f3b56b71dd45618abd69d2638866cb1e0aa3578a576727fba3eba030ad8511130b2acc98944f98842ce164744efb232f9e306f5c072d135b7672a513662dd94d73c392f85ce1845134744397380b3ff5264cb225419c6b499d64df9a3095a025b7273745563a1306954b253945537d4add9830688b7c136daaa1eebe84d92fdb6cc9e9429b685bc270673a2f8f8996147625ccf3493849c7fd52b28929611217dbc452828d8a872761ac58694bcea47a8b2c0973c9e3613f97748ac59130759520fdc25ca7f21412469f331d325499507e3ec21443be724e7b424c281d612c25e74b6b6d2eca938d308af6af588e4b52d69311e6bc339d3fc99524b1ce45987212454d05f138aaa622cc2763177a2686de2f13617c6f8bf7a09e93e81111a69119e2c4cf224cf8f110269977b725bd68c92668089354f524172f56943416c270a11654ea6e9ea022218ce626622beb2ca68883309c89e7c76f13f2a71384e1742a4197ec8130695a85fca054dd0d08d3b5a6f8c877d6b9f70763965f47537e6bc2c90f46571162c6bfc42c95f5c1a03c949892b9a1e4133e18fd7c2b25b1950f973d985378cb66a2d6cad37a30ca6668f65b57cf9b07b37b0cb5be0e724f3c98e286e5cf09b3ea5dd1a20077403be3bee485dad0397660f4a924081d6b4fd5c1121f4ab9e5743088de0ff958e3be6b320773b9ec999b96c8c1282e962c6b7e9c09a138983b9454ed2064c979417030899fe4fafed1bf1e466f30ae9fbea7fb52eae67183d1e40fe2ed696f83c13b5eafddeb78d69c0dc6ae8deb3a414d7a53afc1549d949d2cea9746ca6a3029615e4ceef82f27b969305ace994bfa3c4d27170de692526cbd2ccf60ae9456c22b9fb0f4cc60bcf653c22959bb936acb60707df996ad60c92d258339a8eccf133ba965538ec1e02558f6ac5f9a2aa318cc761afe65625dd2a230183c682d39442dc8df0f06830972ef6facd365f75f30471d69a34e88cbeb5e30e5a0e4acfb13943035ea82e1740e7b6aae17c5455c309b1ed51e4fd4f29b7d0b26b9549b7473d9b64b5a30775099b97f2afcc8b3608aa5d4828caeb16012bb92eb5fa7b4757d05a3db2841f8bf6c0593fc2676f4a2bdea49150c9e657752349dcdc4950ae6eca1a4a0372799a0ba0ec9b6e7487ec748f2af307d89dffb6898f658f29143071ad1d103a92b0c4a29496593b5354759407af8b85618ae94578d0aae6f55ea20634710df811c086185f1635e5aa6fb8d1208397e04f11d2323e87d7047829055183e8b12d75977cb4eae03cf91a8c224e9b1643ac90dc80f7afc18e10110dfb1f6819054182c55cf7dc52deeaf3a7aa04685797c7cf62b968a2b02f2c37d0019d9410690911ff4f891d681905318f33a7756c96599678283cd073912f43e580d318559e4afedebc95ae2731e39ea4a61105d5bf174af492dfae8116404480ec611c477e48690c264a53d9c4a15192a27a330e5d365a29b60c946f6168549304165a8ee685add0b0985a96eebc7df53999b1814060bfa7e3af2d499c8d508219f30ad5b2a69b69264d9469e3089dc0b5a57362e17ef84d9f48788d39dade36e9ce0b2c54bc66636bb544a26b3f64a2d89876cc260ab7249526a29fb97222223a60993eecb9d099ea4dc1c433261f8dc793f970a265ab1bb7bf3f65a0d0bd16756e3fd39219730494a4b6de824948c8b5bc2949f638ce760bd23f3904a24db453b8550c274a25445e78e673a49099984419d5d47d15d4b2765432461ec3925ef688b1e2ada250c219130ef9dac1d3aa77a4f27f5e8f1c305250412464b1f57cfb73a463e8f307ee720d4a878718439c9decae56f51f77348238c97d615dab38630c278d12cbb7dcf3ce91c24870a3a10218b30c58deed3f8936a4d218a309cba53c23f887d08498429edc49c70aab7bc4b8b891044984c922f8bdd095d7f39fe830c5f44c8210c5a4fd7e5b7ef712bf9201e2406863065c8b0be3e2bb5344e4004235608d39d9d9eccb2149db5430821cc71d37d7ff692b4d3e7103208e3e957c71859574ae908c224e7c6870fff2b1b731a420261d0152a2a4cd241d8a51b110208a3ee56785bc55799c77f90e1217f30a8bce1c957642f84f8c11ca78410a124d9e24cce6408e983f14aceb933447a6e9f217c30889e374ffa52f98eb4f760bc58da3fe8dd2d440f86de891fb3e21c310344481e50236bf1846fbf29118207f3a7b5afd6be5242331b313444c81d4cfa2d3a675bc9acdd3d4784d8815373f28b98283a3c84d421614988cf3d26880ee6e4d14acaa775257f9f8341c81d5bd196c7f4d721723057aa773e3365be5985c4c12489fc0b779214843e251c4c627b4afa4eb89f8d9d5208798331de726ba57d13deaf1b8cebe2ba1edd4ad8a7da60ca26794a9eeb834e336283b1c412df2d56d2a9c56342c81a2810a286344020040d67f82039748c4c20c40c231408294342863100114318bee0852d68210b58b8420342ac5082078454810a2312089982144672f80081ff2003040b088902149ee084088434c101214c58420242949004241c20e408e6120b661a369e3d1020180fe2231011e9102398c4677d1d9dee5378be18863917a5b63b4f2a491262983b2829ea9acc9d780fc3a4bb7f9474ba363d8a8461dab23f157cc5e4a09d6098c6449c3cf31c3c740a300cea23e72ef2fc85498a34b55f0bd2f085a9ad46ffe439d5db8d462f0cd6d17c3cf4aeea9b7c091abc30763649a9f4dd952ea98ea0b10b93c9bffc12fca3af9c8c04d99138613516dc60a469e8c294f2a3c69458499f1ebf402317464bf956e35d55323a2e4c232ecc9c0a0f767a651968dcc260336e991d5b4992df1bd0b08549470f9a5a23eaad84b530675193c4deeb2a997fa185f1949cb72b9c681d27d869b330e75c826dc9b6f7794ab230c99204ebaa3f5d2595c4c29c9427298e2731545e1b16a66882b25fb153a992bcc2dc77bea3c584fd381e8f164c40046d5ba0e10a937491d1f1ec598d970523b67ca0d10af38b0aedb32db244fbac30be091fde4b92f3fdfe55186e4bf64ef5e32bafa9c278f3a25ed4f2a4e4256624d0488579457499a8ea1c0b81f03ccaf81494325498f3aabfd75f1e13d2a5710aa3c99e94c97a6268ef7b8213bc0f7204711d3c0b444480888858d13085398c6cb59ba8e160ab61d02885395b3a6d2b39e7bc1fb3410c1aa4308be57839e9bd85ea941e0009344661d2eca065d52bf2715911911485d9a2c95ad134c5842814c68db38e7fcf0f5d1d1c6c97041aa030bc89867ad1b8d890d120870ff7f16364a41c4009343e6112e2cc73ad2d49ef390eb6478f78f4e02122820988a08c94e3c7d36005abd7e30732781eb88e1088404404c7d220043ad02722223f7ec407101ba8a0e1097396a4932426073b79f6668146278c96738a5175929a58f25aa0c109b3b65f79b5bccae9050d343661dedd13fec4dedf65cfb5260c2af7c40eda7697a2853f402313066951d5c6c41507b3e0062341a081099336ddee264bf6eb3d1a9730e67eb89494da92f9ef701e39011994c008342c917c9e7495cafe41c73a74508246258c7f82fadcd13a94eaa031d0a084c964bec8892d264f90d2984472e5c9371926cd2822624444d862414312953ca7a4cf2912979fd4a9b6fe41031295bc7d425c54131edad141c858010f12a80b683c42ed50b72fc94d3a74384a1e24b813d0708431e6c2895571ea1e4b341a61d2af704a28bd2c4aca968006238c6923b4c4924c722da545984f366d4aa54b4f3949528441ac978a496b31a4494a84417b1c25659724ad3a89d9de2aa184aaa44398f22f8acac5cbeb583284b964fc449c30d1b4e90b61121d267ed52c995c7a4298e2ed9950395e7d16fd204cde9ebf2451653df60bc25ccaa4248f5c10d3f307c2dcaf1d6d5556c393248030cea7e8cb3a27d7b6e40f461376b52b7a101e44c70f46d7bc8bd639d927f1e983f14f3839f352b4c5f7f0c1bc26569e70f5ecc19c9f777115e43a9a470f0625a8dbd1d22efa62270f869374f0934f35de3e8e07539e91efde496798e90ee67919fb3641c93a49ec909f1464983041753069cac58efbeeeb9d0ea6ae6cd2494a3ec72fcb1c4c41b729691fd4d297450ee611b66ab96cc552aec4c120eab2756a499ce5e160ca41a994a4f2924bee6f30f6e924a6b37b48b1b41bba1c779f2439dc98ce751568b4611317cbf6de1ab2716192383b9936e360dbb6020d361865d4fae48ba824982c8d35989287bc599749d2dee7070e035fd05083495d4a257a458bba360d263516dcd3a9d98b61a3c1d461b29e6c921cbe9e33983c4527957eb3194c725418cbb5b90cc6ab74d1c6524ce44406f3080f6bb3dd34d11f83b17d2b496aec947c91180c4a7b1475a3ebbeda3098a46ba58e9dc325612e18ccf9935f9c4a1f2baf5f305b4e66963e36ab2ef582a9741cf1efbd9272ea822985eb68a797204fcf0553ea94439ac59b389e2d189450f264c5515245450bc639f55165b49905d39c4ada72b85830ad96c8f3545d91e9154c9ed3a47042057fdbac600e4fbbbe61ea3eafac82294e8d8851a18336792a9837437e995bbf9ea02998452b8a7ad1716bba14cca14a0e2a5d92344e1c0593c84aef1a9b3942875030e95c5f895f11f7494f30e94fc2eff4a97c66e204c36e66dc5b9c5da509e6581fe24f0a172618f7941c84e72de1b6bb2518848689dbbe7e4a2c29c1dceb299c528230b9a349309b7411d9de501722124c729b59df888ed967473089d727afa5c92a6742c30826e9fcf384ec20b2f26218fc3a65f44208bd5b95e13a464c87a3bd600631cc6a9d928dfc70312be260f331f203ff31d223088f1c3998310c9308dbf412e3c64b5b1c6c0da48c4f81d993d103f7d1635530431846cf95e3296d6a146604c39cf4e752497d1015b33203182629b79ef567ce9eee7fd043042222c79a053718e9c18c5f98d3a49f7459623a66c917c61daddb9df44b9a4871b08df048233b80f80f467a04416416dc602404337a61346d69db94e924e915c8c8ebe0c7ef28cbc00c5e98c43ec80f796dcd1a67ecc27025f59850955647e975610a4aa45e87b0f6d2110eb619b9f0310317e6f04b255bec750bc3a50765ee1e67e4526c61ea52294d970e2a94129b510b83b6246f28f5a572ce092d4c523be95cbe6dc23b671646f1a43d474ba936421611e9f781e961862c8c23476ce57462e8a5fc8c58982e5ad2b99414d7c934031646554b15268930b5b87611335e611a91bfa372b8a452d484c7a3053368810c542022a29198e10a93506f6a744e5225117303335a612c41f3d2897eb9f0d50c5698d2ff6e4952fcd4e9df2a4ce9a3619ed285f050528549aca85969c573082ba5c2a4759efe45093749e851614a133971d23f85e1f2678d4f9769927c620ac39887298b264929cc698487f624fe4d9021529804f59492659a20551f85d9d4a80ee549982bb18bc2382ad5b6986027593a1486d19fe41097feebc40685c12af34c5d5a516ef20973facc3cb7d14ea5ae27cc6bdba254129e9779278c9bdb26c58f9d62daca09838c8c8def196192be09d35f8649da62c510556ac2e8d1738b9ad8af14b44c98ae5f3d7b125553298509a3e94941f7ab722ad152821997300962929c735fe8aadc12860fad9d4cc5cb9dcca412a6fcb58a9b21fbe4f98b186650c2249cecf2eafc4908256198310963591a2dfbeb410926107a84a0c7b19e210983bd972094bf9750a12b5e981109a34949896dd93de518524898e3c7d39e2ce49c67a781198f30fda67b5bb9db09bd2a0b6638c2202f951a6bd3d91f4daa30a311a6bb50ed94432941c92615663022c9e4a58fdb7dca1e890961c6220ceff14d6b672ecf09d918662862abd1d09a59b7a07672a662175452416d84b8ae08331261ae582363edda5b2e5c66861988b8a288d0265d5232623788198730f9665b8a1e3a54c5dd10c65a13e394543194577846214c61e257c17dd55310055a8c582ef92c0c32424da924fbbd5f64612a51c2255182b27c5262614af9f37e44893c49b03058be7fb9145684c9af3049429b4e39ac73e8d815262df75152885b61bcfaae349db404216585c14eb56df7c45598925897b48a29f33b5115a6f6ca274386a9b50f53e107a504eb541aa2c294fe2af5439cc9a1e1294c9546a5a8b3944e58680a9376cc0c9d17574e52298c67279fa07dd7e14c470a93946ef2262f7f4c74a3309aa03d9d12f69eca73a2308625795f6fbefff40b854988b9944d0e83c2a44ae577a56559953f613a93f2fd78c52bd1f484299c706e52854f722e3b6150514b978832c9aee484794ea7f2946433b9e06dc2143f9aaaf953a2253b4d98643e6cb8b7b868ed32610e27561edbb7fca81d260c9e365a56447ae9d45dc2a0b35a9292aabe989225cc6141d52f89a5b39e4a18d4f32949de64259953c218baeea4de7e6b51998429a5a094d7a92561123facbaf39eccbe2d12261db33f73dbbd2b6b9030889f67934c3e6dbada234c9b7e5265f66993a539c294ae466b843978e752e1837eb1ce18614ab2042daa46459d248b30494a4fbbcdec949c28c274d24982fe51cd0f5122ccae9f7592a5bab91d11a60d7517342d8730c95ea3bd93527229694398d2e4ecb29a31490e17c234facbbbd3dbb8cb8430e8f528fed5714cbf83305ec972a26ff545cb0ac2e4d1652d0922d7360d8441b653eecc1b51428030a7eef4ad5dea72ff83399ef8094fa7b7d5f483a9dbc4830af7c1b47af2d13b9ccec1e48369fd92547aa3b7a4dc1e8c7af296ea14b75b57d9d083f9249dcb92e41794b0ca461e4cba296a39a9a4c0061e8c7d693194768b0b62bd8339cc567a8b7a92edcf821b8cfcc0861d8c3dfa5d4796d0461d4c9e9b5d2685b00e3a69830ee6cb12baa28b5239cc6c630e26e144bfbfbc97eb649383693d8c9066217a413c40e260ecb45182527292fd4b8a832d488f1e7030784e9544afad38d8eade608e934ff2e62861161e096cb8c1242d773f6991fd141f1c6cdd0683ceb31e45dcc80ed1d8608349450be61baa6aa764d760b611275fdcf870b0b51a8c199735767b1ef6b46930cc9db595ce3be9a425b08106c3dfe7f4617fcb7212c77106c3e9ce3d39c5bc923be160dbb16630a9b46c6a9665c7d74c59ca603ea163a7fe926c5d5b60830cc6990ddd4b7ae1a493cbc6607a35eb0f9a6fb1531c071b101ec748414072ec30810d31183b7852f27a380fb6270e36bccff1234886c13c9f56a772f627416536c080dddc89169da39ce02836bed05b4a99b2eeb2a1999da363c9f5f1925e3c36bc60ce49d7ad8493be44f9ccc78e139411022040dc052222226ba30b2661e2e70931931c298d58a2272001097600f11f88889c0d2e98bd4f47e875f80436b660f6900f6b6a466ca9131c6c5a3049c277a5ba7bce26ef38d83a0b26c14fd58d67939210290e362c18f4c2c7d2ce83836df5ae60ba74edb0d6326f9dc2c156bc021b5630e7b60fea7d2abb428b83ad6560a30a26499838364a34b972585430e69b48552def531d9f82f1f3b7bb4cde8f971c1c6c89890d29184c9bdf087db993df8383adccc046140c3a9dfc34162be99274810d2818f7e73de9297152760dc84810203d7000e1f76060e3093b7af418d1c18f91111a369c607ecf392fe76cc78bb4074ac04613121e397ec0838c111e3974f02701369880aebca784ab4f9536ebf8911f3d467cf80e33b5b184c233b5b62cd85abc8c5aa713dbef0d02640488af0d2518d44b7de5ed4c878e1c291011e991a3478e111f40d446128c2274b43b177d513923c15492b8567a3a781296730494dec8f6db3b01b16104a38b0a9e4b6bf49af91ea8510c93befdb7ec16a3d5af1ac4308e7dd89633497cdf7a18e6adef132b5adcb8986d0d61985343d625f70d075b37199d30a8110cf379ee732f531f5d4b609804b924e75192fc25a1fa4516eeeb826dc65b186bd74ef2fb92ac7a62e80b93dead18eafa29b5bf5e98ef2fa7e5fa4f729e93d5420d5e9893bc39f957f4f7c9d723e6c387e32e0ca3e4d16669258dda7b04e909c8a0043d6490ba30965cf2094b5216cf2e17061d723cca679c9876c285a994fca7fc92f82dacb7dc26a6de6a23a4a9b839497bd06d61948d4fa2a968a2fd463c620e2441af45a8510bb35e8efba3a7a4ca6fd1c2944bdcda85de6b88ce2ccc79748a8fcf69abdbb62c8c3677d7eb49f8d508356261d4fb37bb20d780854989a36dfbbe1f2defaf308712d3e47ab84ef26fae3097b5cba855f20b25a51506f5235412ab14a383122bcc395ab60afa4f3249d6ab30dcd756cd85d72f19aac2b8275e599275bb4c58931c3d6830623b6aa4c26c17b2ce4cae5499d4886d0d54982bfbb78be73c71ef391411f91f354e61d88ea6dbace4eb8fbb294c5af4722f6e57c5324b614e82bab0bb1eb25a1629b40f959131b1b5ab2ecf8c8febf27914e61999692545962cba05e9a1230622225d4314a63e3b4ba93ca92c970a8551eb4abed32e276e0b0a8329cb3a5d7212c74ec9274ab9eebaca2d7ca956a5499f25a9945f42b77a4f183fd497ba384af8d2bf0b444444444444ccd87f90e16c75a8d10993caf97553bd7489b673c2a0f1f1c3ae4d3fc9974d9856632c08db1211be69a2b44b16c64634e4322db4b72bb88d49a5aa9209e38fc91955b5b03c3a262a130b7f92c67a09e3cc5f923fcc94f22c8a88f488250c42e79fcb55ff511d17111111b11a9530fe6a6707a5e43882d26725296192ebe5e35b9c50b2ee93307ce55279b64425f7a8240cea4ea9bbd11bd5968e84794b86f0f3115fc16490e83ece2a2ec6a5b2a069d7f1939fe83958564a3ec26ccad35b4a567e5ed9e2a386230c2a4cf6f58f514a98a03e23a31126ada0e27c3051545894110693b292d610f7228c9e24efcad697250f6a28c268f2444fb3a26c6c2bb8831a893009ef259755369d7f9f8e1a8830c976304b4b9327fbc1c1b623c78f201de4471020873056afbb8ddaeb8c8c77067fcaf015d405c9c123070f3246fe94e13bce76fc8e1a8630fc9b24fc74ffaf9f74214c679287cbdadc7b8fd62084c9eebfd4a54a616aa24118fbd49818edec25947ee4478f111e3f9e07db8fcfd12ca82108d35fd2fe0b1674b49307c2303a2785d192748c8901c21c64777e52256d9a144a3f82f751860c7c50e30f664d933ca832a983b8df0f86d74b3f4bedf4c1d49d24bf924c35f8b095678b6b75557ab7947394bd99e4c172410e1d3e6270851a7b30752aa53dc9afce2908f560d0337582dd08a5a6f73c189414f2ff4e4a263c6535f060b8acd9a6a2b3c41ca51c6adcc170b17f97eef63e87cf0e660bcff13daad48ac841dc052222226504f11a75306956328f3ab294204ac8d0f13f7c70d7a083c94d0eafb39f847db570047117248e20ee23cb087259630e461122ba73dab80f219283d98408a997649f9f588a8844a1461ccc65a7d228ad171c6c6865c0a0cbe81a7030c888294bc9e3653707901c6d4074e4084206076abcc1248b9654c25c16cbee718349c79b4e53f9eb7abd461b0c1e4a3cf3f97ea48c1f41fa0935d86052f2ad2cbcbd83b4b7c61a4c6a3b36ccf5e73d5435982cc9da4197a97c71a534184ef412a39ab6953b8f06e3d9c5b038eaf42cd96730a5d2a6f3a49d8a274999c1a4728fb69b1354ea3c95c158a1f23da5a4adae2f6430f76c8eb8db9cfc3c728c7c10371bc3292616b35ab69d9ad975efa624f9242f134d270693be5ed3bd7e15e273c2604a55363a254bea84556b80c154276ac8cf952cd57528a8f105f3868668d8689f16ab86178ca69f83ac597d13c352a30b26554a5610427d89fd630d2e184389a9252c573a39b760ba1cc4a55cbd35b4600e7292241eea63ab9464c11cc64a12379a7956b91a5840b352442cc7588a19db3e1fa59f4ef47ce92635ae60ae6c5959de5eb25f0a8f580d2b984ab274b6ad71a9cf3341154cc24d9aef4fa74576b8960a66ef539209a354495dd9eacd404444597083911ad4988259bc749b789682e7e0e1604b7aec18f1418e84576f06a95a430ac6cdbc5ab58dba555cfc9da466e6a7442b01c29be0c7ffa0870a34a360b020c47a8a133a78ca5060b6ded3eb5aeeade632bfd6e4e77bc5146f6b3cc15a19f72eb10c51d3f26a38c124a7aabcea6722a7a446138c3aa2e4be0725fb25a706134c29ba4b9d9d3cdfa352630966cd13b4ca7cf66897ada10453cf55f6fdfc6daba2ff91139041098290e183478d2498b674b849164b89b65544c40b359060fa12bc93684b9a438d23183d5bb015cd4be9bf54c308c63db37c116a47edefc5602c584a5ea7f4540755525b1ea1238651add3ad67d993d38dc33049a32f959aecb7657a0d1186b193e9d829745048304ca2aec43bb7dce7cb21c030a6755b9abc4bf96886fcc2944b67f3b64e6d5221be305d6c28a13f47d37d497a61cea6cde4c7d03bd12d8417a6dce927eb08a5662ab80b838e9f2aa4754274612c51cb49104a7cda9d71b0910006853f82f8c0905c185ce4e6fd535215d7c785697e2fcbba6579d2b985497035a193106949ea912d8cb9a63ba76ec5b7046b6150db397ca8b5f0371b2dccd1b3bf7f4ddbdf9b856a3523f36a6f75b1c33e97249b26c9c5d0399185f1c49f517727ee3b7e2488ef88857954b8ea64727ee1f21e0a426061f024f595959d52162886012b0ce0d545a00211284347101c3ac8c1030325d22b621440418090f1a3000128e360e000000802840c18102000af032743073c5c070d0100f9f1213368047c00480e1f7e8000ec010040801c110208c083782252800078104f7afc10990180013020e4c7f300791020232308004000143023c803f1c2c8088d31ba30630c2e608e203f7000d131321232c616706484c6185a28c347167cec403b7e8701c6c042395a1284487b131c6c3e76a02b9864a58931a7b7154c7d2a57d2f9e470f08edfc13b46154c413f09b627c7ea2cf18176fc8eddf13b740c2a98d47a2fc9578e33d1c5c17d46c6d9489203bd0f20c582f0c8814078e408f283c79802e60892f4d82105cc11c407391232464642c68802e608a20307101f190919030a26b96a4e89b3f709e6b570d922223e7698eb04f3fc69889b0e711636c1bc96f9e37f7b929e2a933198603ea15694a4ea72a30bc223075a59824978aa4b71e47bd091fff0a1e34d106407094444c8406328c11cdf1fbdc40f2545cf6e08b6036324c15c5234313d3b3c7f328d8104739255aae4673bc1d52bc218473027e19488d8bfc8ce257318c308061df5333593c23de7378a619e37e9a48aee88889c0f464a45e106310ca6ece6445f4e11f70cc3203fa596bbecebd2be309095799b0df18a55592c073d26742ae5632aa7c130694febb3989b3af776126e00e36d51915d72fe7e61b4f73b514c923a8ac817e652f7a1c7f299eb49b9d10bd3b9a7ac258e9817e63749bdcaa8ac760f7761ae1474927f3ccec9c1d685c9c4b3524f25b9e0c4abe4642c355bf6fd445d787e778f0b838c5dfceb4d1fcbdf2db0560dbb642958758b6af655774e93df96972d8c266fe9f80fb2bd216f2d0c6a94bed2e76f7fb2a28539dcde6b5a9a139fdf9885499f12f467eee925b10407dbc2a0c8c2789f942c95e46b8999de8885f9a4bc12b467998ad27f181111fff1396eb467e1af478d148370e315c6f3ea2457adcecddf43b8e10a93aa3091fea2333b5896053718c1c18d561844b825f5559e0ebfc10a73963066a527b6d49229841bab3057292d9d44754b411e3122dc5005076ea4c21c4f877b27dfcf63725061f2a87272f68f9e1dfb298cee6db6ffe5619224252272c3140651bda2ffe44d936995c224a8d226c25cdbc53fa4305729d93a97d01ed273466198995937c1fe2c782c0a934aa3a2eba3925c6b73b8110a739b3e61263f48ab1581c224b7bbec7dce6f7cc26ca9a42c75d32cc94f6e78c2dc9d53da97a63b6e74c2a817d4568e0eea6c3f9c28ba8c86b96997e954c28468cc97d55cb8b10993a0b24c96ee334938ed0d4d183e9a7635d99393cd23c7d9d1039d6d26ccdd5ba67210fb0f9dfa1b983078f6a7650ffd25d4c4816e5cc27c23fe731e661d3ab861093566dc2c5cba6c313463c428ab1333353969f346258c2d6bcaa4f01b33c18f011016dc60848c1b94288bac203f9426e17d9ebc961eb6e27143129c7af8d6cf9ea7bf8f1b91d052b011add06e312fedce59e3bbd6544c741a24c78f1a88882441808cf800c2372061d0c9c3c971a29b27b8f1086387b4d7caf4115bf28e30557bee37e595a43c4f230c67fbf1a2ae6f5b22238cb5ae25af9fd07693bbb108d3e8861a6962ae08a3d88f12268cb949964d8429985e3b39f5d5596c8830ae8fd4d7b6940d6e1cc2f0f5b735aae49368214318ab7fcb3294aca09f16c2386a35724ce92f55e30d42a05a2e9f5d9643cdc5c374ef9fd628fdedf4c6200ca66ec62f95ced12408f308cf49929427e17b0a8479b54da54971d465091046bfcbad12faf407933e3d7ae6c4f44f4a921f8c6241a7322fe983294bdae5a4fedd4c0e1f4c1d2c75ced1f54ee67b3059949353f4ecb566d18329c8ebeb857b5225a73c983cc63d051d4ed0234c7830255753fb7deadbb2740783f2b8e2f99fe2c82ad9c19c2be474924ad4ac531d4ca12e672f07fb11273a982c8ffcacd3cfc1245d86c9ec9ed78b1c8c5f292f9607113a85e260b21ccff248fffb111c4c964b8d12a5bfc1189f42a7fc296e30c7df8e6d4a96122da50dc6f48dbfaaa4c4891536984ee957e5b17f0da6fde4f77d1eb552fd6a30fd5afed54dcbf5eda7c1e84944a7b079f1b83e1acc6aa3954b5aff0cc6939d3e4f5facd7f866305d969851c1cf4e7f5f0653852e95152a2777f564309df8e7f57c427a9fc66036db35f19292780889c1143f79ca963e31fb0983f15fd3c4b29f9272070c06fd7323fc626809962f98a229f541aa7e55497bc1e0e727a95cd972dabb0b46b7ca416f9cac7fd9840b26e1c1cf2c690b06fb8e265aef8792160c96e44d506b159fa25930c695d2a69397a825132c983d658969da96e4f80aa63eb963ad262b98e4f294d6ad5405732549caab4ba93f8aa8e08a998f12114dc1586b713d572cf657a460fc4e62e820c7dbf48e82493d09a6d3c64baa0d05a36609a171f6134c273f56eddd2965768239c5d3a5931cde4a8e51134c394c0e6fa783d277d10d26184cfac959e3fd7a547463094651259d75985bfb886e28c1a4feda4b9708b712d18d2498521c9b2fcdedfd0edd408249ec2cbb988be5a943378e60ae193966f194bef4df3082714646961476b267936298529227d7650bfaae8418a694622ba252847cd0304ce13b6ce83c4abc1809c39ce63b5d74a88a8a82619a3d11f25be42f868061fa3df93b888f8f16fa8541c9561645a5c7c98b2f8cb3fe1da4ef49925b7a619af39c6de2728993e685c9b4ef6c44c83049761726e1f7674697f23ba92e4cdae4123d57eeb15373610e722e56b77fa93f0f2e4c9644dd12e44f5b3acf2d8ce2b6228430558299c716c6d02ba3554dfab4e2a9853958694993b6049dbd430be3755999943f71b93bb330e97679344996358b1d5998d57bd6939d3c2ea7589854ed6c6d85e935132c4c954ca892d39c9204fd2b4cb2cce794ad45bcf6ae30f7a876e812d40a5358198b1d4c8a92835861382947b5f64bf2626815e6d2753f613afd8e8e2acc267ab812469612d49e0a939cebe4df4dce8a372a8cda7e3d2705bba0c4a7305ff24f62e7eca63049b1e40f26d773aaac97c214845bbcf8cd5027eaa43068f1b81fb58ec2b0b523465bda30658ac27cd283ea0eaa53906228cca7c3aa3d27397df81c14e6ac5073527512c52fff84d9eedb2cb7cc9258ee097388d58f123cc3e34927ccdde1b3cd49f2963b9c3089886f75106fe6fb264ce209574a8d782b93d684794dc90b268489dd3a13069394baa4c4b63d6b4c98438b1013447b09931233a2cfce2a56d61206e9c9cc45e4c49ab512cff8fd25312725cc15ed932485ce394193306d86897f0f164998dc42ecdabd1209a37f0e1de6c48b4caf40c214e3b22493f6befaf40893d09f3ee928e9da4b8e307ec76ccb5923cc1f2699204dbef8f68c30ddc592e45182123abd0893542addaa4cb6591561124755fd4ed4074884a94ae5136e2fe87c3a7d0044b87f2788b598f721cc3e9f84e7d4fb2a711bc23472e4eb44b50b6192276ae912ec4a92249b10062d5aea9e27a8e9b2076198b5bb6c0b4a3afdb5204c9d3ef3ae739b5bd781305aaae812741e2dca6a40183d3ca7986e167a497f309718fa16fd92adf77e305bd2b413c4494158923e183d65d125d8799293a04f8a0b6de2ad88f76012119b6762ae07733c29a23d94d4b64b1e0c7376c9f275b831613c18b373491ff61a76f11d0cd2a494e2d689f97fed60f2d496e27ac96dd5d6c1a42ca750e9ee777fa583594ea75c57bc96af7330aaefe6e83c6194b4cac1681d4abe9c2665f3330e2649ae7c82d61056216438987c7b2cd7f3454b72fc0693dacb2c9dd3ec738edd60d693c4ae8e26aa62a90dc6d1931ecee4d9600abda3dd73274f2e5a83398b681da5d54d945c0d462b7531c5f54d83399805a54ed2a667ed4583595cb4b7faed43e63d83d1bd642d352ae770f29ac1a4be5c4b8912cd3dba65308996f7acaa747c13970c06dd4e25fa841126663b06730c375552aa560ca6aef414436fc76e49188c9d59164b45d5c810188c972e9799aed4a13e5f30493be6412b9b9ca4ee05f3882769b2aa8658de0593529f7f3f5d096b37174c35426cd54d2c77b760ca65a92b55ada2aa05c37c856e1fa133e666c1247a69aea51913bfc582e1db468793ef83ce5fc1e422da27c46a05738ea39ec38f2cbd6a15ccdb7d2a15cceb29c7efa4a48e2c750a460b2257b57d61f3a914cc272dcc6813eb1e328d82f9f7c35f9f5072eca55030f8a8ad5329a54f305eae3cebcbb2ebbe13ccdd768250ae576ad20453928f713a767d7c1326984cfa93449cae1c22b404531abd37ef0df12bc1e429573ab697a097241875474b5f6c6da59160ce69662f94955452e708e6dd531556652fcb073082e93fcf553e25d116c3586b25779296dbd08961929ee57d5bb7611ce6924e1fb108c36cc14faae5a9ab573218a691f6a54a77bed27202c3142c27a5fc5450c1b2f90be3675fe54bb29f546dfac258a9a432b16b3f9f9abd30fa08cb9ec4ad4c109317c653377e1977cac42d7761386176e444b75c6da90bd389969ebd44c7dd532ecca217476b5e8eb53e2eccb3a226e767081342b730885117fdb6733ce9d8c29c7a4743894e2d4c39428e96cabe963cb4305ff224178a47a8048cc4e22101713818100643813020008571050013150800203c1e0a4462a1240ff56de2140003412e243428201c201810121212100e100a0c0a0382a14018100a83c1c0501810148935672aae1303334bd0deb97717c376e81122b6b576b0ad9c5b1c3927b7c5469a0ed1e558a6c1b6d4cf7ec4d3ffe54471336c2111943fba074811d1f260fe625c3bc1407bc3a5c3cade72313fd277a324bd85ce0e19cd7b9b528f97814717a58a85d79d2957907be53b14630ff194bed7e56c80452829fdcf7f8e1f69596a80040c7a7eb3077c5b40d83c6a9f5026af684990b20db0a9b0099597daaa95f741202d08e6c9bf98c82e196c10e5dc64a4ef595c982760e5c33b8780fe3fdd9ce190acbb12d80ff683e445cd00be85f4e67fc6960925a6dd2965dd5e3692bf69cb3644cbf08f1291bd0fdea60c11679678e513c1d119d372674a3d609afbcbb71a1ad698144098f3619ad1618104ce56a46b03146f535ebfdd264bdf87e2225a0989f5a717a1f71ab2b8d52bb69aedf95c56386134e6e2076f1ac852c916aae8b081d47f3341392140a5bcb67c81e41f6637a58407cf687080e58bfaf8c9960fbe523b80ecb27c1521bcc63747e15f19ce5ba0651921049027f27f24b6f401d031bed21dda2c8067e2da082b6c9e69f8e3f6a5af1b5afdadb52408e5233039c095fbbe05453fe82ca61b0495d1ea7b90e307669859aa95fd065169fe4884c7d1db349e4f2f8eb97cb03655ee05e1482edf5fac646ba98ff61f2f02b088bcfbdf7539031b6fc046a29ab5c2c5b2000ac0f8e64d0da2c320289e493af3379580f99e63fea3062061bb3f01e099188eee71d4e89304c4ebefec150b613f924025c679e4fb1ad7ffcee033ca5562011292fb32d8553cb4a55a2758c2af3b71e149c01a24939dade5bf82fec2b4a9aea892910a95930949e4a9e4796fd9ce97031d2823835ce10d8b436e1c5aa6ca7ea72bc7e877185cbc9690735d8570c455a7b80db2231192ebd5c17a7659083c280c1d2b9e8906cded5047da8c52c51c9542a1e3b5e9bcad78eee7a5aacd3aa014964bf3643c1e31e5e882a18ab577acc4a501ed1414d313ca67e384b0dd60be671ee4cf0c19c440db40ad08b47153d9fb36f000341fbababd49abfed918e9bd2b746b42975314ff2c13d62c78af435100f64f59aa2404ed354539f6acfc4a011f6d3518e8fac87ccf4983ee6da24cd895a944dfe8ea4018091b7ac39614d63de1489b6dd143e036e1a04730ceab25db228374201e4da009d5a1cd96f0f80bdd63503cb79aa3b9dd47e625cd8a67213fc57721610f49d79493d4fa6542efc4decc5c249cbde1955c20946ce16d65a3331efa301b52a109a2147f716f1f3f336c846a5602183da0524886cef935ecce4b89b22e783e771f330135c149254cbc765da551bd910551b4a9b0a8533895336e7ff3eb6dac656601cc94c8889e35328782472599e0e6d9e02204236050bad3efc31af1ebee5739d7a306fb10c8b322c65de6a4638e390d67f0c40227d3190e7d8b1b5f7bf3473ef6fa673eef09e6a5911634e9414c92aa7bf2739fa61d3d2801505b5ef80a77beeced0f310d7baebc6c496a0ada74556fb436dfa3aecd74b2e957e3b7dffde08fbfe01c9658b1f0d5ad5f6a8bfcb9aa8f8f8d2315dab19abeaaea232b65d9995cc5b884631f934405a2b91a24920b95c251147fc7351157cd0741caa564f42444caa5849c89539bbc123ffbe937efab3c3868b7ca035560ebcf7d877acafb4e749397dde8380d5186b4527b86d5deef37e8db6e9c8fdec238309ee8934c3809c94c3e4957c5591884b9083739c4e1af7ebcf9d13dfd9bdbff61c44986c88c83ebccb8b7746f7b70e41304a514c84b553262fdbd7aacbae9d3bf769aa752f44cccb676dcdbcc148c3b4b50e419c3f4c306fbd3891c9a69a6389d442eec250f3bd5de768c0d8789f5a6db1de74cd648e4d4f58b884835fc4707868df311d785740867ed90c632b904c2745d5c9354919854b9cacfc95170736c17baf264b6a54f67e24950bd834e761aa199c150148f66a028d11491d4fabdd967d3d2804b2ef5dff9b827f24ba6bfaf34dd59ef78e2dbdef2caf645640a9b616373a410f23b2fa634c3dcdb0d61632944a6df6d893b0cfa86270edcdad0e556b9f85aef23bcc888c1175a6b2e724db99dc520eba1841df5ee587a07768b9f0d1690585a6e1a75f0533007fc12ef5db74f52d181054750a17a8bba7dc369728c0f8a088dec3511c1fb41fd8ec8adbc9d19cd8e30445d782b5f08498f6d516f37cb56040163f44c4b27ecb7d179c28426e4da40ed01d9ea492a57208a72ab67b0af18df4410d46e7cbbe20c78b73ae8549cd343e64aea5b0fbbf1c37a833bba583b1cf597d37226e90daa450dda4c8f64dc8fb8223336ef5380523be2e4a13ebec4e1c474896fcde4290fac7dbbd3becfeea2ea5daf78f05a4c7a49696d5aff48751efab8bab0be2ef0fdbd280584ac5f4c6505afe296a67d4006826e91badafe92cdf2b2e748d16d3697c31a8218001bfa4dd156860bca848b44685fcebb6b29c0b1d71b98dec19cff00decb608fb70d053a161fb67a0ec35b9c9f362bb7af2b40047f5b32e4cf4ecc03402ffeb83198ff97921893915a653e0aa111c8a2ac0edae5eb58e6768e2704e3b611c25463e16b758a4fe1f931ec148fc64217b7961a7dd0035d74fd28100b24d6a09231e1513a3a8585d652419db0cca4532b5666c4b93805b7ed66e86b2eba9c2b2b4c1fc62fbe423cc463c0208b1053c9460dc4002b4dfd006d8ef1b9e59fc0550a80ece296a6afe303734034332aabaa1a20d7873bc850528428533f856d401b686f05722dcd2e085780aa00a26f723d60ca59075b427732a409c3e3a69ece420992e985513d7422ef642db6ea3ecd9d340a5029e45588e2c2eb6485efcd822a87efaf2737138eab85d5306c01d32821bd0b842c431ae89d8143ea97112e90c48d685414c813dba7d77633e44a32deed20db53caaddab55bd8adc53b6e7372b439b63d195d0a36cd46138eed0b171b67f2a9ca7ec5562e589d8ab9037628ce77b8bb314df9d87a6d368e0ef2169e276b2941afdd75c5e143f9ca6537ea101a6cea08d7098c57d19748f9743e19ddae16ce1beb9793b222821e736f79e004c0e1201a6e06f942ac2a96df02a5819c2718269409adc901134795cc100bdcaca51a4e0ec279cd0c974e9ada2987d1d88e32ad6112784ff6706261fa3b3555fcfe8771b1d54ed294a821c48a43c3349cfb06942aa9d6604e8711d4250c5cb89a88a5830fd942946c3e2aa19a83e83b90816948c447fb7fe63d11683eebf1629c6f0d72578f0874b62d9eb40dae23407bc89a40729ca4d2ae6c9ae4635e52ea3157a42e93684c4b47848ccf1a888b5000e3aa8fb355cb3da0df5d93b5e52c909af0d10820a97a3abc7d564cbc5cef4d18b74d77b25cc1c51412de92095732adaa434f535c96829607188e23c79d0d4289c75f02baf2501fc2c9b9c878a7c8a12d1d3f520ec121f4867a8cbff6f1ad014fc1fe80a477c67c471f476bb939461c0feeee4e8bc782ec9b8660c8c94a6d321666aab8862ec701b903a516dfa25aa03fdaefa045bc8c951c1fee15003dba5b32b71fbc4d52414d08721ff29950f993724212c680a0c7a82cbe572978ec9b5724e2b4185fdcd30b717bec90cfe27ea47a08160d33d3e6ce02fe9ee7ea9bcf0e2438ac2403ac61d5d309a1243768bc327bd827ca180185bc9b92a3c48a79ef927834dae90e078f8503b9f771a0a5b31615e2fbc910a463fd5c585e849a02775d491d06100190cf5314774f1a5e9ba2e742628e310851b9a862c892a724ed03d848d444052bb17f196ed8544d52113c6f4a6bd34197ceef7fd2d0be6daa30b0a00c837a27d99b40edb64a94b1db8d7d320d65a88d93f48a937268d6a3c61292f43f138fca686c639afab81d7afa1081033da532524bf323379a3e8e334104e400a0d4f77b7167e12dc0b636e7b3c80c390b824e27d561e930af1648707471cd85222857c0f9f47c8a8fe3b3b31abe110207844bd57c8af874d9fedb3abc34214c2868dacd6d1fa3ea8be32f902ec448a08fe37d894aa51c17d146fda26f55fcc85627f57497d4136a40140a05a310869d08c5392144f16f495958deae6d61db6083479027864069e738fecc810d514b5d2d490691b640a6d97409ecf09776d05cd3f47b5b9763a6a49f6902575ce848b9136f7f12802b2f5f27cf45db7de07143f170484294a41c857fb1e116e3ed85eb09e5b852872da8695b18c1ff5770b97c572629a1cc97f3494e693914ef246281f68f58ae2b5e66bf5b791ca21802aa0373efabe08caec9fa02e4342a45a1f5a33b9764b48b45b2ee32b961246e7173071a2c011522a288900bd4f418817e6be165b7c57ac2e7199690b00c6ebe89f7ebb5ab69989a6faba16f529c37675801aae57a64e4c6a1ee5a15c7cfb530506f88bcd9558d5cd4ea1bed348cb9a4b0d01fa766f95e653aae61e915e9fbac2419186882ad6f7bcd034e6a927c93c856b433de8198ab075272656a33a19218d856089d30cdb7c43f44352c1f79bcd104159b55284202000d6f487bc45912e9956624fec625ebd0a7bd4581899306c6273419241be0c70463ea29b56bce236dd1f83fd828bc6c3f2dcd1d5859646d20bb4d20a9aad3fc6a2c06f1162d561c2d3dba77d59c393494f41a0e853083805f329aaceb1371c2e659e986f7b91682a03d90041614fdf4ca98c6323cfe04270461c4f22252d1eb9812c26e2cd60a101cf67c2c5b54d212f3b0d4a5a7509b0dbb1e99834b740caeb34180b90e04e5f194113c648dc57db285a36a5c7596925f6144f6dc92d9a28a72c69c241075ec49d97097462fb8e00afb357a2f800c74c3e2530e6d4fd66abac73ea779a295db9bdd63253f3c8217bfae6fbd872dc2da6cc36e8b3aaa770c2340753bf7e04e448c69ebb8f545244345fb8eaa7e42455f8ff33feeaa87ef8853a4a12c0998084373d05921a98c47818070fc8fab04bcb26b1c0daa3b132ab16fd154bbfb45585e7226e203c417063df5e358ffc50a32368e25716be549d245f403c30a3252e4a6aa5b71bd1b744b9b1ae5f62828ebbc24596ad145773c42e10ca35509c7a48d44d0cd34a12e53adf39088983fa5e04390a50e9588374466587b94f9a7d4136be98b80462a4425d86760453ff6c184988a75ce83dae2b4fa2507ce22a014c7ab4596696080f64693139d255924499d3528a6dff4fbd7529883eaa54f665ccd401043765c2b245a76ccbf3f6ad5c616ed7f3dfe628ab99d3b4a508765b1985b94c73c3c04404e1f48f1b29b1fe803406ad1ab7313603cec351a5002e715b72e4c7ac464dc26c8eba48abd46c0ec10ea6e46f6f9a4d6c4c7eb4b008ed5431e1bd85dd77f1baf0dd0e44701014ad3ad22f76d30305f96edcfa847f56d691ac713c443b877b6928b99f55485ec633153dcaa98adffd76152bf81719968485155ec14841ad4c5c1bc5603c05b52f86fb3feedfbb9b1f30cb31985cc6174b2eb60cb815ce289375d6423eb22435ce0484ad773bd3d0db502a13c64c0fde95ebe51e921afc114636874486aa625bfa3b4d0a1020ada83aec7a67c264fb575ddcdbdc7f34f18ca5f563932c5d14f3434c04bc665d0ea76f0254f269dda592f36ba867f799e4e02a5989789ba0f757d4ff1a28baa0e4f2be571235066be1ff35345f609572bc4af8f792618b9d9cc9760c5c14e3384d467a1eb4fe9810bb12174338891de952c01d86c39fe07913de43e105e35dda08d535178a46ce3162955049ecf0b9cd8483a540fe2e5024a177c16573361d6776fff22801e8113e3811406522ccc0a98064255fef924614abca0c51298974a05254410bc6861b591f42cd8d03f671109ae28d884504737c794ff1aa08a6fd5e4a51ffae1fa663379d523fae13aa2355f2946592efa2d05ccadb82d282e5215fd7089dc313fb448e863e5840a3e05eb9c1f3a88cee8070dddfeb02ab9fcd0f1fc80a6f5a7f0a9f3838ecd9d1f9e50fa23877ee7075d2d74f4c3459b1efdd029f4d10f3abc05d20f97f5907ea808b79404838c2c5d64c261a41f1e86e73bf20c49fa41c9e17e48b53c1e910f214cfaa10f640465f34030aca250faa1cbde947ed0835f1dce8ce160504d8662ce573002034059387588a530c653e3104d991f14338efa5187215a7abef44347224c3fa8863e2efeb53215a352c50da5869bda3e804cebea3c7708a1b0751a31432dcc8469847a7914d6a6890559ae9f3a4e9bd0a979399d36ef9b12702a13c8168ffddc43663bcf4e1980e266767488e763eacf8052354a3bf5b6a6473fe6deb379c4e9f2d0dd5644cddf8785a620e57b1cd368dd441809f7fde02f4502865aff7d3741e9e312a9cc80789a49e9985aa86e1ebbb52f9829f4238af9c2369d0a93cef3497133ff318b6139d609cabfa5138a2a9267d2536cb95a1f06a8c94de59ba4610c774ac90d3755c84d98f42f06f89936f06b62f5667ef8ab81dd0983dc535de686b6b3c18b08540838136c4a81c33ecba4a77ba0150ede44eb4cde91d29fe4937670f30c8cec2e0b9a7d6b311cc693711033e67a656c5dd422a13638c12aab864e13b025765363bf8556ea774a684f34a0961c59b1fac54418f5637733495e802f7f1e96ca04a8c6dc2963cdb8779083e90a3bbc0eaa36d057cad9333abbdea65f2765174ebaba8d173fb28cce124c5d237339b336f39cb355f5353345a343e66e2d22bbfb6fcb9d09f539317705f676cbb43c35b85dea13149944f63a05f5a0a171ee670edf0978007094854cf539fd408c68d83bd8bd1254ffc48ff0f63d09eeda8c19bc055b063fd83efd9dea4f510d3274eb94256e53d3fe0bd535b8c1c1cc2f42cf2a80ce020f2eae7de4011951042a01e99df454224b7c5568506f09ddd689355bc8318a859b1c8f3e53f09a184d44bc3838e2bdb8535febdccfba60c2f10514b41319416815fafe55a09eb82a5a7ab8271f91db9d8b69f3b04d7a096387526b156b18135b8bc7b16cf2db0c75d41d30df8a412362f9b9f9782550d98fc78ea9ba2669257ec574de707e46624144f611fbcbedc74e573e3f8f06ddc2571330b1b5fcb6e89724f3c917354930f8ba5c7d1038abd81fdb58b461d4b95f8642bf5d95fb5955d2c311badaf6b29cf004e729acb46a776033157d774f4609b2182562332a7392616c17f577ff3b7c5ac21f511843fd915ece55115e6828f13c960e189ce09a6f7ec15b2d3528657e788b69129502a8cbd8b3199fa26de02ef3319e5ecaa9fa64dee48b2a45628d350f44772c3263c349dba584619ca4e30bc18a5db85c621947aa5e389d84228030b829e7c55b6e9033d22cc4060642468b3a0024db8bfec8944e8dbec776b1220fbd025050ee61206af45e3af7f061d1fef02d13c3573f2cbbb47272a71f6058bbbfd2ed275fbebf925a7114034d9cfa85cc13214b5e224c25815c28d4c8a252d1184ffc855b4189c3c24cf3b05d607992895b2a61c0161e9f8da6201a1f01916d1e98d4596c361b6697e8f65aeab2f30835046b4c32e2f8a4d7cdbe9c556a002aa2ec6010781bc0d53c1a8a071f0c079c896722d5d0c27096ac37331f2924c11802d1cf25a3ae2cca5579738ded550f2eea82b6868ba04a727d98657aaae719b1ba1754633054f43950eb4ef7d91c564b5e13ec071ebadbbb7712c6f9e0243b237fc54f79037fd9493bc3deda255d19bcef77d4c22f075eca19fb8b7f52380970caa31c6db90a13820d47ef04f4ffd2421bc01ffd7198d0792d230e030878fa5973eb3f79f3f245e000850721f556efa9755da61829372035c56d3b6421ca6b80c9851d803b5bca49f4d988a9be9f450dbff71af00903ddaad7a69390ed9e1e5d7f7c0d345d16d1ffcd466b48a8f515178232af0b9bb0a876eaab08d9ffce7b585a154d531fefdcbe9de01884e58778b860181d392a8fcfbf0180044fdff4403ab0112682edbf1e80f7a5842482fda0c80fd757218a4dee3fb6e848756cc31c610ff0f09683dda06700070efa7bc207703e033509009d786cc152f013c0f2d3fdb5c0554ae0dc8e6ce3174156467f727d9d0d94104ac486a2eed92f70de465a64247a6c428309decd03897206ceeb0084c3e58fb3012d583c880df1dac4ea3173946cd2c891787b944895641161819765d9f232af8cf615b114aa3c1d089eb65d2c106110c1ac75e732d59bfc45ba7a5a12a8b1fc41f89d316768be27b26f2eb64a9634c63624daecd71bb370e9795ea79815d69f0d83d62f6dc4907bccd1e8b68d76fb80d868ac0c1e7a1812d55d57e7010723bc834d55519518824e34df5f5d30c73663340dfcf0f555e1b18b8cb2167741a7465a173b083139cc9be484b78b6ff86882152afdb82739d906bd8fdcd7b43c8da72d78d87f2b780b61036edcaec5d6a83cd19b77e61c8a475afcc2824e8dd041d1ec44405c06f8b741cbea5b09b8fd4f626cc910aa8c2ee5be245e9404d04d62fa8691f69f4f046c2772ddcb88f7099f143080164c202b456403c580ea504967465ba5b2afd1e7275d2a1415b572e04fe1de06dba1543c449eb489fcda18c6ddb109381bd32041563778e0eb63681b865fccacb796a334a85571ecf91c9b45fe75b34cdd074a4a36cf39641cfa243abab7ae49e14e32847059945665b4c7251fda9d8b5cc91101fe37dcc4b667ba2683536e97e6d0c191e085a3647c41730a8500ad3d16f9b5c90100ed644293c9a74c6462c98422bf91f57dff5dfe4711fbeca82546a55fbc6dfdfe07b2dfe4073399b48feef312866cc8f4670415074af39ab471442fd693be97f7affb69913c4784cf11e83f32b24420014b2aac2cd8b0c32fe3c5890965dafbf36e5cc66a7dcfe71781d153a102a5282386739f32360ca28d116252e923ce9392c112a09beb202b4f6b8c4f52d8bb2c904c862c864475ecf0503bca22a21be0786fb84c8ff27e37ddf1c88eb28c48e53de561b6a54f8df73ed2332f6c081558451455e4d34e09e65dbdb185e0f0ec2bb8f705373ed0d3af7cd8d39fe25b845df818cd5652ca75db091a3509c2c70e9beb96f77cec3def67a1ba1c064e616abd5f30d83ea2e290909680ad13b6a48f0a0c16f10c16d245a82e3d34c12844813c34a74a676292a3229965360f419ae8c3a8f248e5571bdd7ed0a7594a1a4dd1a085f865bade21a7ae5c6b4995d430a8234e9734d2f14b48919033ab323aef2037b280ae4411aab2079eee644fbc9dfd74d29310b93ef2a6c4d97aa0533829f6c1fbcf469633f62ed22703d149fda7c6fcb094e7028327fcec664ffced6dc6a2a68f7ae4f5ce7a4e138e7c3bbde56df77accd3ac5772f3a7fcf01bbffbed377ff8136e0ad88a793385c2b48da94467a2a3a26042196438dfd38832e7124d6f9124a01be93ca16d8ebf350135781f2d5a1e6bb8d59d0380cac1399168e0b11a7b138d110434c3413826d3577112a7801a8e91c29ce8e545bfe0709826a5d1b9664e026c180423f8f52ca65a08ccaa6749e4e58ab43be00e1a511b64be9cb34ea3e804e7882a6215c0012d102b14a25da11a68bbf55a2388cadfe2f2ed82b004b111b7a88489ceba77dd43d773e955e1d17a5e78567a5e2bef92feffea5360151fdaa12b90ebbd8368244b462a619b9b084ce88222e8f38984a25fe6776c4226c84c97abbb5017ab2e956e0e5d135d7f5d69759dba337447ea267487d4a5d415af5baf2ba4ab5757812eabee2add5dba27ba3fbad0eb3a7563eb42ea4ae90aa9abd03d5ef746775877af2e425d06dd94ba1c5d27757d75d1eb7eebcee946d51d44e9de45c1065dcef15ef81ebdabcb7bf0eefedee2bddb7b51e715dfb71ed327e2daee8bc924684c9db20db5e9cac692b48ec64a0bdb3d8d1a1db84e0c39d9c1df3dbd0e07376796757984ad902688455b56911f8817a1e8635d0025108cc095c08982c0612dc773e504080ae8162010c820409513881716d297d4054c10f409a411f09b91f9e0efba3d39c38cef085217e01c684ee0232055c0cb0066c1476ec18b91ad570d0a1488081cd65d38a663c02c023c8162c965bcbf02" @@ -111,7 +104,8 @@ "stakes": [], "balancesIssuance": 0 } ->>>>>>> Add raw spec for local test and new bins (#1243) + }, + "childrenDefault": {} } } } \ No newline at end of file diff --git a/tests/unit_tests/bittensor_tests/test_endpoint.py b/tests/unit_tests/bittensor_tests/test_endpoint.py new file mode 100644 index 0000000000..3c3d7fa05a --- /dev/null +++ b/tests/unit_tests/bittensor_tests/test_endpoint.py @@ -0,0 +1,177 @@ +# The MIT License (MIT) +# Copyright © 2021 Yuma Rao + +# Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated +# documentation files (the “Software”), to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, +# and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in all copies or substantial portions of +# the Software. + +# THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +# THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. + +import random + +import pytest +import torch + +import bittensor +from bittensor.utils.test_utils import get_random_unused_port + +test_wallet = bittensor.wallet.mock() + +def test_create_endpoint(): + endpoint = bittensor.endpoint( + version = bittensor.__version_as_int__, + uid = 0, + ip = '0.0.0.0', + ip_type = 4, + port = 12345, + hotkey = test_wallet.hotkey.ss58_address, + coldkey = test_wallet.coldkey.ss58_address, + modality = 0, + protocol = 0, + ) + assert endpoint.check_format() == True + assert endpoint.assert_format() + assert endpoint.version == bittensor.__version_as_int__ + assert endpoint.uid == 0 + assert endpoint.ip == '0.0.0.0' + assert endpoint.ip_type == 4 + assert endpoint.port == 12345 + assert endpoint.hotkey == test_wallet.hotkey.ss58_address + assert endpoint.coldkey == test_wallet.coldkey.ss58_address + assert endpoint.modality == 0 + +def test_endpoint_fails_checks(): + with pytest.raises(AssertionError): + test_endpoint = bittensor.endpoint( + version = bittensor.__version_as_int__, + uid = -1, + ip = '0.0.0.0', + ip_type = 4, + port = 12345, + hotkey = test_wallet.hotkey.ss58_address, + coldkey = test_wallet.coldkey.ss58_address, + modality = 0, + protocol = 0, + ) + assert test_endpoint.check_format() == False + + test_endpoint = bittensor.endpoint( + version = bittensor.__version_as_int__, + uid = 4294967296, + ip = '0.0.0.0', + ip_type = 4, + port = 12345, + hotkey = test_wallet.hotkey.ss58_address, + coldkey = test_wallet.coldkey.ss58_address, + modality = 0 + ) + assert test_endpoint.check_format() == False + test_endpoint = bittensor.endpoint( + version = bittensor.__version_as_int__, + uid = 0, + ip = '0.0.0.0', + ip_type = 5, + port = 12345, + hotkey = test_wallet.hotkey.ss58_address, + coldkey = test_wallet.coldkey.ss58_address, + modality = 0 + ) + assert test_endpoint.check_format() == False + test_endpoint = bittensor.endpoint( + version = bittensor.__version_as_int__, + uid = 0, + ip = '0.0.0.0', + ip_type = 4, + port = 12345222, + hotkey = test_wallet.hotkey.ss58_address, + coldkey = test_wallet.coldkey.ss58_address, + modality = 0 + ) + assert test_endpoint.check_format() == False + test_endpoint = bittensor.endpoint( + version = bittensor.__version_as_int__, + uid = 0, + ip = '0.0.0.0', + ip_type = 4, + port = 2142, + hotkey = test_wallet.hotkey.ss58_address + "sssd", + coldkey = test_wallet.coldkey.ss58_address, + modality = 0 + ) + assert test_endpoint.check_format() == False + test_endpoint = bittensor.endpoint( + version = bittensor.__version_as_int__, + uid = 0, + ip = '0.0.0.0', + ip_type = 4, + port = 2142, + hotkey = test_wallet.hotkey.ss58_address, + coldkey = test_wallet.coldkey.ss58_address + "sssd", + modality = 0 + ) + assert test_endpoint.check_format() == False + test_endpoint = bittensor.endpoint( + version = bittensor.__version_as_int__, + uid = 0, + ip = '0.0.0.0', + ip_type = 4, + port = 2142, + hotkey = test_wallet.hotkey.ss58_address, + coldkey = test_wallet.coldkey.ss58_address, + modality = 2 + ) + assert test_endpoint.check_format() == False + + +def test_endpoint_to_tensor(): + endpoint = bittensor.endpoint( + version = bittensor.__version_as_int__, + uid = 0, + ip = '0.0.0.0', + ip_type = 4, + port = get_random_unused_port(), + hotkey = test_wallet.hotkey.ss58_address, + coldkey = test_wallet.coldkey.ss58_address, + modality = 0, + protocol = 0, + ) + tensor_endpoint = endpoint.to_tensor() + assert list(tensor_endpoint.shape) == [250] + converted_endpoint = bittensor.endpoint.from_tensor( tensor_endpoint ) + assert converted_endpoint == endpoint + assert torch.equal(tensor_endpoint, converted_endpoint.to_tensor()) + assert converted_endpoint.check_format() == True + +def test_thrash_equality_of_endpoint(): + n_tests = 10000 + for _ in range(n_tests): + new_endpoint = bittensor.endpoint( + version = random.randint(0,999), + uid = random.randint(0,4294967295-1), + ip = str(random.randint(0,250)) + '.' + str(random.randint(0,250)) + '.' + str(random.randint(0,250)) + '.' + str(random.randint(0,250)), + ip_type = random.choice( [4,6] ), + port = random.randint(0,64000), + hotkey = test_wallet.hotkey.ss58_address, + coldkey = test_wallet.coldkey.ss58_address, + modality = 0, + protocol = 0, + ) + assert new_endpoint.check_format() == True + tensor_endpoint = new_endpoint.to_tensor() + assert list(tensor_endpoint.shape) == [250] + converted_endpoint = bittensor.endpoint.from_tensor( tensor_endpoint ) + assert converted_endpoint == new_endpoint + assert torch.equal(tensor_endpoint, converted_endpoint.to_tensor()) + + + + +